diff options
-rw-r--r-- | lld/ELF/Target.cpp | 3 | ||||
-rw-r--r-- | lld/test/ELF/mips-jalr.test | 47 |
2 files changed, 50 insertions, 0 deletions
diff --git a/lld/ELF/Target.cpp b/lld/ELF/Target.cpp index d0f260ce611..2825f02fa21 100644 --- a/lld/ELF/Target.cpp +++ b/lld/ELF/Target.cpp @@ -1318,6 +1318,9 @@ void MipsTargetInfo<ELFT>::relocateOne(uint8_t *Loc, uint8_t *BufEnd, } break; } + case R_MIPS_JALR: + // Ignore this optimization relocation for now + break; case R_MIPS_LO16: { uint32_t Instr = read32<E>(Loc); int64_t AHL = SignExtend64<16>(Instr & 0xffff); diff --git a/lld/test/ELF/mips-jalr.test b/lld/test/ELF/mips-jalr.test new file mode 100644 index 00000000000..4bdf8b6e7f0 --- /dev/null +++ b/lld/test/ELF/mips-jalr.test @@ -0,0 +1,47 @@ +# Check that lld ignores R_MIPS_JALR relocation for now. + +# RUN: yaml2obj -format elf %s -o %t.o +# RUN: ld.lld %t.o -o %t.so -shared +# RUN: llvm-objdump -d %t.so | FileCheck %s + +# REQUIRES: mips + +# CHECK: 10000: 09 f8 20 03 jalr $25 + +FileHeader: + Class: ELFCLASS32 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_MIPS + Flags: [EF_MIPS_PIC, EF_MIPS_CPIC, EF_MIPS_ABI_O32, EF_MIPS_ARCH_32] + +Sections: + - Name: .text + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + AddressAlign: 16 + Content: "09f82003" +# ^-- jalr T1 + + - Name: .rel.text + Type: SHT_REL + Link: .symtab + Info: .text + Relocations: + - Offset: 0 + Symbol: T1 + Type: R_MIPS_JALR + +Symbols: + Local: + - Name: T1 + Type: STT_FUNC + Section: .text + Value: 0 + Size: 4 + Global: + - Name: __start + Type: STT_FUNC + Section: .text + Value: 0 + Size: 4 |