Index: ELF/Arch/ARM.cpp =================================================================== --- ELF/Arch/ARM.cpp +++ ELF/Arch/ARM.cpp @@ -516,6 +516,10 @@ ((Val << 4) & 0x7000) | // imm3 (Val & 0x00ff)); // imm8 break; + case R_ARM_V4BX: + // V4BX records the location of an ARMv4t BX Instruction + // No computation is needed. + break; default: error(getErrorLocation(Loc) + "unrecognized reloc " + Twine(Type)); } Index: test/ELF/Inputs/v4bx.yaml =================================================================== --- /dev/null +++ test/ELF/Inputs/v4bx.yaml @@ -0,0 +1,29 @@ +--- !ELF +FileHeader: + Class: ELFCLASS32 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_ARM + Flags: [ EF_ARM_EABI_VER5 ] +Sections: + - Name: .text + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + AddressAlign: 0x0000000000000004 + Content: 1EFF2F01 + - Name: .rel.text + Type: SHT_REL + Link: .symtab + AddressAlign: 0x0000000000000004 + Info: .text + Relocations: + - Offset: 0x0000000000000000 + Symbol: '' + Type: R_ARM_V4BX +Symbols: + Local: + - Name: .text + Type: STT_SECTION + Section: .text +DynamicSymbols: +... Index: test/ELF/v4bx.s =================================================================== --- /dev/null +++ test/ELF/v4bx.s @@ -0,0 +1,10 @@ +// REQUIRES: arm +// RUN: yaml2obj %p/Inputs/v4bx.yaml -o %tv4bx.o +// RUN: llvm-mc -filetype=obj -triple=arm-arm-none-eabi %s -o %t.o +// RUN: ld.lld %t.o %tv4bx.o -o %t.out +// RUN: llvm-readelf -e %t.out | FileCheck %s +.global _start +_start: + +// CHECK: .text +