Replacing a bogus file with a semi-bogus one (sharing through devo).
[deliverable/binutils-gdb.git] / gdb / gdbtk-hooks.c
index 4b4a04e59b18a64f2fda3d70ab4c6d2471bb14cb..54eacb6632621f05a8fd72b1e5e6972798fed646 100644 (file)
@@ -77,13 +77,15 @@ extern int  (*ui_load_progress_hook) PARAMS ((char *, unsigned long));
 extern void (*pre_add_symbol_hook) PARAMS ((char *));
 extern void (*post_add_symbol_hook) PARAMS ((void));
 extern void (*selected_frame_level_changed_hook) PARAMS ((int));
-#ifdef __CYGWIN32__
+#ifdef __CYGWIN__
 extern void (*ui_loop_hook) PARAMS ((int));
 #endif
 
 static void   gdbtk_create_tracepoint PARAMS ((struct tracepoint *));
 static void   gdbtk_delete_tracepoint PARAMS ((struct tracepoint *));
 static void   gdbtk_modify_tracepoint PARAMS ((struct tracepoint *));
+static void   gdbtk_trace_find  PARAMS ((char *arg, int from_tty));
+static void   gdbtk_trace_start_stop PARAMS ((int, int));
 static void   gdbtk_create_breakpoint PARAMS ((struct breakpoint *));
 static void   gdbtk_delete_breakpoint PARAMS ((struct breakpoint *));
 static void   gdbtk_modify_breakpoint PARAMS ((struct breakpoint *));
@@ -149,7 +151,7 @@ gdbtk_add_hooks(void)
   target_wait_hook       = gdbtk_wait;
   ui_load_progress_hook  = gdbtk_load_hash;
 
-#ifdef __CYGWIN32__
+#ifdef __CYGWIN__
   ui_loop_hook = x_event;
 #endif
   pre_add_symbol_hook    = gdbtk_pre_add_symbol;
@@ -160,7 +162,8 @@ gdbtk_add_hooks(void)
   create_tracepoint_hook = gdbtk_create_tracepoint;
   delete_tracepoint_hook = gdbtk_delete_tracepoint;
   modify_tracepoint_hook = gdbtk_modify_tracepoint;
-
+  trace_find_hook        = gdbtk_trace_find;
+  trace_start_stop_hook  = gdbtk_trace_start_stop;
   pc_changed_hook = pc_changed;
   selected_frame_level_changed_hook = gdbtk_selected_frame_changed;
   context_hook = gdbtk_context_change;
@@ -366,7 +369,7 @@ x_event (signo)
 
   in_x_event = 1;
 
-#ifdef __CYGWIN32__
+#ifdef __CYGWIN__
   if (signo == -2)
     gdbtk_stop_timer ();
 #endif
@@ -462,34 +465,13 @@ gdbtk_call_command (cmdblk, arg, from_tty)
   if (cmdblk->class == class_run || cmdblk->class == class_trace)
     {
 
-      /* HACK! HACK! This is to get the gui to update the tstart/tstop
-         button only incase of tstart/tstop commands issued from the console
-         We don't want to update the src window, so we need to have specific
-         procedures to do tstart and tstop
-         Unfortunately this will not display errors from tstart or tstop in the 
-         console window itself, but as dialogs.*/
-
-      if (!strcmp(cmdblk->name, "tstart") && !No_Update)
-        {
-          Tcl_Eval (gdbtk_interp, "gdbtk_tcl_tstart"); 
-          (*cmdblk->function.cfunc)(arg, from_tty);
-        }
-      else if (!strcmp(cmdblk->name, "tstop") && !No_Update) 
-        {
-          Tcl_Eval (gdbtk_interp, "gdbtk_tcl_tstop"); 
-          (*cmdblk->function.cfunc)(arg, from_tty);
-        }
-      /* end of hack */
-      else 
-        {
-          running_now = 1;
-          if (!No_Update)
-            Tcl_Eval (gdbtk_interp, "gdbtk_tcl_busy");
-          (*cmdblk->function.cfunc)(arg, from_tty);
-          running_now = 0;
-          if (!No_Update)
-            Tcl_Eval (gdbtk_interp, "gdbtk_tcl_idle");
-        }
+      running_now = 1;
+      if (!No_Update)
+       Tcl_Eval (gdbtk_interp, "gdbtk_tcl_busy");
+      (*cmdblk->function.cfunc)(arg, from_tty);
+      running_now = 0;
+      if (!No_Update)
+       Tcl_Eval (gdbtk_interp, "gdbtk_tcl_idle");
     }
   else
     (*cmdblk->function.cfunc)(arg, from_tty);
@@ -548,8 +530,9 @@ breakpoint_notify(b, action)
   if (filename == NULL)
     filename = "";
 
-  sprintf (buf, "gdbtk_tcl_breakpoint %s %d 0x%lx %d {%s}", action, b->number, 
-          (long)b->address, b->line_number, filename);
+  sprintf (buf, "gdbtk_tcl_breakpoint %s %d 0x%lx %d {%s} {%s} %d %d",
+          action, b->number, (long)b->address, b->line_number, filename,
+          bpdisp[b->disposition], b->enable,  b->thread);
 
   v = Tcl_Eval (gdbtk_interp, buf);
 
@@ -692,6 +675,68 @@ tracepoint_notify(tp, action)
     }
 }
 
+/*
+ * gdbtk_trace_find
+ *
+ * This is run by the trace_find_command.  arg is the argument that was passed
+ * to that command, from_tty is 1 if the command was run from a tty, 0 if it
+ * was run from a script.  It runs gdbtk_tcl_tfind_hook passing on these two
+ * arguments.
+ *
+ */
+
+static void
+gdbtk_trace_find (arg, from_tty)
+     char *arg;
+     int from_tty;
+{
+  Tcl_Obj *cmdObj;
+  
+  if (from_tty) {
+    Tcl_GlobalEval (gdbtk_interp, "debug {*** In gdbtk_trace_find, from_tty is true}");
+    cmdObj = Tcl_NewListObj (0, NULL);
+    Tcl_ListObjAppendElement (gdbtk_interp, cmdObj,
+                             Tcl_NewStringObj ("gdbtk_tcl_trace_find_hook", -1));
+    Tcl_ListObjAppendElement (gdbtk_interp, cmdObj, Tcl_NewStringObj (arg, -1));
+    Tcl_ListObjAppendElement (gdbtk_interp, cmdObj, Tcl_NewIntObj(from_tty));
+    Tcl_GlobalEvalObj (gdbtk_interp, cmdObj);
+  } else {
+    Tcl_GlobalEval (gdbtk_interp, "debug {*** In gdbtk_trace_find, from_tty is false}");
+  }
+}
+
+/*
+ * gdbtk_trace_start_stop
+ *
+ * This is run by the trace_start_command and trace_stop_command.
+ * The START variable determines which, 1 meaning trace_start was run,
+ * 0 meaning trace_stop was run.
+ *
+ */
+
+static void
+gdbtk_trace_start_stop (start, from_tty)
+     int start;
+     int from_tty;
+{
+  Tcl_Obj *cmdObj;
+  
+  if (from_tty) {
+    Tcl_GlobalEval (gdbtk_interp, "debug {*** In gdbtk_trace_start, from_tty is true}");
+    cmdObj = Tcl_NewListObj (0, NULL);
+    if (start)
+      Tcl_ListObjAppendElement (gdbtk_interp, cmdObj,
+                               Tcl_NewStringObj ("gdbtk_tcl_tstart", -1));
+    else
+      Tcl_ListObjAppendElement (gdbtk_interp, cmdObj,
+                               Tcl_NewStringObj ("gdbtk_tcl_tstop", -1));
+    Tcl_GlobalEvalObj (gdbtk_interp, cmdObj);
+  } else {
+    Tcl_GlobalEval (gdbtk_interp, "debug {*** In gdbtk_trace_startd, from_tty is false}");
+  }
+
+}
+
 static void
 gdbtk_selected_frame_changed (level)
      int level;
This page took 0.024795 seconds and 4 git commands to generate.