mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-04 22:11:26 +12:00
PS3 Loader: Fix sections memorizing
This commit is contained in:
parent
6ae1f1b02c
commit
951fe3491e
1 changed files with 9 additions and 3 deletions
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue