Commit Graph
17691 Commits
Author SHA1 Message Date
Matheus Herberts 7c90e64474 chore(relinker): group RELR tests with relocation tests 2026-10-27 11:59:03 -03:00
Matheus Herberts 06a1dec6fb chore(relinker): separate RELR include from data-table changes 2026-10-27 11:58:25 -03:00
Matheus Herberts 1c02c55cef test(relinker): validate Linux fixture results before trapping 2026-10-27 11:58:25 -03:00
Matheus Herberts 458da3450e feat(relinker): support packed ELF64 relative relocations 2026-10-27 11:58:24 -03:00
Disaster a07835c9f9 build(windows): quote the forced standard-stream include path 2026-10-27 17:57:47 +03:00
Adrià 2ee8e9751a Merge pull request #9598 from Ondra97/codex/fix-http2-teardown-ownership
test(http2): guard allocation-free handle teardown
2026-10-27 15:51:00 +01:00
Danigamer05 f139bcf1fc feat(libc): implement signed 32-bit maximum value helper 2026-10-27 15:46:15 +01:00
pushkarreddyy 8c12ea0515 test(libSceWebBrowserDialog): cover post-terminate cookie operations 2026-10-27 20:12:45 +05:30
Adrià f2f759ae31 Merge pull request #10712 from roboterspinne/fix/relinker-macos-reject-lazy-binding
fix(relinker): reject --lazy-binding for macOS output
2026-10-27 15:35:26 +01:00
JJenkxandClaude Opus 5.5 7c7cc70f2e fix(libc): copy count units of a strxfrm or wcsxfrm result that does not fit, as titles' libc.prx does
When the transformed string does not fit, strxfrm and wcsxfrm wrote
count - 1 characters and a terminator. The libc.prx bundled with titles
copies the first count characters and writes no terminator, as a plain
copy of count units would, and copies the terminator only when the whole
result fits. Both functions now do the same; the return value, the
length of the source, is unchanged. The tests that expected the
terminated prefix expect the measured units instead.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 10:28:10 -04:00
Adrià e2a5118839 Merge pull request #11047 from imellag/feat/libkernel-macho-tls
feat(libkernel): thread-local storage for Mach-O guests
2026-10-27 15:18:46 +01:00
Kyon 7853f0fbc6 feat(libSceSystemLogger2Game): declare 2 additional exports 2026-10-27 14:14:56 +00:00
Kyon 17703bd1b7 feat(libSceAppContent): declare 4 additional exports 2026-10-27 14:14:55 +00:00
janzezno 2d5d30c099 fix(agc): pick the overlay's palette entry with constant indices again 2026-10-27 15:10:21 +01:00
rooklz d9b9cb6b79 test(relinker): pin annotate_module against the guest module writer 2026-10-27 14:06:17 +00:00
Kyon 0962de20d8 feat(libSceContentSearch): declare 4 additional exports 2026-10-27 13:59:06 +00:00
Kyon 9fc3a5aa59 feat(libSceRemoteplay): declare 4 additional exports 2026-10-27 13:59:05 +00:00
Kyon 899ed0d3f2 feat(libSceNpUniversalDataSystem): declare 9 additional exports 2026-10-27 13:59:05 +00:00
milescovielloandClaude Opus 5.5 007c0bf37e perf(shader): allocate a program's instruction list nodes from a pool
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 13:43:13 +00:00
Dean 75f3702aed Merge pull request #11763 from oneandonlydean/salvage/common-dialog-9623
feat(libSceCommonDialog): declare 14 pending exports
2026-10-28 02:34:54 +13:00
Dean 7461dd1ed3 Merge pull request #10532 from LeandroLP23/fix/audioout-skip-open-without-output-devices
fix(libSceAudioOut): skip the default open only when Windows reports no default output endpoint
2026-10-28 02:31:48 +13:00
Disaster 75c9d53b28 feat(libScePlayerSelectionDialog): initialize dialog parameters 2026-10-27 16:28:07 +03:00
Adrià a40ad89e2c Merge pull request #11236 from orezraey/fix/libkernel-kqueue-timer-readd-measured-ps5
fix(libkernel): accept EVFILT_TIMER re-adds with a time unit or on a disabled timer as measured on a PS5
2026-10-27 14:28:05 +01:00
Alexandre Figueiredo 8130d344ea fix(libc): classify x87 unnormals as denormal in _LDtest and _LDclass 2026-10-27 13:26:57 +00:00
simnJS b419a4a808 feat(libSceSystemService): call libSceUsbStorage from the USB storage aliases
The sceSystemServiceUsbStorage* exports jump straight into the USB storage
module, so call the matching libSceUsbStorage export instead of throwing.
RequestMapWSB keeps its marker while its two declarations disagree on the
fourth argument and the output type.
2026-10-27 14:18:59 +01:00
roboterspinne c18ee35e52 fix(relinker): reject Windows images larger than the loader maps
The Windows writer accepted any image up to the 2 GiB RVA bound, so an
image with a SizeOfImage above 0x77000000 converted with exit 0 and then
failed to start with ERROR_BAD_EXE_FORMAT (193). WindowsPeWriter::Write
now refuses such an image, matching the loader's SizeOfImage >
MM_SIZE_OF_LARGEST_IMAGE (0x77000000) test, which applies to executables
and to bundled modules alike. Images with a SizeOfImage of at most
0x77000000 are written unchanged.
2026-10-27 14:16:56 +01:00
Adrià 1089f2bbfd Merge pull request #11039 from orezraey/fix/libkernel-mutex-yieldloops-destroyed-measured-ps5
fix(libkernel): fail the yield loop setter on a destroyed mutex as measured on a PS5
2026-10-27 14:08:31 +01:00
Adrià 9de9c6efd0 Merge pull request #11261 from JaceTheBlu/feat/libressl-object-text
feat(libSceLibreSsl): add the LibreSSL object table and implement i2t_ASN1_OBJECT
2026-10-27 14:07:27 +01:00
milescoviello a45f140d85 Merge remote-tracking branch 'upstream/main' into fix/http2-memory-pool-stats
# Conflicts:
#	docs/dev/debt/libSceHttp2.md
2026-10-27 13:06:25 +00:00
roboterspinne beb46de57d fix(relinker): zero the e_ident padding of the Linux executable
LinuxElfPatcher::Patch zeroed only e_ident bytes 7 and 8 of the output
executable, and ElfReader checks only bytes 0 to 6, so nonzero EI_PAD
bytes 9 to 15 of the input reached the output in every Linux mode. The
gABI reserves EI_PAD as zero, and glibc's open_verify refuses an object
with nonzero padding when ld.so maps the program itself, as under ldd
or an explicit ld-linux-x86-64.so.2 invocation. The patcher now zeroes
bytes 7 to 15, the rule that #11582 applies to guest modules. Only
reserved bytes change, and a direct exec is unaffected either way.
2026-10-27 14:03:02 +01:00
Kyon 8d08a1338a feat(libSceVideodec2): declare 3 additional exports 2026-10-27 12:57:10 +00:00
Kyon 094868fab2 feat(libSceCamera): declare 4 additional exports 2026-10-27 12:57:10 +00:00
al3w0f205 8946a16f85 test(libkernel): cover destroyed condition variable in scePthreadCondSignalto 2026-10-27 07:54:28 -05:00
GiannisandClaude Opus 5.5 91624a508e test(agc): skip the 4_4_4_4 partial write test without shaderStorageImageReadWithoutFormat
agc_driver_packed_unorm4444_partial_write failed on devices without
shaderStorageImageReadWithoutFormat (Intel HD 630 on Mesa ANV): a
partial write merges into the target in the pixel shader, and
EmitStorageImageRead refuses the read of the target ("storage image
reads without a format are unavailable on the target device"). The test
checked only fragmentShaderPixelInterlock.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 14:53:26 +02:00
PrivacyOnion f977b203c4 test(libSceAudioIn): cover invalid handle operations in GuestAudioIn 2026-10-27 13:49:10 +01:00
al3ss4ndrolbandClaude Opus 5.5 498270408f fix(libkernel): build the param.json parser with Clang and libstdc++
JsonObject held std::pair<std::string, JsonValue> while JsonValue was
still incomplete. Clang with libstdc++ instantiates the pair and the
vector destructor at the end of JsonValue and stops with "incomplete
type used in type trait expression". A named JsonMember struct defined
after JsonValue keeps the vector element a plain class.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 13:45:06 +01:00
Matheus Herberts 3ab97351f2 fix(relinker): validate visibility of undefined strong symbols 2026-10-27 09:40:19 -03:00
rooklz 0f75fd0662 fix(relinker): accept an identical duplicate pointer relocation in the strict filter
A RELA entry repeated with the same target, type and addend writes the
same value twice, so applying it once is equivalent. 9673868d5f made the
Windows relocation builder and the code analysis accept such duplicates,
but the strict unused-NID filter still refused one as overlapping, so
the same ELF converted with unused-filter=0 or 1 and failed with
unused-filter=2. The strict filter now records a pointer relocation
only when its slot is new or its target is identical, and still refuses
a distinct entry at one slot and a slot that an import relocation
already owns.

AI-assisted: yes
2026-10-27 12:38:18 +00:00
Kyon 0ea5d5f1e6 Merge remote-tracking branch 'origin/main' into feat/http2-1360-inventory 2026-10-27 12:32:04 +00:00
Kyon 18484e071c Merge remote-tracking branch 'origin/main' into feat/audioout2-1360-inventory 2026-10-27 12:31:58 +00:00
Kyon fadf15081d feat(libSceAudioOut): declare 11 additional exports 2026-10-27 12:31:40 +00:00
Kyon 60941da8ca feat(libSceHttp2): declare eight additional exports 2026-10-27 12:31:36 +00:00
Adrià 62b3ba2522 Merge pull request #11125 from MarcZX10/marc/fix-equeue-close-during-measure
fix(libkernel): wait for an in-flight file measurement before closing a watched descriptor
2026-10-27 13:30:54 +01:00
Adrià b71d5db752 Merge pull request #10855 from Felipebmaitan/feat/async-storage-engine
fix(libkernel): preserve AIO request ownership and identities
2026-10-27 13:30:47 +01:00
PrivacyOnion 2cb3965b37 test(libSceNpSessionSignaling): cover context validation and invalid handles in GuestNpSessionSignaling
Signed-off-by: PrivacyOnion <[email protected]>
2026-10-27 13:24:28 +01:00
PrivacyOnion 25e07ea713 test(libSceContentSearch): cover invalid metadata and query bounds in GuestContentSearch
Signed-off-by: PrivacyOnion <[email protected]>
2026-10-27 13:24:09 +01:00
PrivacyOnion c648e06c61 test(libSceNpManager): cover argument bounds and state validation in GuestNpReachability
Signed-off-by: PrivacyOnion <[email protected]>
2026-10-27 13:23:51 +01:00
PrivacyOnion 5be476d442 test(libSceNpMatching2): cover null argument validation in GuestNpMatching2Offline
Signed-off-by: PrivacyOnion <[email protected]>
2026-10-27 13:23:42 +01:00
PrivacyOnion 654a905ad6 test(libSceConvertKeycode): cover null character and keycode bounds in GuestConvertKeycode
Signed-off-by: PrivacyOnion <[email protected]>
2026-10-27 13:23:32 +01:00
PrivacyOnion 882dc6e07d test(libSceCamera): cover non-positive handle bounds in GuestCamera
Signed-off-by: PrivacyOnion <[email protected]>
2026-10-27 13:23:23 +01:00