Change getRelExpr to return the final value for TLSLD. NFC.

llvm-svn: 266580
This commit is contained in:
Rafael Espindola 2016-04-18 00:28:57 +00:00
parent 565a0aa1c4
commit c4d56970dc
2 changed files with 4 additions and 2 deletions

View File

@ -372,6 +372,8 @@ RelExpr X86TargetInfo::getRelExpr(uint32_t Type, const SymbolBody &S) const {
switch (Type) { switch (Type) {
default: default:
return R_ABS; return R_ABS;
case R_386_TLS_LDM:
return R_TLSLD;
case R_386_PLT32: case R_386_PLT32:
case R_386_PC32: case R_386_PC32:
case R_386_GOTPC: case R_386_GOTPC:
@ -673,12 +675,13 @@ RelExpr X86_64TargetInfo::getRelExpr(uint32_t Type, const SymbolBody &S) const {
switch (Type) { switch (Type) {
default: default:
return R_ABS; return R_ABS;
case R_X86_64_TLSLD:
return R_TLSLD_PC;
case R_X86_64_SIZE32: case R_X86_64_SIZE32:
case R_X86_64_SIZE64: case R_X86_64_SIZE64:
return R_SIZE; return R_SIZE;
case R_X86_64_PLT32: case R_X86_64_PLT32:
case R_X86_64_PC32: case R_X86_64_PC32:
case R_X86_64_TLSLD:
case R_X86_64_TLSGD: case R_X86_64_TLSGD:
return R_PC; return R_PC;
case R_X86_64_GOT32: case R_X86_64_GOT32:

View File

@ -293,7 +293,6 @@ static unsigned handleTlsRelocation(uint32_t Type, SymbolBody &Body,
Out<ELFT>::RelaDyn->addReloc({Target->TlsModuleIndexRel, Out<ELFT>::Got, Out<ELFT>::RelaDyn->addReloc({Target->TlsModuleIndexRel, Out<ELFT>::Got,
Out<ELFT>::Got->getTlsIndexOff(), false, Out<ELFT>::Got->getTlsIndexOff(), false,
nullptr, 0}); nullptr, 0});
Expr = Expr == R_PC ? R_TLSLD_PC : R_TLSLD;
C.Relocations.push_back({Expr, Type, Offset, Addend, &Body}); C.Relocations.push_back({Expr, Type, Offset, Addend, &Body});
return 1; return 1;
} }