Allow BSS with size 0 on ldr:ro

This commit is contained in:
gdkchan 2018-11-20 21:42:36 -03:00
commit bba8b4dbab

View file

@ -318,6 +318,8 @@ namespace Ryujinx.HLE.HOS.Services.Ldr
ulong BssTargetAddress = TargetAddress + Info.NroSize; ulong BssTargetAddress = TargetAddress + Info.NroSize;
if (Info.BssSize != 0)
{
Result = MemMgr.MapProcessCodeMemory(BssTargetAddress, Info.BssAddress, Info.BssSize); Result = MemMgr.MapProcessCodeMemory(BssTargetAddress, Info.BssAddress, Info.BssSize);
if (Result != KernelResult.Success) if (Result != KernelResult.Success)
@ -326,13 +328,18 @@ namespace Ryujinx.HLE.HOS.Services.Ldr
return MakeError(ErrorModule.Loader, LoaderErr.InvalidMemoryState); 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);
if (Info.BssSize != 0)
{
MemMgr.UnmapProcessCodeMemory(BssTargetAddress, Info.BssAddress, Info.BssSize); MemMgr.UnmapProcessCodeMemory(BssTargetAddress, Info.BssAddress, Info.BssSize);
}
return 0; return 0;
} }