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 {...@@ -3100,7 +3100,6 @@ fn elf32SymFromSym(sym: elf.Elf64_Sym, out: *elf.Elf32_Sym) void {
31003100
3101fn writeSymbols(self: *Elf) !void {3101fn writeSymbols(self: *Elf) !void {
3102 const gpa = self.base.allocator;3102 const gpa = self.base.allocator;
3103 const shdr = &self.sections.items(.shdr)[self.symtab_section_index.?];
3104 const sym_size: u64 = switch (self.ptr_width) {3103 const sym_size: u64 = switch (self.ptr_width) {
3105 .p32 => @sizeOf(elf.Elf32_Sym),3104 .p32 => @sizeOf(elf.Elf32_Sym),
3106 .p64 => @sizeOf(elf.Elf64_Sym),3105 .p64 => @sizeOf(elf.Elf64_Sym),
...@@ -3109,7 +3108,11 @@ fn writeSymbols(self: *Elf) !void {...@@ -3109,7 +3108,11 @@ fn writeSymbols(self: *Elf) !void {
3109 .p32 => @alignOf(elf.Elf32_Sym),3108 .p32 => @alignOf(elf.Elf32_Sym),
3110 .p64 => @alignOf(elf.Elf64_Sym),3109 .p64 => @alignOf(elf.Elf64_Sym),
3111 };3110 };
3111
3112 const shdr = &self.sections.items(.shdr)[self.symtab_section_index.?];
3112 shdr.sh_info = @intCast(self.local_symbols.items.len);3113 shdr.sh_info = @intCast(self.local_symbols.items.len);
3114 self.markDirty(self.symtab_section_index.?, null);
3115
3113 const nsyms = self.local_symbols.items.len + self.global_symbols.items.len;3116 const nsyms = self.local_symbols.items.len + self.global_symbols.items.len;
3114 const needed_size = nsyms * sym_size;3117 const needed_size = nsyms * sym_size;
3115 try self.growNonAllocSection(self.symtab_section_index.?, needed_size, sym_align, true);3118 try self.growNonAllocSection(self.symtab_section_index.?, needed_size, sym_align, true);