On Wed, 31 Aug 2016, Torbjörn Granlund wrote: > I am (finally!) resuming work on symbol visibility for libgmp.so. 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 libgmp.so but a unit-testing convenience library (or for convenience, simply the static libgmp). > Another issue is with libgmpxx.so and its dependency on libgmp.so. As > separate shared libs, hidden symbols of libgmp.so will not be reachable > from libgmpxx.so, which of course means we cannot hide them. Also, > there will be no performance wins for any libgmpxx.so references to > libgmp.so. > > 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@GLIBC_PRIVATE, thus assign a special symver to such symbols people could check against. > (2) Put (allmost) all of libgmp.so in libgmpxx.so. 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). libgmpxx.so is really quite small -- can the C++ wrapper implementation be changed in a way to only need some additional helpers in the C libgmp.so and make it otherwise header-only? Thus drop libgmpxx.so entirely? Thanks, Richard. > I am interested in your feedback. > > -- Richard Biener <rguent...@suse.de> SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nuernberg) _______________________________________________ gmp-devel mailing list gmp-devel@gmplib.org https://gmplib.org/mailman/listinfo/gmp-devel