File project.diff of Package bash
--- bash.changes.orig
+++ bash.changes
@@ -1,4 +1,11 @@
-------------------------------------------------------------------
+Wed Jul 18 11:17:00 UTC 2012 - werner@suse.de
+
+- libreadlib: try to avoid to bind references of the symbols
+ rl_instream and rl_outstream
+- libreadlib: make private symbols really private
+
+-------------------------------------------------------------------
Wed Jul 11 06:36:05 UTC 2012 - werner@suse.de
- Avoid possible buffer overflow when expanding the /dev/fd prefix
--- bash.spec.orig
+++ bash.spec
@@ -351,6 +351,21 @@ pushd ../readline-%{rl_vers}%{extend}
LARGEFILE="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64"
fi
rm -f ./test64
+ (cat > rl.map)<<-'EOF'
+ {
+ local:
+ /* _rl*; */
+ xfree;
+ xmalloc;
+ xrealloc;
+ };
+ EOF
+ (cat > dyn.map)<<-'EOF'
+ {
+ *;
+ !rl_*stream;
+ }
+ EOF
CFLAGS="$RPM_OPT_FLAGS $LARGEFILE -D_GNU_SOURCE -DRECYCLES_PIDS -Wall -g"
LDFLAGS=""
cflags -std=gnu89 CFLAGS
@@ -365,8 +380,9 @@ pushd ../readline-%{rl_vers}%{extend}
cflags -Wl,--as-needed LDFLAGS
cflags -Wl,-O2 LDFLAGS
cflags -Wl,--hash-size=8599 LDFLAGS
- cflags -Wl,-Bsymbolic-functions LDFLAGS
cflags -Wl,-rpath,%{_ldldir}/%{bash_vers} LDFLAGS
+ cflags -Wl,--version-script=${PWD}/rl.map LDFLAGS
+ cflags -Wl,--dynamic-list=${PWD}/dyn.map LDFLAGS
CC=gcc
CC_FOR_BUILD="$CC"
CFLAGS_FOR_BUILD="$CFLAGS"
@@ -385,6 +401,9 @@ pushd ../readline-%{rl_vers}%{extend}
ln -sf shlib/libreadline.so.%{rl_vers} libreadline.so.%{rl_major}
ln -sf shlib/libhistory.so.%{rl_vers} libhistory.so
ln -sf shlib/libhistory.so.%{rl_vers} libhistory.so.%{rl_major}
+ LDFLAGS=${LDFLAGS/-Wl,--version-script=*rl.map/}
+ LDFLAGS=${LDFLAGS/-Wl,--dynamic-list=*dyn.map/}
+ LDFLAGS_FOR_BUILD="$LDFLAGS"
popd
# /proc is required for correct configuration
test -d /dev/fd || { echo "/proc is not mounted!" >&2; exit 1; }