From 43e5f286b37f56d1b2027392e5ad647878999584 Mon Sep 17 00:00:00 2001 From: Matthew Stanley <1379tech@gmail.com> Date: Tue, 14 Jul 2026 10:08:59 -0700 Subject: [PATCH] overlay: add opt-in cache inventory telemetry Adapted from NyperYuhgard's PR #13. Co-authored-by: NyperYuhgard <93950153+NyperYuhgard@users.noreply.github.com> --- .../upstream/pr13-overlay-cache-inventory.md | 9 +++++++++ runtime/src/overlay_loader.c | 17 +++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 docs/internal/upstream/pr13-overlay-cache-inventory.md diff --git a/docs/internal/upstream/pr13-overlay-cache-inventory.md b/docs/internal/upstream/pr13-overlay-cache-inventory.md new file mode 100644 index 000000000..d283c61ec --- /dev/null +++ b/docs/internal/upstream/pr13-overlay-cache-inventory.md @@ -0,0 +1,9 @@ +# PR #13 overlay-cache inventory provenance + +Parked from NyperYuhgard's PSXrecomp PR #13, commit +[`b49548e7b8f494c9584eb09039a8c325d7375b46`](https://github.com/mstan/psxrecomp/commit/b49548e7b8f494c9584eb09039a8c325d7375b46). + +Set `PSX_OVERLAY_CACHE_INVENTORY=1` to print every indexed native overlay shard +after a cache scan. The upstream change printed unconditionally; this adaptation +keeps current master's no-routine-stderr policy by making the diagnostic opt-in. +FPS telemetry from the same upstream commit is parked separately. diff --git a/runtime/src/overlay_loader.c b/runtime/src/overlay_loader.c index 284e7aa62..b6d552aba 100644 --- a/runtime/src/overlay_loader.c +++ b/runtime/src/overlay_loader.c @@ -1348,6 +1348,23 @@ static void scan_cache_dir(void) { warn_on_cgtag_mismatch("gcc"); warn_on_cgtag_mismatch("tcc"); } + + /* Opt-in startup/rescan inventory from PR #13. Current master deliberately + * keeps routine loader events off stderr, so retain that policy unless the + * operator explicitly requests the diagnostic. */ + const char *inventory = getenv("PSX_OVERLAY_CACHE_INVENTORY"); + if (inventory && *inventory && *inventory != '0') { + fprintf(stderr, "overlay cache scan: %d shared library file(s) indexed " + "[arch=%s]\n", s_cache_idx_count, PSX_OVERLAY_ARCH_ABI); + for (int i = 0; i < s_cache_idx_count; i++) { + const char *base = strrchr(s_cache_idx[i].path, '/'); + base = base ? base + 1 : s_cache_idx[i].path; + fprintf(stderr, " [%d] %s (region=0x%08X, functions=%d)\n", + i, base, s_cache_idx[i].region_start, + s_cache_idx[i].indexed_func_count); + } + fflush(stderr); + } } /* ---- Persisted sljit shard cache (Stage 2, SLJIT_PERSIST_CACHE.md) -------- */