forked from OSchip/llvm-project
[ELF][MIPS] Ignore R_MIPS_JALR relocation for now
The `R_MIPS_JALR` is a relocation generated by gcc and gas. This relocation points to the `jalr` instruction which might be optimized and converted to the `b` instruction under some conditions. Now we just ignore this relocation and keep instructions unchanged. llvm-svn: 255453
This commit is contained in:
parent
dddbeb7a46
commit
e4361859c0
|
@ -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);
|
||||
|
|
|
@ -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
|
Loading…
Reference in New Issue