[ELF] - Explicitly list supported relocations for x64 target.

The same we did for x86 earlier:
list supported relocations explicitly and error out on unknown.

Differential revision: https://reviews.llvm.org/D28564

llvm-svn: 291751
This commit is contained in:
George Rimar 2017-01-12 09:00:17 +00:00
parent 0c6392d3bc
commit 66666360de
2 changed files with 12 additions and 4 deletions

View File

@ -631,7 +631,11 @@ template <class ELFT>
RelExpr X86_64TargetInfo<ELFT>::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 @@ RelExpr X86_64TargetInfo<ELFT>::getRelExpr(uint32_t Type,
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 @@ void X86_64TargetInfo<ELFT>::relocateOne(uint8_t *Loc, uint32_t Type,
write64le(Loc, Val);
break;
default:
error(getErrorLocation(Loc) + "unrecognized reloc " + Twine(Type));
llvm_unreachable("unexpected relocation");
}
}

View File

@ -26,5 +26,5 @@ Sections:
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)