Allow BSS with size 0 on ldr:ro
This commit is contained in:
parent
1f544bbba4
commit
bba8b4dbab
1 changed files with 14 additions and 7 deletions
|
@ -318,21 +318,28 @@ namespace Ryujinx.HLE.HOS.Services.Ldr
|
||||||
|
|
||||||
ulong BssTargetAddress = TargetAddress + Info.NroSize;
|
ulong BssTargetAddress = TargetAddress + Info.NroSize;
|
||||||
|
|
||||||
Result = MemMgr.MapProcessCodeMemory(BssTargetAddress, Info.BssAddress, Info.BssSize);
|
if (Info.BssSize != 0)
|
||||||
|
|
||||||
if (Result != KernelResult.Success)
|
|
||||||
{
|
{
|
||||||
MemMgr.UnmapProcessCodeMemory(TargetAddress, Info.NroAddress, Info.NroSize);
|
Result = MemMgr.MapProcessCodeMemory(BssTargetAddress, Info.BssAddress, Info.BssSize);
|
||||||
|
|
||||||
return MakeError(ErrorModule.Loader, LoaderErr.InvalidMemoryState);
|
if (Result != KernelResult.Success)
|
||||||
|
{
|
||||||
|
MemMgr.UnmapProcessCodeMemory(TargetAddress, Info.NroAddress, Info.NroSize);
|
||||||
|
|
||||||
|
return MakeError(ErrorModule.Loader, LoaderErr.InvalidMemoryState);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Result = LoadNroIntoMemory(Context.Process, Info.Executable, TargetAddress);
|
Result = LoadNroIntoMemory(Context.Process, Info.Executable, TargetAddress);
|
||||||
|
|
||||||
if (Result != KernelResult.Success)
|
if (Result != KernelResult.Success)
|
||||||
{
|
{
|
||||||
MemMgr.UnmapProcessCodeMemory(TargetAddress, Info.NroAddress, Info.NroSize);
|
MemMgr.UnmapProcessCodeMemory(TargetAddress, Info.NroAddress, Info.NroSize);
|
||||||
MemMgr.UnmapProcessCodeMemory(BssTargetAddress, Info.BssAddress, Info.BssSize);
|
|
||||||
|
if (Info.BssSize != 0)
|
||||||
|
{
|
||||||
|
MemMgr.UnmapProcessCodeMemory(BssTargetAddress, Info.BssAddress, Info.BssSize);
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue