aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephanie J. Lockwood-Childs <wormo@gentoo.org>2007-03-13 01:57:21 -0400
committerMike Frysinger <vapier@gentoo.org>2017-02-09 01:00:55 -0500
commit66b2d94a1b8e684927094e21f4d4bc0b54302355 (patch)
tree04e3ec0daa1c3ed3c61ed4ad8fc5374c8e88f9e9
parent2f8847901012150c74678d74e7723472edc3bcd1 (diff)
downloadglibc-66b2d94a1b8e684927094e21f4d4bc0b54302355.zip
glibc-66b2d94a1b8e684927094e21f4d4bc0b54302355.tar.gz
glibc-66b2d94a1b8e684927094e21f4d4bc0b54302355.tar.bz2
gentoo: support running tests under sandbox
when glibc runs its tests, it does so by invoking the local library loader. in Gentoo, we build/run inside of our "sandbox" which itself is linked against libdl (so that it can load libraries and pull out symbols). the trouble is that when you upgrade from an older glibc to the new one, often times internal symbols change name or abi. this is normally OK as you cannot use libc.so from say version 2.3.6 but libpthread.so from say version 2.5, so we always say "keep all of the glibc libraries from the same build". but when glibc runs its tests, it uses dynamic paths to point to its new local copies of libraries. if the test doesnt use libdl, then glibc doesnt add its path, and when sandbox triggers the loading of libdl, glibc does so from the host system system. this gets us into the case of all libraries are from the locally compiled version of glibc except for libdl.so. http://bugs.gentoo.org/56898
-rw-r--r--Makeconfig2
-rwxr-xr-xiconvdata/run-iconv-test.sh2
-rwxr-xr-xnptl/tst-tls6.sh2
3 files changed, 3 insertions, 3 deletions
diff --git a/Makeconfig b/Makeconfig
index 97a15b5..d944cd5 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -692,7 +692,7 @@ comma = ,
sysdep-library-path = \
$(subst $(empty) ,:,$(strip $(patsubst -Wl$(comma)-rpath-link=%, %,\
$(filter -Wl$(comma)-rpath-link=%,\
- $(sysdep-LDFLAGS)))))
+ $(sysdep-LDFLAGS)))) $(common-objpfx)/dlfcn)
# $(run-via-rtld-prefix) is a command that, when prepended to the name
# of a program built with the newly built library, produces a command
# that, executed on the host for which the library is built, runs that
diff --git a/iconvdata/run-iconv-test.sh b/iconvdata/run-iconv-test.sh
index 226a2e2..13b45f9 100755
--- a/iconvdata/run-iconv-test.sh
+++ b/iconvdata/run-iconv-test.sh
@@ -31,7 +31,7 @@ temp2=$codir/iconvdata/iconv-test.yyy
trap "rm -f $temp1 $temp2" 1 2 3 15
# We have to have some directories in the library path.
-LIBPATH=$codir:$codir/iconvdata
+LIBPATH=$codir:$codir/iconvdata:$codir/dlfcn
# How the start the iconv(1) program.
ICONV='$codir/elf/ld.so --library-path $LIBPATH --inhibit-rpath ${from}.so \
diff --git a/nptl/tst-tls6.sh b/nptl/tst-tls6.sh
index fde169f..a052568 100755
--- a/nptl/tst-tls6.sh
+++ b/nptl/tst-tls6.sh
@@ -26,7 +26,7 @@ run_program_env=$1; shift
logfile=$common_objpfx/nptl/tst-tls6.out
# We have to find libc and nptl
-library_path=${common_objpfx}:${common_objpfx}nptl
+library_path=${common_objpfx}:${common_objpfx}nptl:${common_objpfx}/dlfcn
tst_tls5="${test_via_rtld_prefix} ${common_objpfx}/nptl/tst-tls5"
> $logfile