aboutsummaryrefslogtreecommitdiff
path: root/gdb/gdbserver/server.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/gdbserver/server.c')
-rw-r--r--gdb/gdbserver/server.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/gdb/gdbserver/server.c b/gdb/gdbserver/server.c
index 67e8e3e..976ecbd 100644
--- a/gdb/gdbserver/server.c
+++ b/gdb/gdbserver/server.c
@@ -2893,9 +2893,21 @@ handle_v_attach (char *own_buf)
{
client_state &cs = get_client_state ();
int pid;
+ int ret;
pid = strtol (own_buf + 8, NULL, 16);
- if (pid != 0 && attach_inferior (pid) == 0)
+
+ try
+ {
+ ret = attach_inferior (pid);
+ }
+ catch (const gdb_exception_error &e)
+ {
+ snprintf (own_buf, PBUFSIZ, "E.%s", e.what ());
+ return 0;
+ }
+
+ if (pid != 0 && ret == 0)
{
/* Don't report shared library events after attaching, even if
some libraries are preloaded. GDB will always poll the