From: Sam Clegg Date: Tue, 6 Apr 2021 15:06:18 +0000 (-0700) Subject: [WebAssembly] Improve error messages regarding missing indirect function table. NFC X-Git-Tag: llvmorg-14-init~10230 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f23b259e1877115794c0bb5654a329c7bdefadb0;p=platform%2Fupstream%2Fllvm.git [WebAssembly] Improve error messages regarding missing indirect function table. NFC Use report_fatal_error here since this is an internal error, and not something the user can/should be trying to fix. Also distinguish between the symbol being missing and the symbol having the wrong type. We have a failure internally where the symbol is missing. Currently trying to reduce the test case to something we can attach to an llvm bug. Differential Revision: https://reviews.llvm.org/D99960 --- diff --git a/llvm/lib/MC/WasmObjectWriter.cpp b/llvm/lib/MC/WasmObjectWriter.cpp index 0eda8b5..c0faf85 100644 --- a/llvm/lib/MC/WasmObjectWriter.cpp +++ b/llvm/lib/MC/WasmObjectWriter.cpp @@ -536,11 +536,11 @@ void WasmObjectWriter::recordRelocation(MCAssembler &Asm, // We require the function table to have already been defined. auto TableName = "__indirect_function_table"; MCSymbolWasm *Sym = cast_or_null(Ctx.lookupSymbol(TableName)); - if (!Sym || !Sym->isFunctionTable()) { - Ctx.reportError( - Fixup.getLoc(), - "symbol '__indirect_function_table' is not a function table"); + if (!Sym) { + report_fatal_error("missing indirect function table symbol"); } else { + if (!Sym->isFunctionTable()) + report_fatal_error("__indirect_function_table symbol has wrong type"); // Ensure that __indirect_function_table reaches the output. Sym->setNoStrip(); Asm.registerSymbol(*Sym);