[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