Index: lld/trunk/ELF/Arch/ARM.cpp =================================================================== --- lld/trunk/ELF/Arch/ARM.cpp +++ lld/trunk/ELF/Arch/ARM.cpp @@ -134,6 +134,12 @@ return R_NONE; case R_ARM_TLS_LE32: return R_TLS; + case R_ARM_V4BX: + // V4BX is just a marker to indicate there's a "bx rN" instruction at the + // given address. It can be used to implement a special linker mode which + // rewrites ARMv4T inputs to ARMv4. Since we support only ARMv4 input and + // not ARMv4 output, we can just ignore it. + return R_HINT; default: return R_ABS; } @@ -514,12 +520,6 @@ ((Val << 4) & 0x7000) | // imm3 (Val & 0x00ff)); // imm8 break; - case R_ARM_V4BX: - // V4BX is just a marker to indicate there's a "bx rN" instruction at the - // given address. It can be used to implement a special linker mode which - // rewrites ARMv4T inputs to ARMv4. Since we support only ARMv4 input and - // not ARMv4 output, we can just ignore it. - break; default: error(getErrorLocation(Loc) + "unrecognized reloc " + Twine(Type)); } Index: lld/trunk/test/ELF/arm-v4bx.test =================================================================== --- lld/trunk/test/ELF/arm-v4bx.test +++ lld/trunk/test/ELF/arm-v4bx.test @@ -0,0 +1,40 @@ +# REQUIRES: arm +# RUN: yaml2obj %s -o %t.o +# RUN: ld.lld %t.o -o %t +# RUN: llvm-readelf -sections %t | FileCheck %s +# RUN: ld.lld -shared %t.o -o %t +# RUN: llvm-readelf -sections %t | FileCheck %s + +# CHECK: .text + +--- !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: + Global: + - Name: _start + Section: .text + Local: + - Name: .text + Type: STT_SECTION + Section: .text +DynamicSymbols: Index: lld/trunk/test/ELF/v4bx.yaml =================================================================== --- lld/trunk/test/ELF/v4bx.yaml +++ lld/trunk/test/ELF/v4bx.yaml @@ -1,38 +0,0 @@ -# REQUIRES: arm -# RUN: yaml2obj %s -o %t.o -# RUN: ld.lld %t.o -o %t -# RUN: llvm-readelf -sections %t | FileCheck %s - -# CHECK: .text - ---- !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: - Global: - - Name: _start - Section: .text - Local: - - Name: .text - Type: STT_SECTION - Section: .text -DynamicSymbols: