This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]