check-symbols: Diffs the set of symbols and versions in the library
against a reference list (which is per-MACHINE_ARCH if SYMBOLS_REF_MD is defined).
update-symref: Updates the copy of the symbol reference in the source
tree.
If symref files are committed to the tree or generated before making a
potentially disruptive change, check-symbols ensures the symbol-level
ABI changes are tracked and well understood. This is somewhat redundant
to linking with --no-undefined-version, but it works for unversioned
libraries and detects list symbols exposed by the sym_compat or
sym_default macros.
check-symbols can be called as a top-level target and traversers
subdirs. update-symref can not currently as if creates files in ways
that may be undesierable (e.g. in the tests/stdlib/dynthr_mod
subdirectory when invoked in lib/libc).
The current implementation is built on a messy set of shell tools
parsing objdump output and diff for comparison. It would benefit from
being rewritten in lua and being adjusted to provide more granular
feedback.