authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2024-09-26 21:22:53+02:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-10-09 12:27:30-07:00
logbae3dbffdf7a0b00f7e6c9100a8fedf62ced4701
tree2ef5b29016db668cc3986a77eb4e72a604c3a555
parentbc7e0342b52a24a1052721396dfa88cd86e1304b

elf: clear dynamic relocs before repopulating


1 files changed, 4 insertions(+), 0 deletions(-)

src/link/Elf.zig+4
......@@ -4269,6 +4269,8 @@ fn writeSyntheticSections(self: *Elf) !void {
42694269 }
42704270
42714271 if (self.rela_dyn_section_index) |shndx| {
4272 // TODO: would state tracking be more appropriate here? perhaps even custom relocation type?
4273 self.rela_dyn.clearRetainingCapacity();
42724274 const shdr = slice.items(.shdr)[shndx];
42734275 try self.got.addRela(self);
42744276 try self.copy_rel.addRela(self);
......@@ -4301,6 +4303,8 @@ fn writeSyntheticSections(self: *Elf) !void {
43014303 }
43024304
43034305 if (self.rela_plt_section_index) |shndx| {
4306 // TODO: would state tracking be more appropriate here? perhaps even custom relocation type?
4307 self.rela_plt.clearRetainingCapacity();
43044308 const shdr = slice.items(.shdr)[shndx];
43054309 try self.plt.addRela(self);
43064310 try self.base.file.?.pwriteAll(mem.sliceAsBytes(self.rela_plt.items), shdr.sh_offset);