diff options
-rw-r--r-- | gdb/testsuite/ChangeLog | 11 | ||||
-rw-r--r-- | gdb/testsuite/lib/future.exp | 68 | ||||
-rw-r--r-- | gdb/testsuite/lib/gdb.exp | 6 |
3 files changed, 72 insertions, 13 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index cd32440..daed393 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,14 @@ +2020-06-19 Tom de Vries <tdevries@suse.de> + + * lib/gdb.exp (gdb_note): New proc. + * lib/future.exp (gdb_default_target_compile_1): Factor out of ... + (gdb_default_target_compile): ... here. Only call + gdb_default_target_compile_1 if use_gdb_compile(<lang>) is set. + (use_gdb_compile): Change to array. + (toplevel): Update sets of use_gdb_compile to specify language. + Warn about default_target_compile override. Store dejagnu's version + of default_target_compile in dejagnu_default_target_compile. + 2020-06-18 Tom de Vries <tdevries@suse.de> * lib/gdb.exp (gdb_init): Move all but call to default_gdb_init to ... diff --git a/gdb/testsuite/lib/future.exp b/gdb/testsuite/lib/future.exp index 62cc7e6..ba00a31 100644 --- a/gdb/testsuite/lib/future.exp +++ b/gdb/testsuite/lib/future.exp @@ -172,7 +172,9 @@ proc gdb_find_eu-unstrip {} { return $eu_unstrip } -proc gdb_default_target_compile {source destfile type options} { +# Local version of default_target_compile, to be used for languages that +# dejagnu's default_target_compile doesn't support. +proc gdb_default_target_compile_1 {source destfile type options} { global target_triplet global tool_root_dir global CFLAGS_FOR_TARGET @@ -627,40 +629,80 @@ proc gdb_default_target_compile {source destfile type options} { return ${comp_output} } -# See if the version of dejaGNU being used to run the testsuite is -# recent enough to contain support for building Ada programs or not. -# If not, then use the functions above in place of the ones provided -# by dejaGNU. This is only temporary (brobecker/2004-03-31). +# If dejagnu's default_target_compile supports the language specified in +# OPTIONS, use it. Otherwise, use gdb_default_target_compile_1. +proc gdb_default_target_compile {source destfile type options} { + global use_gdb_compile + + set need_local 0 + foreach i $options { + + if { $i == "ada" || $i == "d" || $i == "go" || $i == "rust" } { + set need_local [info exists use_gdb_compile($i)] + break + } + + if { $i == "c++" } { + break + } + + if { $i == "f77" || $i == "f90" } { + set need_local [info exists use_gdb_compile(fortran)] + break + } + } + + if { $need_local } { + return [gdb_default_target_compile_1 $source $destfile $type $options] + } + + return [dejagnu_default_target_compile $source $destfile $type $options] +} + +# Array of languages for which dejagnu's default_target_compile is missing +# support. +array set use_gdb_compile [list] + +# Note missing support in dejagnu's default_target_compile. This +# needs to be fixed by porting the missing support to Dejagnu. +set note_prefix "Dejagnu's default_target_compile is missing support for " +set note_suffix ", using local override" -set use_gdb_compile 0 if {[info procs find_gnatmake] == ""} { rename gdb_find_gnatmake find_gnatmake - set use_gdb_compile 1 + set use_gdb_compile(ada) 1 + gdb_note [join [list $note_prefix "Ada" $note_suffix] ""] } if {[info procs find_gfortran] == ""} { rename gdb_find_gfortran find_gfortran - set use_gdb_compile 1 + set use_gdb_compile(fortran) 1 + gdb_note [join [list $note_prefix "Fortran" $note_suffix] ""] } if {[info procs find_go_linker] == ""} { rename gdb_find_go find_go rename gdb_find_go_linker find_go_linker - set use_gdb_compile 1 + set use_gdb_compile(go) 1 + gdb_note [join [list $note_prefix "Go" $note_suffix] ""] } if {[info procs find_gdc] == ""} { rename gdb_find_gdc find_gdc - set use_gdb_compile 1 + set use_gdb_compile(d) 1 + gdb_note [join [list $note_prefix "D" $note_suffix] ""] } if {[info procs find_rustc] == ""} { rename gdb_find_rustc find_rustc - set use_gdb_compile 1 + set use_gdb_compile(rust) 1 + gdb_note [join [list $note_prefix "Rust" $note_suffix] ""] } -if {$use_gdb_compile} { - catch {rename default_target_compile {}} +# If dejagnu's default_target_compile is missing support for any language, +# override it. +if { [array size use_gdb_compile] != 0 } { + catch {rename default_target_compile dejagnu_default_target_compile} rename gdb_default_target_compile default_target_compile } diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index 480af70..7b243f5 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -7393,5 +7393,11 @@ proc tuiterm_env { } { lappend gdb_finish_hooks tuiterm_env_finish } +# Dejagnu has a version of note, but usage is not allowed outside of dejagnu. +# Define a local version. +proc gdb_note { message } { + verbose -- "NOTE: $message" 0 +} + # Always load compatibility stuff. load_lib future.exp |