mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-10-15 20:05:46 +08:00
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.
This commit is contained in:
@ -1,3 +1,22 @@
|
|||||||
|
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.
|
||||||
|
|
||||||
Wed Nov 4 12:41:42 1998 Jim Ingham <jingham@cygnus.com>
|
Wed Nov 4 12:41:42 1998 Jim Ingham <jingham@cygnus.com>
|
||||||
|
|
||||||
* gdbtk-cmds.c (gdb_set_bp_addr): Pass the type, enable & thread
|
* gdbtk-cmds.c (gdb_set_bp_addr): Pass the type, enable & thread
|
||||||
|
@ -152,6 +152,11 @@ extern struct breakpoint *set_raw_breakpoint (struct symtab_and_line sal);
|
|||||||
extern void set_breakpoint_count (int);
|
extern void set_breakpoint_count (int);
|
||||||
extern int breakpoint_count;
|
extern int breakpoint_count;
|
||||||
|
|
||||||
|
/* This variable determines where memory used for disassembly is read from.
|
||||||
|
* See note in gdbtk.h for details.
|
||||||
|
*/
|
||||||
|
int disassemble_from_exec = -1;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Declarations for routines exported from this file
|
* Declarations for routines exported from this file
|
||||||
@ -330,6 +335,10 @@ Gdbtk_Init (interp)
|
|||||||
Tcl_LinkVar (interp, "gdb_context_id",
|
Tcl_LinkVar (interp, "gdb_context_id",
|
||||||
(char *) &gdb_context,
|
(char *) &gdb_context,
|
||||||
TCL_LINK_INT | TCL_LINK_READ_ONLY);
|
TCL_LINK_INT | TCL_LINK_READ_ONLY);
|
||||||
|
|
||||||
|
/* Determine where to disassemble from */
|
||||||
|
Tcl_LinkVar (gdbtk_interp, "disassemble-from-exec", (char *) &disassemble_from_exec,
|
||||||
|
TCL_LINK_INT);
|
||||||
|
|
||||||
Tcl_PkgProvide(interp, "Gdbtk", GDBTK_VERSION);
|
Tcl_PkgProvide(interp, "Gdbtk", GDBTK_VERSION);
|
||||||
return TCL_OK;
|
return TCL_OK;
|
||||||
@ -666,13 +675,23 @@ gdb_cmd (clientData, interp, objc, objv)
|
|||||||
int objc;
|
int objc;
|
||||||
Tcl_Obj *CONST objv[];
|
Tcl_Obj *CONST objv[];
|
||||||
{
|
{
|
||||||
|
int from_tty = 0;
|
||||||
|
|
||||||
if (objc < 2)
|
if (objc < 2)
|
||||||
{
|
{
|
||||||
Tcl_SetStringObj (result_ptr->obj_ptr, "wrong # args", -1);
|
Tcl_SetStringObj (result_ptr->obj_ptr, "wrong # args", -1);
|
||||||
return TCL_ERROR;
|
return TCL_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (objc == 3)
|
||||||
|
{
|
||||||
|
if (Tcl_GetBooleanFromObj (NULL, objv[2], &from_tty) != TCL_OK) {
|
||||||
|
Tcl_SetStringObj (result_ptr->obj_ptr, "from_tty must be a boolean.",
|
||||||
|
-1);
|
||||||
|
return TCL_ERROR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (running_now || load_in_progress)
|
if (running_now || load_in_progress)
|
||||||
return TCL_OK;
|
return TCL_OK;
|
||||||
|
|
||||||
@ -688,7 +707,7 @@ gdb_cmd (clientData, interp, objc, objv)
|
|||||||
load_in_progress = 1;
|
load_in_progress = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
execute_command (Tcl_GetStringFromObj (objv[1], NULL), 1);
|
execute_command (Tcl_GetStringFromObj (objv[1], NULL), from_tty);
|
||||||
|
|
||||||
if (load_in_progress)
|
if (load_in_progress)
|
||||||
{
|
{
|
||||||
|
@ -85,6 +85,7 @@ static void gdbtk_create_tracepoint PARAMS ((struct tracepoint *));
|
|||||||
static void gdbtk_delete_tracepoint PARAMS ((struct tracepoint *));
|
static void gdbtk_delete_tracepoint PARAMS ((struct tracepoint *));
|
||||||
static void gdbtk_modify_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_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_create_breakpoint PARAMS ((struct breakpoint *));
|
||||||
static void gdbtk_delete_breakpoint PARAMS ((struct breakpoint *));
|
static void gdbtk_delete_breakpoint PARAMS ((struct breakpoint *));
|
||||||
static void gdbtk_modify_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;
|
delete_tracepoint_hook = gdbtk_delete_tracepoint;
|
||||||
modify_tracepoint_hook = gdbtk_modify_tracepoint;
|
modify_tracepoint_hook = gdbtk_modify_tracepoint;
|
||||||
trace_find_hook = gdbtk_trace_find;
|
trace_find_hook = gdbtk_trace_find;
|
||||||
|
trace_start_stop_hook = gdbtk_trace_start_stop;
|
||||||
pc_changed_hook = pc_changed;
|
pc_changed_hook = pc_changed;
|
||||||
selected_frame_level_changed_hook = gdbtk_selected_frame_changed;
|
selected_frame_level_changed_hook = gdbtk_selected_frame_changed;
|
||||||
context_hook = gdbtk_context_change;
|
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)
|
if (cmdblk->class == class_run || cmdblk->class == class_trace)
|
||||||
{
|
{
|
||||||
|
|
||||||
/* HACK! HACK! This is to get the gui to update the tstart/tstop
|
running_now = 1;
|
||||||
button only incase of tstart/tstop commands issued from the console
|
if (!No_Update)
|
||||||
We don't want to update the src window, so we need to have specific
|
Tcl_Eval (gdbtk_interp, "gdbtk_tcl_busy");
|
||||||
procedures to do tstart and tstop
|
(*cmdblk->function.cfunc)(arg, from_tty);
|
||||||
Unfortunately this will not display errors from tstart or tstop in the
|
running_now = 0;
|
||||||
console window itself, but as dialogs.*/
|
if (!No_Update)
|
||||||
|
Tcl_Eval (gdbtk_interp, "gdbtk_tcl_idle");
|
||||||
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");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
(*cmdblk->function.cfunc)(arg, from_tty);
|
(*cmdblk->function.cfunc)(arg, from_tty);
|
||||||
@ -712,14 +692,49 @@ gdbtk_trace_find (arg, from_tty)
|
|||||||
{
|
{
|
||||||
Tcl_Obj *cmdObj;
|
Tcl_Obj *cmdObj;
|
||||||
|
|
||||||
Tcl_GlobalEval (gdbtk_interp, "debug {***In gdbtk_trace_find...}");
|
if (from_tty) {
|
||||||
cmdObj = Tcl_NewListObj (0, NULL);
|
Tcl_GlobalEval (gdbtk_interp, "debug {*** In gdbtk_trace_find, from_tty is true}");
|
||||||
Tcl_ListObjAppendElement (gdbtk_interp, cmdObj,
|
cmdObj = Tcl_NewListObj (0, NULL);
|
||||||
Tcl_NewStringObj ("gdbtk_tcl_trace_find_hook", -1));
|
Tcl_ListObjAppendElement (gdbtk_interp, cmdObj,
|
||||||
Tcl_ListObjAppendElement (gdbtk_interp, cmdObj, Tcl_NewStringObj (arg, -1));
|
Tcl_NewStringObj ("gdbtk_tcl_trace_find_hook", -1));
|
||||||
Tcl_ListObjAppendElement (gdbtk_interp, cmdObj, Tcl_NewIntObj(from_tty));
|
Tcl_ListObjAppendElement (gdbtk_interp, cmdObj, Tcl_NewStringObj (arg, -1));
|
||||||
Tcl_GlobalEvalObj (gdbtk_interp, cmdObj);
|
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
|
static void
|
||||||
|
@ -110,11 +110,6 @@ int gdb_context = 0;
|
|||||||
*/
|
*/
|
||||||
int running_now;
|
int running_now;
|
||||||
|
|
||||||
/* This variable determines where memory used for disassembly is read from.
|
|
||||||
* See note in gdbtk.h for details.
|
|
||||||
*/
|
|
||||||
int disassemble_from_exec = -1;
|
|
||||||
|
|
||||||
/* This variable holds the name of a Tcl file which should be sourced by the
|
/* This variable holds the name of a Tcl file which should be sourced by the
|
||||||
interpreter when it goes idle at startup. Used with the testsuite. */
|
interpreter when it goes idle at startup. Used with the testsuite. */
|
||||||
static char *gdbtk_source_filename = NULL;
|
static char *gdbtk_source_filename = NULL;
|
||||||
@ -491,9 +486,6 @@ gdbtk_init ( argv0 )
|
|||||||
add_com ("tk", class_obscure, tk_command,
|
add_com ("tk", class_obscure, tk_command,
|
||||||
"Send a command directly into tk.");
|
"Send a command directly into tk.");
|
||||||
|
|
||||||
Tcl_LinkVar (gdbtk_interp, "disassemble-from-exec", (char *) &disassemble_from_exec,
|
|
||||||
TCL_LINK_INT);
|
|
||||||
|
|
||||||
/* find the gdb tcl library and source main.tcl */
|
/* find the gdb tcl library and source main.tcl */
|
||||||
|
|
||||||
gdbtk_lib = getenv ("GDBTK_LIBRARY");
|
gdbtk_lib = getenv ("GDBTK_LIBRARY");
|
||||||
|
@ -1748,6 +1748,9 @@ trace_start_command (args, from_tty)
|
|||||||
set_tracepoint_num (-1);
|
set_tracepoint_num (-1);
|
||||||
set_traceframe_context(-1);
|
set_traceframe_context(-1);
|
||||||
trace_running_p = 1;
|
trace_running_p = 1;
|
||||||
|
if (trace_start_stop_hook)
|
||||||
|
trace_start_stop_hook(1, from_tty);
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
error ("Trace can only be run on remote targets.");
|
error ("Trace can only be run on remote targets.");
|
||||||
@ -1766,6 +1769,8 @@ trace_stop_command (args, from_tty)
|
|||||||
if (strcmp (target_buf, "OK"))
|
if (strcmp (target_buf, "OK"))
|
||||||
error ("Bogus reply from target: %s", target_buf);
|
error ("Bogus reply from target: %s", target_buf);
|
||||||
trace_running_p = 0;
|
trace_running_p = 0;
|
||||||
|
if (trace_start_stop_hook)
|
||||||
|
trace_start_stop_hook(0, from_tty);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
error ("Trace can only be run on remote targets.");
|
error ("Trace can only be run on remote targets.");
|
||||||
|
@ -115,6 +115,7 @@ void (*create_tracepoint_hook) PARAMS ((struct tracepoint *));
|
|||||||
void (*delete_tracepoint_hook) PARAMS ((struct tracepoint *));
|
void (*delete_tracepoint_hook) PARAMS ((struct tracepoint *));
|
||||||
void (*modify_tracepoint_hook) PARAMS ((struct tracepoint *));
|
void (*modify_tracepoint_hook) PARAMS ((struct tracepoint *));
|
||||||
void (*trace_find_hook) PARAMS ((char *arg, int from_tty));
|
void (*trace_find_hook) PARAMS ((char *arg, int from_tty));
|
||||||
|
void (*trace_start_stop_hook) PARAMS ((int start, int from_tty));
|
||||||
|
|
||||||
struct tracepoint *get_tracepoint_by_number PARAMS ((char **));
|
struct tracepoint *get_tracepoint_by_number PARAMS ((char **));
|
||||||
int get_traceframe_number PARAMS ((void));
|
int get_traceframe_number PARAMS ((void));
|
||||||
|
Reference in New Issue
Block a user