From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id IOnKK3gLOmEyBwAAWB0awg (envelope-from ) for ; Thu, 09 Sep 2021 09:26:16 -0400 Received: by simark.ca (Postfix, from userid 112) id 943F11EE23; Thu, 9 Sep 2021 09:26:16 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,MAILING_LIST_MULTI,RDNS_DYNAMIC,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 Received: from sourceware.org (ip-8-43-85-97.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id E574A1EE20 for ; Thu, 9 Sep 2021 09:26:14 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 3CA78384A8A1 for ; Thu, 9 Sep 2021 13:26:14 +0000 (GMT) Received: from mail-wr1-x432.google.com (mail-wr1-x432.google.com [IPv6:2a00:1450:4864:20::432]) by sourceware.org (Postfix) with ESMTPS id 59A12384B801 for ; Thu, 9 Sep 2021 13:26:01 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 59A12384B801 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=embecosm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=embecosm.com Received: by mail-wr1-x432.google.com with SMTP id v10so2579186wrd.4 for ; Thu, 09 Sep 2021 06:26:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=embecosm.com; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=Zk51sfiugI8dflkMlNKxeYzEWXI0qGxN69RmGfwy1gk=; b=FR+NjMnp6FvxhgQyT4dclaLbPVSpaikLf+09By695YEINKUvVeVI3Epk/0MHN/qlLF TL+nfDc5c0qm3/cYre/GnTBruayo4VwKIGp0/lf7eknSa2zxalff4aOqlzZDYyPR2M/H SNTTr3xDC2eQ6Y2lgO/4ohHN8wjVaAV9r9ev9wnLRh+egYMURKIwFefSZDYeTfHfcFyc 3nOSgOdupS03JIP+xFnumvmq8CGgJgzlbbv4iDD1xtuHuRTZXMQnJXHaEtQO40DY3XRo D28pRkyv8Yc9AqEX59mSk/zWsovSyO0FMFbymC5e6Rm7Wn10DYFEIZ90E1eFDdrhhKE+ DXHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=Zk51sfiugI8dflkMlNKxeYzEWXI0qGxN69RmGfwy1gk=; b=cuWd5oe/SToo9mCtlgImfykLaQSUGQn8Vz/cVjWFazbeYNL+vq4hxEpshWWFTGBIB4 ugIliDObgf9dST13KLOn5U4cZH4PmfSI/RVnK9dXqZW9XVNKGOiEao1QD/CNx+LxDA5x sgFkKnDJ51uOszjFIvpUbe735U6+BCDJtvXMv4U9rDJKi9uaNrtIjQYI0hX0Pk7LSOAW HGjWLYYSFGwt1fI/6ffdkDdETj/cf7Im9/UfKpb07JqmFh8KJbect+6ZxQrA8/P0Tvr4 K7RUpHJI3jhi3L9rUBmPgUkpaoryoFLVm54rVVT3bM5u2pfKxEhKSHD36eFxx20fmstC PCHg== X-Gm-Message-State: AOAM5324pru+EjEAreFBTf88zGYV39nBStwbg5tmvV+g6sD3pqw7n5I7 v3a1VTIgSFCUXgYnKc5uwxc9+g== X-Google-Smtp-Source: ABdhPJzXIDP5/2pUdKakZcTt2FxzjIKf3AT5W/nXHiWagCprKZkBpWbc37SvEhnPol6LPvL5jIXaRA== X-Received: by 2002:a5d:4a4e:: with SMTP id v14mr3591879wrs.271.1631193960234; Thu, 09 Sep 2021 06:26:00 -0700 (PDT) Received: from localhost (host86-153-58-62.range86-153.btcentralplus.com. [86.153.58.62]) by smtp.gmail.com with ESMTPSA id t7sm1932233wrq.90.2021.09.09.06.25.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 09 Sep 2021 06:25:59 -0700 (PDT) Date: Thu, 9 Sep 2021 14:25:58 +0100 From: Andrew Burgess To: Tom de Vries Subject: Re: [PATCH][gdb/testsuite] Fix handling of nr_args < 3 in mi_gdb_test Message-ID: <20210909132558.GW2581@embecosm.com> References: <20210909131911.GA4755@delia> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20210909131911.GA4755@delia> X-Operating-System: Linux/5.8.18-100.fc31.x86_64 (x86_64) X-Uptime: 14:24:47 up 23 days, 2:20, X-Editor: GNU Emacs [ http://www.gnu.org/software/emacs ] 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: , Cc: gdb-patches@sourceware.org Errors-To: gdb-patches-bounces+public-inbox=simark.ca@sourceware.org Sender: "Gdb-patches" * Tom de Vries [2021-09-09 15:19:13 +0200]: > Hi, > > The documentation of mi_gdb_test states that the command, pattern and message > arguments are mandatory: > ... > # mi_gdb_test COMMAND PATTERN MESSAGE [IPATTERN] -- send a command to gdb; > # test the result. > ... > > However, this is not checked, and when mi_gdb_test is called with less than 3 > arguments, it passes or fails silently. > > Fix this by using the following semantics: > - if there are less than 2 arguments, use the command as the message. > - if there is less than 1 argument, use ".*" as the pattern. > - if there are no or too much arguments, error out. I think this description is wrong, you mean: - if there are 2 arguments, ..... - if there is just 1 argument, ..... - if there are no or too many arguments, .... Otherwise, LGTM. Thanks, Andrew > > Fix a PATH issue in gdb.mi/mi-logging.exp, introduced by using the command as > message. Fix a few other trivial-looking FAILs. > > There are 11 less trivial-looking FAILs left in gdb.mi in test-cases: > - mi-nsmoribund.exp > - mi-breakpoint-changed.exp > - mi-break.exp. > > Tested on x86_64-linux. > > Any comments? > > Thanks, > - Tom > > [gdb/testsuite] Fix handling of nr_args < 3 in mi_gdb_test > > --- > gdb/testsuite/gdb.mi/mi-break.exp | 2 +- > gdb/testsuite/gdb.mi/mi-logging.exp | 2 +- > gdb/testsuite/gdb.mi/mi-memory-changed.exp | 5 +++-- > gdb/testsuite/gdb.mi/mi-nsmoribund.exp | 2 +- > gdb/testsuite/lib/mi-support.exp | 28 ++++++++++++++++++++++++---- > 5 files changed, 30 insertions(+), 9 deletions(-) > > diff --git a/gdb/testsuite/gdb.mi/mi-break.exp b/gdb/testsuite/gdb.mi/mi-break.exp > index 7d01a936947..86916c42c16 100644 > --- a/gdb/testsuite/gdb.mi/mi-break.exp > +++ b/gdb/testsuite/gdb.mi/mi-break.exp > @@ -341,7 +341,7 @@ proc_with_prefix test_explicit_breakpoints {} { > > # First check mixed explicit/parsed linespecs. > mi_gdb_test "-break-insert --function main $srcfile:$line_callee3_head" \ > - ".*Garbage following explicit linespec" > + ".*Garbage following explicit location.*" > > # Insert some breakpoints and list them > # Also, disable some so they do not interfere with other tests > diff --git a/gdb/testsuite/gdb.mi/mi-logging.exp b/gdb/testsuite/gdb.mi/mi-logging.exp > index ff47b0849c0..830ade91c6d 100644 > --- a/gdb/testsuite/gdb.mi/mi-logging.exp > +++ b/gdb/testsuite/gdb.mi/mi-logging.exp > @@ -32,7 +32,7 @@ if {[mi_runto_main] < 0} { > > set milogfile [standard_output_file "milog.txt"] > > -mi_gdb_test "-gdb-set logging file $milogfile" ".*" > +mi_gdb_test "-gdb-set logging file $milogfile" ".*" "-gdb-set logging file" > > mi_gdb_test "-gdb-set logging overwrite on" ".*" > > diff --git a/gdb/testsuite/gdb.mi/mi-memory-changed.exp b/gdb/testsuite/gdb.mi/mi-memory-changed.exp > index 4843e91dc0a..1116abffb29 100644 > --- a/gdb/testsuite/gdb.mi/mi-memory-changed.exp > +++ b/gdb/testsuite/gdb.mi/mi-memory-changed.exp > @@ -75,7 +75,8 @@ gdb_expect { > } > } > > -mi_gdb_test "set var *(unsigned int *) ${main_addr} = ${main_insn}" \ > - ".*=memory-changed,thread-group=\"i${decimal}\".addr=\"${main_addr}\",len=\"0x4\",type=\"code\".*\\^done" > +regsub 0x $main_addr "" main_addr > +mi_gdb_test "set var *(unsigned int *) 0x${main_addr} = ${main_insn}" \ > + ".*=memory-changed,thread-group=\"i${decimal}\".addr=\"0x0*${main_addr}\",len=\"0x4\",type=\"code\".*\\^done" > mi_gdb_exit > return 0 > diff --git a/gdb/testsuite/gdb.mi/mi-nsmoribund.exp b/gdb/testsuite/gdb.mi/mi-nsmoribund.exp > index 9dc3f7fdb63..b0b3b7ff1aa 100644 > --- a/gdb/testsuite/gdb.mi/mi-nsmoribund.exp > +++ b/gdb/testsuite/gdb.mi/mi-nsmoribund.exp > @@ -115,7 +115,7 @@ mi_check_thread_states \ > # gdb_test_multiple (or an MI equivalent) > > mi_gdb_test "102-break-delete" "102\\^done.*" > -mi_gdb_test "print done = 1" { = 1"} > +mi_gdb_test "print done = 1" "~\"\[$\]$decimal = 1\\\\n\"\r\n\\^done" > mi_gdb_test "103-exec-continue --all" "\[^\n\]*\r\n$running_re" > > gdb_expect { > diff --git a/gdb/testsuite/lib/mi-support.exp b/gdb/testsuite/lib/mi-support.exp > index 78290031763..f6ee352b67e 100644 > --- a/gdb/testsuite/lib/mi-support.exp > +++ b/gdb/testsuite/lib/mi-support.exp > @@ -691,16 +691,18 @@ proc mi_readnow { args } { > return $readnow_p > } > > -# mi_gdb_test COMMAND PATTERN MESSAGE [IPATTERN] -- send a command to gdb; > +# mi_gdb_test COMMAND [PATTERN [MESSAGE [IPATTERN]]] -- send a command to gdb; > # test the result. > # > # COMMAND is the command to execute, send to GDB with send_gdb. If > # this is the null string no command is sent. > # PATTERN is the pattern to match for a PASS, and must NOT include > # the \r\n sequence immediately before the gdb prompt. > +# If not specified, .* is used. > # MESSAGE is the message to be printed. (If this is the empty string, > # then sometimes we don't call pass or fail at all; I don't > # understand this at all.) > +# If not specified, COMMAND is used. > # IPATTERN is the pattern to match for the inferior's output. This parameter > # is optional. If present, it will produce a PASS if the match is > # successful, and a FAIL if unsuccessful. > @@ -717,9 +719,23 @@ proc mi_gdb_test { args } { > global inferior_exited_re async > upvar timeout timeout > > - set command [lindex $args 0] > - set pattern [lindex $args 1] > - set message [lindex $args 2] > + if { [llength $args] >= 1 } then { > + set command [lindex $args 0] > + } else { > + error "Not enough arguments in mi_gdb_test" > + } > + > + if { [llength $args] >= 2 } then { > + set pattern [lindex $args 1] > + } else { > + set pattern ".*" > + } > + > + if { [llength $args] >= 3 } then { > + set message [lindex $args 2] > + } else { > + set message $command > + } > > if [llength $args]==4 { > set ipattern [lindex $args 3] > @@ -732,6 +748,10 @@ proc mi_gdb_test { args } { > set question_string "^FOOBAR$" > } > > + if { [llength $args] >= 6 } { > + error "Too many arguments in mi_gdb_test" > + } > + > if $verbose>2 then { > send_user "Sending \"$command\" to gdb\n" > send_user "Looking to match \"$pattern\"\n"