diff options
author | Tom de Vries <tdevries@suse.de> | 2020-06-19 17:55:52 +0200 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2020-06-19 17:55:52 +0200 |
commit | 37ab86550b9da31d6c32c2d3384bd27f0426e935 (patch) | |
tree | 3217dad4a90639ed443d399051eb555695fed576 | |
parent | 13aa5ceb01cc94a0e617f397c0c5434fc22bb1e5 (diff) | |
download | gdb-37ab86550b9da31d6c32c2d3384bd27f0426e935.zip gdb-37ab86550b9da31d6c32c2d3384bd27f0426e935.tar.gz gdb-37ab86550b9da31d6c32c2d3384bd27f0426e935.tar.bz2 |
[gdb/testsuite] Limit default_target_compile override
The file lib/future.exp contains an override of dejagnu's
default_target_compile.
The override is activated if dejagnu's default_target_compile is missing
support for one or more languages.
However, if the override is activated, it's active for all languages.
This unnecessarily extends the scope of potential problems in the override to
languages that don't need the override.
Fix this by limiting the scope of the override.
Also add a note stating for which languages the override is active, as a
reminder that support for those languages needs to be ported to dejagnu. With
my system dejagnu 1.6.1, as well as with current dejagnu trunk, that gives us:
...
NOTE: Dejagnu's default_target_compile is missing support for Go, using \
local override
NOTE: Dejagnu's default_target_compile is missing support for Rust, using \
local override
...
Tested on x86_64-linux.
gdb/testsuite/ChangeLog:
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.
-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 |