aboutsummaryrefslogtreecommitdiff
path: root/gdb/gdbtk-hooks.c
diff options
context:
space:
mode:
authorJim Ingham <jingham@apple.com>1998-11-13 00:31:39 +0000
committerJim Ingham <jingham@apple.com>1998-11-13 00:31:39 +0000
commit2aae63977c4c7e40e634cea18c83157a2a0aae7d (patch)
treedf2024ae51cd07b9cd9251b77d1ad139404b99b3 /gdb/gdbtk-hooks.c
parente9928289d385ad46df6f97d5a997489041493e42 (diff)
downloadgdb-2aae63977c4c7e40e634cea18c83157a2a0aae7d.zip
gdb-2aae63977c4c7e40e634cea18c83157a2a0aae7d.tar.gz
gdb-2aae63977c4c7e40e634cea18c83157a2a0aae7d.tar.bz2
Thu Nov 12 15:20:15 1998 Jim Ingham <jingham@cygnus.com>
* console.tcl (complete): I added the ability to pass from_tty from gdb_cmd to the underlying commands. Pass 1 when the command is invoked from the console. * interface.tcl (gdbtk_tcl_tstart, gdbtk_tcl_tstop): Run the src window's do_tstop method rather than manipulating the widgets by hand. * src.tcl (build_win): Redo the packing so that the function combobox doesn't push all the other combo-boxes off the screen if it has a very long function name in it. * srcbar.tcl (do_tstop): Added a mode that just changes the GUI, which can be called from console hooks. * srctextwin.tcl: Fixed some bugs I introduced in setting breakpoints in the assembly & mixed mode windows. Dropped the notion of joint breakpoint images for lines that have breakpoints of two separate types. Too fragile. Also added the "dont_change_appearance" flag, used in the continue_to_here method to tell the GUI not to reflect the temporary disabling of all the breakpoints. * toolbar.tcl (insert_buttons): Added a little more error-checking. Thu Nov 12 15:20:15 1998 Jim Ingham <jingham@cygnus.com> * gdbtk-cmds.c (gdb_cmd): Added an optional second argument to the gdb_cmd, which is from_tty. This is passed to the gdb command parser. It is 0 by default, and the console window passes 1. * gdbtk-cmds.c: moved disassemble_from_exec from gdbtk.c to gdbtk-cmds.c with all the other link-var'ed variables * gdbtk-hooks.c (gdbtk_trace_find): Only run the hook functions if we are called from_tty. * gdbtk-hooks.c (gdbtk_trace_start_stop): Set the trace buttons from a trace_start_command callback rather than doing it as a special case in gdb_cmd. * tracepoint.c (tstart_command, tstop_command): Add call to trace_start_stop_hook here.
Diffstat (limited to 'gdb/gdbtk-hooks.c')
-rw-r--r--gdb/gdbtk-hooks.c87
1 files changed, 51 insertions, 36 deletions
diff --git a/gdb/gdbtk-hooks.c b/gdb/gdbtk-hooks.c
index 09f9ca0..833edef 100644
--- a/gdb/gdbtk-hooks.c
+++ b/gdb/gdbtk-hooks.c
@@ -85,6 +85,7 @@ 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 *));
@@ -162,7 +163,7 @@ gdbtk_add_hooks(void)
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;
@@ -464,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);
@@ -712,14 +692,49 @@ gdbtk_trace_find (arg, from_tty)
{
Tcl_Obj *cmdObj;
- Tcl_GlobalEval (gdbtk_interp, "debug {***In gdbtk_trace_find...}");
- 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);
+ 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