From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id ENc0Khzh72duliYAWB0awg (envelope-from ) for ; Fri, 04 Apr 2025 09:39:40 -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=UFjvCC9R; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id A91621E0C3; Fri, 4 Apr 2025 09:39:40 -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 0AE611E05C for ; Fri, 4 Apr 2025 09:39:40 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 9B71D3839436 for ; Fri, 4 Apr 2025 13:39:39 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 9B71D3839436 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=UFjvCC9R Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.12]) by sourceware.org (Postfix) with ESMTPS id 27FC43839832 for ; Fri, 4 Apr 2025 13:37:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 27FC43839832 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 27FC43839832 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=198.175.65.12 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1743773839; cv=none; b=EedrpGe1fO605rS/KROdNrxJjgtCz2vdATTYaogHfBtdW6+uFyCUqsg/8edJO7kLwtDM7ecRcVMuGqdXgw+EQrym0rED3E7V5UJWJ9kyqas9pWYYhy57540w+wYWzX/u1S+2BX2TQV5A58xYzqcjBIxxlybtJGNPoY/hLmtR5FM= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1743773839; c=relaxed/simple; bh=5+Y1oQIIT4tBG6N7O25OeGk3fZg4wXbh/mn9K3V/LJk=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=XBpBhSquzqbNfawTLfpa5shSncF6uRoPRccD8lXf3FWCq9in3z0V6rzznaE418V34i7RrP83hH28WHQCia5bpAF/0SXOAyn8VuKOQKu6E89Ril3fmVPc2IyQwfa1HXML1tm6yWyO1uMn9Wlj+gYO38g/CuLXVD4ot+5E+rynRLw= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 27FC43839832 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1743773840; x=1775309840; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=5+Y1oQIIT4tBG6N7O25OeGk3fZg4wXbh/mn9K3V/LJk=; b=UFjvCC9RhzS71BO8XuMFvRxToxwPNq/cglfToWGU9cw52YEcjdZ+h2cp k/Y3e/hOqdkrcFNDs1+fCWv7kPyOuwVIupv2vTuXP3vD+VLbboZ+YqzQs V9rm5hj2y2oKNnoRoDNrTXDoQrOKIuDFwGrbIkwd4AZ6nDrcnf2s6cBQp v24DsEAX5Hb4xLLqDTH6+x8tGP8IhfjTIoNsrBCv67TvSHsdShPPOLJF5 +Ei5uZ67niJEK//+I8dG+P7pUhMIfpwzAVpF0/pSI05Sq5yEf1e7/5UYW lhkA3mdk/bjWEB2N5ymYXgLWu6X6ei3/Y5IyDrmdIO1cam1DtgPgfIqEB g==; X-CSE-ConnectionGUID: fQnTuLR/S+yN3UF4juNJfg== X-CSE-MsgGUID: Qh5sbl6cSFGhST/7gjcmIQ== X-IronPort-AV: E=McAfee;i="6700,10204,11394"; a="56583659" X-IronPort-AV: E=Sophos;i="6.15,188,1739865600"; d="scan'208";a="56583659" Received: from orviesa002.jf.intel.com ([10.64.159.142]) by orvoesa104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Apr 2025 06:37:19 -0700 X-CSE-ConnectionGUID: NjsLlnY6T2mKotWPM1WHJA== X-CSE-MsgGUID: NsDOB/HGQt6q4HLGX/eNew== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,188,1739865600"; d="scan'208";a="158285550" Received: from gkldtt-dev-004.igk.intel.com (HELO localhost) ([10.123.221.202]) by orviesa002-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Apr 2025 06:37:17 -0700 From: Tankut Baris Aktemur To: gdb-patches@sourceware.org Cc: guinevere@redhat.com, eliz@gnu.org Subject: [PATCH v3 1/2] gdb: pass info_threads_opts to print_thread_info_1 Date: Fri, 4 Apr 2025 15:36:45 +0200 Message-Id: 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. Reviewed-By: Guinevere Larsen --- 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