aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorPaul Pluzhnikov <ppluzhnikov@google.com>2009-11-12 00:47:39 +0000
committerPaul Pluzhnikov <ppluzhnikov@google.com>2009-11-12 00:47:39 +0000
commit21e1bee4d23dc4a91ccccd69947fc109b4312230 (patch)
tree8ce2297a06e397c09e49b88ba58f8be8d8b53116 /gdb
parent20406f4ad3a44ead30dd314fb456094567c6ec70 (diff)
downloadgdb-21e1bee4d23dc4a91ccccd69947fc109b4312230.zip
gdb-21e1bee4d23dc4a91ccccd69947fc109b4312230.tar.gz
gdb-21e1bee4d23dc4a91ccccd69947fc109b4312230.tar.bz2
gdb/ChangeLog:
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.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/gdbserver/ChangeLog5
-rw-r--r--gdb/gdbserver/thread-db.c17
-rw-r--r--gdb/linux-thread-db.c9
4 files changed, 34 insertions, 3 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index b840509..011f292 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -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
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index 59979c8..3087433 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -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
diff --git a/gdb/gdbserver/thread-db.c b/gdb/gdbserver/thread-db.c
index 06dfe35..8af0539 100644
--- a/gdb/gdbserver/thread-db.c
+++ b/gdb/gdbserver/thread-db.c
@@ -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 */
diff --git a/gdb/linux-thread-db.c b/gdb/linux-thread-db.c
index ac6a4e5..32ac5c5 100644
--- a/gdb/linux-thread-db.c
+++ b/gdb/linux-thread-db.c
@@ -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;