diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2024-07-24 22:06:12 +0200 |
|---|---|---|
| committer | Jakub Konka <kubkon@jakubkonka.com> | 2024-07-30 10:00:50 +0200 |
| commit | 494ae149e0a52c4afd71f6741379d4a7a9afe3f3 (patch) | |
| tree | 96d2ca5cd12b65bfd4c2811b510e80d69d1eb0b2 /src/link/Elf/Object.zig | |
| parent | 669f28594393e90e4d1aacd0d28f67ebe015b922 (diff) | |
| download | zig-494ae149e0a52c4afd71f6741379d4a7a9afe3f3.tar.gz zig-494ae149e0a52c4afd71f6741379d4a7a9afe3f3.zip | |
elf: skip storing comdat group signature globally
Diffstat (limited to 'src/link/Elf/Object.zig')
| -rw-r--r-- | src/link/Elf/Object.zig | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/link/Elf/Object.zig b/src/link/Elf/Object.zig index 08ad4e8378..649c6e0354 100644 --- a/src/link/Elf/Object.zig +++ b/src/link/Elf/Object.zig @@ -208,9 +208,9 @@ fn initAtoms(self: *Object, allocator: Allocator, handle: std.fs.File, elf_file: const group_signature = blk: { if (group_info_sym.st_name == 0 and group_info_sym.st_type() == elf.STT_SECTION) { const sym_shdr = shdrs[group_info_sym.st_shndx]; - break :blk self.getString(sym_shdr.sh_name); + break :blk sym_shdr.sh_name; } - break :blk self.getString(group_info_sym.st_name); + break :blk group_info_sym.st_name; }; const shndx = @as(u32, @intCast(i)); @@ -228,7 +228,10 @@ fn initAtoms(self: *Object, allocator: Allocator, handle: std.fs.File, elf_file: const group_start = @as(u32, @intCast(self.comdat_group_data.items.len)); try self.comdat_group_data.appendUnalignedSlice(allocator, group_members[1..]); - const gop = try elf_file.getOrCreateComdatGroupOwner(group_signature); + const gop = try elf_file.getOrCreateComdatGroupOwner(.{ + .off = group_signature, + .file_index = self.index, + }); const comdat_group_index = try self.addComdatGroup(allocator); const comdat_group = self.comdatGroup(comdat_group_index); comdat_group.* = .{ |
