Commit Graph
616 Commits
Author SHA1 Message Date
Adrià 9036e3c9e4 Merge pull request #12126 from morten-holm/fix/macos-host-stack-above-arena
fix(libkernel): move the macOS main stack out of the guest arena
2026-10-29 14:51:57 +01:00
Adrià e87f2d9394 Merge pull request #12162 from AlexFigas/feat/libc-aligned-array-operators
feat(libc): export the remaining aligned and array operator new and delete overloads
2026-10-29 14:39:44 +01:00
Adrià 157b02c4f1 Merge pull request #11852 from ionut27001/fix/wf-scanf-q-length-linux
fix(libc): end sscanf and vsscanf at a q length on Linux and macOS
2026-10-29 13:57:18 +01:00
Adrià df53927b7b Merge pull request #10929 from Aspct3434/claude/modest-curie-705h76
fix(libc): read characters outside the BMP as surrogate pairs in fgetwc
2026-10-29 13:49:54 +01:00
Adrià aab650b4d3 Merge pull request #11893 from JJenkx/windows/libc-printf-ignored-lengths
fix(libc): ignore printf length modifiers that do not apply, as titles' libc.prx does
2026-10-29 13:49:01 +01:00
Adrià 7b57271358 Merge pull request #11504 from verusferro/feat/libc-xfilesystem-error
feat(libc): throw std::filesystem::filesystem_error from _Xfilesystem_error as the console's libc does
2026-10-29 13:47:45 +01:00
Adrià e3a7db45ed Merge pull request #11734 from verusferro/feat/libc-btowc-wctob-internals
feat(libc): export _Btowc and _Wctob, which give btowc and wctob results in the console's libc
2026-10-29 12:57:40 +01:00
Dean 711c4eca09 Merge pull request #11785 from ionut27001/fix/libc-hardware-concurrency
fix(libc): return the CPU count of the default thread mask from std::thread::hardware_concurrency
2026-10-29 12:16:46 +13:00
Dean 3e3fa79116 Merge pull request #12229 from Danigamer05/feat/libc-stdc-one-runs
feat(libc): add C23 leading and trailing one counts
2026-10-29 12:10:46 +13:00
Dean 34ae0d5e9e Merge pull request #12193 from Danigamer05/feat/libc-stdc-zero-runs
feat(libc): add C23 leading and trailing zero counts
2026-10-29 12:09:21 +13:00
Dean b76d41ea82 Merge pull request #11979 from xXPBSXx/carry/6713-default-heap-no-procparam
fix(libc): use the default heap for an executable without process parameters
2026-10-29 11:49:55 +13:00
Dean 1f52200308 Merge pull request #11333 from Danigamer05/feat/libc-signed-max32
feat(libc): implement signed 32-bit maximum value helper
2026-10-29 07:27:25 +13:00
Adrià 8c621aa276 Merge pull request #11729 from iAbdulrrahman/feat/libc-fetch-64-bit-atomics
feat(libc): implement 64-bit atomic fetch helpers
2026-10-28 17:35:48 +01:00
Claude 84aec8b0ac fix(libc): read characters outside the BMP as surrogate pairs in fgetwc
fputws and wprintf write a UTF-16 surrogate pair as one four-byte
UTF-8 sequence, but fgetwc decoded that sequence into a single code
point above 0xFFFF, which is not a 16-bit guest wchar_t value, and
fgetws stored it truncated: fputws(u"A\U0001F600\n") read back as
A, U+F600, newline.

fgetwc now returns the high surrogate and keeps the low one in the
stream for the next read, so fgetws stores the pair, also when the
buffer fills between the two halves. A successful seek discards it,
as FreeBSD's fseeko resets the stream's mbstate. Sequences that
decode to an overlong form or above U+10FFFF, and lead bytes F8 to
FF, fail with EILSEQ instead of returning made-up characters; the
three-byte surrogates that fputwc writes for a single unit are still
read back as that unit.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01QegaHM5QeCynUQ2ZLWHE4b
2026-10-28 14:43:48 +01:00
verusferro 7f2d69f340 feat(libc): export _Btowc and _Wctob, which give btowc and wctob results in the console's libc 2026-10-28 15:10:32 +03:00
verusferro 778c4a74ec feat(libc): throw std::filesystem::filesystem_error from _Xfilesystem_error as the console's libc does 2026-10-28 15:10:30 +03:00
Alexandre Figueiredo 2b21d42b76 feat(libc): export the remaining aligned and array operator new and delete overloads 2026-10-28 11:50:06 +00:00
Dean 14a269cfef Merge pull request #12187 from Danigamer05/feat/libc-stdc-count-zeros
feat(libc): add C23 count-zeros exports
2026-10-28 22:50:41 +13:00
Adrià 0cd07dc4ab Merge pull request #11399 from iAbdulrrahman/feat/libc-digittoint-and-numbers
feat(libc): implement digittoint, isnumber, and ishexnumber
2026-10-28 06:34:59 +01:00
Adrià 895ead67f7 Merge pull request #11396 from iAbdulrrahman/feat/libc-timingsafe-memcmp
feat(libc): implement timingsafe_memcmp
2026-10-28 06:25:30 +01:00
Dean 5ab8acf45f Merge pull request #11309 from Danigamer05/feat/libc-signed-min32
feat(libc): implement signed 32-bit minimum value helper
2026-10-28 17:50:21 +13:00
Dean c9cc3b34db Merge pull request #11304 from Danigamer05/feat/libc-unsigned-max32
feat(libc): implement unsigned 32-bit maximum
2026-10-28 17:50:05 +13:00
Dean dbbe99aeb0 Merge pull request #9772 from UnhealthyKraken/feat/libc-floating-prefix
feat(libc): implement floating-point prefix helpers
2026-10-28 17:49:14 +13:00
Danigamer05 d7986b1fb6 feat(libc): add C23 leading and trailing one counts 2026-10-28 04:54:42 +01:00
Adrià 439d03db38 Merge pull request #11663 from Danigamer05/feat/libc-stdc-count-ones
feat(libc): add C23 count-ones exports
2026-10-28 04:19:47 +01:00
Adrià f1f1737371 Merge pull request #11647 from B-Howell/codex/libc-strtoq
feat(libc): implement strtoq
2026-10-28 04:06:20 +01:00
Danigamer05 504111f10c feat(libc): add C23 leading and trailing zero counts 2026-10-28 03:54:03 +01:00
Danigamer05 e5835d6866 feat(libc): add C23 count-zeros exports 2026-10-28 03:09:35 +01:00
Dean 82e2d0ed14 Merge pull request #11335 from xXPBSXx/fix/filestream-flags-race
fix(libc): read the stream status flags atomically when keeping a directory read error
2026-10-28 13:51:15 +13:00
Dean 4c6fcfcb5c Merge pull request #9763 from rooklz/fix/libc-freopen-closed-stream
fix(libc): reopen a closed stream in freopen instead of aborting
2026-10-28 13:48:50 +13:00
Dean 6e9b9134f6 Merge pull request #11846 from heditrigui/feat/libc-reallocarray
feat(libc): implement reallocarray
2026-10-28 12:10:58 +13:00
Morten HolmandClaude Sonnet 5.5 3b1697cf1c fix(libkernel): move the macOS main stack out of the guest arena
Under Rosetta the main thread stack lies at about 12 GiB, inside the guest
arena, where a title can map fixed addresses; a fixed mapping over it
aborts with a host region overlap.

- Aps5StartGuest moves the main thread onto a 16 MiB stack at
  0x600000000000 when the old stack overlaps a host region of the arena.
  It copies argv, environ, the program name and the initial block off the
  old stack, then frees the old stack and releases its range to the arena.
- The guest thread keeps the stack size of the original main thread.
- The arena gets GuestArenaOverlapsHostRegion and
  GuestArenaReleaseHostRegion for POSIX hosts.
- guest_main_stack_move starts the guest, then requires the main thread
  outside the arena, a fixed mapping where the old stack was, and argv and
  the environment intact.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-27 22:55:41 +01:00
xXPBSXxandClaude Sonnet 5.5 944b4d753e Merge main (f5fefb982c) into carry/6713-default-heap-no-procparam
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-27 22:29:34 +01:00
Adrià e274546099 Merge pull request #11302 from Danigamer05/feat/libc-signed-max64
feat(libc): implement signed 64-bit maximum
2026-10-27 22:26:29 +01:00
Adrià 6d99bf4ccb Merge pull request #11300 from Danigamer05/feat/libc-signed-min64
feat(libc): implement signed 64-bit minimum
2026-10-27 22:16:40 +01:00
Adrià 4a6005955f Merge pull request #10898 from imellag/feat/libkernel-memory-protection-macos
feat(libkernel): guest memory protection and VirtualQuery on macOS hosts
2026-10-27 21:42:24 +01:00
Adrià 80b209d984 Merge pull request #11295 from Danigamer05/feat/libc-unsigned-min32
feat(libc): implement unsigned 32-bit minimum
2026-10-27 21:20:30 +01:00
Dean ab6a87a163 Merge pull request #10460 from Danigamer05/feat/libc-unsigned-max64
feat(libc): implement unsigned 64-bit maximum
2026-10-28 06:53:22 +13:00
Adrià a1053d987b Merge pull request #11273 from Gruzzberry/fix/signal-pointer-faults
fix(libkernel): fail the signal action, mask, stack and pending calls with EFAULT on an unusable pointer
2026-10-27 17:55:35 +01:00
xXPBSXxandClaude Sonnet 5.5 e914dd269c fix(libc): return a zeroed parameter block for an executable without process parameters
Callers of ApplicationProcessParameters_nid_no_patch read the compiled SDK
version at offset 16 without a null check, so the null result for the
no-parameters record would crash them. The lookup now returns a static
zeroed 0x40-byte block for that record, and the heap recognises it by
address and keeps registering its default allocator.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-27 16:04:22 +01:00
Danigamer05 f139bcf1fc feat(libc): implement signed 32-bit maximum value helper 2026-10-27 15:46:15 +01:00
JJenkxandClaude Opus 5.5 4630a53d0e fix(libc): ignore printf length modifiers that do not apply, as titles' libc.prx does
The printf family threw for a length modifier its conversion does not
take, such as %Ld, %hhc, %Ls, %hf or %hp, and the wide family returned
-1. The libc.prx bundled with titles ignores such a modifier: L on an
integer conversion or %n (an int), any length but l on %c and %s, any
but L on a floating conversion, and any on %p. Both formatters now drop
it before converting, and on Linux such a format goes to the guest
formatter. The _s forms, unmeasured, still throw.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 07:50:36 -04:00
Adrià 9149eec852 Merge pull request #11152 from thuanquang/perf/resident-page-bookkeeping
perf(libc): keep no per-page physical state for resident guest pages on Windows
2026-10-27 12:00:39 +01:00
Hedi Trigui 3d17309724 feat(libc): implement reallocarray 2026-10-27 10:46:33 +01:00
ionut27001 ead2b0ed1a fix(libc): end the scan at a q length on Linux and macOS 2026-10-27 11:24:20 +02: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 3bed136010 Merge pull request #10574 from edubox/feat/libc-mtx-init-default-name
feat(libc): export _Mtx_init_with_default_name_override
2026-10-27 21:34:30 +13:00
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 8f255109ca Merge pull request #11400 from iAbdulrrahman/feat/libc-heapsort
feat(libc): implement heapsort
2026-10-27 21:25:09 +13:00
Dean e07c21ce68 Merge pull request #11157 from janzezno/feat/agc-frame-capture-linux
feat(agc): capture and replay frames on Linux
2026-10-27 21:20:55 +13:00