PLEASE READ ALL OF THIS FILE, ESPECIALLY IF YOU ARE DEFINING A NEW
PUBLIC HEADER IN LIBABIGAIL.

How symbols that are exported are controlled in libabigail
==========================================================

We try to limit the number of ELF symbols that are exported by the
libabigail.so shared library.  We call this symbols visibility
control.

As GNU/Linux is our development platform, we control symbol visibility
by using the visibility support of the G++ compiler.

How to do so is properly explained at https://gcc.gnu.org/wiki/Visibility.

All symbols are hidden by default
=================================

When building translation units that make up the libabigail.so shared
library, G++ is invoked with the -fvisibility=hidden directive.  Which
instructs it to make symbols of functions and global variables
*locally* defined in the shared library, *NOT* exported (or global).

Exporting symbols of entities declared in public headers
========================================================

In a translation unit that is part of the libabigail.so shared
library, before including a header file that is a public libabigail
header (e.g, abg-ir.h), one need to declare:

    #include "abg-internal.h"
    ABG_BEGIN_EXPORT_DECLARATIONS

then all the public header files inclusion (using #include directives)
follow.  At the end of these public header files inclusion, one need
to declare:

    ABG_END_EXPORT_DECLARATIONS


The ABG_BEGIN_EXPORT_DECLARATIONS is a macro defined in abg-internal.h
which expands to:

    #pragma GCC visibility push(default)

This instructs G++ to export the symbol of all global functions and
variables definitions that are declared from that point on.

The ABG_END_EXPORT_DECLARATIONS is a macro defined in abg-internal.h
which expands to:

    #pragma GCC visibility pop

It instructs G++ to stop exporting symbols of global functions and
variable definition from that point on.

In practice, the pair ABG_BEGIN_EXPORT_DECLARATIONS,
ABG_END_EXPORT_DECLARATIONS allows us to only export symbols of
global functions and variables declared in the block denoted by these
two macros. Symbols of anything else that is declared outside of that block
are going to be hidden, thanks to the -fvisibility=hidden option
passed to G++.

So whenever you are defining a new header file with declarations that
ought to be part of the API of libabigail, the *definition* file which
defines the declarations of the header file must use
the ABG_BEGIN_EXPORT_DECLARATIONS and ABG_END_EXPORT_DECLARATIONS
macro to include the public header.
