diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2024-09-02 11:42:47 +0200 |
|---|---|---|
| committer | Jakub Konka <kubkon@jakubkonka.com> | 2024-09-04 13:34:26 +0200 |
| commit | 5cb51c10debd3e9542e35e22648bca2a8b59259e (patch) | |
| tree | 94cb57d962197ebd93d055fb9591a459126983e0 /src/link/Elf.zig | |
| parent | 6b53dc946117110907867ee67425585ae3729750 (diff) | |
| download | zig-5cb51c10debd3e9542e35e22648bca2a8b59259e.tar.gz zig-5cb51c10debd3e9542e35e22648bca2a8b59259e.zip | |
elf: fix relocatable mode
Diffstat (limited to 'src/link/Elf.zig')
| -rw-r--r-- | src/link/Elf.zig | 32 |
1 files changed, 9 insertions, 23 deletions
diff --git a/src/link/Elf.zig b/src/link/Elf.zig index b6efa66247..cdc43b2d1a 100644 --- a/src/link/Elf.zig +++ b/src/link/Elf.zig @@ -3577,29 +3577,15 @@ fn updateSectionSizes(self: *Elf) !void { } const slice = self.sections.slice(); - // for (slice.items(.shdr), slice.items(.atom_list)) |*shdr, atom_list| { - // if (atom_list.items.len == 0) continue; - // if (self.requiresThunks() and shdr.sh_flags & elf.SHF_EXECINSTR != 0) continue; - // for (atom_list.items) |ref| { - // const atom_ptr = self.atom(ref) orelse continue; - // if (!atom_ptr.alive) continue; - // const offset = atom_ptr.alignment.forward(shdr.sh_size); - // const padding = offset - shdr.sh_size; - // atom_ptr.value = @intCast(offset); - // shdr.sh_size += padding + atom_ptr.size; - // shdr.sh_addralign = @max(shdr.sh_addralign, atom_ptr.alignment.toByteUnits() orelse 1); - // } - // } - - // if (self.requiresThunks()) { - // for (slice.items(.shdr), slice.items(.atom_list), 0..) |*shdr, atom_list, shndx| { - // if (shdr.sh_flags & elf.SHF_EXECINSTR == 0) continue; - // if (atom_list.items.len == 0) continue; - - // // Create jump/branch range extenders if needed. - // try self.createThunks(shdr, @intCast(shndx)); - // } - // } + if (self.requiresThunks()) { + for (slice.items(.shdr), slice.items(.atom_list), 0..) |*shdr, atom_list, shndx| { + if (shdr.sh_flags & elf.SHF_EXECINSTR == 0) continue; + if (atom_list.items.len == 0) continue; + + // Create jump/branch range extenders if needed. + try self.createThunks(shdr, @intCast(shndx)); + } + } const shdrs = slice.items(.shdr); if (self.eh_frame_section_index) |index| { |
