loader: ignore invalid index_value and allow relative reloc 10

This commit is contained in:
Jake 2018-06-07 06:17:47 -05:00 committed by Ivan
parent 095d02e41b
commit edeb858138
2 changed files with 2 additions and 2 deletions

View File

@ -833,7 +833,7 @@ std::shared_ptr<lv2_prx> ppu_load_prx(const ppu_prx_object& elf, const std::stri
ppu_reloc _rel;
const u32 raddr = _rel.addr = vm::cast(prx->segs.at(rel.index_addr).addr + rel.offset, HERE);
const u32 rtype = _rel.type = rel.type;
const u64 rdata = _rel.data = prx->segs.at(rel.index_value).addr + rel.ptr.addr();
const u64 rdata = _rel.data = rel.index_value == 0xFF ? rel.ptr.addr().value() : prx->segs.at(rel.index_value).addr + rel.ptr.addr();
prx->relocs.emplace_back(_rel);
switch (rtype)

View File

@ -83,7 +83,7 @@ PPUTranslator::PPUTranslator(LLVMContext& context, Module* module, const ppu_mod
// Ignore relative relocations, they are handled in emmitted code
// Comment out types we haven't confirmed as used and working
// case 10:
case 10:
case 11:
// case 12:
// case 13: