Re: [PATCH 2/4] Remove socket file at exit.

Yao Qi
2012-06-14T14:44:06Z

On Tuesday 12 June 2012 23:14:32 Pedro Alves wrote:
> > (gdb_agent_remove_socket): New.
> > (gdb_agent_helper_thread): Call gdb_agent_remove_socket at
> > exit.
> > Inline gdb_agent_socket_init here.
>
> But why inline? We should just need to move the "name" local
> of gdb_agent_socket_init a global? (btw, the 'agent_socket_name'
> global is missing from the ChangeLog.)

At first, I tried to avoid introducing a global variable, so I inlined that
function. Forgot to revert change back. Fixed.

gdb/gdbserver:

2012-06-14 Yao Qi <yao@codesourcery.com>

* tracepoint.c (agent_socket_name): New static variable.
(gdb_agent_socket_init): Replace local variable 'name' with
'agent_socket_name'.
Include 'stdlib.h'.
(gdb_agent_remove_socket): New.
(gdb_agent_helper_thread): Install gdb_agent_remove_socket to
atexit hook.
---
gdb/gdbserver/tracepoint.c | 18 ++++++++++++++----
1 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/gdb/gdbserver/tracepoint.c b/gdb/gdbserver/tracepoint.c
index f103dfc..8fcaa46 100644
--- a/gdb/gdbserver/tracepoint.c
+++ b/gdb/gdbserver/tracepoint.c
@@ -6748,13 +6748,14 @@ init_named_socket (const char *name)
return fd;
}

+static char agent_socket_name[UNIX_PATH_MAX];
+
static int
gdb_agent_socket_init (void)
{
int result, fd;
- char name[UNIX_PATH_MAX];

- result = xsnprintf (name, UNIX_PATH_MAX, "%s/gdb_ust%d",
+ result = xsnprintf (agent_socket_name, UNIX_PATH_MAX, "%s/gdb_ust%d",
SOCK_DIR, getpid ());
if (result >= UNIX_PATH_MAX)
{
@@ -6762,11 +6763,11 @@ gdb_agent_socket_init (void)
return -1;
}

- fd = init_named_socket (name);
+ fd = init_named_socket (agent_socket_name);
if (fd < 0)
warning ("Error initializing named socket (%s) for communication with the "
"ust helper thread. Check that directory exists and that it "
- "is writable.", name);
+ "is writable.", agent_socket_name);

return fd;
}
@@ -6995,6 +6996,13 @@ gdb_ust_init (void)
#endif /* HAVE_UST */

#include <sys/syscall.h>
+#include <stdlib.h>
+
+static void
+gdb_agent_remove_socket (void)
+{
+ unlink (agent_socket_name);
+}

/* Helper thread of agent. */

@@ -7003,6 +7011,8 @@ gdb_agent_helper_thread (void *arg)
{
int listen_fd;

+ atexit (gdb_agent_remove_socket);
+
while (1)
{
listen_fd = gdb_agent_socket_init ();
--
1.7.0.4