This commit is contained in:
panzone 2025-03-07 21:06:35 +01:00
parent 4631b87f0c
commit 0d512de332

View File

@ -36,9 +36,7 @@ s32 PS4_SYSV_ABI sceKernelLoadStartModule(const char* moduleFileName, size_t arg
u32 flags, const void* pOpt, int* pRes) {
LOG_INFO(Lib_Kernel, "called filename = {}, args = {}", moduleFileName, args);
if (flags != 0) {
return ORBIS_KERNEL_ERROR_EINVAL;
}
ASSERT(flags == 0);
std::string guest_path(moduleFileName);
auto* mnt = Common::Singleton<Core::FileSys::MntPoints>::Instance();
@ -52,34 +50,15 @@ s32 PS4_SYSV_ABI sceKernelLoadStartModule(const char* moduleFileName, size_t arg
if (handle != -1) {
return handle;
}
ASSERT_MSG(0, "Trying to load system module {}", guest_path);
//Trying to load a system module
UNREACHABLE();
} else {
auto* process_params = linker->GetProcParam();
if (process_params->sdk_version > 0x3ffffff) {
if (process_params->process_name != nullptr &&
strstr(process_params->process_name, "web_core.elf")) {
if (guest_path.contains("libScePigletv2VSH") ||
guest_path.contains("libSceSysCore") ||
guest_path.contains("libSceVideoCoreServerInterface")) {
ASSERT_MSG(0, "Trying to load system module {}", guest_path);
} else {
// loading prohibited
return ORBIS_KERNEL_ERROR_ENOENT;
}
} else {
// loading prohibited
return ORBIS_KERNEL_ERROR_ENOENT;
}
}
if (!guest_path.contains('/')) {
path = mnt->GetHostPath("/app0/" + guest_path);
handle = linker->LoadAndStartModule(path, args, argp, pRes);
if (handle != -1) {
return handle;
}
if ((flags & 0x10000) != 0) {
ASSERT_MSG(0, "Trying to load system module {}", guest_path);
}
} else {
path = mnt->GetHostPath(guest_path);
handle = linker->LoadAndStartModule(path, args, argp, pRes);