From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id mSNZGBbo4WkY2B0AWB0awg (envelope-from ) for ; Fri, 17 Apr 2026 03:58:14 -0400 Authentication-Results: simark.ca; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 header.s=susede2_rsa header.b=Wi9IaZTO; dkim=fail reason="signature verification failed" header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 header.s=susede2_ed25519 header.b=qvfrw6FI; dkim=fail reason="signature verification failed" (1024-bit key) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 header.s=susede2_rsa header.b=Wi9IaZTO; dkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 header.s=susede2_ed25519 header.b=qvfrw6FI; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 5406A1E0C3; Fri, 17 Apr 2026 03:58:14 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_INVALID,DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 445131E0B1 for ; Fri, 17 Apr 2026 03:58:11 -0400 (EDT) Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id C98B04BB58C6 for ; Fri, 17 Apr 2026 07:58:10 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C98B04BB58C6 Authentication-Results: sourceware.org; dkim=fail reason="signature verification failed" (1024-bit key, unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 header.s=susede2_rsa header.b=Wi9IaZTO; dkim=fail reason="signature verification failed" header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 header.s=susede2_ed25519 header.b=qvfrw6FI; dkim=fail reason="signature verification failed" (1024-bit key) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 header.s=susede2_rsa header.b=Wi9IaZTO; dkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 header.s=susede2_ed25519 header.b=qvfrw6FI Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) by sourceware.org (Postfix) with ESMTPS id 748554C515FE for ; Fri, 17 Apr 2026 07:57:33 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 748554C515FE Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 748554C515FE Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=195.135.223.131 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776412653; cv=none; b=eH9aWAzdLMSKgMQ5HlY/bjwIpUwrrLSUGYGGbyeKOtfqHuN2pJvyAd1wObKANKqilkHNbl8XeUygAyfR3FsM1rsJ9+Fv9C9oZsm2LwvYYMlIo0ZJYpj+nfYnSMQQuuwPkccTqNs6ZWor+kO/qS0uB5ZnemmfDTJliGuyzbRMUdg= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776412653; c=relaxed/simple; bh=cYO0ifWcH/eC1LYSdW6V+rw6WJkGjCzuW3UyBJuB6BA=; h=DKIM-Signature:DKIM-Signature:DKIM-Signature:DKIM-Signature:From: To:Subject:Date:Message-ID:MIME-Version; b=eaYuZpzAbSCpIaDww947xxC8oXr3CKsQHwWzYor4/29cglCuLP3QMQAuRDWJyI2YPlV8pRWBac3UyOnNCEnaFOPdflq7MkHNleS00w90Tc1I2rRg6Ir4d5QbN/tHipvb6m6XTPTkTT0d0EVwHVvONO6ZtzibX6/XYC+ytdDMfeE= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 748554C515FE Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 5DDB45BE57 for ; Fri, 17 Apr 2026 07:57:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1776412640; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=CYl/OMLeu0fMg6hbLEntQiutc0yaINrU7SsDjDTGPAg=; b=Wi9IaZTOmKt1mYnTzwJW3mNOvGMjoRTBIKifpYrYIwXKAWRahYiOZHnGA2GJdIHpoH56ag ColXpWELI/lz9aQ+ZQSrADMbpLA3XV8GQk+e5R70IEQmtU+ud8oQj/j5LmC6rMogDTQde3 LcSxqhoD04Uy0HTn5bVFQcRAUwopYtQ= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1776412640; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=CYl/OMLeu0fMg6hbLEntQiutc0yaINrU7SsDjDTGPAg=; b=qvfrw6FIR7obq3BmSI+a6k0MCyqzgW046kZf4BsfLAfirR475V3ElJTRqRvEHj/KCtCW4X HEF3gUBq8WEqO+CQ== Authentication-Results: smtp-out2.suse.de; none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1776412640; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=CYl/OMLeu0fMg6hbLEntQiutc0yaINrU7SsDjDTGPAg=; b=Wi9IaZTOmKt1mYnTzwJW3mNOvGMjoRTBIKifpYrYIwXKAWRahYiOZHnGA2GJdIHpoH56ag ColXpWELI/lz9aQ+ZQSrADMbpLA3XV8GQk+e5R70IEQmtU+ud8oQj/j5LmC6rMogDTQde3 LcSxqhoD04Uy0HTn5bVFQcRAUwopYtQ= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1776412640; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=CYl/OMLeu0fMg6hbLEntQiutc0yaINrU7SsDjDTGPAg=; b=qvfrw6FIR7obq3BmSI+a6k0MCyqzgW046kZf4BsfLAfirR475V3ElJTRqRvEHj/KCtCW4X HEF3gUBq8WEqO+CQ== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 46EE2593B1 for ; Fri, 17 Apr 2026 07:57:20 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id INnxD+Dn4WkYHgAAD6G6ig (envelope-from ) for ; Fri, 17 Apr 2026 07:57:20 +0000 From: Tom de Vries To: gdb-patches@sourceware.org Subject: [PATCH v6 3/4] [gdb] Add defaulted_query_auto_answers_p Date: Fri, 17 Apr 2026 09:57:18 +0200 Message-ID: <20260417075719.852558-4-tdevries@suse.de> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260417075719.852558-1-tdevries@suse.de> References: <20260417075719.852558-1-tdevries@suse.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spamd-Result: default: False [-2.80 / 50.00]; BAYES_HAM(-3.00)[99.99%]; NEURAL_HAM_LONG(-1.00)[-1.000]; MID_CONTAINS_FROM(1.00)[]; R_MISSING_CHARSET(0.50)[]; NEURAL_HAM_SHORT(-0.20)[-1.000]; MIME_GOOD(-0.10)[text/plain]; FUZZY_RATELIMITED(0.00)[rspamd.com]; RCVD_VIA_SMTP_AUTH(0.00)[]; RCPT_COUNT_ONE(0.00)[1]; ARC_NA(0.00)[]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:mid]; FROM_EQ_ENVFROM(0.00)[]; FROM_HAS_DN(0.00)[]; MIME_TRACE(0.00)[0:+]; RCVD_COUNT_TWO(0.00)[2]; TO_MATCH_ENVRCPT_ALL(0.00)[]; TO_DN_NONE(0.00)[]; PREVIOUSLY_DELIVERED(0.00)[gdb-patches@sourceware.org]; RCVD_TLS_ALL(0.00)[] X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org Factor out "static bool defaulted_query_auto_answers_p (bool)" out of defaulted_query, and use it to implement "extern tribool defaulted_query_auto_answers_p (void)". --- gdb/utils.c | 55 ++++++++++++++++++++++++++++++++++++++++++++++++----- gdb/utils.h | 4 ++++ 2 files changed, 54 insertions(+), 5 deletions(-) diff --git a/gdb/utils.c b/gdb/utils.c index f5f19301460..c521a2299bd 100644 --- a/gdb/utils.c +++ b/gdb/utils.c @@ -744,6 +744,54 @@ class scoped_input_handler }; +/* Return true if defaulted queries should be answered: + - if VERBOSELY, automatically and verbosely + - otherwise, automatically and quietly. */ + +static bool +defaulted_query_auto_answers_p (bool verbosely) +{ + if (verbosely) + { + /* Automatically answer verbosely if input isn't coming from the user + directly. */ + return (current_ui->instream != current_ui->stdin_stream + || !current_ui->input_interactive_p () + /* Restrict queries to the main UI. */ + || current_ui != main_ui); + } + else + { + /* Automatically answer quietly if: + - the user did not want prompts, or + - the command was issued with the server prefix. */ + return !confirm || server_command; + } +} + +/* See utils.h. */ + +tribool +defaulted_query_auto_answers_p () +{ + if (defaulted_query_auto_answers_p (false) + || defaulted_query_auto_answers_p (true)) + return TRIBOOL_TRUE; + + if (deprecated_query_hook) + { + /* The only user of deprecated_query_hook in core gdb seems to be + mi_interp_query_hook, for which we could return TRIBOOL_TRUE here. + If that turns out to be required, we could accomplish this by + changing the hook interface to say: + int (*deprecated_query_hook) (const char *, va_list, + bool auto_answers_p = false) + and calling it here with auto_answers_p == true. */ + return TRIBOOL_UNKNOWN; + } + + return TRIBOOL_FALSE; +} /* This function supports the query, nquery, and yquery functions. Ask user a y-or-n question and return 0 if answer is no, 1 if @@ -791,17 +839,14 @@ defaulted_query (const char *ctlstr, const char defchar, va_list args) /* Automatically answer the default value if the user did not want prompts or the command was issued with the server prefix. */ - if (!confirm || server_command) + if (defaulted_query_auto_answers_p (false)) return def_value; /* If input isn't coming from the user directly, just say what question we're asking, and then answer the default automatically. This way, important error messages don't get lost when talking to GDB over a pipe. */ - if (current_ui->instream != current_ui->stdin_stream - || !current_ui->input_interactive_p () - /* Restrict queries to the main UI. */ - || current_ui != main_ui) + if (defaulted_query_auto_answers_p (true)) { target_terminal::scoped_restore_terminal_state term_state; target_terminal::ours_for_output (); diff --git a/gdb/utils.h b/gdb/utils.h index ecef7d13c20..55fabd297fd 100644 --- a/gdb/utils.h +++ b/gdb/utils.h @@ -523,4 +523,8 @@ struct deferred_warnings final : public warning_hook_handler_type extern unsigned char c_ctrl (unsigned char c); extern unsigned char c_unctrl (unsigned char c); +/* Whether defaulted queries are answered automatically. */ + +extern tribool defaulted_query_auto_answers_p (); + #endif /* GDB_UTILS_H */ -- 2.51.0