# This test code is part of GDB, the GNU debugger. # Copyright 1998-2016 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . load_lib "libgloss.exp" # GCJ_UNDER_TEST is the compiler under test. global tmpdir if ![info exists tmpdir] { set tmpdir "/tmp" } set java_initialized 0 # # Build the status wrapper library as needed. # proc java_init { args } { global wrapper_file global wrap_compile_flags global java_initialized global GCJ_UNDER_TEST global TOOL_EXECUTABLE global env if { $java_initialized == 1 } { return; } if ![info exists GCJ_UNDER_TEST] { if [info exists TOOL_EXECUTABLE] { set GCJ_UNDER_TEST $TOOL_EXECUTABLE } else { if { [info exists env(GCJ)] && $env(GCJ) != "" } { set GCJ_UNDER_TEST $env(GCJ) } else { global tool_root_dir global target_alias if ![is_remote host] { set file [lookfor_file $tool_root_dir gcj] if { $file == "" } { set file [lookfor_file $tool_root_dir gcc/gcj] } if { $file != "" } { set CC "$file -B[file dirname $file]/ --specs=$tool_root_dir/$target_alias/libjava/libgcj-test.spec" } else { set CC [transform gcj] } } else { set CC [transform gcj] } set GCJ_UNDER_TEST $CC } } } set wrapper_file "" set wrap_compile_flags "" if [target_info exists needs_status_wrapper] { set result [build_wrapper "testglue.o"] if { $result != "" } { set wrapper_file [lindex $result 0] set wrap_compile_flags [lindex $result 1] } else { warning "Status wrapper failed to build." } } set java_initialized 1 } # # Run the test specified by srcfile and resultfile. compile_args and # exec_args are options telling this proc how to work. # proc compile_java_from_source { srcfile binfile compile_args } { global GCJ_UNDER_TEST global java_initialized if { $java_initialized != 1 } { java_init } set args [list "compiler=$GCJ_UNDER_TEST"] lappend args "additional_flags=--main=[file rootname [file tail $srcfile]]" if { $compile_args != "" } { lappend args "additional_flags=$compile_args" } set result [target_compile $srcfile ${binfile} executable $args] gdb_compile_test $srcfile $result return $result } # Auxiliary function to set the language to java. # The result is 1 (true) for success, 0 (false) for failure. proc set_lang_java {} { if [gdb_test_no_output "set language java"] { return 0 } if [gdb_test "show language" ".* source language is \"java\"." \ "set language to \"java\""] { return 0 } return 1 } # Local Variables: # tcl-indent-level:4 # End: