[PATCH][gdb/testsuite] Limit default_target_compile override
Luis Machado
luis.machado@linaro.org
Fri Jun 26 11:35:15 GMT 2020
Report here now, so it gets included in 10.1.
https://sourceware.org/bugzilla/show_bug.cgi?id=26175
On 6/22/20 6:34 PM, Luis Machado wrote:
> Hi,
>
> This commit seems to have caused a few regressions for aarch64-linux:
>
> -# of expected passes 75098
> -# of unexpected failures 63
> -# of expected failures 114
> +# of expected passes 75036
> +# of unexpected failures 149
> +# of expected failures 111
>
> They are distributed across a few different tests:
>
> gdb.base/display.exp
> gdb.base/jit-reader-simple.exp
> gdb.base/shlib-call.exp
> gdb.base/solib-weak.exp
> gdb.base/step-test.exp
> gdb.base/store.exp
> gdb.base/type-opaque.exp
> gdb.cp/ovldbreak.exp
> gdb.multi/multi-target.exp
> gdb.reverse/step-precsave.exp
> gdb.reverse/step-reverse.exp
>
> It seems mostly related to missing options in the compilation line. For
> example, display.exp is missing -fno-stack-protector, which leads to a
> different source stepping pattern than the test is actually expecting.
>
>
> On 6/19/20 9:10 AM, Tom de Vries wrote:
>> Hi,
>>
>> 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.
>>
>> Any comments?
>>
>> Thanks,
>> - Tom
>>
>> [gdb/testsuite] Limit default_target_compile override
>>
>> 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.
>>
>> ---
>> gdb/testsuite/lib/future.exp | 68
>> +++++++++++++++++++++++++++++++++++---------
>> gdb/testsuite/lib/gdb.exp | 6 ++++
>> 2 files changed, 61 insertions(+), 13 deletions(-)
>>
>> diff --git a/gdb/testsuite/lib/future.exp b/gdb/testsuite/lib/future.exp
>> index 62cc7e68a5..a46640c14c 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 480af7052f..7b243f5fff 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
>>
More information about the Gdb-patches
mailing list