forked from OSchip/llvm-project
[LLVM][MIPS] Fix createStubFunction to emit JR encoding based on Arch.
Reviewers: vkalintiris, dsanders Subscribers: jaydeep, bhushan, mohit.bhakkad, slthakur, llvm-commits Differential Revision: https://reviews.llvm.org/D21172 llvm-svn: 275559
This commit is contained in:
parent
05efec8b84
commit
7481e40ef8
|
@ -816,7 +816,10 @@ uint8_t *RuntimeDyldImpl::createStubFunction(uint8_t *Addr,
|
|||
// 8: 03200008 jr t9.
|
||||
// c: 00000000 nop.
|
||||
const unsigned LuiT9Instr = 0x3c190000, AdduiT9Instr = 0x27390000;
|
||||
const unsigned JrT9Instr = 0x03200008, NopInstr = 0x0;
|
||||
const unsigned NopInstr = 0x0;
|
||||
unsigned JrT9Instr = 0x03200008;
|
||||
if ((AbiVariant & ELF::EF_MIPS_ARCH) == ELF::EF_MIPS_ARCH_32R6)
|
||||
JrT9Instr = 0x03200009;
|
||||
|
||||
writeBytesUnaligned(LuiT9Instr, Addr, 4);
|
||||
writeBytesUnaligned(AdduiT9Instr, Addr+4, 4);
|
||||
|
|
|
@ -1402,8 +1402,12 @@ RuntimeDyldELF::processRelocationRef(
|
|||
// Create a new stub function.
|
||||
DEBUG(dbgs() << " Create a new stub function\n");
|
||||
Stubs[Value] = Section.getStubOffset();
|
||||
|
||||
unsigned AbiVariant;
|
||||
O.getPlatformFlags(AbiVariant);
|
||||
|
||||
uint8_t *StubTargetAddr = createStubFunction(
|
||||
Section.getAddressWithOffset(Section.getStubOffset()));
|
||||
Section.getAddressWithOffset(Section.getStubOffset()), AbiVariant);
|
||||
|
||||
// Creating Hi and Lo relocations for the filled stub instructions.
|
||||
RelocationEntry REHi(SectionID, StubTargetAddr - Section.getAddress(),
|
||||
|
|
Loading…
Reference in New Issue