From: Markus Metzger Date: Tue, 3 Dec 2013 09:20:47 +0000 (+0100) Subject: btrace: initiate teardown when closing record btrace target X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=568e808b7d80a7613c1b6d94ff93dd517436b249;p=binutils-gdb.git 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 * record-btrace.c (record_btrace_close): Call btrace_teardown for all threads. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index c949c02158a..0c0a8b26569 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2014-01-27 Markus Metzger + + * record-btrace.c (record_btrace_close): Call btrace_teardown + for all threads. + 2014-01-27 Joel Brobecker * ada-lang.c: Remove "#ifdef UI_OUT" condition for including diff --git a/gdb/record-btrace.c b/gdb/record-btrace.c index 3a93fdbb9ab..365b6be1c8b 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. */