Loader: Refuse a PRX cut off before its relocations if it exports a library

PMDVIS ships a kcall.prx that ends where its relocation sections begin.
On a PSP-1000 (6.61) such a module loads unrelocated if syslib is its only
export library, but with another library the load hangs the PSP
(pspautotests modules/cutrel and modules/cutrel/kernel, which leave that
case out). We loaded it unrelocated, and PMDVIS then crashed on its
garbage export table. Now the load fails with 80020148, the error
PSPLink's modload gave for that file, and PMDVIS carries on without the
ME.

Also ModuleMgrForKernel's 6.61 NID for sceKernelUnloadModule, which the
kernel test uses.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Henrik RydgårdandClaude Opus 5.5 committed 2026-10-21 08:58:10 +02:00
1 parent 4ed0bfd08a
commit d1ddaf9681
4 files changed
+21 -1

No files matched your search

+1
View File
@@ -3749,6 +3749,7 @@ const HLEFunction ModuleMgrForKernel[] = {
// 6.60 NIDs.
{0x939E4270, &WrapU_CUU<sceKernelLoadModule>, "sceKernelLoadModuleForKernel", 'x', "sxx", HLE_KERNEL_SYSCALL },
{0x3FF74DF1, &WrapU_UUUUU<sceKernelStartModule>, "sceKernelStartModule", 'v', "xxxxx", HLE_NOT_IN_INTERRUPT | HLE_NOT_DISPATCH_SUSPENDED | HLE_KERNEL_SYSCALL },
{0x387E3CA9, &WrapU_U<sceKernelUnloadModule>, "sceKernelUnloadModule", 'x', "x" , HLE_KERNEL_SYSCALL },
};
void Register_ModuleMgrForUser() {