authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2023-09-02 23:00:39+02:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2023-09-02 23:00:39+02:00
logbaea106b713a49b38f0b568c2cbbf02f3c48537b
tree2975c3aff4c66761f54b162e0101b3b3b130adcc
parentcfc0429bc931b7897f48aea6a9fd31c60d1ad9c4

elf: mark dirty .symtab shdr after updating sh_info field


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

src/link/Elf.zig+4-1
......@@ -3100,7 +3100,6 @@ fn elf32SymFromSym(sym: elf.Elf64_Sym, out: *elf.Elf32_Sym) void {
31003100
31013101fn writeSymbols(self: *Elf) !void {
31023102 const gpa = self.base.allocator;
3103 const shdr = &self.sections.items(.shdr)[self.symtab_section_index.?];
31043103 const sym_size: u64 = switch (self.ptr_width) {
31053104 .p32 => @sizeOf(elf.Elf32_Sym),
31063105 .p64 => @sizeOf(elf.Elf64_Sym),
......@@ -3109,7 +3108,11 @@ fn writeSymbols(self: *Elf) !void {
31093108 .p32 => @alignOf(elf.Elf32_Sym),
31103109 .p64 => @alignOf(elf.Elf64_Sym),
31113110 };
3111
3112 const shdr = &self.sections.items(.shdr)[self.symtab_section_index.?];
31123113 shdr.sh_info = @intCast(self.local_symbols.items.len);
3114 self.markDirty(self.symtab_section_index.?, null);
3115
31133116 const nsyms = self.local_symbols.items.len + self.global_symbols.items.len;
31143117 const needed_size = nsyms * sym_size;
31153118 try self.growNonAllocSection(self.symtab_section_index.?, needed_size, sym_align, true);