Sun Aug 30 00:49:18 1998 Martin M. Hunt <hunt@cygnus.com>

* gdbtk-cmds.c (Gdbtk_Init): Link C variable gdb_context
	with tcl variable gdb_context_id.

	* gdbtk-hooks.c (gdbtk_context_change): Implement new hook called
	context_hook.  Called when threads change.

	* gdbtk.c: Initialize gdb_context.

	* gdbtk.h: Declare gdb_context.

	* infrun (wait_for_inferior): Call context_hook.

	* thread.c (thread_command): Call context_hook.

	* defs.h: Declare context_hook.
This commit is contained in:
Martin Hunt 1998-08-30 07:53:29 +00:00
parent d405c4a1ae
commit 4ff5d55a08
6 changed files with 44 additions and 6 deletions

View File

@ -1,3 +1,21 @@
Sun Aug 30 00:49:18 1998 Martin M. Hunt <hunt@cygnus.com>
* gdbtk-cmds.c (Gdbtk_Init): Link C variable gdb_context
with tcl variable gdb_context_id.
* gdbtk-hooks.c (gdbtk_context_change): Implement new hook called
context_hook. Called when threads change.
* gdbtk.c: Initialize gdb_context.
* gdbtk.h: Declare gdb_context.
* infrun (wait_for_inferior): Call context_hook.
* thread.c (thread_command): Call context_hook.
* defs.h: Declare context_hook.
Fri Aug 28 12:14:49 1998 Martin M. Hunt <hunt@cygnus.com>
* gdbtk-cmds.c (gdb_loadfile): Open the file after doing

View File

@ -304,10 +304,15 @@ Gdbtk_Init (interp)
call_wrapper, gdb_get_trace_frame_num, NULL);
Tcl_CreateObjCommand (interp, "gdb_stack", call_wrapper, gdb_stack, NULL);
Tcl_LinkVar (interp, "gdb_selected_frame_level",
Tcl_LinkVar (interp, "gdb_selected_frame_level",
(char *) &selected_frame_level,
TCL_LINK_INT | TCL_LINK_READ_ONLY);
/* gdb_context is used for debugging multiple threads or tasks */
Tcl_LinkVar (interp, "gdb_context_id",
(char *) &gdb_context,
TCL_LINK_INT | TCL_LINK_READ_ONLY);
Tcl_PkgProvide(interp, "Gdbtk", GDBTK_VERSION);
return TCL_OK;
}

View File

@ -110,6 +110,8 @@ static void gdbtk_post_add_symbol PARAMS ((void));
static void pc_changed PARAMS ((void));
static void tracepoint_notify PARAMS ((struct tracepoint *, const char *));
static void gdbtk_selected_frame_changed PARAMS ((int));
static void gdbtk_context_change PARAMS ((int));
void (*context_hook) PARAMS ((int));
/*
* gdbtk_fputs can't be static, because we need to call it in gdbtk.c.
@ -157,7 +159,7 @@ gdbtk_add_hooks(void)
modify_tracepoint_hook = gdbtk_modify_tracepoint;
pc_changed_hook = pc_changed;
selected_frame_level_changed_hook = gdbtk_selected_frame_changed;
context_hook = gdbtk_context_change;
}
/* These control where to put the gdb output which is created by
@ -690,3 +692,12 @@ gdbtk_selected_frame_changed (level)
{
Tcl_UpdateLinkedVar (gdbtk_interp, "gdb_selected_frame_level");
}
/* Called when the current thread changes. */
/* gdb_context is linked to the tcl variable "gdb_context_id" */
static void
gdbtk_context_change (num)
int num;
{
gdb_context = num;
}

View File

@ -102,21 +102,21 @@ Tcl_Interp *gdbtk_interp = NULL;
static int gdbtk_timer_going = 0;
/* linked variable used to tell tcl what the current thread is */
int gdb_context = 0;
/* This variable is true when the inferior is running. See note in
* gdbtk.h for details.
*/
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
interpreter when it goes idle at startup. Used with the testsuite. */
static char *gdbtk_source_filename = NULL;
#ifndef _WIN32

View File

@ -120,6 +120,9 @@ typedef struct gdbtk_result {
extern gdbtk_result *result_ptr;
/* GDB context identifier */
extern int gdb_context;
/*
* These functions are used in all the modules of Gdbtk.
*

View File

@ -518,7 +518,8 @@ see the IDs of currently known threads.", num);
error ("Thread ID %d has terminated.\n", num);
switch_to_thread (tp->pid);
if (context_hook)
context_hook (num);
printf_filtered ("[Switching to %s]\n", target_pid_to_str (inferior_pid));
print_stack_frame (selected_frame, selected_frame_level, 1);
}