Commit Graph
20967 Commits
Author SHA1 Message Date
orezraeyandClaude Opus 5.5 2d339842eb fix(libkernel): add 0x80020000 to any event fflags in sceKernelGetEventError as measured on a PS5
On PS5 firmware 13.60 sceKernelGetEventError returns 0x80020000 plus the
event's fflags in 32 bits for every non-zero fflags, including values
above 0xFFFF, where it used to throw.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 11:25:04 -03:00
plexerPK 56265c47b5 fix(tools): recheck architecture-dependent type sizes in configure seeds 2026-10-25 15:24:56 +01:00
Dean Galvin f30a7444a8 test(savedata): unwind the null-input throw on Windows
guest_savedata_convert catches the runtime_error that the PRX raises for null arguments, so the target needs configure_windows_unwind like the other savedata targets that catch; without it the throw terminates the process on MinGW.
2026-10-26 03:24:03 +13:00
Dean Galvin f66b095ada test(savedata): unwind the null-input throw on Windows
guest_savedata_delete catches the runtime_error that the PRX raises for null arguments, so the target needs configure_windows_unwind like the other savedata targets that catch; without it the throw terminates the process on MinGW.
2026-10-26 03:24:02 +13:00
Bram910andClaude Opus 5.5 32744645c4 fix(libSceNet): accept MSG_NOSIGNAL in send, sendto and sendmsg
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 15:21:43 +01:00
Adrià Franch 159a6f4407 test(libc): close CheckFacetGetcat before the time_get vtable check 2026-10-25 15:20:11 +01:00
roboterspinne 96470f0a11 fix(relinker): reject relocations against a non-null executable symbol entry 0
A symbolic relocation with symbol index 0 read the name, binding and
type of dynamic symbol entry 0, so a named entry 0 turned STN_UNDEF
relocations into named imports on Linux, Windows and macOS. The ELF
gABI reserves index 0 as STN_UNDEF and requires its entry to be all
zero, and the guest reader already rejects such a table as "Invalid
null symbol". The relinker now fails with "Dynamic symbol table entry
0 is not a null symbol entry" when a symbolic relocation names index 0
and that entry has a nonzero byte; relocations against an all-zero
entry 0 are unchanged.
2026-10-25 15:20:04 +01:00
Maz 4e657b158e feat(libc): export the time_get facet vtable as data
Console libSceLibcInternal exports o4kt51-uO48 as a 104-byte STT_OBJECT;
titles that resolve the symbol as data need a zeroed 13-slot vtable like the
other facet vtables, not a missing import.
2026-10-25 15:20:04 +01:00
orezraeyandClaude Opus 5.5 92448b72f9 fix(libkernel): accept any block size and a null block in the system software version getters as measured on a PS5
On PS5 firmware 13.60 sceKernelGetProsperoSystemSwVersion and
sceKernelGetSystemSwVersion return 0 for every value in the leading size
field, keep it, write the string and the packed version, and return 0
without writing for a null block.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 11:19:52 -03:00
Jamie 18ee716d53 fix(tools): strip forwarded dependency flags from syntax checks 2026-10-25 14:18:39 +00:00
roboterspinne 53eb4038cb fix(relinker): reject an executable dynamic string table that does not begin with NUL
The pipeline read names at string offset 0 without checking the first
byte of DT_STRTAB, so DT_NEEDED 0 or an st_name of 0 named a library or
an import after the first string, and every target relinked it. The
gABI reserves index 0 of a string table for a NUL byte that means no
name, and GuestImageReader already rejects modules whose table breaks
this rule. Reading offset 0 from such a table now fails with "Dynamic
string table does not begin with a NUL byte" and writes no output.
2026-10-25 15:18:05 +01:00
Yunus Shaikh 380803b26d test(libSceFont): compare glyph image surface offsets as checked integers
SameImage subtracted each render output's surface address from its own
pixel buffer's pointer. Convert both to integers instead, check that the
update rectangle starting at that address lies inside the buffer, and
compare the offsets.
2026-10-25 07:17:07 -07:00
Adrià 3a2c51afd2 Merge pull request #11014 from adriadam10/fix/main-kqueue
fix(main): settle the inotify baseline in VnodeOneshotWatchStops
2026-10-25 15:13:33 +01:00
Adrià FranchandClaude Sonnet 5.5 9514ad8215 fix(main): settle the inotify baseline in VnodeOneshotWatchStops
Culprit #7049; failing run 40193493248 (linux guest_kqueue aborted after 6 s inside VnodeOneshotWatchStops).
Watch threads of the previous test close their inotify fds after Stop(), so the baseline count could drop below the
final one and the exact equality never held.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-25 15:13:23 +01:00
AZLisme 503a0efb3a test(libSceRudp): cover empty poll wait behavior 2026-10-25 22:11:20 +08:00
plexerPK 08fe233fd4 fix(tools): reject cyclic patch advisor paths per entry 2026-10-25 15:11:07 +01:00
mantavisualandClaude Opus 5.5 0fd2e0ce9f feat(libSceIcu): implement the invariant character and version helpers
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 16:09:56 +02:00
Adrià FranchandClaude Sonnet 5.5 f63b27bdaa feat(libkernel): implement getlogin
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-25 15:07:38 +01:00
Yunus Shaikh fc881b9259 Merge main into fix/libscenet-inet-text-rules
Main's #10706 removes the local declarations at the top of libSceNet's
Export.cpp, where this branch had added __inet_pton and __inet_ntop.
libkernel's Api.hpp, which Export.cpp includes, now declares both, so the
merge takes main's side there.
2026-10-25 07:07:33 -07:00
roboterspinne 6247fb1dd6 fix(relinker): validate executable export names and attributes like guest modules
The executable export loop accepted names that are empty after
stripping '#', IFUNC, FILE, COMMON and SECTION types, bindings above
STB_WEAK, st_other bits above the visibility, and same-name exports
that differ, and Linux copied them into .dynsym. It now rejects them
before the location checks with the rule GuestImageReader applies to
non-local guest symbols, while identical aliases stay accepted. Every
target reports the same line at the symbol entry offset, and the macOS
attribute and empty-name checks, now unreachable, are removed.
2026-10-25 15:07:01 +01:00
Yunus Shaikh 8be8dc83af Merge main into fix/libkernel-signal-handler-mask
Main's #10706 moves the declarations of exported functions and their types
into the libraries' public headers, and gives WaitForPendingInSet a
KernelTimespec timeout. The merge keeps this branch's DeliverUnblockedPending
and ChangeBlockedMask with main's KernelTimespec. It takes main's side of
the declarations in GuestSignalSets.cpp, whose setjmp and longjmp this
branch had added and libc's Api.hpp now declares. GuestSignalHandlerMask.cpp
includes the libkernel and libc public headers in place of its own
declarations and GuestSignalSet and GuestSigaction types, as the
public_headers audit requires.
2026-10-25 07:05:46 -07:00
harisibrar1andClaude Opus 5.5 685a291838 fix(relinker): reject a repeated --rpath
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 10:05:14 -04:00
Brantley T. RobersonandClaude Opus 5.5 89fc74fa2b ci: skip the upstream-only jobs in forks
Forks inherit three jobs that cannot succeed there. Pages progress fails
on `gh api repos/<fork>/pages` (HTTP 404) after every push to main that
touches core/libs/prx, Pages fails at the release download or the
deployment, and the Build linux job waits for the self-hosted
`anyps5` runner, which forks don't have, until GitHub drops it. These
jobs now run only when the repository is not a fork.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 10:05:08 -04:00
Ondra97 d1dc3a5920 fix(agc): check whole storage views for native surface overlap 2026-10-25 15:04:47 +01:00
verusferro c9df854687 fix(libc): compute strftime week numbers as the console's libc does
%G, %g and %V no longer throw for a negative tm_yday, a tm_yday past the year or a tm_wday below -6. They follow the year and week rule of the SDK libc.prx, read from its disassembly and checked by running it, with its leap-year test and 32-bit arithmetic. %U and %W also wrap in 32 bits as that module does.
2026-10-25 17:03:45 +03:00
lakhantheboss 59c7e535c0 docs(libSceNpGameIntent): concise technical debt entry for receive intent size guard 2026-10-25 19:31:39 +05:30
lakhantheboss b08f1f0234 fix(libSceNpGameIntent): return errors for invalid arguments and uninitialized calls 2026-10-25 19:31:39 +05:30
lakhantheboss d0269109d5 test(libSceNpGameIntent): remove obsolete app launcher throw assertion 2026-10-25 19:31:39 +05:30
lakhantheboss 3086bd25ea fix(libSceNpGameIntent): return error for invalid arguments
Return NpGameIntentErrorInvalidArgument (0x80550004) instead of throwing APS5_INVALID_ARG_EX when invalid arguments are passed to sceNpGameIntentGetPropertyValueString or sceNpGameIntentReceiveIntent. Add regression test coverage in GuestNpGameIntent.
2026-10-25 19:31:39 +05:30
plexerPK 4f7f3318fa fix(relinker): accept empty TLS images beyond EOF on Windows 2026-10-25 14:54:53 +01:00
xXPBSXxandClaude Sonnet 5.5 c67997b99b test(libkernel): cover getitimer and setitimer on the non-real timers with an unusable pointer
getitimer and setitimer(which != ITIMER_REAL, previous) copy the result
out through the checked write in Signals.cpp; the fault test only
exercised ITIMER_REAL. Add getitimer(ITIMER_VIRTUAL) and
setitimer(ITIMER_VIRTUAL, zero, previous) with an unmapped pointer
expecting EFAULT, and the matching calls with a valid pointer.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-25 14:51:53 +01:00
plexerPK b6f33d10cc fix(tools): preserve recorded SELF segment host mapping 2026-10-25 14:42:02 +01:00
plexerPK 46566d2d03 fix(relinker): preserve opcode-encoded stack register uses 2026-10-25 14:40:31 +01:00
Dean e05ba6feeb Merge pull request #10596 from roboterspinne/test/debt-split-in-process
test(tools): run debt_split in process and commit only where tests need it
2026-10-26 02:40:18 +13:00
xXPBSXxandClaude Sonnet 5.5 d9e8185cc1 refactor(libc): read through CopyGuestBytes in GuestCopyIn
The last branch of GuestCopyIn_nid_no_patch was a plain memcpy that
reported success, so an unreadable pointer on any other host ended the
process. Keep the null, overflow and zero-length guards and make exactly
one call to CopyGuestBytes, which reads with ReadProcessMemory,
process_vm_readv or mach_vm_read_overwrite and throws on a host without a
checked read. The per-platform branches are removed.

On Windows this replaces the VirtualQuery walk and memcpy with
ReadProcessMemory.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-25 14:35:16 +01:00
SandstromPLandClaude Opus 5.5 f8b2cf4840 test(agc): pass the label-store negative control only on the stale read it expects
agc_driver_linear_readback_label_off runs the label readback test with
APS5_NO_LABEL_READBACK_STORE=1 and expects it to fail, through WILL_FAIL.
It has no SKIP_RETURN_CODE, so WILL_FAIL also turns a skip (exit 77: no
device, an ANYPS5_GPU that matches nothing, or the stub build when
ANYPS5_AGC_EXECUTION_TESTS leaves the test out) and any other failure,
such as a device that cannot be created, into a pass.

It now skips on 77 like its sibling and passes only when the output
reports a texel read after the label that the dispatch before it did not
store, which is the failure the control is there to show.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 19:04:43 +05:30
Dean 85a4d7f8c8 Merge pull request #10754 from slugzero/fix/pad-get-controller-type
fix(libScePad): accept special handles in scePadGetControllerType
2026-10-26 02:32:31 +13:00
Dean 89ee8c0270 Merge pull request #10576 from plexerPK/fix/web-release-invalid-zip
fix(tools): report release BadZipFile errors with asset names
2026-10-26 02:32:26 +13:00
Himansh Raj c150109f72 Merge remote-tracking branch 'origin/main' into split/macos-build 2026-10-25 19:00:47 +05:30
boykopovar 35ca4f26f0 fix(nid): reject sectionless dynamic executables 2026-10-25 16:27:00 +03:00
Adrià 1ee8f4bec1 Merge pull request #9181 from Dripl1x/fix/no-resident-write-faults
fix(libc): stop write-protecting resident runs on Windows
2026-10-25 14:26:12 +01:00
Adrià 0658bc8749 Merge pull request #9186 from fma-rc/fix/agc-retire-undrawn-filled-msaa
fix(agc): retire an undrawn filled multisampled color target that a guest access overlaps
2026-10-25 14:25:07 +01:00
GruzzberryandClaude Opus 5.5 e6b07323de feat(libkernel_sys): implement settimeofday
FreeBSD 11.4's kern_settimeofday rejects a timeval with a microsecond
field outside 0 to 999999 or a negative second field with EINVAL before
changing anything, sets the clock from a valid timeval, and then stores
the timezone, which gettimeofday reports. settimeofday now checks the
timeval the same way and throws for a valid one, as clock_settime does,
because the host clock is not changed. A timezone given without a
timeval is stored and gettimeofday reports it instead of 0 and 0.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 13:20:31 +00:00
louise-patraandClaude Opus 5.5 10f2994bb6 fix(libSceNpUtility): refuse null results and synchronous requests in polls and waits
Firmware 13.42's module checks a null result first (0x80550704) and
refuses a synchronous request in the lookup poll and wait with
0x80550307; the word filter keeps INVALID_ID. The debt entry records the
measurement and that IDs here do not carry the console's service bits.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 18:50:17 +05:30
Dean fe86ec4a3d Merge pull request #10539 from hypermoist/feat/font-get-glyphs-outline-profile
feat(libSceFont): report the glyph outline profile through the FreeType driver
2026-10-26 02:20:13 +13:00
AZLisme 77ba69041c docs(libSceLibreSsl3): correct ASN.1 debt grammar 2026-10-25 21:20:00 +08:00
AZLisme d5aff84d22 test(libSceLibreSsl3): avoid freezing unfinished ASN.1 errors 2026-10-25 21:19:51 +08:00
AZLisme 489b27e780 refactor(libSceLibreSsl3): publish standalone ASN.1 integer decoder 2026-10-25 21:19:50 +08:00
AZLisme 318b1fad9e feat(libSceLibreSsl3): implement ASN.1 integer decoding 2026-10-25 21:19:50 +08:00
Adrià FranchandClaude Sonnet 5.5 f2f526709c docs(libs): update the libSceSdma pending export count after 5 constant returns
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-25 14:16:52 +01:00