public inbox for libc-hacker@sourceware.org
 help / color / mirror / Atom feed
From: Steven Munroe <munroesj@us.ibm.com>
To: GNU libc hacker <libc-hacker@sources.redhat.com>
Cc: Dwayne McConnell <decimal@us.ibm.com>, Ryan Arnold <rsa@us.ibm.com>
Subject: [PATCH]  fix run-iconv-test.sh
Date: Fri, 21 Jul 2006 19:14:00 -0000	[thread overview]
Message-ID: <44C12858.7030502@us.ibm.com> (raw)

[-- 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"
 

             reply	other threads:[~2006-07-21 19:14 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-07-21 19:14 Steven Munroe [this message]
2006-08-01  6:47 ` Ulrich Drepper

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=44C12858.7030502@us.ibm.com \
    --to=munroesj@us.ibm.com \
    --cc=decimal@us.ibm.com \
    --cc=libc-hacker@sources.redhat.com \
    --cc=rsa@us.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).