diff options
author | Markus Metzger <markus.t.metzger@intel.com> | 2013-12-03 10:20:47 +0100 |
---|---|---|
committer | Markus Metzger <markus.t.metzger@intel.com> | 2014-01-27 08:56:16 +0100 |
commit | 568e808b7d80a7613c1b6d94ff93dd517436b249 (patch) | |
tree | db6f698ce919f14e6f279328a9cf4edcbe7bbd2f | |
parent | 467d141bf5399b1092118981da1143523b19b896 (diff) | |
download | gdb-568e808b7d80a7613c1b6d94ff93dd517436b249.zip gdb-568e808b7d80a7613c1b6d94ff93dd517436b249.tar.gz gdb-568e808b7d80a7613c1b6d94ff93dd517436b249.tar.bz2 |
btrace: initiate teardown when closing record btrace target
The to_teardown_btrace target method is used to free btrace resources
during shutdown when target record has already been unpushed and we
can't reliably talk to a remote target to disable branch tracing.
Tracing resources are freed for each thread when the thread is removed;
both on the GDB side and on the gdbserver side.
In the remote case, the remote target that provides to_teardown_btrace
to free the GDB side resources has already been unpushed when threads
are destroyed. This results in a complaint "You can't do this ..." and
in a few bytes of memory leaked for each thread.
Initiate btrace teardown in record_btrace_close, so the remote target is
still in place.
2014-01-27 Markus Metzger <markus.t.metzger@intel.com>
* record-btrace.c (record_btrace_close): Call btrace_teardown
for all threads.
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/record-btrace.c | 7 |
2 files changed, 11 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index c949c02..0c0a8b2 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2014-01-27 Markus Metzger <markus.t.metzger@intel.com> + + * record-btrace.c (record_btrace_close): Call btrace_teardown + for all threads. + 2014-01-27 Joel Brobecker <brobecker@adacore.com> * ada-lang.c: Remove "#ifdef UI_OUT" condition for including diff --git a/gdb/record-btrace.c b/gdb/record-btrace.c index 3a93fdb..365b6be 100644 --- a/gdb/record-btrace.c +++ b/gdb/record-btrace.c @@ -213,11 +213,16 @@ record_btrace_stop_recording (void) static void record_btrace_close (void) { + struct thread_info *tp; + /* Make sure automatic recording gets disabled even if we did not stop recording before closing the record-btrace target. */ record_btrace_auto_disable (); - /* We already stopped recording. */ + /* We should have already stopped recording. + Tear down btrace in case we have not. */ + ALL_THREADS (tp) + btrace_teardown (tp); } /* The to_info_record method of target record-btrace. */ |