aboutsummaryrefslogtreecommitdiff
path: root/src/link/Elf/Object.zig
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2024-08-23 15:04:46 +0200
committerJakub Konka <kubkon@jakubkonka.com>2024-08-25 10:20:15 +0200
commit20240e9cd5a796b63bc2571aa70bb77144e8860c (patch)
tree3e10a5ab15fa4228bb724d1da584ce70b96ecc29 /src/link/Elf/Object.zig
parent1af0f4cd00f7a6b9150346449d2e7dc14798bada (diff)
downloadzig-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.zig5
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 });
}
}