GMP work on symbol visibility

Richard Biener rguenther at
Thu Sep 1 07:28:34 UTC 2016

On Wed, 31 Aug 2016, Torbjörn Granlund wrote:

> I am (finally!) resuming work on symbol visibility for  This
> means that internal references will no longer be indirect through PLT or
> GOT, allowing the shared library to run as fast as the static library.

Great!  (maybe also add symbol versions at the same time?)

> There are several complex issues I need to understand and resolve.  One
> issue is how to handle (unit) testing of hidden functions.  I will
> probably resolve that with alias symbols such as foo_for_testing as an
> alias for foo.

I think unit-testing of internal functions should not be using the
public but a unit-testing convenience library (or for
convenience, simply the static libgmp).

> Another issue is with and its dependency on  As
> separate shared libs, hidden symbols of will not be reachable
> from, which of course means we cannot hide them.  Also,
> there will be no performance wins for any references to
> I see two solutions:
> (1) If we really want to discourage external use, arrange an alias to
> something wierd, making libgmpxx reach the symbol foo as fuckhead_foo.

glibc uses sth like symbol at GLIBC_PRIVATE, thus assign a special
symver to such symbols people could check against.

> (2) Put (allmost) all of in  This gives the best
> performance.

(3) Re-design the C++ interface to only use public parts of the API
(I have no idea and did not check where/why it uses private parts)

(4) Make the private parts the C++ interface uses public

I do not like (2) very much and prefer (3)/(4) over (1).  But if it
has to be then go with (1). is really quite small -- can the C++ wrapper implementation
be changed in a way to only need some additional helpers in the C and make it otherwise header-only?  Thus drop


> I am interested in your feedback.

Richard Biener <rguenther at>
SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nuernberg)

More information about the gmp-devel mailing list