diff --git a/docs/dev/debt/libc.md b/docs/dev/debt/libc.md index 67ebeb3d39..d13f664d9b 100644 --- a/docs/dev/debt/libc.md +++ b/docs/dev/debt/libc.md @@ -90,6 +90,7 @@ ### Functional +- [Math.cpp](../../../core/libs/prx/libc/src/Math.cpp) (libc) and [SignalList.cpp](../../../core/libs/prx/libSceLibcInternal/SignalList.cpp) (libSceLibcInternal) start with comments that keep the upstream FreeBSD, Sun Microsystems and University of California licence notices of the code they are derived from. The licences require the notices to stay with the code, so they are comments although they are not technical debt, and the conventions check cannot tell them from other comments. Closes when: the conventions check accepts licence notices without a debt entry - [_Cosh](../../../core/libs/prx/libc/src/Math.cpp) (libc) follows the two-argument Dinkumware CRT helper used by `std::complex`, including a scaled large-finite-input path; the signature, exact result and floating-point exception behavior are not verified against the console. - [std::thread::hardware_concurrency](../../../core/libs/prx/libc/src/Threads.cpp) (libc, NID `CHrhwd8QSBs`) returns the host's `std::thread::hardware_concurrency()` (which may be 0 when unknown) instead of the console's count. The system `libSceLibcInternal` of PS5 firmware 13.60 returns the number of bits in the calling thread's `scePthreadGetaffinity` mask: 5 in a payload process whose main and second threads both had mask `0xea00`, while `hw.ncpu` and `_SC_NPROCESSORS_ONLN` read 16 and `sceKernelGetAvailableCpumask` `0x1fff`. Whether it follows a later affinity change was not measured, since `scePthreadSetaffinity` returned `0x80020001` there. libc has no way to read the libkernel mask yet. PPSA34015 imports it - [fmodf](../../../core/libs/prx/libc/src/Math.cpp) (libc) - console `errno`, exception flags and NaN payloads remain unverified. The wrapper preserves `errno` like the existing double `fmod`, following FreeBSD 11.4 [`e_fmodf.c`](https://github.com/freebsd/freebsd-src/blob/release/11.4.0/lib/msun/src/e_fmodf.c); host `std::fmod` still supplies the result and exception flags.