2000-03-30 Michael Snyder <msnyder@cleaver.cygnus.com>

* defs.h (struct continuation_arg): make 'data' a union, to avoid
        casting problems when int and pointer are not the  same size.
        * event-top.c (command_handler): use data as a union.
        (command_line_handler_continuation): ditto.
        * infcmd.c (step_1_continuation): use data as a union.  Re-indent.
        (step_once): ditto.  (finish_command_continuation): ditto.
        (finish_command): ditto.
        * breakpoint.c (until_break_command): use data as a union.
        (until_break_command_continuation): ditto.
        * utils.c (add_intermediate_continuation): fix typo in comment.
This commit is contained in:
Michael Snyder 2000-03-30 18:54:28 +00:00
parent 59233f88f1
commit 57e687d9ad
6 changed files with 52 additions and 35 deletions

View File

@ -1,3 +1,16 @@
2000-03-30 Michael Snyder <msnyder@cleaver.cygnus.com>
* defs.h (struct continuation_arg): make 'data' a union, to avoid
casting problems when int and pointer are not the same size.
* event-top.c (command_handler): use data as a union.
(command_line_handler_continuation): ditto.
* infcmd.c (step_1_continuation): use data as a union. Re-indent.
(step_once): ditto. (finish_command_continuation): ditto.
(finish_command): ditto.
* breakpoint.c (until_break_command): use data as a union.
(until_break_command_continuation): ditto.
* utils.c (add_intermediate_continuation): fix typo in comment.
Thu Mar 30 12:09:50 2000 Andrew Cagney <cagney@b1.cygnus.com> Thu Mar 30 12:09:50 2000 Andrew Cagney <cagney@b1.cygnus.com>
* gdbarch.h, gdbarch.c: Re-indent. Remove FIXMEs. * gdbarch.h, gdbarch.c: Re-indent. Remove FIXMEs.

View File

@ -5708,7 +5708,7 @@ until_break_command_continuation (struct continuation_arg *arg)
{ {
struct cleanup *cleanups; struct cleanup *cleanups;
cleanups = (struct cleanup *) arg->data; cleanups = (struct cleanup *) arg->data.pointer;
do_exec_cleanups (cleanups); do_exec_cleanups (cleanups);
} }
@ -5772,8 +5772,8 @@ until_break_command (arg, from_tty)
the exec_cleanup_chain. */ the exec_cleanup_chain. */
arg1 = arg1 =
(struct continuation_arg *) xmalloc (sizeof (struct continuation_arg)); (struct continuation_arg *) xmalloc (sizeof (struct continuation_arg));
arg1->next = NULL; arg1->next = NULL;
arg1->data = (PTR) old_chain; arg1->data.pointer = old_chain;
add_continuation (until_break_command_continuation, arg1); add_continuation (until_break_command_continuation, arg1);
} }

View File

@ -650,7 +650,11 @@ extern void free_command_lines (struct command_line **);
struct continuation_arg struct continuation_arg
{ {
struct continuation_arg *next; struct continuation_arg *next;
void *data; union continuation_data {
void *pointer;
int integer;
long longint;
} data;
}; };
struct continuation struct continuation

View File

@ -525,8 +525,8 @@ command_handler (char *command)
(struct continuation_arg *) xmalloc (sizeof (struct continuation_arg)); (struct continuation_arg *) xmalloc (sizeof (struct continuation_arg));
arg1->next = arg2; arg1->next = arg2;
arg2->next = NULL; arg2->next = NULL;
arg1->data = (void *) time_at_cmd_start; arg1->data.integer = time_at_cmd_start;
arg2->data = (void *) space_at_cmd_start; arg2->data.integer = space_at_cmd_start;
add_continuation (command_line_handler_continuation, arg1); add_continuation (command_line_handler_continuation, arg1);
} }
@ -572,8 +572,8 @@ command_line_handler_continuation (struct continuation_arg *arg)
extern int display_time; extern int display_time;
extern int display_space; extern int display_space;
long time_at_cmd_start = (long) arg->data; long time_at_cmd_start = arg->data.longint;
long space_at_cmd_start = (long) arg->next->data; long space_at_cmd_start = arg->next->data.longint;
bpstat_do_actions (&stop_bpstat); bpstat_do_actions (&stop_bpstat);
/*do_cleanups (old_chain); *//*?????FIXME????? */ /*do_cleanups (old_chain); *//*?????FIXME????? */

View File

@ -576,27 +576,27 @@ static void
step_1_continuation (arg) step_1_continuation (arg)
struct continuation_arg *arg; struct continuation_arg *arg;
{ {
int count; int count;
int skip_subroutines; int skip_subroutines;
int single_inst; int single_inst;
skip_subroutines = (int) arg->data; skip_subroutines = arg->data.integer;
single_inst = (int) (arg->next)->data; single_inst = arg->next->data.integer;
count = (int) ((arg->next)->next)->data; count = arg->next->next->data.integer;
if (stop_step) if (stop_step)
{ {
/* FIXME: On nexti, this may have already been done (when we hit the /* FIXME: On nexti, this may have already been done (when we hit the
step resume break, I think). Probably this should be moved to step resume break, I think). Probably this should be moved to
wait_for_inferior (near the top). */ wait_for_inferior (near the top). */
#if defined (SHIFT_INST_REGS) #if defined (SHIFT_INST_REGS)
SHIFT_INST_REGS (); SHIFT_INST_REGS ();
#endif #endif
step_once (skip_subroutines, single_inst, count - 1); step_once (skip_subroutines, single_inst, count - 1);
} }
else else
if (!single_inst || skip_subroutines) if (!single_inst || skip_subroutines)
do_exec_cleanups (ALL_CLEANUPS); do_exec_cleanups (ALL_CLEANUPS);
} }
/* Do just one step operation. If count >1 we will have to set up a /* Do just one step operation. If count >1 we will have to set up a
@ -662,11 +662,11 @@ which has no line number information.\n", name);
arg3 = arg3 =
(struct continuation_arg *) xmalloc (sizeof (struct continuation_arg)); (struct continuation_arg *) xmalloc (sizeof (struct continuation_arg));
arg1->next = arg2; arg1->next = arg2;
arg1->data = (PTR) skip_subroutines; arg1->data.integer = skip_subroutines;
arg2->next = arg3; arg2->next = arg3;
arg2->data = (PTR) single_inst; arg2->data.integer = single_inst;
arg3->next = NULL; arg3->next = NULL;
arg3->data = (PTR) count; arg3->data.integer = count;
add_intermediate_continuation (step_1_continuation, arg1); add_intermediate_continuation (step_1_continuation, arg1);
proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 1); proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 1);
} }
@ -1108,9 +1108,9 @@ finish_command_continuation (arg)
struct breakpoint *breakpoint; struct breakpoint *breakpoint;
struct cleanup *cleanups; struct cleanup *cleanups;
breakpoint = (struct breakpoint *) arg->data; breakpoint = (struct breakpoint *) arg->data.pointer;
function = (struct symbol *) (arg->next)->data; function = (struct symbol *) arg->next->data.pointer;
cleanups = (struct cleanup *) (arg->next->next)->data; cleanups = (struct cleanup *) arg->next->next->data.pointer;
if (bpstat_find_breakpoint (stop_bpstat, breakpoint) != NULL if (bpstat_find_breakpoint (stop_bpstat, breakpoint) != NULL
&& function != 0) && function != 0)
@ -1225,9 +1225,9 @@ finish_command (arg, from_tty)
arg1->next = arg2; arg1->next = arg2;
arg2->next = arg3; arg2->next = arg3;
arg3->next = NULL; arg3->next = NULL;
arg1->data = (PTR) breakpoint; arg1->data.pointer = breakpoint;
arg2->data = (PTR) function; arg2->data.pointer = function;
arg3->data = (PTR) old_chain; arg3->data.pointer = old_chain;
add_continuation (finish_command_continuation, arg1); add_continuation (finish_command_continuation, arg1);
} }

View File

@ -456,7 +456,7 @@ discard_all_continuations ()
} }
} }
/* Add a continuation to the continuation list, the gloabl list /* Add a continuation to the continuation list, the global list
intermediate_continuation. The new continuation will be added at the front.*/ intermediate_continuation. The new continuation will be added at the front.*/
void void
add_intermediate_continuation (continuation_hook, arg_list) add_intermediate_continuation (continuation_hook, arg_list)