From: Quanah Gibson-Mount Date: Tue, 23 Mar 2021 19:46:22 +0000 (+0000) Subject: ITS#5365 - Add support for symbol versioning libldap and lilber X-Git-Tag: OPENLDAP_REL_ENG_2_5_3BETA~3^2~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=38d1ac044928e4899ba996692f75dd6f6fc0d1e8;p=thirdparty%2Fopenldap.git ITS#5365 - Add support for symbol versioning libldap and lilber --- diff --git a/build/top.mk b/build/top.mk index f542ded3c4..99f3e623b3 100644 --- a/build/top.mk +++ b/build/top.mk @@ -104,6 +104,9 @@ LTFLAGS_MOD = $(@PLAT@_LTFLAGS_MOD) # LINK_LIBS referenced in library and module link commands. LINK_LIBS = $(MOD_LIBS) $(@PLAT@_LINK_LIBS) +# compiler options for versioned library symbol support +OL_VERSIONED_SYMBOLS = @OL_VERSIONED_SYMBOLS@ + LTSTATIC = @LTSTATIC@ LTLINK = $(LIBTOOL) --mode=link \ @@ -113,7 +116,7 @@ LTCOMPILE_LIB = $(LIBTOOL) $(LTONLY_LIB) --mode=compile \ $(CC) $(LT_CFLAGS) $(LT_CPPFLAGS) $(LIB_DEFS) -c LTLINK_LIB = $(LIBTOOL) $(LTONLY_LIB) --mode=link \ - $(CC) $(LT_CFLAGS) $(LDFLAGS) $(LTFLAGS_LIB) + $(CC) $(LT_CFLAGS) $(LDFLAGS) $(LTFLAGS_LIB) $(SYMBOL_VERSION_FLAGS) LTCOMPILE_MOD = $(LIBTOOL) $(LTONLY_MOD) --mode=compile \ $(CC) $(LT_CFLAGS) $(LT_CPPFLAGS) $(MOD_DEFS) -c diff --git a/build/version.sh b/build/version.sh index 4d182b55bc..923518006d 100755 --- a/build/version.sh +++ b/build/version.sh @@ -22,11 +22,11 @@ if test $ol_patch != X ; then ol_type=Release elif test $ol_minor != X ; then ol_version=${ol_major}.${ol_minor}.${ol_patch} - ol_api_lib_release=${ol_major}.${ol_minor}-releng + ol_api_lib_release=${ol_major}.${ol_minor}.releng ol_type=Engineering else ol_version=${ol_major}.${ol_minor} - ol_api_lib_release=${ol_major}-devel + ol_api_lib_release=${ol_major}.devel ol_type=Devel fi diff --git a/configure.ac b/configure.ac index c648b7943b..67b63fe2fc 100644 --- a/configure.ac +++ b/configure.ac @@ -440,7 +440,8 @@ AC_ARG_ENABLE(xxliboptions,[ Library Generation & Linking Options]) AC_ENABLE_STATIC AC_ENABLE_SHARED - +OL_ARG_ENABLE(versioning, [AS_HELP_STRING([--enable-versioning], [Enable versioned symbols in shared library])], + auto, [no yes auto]) dnl ---------------------------------------------------------------- dnl Validate options dnl ---------------------------------------------------------------- @@ -3072,6 +3073,18 @@ if test "$ol_enable_slapi" != no ; then SLAPD_SLAPI_DEPEND=libslapi.a fi +OL_VERSIONED_SYMBOLS="" +if test $ol_enable_versioning != no; then + LDVS=`$LD --help < /dev/null 2>/dev/null | grep version-script` + if test -z "$LDVS"; then + if test $ol_enable_versioning = "yes" ; then + AC_MSG_ERROR([Library symbol versioning requested but not supported]) + fi + else + OL_VERSIONED_SYMBOLS="-Wl,--version-script=" + fi +fi + dnl ---------------------------------------------------------------- dnl @@ -3094,6 +3107,7 @@ AC_SUBST(WITH_MODULES_ENABLED) AC_SUBST(WITH_ACI_ENABLED) AC_SUBST(BUILD_THREAD) AC_SUBST(BUILD_LIBS_DYNAMIC) +AC_SUBST(OL_VERSIONED_SYMBOLS) AC_SUBST(BUILD_SLAPD) dnl slapi @@ -3212,8 +3226,10 @@ AC_CONFIG_FILES([Makefile:build/top.mk:Makefile.in:build/dir.mk] [libraries/Makefile:build/top.mk:libraries/Makefile.in:build/dir.mk] [libraries/liblber/Makefile:build/top.mk:libraries/liblber/Makefile.in:build/lib.mk:build/lib-shared.mk] [libraries/liblber/lber.pc] +[libraries/liblber/liblber.vers] [libraries/libldap/Makefile:build/top.mk:libraries/libldap/Makefile.in:build/lib.mk:build/lib-shared.mk] [libraries/libldap/ldap.pc] +[libraries/libldap/libldap.vers] [libraries/liblunicode/Makefile:build/top.mk:libraries/liblunicode/Makefile.in:build/lib.mk:build/lib-static.mk] [libraries/liblutil/Makefile:build/top.mk:libraries/liblutil/Makefile.in:build/lib.mk:build/lib-static.mk] [libraries/librewrite/Makefile:build/top.mk:libraries/librewrite/Makefile.in:build/lib.mk:build/lib-static.mk] diff --git a/libraries/liblber/Makefile.in b/libraries/liblber/Makefile.in index 2247868762..b19284aabe 100644 --- a/libraries/liblber/Makefile.in +++ b/libraries/liblber/Makefile.in @@ -38,6 +38,9 @@ XLIBS = $(LIBRARY) $(LDAP_LIBLUTIL_A) XXLIBS = NT_LINK_LIBS = $(AC_LIBS) UNIX_LINK_LIBS = $(AC_LIBS) +ifneq (,$(OL_VERSIONED_SYMBOLS)) + SYMBOL_VERSION_FLAGS=$(OL_VERSIONED_SYMBOLS)$(LDAP_LIBDIR)/liblber/liblber.vers +endif dtest: $(XLIBS) dtest.o $(LTLINK) -o $@ dtest.o $(LIBS) diff --git a/libraries/liblber/liblber.vers.in b/libraries/liblber/liblber.vers.in new file mode 100644 index 0000000000..104b860a24 --- /dev/null +++ b/libraries/liblber/liblber.vers.in @@ -0,0 +1,17 @@ +HIDDEN +{ + local: + __*; + _rest*; + _save*; +}; + +OPENLDAP_@OPENLDAP_LIBRELEASE@ +{ + global: + ber_*; + der_alloc*; + lutil_*; + local: *; +}; + diff --git a/libraries/libldap/Makefile.in b/libraries/libldap/Makefile.in index 206fe8276b..c37c83ddaa 100644 --- a/libraries/libldap/Makefile.in +++ b/libraries/libldap/Makefile.in @@ -58,6 +58,9 @@ XLIBS = $(LIBRARY) $(LDAP_LIBLBER_LA) $(LDAP_LIBLUTIL_A) XXLIBS = $(SECURITY_LIBS) $(LUTIL_LIBS) NT_LINK_LIBS = $(LDAP_LIBLBER_LA) $(AC_LIBS) $(SECURITY_LIBS) UNIX_LINK_LIBS = $(LDAP_LIBLBER_LA) $(AC_LIBS) $(SECURITY_LIBS) $(LTHREAD_LIBS) +ifneq (,$(OL_VERSIONED_SYMBOLS)) + SYMBOL_VERSION_FLAGS=$(OL_VERSIONED_SYMBOLS)$(LDAP_LIBDIR)/libldap/libldap.vers +endif apitest: $(XLIBS) apitest.o $(LTLINK) -o $@ apitest.o $(LIBS) diff --git a/libraries/libldap/libldap.vers.in b/libraries/libldap/libldap.vers.in new file mode 100644 index 0000000000..3a9ad893c2 --- /dev/null +++ b/libraries/libldap/libldap.vers.in @@ -0,0 +1,16 @@ +HIDDEN +{ + local: + __*; + _rest*; + _save*; +}; + +OPENLDAP_@OPENLDAP_LIBRELEASE@ +{ + global: + ldap_*; + ldif_*; + local: *; +}; +