Hi,
This patch is a follow-up of the following discussions:
  <https://sourceware.org/ml/gdb-patches/2014-12/msg00421.html>
  <https://gcc.gnu.org/ml/gcc-patches/2014-12/msg01293.html>
input_interrupt is currently emiting non-printable characters, which
is confusing the dg-extract-results.sh script.  This is obviously not
a good thing, and, by following Pedro's advices here:
  <https://gcc.gnu.org/ml/gcc-patches/2014-12/msg01320.html>
I adapted the function to print "client connection closed" when it
receives a NUL character, or use the "isprint" function to decide how
to print the received char.  I tested it by running the testcases that
were printing the non-printable chars before:
  gdb.base/gdb-sigterm.exp
  gdb.threads/non-ldr-exc-1.exp
  gdb.threads/non-ldr-exc-2.exp
  gdb.threads/non-ldr-exc-3.exp
  gdb.threads/non-ldr-exc-4.exp
  gdb.threads/thread-execl.exp
and confirming that they print the right message.  I tried a bit to
come up with a testcase for this, but failed, and since I did not want
to spend too much time on it, I'm sending the patch anyway.
Comments are welcome, as usual.
gdb/gdbserver/ChangeLog:
2014-12-29  Sergio Durigan Junior  <sergiodj@redhat.com>
	* remote-utils.c: Include ctype.h.
	(input_interrupt): Explicitly handle the case when the char
	received is the NUL byte.  Improve the printing of non-ASCII
	characters.
+2014-12-29  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+       * remote-utils.c: Include ctype.h.
+       (input_interrupt): Explicitly handle the case when the char
+       received is the NUL byte.  Improve the printing of non-ASCII
+       characters.
+
 2014-12-16  Joel Brobecker  <brobecker@adacore.com>
 
        * linux-low.c (linux_low_filter_event): Update call to
 
 #include "tdesc.h"
 #include "dll.h"
 #include "rsp-low.h"
+#include <ctype.h>
 #if HAVE_SYS_IOCTL_H
 #include <sys/ioctl.h>
 #endif
 
       cc = read_prim (&c, 1);
 
-      if (cc != 1 || c != '\003' || current_thread == NULL)
+      if (cc == 0)
        {
-         fprintf (stderr, "input_interrupt, count = %d c = %d ('%c')\n",
-                  cc, c, c);
+         fprintf (stderr, "client connection closed\n");
+         return;
+       }
+      else if (cc != 1 || c != '\003' || current_thread == NULL)
+       {
+         fprintf (stderr, "input_interrupt, count = %d c = %d ", cc, c);
+         if (isprint (c))
+           fprintf (stderr, "('%c')\n", c);
+         else
+           fprintf (stderr, "('\\x%02x')\n", c & 0xff);
          return;
        }