This is the mail archive of the libc-hacker@sourceware.org mailing list for the glibc project.
Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
The implementation of run-iconv-test.sh will run icong_prov specifying a GCONV_PATH for the current glibc build. Then run the cmp (from the base install) to check the results. This can be a problem because currently cmp will run with the same GCONV_PATH as iconv_prog and cmp does try to load ISO8859-1.so. Since GCONV_PATH is pointing into the current build it will try to load from there. This really gets sticky when there is a ABI or symbol version difference between the glibc build and the base install. For example if there are new relocations which ld.so from the base install does not understand (i.e. the new relocations associated with -msecure-plt). This will cause cmp to fail (segfault in the loader associated with cmp) and all the iconv-tests to fail. The attached patch resolves this by temporarily resetting GCONV_PATH for cmp commands.
2006-07-13 Steven Munroe <sjmunroe@us.ibm.com> * iconvdata/run-iconv-test.sh: Insure GCONV_PATH is set for iconv_prog and not set for the cmp command. diff -urN libc24-cvstip-20060608/iconvdata/run-iconv-test.sh libc24/iconvdata/run-iconv-test.sh --- libc24-cvstip-20060608/iconvdata/run-iconv-test.sh 2005-09-29 16:43:12.000000000 -0500 +++ libc24/iconvdata/run-iconv-test.sh 2006-07-13 14:23:41.385392446 -0500 @@ -66,7 +66,7 @@ echo "FAILED"; failed=1; continue; } echo $ac_n "OK$ac_c" if test -s testdata/$from..$t; then - cmp $temp1 testdata/$from..$t > /dev/null 2>&1 || + GCONV_PATH= cmp $temp1 testdata/$from..$t > /dev/null 2>&1 || { echo "/FAILED"; failed=1; continue; } echo $ac_n "/OK$ac_c" fi @@ -75,8 +75,11 @@ { if test $? -gt 128; then exit 1; fi echo "FAILED"; failed=1; continue; } echo $ac_n "OK$ac_c" - test -s $temp1 && cmp testdata/$from $temp2 > /dev/null 2>&1 || - { echo "/FAILED"; failed=1; continue; } + { GCONV_PATH= + test -s $temp1 && cmp testdata/$from $temp2 > /dev/null 2>&1 || + { echo "/FAILED"; failed=1; GCONV_PATH=$codir/iconvdata; continue; } + GCONV_PATH=$codir/iconvdata + } echo "/OK" rm -f $temp1 $temp2 fi @@ -91,7 +94,7 @@ { if test $? -gt 128; then exit 1; fi echo "FAILED"; failed=1; continue; } echo $ac_n "OK$ac_c" - cmp testdata/suntzus $temp1 || + GCONV_PATH= cmp testdata/suntzus $temp1 || { echo "/FAILED"; failed=1; continue; } echo "/OK" fi @@ -110,7 +113,7 @@ echo "FAILED"; failed=1; continue; } echo $ac_n "OK$ac_c" if test -s testdata/$from..$t; then - cmp $temp1 testdata/$from..$t > /dev/null 2>&1 || + GCONV_PATH= cmp $temp1 testdata/$from..$t > /dev/null 2>&1 || { echo "/FAILED"; failed=1; continue; } echo $ac_n "/OK$ac_c" fi @@ -120,8 +123,11 @@ { if test $? -gt 128; then exit 1; fi echo "FAILED"; failed=1; continue; } echo $ac_n "OK$ac_c" - test -s $temp1 && cmp testdata/$from $temp2 > /dev/null 2>&1 || - { echo "/FAILED"; failed=1; continue; } + { GCONV_PATH= + test -s $temp1 && cmp testdata/$from $temp2 > /dev/null 2>&1 || + { echo "/FAILED"; failed=1; GCONV_PATH=$codir/iconvdata; continue; } + GCONV_PATH=$codir/iconvdata + } echo "/OK" rm -f $temp1 $temp2 fi @@ -135,7 +141,7 @@ { if test $? -gt 128; then exit 1; fi echo "FAILED"; failed=1; continue; } echo $ac_n "OK$ac_c" - cmp testdata/suntzus $temp1 || + GCONV_PATH= cmp testdata/suntzus $temp1 || { echo "/FAILED"; failed=1; continue; } echo "/OK" fi @@ -153,32 +159,35 @@ # Test conversion to the endianness dependent encoding. echo $ac_n "test encoder: $utf8 -> $from $ac_c" $PROG -f $utf8 -t $from < testdata/${filename}..${utf8} > $temp1 - cmp $temp1 testdata/${filename}..${from}.BE > /dev/null 2>&1 || - cmp $temp1 testdata/${filename}..${from}.LE > /dev/null 2>&1 || - { echo "/FAILED"; failed=1; continue; } + { GCONV_PATH= + cmp $temp1 testdata/${filename}..${from}.BE > /dev/null 2>&1 || + cmp $temp1 testdata/${filename}..${from}.LE > /dev/null 2>&1 || + { echo "/FAILED"; failed=1; GCONV_PATH=$codir/iconvdata; continue; } + GCONV_PATH=$codir/iconvdata + } echo "OK" # Test conversion from the endianness dependent encoding. echo $ac_n "test decoder: $from -> $utf8 $ac_c" $PROG -f $from -t $utf8 < testdata/${filename}..${from}.BE > $temp1 - cmp $temp1 testdata/${filename}..${utf8} > /dev/null 2>&1 || + GCONV_PATH= cmp $temp1 testdata/${filename}..${utf8} > /dev/null 2>&1 || { echo "/FAILED"; failed=1; continue; } $PROG -f $from -t $utf8 < testdata/${filename}..${from}.LE > $temp1 - cmp $temp1 testdata/${filename}..${utf8} > /dev/null 2>&1 || + GCONV_PATH= cmp $temp1 testdata/${filename}..${utf8} > /dev/null 2>&1 || { echo "/FAILED"; failed=1; continue; } echo "OK" # Test byte swapping behaviour. echo $ac_n "test non-BOM: ${from}BE -> ${from}LE $ac_c" $PROG -f ${from}BE -t ${from}LE < testdata/${filename}..${from}.BE > $temp1 - cmp $temp1 testdata/${filename}..${from}.LE > /dev/null 2>&1 || + GCONV_PATH= cmp $temp1 testdata/${filename}..${from}.LE > /dev/null 2>&1 || { echo "/FAILED"; failed=1; continue; } echo "OK" # Test byte swapping behaviour. echo $ac_n "test non-BOM: ${from}LE -> ${from}BE $ac_c" $PROG -f ${from}LE -t ${from}BE < testdata/${filename}..${from}.LE > $temp1 - cmp $temp1 testdata/${filename}..${from}.BE > /dev/null 2>&1 || + GCONV_PATH= cmp $temp1 testdata/${filename}..${from}.BE > /dev/null 2>&1 || { echo "/FAILED"; failed=1; continue; } echo "OK"
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |