Commit Graph
8546 Commits
Author SHA1 Message Date
Dean ebb8610b82 Merge pull request #8154 from xXPBSXx/fix/socket-address-length-v4
fix(libkernel): fail a short or long socket address like FreeBSD
2026-10-20 15:53:11 +13:00
Dean 463dc2e4e2 Merge pull request #7889 from ErenYeager1836/feat/libSceSysmodule-unload-internal-with-arg
feat(libSceSysmodule): implement sceSysmoduleUnloadModuleInternalWithArg
2026-10-20 15:52:30 +13:00
Dean db9fe52310 Merge pull request #7828 from savvaniss/fix/gpl-off-keep-library-extensions
fix(agc): keep the pipeline library extensions enabled under APS5_NO_GPL
2026-10-20 15:52:17 +13:00
Dean b5813c0740 Merge pull request #7746 from YossiYad/fix/front-face-all-bits-uint-target
test(agc): export the front-face bits through a uint target as uint
2026-10-20 15:52:03 +13:00
ShinMalphur d9fc0c483d docs(net): record Ethernet parser validation gap 2026-10-20 09:19:52 +06:30
Adrià 06d97be8b4 Merge pull request #7856 from KernelPanicNT/fix/gameupdate-lifecycle-errors
fix(libSceGameUpdate): return the module's lifecycle and argument errors
2026-10-20 04:46:46 +02:00
Adrià 0169b82e31 Merge pull request #7852 from Lindamea1/feat/ppsa24191-loader-imports
feat(libs): add the Voice and IME exports PPSA24191 needs to load
2026-10-20 04:46:42 +02:00
Adrià 784f82b4b0 Merge pull request #7848 from SibteProf/feat/ces-unicode-scalar-conversions
feat(libSceCesCs): implement Unicode scalar conversions
2026-10-20 04:36:33 +02:00
Adrià 38a7b0c72b Merge pull request #7846 from fogydes/feat/contentexport-firmware-exports
feat(libSceContentExport): export missing firmware content export interfaces
2026-10-20 04:36:28 +02:00
Adrià 7e88b6da0b Merge pull request #7840 from akkadbakkad89/feat/prx-declare-seven-more-libs
feat(prx): declare exports for seven more confirmed system libraries
2026-10-20 04:36:23 +02:00
al3w0f205 dba05da0e5 feat(libSceUlt): export missing firmware functions from database 2026-10-19 21:34:45 -05:00
Adrià c2b0159d6e Merge pull request #7835 from akkadbakkad89/feat/prx-declare-six-libs
feat(prx): declare exports for six confirmed system libraries
2026-10-20 04:27:03 +02:00
Dean c21eef33c0 Merge pull request #7890 from ErenYeager1836/feat/libSceNpAuth-get-auth-code-id-token
feat(libSceNpAuth): export sceNpAuthGetAuthorizationCode and sceNpAuthGetIdToken
2026-10-20 15:22:43 +13:00
Dean 842bfcce66 Merge pull request #7726 from milescoviello/fix/playgo-scenario-chunks
fix(libScePlayGo): list chunks 0 to 999 when only a scenario file is present
2026-10-20 15:22:30 +13:00
Dean 07fc9a5b36 Merge pull request #8164 from xXPBSXx/fix/path-name-too-long-fb
fix(libc): fail an oversized guest path name with ENAMETOOLONG
2026-10-20 15:22:02 +13:00
alosta 76bbf68f70 docs(debt): record the remaining stubs under Unknown function info
The debt entries only had the four index sections before; use Unknown
function info for the imports that fail a title to load and for the
signatures Orbital or the aerolib NID list do not give. Note that
sceSystemServiceShowDisplaySafeAreaSettings takes its (void) signature
from the sibling sceSystemServiceShowControllerSettings, not a reference.

AI-assisted: yes
2026-10-20 03:21:07 +01:00
alosta 38aa6aafe8 refactor(libs): drop the stub libraries with unknown signatures
SceCamera, SceDepth2, SceSulpha and SceAudiodecCpuHevag were declared
without parameters because no reference gives their signatures, and the
HEVAG stub exported an invented sceAudiodecCpuHevagUnimplemented symbol
that matches no real export. SceAudiodecCpu overlaps #6847. Only the
libraries whose real exports and signatures are known stay.

AI-assisted: yes
2026-10-20 03:21:07 +01:00
alosta 73e29b9469 fix(docs): correct debt-file link for libSceAt9Enc 2026-10-20 03:21:07 +01:00
alosta 2dc56f37c3 feat(libs): add unimplemented PS5 system library stubs and debt docs
Add boilerplate stubs for libSceAt9Enc, libSceAudiodecCpu, libSceAudiodecCpuHevag,
libSceM4aacEnc, libSceSulpha, libSceCamera, and libSceDepth2, each exporting its
known NIDs via NotImplemented_nid_no_patch. Include debt documentation with
sysmodule IDs and (where available) orbital-derived signatures.

Add sceSystemServiceShowDisplaySafeAreaSettings as a silent success stub and
document it under Silent stubs.

AI-assisted: yes
2026-10-20 03:21:07 +01:00
Adrià ad61cafde0 Merge pull request #7821 from xdCloudy/feat/ps5-system-services-exports
feat(libs): declare system service import stubs for OS 3.20 compatibility
2026-10-20 04:12:34 +02:00
hugodearaujo 086e98a42a fix(agc): decode cube descriptors with slices past their last whole cube
# Conflicts:
#	docs/dev/debt/libSceAgcDriver.md
2026-10-19 23:11:53 -03:00
ntamas94 87ee5e2455 fix(agc): drain a label while a copied write-back is pending
A label recorded while a copied writer is listed went to the GPU and landed before the writer's CPU write-back ran at the batch's reap, so a title that rewrote the written region after polling the label had its bytes overwritten by the late write-back. The label now takes the drain path, which runs the write-back first and stores the label on the CPU.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
(cherry picked from commit ec3dc6964172720e8364f6153ba34086cd581740)
2026-10-20 03:50:41 +02:00
Adrià 6bd669e40c Merge pull request #6832 from al3w0f205/feat/bluetoothhid-firmware-exports
feat(libSceBluetoothHid): export missing firmware functions from database
2026-10-20 03:45:08 +02:00
Adrià 306bb17a27 Merge pull request #7789 from JJenkx/fix/ajm-batch-context-ownership
fix(ajm): keep batch handles within their creating context
2026-10-20 03:45:02 +02:00
xXPBSXxandClaude Sonnet 5.5 45940f27cc fix(libkernel): honour MSG_DONTWAIT in the socket send and receive calls on Windows
send, sendto, sendmsg, recv, recvfrom and recvmsg failed with EOPNOTSUPP for
MSG_DONTWAIT on Windows, where FreeBSD 11.4 sosend_generic and
soreceive_generic make the one call non-blocking and fail with EWOULDBLOCK
when it would wait. Winsock has no per-call flag, so the call now asks WSAPoll
with a zero timeout whether the socket is ready and fails with EAGAIN when it
is not. The Windows branches of the socket tests that expected EOPNOTSUPP now
run the same checks as the other hosts.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-20 03:43:59 +02:00
Adrià 02084228a4 Merge pull request #7567 from pushkarreddyy/fix/libSceAcm-batch-wait-validation
feat(libSceAcm): validate context and batch parameters in batch wait and lifecycle exports
2026-10-20 03:30:45 +02:00
Adrià ef823a4458 Merge pull request #7756 from frankea/ssl-ps5-measured
fix(libSceSsl): follow the codes and defaults measured on a PS5 (13.40)
2026-10-20 03:30:38 +02:00
Adrià 049a826e95 Merge pull request #7786 from T3cm0/feat/videoout-hmd2-bus
feat(libSceVideoOut): answer the HMD2 bus open as the console does
2026-10-20 03:25:32 +02:00
Luis Gerardo Aguilar 1b33f14c8c feat(netctl): add sceNetCtlGetInfoV6 argument and connection checks
Titles import sceNetCtlGetInfoV6, and a missing import stops them at
load. The checks that need no answer layout are implemented; every code
throws when the host has IPv6, since the layout of the answer is not
verified.
2026-10-19 20:17:26 -05:00
Luis Gerardo Aguilar c1929ab9b6 fix(audioout2): keep each port's grain when ports share a buffer
A title can fill one buffer and hand it to several ports in turn before
advancing the context. Reading the buffer only at push time gave every
port the contents set last, so the earlier ports played silence. Each
set now copies the grain, and a grain whose buffer is handed to another
port afterwards plays its copy. Buffers no other port is given are still
read at push time.
2026-10-19 20:15:12 -05:00
xXPBSXxandClaude Sonnet 5.5 7535eb45fc fix(libSceLibcInternal): start fdopendir at the descriptor position and set FD_CLOEXEC
fdopendir listed the directory from its first entry whatever position the
descriptor had, and left FD_CLOEXEC unchanged. FreeBSD 11.4 fdopendir sets
FD_CLOEXEC on the descriptor and preserves the initial seek position (lib/libc/gen/opendir.c).
The Windows directory handle now skips the entries the descriptor already
consumed, the Linux handle duplicates the descriptor, and the test requires both.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-20 03:11:14 +02:00
To3akaRin c1c416fc43 docs(build): translate quick syntax checks into English 2026-10-20 09:09:09 +08:00
priyanshrv-netizenandClaude Opus 5.5 16a7cece3b feat(libc): implement j0, j1, jn, y0, y1 and yn
The double Bessel functions follow the system libc.prx: FreeBSD msun
e_j0.c, e_j1.c and e_jn.c with every multiply-add the console fuses
done as one FMA, and the console's constant results for zero and
negative arguments of the second kind.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-20 06:38:32 +05:30
Dean Galvin f06c9f9222 Merge main into pr-6604
# Conflicts:
#	docs/dev/debt/shader.md
2026-10-20 14:05:05 +13:00
Adrià b50976750d Merge pull request #7640 from Pipodi/perf/texture-cache-scan-admission
perf(agc): refuse uncached textures while the sampled cache's least recently used entry is still in use
2026-10-20 02:57:27 +02:00
Savvanis SpyrosandClaude Opus 5.5 45cc02c49c fix(relinker): start Windows runtime modules the executable needs when the title loads them
A --module-dir module that only the executable needs was initialized by
the Windows entry stub with no start arguments, so a later
sceKernelLoadStartModule with arguments found it started and its
module_start never saw them. Unity's mono-ps4.sprx keeps those
arguments for the plugins it loads. Such a module is now deferred like
any other runtime module: mapped at startup and started, with its
arguments, when the title loads it. Modules another guest module needs
are still started at startup, and Linux and macOS are unchanged.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 03:57:24 +03:00
xXPBSXxandClaude Sonnet 5.5 49940998cd docs(libc): list the lookup order and the backslash separator among the rename dot component differences
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-20 02:57:14 +02:00
xXPBSXxandClaude Sonnet 5.5 9899ba0fa2 fix(libc): fail a rename of a path that ends in a dot component with EINVAL
rename and sceKernelRename resolved "dir/." to "dir" and renamed the directory. FreeBSD 11.4's lookup fails a last component of "." for DELETE and RENAME with EINVAL, for the source and the destination alike. Check the guest string before it is resolved: a last component of "." (also under trailing slashes) fails with EINVAL when its parent exists, ENOENT when it does not and ENOTDIR when it is not a directory.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-20 02:57:14 +02:00
babyhuey b28198008c feat(libkernel): implement sceKernelOpenEventFlag
Return the handle of an event flag this process created under the
given name, or ENOENT. Twispero opens the shell's
SceShellCoreUtilAppFocus flag at start-up and treats a failed open as
unknown focus.
2026-10-19 20:52:47 -04:00
xXPBSXxandClaude Sonnet 5.5 1ab777e257 docs(libc): list the backslash separator and the sceNgs2ParseWaveformFile exception among the path name length differences
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-20 02:47:58 +02:00
xXPBSXxandClaude Sonnet 5.5 6bc6c444e0 fix(libc): fail an oversized guest path name with ENAMETOOLONG
stat, open, mkdir, rename and the other calls that resolve a guest path answered ENOENT (or EIO for rename) for a name longer than 255 bytes or a path of 1024 bytes or more, because the host path just did not exist. FreeBSD 11.4's namei fails a component above NAME_MAX and a path of MAXPATHLEN bytes with ENAMETOOLONG. Check both limits on the guest string before it is resolved; FilesystemError already maps the error to 63.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-20 02:46:53 +02:00
xXPBSXxandClaude Sonnet 5.5 6cbfe3e4c5 docs(debt): say that the RX 6400 device loss of the CMASK clear pass is not reproduced
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-20 02:42:50 +02:00
xXPBSXxandClaude Sonnet 5.5 cd09badb2b fix(libkernel): fail a short or long socket address like FreeBSD
bind, connect and sendto answered EFAULT for an address length below 2 and EAFNOSUPPORT for an AF_INET address below 16 or an AF_INET6 address below 28 bytes. FreeBSD 11.4's getsockaddr fails a length below 2 with EINVAL and above SOCK_MAXADDRLEN (255) with ENAMETOOLONG, and the protocols compare the length with sizeof(struct sockaddr_in) or sockaddr_in6 and fail with EINVAL.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-20 02:30:55 +02:00
hamb3r 47591f2e92 docs(debt): update sceLibcBacktrace technical debt entry for Windows 2026-10-20 03:28:37 +03:00
hamb3r 387be86004 docs(debt): move Dinkumware thread debt entries from libSceAmpr to libc 2026-10-20 03:22:13 +03:00
Savvanis SpyrosandClaude Opus 5.5 6e4c01f91c feat(libSceNpManager): answer the PS4 account id and presence queries for a signed-out user
sceNpGetAccountId and sceNpSetGamePresenceOnline report NP as signed
out, and sceNpUnregisterPlusEventCallback returns 0 like the premium
form.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 03:19:49 +03:00
Adrià 34b1b77abf Merge pull request #7651 from DavidSamir/fix/relinker-amd-only-branch-targets
fix(relinker): ignore direct branch targets inside an instruction past its prefixes
2026-10-20 02:13:47 +02:00
Karim Masmoudi 3cae921a66 fix(relinker): probe masked store elements before the store under --to-rosetta
Rosetta ends the process instead of raising SIGSEGV or SIGBUS when a
VMASKMOVPS, VMASKMOVPD, VPMASKMOVD or VPMASKMOVQ store faults on any
element other than an active first element ("rosetta error: unexpectedly
need to EmulateForward on a synchronous exception"). Measured on an M5
with macOS 27.0.1 for all eight 128- and 256-bit store forms. A masked
store into a page the macOS write watch keeps read-only therefore ends
the title.

--to-rosetta now moves each masked store to a stub that saves RAX, RCX
and RFLAGS below the red zone, computes the operand address with LEA,
reads the mask sign bits with VMOVMSKPS or VMOVMSKPD, and writes to the
first and last byte of every active element with LOCK OR of 0. Those
writes fault normally, so the write watch sees the page and unprotects
it, and they leave memory unchanged. The stub then restores the
registers and runs the original store. Segment and address-size
prefixes are kept on the probes, RSP-based operands skip the spill
frame, and RIP-relative operands are relocated. Masked loads, the
Intel target and a plain relink are unchanged.

masked_store_lowering decodes every form, register and extension,
checks the stub bytes, and on x86-64 Linux and macOS runs 1728 stubs
across all forms, six addressing modes, six offsets around a read-only
page and six mask patterns. It checks the stored bytes, that exactly one
fault reaches the handler when an active element touches the page,
that no register, flag or red-zone byte changes, and that RSP is
restored. Without the probes the x86-64 build aborts under Rosetta.
test_to_rosetta.py checks that only --to-rosetta lowers a VMASKMOVPS.
2026-10-20 01:12:24 +01:00
Adrià fafadca12c Merge pull request #7529 from Aspct3434/feat/swscanf-pointer
feat(libc): scan %p in swscanf and swscanf_s
2026-10-20 02:09:37 +02:00
Adrià 5253446882 Merge pull request #7543 from ionut27001/fix/libkernel-getrlimit-console
fix(libkernel): report the getrlimit values measured on a PS5 for RLIMIT_STACK, RSS, MEMLOCK and NPROC
2026-10-20 02:07:39 +02:00