aboutsummaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2014-04-30 08:17:22 +0200
committerWladimir J. van der Laan <laanwj@gmail.com>2014-04-30 15:30:39 +0200
commit92e3022f888a2e090a91c1f097ecc27e9601354b (patch)
treee9be5782c13046207330999bad910dcc8db2e839 /contrib
parent3ab1664594def04471fbeef27ddd45ae6264306b (diff)
downloadbitcoin-92e3022f888a2e090a91c1f097ecc27e9601354b.tar.xz
gitian: don't export any symbols from executable
This avoids conflicts between the libraries statically linked into bitcoin and any libraries we may link dynamically (such as Qt and OpenSSL, see issue #4094). It also avoids start-up overhead to not export any unnecessary symbols. To do this, build a linker script that marks all symbols as local.
Diffstat (limited to 'contrib')
-rw-r--r--contrib/gitian-descriptors/gitian-linux.yml12
1 files changed, 11 insertions, 1 deletions
diff --git a/contrib/gitian-descriptors/gitian-linux.yml b/contrib/gitian-descriptors/gitian-linux.yml
index 94b50998bc..692e9b358d 100644
--- a/contrib/gitian-descriptors/gitian-linux.yml
+++ b/contrib/gitian-descriptors/gitian-linux.yml
@@ -48,8 +48,18 @@ script: |
tar -zxf ../build/qt-linux${GBUILD_BITS}-4.6.4-gitian-r1.tar.gz
cd ../build
+ # Avoid exporting *any* symbols from the executable
+ # This avoids conflicts between the libraries statically linked into bitcoin and any
+ # libraries we may link dynamically (such as Qt and OpenSSL, see issue #4094).
+ # It also avoids start-up overhead to not export any unnecessary symbols.
+ # To do this, build a linker script that marks all symbols as local.
+ LINKER_SCRIPT=$HOME/build/linker_version_script
+ echo '
+ {
+ local: *;
+ };' > $LINKER_SCRIPT
function do_configure {
- ./configure "$@" --enable-upnp-default --prefix=$STAGING --with-protoc-bindir=$STAGING/host/bin --with-boost=$STAGING --disable-maintainer-mode --disable-dependency-tracking PKG_CONFIG_PATH="$STAGING/lib/pkgconfig" CPPFLAGS="-I$STAGING/include ${OPTFLAGS}" LDFLAGS="-L$STAGING/lib ${OPTFLAGS}" CXXFLAGS="-frandom-seed=bitcoin ${OPTFLAGS}" BOOST_CHRONO_EXTRALIBS="-lrt" --enable-glibc-back-compat
+ ./configure "$@" --enable-upnp-default --prefix=$STAGING --with-protoc-bindir=$STAGING/host/bin --with-boost=$STAGING --disable-maintainer-mode --disable-dependency-tracking PKG_CONFIG_PATH="$STAGING/lib/pkgconfig" CPPFLAGS="-I$STAGING/include ${OPTFLAGS}" LDFLAGS="-L$STAGING/lib -Wl,--version-script=$LINKER_SCRIPT ${OPTFLAGS}" CXXFLAGS="-frandom-seed=bitcoin ${OPTFLAGS}" BOOST_CHRONO_EXTRALIBS="-lrt" --enable-glibc-back-compat
}
#
cd bitcoin