Commit Graph
69 Commits
Author SHA1 Message Date
Dean Galvin 9a28ce6960 Merge branch 'main' 2026-11-06 14:39:20 +13:00
Dean Galvin 016922d70f Merge branch 'main' 2026-11-06 13:54:27 +13:00
Dean Galvin 24ff9c600e Merge branch 'main' 2026-11-06 12:35:44 +13:00
Dean Galvin 8a7d525474 Merge branch 'main' 2026-11-06 12:35:44 +13:00
Dean Galvin 07ae53d85c Merge branch 'main' 2026-11-06 12:35:44 +13:00
Maz 5bb2a1d1e5 fix(libc): drop collate all-zero loop and restore SPIRV pins 2026-11-05 12:41:23 +04:00
Maz b3add985c2 fix(libc): restore separate GuestLocale vtable helpers 2026-11-05 12:41:23 +04:00
Maz 05ddcfc257 feat(libc): export the numpunct facet vtable as data
Titles that resolve lJnP-cn0cvQ as data need an 88-byte object matching console title libc.prx.
2026-11-05 12:41:23 +04:00
Maz 495c7a070b fix(libc): drop collate all-zero loop after functional checks 2026-11-05 12:41:16 +04:00
Maz 77ae839cf7 fix(libc): restore separate GuestLocale vtable helpers 2026-11-05 12:41:16 +04:00
Maz e5e1f79a43 feat(libc): export the messages facet vtable as data
Titles that resolve messages<char>'s vtable as data need a 72-byte
object matching title libc.prx (PPSA26344).
2026-11-05 12:41:16 +04:00
Maz ef8d4ecf7c feat(libc): export the money_get facet vtable as data
Titles resolve NID 3n3wCJGFP7o as a 64-byte STT_OBJECT on console
libc.prx; export eight zeroed uintptr_t slots so the data binding
matches. Facet calls through the object still fault until methods
are wired.
2026-11-05 12:40:56 +04:00
Maz c6b15ab911 feat(libc): export the time_put facet vtable as data
Titles resolve NID OwfBD-2nhJQ as a 56-byte STT_OBJECT on console
libc.prx; export seven zeroed uintptr_t slots so the data binding
matches. Facet calls through the object still fault until methods
are wired; _Getcat keeps using g_timePutVtable.
2026-11-05 12:40:56 +04:00
Maz a77ce5504b feat(libc): export the time_put facet vtable as data
Titles resolve NID OwfBD-2nhJQ as a 56-byte STT_OBJECT on console
libc.prx; export seven zeroed uintptr_t slots so the data binding
matches. Facet calls through the object still fault until methods
are wired; _Getcat keeps using g_timePutVtable.
2026-11-05 12:40:50 +04:00
Maz fffef0a07c fix(libc): drop collate all-zero loop after functional checks 2026-11-04 16:37:44 +04:00
Maz d7ad8fbd97 fix(libc): share codecvt vtable slot count with GuestLocale 2026-11-04 16:37:44 +04:00
Maz 3d69b6fb91 fix(libc): restore separate GuestLocale vtable helpers 2026-11-04 16:37:44 +04:00
Maz 1b80cfbd0a fix(libc): size the codecvt facet vtable to 104 bytes
Console title libc.prx (PPSA26344) and libSceLibcInternal export aK1Ymf-NhAs as STT_OBJECT st_size 104; the previous sixteen-slot export was three entries long.
2026-11-04 16:37:43 +04:00
Dean ce1de8bdf6 Merge pull request #11793 from edubox/feat/libc-collate-transform
feat(libc): implement std::collate<char>::transform
2026-11-04 17:49:31 +13:00
Dean 82b8f735e1 Merge pull request #9761 from mazen320/feat/libc-ctype-w-vtable
feat(libc): export the wide ctype facet vtable as data
2026-11-04 16:58:31 +13:00
Maz eaf89ed901 fix(libc): restore separate GuestLocale vtable helpers 2026-11-02 15:50:55 +04:00
Maz 965ea2eaa8 feat(libc): export the wide ctype facet vtable as data
Titles that import ctype<wchar_t>'s vtable as a 144-byte object need the eighteen-slot STT_OBJECT measured on PPSA16833 libc.prx.
2026-11-02 15:50:55 +04:00
edubox a9017c5515 feat(libc): implement std::collate<char>::transform 2026-11-02 01:02:55 +01:00
Eduardo Ruiz 014001a2d0 fix(libc): keep numpunct<wchar_t> grouping narrow 2026-11-01 13:02:23 +01:00
edubox 071cb1f704 feat(libc): export std::numpunct<wchar_t> id and _Getcat 2026-11-01 13:02:23 +01:00
Maz a840d2f9e7 fix(libc): restore separate GuestLocale vtable helpers 2026-10-27 15:06:56 +04:00
Maz d4a25e115a feat(libc): export the ctype facet vtable as data
Titles that import ctype<char>'s vtable as a 112-byte object need the fourteen-slot STT_OBJECT measured on PPSA16833 libc.prx.
2026-10-27 15:06:56 +04: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 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 e95e81d96a Merge pull request #11233 from edubox/feat/libc-setprecision
feat(libc): export std::setprecision(int)
2026-10-27 10:40:17 +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
Maz 13f46081e5 fix(libc): share num_put vtable slot count with GuestLocale 2026-10-26 16:42:43 +04:00
Maz 3e4b36ac6a fix(libc): restore separate GuestLocale vtable helpers 2026-10-26 16:42:43 +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à FranchandClaude Sonnet 5.5 27dd861fa3 test(libc): close CheckFacetGetcat before the wide num_get vtable check
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-26 11:37:08 +01: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à 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 36df54b472 Merge pull request #10387 from JJenkx/windows/libc-ctype-console-masks
fix(libc): return the console's class bits from the ctype functions
2026-10-26 14:28:15 +13:00
Eduardo Ruiz 93b0c59870 feat(libc): export std::setprecision(int)
Dinkumware's setprecision returns the same two-register manipulator as setw: the function pointer in RAX and the precision value in RDX. The function stores the argument at ios_base offset 0x1c, leaving flags and width alone.

Disassembled from the libc.prx bundled in PPSA02530's sce_module, where _ZSt12setprecisioni (NID 1h8hFQghR7w) returns a pointer to 'mov %esi,0x1c(%rdi); ret' and has the same 10-byte export shape as _ZSt4setwi. Negative and zero values are stored unchanged; a null stream throws.
2026-10-25 23:19:11 +01:00
Disaster c66f61ff52 feat(libc): wire the collate<char> facet vtable
The nine-slot _ZTVSt7collateIcE export added by #9979 was still zeroed, so a guest that called through the exported vtable faulted. Fill slots 2 through 8 with the same facet methods that g_collateVtable uses, leave the offset-to-top and typeinfo slots zero, and cover compare, transform, hash, retain and release through the exported object.
2026-10-25 23:21:45 +03:00
Maz 0071bf26f6 fix(libc): restore separate GuestLocale time_get helpers 2026-10-26 00:02:16 +04:00
Maz a48a417101 fix(libc): keep char and wide time_get vtables after rebase 2026-10-26 00:02:16 +04:00
Maz bd6406392f feat(libc): export the wide time_get facet vtable as data 2026-10-26 00:02:15 +04:00
verusferro 1d31901c4b feat(libc): format num_put<char>::do_put as the console's libc does
The num_put facet's eight do_put overloads build the console's printf format from the stream flags, format through snprintf and lay out the result as the SDK libc.prx does: thousands separators from the stream locale's numpunct, its decimal point, fill and width with left, right and internal adjustment, true and false names under boolalpha, and the console's prefix and infinity rules for floating point.
2026-10-25 19:19:16 +03:00
verusferro 3338ffefff feat(libc): format time_put<char>::do_put as the console's libc does
The time_put facet's do_put formats % with the modifier and conversion through strftime and writes the result through the output iterator's stream buffer, following the SDK libc.prx: it stores into the put area while room remains, calls overflow otherwise, and marks the iterator failed when overflow returns eof or the buffer is null.
2026-10-25 19:18:04 +03:00
Adrià Franch 159a6f4407 test(libc): close CheckFacetGetcat before the time_get vtable check 2026-10-25 15:20:11 +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
boykopovar 53a65ec210 fix(sdk): sync declarations with latest main 2026-10-24 23:17:48 +03:00
boykopovar f38d29fd08 refactor(sdk): add canonical headers for remaining libraries 2026-10-24 23:17:42 +03:00
Maz 2f94984276 feat(libc): export the collate facet vtable as data
Titles that resolve collate<char>'s vtable as an object need a 72-byte export matching console libc.prx (PPSA16833).
2026-10-24 21:49:15 +04:00