ARM: add support for R_ARM_ABS16
authorSaleem Abdulrasool <compnerd@compnerd.org>
Fri, 9 Jan 2015 06:57:24 +0000 (06:57 +0000)
committerSaleem Abdulrasool <compnerd@compnerd.org>
Fri, 9 Jan 2015 06:57:24 +0000 (06:57 +0000)
Add support for R_ARM_ABS16 relocation mapping.  Addresses PR22156.

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

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

index 0489caa69a30b43e6b1c620596c8301eedfb7e40..c7739b4d792adc7db78860e617fe6bedbdee796a 100644 (file)
@@ -156,6 +156,14 @@ unsigned ARMELFObjectWriter::GetRelocTypeInner(const MCValue &Target,
         break;
       }
       break;
+    case FK_Data_2:
+      switch (Modifier) {
+      default: llvm_unreachable("unsupported modifier");
+      case MCSymbolRefExpr::VK_None:
+        Type = ELF::R_ARM_ABS16;
+        break;
+      }
+      break;
     case FK_Data_4:
       switch (Modifier) {
       default: llvm_unreachable("Unsupported Modifier");
diff --git a/test/MC/ARM/reloc-abs16.s b/test/MC/ARM/reloc-abs16.s
new file mode 100644 (file)
index 0000000..c3c2b49
--- /dev/null
@@ -0,0 +1,13 @@
+@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s | llvm-objdump -r - \
+@ RUN:     | FileCheck %s
+@ RUN: llvm-mc -triple thumbv7-eabi -filetype obj -o - %s | llvm-objdump -r - \
+@ RUN:     | FileCheck %s
+
+       .syntax unified
+
+       .short abs16_0 -32768
+       .short abs16_1 +65535
+
+@ CHECK: 0 R_ARM_ABS16 abs16_0
+@ CHECK: 2 R_ARM_ABS16 abs16_1
+