gdb/ * tracepoint.c (process_tracepoint_on_disconnect): New. (disconnect_tracing): Call process_tracepoint_on_disconnect. --- gdb/tracepoint.c | 28 ++++++++++++++++++++++++++++ 1 files changed, 28 insertions(+), 0 deletions(-) diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c index e155515..c0b5231 100644 --- a/gdb/tracepoint.c +++ b/gdb/tracepoint.c @@ -1642,6 +1642,32 @@ add_aexpr (struct collection_list *collect, struct agent_expr *aexpr) collect->next_aexpr_elt++; } +static void +process_tracepoint_on_disconnect (void) +{ + VEC(breakpoint_p) *tp_vec = NULL; + int ix; + struct breakpoint *b; + int has_pending_p = 0; + + /* Check whether we still have pending tracepoint. If we have, warn the + user that pending tracepoint will no longer work. */ + tp_vec = all_tracepoints (); + for (ix = 0; VEC_iterate (breakpoint_p, tp_vec, ix, b); ix++) + { + if (b->loc == NULL || b->loc->shlib_disabled) + { + has_pending_p = 1; + break; + } + } + VEC_free (breakpoint_p, tp_vec); + + if (has_pending_p) + warning (_("Pending tracepoint will not be resolved while" + " GBD is disconnected\n")); +} + void start_tracing (void) @@ -2020,6 +2046,8 @@ disconnect_tracing (int from_tty) disconnected-tracing. */ if (current_trace_status ()->running && from_tty) { + process_tracepoint_on_disconnect (); + if (current_trace_status ()->disconnected_tracing) { if (!query (_("Trace is running and will " -- 1.7.0.4