From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm1-x329.google.com (mail-wm1-x329.google.com [IPv6:2a00:1450:4864:20::329]) by sourceware.org (Postfix) with ESMTPS id 8D3CD394DAD7 for ; Thu, 18 Feb 2021 16:41:14 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 8D3CD394DAD7 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=embecosm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=andrew.burgess@embecosm.com Received: by mail-wm1-x329.google.com with SMTP id i7so3065585wmb.0 for ; Thu, 18 Feb 2021 08:41:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=embecosm.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5N3okKzziIERJwEyT2xAL047Zfv2S7IaJkZDD0jVlHM=; b=QphKntu9X5Z6DuCUbF5yUVsrpVDKb4P7AI/I/g+WFFsEH6K4TkWjB0a3wDzyfLP2UF 0Kigy+aoXQS+TYeSUb2zbRy74AJpgD47T2IAHMMP4FHFNjlgAO6mTGriN4qiEvBGDND5 2qBGh5l57fBpm0say69ckms9NyL1o9oxHWPpLutAzHrTIEi3DxBsX6pZIDBnsAu3mL7t zR+mpFui8lTjTE7D4KoBkxWyGh+UYdOlw4lZajtbAasGBm1HtHhNLDptVyo6OH0SlBg1 ZlpnJ6F//x5McdxHD/mI0rbU7m8SRtTxcDi6w3n4UoPk+eWpkbaW8g3xvRLzsh2iP5Pj IFeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5N3okKzziIERJwEyT2xAL047Zfv2S7IaJkZDD0jVlHM=; b=tK/jZ7Kx8zF3G++ai8O7nvANM/0ok9UnuCilUvw5hfJ7RP/rT7jS6SH/guyUkGwKev B0Ww2vfhTpdVTXusIdUIg2AphRmXJdTKuKGhDZ6lfu7VYR1ZqzCO2OgKxyaF3H8byVxT /HQfwQ3gb8xf82HZqjN1QkI0qGvW+fk0ymfq5xfum/V9YZL/BDF41XL63vOL76UThklK Y45MQr0Bee/fZBcOTEeQmyRu1Y21GQ7SjkczBp07xpCr6BgMsY843qfi42x08lnlByhI 13H5D5RCoViQLlQUg3OKErN7fpkWiabI/KkTfqIUF/f3T2B1JuER5z/ZGEWS8sQKYKAB Iv6Q== X-Gm-Message-State: AOAM531gqfWXHlFAgbAgKN6KIgIdlgdGzdfWe3bRI2XSi6+e8/5q57tO E4M/Q+SmfCzVTnIzy5YL0ev+OIAZ0Tp83Q== X-Google-Smtp-Source: ABdhPJzhLPxlLTppBxIwvsduJ/KMhYE6X2oQeK0OstJIzuO5b1mAafU8GfDognZsz77vK2gHEPwDqA== X-Received: by 2002:a05:600c:2248:: with SMTP id a8mr4263661wmm.167.1613666473219; Thu, 18 Feb 2021 08:41:13 -0800 (PST) Received: from localhost (host86-186-80-154.range86-186.btcentralplus.com. [86.186.80.154]) by smtp.gmail.com with ESMTPSA id l22sm3224126wrb.4.2021.02.18.08.41.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Feb 2021 08:41:12 -0800 (PST) From: Andrew Burgess To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [PATCHv3 3/3] gdb: add "set startup-quietly" command Date: Thu, 18 Feb 2021 16:41:04 +0000 Message-Id: X-Mailer: git-send-email 2.25.4 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-12.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) 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: Thu, 18 Feb 2021 16:41:16 -0000 From: Tom Tromey This adds a new command to change GDB to behave as though "-quiet" were always given. This new command can be added to the gdbstartup file to affect future GDB sessions. gdb/ChangeLog: * NEWS: Add entry. * main.c (captured_main_1): Call check_quiet_mode. * top.c (startup_quiet): New global. (check_quiet_mode): New function. (show_startup_quiet): New function. (init_main): Register new command. * top.h (check_quiet_mode): Declare. gdb/doc/ChangeLog: * gdb.texinfo (Mode Options): Mention "set startup-quietly". gdb/testsuite/ChangeLog: * gdb.base/startup-file.exp: Add more tests. --- gdb/ChangeLog | 11 ++++++ gdb/NEWS | 7 ++++ gdb/doc/ChangeLog | 5 +++ gdb/doc/gdb.texinfo | 8 +++++ gdb/main.c | 5 +++ gdb/testsuite/ChangeLog | 4 +++ gdb/testsuite/gdb.base/early-init-file.exp | 39 ++++++++++++++++++++++ gdb/top.c | 33 ++++++++++++++++++ gdb/top.h | 5 +++ 9 files changed, 117 insertions(+) diff --git a/gdb/NEWS b/gdb/NEWS index fdd526e86cf..a1d9194de29 100644 --- a/gdb/NEWS +++ b/gdb/NEWS @@ -59,6 +59,13 @@ maintenance flush register-cache maintenance flush dcache A new command to flush the dcache. +set startup-quietly on|off +show startup-quietly + When 'on', this causes GDB to act as if "-silent" were passed on the + command line. This command needs to be added to an early + initialization file (e.g. ~/.config/gdb/gdbearlyinit) in order to + affect GDB. + * Changed commands break [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index b900d777c13..2489b69fb23 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -1112,6 +1112,14 @@ ``Quiet''. Do not print the introductory and copyright messages. These messages are also suppressed in batch mode. +@kindex set startup-quietly +@kindex show startup-quietly +This can also be enabled using @code{set startup-quietly on}. The +default is @code{off}. Use @code{show startup-quietly} to see the +current setting. Place @code{set startup-quietly on} into your early +initialization file (@pxref{Initialization Files,,Initialization +Files}) to have future @value{GDBN} sessions startup quietly. + @item -batch @cindex @code{--batch} Run in batch mode. Exit with status @code{0} after processing all the diff --git a/gdb/main.c b/gdb/main.c index 5633381fdd5..60c08fb83dd 100644 --- a/gdb/main.c +++ b/gdb/main.c @@ -1053,6 +1053,11 @@ captured_main_1 (struct captured_main_args *context) execute_cmdargs (&cmdarg_vec, CMDARG_EARLYINIT_FILE, CMDARG_EARLYINIT_COMMAND, &ret); + /* Recheck if we're starting up quietly after processing the startup + scripts and commands. */ + if (!quiet) + quiet = check_quiet_mode (); + /* Now that gdb_init has created the initial inferior, we're in position to set args for that inferior. */ if (set_args) diff --git a/gdb/testsuite/gdb.base/early-init-file.exp b/gdb/testsuite/gdb.base/early-init-file.exp index 116a3e83761..701e172656e 100644 --- a/gdb/testsuite/gdb.base/early-init-file.exp +++ b/gdb/testsuite/gdb.base/early-init-file.exp @@ -66,6 +66,21 @@ proc setup_home_directories { prefix content } { return [list $home_dir $xdg_home_dir] } +# Restart GDB and ensure that there's no license text, we should just +# drop straight to the prompt. +proc check_gdb_startups_up_quietly { message } { + global gdb_prompt + + gdb_exit + gdb_spawn + + gdb_test_multiple "" $message { + -re "^$gdb_prompt $" { + pass $gdb_test_name + } + } +} + save_vars { env(TERM) } { # We need an ANSI-capable terminal to get the output. setenv TERM ansi @@ -106,5 +121,29 @@ save_vars { env(TERM) } { check_gdb_startup_version_string none \ "check version string is unstyled using XDG_CONFIG_HOME" } + + # Create two directories to use for the quiet startup test. + set dirs [setup_home_directories "quiet" "set startup-quietly on"] + set home_dir [lindex $dirs 0] + set xdg_home_dir [lindex $dirs 1] + + # Now arrange to use the fake home directory startup file. + save_vars { INTERNAL_GDBFLAGS env(HOME) env(XDG_CONFIG_HOME) } { + set INTERNAL_GDBFLAGS [string map {"-nx" ""} $INTERNAL_GDBFLAGS] + + # Now test GDB when using the HOME directory. + set env(HOME) $home_dir + unset -nocomplain env(XDG_CONFIG_HOME) + check_gdb_startups_up_quietly \ + "check GDB starts quietly using HOME" + + # Now test using the XDG_CONFIG_HOME folder. We still need to + # have a HOME directory set otherwise GDB will issue an error + # about not knowing where to place the index cache. + set env(XDG_CONFIG_HOME) $xdg_home_dir + set env(HOME) $empty_home_dir + check_gdb_startups_up_quietly \ + "check GDB starts quietly using XDG_CONFIG_HOME" + } } diff --git a/gdb/top.c b/gdb/top.c index 3be95079654..07b253ce4be 100644 --- a/gdb/top.c +++ b/gdb/top.c @@ -2144,6 +2144,28 @@ set_history_filename (const char *args, } } +/* Whether we're in quiet startup mode. */ + +static bool startup_quiet; + +/* See top.h. */ + +bool +check_quiet_mode () +{ + return startup_quiet; +} + +/* Show whether GDB should start up in quiet mode. */ + +static void +show_startup_quiet (struct ui_file *file, int from_tty, + struct cmd_list_element *c, const char *value) +{ + fprintf_filtered (file, _("Whether to start up quietly is %s.\n"), + value); +} + static void init_gdb_version_vars (void) { @@ -2298,6 +2320,17 @@ input settings."), show_interactive_mode, &setlist, &showlist); + c = add_setshow_boolean_cmd ("startup-quietly", class_support, + &startup_quiet, _("\ +Set whether GDB should start up quietly."), _(" \ +Show whether GDB should start up quietly."), _("\ +This setting will not affect the current session. Instead this command\n\ +should be added to the .gdbstartup file in the users home directory to\n\ +affect future GDB sessions."), + NULL, + show_startup_quiet, + &setlist, &showlist); + c = add_cmd ("new-ui", class_support, new_ui_command, _("\ Create a new UI.\n\ Usage: new-ui INTERPRETER TTY\n\ diff --git a/gdb/top.h b/gdb/top.h index f58bebbb385..9438e52331b 100644 --- a/gdb/top.h +++ b/gdb/top.h @@ -291,4 +291,9 @@ extern char *handle_line_of_input (struct buffer *cmd_line_buffer, const char *rl, int repeat, const char *annotation_suffix); +/* Call at startup to see if the user has requested that gdb start up + quietly. */ + +extern bool check_quiet_mode (); + #endif -- 2.25.4