X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=blobdiff_plain;f=libjava%2Ftestsuite%2Flib%2Flibjava.exp;h=b3a16f67169e1bedefe1c5ef83090dc4133cb427;hp=9ae18821b1cc3a0a66c366b4fac368efd01a8203;hb=6b767e9803761a1eaa07134cf0534a11c7eccaf1;hpb=85c0a7718ba922fc8746e5ffd244f77a956d3bb0 diff --git a/libjava/testsuite/lib/libjava.exp b/libjava/testsuite/lib/libjava.exp index 9ae18821b1c..b3a16f67169 100644 --- a/libjava/testsuite/lib/libjava.exp +++ b/libjava/testsuite/lib/libjava.exp @@ -1,6 +1,12 @@ -# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation +# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation -load_lib "libgloss.exp" +proc load_gcc_lib { filename } { + global srcdir + load_file $srcdir/../../gcc/testsuite/lib/$filename +} + +load_lib libgloss.exp +load_gcc_lib target-libpath.exp # GCJ_UNDER_TEST is the compiler under test. @@ -109,10 +115,11 @@ proc bytecompile_file { file objdir {classpath {}} } { } set here [pwd] cd $dirname + send_log "byte compile: $javac -g [list $file] -d $objdir 2>@ stdout\n" if {[catch { - set q [eval exec "$javac [list $file] -d $objdir 2>@ stdout"] + set q [eval exec "$javac -g [list $file] -d $objdir 2>@ stdout"] } msg]} then { - verbose "couldn't compile $file: $msg" + send_log "couldn't compile $file: $msg\n" set r 0 } else { set r 1 @@ -132,13 +139,16 @@ proc libjava_init { args } { global libjava_initialized libjava_uses_threads global GCJ_UNDER_TEST global TOOL_EXECUTABLE - global original_ld_library_path global env objdir global env libgcj_jar global tool_root_dir global libjava_libgcc_s_path global target_triplet + # We set LC_ALL and LANG to C so that we get the same error messages as expected. + setenv LC_ALL C + setenv LANG C + if { $libjava_initialized == 1 } { return; } if ![info exists GCJ_UNDER_TEST] { @@ -172,20 +182,6 @@ proc libjava_init { args } { # Always set encoding used by gcj. append GCJ_UNDER_TEST " --encoding=UTF-8" - if [info exists env(LD_LIBRARY_PATH)] { - set original_ld_library_path $env(LD_LIBRARY_PATH) - } else { - if [info exists env(SHLIB_PATH)] { - set original_ld_library_path $env(SHLIB_PATH) - } else { - if [info exists env(DYLD_LIBRARY_PATH)] { - set original_ld_library_path $env(DYLD_LIBRARY_PATH) - } else { - set original_ld_library_path "" - } - } - } - set wrapper_file ""; set wrap_compile_flags ""; if [target_info exists needs_status_wrapper] { @@ -201,8 +197,8 @@ proc libjava_init { args } { # Finally, add the gcc build directory so that we can find the # shared libgcc. This, like much of dejagnu, is hideous. set libjava_libgcc_s_path {} - - if { [string match "powerpc-*-darwin*" $target_triplet] } { + + if { [istarget "*-*-darwin*"] } { set so_extension "dylib" } else { set so_extension "so" @@ -221,7 +217,7 @@ proc libjava_init { args } { if { "$mldir" == "." } { continue } - if { [llength [glob -nocomplain ${gccdir}/${mldir}/libgcc_s*.${so_extension}.*]] == 1 } { + if { [llength [glob -nocomplain ${gccdir}/${mldir}/libgcc_s*.${so_extension}.*]] >= 1 } { lappend libjava_libgcc_s_path "${gccdir}/${mldir}" } } @@ -274,28 +270,18 @@ proc libjava_find_lib {dir name} { # is used with -B. proc libjava_find_spec {} { global objdir - set gp [get_multilibs] - - if {[file exists $gp/libjava/libgcj.spec]} then { - return "$gp/libjava/" - } return "$objdir/../" } -# Find `gij'. +# Find `gij'. Return empty string if not found. proc libjava_find_gij {} { - global base_dir - set gp [get_multilibs] - if {$gp != ""} { - set file $gp/libjava/gij - } else { - set file $base_dir/../gij - } + global base_dir objdir - if {[file exists $file]} { - return $file + set gijdir [lookfor_file [get_multilibs] libjava]; + if {! [file exists $gijdir/gij]} { + return "" } - return gij + return $gijdir/gij } # Remove a bunch of files. @@ -327,6 +313,9 @@ proc libjava_arguments {{mode compile}} { global tool_root_dir global libgcj_jar global libjava_libgcc_s_path + global libjava_ld_library_path + global ld_library_path + global target_triplet if [info exists LIBJAVA] { set libjava $LIBJAVA; @@ -340,7 +329,7 @@ proc libjava_arguments {{mode compile}} { # Basically we want to build up a colon separated path list from # the value of $libjava. - set lpath {} + set lpath "." foreach dir [list $libjava] { foreach item [split $dir " "] { switch -glob -- $item { @@ -354,23 +343,29 @@ proc libjava_arguments {{mode compile}} { set lpath [concat $lpath $libjava_libgcc_s_path] verbose "lpath = $lpath ; libgcc_s_path = $libjava_libgcc_s_path" set ld_library_path [join $lpath :] + set libjava_ld_library_path "$ld_library_path" # That's enough to make things work for the normal case. # If we wanted to handle an arbitrary value of libjava, # then we'd have to do a lot more work. - # Set variables the dynamic linker looks at. - global original_ld_library_path - setenv LD_LIBRARY_PATH "$ld_library_path:$original_ld_library_path" - setenv SHLIB_PATH "$ld_library_path:$original_ld_library_path" - setenv DYLD_LIBRARY_PATH "$ld_library_path:$original_ld_library_path" + set_ld_library_path_env_vars + if [info exists env(LD_LIBRARY_PATH)] { + verbose "LD_LIBRARY_PATH = $env(LD_LIBRARY_PATH)" + } - verbose "LD_LIBRARY_PATH = $env(LD_LIBRARY_PATH)" + # Determine CLASSPATH separator + if { [string match "i?86-pc-mingw32*" $target_triplet] } { + set sep ";" + } else { + set sep ":" + } # Set the CLASSPATH environment variable - verbose "CLASSPATH is .:$srcdir/$subdir:$objdir:$libgcj_jar" global env - set env(CLASSPATH) ".:$srcdir/$subdir:$objdir:$libgcj_jar" + set env(CLASSPATH) \ + [join [list . $srcdir/$subdir $objdir $libgcj_jar] $sep] + verbose "CLASSPATH is $env(CLASSPATH)" if {$mode == "link"} { global wrapper_file wrap_compile_flags @@ -450,28 +445,25 @@ proc gcj_link {program main files {options {}}} { # Invoke the program and see what happens. Return 0 on failure. proc gcj_invoke {program expectFile ld_library_additions} { global env - set lib_path $env(LD_LIBRARY_PATH) + global libjava_ld_library_path + global ld_library_path - set newval . + set ld_library_path "$libjava_ld_library_path" if {[llength $ld_library_additions] > 0} { - append newval :[join $ld_library_additions :] + append ld_library_path :[join $ld_library_additions :] } - append newval :$lib_path - setenv LD_LIBRARY_PATH $newval - setenv SHLIB_PATH $newval - setenv DYLD_LIBRARY_PATH $newval - - verbose "LD_LIBRARY_PATH=$env(LD_LIBRARY_PATH)" + set_ld_library_path_env_vars + if [info exists env(LD_LIBRARY_PATH)] { + verbose "LD_LIBRARY_PATH=$env(LD_LIBRARY_PATH)" + } set result [libjava_load ./$program] set status [lindex $result 0] set output [lindex $result 1] # Restore setting - setenv LD_LIBRARY_PATH $lib_path - setenv SHLIB_PATH $lib_path - setenv DYLD_LIBRAY_PATH $lib_path + restore_ld_library_path_env_vars if {$status != "pass"} { verbose "got $output" @@ -496,7 +488,22 @@ proc gcj_invoke {program expectFile ld_library_additions} { # Invoke a program and check its output. EXECUTABLE is the program; # ARGS are the arguments to the program. Returns 1 if tests passed # (or things were left untested), 0 otherwise. -proc libjava_invoke {errname testName optName executable inpfile resultfile args} { +proc libjava_invoke {errname testName optName executable inpfile resultfile + ld_library_additions args} { + global env + global libjava_ld_library_path + global ld_library_path + + set ld_library_path "$libjava_ld_library_path" + if {[llength $ld_library_additions] > 0} { + append ld_library_path :[join $ld_library_additions :] + } + + set_ld_library_path_env_vars + if [info exists env(LD_LIBRARY_PATH)] { + verbose "LD_LIBRARY_PATH=$env(LD_LIBRARY_PATH)" + } + upvar $optName opts if {[info exists opts(no-exec)]} { @@ -513,6 +520,10 @@ proc libjava_invoke {errname testName optName executable inpfile resultfile args set result [libjava_load $executable $args "$inpfile"] set status [lindex $result 0] set output [lindex $result 1] + + # Restore LD_LIBRARY_PATH setting. + restore_ld_library_path_env_vars + if {[info exists opts(xfail-exec)]} then { setup_xfail *-*-* } @@ -659,7 +670,7 @@ proc test_libjava_from_source { options srcfile compile_args inpfile resultfile set opts(xfail-output) x } if {[libjava_invoke $errname "source compiled test" opts $executable \ - $inpfile $resultfile]} { + $inpfile $resultfile ""]} { # Everything ok, so clean up. eval gcj_cleanup $removeList } @@ -793,11 +804,11 @@ proc test_libjava_from_javac { options srcfile compile_args inpfile resultfile e # We purposely ignore errors here; we still want to run the other # appropriate tests. set gij [libjava_find_gij] - # libjava_find_gij will return `gij' if it couldn't find the + # libjava_find_gij will return "" if it couldn't find the # program; in this case we want to skip the test. - if {$INTERPRETER == "yes" && $gij != "gij"} { + if {$INTERPRETER == "yes" && $gij != ""} { libjava_invoke $errname "gij test" opts $gij \ - $inpfile $resultfile $main_name + $inpfile $resultfile "" $main_name } # Initial arguments. @@ -860,7 +871,7 @@ proc test_libjava_from_javac { options srcfile compile_args inpfile resultfile e set opts(xfail-output) x } if {[libjava_invoke $errname "bytecode->native test" opts $executable \ - $inpfile $resultfile]} { + $inpfile $resultfile ""]} { # Everything ok, so clean up. eval gcj_cleanup $removeList } @@ -904,20 +915,6 @@ proc default_libjava_version {} { proc default_libjava_start { } { } -# On IRIX 6, we have to set variables akin to LD_LIBRARY_PATH, but -# called LD_LIBRARYN32_PATH (for the N32 ABI) and LD_LIBRARY64_PATH -# (for the 64-bit ABI). The right way to do this would be to modify -# unix.exp -- but that's not an option since it's part of DejaGNU -# proper, so we do it here, by trickery. We really only need to do -# this on IRIX, but it shouldn't hurt to do it anywhere else. - -proc ${tool}_set_ld_library_path { name element op } { - setenv LD_LIBRARYN32_PATH [getenv LD_LIBRARY_PATH] - setenv LD_LIBRARY64_PATH [getenv LD_LIBRARY_PATH] -} - -trace variable env(LD_LIBRARY_PATH) w ${tool}_set_ld_library_path - # Local Variables: # tcl-indent-level:4 # End: