Index: ELF/Target.cpp =================================================================== --- ELF/Target.cpp +++ ELF/Target.cpp @@ -631,7 +631,11 @@ RelExpr X86_64TargetInfo::getRelExpr(uint32_t Type, const SymbolBody &S) const { switch (Type) { - default: + case R_X86_64_32: + case R_X86_64_32S: + case R_X86_64_64: + case R_X86_64_DTPOFF32: + case R_X86_64_DTPOFF64: return R_ABS; case R_X86_64_TPOFF32: return R_TLS; @@ -657,6 +661,10 @@ return R_GOT_PC; case R_X86_64_NONE: return R_HINT; + default: + error("do not know how to handle relocation '" + toString(Type) + "' (" + + Twine(Type) + ")"); + return R_HINT; } } @@ -878,7 +886,7 @@ write64le(Loc, Val); break; default: - error(getErrorLocation(Loc) + "unrecognized reloc " + Twine(Type)); + llvm_unreachable("unexpected relocation"); } } Index: test/ELF/invalid/invalid-relocation-x64.s =================================================================== --- test/ELF/invalid/invalid-relocation-x64.s +++ test/ELF/invalid/invalid-relocation-x64.s @@ -26,5 +26,5 @@ Type: R_X86_64_NONE # RUN: not ld.lld %p/Inputs/invalid-relocation-x64.elf -o %t2 2>&1 | FileCheck %s -# CHECK: unrecognized reloc 152 -# CHECK: unrecognized reloc 153 +# CHECK: do not know how to handle relocation 'Unknown' (152) +# CHECK: do not know how to handle relocation 'Unknown' (153)