sergei
|
67a41e1e94
* Fixed 2 bugs introduced in r22951:
|
12 rokov pred |
sergei
|
c4d8396158
* Function RelocName made a member of TElfTarget, so it can be used outside of TElfExeOutput class.
|
12 rokov pred |
sergei
|
d79761c607
* Changed TElfTarget from class to record, so it can contain data members while remaining statically allocated.
|
12 rokov pred |
sergei
|
006d795797
* Moved TElfsechdr into interface and cleaned up some ugliness in TElfObjInput code caused by TElfsechdr being not publicly available. Providing target-specific section loading becomes easier now as well.
|
12 rokov pred |
sergei
|
8688f5e7b9
* Moved ELF definitions into a separate unit, which can be reused by CPU back-end units.
|
12 rokov pred |
sergei
|
129d737523
+ Allow TObjRelocation to be created without a symbol, such relocations are being used to tag specific positions on non-x86 targets.
|
12 rokov pred |
sergei
|
a730830c19
* Factored code for allocating GOT slots into TElfExeOutput.AllocGOTSlot.
|
12 rokov pred |
sergei
|
a7e7d97da6
* ELF linker: fixed written values of STT_TLS symbols, they must be relative to PT_TLS segment address.
|
12 rokov pred |
sergei
|
0369a30f49
* Internal linker: made sec_rodata_norel read-only.
|
12 rokov pred |
sergei
|
2c011312db
* Changed TElf32Header and TElf64Header definitions, making them look closer to canonical ones (first 16 bytes are a single array field, addressable via EI_xx indices).
|
12 rokov pred |
sergei
|
1aea22a6ca
+ Internal linker: generic and ELF-specific support for grouped sections, allow same symbol to be defined in several COMDAT groups.
|
13 rokov pred |
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).
|
13 rokov pred |
sergei
|
d019670495
- Removed generic implementation of TObjData.sectionname, its existence is useless because it is completely overridden by all TObjData descendants.
|
13 rokov pred |
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.
|
13 rokov pred |
sergei
|
6023f73e2a
* ELF linker: improved dynamic symbol handling.
|
13 rokov pred |
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.
|
13 rokov pred |
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.
|
13 rokov pred |
sergei
|
c41b407119
* Changed TObjSection.WriteStr method to write a zero byte after the string.
|
13 rokov pred |
sergei
|
c529356693
* Split most CPU-specific code from ogelf.pas into newly created cpuelf.pas units in CPU subdirectories.
|
13 rokov pred |
sergei
|
f14e038172
+ Implemented writeReloc_internal method for TElfObjSection.
|
13 rokov pred |
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.
|
13 rokov pred |
sergei
|
944189f046
- don't supply sh_link and sh_info members to TElfObjSection.create_ext.
|
13 rokov pred |
sergei
|
d4b7a6a9bd
+ Added some more ELF definitions
|
13 rokov pred |
sergei
|
3b3da49ad6
* Merged TElfObjSection.secshidx and TCoffObjSection.secidx into TObjSection.index.
|
13 rokov pred |
sergei
|
27f342225a
* Changed most fields of ELF structures to unsigned, to conform to their official declarations.
|
13 rokov pred |
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.
|
13 rokov pred |
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).
|
13 rokov pred |
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.
|
13 rokov pred |
sergei
|
bd7ebdce18
* ELF relocation cleanup/improvement:
|
13 rokov pred |
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.
|
13 rokov pred |