From: Jan Kratochvil Date: Thu, 29 Aug 2013 14:24:16 +0000 (+0000) Subject: PR server/15604 X-Git-Tag: gdb_7_6_1-2013-08-30-release~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4b0f5fbb253fbbe9c2f4578ebd7dd94204a46477;p=thirdparty%2Fbinutils-gdb.git PR server/15604 gdb/gdbserver/ 2013-08-29 Jan Kratochvil PR server/15604 * linux-low.c (linux_create_inferior) : Close LISTEN_DESC and optionally REMOTE_DESC. (lynx_create_inferior) : Close LISTEN_DESC and optionally REMOTE_DESC. * remote-utils.c (remote_desc, listen_desc): Remove static qualifier. * server.h (remote_desc, listen_desc): New declaration. * spu-low.c (spu_create_inferior) : Close LISTEN_DESC and optionally REMOTE_DESC. --- diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog index 1cebc7cf762..0d679edf0f5 100644 --- a/gdb/gdbserver/ChangeLog +++ b/gdb/gdbserver/ChangeLog @@ -1,3 +1,17 @@ +2013-08-29 Jan Kratochvil + + PR server/15604 + * linux-low.c + (linux_create_inferior) : + Close LISTEN_DESC and optionally REMOTE_DESC. + (lynx_create_inferior) : + Close LISTEN_DESC and optionally REMOTE_DESC. + * remote-utils.c (remote_desc, listen_desc): Remove static qualifier. + * server.h (remote_desc, listen_desc): New declaration. + * spu-low.c + (spu_create_inferior) : + Close LISTEN_DESC and optionally REMOTE_DESC. + 2013-05-31 Doug Evans PR server/15594 diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c index 523926d1790..ead65dcf45d 100644 --- a/gdb/gdbserver/linux-low.c +++ b/gdb/gdbserver/linux-low.c @@ -668,6 +668,12 @@ linux_create_inferior (char *program, char **allargs) /* Errors ignored. */; } } + else + { + close (listen_desc); + if (gdb_connected ()) + close (remote_desc); + } execv (program, allargs); if (errno == ENOENT) diff --git a/gdb/gdbserver/lynx-low.c b/gdb/gdbserver/lynx-low.c index a5f3b6dc0c0..c12c7c3ee02 100644 --- a/gdb/gdbserver/lynx-low.c +++ b/gdb/gdbserver/lynx-low.c @@ -218,6 +218,12 @@ lynx_create_inferior (char *program, char **allargs) pgrp = getpid(); setpgid (0, pgrp); ioctl (0, TIOCSPGRP, &pgrp); + if (!remote_connection_is_stdio ()) + { + close (listen_desc); + if (gdb_connected ()) + close (remote_desc); + } lynx_ptrace (PTRACE_TRACEME, null_ptid, 0, 0, 0); execv (program, allargs); fprintf (stderr, "Cannot exec %s: %s.\n", program, strerror (errno)); diff --git a/gdb/gdbserver/remote-utils.c b/gdb/gdbserver/remote-utils.c index 42c6a545c56..39dc5779ac8 100644 --- a/gdb/gdbserver/remote-utils.c +++ b/gdb/gdbserver/remote-utils.c @@ -108,8 +108,8 @@ struct ui_file *gdb_stdlog; static int remote_is_stdio = 0; -static gdb_fildes_t remote_desc = INVALID_DESCRIPTOR; -static gdb_fildes_t listen_desc = INVALID_DESCRIPTOR; +gdb_fildes_t remote_desc = INVALID_DESCRIPTOR; +gdb_fildes_t listen_desc = INVALID_DESCRIPTOR; /* FIXME headerize? */ extern int using_threads; diff --git a/gdb/gdbserver/server.h b/gdb/gdbserver/server.h index 139cd498c7c..b568d242e15 100644 --- a/gdb/gdbserver/server.h +++ b/gdb/gdbserver/server.h @@ -274,6 +274,8 @@ extern void hostio_last_error_from_errno (char *own_buf); /* From remote-utils.c */ extern int remote_debug; +extern gdb_fildes_t remote_desc; +extern gdb_fildes_t listen_desc; extern int noack_mode; extern int transport_is_reliable; diff --git a/gdb/gdbserver/spu-low.c b/gdb/gdbserver/spu-low.c index deaa115c6b9..0617b018c97 100644 --- a/gdb/gdbserver/spu-low.c +++ b/gdb/gdbserver/spu-low.c @@ -273,6 +273,12 @@ spu_create_inferior (char *program, char **allargs) if (pid == 0) { + if (!remote_connection_is_stdio ()) + { + close (listen_desc); + if (gdb_connected ()) + close (remote_desc); + } ptrace (PTRACE_TRACEME, 0, 0, 0); setpgid (0, 0);