diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2024-08-23 15:04:46 +0200 |
|---|---|---|
| committer | Jakub Konka <kubkon@jakubkonka.com> | 2024-08-25 10:20:15 +0200 |
| commit | 20240e9cd5a796b63bc2571aa70bb77144e8860c (patch) | |
| tree | 3e10a5ab15fa4228bb724d1da584ce70b96ecc29 /src/link/Elf/Object.zig | |
| parent | 1af0f4cd00f7a6b9150346449d2e7dc14798bada (diff) | |
| download | zig-20240e9cd5a796b63bc2571aa70bb77144e8860c.tar.gz zig-20240e9cd5a796b63bc2571aa70bb77144e8860c.zip | |
elf: store atom refs for rela sections until we can do better
Diffstat (limited to 'src/link/Elf/Object.zig')
| -rw-r--r-- | src/link/Elf/Object.zig | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/link/Elf/Object.zig b/src/link/Elf/Object.zig index 54d5725f8d..b00f214ab8 100644 --- a/src/link/Elf/Object.zig +++ b/src/link/Elf/Object.zig @@ -1018,7 +1018,7 @@ pub fn initRelaSections(self: *Object, elf_file: *Elf) !void { } } -pub fn addAtomsToRelaSections(self: *Object, elf_file: *Elf) void { +pub fn addAtomsToRelaSections(self: *Object, elf_file: *Elf) !void { for (self.atoms_indexes.items) |atom_index| { const atom_ptr = self.atom(atom_index) orelse continue; if (!atom_ptr.alive) continue; @@ -1031,6 +1031,9 @@ pub fn addAtomsToRelaSections(self: *Object, elf_file: *Elf) void { const shdr = &slice.items(.shdr)[shndx]; shdr.sh_info = atom_ptr.output_section_index; shdr.sh_link = elf_file.symtab_section_index.?; + const gpa = elf_file.base.comp.gpa; + const atom_list = &elf_file.sections.items(.atom_list)[shndx]; + try atom_list.append(gpa, .{ .index = atom_index, .file = self.index }); } } |
