Fix incorrect relocation generation. Patch by Kristof Beyls.
authorRafael Espindola <rafael.espindola@gmail.com>
Thu, 22 Dec 2011 21:36:43 +0000 (21:36 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Thu, 22 Dec 2011 21:36:43 +0000 (21:36 +0000)
Fixes PR11214.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147180 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp
test/MC/ARM/elf-thumbfunc-reloc.s [new file with mode: 0644]

index 4ffaa52bd8cb1ec863d7d21b2997d5575117aca7..4f4b86a7e70d26242ab6937a1c8c167c6aad82da 100644 (file)
@@ -209,14 +209,7 @@ unsigned ARMELFObjectWriter::GetRelocTypeInner(const MCValue &Target,
       break;
     case ARM::fixup_arm_thumb_bl:
     case ARM::fixup_arm_thumb_blx:
-      switch (Modifier) {
-      case MCSymbolRefExpr::VK_ARM_PLT:
-        Type = ELF::R_ARM_THM_CALL;
-        break;
-      default:
-        Type = ELF::R_ARM_NONE;
-        break;
-      }
+      Type = ELF::R_ARM_THM_CALL;
       break;
     }
   } else {
diff --git a/test/MC/ARM/elf-thumbfunc-reloc.s b/test/MC/ARM/elf-thumbfunc-reloc.s
new file mode 100644 (file)
index 0000000..4a311dd
--- /dev/null
@@ -0,0 +1,23 @@
+@@ test st_value bit 0 of thumb function
+@ RUN: llvm-mc %s -triple=arm-freebsd-eabi -filetype=obj -o - | \
+@ RUN: elf-dump  | FileCheck %s
+
+
+       .syntax unified
+        .text
+        .globl  f
+        .align  2
+        .type   f,%function
+        .code   16
+        .thumb_func
+f:
+        push    {r7, lr}
+        mov     r7, sp
+        bl      g
+        pop     {r7, pc}
+
+@@ make sure an R_ARM_THM_CALL relocation is generated for the call to g
+@CHECK:        ('_relocations', [
+@CHECK:         (('r_offset', 0x00000004)
+@CHECK-NEXT:     ('r_sym', 0x{{[0-9a-fA-F]+}})
+@CHECK-NEXT:     ('r_type', 0x0a)