Index: lld/ELF/Arch/ARM.cpp =================================================================== --- lld/ELF/Arch/ARM.cpp +++ lld/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/test/ELF/arm-v4bx.test =================================================================== --- lld/test/ELF/arm-v4bx.test +++ lld/test/ELF/arm-v4bx.test @@ -2,6 +2,8 @@ # 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