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: {
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: {
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:
@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:
@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