public inbox for libc-hacker@sourceware.org
 help / color / mirror / Atom feed
* [PATCH]  fix run-iconv-test.sh
@ 2006-07-21 19:14 Steven Munroe
  2006-08-01  6:47 ` Ulrich Drepper
  0 siblings, 1 reply; 2+ messages in thread
From: Steven Munroe @ 2006-07-21 19:14 UTC (permalink / raw)
  To: GNU libc hacker; +Cc: Dwayne McConnell, Ryan Arnold

[-- Attachment #1: Type: text/plain, Size: 860 bytes --]

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.



[-- Attachment #2: ppc-iconv-test-20060713.txt --]
[-- Type: text/plain, Size: 4679 bytes --]

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"
 

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH]  fix run-iconv-test.sh
  2006-07-21 19:14 [PATCH] fix run-iconv-test.sh Steven Munroe
@ 2006-08-01  6:47 ` Ulrich Drepper
  0 siblings, 0 replies; 2+ messages in thread
From: Ulrich Drepper @ 2006-08-01  6:47 UTC (permalink / raw)
  To: Steven Munroe; +Cc: GNU libc hacker

[-- Attachment #1: Type: text/plain, Size: 298 bytes --]

Steven Munroe wrote:
> The attached patch resolves this by temporarily resetting GCONV_PATH for
> cmp commands.

I rather run the cmp command in the C locale.  That's what the patch I
checked in does.

-- 
➧ Ulrich Drepper ➧ Red Hat, Inc. ➧ 444 Castro St ➧ Mountain View, CA ❖


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 251 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2006-08-01  6:47 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-07-21 19:14 [PATCH] fix run-iconv-test.sh Steven Munroe
2006-08-01  6:47 ` Ulrich Drepper

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).