[PATCH 08/12] Use filtered output in btrace-related commands

Metzger, Markus T markus.t.metzger@intel.com
Mon Jan 10 11:56:02 GMT 2022


Btrace is not using any of the GDB printf format specifiers.  IIUC the motivation for those changes is to fix pagination.  There should probably be a comment in utils.h discouraging the use of printf_unfiltered.  The way I read it now is that one needs to use printf_filtered if one wants to use some additional format specififiers.  The default, in that case, would be to use printf_unfiltered.  But that's not what we want people to use, apparently.

Regards,
Markus.

>-----Original Message-----
>From: Gdb-patches <gdb-patches-
>bounces+markus.t.metzger=intel.com@sourceware.org> On Behalf Of Tom
>Tromey
>Sent: Saturday, January 1, 2022 6:55 PM
>To: gdb-patches@sourceware.org
>Cc: Tom Tromey <tom@tromey.com>
>Subject: [PATCH 08/12] Use filtered output in btrace-related commands
>
>This changes btrace.c and record-btrace.c to use filtered output in
>the commands implemented there.
>---
> gdb/btrace.c        | 126 ++++++++++++++++++++++----------------------
> gdb/record-btrace.c |  46 ++++++++--------
> 2 files changed, 86 insertions(+), 86 deletions(-)
>
>diff --git a/gdb/btrace.c b/gdb/btrace.c
>index 3962636d993..ba10f78e7bf 100644
>--- a/gdb/btrace.c
>+++ b/gdb/btrace.c
>@@ -2852,122 +2852,122 @@ pt_print_packet (const struct pt_packet *packet)
>   switch (packet->type)
>     {
>     default:
>-      printf_unfiltered (("[??: %x]"), packet->type);
>+      printf_filtered (("[??: %x]"), packet->type);
>       break;
>
>     case ppt_psb:
>-      printf_unfiltered (("psb"));
>+      printf_filtered (("psb"));
>       break;
>
>     case ppt_psbend:
>-      printf_unfiltered (("psbend"));
>+      printf_filtered (("psbend"));
>       break;
>
>     case ppt_pad:
>-      printf_unfiltered (("pad"));
>+      printf_filtered (("pad"));
>       break;
>
>     case ppt_tip:
>-      printf_unfiltered (("tip %u: 0x%" PRIx64 ""),
>-			 packet->payload.ip.ipc,
>-			 packet->payload.ip.ip);
>+      printf_filtered (("tip %u: 0x%" PRIx64 ""),
>+		       packet->payload.ip.ipc,
>+		       packet->payload.ip.ip);
>       break;
>
>     case ppt_tip_pge:
>-      printf_unfiltered (("tip.pge %u: 0x%" PRIx64 ""),
>-			 packet->payload.ip.ipc,
>-			 packet->payload.ip.ip);
>+      printf_filtered (("tip.pge %u: 0x%" PRIx64 ""),
>+		       packet->payload.ip.ipc,
>+		       packet->payload.ip.ip);
>       break;
>
>     case ppt_tip_pgd:
>-      printf_unfiltered (("tip.pgd %u: 0x%" PRIx64 ""),
>-			 packet->payload.ip.ipc,
>-			 packet->payload.ip.ip);
>+      printf_filtered (("tip.pgd %u: 0x%" PRIx64 ""),
>+		       packet->payload.ip.ipc,
>+		       packet->payload.ip.ip);
>       break;
>
>     case ppt_fup:
>-      printf_unfiltered (("fup %u: 0x%" PRIx64 ""),
>-			 packet->payload.ip.ipc,
>-			 packet->payload.ip.ip);
>+      printf_filtered (("fup %u: 0x%" PRIx64 ""),
>+		       packet->payload.ip.ipc,
>+		       packet->payload.ip.ip);
>       break;
>
>     case ppt_tnt_8:
>-      printf_unfiltered (("tnt-8 %u: 0x%" PRIx64 ""),
>-			 packet->payload.tnt.bit_size,
>-			 packet->payload.tnt.payload);
>+      printf_filtered (("tnt-8 %u: 0x%" PRIx64 ""),
>+		       packet->payload.tnt.bit_size,
>+		       packet->payload.tnt.payload);
>       break;
>
>     case ppt_tnt_64:
>-      printf_unfiltered (("tnt-64 %u: 0x%" PRIx64 ""),
>-			 packet->payload.tnt.bit_size,
>-			 packet->payload.tnt.payload);
>+      printf_filtered (("tnt-64 %u: 0x%" PRIx64 ""),
>+		       packet->payload.tnt.bit_size,
>+		       packet->payload.tnt.payload);
>       break;
>
>     case ppt_pip:
>-      printf_unfiltered (("pip %" PRIx64 "%s"), packet->payload.pip.cr3,
>-			 packet->payload.pip.nr ? (" nr") : (""));
>+      printf_filtered (("pip %" PRIx64 "%s"), packet->payload.pip.cr3,
>+		       packet->payload.pip.nr ? (" nr") : (""));
>       break;
>
>     case ppt_tsc:
>-      printf_unfiltered (("tsc %" PRIx64 ""), packet->payload.tsc.tsc);
>+      printf_filtered (("tsc %" PRIx64 ""), packet->payload.tsc.tsc);
>       break;
>
>     case ppt_cbr:
>-      printf_unfiltered (("cbr %u"), packet->payload.cbr.ratio);
>+      printf_filtered (("cbr %u"), packet->payload.cbr.ratio);
>       break;
>
>     case ppt_mode:
>       switch (packet->payload.mode.leaf)
> 	{
> 	default:
>-	  printf_unfiltered (("mode %u"), packet->payload.mode.leaf);
>+	  printf_filtered (("mode %u"), packet->payload.mode.leaf);
> 	  break;
>
> 	case pt_mol_exec:
>-	  printf_unfiltered (("mode.exec%s%s"),
>-			     packet->payload.mode.bits.exec.csl
>-			     ? (" cs.l") : (""),
>-			     packet->payload.mode.bits.exec.csd
>-			     ? (" cs.d") : (""));
>+	  printf_filtered (("mode.exec%s%s"),
>+			   packet->payload.mode.bits.exec.csl
>+			   ? (" cs.l") : (""),
>+			   packet->payload.mode.bits.exec.csd
>+			   ? (" cs.d") : (""));
> 	  break;
>
> 	case pt_mol_tsx:
>-	  printf_unfiltered (("mode.tsx%s%s"),
>-			     packet->payload.mode.bits.tsx.intx
>-			     ? (" intx") : (""),
>-			     packet->payload.mode.bits.tsx.abrt
>-			     ? (" abrt") : (""));
>+	  printf_filtered (("mode.tsx%s%s"),
>+			   packet->payload.mode.bits.tsx.intx
>+			   ? (" intx") : (""),
>+			   packet->payload.mode.bits.tsx.abrt
>+			   ? (" abrt") : (""));
> 	  break;
> 	}
>       break;
>
>     case ppt_ovf:
>-      printf_unfiltered (("ovf"));
>+      printf_filtered (("ovf"));
>       break;
>
>     case ppt_stop:
>-      printf_unfiltered (("stop"));
>+      printf_filtered (("stop"));
>       break;
>
>     case ppt_vmcs:
>-      printf_unfiltered (("vmcs %" PRIx64 ""), packet->payload.vmcs.base);
>+      printf_filtered (("vmcs %" PRIx64 ""), packet->payload.vmcs.base);
>       break;
>
>     case ppt_tma:
>-      printf_unfiltered (("tma %x %x"), packet->payload.tma.ctc,
>-			 packet->payload.tma.fc);
>+      printf_filtered (("tma %x %x"), packet->payload.tma.ctc,
>+		       packet->payload.tma.fc);
>       break;
>
>     case ppt_mtc:
>-      printf_unfiltered (("mtc %x"), packet->payload.mtc.ctc);
>+      printf_filtered (("mtc %x"), packet->payload.mtc.ctc);
>       break;
>
>     case ppt_cyc:
>-      printf_unfiltered (("cyc %" PRIx64 ""), packet->payload.cyc.value);
>+      printf_filtered (("cyc %" PRIx64 ""), packet->payload.cyc.value);
>       break;
>
>     case ppt_mnt:
>-      printf_unfiltered (("mnt %" PRIx64 ""), packet->payload.mnt.payload);
>+      printf_filtered (("mnt %" PRIx64 ""), packet->payload.mnt.payload);
>       break;
>     }
> }
>@@ -3149,9 +3149,9 @@ btrace_maint_print_packets (struct btrace_thread_info
>*btinfo,
> 	  {
> 	    const btrace_block &block = blocks.at (blk);
>
>-	    printf_unfiltered ("%u\tbegin: %s, end: %s\n", blk,
>-			       core_addr_to_string_nz (block.begin),
>-			       core_addr_to_string_nz (block.end));
>+	    printf_filtered ("%u\tbegin: %s, end: %s\n", blk,
>+			     core_addr_to_string_nz (block.begin),
>+			     core_addr_to_string_nz (block.end));
> 	  }
>
> 	btinfo->maint.variant.bts.packet_history.begin = begin;
>@@ -3170,15 +3170,15 @@ btrace_maint_print_packets (struct
>btrace_thread_info *btinfo,
> 	  {
> 	    const struct btrace_pt_packet &packet = packets.at (pkt);
>
>-	    printf_unfiltered ("%u\t", pkt);
>-	    printf_unfiltered ("0x%" PRIx64 "\t", packet.offset);
>+	    printf_filtered ("%u\t", pkt);
>+	    printf_filtered ("0x%" PRIx64 "\t", packet.offset);
>
> 	    if (packet.errcode == pte_ok)
> 	      pt_print_packet (&packet.packet);
> 	    else
>-	      printf_unfiltered ("[error: %s]", pt_errstr (packet.errcode));
>+	      printf_filtered ("[error: %s]", pt_errstr (packet.errcode));
>
>-	    printf_unfiltered ("\n");
>+	    printf_filtered ("\n");
> 	  }
>
> 	btinfo->maint.variant.pt.packet_history.begin = begin;
>@@ -3256,7 +3256,7 @@ maint_btrace_packet_history_cmd (const char *arg, int
>from_tty)
>   btrace_maint_update_packets (btinfo, &begin, &end, &from, &to);
>   if (begin == end)
>     {
>-      printf_unfiltered (_("No trace.\n"));
>+      printf_filtered (_("No trace.\n"));
>       return;
>     }
>
>@@ -3398,8 +3398,8 @@ maint_info_btrace_cmd (const char *args, int from_tty)
>   if (conf == NULL)
>     error (_("No btrace configuration."));
>
>-  printf_unfiltered (_("Format: %s.\n"),
>-		     btrace_format_string (conf->format));
>+  printf_filtered (_("Format: %s.\n"),
>+		   btrace_format_string (conf->format));
>
>   switch (conf->format)
>     {
>@@ -3407,8 +3407,8 @@ maint_info_btrace_cmd (const char *args, int from_tty)
>       break;
>
>     case BTRACE_FORMAT_BTS:
>-      printf_unfiltered (_("Number of packets: %zu.\n"),
>-			 btinfo->data.variant.bts.blocks->size ());
>+      printf_filtered (_("Number of packets: %zu.\n"),
>+		       btinfo->data.variant.bts.blocks->size ());
>       break;
>
> #if defined (HAVE_LIBIPT)
>@@ -3417,14 +3417,14 @@ maint_info_btrace_cmd (const char *args, int
>from_tty)
> 	struct pt_version version;
>
> 	version = pt_library_version ();
>-	printf_unfiltered (_("Version: %u.%u.%u%s.\n"), version.major,
>-			   version.minor, version.build,
>-			   version.ext != NULL ? version.ext : "");
>+	printf_filtered (_("Version: %u.%u.%u%s.\n"), version.major,
>+			 version.minor, version.build,
>+			 version.ext != NULL ? version.ext : "");
>
> 	btrace_maint_update_pt_packets (btinfo);
>-	printf_unfiltered (_("Number of packets: %zu.\n"),
>-			   ((btinfo->maint.variant.pt.packets == nullptr)
>-			    ? 0 : btinfo->maint.variant.pt.packets->size ()));
>+	printf_filtered (_("Number of packets: %zu.\n"),
>+			 ((btinfo->maint.variant.pt.packets == nullptr)
>+			  ? 0 : btinfo->maint.variant.pt.packets->size ()));
>       }
>       break;
> #endif /* defined (HAVE_LIBIPT)  */
>diff --git a/gdb/record-btrace.c b/gdb/record-btrace.c
>index 108b3861446..c659d68e444 100644
>--- a/gdb/record-btrace.c
>+++ b/gdb/record-btrace.c
>@@ -506,7 +506,7 @@ record_btrace_print_bts_conf (const struct
>btrace_config_bts *conf)
>   if (size > 0)
>     {
>       suffix = record_btrace_adjust_size (&size);
>-      printf_unfiltered (_("Buffer size: %u%s.\n"), size, suffix);
>+      printf_filtered (_("Buffer size: %u%s.\n"), size, suffix);
>     }
> }
>
>@@ -522,7 +522,7 @@ record_btrace_print_pt_conf (const struct
>btrace_config_pt *conf)
>   if (size > 0)
>     {
>       suffix = record_btrace_adjust_size (&size);
>-      printf_unfiltered (_("Buffer size: %u%s.\n"), size, suffix);
>+      printf_filtered (_("Buffer size: %u%s.\n"), size, suffix);
>     }
> }
>
>@@ -531,8 +531,8 @@ record_btrace_print_pt_conf (const struct
>btrace_config_pt *conf)
> static void
> record_btrace_print_conf (const struct btrace_config *conf)
> {
>-  printf_unfiltered (_("Recording format: %s.\n"),
>-		     btrace_format_string (conf->format));
>+  printf_filtered (_("Recording format: %s.\n"),
>+		   btrace_format_string (conf->format));
>
>   switch (conf->format)
>     {
>@@ -602,14 +602,14 @@ record_btrace_target::info_record ()
>       gaps = btinfo->ngaps;
>     }
>
>-  printf_unfiltered (_("Recorded %u instructions in %u functions (%u gaps) "
>-		       "for thread %s (%s).\n"), insns, calls, gaps,
>-		     print_thread_id (tp),
>-		     target_pid_to_str (tp->ptid).c_str ());
>+  printf_filtered (_("Recorded %u instructions in %u functions (%u gaps) "
>+		     "for thread %s (%s).\n"), insns, calls, gaps,
>+		   print_thread_id (tp),
>+		   target_pid_to_str (tp->ptid).c_str ());
>
>   if (btrace_is_replaying (tp))
>-    printf_unfiltered (_("Replay in progress.  At instruction %u.\n"),
>-		       btrace_insn_number (btinfo->replay));
>+    printf_filtered (_("Replay in progress.  At instruction %u.\n"),
>+		     btrace_insn_number (btinfo->replay));
> }
>
> /* Print a decode error.  */
>@@ -938,9 +938,9 @@ record_btrace_target::insn_history (int size,
>gdb_disassembly_flags flags)
>   else
>     {
>       if (size < 0)
>-	printf_unfiltered (_("At the start of the branch trace record.\n"));
>+	printf_filtered (_("At the start of the branch trace record.\n"));
>       else
>-	printf_unfiltered (_("At the end of the branch trace record.\n"));
>+	printf_filtered (_("At the end of the branch trace record.\n"));
>     }
>
>   btrace_set_insn_history (btinfo, &begin, &end);
>@@ -1295,9 +1295,9 @@ record_btrace_target::call_history (int size,
>record_print_flags flags)
>   else
>     {
>       if (size < 0)
>-	printf_unfiltered (_("At the start of the branch trace record.\n"));
>+	printf_filtered (_("At the start of the branch trace record.\n"));
>       else
>-	printf_unfiltered (_("At the end of the branch trace record.\n"));
>+	printf_filtered (_("At the end of the branch trace record.\n"));
>     }
>
>   btrace_set_call_history (btinfo, &begin, &end);
>@@ -3037,11 +3037,11 @@ cmd_show_record_btrace_cpu (const char *args, int
>from_tty)
>   switch (record_btrace_cpu_state)
>     {
>     case CS_AUTO:
>-      printf_unfiltered (_("btrace cpu is 'auto'.\n"));
>+      printf_filtered (_("btrace cpu is 'auto'.\n"));
>       return;
>
>     case CS_NONE:
>-      printf_unfiltered (_("btrace cpu is 'none'.\n"));
>+      printf_filtered (_("btrace cpu is 'none'.\n"));
>       return;
>
>     case CS_CPU:
>@@ -3049,14 +3049,14 @@ cmd_show_record_btrace_cpu (const char *args, int
>from_tty)
> 	{
> 	case CV_INTEL:
> 	  if (record_btrace_cpu.stepping == 0)
>-	    printf_unfiltered (_("btrace cpu is 'intel: %u/%u'.\n"),
>-			       record_btrace_cpu.family,
>-			       record_btrace_cpu.model);
>+	    printf_filtered (_("btrace cpu is 'intel: %u/%u'.\n"),
>+			     record_btrace_cpu.family,
>+			     record_btrace_cpu.model);
> 	  else
>-	    printf_unfiltered (_("btrace cpu is 'intel: %u/%u/%u'.\n"),
>-			       record_btrace_cpu.family,
>-			       record_btrace_cpu.model,
>-			       record_btrace_cpu.stepping);
>+	    printf_filtered (_("btrace cpu is 'intel: %u/%u/%u'.\n"),
>+			     record_btrace_cpu.family,
>+			     record_btrace_cpu.model,
>+			     record_btrace_cpu.stepping);
> 	  return;
> 	}
>     }
>--
>2.31.1

Intel Deutschland GmbH
Registered Address: Am Campeon 10, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de <http://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



More information about the Gdb-patches mailing list