Commit Graph
20967 Commits
Author SHA1 Message Date
Dean a6762cac70 Merge pull request #11589 from oneandonlydean/astro/libc-registry-atomic-v2
fix(libc): stage allocation registry changes before the host mapping changes
2026-10-27 23:02:08 +13:00
ionut27001 e984b14b3f fix(libkernel): sysconf answers the names a PS5 payload process answers 2026-10-27 12:00:08 +02:00
Jota 8bed63610b fix(libkernel): report POLLHUP on macOS only once both directions of a stream have ended
XNU's poll reports POLLHUP as soon as either direction of a stream socket has ended, adds POLLPRI and POLLRDBAND to it and then drops POLLOUT. FreeBSD's sopoll_generic reports POLLHUP only once the receive and the send side are both shut, and Linux does the same, so on macOS a guest saw POLLIN|POLLHUP for a stream whose peer had only shut its sending side, and POLLHUP for one that had only shut its own.

When the host reports POLLHUP on a guest stream socket, ask it about each direction alone and keep POLLHUP only when both have ended, report the requested POLLOUT while the sending side is shut or writable, and leave urgent data to SIOCATMARK.
2026-10-27 06:55:16 -03:00
xXPBSXxandClaude Sonnet 5.5 1f8adf12f5 docs(libc): keep the Sun and FreeBSD notices of e_sinh.c and k_exp.c above sinh
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-27 10:52:03 +01:00
AdriàandClaude Sonnet 5.5 bceec11fb1 docs: limit the host-only test executable rule to targets under core/libs
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-27 10:51:35 +01:00
blawesom f7874ba21e build: add configure_host_test_executable for host-only test executables
A test executable that links no guest library and is built for MinGW fails
to link when one of its objects has an exception landing pad: the guest
libc provides __gxx_personality_v0, and host-only links do not see it.

configure_host_test_executable(<target>) centralises the fix already
spelled out by hand in core/libs: native SEH unwind tables and a static
runtime. Migrated the two targets whose blocks matched it exactly
(patched_libraries_tests, guest_kernel_sys_threads_tests); their MinGW
build is unchanged by construction. Documented the rule in CONVENTIONS.

Unblocks none; guards the same class as the CI check in #11343.
2026-10-27 10:51:30 +01:00
xXPBSXxandClaude Sonnet 5.5 4902c38569 docs(libc): keep the Sun notice of s_asinh.c above asinh
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-27 10:48:13 +01:00
roboterspinne c70008b853 fix(relinker): reject ET_EXEC executable input
RelinkerPipeline::Relink accepted ET_EXEC input, and every Linux mode
placed it at base + p_vaddr: at 0x400000 by default, at the
--linux-fixed-base address, or at a load bias as ET_DYN with
--lazy-binding, so its absolute references that carry no relocation
kept pointing at the link addresses. The gABI chapter on program
loading says the segments of an executable file must reside at the
virtual addresses used to build it. ET_DYN and the SCE dynamic types
0xfe10 and 0xfe18, the types WindowsLoadImage already accepts as
position independent, may be placed at a base. Relink now rejects
ET_EXEC on every target before the allowlist, which accepts ET_DYN,
0xfe10 and 0xfe18. ET_EXEC input now exits 2 without writing output;
outputs for the other accepted types are unchanged.
2026-10-27 10:47:32 +01:00
Hedi Trigui 3d17309724 feat(libc): implement reallocarray 2026-10-27 10:46:33 +01:00
PrivacyOnion bd13b15189 test(libSceAudiodec): cover invalid codec types and handle bounds in GuestAudiodec 2026-10-27 10:43:56 +01:00
Dean Galvin e8ed0e95df test(agc): pass the legacy request version messages as plain strings
require takes a C string; the version 46 and 47 depth export messages were
built with std::string and did not compile.
2026-10-27 22:43:09 +13:00
Dean Galvin 0a87d9a0a9 Merge main into salvage/jsc-9438: keep main's JSString implementation, append the stubs
Main now implements ten JSString functions in libSceJsc/Export.cpp and has its
own debt file. Take main's files and append the 150 import-resolution stubs
of this PR after them, with their debt entry; none of their NIDs is defined on
main.
2026-10-27 22:39:07 +13:00
Dean Galvin 1bf274a817 Merge main into perf-D2-v47: depth export tail moves to request version 48
Main took request serialization version 47 for the two-sample dithered
alpha-to-coverage value. The depth export clamp bounds are now written at
version 48 and read only for versions from 48, so a version 47 request as main
writes it still decodes, with default bounds. Tests: version 48 is the
emitted prefix, 49 the first unsupported one, and a version 47 two-sample
dithered request (with and without depth export) decodes as written.
2026-10-27 22:37:31 +13:00
avnish f9613a9136 test(libSceWebBrowserDialog): cover post-terminate argument validation 2026-10-27 15:02:46 +05:30
roboterspinne b6c9e39abb fix(relinker): reject non-TLS executable relocations against STT_TLS symbols
An executable relocation of type R_X86_64_64, PC32, 32, GLOB_DAT or
JUMP_SLOT against an STT_TLS symbol, defined or undefined, became a
named import, and the Linux output kept it typed STT_TLS. The gABI
allows STT_TLS symbols only in TLS relocations, since their value is
an offset in the TLS block and not an address, and GuestImageReader
already rejects such relocations in guest modules. The pipeline now
fails on them in extractRela for every target and writes no output.
2026-10-27 10:32:28 +01:00
Dean Galvin f54ec181a1 build: restore submodule pointers to main 2026-10-27 22:26:02 +13:00
JJenkxandClaude Opus 5.5 1c7f19e716 fix(agc): pin the import ceiling only on memory exhaustion
A failed vkAllocateMemory still makes the host import budget follow the
driver's VK_EXT_memory_budget report, but only VK_ERROR_OUT_OF_HOST_MEMORY
and VK_ERROR_OUT_OF_DEVICE_MEMORY pin the permanent ceiling. RADV reports a
refused user-memory import as VK_ERROR_UNKNOWN or
VK_ERROR_INVALID_EXTERNAL_HANDLE, and pinning on those collapsed the budget
to the few MiB live at the time.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 05:18:29 -04:00
Santhosh Kumar d3d7ae0ae2 fix(libSceLibcInternal): preserve combined POSIX spawn flags 2026-10-27 14:48:12 +05:30
Santhosh Kumar e8db1c1648 test(libSceLibcInternal): observe combined spawn flags in a dedicated fixture 2026-10-27 14:45:53 +05:30
roboterspinne a5e1bc5c3a Merge remote-tracking branch 'upstream/main' into fix/relinker-guest-declared-module-binding 2026-10-27 10:12:52 +01:00
guglia001 1bdb8388ed test(relinker): add a libFuzzer target for the whole conversion
ANYPS5_BUILD_FUZZERS builds relinker_conversion_fuzzer with AddressSanitizer
and UndefinedBehaviorSanitizer in relinker-only Clang builds on Linux. The
first input byte selects the target system, --to-intel and the unused-filter
level; the rest is the executable passed to Conversion::Convert, the path the
web converter takes. tools/relinker_fuzz_seeds.py writes the relinker test
fixtures as seeds, and CTest runs a short smoke run.
2026-10-27 10:12:35 +01:00
Dean Galvin 560a9c0be6 merge: main into test/player-review-dialog-mode-1-and-null-result 2026-10-27 22:08:34 +13:00
JJenkxandClaude Opus 5.5 8f39bcc549 Merge main into PR #10283
Conflicts with main's newer libc changes resolved without changing either
side: the debt list keeps each side's entry changes (per entry, deletions
included), GuestMath.cpp keeps both sides' test functions and calls, and
Math.cpp differs from main by exactly this branch's own changes.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 05:06:27 -04:00
MarcZX10 9e6c5921a0 docs(debt): drop the blank line left at the end of the debt file 2026-10-27 09:06:08 +00:00
Dean 801d5b9bc1 Merge pull request #11344 from thuanquang/fix/commit-every-view-of-a-run
fix(libc): reset every page of a run view that Commit reprotects
2026-10-27 22:05:59 +13:00
Dean Galvin 0344e6e209 test(libkernel): map AMM pages from a fragmented pool
Fragment the pool into single free pages, map a range no single run holds, check each page keeps its own data, and check an exhausted pool still reports no free run.
2026-10-27 22:05:24 +13:00
Dean Galvin ba6e914e1d fix(libkernel): drop the comment and log line from the scattered AMM map
The exhaustion message stays "AMM: no free run of N bytes" when the pool holds fewer bytes than the map needs.
2026-10-27 22:05:24 +13:00
BiladeiroSupremo c55d34663a fix(libkernel): map AMM pages from a fragmented pool
_ammMap took one contiguous run of the direct memory given to the mapper and
threw (an uncaught runtime_error -> abort) when the pool was fragmented:
PPSA03671 aborted ~4 min into a slot-4 load on an 11 MB map ("AMM: no free run
of 11010048 bytes"). The PS5 maps the mapper's pages through page tables, so a
fragmented pool still serves the map: when no run fits, the map now takes
pages from several runs (first fit) and maps each contiguous group. Run hww8:
the 11 MB map and several 10-33 MB maps went through, no abort.
2026-10-27 22:05:24 +13:00
MarcZX10 ca67aefde9 refactor(libSceFreeType): declare the exports of this PR in the public header
The public header audit wants one declaration per export in the library header, so Api.hpp declares them with their definitions' signatures and the tests include it instead of their own extern blocks.
2026-10-27 09:05:15 +00:00
MarcZX10 49032fe9ed fix(libSceFreeTypeOt): name the aliases of the symbols this PR implements after them
An Unknown export whose NID is a symbol of the tree is rejected by the unknown-nid convention check, so the alias takes the symbol's name, as the already identified ones do.
2026-10-27 09:05:15 +00:00
MarcZX10 cafa957425 test(freetype): set Windows DLL path for 10598 2026-10-27 09:05:15 +00:00
MarcZX10 9c2274e896 docs(libSceFreeType): record FT_Stroker_CubicTo 2026-10-27 09:05:15 +00:00
MarcZX10 acfb431a8d test(libSceFreeType): compare FT_Stroker_CubicTo with native FreeType 2026-10-27 09:05:15 +00:00
MarcZX10 b5dfb0be64 feat(libSceFreeType): implement FT_Stroker_CubicTo 2026-10-27 09:05:15 +00:00
MarcZX10 39a5854615 docs(libSceFreeType): record FT_Stroker_ConicTo 2026-10-27 09:05:14 +00:00
MarcZX10 7aaf18a152 test(libSceFreeType): compare FT_Stroker_ConicTo with native FreeType 2026-10-27 09:05:14 +00:00
MarcZX10 8224bf1def feat(libSceFreeType): implement FT_Stroker_ConicTo 2026-10-27 09:05:14 +00:00
MarcZX10 845c4280cc docs(libSceFreeType): record FT_Stroker_GetBorderCounts 2026-10-27 09:05:14 +00:00
MarcZX10 d25286fc7c test(libSceFreeType): compare FT_Stroker_GetBorderCounts with native FreeType 2026-10-27 09:05:14 +00:00
MarcZX10 48437be1e2 feat(libSceFreeType): implement FT_Stroker_GetBorderCounts 2026-10-27 09:05:14 +00:00
MarcZX10 8e66aee1dd docs(libSceFreeType): record FT_Stroker_Rewind 2026-10-27 09:05:14 +00:00
MarcZX10 4561ddf6e9 test(libSceFreeType): compare FT_Stroker_Rewind with native FreeType 2026-10-27 09:05:14 +00:00
MarcZX10 dc19e9adc8 feat(libSceFreeType): implement FT_Stroker_Rewind 2026-10-27 09:05:14 +00:00
MarcZX10 da4ad46570 docs(libSceFreeType): record FT_Stroker_Set 2026-10-27 09:05:14 +00:00
MarcZX10 7534ee64c2 test(libSceFreeType): compare FT_Stroker_Set with native FreeType 2026-10-27 09:05:14 +00:00
MarcZX10 1121e7d97f feat(libSceFreeType): implement FT_Stroker_Set 2026-10-27 09:05:14 +00:00
MarcZX10 560f9651c0 docs(libSceFreeType): record FT_Stroker_EndSubPath 2026-10-27 09:05:14 +00:00
MarcZX10 4e99b7a18d test(libSceFreeType): compare FT_Stroker_EndSubPath with native FreeType 2026-10-27 09:05:14 +00:00
MarcZX10 d76e9a89d9 feat(libSceFreeType): implement FT_Stroker_EndSubPath 2026-10-27 09:05:14 +00:00
MarcZX10 b3e919312c docs(libSceFreeType): record FT_Stroker_LineTo 2026-10-27 09:05:14 +00:00