[Bugs] [Bug 1160709] libgfapi: use versioned symbols in libgfapi.so for compatibility

bugzilla at redhat.com bugzilla at redhat.com
Mon Jan 12 17:16:13 UTC 2015


https://bugzilla.redhat.com/show_bug.cgi?id=1160709



--- Comment #20 from Anand Avati <aavati at redhat.com> ---
COMMIT: http://review.gluster.org/9143 committed in master by Shyamsundar
Ranganathan (srangana at redhat.com) 
------
commit c49a77001bd80affa70d22ba974d8de9e3f0f0cd
Author: Kaleb S. KEITHLEY <kkeithle at redhat.com>
Date:   Tue Nov 18 11:08:16 2014 -0500

    api: versioned symbols in libgfapi.so for compatibility

    Use versioned symbols to keep libgfapi at libgfapi.so.0.0.0

    Revisited to address broken build on Mac OS X

    See http://review.gluster.org/9036

    Rebased to include http://review.gluster.org/#/c/9376/ (glfs_resolve())
    but note that gerrit's "Rebase Change" couldn't do it.

    N.B. noticed that glfs_get_volumeid() decl in glfs.h was missing
    the __THROW, added it.

    On systems using ELF and the GNU toolchain, symbol versions are created
    with a .symver asm operand in the .c source file. Clang is claimed to
    be compatible with gcc, so we'll pretend for now that this also works
    with clang.

    On Mac OS X, aliases are created with __asm "magic" in the .h header
    file. In the normal case, when both the decl and defn match, that's
    all that's needed. In our case though the decl and defn don't match ---
    we have, e.g. a defn such as 'int glfs_foo(...)' and the corresponding
    decl is 'int pub_glfs_foo(...)'. To make this work we create the necessary
    aliases in the library at link time with the -alias_list link option.

    Note that this results in there being pairs of symbols in the .dylib,
    e.g. _pub_glfs_foo and _glfs_foo$GFAPI_3.4.0. We could use another
    link option, -unexported_symbols_list to elide the _pub_glfs_* symbols.
    (And we probably should.)

    Linux symbol versioning was essentially copied from Solaris; in general
    I would expect this to "just work" on Solaris, but until someone tries
    we don't really know.

    Change-Id: Icb96a3c2d80be7b6d7a6849bb9168f03a947f47c
    BUG: 1160709
    Signed-off-by: Kaleb S. KEITHLEY <kkeithle at redhat.com>
    Reviewed-on: http://review.gluster.org/9143
    Tested-by: Gluster Build System <jenkins at build.gluster.com>
    Reviewed-by: Niels de Vos <ndevos at redhat.com>
    Reviewed-by: Shyamsundar Ranganathan <srangana at redhat.com>

-- 
You are receiving this mail because:
You are on the CC list for the bug.
Unsubscribe from this bug https://bugzilla.redhat.com/token.cgi?t=eRPCb3qwZX&a=cc_unsubscribe


More information about the Bugs mailing list