Commit Graph
63 Commits
Author SHA1 Message Date
Mohamed Malek Aifa d6938e57c3 fix(tools): reject invalid SELF segment alignment 2026-10-30 19:22:15 +01:00
JJenkx 2365b1010c fix(tests): decode unwrap_self CLI output as UTF-8 2026-10-30 05:06:26 -04:00
JJenkxandClaude Opus 5.5 ee5055268b fix(tests): pass guest_system_font, exec_arguments and unwrap_self under a non-ASCII TEMP on Windows
With %TEMP% outside ASCII (a profile like C:\Users\José), three tests
fail on Windows because they mix the two narrow encodings: MinGW's
std::filesystem::path::string() is UTF-8, while fopen, getenv and console
tools use the ANSI or OEM code page.

- guest_system_font opened its stderr capture file with
  fopen(path.string()); it now uses _wfopen on Windows.
- The exec_arguments fixture built the second program's environment from
  getenv, which returns ANSI bytes that execve rejects as invalid UTF-8;
  it now reads LD_LIBRARY_PATH and ANYPS5_LOADEXEC_TEST_ROOT as UTF-8
  through GetEnvironmentVariableW.
- unwrap_self decoded icacls output as UTF-8 (Python 3.15 UTF-8 mode);
  icacls writes the OEM code page, so it is decoded as "oem".

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 15:20:20 -04:00
Dean 9181b37137 Merge pull request #12624 from rooklz/fix/unwrap-self-output-symlink-loop
fix(tools): report unwrap_self symbolic link loops as usage errors
2026-10-29 23:54:50 +13:00
Dean 01f2868b50 Merge pull request #11407 from veosett/codex/unwrap-self-program-headers
fix(tools): keep SELF PT_PHDR tables in the load image
2026-10-29 17:32:38 +13:00
rooklz eec38c219a fix(tools): report unwrap_self symbolic link loops as usage errors 2026-10-28 23:11:07 +00:00
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
Kovalev Vladislav ee785992dd fix(tools): refuse mismatched SELF program header mappings 2026-10-28 19:19:02 +06:00
Kovalev Vladislav 1f21b45361 fix(tools): keep SELF PT_PHDR tables in the load image 2026-10-28 19:11:34 +06: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