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
// 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);