} 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)
 
   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;
                          &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);
        }
     }
 
   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 ());
 
   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;
   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,
   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,
   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,
 
   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];
          {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;
                      }
 
                    {
                      if (port == t->gdb_port)
                        {
-                         printf_unfiltered (_(" inferior-thread for 0x%x"),
-                                            priv->task);
+                         printf_filtered (_(" inferior-thread for 0x%x"),
+                                          priv->task);
                          break;
                        }
                    }
                }
            }
        }
-      printf_unfiltered (_("\n"));
+      printf_filtered (_("\n"));
     }
 
   vm_deallocate (task_self (), (vm_address_t) names,
     (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
   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]);
     }
 
   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,
       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"));
     }
 }
 
       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 ());
 
       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);
 
     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);
 }
 
 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)
     {
            (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
          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);
          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"));
     }
 }
 
       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;
       if (res < 0)
        {
          /* Should not happen...  */
-         printf_unfiltered
+         warning
            (_("darwin_wait: ill-formatted message (id=0x%x, res=%d)\n"),
             hdr->msgh_id, res);
        }
              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;
                }
     {
       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);