public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] gdb,gdbserver: Introduce "inform"
@ 2016-11-23 16:19 Pedro Alves
  2016-11-26  4:42 ` Luis Machado
  0 siblings, 1 reply; 2+ messages in thread
From: Pedro Alves @ 2016-11-23 16:19 UTC (permalink / raw)
  To: gdb-patches

We have 'error', 'warning' and 'debug_printf', all usable throughout
gdb, gdbserver and the shared directories, but we don't have a common
function to print normal output to the user.  Instead, gdbserver code
uses "fprintf (stderr, ...)", while gdb uses "printf_filtered (....)"
(to stdout).

This adds a new "inform" function for the "normal output" case, and
makes gdbserver use it.  I added it to common/errors.c even though
it's not an error just because it's convenient to find it described
alongside error/warning, I think.  And I added it to common/ even
though nothing uses it outside gdbserver, in antecipation that
gdb/common/, gdb/nat/ or gdb/arch/ code will want to make use of it.

This is my last (I think) patch of a series getting rid of naked
"fprintf" calls , to help making a switch to using gnulib's C++
namespace support more palatable, though as the others, I think it
stands on its own.

gdb/gdbserver/ChangeLog:
yyyy-mm-dd  Pedro Alves <palves@redhat.com>

	* remote-utils.c (handle_accept_event, remote_open)
	(input_interrupt, getpkt): Use inform.
	* server.c (start_inferior, attach_inferior, print_started_pid)
	(detach_or_kill_for_exit, detach_or_kill_for_exit_cleanup)
	(captured_main, main, process_point_options)
	(process_serial_event): Use inform.
	* target.c (mywait): Use inform.
	* utils.c (vinform): New function.

gdb/ChangeLog:
yyyy-mm-dd  Pedro Alves <palves@redhat.com>

	* common/errors.c (inform): New function.
	* common/errors.h (inform, vinform): New declarations.
	* utils.c (vinform): New function.
---
 gdb/common/errors.c          | 12 +++++++++
 gdb/common/errors.h          | 11 ++++++++
 gdb/gdbserver/remote-utils.c | 29 +++++++++-----------
 gdb/gdbserver/server.c       | 63 +++++++++++++++++++-------------------------
 gdb/gdbserver/target.c       |  9 +++----
 gdb/gdbserver/utils.c        |  8 ++++++
 gdb/utils.c                  |  7 +++++
 7 files changed, 82 insertions(+), 57 deletions(-)

diff --git a/gdb/common/errors.c b/gdb/common/errors.c
index 1fc9602..57dd50d 100644
--- a/gdb/common/errors.c
+++ b/gdb/common/errors.c
@@ -47,6 +47,18 @@ error (const char *fmt, ...)
 /* See common/errors.h.  */
 
 void
+inform (const char *fmt, ...)
+{
+  va_list ap;
+
+  va_start (ap, fmt);
+  vinform (fmt, ap);
+  va_end (ap);
+}
+
+/* See common/errors.h.  */
+
+void
 internal_error (const char *file, int line, const char *fmt, ...)
 {
   va_list ap;
diff --git a/gdb/common/errors.h b/gdb/common/errors.h
index 56979ad..e6752f4 100644
--- a/gdb/common/errors.h
+++ b/gdb/common/errors.h
@@ -42,6 +42,17 @@ extern void error (const char *fmt, ...)
 extern void verror (const char *fmt, va_list args)
      ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 0);
 
+/* Inform the user about something.  Informations are not related to
+   any problem.  They're just regular program output.  An information
+   message is constructed using a printf- or vprintf-style argument
+   list.  The function "vinform" must be provided by the client.  */
+
+extern void inform (const char *fmt, ...)
+     ATTRIBUTE_PRINTF (1, 2);
+
+extern void vinform (const char *fmt, va_list args)
+     ATTRIBUTE_PRINTF (1, 0);
+
 /* An internal error was detected.  Internal errors indicate
    programming errors such as assertion failures, as opposed to
    more general errors beyond the application's control.  These
diff --git a/gdb/gdbserver/remote-utils.c b/gdb/gdbserver/remote-utils.c
index b6c521b..d8df5b5 100644
--- a/gdb/gdbserver/remote-utils.c
+++ b/gdb/gdbserver/remote-utils.c
@@ -194,8 +194,7 @@ handle_accept_event (int err, gdb_client_data client_data)
   delete_file_handler (listen_desc);
 
   /* Convert IP address to string.  */
-  fprintf (stderr, "Remote debugging from host %s\n",
-	   inet_ntoa (sockaddr.sin_addr));
+  inform ("Remote debugging from host %s\n", inet_ntoa (sockaddr.sin_addr));
 
   enable_async_notification (remote_desc);
 
@@ -296,7 +295,7 @@ remote_open (char *name)
 
   if (strcmp (name, STDIO_CONNECTION_NAME) == 0)
     {
-      fprintf (stderr, "Remote debugging using stdio\n");
+      inform ("Remote debugging using stdio\n");
 
       /* Use stdin as the handle of the connection.
 	 We only select on reads, for example.  */
@@ -368,7 +367,7 @@ remote_open (char *name)
       }
 #endif
 
-      fprintf (stderr, "Remote debugging using %s\n", name);
+      inform ("Remote debugging using %s\n", name);
 
       enable_async_notification (remote_desc);
 
@@ -389,8 +388,7 @@ remote_open (char *name)
 	perror_with_name ("Can't determine port");
       port = ntohs (sockaddr.sin_port);
 
-      fprintf (stderr, "Listening on port %d\n", port);
-      fflush (stderr);
+      inform ("Listening on port %d\n", port);
 
       /* Register the event loop handler.  */
       add_file_handler (listen_desc, handle_accept_event, NULL);
@@ -750,16 +748,16 @@ input_interrupt (int unused)
 
       if (cc == 0)
 	{
-	  fprintf (stderr, "client connection closed\n");
+	  inform ("client connection closed\n");
 	  return;
 	}
       else if (cc != 1 || c != '\003')
 	{
-	  fprintf (stderr, "input_interrupt, count = %d c = %d ", cc, c);
+	  inform ("input_interrupt, count = %d c = %d ", cc, c);
 	  if (isprint (c))
-	    fprintf (stderr, "('%c')\n", c);
+	    inform ("('%c')\n", c);
 	  else
-	    fprintf (stderr, "('\\x%02x')\n", c & 0xff);
+	    inform ("('\\x%02x')\n", c & 0xff);
 	  return;
 	}
 
@@ -1006,16 +1004,15 @@ getpkt (char *buf)
 
       if (noack_mode)
 	{
-	  fprintf (stderr,
-		   "Bad checksum, sentsum=0x%x, csum=0x%x, "
-		   "buf=%s [no-ack-mode, Bad medium?]\n",
-		   (c1 << 4) + c2, csum, buf);
+	  inform ("Bad checksum, sentsum=0x%x, csum=0x%x, "
+		  "buf=%s [no-ack-mode, Bad medium?]\n",
+		  (c1 << 4) + c2, csum, buf);
 	  /* Not much we can do, GDB wasn't expecting an ack/nac.  */
 	  break;
 	}
 
-      fprintf (stderr, "Bad checksum, sentsum=0x%x, csum=0x%x, buf=%s\n",
-	       (c1 << 4) + c2, csum, buf);
+      inform ("Bad checksum, sentsum=0x%x, csum=0x%x, buf=%s\n",
+	      (c1 << 4) + c2, csum, buf);
       if (write_prim ("-", 1) != 1)
 	return -1;
     }
diff --git a/gdb/gdbserver/server.c b/gdb/gdbserver/server.c
index 52c5b73..464e7a4 100644
--- a/gdb/gdbserver/server.c
+++ b/gdb/gdbserver/server.c
@@ -275,9 +275,7 @@ start_inferior (char **argv)
 
   /* FIXME: we don't actually know at this point that the create
      actually succeeded.  We won't know that until we wait.  */
-  fprintf (stderr, "Process %s created; pid = %ld\n", argv[0],
-	   signal_pid);
-  fflush (stderr);
+  inform ("Process %s created; pid = %ld\n", argv[0], signal_pid);
 
 #ifdef SIGTTOU
   signal (SIGTTOU, SIG_IGN);
@@ -343,8 +341,7 @@ attach_inferior (int pid)
   if (myattach (pid) != 0)
     return -1;
 
-  fprintf (stderr, "Attached; pid = %d\n", pid);
-  fflush (stderr);
+  inform ("Attached; pid = %d\n", pid);
 
   /* FIXME - It may be that we should get the SIGNAL_PID from the
      attach function, so that it can be the main thread instead of
@@ -3429,7 +3426,7 @@ print_started_pid (struct inferior_list_entry *entry)
   if (! process->attached)
     {
       int pid = ptid_get_pid (process->entry.id);
-      fprintf (stderr, " %d", pid);
+      inform (" %d", pid);
     }
 }
 
@@ -3444,7 +3441,7 @@ print_attached_pid (struct inferior_list_entry *entry)
   if (process->attached)
     {
       int pid = ptid_get_pid (process->entry.id);
-      fprintf (stderr, " %d", pid);
+      inform (" %d", pid);
     }
 }
 
@@ -3461,15 +3458,15 @@ detach_or_kill_for_exit (void)
 
   if (have_started_inferiors_p ())
     {
-      fprintf (stderr, "Killing process(es):");
+      inform ("Killing process(es):");
       for_each_inferior (&all_processes, print_started_pid);
-      fprintf (stderr, "\n");
+      inform ("\n");
     }
   if (have_attached_inferiors_p ())
     {
-      fprintf (stderr, "Detaching process(es):");
+      inform ("Detaching process(es):");
       for_each_inferior (&all_processes, print_attached_pid);
-      fprintf (stderr, "\n");
+      inform ("\n");
     }
 
   /* Now we can kill or detach the inferiors.  */
@@ -3494,7 +3491,7 @@ detach_or_kill_for_exit_cleanup (void *ignore)
   CATCH (exception, RETURN_MASK_ALL)
     {
       fflush (stdout);
-      fprintf (stderr, "Detach or kill failed: %s\n", exception.message);
+      inform ("Detach or kill failed: %s\n", exception.message);
       exit_code = 1;
     }
   END_CATCH
@@ -3557,7 +3554,7 @@ captured_main (int argc, char *argv[])
 
 	  if (error_msg != NULL)
 	    {
-	      fprintf (stderr, "%s", error_msg);
+	      inform ("%s", error_msg);
 	      exit (1);
 	    }
 	}
@@ -3594,8 +3591,7 @@ captured_main (int argc, char *argv[])
 		}
 	      else
 		{
-		  fprintf (stderr, "Don't know how to disable \"%s\".\n\n",
-			   tok);
+		  inform ("Don't know how to disable \"%s\".\n\n", tok);
 		  gdbserver_show_disableable (stderr);
 		  exit (1);
 		}
@@ -3616,7 +3612,7 @@ captured_main (int argc, char *argv[])
 	run_once = 1;
       else
 	{
-	  fprintf (stderr, "Unknown argument: %s\n", *next_arg);
+	  inform ("Unknown argument: %s\n", *next_arg);
 	  exit (1);
 	}
 
@@ -3766,9 +3762,8 @@ captured_main (int argc, char *argv[])
 	  if (run_once || (!extended_protocol && !target_running ()))
 	    throw_quit ("Quit");
 
-	  fprintf (stderr,
-		   "Remote side has terminated connection.  "
-		   "GDBserver will reopen the connection.\n");
+	  inform ("Remote side has terminated connection.  "
+		  "GDBserver will reopen the connection.\n");
 
 	  /* Get rid of any pending statuses.  An eventual reconnection
 	     (by the same GDB instance or another) will refresh all its
@@ -3798,9 +3793,8 @@ captured_main (int argc, char *argv[])
 		}
 	      else
 		{
-		  fprintf (stderr,
-			   "Disconnected tracing disabled; "
-			   "stopping trace run.\n");
+		  inform ("Disconnected tracing disabled; "
+			  "stopping trace run.\n");
 		  stop_tracing ();
 		}
 	    }
@@ -3808,7 +3802,7 @@ captured_main (int argc, char *argv[])
       CATCH (exception, RETURN_MASK_ERROR)
 	{
 	  fflush (stdout);
-	  fprintf (stderr, "gdbserver: %s\n", exception.message);
+	  inform ("gdbserver: %s\n", exception.message);
 
 	  if (response_needed)
 	    {
@@ -3838,8 +3832,8 @@ main (int argc, char *argv[])
       if (exception.reason == RETURN_ERROR)
 	{
 	  fflush (stdout);
-	  fprintf (stderr, "%s\n", exception.message);
-	  fprintf (stderr, "Exiting\n");
+	  inform ("%s\n", exception.message);
+	  inform ("Exiting\n");
 	  exit_code = 1;
 	}
 
@@ -3891,8 +3885,7 @@ process_point_options (struct gdb_breakpoint *bp, char **packet)
 	}
       else
 	{
-	  fprintf (stderr, "Unknown token %c, ignoring.\n",
-		   *dataptr);
+	  inform ("Unknown token %c, ignoring.\n", *dataptr);
 	  /* Skip tokens until we find one that we recognize.  */
 	  dataptr = strchrnul (dataptr, ';');
 	}
@@ -3963,14 +3956,12 @@ process_serial_event (void)
 	    }
 
 	  if (tracing && disconnected_tracing)
-	    fprintf (stderr,
-		     "Disconnected tracing in effect, "
-		     "leaving gdbserver attached to the process\n");
+	    inform ("Disconnected tracing in effect, "
+		    "leaving gdbserver attached to the process\n");
 
 	  if (any_persistent_commands ())
-	    fprintf (stderr,
-		     "Persistent commands are present, "
-		     "leaving gdbserver attached to the process\n");
+	    inform ("Persistent commands are present, "
+		    "leaving gdbserver attached to the process\n");
 
 	  /* Make sure we're in non-stop/async mode, so we we can both
 	     wait for an async socket accept, and handle async target
@@ -3995,7 +3986,7 @@ process_serial_event (void)
 	  break; /* from switch/case */
 	}
 
-      fprintf (stderr, "Detaching from process %d\n", pid);
+      inform ("Detaching from process %d\n", pid);
       stop_tracing ();
       if (detach_inferior (pid) != 0)
 	write_enn (own_buf);
@@ -4258,7 +4249,7 @@ process_serial_event (void)
 	   reply to it, either.  */
 	return 0;
 
-      fprintf (stderr, "Killing all inferiors\n");
+      inform ("Killing all inferiors\n");
       for_each_inferior (&all_processes, kill_inferior_callback);
 
       /* When using the extended protocol, we wait with no program
@@ -4302,7 +4293,7 @@ process_serial_event (void)
 	  if (target_running ())
 	    for_each_inferior (&all_processes,
 			       kill_inferior_callback);
-	  fprintf (stderr, "GDBserver restarting\n");
+	  inform ("GDBserver restarting\n");
 
 	  /* Wait till we are at 1st instruction in prog.  */
 	  if (program_argv != NULL)
diff --git a/gdb/gdbserver/target.c b/gdb/gdbserver/target.c
index 249a063..97d9fe8 100644
--- a/gdb/gdbserver/target.c
+++ b/gdb/gdbserver/target.c
@@ -227,12 +227,11 @@ mywait (ptid_t ptid, struct target_waitstatus *ourstatus, int options,
   if (!remote_connection_is_stdio ())
     {
       if (ourstatus->kind == TARGET_WAITKIND_EXITED)
-	fprintf (stderr,
-		 "\nChild exited with status %d\n", ourstatus->value.integer);
+	inform ("\nChild exited with status %d\n", ourstatus->value.integer);
       else if (ourstatus->kind == TARGET_WAITKIND_SIGNALLED)
-	fprintf (stderr, "\nChild terminated with signal = 0x%x (%s)\n",
-		 gdb_signal_to_host (ourstatus->value.sig),
-		 gdb_signal_to_name (ourstatus->value.sig));
+	inform ("\nChild terminated with signal = 0x%x (%s)\n",
+		gdb_signal_to_host (ourstatus->value.sig),
+		gdb_signal_to_name (ourstatus->value.sig));
     }
 
   if (connected_wait)
diff --git a/gdb/gdbserver/utils.c b/gdb/gdbserver/utils.c
index 37b9c89..2dca14d 100644
--- a/gdb/gdbserver/utils.c
+++ b/gdb/gdbserver/utils.c
@@ -94,6 +94,14 @@ vwarning (const char *string, va_list args)
   fprintf (stderr, "\n");
 }
 
+/* See common/errors.h.  */
+
+void
+vinform (const char *string, va_list args)
+{
+  vfprintf (stderr, string, args);
+}
+
 /* Report a problem internal to GDBserver, and exit.  */
 
 void
diff --git a/gdb/utils.c b/gdb/utils.c
index 8ca0a2e..40bc07c3 100644
--- a/gdb/utils.c
+++ b/gdb/utils.c
@@ -432,6 +432,13 @@ free_current_contents (void *ptr)
 }
 \f
 
+/* See common/errors.h  */
+
+void
+vinform (const char *string, va_list args)
+{
+  vprintf_filtered (string, args);
+}
 
 /* Print a warning message.  The first argument STRING is the warning
    message, used as an fprintf format string, the second is the
-- 
2.5.5

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

* Re: [PATCH] gdb,gdbserver: Introduce "inform"
  2016-11-23 16:19 [PATCH] gdb,gdbserver: Introduce "inform" Pedro Alves
@ 2016-11-26  4:42 ` Luis Machado
  0 siblings, 0 replies; 2+ messages in thread
From: Luis Machado @ 2016-11-26  4:42 UTC (permalink / raw)
  To: Pedro Alves, gdb-patches

On 11/23/2016 10:19 AM, Pedro Alves wrote:
> We have 'error', 'warning' and 'debug_printf', all usable throughout
> gdb, gdbserver and the shared directories, but we don't have a common
> function to print normal output to the user.  Instead, gdbserver code
> uses "fprintf (stderr, ...)", while gdb uses "printf_filtered (....)"
> (to stdout).
>
> This adds a new "inform" function for the "normal output" case, and
> makes gdbserver use it.  I added it to common/errors.c even though
> it's not an error just because it's convenient to find it described
> alongside error/warning, I think.  And I added it to common/ even
> though nothing uses it outside gdbserver, in antecipation that
> gdb/common/, gdb/nat/ or gdb/arch/ code will want to make use of it.
>
> This is my last (I think) patch of a series getting rid of naked
> "fprintf" calls , to help making a switch to using gnulib's C++
> namespace support more palatable, though as the others, I think it
> stands on its own.
>
> gdb/gdbserver/ChangeLog:
> yyyy-mm-dd  Pedro Alves <palves@redhat.com>
>
> 	* remote-utils.c (handle_accept_event, remote_open)
> 	(input_interrupt, getpkt): Use inform.
> 	* server.c (start_inferior, attach_inferior, print_started_pid)
> 	(detach_or_kill_for_exit, detach_or_kill_for_exit_cleanup)
> 	(captured_main, main, process_point_options)
> 	(process_serial_event): Use inform.
> 	* target.c (mywait): Use inform.
> 	* utils.c (vinform): New function.
>
> gdb/ChangeLog:
> yyyy-mm-dd  Pedro Alves <palves@redhat.com>
>
> 	* common/errors.c (inform): New function.
> 	* common/errors.h (inform, vinform): New declarations.
> 	* utils.c (vinform): New function.
> ---
>  gdb/common/errors.c          | 12 +++++++++
>  gdb/common/errors.h          | 11 ++++++++
>  gdb/gdbserver/remote-utils.c | 29 +++++++++-----------
>  gdb/gdbserver/server.c       | 63 +++++++++++++++++++-------------------------
>  gdb/gdbserver/target.c       |  9 +++----
>  gdb/gdbserver/utils.c        |  8 ++++++
>  gdb/utils.c                  |  7 +++++
>  7 files changed, 82 insertions(+), 57 deletions(-)
>
> diff --git a/gdb/common/errors.c b/gdb/common/errors.c
> index 1fc9602..57dd50d 100644
> --- a/gdb/common/errors.c
> +++ b/gdb/common/errors.c
> @@ -47,6 +47,18 @@ error (const char *fmt, ...)
>  /* See common/errors.h.  */
>
>  void
> +inform (const char *fmt, ...)
> +{
> +  va_list ap;
> +
> +  va_start (ap, fmt);
> +  vinform (fmt, ap);
> +  va_end (ap);
> +}
> +
> +/* See common/errors.h.  */
> +
> +void
>  internal_error (const char *file, int line, const char *fmt, ...)
>  {
>    va_list ap;
> diff --git a/gdb/common/errors.h b/gdb/common/errors.h
> index 56979ad..e6752f4 100644
> --- a/gdb/common/errors.h
> +++ b/gdb/common/errors.h
> @@ -42,6 +42,17 @@ extern void error (const char *fmt, ...)
>  extern void verror (const char *fmt, va_list args)
>       ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 0);
>
> +/* Inform the user about something.  Informations are not related to
> +   any problem.  They're just regular program output.  An information
> +   message is constructed using a printf- or vprintf-style argument
> +   list.  The function "vinform" must be provided by the client.  */
> +
> +extern void inform (const char *fmt, ...)
> +     ATTRIBUTE_PRINTF (1, 2);
> +
> +extern void vinform (const char *fmt, va_list args)
> +     ATTRIBUTE_PRINTF (1, 0);
> +
>  /* An internal error was detected.  Internal errors indicate
>     programming errors such as assertion failures, as opposed to
>     more general errors beyond the application's control.  These
> diff --git a/gdb/gdbserver/remote-utils.c b/gdb/gdbserver/remote-utils.c
> index b6c521b..d8df5b5 100644
> --- a/gdb/gdbserver/remote-utils.c
> +++ b/gdb/gdbserver/remote-utils.c
> @@ -194,8 +194,7 @@ handle_accept_event (int err, gdb_client_data client_data)
>    delete_file_handler (listen_desc);
>
>    /* Convert IP address to string.  */
> -  fprintf (stderr, "Remote debugging from host %s\n",
> -	   inet_ntoa (sockaddr.sin_addr));
> +  inform ("Remote debugging from host %s\n", inet_ntoa (sockaddr.sin_addr));
>
>    enable_async_notification (remote_desc);
>
> @@ -296,7 +295,7 @@ remote_open (char *name)
>
>    if (strcmp (name, STDIO_CONNECTION_NAME) == 0)
>      {
> -      fprintf (stderr, "Remote debugging using stdio\n");
> +      inform ("Remote debugging using stdio\n");
>
>        /* Use stdin as the handle of the connection.
>  	 We only select on reads, for example.  */
> @@ -368,7 +367,7 @@ remote_open (char *name)
>        }
>  #endif
>
> -      fprintf (stderr, "Remote debugging using %s\n", name);
> +      inform ("Remote debugging using %s\n", name);
>
>        enable_async_notification (remote_desc);
>
> @@ -389,8 +388,7 @@ remote_open (char *name)
>  	perror_with_name ("Can't determine port");
>        port = ntohs (sockaddr.sin_port);
>
> -      fprintf (stderr, "Listening on port %d\n", port);
> -      fflush (stderr);
> +      inform ("Listening on port %d\n", port);
>
>        /* Register the event loop handler.  */
>        add_file_handler (listen_desc, handle_accept_event, NULL);
> @@ -750,16 +748,16 @@ input_interrupt (int unused)
>
>        if (cc == 0)
>  	{
> -	  fprintf (stderr, "client connection closed\n");
> +	  inform ("client connection closed\n");
>  	  return;
>  	}
>        else if (cc != 1 || c != '\003')
>  	{
> -	  fprintf (stderr, "input_interrupt, count = %d c = %d ", cc, c);
> +	  inform ("input_interrupt, count = %d c = %d ", cc, c);
>  	  if (isprint (c))
> -	    fprintf (stderr, "('%c')\n", c);
> +	    inform ("('%c')\n", c);
>  	  else
> -	    fprintf (stderr, "('\\x%02x')\n", c & 0xff);
> +	    inform ("('\\x%02x')\n", c & 0xff);
>  	  return;
>  	}
>
> @@ -1006,16 +1004,15 @@ getpkt (char *buf)
>
>        if (noack_mode)
>  	{
> -	  fprintf (stderr,
> -		   "Bad checksum, sentsum=0x%x, csum=0x%x, "
> -		   "buf=%s [no-ack-mode, Bad medium?]\n",
> -		   (c1 << 4) + c2, csum, buf);
> +	  inform ("Bad checksum, sentsum=0x%x, csum=0x%x, "
> +		  "buf=%s [no-ack-mode, Bad medium?]\n",
> +		  (c1 << 4) + c2, csum, buf);
>  	  /* Not much we can do, GDB wasn't expecting an ack/nac.  */
>  	  break;
>  	}
>
> -      fprintf (stderr, "Bad checksum, sentsum=0x%x, csum=0x%x, buf=%s\n",
> -	       (c1 << 4) + c2, csum, buf);
> +      inform ("Bad checksum, sentsum=0x%x, csum=0x%x, buf=%s\n",
> +	      (c1 << 4) + c2, csum, buf);
>        if (write_prim ("-", 1) != 1)
>  	return -1;
>      }
> diff --git a/gdb/gdbserver/server.c b/gdb/gdbserver/server.c
> index 52c5b73..464e7a4 100644
> --- a/gdb/gdbserver/server.c
> +++ b/gdb/gdbserver/server.c
> @@ -275,9 +275,7 @@ start_inferior (char **argv)
>
>    /* FIXME: we don't actually know at this point that the create
>       actually succeeded.  We won't know that until we wait.  */
> -  fprintf (stderr, "Process %s created; pid = %ld\n", argv[0],
> -	   signal_pid);
> -  fflush (stderr);
> +  inform ("Process %s created; pid = %ld\n", argv[0], signal_pid);
>
>  #ifdef SIGTTOU
>    signal (SIGTTOU, SIG_IGN);
> @@ -343,8 +341,7 @@ attach_inferior (int pid)
>    if (myattach (pid) != 0)
>      return -1;
>
> -  fprintf (stderr, "Attached; pid = %d\n", pid);
> -  fflush (stderr);
> +  inform ("Attached; pid = %d\n", pid);
>
>    /* FIXME - It may be that we should get the SIGNAL_PID from the
>       attach function, so that it can be the main thread instead of
> @@ -3429,7 +3426,7 @@ print_started_pid (struct inferior_list_entry *entry)
>    if (! process->attached)
>      {
>        int pid = ptid_get_pid (process->entry.id);
> -      fprintf (stderr, " %d", pid);
> +      inform (" %d", pid);
>      }
>  }
>
> @@ -3444,7 +3441,7 @@ print_attached_pid (struct inferior_list_entry *entry)
>    if (process->attached)
>      {
>        int pid = ptid_get_pid (process->entry.id);
> -      fprintf (stderr, " %d", pid);
> +      inform (" %d", pid);
>      }
>  }
>
> @@ -3461,15 +3458,15 @@ detach_or_kill_for_exit (void)
>
>    if (have_started_inferiors_p ())
>      {
> -      fprintf (stderr, "Killing process(es):");
> +      inform ("Killing process(es):");
>        for_each_inferior (&all_processes, print_started_pid);
> -      fprintf (stderr, "\n");
> +      inform ("\n");
>      }
>    if (have_attached_inferiors_p ())
>      {
> -      fprintf (stderr, "Detaching process(es):");
> +      inform ("Detaching process(es):");
>        for_each_inferior (&all_processes, print_attached_pid);
> -      fprintf (stderr, "\n");
> +      inform ("\n");
>      }
>
>    /* Now we can kill or detach the inferiors.  */
> @@ -3494,7 +3491,7 @@ detach_or_kill_for_exit_cleanup (void *ignore)
>    CATCH (exception, RETURN_MASK_ALL)
>      {
>        fflush (stdout);
> -      fprintf (stderr, "Detach or kill failed: %s\n", exception.message);
> +      inform ("Detach or kill failed: %s\n", exception.message);
>        exit_code = 1;
>      }
>    END_CATCH
> @@ -3557,7 +3554,7 @@ captured_main (int argc, char *argv[])
>
>  	  if (error_msg != NULL)
>  	    {
> -	      fprintf (stderr, "%s", error_msg);
> +	      inform ("%s", error_msg);
>  	      exit (1);
>  	    }
>  	}
> @@ -3594,8 +3591,7 @@ captured_main (int argc, char *argv[])
>  		}
>  	      else
>  		{
> -		  fprintf (stderr, "Don't know how to disable \"%s\".\n\n",
> -			   tok);
> +		  inform ("Don't know how to disable \"%s\".\n\n", tok);
>  		  gdbserver_show_disableable (stderr);
>  		  exit (1);
>  		}
> @@ -3616,7 +3612,7 @@ captured_main (int argc, char *argv[])
>  	run_once = 1;
>        else
>  	{
> -	  fprintf (stderr, "Unknown argument: %s\n", *next_arg);
> +	  inform ("Unknown argument: %s\n", *next_arg);
>  	  exit (1);
>  	}
>
> @@ -3766,9 +3762,8 @@ captured_main (int argc, char *argv[])
>  	  if (run_once || (!extended_protocol && !target_running ()))
>  	    throw_quit ("Quit");
>
> -	  fprintf (stderr,
> -		   "Remote side has terminated connection.  "
> -		   "GDBserver will reopen the connection.\n");
> +	  inform ("Remote side has terminated connection.  "
> +		  "GDBserver will reopen the connection.\n");
>
>  	  /* Get rid of any pending statuses.  An eventual reconnection
>  	     (by the same GDB instance or another) will refresh all its
> @@ -3798,9 +3793,8 @@ captured_main (int argc, char *argv[])
>  		}
>  	      else
>  		{
> -		  fprintf (stderr,
> -			   "Disconnected tracing disabled; "
> -			   "stopping trace run.\n");
> +		  inform ("Disconnected tracing disabled; "
> +			  "stopping trace run.\n");
>  		  stop_tracing ();
>  		}
>  	    }
> @@ -3808,7 +3802,7 @@ captured_main (int argc, char *argv[])
>        CATCH (exception, RETURN_MASK_ERROR)
>  	{
>  	  fflush (stdout);
> -	  fprintf (stderr, "gdbserver: %s\n", exception.message);
> +	  inform ("gdbserver: %s\n", exception.message);
>
>  	  if (response_needed)
>  	    {
> @@ -3838,8 +3832,8 @@ main (int argc, char *argv[])
>        if (exception.reason == RETURN_ERROR)
>  	{
>  	  fflush (stdout);
> -	  fprintf (stderr, "%s\n", exception.message);
> -	  fprintf (stderr, "Exiting\n");
> +	  inform ("%s\n", exception.message);
> +	  inform ("Exiting\n");
>  	  exit_code = 1;
>  	}
>
> @@ -3891,8 +3885,7 @@ process_point_options (struct gdb_breakpoint *bp, char **packet)
>  	}
>        else
>  	{
> -	  fprintf (stderr, "Unknown token %c, ignoring.\n",
> -		   *dataptr);
> +	  inform ("Unknown token %c, ignoring.\n", *dataptr);
>  	  /* Skip tokens until we find one that we recognize.  */
>  	  dataptr = strchrnul (dataptr, ';');
>  	}
> @@ -3963,14 +3956,12 @@ process_serial_event (void)
>  	    }
>
>  	  if (tracing && disconnected_tracing)
> -	    fprintf (stderr,
> -		     "Disconnected tracing in effect, "
> -		     "leaving gdbserver attached to the process\n");
> +	    inform ("Disconnected tracing in effect, "
> +		    "leaving gdbserver attached to the process\n");
>
>  	  if (any_persistent_commands ())
> -	    fprintf (stderr,
> -		     "Persistent commands are present, "
> -		     "leaving gdbserver attached to the process\n");
> +	    inform ("Persistent commands are present, "
> +		    "leaving gdbserver attached to the process\n");
>
>  	  /* Make sure we're in non-stop/async mode, so we we can both
>  	     wait for an async socket accept, and handle async target
> @@ -3995,7 +3986,7 @@ process_serial_event (void)
>  	  break; /* from switch/case */
>  	}
>
> -      fprintf (stderr, "Detaching from process %d\n", pid);
> +      inform ("Detaching from process %d\n", pid);
>        stop_tracing ();
>        if (detach_inferior (pid) != 0)
>  	write_enn (own_buf);
> @@ -4258,7 +4249,7 @@ process_serial_event (void)
>  	   reply to it, either.  */
>  	return 0;
>
> -      fprintf (stderr, "Killing all inferiors\n");
> +      inform ("Killing all inferiors\n");
>        for_each_inferior (&all_processes, kill_inferior_callback);
>
>        /* When using the extended protocol, we wait with no program
> @@ -4302,7 +4293,7 @@ process_serial_event (void)
>  	  if (target_running ())
>  	    for_each_inferior (&all_processes,
>  			       kill_inferior_callback);
> -	  fprintf (stderr, "GDBserver restarting\n");
> +	  inform ("GDBserver restarting\n");
>
>  	  /* Wait till we are at 1st instruction in prog.  */
>  	  if (program_argv != NULL)
> diff --git a/gdb/gdbserver/target.c b/gdb/gdbserver/target.c
> index 249a063..97d9fe8 100644
> --- a/gdb/gdbserver/target.c
> +++ b/gdb/gdbserver/target.c
> @@ -227,12 +227,11 @@ mywait (ptid_t ptid, struct target_waitstatus *ourstatus, int options,
>    if (!remote_connection_is_stdio ())
>      {
>        if (ourstatus->kind == TARGET_WAITKIND_EXITED)
> -	fprintf (stderr,
> -		 "\nChild exited with status %d\n", ourstatus->value.integer);
> +	inform ("\nChild exited with status %d\n", ourstatus->value.integer);
>        else if (ourstatus->kind == TARGET_WAITKIND_SIGNALLED)
> -	fprintf (stderr, "\nChild terminated with signal = 0x%x (%s)\n",
> -		 gdb_signal_to_host (ourstatus->value.sig),
> -		 gdb_signal_to_name (ourstatus->value.sig));
> +	inform ("\nChild terminated with signal = 0x%x (%s)\n",
> +		gdb_signal_to_host (ourstatus->value.sig),
> +		gdb_signal_to_name (ourstatus->value.sig));
>      }
>
>    if (connected_wait)
> diff --git a/gdb/gdbserver/utils.c b/gdb/gdbserver/utils.c
> index 37b9c89..2dca14d 100644
> --- a/gdb/gdbserver/utils.c
> +++ b/gdb/gdbserver/utils.c
> @@ -94,6 +94,14 @@ vwarning (const char *string, va_list args)
>    fprintf (stderr, "\n");
>  }
>
> +/* See common/errors.h.  */
> +
> +void
> +vinform (const char *string, va_list args)
> +{
> +  vfprintf (stderr, string, args);
> +}
> +
>  /* Report a problem internal to GDBserver, and exit.  */
>
>  void
> diff --git a/gdb/utils.c b/gdb/utils.c
> index 8ca0a2e..40bc07c3 100644
> --- a/gdb/utils.c
> +++ b/gdb/utils.c
> @@ -432,6 +432,13 @@ free_current_contents (void *ptr)
>  }
>  \f
>
> +/* See common/errors.h  */
> +
> +void
> +vinform (const char *string, va_list args)
> +{
> +  vprintf_filtered (string, args);
> +}
>
>  /* Print a warning message.  The first argument STRING is the warning
>     message, used as an fprintf format string, the second is the
> -- 2.5.5
>

Looks good to me. I noticed the gdbserver/GDBserver inconsistency, but 
that can be addressed in a different patch.

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

end of thread, other threads:[~2016-11-26  4:42 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-11-23 16:19 [PATCH] gdb,gdbserver: Introduce "inform" Pedro Alves
2016-11-26  4:42 ` Luis Machado

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).