[PATCH] D52734: Add R_HEX_PLT_B22_PCREL and R_HEX_32_PCREL relocation support

Sid Manning via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 1 11:29:13 PDT 2018


This revision was automatically updated to reflect the committed changes.
Closed by commit rLLD343515: [ELF] [HEXAGON] Add support for PLT_B22_PCREL and HEX_32_PCREL (authored by sidneym, committed by ).

Repository:
  rLLD LLVM Linker

https://reviews.llvm.org/D52734

Files:
  ELF/Arch/Hexagon.cpp
  test/ELF/hexagon-shared.s


Index: test/ELF/hexagon-shared.s
===================================================================
--- test/ELF/hexagon-shared.s
+++ test/ELF/hexagon-shared.s
@@ -3,21 +3,29 @@
 # RUN: llvm-mc -filetype=obj -triple=hexagon-unknown-elf %S/Inputs/hexagon-shared.s -o %t2.o
 # RUN: ld.lld -shared %t2.o -soname %t3.so -o %t3.so
 # RUN: ld.lld -shared %t %t3.so -soname %t4.so -o %t4.so
-# RUN: llvm-objdump -d -j .plt %t4.so | FileCheck %s
+# RUN: llvm-objdump -d -j=.plt %t4.so | FileCheck --check-prefix=PLT %s
+# RUN: llvm-objdump -d -j=.text %t4.so | FileCheck --check-prefix=TEXT %s
 
 .global foo
 foo:
+# _HEX_32_PCREL
+.word _DYNAMIC - .
 call ##bar
+# R_HEX_PLT_B22_PCREL
+call bar at PLT
 
-# CHECK: { immext(#65472
-# CHECK: r28 = add(pc,##65520) }
-# CHECK: { r14 -= add(r28,#16)
-# CHECK: r15 = memw(r28+#8)
-# CHECK: r28 = memw(r28+#4) }
-# CHECK: { r14 = asr(r14,#2)
-# CHECK: jumpr r28 }
-# CHECK: { trap0(#219) }
-# CHECK: immext(#65472)
-# CHECK: r14 = add(pc,##65488) }
-# CHECK: r28 = memw(r14+#0) }
-# CHECK: jumpr r28 }
+# PLT: { immext(#65472
+# PLT: r28 = add(pc,##65520) }
+# PLT: { r14 -= add(r28,#16)
+# PLT: r15 = memw(r28+#8)
+# PLT: r28 = memw(r28+#4) }
+# PLT: { r14 = asr(r14,#2)
+# PLT: jumpr r28 }
+# PLT: { trap0(#219) }
+# PLT: immext(#65472)
+# PLT: r14 = add(pc,##65488) }
+# PLT: r28 = memw(r14+#0) }
+# PLT: jumpr r28 }
+
+# TEXT:  10000: 00 00 01 00 00010000
+# TEXT: { 	call 0x10030 }
Index: ELF/Arch/Hexagon.cpp
===================================================================
--- ELF/Arch/Hexagon.cpp
+++ ELF/Arch/Hexagon.cpp
@@ -75,8 +75,10 @@
   case R_HEX_B15_PCREL:
   case R_HEX_B15_PCREL_X:
   case R_HEX_6_PCREL_X:
+  case R_HEX_32_PCREL:
     return R_PC;
   case R_HEX_B22_PCREL:
+  case R_HEX_PLT_B22_PCREL:
   case R_HEX_B22_PCREL_X:
   case R_HEX_B32_PCREL_X:
     return R_PLT_PC;
@@ -182,6 +184,7 @@
     or32le(Loc, applyMask(findMaskR16(read32le(Loc)), Val & 0x3f));
     break;
   case R_HEX_32:
+  case R_HEX_32_PCREL:
     or32le(Loc, Val);
     break;
   case R_HEX_32_6_X:
@@ -203,6 +206,7 @@
     or32le(Loc, applyMask(0x00df20fe, Val & 0x3f));
     break;
   case R_HEX_B22_PCREL:
+  case R_HEX_PLT_B22_PCREL:
     or32le(Loc, applyMask(0x1ff3ffe, Val >> 2));
     break;
   case R_HEX_B22_PCREL_X:


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D52734.167787.patch
Type: text/x-patch
Size: 2265 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20181001/e31fd631/attachment.bin>


More information about the llvm-commits mailing list