NSO: Difference between revisions
No edit summary |
|||
Line 2: | Line 2: | ||
It starts with the "NSO" header and mainly describes .text, .rodata, and .data segments (like a short-form of ELF program headers): | It starts with the "NSO" header and mainly describes .text, .rodata, and .data segments (like a short-form of ELF program headers): | ||
=== SegmentHeader === | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 4 | |||
| file offset of data | |||
|- | |||
| 0x4 | |||
| 4 | |||
| memory offset loaded to | |||
|- | |||
| 0x8 | |||
| 4 | |||
| size of data copied to memory offset (i.e. size after decompression) | |||
|- | |||
| 0xC | |||
| 4 | |||
| alignment used on memory size / size of .bss in the case of .data segment | |||
|} | |||
=== .rodata-relative extent === | === .rodata-relative extent === | ||
Line 32: | Line 56: | ||
| 0x4 | | 0x4 | ||
| 4 | | 4 | ||
| | | | ||
|- | |- | ||
| 0x8 | | 0x8 | ||
| 4 | | 4 | ||
| | | | ||
|- | |- | ||
| 0xC | | 0xC | ||
| 4 | | 4 | ||
| | | Always 0x3f? | ||
|- | |- | ||
| 0x10 | | 0x10 | ||
| | | 0x10 * 3 | ||
| | | SegmentHeader for each segment | ||
|- | |- | ||
| 0x40 | | 0x40 | ||
Line 95: | Line 75: | ||
|- | |- | ||
| 0x60 | | 0x60 | ||
| 0x4 | | 0x4 * 3 | ||
| | | file size of each segment (i.e. LZ4-compressed size) | ||
|- | |- | ||
| 0x6c | | 0x6c |