From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 64628 invoked by alias); 30 Jan 2018 04:49:08 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 64547 invoked by uid 89); 30 Jan 2018 04:49:01 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.3 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: rock.gnat.com Received: from rock.gnat.com (HELO rock.gnat.com) (205.232.38.15) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 30 Jan 2018 04:48:58 +0000 Received: from localhost (localhost.localdomain [127.0.0.1]) by filtered-rock.gnat.com (Postfix) with ESMTP id 7059D560A5; Mon, 29 Jan 2018 23:48:57 -0500 (EST) Received: from rock.gnat.com ([127.0.0.1]) by localhost (rock.gnat.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id LCCK-TxymrSa; Mon, 29 Jan 2018 23:48:57 -0500 (EST) Received: from joel.gnat.com (localhost.localdomain [127.0.0.1]) by rock.gnat.com (Postfix) with ESMTP id F10015601D; Mon, 29 Jan 2018 23:48:56 -0500 (EST) Received: by joel.gnat.com (Postfix, from userid 1000) id BD86483307; Tue, 30 Jan 2018 08:48:52 +0400 (+04) Date: Tue, 30 Jan 2018 04:49:00 -0000 From: Joel Brobecker To: Xavier Roirand Cc: gdb-patches@sourceware.org Subject: Re: [PATCH 2/4] (Ada/MI) Add testcase for mi catch assert with condition Message-ID: <20180130044852.ggahnvqrkdy6znez@adacore.com> References: <20180123114306.b6w2csxzygomqlnd@adacore.com> <1517230012-30010-1-git-send-email-roirand@adacore.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1517230012-30010-1-git-send-email-roirand@adacore.com> User-Agent: NeoMutt/20170113 (1.7.2) X-SW-Source: 2018-01/txt/msg00617.txt.bz2 On Mon, Jan 29, 2018 at 01:46:52PM +0100, Xavier Roirand wrote: > gdb/testsuite/ChangeLog: > > * gdb.ada/mi_catch_assert.exp: New testcase. > * gdb.ada/mi_catch_assert/bla.adb: New file. > * gdb.ada/mi_catch_assert/pck.ads: New file. > > Tested on x86_64-linux. > --- > gdb/testsuite/gdb.ada/mi_catch_assert.exp | 99 +++++++++++++++++++++++++++ > gdb/testsuite/gdb.ada/mi_catch_assert/bla.adb | 46 +++++++++++++ > gdb/testsuite/gdb.ada/mi_catch_assert/pck.ads | 19 +++++ > 3 files changed, 164 insertions(+) > create mode 100644 gdb/testsuite/gdb.ada/mi_catch_assert.exp > create mode 100644 gdb/testsuite/gdb.ada/mi_catch_assert/bla.adb > create mode 100644 gdb/testsuite/gdb.ada/mi_catch_assert/pck.ads > > diff --git a/gdb/testsuite/gdb.ada/mi_catch_assert.exp b/gdb/testsuite/gdb.ada/mi_catch_assert.exp > new file mode 100644 > index 0000000..ff8943c > --- /dev/null > +++ b/gdb/testsuite/gdb.ada/mi_catch_assert.exp > @@ -0,0 +1,99 @@ > +# Copyright 2011-2018 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" > + > +standard_ada_testfile bla > + > +if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug additional_flags=-gnata ]] != "" } { > + return -1 > +} > + > +# Some global variables used to simplify the maintenance of some of > +# the regular expressions below. > +set eol "\[\r\n\]+" > +set sp "\[ \t\]*" > + > +# Before going any further, verify that we can insert exception > +# catchpoints... That way, we won't have to do this while doing > +# the actual GDB/MI testing. > + > +clean_restart ${testfile} > + > +if ![runto_main] then { > + fail "cannot run to main, testcase aborted" > + return 0 > +} > + > +set msg "insert catchpoint on all Ada exceptions" > +gdb_test_multiple "catch exception" $msg { > + -re "Catchpoint $decimal: all Ada exceptions$eol$gdb_prompt $" { > + pass $msg > + } > + -re "Your Ada runtime appears to be missing some debugging information.*\[\r\n\]+$gdb_prompt $" { > + # If the runtime was not built with enough debug information, > + # or if it was stripped, we can not test exception > + # catchpoints. > + unsupported $msg > + return -1 > + } > +} > + > +# Now, we can start the GDB/MI testing itself... > + > +load_lib mi-support.exp > +set MIFLAGS "-i=mi" > + > +gdb_exit > +if [mi_gdb_start] { > + continue > +} > + > +mi_delete_breakpoints > +mi_gdb_reinitialize_dir $srcdir/$subdir > +mi_gdb_load ${binfile} > + > +################################################### > +# 2. Try catching conditionnal failed assertion. # > +################################################### > + > +# Here is the scenario: > +# - Restart the debugger from scratch, runto_main > +# We'll catch assertions if Global_Var = 2 > +# - continue, we should see the second failed assertion > +# - continue, the program exits. > + > +if ![mi_run_to_main] then { > + fail "cannot run to main, testcase aborted" > + return 0 > +} > + > +mi_gdb_test "-catch-assert -c \"Global_Var = 2\"" \ > + "\\^done,bkptno=\"$decimal\",bkpt={.*disp=\"keep\",enabled=\"y\",addr=\"$hex\",what=\"failed Ada assertions\",.*}" \ > + "catch assert failures with condition" Can you also verify the condition in the "done" message? > +set bp_location [gdb_get_line_number "STOP" ${testdir}/bla.adb] > +mi_execute_to "exec-continue" \ > + "breakpoint-hit\",disp=\"keep\",bkptno=\"$decimal" \ > + "bla" "" ".*" "$bp_location" \ > + ".*" \ > + "continue to assert failure catchpoint hit" > + > +# Exit the inferior. > +mi_send_resuming_command "exec-continue" "continuing to inferior exit" > +mi_expect_stop "exited-normally" "" "" "" "" "" "exit normally" > + > +mi_gdb_exit > +return 0 The "return 0" is not necessary; can you remove it? I'm not sure about the necessity of "mi_gdb_exit", but we don't have it in any of the gdb.ada tests, so how about we skip it for now? No further comments past this point. > diff --git a/gdb/testsuite/gdb.ada/mi_catch_assert/bla.adb b/gdb/testsuite/gdb.ada/mi_catch_assert/bla.adb > new file mode 100644 > index 0000000..6b3b2e7 > --- /dev/null > +++ b/gdb/testsuite/gdb.ada/mi_catch_assert/bla.adb > @@ -0,0 +1,46 @@ > +-- Copyright 2018 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 Bla is > +begin > + Global_Var := 1; > + declare > + begin > + pragma Assert (Global_Var /= 1, "Error #1"); > + exception > + when others => > + null; > + end; > + > + Global_Var := 2; > + declare > + begin > + pragma Assert (Global_Var = 1, "Error #2"); -- STOP > + exception > + when others => > + null; > + end; > + > + Global_Var := 3; > + declare > + begin > + pragma Assert (Global_Var = 2, "Error #3"); > + exception > + when others => > + null; > + end; > +end Bla; > diff --git a/gdb/testsuite/gdb.ada/mi_catch_assert/pck.ads b/gdb/testsuite/gdb.ada/mi_catch_assert/pck.ads > new file mode 100644 > index 0000000..f00f5b3 > --- /dev/null > +++ b/gdb/testsuite/gdb.ada/mi_catch_assert/pck.ads > @@ -0,0 +1,19 @@ > +-- Copyright 2018 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 > + Global_Var : Integer := 0; > +end Pck; > + > -- > 2.7.4 -- Joel