Change getRelExpr to return the final value for TLSLD. NFC.
llvm-svn: 266580
This commit is contained in:
parent
565a0aa1c4
commit
c4d56970dc
|
@ -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:
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue