D248 - Imports are encoded with global binding
Status: decided Date: 2026-09-26
The probe declares platform functions OBS_WEAK in C so
an absent symbol is null rather than a link error, but the module writer
(in selfish) re-encodes each import's binding as STB_GLOBAL
when it re-encodes the type as STT_FUNC.
Why: a STB_WEAK undefined import tells
a loader not to resolve it if resolution costs anything, so libraries
that were mapped bound nothing. The weak binding is a compile-time need
and belongs in the C, not in the module. Six symbols the platform lacks
stay null and their checks skip, which is the outcome weak was chosen to
give.
Rejected: carrying the weak binding into the module - fourteen imports the console had went unbound.