From patchwork Mon May 21 11:06:49 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Philippe Waroquiers X-Patchwork-Id: 27352 Received: (qmail 87437 invoked by alias); 21 May 2018 11:07:24 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 87313 invoked by uid 89); 21 May 2018 11:07:23 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-27.6 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_SHORT, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.2 spammy=0x X-HELO: mailsec110.isp.belgacom.be Received: from mailsec110.isp.belgacom.be (HELO mailsec110.isp.belgacom.be) (195.238.20.106) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 21 May 2018 11:07:21 +0000 IronPort-PHdr: =?us-ascii?q?9a23=3ASQH9Ux2zW8L36L5gsmDT+DRfVm0co7zxezQtwd8Z?= =?us-ascii?q?seIeKvad9pjvdHbS+e9qxAeQG9mDsLQc06L/iOPJYSQ4+5GPsXQPItRndiQuro?= =?us-ascii?q?EopTEmG9OPEkbhLfTnPGQQFcVGU0J5rTngaRAGUMnxaEfPrXKs8DUcBgvwNRZv?= =?us-ascii?q?JuTyB4Xek9m72/q99pHPbQhEniaxba9vJxiqsAvdsdUbj5F/Iagr0BvJpXVIe+?= =?us-ascii?q?VSxWx2IF+Yggjx6MSt8pN96ipco/0u+dJOXqX8ZKQ4UKdXDC86PGAv5c3krgfM?= =?us-ascii?q?QA2S7XYBSGoWkx5IAw/Y7BHmW5r6ryX3uvZh1CScIMb7S60/Vza/4KdxUBLmiD?= =?us-ascii?q?kJOSM3/m/UjcJ/jqxbrQm9qxBj2YPYfJuYOOZicq7bYNgURXBBXsFUVyFZGI28?= =?us-ascii?q?b4oPD+4APeZAt4nyuUYFohukCgm2A+Pv0yJIhn7o0q0gyOQqDAbL3BQgH9IPtH?= =?us-ascii?q?TUrc31NL8MXuyvwqjH1y/Db/RP2Tfg6YjHbAohoeqXULJrcsrQyU8vGB3ZjlmK?= =?us-ascii?q?soPqISqY2+IQuGaV6OpgUPigi28hqwxprTivwNoshpPOhoIPxVDJ8zhyzoUtJd?= =?us-ascii?q?CgVUJ3fdqpHIFNuyyUK4d6WN4uT39ptSog1LELt4C3cS4Xw5o93RHfceaIc42Q?= =?us-ascii?q?7xLmU+aePCl3iWp+eLK6mxay6U+gyvDgVsWs0FZFsC5Fkt7Uu3AIyhPf8MiHSv?= =?us-ascii?q?x4/ki/wTqP1gbT5f9YIU0siKbXN5oszqQtmpcdrUjPBDL6lFv3gaOMaEkp9Pak?= =?us-ascii?q?5/ziYrr8p5+cM4F0ihv5MqQrgsG/GeQ4MgkKX2ia4eS8zKPs8Vf3QbpQlP02lb?= =?us-ascii?q?DZsI3bJcsFvK65GBRY0p0g6xe/CTepzsgYkWMcI11bYB6HlZTmO0nSIPDkCvey?= =?us-ascii?q?m1usnypwyPzfJr3uGInNIWTDkLj/ZrZw8FVcyA0uzdBF+51bFL8AL+jpWkDvrt?= =?us-ascii?q?DYCQU5MwOsyeb9FNp9zp8eWX6IAqKBKKPSsV6I5uYuI+mUfI8apizxKvY/6P70?= =?us-ascii?q?in85gEIdfai30psNc3C1Be9mI0aZYHrqnNgBDX0GsREgQ7+itFrXXjJZIm67Q6?= =?us-ascii?q?k86yoTE4W7F4zOWYm3jfqGxijoMIdRYzV+ClGIEG/wes27Uu0LcT+TL9V62mgc?= =?us-ascii?q?VbmlSpc52FexvRX90qdmI/DP0jYbpJTuyJ5/6ruAxlkJ6TVoApHFgCm2RGZukz?= =?us-ascii?q?ZQSg=3D=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2A+CABwpwJb/+h+gm1cHgEGDINDJD19j?= =?us-ascii?q?QCMEwGCKQFdk0qBZAsfDAGBS4J1AoIVIjcVAQIBAQEBAQECAWscDII1IoJSBlY?= =?us-ascii?q?jED8SOR4igxkCggOocoRYg2aCD4oJP4NmggCBO4Eyhg8ChzSGDopHQwcCgWeMZ?= =?us-ascii?q?QuMfYp1hgKBJTIigVJtgxcIghcXiFmFQD2BKAEaAY8fAQE?= X-IPAS-Result: =?us-ascii?q?A2A+CABwpwJb/+h+gm1cHgEGDINDJD19jQCMEwGCKQFdk0q?= =?us-ascii?q?BZAsfDAGBS4J1AoIVIjcVAQIBAQEBAQECAWscDII1IoJSBlYjED8SOR4igxkCg?= =?us-ascii?q?gOocoRYg2aCD4oJP4NmggCBO4Eyhg8ChzSGDopHQwcCgWeMZQuMfYp1hgKBJTI?= =?us-ascii?q?igVJtgxcIghcXiFmFQD2BKAEaAY8fAQE?= Received: from 232.126-130-109.adsl-dyn.isp.belgacom.be (HELO md.home) ([109.130.126.232]) by relay.skynet.be with ESMTP/TLS/DHE-RSA-AES128-GCM-SHA256; 21 May 2018 13:07:00 +0200 From: Philippe Waroquiers To: gdb-patches@sourceware.org Cc: Philippe Waroquiers Subject: [RFA 6/8] Add a test for 'frame apply' Date: Mon, 21 May 2018 13:06:49 +0200 Message-Id: <20180521110651.13842-7-philippe.waroquiers@skynet.be> In-Reply-To: <20180521110651.13842-1-philippe.waroquiers@skynet.be> References: <20180521110651.13842-1-philippe.waroquiers@skynet.be> X-IsSubscribed: yes --- gdb/testsuite/gdb.base/frameapply.c | 71 +++++++++++++++ gdb/testsuite/gdb.base/frameapply.exp | 167 ++++++++++++++++++++++++++++++++++ 2 files changed, 238 insertions(+) create mode 100644 gdb/testsuite/gdb.base/frameapply.c create mode 100644 gdb/testsuite/gdb.base/frameapply.exp diff --git a/gdb/testsuite/gdb.base/frameapply.c b/gdb/testsuite/gdb.base/frameapply.c new file mode 100644 index 0000000000..dccf4031ed --- /dev/null +++ b/gdb/testsuite/gdb.base/frameapply.c @@ -0,0 +1,71 @@ +/* This testcase is part of GDB, the GNU debugger. + + 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 . */ + +static void +setup_done (void) +{ +} + +static int +f1 (int f1arg) +{ + int f1loc; + + f1loc = f1arg - 1; + + setup_done (); + return f1loc; +} + +static int +f2 (int f2arg) +{ + int f2loc; + + f2loc = f1 (f2arg - 1); + + return f2loc; +} + +static int +f3 (int f3arg) +{ + int f3loc; + + f3loc = f2 (f3arg - 1); + + return f3loc; +} + +static int +f4 (int f4arg) +{ + int f4loc; + + f4loc = f3 (f4arg - 1); + + return f4loc; +} + +int +main (void) +{ + int result; + + result = f4 (4); + return 0; +} diff --git a/gdb/testsuite/gdb.base/frameapply.exp b/gdb/testsuite/gdb.base/frameapply.exp new file mode 100644 index 0000000000..0257f0214f --- /dev/null +++ b/gdb/testsuite/gdb.base/frameapply.exp @@ -0,0 +1,167 @@ +# This testcase is part of GDB, the GNU debugger. + +# 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 . + + +# This test checks 'frame apply [all | COUNT | -COUNT] [-FLAGS...] COMMAND' + +standard_testfile + +if { [prepare_for_testing "failed to prepare" ${testfile}] } { + return -1 +} + +clean_restart ${binfile} + + +if ![runto setup_done] then { + gdb_suppress_tests +} + +set any "\[^\r\n\]*" +set ws "\[ \t\]\+" +set number "\[0-9]\+" + +# check all | COUNT | -COUNT with a simple command +gdb_test "frame apply all p /x 20" \ + [multi_line \ + "#0${ws}setup_done ${any}" \ + "\\\$\[0-9]+ = 0x14${any}" \ + "#1${ws}${any} f1 ${any}" \ + "\\\$\[0-9]+ = 0x14${any}" \ + "#2${ws}${any} f2 ${any}" \ + "\\\$\[0-9]+ = 0x14${any}" \ + "#3${ws}${any} f3 ${any}" \ + "\\\$\[0-9]+ = 0x14${any}" \ + "#4${ws}${any} f4 ${any}" \ + "\\\$\[0-9]+ = 0x14${any}" \ + "#5${ws}${any} main ${any}" \ + "\\\$\[0-9]+ = 0x14${any}" \ + ] \ + "Run a simple command on all frames" + +gdb_test "frame apply 3 p /x 20" \ + [multi_line \ + "#0${ws}setup_done ${any}" \ + "\\\$\[0-9]+ = 0x14${any}" \ + "#1${ws}${any} f1 ${any}" \ + "\\\$\[0-9]+ = 0x14${any}" \ + "#2${ws}${any} f2 ${any}" \ + "\\\$\[0-9]+ = 0x14${any}" \ + ] \ + "Run a simple command on the 3 innermost frames" + +gdb_test "frame apply -3 p /x 20" \ + [multi_line \ + "#3${ws}${any} f3 ${any}" \ + "\\\$\[0-9]+ = 0x14${any}" \ + "#4${ws}${any} f4 ${any}" \ + "\\\$\[0-9]+ = 0x14${any}" \ + "#5${ws}${any} main ${any}" \ + "\\\$\[0-9]+ = 0x14${any}" \ + ] \ + "Run a simple command on the 3 outermost frames" + +# check -c (continue- and -s (silently continue) flags +gdb_test "frame apply all p f3arg" \ + [multi_line \ + "#0${ws}setup_done ${any}" \ + "No symbol \\\"f3arg\\\" in current context." \ + ] \ + "Run a failing command that aborts frame apply" + +gdb_test "frame apply all -c p f3arg" \ + [multi_line \ + "#0${ws}setup_done ${any}" \ + "No symbol \\\"f3arg\\\" in current context." \ + "#1${ws}${any} f1 ${any}" \ + "No symbol \\\"f3arg\\\" in current context." \ + "#2${ws}${any} f2 ${any}" \ + "No symbol \\\"f3arg\\\" in current context." \ + "#3${ws}${any} f3 ${any}" \ + "\\\$\[0-9]+ = 3${any}" \ + "#4${ws}${any} f4 ${any}" \ + "No symbol \\\"f3arg\\\" in current context." \ + "#5${ws}${any} main ${any}" \ + "No symbol \\\"f3arg\\\" in current context." \ + ] \ + "Run a command failing in all frames except #3, -c to continue" + +foreach cmd {"frame apply all -s p f3arg" "faas p f3arg"} { + gdb_test $cmd \ + [multi_line \ + "#3${ws}${any} f3 ${any}" \ + "\\\$\[0-9]+ = 3${any}" \ + ] \ + "Run a command failing in all frames except #3, -s to silently continue" +} + +# check verbosity +gdb_test "frame apply 2 p /x 20" \ + [multi_line \ + "#0${ws}setup_done ${any}" \ + "\\\$\[0-9]+ = 0x14${any}" \ + "#1${ws}${any} f1 ${any}" \ + "\\\$\[0-9]+ = 0x14${any}" \ + ] \ + "Run a command at default verbosity 2, printing location" + +gdb_test "frame apply 2 -q p /x 20" \ + [multi_line \ + "${number}${ws}\\\}${any}" \ + "\\\$\[0-9]+ = 0x14${any}" \ + "${any}${ws}${number}${ws} setup_done ()${any}" \ + "\\\$\[0-9]+ = 0x14${any}" \ + ] \ + "Run a command at verbosity 1, printing source line" + +gdb_test "frame apply 2 -qq p /x 20" \ + [multi_line \ + "\\\$\[0-9]+ = 0x14${any}" \ + "\\\$\[0-9]+ = 0x14${any}" \ + ] \ + "Run a command at verbosity 0, printing only command results" + +gdb_test "frame apply 2 -v p /x 20" \ + [multi_line \ + "#0${ws}0x${any}${ws}in setup_done ${any}" \ + "\\\$\[0-9]+ = 0x14${any}" \ + "#1${ws}0x${any} in f1 ${any}" \ + "\\\$\[0-9]+ = 0x14${any}" \ + ] \ + "Run a command at verbosity 3, printing location and address" + +gdb_test "frame apply 2 -vv p /x 20" \ + [multi_line \ + "#0${ws}setup_done ${any}" \ + "${number}${ws}\\\}${any}" \ + "\\\$\[0-9]+ = 0x14${any}" \ + "#1${ws}${any} f1 ${any}" \ + "${number}${ws} setup_done ()${any}" \ + "\\\$\[0-9]+ = 0x14${any}" \ + ] \ + "Run a command at verbosity 4, printing location and source line" + +# check multiple flags together +gdb_test "frame apply all -qsq p f3arg" \ + "\\\$\[0-9]+ = 3${any}" \ + "Run a command failing in all frames except #3, -s to silently continue, verbosity 0" + +# check invalid flag combinations +gdb_test "frame apply all -cs p f3arg" \ + "frame apply all: flags c and s are mutually exclusive" \ + "Check c and s cannot be used simultaneously" +