8. Coverage: 312 names are still presence-only
The largest single item, and the least interesting per unit of effort. A hundred and one checks invoke something; three hundred and twelve censused names only prove a symbol resolves.
And under one loader that claim is weaker than it looks. shadPS4 resolves every import through a generic stub, so all 312 report present while roughly forty per cent behave. Presence measures the loader's stubbing policy as much as the platform (D061). An existence test cannot see a behaviour bug, and behaviour bugs are what emulators have - that is settled (D045), so the remainder is grind rather than argument.
The conversion is mechanical now and the shape is fixed:
- Move the name out of the census in
surface.hinto a real declaration inplatform.h(the census declares names asconst charso the type system forbids calling them, which means a name cannot be in both). - Add it to
src/probe/imports.csomkmodulecan place it in a library. - Add it to
data/surface.txt's@called-elsewhereblock, or regenerating puts it back and the build breaks on the duplicate declaration. - Write the check with
OBS_FROM_SPECif ISO C or POSIX settles it. - Run it on the host first. Twice now the host build
has caught a check that was wrong rather than the platform - a
fmodprobe whose two inputs gave the same answer, and a set of checks ordered before the capability they required. A check that has not passed a known-good implementation is not evidence of anything.
Worth doing opportunistically rather than exhaustively. Nineteen of twenty-seven functions probed so far are stubs, so most new checks against the current emulators will report "still a stub" - real coverage, no new information. A hardware run will reorder which of these are worth having.