PATCH: GCC 3.2 suddenly fails every java test, CLASSPATH wrong

H. J. Lu hjl@lucon.org
Fri Aug 16 10:59:00 GMT 2002


On Fri, Aug 16, 2002 at 11:43:46AM -0600, Tom Tromey wrote:
> H.J.> http://gcc.gnu.org/ml/gcc/2002-08/msg00901.html
> 
> Thanks.  Try the appended patch.  I think it will work (I did some
> testing in tclsh).  If it works for you I will check it in.
> 
> Tom
> 
> Index: ChangeLog
> from  Tom Tromey  <tromey@redhat.com>
> 
> 	* lib/libjava.exp (libjava_init): Handle case where gcc has a
> 	release version number.
> 
> Index: lib/libjava.exp
> ===================================================================
> RCS file: /cvs/gcc/gcc/libjava/testsuite/lib/libjava.exp,v
> retrieving revision 1.43
> diff -u -r1.43 libjava.exp
> --- lib/libjava.exp 24 Jun 2002 04:44:53 -0000 1.43
> +++ lib/libjava.exp 16 Aug 2002 17:41:01 -0000
> @@ -132,7 +132,9 @@
>  
>      # Determine the version so we can find the libgcj jar file.
>      set text [eval exec "$GCJ_UNDER_TEST --version 2>@ stdout"]
> -    regexp -- "gcj \[^ \]+ (\[^ \]+) .*" $text ignore gcc_version
> +    # Extract the first line and operate on that.
> +    set text [lindex [split $text \n] 0]
> +    regexp -- "gcj \[^ \]+ (\[^ \]+)( .*|)$" $text ignore gcc_version
>      verbose "jar file is libgcj-$gcc_version.jar"
>  
>      # FIXME: This finds libgcj.spec for the default multilib.

I don't like it. We got into trouble with it before already. What is
wrong with tcl glob? Here is mine replacing find with tcl glob.


H.J.
-------------- next part --------------
2002-08-16  H.J. Lu <hjl@gnu.org>

	* lib/libjava.exp (gcc_version): Removed.
	(libgcj_jar): New.
	(libjava_init): Set libgcj_jar with tcl glob.
	(libjava_arguments): Use libgcj_jar.

--- libjava/testsuite/lib/libjava.exp.release	Sun May 19 21:51:07 2002
+++ libjava/testsuite/lib/libjava.exp	Thu Aug 15 12:09:04 2002
@@ -112,7 +112,7 @@ proc libjava_init { args } {
     global TOOL_EXECUTABLE
     global original_ld_library_path
     global env objdir
-    global env gcc_version
+    global env libgcj_jar
     global tool_root_dir
     global libjava_libgcc_s_path
 
@@ -130,10 +130,9 @@ proc libjava_init { args } {
 	}
     }
 
-    # Determine the version so we can find the libgcj jar file.
-    set text [eval exec "$GCJ_UNDER_TEST --version 2>@ stdout"]
-    regexp -- "gcj \[^ \]+ (\[^ \]+) .*" $text ignore gcc_version
-    verbose "jar file is libgcj-$gcc_version.jar"
+    # Find the libgcj jar file.
+    set libgcj_jar [glob $objdir/../libgcj-*.jar]
+    verbose "jar file is $libgcj_jar"
 
     # FIXME: This finds libgcj.spec for the default multilib.
     # If thread models differ between multilibs, this has to be moved
@@ -271,7 +270,7 @@ proc libjava_arguments {{mode compile}} 
     global runtests
     global env
     global tool_root_dir
-    global gcc_version
+    global libgcj_jar
     global libjava_libgcc_s_path
 
     if [info exists LIBJAVA] {
@@ -337,9 +336,9 @@ proc libjava_arguments {{mode compile}} 
     verbose "LD_LIBRARY_PATH = $env(LD_LIBRARY_PATH)"
 
     # Set the CLASSPATH environment variable
-    verbose "CLASSPATH is .:$srcdir/$subdir:$objdir:$objdir/../libgcj-$gcc_version.jar"
+    verbose "CLASSPATH is .:$srcdir/$subdir:$objdir:$libgcj_jar"
     global env
-    set env(CLASSPATH) ".:$srcdir/$subdir:$objdir:$objdir/../libgcj-$gcc_version.jar"
+    set env(CLASSPATH) ".:$srcdir/$subdir:$objdir:$libgcj_jar"
 
     if {$mode == "link"} {
 	global wrapper_file wrap_compile_flags;


More information about the Java mailing list