forked from OSchip/llvm-project
[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:
parent
0c6392d3bc
commit
66666360de
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue