Add `command hooks' and a hook for inferior program stopping.

* command.h (struct cmd_list_element):  Remove unused `aux'
field.  Add new `hook', `hookee', and `cmd_pointer' fields.
* command.c (add_cmd):  Initialize new fields, elim old.
(add_alias_cmd):  Clone new fields.
(delete_cmd):  Un-hook hookee if we're deleting hook.
(help_cmd):  Tell user the command is hooked, if it is.
(lookup_cmd_1):  Abbreviations return the original command
instead of themselves, so that hooks on the original cmd will be
run.
* defs.h (enum command_class):  Add class_pseudo and comments.
* gdbcmd.h (execute_user_command):  Add prototype.
* infrun.c (normal_stop):  If the stop command is hooked,
run the hook whenever we stop.
(hook_stop_stub):  Stub for catch_errors.
(_initialize_infrun):  Set up pseudo "stop" command.
* main.c (execute_user_command):  Code extracted from execute_command.
(execute_command):  If hooked, run the hook before the command.
(define_command):  If defining a new hook, check the command it
is hooking, and warn if none.  Install the hook.
* source.c (_initialize_source):  "l" is an abbrev for "list".
* doc/gdb.texinfo:  Document command hooks.

* Makefile.in (VERSION):  Roll to 4.6.7.
* config/sun4os4.mh:  Remove dup inftarg.o from NATDEPFILES.
* infrun.c (breakpoints_inserted):  Make it static again.
* tm-symmetry.h (FLOAT_INFO):  #if 0 it for cross-ptrace abuse.
This commit is contained in:
John Gilmore 1992-10-01 09:57:36 +00:00
parent 0843ea632e
commit a65841d768
3 changed files with 59 additions and 3 deletions

View File

@ -1,3 +1,34 @@
Thu Oct 1 01:57:56 1992 John Gilmore (gnu@cygnus.com)
Add `command hooks' and a hook for inferior program stopping.
* command.h (struct cmd_list_element): Remove unused `aux'
field. Add new `hook', `hookee', and `cmd_pointer' fields.
* command.c (add_cmd): Initialize new fields, elim old.
(add_alias_cmd): Clone new fields.
(delete_cmd): Un-hook hookee if we're deleting hook.
(help_cmd): Tell user the command is hooked, if it is.
(lookup_cmd_1): Abbreviations return the original command
instead of themselves, so that hooks on the original cmd will be
run.
* defs.h (enum command_class): Add class_pseudo and comments.
* gdbcmd.h (execute_user_command): Add prototype.
* infrun.c (normal_stop): If the stop command is hooked,
run the hook whenever we stop.
(hook_stop_stub): Stub for catch_errors.
(_initialize_infrun): Set up pseudo "stop" command.
* main.c (execute_user_command): Code extracted from execute_command.
(execute_command): If hooked, run the hook before the command.
(define_command): If defining a new hook, check the command it
is hooking, and warn if none. Install the hook.
* source.c (_initialize_source): "l" is an abbrev for "list".
* doc/gdb.texinfo: Document command hooks.
* Makefile.in (VERSION): Roll to 4.6.7.
* config/sun4os4.mh: Remove dup inftarg.o from NATDEPFILES.
* infrun.c (breakpoints_inserted): Make it static again.
* tm-symmetry.h (FLOAT_INFO): #if 0 it for cross-ptrace abuse.
Wed Sep 30 15:33:22 1992 K. Richard Pixley (rich@sendai.cygnus.com)
Native file renaming.
@ -954,7 +985,7 @@ Sat Aug 8 23:12:22 1992 Fred Fish (fnf@cygnus.com)
Fri Aug 7 11:18:23 1992 Steve Chamberlain (sac@thepub.cygnus.com)
* xm-go32.h: Define LSEEK_NOT_LINEAR
* serial.c (find_source_lines): if LSEEK_NOT_LINEAR is defined
* source.c (find_source_lines): if LSEEK_NOT_LINEAR is defined
then work out the lseek positions of newlines by running through
the file and `tell'ing. This makes source file listing work on
OS's where the relationship between physical position in file and

View File

@ -78,8 +78,10 @@ add_cmd (name, class, fun, doc, list)
c->prefixlist = 0;
c->prefixname = (char *)NULL;
c->allow_unknown = 0;
c->hook = 0;
c->hookee = 0;
c->cmd_pointer = 0;
c->abbrev_flag = 0;
c->aux = 0;
c->type = not_set_cmd;
c->completer = make_symbol_completion_list;
c->var = 0;
@ -137,7 +139,7 @@ add_alias_cmd (name, oldname, class, abbrev_flag, list)
c->prefixname = old->prefixname;
c->allow_unknown = old->allow_unknown;
c->abbrev_flag = abbrev_flag;
c->aux = old->aux;
c->cmd_pointer = old;
return c;
}
@ -263,6 +265,8 @@ delete_cmd (name, list)
while (*list && !strcmp ((*list)->name, name))
{
if ((*list)->hookee)
(*list)->hookee->hook = 0; /* Hook slips out of its mouth */
p = (*list)->next;
free ((PTR)*list);
*list = p;
@ -273,6 +277,8 @@ delete_cmd (name, list)
{
if (!strcmp (c->next->name, name))
{
if (c->next->hookee)
c->next->hookee->hook = 0; /* hooked cmd gets away. */
p = c->next->next;
free ((PTR)c->next);
c->next = p;
@ -338,6 +344,10 @@ help_cmd (command, stream)
/* If this is a class name, print all of the commands in the class */
if (c->function.cfunc == NULL)
help_list (cmdlist, "", c->class, stream);
if (c->hook)
fprintf_filtered (stream, "\nThis command has a hook defined: %s\n",
c->hook->name);
}
/*
@ -481,6 +491,9 @@ help_cmd_list (list, class, prefix, recurse, stream)
the list in which there are ambiguous choices (and *TEXT will be set to
the ambiguous text string).
If the located command was an abbreviation, this routine returns the base
command of the abbreviation.
It does no error reporting whatsoever; control will always return
to the superior routine.
@ -572,6 +585,14 @@ lookup_cmd_1 (text, clist, result_list, ignore_help_classes)
/* We've matched something on this list. Move text pointer forward. */
*text = p;
/* If this was an abbreviation, use the base command instead. */
if (found->cmd_pointer)
found = found->cmd_pointer;
/* If we found a prefix command, keep looking. */
if (found->prefixlist)
{
c = lookup_cmd_1 (text, *found->prefixlist, result_list,

View File

@ -84,10 +84,14 @@ i386_skip_prologue PARAMS ((int));
#define INVALID_FLOAT(p, len) (0)
#if 0
--- this code can't be used unless we know we are running native,
since it uses host specific ptrace calls.
/* code for 80387 fpu. Functions are from i386-dep.c, copied into
* symm-dep.c.
*/
#define FLOAT_INFO { i386_float_info(); }
#endif
/* Say how long (ordinary) registers are. */