Author: jerry Date: 2007-07-03 20:00:02 +0000 (Tue, 03 Jul 2007) New Revision: 23690
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=23690 Log: Squashed commit of the following: commit 0d4bbd197198a94bf4e29e0ccd175a40a60097f3 Author: Gerald (Jerry) Carter <[EMAIL PROTECTED]> Date: Mon Jul 2 20:08:19 2007 -0500 Introduce GNU ld linker export-script for hiding non-public symbols in shared libraries. Based on initial patch from Julien Cristau <[EMAIL PROTECTED]> and suggestions from James Peach <[EMAIL PROTECTED]>. Currently the libsmbsharemodes libraries still exports *. Signed off on my Derrell as well. Added: branches/SAMBA_3_0_26/source/exports/ branches/SAMBA_3_0_26/source/exports/libsmbclient.syms branches/SAMBA_3_0_26/source/exports/libsmbsharemodes.syms branches/SAMBA_3_0_26/source/library-versions.in Modified: branches/SAMBA_3_0_26/source/Makefile.in branches/SAMBA_3_0_26/source/configure.in Changeset: Modified: branches/SAMBA_3_0_26/source/Makefile.in =================================================================== --- branches/SAMBA_3_0_26/source/Makefile.in 2007-07-03 19:55:02 UTC (rev 23689) +++ branches/SAMBA_3_0_26/source/Makefile.in 2007-07-03 20:00:02 UTC (rev 23690) @@ -21,6 +21,12 @@ [EMAIL PROTECTED]@ [EMAIL PROTECTED]@ +## Dynamic shared libraries build settings +DSO_EXPORTS_CMD=-Wl,--version-script,exports/`basename $@ | sed 's/@[EMAIL PROTECTED]/syms/'` [EMAIL PROTECTED]@ +SONAME_VER=`grep ^$@ $(srcdir)/library-versions | cut -d: -f2` +SHLD_DSO = $(SHLD) $(LDSHFLAGS) $(DSO_EXPORTS) + # Add $(DEVELOPER_CFLAGS) to $(CFLAGS) to enable extra compiler # (GCC) warnings. This is done automtically for --enable-developer # and --enable-krb5developer. @@ -120,16 +126,8 @@ PIDDIR = @piddir@ LIBSMBCLIENT=bin/libsmbclient.a @LIBSMBCLIENT_SHARED@ -LIBSMBCLIENT_MAJOR=0 -LIBSMBCLIENT_MINOR=1 - LIBSMBSHAREMODES=bin/libsmbsharemodes.a @LIBSMBSHAREMODES_SHARED@ -LIBSMBSHAREMODES_MAJOR=0 -LIBSMBSHAREMODES_MINOR=2 - LIBADDNS=bin/libaddns.a @LIBADDNS_SHARED@ -LIBADDNS_MAJOR=0 -LIBADDNS_MINOR=1 FLAGS1 = $(CFLAGS) @FLAGS1@ @SAMBA_CPPFLAGS@ $(CPPFLAGS) FLAGS2 = @@ -1312,9 +1310,9 @@ bin/[EMAIL PROTECTED]@: $(BINARY_PREREQS) $(LIBADDNS_OBJ) @echo Linking libaddns shared library $@ - @$(SHLD) $(LDSHFLAGS) -o $@ $(LIBADDNS_OBJ) $(LIBS) \ + @$(SHLD_DSO) -o $@ $(LIBADDNS_OBJ) $(LDFLAGS) $(LIBS) \ $(KRB5LIBS) $(UUID_LIBS)\ - @[EMAIL PROTECTED] [EMAIL PROTECTED](LIBADDNS_MAJOR) + @[EMAIL PROTECTED] [EMAIL PROTECTED](SONAME_VER) bin/libaddns.a: $(BINARY_PREREQS) $(LIBADDNS_OBJ) @echo Linking libaddns non-shared library $@ @@ -1322,9 +1320,9 @@ bin/[EMAIL PROTECTED]@: $(BINARY_PREREQS) $(LIBSMBCLIENT_OBJ) @echo Linking libsmbclient shared library $@ - @$(SHLD) $(LDSHFLAGS) -o $@ $(LIBSMBCLIENT_OBJ) $(LIBS) \ + @$(SHLD_DSO) -o $@ $(LIBSMBCLIENT_OBJ) $(LDFLAGS) $(LIBS) \ $(KRB5LIBS) $(LDAP_LIBS) $(NSCD_LIBS) \ - @[EMAIL PROTECTED] [EMAIL PROTECTED](LIBSMBCLIENT_MAJOR) + @[EMAIL PROTECTED] [EMAIL PROTECTED](SONAME_VER) bin/libsmbclient.a: $(BINARY_PREREQS) $(LIBSMBCLIENT_OBJ) @echo Linking libsmbclient non-shared library $@ @@ -1332,9 +1330,9 @@ bin/[EMAIL PROTECTED]@: $(BINARY_PREREQS) $(LIBSMBSHAREMODES_OBJ) @echo Linking libsmbsharemodes shared library $@ - @$(SHLD) $(LDSHFLAGS) -o $@ $(LIBSMBSHAREMODES_OBJ) $(LIBS) \ + @$(SHLD_DSO) -o $@ $(LIBSMBSHAREMODES_OBJ) $(LDFLAGS) $(LIBS) \ $(KRB5LIBS) $(LDAP_LIBS) \ - @[EMAIL PROTECTED] [EMAIL PROTECTED](LIBSMBSHAREMODES_MAJOR) + @[EMAIL PROTECTED] [EMAIL PROTECTED](SONAME_VER) bin/libsmbsharemodes.a: $(BINARY_PREREQS) $(LIBSMBSHAREMODES_OBJ) @echo Linking libsmbsharemodes non-shared library $@ Modified: branches/SAMBA_3_0_26/source/configure.in =================================================================== --- branches/SAMBA_3_0_26/source/configure.in 2007-07-03 19:55:02 UTC (rev 23689) +++ branches/SAMBA_3_0_26/source/configure.in 2007-07-03 20:00:02 UTC (rev 23690) @@ -282,6 +282,7 @@ AC_SUBST(LDSHFLAGS) AC_SUBST(SONAMEFLAG) AC_SUBST(SHLD) +AC_SUBST(DSO_EXPORTS) AC_SUBST(HOST_OS) AC_SUBST(PICFLAG) AC_SUBST(PIE_CFLAGS) @@ -515,6 +516,9 @@ if test "$ac_cv_gnu_ld_date" -lt 20030217; then ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes fi + if test "$ac_cv_gnu_ld_date" -gt 20030101; then + ac_cv_gnu_ld_version_script=yes + fi else AC_MSG_CHECKING(GNU ld release version) changequote(,)dnl @@ -530,6 +534,9 @@ if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes fi + if test "$ac_cv_gnu_ld_vernr_major" -gt 2 || test "$ac_cv_gnu_l= d_vernr_major"=2 && test "$ac_cv_gnu_ld_vernr_minor" -ge 12; then + ac_cv_gnu_ld_version_script=yes + fi fi fi @@ -1731,6 +1738,7 @@ SHLD="\${CC} \${CFLAGS}" PICFLAG="${PIE_CFLAGS}" SHLIBEXT="so" +DSO_EXPORTS="" # this bit needs to be modified for each OS that supports share libs # You need to specify how to create a shared library and @@ -1919,8 +1927,12 @@ BLDSHARED=false fi - AC_MSG_RESULT($BLDSHARED) +if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then + DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\) +fi +AC_MSG_RESULT($BLDSHARED) + AC_MSG_CHECKING([LDFLAGS]) AC_MSG_RESULT([$LDFLAGS]) AC_MSG_CHECKING([DYNEXP]) @@ -6301,7 +6313,7 @@ SMBD_LIBS="$samba_dmapi_libs" AC_SUBST(SMBD_LIBS) -AC_OUTPUT(Makefile script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh) +AC_OUTPUT(Makefile library-versions script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh) ################################################# # Print very concise instructions on building/use Added: branches/SAMBA_3_0_26/source/exports/libsmbclient.syms =================================================================== --- branches/SAMBA_3_0_26/source/exports/libsmbclient.syms 2007-07-03 19:55:02 UTC (rev 23689) +++ branches/SAMBA_3_0_26/source/exports/libsmbclient.syms 2007-07-03 20:00:02 UTC (rev 23690) @@ -0,0 +1,4 @@ +{ + global: smbc_*; + local: *; +}; Added: branches/SAMBA_3_0_26/source/exports/libsmbsharemodes.syms =================================================================== --- branches/SAMBA_3_0_26/source/exports/libsmbsharemodes.syms 2007-07-03 19:55:02 UTC (rev 23689) +++ branches/SAMBA_3_0_26/source/exports/libsmbsharemodes.syms 2007-07-03 20:00:02 UTC (rev 23690) @@ -0,0 +1,3 @@ +{ + global: *; +}; Added: branches/SAMBA_3_0_26/source/library-versions.in =================================================================== --- branches/SAMBA_3_0_26/source/library-versions.in 2007-07-03 19:55:02 UTC (rev 23689) +++ branches/SAMBA_3_0_26/source/library-versions.in 2007-07-03 20:00:02 UTC (rev 23690) @@ -0,0 +1,9 @@ +## +## Basic script for defining the major and minor librrary revision numbers +## Makefile_target:major:minor +## +bin/[EMAIL PROTECTED]@:0:1 +bin/[EMAIL PROTECTED]@:0:2 +bin/[EMAIL PROTECTED]@:0:1 +bin/[EMAIL PROTECTED]@:0:1 +
