diff options
Diffstat (limited to 'src/link')
| -rw-r--r-- | src/link/Wasm.zig | 5 | ||||
| -rw-r--r-- | src/link/Wasm/Archive.zig | 15 |
2 files changed, 9 insertions, 11 deletions
diff --git a/src/link/Wasm.zig b/src/link/Wasm.zig index e89422d0ae..d8aab58ef1 100644 --- a/src/link/Wasm.zig +++ b/src/link/Wasm.zig @@ -625,7 +625,7 @@ fn resolveSymbolsInObject(wasm: *Wasm, object_index: u16) !void { try wasm.resolved_symbols.put(wasm.base.allocator, location, {}); assert(wasm.resolved_symbols.swapRemove(existing_loc)); if (existing_sym.isUndefined()) { - assert(wasm.undefs.swapRemove(sym_name)); + _ = wasm.undefs.swapRemove(sym_name); } } } @@ -636,8 +636,7 @@ fn resolveSymbolsInArchives(wasm: *Wasm) !void { log.debug("Resolving symbols in archives", .{}); var index: u32 = 0; undef_loop: while (index < wasm.undefs.count()) { - const undef_sym_loc = wasm.undefs.values()[index]; - const sym_name = undef_sym_loc.getName(wasm); + const sym_name = wasm.undefs.keys()[index]; for (wasm.archives.items) |archive| { const offset = archive.toc.get(sym_name) orelse { diff --git a/src/link/Wasm/Archive.zig b/src/link/Wasm/Archive.zig index 2fa1e07915..c4fb9b8291 100644 --- a/src/link/Wasm/Archive.zig +++ b/src/link/Wasm/Archive.zig @@ -157,13 +157,12 @@ fn parseTableOfContents(archive: *Archive, allocator: Allocator, reader: anytype }; var i: usize = 0; - while (i < sym_tab.len) { - const string = mem.sliceTo(sym_tab[i..], 0); - if (string.len == 0) { - i += 1; - continue; - } - i += string.len; + var pos: usize = 0; + while (i < num_symbols) : (i += 1) { + const string = mem.sliceTo(sym_tab[pos..], 0); + pos += string.len + 1; + if (string.len == 0) continue; + const name = try allocator.dupe(u8, string); errdefer allocator.free(name); const gop = try archive.toc.getOrPut(allocator, name); @@ -172,7 +171,7 @@ fn parseTableOfContents(archive: *Archive, allocator: Allocator, reader: anytype } else { gop.value_ptr.* = .{}; } - try gop.value_ptr.append(allocator, symbol_positions[gop.index]); + try gop.value_ptr.append(allocator, symbol_positions[i]); } } |
