From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id yXtfABG22WeGHRQAWB0awg (envelope-from ) for ; Tue, 18 Mar 2025 14:06:09 -0400 Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=ayPbOw4q; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id E4D0C1E100; Tue, 18 Mar 2025 14:06:08 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-6.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=4.0.1 Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (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 664581E0C0 for ; Tue, 18 Mar 2025 14:06:04 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 17FA73858C62 for ; Tue, 18 Mar 2025 18:06:04 +0000 (GMT) Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.17]) by sourceware.org (Postfix) with ESMTPS id 85FEE3858CD1 for ; Tue, 18 Mar 2025 18:05:40 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 85FEE3858CD1 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 85FEE3858CD1 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=198.175.65.17 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1742321140; cv=none; b=i4ExfQ/Lc/sdO9cFkE1K2cvX0uog8xRIQ87irTrP9TPNiDWPDMkleAMdk8uIhubsdX1+WUF62mMNM5VHH6vbfR7BnaCw1AEw7FE94zDMGVbArkiYmy4W+HEy/5pTI4ZqZh5j4fjFenZ2+5St9vUTzgfPgoOwvkC8dzdTo+ScZG0= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1742321140; c=relaxed/simple; bh=hxOQUU8ld8chCFlmtdVvd4evyn5DTZ62TET5Y7ge45o=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=xcu9MNal0xSLWCFXfnopnwNkx98HatOUHv7dbhK2hOG292CGi+9knWyVPld0FtUMrOFC+J3FmQcHTvs5hNZMJxKwUo8vdMuuIJjGjv6qR03MoyFcU+XkgCBAJcZAhw5659Vm9tKOIRdP/7WpiXZrkxW+sOMuZ2ZIu3D4B+C4/z4= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 85FEE3858CD1 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=ayPbOw4q DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1742321140; x=1773857140; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=hxOQUU8ld8chCFlmtdVvd4evyn5DTZ62TET5Y7ge45o=; b=ayPbOw4qjT04BRFQjimc76vy6rhx4Fm42AheZe2WiDk8iW5MmmH7D+AV AuONUfmNxVRD/ov3HuVHh7EiQuQwgiFOwaMC6VCJ1xdikZCFbt56OFOlN 3+gsjiOinCPAAPZ0jjKkl3JHw4UpBPPiD7vNKu6zjBCr8GkSsyICXQEAf cTyqrbl/W+ITcibo+hU0z1+ntMXGgW113aIYMZ0uuJvOciEqewiUc9Vjn uZaIe6u1QMGxET4cY81IOo2CcMpfYPhxJFFVVavav6+elFybC/onk872d ivQayjyl/nV1Lzfnj6rOdfnU08pUQnE57HV9/Ygd2E8rl6XHW0vTQ3YUt g==; X-CSE-ConnectionGUID: Sz084u/TSO2acOOTToH34w== X-CSE-MsgGUID: 2OTDfOoAQ9OnWhOtVORhXA== X-IronPort-AV: E=McAfee;i="6700,10204,11377"; a="43495937" X-IronPort-AV: E=Sophos;i="6.14,257,1736841600"; d="scan'208";a="43495937" Received: from fmviesa009.fm.intel.com ([10.60.135.149]) by orvoesa109.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Mar 2025 11:05:40 -0700 X-CSE-ConnectionGUID: Y2GVM9VXQiebUtzd/1K+Wg== X-CSE-MsgGUID: +4sUvlJGSteVQvglMobtag== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,257,1736841600"; d="scan'208";a="123089026" Received: from gkldtt-dev-004.igk.intel.com (HELO localhost) ([10.123.221.202]) by fmviesa009-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Mar 2025 11:05:39 -0700 From: Tankut Baris Aktemur To: gdb-patches@sourceware.org Subject: [PATCH v2 1/2] gdb: pass info_threads_opts to print_thread_info_1 Date: Tue, 18 Mar 2025 19:05:00 +0100 Message-Id: <00ae4ec205a78e702fef1eabe2f559b760ec056e.1742320783.git.tankut.baris.aktemur@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 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 The "info threads" command tracks its options in a struct named 'info_threads_opts', which currently has only one option. Pass the whole options object to helper functions, instead of passing the option value individually. This is a refactoring to make adding more options easier. --- gdb/thread.c | 71 +++++++++++++++++++++++++++------------------------- 1 file changed, 37 insertions(+), 34 deletions(-) diff --git a/gdb/thread.c b/gdb/thread.c index 8a34671bb6c..7dc8e7018c5 100644 --- a/gdb/thread.c +++ b/gdb/thread.c @@ -1038,6 +1038,24 @@ pc_in_thread_step_range (CORE_ADDR pc, struct thread_info *thread) && pc < thread->control.step_range_end); } +/* The options for the "info threads" command. */ + +struct info_threads_opts +{ + /* For "-gid". */ + bool show_global_ids = false; +}; + +static const gdb::option::option_def info_threads_option_defs[] = { + + gdb::option::flag_option_def { + "gid", + [] (info_threads_opts *opts) { return &opts->show_global_ids; }, + N_("Show global thread IDs."), + }, + +}; + /* Helper for print_thread_info. Returns true if THR should be printed. If REQUESTED_THREADS, a list of GDB ids/ranges, is not NULL, only print THR if its ID is included in the list. GLOBAL_IDS @@ -1046,11 +1064,13 @@ pc_in_thread_step_range (CORE_ADDR pc, struct thread_info *thread) is a thread from the process PID. Otherwise, threads from all attached PIDs are printed. If both REQUESTED_THREADS is not NULL and PID is not -1, then the thread is printed if it belongs to the - specified process. Otherwise, an error is raised. */ + specified process. Otherwise, an error is raised. OPTS is the + options of the "info threads" command. */ static bool should_print_thread (const char *requested_threads, int default_inf_num, - int global_ids, int pid, struct thread_info *thr) + int global_ids, int pid, thread_info *thr, + info_threads_opts opts) { if (requested_threads != NULL && *requested_threads != '\0') { @@ -1104,7 +1124,7 @@ thread_target_id_str (thread_info *tp) static void do_print_thread (ui_out *uiout, const char *requested_threads, - int global_ids, int pid, int show_global_ids, + int global_ids, int pid, info_threads_opts opts, int default_inf_num, thread_info *tp, thread_info *current_thread) { @@ -1115,7 +1135,7 @@ do_print_thread (ui_out *uiout, const char *requested_threads, switch_to_thread (current_thread); if (!should_print_thread (requested_threads, default_inf_num, - global_ids, pid, tp)) + global_ids, pid, tp, opts)) return; ui_out_emit_tuple tuple_emitter (uiout, NULL); @@ -1130,7 +1150,7 @@ do_print_thread (ui_out *uiout, const char *requested_threads, uiout->field_string ("id-in-tg", print_thread_id (tp)); } - if (show_global_ids || uiout->is_mi_like_p ()) + if (opts.show_global_ids || uiout->is_mi_like_p ()) uiout->field_signed ("id", tp->global_num); /* Switch to the thread (and inferior / target). */ @@ -1191,23 +1211,23 @@ do_print_thread (ui_out *uiout, const char *requested_threads, static void print_thread (ui_out *uiout, const char *requested_threads, - int global_ids, int pid, int show_global_ids, + int global_ids, int pid, info_threads_opts opts, int default_inf_num, thread_info *tp, thread_info *current_thread) { do_with_buffered_output (do_print_thread, uiout, requested_threads, - global_ids, pid, show_global_ids, - default_inf_num, tp, current_thread); + global_ids, pid, opts, default_inf_num, tp, + current_thread); } /* Like print_thread_info, but in addition, GLOBAL_IDS indicates whether REQUESTED_THREADS is a list of global or per-inferior - thread ids. */ + thread ids. OPTS is the options of the "info threads" command. */ static void print_thread_info_1 (struct ui_out *uiout, const char *requested_threads, int global_ids, int pid, - int show_global_ids) + info_threads_opts opts) { int default_inf_num = current_inferior ()->num; @@ -1247,7 +1267,7 @@ print_thread_info_1 (struct ui_out *uiout, const char *requested_threads, switch_to_thread (current_thread); if (!should_print_thread (requested_threads, default_inf_num, - global_ids, pid, tp)) + global_ids, pid, tp, opts)) continue; /* Switch inferiors so we're looking at the right @@ -1271,12 +1291,12 @@ print_thread_info_1 (struct ui_out *uiout, const char *requested_threads, return; } - table_emitter.emplace (uiout, show_global_ids ? 5 : 4, + table_emitter.emplace (uiout, opts.show_global_ids ? 5 : 4, n_threads, "threads"); uiout->table_header (1, ui_left, "current", ""); uiout->table_header (4, ui_left, "id-in-tg", "Id"); - if (show_global_ids) + if (opts.show_global_ids) uiout->table_header (4, ui_left, "id", "GId"); uiout->table_header (target_id_col_width, ui_left, "target-id", "Target Id"); @@ -1293,7 +1313,7 @@ print_thread_info_1 (struct ui_out *uiout, const char *requested_threads, current_exited = true; print_thread (uiout, requested_threads, global_ids, pid, - show_global_ids, default_inf_num, tp, current_thread); + opts, default_inf_num, tp, current_thread); } /* This end scope restores the current thread and the frame @@ -1322,27 +1342,10 @@ void print_thread_info (struct ui_out *uiout, const char *requested_threads, int pid) { - print_thread_info_1 (uiout, requested_threads, 1, pid, 0); + info_threads_opts opts {false}; + print_thread_info_1 (uiout, requested_threads, 1, pid, opts); } -/* The options for the "info threads" command. */ - -struct info_threads_opts -{ - /* For "-gid". */ - bool show_global_ids = false; -}; - -static const gdb::option::option_def info_threads_option_defs[] = { - - gdb::option::flag_option_def { - "gid", - [] (info_threads_opts *opts) { return &opts->show_global_ids; }, - N_("Show global thread IDs."), - }, - -}; - /* Create an option_def_group for the "info threads" options, with IT_OPTS as context. */ @@ -1367,7 +1370,7 @@ info_threads_command (const char *arg, int from_tty) gdb::option::process_options (&arg, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_ERROR, grp); - print_thread_info_1 (current_uiout, arg, 0, -1, it_opts.show_global_ids); + print_thread_info_1 (current_uiout, arg, 0, -1, it_opts); } /* Completer for the "info threads" command. */ -- 2.34.1 Intel Deutschland GmbH Registered Address: Am Campeon 10, 85579 Neubiberg, Germany Tel: +49 89 99 8853-0, www.intel.de Managing Directors: Sean Fennelly, Jeffrey Schneiderman, Tiffany Doon Silva Chairperson of the Supervisory Board: Nicole Lau Registered Office: Munich Commercial Register: Amtsgericht Muenchen HRB 186928