patches/glibc/2.9/400-tests-sandbox-libdl-paths.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun May 03 09:50:16 2009 +0000 (2009-05-03)
branchnewlib
changeset 1366 5e5d1e6f55d3
permissions -rw-r--r--
Update the newlib devel branch with stuff from /trunk@1498.

-------- diffstat follows --------
/devel/newlib/configure | 336 176 160 0 +++++++------
/devel/newlib/Makefile.in | 12 3 9 0 -
/devel/newlib/scripts/build/kernel/linux.sh | 2 1 1 0
/devel/newlib/scripts/build/internals.sh | 1 0 1 0 -
/devel/newlib/scripts/build/libc/eglibc.sh | 1 0 1 0 -
/devel/newlib/scripts/build/mpfr.sh | 2 1 1 0
/devel/newlib/scripts/functions | 111 5 106 0 ----
/devel/newlib/scripts/config.guess | 7 5 2 0 +
/devel/newlib/scripts/config.sub | 3 2 1 0 +
/devel/newlib/scripts/saveSample.sh.in | 4 2 2 0
/devel/newlib/docs/overview.txt | 8 6 2 0 +
/devel/newlib/samples/armeb-unknown-linux-uclibc/crosstool.config | 14 5 9 0 -
/devel/newlib/samples/sh4-unknown-linux-gnu/crosstool.config | 14 5 9 0 -
/devel/newlib/samples/x86_64-unknown-linux-gnu/crosstool.config | 14 5 9 0 -
/devel/newlib/samples/arm-unknown-elf/crosstool.config | 12 3 9 0 -
/devel/newlib/samples/armeb-unknown-eabi/crosstool.config | 2 0 2 0 -
/devel/newlib/samples/arm-unknown-linux-gnueabi/crosstool.config | 14 5 9 0 -
/devel/newlib/samples/ia64-unknown-linux-gnu/crosstool.config | 14 5 9 0 -
/devel/newlib/samples/x86_64-unknown-linux-uclibc/crosstool.config | 14 5 9 0 -
/devel/newlib/samples/armeb-unknown-linux-gnueabi/crosstool.config | 14 5 9 0 -
/devel/newlib/samples/powerpc-e500v2-linux-gnuspe/crosstool.config | 14 5 9 0 -
/devel/newlib/samples/i686-nptl-linux-gnu/crosstool.config | 14 5 9 0 -
/devel/newlib/samples/arm-unknown-linux-gnu/crosstool.config | 14 5 9 0 -
/devel/newlib/samples/powerpc-unknown-linux-gnu/crosstool.config | 14 5 9 0 -
/devel/newlib/samples/mips-unknown-linux-uclibc/crosstool.config | 14 5 9 0 -
/devel/newlib/samples/arm-unknown-linux-uclibcgnueabi/crosstool.config | 14 5 9 0 -
/devel/newlib/samples/arm-iphone-linux-gnueabi/crosstool.config | 8 4 4 0
/devel/newlib/samples/armeb-unknown-linux-gnu/crosstool.config | 14 5 9 0 -
/devel/newlib/samples/powerpc-unknown_nofpu-linux-gnu/crosstool.config | 14 5 9 0 -
/devel/newlib/samples/i586-geode-linux-uclibc/crosstool.config | 14 5 9 0 -
/devel/newlib/samples/arm-unknown-linux-uclibc/crosstool.config | 14 5 9 0 -
/devel/newlib/samples/powerpc-unknown-linux-uclibc/crosstool.config | 14 5 9 0 -
/devel/newlib/samples/mips-unknown-elf/crosstool.config | 2 0 2 0 -
/devel/newlib/samples/powerpc-405-linux-gnu/crosstool.config | 14 5 9 0 -
/devel/newlib/samples/armeb-unknown-linux-uclibcgnueabi/crosstool.config | 14 5 9 0 -
/devel/newlib/samples/arm-unknown-eabi/crosstool.config | 12 3 9 0 -
/devel/newlib/samples/mipsel-unknown-linux-gnu/crosstool.config | 14 5 9 0 -
/devel/newlib/samples/powerpc64-unknown-linux-gnu/crosstool.config | 14 5 9 0 -
/devel/newlib/samples/alphaev56-unknown-linux-gnu/crosstool.config | 14 5 9 0 -
/devel/newlib/samples/powerpc-860-linux-gnu/crosstool.config | 14 5 9 0 -
/devel/newlib/config/kernel/linux.in | 108 2 106 0 ----
/devel/newlib/config/global/ct-behave.in | 22 13 9 0 +
/devel/newlib/config/global/download.in | 210 15 195 0 +-------
/devel/newlib/config/libc/glibc.in | 7 7 0 0 +
/devel/newlib/config/libc/glibc-eglibc.in-common | 15 14 1 0 +
45 files changed, 382 insertions(+), 839 deletions(-)
yann@1365
     1
Original patch from: gentoo/src/patchsets/glibc/2.9/3020_all_glibc-tests-sandbox-libdl-paths.patch
yann@1365
     2
yann@1365
     3
-= BEGIN original header =-
yann@1365
     4
when glibc runs its tests, it does so by invoking the local library loader.
yann@1365
     5
in Gentoo, we build/run inside of our "sandbox" which itself is linked against
yann@1365
     6
libdl (so that it can load libraries and pull out symbols).  the trouble
yann@1365
     7
is that when you upgrade from an older glibc to the new one, often times
yann@1365
     8
internal symbols change name or abi.  this is normally OK as you cannot use
yann@1365
     9
libc.so from say version 2.3.6 but libpthread.so from say version 2.5, so
yann@1365
    10
we always say "keep all of the glibc libraries from the same build".  but
yann@1365
    11
when glibc runs its tests, it uses dynamic paths to point to its new local
yann@1365
    12
copies of libraries.  if the test doesnt use libdl, then glibc doesnt add
yann@1365
    13
its path, and when sandbox triggers the loading of libdl, glibc does so
yann@1365
    14
from the host system system.  this gets us into the case of all libraries
yann@1365
    15
are from the locally compiled version of glibc except for libdl.so.
yann@1365
    16
yann@1365
    17
Fix by Wormo
yann@1365
    18
yann@1365
    19
http://bugs.gentoo.org/56898
yann@1365
    20
yann@1365
    21
-= END original header =-
yann@1365
    22
yann@1365
    23
diff -durN glibc-2_9.orig/grp/tst_fgetgrent.sh glibc-2_9/grp/tst_fgetgrent.sh
yann@1365
    24
--- glibc-2_9.orig/grp/tst_fgetgrent.sh	2001-07-06 06:54:46.000000000 +0200
yann@1365
    25
+++ glibc-2_9/grp/tst_fgetgrent.sh	2009-02-02 22:01:23.000000000 +0100
yann@1365
    26
@@ -24,7 +24,8 @@
yann@1365
    27
 rtld_installed_name=$1; shift
yann@1365
    28
 
yann@1365
    29
 testout=${common_objpfx}/grp/tst_fgetgrent.out
yann@1365
    30
-library_path=${common_objpfx}
yann@1365
    31
+# make sure libdl is also in path in case sandbox is in use
yann@1365
    32
+library_path=${common_objpfx}:${common_objpfx}/dlfcn
yann@1365
    33
 
yann@1365
    34
 result=0
yann@1365
    35
 
yann@1365
    36
diff -durN glibc-2_9.orig/iconvdata/run-iconv-test.sh glibc-2_9/iconvdata/run-iconv-test.sh
yann@1365
    37
--- glibc-2_9.orig/iconvdata/run-iconv-test.sh	2008-05-15 03:59:44.000000000 +0200
yann@1365
    38
+++ glibc-2_9/iconvdata/run-iconv-test.sh	2009-02-02 22:01:23.000000000 +0100
yann@1365
    39
@@ -34,7 +34,7 @@
yann@1365
    40
 export GCONV_PATH
yann@1365
    41
 
yann@1365
    42
 # We have to have some directories in the library path.
yann@1365
    43
-LIBPATH=$codir:$codir/iconvdata
yann@1365
    44
+LIBPATH=$codir:$codir/iconvdata:$codir/dlfcn
yann@1365
    45
 
yann@1365
    46
 # How the start the iconv(1) program.
yann@1365
    47
 ICONV='$codir/elf/ld.so --library-path $LIBPATH --inhibit-rpath ${from}.so \
yann@1365
    48
diff -durN glibc-2_9.orig/iconvdata/tst-table.sh glibc-2_9/iconvdata/tst-table.sh
yann@1365
    49
--- glibc-2_9.orig/iconvdata/tst-table.sh	2002-04-24 23:39:35.000000000 +0200
yann@1365
    50
+++ glibc-2_9/iconvdata/tst-table.sh	2009-02-02 22:01:23.000000000 +0100
yann@1365
    51
@@ -59,8 +59,11 @@
yann@1365
    52
   irreversible=${charset}.irreversible
yann@1365
    53
 fi
yann@1365
    54
 
yann@1365
    55
+# make sure libdl is also in path in case sandbox is in use
yann@1365
    56
+library_path=${common_objpfx}:${common_objpfx}/dlfcn
yann@1365
    57
+
yann@1365
    58
 # iconv in one direction.
yann@1365
    59
-${common_objpfx}elf/ld.so --library-path $common_objpfx \
yann@1365
    60
+${common_objpfx}elf/ld.so --library-path $library_path \
yann@1365
    61
 ${objpfx}tst-table-from ${charset} \
yann@1365
    62
   > ${objpfx}tst-${charset}.table
yann@1365
    63
 
yann@1365
    64
diff -durN glibc-2_9.orig/intl/tst-codeset.sh glibc-2_9/intl/tst-codeset.sh
yann@1365
    65
--- glibc-2_9.orig/intl/tst-codeset.sh	2005-04-06 04:18:35.000000000 +0200
yann@1365
    66
+++ glibc-2_9/intl/tst-codeset.sh	2009-02-02 22:01:23.000000000 +0100
yann@1365
    67
@@ -37,6 +37,9 @@
yann@1365
    68
 LOCPATH=${common_objpfx}localedata
yann@1365
    69
 export LOCPATH
yann@1365
    70
 
yann@1365
    71
+# make sure libdl is also in path in case sandbox is in use
yann@1365
    72
+library_path=${common_objpfx}:${common_objpfx}/dlfcn
yann@1365
    73
+
yann@1365
    74
 ${common_objpfx}elf/ld.so --library-path $common_objpfx \
yann@1365
    75
 ${objpfx}tst-codeset > ${objpfx}tst-codeset.out
yann@1365
    76
 
yann@1365
    77
diff -durN glibc-2_9.orig/intl/tst-gettext.sh glibc-2_9/intl/tst-gettext.sh
yann@1365
    78
--- glibc-2_9.orig/intl/tst-gettext.sh	2004-08-15 21:28:18.000000000 +0200
yann@1365
    79
+++ glibc-2_9/intl/tst-gettext.sh	2009-02-02 22:01:23.000000000 +0100
yann@1365
    80
@@ -51,9 +51,12 @@
yann@1365
    81
 LOCPATH=${common_objpfx}localedata
yann@1365
    82
 export LOCPATH
yann@1365
    83
 
yann@1365
    84
+# make sure libdl is also in path in case sandbox is in use
yann@1365
    85
+library_path=${common_objpfx}:${common_objpfx}/dlfcn
yann@1365
    86
+
yann@1365
    87
 # Now run the test.
yann@1365
    88
 MALLOC_TRACE=$malloc_trace LOCPATH=${objpfx}localedir:$LOCPATH \
yann@1365
    89
-${common_objpfx}elf/ld.so --library-path $common_objpfx \
yann@1365
    90
+${common_objpfx}elf/ld.so --library-path $library_path \
yann@1365
    91
 ${objpfx}tst-gettext > ${objpfx}tst-gettext.out ${objpfx}domaindir
yann@1365
    92
 
yann@1365
    93
 exit $?
yann@1365
    94
diff -durN glibc-2_9.orig/intl/tst-gettext2.sh glibc-2_9/intl/tst-gettext2.sh
yann@1365
    95
--- glibc-2_9.orig/intl/tst-gettext2.sh	2005-05-04 19:54:48.000000000 +0200
yann@1365
    96
+++ glibc-2_9/intl/tst-gettext2.sh	2009-02-02 22:01:23.000000000 +0100
yann@1365
    97
@@ -65,8 +65,11 @@
yann@1365
    98
 LOCPATH=${objpfx}domaindir
yann@1365
    99
 export LOCPATH
yann@1365
   100
 
yann@1365
   101
+# make sure libdl is also in path in case sandbox is in use
yann@1365
   102
+library_path=${common_objpfx}:${common_objpfx}/dlfcn
yann@1365
   103
+
yann@1365
   104
 # Now run the test.
yann@1365
   105
-${common_objpfx}elf/ld.so --library-path $common_objpfx \
yann@1365
   106
+${common_objpfx}elf/ld.so --library-path $library_path \
yann@1365
   107
 ${objpfx}tst-gettext2 > ${objpfx}tst-gettext2.out ${objpfx}domaindir &&
yann@1365
   108
 cmp ${objpfx}tst-gettext2.out - <<EOF
yann@1365
   109
 String1 - Lang1: 1st string
yann@1365
   110
diff -durN glibc-2_9.orig/intl/tst-translit.sh glibc-2_9/intl/tst-translit.sh
yann@1365
   111
--- glibc-2_9.orig/intl/tst-translit.sh	2005-05-04 19:56:10.000000000 +0200
yann@1365
   112
+++ glibc-2_9/intl/tst-translit.sh	2009-02-02 22:01:23.000000000 +0100
yann@1365
   113
@@ -36,7 +36,10 @@
yann@1365
   114
 LOCPATH=${common_objpfx}localedata
yann@1365
   115
 export LOCPATH
yann@1365
   116
 
yann@1365
   117
-${common_objpfx}elf/ld.so --library-path $common_objpfx \
yann@1365
   118
+# make sure libdl is also in path in case sandbox is in use
yann@1365
   119
+library_path=${common_objpfx}:${common_objpfx}/dlfcn
yann@1365
   120
+
yann@1365
   121
+${common_objpfx}elf/ld.so --library-path $library_path \
yann@1365
   122
 ${objpfx}tst-translit > ${objpfx}tst-translit.out ${objpfx}domaindir
yann@1365
   123
 
yann@1365
   124
 exit $?
yann@1365
   125
diff -durN glibc-2_9.orig/malloc/tst-mtrace.sh glibc-2_9/malloc/tst-mtrace.sh
yann@1365
   126
--- glibc-2_9.orig/malloc/tst-mtrace.sh	2005-10-15 01:40:35.000000000 +0200
yann@1365
   127
+++ glibc-2_9/malloc/tst-mtrace.sh	2009-02-02 22:01:23.000000000 +0100
yann@1365
   128
@@ -24,9 +24,12 @@
yann@1365
   129
 status=0
yann@1365
   130
 trap "rm -f ${common_objpfx}malloc/tst-mtrace.leak; exit 1" 1 2 15
yann@1365
   131
 
yann@1365
   132
+# make sure libdl is also in path in case sandbox is in use
yann@1365
   133
+library_path=${common_objpfx}:${common_objpfx}/dlfcn
yann@1365
   134
+
yann@1365
   135
 MALLOC_TRACE=${common_objpfx}malloc/tst-mtrace.leak \
yann@1365
   136
 LOCPATH=${common_objpfx}localedata GCONV_PATH=${common_objpfx}iconvdata \
yann@1365
   137
-${common_objpfx}elf/ld.so --library-path $common_objpfx \
yann@1365
   138
+${common_objpfx}elf/ld.so --library-path $library_path \
yann@1365
   139
   ${common_objpfx}malloc/tst-mtrace || status=1
yann@1365
   140
 
yann@1365
   141
 if test $status -eq 0 && test -f ${common_objpfx}malloc/mtrace; then
yann@1365
   142
diff -durN glibc-2_9.orig/nptl/tst-tls6.sh glibc-2_9/nptl/tst-tls6.sh
yann@1365
   143
--- glibc-2_9.orig/nptl/tst-tls6.sh	2003-09-03 00:02:59.000000000 +0200
yann@1365
   144
+++ glibc-2_9/nptl/tst-tls6.sh	2009-02-02 22:01:23.000000000 +0100
yann@1365
   145
@@ -5,8 +5,8 @@
yann@1365
   146
 rtld_installed_name=$1; shift
yann@1365
   147
 logfile=$common_objpfx/nptl/tst-tls6.out
yann@1365
   148
 
yann@1365
   149
-# We have to find libc and nptl
yann@1365
   150
-library_path=${common_objpfx}:${common_objpfx}nptl
yann@1365
   151
+# We have to find libc and nptl (also libdl in case sandbox is in use)
yann@1365
   152
+library_path=${common_objpfx}:${common_objpfx}nptl:${common_objpfx}/dlfcn
yann@1365
   153
 tst_tls5="${elf_objpfx}${rtld_installed_name} --library-path ${library_path} \
yann@1365
   154
 	  ${common_objpfx}/nptl/tst-tls5"
yann@1365
   155
 
yann@1365
   156
diff -durN glibc-2_9.orig/posix/globtest.sh glibc-2_9/posix/globtest.sh
yann@1365
   157
--- glibc-2_9.orig/posix/globtest.sh	2007-02-14 20:52:33.000000000 +0100
yann@1365
   158
+++ glibc-2_9/posix/globtest.sh	2009-02-02 22:01:23.000000000 +0100
yann@1365
   159
@@ -18,7 +18,7 @@
yann@1365
   160
 esac
yann@1365
   161
 
yann@1365
   162
 # We have to find the libc and the NSS modules.
yann@1365
   163
-library_path=${common_objpfx}:${common_objpfx}nss:${common_objpfx}nis:${common_objpfx}db2:${common_objpfx}hesiod
yann@1365
   164
+library_path=${common_objpfx}:${common_objpfx}nss:${common_objpfx}nis:${common_objpfx}db2:${common_objpfx}hesiod:${common_objpfx}/dlfcn
yann@1365
   165
 
yann@1365
   166
 # Since we use `sort' we must make sure to use the same locale everywhere.
yann@1365
   167
 LC_ALL=C
yann@1365
   168
diff -durN glibc-2_9.orig/posix/tst-getconf.sh glibc-2_9/posix/tst-getconf.sh
yann@1365
   169
--- glibc-2_9.orig/posix/tst-getconf.sh	2002-09-01 13:11:25.000000000 +0200
yann@1365
   170
+++ glibc-2_9/posix/tst-getconf.sh	2009-02-02 22:01:23.000000000 +0100
yann@1365
   171
@@ -10,7 +10,10 @@
yann@1365
   172
 else
yann@1365
   173
   rtld_installed_name=$1; shift
yann@1365
   174
   runit() {
yann@1365
   175
-    ${elf_objpfx}${rtld_installed_name} --library-path ${common_objpfx} "$@"
yann@1365
   176
+    
yann@1365
   177
+  # make sure libdl is also in path in case sandbox is in use
yann@1365
   178
+  library_path=${common_objpfx}:${common_objpfx}/dlfcn
yann@1365
   179
+    ${elf_objpfx}${rtld_installed_name} --library-path ${library_path} "$@"
yann@1365
   180
   }
yann@1365
   181
 fi
yann@1365
   182
 
yann@1365
   183
diff -durN glibc-2_9.orig/posix/wordexp-tst.sh glibc-2_9/posix/wordexp-tst.sh
yann@1365
   184
--- glibc-2_9.orig/posix/wordexp-tst.sh	2000-10-20 18:23:30.000000000 +0200
yann@1365
   185
+++ glibc-2_9/posix/wordexp-tst.sh	2009-02-02 22:01:23.000000000 +0100
yann@1365
   186
@@ -19,8 +19,11 @@
yann@1365
   187
 "
yann@1365
   188
 export IFS
yann@1365
   189
 
yann@1365
   190
+# make sure libdl is also in path in case sandbox is in use
yann@1365
   191
+library_path=${common_objpfx}:${common_objpfx}/dlfcn
yann@1365
   192
+
yann@1365
   193
 failed=0
yann@1365
   194
-${elf_objpfx}${rtld_installed_name} --library-path ${common_objpfx} \
yann@1365
   195
+${elf_objpfx}${rtld_installed_name} --library-path ${library_path} \
yann@1365
   196
 ${common_objpfx}posix/wordexp-test '$*' > ${testout}1
yann@1365
   197
 cat <<"EOF" | cmp - ${testout}1 >> $logfile || failed=1
yann@1365
   198
 wordexp returned 0