Detailed symbols.map

Stephen M. Webb stephen.webb at canonical.com
Wed Aug 26 10:24:38 UTC 2015


On Wed, Aug 26, 2015 at 5:40 AM, Daniel van Vugt
<daniel.van.vugt at canonical.com> wrote:
> I guess the way we want to and should maintain ABIs is that the contents of
> a stanza MIR_SERVER_N { } never changes (although you can always add a new
> stanza MIR_SERVER_N+1 with changes). So store a historical copy of existing
> "ABIs" such as MIR_SERVER_N and compare to make sure its contents never
> change (if still present at all).

That's how libstdc++ does it, and they've done a pretty good job of
maintaining ABI copatibility for about 15 years (GCC-5
notwithstanding: sometimes you just have to break ABI).  This has to
be done in conjunction with an additional check tool, though, which is
why a symbols version file is used in the sources *and*
dpkg-gensymbols is used in the packaging on Debian-based systems.
Libstdc++ actually uses its own tool during the build to look for
missing symbol changes at build time.

This is a false security, though, because most of the insidious ABI
changes do not show up as symbol name changes.



More information about the Mir-devel mailing list