# 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

