Documentation
¶
Overview ¶
Command symfind says whether an ELF file EXPORTS a dynamic symbol.
It answers the question a dependency argument turns on: does this library PROVIDE the function, or merely consume it? Those have opposite consequences, and a reader that does not separate them answers the wrong one confidently.
⛔ THE CASE IT WAS WRITTEN FOR. Ten projects in the go-pkgx pantry declare `gnu.org/gettext` on every platform, and on linux none of them links `libintl`. The explanation — "glibc provides gettext itself" — is the kind of thing everybody repeats and nobody checks. Measured 2026-10-28 against the registry's own glibc 2.44, with `printf` as the control:
libc.so.6: 2921 exported dynamic symbol(s) positive control: it does export printf, so an absence below is an absence gettext true · dcgettext true · dgettext true bindtextdomain true · textdomain true · ngettext true
So on linux/glibc nothing links -lintl, and GNU libintl is a darwin requirement. A declaration that does not say `darwin:` is dead weight for every linux consumer.
symfind -must printf libc.so.6 gettext dcgettext ngettext
⛔ UNDEFINED SYMBOLS ARE EXCLUDED, and that is the whole correctness of it. `libfoo.so` listing `gettext` as UNDEF means it CALLS gettext — the exact opposite of providing it. Counting those would turn "glibc provides this" into "something here mentions this", which is true of almost any library and answers nothing.