aboutsummaryrefslogtreecommitdiff
path: root/src/link
diff options
context:
space:
mode:
Diffstat (limited to 'src/link')
-rw-r--r--src/link/Wasm.zig5
-rw-r--r--src/link/Wasm/Archive.zig15
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]);
}
}