| Index: gdb/gdbserver/target.c
|
| diff --git a/gdb/gdbserver/target.c b/gdb/gdbserver/target.c
|
| index 753947647c34dae6acc0bd493cd680b74b300fd0..d4a2a98721a9bfa2ee2cc092c66d3fe32ea21e52 100644
|
| --- a/gdb/gdbserver/target.c
|
| +++ b/gdb/gdbserver/target.c
|
| @@ -1,6 +1,5 @@
|
| /* Target operations for the remote server for GDB.
|
| - Copyright (C) 2002, 2004-2005, 2007-2012 Free Software Foundation,
|
| - Inc.
|
| + Copyright (C) 2002-2013 Free Software Foundation, Inc.
|
|
|
| Contributed by MontaVista Software.
|
|
|
| @@ -20,6 +19,7 @@
|
| along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
|
|
| #include "server.h"
|
| +#include "tracepoint.h"
|
|
|
| struct target_ops *the_target;
|
|
|
| @@ -82,13 +82,22 @@ mywait (ptid_t ptid, struct target_waitstatus *ourstatus, int options,
|
|
|
| ret = (*the_target->wait) (ptid, ourstatus, options);
|
|
|
| - if (ourstatus->kind == TARGET_WAITKIND_EXITED)
|
| - fprintf (stderr,
|
| - "\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));
|
| + /* If GDB is connected through TCP/serial, then GDBserver will most
|
| + probably be running on its own terminal/console, so it's nice to
|
| + print there why is GDBserver exiting. If however, GDB is
|
| + connected through stdio, then there's no need to spam the GDB
|
| + console with this -- the user will already see the exit through
|
| + regular GDB output, in that same terminal. */
|
| + if (!remote_connection_is_stdio ())
|
| + {
|
| + if (ourstatus->kind == TARGET_WAITKIND_EXITED)
|
| + fprintf (stderr,
|
| + "\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));
|
| + }
|
|
|
| if (connected_wait)
|
| server_waiting = 0;
|
| @@ -141,44 +150,10 @@ target_pid_to_str (ptid_t ptid)
|
| return buf;
|
| }
|
|
|
| -/* Return a pretty printed form of target_waitstatus. */
|
| -
|
| -const char *
|
| -target_waitstatus_to_string (const struct target_waitstatus *ws)
|
| +int
|
| +kill_inferior (int pid)
|
| {
|
| - static char buf[200];
|
| - const char *kind_str = "status->kind = ";
|
| + gdb_agent_about_to_close (pid);
|
|
|
| - switch (ws->kind)
|
| - {
|
| - case TARGET_WAITKIND_EXITED:
|
| - sprintf (buf, "%sexited, status = %d",
|
| - kind_str, ws->value.integer);
|
| - break;
|
| - case TARGET_WAITKIND_STOPPED:
|
| - sprintf (buf, "%sstopped, signal = %s",
|
| - kind_str, gdb_signal_to_name (ws->value.sig));
|
| - break;
|
| - case TARGET_WAITKIND_SIGNALLED:
|
| - sprintf (buf, "%ssignalled, signal = %s",
|
| - kind_str, gdb_signal_to_name (ws->value.sig));
|
| - break;
|
| - case TARGET_WAITKIND_LOADED:
|
| - sprintf (buf, "%sloaded", kind_str);
|
| - break;
|
| - case TARGET_WAITKIND_EXECD:
|
| - sprintf (buf, "%sexecd", kind_str);
|
| - break;
|
| - case TARGET_WAITKIND_SPURIOUS:
|
| - sprintf (buf, "%sspurious", kind_str);
|
| - break;
|
| - case TARGET_WAITKIND_IGNORE:
|
| - sprintf (buf, "%signore", kind_str);
|
| - break;
|
| - default:
|
| - sprintf (buf, "%sunknown???", kind_str);
|
| - break;
|
| - }
|
| -
|
| - return buf;
|
| + return (*the_target->kill) (pid);
|
| }
|
|
|