sergei
|
1aea22a6ca
+ Internal linker: generic and ELF-specific support for grouped sections, allow same symbol to be defined in several COMDAT groups.
|
hace 13 años |
sergei
|
277200e7ae
+ ELF linker: Support writing RELATIVE dynamic relocations ahead of the rest, and their number in DT_REL[A]COUNT dynamic tag (still needs changes in CPU-specific code to function properly).
|
hace 13 años |
sergei
|
d019670495
- Removed generic implementation of TObjData.sectionname, its existence is useless because it is completely overridden by all TObjData descendants.
|
hace 13 años |
sergei
|
4410fe86d2
* ELF linker: moved some code (which must be executed only once when linking with separate debug file) from MemPos_Start into AfterUnusedSectionRemoval, this removes some checks and simplifies things.
|
hace 13 años |
sergei
|
6023f73e2a
* ELF linker: improved dynamic symbol handling.
|
hace 13 años |
sergei
|
6d70009f06
+ ELF linker. Works on x86_64-linux and i386-linux good enough to pass the testsuite, but still requires a lot of work in nearly all aspects. In particular, no attempt to resolve symbols from shared libs is done, everything is just treated as imports. Symbol versioning isn't supported either.
|
hace 13 años |
sergei
|
339d06aa58
* When writing section names of .o files, let sh_name of sections with relocations point into names of corresponding relocation sections past the .rel/.rela prefix. In case of smartlinked sections this saves almost half of .shstrtab section size.
|
hace 13 años |
sergei
|
c41b407119
* Changed TObjSection.WriteStr method to write a zero byte after the string.
|
hace 13 años |
sergei
|
c529356693
* Split most CPU-specific code from ogelf.pas into newly created cpuelf.pas units in CPU subdirectories.
|
hace 13 años |
sergei
|
f14e038172
+ Implemented writeReloc_internal method for TElfObjSection.
|
hace 13 años |
sergei
|
95535ea845
- Do not create any default object sections. On targets with section-based smartlink these sections remain empty and only cause linker to do useless job of removing them. The same happens when loading object files because duplicate section names are allowed at that time. On targets without smartlink they don't stay empty, but the internal assembler creates sections when required, so not creating initial sections effectively doesn't change anything.
|
hace 13 años |
sergei
|
944189f046
- don't supply sh_link and sh_info members to TElfObjSection.create_ext.
|
hace 13 años |
sergei
|
d4b7a6a9bd
+ Added some more ELF definitions
|
hace 13 años |
sergei
|
3b3da49ad6
* Merged TElfObjSection.secshidx and TCoffObjSection.secidx into TObjSection.index.
|
hace 13 años |
sergei
|
27f342225a
* Changed most fields of ELF structures to unsigned, to conform to their official declarations.
|
hace 13 años |
sergei
|
712f5d1c26
- Removed oso_readonly and oso_noload section options, it is enough to have just oso_write and oso_load to express possible section states.
|
hace 13 años |
sergei
|
37b8cd1b7a
* If relocation to a local label cannot be translated into (section+offset), then the target symbol must be written into symbol table. Fixes IE 200603012 in number of tests with -Cg on i386-linux (and possibly other targets with internal ELF assembler).
|
hace 13 años |
sergei
|
1284be72ea
* Fixed alignment of '.data' section, which got accidentally changed from 16 to 8 by r21374, causing e.g. tests/test/tasm3.pp to crash if compiled without -Cg and on target without tf_smartlink_sections. The root problem is not here, however: if appending data with higher alignment to a section with lower alignment, we likely need to raise the alignment of section.
|
hace 13 años |
sergei
|
bd7ebdce18
* ELF relocation cleanup/improvement:
|
hace 13 años |
sergei
|
85f6062e05
* Reworked writing ELF symbols into a separate class, TElfSymtab, which is also suitable for creating symbol tables in executable and dynamic ELF files.
|
hace 13 años |
sergei
|
d0df2b247b
* ogelf.pas: pass objdata into TElfObjSection.create_ext, so sections created via create_ext are 'owned' the same way as ones created via objData.CreateSection.
|
hace 13 años |
sergei
|
cc5fda2a1e
+ ogelf.pas: added definitions for program headers and .dynamic section, and reformatted existing ones to reduce line count.
|
hace 13 años |
sergei
|
7d3294b504
* Moved 4 procedures for basic reading/writing TObjSection contents into ogcoff.pas, so they don't have to be reimplemented for every output format.
|
hace 13 años |
sergei
|
263b46be86
* ogelf.pas: Changed MaybeSwap* into procedures, makes them more suitable for reuse in the upcoming reader (and reduces amount of copying while writing, too).
|
hace 13 años |
sergei
|
747cd55b09
* Fixed 64-bit ELF program header definition (field order is different from 32-bit counterpart!)
|
hace 13 años |
sergei
|
14d66a64a4
+ Definitions and utility functions for executable ELF files
|
hace 13 años |
sergei
|
71c8b9cf8a
* ogelf.pas: cleaned up code that creates default sections.
|
hace 13 años |
Jonas Maebe
|
14cfe770a4
* replaced most (if not all) remaining fields/parameters in the compiler
|
hace 13 años |
sergei
|
cd89a90841
* Cleanup: removed empty destructors and redundant 'with' statement.
|
hace 13 años |
Jonas Maebe
|
ac43eb9b70
+ generic implementation of ReplaceForbiddenAsmSymbolChars() instead
|
hace 13 años |