diff options
Diffstat (limited to 'gdb/gdb-events.c')
-rw-r--r-- | gdb/gdb-events.c | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/gdb/gdb-events.c b/gdb/gdb-events.c index 77856bb..d118108 100644 --- a/gdb/gdb-events.c +++ b/gdb/gdb-events.c @@ -81,6 +81,36 @@ breakpoint_modify_event (int b) current_event_hooks->breakpoint_modify (b); } +void +tracepoint_create_event (int number) +{ + if (gdb_events_debug) + fprintf_unfiltered (gdb_stdlog, "tracepoint_create_event\n"); + if (!current_event_hooks->tracepoint_create) + return; + current_event_hooks->tracepoint_create (number); +} + +void +tracepoint_delete_event (int number) +{ + if (gdb_events_debug) + fprintf_unfiltered (gdb_stdlog, "tracepoint_delete_event\n"); + if (!current_event_hooks->tracepoint_delete) + return; + current_event_hooks->tracepoint_delete (number); +} + +void +tracepoint_modify_event (int number) +{ + if (gdb_events_debug) + fprintf_unfiltered (gdb_stdlog, "tracepoint_modify_event\n"); + if (!current_event_hooks->tracepoint_modify) + return; + current_event_hooks->tracepoint_modify (number); +} + #endif #if WITH_GDB_EVENTS @@ -101,6 +131,9 @@ enum gdb_event breakpoint_create, breakpoint_delete, breakpoint_modify, + tracepoint_create, + tracepoint_delete, + tracepoint_modify, nr_gdb_events }; @@ -119,6 +152,21 @@ struct breakpoint_modify int b; }; +struct tracepoint_create + { + int number; + }; + +struct tracepoint_delete + { + int number; + }; + +struct tracepoint_modify + { + int number; + }; + struct event { enum gdb_event type; @@ -128,6 +176,9 @@ struct event struct breakpoint_create breakpoint_create; struct breakpoint_delete breakpoint_delete; struct breakpoint_modify breakpoint_modify; + struct tracepoint_create tracepoint_create; + struct tracepoint_delete tracepoint_delete; + struct tracepoint_modify tracepoint_modify; } data; }; @@ -171,6 +222,33 @@ queue_breakpoint_modify (int b) append (event); } +static void +queue_tracepoint_create (int number) +{ + struct event *event = XMALLOC (struct event); + event->type = tracepoint_create; + event->data.tracepoint_create.number = number; + append (event); +} + +static void +queue_tracepoint_delete (int number) +{ + struct event *event = XMALLOC (struct event); + event->type = tracepoint_delete; + event->data.tracepoint_delete.number = number; + append (event); +} + +static void +queue_tracepoint_modify (int number) +{ + struct event *event = XMALLOC (struct event); + event->type = tracepoint_modify; + event->data.tracepoint_modify.number = number; + append (event); +} + void gdb_events_deliver (struct gdb_events *vector) { @@ -204,6 +282,18 @@ gdb_events_deliver (struct gdb_events *vector) vector->breakpoint_modify (event->data.breakpoint_modify.b); break; + case tracepoint_create: + vector->tracepoint_create + (event->data.tracepoint_create.number); + break; + case tracepoint_delete: + vector->tracepoint_delete + (event->data.tracepoint_delete.number); + break; + case tracepoint_modify: + vector->tracepoint_modify + (event->data.tracepoint_modify.number); + break; } delivering_events = event->next; xfree (event); @@ -219,6 +309,9 @@ _initialize_gdb_events (void) queue_event_hooks.breakpoint_create = queue_breakpoint_create; queue_event_hooks.breakpoint_delete = queue_breakpoint_delete; queue_event_hooks.breakpoint_modify = queue_breakpoint_modify; + queue_event_hooks.tracepoint_create = queue_tracepoint_create; + queue_event_hooks.tracepoint_delete = queue_tracepoint_delete; + queue_event_hooks.tracepoint_modify = queue_tracepoint_modify; #endif c = add_set_cmd ("eventdebug", class_maintenance, var_zinteger, |