Commit Graph
55 Commits
Author SHA1 Message Date
Dean e550a71043 Merge pull request #11938 from rooklz/fix/unwrap-self-tls-layout
fix(tools): refuse PT_TLS layouts the relinkers reject when unwrapping
2026-10-29 07:24:06 +13:00
MarcZX10 c753d8193c test(tools): unwrap a SELF whose load segments share one file range
The conversion has to be refused with the output-size message and leave no
output file.
2026-10-28 03:05:36 +00:00
rooklz ec90e82931 fix(tools): refuse TLS layouts the relinkers reject when unwrapping 2026-10-27 13:38:43 +00:00
Dean f60e7d052b Merge pull request #10580 from Bram910/fix/unwrap-elf-versions
fix(tools): reject unsupported inner ELF versions
2026-10-28 02:32:34 +13:00
Dean 6b5d9adb27 Merge pull request #11043 from plexerPK/codex/job-reference-finite-timeout
fix(tools): reject NaN JobManager reference timeouts
2026-10-27 18:30:30 +13:00
Dean 95833d842d Merge pull request #10923 from 1whythef2/fix/unwrap-contained-segment-alignment
fix(tools): preserve contained segment alignment when unwrapping SELF
2026-10-27 10:56:22 +13:00
Dean da1d222d52 Merge pull request #10733 from Bram910/fix/unwrap-elf-header-metadata
fix(tools): validate inner ELF machine and header size
2026-10-27 09:03:28 +13:00
plexerPK 4fa1cf0d55 fix(tools): reject NaN JobManager reference timeouts 2026-10-25 15:54:59 +01:00
plexerPK b6f33d10cc fix(tools): preserve recorded SELF segment host mapping 2026-10-25 14:42:02 +01:00
Jade'sG 2a45d721f6 fix(tools): stabilize overlapping SELF region selection 2026-10-25 19:45:03 +08:00
Jade'sG d5635e5728 fix(tools): preserve contained segment alignment when unwrapping SELF 2026-10-25 18:21:54 +08:00
MarcZX10 4f078782a1 test(tools): cover unwrap_self segments with stale offsets that cannot be placed 2026-10-25 06:37:02 +00:00
Bram910 e537509b7d test(tools): resolve JobManager artifact path expectations 2026-10-24 22:42:38 +02:00
Bram910 ee451b5a41 fix(tools): report refused JobManager modules cleanly 2026-10-24 22:24:03 +02:00
Bram910 efc4ed1b7b fix(tools): validate inner ELF machine and header size 2026-10-24 21:56:41 +02:00
Bram910 05bd732eaf test(tools): tighten inner ELF version regressions 2026-10-24 20:38:30 +02:00
Bram910 74285a827e fix(tools): reject unsupported inner ELF versions 2026-10-24 13:09:02 +02:00
Dean 8fc60685a7 Merge pull request #10224 from Project-MOC/codex/fix-unwrap-self-atomic-output
fix(tools): preserve SELF outputs on failed writes
2026-10-24 12:55:33 +13:00
Project-MOC db8785f6ce fix(tools): preserve new SELF output permissions 2026-10-23 18:33:14 +02:00
Project-MOC 1852888af9 fix(tools): preserve SELF outputs on failed writes 2026-10-23 18:20:22 +02:00
emirplus 81820edf30 fix(tools): reconfigure streams with backslashreplace in unwrap_self
Reconfigure sys.stdout and sys.stderr with backslashreplace error handling at the entrypoint of main() so unwrapping reports and error messages do not fail on Windows consoles configured with non-UTF-8 code pages.
2026-10-23 18:48:42 +03:00
Dean 92d5a052eb Merge pull request #8902 from THEBIGTOMMY13DEV/fix/self-program-header-overlap
fix(tools): reject SELF program tables overlapping the ELF header
2026-10-23 14:15:02 +13:00
Dean c9999808e7 Merge pull request #9328 from emirplus/fix/unwrap-self-main-guard
fix(tools): wrap entrypoint in main with stream reconfigure in unwrap_self
2026-10-23 10:43:41 +13:00
emirplus 032344e05a fix(tools): wrap entrypoint in main with stream reconfigure in unwrap_self 2026-10-21 21:35:18 +03:00
Kovalev Vladislav da1d9407ed fix(tools): bound total SELF alignment padding 2026-10-21 23:23:52 +06:00
Dean 26d1065e25 Merge pull request #8803 from AMRYB/fix/self-overlapping-load-regions
fix(tools): preserve load ownership when unwrapping SELF
2026-10-21 21:32:12 +13:00
THEBIGTOMMY13DEV ca376e7545 fix(tools): reject SELF program tables overlapping the ELF header 2026-10-21 01:05:56 -04:00
Dean 7d7b097407 Merge pull request #8543 from tkcm01/fix/unwrap-self-bss-segments
fix(tools): handle zero-size segments in unbacked PT_LOAD ranges in unwrap_self
2026-10-21 17:31:54 +13:00
Dean 2411c6e48b Merge pull request #8532 from valenciana-nc/fix/unwrap-self-minimal-alignment
fix(tools): avoid redundant padding when unwrapping SELF
2026-10-21 17:19:10 +13:00
Amr Yasser ecc88d1494 fix(tools): preserve load ownership when unwrapping SELF 2026-10-21 04:23:27 +03:00
tkcm01 7679fbd657 fix(tools): handle zero-size segments in unbacked PT_LOAD ranges in unwrap_self 2026-10-20 11:59:55 -04:00
Dean f0d8e6924d Merge pull request #6165 from MarcZX10/codex/unwrap-self-truncated-elf
fix(tools): reject unsupported inner ELF encodings
2026-10-21 04:46:15 +13:00
valenciana-nc 85cb95851b fix(tools): avoid redundant padding when unwrapping SELF 2026-10-20 09:15:49 -06:00
Adrià eca8d6cca4 Merge pull request #7820 from parl0v/fix/unwrap-self-segment-align
fix(tools): keep p_align for segments unwrap_self copies outside load segments
2026-10-20 04:18:47 +02:00
xXPBSXxandClaude Sonnet 5.5 360e8bd685 fix(tools): print unwrap_self reports as UTF-8 on every console
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-19 13:58:16 +02:00
Dean 08a0b7c95b Merge pull request #7702 from vittoriosalvadore/codex/fix-unwrap-empty-load-alignment
fix(tools): preserve empty load segment alignment when unwrapping SELF
2026-10-20 00:51:46 +13:00
Dean b62e0a8a7d Merge pull request #7713 from joedeangelis533-bot/fix/unwrap-file-backed-segments
fix(tools): reject unbacked segment data when unwrapping SELF
2026-10-19 23:51:55 +13:00
Josip Parlov 1e1ce29909 fix(tools): keep p_align for segments unwrap_self copies outside load segments
unwrap_self copied every segment that does not sit inside a PT_LOAD with
alignment 1. On real dumps that puts the comment and version segments
(p_align 0x10) right after the last load segment, at offsets that break
p_offset % p_align == p_vaddr % p_align. Those regions now use the
segment's own p_vaddr and p_align, the same as the load segments, which
is what the module docstring already promises. Load segment placement
and bytes do not change.
2026-10-19 10:52:04 +02:00
Josip Parlov d757b66e9a fix(tools): unwrap SELF dumps that leave out the version segment
unwrap_self reads the vaddr-less segments that follow the recorded
comment segment back to back from right after its data, and refuses the
whole container when one of them runs past the end of the file. Some
dumps end right after the last recorded segment and do not store the
version segment at all. The sce_module/libc.prx of PPSA15552 is one:
its last record, the 0x58-byte comment at 0x13b590, ends at 0x13b5e8,
which is the file size, so the 0x1a-byte PT_SCE_VERSION has no bytes
and the tool failed with "segment 12 does not fit the file" although
every load, dynamic and comment segment is complete.

A trailing segment that would run past the end of the file is now
emitted without file bytes, the same way as the PT_NOTE the container
leaves out. The relinker does not read PT_SCE_VERSION
(GuestImageReader skips it). Containers that store the version segment
unwrap byte for byte as before.
2026-10-19 09:09:39 +02:00
Dean b375e11806 Merge pull request #6621 from klosixgaming-arch/fix/unwrap-self-place-by-record-index
fix(tools): read unwrap_self's vaddr-less segments from where the SELF stores them
2026-10-19 16:52:24 +13:00
joedeangelis533-bot 392c947111 fix(tools): reject unbacked segment data when unwrapping SELF 2026-10-18 22:24:06 -04:00
Hotline Messina Dev 02dd083729 fix(tools): preserve empty load segment alignment when unwrapping SELF 2026-10-18 21:25:03 -04:00
Dean 802db07168 Merge pull request #7166 from MrMha/fix/unwrap-preserve-input-20261017
fix: preserve SELF inputs when an output aliases them
2026-10-18 09:47:48 +13:00
MrMha 4618ef679d fix: refuse invalid load segment metadata when unwrapping SELF 2026-10-17 18:41:08 +04:00
MrMha e80d47b7d0 fix: preserve SELF inputs when an output aliases them 2026-10-17 18:40:43 +04:00
Dean 8b84df66b1 Merge pull request #6441 from al3w0f205/fix/unwrap-self-zero-size-segments
fix(tools): allow unwrap_self to place zero-size segments without a PT_LOAD host
2026-10-18 02:17:56 +13:00
MarcZX100 9d82fd96a5 test(tools): cover unsupported inner ELF encoding 2026-10-16 22:01:14 +00:00
Adrià af7db81e6e Merge pull request #6065 from MiniRML/fix/unwrap-elf-metadata-bounds
fix(tools): validate inner ELF metadata before unwrapping SELF
2026-10-16 23:51:42 +02:00
klosixgaming-arch 38fc2ddb36 fix(tools): read unwrap_self's vaddr-less segments from where the SELF stores them
unwrap_self matched SELF records to PT_LOADs by size only and placed
every segment without a vaddr by the shift of the last mapped one. In the
19 modules of PPSA03743/PPSA03363 (Soul Hackers 2) the SCE comment
segment has a record of its own, after a 0x20-byte digest block, so it
and the version segment behind it were read 0x20 bytes too early, and in
the sce_module libraries, where the ELF puts a PT_NOTE between them, the
version segment was cut to a few bytes at the end of the file.

A record with flag 0x800 now places the program header whose index is in
flags bits 20 and up. Segments without a vaddr that follow the last
recorded one are read back to back after it; the PT_NOTE among them is
not stored in the container and is emitted without file bytes.
2026-10-16 16:42:42 -05:00
Adrià 8ac10e7a09 Merge pull request #6050 from MiniRML/fix/unwrap-program-header-space
fix(tools): reserve program header space when unwrapping SELF
2026-10-16 23:25:13 +02:00