mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-11-20 08:21:46 +00:00
Merge b2a57f4391 into 0fdf1cc386
This commit is contained in:
commit
43fec34868
@ -143,17 +143,23 @@ bool ElfReader::LoadIntoMemory(Core::System& system, bool only_in_mem1) const
|
|||||||
{
|
{
|
||||||
Elf32_Phdr* p = segments + i;
|
Elf32_Phdr* p = segments + i;
|
||||||
|
|
||||||
INFO_LOG_FMT(BOOT, "Type: {} Vaddr: {:08x} Filesz: {} Memsz: {}", p->p_type, p->p_vaddr,
|
INFO_LOG_FMT(BOOT, "Type: {} Vaddr: {:08x} Paddr: {:08x} Filesz: {} Memsz: {}", p->p_type,
|
||||||
p->p_filesz, p->p_memsz);
|
p->p_vaddr, p->p_paddr, p->p_filesz, p->p_memsz);
|
||||||
|
|
||||||
if (p->p_type == PT_LOAD)
|
if (p->p_type == PT_LOAD)
|
||||||
{
|
{
|
||||||
u32 writeAddr = p->p_vaddr;
|
// Check LMA (paddr) first - some are nonsense, so fall back to VMA (vaddr) if invalid
|
||||||
|
u32 writeAddr = p->p_paddr;
|
||||||
|
if (writeAddr)
|
||||||
|
writeAddr |= 0x80000000; // map to virtual address
|
||||||
|
else
|
||||||
|
writeAddr = p->p_vaddr; // LMA is empty, fall back to VMA
|
||||||
|
|
||||||
const u8* src = GetSegmentPtr(i);
|
const u8* src = GetSegmentPtr(i);
|
||||||
u32 srcSize = p->p_filesz;
|
u32 srcSize = p->p_filesz;
|
||||||
u32 dstSize = p->p_memsz;
|
u32 dstSize = p->p_memsz;
|
||||||
|
|
||||||
if (only_in_mem1 && p->p_vaddr >= memory.GetRamSizeReal())
|
if (only_in_mem1 && writeAddr >= memory.GetRamSizeReal())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
memory.CopyToEmu(writeAddr, src, srcSize);
|
memory.CopyToEmu(writeAddr, src, srcSize);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user