From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by sourceware.org (Postfix) with ESMTPS id 303813858035 for ; Wed, 1 Dec 2021 15:09:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 303813858035 X-IronPort-AV: E=McAfee;i="6200,9189,10184"; a="322721540" X-IronPort-AV: E=Sophos;i="5.87,278,1631602800"; d="scan'208";a="322721540" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Dec 2021 07:09:01 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.87,278,1631602800"; d="scan'208";a="512740193" Received: from ultl2604.iul.intel.com ([172.28.49.61]) by orsmga008.jf.intel.com with ESMTP; 01 Dec 2021 07:09:01 -0800 From: Tankut Baris Aktemur To: gdb-patches@sourceware.org Subject: [PATCH 3/3] gdb: add the 'set/show suppress-notification-cli' command Date: Wed, 1 Dec 2021 16:08:29 +0100 Message-Id: <3a4bd599cabeb95b5f4d18b5d0fb0c24d4bd4266.1638370938.git.tankut.baris.aktemur@intel.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-13.3 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_NONE, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, KAM_SHORT, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) 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: Wed, 01 Dec 2021 15:09:46 -0000 GDB already has a flag to suppress printing notification events, such as thread and inferior context switches, on the CLI. This is used internally when executing commands. Make the flag available to the user via a new command. This is expected to be useful in scripts. --- gdb/NEWS | 5 +++ gdb/cli/cli-cmds.c | 35 +++++++++++++++++++ .../gdb.base/cli-suppress-notification.c | 22 ++++++++++++ .../gdb.base/cli-suppress-notification.exp | 33 +++++++++++++++++ 4 files changed, 95 insertions(+) create mode 100644 gdb/testsuite/gdb.base/cli-suppress-notification.c create mode 100644 gdb/testsuite/gdb.base/cli-suppress-notification.exp diff --git a/gdb/NEWS b/gdb/NEWS index eeca1d39b10..76c9738bf03 100644 --- a/gdb/NEWS +++ b/gdb/NEWS @@ -39,6 +39,11 @@ set logging enabled on|off show logging enabled These commands set or show whether logging is enabled or disabled. +maint set suppress-notification-cli (on|off) +maint show suppress-notification-cli + This controls whether printing the notification events is suppressed + for CLI. + * Changed commands maint packet diff --git a/gdb/cli/cli-cmds.c b/gdb/cli/cli-cmds.c index 3fe47940076..5ad0a29052c 100644 --- a/gdb/cli/cli-cmds.c +++ b/gdb/cli/cli-cmds.c @@ -192,6 +192,11 @@ static const char *const script_ext_enums[] = { static const char *script_ext_mode = script_ext_soft; + +/* User-controllable flag to suppress event notification on CLI. */ + +static bool user_wants_cli_suppress_notification = false; + /* Utility used everywhere when at least one argument is needed and none is supplied. */ @@ -2123,6 +2128,24 @@ show_max_user_call_depth (struct ui_file *file, int from_tty, value); } +static void +maint_show_suppress_notification_cli (ui_file *file, int from_tty, + cmd_list_element *c, const char *value) +{ + fprintf_filtered (file, _("Suppression of printing CLI notification events " + "is %s.\n"), value); +} + +static void +maint_set_suppress_notification_cli (const char *args, int from_tty, + cmd_list_element *c) +{ + cli_suppress_notification.user_selected_context + = user_wants_cli_suppress_notification; + cli_suppress_notification.normal_stop + = user_wants_cli_suppress_notification; +} + /* Returns the cmd_list_element in SHOWLIST corresponding to the first argument of ARGV, which must contain one single value. Throws an error if no value provided, or value not correct. @@ -2720,6 +2743,18 @@ Make \"wLapPeu\" an alias of 2 nested \"with\":\n\ set_cmd_completer_handle_brkchars (c, alias_command_completer); + add_setshow_boolean_cmd ("suppress-notification-cli", no_class, + &user_wants_cli_suppress_notification, + _("\ +Set whether printing notification events on CLI is suppressed."), _("\ +Show whether printing notification events on CLI is suppressed."), _("\ +When on, printing notification events (such as inferior/thread switch)\n\ +on CLI is suppressed."), + maint_set_suppress_notification_cli, + maint_show_suppress_notification_cli, + &maintenance_set_cmdlist, + &maintenance_show_cmdlist); + const char *source_help_text = xstrprintf (_("\ Read commands from a file named FILE.\n\ \n\ diff --git a/gdb/testsuite/gdb.base/cli-suppress-notification.c b/gdb/testsuite/gdb.base/cli-suppress-notification.c new file mode 100644 index 00000000000..d5142fed2ca --- /dev/null +++ b/gdb/testsuite/gdb.base/cli-suppress-notification.c @@ -0,0 +1,22 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2020-2021 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 . */ + +int +main () +{ + return 0; +} diff --git a/gdb/testsuite/gdb.base/cli-suppress-notification.exp b/gdb/testsuite/gdb.base/cli-suppress-notification.exp new file mode 100644 index 00000000000..97fc83eb94a --- /dev/null +++ b/gdb/testsuite/gdb.base/cli-suppress-notification.exp @@ -0,0 +1,33 @@ +# Copyright 2020-2021 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 . + +# Test the cli-suppress-notification command. + +standard_testfile + +if {[prepare_for_testing "failed to prepare" ${binfile} ${srcfile}]} { + return +} + +if {![runto_main]} { + return +} + +gdb_test "inferior 1" ".*Switching to inferior 1 .* to thread 1 .*" \ + "not suppressed" + +gdb_test_no_output "maint set suppress-notification-cli on" + +gdb_test_no_output "inferior 1" "suppressed" -- 2.33.1 Intel Deutschland GmbH Registered Address: Am Campeon 10, 85579 Neubiberg, Germany Tel: +49 89 99 8853-0, www.intel.de Managing Directors: Christin Eisenschmid, Sharon Heck, Tiffany Doon Silva Chairperson of the Supervisory Board: Nicole Lau Registered Office: Munich Commercial Register: Amtsgericht Muenchen HRB 186928