summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp4
-rw-r--r--llvm/test/MC/ARM/elf-movt.s12
2 files changed, 14 insertions, 2 deletions
diff --git a/llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp b/llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp
index 22de728fe06..91174c800b2 100644
--- a/llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp
+++ b/llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp
@@ -392,7 +392,7 @@ unsigned ARMAsmBackend::adjustFixupValue(const MCAssembler &Asm,
case FK_SecRel_4:
return Value;
case ARM::fixup_arm_movt_hi16:
- if (!IsPCRel)
+ if (!IsPCRel && !STI->getTargetTriple().isOSBinFormatELF())
Value >>= 16;
LLVM_FALLTHROUGH;
case ARM::fixup_arm_movw_lo16: {
@@ -404,7 +404,7 @@ unsigned ARMAsmBackend::adjustFixupValue(const MCAssembler &Asm,
return Value;
}
case ARM::fixup_t2_movt_hi16:
- if (!IsPCRel)
+ if (!IsPCRel && !STI->getTargetTriple().isOSBinFormatELF())
Value >>= 16;
LLVM_FALLTHROUGH;
case ARM::fixup_t2_movw_lo16: {
diff --git a/llvm/test/MC/ARM/elf-movt.s b/llvm/test/MC/ARM/elf-movt.s
index 9df7a603b71..5e4d6e18db7 100644
--- a/llvm/test/MC/ARM/elf-movt.s
+++ b/llvm/test/MC/ARM/elf-movt.s
@@ -14,8 +14,12 @@ barf: @ @barf
movw r0, :lower16:GOT-(.LPC0_2+8)
movt r0, :upper16:GOT-(.LPC0_2+8)
.LPC0_2:
+ movw r0, :lower16:extern_symbol+1234
+ movt r0, :upper16:extern_symbol+1234
@ ASM: movw r0, :lower16:(GOT-(.LPC0_2+8))
@ ASM-NEXT: movt r0, :upper16:(GOT-(.LPC0_2+8))
+@ ASM: movw r0, :lower16:(extern_symbol+1234)
+@ ASM-NEXT: movt r0, :upper16:(extern_symbol+1234)
@OBJ: Disassembly of section .text:
@OBJ-NEXT: barf:
@@ -23,6 +27,10 @@ barf: @ @barf
@OBJ-NEXT: 00000000: R_ARM_MOVW_PREL_NC GOT
@OBJ-NEXT: 4: f4 0f 4f e3 movt r0, #65524
@OBJ-NEXT: 00000004: R_ARM_MOVT_PREL GOT
+@OBJ-NEXT: 8: d2 04 00 e3 movw r0, #1234
+@OBJ-NEXT: 00000008: R_ARM_MOVW_ABS_NC extern_symbol
+@OBJ-NEXT: c: d2 04 40 e3 movt r0, #1234
+@OBJ-NEXT: 0000000c: R_ARM_MOVT_ABS extern_symbol
@THUMB: Disassembly of section .text:
@THUMB-NEXT: barf:
@@ -30,3 +38,7 @@ barf: @ @barf
@THUMB-NEXT: 00000000: R_ARM_THM_MOVW_PREL_NC GOT
@THUMB-NEXT: 4: cf f6 f4 70 movt r0, #65524
@THUMB-NEXT: 00000004: R_ARM_THM_MOVT_PREL GOT
+@THUMB-NEXT: 8: 40 f2 d2 40 movw r0, #1234
+@THUMB-NEXT: 00000008: R_ARM_THM_MOVW_ABS_NC extern_symbol
+@THUMB-NEXT: c: c0 f2 d2 40 movt r0, #1234
+@THUMB-NEXT: 0000000c: R_ARM_THM_MOVT_ABS extern_symbol
OpenPOWER on IntegriCloud