[lld] r334533 - [ELF][PPC64] Support R_PPC64_DTPREL64 which may be emitted in .rela.debug_addr
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 12 13:26:49 PDT 2018
Author: maskray
Date: Tue Jun 12 13:26:49 2018
New Revision: 334533
URL: http://llvm.org/viewvc/llvm-project?rev=334533&view=rev
Log:
[ELF][PPC64] Support R_PPC64_DTPREL64 which may be emitted in .rela.debug_addr
Modified:
lld/trunk/ELF/Arch/PPC64.cpp
lld/trunk/test/ELF/ppc64-dtprel.s
Modified: lld/trunk/ELF/Arch/PPC64.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Arch/PPC64.cpp?rev=334533&r1=334532&r2=334533&view=diff
==============================================================================
--- lld/trunk/ELF/Arch/PPC64.cpp (original)
+++ lld/trunk/ELF/Arch/PPC64.cpp Tue Jun 12 13:26:49 2018
@@ -211,6 +211,7 @@ RelExpr PPC64::getRelExpr(RelType Type,
case R_PPC64_DTPREL16_HIGHESTA:
case R_PPC64_DTPREL16_LO:
case R_PPC64_DTPREL16_LO_DS:
+ case R_PPC64_DTPREL64:
return R_ABS;
case R_PPC64_TLSGD:
case R_PPC64_TLSLD:
@@ -310,6 +311,8 @@ static std::pair<RelType, uint64_t> toAd
return {R_PPC64_ADDR16_LO, DTPBiasedVal};
case R_PPC64_DTPREL16_LO_DS:
return {R_PPC64_ADDR16_LO_DS, DTPBiasedVal};
+ case R_PPC64_DTPREL64:
+ return {R_PPC64_ADDR64, DTPBiasedVal};
default:
return {Type, Val};
Modified: lld/trunk/test/ELF/ppc64-dtprel.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/ppc64-dtprel.s?rev=334533&r1=334532&r2=334533&view=diff
==============================================================================
--- lld/trunk/test/ELF/ppc64-dtprel.s (original)
+++ lld/trunk/test/ELF/ppc64-dtprel.s Tue Jun 12 13:26:49 2018
@@ -95,6 +95,9 @@ test_not_adjusted:
mtlr 0
blr
+ .section .debug_addr,"", at progbits
+ .quad i at dtprel+32768
+
.type i, at object
.section .tdata,"awT", at progbits
.space 1024
@@ -123,6 +126,8 @@ k:
// InputRelocs: R_PPC64_DTPREL16_HIGHER {{[0-9a-f]+}} k + 0
// InputRelocs: R_PPC64_DTPREL16_HI {{[0-9a-f]+}} k + 0
// InputRelocs: R_PPC64_DTPREL16_LO {{[0-9a-f]+}} k + 0
+// InputRelocs: Relocation section '.rela.debug_addr'
+// InputRelocs: R_PPC64_DTPREL64 {{[0-9a-f]+}} i + 8000
// Expect a single dynamic relocation in the '.rela.dyn section for the module id.
// OutputRelocs: Relocation section '.rela.dyn' at offset 0x{{[0-9a-f]+}} contains 1 entries:
More information about the llvm-commits
mailing list