aboutsummaryrefslogtreecommitdiff
path: root/src/link/Elf/Object.zig
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2023-11-08 10:57:34 +0100
committerJakub Konka <kubkon@jakubkonka.com>2023-11-08 10:57:34 +0100
commite87c751558ec1b81bab09f40959a58d250a35a41 (patch)
treea916252df242cef1e948d7f25964acb2547e5fd6 /src/link/Elf/Object.zig
parent5e78600f0f5e790c0429817d8249020fd65b49f8 (diff)
downloadzig-e87c751558ec1b81bab09f40959a58d250a35a41.tar.gz
zig-e87c751558ec1b81bab09f40959a58d250a35a41.zip
elf: reference .rela sections via output section index
Diffstat (limited to 'src/link/Elf/Object.zig')
-rw-r--r--src/link/Elf/Object.zig8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/link/Elf/Object.zig b/src/link/Elf/Object.zig
index 637dc6114e..8a402ad7d2 100644
--- a/src/link/Elf/Object.zig
+++ b/src/link/Elf/Object.zig
@@ -681,9 +681,9 @@ pub fn addAtomsToRelaSections(self: Object, elf_file: *Elf) !void {
const out_shndx = self.initOutputSection(elf_file, shdr) catch unreachable;
const gpa = elf_file.base.allocator;
- const gop = try elf_file.output_rela_sections.getOrPut(gpa, out_shndx);
- if (!gop.found_existing) gop.value_ptr.* = .{};
- try gop.value_ptr.append(gpa, atom_index);
+ const gop = try elf_file.output_rela_sections.getOrPut(gpa, atom.outputShndx().?);
+ if (!gop.found_existing) gop.value_ptr.* = .{ .shndx = out_shndx };
+ try gop.value_ptr.atom_list.append(gpa, atom_index);
}
}
@@ -718,11 +718,13 @@ pub fn writeAr(self: Object, writer: anytype) !void {
}
pub fn locals(self: Object) []const Symbol.Index {
+ if (self.symbols.items.len == 0) return &[0]Symbol.Index{};
const end = self.first_global orelse self.symbols.items.len;
return self.symbols.items[0..end];
}
pub fn globals(self: Object) []const Symbol.Index {
+ if (self.symbols.items.len == 0) return &[0]Symbol.Index{};
const start = self.first_global orelse self.symbols.items.len;
return self.symbols.items[start..];
}