mirror of https://github.com/yasm/yasm.git
Tag:
Branch:
Tree:
4169dbca50
0.2
0.3
0.4
0.5
0.5.0
0.5.0rc2
0.6
0.6.0
0.6.1
0.6.2
0.7
0.7.0
0.7.1
0.7.2
0.8
0.8.0
1.0
1.0.0
1.0.1
1.1
1.1.0
master
multiarch
v0.1.0
v0.2.0
v0.2.1
v0.2.2
v0.3.0
v0.4.0
v0.5.0
v0.5.0rc1
v0.5.0rc2
v0.6.0
v0.6.1
v0.6.2
v0.7.0
v0.7.1
v0.7.2
v0.8.0
v1.0.0
v1.0.1
v1.1.0
v1.2.0
v1.3.0
${ noResults }
1 Commits (4169dbca50877f75de219b5bee44c31db1fed045)
Author | SHA1 | Message | Date |
---|---|---|---|
Peter Johnson | 9fa87cdae1 |
Massive cleanup of relocation and WRT handling. Closes #49 and lays the
groundwork for further features and possible cleanups. Note: this commit changes the way in which relocations in the COFF/Win32/Win64 target can be forced to reference a different symbol than is being pointed to; instead of the ambiguous "trap+(trap.end-trap)" to get the reloc to point at trap.end but reference the trap symbol, after this commit "trap.end wrt trap" is the way to say this. This also reads a lot more clearly and is not ambiguous. This should really only affect people who write .pdata sections for Win64. See the objfmts/win64/tests/win64-dataref.asm testcase for an example of usage. This cleanup adds a new data structure, yasm_value, which is used for all expressions that can be potentially relocatable. This data structure splits the absolute portion of the expression away from the relative portion and any modifications to the relative portion (SEG, WRT, PC-relative, etc). A large amount of code in the new value module breaks a general expression into its absolute and relative parts (yasm_value_finalize_expr) and provides a common set of code for writing out non-relocated values (yasm_value_output_basic). All bytecode handling in both libyasm and the architecture modules was rewritten to use yasm_values when appropriate (e.g. data values, immediates, and effective addresses). The yasm_output_expr_func is now yasm_output_value_func and all users and implementors (mainly in object formats) have been updated to handle yasm_values. Simultaneously with this change, yasm_effaddr and yasm_immval full structure definitions have been moved from bc-int.h to bytecode.h. The data hiding provided by bc-int.h was relatively minimal and probably overkill. Also, great simplifications have been made to x86 effective address expression handling. svn path=/trunk/yasm/; revision=1419 |
19 years ago |