From 90c4037819b44f285e78dafac5a0196abb36b86a Mon Sep 17 00:00:00 2001 From: Jakub Konka Date: Wed, 7 Aug 2024 09:41:28 +0200 Subject: [PATCH] elf: fix off-by-one direct access to symbol resolver in ZigObject --- src/link/Elf/ZigObject.zig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/link/Elf/ZigObject.zig b/src/link/Elf/ZigObject.zig index 806c157e89..46c249d29f 100644 --- a/src/link/Elf/ZigObject.zig +++ b/src/link/Elf/ZigObject.zig @@ -598,7 +598,7 @@ pub fn updateSymtabSize(self: *ZigObject, elf_file: *Elf) !void { for (self.global_symbols.items, self.symbols_resolver.items) |index, resolv| { const global = &self.symbols.items[index]; - const ref = elf_file.resolver.values.items[resolv]; + const ref = elf_file.resolver.values.items[resolv - 1]; const ref_sym = elf_file.symbol(ref) orelse continue; if (ref_sym.file(elf_file).?.index() != self.index) continue; 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 { for (self.global_symbols.items, self.symbols_resolver.items) |index, resolv| { const global = self.symbols.items[index]; - const ref = elf_file.resolver.values.items[resolv]; + const ref = elf_file.resolver.values.items[resolv - 1]; const ref_sym = elf_file.symbol(ref) orelse continue; if (ref_sym.file(elf_file).?.index() != self.index) continue; const idx = global.outputSymtabIndex(elf_file) orelse continue;