gdb/ChangeLog:
authorPaul Pluzhnikov <ppluzhnikov@google.com>
Thu, 12 Nov 2009 00:47:39 +0000 (00:47 +0000)
committerPaul Pluzhnikov <ppluzhnikov@google.com>
Thu, 12 Nov 2009 00:47:39 +0000 (00:47 +0000)
2009-11-11  Paul Pluzhnikov  <ppluzhnikov@google.com>

PR gdb/10838
* linux-thread-db.c (thread_db_info): New member.
(disable_thread_event_reporting): Call td_ta_clear_event.

gdbserver/ChangeLog:

2009-11-11  Paul Pluzhnikov  <ppluzhnikov@google.com>

PR gdb/10838
* thread-db.c (thread_db_free): Call td_ta_clear_event.

gdb/ChangeLog
gdb/gdbserver/ChangeLog
gdb/gdbserver/thread-db.c
gdb/linux-thread-db.c

index b840509b7bb13d6f543c98c56bdfc0c5333ab96a..011f292c5073122c33807ed2906cfbe8ae49e817 100644 (file)
@@ -1,3 +1,9 @@
+2009-11-11  Paul Pluzhnikov  <ppluzhnikov@google.com>
+
+       PR gdb/10838
+       * linux-thread-db.c (thread_db_info): New member.
+       (disable_thread_event_reporting): Call td_ta_clear_event.
+
 2009-11-11  Keith Seitz  <keiths@redhat.com>
 
        * linespec.c (lookup_prefix_sym): Lookup the symbol
index 59979c82fcf4f6fe61d63fb7c4f0e93514ed146a..30874338703d688e3294ede36c812f9e94e0ea9e 100644 (file)
@@ -1,3 +1,8 @@
+2009-11-11  Paul Pluzhnikov  <ppluzhnikov@google.com>
+
+       PR gdb/10838
+       * thread-db.c (thread_db_free): Call td_ta_clear_event.
+
 2009-11-03  Nathan Sidwell  <nathan@codesourcery.com>
 
        * configure.ac (i[34567]86-*): Check if we're targetting x86-64
index 06dfe3510a97a22c067e67c9c3f28f8954449201..8af0539da7eea6dd0230d66fb91f3fc57873eac0 100644 (file)
@@ -759,6 +759,19 @@ thread_db_free (struct process_info *proc)
     {
 #ifndef USE_LIBTHREAD_DB_DIRECTLY
       td_err_e (*td_ta_delete_p) (td_thragent_t *);
+      td_err_e (*td_ta_clear_event_p) (const td_thragent_t *ta,
+                                      td_thr_events_t *event);
+
+      td_ta_clear_event_p = dlsym (thread_db->handle, "td_ta_clear_event");
+      if (td_ta_clear_event_p != NULL)
+       {
+         td_thr_events_t events;
+
+         /* Set the process wide mask saying we aren't interested in any
+            events anymore.  */
+         td_event_fillset (&events);
+         (*td_ta_clear_event_p) (thread_db->thread_agent, &events);
+       }
 
       td_ta_delete_p = dlsym (thread_db->handle, "td_ta_delete");
       if (td_ta_delete_p != NULL)
@@ -766,6 +779,10 @@ thread_db_free (struct process_info *proc)
 
       dlclose (thread_db->handle);
 #else
+      td_thd_events_t events;
+
+      td_event_fillset (&events);
+      td_ta_clear_event (thread_db->thread_agent, &events);
       td_ta_delete (thread_db->thread_agent);
 #endif  /* USE_LIBTHREAD_DB_DIRECTLY  */
 
index ac6a4e5853642e47092f067fae21d7bffec77116..32ac5c5d6de079be43c298b559b263fc81e1a8ca 100644 (file)
@@ -141,6 +141,8 @@ struct thread_db_info
                                  td_event_e event, td_notify_t *ptr);
   td_err_e (*td_ta_set_event_p) (const td_thragent_t *ta,
                                 td_thr_events_t *event);
+  td_err_e (*td_ta_clear_event_p) (const td_thragent_t *ta,
+                                  td_thr_events_t *event);
   td_err_e (*td_ta_event_getmsg_p) (const td_thragent_t *ta,
                                    td_event_msg_t *msg);
 
@@ -701,6 +703,7 @@ try_thread_db_load_1 (struct thread_db_info *info)
   /* These are not essential.  */
   info->td_ta_event_addr_p = dlsym (info->handle, "td_ta_event_addr");
   info->td_ta_set_event_p = dlsym (info->handle, "td_ta_set_event");
+  info->td_ta_clear_event_p = dlsym (info->handle, "td_ta_clear_event");
   info->td_ta_event_getmsg_p = dlsym (info->handle, "td_ta_event_getmsg");
   info->td_thr_event_enable_p = dlsym (info->handle, "td_thr_event_enable");
   info->td_thr_tls_get_addr_p = dlsym (info->handle, "td_thr_tls_get_addr");
@@ -907,14 +910,14 @@ thread_db_load (void)
 static void
 disable_thread_event_reporting (struct thread_db_info *info)
 {
-  if (info->td_ta_set_event_p != NULL)
+  if (info->td_ta_clear_event_p != NULL)
     {
       td_thr_events_t events;
 
       /* Set the process wide mask saying we aren't interested in any
         events anymore.  */
-      td_event_emptyset (&events);
-      info->td_ta_set_event_p (info->thread_agent, &events);
+      td_event_fillset (&events);
+      info->td_ta_clear_event_p (info->thread_agent, &events);
     }
 
   info->td_create_bp_addr = 0;