From 57e687d9ad2a45b16a54b43edabcaa055a9244a6 Mon Sep 17 00:00:00 2001 From: Michael Snyder Date: Thu, 30 Mar 2000 18:54:28 +0000 Subject: [PATCH] 2000-03-30 Michael Snyder * 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. --- gdb/ChangeLog | 13 +++++++++++ gdb/breakpoint.c | 6 +++--- gdb/defs.h | 6 +++++- gdb/event-top.c | 8 +++---- gdb/infcmd.c | 56 ++++++++++++++++++++++++------------------------ gdb/utils.c | 2 +- 6 files changed, 54 insertions(+), 37 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 3dd1efa68b..d783c200cf 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,16 @@ +2000-03-30 Michael Snyder + + * 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 * gdbarch.h, gdbarch.c: Re-indent. Remove FIXMEs. diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index 1efa23bb5a..89b15909a7 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -5708,7 +5708,7 @@ until_break_command_continuation (struct continuation_arg *arg) { struct cleanup *cleanups; - cleanups = (struct cleanup *) arg->data; + cleanups = (struct cleanup *) arg->data.pointer; do_exec_cleanups (cleanups); } @@ -5772,8 +5772,8 @@ until_break_command (arg, from_tty) the exec_cleanup_chain. */ arg1 = (struct continuation_arg *) xmalloc (sizeof (struct continuation_arg)); - arg1->next = NULL; - arg1->data = (PTR) old_chain; + arg1->next = NULL; + arg1->data.pointer = old_chain; add_continuation (until_break_command_continuation, arg1); } diff --git a/gdb/defs.h b/gdb/defs.h index 737ef1c872..0270ddd1d8 100644 --- a/gdb/defs.h +++ b/gdb/defs.h @@ -650,7 +650,11 @@ extern void free_command_lines (struct command_line **); struct continuation_arg { struct continuation_arg *next; - void *data; + union continuation_data { + void *pointer; + int integer; + long longint; + } data; }; struct continuation diff --git a/gdb/event-top.c b/gdb/event-top.c index d9a0a7c0ef..622b70f020 100644 --- a/gdb/event-top.c +++ b/gdb/event-top.c @@ -525,8 +525,8 @@ command_handler (char *command) (struct continuation_arg *) xmalloc (sizeof (struct continuation_arg)); arg1->next = arg2; arg2->next = NULL; - arg1->data = (void *) time_at_cmd_start; - arg2->data = (void *) space_at_cmd_start; + arg1->data.integer = time_at_cmd_start; + arg2->data.integer = space_at_cmd_start; 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_space; - long time_at_cmd_start = (long) arg->data; - long space_at_cmd_start = (long) arg->next->data; + long time_at_cmd_start = arg->data.longint; + long space_at_cmd_start = arg->next->data.longint; bpstat_do_actions (&stop_bpstat); /*do_cleanups (old_chain); *//*?????FIXME????? */ diff --git a/gdb/infcmd.c b/gdb/infcmd.c index 84bc9204bb..06439d0248 100644 --- a/gdb/infcmd.c +++ b/gdb/infcmd.c @@ -576,27 +576,27 @@ static void step_1_continuation (arg) struct continuation_arg *arg; { - int count; - int skip_subroutines; - int single_inst; - - skip_subroutines = (int) arg->data; - single_inst = (int) (arg->next)->data; - count = (int) ((arg->next)->next)->data; - - if (stop_step) - { - /* FIXME: On nexti, this may have already been done (when we hit the - step resume break, I think). Probably this should be moved to - wait_for_inferior (near the top). */ + int count; + int skip_subroutines; + int single_inst; + + skip_subroutines = arg->data.integer; + single_inst = arg->next->data.integer; + count = arg->next->next->data.integer; + + if (stop_step) + { + /* FIXME: On nexti, this may have already been done (when we hit the + step resume break, I think). Probably this should be moved to + wait_for_inferior (near the top). */ #if defined (SHIFT_INST_REGS) - SHIFT_INST_REGS (); + SHIFT_INST_REGS (); #endif - step_once (skip_subroutines, single_inst, count - 1); - } - else - if (!single_inst || skip_subroutines) - do_exec_cleanups (ALL_CLEANUPS); + step_once (skip_subroutines, single_inst, count - 1); + } + else + if (!single_inst || skip_subroutines) + do_exec_cleanups (ALL_CLEANUPS); } /* 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 = (struct continuation_arg *) xmalloc (sizeof (struct continuation_arg)); arg1->next = arg2; - arg1->data = (PTR) skip_subroutines; + arg1->data.integer = skip_subroutines; arg2->next = arg3; - arg2->data = (PTR) single_inst; + arg2->data.integer = single_inst; arg3->next = NULL; - arg3->data = (PTR) count; + arg3->data.integer = count; add_intermediate_continuation (step_1_continuation, arg1); proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 1); } @@ -1108,9 +1108,9 @@ finish_command_continuation (arg) struct breakpoint *breakpoint; struct cleanup *cleanups; - breakpoint = (struct breakpoint *) arg->data; - function = (struct symbol *) (arg->next)->data; - cleanups = (struct cleanup *) (arg->next->next)->data; + breakpoint = (struct breakpoint *) arg->data.pointer; + function = (struct symbol *) arg->next->data.pointer; + cleanups = (struct cleanup *) arg->next->next->data.pointer; if (bpstat_find_breakpoint (stop_bpstat, breakpoint) != NULL && function != 0) @@ -1225,9 +1225,9 @@ finish_command (arg, from_tty) arg1->next = arg2; arg2->next = arg3; arg3->next = NULL; - arg1->data = (PTR) breakpoint; - arg2->data = (PTR) function; - arg3->data = (PTR) old_chain; + arg1->data.pointer = breakpoint; + arg2->data.pointer = function; + arg3->data.pointer = old_chain; add_continuation (finish_command_continuation, arg1); } diff --git a/gdb/utils.c b/gdb/utils.c index 824dabedad..1e081552f0 100644 --- a/gdb/utils.c +++ b/gdb/utils.c @@ -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.*/ void add_intermediate_continuation (continuation_hook, arg_list) -- 2.34.1