]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
ITS#5365 - Add support for symbol versioning libldap and lilber
authorQuanah Gibson-Mount <quanah@openldap.org>
Tue, 23 Mar 2021 19:46:22 +0000 (19:46 +0000)
committerQuanah Gibson-Mount <quanah@openldap.org>
Mon, 29 Mar 2021 18:11:00 +0000 (18:11 +0000)
build/top.mk
build/version.sh
configure.ac
libraries/liblber/Makefile.in
libraries/liblber/liblber.vers.in [new file with mode: 0644]
libraries/libldap/Makefile.in
libraries/libldap/libldap.vers.in [new file with mode: 0644]

index f542ded3c4872fea18f1cce4ec019d404a222f81..99f3e623b3f5f40d9cea0fe81c298e9b9fc16913 100644 (file)
@@ -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
index 4d182b55bc58b19556ee5f7e2fedfdacfd426622..923518006dec34870783c1fae7818c1a0baea01c 100755 (executable)
@@ -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
 
index c648b7943b89340fcce3f5debb9cc88b77ea5a90..67b63fe2fc8d2da28c6c2d0756db248948dfdb58 100644 (file)
@@ -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]
index 22478687621e0ccb27de5d4a349c1e18b029cbe2..b19284aabeee6342dcc48cd7939c74cc362706d4 100644 (file)
@@ -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 (file)
index 0000000..104b860
--- /dev/null
@@ -0,0 +1,17 @@
+HIDDEN
+{
+  local:
+    __*;
+    _rest*;
+    _save*;
+};
+
+OPENLDAP_@OPENLDAP_LIBRELEASE@
+{
+  global:
+    ber_*;
+    der_alloc*;
+    lutil_*;
+  local: *;
+};
+
index 206fe8276bb9caa6eca7917ca0aaf71214284121..c37c83ddaa2d957f4e8a6810ca7f30c15939327f 100644 (file)
@@ -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 (file)
index 0000000..3a9ad89
--- /dev/null
@@ -0,0 +1,16 @@
+HIDDEN
+{
+  local:
+    __*;
+    _rest*;
+    _save*;
+};
+
+OPENLDAP_@OPENLDAP_LIBRELEASE@
+{
+  global:
+    ldap_*;
+    ldif_*;
+  local: *;
+};
+