Talk:SELF File Format: Difference between revisions
CelesteBlue (talk | contribs) |
CelesteBlue (talk | contribs) |
||
Line 1: | Line 1: | ||
== Authentication ID == | == Authentication ID == | ||
8 Bytes long, offset 0x80 in the SELF header. | |||
Differences in auth id : | |||
PSP : ? PSP SELF doesn't have the same sort of SELF header (magic = "PSP" instead of "SCE") | PSP : ? PSP SELF doesn't have the same sort of SELF header (magic = "PSP" instead of "SCE") | ||
PS3 : 1x xx xx xx xx xx xx xx | PS3 : 1x xx xx xx xx xx xx xx | ||
PSVita : 2x xx xx xx xx xx xx xx | PSVita : 2x xx xx xx xx xx xx xx | ||
PS4 : 3x xx xx xx xx xx xx xx | PS4 : 3x xx xx xx xx xx xx xx | ||
<code>sceAppMgrConvertVs0UserDrivePath</code> checks the authentication id to limit mount points. | |||
<code> | <code>0x2800000000008000</code> only used by [[SceWebCore]] eboot.bin (NPXS10017 / NPXS10037 on 1.69, replaced later by SceWebKit). | ||
<code>0x2800000000008003</code> seen used by [[SceWebCore]] can access <code>vs0:data/external/cert/</code> and <code>vs0:data/external/webcore/</code>. | <code>0x2800000000008003</code> seen used by [[SceWebCore]] can access <code>vs0:data/external/cert/</code> and <code>vs0:data/external/webcore/</code>. |
Revision as of 21:48, 28 March 2018
Authentication ID
8 Bytes long, offset 0x80 in the SELF header.
Differences in auth id :
PSP : ? PSP SELF doesn't have the same sort of SELF header (magic = "PSP" instead of "SCE")
PS3 : 1x xx xx xx xx xx xx xx
PSVita : 2x xx xx xx xx xx xx xx
PS4 : 3x xx xx xx xx xx xx xx
sceAppMgrConvertVs0UserDrivePath
checks the authentication id to limit mount points.
0x2800000000008000
only used by SceWebCore eboot.bin (NPXS10017 / NPXS10037 on 1.69, replaced later by SceWebKit).
0x2800000000008003
seen used by SceWebCore can access vs0:data/external/cert/
and vs0:data/external/webcore/
.
0x2800000000008004
seen used by games and 0x210000101CD20007
seen used by PSM can only access vs0:data/external
and vs0:sys/external
Relocations
Offset | Size | Description |
---|---|---|
0x0 | 0x4 | Relocation Type |
0x4 | 0x4 | Long entry: Addend |
0x4 | 0x4 | Short entry: 0-19 = Bits 10-29 of offset, 20-31 = addend |
0x8 | 0x4 | Long entry: Offset |
Relocations can be of two types: 8 byte "short" entries or 12 byte "long" entries. The relocation code is the same as ARM ELF format.
Segment start = Buffer address of segment indexed at "Patch segment"
Symbol start = Buffer address of segment indexed at "Symbol segment"
Address to patch = segment start + offset
P = address to patch
S = "Symbol segment" == 15 ? 0 : symbol start
A = addend
Relocation Type
Start | End | Description |
---|---|---|
0 | 3 | Short entry if set |
4 | 7 | Symbol segment |
8 | 15 | Relocation code |
16 | 19 | Patch segment |
20 | 27 | Long entry: Optional relocation code 2 |
28 | 31 | Long entry: Optional distance 2 |
20 | 31 | Short entry: Lower 12 bits of offset |
Supported Relocation Codes (1.69)
Code | Description |
---|---|
0 | R_ARM_NONE |
2 | R_ARM_ABS32 |
3 | R_ARM_REL32 |
10 | R_ARM_THM_CALL |
28 | R_ARM_CALL |
29 | R_ARM_JUMP24 |
38 | R_ARM_TARGET1 (same as R_ARM_ABS32) |
40 | R_ARM_V4BX (same as R_ARM_NONE) |
41 | R_ARM_TARGET2 (same as R_ARM_REL32) |
42 | R_ARM_PREL31 |
43 | R_ARM_MOVW_ABS_NC |
44 | R_ARM_MOVT_ABS |
47 | R_ARM_THM_MOVW_ABS_NC |
48 | R_ARM_THM_MOVT_ABS |