D244
- Declaring a real SDK version stops sceKernelDlsym
answering
status: measured
Having corrected sdk_version to the value a launching
title declares (D242), the correction was measured rather than assumed.
Two packages built from identical sources with one flag differing, run
on the same console:
PROC_SDK=0 |
PROC_SDK=0x08008011 |
|
|---|---|---|
| imports linked | - | no difference |
| symbols resolvable at run time | 105 of 122 | 0 of 173 |
| suite tally | 218/74/190/40 | 117/6/363/41 |
Import binding did not change at all. Ninety-eight symbols were measured in both arms and not one moved between linked and unlinked, so the SDK version does not gate it - which was the hypothesis the change was made on, and it was wrong.
What it does gate is run-time module resolution. At
0x08008011 sceKernelLoadStartModule still
returns a handle and sceKernelDlsym returns nothing for
every symbol, so the census measures nothing and three hundred and sixty
checks fail.
Zero is kept. It is now the measured choice rather than the inherited
one, and PROC_SDK exists so the experiment is one word
rather than an edit - this is one console on one day, and a firmware
that changes it should be cheap to find.
The order mattered. Had the flag not existed, the census collapse would have arrived together with four other changes and been attributed to any of them.