Index: llvm/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp =================================================================== --- llvm/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp +++ llvm/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp @@ -137,6 +137,13 @@ default: return ELF::R_ARM_THM_CALL; } + case ARM::fixup_thumb_adr_pcrel_10: + case ARM::fixup_arm_thumb_cp: + return ELF::R_ARM_THM_PC8; + case ARM::fixup_t2_adr_pcrel_12: + return ELF::R_ARM_THM_ALU_PREL_11_0; + case ARM::fixup_t2_ldst_pcrel_12: + return ELF::R_ARM_THM_PC12; case ARM::fixup_bf_target: return ELF::R_ARM_THM_BF16; case ARM::fixup_bfc_target: Index: llvm/test/MC/ARM/thumb1-relax-adr.s =================================================================== --- llvm/test/MC/ARM/thumb1-relax-adr.s +++ llvm/test/MC/ARM/thumb1-relax-adr.s @@ -1,9 +1,9 @@ @ RUN: not llvm-mc -triple thumbv6m-none-macho -filetype=obj -o /dev/null %s 2>&1 | FileCheck --check-prefix=CHECK-ERROR %s @ RUN: not llvm-mc -triple thumbv7m-none-macho -filetype=obj -o /dev/null %s 2>&1 | FileCheck --check-prefix=CHECK-ERROR %s -@ RUN: not llvm-mc -triple thumbv7m-none-eabi -filetype=obj -o /dev/null %s 2>&1 | FileCheck --check-prefix=CHECK-ERROR %s +@ RUN: llvm-mc -triple thumbv7m-none-eabi -filetype=obj %s -o - | llvm-readobj --relocs | FileCheck --check-prefix=CHECK-ELF %s .global func1 _func1: adr r0, _func2 @ CHECK-ERROR: unsupported relocation on symbol - +@ CHECK-ELF: 0x0 R_ARM_THM_ALU_PREL_11_0 _func2 0x0 Index: llvm/test/MC/ARM/thumb1-relax-ldrlit.s =================================================================== --- llvm/test/MC/ARM/thumb1-relax-ldrlit.s +++ llvm/test/MC/ARM/thumb1-relax-ldrlit.s @@ -1,9 +1,11 @@ @ RUN: not llvm-mc -triple thumbv6m-none-macho -filetype=obj -o /dev/null %s 2>&1 | FileCheck --check-prefix=CHECK-ERROR %s @ RUN: not llvm-mc -triple thumbv7m-none-macho -filetype=obj -o /dev/null %s 2>&1 | FileCheck --check-prefix=CHECK-ERROR %s -@ RUN: not llvm-mc -triple thumbv7m-none-eabi -filetype=obj -o /dev/null %s 2>&1 | FileCheck --check-prefix=CHECK-ERROR %s +@ RUN: llvm-mc -triple thumbv6m-none-eabi -filetype=obj %s -o - | llvm-readobj --relocs | FileCheck --check-prefix=CHECK-ELF-T1 %s +@ RUN: llvm-mc -triple thumbv7m-none-eabi -filetype=obj %s -o - | llvm-readobj --relocs | FileCheck --check-prefix=CHECK-ELF-T2 %s .global func1 _func1: ldr r0, _func2 @ CHECK-ERROR: unsupported relocation on symbol - +@ CHECK-ELF-T1: 0x0 R_ARM_THM_PC8 _func2 0x0 +@ CHECK-ELF-T2: 0x0 R_ARM_THM_PC12 _func2 0x0