The attached patch will add symbol versioning in nettle. That would mean that software linked against nettle 3.x will be able to interoperate with libraries that are linked on a previous version of nettle (and vice versa).
You could check the new symbol names with "readelf -Ws libnettle.so" regards, Nikos
From 45adca1f634b9c3b85784b56411eeecab6113be6 Mon Sep 17 00:00:00 2001 From: Nikos Mavrogiannopoulos <[email protected]> Date: Mon, 24 Nov 2014 14:02:25 +0100 Subject: [PATCH] Added symbol versioning Signed-off-by: Nikos Mavrogiannopoulos <[email protected]> --- Makefile.in | 6 +++--- aclocal.m4 | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ configure.ac | 2 ++ libnettle.map | 12 ++++++++++++ 5 files changed, 75 insertions(+), 3 deletions(-) create mode 100644 libnettle.map diff --git a/Makefile.in b/Makefile.in index 10a58b0..afd011f 100644 --- a/Makefile.in +++ b/Makefile.in @@ -218,7 +218,7 @@ DISTFILES = $(SOURCES) $(HEADERS) getopt.h getopt_int.h \ cast128_sboxes.h desinfo.h desCode.h \ nettle-internal.h nettle-write.h \ gmp-glue.h ecc-internal.h \ - mini-gmp.h mini-gmp.c asm.m4 \ + mini-gmp.h mini-gmp.c asm.m4 ld-version-script.m4 \ nettle.texinfo nettle.info nettle.html nettle.pdf sha-example.c # Rules building static libraries @@ -244,7 +244,7 @@ libhogweed.a: $(hogweed_OBJS) # Rules building shared libraries. $(LIBNETTLE_FORLINK): $(nettle_OBJS) - $(LIBNETTLE_LINK) $(nettle_OBJS) -o $@ $(LIBNETTLE_LIBS) + $(LIBNETTLE_LINK) $(nettle_OBJS) @EXTRA_LINKER_FLAGS@ -o $@ $(LIBNETTLE_LIBS) -mkdir .lib 2>/dev/null (cd .lib \ && rm -f $(LIBNETTLE_FORLINK) \ @@ -255,7 +255,7 @@ $(LIBNETTLE_FORLINK): $(nettle_OBJS) echo nettle > libnettle.stamp $(LIBHOGWEED_FORLINK): $(hogweed_OBJS) $(LIBNETTLE_FORLINK) - $(LIBHOGWEED_LINK) $(hogweed_OBJS) -o $@ $(LIBHOGWEED_LIBS) + $(LIBHOGWEED_LINK) $(hogweed_OBJS) @EXTRA_LINKER_FLAGS@ -o $@ $(LIBHOGWEED_LIBS) -mkdir .lib 2>/dev/null (cd .lib \ && rm -f $(LIBHOGWEED_FORLINK) \ diff --git a/aclocal.m4 b/aclocal.m4 index 36daec6..4ac3ba5 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1211,3 +1211,60 @@ ac_cv_type_int_fast32_t="$ac_cv_type_int_fast32_t" ac_cv_type_intmax_t="$ac_cv_type_intmax_t" ]) ]) + +# ld-version-script.m4 serial 3 +dnl Copyright (C) 2008-2014 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Simon Josefsson + +# FIXME: The test below returns a false positive for mingw +# cross-compiles, 'local:' statements does not reduce number of +# exported symbols in a DLL. Use --disable-ld-version-script to work +# around the problem. + +# gl_LD_VERSION_SCRIPT +# -------------------- +# Check if LD supports linker scripts, and define automake conditional +# HAVE_LD_VERSION_SCRIPT if so. +AC_DEFUN([LD_VERSION_SCRIPT], +[ + AC_ARG_ENABLE([ld-version-script], + AS_HELP_STRING([--enable-ld-version-script], + [enable linker version script (default is enabled when possible)]), + [have_ld_version_script=$enableval], []) + if test -z "$have_ld_version_script"; then + AC_MSG_CHECKING([if LD -Wl,--version-script works]) + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map" + cat > conftest.map <<EOF +foo +EOF + AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], + [accepts_syntax_errors=yes], [accepts_syntax_errors=no]) + if test "$accepts_syntax_errors" = no; then + cat > conftest.map <<EOF +VERS_1 { + global: sym; +}; + +VERS_2 { + global: sym; +} VERS_1; +EOF + AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], + [have_ld_version_script=yes], [have_ld_version_script=no]) + else + have_ld_version_script=no + fi + rm -f conftest.map + LDFLAGS="$save_LDFLAGS" + AC_MSG_RESULT($have_ld_version_script) + fi + if test "$have_ld_version_script" = "yes";then + EXTRA_LINKER_FLAGS="-Wl,--version-script=\$(srcdir)/libnettle.map" + AC_SUBST(EXTRA_LINKER_FLAGS) + fi +]) diff --git a/configure.ac b/configure.ac index bb33962..46fa312 100644 --- a/configure.ac +++ b/configure.ac @@ -114,6 +114,8 @@ AC_TRY_COMPILE([],[return 0;],[IF_CXX=''], [IF_CXX='#']) AC_SUBST([IF_CXX]) AC_LANG_POP +LD_VERSION_SCRIPT + AC_PROG_MAKE_SET AC_PROG_RANLIB AC_CHECK_TOOL(NM, nm, strings) diff --git a/libnettle.map b/libnettle.map new file mode 100644 index 0000000..c1c7394 --- /dev/null +++ b/libnettle.map @@ -0,0 +1,12 @@ +# libnettle.map -- libnettle linker version script. -*- ld-script -*- + +NETTLE_3 +{ + global: + nettle_*; + _nettle_*; + + local: + *; +}; + -- 1.9.3
_______________________________________________ nettle-bugs mailing list [email protected] http://lists.lysator.liu.se/mailman/listinfo/nettle-bugs
