sceKernelTruncate's status query fails with too_many_symbolic_link_levels for a link loop and filename_too_long for an over-long name, and the call answered ENOENT for both. It now returns ELOOP or ENAMETOOLONG through PathLookupFailure, and truncate sets the same errno.
#6648 taught open, unlink and stat to report a symbolic link loop and an over-long name, but sceKernelMkdir and sceKernelRmdir still lost them: their std::filesystem queries fail with filename_too_long or too_many_symbolic_link_levels and the code went on to ENOENT, EIO or ENOTDIR. A PathLookupFailure check after those queries now returns the guest error (ELOOP 62, ENAMETOOLONG 63) as FreeBSD's namei does, and the POSIX wrappers set the same errno. guest_path_errors covers the open, unlink, stat, rename, mkdir and rmdir paths with a self-referencing link, a two-link cycle, a 300-byte name and each as a path prefix; it is UNIX-only because it creates symbolic links.
Checks the floor and caps, that more memory used outside the texture
caches never raises the budget, and that a budget above the floor
leaves room for the live sampled textures plus an eighth of the budget,
on 2-32 GiB heaps.
Co-authored-by: JJenkx <[email protected]>
StorageTextureBudget reserved the larger of the sampled textures alive
and their 2 GiB floor. The sampled budget already reserves
TextureCacheBudget, at least the storage cap, for the storage cache, so
on an 8 GB card the two caches each kept the other's maximum: with
3936 MiB used outside the caches on a 7189 MiB budget and 49 MiB of
sampled textures, the storage budget came out at 306 MiB and sat at its
512 MiB floor while about 2.7 GB of the budget stayed free.
The storage budget now reserves the sampled textures alive and gives
room back as they grow, at its next read. Where they hold 2 GiB or more
the budget is unchanged.
GLSL Fma is not required to be fused: llvmpipe splits it into a
multiply and an add, so the residual came out 0 and ties fell back to
round-to-even of the rounded product. Split both factors (Veltkamp,
4097) and sum the partial products with correctly rounded operations
only, every one NoContraction, so the error is exact on every device.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_016TuDcnUv4yXWYDS6ZUqCdG
FreeBSD 11.4 kern_renameat looks up the source first (namei on fromnd),
so a missing or dot source fails with ENOENT or EINVAL before the new
name is touched. The guest call rejected a NULL, empty or dot destination
first, so rename(missing, NULL) returned EFAULT and rename(missing, ".")
returned EINVAL where FreeBSD returns ENOENT.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
A YAML comment line such as '# python3 tools/tests/test_x.py' counted as a run, because only a comment after a space was stripped. Skip lines whose first non-blank character is '#', also inside run blocks, and strip a trailing comment after any whitespace.
check_test_registration.py only audits built test executables, so a Python test that no add_test or workflow names is silently skipped. Add a --scripts mode that lists the tracked test_*.py scripts and fails for any not run by an add_test of a CMakeLists or a python step of a workflow, and register it as a ctest so the relinker builds run it.