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.
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.
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.
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.
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.
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.
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.
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.
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.
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.