D246 - A placeholder in a symbol field is not a symbol

status: decided

The census writes (census) where a symbol name would go, because its checks are about a library rather than about any one name. Those rows reached the import walk and reported linked, since the address in the row is the census check's own guard.

Every library then appeared to bind two imports. libScePad showed five rows - three real and unbound, two placeholders and "bound" - and that reads as some symbols of this library bind and some do not, which is a per-symbol defect and a completely different search from a per-library one. It cost a wrong hypothesis about NID hashing.

Told apart by the ABI's own rule rather than by a section id: a symbol name is a C identifier, so a bracket or a space in that field means it is prose. A section-id test would silently stop working the day a section was renamed.

With placeholders gone the finding is unambiguous: libkernel and libSceLibcInternal bind every import; every other declared library binds none.