[lld] r343972 - [ELF][HEXAGON] Add R_HEX_GOT_16_X support

Sid Manning via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 8 08:32:46 PDT 2018


Author: sidneym
Date: Mon Oct  8 08:32:46 2018
New Revision: 343972

URL: http://llvm.org/viewvc/llvm-project?rev=343972&view=rev
Log:
[ELF][HEXAGON] Add R_HEX_GOT_16_X support

Differential Revision: https://reviews.llvm.org/D52909

Modified:
    lld/trunk/ELF/Arch/Hexagon.cpp
    lld/trunk/test/ELF/hexagon-shared.s

Modified: lld/trunk/ELF/Arch/Hexagon.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Arch/Hexagon.cpp?rev=343972&r1=343971&r2=343972&view=diff
==============================================================================
--- lld/trunk/ELF/Arch/Hexagon.cpp (original)
+++ lld/trunk/ELF/Arch/Hexagon.cpp Mon Oct  8 08:32:46 2018
@@ -90,6 +90,7 @@ RelExpr Hexagon::getRelExpr(RelType Type
   case R_HEX_B32_PCREL_X:
     return R_PLT_PC;
   case R_HEX_GOT_11_X:
+  case R_HEX_GOT_16_X:
   case R_HEX_GOT_32_6_X:
     return R_HEXAGON_GOT;
   default:
@@ -191,7 +192,8 @@ void Hexagon::relocateOne(uint8_t *Loc,
   case R_HEX_12_X:
     or32le(Loc, applyMask(0x000007e0, Val));
     break;
-  case R_HEX_16_X: // This reloc only has 6 effective bits.
+  case R_HEX_16_X: // These relocs only have 6 effective bits.
+  case R_HEX_GOT_16_X:
     or32le(Loc, applyMask(findMaskR16(read32le(Loc)), Val & 0x3f));
     break;
   case R_HEX_32:

Modified: lld/trunk/test/ELF/hexagon-shared.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/hexagon-shared.s?rev=343972&r1=343971&r2=343972&view=diff
==============================================================================
--- lld/trunk/test/ELF/hexagon-shared.s (original)
+++ lld/trunk/test/ELF/hexagon-shared.s Mon Oct  8 08:32:46 2018
@@ -22,6 +22,9 @@ r2=add(pc,##_GLOBAL_OFFSET_TABLE_ at PCREL)
 r0 = memw (r2+##bar at GOT)
 jumpr r0
 
+# R_HEX_GOT_16_X
+r0 = add(r1,##bar at GOT)
+
 # PLT: { immext(#65472
 # PLT: r28 = add(pc,##65488) }
 # PLT: { r14 -= add(r28,#16)
@@ -37,6 +40,7 @@ jumpr r0
 
 # TEXT:  10000: 00 00 02 00 00020000
 # TEXT: { 	call 0x10050 }
+# TEXT: r0 = add(r1,##65664) }
 
 # GOT: .got:
 # GOT: 30080:	00 00 00 00 00000000 <unknown>




More information about the llvm-commits mailing list