# Gaétan's email address has changed, so let's pretend I'm the submitter submitter 219242 ! tags 219242 patch kthxbye
On Wed, Nov 5, 2003 at 10:02:34 +0100, Richard Gaétan wrote: > Some fonctions exported with libsmbclient have currents names therefore > it is impossible to incorporate libsmbclient in an other language. > > ex: sys_open , string_set (for use with OCaml) > > $ objdump -R /usr/lib/libsmbclient.so > foo.txt > $ grep sys_open foo.txt > 000afcc8 R_386_JUMP_SLOT sys_open > $ > > I think these fonctions should either renamed in smbc_(old name) or they > should be hidden in the binary > Hi, I rebuilt samba with the attached patch, and the number of symbols exported by libsmbclient went down from more than 4000 to 51. The patch adds a version script for this lib, which only exports symbols matching "smbc_*". I added tentative detection code for the configure script, which checks the version of GNU ld. As far as I know, support for this was added for GNU ld 2.12 (or at least, that's what libtool.m4 seems to check), released in 2002. I'll attach a complete debdiff, and the actual patch I dropped in debian/patches. Cheers, Julien
diff -u samba-3.0.25a/debian/patches/series samba-3.0.25a/debian/patches/series --- samba-3.0.25a/debian/patches/series +++ samba-3.0.25a/debian/patches/series @@ -17,4 +17,5 @@ VERSION.patch adapt_machine_creation_script.patch +version-script.patch autoconf.patch python-examples.patch diff -u samba-3.0.25a/debian/patches/autoconf.patch samba-3.0.25a/debian/patches/autoconf.patch --- samba-3.0.25a/debian/patches/autoconf.patch +++ samba-3.0.25a/debian/patches/autoconf.patch @@ -27,9 +27,9 @@ Index: samba-3.0.25a/source/configure =================================================================== ---- samba-3.0.25a.orig/source/configure 2007-05-26 07:45:38.604207153 +0200 -+++ samba-3.0.25a/source/configure 2007-05-26 07:46:36.104665243 +0200 -@@ -671,6 +671,9 @@ +--- samba-3.0.25a.orig/source/configure 2007-06-08 23:36:19.000000000 +0200 ++++ samba-3.0.25a/source/configure 2007-06-08 23:37:12.000000000 +0200 +@@ -671,11 +671,15 @@ logfilebase privatedir swatdir @@ -39,7 +39,13 @@ rootsbindir pammodulesdir SAMBA_CPPFLAGS -@@ -2139,7 +2142,7 @@ + LDSHFLAGS + SONAMEFLAG ++VERSIONLDFLAGS + SHLD + HOST_OS + PICFLAG +@@ -2139,7 +2143,7 @@ if test "${with_fhs+set}" = set; then withval=$with_fhs; case "$withval" in yes) @@ -48,7 +54,7 @@ piddir="\${VARDIR}/run" mandir="\${prefix}/share/man" logfilebase="\${VARDIR}/log/samba" -@@ -2147,6 +2150,14 @@ +@@ -2147,6 +2151,14 @@ libdir="\${prefix}/lib/samba" configdir="\${sysconfdir}/samba" swatdir="\${DATADIR}/samba/swat" @@ -63,17 +69,38 @@ ;; esac fi -@@ -2450,6 +2461,9 @@ +@@ -2450,6 +2462,10 @@ + + + ++ ## check for --enable-debug first before checking CFLAGS before ## so that we don't mix -O and -g # Check whether --enable-debug was given. -@@ -11604,6 +11618,27 @@ +@@ -10536,6 +10552,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 + { echo "$as_me:$LINENO: checking GNU ld release version" >&5 + echo $ECHO_N "checking GNU ld release version... $ECHO_C" >&6; } +@@ -10555,6 +10574,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_ld_vernr_major" = 2 && test "$ac_cv_gnu_ld_vernr_minor" -ge 12; then ++ ac_cv_gnu_ld_version_script=yes ++ fi + fi + fi + +@@ -11604,6 +11626,27 @@ fi ;; @@ -101,7 +128,7 @@ # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support. # *linux*) -@@ -34332,7 +34367,7 @@ +@@ -34332,7 +34375,7 @@ # # case "$host_os" in @@ -110,7 +137,7 @@ # glibc <= 2.3.2 has a broken getgrouplist if test "$cross_compiling" = yes; then { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling -@@ -39139,11 +39174,14 @@ +@@ -39139,11 +39182,14 @@ # and these are for particular systems case "$host_os" in @@ -127,7 +154,17 @@ BLDSHARED="true" if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined" -@@ -61736,7 +61774,7 @@ +@@ -39153,6 +39199,9 @@ + DYNEXP="-Wl,--export-dynamic" + PICFLAG="-fPIC" + SONAMEFLAG="-Wl,-soname=" ++ if test "${ac_cv_gnu_ld_version_script}" = yes; then ++ VERSIONLDFLAGS="-Wl,--version-script,libsmbclient.syms" ++ fi + cat >>confdefs.h <<\_ACEOF + #define STAT_ST_BLOCKSIZE 512 + _ACEOF +@@ -61736,7 +61785,7 @@ echo "${ECHO_T}yes" >&6; }; case "$host_os" in @@ -136,7 +173,7 @@ { echo "$as_me:$LINENO: checking for linux sendfile64 support" >&5 echo $ECHO_N "checking for linux sendfile64 support... $ECHO_C" >&6; } if test "${samba_cv_HAVE_SENDFILE64+set}" = set; then -@@ -62758,11 +62796,11 @@ +@@ -62758,11 +62807,11 @@ SMB_KRB5_LOCATOR="bin/smb_krb5_locator.$SHLIBEXT" case "$host_os" in @@ -150,7 +187,7 @@ # FreeBSD winbind client is implemented as a wrapper around # the Linux version. NSSSONAMEVERSIONSUFFIX=".1" -@@ -67280,6 +67318,9 @@ +@@ -67280,11 +67329,15 @@ logfilebase!$logfilebase$ac_delim privatedir!$privatedir$ac_delim swatdir!$swatdir$ac_delim @@ -160,39 +197,47 @@ rootsbindir!$rootsbindir$ac_delim pammodulesdir!$pammodulesdir$ac_delim SAMBA_CPPFLAGS!$SAMBA_CPPFLAGS$ac_delim -@@ -67317,9 +67358,6 @@ + LDSHFLAGS!$LDSHFLAGS$ac_delim + SONAMEFLAG!$SONAMEFLAG$ac_delim ++VERSIONLDFLAGS!$VERSIONLDFLAGS$ac_delim + SHLD!$SHLD$ac_delim + HOST_OS!$HOST_OS$ac_delim + PICFLAG!$PICFLAG$ac_delim +@@ -67316,10 +67369,6 @@ + ACL_LIBS!$ACL_LIBS$ac_delim PASSDB_LIBS!$PASSDB_LIBS$ac_delim IDMAP_LIBS!$IDMAP_LIBS$ac_delim - KRB5_LIBS!$KRB5_LIBS$ac_delim +-KRB5_LIBS!$KRB5_LIBS$ac_delim -UUID_LIBS!$UUID_LIBS$ac_delim -LDAP_LIBS!$LDAP_LIBS$ac_delim -PAM_MODULES!$PAM_MODULES$ac_delim _ACEOF if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then -@@ -67361,6 +67399,9 @@ +@@ -67361,6 +67410,10 @@ ac_delim='%!_!# ' for ac_last_try in false false false false false :; do cat >conf$$subs.sed <<_ACEOF ++KRB5_LIBS!$KRB5_LIBS$ac_delim +UUID_LIBS!$UUID_LIBS$ac_delim +LDAP_LIBS!$LDAP_LIBS$ac_delim +PAM_MODULES!$PAM_MODULES$ac_delim INSTALL_PAM_MODULES!$INSTALL_PAM_MODULES$ac_delim UNINSTALL_PAM_MODULES!$UNINSTALL_PAM_MODULES$ac_delim NSS_MODULES!$NSS_MODULES$ac_delim -@@ -67444,7 +67485,7 @@ +@@ -67444,7 +67497,7 @@ LTLIBOBJS!$LTLIBOBJS$ac_delim _ACEOF - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 81; then -+ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 84; then ++ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 85; then break elif $ac_last_try; then { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 Index: samba-3.0.25a/source/include/config.h.in =================================================================== ---- samba-3.0.25a.orig/source/include/config.h.in 2007-05-26 07:45:38.616207248 +0200 -+++ samba-3.0.25a/source/include/config.h.in 2007-05-26 07:46:36.112665307 +0200 +--- samba-3.0.25a.orig/source/include/config.h.in 2007-06-08 23:36:19.000000000 +0200 ++++ samba-3.0.25a/source/include/config.h.in 2007-06-08 23:37:10.000000000 +0200 @@ -57,6 +57,9 @@ /* Define to turn on dmalloc debugging */ #undef ENABLE_DMALLOC diff -u samba-3.0.25a/debian/changelog samba-3.0.25a/debian/changelog --- samba-3.0.25a/debian/changelog +++ samba-3.0.25a/debian/changelog @@ -1,3 +1,10 @@ +samba (3.0.25a-1.1) unstable; urgency=low + + * Non-maintainer upload. + * Use a version script for libsmbclient to only export public symbols. + + -- Julien Cristau <[EMAIL PROTECTED]> Fri, 08 Jun 2007 22:54:32 +0200 + samba (3.0.25a-1) unstable; urgency=low [ Christian Perrier ] only in patch2: unchanged: --- samba-3.0.25a.orig/source/include/version.h +++ samba-3.0.25a/source/include/version.h @@ -3,5 +3,6 @@ #define SAMBA_VERSION_MINOR 0 #define SAMBA_VERSION_RELEASE 25 #define SAMBA_VERSION_REVISION "a" +#define SAMBA_VERSION_VENDOR_SUFFIX "Debian" #define SAMBA_VERSION_OFFICIAL_STRING "3.0.25a" #define SAMBA_VERSION_STRING samba_version_string() only in patch2: unchanged: --- samba-3.0.25a.orig/debian/patches/version-script.patch +++ samba-3.0.25a/debian/patches/version-script.patch @@ -0,0 +1,63 @@ +Index: samba-3.0.25a/source/Makefile.in +=================================================================== +--- samba-3.0.25a.orig/source/Makefile.in 2007-06-08 23:36:12.000000000 +0200 ++++ samba-3.0.25a/source/Makefile.in 2007-06-08 23:36:12.000000000 +0200 +@@ -1163,6 +1163,7 @@ + @echo Linking libsmbclient shared library $@ + @$(SHLD) $(LDSHFLAGS) -Wl,-z,defs -o $@ $(LIBSMBCLIENT_OBJ) $(LIBS) \ + $(KRB5LIBS) $(LDAP_LIBS) $(NSCD_LIBS) \ ++ @VERSIONLDFLAGS@ \ + @[EMAIL PROTECTED] [EMAIL PROTECTED](LIBSMBCLIENT_MAJOR) + + bin/libsmbclient.a: proto_exists $(LIBSMBCLIENT_OBJ) +Index: samba-3.0.25a/source/configure.in +=================================================================== +--- samba-3.0.25a.orig/source/configure.in 2007-06-08 23:36:12.000000000 +0200 ++++ samba-3.0.25a/source/configure.in 2007-06-08 23:36:36.000000000 +0200 +@@ -267,6 +267,7 @@ + AC_SUBST(SHELL) + AC_SUBST(LDSHFLAGS) + AC_SUBST(SONAMEFLAG) ++AC_SUBST(VERSIONLDFLAGS) + AC_SUBST(SHLD) + AC_SUBST(HOST_OS) + AC_SUBST(PICFLAG) +@@ -456,6 +457,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 +@@ -471,6 +475,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_ld_vernr_major" = 2 && test "$ac_cv_gnu_ld_vernr_minor" -ge 12; then ++ ac_cv_gnu_ld_version_script=yes ++ fi + fi + fi + +@@ -1703,6 +1710,9 @@ + DYNEXP="-Wl,--export-dynamic" + PICFLAG="-fPIC" + SONAMEFLAG="-Wl,-soname=" ++ if test "${ac_cv_gnu_ld_version_script}" = yes; then ++ VERSIONLDFLAGS="-Wl,--version-script,libsmbclient.syms" ++ fi + AC_DEFINE(STAT_ST_BLOCKSIZE,512) + ;; + *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris]) +Index: samba-3.0.25a/source/libsmbclient.syms +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ samba-3.0.25a/source/libsmbclient.syms 2007-06-08 23:36:12.000000000 +0200 +@@ -0,0 +1,4 @@ ++{ ++ global: smbc_*; ++ local: *; ++};
Index: samba-3.0.25a/source/Makefile.in =================================================================== --- samba-3.0.25a.orig/source/Makefile.in 2007-06-08 23:36:12.000000000 +0200 +++ samba-3.0.25a/source/Makefile.in 2007-06-08 23:36:12.000000000 +0200 @@ -1163,6 +1163,7 @@ @echo Linking libsmbclient shared library $@ @$(SHLD) $(LDSHFLAGS) -Wl,-z,defs -o $@ $(LIBSMBCLIENT_OBJ) $(LIBS) \ $(KRB5LIBS) $(LDAP_LIBS) $(NSCD_LIBS) \ + @VERSIONLDFLAGS@ \ @[EMAIL PROTECTED] [EMAIL PROTECTED](LIBSMBCLIENT_MAJOR) bin/libsmbclient.a: proto_exists $(LIBSMBCLIENT_OBJ) Index: samba-3.0.25a/source/configure.in =================================================================== --- samba-3.0.25a.orig/source/configure.in 2007-06-08 23:36:12.000000000 +0200 +++ samba-3.0.25a/source/configure.in 2007-06-08 23:36:36.000000000 +0200 @@ -267,6 +267,7 @@ AC_SUBST(SHELL) AC_SUBST(LDSHFLAGS) AC_SUBST(SONAMEFLAG) +AC_SUBST(VERSIONLDFLAGS) AC_SUBST(SHLD) AC_SUBST(HOST_OS) AC_SUBST(PICFLAG) @@ -456,6 +457,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 @@ -471,6 +475,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_ld_vernr_major" = 2 && test "$ac_cv_gnu_ld_vernr_minor" -ge 12; then + ac_cv_gnu_ld_version_script=yes + fi fi fi @@ -1703,6 +1710,9 @@ DYNEXP="-Wl,--export-dynamic" PICFLAG="-fPIC" SONAMEFLAG="-Wl,-soname=" + if test "${ac_cv_gnu_ld_version_script}" = yes; then + VERSIONLDFLAGS="-Wl,--version-script,libsmbclient.syms" + fi AC_DEFINE(STAT_ST_BLOCKSIZE,512) ;; *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris]) Index: samba-3.0.25a/source/libsmbclient.syms =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ samba-3.0.25a/source/libsmbclient.syms 2007-06-08 23:36:12.000000000 +0200 @@ -0,0 +1,4 @@ +{ + global: smbc_*; + local: *; +};
signature.asc
Description: Digital signature