As the last of the shared GCC runtime libraries, libgnat.so and
libgnarl.so lack symbol versioning support and a defined ABI.
Currently, they use libgnat-4.5.so and libgnarl-4.5.so SONAMEs, what
libtool calls release versioning.  If the libgnat/libgnarl ABI is really
that fluent that it changes from release to release, there's obviously
no point in defining one, but given the Ada Reference Manual, I cannot
really believe this, but assume that this is just being cautious.

If one would want to go forward with defining an ABI, one could start
with the list of global symbols, as I've done in the libffi and libobjc
cases, and remove anything that is an implementation detail.  Since I
barely know any Ada, or Ada mangling, I cannot do this on my own, but
would proceed with guidance from the Ada maintainers if deemed
worthwhile.  In fact, I'd expect that it would be possible to
mechanically generate a list of public interfaces to start from from the
*.ads files, adding in some global functions from the runtime.

Suggestions, advice, discouragement :-)

        Rainer

-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University

Reply via email to