Commit Graph
585 Commits
Author SHA1 Message Date
Dean 77f68f314b Merge pull request #11560 from Ragbie/fix/write-after-read-update-stream
fix(libc): set up streams for writing after a read as FreeBSD does on Windows
2026-10-27 21:27:48 +13:00
Dean f9b2db1d41 Merge pull request #11269 from Gruzzberry/fix/realpath-symlinks
fix(libc): realpath resolves symbolic links like FreeBSD
2026-10-27 21:22:09 +13:00
Dean d5f7d86ccc Merge pull request #11139 from JJenkx/fix/libc-modf-floating-environment
fix(libc): preserve modf decomposition and floating-point status
2026-10-27 21:20:33 +13:00
Dean d090e62841 Merge pull request #11074 from JJenkx/fix/libc-frexpf-floating-environment
fix(libc): preserve frexpf decomposition and exception behavior
2026-10-27 21:18:34 +13:00
Dean 2aacb376ee Merge pull request #10346 from JJenkx/windows/libc-logb-msun
fix(libc): compute logb and logbf with FreeBSD msun's algorithm, as titles' libc.prx does
2026-10-27 21:09:12 +13:00
Dean 5a36b2df1e Merge pull request #9850 from JJenkx/windows/libc-powf-msun
fix(libc): compute powf like the libc.prx that titles ship
2026-10-27 21:07:00 +13:00
Dean 853b370f01 Merge pull request #9784 from JJenkx/windows/libc-atan2f-msun
fix(libc): compute atan2f with FreeBSD msun's algorithm, as titles' libc.prx does
2026-10-27 21:06:05 +13:00
Dean 619ac3c2b6 Merge pull request #10467 from MarcZX10/fix/libc-tgammaf-underflow-sign
fix(libc): preserve tgammaf underflow sign
2026-10-27 20:53:02 +13:00
Dean 2f0a0071f5 Merge pull request #10251 from orezraey/docs/libc-fopen-directory-measured-ps5
docs(libc): record fopen and freopen of directories as measured on a PS5
2026-10-27 20:52:15 +13:00
Adrià 8df2c3ed0e Merge pull request #11259 from orezraey/docs/libc-reallocalign-measured-ps5
docs(libc): record reallocalign to size 0 as measured on a PS5
2026-10-27 08:29:28 +01:00
Adrià 8787ae1bb3 Merge pull request #11245 from AlexFigas/docs/libc-isfinitel-bundled-code
docs(debt): close the __isfinitel entry with the bundled libc.prx code
2026-10-27 08:23:28 +01:00
Adrià b806f1a7a0 Merge pull request #11217 from AlexFigas/docs/libc-dinkumware-division-evidence
docs(debt): cut the long-double Dinkumware entry to _LLog with the bundled libc.prx code
2026-10-27 07:58:44 +01:00
Dean 1a13c2969f Merge pull request #9833 from MarcZX10/codex/libc-strtod-decimal-subnormal-erange
fix(libc): set ERANGE for decimal strtod subnormals
2026-10-27 18:21:37 +13:00
Dean 940c298d51 Merge pull request #9698 from mazen320/feat/libc-num-put-vtable-size
fix(libc): size the num_put facet vtable to 112 bytes
2026-10-27 18:20:54 +13:00
Dean 8aa1f9ef7f Merge pull request #9344 from MarcZX10/codex/macos-backtrace-support
feat(libc): restore macOS guest backtraces
2026-10-27 18:20:03 +13:00
Adrià 60bb466419 Merge pull request #10505 from maximilianfv/fix/libkernel-macos-itimer-terminate
fix(libkernel): reach the guest terminate handler from an ITIMER_REAL expiry on macOS
2026-10-27 04:51:54 +01:00
Adrià 71a20013cd Merge pull request #11164 from orezraey/docs/libc-hardware-concurrency-measured-ps5
docs(libc): record std::thread::hardware_concurrency as measured on a PS5
2026-10-27 04:51:40 +01:00
Adrià 1d667d5f52 Merge pull request #11121 from orezraey/docs/libc-fenv-setlocale-strcasecmp-measured-ps5
docs(libc): record feholdexcept, fegetexcept, setlocale and strcasecmp as measured on a PS5
2026-10-27 04:51:24 +01:00
Dean defd713929 Merge pull request #10788 from 00xDisaster/feat/libc-thread-gaps
feat(libc): implement _Thrd_lt
2026-10-27 14:59:56 +13:00
Dean 304bea47ca Merge pull request #9771 from JJenkx/windows/libc-asinf-msun
fix(libc): compute asinf with FreeBSD msun's algorithm, as titles' libc.prx does
2026-10-27 14:58:25 +13:00
orezraeyandClaude Opus 5.5 34ee59f12b Merge main into docs/libc-fenv-setlocale-strcasecmp-measured-ps5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 19:30:20 -03:00
MarcZX10 bcd99084b4 test(libc): cover signed tgammaf underflow 2026-10-26 22:18:30 +00:00
Dean c739a47136 Merge pull request #11289 from Danigamer05/feat/libc-unsigned-min64
feat(libc): implement unsigned 64-bit minimum
2026-10-27 11:06:32 +13:00
Dean b8265bf2bc Merge pull request #11241 from edubox/feat/libc-future-category
feat(libc): export the error_category members and std::future_error
2026-10-27 11:04:49 +13:00
Dean bf38c3bc34 Merge pull request #11208 from orezraey/fix/libc-random-state-measured-ps5
fix(libc): save the random state on a short initstate and take any setstate rear as measured on a PS5
2026-10-27 11:03:11 +13:00
Dean fc2594c7ac Merge pull request #11177 from orezraey/feat/libc-fe-dfl-env-measured-ps5
feat(libc): export __fe_dfl_env as measured on a PS5
2026-10-27 11:02:06 +13:00
Dean d6ac53ba34 Merge pull request #11054 from verusferro/feat/libc-num-put-do-put
feat(libc): format num_put<char>::do_put as the console's libc does
2026-10-27 11:00:12 +13:00
Dean c980e6ef33 Merge pull request #11004 from verusferro/fix/libc-strftime-iso-week
fix(libc): compute strftime week numbers as the console's libc does
2026-10-27 10:58:48 +13:00
Dean 806a573b0b Merge pull request #10139 from dotaku22/feat/libc-fpurge
feat(libc): implement buffered stream purge
2026-10-27 10:53:27 +13:00
Dean c74530e615 Merge pull request #8903 from UnhealthyKraken/feat/libc-feraiseexcept
feat(libc): implement feraiseexcept
2026-10-27 10:52:51 +13:00
Dean ed8fd06177 Merge pull request #11166 from 00xDisaster/feat/libc-collate-vtable-wire
feat(libc): wire the collate<char> facet vtable
2026-10-27 10:38:27 +13:00
Dean 265c36523c Merge pull request #10175 from orezraey/fix/libc-fetestexcept-measured-ps5
fix(libc): return fetestexcept's unmasked status bits as measured on a PS5
2026-10-27 08:57:53 +13:00
Evrim Cicek a7b52084ec fix(libc): set up streams for writing after a read as FreeBSD does on Windows
On Windows the UCRT drops a write that directly follows a read on an r+,
w+ or a+ stream: fputc and fprintf report success, fwrite returns 0 and
fputs returns EOF, all without the error indicator, and the file is left
unchanged, also after an fflush. On a stream open only for reading, fputc
after a read reports success as well.

Writes now first do what FreeBSD 11.4's __swsetup does: a stream open only
for reading fails with EBADF and sets the error indicator, and an update
stream that is reading drops its read buffer and ungetc data, clears end
of file and writes at the descriptor's offset. This covers fwrite, fputs,
fputc, putc_unlocked, fprintf, fprintf_s, fputwc, fputws, fwprintf,
fwprintf_s, puts and wprintf, and printf, vprintf and printf_s, which
write to standard output through PrintWindows and now return -1 there
instead of throwing.

Linux is unchanged: glibc writes at the stream position, which the libc
technical debt now records.
2026-10-26 21:53:56 +03:00
Adrià c9a6013f4d Merge pull request #10468 from JJenkx/fix/libc-nextafter-fenv
fix(libc): preserve nextafter exception flags and denormal modes
2026-10-26 19:50:43 +01:00
Dean 3a1c60898a Merge pull request #11156 from orezraey/fix/libc-fdopen-measured-ps5
fix(libc): check the fdopen mode before the descriptor and skip the access check as measured on a PS5
2026-10-27 05:43:39 +13:00
Dean 4971b380b3 Merge pull request #11127 from orezraey/fix/libc-strerror-r-texts-measured-ps5
fix(libc): give strerror_r, perror and strerror_s the strerror texts as measured on a PS5
2026-10-27 05:42:18 +13:00
Adrià c4669c9ca2 Merge pull request #9958 from JJenkx/windows/printf-long-double-hex
fix(libc): format %La like titles' libc.prx does
2026-10-26 16:30:58 +01:00
Adrià b0f1183ca1 Merge pull request #9973 from JJenkx/windows/swscanf-float-errno
fix(libc): leave errno alone for out-of-range float and double in swscanf
2026-10-26 16:20:08 +01:00
Adrià 14803835de Merge pull request #10176 from orezraey/docs/libc-memmem-memccpy-exports
docs(libc): record that libSceLibcInternal does not export memmem or memccpy
2026-10-26 16:14:39 +01:00
JJenkx c48ed84d47 fix(libc): preserve modf decomposition and floating-point status 2026-10-26 09:34:58 -04:00
Dean bf77a9e9cb Merge pull request #10742 from 00xDisaster/feat/libc-lcosh
feat(libc): implement _LCosh and _LSinh
2026-10-27 02:28:15 +13:00
JJenkxandClaude Opus 5.5 afa58432f3 fix(libc): format %La like titles' libc.prx does
A long double %La went to the host, which on Windows (MinGW) prints the
64-bit significand with its integer bit as the leading digit:
0xc.ccccccccccccccdp-7 for 0.1L. The libc.prx that titles ship
normalises it like a double, with a leading 1 and the remaining 63 bits
as 16 hexadecimal digits, 0x1.999999999999999ap-4, and rounds a shorter
precision half up with the carry kept in the leading digit. Share
HexFloat's digit and rounding code between double and long double and
use it for finite long double %a and %A in the narrow and wide families.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 08:52:35 -04:00
Maz e8aef0f1d8 fix(libc): size the num_put facet vtable to 112 bytes
Titles that import the vtable as data expect fourteen slots (st_size 112 on
PPSA16833 libc.prx); twelve left the object short.
2026-10-26 16:42:42 +04:00
Adrià 2cce8bc51d Merge pull request #9927 from JJenkx/windows/wprintf-float-console
fix(libc): format wide %a, %e, %f and %g with the narrow console rules
2026-10-26 13:25:22 +01:00
JJenkx f5f4f7fbf8 fix(libc): preserve nextafter floating-point environment behavior 2026-10-26 08:24:29 -04:00
Maz 1f27ca0c49 feat(libc): export the wide num_get facet vtable as data
Console libSceLibcInternal exports Y9C9GeKyZ3A as a 136-byte STT_OBJECT;
titles that resolve the wide num_get vtable as data need a zeroed 17-slot
object matching the narrow num_get layout on console.
2026-10-26 11:37:08 +01:00
Adrià cbf76e7a6e Merge pull request #9408 from rursache/feat/macos-trace-imports
feat(relinker): trace function imports on macOS
2026-10-26 11:27:51 +01:00
Adrià c8a3b25882 Merge pull request #9464 from mazen320/feat/libc-time-get-w-vtable
feat(libc): export the wide time_get facet vtable as data
2026-10-26 11:19:39 +01:00
Dean c3db979cd3 Merge pull request #10128 from orezraey/fix/libc-gethostname-measured-ps5
fix(libc): report the empty host name measured on a PS5
2026-10-26 22:00:35 +13:00
Dean cbee224804 Merge pull request #10316 from JJenkx/windows/libc-tanh-msun
fix(libc): compute tanh with FreeBSD msun's algorithm, as titles' libc.prx does
2026-10-26 21:48:43 +13:00