authorgravatar for luuk@degram.devLuuk de Gram <luuk@degram.dev> 2023-01-09 21:20:16+01:00
committergravatar for luuk@degram.devLuuk de Gram <luuk@degram.dev> 2023-01-12 20:50:18+01:00
log1072f82acbe976222851bdd357f52dd9659d73d3
treea87970f53b2a9267b35d664d1251655d19c184fa
parent2339b25fd42ccd136660b9e4575aab2bb85b1163
signature Commit is signed but in an unrecognized format.

wasm-linker: Fix symbol name on undefined symbol

When emitting errors for undefined symbols, rather than unconditionally always using the name from an import, we must verify it's a symbol type that could have such an import. e.g. undefined data symbols do not have a corresponding import. For this reason we must use the regular name.

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

src/link/Wasm.zig+3-1
......@@ -824,7 +824,9 @@ fn checkUndefinedSymbols(wasm: *const Wasm) !void {
824824 } else wasm.name;
825825 const import_name = if (undef.file) |file_index| name: {
826826 const obj = wasm.objects.items[file_index];
827 const name_index = obj.findImport(symbol.tag.externalType(), symbol.index).name;
827 const name_index = if (symbol.tag == .function) name_index: {
828 break :name_index obj.findImport(symbol.tag.externalType(), symbol.index).name;
829 } else symbol.name;
828830 break :name obj.string_table.get(name_index);
829831 } else wasm.string_table.get(wasm.imports.get(undef).?.name);
830832 log.err("could not resolve undefined symbol '{s}'", .{import_name});