Loading a PRX module suddenly gives me 8002013C on 3.40 OE
Loading a PRX module suddenly gives me 8002013C on 3.40 OE
Hi all,
I just upgraded my psp to 3.40 OE and suddenly a kernel mode PRX what could be loaded fine by my user mode PRX (inside a PBP) refuses to load and gives me a 8002013C error.
on 3.10 OE A' I did not have this problem...
Is something changed in the module loading business?
None of the binaries were changed, I only updated the OE firmware
I just upgraded my psp to 3.40 OE and suddenly a kernel mode PRX what could be loaded fine by my user mode PRX (inside a PBP) refuses to load and gives me a 8002013C error.
on 3.10 OE A' I did not have this problem...
Is something changed in the module loading business?
None of the binaries were changed, I only updated the OE firmware
-
- Posts: 376
- Joined: Wed May 10, 2006 11:31 pm
0x8002013C is library not found.
Try this thread for a solution maybe: http://forums.ps2dev.org/viewtopic.php?t=7484
Try this thread for a solution maybe: http://forums.ps2dev.org/viewtopic.php?t=7484
it's linking them in the makefile or in the building process (as some libs are put by default thanks to build.mak import).DickyDick wrote:hmmm it's only linking 3 libs:
-lpspkernel -lpsplibc -lpspuser
are there driver versions of these?
if it's the first check the build process probably you are importing some user mode functions.
you could even check psplink to see what imports you are using
So I need to find "non usermode counterparts" of these functions?
(listing from prxtool -f)
Imports:
Import 0, Name IoFileMgrForUser, Functions 1, Variables 0, flags 40010000
Functions:
0x42EC03AC [0x00008758] - IoFileMgrForUser_42EC03AC
Import 1, Name ModuleMgrForUser, Functions 1, Variables 0, flags 40010000
Functions:
0xD675EBB8 [0x00008760] - ModuleMgrForUser_D675EBB8
Import 2, Name SysMemUserForUser, Functions 4, Variables 0, flags 40000000
Functions:
0xA291F107 [0x00008768] - SysMemUserForUser_A291F107
0x237DBD4F [0x00008770] - SysMemUserForUser_237DBD4F
0xB6D61D02 [0x00008778] - SysMemUserForUser_B6D61D02
0x9D9A5BA1 [0x00008780] - SysMemUserForUser_9D9A5BA1
Import 3, Name ThreadManForUser, Functions 4, Variables 0, flags 40010000
Functions:
0x9ACE131E [0x00008788] - ThreadManForUser_9ACE131E
0x446D8DE6 [0x00008790] - ThreadManForUser_446D8DE6
0xF475845D [0x00008798] - ThreadManForUser_F475845D
0xAA73C935 [0x000087A0] - ThreadManForUser_AA73C935
Import 4, Name UtilsForUser, Functions 2, Variables 0, flags 40010000
Functions:
0x79D1C3FA [0x000087A8] - UtilsForUser_79D1C3FA
0xB435DEC5 [0x000087B0] - UtilsForUser_B435DEC5
Import 5, Name sceSysreg_driver, Functions 3, Variables 0, flags 00010000
Functions:
0xDE59DACB [0x000087B8] - sceSysreg_driver_DE59DACB
0x2DB0EB28 [0x000087C0] - sceSysreg_driver_2DB0EB28
0x44F6CDA7 [0x000087C8] - sceSysreg_driver_44F6CDA7
(listing from prxtool -f)
Imports:
Import 0, Name IoFileMgrForUser, Functions 1, Variables 0, flags 40010000
Functions:
0x42EC03AC [0x00008758] - IoFileMgrForUser_42EC03AC
Import 1, Name ModuleMgrForUser, Functions 1, Variables 0, flags 40010000
Functions:
0xD675EBB8 [0x00008760] - ModuleMgrForUser_D675EBB8
Import 2, Name SysMemUserForUser, Functions 4, Variables 0, flags 40000000
Functions:
0xA291F107 [0x00008768] - SysMemUserForUser_A291F107
0x237DBD4F [0x00008770] - SysMemUserForUser_237DBD4F
0xB6D61D02 [0x00008778] - SysMemUserForUser_B6D61D02
0x9D9A5BA1 [0x00008780] - SysMemUserForUser_9D9A5BA1
Import 3, Name ThreadManForUser, Functions 4, Variables 0, flags 40010000
Functions:
0x9ACE131E [0x00008788] - ThreadManForUser_9ACE131E
0x446D8DE6 [0x00008790] - ThreadManForUser_446D8DE6
0xF475845D [0x00008798] - ThreadManForUser_F475845D
0xAA73C935 [0x000087A0] - ThreadManForUser_AA73C935
Import 4, Name UtilsForUser, Functions 2, Variables 0, flags 40010000
Functions:
0x79D1C3FA [0x000087A8] - UtilsForUser_79D1C3FA
0xB435DEC5 [0x000087B0] - UtilsForUser_B435DEC5
Import 5, Name sceSysreg_driver, Functions 3, Variables 0, flags 00010000
Functions:
0xDE59DACB [0x000087B8] - sceSysreg_driver_DE59DACB
0x2DB0EB28 [0x000087C0] - sceSysreg_driver_2DB0EB28
0x44F6CDA7 [0x000087C8] - sceSysreg_driver_44F6CDA7
http://moonlight.lan.st/ check there if they correspond (some nids are still the same for kernel and user) you are file else yes you need the kernel counterpart
-
- Posts: 339
- Joined: Thu Sep 29, 2005 4:19 pm
I'm seeing a similar problem with piKey on 3.30/3.40OE.
At the moment I suspect it is the flags on the module import / export stubs, but haven't had time to investigate properly. I'm pretty sure it is not to do with import of any user mode imports from the system libraries.
At the moment I suspect it is the flags on the module import / export stubs, but haven't had time to investigate properly. I'm pretty sure it is not to do with import of any user mode imports from the system libraries.
Got a v2.0-v2.80 firmware PSP? Download the eLoader here to run homebrew on it!
The PSP Homebrew Database needs you!
The PSP Homebrew Database needs you!
They got more strict with user/kernel interaction as time went on. 3.30/3.40 seem to be extremely picky about trying to ensure that kernel code doesn't call into user mode functions. Security considerations, I guess.
Incidentally I have now managed to get 3 of the 4 piKey modules that were misbehaving to load on 3.40OE.
On one of them, changing the module attributes from 0x0800 to 0x1000 did the trick - I had changed to 0x0800 on the advice of another forum post about 3.40OE problems, but it turned out that that was bad advice, in this case at least.
Since that module was the one that was failing first, it had masked the failures in the other modules, which were much simpler. For those, it was simply a case of changing the makefile to use _driver versions of all the imported libs, as suggested earlier in this thread.
I still have one module that still fails, however, and I'm struggling to work out why. The error is still 8002013C, though I'm fairly confident that I've removed all the umode imports now.
Incidentally I have now managed to get 3 of the 4 piKey modules that were misbehaving to load on 3.40OE.
On one of them, changing the module attributes from 0x0800 to 0x1000 did the trick - I had changed to 0x0800 on the advice of another forum post about 3.40OE problems, but it turned out that that was bad advice, in this case at least.
Since that module was the one that was failing first, it had masked the failures in the other modules, which were much simpler. For those, it was simply a case of changing the makefile to use _driver versions of all the imported libs, as suggested earlier in this thread.
I still have one module that still fails, however, and I'm struggling to work out why. The error is still 8002013C, though I'm fairly confident that I've removed all the umode imports now.
Got a v2.0-v2.80 firmware PSP? Download the eLoader here to run homebrew on it!
The PSP Homebrew Database needs you!
The PSP Homebrew Database needs you!