diff options
author | Tom de Vries <tdevries@suse.de> | 2023-03-28 10:22:48 +0200 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2023-03-28 10:22:48 +0200 |
commit | 29dd2d27b202cb4f16c77008e8b71b5554b435fc (patch) | |
tree | 1da449057faa5dc2ad070c0c02caee18ea887bef | |
parent | 7ec0e36e9f102279fa2aa2138fb2bd09fdf4cd49 (diff) | |
download | gdb-29dd2d27b202cb4f16c77008e8b71b5554b435fc.zip gdb-29dd2d27b202cb4f16c77008e8b71b5554b435fc.tar.gz gdb-29dd2d27b202cb4f16c77008e8b71b5554b435fc.tar.bz2 |
[gdb/testsuite] Add can_compile rust
If I deinstall the rust compiler, I get:
...
gdb compile failed, default_target_compile: Can't find rustc --color never.
UNTESTED: gdb.rust/watch.exp: failed to prepare
...
Fix this by adding can_compile rust, and using it in allow_rust_tests, such
that we have instead:
...
UNSUPPORTED: gdb.rust/watch.exp: require failed: allow_rust_tests
...
Since the rest of the code in allow_rust_tests is also about availability of
the rust compiler, move it to can_compile.
Tested on x86_64-linux.
-rw-r--r-- | gdb/testsuite/lib/gdb.exp | 65 |
1 files changed, 42 insertions, 23 deletions
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index 0d06401..769bb28 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -2470,31 +2470,43 @@ gdb_caching_proc can_compile { lang } { return [gdb_can_simple_compile can_compile_$lang $src executable {d}] } + if { $lang == "rust" } { + if { ![isnative] } { + return 0 + } + + if { [is_remote host] } { + # Proc find_rustc returns "" for remote host. + return 0 + } + + # The rust compiler does not support "-m32", skip. + global board board_info + set board [target_info name] + if {[board_info $board exists multilib_flags]} { + foreach flag [board_info $board multilib_flags] { + if { $flag == "-m32" } { + return 0 + } + } + } + + set src { fn main() {} } + # Drop nowarnings in default_compile_flags, it translates to -w which + # rustc doesn't support. + return [gdb_can_simple_compile can_compile_$lang $src executable \ + {rust} {debug quiet}] + } + error "can_compile doesn't support lang: $lang" } # Return 1 to try Rust tests, 0 to skip them. proc allow_rust_tests {} { - if { ![isnative] } { + if { ![can_compile rust] } { return 0 } - if { [is_remote host] } { - # Proc find_rustc returns "" for remote host. - return 0 - } - - # The rust compiler does not support "-m32", skip. - global board board_info - set board [target_info name] - if {[board_info $board exists multilib_flags]} { - foreach flag [board_info $board multilib_flags] { - if { $flag == "-m32" } { - return 0 - } - } - } - return 1 } @@ -4620,11 +4632,12 @@ gdb_caching_proc universal_compile_options {} { } # Compile the code in $code to a file based on $name, using the flags -# $compile_flag as well as debug, nowarning and quiet. +# $compile_flag as well as debug, nowarning and quiet (unless otherwise +# specified in default_compile_flags). # Return 1 if code can be compiled # Leave the file name of the resulting object in the upvar object. -proc gdb_simple_compile {name code {type object} {compile_flags {}} {object obj}} { +proc gdb_simple_compile {name code {type object} {compile_flags {}} {object obj} {default_compile_flags {}}} { upvar $object obj switch -regexp -- $type { @@ -4658,7 +4671,11 @@ proc gdb_simple_compile {name code {type object} {compile_flags {}} {object obj} } set src [standard_temp_file $name.$ext] set obj [standard_temp_file $name.$postfix] - set compile_flags [concat $compile_flags {debug nowarnings quiet}] + if { $default_compile_flags == "" } { + set compile_flags [concat $compile_flags {debug nowarnings quiet}] + } else { + set compile_flags [concat $compile_flags $default_compile_flags] + } gdb_produce_source $src $code @@ -4675,12 +4692,14 @@ proc gdb_simple_compile {name code {type object} {compile_flags {}} {object obj} } # Compile the code in $code to a file based on $name, using the flags -# $compile_flag as well as debug, nowarning and quiet. +# $compile_flag as well as debug, nowarning and quiet (unless otherwise +# specified in default_compile_flags). # Return 1 if code can be compiled # Delete all created files and objects. -proc gdb_can_simple_compile {name code {type object} {compile_flags ""}} { - set ret [gdb_simple_compile $name $code $type $compile_flags temp_obj] +proc gdb_can_simple_compile {name code {type object} {compile_flags ""} {default_compile_flags ""}} { + set ret [gdb_simple_compile $name $code $type $compile_flags temp_obj \ + $default_compile_flags] file delete $temp_obj return $ret } |