From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id kkhEO/LEQWEGXwAAWB0awg (envelope-from ) for ; Wed, 15 Sep 2021 06:03:30 -0400 Received: by simark.ca (Postfix, from userid 112) id DE8D51EE25; Wed, 15 Sep 2021 06:03:30 -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 D16FB1EDF7 for ; Wed, 15 Sep 2021 06:03:29 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 33036385781A for ; Wed, 15 Sep 2021 10:03:29 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 33036385781A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1631700209; bh=W1CRnJkhJtkO0k596PsqUXcy3Qs+0bcXZmbUKu6Ur60=; h=Date:To:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=f3r0lBzIRLo8DjIO1GR3cf3jafBF1uUaAIPlauXVJ0Z05Vr4zz4SPntUntJKIODLx 8vEZCmjv4f4N6/j+hc+8ACqKN61HG9IzidOf0ZhgmF9Pq/yd/7KPOMMWlCR+qT8riI lNjk3/1aCDcqbpsaNpObBjutn8JMkj00uK/JWx/g= Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by sourceware.org (Postfix) with ESMTPS id 0046F3858006 for ; Wed, 15 Sep 2021 10:02:00 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 0046F3858006 Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 36549222A8 for ; Wed, 15 Sep 2021 10:02:00 +0000 (UTC) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 21B5313C21 for ; Wed, 15 Sep 2021 10:02:00 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id eXXwBpjEQWFMaQAAMHmgww (envelope-from ) for ; Wed, 15 Sep 2021 10:02:00 +0000 Date: Wed, 15 Sep 2021 12:01:58 +0200 To: gdb-patches@sourceware.org Subject: [PATCH][gdb] Add maint selftest -verbose option Message-ID: <20210915100155.GA13289@delia> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.10.1 (2018-07-13) 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: , From: Tom de Vries via Gdb-patches Reply-To: Tom de Vries Errors-To: gdb-patches-bounces+public-inbox=simark.ca@sourceware.org Sender: "Gdb-patches" Hi, The print_one_insn selftest in gdb/disasm-selftests.c contains: ... /* If you want to see the disassembled instruction printed to gdb_stdout, set verbose to true. */ static const bool verbose = false; ... Make this parameter available in the maint selftest command using a new option -verbose, such that we can do: ... (gdb) maint selftest -verbose print_one_insn ... Tested on x86_64-linux. Any comments? Thanks, - Tom [gdb] Add maint selftest -verbose option --- gdb/disasm-selftests.c | 9 ++++----- gdb/doc/gdb.texinfo | 5 +++-- gdb/maint.c | 3 ++- gdbsupport/selftest.cc | 13 ++++++++++++- gdbsupport/selftest.h | 7 ++++++- 5 files changed, 27 insertions(+), 10 deletions(-) diff --git a/gdb/disasm-selftests.c b/gdb/disasm-selftests.c index ae71e711bba..0a383d6b795 100644 --- a/gdb/disasm-selftests.c +++ b/gdb/disasm-selftests.c @@ -103,8 +103,7 @@ print_one_insn_test (struct gdbarch *gdbarch) /* Test gdb_disassembler for a given gdbarch by reading data from a pre-allocated buffer. If you want to see the disassembled - instruction printed to gdb_stdout, set verbose to true. */ - static const bool verbose = false; + instruction printed to gdb_stdout, use maint selftest -verbose. */ class gdb_disassembler_test : public gdb_disassembler { @@ -114,7 +113,7 @@ print_one_insn_test (struct gdbarch *gdbarch) const gdb_byte *insn, size_t len) : gdb_disassembler (gdbarch, - (verbose ? gdb_stdout : &null_stream), + (run_verbose () ? gdb_stdout : &null_stream), gdb_disassembler_test::read_memory), m_insn (insn), m_len (len) { @@ -123,7 +122,7 @@ print_one_insn_test (struct gdbarch *gdbarch) int print_insn (CORE_ADDR memaddr) { - if (verbose) + if (run_verbose ()) { fprintf_unfiltered (stream (), "%s ", gdbarch_bfd_arch_info (arch ())->arch_name); @@ -131,7 +130,7 @@ print_one_insn_test (struct gdbarch *gdbarch) int len = gdb_disassembler::print_insn (memaddr); - if (verbose) + if (run_verbose ()) fprintf_unfiltered (stream (), "\n"); return len; diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 5e1de7e7a70..57bbc7cd878 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -39433,11 +39433,12 @@ data structures, including its flags and contained types. @kindex maint selftest @cindex self tests -@item maint selftest @r{[}@var{filter}@r{]} +@item maint selftest @r{[}-verbose@r{]} @r{[}@var{filter}@r{]} Run any self tests that were compiled in to @value{GDBN}. This will print a message showing how many tests were run, and how many failed. If a @var{filter} is passed, only the tests with @var{filter} in their -name will be ran. +name will be ran. If @code{-verbose} is passed, the self tests can be +more verbose. @kindex maint info selftests @cindex self tests diff --git a/gdb/maint.c b/gdb/maint.c index 8f8bdc87be8..c6d13a3a732 100644 --- a/gdb/maint.c +++ b/gdb/maint.c @@ -1127,8 +1127,9 @@ static void maintenance_selftest (const char *args, int from_tty) { #if GDB_SELF_TEST + bool verbose = args != nullptr && check_for_argument (&args, "-verbose"); gdb_argv argv (args); - selftests::run_tests (argv.as_array_view ()); + selftests::run_tests (argv.as_array_view (), verbose); #else printf_filtered (_("\ Selftests have been disabled for this build.\n")); diff --git a/gdbsupport/selftest.cc b/gdbsupport/selftest.cc index d0511abe654..fd455b27f51 100644 --- a/gdbsupport/selftest.cc +++ b/gdbsupport/selftest.cc @@ -65,12 +65,23 @@ register_test (const std::string &name, self_test_function *function) register_test (name, new simple_selftest (function)); } +static bool run_verbose_ = false; + +/* See selftest.h. */ + +bool +run_verbose () +{ + return run_verbose_; +} + /* See selftest.h. */ void -run_tests (gdb::array_view filters) +run_tests (gdb::array_view filters, bool verbose) { int ran = 0, failed = 0; + run_verbose_ = verbose; for (const auto &pair : tests) { diff --git a/gdbsupport/selftest.h b/gdbsupport/selftest.h index 13441b05a21..ceb965de530 100644 --- a/gdbsupport/selftest.h +++ b/gdbsupport/selftest.h @@ -37,6 +37,10 @@ struct selftest virtual void operator() () const = 0; }; +/* True if selftest should run verbosely. */ + +extern bool run_verbose (); + /* Register a new self-test. */ extern void register_test (const std::string &name, selftest *test); @@ -52,7 +56,8 @@ extern void register_test (const std::string &name, If FILTERS is not empty, only run tests with names containing one of the element of FILTERS. */ -extern void run_tests (gdb::array_view filters); +extern void run_tests (gdb::array_view filters, + bool verbose = false); /* Reset GDB or GDBserver's internal state. */ extern void reset ();