PS3 Loader: Fix sections memorizing
This commit is contained in:
@@ -863,10 +863,12 @@ std::shared_ptr<lv2_prx> ppu_load_prx(const ppu_prx_object& elf, const std::stri
|
|||||||
{
|
{
|
||||||
ppu_loader.notice("** Section: sh_type=0x%x, addr=0x%llx, size=0x%llx, flags=0x%x", s.sh_type, s.sh_addr, s.sh_size, s.sh_flags);
|
ppu_loader.notice("** Section: sh_type=0x%x, addr=0x%llx, size=0x%llx, flags=0x%x", s.sh_type, s.sh_addr, s.sh_size, s.sh_flags);
|
||||||
|
|
||||||
|
if (s.sh_type != 1u) continue;
|
||||||
|
|
||||||
const u32 addr = vm::cast(s.sh_addr);
|
const u32 addr = vm::cast(s.sh_addr);
|
||||||
const u32 size = vm::cast(s.sh_size);
|
const u32 size = vm::cast(s.sh_size);
|
||||||
|
|
||||||
if (s.sh_type == 1u && addr && size) // TODO: some sections with addr=0 are valid
|
if (addr && size) // TODO: some sections with addr=0 are valid
|
||||||
{
|
{
|
||||||
for (usz i = 0; i < prx->segs.size(); i++)
|
for (usz i = 0; i < prx->segs.size(); i++)
|
||||||
{
|
{
|
||||||
@@ -1203,6 +1205,8 @@ void ppu_load_exec(const ppu_exec_object& elf)
|
|||||||
{
|
{
|
||||||
ppu_loader.notice("** Section: sh_type=0x%x, addr=0x%llx, size=0x%llx, flags=0x%x", s.sh_type, s.sh_addr, s.sh_size, s.sh_flags);
|
ppu_loader.notice("** Section: sh_type=0x%x, addr=0x%llx, size=0x%llx, flags=0x%x", s.sh_type, s.sh_addr, s.sh_size, s.sh_flags);
|
||||||
|
|
||||||
|
if (s.sh_type != 1u) continue;
|
||||||
|
|
||||||
ppu_segment _sec;
|
ppu_segment _sec;
|
||||||
const u32 addr = _sec.addr = vm::cast(s.sh_addr);
|
const u32 addr = _sec.addr = vm::cast(s.sh_addr);
|
||||||
const u32 size = _sec.size = vm::cast(s.sh_size);
|
const u32 size = _sec.size = vm::cast(s.sh_size);
|
||||||
@@ -1210,7 +1214,7 @@ void ppu_load_exec(const ppu_exec_object& elf)
|
|||||||
const u32 flag = _sec.flags = static_cast<u32>(s.sh_flags & 7);
|
const u32 flag = _sec.flags = static_cast<u32>(s.sh_flags & 7);
|
||||||
_sec.filesz = 0;
|
_sec.filesz = 0;
|
||||||
|
|
||||||
if (s.sh_type == 1u && addr && size)
|
if (addr && size)
|
||||||
{
|
{
|
||||||
_main->secs.emplace_back(_sec);
|
_main->secs.emplace_back(_sec);
|
||||||
}
|
}
|
||||||
@@ -1699,6 +1703,8 @@ std::shared_ptr<lv2_overlay> ppu_load_overlay(const ppu_exec_object& elf, const
|
|||||||
{
|
{
|
||||||
ppu_loader.notice("** Section: sh_type=0x%x, addr=0x%llx, size=0x%llx, flags=0x%x", s.sh_type, s.sh_addr, s.sh_size, s.sh_flags);
|
ppu_loader.notice("** Section: sh_type=0x%x, addr=0x%llx, size=0x%llx, flags=0x%x", s.sh_type, s.sh_addr, s.sh_size, s.sh_flags);
|
||||||
|
|
||||||
|
if (s.sh_type != 1u) continue;
|
||||||
|
|
||||||
ppu_segment _sec;
|
ppu_segment _sec;
|
||||||
const u32 addr = _sec.addr = vm::cast(s.sh_addr);
|
const u32 addr = _sec.addr = vm::cast(s.sh_addr);
|
||||||
const u32 size = _sec.size = vm::cast(s.sh_size);
|
const u32 size = _sec.size = vm::cast(s.sh_size);
|
||||||
@@ -1706,7 +1712,7 @@ std::shared_ptr<lv2_overlay> ppu_load_overlay(const ppu_exec_object& elf, const
|
|||||||
const u32 flag = _sec.flags = static_cast<u32>(s.sh_flags & 7);
|
const u32 flag = _sec.flags = static_cast<u32>(s.sh_flags & 7);
|
||||||
_sec.filesz = 0;
|
_sec.filesz = 0;
|
||||||
|
|
||||||
if (s.sh_type == 1u && addr && size)
|
if (addr && size)
|
||||||
{
|
{
|
||||||
ovlm->secs.emplace_back(_sec);
|
ovlm->secs.emplace_back(_sec);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user