From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io1-xd29.google.com (mail-io1-xd29.google.com [IPv6:2607:f8b0:4864:20::d29]) by sourceware.org (Postfix) with ESMTPS id 00EF63854145 for ; Fri, 7 Oct 2022 18:01:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 00EF63854145 Received: by mail-io1-xd29.google.com with SMTP id o65so4219281iof.4 for ; Fri, 07 Oct 2022 11:01:36 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=1Kyob2DOaAoI4hObJLSA8ZhQcuh13Oso6VHCzbtl8l8=; b=0l7Uw+j6bZxEL1Tz9gkrS7B/TyUY5mWWycEU0k7xbJuVYJvBPIb4cFj1N7PLHsWqWO fNR/bkonwIeeKPbPt4+CIpHUqXBez92kvt/UGd6eBpu5bZ8uogiAyDLXYZiXSOe5ZQpn u1Hikp0j8ahzt/R/5Vv5BzAKehiEYfOwSwakMrMID2f2vj60R7I47aRG1IzjcJYJpiow FkoukdK5xmlV1BU8l7GLkRks07GXeuIghPpHT5NWgANzhuusEDh5zloQX0ryserIMZvE fetj7RytgK52aaGmcrsIqnRrrzhI/wxDOgPRb/WbYB7dTXQEkTBG/rlb5+WHEJMK8cuL yTnQ== X-Gm-Message-State: ACrzQf2qpBHWVZYslQbh1di80XONX32Xs7JpnX/2VtcTGLnrt637CACm 0WGakvNwUhDVvqGucFb4sFLGN3Iy3fhhNA== X-Google-Smtp-Source: AMsMyM4NoXeIRjZU4vLAAoCoJIVw/jju9mL/6KWTZdWqAXnXFHMVq8eo0uUMtEcNkY2Tp3ZeICVttw== X-Received: by 2002:a05:6602:2bcd:b0:6bb:5898:c3c6 with SMTP id s13-20020a0566022bcd00b006bb5898c3c6mr2919924iov.4.1665165696573; Fri, 07 Oct 2022 11:01:36 -0700 (PDT) Received: from localhost.localdomain (71-211-160-49.hlrn.qwest.net. [71.211.160.49]) by smtp.gmail.com with ESMTPSA id h11-20020a056602154b00b006814fd71117sm1203228iow.12.2022.10.07.11.01.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Oct 2022 11:01:36 -0700 (PDT) From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [PATCH 9/9] Add test case for "finish" with variably-sized types Date: Fri, 7 Oct 2022 12:01:20 -0600 Message-Id: <20221007180120.1866772-10-tromey@adacore.com> X-Mailer: git-send-email 2.34.3 In-Reply-To: <20221007180120.1866772-1-tromey@adacore.com> References: <20221007180120.1866772-1-tromey@adacore.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-11.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) 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, 07 Oct 2022 18:02:44 -0000 This adds a test case for "finish" with variably-sized types, and for inferior calls as well. This also extends the "runto" proc to handle temporary breakpoints. --- gdb/testsuite/gdb.ada/finish-var-size.exp | 43 +++++++++++++++++++ gdb/testsuite/gdb.ada/finish-var-size/p.adb | 21 +++++++++ gdb/testsuite/gdb.ada/finish-var-size/pck.adb | 21 +++++++++ gdb/testsuite/gdb.ada/finish-var-size/pck.ads | 36 ++++++++++++++++ gdb/testsuite/lib/gdb.exp | 4 +- 5 files changed, 123 insertions(+), 2 deletions(-) create mode 100644 gdb/testsuite/gdb.ada/finish-var-size.exp create mode 100644 gdb/testsuite/gdb.ada/finish-var-size/p.adb create mode 100644 gdb/testsuite/gdb.ada/finish-var-size/pck.adb create mode 100644 gdb/testsuite/gdb.ada/finish-var-size/pck.ads diff --git a/gdb/testsuite/gdb.ada/finish-var-size.exp b/gdb/testsuite/gdb.ada/finish-var-size.exp new file mode 100644 index 00000000000..aab3fd6474e --- /dev/null +++ b/gdb/testsuite/gdb.ada/finish-var-size.exp @@ -0,0 +1,43 @@ +# Copyright 2022 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +load_lib "ada.exp" + +if { [skip_ada_tests] } { return -1 } + +# GCC 12 has the needed fix. +if {![test_compiler_info {gcc-1[2-9]-*}]} { + untested "GCC too told for this test" + return -1 +} + +standard_ada_testfile p + +if {[gdb_compile_ada "${srcfile}" "${binfile}" executable debug] != ""} { + return -1 +} + +clean_restart ${testfile} +runto "pck.get" temporary + +set value [string_to_regexp "= (defined => true, payload => true)"] + +# With some ABIs the return value cannot be determined. Accept this, +# or the correct result. +gdb_test "finish" \ + "Value returned .*($value|Cannot determine contents)" + +# Test that an inferior call yields the correct result. +gdb_test "print pck.get(True)" $value diff --git a/gdb/testsuite/gdb.ada/finish-var-size/p.adb b/gdb/testsuite/gdb.ada/finish-var-size/p.adb new file mode 100644 index 00000000000..33d7b4895b4 --- /dev/null +++ b/gdb/testsuite/gdb.ada/finish-var-size/p.adb @@ -0,0 +1,21 @@ +-- Copyright 2022 Free Software Foundation, Inc. +-- +-- This program is free software; you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation; either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Pck; use Pck; +procedure P is + V : Result_T := Get (True); +begin + null; +end P; diff --git a/gdb/testsuite/gdb.ada/finish-var-size/pck.adb b/gdb/testsuite/gdb.ada/finish-var-size/pck.adb new file mode 100644 index 00000000000..884cf9160fd --- /dev/null +++ b/gdb/testsuite/gdb.ada/finish-var-size/pck.adb @@ -0,0 +1,21 @@ +-- Copyright 2022 Free Software Foundation, Inc. +-- +-- This program is free software; you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation; either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package body Pck is + function Get (Value: Boolean) return Result_T is + begin + return (Defined => True, Payload => Value); + end Get; +end Pck; diff --git a/gdb/testsuite/gdb.ada/finish-var-size/pck.ads b/gdb/testsuite/gdb.ada/finish-var-size/pck.ads new file mode 100644 index 00000000000..d6fcbfa1f1d --- /dev/null +++ b/gdb/testsuite/gdb.ada/finish-var-size/pck.ads @@ -0,0 +1,36 @@ +-- Copyright 2022 Free Software Foundation, Inc. +-- +-- This program is free software; you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation; either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package Pck is + type Array_Type is array (1 .. 64) of Integer; + + type Maybe_Array (Defined : Boolean := False) is + record + Arr : Array_Type; + Arr2 : Array_Type; + end record; + + type Result_T (Defined : Boolean := False) is + record + case Defined is + when False => + Arr : Maybe_Array; + when True => + Payload : Boolean; + end case; + end record; + + function Get (Value: Boolean) return Result_T; +end Pck; diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index 44cc28b3005..aa71cfd5e42 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -719,13 +719,13 @@ proc runto { linespec args } { # the "at foo.c:36" output we get with -g. # the "in func" output we get without -g. gdb_expect 30 { - -re "Break.* at .*:$decimal.*$gdb_prompt $" { + -re "(?:Break|Temporary break).* at .*:$decimal.*$gdb_prompt $" { if { $print_pass } { pass $test_name } return 1 } - -re "Breakpoint \[0-9\]*, \[0-9xa-f\]* in .*$gdb_prompt $" { + -re "(?:Breakpoint|Temporary breakpoint) \[0-9\]*, \[0-9xa-f\]* in .*$gdb_prompt $" { if { $print_pass } { pass $test_name } -- 2.34.3