Jakub Konka
5cb51c10de
elf: fix relocatable mode
2024-09-04 13:34:26 +02:00
Jakub Konka
6ec5df3898
elf: allocate .tdata and .tbss using allocateAtom mechanics
2024-09-04 13:34:25 +02:00
Jakub Konka
3e100c5dab
dwarf: make Section.off a function
2024-09-04 13:34:25 +02:00
Jakub Konka
da60159d85
elf+dwarf: refer sections via section symbols
2024-09-04 13:34:25 +02:00
Jakub Konka
acb91f4b30
elf: fix emitting correct .rela. sections in -r mode
2024-09-04 13:34:25 +02:00
Jakub Konka
25fa092bb1
elf: fix a typo in setting ZigObject.data_relro_index
2024-09-04 13:34:25 +02:00
Jakub Konka
bc39bddd5f
elf: remove isDebugSection helper
2024-09-04 13:34:25 +02:00
Jakub Konka
2d0f4fc9c0
elf: allocate .text in ZigObject similarly to .eh_frame
2024-09-04 13:34:25 +02:00
Jakub Konka
848535535d
elf: allocate .data.rel.ro and .rodata in ZigObject similarly to .eh_frame
2024-09-04 13:34:25 +02:00
Jakub Konka
0b92404ddf
elf: allocate .data in ZigObject similarly to .eh_frame
2024-09-04 13:34:25 +02:00
Jakub Konka
37a1f0e7f2
elf: allocate .bss in ZigObject similarly to .eh_frame
2024-09-04 13:34:25 +02:00
Jakub Konka
b44dd599ad
elf: split Atom.allocate into Atom-independent parts
2024-09-04 13:34:25 +02:00
mlugg
0fe3fd01dd
std: update std.builtin.Type fields to follow naming conventions
...
The compiler actually doesn't need any functional changes for this: Sema
does reification based on the tag indices of `std.builtin.Type` already!
So, no zig1.wasm update is necessary.
This change is necessary to disallow name clashes between fields and
decls on a type, which is a prerequisite of #9938 .
2024-08-28 08:39:59 +01:00
Jacob Young
f289b82d0e
Dwarf: implement .eh_frame
2024-08-27 03:55:56 -04:00
Andrew Kelley
d9147b91a6
Merge pull request #21212 from ziglang/elf-incr
...
elf: cleanups, cleanups, cleanups
2024-08-26 19:25:23 -07:00
David Rubin
f777b29832
fix up merge conflicts with master
2024-08-25 22:43:57 -07:00
David Rubin
1c1feba08e
remove mod aliases for Zcus
2024-08-25 15:17:40 -07:00
David Rubin
863f74dcd2
comp: rename module to zcu
2024-08-25 15:17:21 -07:00
David Rubin
b4bb64ce78
sema: rework type resolution to use Zcu when possible
2024-08-25 15:16:42 -07:00
Jakub Konka
20240e9cd5
elf: store atom refs for rela sections until we can do better
2024-08-25 10:20:15 +02:00
Jakub Konka
95c30fb486
elf: fix shdr-to-phdr links
2024-08-25 10:20:15 +02:00
Jakub Konka
a9d3885ac7
elf: streamline sections container
2024-08-25 10:20:14 +02:00
Jakub Konka
a6bf762a8b
elf: finally move initMetadata into ZigObject.init
2024-08-25 10:20:14 +02:00
Jacob Young
0a52914355
Elf: all dwarf relocs need to become linker relocs
2024-08-22 20:08:05 -04:00
Jakub Konka
e79ac14ef3
elf: refactor tracking debug section sizes
2024-08-21 10:28:31 +02:00
Jakub Konka
b17bbf9e6c
elf: fixes after rebase
2024-08-21 01:43:21 -04:00
Jakub Konka
6c731be3a1
elf: allow for concatenating atoms to merge sections
2024-08-21 01:43:21 -04:00
Jakub Konka
fe6dfd5090
elf: fix emitting cross-section relocs for .debug* sections
2024-08-21 01:43:21 -04:00
Jakub Konka
c4d820b3f1
elf: emit DTPOFF32/DTPOFF64 relocation for .debug* sections
2024-08-21 01:43:21 -04:00
Jakub Konka
d388d555d5
elf: parse and emit Elf relocs for cross section refs for .debug* sections
2024-08-21 01:43:21 -04:00
Jakub Konka
d3d5ed992c
elf: emit .rela.debug* sections for relocatable if required
2024-08-21 01:43:21 -04:00
Jakub Konka
517721bbcc
elf: start unraveling Dwarf relocs into Elf relocs
2024-08-21 01:43:21 -04:00
Jakub Konka
56e1ae21e4
elf: populate debug atoms on the linker side after Dwarf.flushModule
2024-08-21 01:43:21 -04:00
Jakub Konka
41f2302865
elf: create section symbols and atoms per each ZigObject debug section
2024-08-21 01:43:21 -04:00
Jacob Young
eaa227449c
Dwarf: fix issues with inline call sites
2024-08-20 15:08:23 -04:00
Jacob Young
ef11bc9899
Dwarf: rework self-hosted debug info from scratch
...
This is in preparation for incremental and actually being able to debug
executables built by the x86_64 backend.
2024-08-16 15:22:55 -04:00
Jakub Konka
8a0cb7002e
elf: introduce Symbol.flags.is_extern_ptr for refs potentially needing GOT
2024-08-15 10:05:41 +02:00
Jakub Konka
b8203fac1b
elf: check for relocs before deciding on shndx in getNavShdrIndex
2024-08-15 08:37:13 +02:00
Jakub Konka
f26573fddf
elf: re-use old atom slot for a trampoline to that atom
...
This is the initial implementation of Jacob Young's idea of
re-using old function slots as trampolines for new function's
location. This way the trampoline is guaranteed to be aligned
to the function's alignment.
The only edge case is if an incremental update further overaligns
the function in which case we skip/delete the trampoline and
re-evaluate all references.
2024-08-14 12:10:40 +02:00
Jakub Konka
1bd54a55fa
fix compile errors in other codegen backends
2024-08-13 21:52:40 +02:00
Jakub Konka
97ab420dcf
elf: do not emit zig jump table in relocatables
2024-08-13 13:30:24 +02:00
Jakub Konka
49d78cc793
elf: only apply zig jump table indirection to function calls (PLT32)
2024-08-13 13:30:24 +02:00
Jakub Konka
edd72c75eb
elf: fix circular dep loop in zig jump table
2024-08-13 13:30:24 +02:00
Jakub Konka
ce8886d57d
elf: make zig jump table indirection implicit via Symbol.address
2024-08-13 13:30:24 +02:00
Jakub Konka
78b1c73602
elf: rename OffsetTable to JumpTable
2024-08-13 13:30:24 +02:00
Jakub Konka
e1ce9a7065
elf: add poorman's reporting tool for unallocated NAVs/UAVs
2024-08-13 13:30:24 +02:00
Jakub Konka
e3f6ebaea9
x86_64+elf: fix jump table indirection for functions
2024-08-13 13:30:24 +02:00
Jakub Konka
d7c5fbce92
elf: emit a jump table in place of offset table for functions
2024-08-13 13:30:24 +02:00
Jakub Konka
d328140858
elf: nuke ZigGotSection from existence
2024-08-13 13:30:24 +02:00
Jakub Konka
7556b32840
elf: indirect via offset table in the linker away from backend
2024-08-13 13:30:24 +02:00