authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2024-08-07 09:41:28+02:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2024-08-07 10:21:03+02:00
log90c4037819b44f285e78dafac5a0196abb36b86a
tree78e4a433476d468fbf7c8598e36dc7eecd1340c2
parent128289fda1bc6cd361182adc1d47863509399d63

elf: fix off-by-one direct access to symbol resolver in ZigObject


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

src/link/Elf/ZigObject.zig+2-2
...@@ -598,7 +598,7 @@ pub fn updateSymtabSize(self: *ZigObject, elf_file: *Elf) !void {...@@ -598,7 +598,7 @@ pub fn updateSymtabSize(self: *ZigObject, elf_file: *Elf) !void {
598598
599 for (self.global_symbols.items, self.symbols_resolver.items) |index, resolv| {599 for (self.global_symbols.items, self.symbols_resolver.items) |index, resolv| {
600 const global = &self.symbols.items[index];600 const global = &self.symbols.items[index];
601 const ref = elf_file.resolver.values.items[resolv];601 const ref = elf_file.resolver.values.items[resolv - 1];
602 const ref_sym = elf_file.symbol(ref) orelse continue;602 const ref_sym = elf_file.symbol(ref) orelse continue;
603 if (ref_sym.file(elf_file).?.index() != self.index) continue;603 if (ref_sym.file(elf_file).?.index() != self.index) continue;
604 if (global.atom(elf_file)) |atom_ptr| if (!atom_ptr.alive) continue;604 if (global.atom(elf_file)) |atom_ptr| if (!atom_ptr.alive) continue;
...@@ -627,7 +627,7 @@ pub fn writeSymtab(self: ZigObject, elf_file: *Elf) void {...@@ -627,7 +627,7 @@ pub fn writeSymtab(self: ZigObject, elf_file: *Elf) void {
627627
628 for (self.global_symbols.items, self.symbols_resolver.items) |index, resolv| {628 for (self.global_symbols.items, self.symbols_resolver.items) |index, resolv| {
629 const global = self.symbols.items[index];629 const global = self.symbols.items[index];
630 const ref = elf_file.resolver.values.items[resolv];630 const ref = elf_file.resolver.values.items[resolv - 1];
631 const ref_sym = elf_file.symbol(ref) orelse continue;631 const ref_sym = elf_file.symbol(ref) orelse continue;
632 if (ref_sym.file(elf_file).?.index() != self.index) continue;632 if (ref_sym.file(elf_file).?.index() != self.index) continue;
633 const idx = global.outputSymtabIndex(elf_file) orelse continue;633 const idx = global.outputSymtabIndex(elf_file) orelse continue;