public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] Reduce use of unfiltered output in Darwin code
@ 2022-01-06 16:13 Tom Tromey
  2022-01-07 12:01 ` Andrew Burgess
  0 siblings, 1 reply; 5+ messages in thread
From: Tom Tromey @ 2022-01-06 16:13 UTC (permalink / raw)
  To: gdb-patches; +Cc: Tom Tromey

The Darwin code uses unfiltered output liberally.  This patch changes
this code to send some output to gdb_stdlog (in some cases via the use
of debug_prefixed_printf_cond_nofunc), or to gdb_stderr, or to simply
switch to filtered output.

Note that I didn't switch inferior_debug to use
debug_prefixed_printf_cond_nofunc, because that would affect the
output by removing the information about the inferior.  I wasn't sure
if this was important or not, so I left it in.

I can't compile this patch, so it's "best effort".
---
 gdb/darwin-nat-info.c | 128 +++++++++++++++++++++---------------------
 gdb/darwin-nat.c      |  72 +++++++++++++++---------
 gdb/i386-darwin-nat.c |  33 ++++++-----
 3 files changed, 127 insertions(+), 106 deletions(-)

diff --git a/gdb/darwin-nat-info.c b/gdb/darwin-nat-info.c
index f158960460d..8d00d6618ca 100644
--- a/gdb/darwin-nat-info.c
+++ b/gdb/darwin-nat-info.c
@@ -54,10 +54,10 @@
 } while (0)
 
 #define PRINT_FIELD(structure, field) \
-  printf_unfiltered(_(#field":\t%#lx\n"), (unsigned long) (structure)->field)
+  printf_filtered(_(#field":\t%#lx\n"), (unsigned long) (structure)->field)
 
 #define PRINT_TV_FIELD(structure, field) \
-  printf_unfiltered(_(#field":\t%u.%06u sec\n"),	\
+  printf_filtered(_(#field":\t%u.%06u sec\n"),	\
   (unsigned) (structure)->field.seconds, \
   (unsigned) (structure)->field.microseconds)
 
@@ -83,7 +83,7 @@ info_mach_tasks_command (const char *args, int from_tty)
   sysctl (sysControl, 3, procInfo, &length, NULL, 0);
 
   count = (length / sizeof (struct kinfo_proc));
-  printf_unfiltered (_("%d processes:\n"), count);
+  printf_filtered (_("%d processes:\n"), count);
   for (index = 0; index < count; ++index)
     {
       kern_return_t result;
@@ -94,15 +94,15 @@ info_mach_tasks_command (const char *args, int from_tty)
 			  &taskPort);
       if (KERN_SUCCESS == result)
 	{
-	  printf_unfiltered (_("    %s is %d has task %#x\n"),
-			     procInfo[index].kp_proc.p_comm,
-			     procInfo[index].kp_proc.p_pid, taskPort);
+	  printf_filtered (_("    %s is %d has task %#x\n"),
+			   procInfo[index].kp_proc.p_comm,
+			   procInfo[index].kp_proc.p_pid, taskPort);
 	}
       else
 	{
-	  printf_unfiltered (_("    %s is %d unknown task port\n"),
-			     procInfo[index].kp_proc.p_comm,
-			     procInfo[index].kp_proc.p_pid);
+	  printf_filtered (_("    %s is %d unknown task port\n"),
+			   procInfo[index].kp_proc.p_comm,
+			   procInfo[index].kp_proc.p_pid);
 	}
     }
 
@@ -118,7 +118,7 @@ get_task_from_args (const char *args)
   if (args == NULL || *args == 0)
     {
       if (inferior_ptid == null_ptid)
-	printf_unfiltered (_("No inferior running\n"));
+	printf_filtered (_("No inferior running\n"));
 
       darwin_inferior *priv = get_darwin_inferior (current_inferior ());
 
@@ -129,7 +129,7 @@ get_task_from_args (const char *args)
   task = strtoul (args, &eptr, 0);
   if (*eptr)
     {
-      printf_unfiltered (_("cannot parse task id '%s'\n"), args);
+      printf_filtered (_("cannot parse task id '%s'\n"), args);
       return TASK_NULL;
     }
   return task;
@@ -153,7 +153,7 @@ info_mach_task_command (const char *args, int from_tty)
   if (task == TASK_NULL)
     return;
 
-  printf_unfiltered (_("TASK_BASIC_INFO for 0x%x:\n"), task);
+  printf_filtered (_("TASK_BASIC_INFO for 0x%x:\n"), task);
   info_count = TASK_BASIC_INFO_COUNT;
   result = task_info (task,
 		      TASK_BASIC_INFO,
@@ -165,7 +165,7 @@ info_mach_task_command (const char *args, int from_tty)
   PRINT_FIELD (&task_info_data.basic, resident_size);
   PRINT_TV_FIELD (&task_info_data.basic, user_time);
   PRINT_TV_FIELD (&task_info_data.basic, system_time);
-  printf_unfiltered (_("\nTASK_EVENTS_INFO:\n"));
+  printf_filtered (_("\nTASK_EVENTS_INFO:\n"));
   info_count = TASK_EVENTS_INFO_COUNT;
   result = task_info (task,
 		      TASK_EVENTS_INFO,
@@ -181,7 +181,7 @@ info_mach_task_command (const char *args, int from_tty)
   PRINT_FIELD (&task_info_data.events, cow_faults);
   PRINT_FIELD (&task_info_data.events, messages_sent);
   PRINT_FIELD (&task_info_data.events, messages_received);
-  printf_unfiltered (_("\nTASK_THREAD_TIMES_INFO:\n"));
+  printf_filtered (_("\nTASK_THREAD_TIMES_INFO:\n"));
   info_count = TASK_THREAD_TIMES_INFO_COUNT;
   result = task_info (task,
 		      TASK_THREAD_TIMES_INFO,
@@ -211,8 +211,8 @@ info_mach_ports_command (const char *args, int from_tty)
 
   gdb_assert (name_count == type_count);
 
-  printf_unfiltered (_("Ports for task 0x%x:\n"), task);
-  printf_unfiltered (_("port   type\n"));
+  printf_filtered (_("Ports for task 0x%x:\n"), task);
+  printf_filtered (_("port   type\n"));
   for (index = 0; index < name_count; ++index)
     {
       mach_port_t port = names[index];
@@ -232,47 +232,47 @@ info_mach_ports_command (const char *args, int from_tty)
 	  {MACH_PORT_TYPE_DEAD_NAME, "dead", MACH_PORT_RIGHT_DEAD_NAME}
 	};
 
-      printf_unfiltered (_("%04x: %08x "), port, types[index]);
+      printf_filtered (_("%04x: %08x "), port, types[index]);
       for (j = 0; j < sizeof(descrs) / sizeof(*descrs); j++)
 	if (types[index] & descrs[j].type)
 	  {
 	    mach_port_urefs_t ref;
 	    kern_return_t ret;
 
-	    printf_unfiltered (_(" %s("), descrs[j].name);
+	    printf_filtered (_(" %s("), descrs[j].name);
 	    ret = mach_port_get_refs (task, port, descrs[j].right, &ref);
 	    if (ret != KERN_SUCCESS)
-	      printf_unfiltered (_("??"));
+	      printf_filtered (_("??"));
 	    else
-	      printf_unfiltered (_("%u"), ref);
-	    printf_unfiltered (_(" refs)"));
+	      printf_filtered (_("%u"), ref);
+	    printf_filtered (_(" refs)"));
 	  }
       
       if (task == task_self ())
 	{
 	  if (port == task_self())
-	    printf_unfiltered (_(" gdb-task"));
+	    printf_filtered (_(" gdb-task"));
 	  else if (port == darwin_host_self)
-	    printf_unfiltered (_(" host-self"));
+	    printf_filtered (_(" host-self"));
 	  else if (port == darwin_ex_port)
-	    printf_unfiltered (_(" gdb-exception"));
+	    printf_filtered (_(" gdb-exception"));
 	  else if (port == darwin_port_set)
-	    printf_unfiltered (_(" gdb-port_set"));
+	    printf_filtered (_(" gdb-port_set"));
 	  else if (inferior_ptid != null_ptid)
 	    {
 	      struct inferior *inf = current_inferior ();
 	      darwin_inferior *priv = get_darwin_inferior (inf);
 
 	      if (port == priv->task)
-		printf_unfiltered (_(" inferior-task"));
+		printf_filtered (_(" inferior-task"));
 	      else if (port == priv->notify_port)
-		printf_unfiltered (_(" inferior-notify"));
+		printf_filtered (_(" inferior-notify"));
 	      else
 		{
 		  for (int k = 0; k < priv->exception_info.count; k++)
 		    if (port == priv->exception_info.ports[k])
 		      {
-			printf_unfiltered (_(" inferior-excp-port"));
+			printf_filtered (_(" inferior-excp-port"));
 			break;
 		      }
 
@@ -280,8 +280,8 @@ info_mach_ports_command (const char *args, int from_tty)
 		    {
 		      if (port == t->gdb_port)
 			{
-			  printf_unfiltered (_(" inferior-thread for 0x%x"),
-					     priv->task);
+			  printf_filtered (_(" inferior-thread for 0x%x"),
+					   priv->task);
 			  break;
 			}
 		    }
@@ -289,7 +289,7 @@ info_mach_ports_command (const char *args, int from_tty)
 		}
 	    }
 	}
-      printf_unfiltered (_("\n"));
+      printf_filtered (_("\n"));
     }
 
   vm_deallocate (task_self (), (vm_address_t) names,
@@ -310,18 +310,18 @@ darwin_debug_port_info (task_t task, mach_port_t port)
     (task, port, MACH_PORT_RECEIVE_STATUS, (mach_port_info_t)&status, &len);
   MACH_CHECK_ERROR (kret);
 
-  printf_unfiltered (_("Port 0x%lx in task 0x%lx:\n"), (unsigned long) port,
-		     (unsigned long) task);
-  printf_unfiltered (_("  port set: 0x%x\n"), status.mps_pset);
-  printf_unfiltered (_("     seqno: 0x%x\n"), status.mps_seqno);
-  printf_unfiltered (_("   mscount: 0x%x\n"), status.mps_mscount);
-  printf_unfiltered (_("    qlimit: 0x%x\n"), status.mps_qlimit);
-  printf_unfiltered (_("  msgcount: 0x%x\n"), status.mps_msgcount);
-  printf_unfiltered (_("  sorights: 0x%x\n"), status.mps_sorights);
-  printf_unfiltered (_("   srights: 0x%x\n"), status.mps_srights);
-  printf_unfiltered (_(" pdrequest: 0x%x\n"), status.mps_pdrequest);
-  printf_unfiltered (_(" nsrequest: 0x%x\n"), status.mps_nsrequest);
-  printf_unfiltered (_("     flags: 0x%x\n"), status.mps_flags);
+  printf_filtered (_("Port 0x%lx in task 0x%lx:\n"), (unsigned long) port,
+		   (unsigned long) task);
+  printf_filtered (_("  port set: 0x%x\n"), status.mps_pset);
+  printf_filtered (_("     seqno: 0x%x\n"), status.mps_seqno);
+  printf_filtered (_("   mscount: 0x%x\n"), status.mps_mscount);
+  printf_filtered (_("    qlimit: 0x%x\n"), status.mps_qlimit);
+  printf_filtered (_("  msgcount: 0x%x\n"), status.mps_msgcount);
+  printf_filtered (_("  sorights: 0x%x\n"), status.mps_sorights);
+  printf_filtered (_("   srights: 0x%x\n"), status.mps_srights);
+  printf_filtered (_(" pdrequest: 0x%x\n"), status.mps_pdrequest);
+  printf_filtered (_(" nsrequest: 0x%x\n"), status.mps_nsrequest);
+  printf_filtered (_("     flags: 0x%x\n"), status.mps_flags);
 }
 
 static void
@@ -352,10 +352,10 @@ info_mach_threads_command (const char *args, int from_tty)
   result = task_threads (task, &threads, &thread_count);
   MACH_CHECK_ERROR (result);
 
-  printf_unfiltered (_("Threads in task %#x:\n"), task);
+  printf_filtered (_("Threads in task %#x:\n"), task);
   for (i = 0; i < thread_count; ++i)
     {
-      printf_unfiltered (_("    %#x\n"), threads[i]);
+      printf_filtered (_("    %#x\n"), threads[i]);
       mach_port_deallocate (task_self (), threads[i]);
     }
 
@@ -378,7 +378,7 @@ info_mach_thread_command (const char *args, int from_tty)
   CHECK_ARGS (_("Thread"), args);
   sscanf (args, "0x%x", &thread);
 
-  printf_unfiltered (_("THREAD_BASIC_INFO\n"));
+  printf_filtered (_("THREAD_BASIC_INFO\n"));
   info_count = THREAD_BASIC_INFO_COUNT;
   result = thread_info (thread,
 			THREAD_BASIC_INFO,
@@ -752,39 +752,39 @@ disp_exception (const darwin_exception_info *info)
       switch (info->behaviors[i])
 	{
 	case EXCEPTION_DEFAULT:
-	  printf_unfiltered (_("default"));
+	  printf_filtered (_("default"));
 	  break;
 	case EXCEPTION_STATE:
-	  printf_unfiltered (_("state"));
+	  printf_filtered (_("state"));
 	  break;
 	case EXCEPTION_STATE_IDENTITY:
-	  printf_unfiltered (_("state-identity"));
+	  printf_filtered (_("state-identity"));
 	  break;
 	default:
-	  printf_unfiltered (_("0x%x"), info->behaviors[i]);
+	  printf_filtered (_("0x%x"), info->behaviors[i]);
 	}
-      printf_unfiltered (_(", masks:"));
+      printf_filtered (_(", masks:"));
       if (mask & EXC_MASK_BAD_ACCESS)
-	printf_unfiltered (_(" BAD_ACCESS"));
+	printf_filtered (_(" BAD_ACCESS"));
       if (mask & EXC_MASK_BAD_INSTRUCTION)
-	printf_unfiltered (_(" BAD_INSTRUCTION"));
+	printf_filtered (_(" BAD_INSTRUCTION"));
       if (mask & EXC_MASK_ARITHMETIC)
-	printf_unfiltered (_(" ARITHMETIC"));
+	printf_filtered (_(" ARITHMETIC"));
       if (mask & EXC_MASK_EMULATION)
-	printf_unfiltered (_(" EMULATION"));
+	printf_filtered (_(" EMULATION"));
       if (mask & EXC_MASK_SOFTWARE)
-	printf_unfiltered (_(" SOFTWARE"));
+	printf_filtered (_(" SOFTWARE"));
       if (mask & EXC_MASK_BREAKPOINT)
-	printf_unfiltered (_(" BREAKPOINT"));
+	printf_filtered (_(" BREAKPOINT"));
       if (mask & EXC_MASK_SYSCALL)
-	printf_unfiltered (_(" SYSCALL"));
+	printf_filtered (_(" SYSCALL"));
       if (mask & EXC_MASK_MACH_SYSCALL)
-	printf_unfiltered (_(" MACH_SYSCALL"));
+	printf_filtered (_(" MACH_SYSCALL"));
       if (mask & EXC_MASK_RPC_ALERT)
-	printf_unfiltered (_(" RPC_ALERT"));
+	printf_filtered (_(" RPC_ALERT"));
       if (mask & EXC_MASK_CRASH)
-	printf_unfiltered (_(" CRASH"));
-      printf_unfiltered (_("\n"));
+	printf_filtered (_(" CRASH"));
+      printf_filtered (_("\n"));
     }
 }
 
@@ -801,7 +801,7 @@ info_mach_exceptions_command (const char *args, int from_tty)
       if (strcmp (args, "saved") == 0)
 	{
 	  if (inferior_ptid == null_ptid)
-	    printf_unfiltered (_("No inferior running\n"));
+	    printf_filtered (_("No inferior running\n"));
 
 	  darwin_inferior *priv = get_darwin_inferior (current_inferior ());
 
@@ -825,7 +825,7 @@ info_mach_exceptions_command (const char *args, int from_tty)
       struct inferior *inf;
 
       if (inferior_ptid == null_ptid)
-	printf_unfiltered (_("No inferior running\n"));
+	printf_filtered (_("No inferior running\n"));
       inf = current_inferior ();
       
       darwin_inferior *priv = get_darwin_inferior (inf);
diff --git a/gdb/darwin-nat.c b/gdb/darwin-nat.c
index e9c24dcc5dc..f61f8904457 100644
--- a/gdb/darwin-nat.c
+++ b/gdb/darwin-nat.c
@@ -169,8 +169,8 @@ inferior_debug (int level, const char *fmt, ...)
     return;
 
   va_start (ap, fmt);
-  printf_unfiltered (_("[%d inferior]: "), getpid ());
-  vprintf_unfiltered (fmt, ap);
+  fprintf_unfiltered (gdb_stdlog, _("[%d inferior]: "), getpid ());
+  vfprintf_unfiltered (gdb_stdlog, fmt, ap);
   va_end (ap);
 }
 
@@ -459,13 +459,20 @@ darwin_resume_inferior (struct inferior *inf)
 static void
 darwin_dump_message (mach_msg_header_t *hdr, int disp_body)
 {
-  printf_unfiltered (_("message header:\n"));
-  printf_unfiltered (_(" bits: 0x%x\n"), hdr->msgh_bits);
-  printf_unfiltered (_(" size: 0x%x\n"), hdr->msgh_size);
-  printf_unfiltered (_(" remote-port: 0x%x\n"), hdr->msgh_remote_port);
-  printf_unfiltered (_(" local-port: 0x%x\n"), hdr->msgh_local_port);
-  printf_unfiltered (_(" reserved: 0x%x\n"), hdr->msgh_reserved);
-  printf_unfiltered (_(" id: 0x%x\n"), hdr->msgh_id);
+  fprintf_unfiltered (gdb_stdlog, 
+		      _("message header:\n"));
+  fprintf_unfiltered (gdb_stdlog, 
+		      _(" bits: 0x%x\n"), hdr->msgh_bits);
+  fprintf_unfiltered (gdb_stdlog, 
+		      _(" size: 0x%x\n"), hdr->msgh_size);
+  fprintf_unfiltered (gdb_stdlog, 
+		      _(" remote-port: 0x%x\n"), hdr->msgh_remote_port);
+  fprintf_unfiltered (gdb_stdlog, 
+		      _(" local-port: 0x%x\n"), hdr->msgh_local_port);
+  fprintf_unfiltered (gdb_stdlog, 
+		      _(" reserved: 0x%x\n"), hdr->msgh_reserved);
+  fprintf_unfiltered (gdb_stdlog, 
+		      _(" id: 0x%x\n"), hdr->msgh_id);
 
   if (disp_body)
     {
@@ -484,21 +491,24 @@ darwin_dump_message (mach_msg_header_t *hdr, int disp_body)
 	    (mach_msg_port_descriptor_t *)(bod + 1);
 	  int k;
 	  NDR_record_t *ndr;
-	  printf_unfiltered (_("body: descriptor_count=%u\n"),
-			     bod->msgh_descriptor_count);
+	  fprintf_unfiltered (gdb_stdlog, 
+			      _("body: descriptor_count=%u\n"),
+			      bod->msgh_descriptor_count);
 	  data += sizeof (mach_msg_body_t);
 	  size -= sizeof (mach_msg_body_t);
 	  for (k = 0; k < bod->msgh_descriptor_count; k++)
 	    switch (desc[k].type)
 	      {
 	      case MACH_MSG_PORT_DESCRIPTOR:
-		printf_unfiltered
-		  (_(" descr %d: type=%u (port) name=0x%x, dispo=%d\n"),
+		fprintf_unfiltered
+		  (gdb_stdlog,
+		   _(" descr %d: type=%u (port) name=0x%x, dispo=%d\n"),
 		   k, desc[k].type, desc[k].name, desc[k].disposition);
 		break;
 	      default:
-		printf_unfiltered (_(" descr %d: type=%u\n"),
-				   k, desc[k].type);
+		fprintf_unfiltered (gdb_stdlog, 
+				    _(" descr %d: type=%u\n"),
+				    k, desc[k].type);
 		break;
 	      }
 	  data += bod->msgh_descriptor_count
@@ -506,8 +516,9 @@ darwin_dump_message (mach_msg_header_t *hdr, int disp_body)
 	  size -= bod->msgh_descriptor_count
 	    * sizeof (mach_msg_port_descriptor_t);
 	  ndr = (NDR_record_t *)(desc + bod->msgh_descriptor_count);
-	  printf_unfiltered
-	    (_("NDR: mig=%02x if=%02x encod=%02x "
+	  fprintf_unfiltered
+	    (gdb_stdlog,
+	     _("NDR: mig=%02x if=%02x encod=%02x "
 	       "int=%02x char=%02x float=%02x\n"),
 	     ndr->mig_vers, ndr->if_vers, ndr->mig_encoding,
 	     ndr->int_rep, ndr->char_rep, ndr->float_rep);
@@ -515,11 +526,11 @@ darwin_dump_message (mach_msg_header_t *hdr, int disp_body)
 	  size -= sizeof (NDR_record_t);
 	}
 
-      printf_unfiltered (_("  data:"));
+      fprintf_unfiltered (gdb_stdlog, _("  data:"));
       ldata = (const unsigned int *)data;
       for (i = 0; i < size / sizeof (unsigned int); i++)
-	printf_unfiltered (" %08x", ldata[i]);
-      printf_unfiltered (_("\n"));
+	fprintf_unfiltered (gdb_stdlog, " %08x", ldata[i]);
+      fprintf_unfiltered (gdb_stdlog, _("\n"));
     }
 }
 
@@ -977,8 +988,10 @@ darwin_nat_target::decode_message (mach_msg_header_t *hdr,
       if (res < 0)
 	{
 	  /* Should not happen...  */
-	  printf_unfiltered
-	    (_("darwin_wait: ill-formatted message (id=0x%x)\n"), hdr->msgh_id);
+	  fprintf_unfiltered
+	    (gdb_stderr,
+	     _("darwin_wait: ill-formatted message (id=0x%x)\n"),
+	     hdr->msgh_id);
 	  /* FIXME: send a failure reply?  */
 	  status->set_ignore ();
 	  return minus_one_ptid;
@@ -1060,8 +1073,9 @@ darwin_nat_target::decode_message (mach_msg_header_t *hdr,
       if (res < 0)
 	{
 	  /* Should not happen...  */
-	  printf_unfiltered
-	    (_("darwin_wait: ill-formatted message (id=0x%x, res=%d)\n"),
+	  fprintf_unfiltered
+	    (gdb_stderr,
+	     _("darwin_wait: ill-formatted message (id=0x%x, res=%d)\n"),
 	     hdr->msgh_id, res);
 	}
 
@@ -1086,8 +1100,9 @@ darwin_nat_target::decode_message (mach_msg_header_t *hdr,
 	      res_pid = wait4 (inf->pid, &wstatus, 0, NULL);
 	      if (res_pid < 0 || res_pid != inf->pid)
 		{
-		  printf_unfiltered (_("wait4: res=%d: %s\n"),
-				     res_pid, safe_strerror (errno));
+		  fprintf_unfiltered (gdb_stderr,
+				      _("wait4: res=%d: %s\n"),
+				      res_pid, safe_strerror (errno));
 		  status->set_ignore ();
 		  return minus_one_ptid;
 		}
@@ -2056,8 +2071,9 @@ darwin_nat_target::detach (inferior *inf, int from_tty)
     {
       res = PTRACE (PT_DETACH, inf->pid, 0, 0);
       if (res != 0)
-	printf_unfiltered (_("Unable to detach from process-id %d: %s (%d)"),
-			   inf->pid, safe_strerror (errno), errno);
+	fprintf_unfiltered (gdb_stderr,
+			    _("Unable to detach from process-id %d: %s (%d)"),
+			    inf->pid, safe_strerror (errno), errno);
     }
 
   darwin_reply_to_all_pending_messages (inf);
diff --git a/gdb/i386-darwin-nat.c b/gdb/i386-darwin-nat.c
index b7199da5610..92632696d39 100644
--- a/gdb/i386-darwin-nat.c
+++ b/gdb/i386-darwin-nat.c
@@ -77,9 +77,10 @@ i386_darwin_nat_target::fetch_registers (struct regcache *regcache, int regno)
 	     &gp_count);
 	  if (ret != KERN_SUCCESS)
 	    {
-	      printf_unfiltered (_("Error calling thread_get_state for "
-				   "GP registers for thread 0x%lx\n"),
-				 (unsigned long) current_thread);
+	      fprintf_unfiltered (gdb_stderr,
+				  _("Error calling thread_get_state for "
+				    "GP registers for thread 0x%lx\n"),
+				  (unsigned long) current_thread);
 	      MACH_CHECK_ERROR (ret);
 	    }
 
@@ -102,9 +103,10 @@ i386_darwin_nat_target::fetch_registers (struct regcache *regcache, int regno)
 	     &fp_count);
 	  if (ret != KERN_SUCCESS)
 	    {
-	      printf_unfiltered (_("Error calling thread_get_state for "
-				   "float registers for thread 0x%lx\n"),
-				 (unsigned long) current_thread);
+	      fprintf_unfiltered (gdb_stderr,
+				  _("Error calling thread_get_state for "
+				    "float registers for thread 0x%lx\n"),
+				  (unsigned long) current_thread);
 	      MACH_CHECK_ERROR (ret);
 	    }
 	  amd64_supply_fxsave (regcache, -1, &fp_regs.ufs.fs64.__fpu_fcw);
@@ -126,9 +128,10 @@ i386_darwin_nat_target::fetch_registers (struct regcache *regcache, int regno)
 	     &gp_count);
 	  if (ret != KERN_SUCCESS)
 	    {
-	      printf_unfiltered (_("Error calling thread_get_state for "
-				   "GP registers for thread 0x%lx\n"),
-				 (unsigned long) current_thread);
+	      fprintf_unfiltered (gdb_stderr,
+				  _("Error calling thread_get_state for "
+				    "GP registers for thread 0x%lx\n"),
+				  (unsigned long) current_thread);
 	      MACH_CHECK_ERROR (ret);
 	    }
 	  for (i = 0; i < I386_NUM_GREGS; i++)
@@ -150,9 +153,10 @@ i386_darwin_nat_target::fetch_registers (struct regcache *regcache, int regno)
 	     &fp_count);
 	  if (ret != KERN_SUCCESS)
 	    {
-	      printf_unfiltered (_("Error calling thread_get_state for "
-				   "float registers for thread 0x%lx\n"),
-				 (unsigned long) current_thread);
+	      fprintf_unfiltered (gdb_stderr,
+				  _("Error calling thread_get_state for "
+				    "float registers for thread 0x%lx\n"),
+				  (unsigned long) current_thread);
 	      MACH_CHECK_ERROR (ret);
 	    }
 	  i387_supply_fxsave (regcache, -1, &fp_regs.__fpu_fcw);
@@ -588,8 +592,9 @@ darwin_set_sstep (thread_t thread, int enable)
 			   (thread_state_t) &regs, &count);
   if (kret != KERN_SUCCESS)
     {
-      printf_unfiltered (_("darwin_set_sstep: error %x, thread=%x\n"),
-			 kret, thread);
+      fprintf_unfiltered (gdb_stderr,
+			  _("darwin_set_sstep: error %x, thread=%x\n"),
+			  kret, thread);
       return;
     }
 
-- 
2.31.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] Reduce use of unfiltered output in Darwin code
  2022-01-06 16:13 [PATCH] Reduce use of unfiltered output in Darwin code Tom Tromey
@ 2022-01-07 12:01 ` Andrew Burgess
  2022-01-07 22:13   ` Tom Tromey
  2022-01-08 16:36   ` Tom Tromey
  0 siblings, 2 replies; 5+ messages in thread
From: Andrew Burgess @ 2022-01-07 12:01 UTC (permalink / raw)
  To: Tom Tromey; +Cc: gdb-patches

* Tom Tromey <tom@tromey.com> [2022-01-06 09:13:42 -0700]:

> The Darwin code uses unfiltered output liberally.  This patch changes
> this code to send some output to gdb_stdlog (in some cases via the use
> of debug_prefixed_printf_cond_nofunc), or to gdb_stderr, or to simply
> switch to filtered output.

I'm tempted to suggest that all of the places where we now write to
gdb_stderr should be replaced with calls to warning instead.

Also, you have some trailing whitespace (which I only notice because
'git am' tells me, not because I go hunting for such things), I've
marked the locations below.

> 
> Note that I didn't switch inferior_debug to use
> debug_prefixed_printf_cond_nofunc, because that would affect the
> output by removing the information about the inferior.  I wasn't sure
> if this was important or not, so I left it in.
> 
> I can't compile this patch, so it's "best effort".
> ---
>  gdb/darwin-nat-info.c | 128 +++++++++++++++++++++---------------------
>  gdb/darwin-nat.c      |  72 +++++++++++++++---------
>  gdb/i386-darwin-nat.c |  33 ++++++-----
>  3 files changed, 127 insertions(+), 106 deletions(-)
> 
> diff --git a/gdb/darwin-nat-info.c b/gdb/darwin-nat-info.c
> index f158960460d..8d00d6618ca 100644
> --- a/gdb/darwin-nat-info.c
> +++ b/gdb/darwin-nat-info.c
> @@ -54,10 +54,10 @@
>  } while (0)
>  
>  #define PRINT_FIELD(structure, field) \
> -  printf_unfiltered(_(#field":\t%#lx\n"), (unsigned long) (structure)->field)
> +  printf_filtered(_(#field":\t%#lx\n"), (unsigned long) (structure)->field)
>  
>  #define PRINT_TV_FIELD(structure, field) \
> -  printf_unfiltered(_(#field":\t%u.%06u sec\n"),	\
> +  printf_filtered(_(#field":\t%u.%06u sec\n"),	\
>    (unsigned) (structure)->field.seconds, \
>    (unsigned) (structure)->field.microseconds)
>  
> @@ -83,7 +83,7 @@ info_mach_tasks_command (const char *args, int from_tty)
>    sysctl (sysControl, 3, procInfo, &length, NULL, 0);
>  
>    count = (length / sizeof (struct kinfo_proc));
> -  printf_unfiltered (_("%d processes:\n"), count);
> +  printf_filtered (_("%d processes:\n"), count);
>    for (index = 0; index < count; ++index)
>      {
>        kern_return_t result;
> @@ -94,15 +94,15 @@ info_mach_tasks_command (const char *args, int from_tty)
>  			  &taskPort);
>        if (KERN_SUCCESS == result)
>  	{
> -	  printf_unfiltered (_("    %s is %d has task %#x\n"),
> -			     procInfo[index].kp_proc.p_comm,
> -			     procInfo[index].kp_proc.p_pid, taskPort);
> +	  printf_filtered (_("    %s is %d has task %#x\n"),
> +			   procInfo[index].kp_proc.p_comm,
> +			   procInfo[index].kp_proc.p_pid, taskPort);
>  	}
>        else
>  	{
> -	  printf_unfiltered (_("    %s is %d unknown task port\n"),
> -			     procInfo[index].kp_proc.p_comm,
> -			     procInfo[index].kp_proc.p_pid);
> +	  printf_filtered (_("    %s is %d unknown task port\n"),
> +			   procInfo[index].kp_proc.p_comm,
> +			   procInfo[index].kp_proc.p_pid);
>  	}
>      }
>  
> @@ -118,7 +118,7 @@ get_task_from_args (const char *args)
>    if (args == NULL || *args == 0)
>      {
>        if (inferior_ptid == null_ptid)
> -	printf_unfiltered (_("No inferior running\n"));
> +	printf_filtered (_("No inferior running\n"));
>  
>        darwin_inferior *priv = get_darwin_inferior (current_inferior ());
>  
> @@ -129,7 +129,7 @@ get_task_from_args (const char *args)
>    task = strtoul (args, &eptr, 0);
>    if (*eptr)
>      {
> -      printf_unfiltered (_("cannot parse task id '%s'\n"), args);
> +      printf_filtered (_("cannot parse task id '%s'\n"), args);
>        return TASK_NULL;
>      }
>    return task;
> @@ -153,7 +153,7 @@ info_mach_task_command (const char *args, int from_tty)
>    if (task == TASK_NULL)
>      return;
>  
> -  printf_unfiltered (_("TASK_BASIC_INFO for 0x%x:\n"), task);
> +  printf_filtered (_("TASK_BASIC_INFO for 0x%x:\n"), task);
>    info_count = TASK_BASIC_INFO_COUNT;
>    result = task_info (task,
>  		      TASK_BASIC_INFO,
> @@ -165,7 +165,7 @@ info_mach_task_command (const char *args, int from_tty)
>    PRINT_FIELD (&task_info_data.basic, resident_size);
>    PRINT_TV_FIELD (&task_info_data.basic, user_time);
>    PRINT_TV_FIELD (&task_info_data.basic, system_time);
> -  printf_unfiltered (_("\nTASK_EVENTS_INFO:\n"));
> +  printf_filtered (_("\nTASK_EVENTS_INFO:\n"));
>    info_count = TASK_EVENTS_INFO_COUNT;
>    result = task_info (task,
>  		      TASK_EVENTS_INFO,
> @@ -181,7 +181,7 @@ info_mach_task_command (const char *args, int from_tty)
>    PRINT_FIELD (&task_info_data.events, cow_faults);
>    PRINT_FIELD (&task_info_data.events, messages_sent);
>    PRINT_FIELD (&task_info_data.events, messages_received);
> -  printf_unfiltered (_("\nTASK_THREAD_TIMES_INFO:\n"));
> +  printf_filtered (_("\nTASK_THREAD_TIMES_INFO:\n"));
>    info_count = TASK_THREAD_TIMES_INFO_COUNT;
>    result = task_info (task,
>  		      TASK_THREAD_TIMES_INFO,
> @@ -211,8 +211,8 @@ info_mach_ports_command (const char *args, int from_tty)
>  
>    gdb_assert (name_count == type_count);
>  
> -  printf_unfiltered (_("Ports for task 0x%x:\n"), task);
> -  printf_unfiltered (_("port   type\n"));
> +  printf_filtered (_("Ports for task 0x%x:\n"), task);
> +  printf_filtered (_("port   type\n"));
>    for (index = 0; index < name_count; ++index)
>      {
>        mach_port_t port = names[index];
> @@ -232,47 +232,47 @@ info_mach_ports_command (const char *args, int from_tty)
>  	  {MACH_PORT_TYPE_DEAD_NAME, "dead", MACH_PORT_RIGHT_DEAD_NAME}
>  	};
>  
> -      printf_unfiltered (_("%04x: %08x "), port, types[index]);
> +      printf_filtered (_("%04x: %08x "), port, types[index]);
>        for (j = 0; j < sizeof(descrs) / sizeof(*descrs); j++)
>  	if (types[index] & descrs[j].type)
>  	  {
>  	    mach_port_urefs_t ref;
>  	    kern_return_t ret;
>  
> -	    printf_unfiltered (_(" %s("), descrs[j].name);
> +	    printf_filtered (_(" %s("), descrs[j].name);
>  	    ret = mach_port_get_refs (task, port, descrs[j].right, &ref);
>  	    if (ret != KERN_SUCCESS)
> -	      printf_unfiltered (_("??"));
> +	      printf_filtered (_("??"));
>  	    else
> -	      printf_unfiltered (_("%u"), ref);
> -	    printf_unfiltered (_(" refs)"));
> +	      printf_filtered (_("%u"), ref);
> +	    printf_filtered (_(" refs)"));
>  	  }
>        
>        if (task == task_self ())
>  	{
>  	  if (port == task_self())
> -	    printf_unfiltered (_(" gdb-task"));
> +	    printf_filtered (_(" gdb-task"));
>  	  else if (port == darwin_host_self)
> -	    printf_unfiltered (_(" host-self"));
> +	    printf_filtered (_(" host-self"));
>  	  else if (port == darwin_ex_port)
> -	    printf_unfiltered (_(" gdb-exception"));
> +	    printf_filtered (_(" gdb-exception"));
>  	  else if (port == darwin_port_set)
> -	    printf_unfiltered (_(" gdb-port_set"));
> +	    printf_filtered (_(" gdb-port_set"));
>  	  else if (inferior_ptid != null_ptid)
>  	    {
>  	      struct inferior *inf = current_inferior ();
>  	      darwin_inferior *priv = get_darwin_inferior (inf);
>  
>  	      if (port == priv->task)
> -		printf_unfiltered (_(" inferior-task"));
> +		printf_filtered (_(" inferior-task"));
>  	      else if (port == priv->notify_port)
> -		printf_unfiltered (_(" inferior-notify"));
> +		printf_filtered (_(" inferior-notify"));
>  	      else
>  		{
>  		  for (int k = 0; k < priv->exception_info.count; k++)
>  		    if (port == priv->exception_info.ports[k])
>  		      {
> -			printf_unfiltered (_(" inferior-excp-port"));
> +			printf_filtered (_(" inferior-excp-port"));
>  			break;
>  		      }
>  
> @@ -280,8 +280,8 @@ info_mach_ports_command (const char *args, int from_tty)
>  		    {
>  		      if (port == t->gdb_port)
>  			{
> -			  printf_unfiltered (_(" inferior-thread for 0x%x"),
> -					     priv->task);
> +			  printf_filtered (_(" inferior-thread for 0x%x"),
> +					   priv->task);
>  			  break;
>  			}
>  		    }
> @@ -289,7 +289,7 @@ info_mach_ports_command (const char *args, int from_tty)
>  		}
>  	    }
>  	}
> -      printf_unfiltered (_("\n"));
> +      printf_filtered (_("\n"));
>      }
>  
>    vm_deallocate (task_self (), (vm_address_t) names,
> @@ -310,18 +310,18 @@ darwin_debug_port_info (task_t task, mach_port_t port)
>      (task, port, MACH_PORT_RECEIVE_STATUS, (mach_port_info_t)&status, &len);
>    MACH_CHECK_ERROR (kret);
>  
> -  printf_unfiltered (_("Port 0x%lx in task 0x%lx:\n"), (unsigned long) port,
> -		     (unsigned long) task);
> -  printf_unfiltered (_("  port set: 0x%x\n"), status.mps_pset);
> -  printf_unfiltered (_("     seqno: 0x%x\n"), status.mps_seqno);
> -  printf_unfiltered (_("   mscount: 0x%x\n"), status.mps_mscount);
> -  printf_unfiltered (_("    qlimit: 0x%x\n"), status.mps_qlimit);
> -  printf_unfiltered (_("  msgcount: 0x%x\n"), status.mps_msgcount);
> -  printf_unfiltered (_("  sorights: 0x%x\n"), status.mps_sorights);
> -  printf_unfiltered (_("   srights: 0x%x\n"), status.mps_srights);
> -  printf_unfiltered (_(" pdrequest: 0x%x\n"), status.mps_pdrequest);
> -  printf_unfiltered (_(" nsrequest: 0x%x\n"), status.mps_nsrequest);
> -  printf_unfiltered (_("     flags: 0x%x\n"), status.mps_flags);
> +  printf_filtered (_("Port 0x%lx in task 0x%lx:\n"), (unsigned long) port,
> +		   (unsigned long) task);
> +  printf_filtered (_("  port set: 0x%x\n"), status.mps_pset);
> +  printf_filtered (_("     seqno: 0x%x\n"), status.mps_seqno);
> +  printf_filtered (_("   mscount: 0x%x\n"), status.mps_mscount);
> +  printf_filtered (_("    qlimit: 0x%x\n"), status.mps_qlimit);
> +  printf_filtered (_("  msgcount: 0x%x\n"), status.mps_msgcount);
> +  printf_filtered (_("  sorights: 0x%x\n"), status.mps_sorights);
> +  printf_filtered (_("   srights: 0x%x\n"), status.mps_srights);
> +  printf_filtered (_(" pdrequest: 0x%x\n"), status.mps_pdrequest);
> +  printf_filtered (_(" nsrequest: 0x%x\n"), status.mps_nsrequest);
> +  printf_filtered (_("     flags: 0x%x\n"), status.mps_flags);
>  }
>  
>  static void
> @@ -352,10 +352,10 @@ info_mach_threads_command (const char *args, int from_tty)
>    result = task_threads (task, &threads, &thread_count);
>    MACH_CHECK_ERROR (result);
>  
> -  printf_unfiltered (_("Threads in task %#x:\n"), task);
> +  printf_filtered (_("Threads in task %#x:\n"), task);
>    for (i = 0; i < thread_count; ++i)
>      {
> -      printf_unfiltered (_("    %#x\n"), threads[i]);
> +      printf_filtered (_("    %#x\n"), threads[i]);
>        mach_port_deallocate (task_self (), threads[i]);
>      }
>  
> @@ -378,7 +378,7 @@ info_mach_thread_command (const char *args, int from_tty)
>    CHECK_ARGS (_("Thread"), args);
>    sscanf (args, "0x%x", &thread);
>  
> -  printf_unfiltered (_("THREAD_BASIC_INFO\n"));
> +  printf_filtered (_("THREAD_BASIC_INFO\n"));
>    info_count = THREAD_BASIC_INFO_COUNT;
>    result = thread_info (thread,
>  			THREAD_BASIC_INFO,
> @@ -752,39 +752,39 @@ disp_exception (const darwin_exception_info *info)
>        switch (info->behaviors[i])
>  	{
>  	case EXCEPTION_DEFAULT:
> -	  printf_unfiltered (_("default"));
> +	  printf_filtered (_("default"));
>  	  break;
>  	case EXCEPTION_STATE:
> -	  printf_unfiltered (_("state"));
> +	  printf_filtered (_("state"));
>  	  break;
>  	case EXCEPTION_STATE_IDENTITY:
> -	  printf_unfiltered (_("state-identity"));
> +	  printf_filtered (_("state-identity"));
>  	  break;
>  	default:
> -	  printf_unfiltered (_("0x%x"), info->behaviors[i]);
> +	  printf_filtered (_("0x%x"), info->behaviors[i]);
>  	}
> -      printf_unfiltered (_(", masks:"));
> +      printf_filtered (_(", masks:"));
>        if (mask & EXC_MASK_BAD_ACCESS)
> -	printf_unfiltered (_(" BAD_ACCESS"));
> +	printf_filtered (_(" BAD_ACCESS"));
>        if (mask & EXC_MASK_BAD_INSTRUCTION)
> -	printf_unfiltered (_(" BAD_INSTRUCTION"));
> +	printf_filtered (_(" BAD_INSTRUCTION"));
>        if (mask & EXC_MASK_ARITHMETIC)
> -	printf_unfiltered (_(" ARITHMETIC"));
> +	printf_filtered (_(" ARITHMETIC"));
>        if (mask & EXC_MASK_EMULATION)
> -	printf_unfiltered (_(" EMULATION"));
> +	printf_filtered (_(" EMULATION"));
>        if (mask & EXC_MASK_SOFTWARE)
> -	printf_unfiltered (_(" SOFTWARE"));
> +	printf_filtered (_(" SOFTWARE"));
>        if (mask & EXC_MASK_BREAKPOINT)
> -	printf_unfiltered (_(" BREAKPOINT"));
> +	printf_filtered (_(" BREAKPOINT"));
>        if (mask & EXC_MASK_SYSCALL)
> -	printf_unfiltered (_(" SYSCALL"));
> +	printf_filtered (_(" SYSCALL"));
>        if (mask & EXC_MASK_MACH_SYSCALL)
> -	printf_unfiltered (_(" MACH_SYSCALL"));
> +	printf_filtered (_(" MACH_SYSCALL"));
>        if (mask & EXC_MASK_RPC_ALERT)
> -	printf_unfiltered (_(" RPC_ALERT"));
> +	printf_filtered (_(" RPC_ALERT"));
>        if (mask & EXC_MASK_CRASH)
> -	printf_unfiltered (_(" CRASH"));
> -      printf_unfiltered (_("\n"));
> +	printf_filtered (_(" CRASH"));
> +      printf_filtered (_("\n"));
>      }
>  }
>  
> @@ -801,7 +801,7 @@ info_mach_exceptions_command (const char *args, int from_tty)
>        if (strcmp (args, "saved") == 0)
>  	{
>  	  if (inferior_ptid == null_ptid)
> -	    printf_unfiltered (_("No inferior running\n"));
> +	    printf_filtered (_("No inferior running\n"));
>  
>  	  darwin_inferior *priv = get_darwin_inferior (current_inferior ());
>  
> @@ -825,7 +825,7 @@ info_mach_exceptions_command (const char *args, int from_tty)
>        struct inferior *inf;
>  
>        if (inferior_ptid == null_ptid)
> -	printf_unfiltered (_("No inferior running\n"));
> +	printf_filtered (_("No inferior running\n"));
>        inf = current_inferior ();
>        
>        darwin_inferior *priv = get_darwin_inferior (inf);
> diff --git a/gdb/darwin-nat.c b/gdb/darwin-nat.c
> index e9c24dcc5dc..f61f8904457 100644
> --- a/gdb/darwin-nat.c
> +++ b/gdb/darwin-nat.c
> @@ -169,8 +169,8 @@ inferior_debug (int level, const char *fmt, ...)
>      return;
>  
>    va_start (ap, fmt);
> -  printf_unfiltered (_("[%d inferior]: "), getpid ());
> -  vprintf_unfiltered (fmt, ap);
> +  fprintf_unfiltered (gdb_stdlog, _("[%d inferior]: "), getpid ());
> +  vfprintf_unfiltered (gdb_stdlog, fmt, ap);
>    va_end (ap);
>  }
>  
> @@ -459,13 +459,20 @@ darwin_resume_inferior (struct inferior *inf)
>  static void
>  darwin_dump_message (mach_msg_header_t *hdr, int disp_body)
>  {
> -  printf_unfiltered (_("message header:\n"));
> -  printf_unfiltered (_(" bits: 0x%x\n"), hdr->msgh_bits);
> -  printf_unfiltered (_(" size: 0x%x\n"), hdr->msgh_size);
> -  printf_unfiltered (_(" remote-port: 0x%x\n"), hdr->msgh_remote_port);
> -  printf_unfiltered (_(" local-port: 0x%x\n"), hdr->msgh_local_port);
> -  printf_unfiltered (_(" reserved: 0x%x\n"), hdr->msgh_reserved);
> -  printf_unfiltered (_(" id: 0x%x\n"), hdr->msgh_id);
> +  fprintf_unfiltered (gdb_stdlog, 
> +		      _("message header:\n"));
> +  fprintf_unfiltered (gdb_stdlog, 
> +		      _(" bits: 0x%x\n"), hdr->msgh_bits);
> +  fprintf_unfiltered (gdb_stdlog, 
> +		      _(" size: 0x%x\n"), hdr->msgh_size);
> +  fprintf_unfiltered (gdb_stdlog, 
> +		      _(" remote-port: 0x%x\n"), hdr->msgh_remote_port);
> +  fprintf_unfiltered (gdb_stdlog, 
> +		      _(" local-port: 0x%x\n"), hdr->msgh_local_port);
> +  fprintf_unfiltered (gdb_stdlog, 
> +		      _(" reserved: 0x%x\n"), hdr->msgh_reserved);
> +  fprintf_unfiltered (gdb_stdlog, 
> +		      _(" id: 0x%x\n"), hdr->msgh_id);

Trailing whitespace after gdb_stdlog in the 7 calls above.

>  
>    if (disp_body)
>      {
> @@ -484,21 +491,24 @@ darwin_dump_message (mach_msg_header_t *hdr, int disp_body)
>  	    (mach_msg_port_descriptor_t *)(bod + 1);
>  	  int k;
>  	  NDR_record_t *ndr;
> -	  printf_unfiltered (_("body: descriptor_count=%u\n"),
> -			     bod->msgh_descriptor_count);
> +	  fprintf_unfiltered (gdb_stdlog, 
> +			      _("body: descriptor_count=%u\n"),
> +			      bod->msgh_descriptor_count);

And another one.

>  	  data += sizeof (mach_msg_body_t);
>  	  size -= sizeof (mach_msg_body_t);
>  	  for (k = 0; k < bod->msgh_descriptor_count; k++)
>  	    switch (desc[k].type)
>  	      {
>  	      case MACH_MSG_PORT_DESCRIPTOR:
> -		printf_unfiltered
> -		  (_(" descr %d: type=%u (port) name=0x%x, dispo=%d\n"),
> +		fprintf_unfiltered
> +		  (gdb_stdlog,
> +		   _(" descr %d: type=%u (port) name=0x%x, dispo=%d\n"),
>  		   k, desc[k].type, desc[k].name, desc[k].disposition);
>  		break;
>  	      default:
> -		printf_unfiltered (_(" descr %d: type=%u\n"),
> -				   k, desc[k].type);
> +		fprintf_unfiltered (gdb_stdlog, 
> +				    _(" descr %d: type=%u\n"),
> +				    k, desc[k].type);

And again.

Thanks,
Andrew

>  		break;
>  	      }
>  	  data += bod->msgh_descriptor_count
> @@ -506,8 +516,9 @@ darwin_dump_message (mach_msg_header_t *hdr, int disp_body)
>  	  size -= bod->msgh_descriptor_count
>  	    * sizeof (mach_msg_port_descriptor_t);
>  	  ndr = (NDR_record_t *)(desc + bod->msgh_descriptor_count);
> -	  printf_unfiltered
> -	    (_("NDR: mig=%02x if=%02x encod=%02x "
> +	  fprintf_unfiltered
> +	    (gdb_stdlog,
> +	     _("NDR: mig=%02x if=%02x encod=%02x "
>  	       "int=%02x char=%02x float=%02x\n"),
>  	     ndr->mig_vers, ndr->if_vers, ndr->mig_encoding,
>  	     ndr->int_rep, ndr->char_rep, ndr->float_rep);
> @@ -515,11 +526,11 @@ darwin_dump_message (mach_msg_header_t *hdr, int disp_body)
>  	  size -= sizeof (NDR_record_t);
>  	}
>  
> -      printf_unfiltered (_("  data:"));
> +      fprintf_unfiltered (gdb_stdlog, _("  data:"));
>        ldata = (const unsigned int *)data;
>        for (i = 0; i < size / sizeof (unsigned int); i++)
> -	printf_unfiltered (" %08x", ldata[i]);
> -      printf_unfiltered (_("\n"));
> +	fprintf_unfiltered (gdb_stdlog, " %08x", ldata[i]);
> +      fprintf_unfiltered (gdb_stdlog, _("\n"));
>      }
>  }
>  
> @@ -977,8 +988,10 @@ darwin_nat_target::decode_message (mach_msg_header_t *hdr,
>        if (res < 0)
>  	{
>  	  /* Should not happen...  */
> -	  printf_unfiltered
> -	    (_("darwin_wait: ill-formatted message (id=0x%x)\n"), hdr->msgh_id);
> +	  fprintf_unfiltered
> +	    (gdb_stderr,
> +	     _("darwin_wait: ill-formatted message (id=0x%x)\n"),
> +	     hdr->msgh_id);
>  	  /* FIXME: send a failure reply?  */
>  	  status->set_ignore ();
>  	  return minus_one_ptid;
> @@ -1060,8 +1073,9 @@ darwin_nat_target::decode_message (mach_msg_header_t *hdr,
>        if (res < 0)
>  	{
>  	  /* Should not happen...  */
> -	  printf_unfiltered
> -	    (_("darwin_wait: ill-formatted message (id=0x%x, res=%d)\n"),
> +	  fprintf_unfiltered
> +	    (gdb_stderr,
> +	     _("darwin_wait: ill-formatted message (id=0x%x, res=%d)\n"),
>  	     hdr->msgh_id, res);
>  	}
>  
> @@ -1086,8 +1100,9 @@ darwin_nat_target::decode_message (mach_msg_header_t *hdr,
>  	      res_pid = wait4 (inf->pid, &wstatus, 0, NULL);
>  	      if (res_pid < 0 || res_pid != inf->pid)
>  		{
> -		  printf_unfiltered (_("wait4: res=%d: %s\n"),
> -				     res_pid, safe_strerror (errno));
> +		  fprintf_unfiltered (gdb_stderr,
> +				      _("wait4: res=%d: %s\n"),
> +				      res_pid, safe_strerror (errno));
>  		  status->set_ignore ();
>  		  return minus_one_ptid;
>  		}
> @@ -2056,8 +2071,9 @@ darwin_nat_target::detach (inferior *inf, int from_tty)
>      {
>        res = PTRACE (PT_DETACH, inf->pid, 0, 0);
>        if (res != 0)
> -	printf_unfiltered (_("Unable to detach from process-id %d: %s (%d)"),
> -			   inf->pid, safe_strerror (errno), errno);
> +	fprintf_unfiltered (gdb_stderr,
> +			    _("Unable to detach from process-id %d: %s (%d)"),
> +			    inf->pid, safe_strerror (errno), errno);
>      }
>  
>    darwin_reply_to_all_pending_messages (inf);
> diff --git a/gdb/i386-darwin-nat.c b/gdb/i386-darwin-nat.c
> index b7199da5610..92632696d39 100644
> --- a/gdb/i386-darwin-nat.c
> +++ b/gdb/i386-darwin-nat.c
> @@ -77,9 +77,10 @@ i386_darwin_nat_target::fetch_registers (struct regcache *regcache, int regno)
>  	     &gp_count);
>  	  if (ret != KERN_SUCCESS)
>  	    {
> -	      printf_unfiltered (_("Error calling thread_get_state for "
> -				   "GP registers for thread 0x%lx\n"),
> -				 (unsigned long) current_thread);
> +	      fprintf_unfiltered (gdb_stderr,
> +				  _("Error calling thread_get_state for "
> +				    "GP registers for thread 0x%lx\n"),
> +				  (unsigned long) current_thread);
>  	      MACH_CHECK_ERROR (ret);
>  	    }
>  
> @@ -102,9 +103,10 @@ i386_darwin_nat_target::fetch_registers (struct regcache *regcache, int regno)
>  	     &fp_count);
>  	  if (ret != KERN_SUCCESS)
>  	    {
> -	      printf_unfiltered (_("Error calling thread_get_state for "
> -				   "float registers for thread 0x%lx\n"),
> -				 (unsigned long) current_thread);
> +	      fprintf_unfiltered (gdb_stderr,
> +				  _("Error calling thread_get_state for "
> +				    "float registers for thread 0x%lx\n"),
> +				  (unsigned long) current_thread);
>  	      MACH_CHECK_ERROR (ret);
>  	    }
>  	  amd64_supply_fxsave (regcache, -1, &fp_regs.ufs.fs64.__fpu_fcw);
> @@ -126,9 +128,10 @@ i386_darwin_nat_target::fetch_registers (struct regcache *regcache, int regno)
>  	     &gp_count);
>  	  if (ret != KERN_SUCCESS)
>  	    {
> -	      printf_unfiltered (_("Error calling thread_get_state for "
> -				   "GP registers for thread 0x%lx\n"),
> -				 (unsigned long) current_thread);
> +	      fprintf_unfiltered (gdb_stderr,
> +				  _("Error calling thread_get_state for "
> +				    "GP registers for thread 0x%lx\n"),
> +				  (unsigned long) current_thread);
>  	      MACH_CHECK_ERROR (ret);
>  	    }
>  	  for (i = 0; i < I386_NUM_GREGS; i++)
> @@ -150,9 +153,10 @@ i386_darwin_nat_target::fetch_registers (struct regcache *regcache, int regno)
>  	     &fp_count);
>  	  if (ret != KERN_SUCCESS)
>  	    {
> -	      printf_unfiltered (_("Error calling thread_get_state for "
> -				   "float registers for thread 0x%lx\n"),
> -				 (unsigned long) current_thread);
> +	      fprintf_unfiltered (gdb_stderr,
> +				  _("Error calling thread_get_state for "
> +				    "float registers for thread 0x%lx\n"),
> +				  (unsigned long) current_thread);
>  	      MACH_CHECK_ERROR (ret);
>  	    }
>  	  i387_supply_fxsave (regcache, -1, &fp_regs.__fpu_fcw);
> @@ -588,8 +592,9 @@ darwin_set_sstep (thread_t thread, int enable)
>  			   (thread_state_t) &regs, &count);
>    if (kret != KERN_SUCCESS)
>      {
> -      printf_unfiltered (_("darwin_set_sstep: error %x, thread=%x\n"),
> -			 kret, thread);
> +      fprintf_unfiltered (gdb_stderr,
> +			  _("darwin_set_sstep: error %x, thread=%x\n"),
> +			  kret, thread);
>        return;
>      }
>  
> -- 
> 2.31.1
> 


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] Reduce use of unfiltered output in Darwin code
  2022-01-07 12:01 ` Andrew Burgess
@ 2022-01-07 22:13   ` Tom Tromey
  2022-01-08 16:36   ` Tom Tromey
  1 sibling, 0 replies; 5+ messages in thread
From: Tom Tromey @ 2022-01-07 22:13 UTC (permalink / raw)
  To: Andrew Burgess; +Cc: Tom Tromey, gdb-patches

Andrew> I'm tempted to suggest that all of the places where we now write to
Andrew> gdb_stderr should be replaced with calls to warning instead.

I'll do that.

Andrew> Also, you have some trailing whitespace (which I only notice because
Andrew> 'git am' tells me, not because I go hunting for such things), I've
Andrew> marked the locations below.

Thanks, I'll fix these.

Tom

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] Reduce use of unfiltered output in Darwin code
  2022-01-07 12:01 ` Andrew Burgess
  2022-01-07 22:13   ` Tom Tromey
@ 2022-01-08 16:36   ` Tom Tromey
  2022-01-09 18:00     ` Andrew Burgess
  1 sibling, 1 reply; 5+ messages in thread
From: Tom Tromey @ 2022-01-08 16:36 UTC (permalink / raw)
  To: Andrew Burgess; +Cc: Tom Tromey, gdb-patches

>> The Darwin code uses unfiltered output liberally.  This patch changes
>> this code to send some output to gdb_stdlog (in some cases via the use
>> of debug_prefixed_printf_cond_nofunc), or to gdb_stderr, or to simply
>> switch to filtered output.

Andrew> I'm tempted to suggest that all of the places where we now write to
Andrew> gdb_stderr should be replaced with calls to warning instead.

Andrew> Also, you have some trailing whitespace (which I only notice because
Andrew> 'git am' tells me, not because I go hunting for such things), I've
Andrew> marked the locations below.

Here's v2.

Tom

commit bb991012bcfb730a647337efdd9c7a4afc86a2be
Author: Tom Tromey <tom@tromey.com>
Date:   Sun Dec 26 21:38:34 2021 -0700

    Reduce use of unfiltered output in Darwin code
    
    The Darwin code uses unfiltered output liberally.  This patch changes
    this code to send some output to gdb_stdlog (in some cases via the use
    of debug_prefixed_printf_cond_nofunc), or to gdb_stderr, or to simply
    switch to filtered output.
    
    Note that I didn't switch inferior_debug to use
    debug_prefixed_printf_cond_nofunc, because that would affect the
    output by removing the information about the inferior.  I wasn't sure
    if this was important or not, so I left it in.
    
    v2 of this patch uses warning rather than prints to gdb_stderr, and
    removes some trailing whitespace.
    
    I can't compile this patch, so it's "best effort".

diff --git a/gdb/darwin-nat-info.c b/gdb/darwin-nat-info.c
index f158960460d..8d00d6618ca 100644
--- a/gdb/darwin-nat-info.c
+++ b/gdb/darwin-nat-info.c
@@ -54,10 +54,10 @@
 } while (0)
 
 #define PRINT_FIELD(structure, field) \
-  printf_unfiltered(_(#field":\t%#lx\n"), (unsigned long) (structure)->field)
+  printf_filtered(_(#field":\t%#lx\n"), (unsigned long) (structure)->field)
 
 #define PRINT_TV_FIELD(structure, field) \
-  printf_unfiltered(_(#field":\t%u.%06u sec\n"),	\
+  printf_filtered(_(#field":\t%u.%06u sec\n"),	\
   (unsigned) (structure)->field.seconds, \
   (unsigned) (structure)->field.microseconds)
 
@@ -83,7 +83,7 @@ info_mach_tasks_command (const char *args, int from_tty)
   sysctl (sysControl, 3, procInfo, &length, NULL, 0);
 
   count = (length / sizeof (struct kinfo_proc));
-  printf_unfiltered (_("%d processes:\n"), count);
+  printf_filtered (_("%d processes:\n"), count);
   for (index = 0; index < count; ++index)
     {
       kern_return_t result;
@@ -94,15 +94,15 @@ info_mach_tasks_command (const char *args, int from_tty)
 			  &taskPort);
       if (KERN_SUCCESS == result)
 	{
-	  printf_unfiltered (_("    %s is %d has task %#x\n"),
-			     procInfo[index].kp_proc.p_comm,
-			     procInfo[index].kp_proc.p_pid, taskPort);
+	  printf_filtered (_("    %s is %d has task %#x\n"),
+			   procInfo[index].kp_proc.p_comm,
+			   procInfo[index].kp_proc.p_pid, taskPort);
 	}
       else
 	{
-	  printf_unfiltered (_("    %s is %d unknown task port\n"),
-			     procInfo[index].kp_proc.p_comm,
-			     procInfo[index].kp_proc.p_pid);
+	  printf_filtered (_("    %s is %d unknown task port\n"),
+			   procInfo[index].kp_proc.p_comm,
+			   procInfo[index].kp_proc.p_pid);
 	}
     }
 
@@ -118,7 +118,7 @@ get_task_from_args (const char *args)
   if (args == NULL || *args == 0)
     {
       if (inferior_ptid == null_ptid)
-	printf_unfiltered (_("No inferior running\n"));
+	printf_filtered (_("No inferior running\n"));
 
       darwin_inferior *priv = get_darwin_inferior (current_inferior ());
 
@@ -129,7 +129,7 @@ get_task_from_args (const char *args)
   task = strtoul (args, &eptr, 0);
   if (*eptr)
     {
-      printf_unfiltered (_("cannot parse task id '%s'\n"), args);
+      printf_filtered (_("cannot parse task id '%s'\n"), args);
       return TASK_NULL;
     }
   return task;
@@ -153,7 +153,7 @@ info_mach_task_command (const char *args, int from_tty)
   if (task == TASK_NULL)
     return;
 
-  printf_unfiltered (_("TASK_BASIC_INFO for 0x%x:\n"), task);
+  printf_filtered (_("TASK_BASIC_INFO for 0x%x:\n"), task);
   info_count = TASK_BASIC_INFO_COUNT;
   result = task_info (task,
 		      TASK_BASIC_INFO,
@@ -165,7 +165,7 @@ info_mach_task_command (const char *args, int from_tty)
   PRINT_FIELD (&task_info_data.basic, resident_size);
   PRINT_TV_FIELD (&task_info_data.basic, user_time);
   PRINT_TV_FIELD (&task_info_data.basic, system_time);
-  printf_unfiltered (_("\nTASK_EVENTS_INFO:\n"));
+  printf_filtered (_("\nTASK_EVENTS_INFO:\n"));
   info_count = TASK_EVENTS_INFO_COUNT;
   result = task_info (task,
 		      TASK_EVENTS_INFO,
@@ -181,7 +181,7 @@ info_mach_task_command (const char *args, int from_tty)
   PRINT_FIELD (&task_info_data.events, cow_faults);
   PRINT_FIELD (&task_info_data.events, messages_sent);
   PRINT_FIELD (&task_info_data.events, messages_received);
-  printf_unfiltered (_("\nTASK_THREAD_TIMES_INFO:\n"));
+  printf_filtered (_("\nTASK_THREAD_TIMES_INFO:\n"));
   info_count = TASK_THREAD_TIMES_INFO_COUNT;
   result = task_info (task,
 		      TASK_THREAD_TIMES_INFO,
@@ -211,8 +211,8 @@ info_mach_ports_command (const char *args, int from_tty)
 
   gdb_assert (name_count == type_count);
 
-  printf_unfiltered (_("Ports for task 0x%x:\n"), task);
-  printf_unfiltered (_("port   type\n"));
+  printf_filtered (_("Ports for task 0x%x:\n"), task);
+  printf_filtered (_("port   type\n"));
   for (index = 0; index < name_count; ++index)
     {
       mach_port_t port = names[index];
@@ -232,47 +232,47 @@ info_mach_ports_command (const char *args, int from_tty)
 	  {MACH_PORT_TYPE_DEAD_NAME, "dead", MACH_PORT_RIGHT_DEAD_NAME}
 	};
 
-      printf_unfiltered (_("%04x: %08x "), port, types[index]);
+      printf_filtered (_("%04x: %08x "), port, types[index]);
       for (j = 0; j < sizeof(descrs) / sizeof(*descrs); j++)
 	if (types[index] & descrs[j].type)
 	  {
 	    mach_port_urefs_t ref;
 	    kern_return_t ret;
 
-	    printf_unfiltered (_(" %s("), descrs[j].name);
+	    printf_filtered (_(" %s("), descrs[j].name);
 	    ret = mach_port_get_refs (task, port, descrs[j].right, &ref);
 	    if (ret != KERN_SUCCESS)
-	      printf_unfiltered (_("??"));
+	      printf_filtered (_("??"));
 	    else
-	      printf_unfiltered (_("%u"), ref);
-	    printf_unfiltered (_(" refs)"));
+	      printf_filtered (_("%u"), ref);
+	    printf_filtered (_(" refs)"));
 	  }
       
       if (task == task_self ())
 	{
 	  if (port == task_self())
-	    printf_unfiltered (_(" gdb-task"));
+	    printf_filtered (_(" gdb-task"));
 	  else if (port == darwin_host_self)
-	    printf_unfiltered (_(" host-self"));
+	    printf_filtered (_(" host-self"));
 	  else if (port == darwin_ex_port)
-	    printf_unfiltered (_(" gdb-exception"));
+	    printf_filtered (_(" gdb-exception"));
 	  else if (port == darwin_port_set)
-	    printf_unfiltered (_(" gdb-port_set"));
+	    printf_filtered (_(" gdb-port_set"));
 	  else if (inferior_ptid != null_ptid)
 	    {
 	      struct inferior *inf = current_inferior ();
 	      darwin_inferior *priv = get_darwin_inferior (inf);
 
 	      if (port == priv->task)
-		printf_unfiltered (_(" inferior-task"));
+		printf_filtered (_(" inferior-task"));
 	      else if (port == priv->notify_port)
-		printf_unfiltered (_(" inferior-notify"));
+		printf_filtered (_(" inferior-notify"));
 	      else
 		{
 		  for (int k = 0; k < priv->exception_info.count; k++)
 		    if (port == priv->exception_info.ports[k])
 		      {
-			printf_unfiltered (_(" inferior-excp-port"));
+			printf_filtered (_(" inferior-excp-port"));
 			break;
 		      }
 
@@ -280,8 +280,8 @@ info_mach_ports_command (const char *args, int from_tty)
 		    {
 		      if (port == t->gdb_port)
 			{
-			  printf_unfiltered (_(" inferior-thread for 0x%x"),
-					     priv->task);
+			  printf_filtered (_(" inferior-thread for 0x%x"),
+					   priv->task);
 			  break;
 			}
 		    }
@@ -289,7 +289,7 @@ info_mach_ports_command (const char *args, int from_tty)
 		}
 	    }
 	}
-      printf_unfiltered (_("\n"));
+      printf_filtered (_("\n"));
     }
 
   vm_deallocate (task_self (), (vm_address_t) names,
@@ -310,18 +310,18 @@ darwin_debug_port_info (task_t task, mach_port_t port)
     (task, port, MACH_PORT_RECEIVE_STATUS, (mach_port_info_t)&status, &len);
   MACH_CHECK_ERROR (kret);
 
-  printf_unfiltered (_("Port 0x%lx in task 0x%lx:\n"), (unsigned long) port,
-		     (unsigned long) task);
-  printf_unfiltered (_("  port set: 0x%x\n"), status.mps_pset);
-  printf_unfiltered (_("     seqno: 0x%x\n"), status.mps_seqno);
-  printf_unfiltered (_("   mscount: 0x%x\n"), status.mps_mscount);
-  printf_unfiltered (_("    qlimit: 0x%x\n"), status.mps_qlimit);
-  printf_unfiltered (_("  msgcount: 0x%x\n"), status.mps_msgcount);
-  printf_unfiltered (_("  sorights: 0x%x\n"), status.mps_sorights);
-  printf_unfiltered (_("   srights: 0x%x\n"), status.mps_srights);
-  printf_unfiltered (_(" pdrequest: 0x%x\n"), status.mps_pdrequest);
-  printf_unfiltered (_(" nsrequest: 0x%x\n"), status.mps_nsrequest);
-  printf_unfiltered (_("     flags: 0x%x\n"), status.mps_flags);
+  printf_filtered (_("Port 0x%lx in task 0x%lx:\n"), (unsigned long) port,
+		   (unsigned long) task);
+  printf_filtered (_("  port set: 0x%x\n"), status.mps_pset);
+  printf_filtered (_("     seqno: 0x%x\n"), status.mps_seqno);
+  printf_filtered (_("   mscount: 0x%x\n"), status.mps_mscount);
+  printf_filtered (_("    qlimit: 0x%x\n"), status.mps_qlimit);
+  printf_filtered (_("  msgcount: 0x%x\n"), status.mps_msgcount);
+  printf_filtered (_("  sorights: 0x%x\n"), status.mps_sorights);
+  printf_filtered (_("   srights: 0x%x\n"), status.mps_srights);
+  printf_filtered (_(" pdrequest: 0x%x\n"), status.mps_pdrequest);
+  printf_filtered (_(" nsrequest: 0x%x\n"), status.mps_nsrequest);
+  printf_filtered (_("     flags: 0x%x\n"), status.mps_flags);
 }
 
 static void
@@ -352,10 +352,10 @@ info_mach_threads_command (const char *args, int from_tty)
   result = task_threads (task, &threads, &thread_count);
   MACH_CHECK_ERROR (result);
 
-  printf_unfiltered (_("Threads in task %#x:\n"), task);
+  printf_filtered (_("Threads in task %#x:\n"), task);
   for (i = 0; i < thread_count; ++i)
     {
-      printf_unfiltered (_("    %#x\n"), threads[i]);
+      printf_filtered (_("    %#x\n"), threads[i]);
       mach_port_deallocate (task_self (), threads[i]);
     }
 
@@ -378,7 +378,7 @@ info_mach_thread_command (const char *args, int from_tty)
   CHECK_ARGS (_("Thread"), args);
   sscanf (args, "0x%x", &thread);
 
-  printf_unfiltered (_("THREAD_BASIC_INFO\n"));
+  printf_filtered (_("THREAD_BASIC_INFO\n"));
   info_count = THREAD_BASIC_INFO_COUNT;
   result = thread_info (thread,
 			THREAD_BASIC_INFO,
@@ -752,39 +752,39 @@ disp_exception (const darwin_exception_info *info)
       switch (info->behaviors[i])
 	{
 	case EXCEPTION_DEFAULT:
-	  printf_unfiltered (_("default"));
+	  printf_filtered (_("default"));
 	  break;
 	case EXCEPTION_STATE:
-	  printf_unfiltered (_("state"));
+	  printf_filtered (_("state"));
 	  break;
 	case EXCEPTION_STATE_IDENTITY:
-	  printf_unfiltered (_("state-identity"));
+	  printf_filtered (_("state-identity"));
 	  break;
 	default:
-	  printf_unfiltered (_("0x%x"), info->behaviors[i]);
+	  printf_filtered (_("0x%x"), info->behaviors[i]);
 	}
-      printf_unfiltered (_(", masks:"));
+      printf_filtered (_(", masks:"));
       if (mask & EXC_MASK_BAD_ACCESS)
-	printf_unfiltered (_(" BAD_ACCESS"));
+	printf_filtered (_(" BAD_ACCESS"));
       if (mask & EXC_MASK_BAD_INSTRUCTION)
-	printf_unfiltered (_(" BAD_INSTRUCTION"));
+	printf_filtered (_(" BAD_INSTRUCTION"));
       if (mask & EXC_MASK_ARITHMETIC)
-	printf_unfiltered (_(" ARITHMETIC"));
+	printf_filtered (_(" ARITHMETIC"));
       if (mask & EXC_MASK_EMULATION)
-	printf_unfiltered (_(" EMULATION"));
+	printf_filtered (_(" EMULATION"));
       if (mask & EXC_MASK_SOFTWARE)
-	printf_unfiltered (_(" SOFTWARE"));
+	printf_filtered (_(" SOFTWARE"));
       if (mask & EXC_MASK_BREAKPOINT)
-	printf_unfiltered (_(" BREAKPOINT"));
+	printf_filtered (_(" BREAKPOINT"));
       if (mask & EXC_MASK_SYSCALL)
-	printf_unfiltered (_(" SYSCALL"));
+	printf_filtered (_(" SYSCALL"));
       if (mask & EXC_MASK_MACH_SYSCALL)
-	printf_unfiltered (_(" MACH_SYSCALL"));
+	printf_filtered (_(" MACH_SYSCALL"));
       if (mask & EXC_MASK_RPC_ALERT)
-	printf_unfiltered (_(" RPC_ALERT"));
+	printf_filtered (_(" RPC_ALERT"));
       if (mask & EXC_MASK_CRASH)
-	printf_unfiltered (_(" CRASH"));
-      printf_unfiltered (_("\n"));
+	printf_filtered (_(" CRASH"));
+      printf_filtered (_("\n"));
     }
 }
 
@@ -801,7 +801,7 @@ info_mach_exceptions_command (const char *args, int from_tty)
       if (strcmp (args, "saved") == 0)
 	{
 	  if (inferior_ptid == null_ptid)
-	    printf_unfiltered (_("No inferior running\n"));
+	    printf_filtered (_("No inferior running\n"));
 
 	  darwin_inferior *priv = get_darwin_inferior (current_inferior ());
 
@@ -825,7 +825,7 @@ info_mach_exceptions_command (const char *args, int from_tty)
       struct inferior *inf;
 
       if (inferior_ptid == null_ptid)
-	printf_unfiltered (_("No inferior running\n"));
+	printf_filtered (_("No inferior running\n"));
       inf = current_inferior ();
       
       darwin_inferior *priv = get_darwin_inferior (inf);
diff --git a/gdb/darwin-nat.c b/gdb/darwin-nat.c
index e9c24dcc5dc..d96ce1a6c65 100644
--- a/gdb/darwin-nat.c
+++ b/gdb/darwin-nat.c
@@ -169,8 +169,8 @@ inferior_debug (int level, const char *fmt, ...)
     return;
 
   va_start (ap, fmt);
-  printf_unfiltered (_("[%d inferior]: "), getpid ());
-  vprintf_unfiltered (fmt, ap);
+  fprintf_unfiltered (gdb_stdlog, _("[%d inferior]: "), getpid ());
+  vfprintf_unfiltered (gdb_stdlog, fmt, ap);
   va_end (ap);
 }
 
@@ -459,13 +459,20 @@ darwin_resume_inferior (struct inferior *inf)
 static void
 darwin_dump_message (mach_msg_header_t *hdr, int disp_body)
 {
-  printf_unfiltered (_("message header:\n"));
-  printf_unfiltered (_(" bits: 0x%x\n"), hdr->msgh_bits);
-  printf_unfiltered (_(" size: 0x%x\n"), hdr->msgh_size);
-  printf_unfiltered (_(" remote-port: 0x%x\n"), hdr->msgh_remote_port);
-  printf_unfiltered (_(" local-port: 0x%x\n"), hdr->msgh_local_port);
-  printf_unfiltered (_(" reserved: 0x%x\n"), hdr->msgh_reserved);
-  printf_unfiltered (_(" id: 0x%x\n"), hdr->msgh_id);
+  fprintf_unfiltered (gdb_stdlog,
+		      _("message header:\n"));
+  fprintf_unfiltered (gdb_stdlog,
+		      _(" bits: 0x%x\n"), hdr->msgh_bits);
+  fprintf_unfiltered (gdb_stdlog,
+		      _(" size: 0x%x\n"), hdr->msgh_size);
+  fprintf_unfiltered (gdb_stdlog,
+		      _(" remote-port: 0x%x\n"), hdr->msgh_remote_port);
+  fprintf_unfiltered (gdb_stdlog,
+		      _(" local-port: 0x%x\n"), hdr->msgh_local_port);
+  fprintf_unfiltered (gdb_stdlog,
+		      _(" reserved: 0x%x\n"), hdr->msgh_reserved);
+  fprintf_unfiltered (gdb_stdlog,
+		      _(" id: 0x%x\n"), hdr->msgh_id);
 
   if (disp_body)
     {
@@ -484,21 +491,24 @@ darwin_dump_message (mach_msg_header_t *hdr, int disp_body)
 	    (mach_msg_port_descriptor_t *)(bod + 1);
 	  int k;
 	  NDR_record_t *ndr;
-	  printf_unfiltered (_("body: descriptor_count=%u\n"),
-			     bod->msgh_descriptor_count);
+	  fprintf_unfiltered (gdb_stdlog,
+			      _("body: descriptor_count=%u\n"),
+			      bod->msgh_descriptor_count);
 	  data += sizeof (mach_msg_body_t);
 	  size -= sizeof (mach_msg_body_t);
 	  for (k = 0; k < bod->msgh_descriptor_count; k++)
 	    switch (desc[k].type)
 	      {
 	      case MACH_MSG_PORT_DESCRIPTOR:
-		printf_unfiltered
-		  (_(" descr %d: type=%u (port) name=0x%x, dispo=%d\n"),
+		fprintf_unfiltered
+		  (gdb_stdlog,
+		   _(" descr %d: type=%u (port) name=0x%x, dispo=%d\n"),
 		   k, desc[k].type, desc[k].name, desc[k].disposition);
 		break;
 	      default:
-		printf_unfiltered (_(" descr %d: type=%u\n"),
-				   k, desc[k].type);
+		fprintf_unfiltered (gdb_stdlog,
+				    _(" descr %d: type=%u\n"),
+				    k, desc[k].type);
 		break;
 	      }
 	  data += bod->msgh_descriptor_count
@@ -506,8 +516,9 @@ darwin_dump_message (mach_msg_header_t *hdr, int disp_body)
 	  size -= bod->msgh_descriptor_count
 	    * sizeof (mach_msg_port_descriptor_t);
 	  ndr = (NDR_record_t *)(desc + bod->msgh_descriptor_count);
-	  printf_unfiltered
-	    (_("NDR: mig=%02x if=%02x encod=%02x "
+	  fprintf_unfiltered
+	    (gdb_stdlog,
+	     _("NDR: mig=%02x if=%02x encod=%02x "
 	       "int=%02x char=%02x float=%02x\n"),
 	     ndr->mig_vers, ndr->if_vers, ndr->mig_encoding,
 	     ndr->int_rep, ndr->char_rep, ndr->float_rep);
@@ -515,11 +526,11 @@ darwin_dump_message (mach_msg_header_t *hdr, int disp_body)
 	  size -= sizeof (NDR_record_t);
 	}
 
-      printf_unfiltered (_("  data:"));
+      fprintf_unfiltered (gdb_stdlog, _("  data:"));
       ldata = (const unsigned int *)data;
       for (i = 0; i < size / sizeof (unsigned int); i++)
-	printf_unfiltered (" %08x", ldata[i]);
-      printf_unfiltered (_("\n"));
+	fprintf_unfiltered (gdb_stdlog, " %08x", ldata[i]);
+      fprintf_unfiltered (gdb_stdlog, _("\n"));
     }
 }
 
@@ -977,8 +988,8 @@ darwin_nat_target::decode_message (mach_msg_header_t *hdr,
       if (res < 0)
 	{
 	  /* Should not happen...  */
-	  printf_unfiltered
-	    (_("darwin_wait: ill-formatted message (id=0x%x)\n"), hdr->msgh_id);
+	  warning (_("darwin_wait: ill-formatted message (id=0x%x)\n"),
+		   hdr->msgh_id);
 	  /* FIXME: send a failure reply?  */
 	  status->set_ignore ();
 	  return minus_one_ptid;
@@ -1060,7 +1071,7 @@ darwin_nat_target::decode_message (mach_msg_header_t *hdr,
       if (res < 0)
 	{
 	  /* Should not happen...  */
-	  printf_unfiltered
+	  warning
 	    (_("darwin_wait: ill-formatted message (id=0x%x, res=%d)\n"),
 	     hdr->msgh_id, res);
 	}
@@ -1086,8 +1097,8 @@ darwin_nat_target::decode_message (mach_msg_header_t *hdr,
 	      res_pid = wait4 (inf->pid, &wstatus, 0, NULL);
 	      if (res_pid < 0 || res_pid != inf->pid)
 		{
-		  printf_unfiltered (_("wait4: res=%d: %s\n"),
-				     res_pid, safe_strerror (errno));
+		  warning (_("wait4: res=%d: %s\n"),
+			   res_pid, safe_strerror (errno));
 		  status->set_ignore ();
 		  return minus_one_ptid;
 		}
@@ -2056,8 +2067,8 @@ darwin_nat_target::detach (inferior *inf, int from_tty)
     {
       res = PTRACE (PT_DETACH, inf->pid, 0, 0);
       if (res != 0)
-	printf_unfiltered (_("Unable to detach from process-id %d: %s (%d)"),
-			   inf->pid, safe_strerror (errno), errno);
+	warning (_("Unable to detach from process-id %d: %s (%d)"),
+		 inf->pid, safe_strerror (errno), errno);
     }
 
   darwin_reply_to_all_pending_messages (inf);
diff --git a/gdb/i386-darwin-nat.c b/gdb/i386-darwin-nat.c
index b7199da5610..b64b2b3e81b 100644
--- a/gdb/i386-darwin-nat.c
+++ b/gdb/i386-darwin-nat.c
@@ -77,9 +77,9 @@ i386_darwin_nat_target::fetch_registers (struct regcache *regcache, int regno)
 	     &gp_count);
 	  if (ret != KERN_SUCCESS)
 	    {
-	      printf_unfiltered (_("Error calling thread_get_state for "
-				   "GP registers for thread 0x%lx\n"),
-				 (unsigned long) current_thread);
+	      warning (_("Error calling thread_get_state for "
+			 "GP registers for thread 0x%lx\n"),
+		       (unsigned long) current_thread);
 	      MACH_CHECK_ERROR (ret);
 	    }
 
@@ -102,9 +102,9 @@ i386_darwin_nat_target::fetch_registers (struct regcache *regcache, int regno)
 	     &fp_count);
 	  if (ret != KERN_SUCCESS)
 	    {
-	      printf_unfiltered (_("Error calling thread_get_state for "
-				   "float registers for thread 0x%lx\n"),
-				 (unsigned long) current_thread);
+	      warning (_("Error calling thread_get_state for "
+			 "float registers for thread 0x%lx\n"),
+		       (unsigned long) current_thread);
 	      MACH_CHECK_ERROR (ret);
 	    }
 	  amd64_supply_fxsave (regcache, -1, &fp_regs.ufs.fs64.__fpu_fcw);
@@ -126,9 +126,9 @@ i386_darwin_nat_target::fetch_registers (struct regcache *regcache, int regno)
 	     &gp_count);
 	  if (ret != KERN_SUCCESS)
 	    {
-	      printf_unfiltered (_("Error calling thread_get_state for "
-				   "GP registers for thread 0x%lx\n"),
-				 (unsigned long) current_thread);
+	      warning (_("Error calling thread_get_state for "
+			 "GP registers for thread 0x%lx\n"),
+		       (unsigned long) current_thread);
 	      MACH_CHECK_ERROR (ret);
 	    }
 	  for (i = 0; i < I386_NUM_GREGS; i++)
@@ -150,9 +150,9 @@ i386_darwin_nat_target::fetch_registers (struct regcache *regcache, int regno)
 	     &fp_count);
 	  if (ret != KERN_SUCCESS)
 	    {
-	      printf_unfiltered (_("Error calling thread_get_state for "
-				   "float registers for thread 0x%lx\n"),
-				 (unsigned long) current_thread);
+	      warning (_("Error calling thread_get_state for "
+			 "float registers for thread 0x%lx\n"),
+		       (unsigned long) current_thread);
 	      MACH_CHECK_ERROR (ret);
 	    }
 	  i387_supply_fxsave (regcache, -1, &fp_regs.__fpu_fcw);
@@ -588,8 +588,8 @@ darwin_set_sstep (thread_t thread, int enable)
 			   (thread_state_t) &regs, &count);
   if (kret != KERN_SUCCESS)
     {
-      printf_unfiltered (_("darwin_set_sstep: error %x, thread=%x\n"),
-			 kret, thread);
+      warning (_("darwin_set_sstep: error %x, thread=%x\n"),
+	       kret, thread);
       return;
     }
 

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] Reduce use of unfiltered output in Darwin code
  2022-01-08 16:36   ` Tom Tromey
@ 2022-01-09 18:00     ` Andrew Burgess
  0 siblings, 0 replies; 5+ messages in thread
From: Andrew Burgess @ 2022-01-09 18:00 UTC (permalink / raw)
  To: Tom Tromey; +Cc: gdb-patches

* Tom Tromey <tom@tromey.com> [2022-01-08 09:36:46 -0700]:

> >> The Darwin code uses unfiltered output liberally.  This patch changes
> >> this code to send some output to gdb_stdlog (in some cases via the use
> >> of debug_prefixed_printf_cond_nofunc), or to gdb_stderr, or to simply
> >> switch to filtered output.
> 
> Andrew> I'm tempted to suggest that all of the places where we now write to
> Andrew> gdb_stderr should be replaced with calls to warning instead.
> 
> Andrew> Also, you have some trailing whitespace (which I only notice because
> Andrew> 'git am' tells me, not because I go hunting for such things), I've
> Andrew> marked the locations below.
> 
> Here's v2.

LGTM.

Thanks,
Andrew

> 
> Tom
> 
> commit bb991012bcfb730a647337efdd9c7a4afc86a2be
> Author: Tom Tromey <tom@tromey.com>
> Date:   Sun Dec 26 21:38:34 2021 -0700
> 
>     Reduce use of unfiltered output in Darwin code
>     
>     The Darwin code uses unfiltered output liberally.  This patch changes
>     this code to send some output to gdb_stdlog (in some cases via the use
>     of debug_prefixed_printf_cond_nofunc), or to gdb_stderr, or to simply
>     switch to filtered output.
>     
>     Note that I didn't switch inferior_debug to use
>     debug_prefixed_printf_cond_nofunc, because that would affect the
>     output by removing the information about the inferior.  I wasn't sure
>     if this was important or not, so I left it in.
>     
>     v2 of this patch uses warning rather than prints to gdb_stderr, and
>     removes some trailing whitespace.
>     
>     I can't compile this patch, so it's "best effort".
> 
> diff --git a/gdb/darwin-nat-info.c b/gdb/darwin-nat-info.c
> index f158960460d..8d00d6618ca 100644
> --- a/gdb/darwin-nat-info.c
> +++ b/gdb/darwin-nat-info.c
> @@ -54,10 +54,10 @@
>  } while (0)
>  
>  #define PRINT_FIELD(structure, field) \
> -  printf_unfiltered(_(#field":\t%#lx\n"), (unsigned long) (structure)->field)
> +  printf_filtered(_(#field":\t%#lx\n"), (unsigned long) (structure)->field)
>  
>  #define PRINT_TV_FIELD(structure, field) \
> -  printf_unfiltered(_(#field":\t%u.%06u sec\n"),	\
> +  printf_filtered(_(#field":\t%u.%06u sec\n"),	\
>    (unsigned) (structure)->field.seconds, \
>    (unsigned) (structure)->field.microseconds)
>  
> @@ -83,7 +83,7 @@ info_mach_tasks_command (const char *args, int from_tty)
>    sysctl (sysControl, 3, procInfo, &length, NULL, 0);
>  
>    count = (length / sizeof (struct kinfo_proc));
> -  printf_unfiltered (_("%d processes:\n"), count);
> +  printf_filtered (_("%d processes:\n"), count);
>    for (index = 0; index < count; ++index)
>      {
>        kern_return_t result;
> @@ -94,15 +94,15 @@ info_mach_tasks_command (const char *args, int from_tty)
>  			  &taskPort);
>        if (KERN_SUCCESS == result)
>  	{
> -	  printf_unfiltered (_("    %s is %d has task %#x\n"),
> -			     procInfo[index].kp_proc.p_comm,
> -			     procInfo[index].kp_proc.p_pid, taskPort);
> +	  printf_filtered (_("    %s is %d has task %#x\n"),
> +			   procInfo[index].kp_proc.p_comm,
> +			   procInfo[index].kp_proc.p_pid, taskPort);
>  	}
>        else
>  	{
> -	  printf_unfiltered (_("    %s is %d unknown task port\n"),
> -			     procInfo[index].kp_proc.p_comm,
> -			     procInfo[index].kp_proc.p_pid);
> +	  printf_filtered (_("    %s is %d unknown task port\n"),
> +			   procInfo[index].kp_proc.p_comm,
> +			   procInfo[index].kp_proc.p_pid);
>  	}
>      }
>  
> @@ -118,7 +118,7 @@ get_task_from_args (const char *args)
>    if (args == NULL || *args == 0)
>      {
>        if (inferior_ptid == null_ptid)
> -	printf_unfiltered (_("No inferior running\n"));
> +	printf_filtered (_("No inferior running\n"));
>  
>        darwin_inferior *priv = get_darwin_inferior (current_inferior ());
>  
> @@ -129,7 +129,7 @@ get_task_from_args (const char *args)
>    task = strtoul (args, &eptr, 0);
>    if (*eptr)
>      {
> -      printf_unfiltered (_("cannot parse task id '%s'\n"), args);
> +      printf_filtered (_("cannot parse task id '%s'\n"), args);
>        return TASK_NULL;
>      }
>    return task;
> @@ -153,7 +153,7 @@ info_mach_task_command (const char *args, int from_tty)
>    if (task == TASK_NULL)
>      return;
>  
> -  printf_unfiltered (_("TASK_BASIC_INFO for 0x%x:\n"), task);
> +  printf_filtered (_("TASK_BASIC_INFO for 0x%x:\n"), task);
>    info_count = TASK_BASIC_INFO_COUNT;
>    result = task_info (task,
>  		      TASK_BASIC_INFO,
> @@ -165,7 +165,7 @@ info_mach_task_command (const char *args, int from_tty)
>    PRINT_FIELD (&task_info_data.basic, resident_size);
>    PRINT_TV_FIELD (&task_info_data.basic, user_time);
>    PRINT_TV_FIELD (&task_info_data.basic, system_time);
> -  printf_unfiltered (_("\nTASK_EVENTS_INFO:\n"));
> +  printf_filtered (_("\nTASK_EVENTS_INFO:\n"));
>    info_count = TASK_EVENTS_INFO_COUNT;
>    result = task_info (task,
>  		      TASK_EVENTS_INFO,
> @@ -181,7 +181,7 @@ info_mach_task_command (const char *args, int from_tty)
>    PRINT_FIELD (&task_info_data.events, cow_faults);
>    PRINT_FIELD (&task_info_data.events, messages_sent);
>    PRINT_FIELD (&task_info_data.events, messages_received);
> -  printf_unfiltered (_("\nTASK_THREAD_TIMES_INFO:\n"));
> +  printf_filtered (_("\nTASK_THREAD_TIMES_INFO:\n"));
>    info_count = TASK_THREAD_TIMES_INFO_COUNT;
>    result = task_info (task,
>  		      TASK_THREAD_TIMES_INFO,
> @@ -211,8 +211,8 @@ info_mach_ports_command (const char *args, int from_tty)
>  
>    gdb_assert (name_count == type_count);
>  
> -  printf_unfiltered (_("Ports for task 0x%x:\n"), task);
> -  printf_unfiltered (_("port   type\n"));
> +  printf_filtered (_("Ports for task 0x%x:\n"), task);
> +  printf_filtered (_("port   type\n"));
>    for (index = 0; index < name_count; ++index)
>      {
>        mach_port_t port = names[index];
> @@ -232,47 +232,47 @@ info_mach_ports_command (const char *args, int from_tty)
>  	  {MACH_PORT_TYPE_DEAD_NAME, "dead", MACH_PORT_RIGHT_DEAD_NAME}
>  	};
>  
> -      printf_unfiltered (_("%04x: %08x "), port, types[index]);
> +      printf_filtered (_("%04x: %08x "), port, types[index]);
>        for (j = 0; j < sizeof(descrs) / sizeof(*descrs); j++)
>  	if (types[index] & descrs[j].type)
>  	  {
>  	    mach_port_urefs_t ref;
>  	    kern_return_t ret;
>  
> -	    printf_unfiltered (_(" %s("), descrs[j].name);
> +	    printf_filtered (_(" %s("), descrs[j].name);
>  	    ret = mach_port_get_refs (task, port, descrs[j].right, &ref);
>  	    if (ret != KERN_SUCCESS)
> -	      printf_unfiltered (_("??"));
> +	      printf_filtered (_("??"));
>  	    else
> -	      printf_unfiltered (_("%u"), ref);
> -	    printf_unfiltered (_(" refs)"));
> +	      printf_filtered (_("%u"), ref);
> +	    printf_filtered (_(" refs)"));
>  	  }
>        
>        if (task == task_self ())
>  	{
>  	  if (port == task_self())
> -	    printf_unfiltered (_(" gdb-task"));
> +	    printf_filtered (_(" gdb-task"));
>  	  else if (port == darwin_host_self)
> -	    printf_unfiltered (_(" host-self"));
> +	    printf_filtered (_(" host-self"));
>  	  else if (port == darwin_ex_port)
> -	    printf_unfiltered (_(" gdb-exception"));
> +	    printf_filtered (_(" gdb-exception"));
>  	  else if (port == darwin_port_set)
> -	    printf_unfiltered (_(" gdb-port_set"));
> +	    printf_filtered (_(" gdb-port_set"));
>  	  else if (inferior_ptid != null_ptid)
>  	    {
>  	      struct inferior *inf = current_inferior ();
>  	      darwin_inferior *priv = get_darwin_inferior (inf);
>  
>  	      if (port == priv->task)
> -		printf_unfiltered (_(" inferior-task"));
> +		printf_filtered (_(" inferior-task"));
>  	      else if (port == priv->notify_port)
> -		printf_unfiltered (_(" inferior-notify"));
> +		printf_filtered (_(" inferior-notify"));
>  	      else
>  		{
>  		  for (int k = 0; k < priv->exception_info.count; k++)
>  		    if (port == priv->exception_info.ports[k])
>  		      {
> -			printf_unfiltered (_(" inferior-excp-port"));
> +			printf_filtered (_(" inferior-excp-port"));
>  			break;
>  		      }
>  
> @@ -280,8 +280,8 @@ info_mach_ports_command (const char *args, int from_tty)
>  		    {
>  		      if (port == t->gdb_port)
>  			{
> -			  printf_unfiltered (_(" inferior-thread for 0x%x"),
> -					     priv->task);
> +			  printf_filtered (_(" inferior-thread for 0x%x"),
> +					   priv->task);
>  			  break;
>  			}
>  		    }
> @@ -289,7 +289,7 @@ info_mach_ports_command (const char *args, int from_tty)
>  		}
>  	    }
>  	}
> -      printf_unfiltered (_("\n"));
> +      printf_filtered (_("\n"));
>      }
>  
>    vm_deallocate (task_self (), (vm_address_t) names,
> @@ -310,18 +310,18 @@ darwin_debug_port_info (task_t task, mach_port_t port)
>      (task, port, MACH_PORT_RECEIVE_STATUS, (mach_port_info_t)&status, &len);
>    MACH_CHECK_ERROR (kret);
>  
> -  printf_unfiltered (_("Port 0x%lx in task 0x%lx:\n"), (unsigned long) port,
> -		     (unsigned long) task);
> -  printf_unfiltered (_("  port set: 0x%x\n"), status.mps_pset);
> -  printf_unfiltered (_("     seqno: 0x%x\n"), status.mps_seqno);
> -  printf_unfiltered (_("   mscount: 0x%x\n"), status.mps_mscount);
> -  printf_unfiltered (_("    qlimit: 0x%x\n"), status.mps_qlimit);
> -  printf_unfiltered (_("  msgcount: 0x%x\n"), status.mps_msgcount);
> -  printf_unfiltered (_("  sorights: 0x%x\n"), status.mps_sorights);
> -  printf_unfiltered (_("   srights: 0x%x\n"), status.mps_srights);
> -  printf_unfiltered (_(" pdrequest: 0x%x\n"), status.mps_pdrequest);
> -  printf_unfiltered (_(" nsrequest: 0x%x\n"), status.mps_nsrequest);
> -  printf_unfiltered (_("     flags: 0x%x\n"), status.mps_flags);
> +  printf_filtered (_("Port 0x%lx in task 0x%lx:\n"), (unsigned long) port,
> +		   (unsigned long) task);
> +  printf_filtered (_("  port set: 0x%x\n"), status.mps_pset);
> +  printf_filtered (_("     seqno: 0x%x\n"), status.mps_seqno);
> +  printf_filtered (_("   mscount: 0x%x\n"), status.mps_mscount);
> +  printf_filtered (_("    qlimit: 0x%x\n"), status.mps_qlimit);
> +  printf_filtered (_("  msgcount: 0x%x\n"), status.mps_msgcount);
> +  printf_filtered (_("  sorights: 0x%x\n"), status.mps_sorights);
> +  printf_filtered (_("   srights: 0x%x\n"), status.mps_srights);
> +  printf_filtered (_(" pdrequest: 0x%x\n"), status.mps_pdrequest);
> +  printf_filtered (_(" nsrequest: 0x%x\n"), status.mps_nsrequest);
> +  printf_filtered (_("     flags: 0x%x\n"), status.mps_flags);
>  }
>  
>  static void
> @@ -352,10 +352,10 @@ info_mach_threads_command (const char *args, int from_tty)
>    result = task_threads (task, &threads, &thread_count);
>    MACH_CHECK_ERROR (result);
>  
> -  printf_unfiltered (_("Threads in task %#x:\n"), task);
> +  printf_filtered (_("Threads in task %#x:\n"), task);
>    for (i = 0; i < thread_count; ++i)
>      {
> -      printf_unfiltered (_("    %#x\n"), threads[i]);
> +      printf_filtered (_("    %#x\n"), threads[i]);
>        mach_port_deallocate (task_self (), threads[i]);
>      }
>  
> @@ -378,7 +378,7 @@ info_mach_thread_command (const char *args, int from_tty)
>    CHECK_ARGS (_("Thread"), args);
>    sscanf (args, "0x%x", &thread);
>  
> -  printf_unfiltered (_("THREAD_BASIC_INFO\n"));
> +  printf_filtered (_("THREAD_BASIC_INFO\n"));
>    info_count = THREAD_BASIC_INFO_COUNT;
>    result = thread_info (thread,
>  			THREAD_BASIC_INFO,
> @@ -752,39 +752,39 @@ disp_exception (const darwin_exception_info *info)
>        switch (info->behaviors[i])
>  	{
>  	case EXCEPTION_DEFAULT:
> -	  printf_unfiltered (_("default"));
> +	  printf_filtered (_("default"));
>  	  break;
>  	case EXCEPTION_STATE:
> -	  printf_unfiltered (_("state"));
> +	  printf_filtered (_("state"));
>  	  break;
>  	case EXCEPTION_STATE_IDENTITY:
> -	  printf_unfiltered (_("state-identity"));
> +	  printf_filtered (_("state-identity"));
>  	  break;
>  	default:
> -	  printf_unfiltered (_("0x%x"), info->behaviors[i]);
> +	  printf_filtered (_("0x%x"), info->behaviors[i]);
>  	}
> -      printf_unfiltered (_(", masks:"));
> +      printf_filtered (_(", masks:"));
>        if (mask & EXC_MASK_BAD_ACCESS)
> -	printf_unfiltered (_(" BAD_ACCESS"));
> +	printf_filtered (_(" BAD_ACCESS"));
>        if (mask & EXC_MASK_BAD_INSTRUCTION)
> -	printf_unfiltered (_(" BAD_INSTRUCTION"));
> +	printf_filtered (_(" BAD_INSTRUCTION"));
>        if (mask & EXC_MASK_ARITHMETIC)
> -	printf_unfiltered (_(" ARITHMETIC"));
> +	printf_filtered (_(" ARITHMETIC"));
>        if (mask & EXC_MASK_EMULATION)
> -	printf_unfiltered (_(" EMULATION"));
> +	printf_filtered (_(" EMULATION"));
>        if (mask & EXC_MASK_SOFTWARE)
> -	printf_unfiltered (_(" SOFTWARE"));
> +	printf_filtered (_(" SOFTWARE"));
>        if (mask & EXC_MASK_BREAKPOINT)
> -	printf_unfiltered (_(" BREAKPOINT"));
> +	printf_filtered (_(" BREAKPOINT"));
>        if (mask & EXC_MASK_SYSCALL)
> -	printf_unfiltered (_(" SYSCALL"));
> +	printf_filtered (_(" SYSCALL"));
>        if (mask & EXC_MASK_MACH_SYSCALL)
> -	printf_unfiltered (_(" MACH_SYSCALL"));
> +	printf_filtered (_(" MACH_SYSCALL"));
>        if (mask & EXC_MASK_RPC_ALERT)
> -	printf_unfiltered (_(" RPC_ALERT"));
> +	printf_filtered (_(" RPC_ALERT"));
>        if (mask & EXC_MASK_CRASH)
> -	printf_unfiltered (_(" CRASH"));
> -      printf_unfiltered (_("\n"));
> +	printf_filtered (_(" CRASH"));
> +      printf_filtered (_("\n"));
>      }
>  }
>  
> @@ -801,7 +801,7 @@ info_mach_exceptions_command (const char *args, int from_tty)
>        if (strcmp (args, "saved") == 0)
>  	{
>  	  if (inferior_ptid == null_ptid)
> -	    printf_unfiltered (_("No inferior running\n"));
> +	    printf_filtered (_("No inferior running\n"));
>  
>  	  darwin_inferior *priv = get_darwin_inferior (current_inferior ());
>  
> @@ -825,7 +825,7 @@ info_mach_exceptions_command (const char *args, int from_tty)
>        struct inferior *inf;
>  
>        if (inferior_ptid == null_ptid)
> -	printf_unfiltered (_("No inferior running\n"));
> +	printf_filtered (_("No inferior running\n"));
>        inf = current_inferior ();
>        
>        darwin_inferior *priv = get_darwin_inferior (inf);
> diff --git a/gdb/darwin-nat.c b/gdb/darwin-nat.c
> index e9c24dcc5dc..d96ce1a6c65 100644
> --- a/gdb/darwin-nat.c
> +++ b/gdb/darwin-nat.c
> @@ -169,8 +169,8 @@ inferior_debug (int level, const char *fmt, ...)
>      return;
>  
>    va_start (ap, fmt);
> -  printf_unfiltered (_("[%d inferior]: "), getpid ());
> -  vprintf_unfiltered (fmt, ap);
> +  fprintf_unfiltered (gdb_stdlog, _("[%d inferior]: "), getpid ());
> +  vfprintf_unfiltered (gdb_stdlog, fmt, ap);
>    va_end (ap);
>  }
>  
> @@ -459,13 +459,20 @@ darwin_resume_inferior (struct inferior *inf)
>  static void
>  darwin_dump_message (mach_msg_header_t *hdr, int disp_body)
>  {
> -  printf_unfiltered (_("message header:\n"));
> -  printf_unfiltered (_(" bits: 0x%x\n"), hdr->msgh_bits);
> -  printf_unfiltered (_(" size: 0x%x\n"), hdr->msgh_size);
> -  printf_unfiltered (_(" remote-port: 0x%x\n"), hdr->msgh_remote_port);
> -  printf_unfiltered (_(" local-port: 0x%x\n"), hdr->msgh_local_port);
> -  printf_unfiltered (_(" reserved: 0x%x\n"), hdr->msgh_reserved);
> -  printf_unfiltered (_(" id: 0x%x\n"), hdr->msgh_id);
> +  fprintf_unfiltered (gdb_stdlog,
> +		      _("message header:\n"));
> +  fprintf_unfiltered (gdb_stdlog,
> +		      _(" bits: 0x%x\n"), hdr->msgh_bits);
> +  fprintf_unfiltered (gdb_stdlog,
> +		      _(" size: 0x%x\n"), hdr->msgh_size);
> +  fprintf_unfiltered (gdb_stdlog,
> +		      _(" remote-port: 0x%x\n"), hdr->msgh_remote_port);
> +  fprintf_unfiltered (gdb_stdlog,
> +		      _(" local-port: 0x%x\n"), hdr->msgh_local_port);
> +  fprintf_unfiltered (gdb_stdlog,
> +		      _(" reserved: 0x%x\n"), hdr->msgh_reserved);
> +  fprintf_unfiltered (gdb_stdlog,
> +		      _(" id: 0x%x\n"), hdr->msgh_id);
>  
>    if (disp_body)
>      {
> @@ -484,21 +491,24 @@ darwin_dump_message (mach_msg_header_t *hdr, int disp_body)
>  	    (mach_msg_port_descriptor_t *)(bod + 1);
>  	  int k;
>  	  NDR_record_t *ndr;
> -	  printf_unfiltered (_("body: descriptor_count=%u\n"),
> -			     bod->msgh_descriptor_count);
> +	  fprintf_unfiltered (gdb_stdlog,
> +			      _("body: descriptor_count=%u\n"),
> +			      bod->msgh_descriptor_count);
>  	  data += sizeof (mach_msg_body_t);
>  	  size -= sizeof (mach_msg_body_t);
>  	  for (k = 0; k < bod->msgh_descriptor_count; k++)
>  	    switch (desc[k].type)
>  	      {
>  	      case MACH_MSG_PORT_DESCRIPTOR:
> -		printf_unfiltered
> -		  (_(" descr %d: type=%u (port) name=0x%x, dispo=%d\n"),
> +		fprintf_unfiltered
> +		  (gdb_stdlog,
> +		   _(" descr %d: type=%u (port) name=0x%x, dispo=%d\n"),
>  		   k, desc[k].type, desc[k].name, desc[k].disposition);
>  		break;
>  	      default:
> -		printf_unfiltered (_(" descr %d: type=%u\n"),
> -				   k, desc[k].type);
> +		fprintf_unfiltered (gdb_stdlog,
> +				    _(" descr %d: type=%u\n"),
> +				    k, desc[k].type);
>  		break;
>  	      }
>  	  data += bod->msgh_descriptor_count
> @@ -506,8 +516,9 @@ darwin_dump_message (mach_msg_header_t *hdr, int disp_body)
>  	  size -= bod->msgh_descriptor_count
>  	    * sizeof (mach_msg_port_descriptor_t);
>  	  ndr = (NDR_record_t *)(desc + bod->msgh_descriptor_count);
> -	  printf_unfiltered
> -	    (_("NDR: mig=%02x if=%02x encod=%02x "
> +	  fprintf_unfiltered
> +	    (gdb_stdlog,
> +	     _("NDR: mig=%02x if=%02x encod=%02x "
>  	       "int=%02x char=%02x float=%02x\n"),
>  	     ndr->mig_vers, ndr->if_vers, ndr->mig_encoding,
>  	     ndr->int_rep, ndr->char_rep, ndr->float_rep);
> @@ -515,11 +526,11 @@ darwin_dump_message (mach_msg_header_t *hdr, int disp_body)
>  	  size -= sizeof (NDR_record_t);
>  	}
>  
> -      printf_unfiltered (_("  data:"));
> +      fprintf_unfiltered (gdb_stdlog, _("  data:"));
>        ldata = (const unsigned int *)data;
>        for (i = 0; i < size / sizeof (unsigned int); i++)
> -	printf_unfiltered (" %08x", ldata[i]);
> -      printf_unfiltered (_("\n"));
> +	fprintf_unfiltered (gdb_stdlog, " %08x", ldata[i]);
> +      fprintf_unfiltered (gdb_stdlog, _("\n"));
>      }
>  }
>  
> @@ -977,8 +988,8 @@ darwin_nat_target::decode_message (mach_msg_header_t *hdr,
>        if (res < 0)
>  	{
>  	  /* Should not happen...  */
> -	  printf_unfiltered
> -	    (_("darwin_wait: ill-formatted message (id=0x%x)\n"), hdr->msgh_id);
> +	  warning (_("darwin_wait: ill-formatted message (id=0x%x)\n"),
> +		   hdr->msgh_id);
>  	  /* FIXME: send a failure reply?  */
>  	  status->set_ignore ();
>  	  return minus_one_ptid;
> @@ -1060,7 +1071,7 @@ darwin_nat_target::decode_message (mach_msg_header_t *hdr,
>        if (res < 0)
>  	{
>  	  /* Should not happen...  */
> -	  printf_unfiltered
> +	  warning
>  	    (_("darwin_wait: ill-formatted message (id=0x%x, res=%d)\n"),
>  	     hdr->msgh_id, res);
>  	}
> @@ -1086,8 +1097,8 @@ darwin_nat_target::decode_message (mach_msg_header_t *hdr,
>  	      res_pid = wait4 (inf->pid, &wstatus, 0, NULL);
>  	      if (res_pid < 0 || res_pid != inf->pid)
>  		{
> -		  printf_unfiltered (_("wait4: res=%d: %s\n"),
> -				     res_pid, safe_strerror (errno));
> +		  warning (_("wait4: res=%d: %s\n"),
> +			   res_pid, safe_strerror (errno));
>  		  status->set_ignore ();
>  		  return minus_one_ptid;
>  		}
> @@ -2056,8 +2067,8 @@ darwin_nat_target::detach (inferior *inf, int from_tty)
>      {
>        res = PTRACE (PT_DETACH, inf->pid, 0, 0);
>        if (res != 0)
> -	printf_unfiltered (_("Unable to detach from process-id %d: %s (%d)"),
> -			   inf->pid, safe_strerror (errno), errno);
> +	warning (_("Unable to detach from process-id %d: %s (%d)"),
> +		 inf->pid, safe_strerror (errno), errno);
>      }
>  
>    darwin_reply_to_all_pending_messages (inf);
> diff --git a/gdb/i386-darwin-nat.c b/gdb/i386-darwin-nat.c
> index b7199da5610..b64b2b3e81b 100644
> --- a/gdb/i386-darwin-nat.c
> +++ b/gdb/i386-darwin-nat.c
> @@ -77,9 +77,9 @@ i386_darwin_nat_target::fetch_registers (struct regcache *regcache, int regno)
>  	     &gp_count);
>  	  if (ret != KERN_SUCCESS)
>  	    {
> -	      printf_unfiltered (_("Error calling thread_get_state for "
> -				   "GP registers for thread 0x%lx\n"),
> -				 (unsigned long) current_thread);
> +	      warning (_("Error calling thread_get_state for "
> +			 "GP registers for thread 0x%lx\n"),
> +		       (unsigned long) current_thread);
>  	      MACH_CHECK_ERROR (ret);
>  	    }
>  
> @@ -102,9 +102,9 @@ i386_darwin_nat_target::fetch_registers (struct regcache *regcache, int regno)
>  	     &fp_count);
>  	  if (ret != KERN_SUCCESS)
>  	    {
> -	      printf_unfiltered (_("Error calling thread_get_state for "
> -				   "float registers for thread 0x%lx\n"),
> -				 (unsigned long) current_thread);
> +	      warning (_("Error calling thread_get_state for "
> +			 "float registers for thread 0x%lx\n"),
> +		       (unsigned long) current_thread);
>  	      MACH_CHECK_ERROR (ret);
>  	    }
>  	  amd64_supply_fxsave (regcache, -1, &fp_regs.ufs.fs64.__fpu_fcw);
> @@ -126,9 +126,9 @@ i386_darwin_nat_target::fetch_registers (struct regcache *regcache, int regno)
>  	     &gp_count);
>  	  if (ret != KERN_SUCCESS)
>  	    {
> -	      printf_unfiltered (_("Error calling thread_get_state for "
> -				   "GP registers for thread 0x%lx\n"),
> -				 (unsigned long) current_thread);
> +	      warning (_("Error calling thread_get_state for "
> +			 "GP registers for thread 0x%lx\n"),
> +		       (unsigned long) current_thread);
>  	      MACH_CHECK_ERROR (ret);
>  	    }
>  	  for (i = 0; i < I386_NUM_GREGS; i++)
> @@ -150,9 +150,9 @@ i386_darwin_nat_target::fetch_registers (struct regcache *regcache, int regno)
>  	     &fp_count);
>  	  if (ret != KERN_SUCCESS)
>  	    {
> -	      printf_unfiltered (_("Error calling thread_get_state for "
> -				   "float registers for thread 0x%lx\n"),
> -				 (unsigned long) current_thread);
> +	      warning (_("Error calling thread_get_state for "
> +			 "float registers for thread 0x%lx\n"),
> +		       (unsigned long) current_thread);
>  	      MACH_CHECK_ERROR (ret);
>  	    }
>  	  i387_supply_fxsave (regcache, -1, &fp_regs.__fpu_fcw);
> @@ -588,8 +588,8 @@ darwin_set_sstep (thread_t thread, int enable)
>  			   (thread_state_t) &regs, &count);
>    if (kret != KERN_SUCCESS)
>      {
> -      printf_unfiltered (_("darwin_set_sstep: error %x, thread=%x\n"),
> -			 kret, thread);
> +      warning (_("darwin_set_sstep: error %x, thread=%x\n"),
> +	       kret, thread);
>        return;
>      }
>  


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2022-01-09 18:00 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-06 16:13 [PATCH] Reduce use of unfiltered output in Darwin code Tom Tromey
2022-01-07 12:01 ` Andrew Burgess
2022-01-07 22:13   ` Tom Tromey
2022-01-08 16:36   ` Tom Tromey
2022-01-09 18:00     ` Andrew Burgess

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).