gdb/
* breakpoint.c (create_breakpoint): Produce query message according to breakpoint's type. Allocate tracepoint per correct type. Don't check SALs for pending fast tracepoints. * tracepoint.c (process_tracepoint_on_disconnect): New. (disconnect_tracing): Call process_tracepoint_on_disconnect. gdb/doc/ * gdb.texinfo (Create and Delete Tracepoints): Mention pending tracepoint. gdb/testsuite/ * gdb.trace/pending.exp: New. * gdb.trace/pending.c: New. * gdb.trace/pendshr1.c: New. * gdb.trace/pendshr2.c: New. * gdb.trace/change-loc.exp (tracepoint_change_loc_1): Check one tracepoint location becomes pending. (tracepoint_change_loc_2): New.
This commit is contained in:
parent
3ea46bff73
commit
bfccc43c12
11 changed files with 875 additions and 18 deletions
|
@ -1642,6 +1642,48 @@ 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)
|
||||
{
|
||||
has_pending_p = 1;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
struct bp_location *loc1;
|
||||
|
||||
for (loc1 = b->loc; loc1; loc1 = loc1->next)
|
||||
{
|
||||
if (loc1->shlib_disabled)
|
||||
{
|
||||
has_pending_p = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (has_pending_p)
|
||||
break;
|
||||
}
|
||||
}
|
||||
VEC_free (breakpoint_p, tp_vec);
|
||||
|
||||
if (has_pending_p)
|
||||
warning (_("Pending tracepoints will not be resolved while"
|
||||
" GDB is disconnected\n"));
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
start_tracing (void)
|
||||
|
@ -2020,6 +2062,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 "
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue