aboutsummaryrefslogtreecommitdiff
path: root/gdb/gdbtk.h
diff options
context:
space:
mode:
authorJim Ingham <jingham@apple.com>1998-07-01 19:29:14 +0000
committerJim Ingham <jingham@apple.com>1998-07-01 19:29:14 +0000
commitca4e7e143de5b674d54fabf7e03db5483965fd2a (patch)
treea5eff8013530f0b152b3d58dd6ba4c6eae3ceecf /gdb/gdbtk.h
parenta95d955c680c7ae30e11a3b715a2a22287f35f29 (diff)
downloadgdb-ca4e7e143de5b674d54fabf7e03db5483965fd2a.zip
gdb-ca4e7e143de5b674d54fabf7e03db5483965fd2a.tar.gz
gdb-ca4e7e143de5b674d54fabf7e03db5483965fd2a.tar.bz2
Wed Jul 1 11:07:21 1998 Jim Ingham <jingham@cygnus.com>
* main.tcl (gdbtk_preloop): Call gdbtk_idle on spec. If there was an error in loading an executible specified on the command line, then the pre_add_symbol hook would have called gdbtk_busy but the corresponding call to gdbtk_idle would not have occured. Also changed some catch calls so they didn't use "catch {set foo [real_command]}" but rather the more efficient: "catch {real_command} foo" * register.tcl: more catch cleanups * src.tcl: more catch cleanups * stack.tcl: more catch cleanups * target.tcl: more catch cleanups * tdump.tcl: more catch cleanups * variables.tcl: more catch cleanups * watch.tcl: more catch cleanups * gdbtk.c (gdbtk_init): Fixed a bug in the startup code on Windows that caused gdbtk not to find the share directory unless GDBTK_LIBRARY was set. * gdbtk.c: removed all the commands and hooks from this file so now it contains only the startup code. * gdbtk_cmds.c: New file - this contains all the Tcl commands that gdb defines. All the old commands were moved here, the string-based commands were converted to object commands, and the object-based commands were all converted to uniformly use the call_wrapper. A new function, Gdbtk_Init was added to centralize initializing the gdb package. Also added gdbtk as a package into gdbtk_interp. * gdbtk_hooks.c: New file - All the hooks were moved here, and a new function, gdbtk_add_hooks was added to centralize adding all these hook functions. gdbtk_fputs was also modified to handle the new result_ptr structure. See the comments in gdbtk.h for more details. * gdbtk.h: New file - this contains all the defines and globals shared by gdbtk.c, gdbtk_cmds.c & gdbtk_hooks.c * Makefile.in, configure.in & configure: mutatis mutandi for the new files.
Diffstat (limited to 'gdb/gdbtk.h')
-rw-r--r--gdb/gdbtk.h145
1 files changed, 145 insertions, 0 deletions
diff --git a/gdb/gdbtk.h b/gdb/gdbtk.h
new file mode 100644
index 0000000..0b5e59f
--- /dev/null
+++ b/gdb/gdbtk.h
@@ -0,0 +1,145 @@
+/* Tcl/Tk interface routines header file.
+ Copyright 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+
+ Written by Stu Grossman <grossman@cygnus.com> of Cygnus Support.
+
+This file is part of GDB. It contains the public data that is shared between
+the gdbtk startup code and the gdbtk commands.
+
+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
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+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. */
+
+#ifdef WINNT
+#define GDBTK_PATH_SEP ";"
+#else
+#define GDBTK_PATH_SEP ":"
+#endif
+
+/* Some versions (1.3.79, 1.3.81) of Linux don't support SIOCSPGRP the way
+ gdbtk wants to use it... */
+#ifdef __linux__
+#undef SIOCSPGRP
+#endif
+
+/*
+ * These are the version numbers for GDBTK. There is a package require
+ * statement in main.tcl that checks the version. If you make an incompatible
+ * change to the gdb commands, or add any new commands, be sure to bump the
+ * version number both here and in main.tcl. This will save us the trouble of
+ * having a version of gdb find the wrong versions of the Tcl libraries.
+ */
+
+#define GDBTK_MAJOR_VERSION "1"
+#define GDBTK_MINOR_VERSION "0"
+#define GDBTK_VERSION "1.0"
+
+/*
+ * These are variables that are needed in gdbtk commands.
+ */
+
+/* This variable determines where memory used for disassembly is read from.
+ If > 0, then disassembly comes from the exec file rather than the
+ target (which might be at the other end of a slow serial link). If
+ == 0 then disassembly comes from target. If < 0 disassembly is
+ automatically switched to the target if it's an inferior process,
+ otherwise the exec file is used. It is defined in gdbtk.c */
+
+
+extern int disassemble_from_exec;
+
+/* This variable is true when the inferior is running. Although it's
+ possible to disable most input from widgets and thus prevent
+ attempts to do anything while the inferior is running, any commands
+ that get through - even a simple memory read - are Very Bad, and
+ may cause GDB to crash or behave strangely. So, this variable
+ provides an extra layer of defense. It is defined in gdbtk.c */
+
+extern int running_now;
+
+/* These two control how the GUI behaves when tracing or loading
+ They are defined in gdbtk_cmds.c */
+
+extern int No_Update;
+extern int load_in_progress;
+
+/* This is the main gdbtk interpreter. It is defined and initialized
+ in gdbtk.c */
+
+extern Tcl_Interp *gdbtk_interp;
+
+/*
+ * This structure controls how the gdb output is fed into call_wrapper invoked
+ * commands. See the explanation of gdbtk_fputs in gdbtk_hooks.c for more details.
+ */
+
+typedef struct gdbtk_result {
+ Tcl_Obj *obj_ptr; /* This will eventually be copied over to the
+ Tcl result */
+ int flags; /* Flag vector to control how the result is
+ used. */
+} gdbtk_result;
+
+/* These defines give the allowed values for the gdbtk_result.flags field. */
+
+#define GDBTK_TO_RESULT 1 /* This controls whether output from
+ gdbtk_fputs goes to the command result, or
+ to gdbtk_tcl_fputs. */
+#define GDBTK_MAKES_LIST 2 /* whether gdbtk_fputs adds the
+ element it is outputting as a string, or
+ as a separate list element. */
+#define GDBTK_IN_TCL_RESULT 4 /* Indicates that the result is already in the
+ Tcl result. You can use this to preserve
+ error messages from functions like
+ Tcl_GetIntFromObj. You can also store the
+ output of a call wrapped command directly in
+ the Tcl result if you want, but beware, it will
+ not then be preserved across recursive
+ call_wrapper invocations. */
+#define GDBTK_ERROR_STARTED 8 /* This one is just used in gdbtk_fputs. If we
+ see some output on stderr, we need to clear
+ the result we have been accumulating, or the
+ error and the previous successful output
+ will get mixed, which would be confusing. */
+
+
+/* This is a pointer to the gdbtk_result struct that
+ we are currently filling. We use the C stack to make a stack of these
+ structures for nested calls to gdbtk commands that are invoked through
+ the call_wrapper mechanism. See that function for more details. */
+
+extern gdbtk_result *result_ptr;
+
+/*
+ * These functions are used in all the modules of Gdbtk.
+ *
+ */
+
+extern int Gdbtk_Init(Tcl_Interp *interp);
+extern void gdbtk_stop_timer PARAMS ((void));
+extern void gdbtk_start_timer PARAMS ((void));
+extern void gdbtk_ignorable_warning PARAMS ((const char *));
+extern void gdbtk_interactive PARAMS ((void));
+extern void x_event PARAMS ((int));
+extern int gdbtk_two_elem_cmd PARAMS ((char *, char *));
+
+#ifdef _WIN32
+extern void close_bfds ();
+#endif /* _WIN32 */
+
+extern void
+#ifdef ANSI_PROTOTYPES
+TclDebug (const char *fmt, ...);
+#else
+TclDebug (va_alist);
+#endif