summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
Diffstat (limited to 'llvm')
-rw-r--r--llvm/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp8
-rw-r--r--llvm/test/MC/ARM/reloc-abs16.s13
2 files changed, 21 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp b/llvm/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp
index 0489caa69a3..c7739b4d792 100644
--- a/llvm/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp
+++ b/llvm/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp
@@ -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/llvm/test/MC/ARM/reloc-abs16.s b/llvm/test/MC/ARM/reloc-abs16.s
new file mode 100644
index 00000000000..c3c2b497b82
--- /dev/null
+++ b/llvm/test/MC/ARM/reloc-abs16.s
@@ -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
+
OpenPOWER on IntegriCloud