[WebAssembly] Improve error messages regarding missing indirect function table. NFC
authorSam Clegg <sbc@chromium.org>
Tue, 6 Apr 2021 15:06:18 +0000 (08:06 -0700)
committerSam Clegg <sbc@chromium.org>
Wed, 7 Apr 2021 14:58:43 +0000 (07:58 -0700)
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

llvm/lib/MC/WasmObjectWriter.cpp

index 0eda8b5..c0faf85 100644 (file)
@@ -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<MCSymbolWasm>(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);