diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2023-11-08 10:57:34 +0100 |
|---|---|---|
| committer | Jakub Konka <kubkon@jakubkonka.com> | 2023-11-08 10:57:34 +0100 |
| commit | e87c751558ec1b81bab09f40959a58d250a35a41 (patch) | |
| tree | a916252df242cef1e948d7f25964acb2547e5fd6 /src/link/Elf/Object.zig | |
| parent | 5e78600f0f5e790c0429817d8249020fd65b49f8 (diff) | |
| download | zig-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.zig | 8 |
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..]; } |
