[mips] Implement generation of relocations "chains" used by N32 ABI
In case of using a "nested" relocation expressions like this `%hi(%neg(%gp_rel()))`, N32 ABI requires generation of three consecutive relocations. That differs from the N64 ABI case where all relocations are packed into the single relocation record. llvm-svn: 313879
This commit is contained in:
@@ -1131,6 +1131,23 @@ void ELFObjectWriter::writeRelocations(const MCAssembler &Asm,
|
||||
|
||||
if (hasRelocationAddend())
|
||||
write(uint32_t(Entry.Addend));
|
||||
|
||||
if (TargetObjectWriter->getEMachine() == ELF::EM_MIPS) {
|
||||
if (uint32_t RType = TargetObjectWriter->getRType2(Entry.Type)) {
|
||||
write(uint32_t(Entry.Offset));
|
||||
|
||||
ERE32.setSymbolAndType(0, RType);
|
||||
write(ERE32.r_info);
|
||||
write(uint32_t(0));
|
||||
}
|
||||
if (uint32_t RType = TargetObjectWriter->getRType3(Entry.Type)) {
|
||||
write(uint32_t(Entry.Offset));
|
||||
|
||||
ERE32.setSymbolAndType(0, RType);
|
||||
write(ERE32.r_info);
|
||||
write(uint32_t(0));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user