From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qt1-x835.google.com (mail-qt1-x835.google.com [IPv6:2607:f8b0:4864:20::835]) by sourceware.org (Postfix) with ESMTPS id DC71A3858D34 for ; Fri, 26 Jun 2020 11:35:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org DC71A3858D34 Received: by mail-qt1-x835.google.com with SMTP id z2so7179018qts.5 for ; Fri, 26 Jun 2020 04:35:19 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:from:to:references:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=45nHcTVX2AmyvfX9mwJpZeiWM/1mdeKvHDk65pvtEGk=; b=ATPT/QPApnQ3i5fFTG4mexnDESph8/4wHpCjunRsNUW9gFo/Nkb0dVg72CkEYeyHZ8 5oQvN268SIqx7R4koV/PA/TxQk8VpWC1A/UZXtxNWB00HSHK/pEwfjf3BtLKE9pAMOlM EhIElfxFir/yjIRAEROd/pwCiOrOK1TH7xVbWRtGSPljaHVvyxNa0cSWqGazO4E1T04l Tlj5gC26TMXKTNERmiZ5tR0vklHbbDzoXdVvAjyyG+gLmK2R6GY02h+zLUdqkjRadtx8 WWas5K7YYD5noO2WA3fzTARFdl8MK1xgQ/WjVvC0Lby50CSZpVkEFBltP5vrqECmSn7U 61+g== X-Gm-Message-State: AOAM533JYJQBHNHF+JANKPM3t5Zqi+oCKLgQRtTzUzXaGvCGCzZmBMuv 2Ew16xfVboWeWe5G725Trq3m6C3b+lWqyA== X-Google-Smtp-Source: ABdhPJy/I57Cf/Kqw/FztM3NgBIo5oZAJn65hDTQqjOPJqPclYC3bYNTGjg8pozXX98t1m5oh0zIRQ== X-Received: by 2002:ac8:3470:: with SMTP id v45mr2312457qtb.51.1593171319051; Fri, 26 Jun 2020 04:35:19 -0700 (PDT) Received: from [192.168.0.185] ([191.34.154.80]) by smtp.gmail.com with ESMTPSA id r7sm7972188qtm.66.2020.06.26.04.35.16 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 26 Jun 2020 04:35:18 -0700 (PDT) Subject: Re: [PATCH][gdb/testsuite] Limit default_target_compile override From: Luis Machado To: Tom de Vries , gdb-patches@sourceware.org References: <20200619120959.GA10641@delia> Message-ID: Date: Fri, 26 Jun 2020 08:35:15 -0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.8.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-8.8 required=5.0 tests=BAYES_00, BODY_8BITS, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 26 Jun 2020 11:35:21 -0000 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  >> >>     * 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() 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 >>