* dwarf2read.c (dwarf2_add_field): Correctly scale all byte
[deliverable/binutils-gdb.git] / gdb / gdb-events.c
index ff76640ad4fe0041afd60b8a72f94edec1a8121d..eec2c750f0bf0568d31601f82a58cd2c91230c6f 100644 (file)
@@ -1,5 +1,7 @@
 /* User Interface Events.
 /* User Interface Events.
-   Copyright 1999, 2000 Free Software Foundation, Inc.
+
+   Copyright (C) 1999, 2001, 2002, 2004, 2005, 2007
+   Free Software Foundation, Inc.
 
    Contributed by Cygnus Solutions.
 
 
    Contributed by Cygnus Solutions.
 
@@ -7,7 +9,7 @@
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
@@ -16,8 +18,7 @@
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* Work in progress */
 
 
 /* Work in progress */
 
    If editing this file, please also run gdb-events.sh and merge any
    changes into that script. Conversely, when making sweeping changes
    to this file, modifying gdb-events.sh and using its output may
    If editing this file, please also run gdb-events.sh and merge any
    changes into that script. Conversely, when making sweeping changes
    to this file, modifying gdb-events.sh and using its output may
-   prove easier. */
+   prove easier.  */
 
 
 #include "defs.h"
 #include "gdb-events.h"
 #include "gdbcmd.h"
 
 
 
 #include "defs.h"
 #include "gdb-events.h"
 #include "gdbcmd.h"
 
-#undef XMALLOC
-#define XMALLOC(TYPE) ((TYPE*) xmalloc (sizeof (TYPE)))
-
-#if WITH_GDB_EVENTS
 static struct gdb_events null_event_hooks;
 static struct gdb_events queue_event_hooks;
 static struct gdb_events *current_event_hooks = &null_event_hooks;
 static struct gdb_events null_event_hooks;
 static struct gdb_events queue_event_hooks;
 static struct gdb_events *current_event_hooks = &null_event_hooks;
-#endif
 
 int gdb_events_debug;
 
 int gdb_events_debug;
+static void
+show_gdb_events_debug (struct ui_file *file, int from_tty,
+                      struct cmd_list_element *c, const char *value)
+{
+  fprintf_filtered (file, _("Event debugging is %s.\n"), value);
+}
 
 
-#if WITH_GDB_EVENTS
 
 void
 breakpoint_create_event (int b)
 
 void
 breakpoint_create_event (int b)
@@ -81,11 +82,48 @@ breakpoint_modify_event (int b)
   current_event_hooks->breakpoint_modify (b);
 }
 
   current_event_hooks->breakpoint_modify (b);
 }
 
-#endif
+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);
+}
+
+void
+architecture_changed_event (void)
+{
+  if (gdb_events_debug)
+    fprintf_unfiltered (gdb_stdlog, "architecture_changed_event\n");
+  if (!current_event_hooks->architecture_changed)
+    return;
+  current_event_hooks->architecture_changed ();
+}
 
 
-#if WITH_GDB_EVENTS
 struct gdb_events *
 struct gdb_events *
-set_gdb_event_hooks (struct gdb_events *vector)
+deprecated_set_gdb_event_hooks (struct gdb_events *vector)
 {
   struct gdb_events *old_events = current_event_hooks;
   if (vector == NULL)
 {
   struct gdb_events *old_events = current_event_hooks;
   if (vector == NULL)
@@ -94,13 +132,22 @@ set_gdb_event_hooks (struct gdb_events *vector)
     current_event_hooks = vector;
   return old_events;
 }
     current_event_hooks = vector;
   return old_events;
 }
-#endif
+
+void
+clear_gdb_event_hooks (void)
+{
+  deprecated_set_gdb_event_hooks (&null_event_hooks);
+}
 
 enum gdb_event
 {
   breakpoint_create,
   breakpoint_delete,
   breakpoint_modify,
 
 enum gdb_event
 {
   breakpoint_create,
   breakpoint_delete,
   breakpoint_modify,
+  tracepoint_create,
+  tracepoint_delete,
+  tracepoint_modify,
+  architecture_changed,
   nr_gdb_events
 };
 
   nr_gdb_events
 };
 
@@ -119,6 +166,21 @@ struct breakpoint_modify
     int b;
   };
 
     int b;
   };
 
+struct tracepoint_create
+  {
+    int number;
+  };
+
+struct tracepoint_delete
+  {
+    int number;
+  };
+
+struct tracepoint_modify
+  {
+    int number;
+  };
+
 struct event
   {
     enum gdb_event type;
 struct event
   {
     enum gdb_event type;
@@ -128,6 +190,9 @@ struct event
        struct breakpoint_create breakpoint_create;
        struct breakpoint_delete breakpoint_delete;
        struct breakpoint_modify breakpoint_modify;
        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;
   };
       }
     data;
   };
@@ -171,6 +236,41 @@ queue_breakpoint_modify (int b)
   append (event);
 }
 
   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);
+}
+
+static void
+queue_architecture_changed (void)
+{
+  struct event *event = XMALLOC (struct event);
+  event->type = architecture_changed;
+  append (event);
+}
+
 void
 gdb_events_deliver (struct gdb_events *vector)
 {
 void
 gdb_events_deliver (struct gdb_events *vector)
 {
@@ -204,6 +304,21 @@ gdb_events_deliver (struct gdb_events *vector)
          vector->breakpoint_modify
            (event->data.breakpoint_modify.b);
          break;
          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;
+       case architecture_changed:
+         vector->architecture_changed ();
+         break;
        }
       delivering_events = event->next;
       xfree (event);
        }
       delivering_events = event->next;
       xfree (event);
@@ -215,23 +330,20 @@ void
 _initialize_gdb_events (void)
 {
   struct cmd_list_element *c;
 _initialize_gdb_events (void)
 {
   struct cmd_list_element *c;
-#if WITH_GDB_EVENTS
   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.breakpoint_create = queue_breakpoint_create;
   queue_event_hooks.breakpoint_delete = queue_breakpoint_delete;
   queue_event_hooks.breakpoint_modify = queue_breakpoint_modify;
-#endif
-
-  c = add_set_cmd ("eventdebug", class_maintenance, var_zinteger,
-                  (char *) (&gdb_events_debug), "Set event debugging.\n\
-When non-zero, event/notify debugging is enabled.", &setlist);
-  deprecate_cmd (c, "set debug event");
-  deprecate_cmd (add_show_from_set (c, &showlist), "show debug event");
-
-  add_show_from_set (add_set_cmd ("event",
-                                 class_maintenance,
-                                 var_zinteger,
-                                 (char *) (&gdb_events_debug),
-                                 "Set event debugging.\n\
-When non-zero, event/notify debugging is enabled.", &setdebuglist),
-                    &showdebuglist);
+  queue_event_hooks.tracepoint_create = queue_tracepoint_create;
+  queue_event_hooks.tracepoint_delete = queue_tracepoint_delete;
+  queue_event_hooks.tracepoint_modify = queue_tracepoint_modify;
+  queue_event_hooks.architecture_changed = queue_architecture_changed;
+
+  add_setshow_zinteger_cmd ("event", class_maintenance,
+                           &gdb_events_debug, _("\
+Set event debugging."), _("\
+Show event debugging."), _("\
+When non-zero, event/notify debugging is enabled."),
+                           NULL,
+                           show_gdb_events_debug,
+                           &setdebuglist, &showdebuglist);
 }
 }
This page took 0.026992 seconds and 4 git commands to generate.