From 0faf007628341c5afd2d3721c84e46d27ff6d3e0 Mon Sep 17 00:00:00 2001 From: Andrew Cagney Date: Wed, 28 Apr 2004 16:36:25 +0000 Subject: [PATCH] 2004-04-28 Andrew Cagney * stack.c (print_stack_frame_stub): Delete declaration. (struct print_stack_frame_args, print_stack_frame) (print_frame_info, print_frame): Replace "source" with print what. Replace "print" with "print_level". Replace "args" with "print_args". * frame.h (show_and_print_stack_frame, print_stack_frame) (print_frame_info): Update declarations. * stack.c (select_and_print_frame, frame_command) (current_frame_command, up_command, down_command): Update calls - use get_selected_frame, pass "enum print_what" for source, do not call frame_relative_level. * mi/mi-cmd-stack.c (mi_cmd_stack_list_frames): Ditto. * remote-rdp.c (remote_rdp_open): Ditto. * remote-mips.c (common_open): Ditto. * remote-e7000.c (e7000_start_remote): Ditto. * ocd.c (ocd_start_remote): Ditto. * mi/mi-main.c (mi_cmd_exec_return): Ditto. * infrun.c (normal_stop): Ditto. * inflow.c (kill_command): Ditto. * infcmd.c (finish_command): Ditto. * corelow.c (core_open): Ditto. * tracepoint.c (finish_tfind_command): Ditto. * thread.c (info_threads_command, info_threads_command) (restore_current_thread, do_captured_thread_select): Ditto. * ada-tasks.c (task_command): Ditto. --- gdb/ChangeLog | 28 ++++++++++++ gdb/ada-tasks.c | 4 +- gdb/corelow.c | 3 +- gdb/frame.h | 10 +++-- gdb/infcmd.c | 3 +- gdb/inflow.c | 3 +- gdb/infrun.c | 2 +- gdb/mi/mi-cmd-stack.c | 9 +--- gdb/mi/mi-main.c | 4 +- gdb/ocd.c | 2 +- gdb/remote-e7000.c | 2 +- gdb/remote-mips.c | 2 +- gdb/remote-rdp.c | 2 +- gdb/stack.c | 100 ++++++++++++++++++++---------------------- gdb/thread.c | 9 ++-- gdb/tracepoint.c | 10 ++--- 16 files changed, 102 insertions(+), 91 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 2b85455939..f64b00232f 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,31 @@ +2004-04-28 Andrew Cagney + + * stack.c (print_stack_frame_stub): Delete declaration. + (struct print_stack_frame_args, print_stack_frame) + (print_frame_info, print_frame): Replace "source" with print what. + Replace "print" with "print_level". Replace "args" with + "print_args". + * frame.h (show_and_print_stack_frame, print_stack_frame) + (print_frame_info): Update declarations. + * stack.c (select_and_print_frame, frame_command) + (current_frame_command, up_command, down_command): Update calls - + use get_selected_frame, pass "enum print_what" for source, do not + call frame_relative_level. + * mi/mi-cmd-stack.c (mi_cmd_stack_list_frames): Ditto. + * remote-rdp.c (remote_rdp_open): Ditto. + * remote-mips.c (common_open): Ditto. + * remote-e7000.c (e7000_start_remote): Ditto. + * ocd.c (ocd_start_remote): Ditto. + * mi/mi-main.c (mi_cmd_exec_return): Ditto. + * infrun.c (normal_stop): Ditto. + * inflow.c (kill_command): Ditto. + * infcmd.c (finish_command): Ditto. + * corelow.c (core_open): Ditto. + * tracepoint.c (finish_tfind_command): Ditto. + * thread.c (info_threads_command, info_threads_command) + (restore_current_thread, do_captured_thread_select): Ditto. + * ada-tasks.c (task_command): Ditto. + 2004-04-26 Orjan Friberg * frame.c: Include "observer.h". diff --git a/gdb/ada-tasks.c b/gdb/ada-tasks.c index 0cf4d83253..f7537126a1 100644 --- a/gdb/ada-tasks.c +++ b/gdb/ada-tasks.c @@ -794,10 +794,8 @@ task_command (char *tidstr, int from_tty) { /* FIXME: find_printable_frame should be defined in frame.h, and implemented in ada-lang.c */ - /* find_printable_frame (deprecated_selected_frame, frame_relative_level (deprecated_selected_frame)); */ printf_filtered ("[Switching to task %d]\n", num); - print_stack_frame (deprecated_selected_frame, - frame_relative_level (deprecated_selected_frame), 1); + print_stack_frame (get_selected_frame (), 1, SRC_AND_LOC); } else printf_filtered ("Unable to switch to task %d\n", num); diff --git a/gdb/corelow.c b/gdb/corelow.c index 902e9950e9..81c2b588a7 100644 --- a/gdb/corelow.c +++ b/gdb/corelow.c @@ -388,8 +388,7 @@ core_open (char *filename, int from_tty) /* Now, set up the frame cache, and print the top of stack. */ flush_cached_frames (); select_frame (get_current_frame ()); - print_stack_frame (deprecated_selected_frame, - frame_relative_level (deprecated_selected_frame), 1); + print_stack_frame (get_selected_frame (), 1, SRC_AND_LOC); } else { diff --git a/gdb/frame.h b/gdb/frame.h index 69d4e8f7b0..f02499054a 100644 --- a/gdb/frame.h +++ b/gdb/frame.h @@ -554,14 +554,16 @@ extern int legacy_frameless_look_for_prologue (struct frame_info *); extern struct frame_info *find_relative_frame (struct frame_info *, int *); -extern void show_and_print_stack_frame (struct frame_info *fi, int level, - int source); +extern void show_and_print_stack_frame (struct frame_info *fi, int print_level, + enum print_what print_what); -extern void print_stack_frame (struct frame_info *, int, int); +extern void print_stack_frame (struct frame_info *, int print_level, + enum print_what print_what); extern void show_stack_frame (struct frame_info *); -extern void print_frame_info (struct frame_info *, int, int, int); +extern void print_frame_info (struct frame_info *, int print_level, + enum print_what print_what, int args); extern struct frame_info *block_innermost_frame (struct block *); diff --git a/gdb/infcmd.c b/gdb/infcmd.c index 44ca59b097..bedc5a541e 100644 --- a/gdb/infcmd.c +++ b/gdb/infcmd.c @@ -1234,8 +1234,7 @@ finish_command (char *arg, int from_tty) if (from_tty) { printf_filtered ("Run till exit from "); - print_stack_frame (deprecated_selected_frame, - frame_relative_level (deprecated_selected_frame), 0); + print_stack_frame (get_selected_frame (), 1, LOCATION); } /* If running asynchronously and the target support asynchronous diff --git a/gdb/inflow.c b/gdb/inflow.c index 35cd79968b..f2c306c856 100644 --- a/gdb/inflow.c +++ b/gdb/inflow.c @@ -595,8 +595,7 @@ kill_command (char *arg, int from_tty) if (deprecated_selected_frame == NULL) fputs_filtered ("No selected stack frame.\n", gdb_stdout); else - print_stack_frame (deprecated_selected_frame, - frame_relative_level (deprecated_selected_frame), 1); + print_stack_frame (get_selected_frame (), 1, SRC_AND_LOC); } } diff --git a/gdb/infrun.c b/gdb/infrun.c index f546602b7b..fea2498454 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -3248,7 +3248,7 @@ normal_stop (void) LOCATION: Print only location SRC_AND_LOC: Print location and source line */ if (do_frame_printing) - print_stack_frame (deprecated_selected_frame, -1, source_flag); + print_stack_frame (get_selected_frame (), 0, source_flag); /* Display the auto-display expressions. */ do_displays (); diff --git a/gdb/mi/mi-cmd-stack.c b/gdb/mi/mi-cmd-stack.c index 7db9ffbea6..37d0846c82 100644 --- a/gdb/mi/mi-cmd-stack.c +++ b/gdb/mi/mi-cmd-stack.c @@ -85,14 +85,9 @@ mi_cmd_stack_list_frames (char *command, char **argv, int argc) i++, fi = get_prev_frame (fi)) { QUIT; - /* level == i: always print the level 'i' - source == LOC_AND_ADDRESS: print the location and the address - always, even for level 0. + /* Print the location and the address always, even for level 0. args == 0: don't print the arguments. */ - print_frame_info (fi /* frame info */ , - i /* level */ , - LOC_AND_ADDRESS /* source */ , - 0 /* args */ ); + print_frame_info (fi, 1, LOC_AND_ADDRESS, 0 /* args */ ); } do_cleanups (cleanup_stack); diff --git a/gdb/mi/mi-main.c b/gdb/mi/mi-main.c index c46bf63659..6d738618d6 100644 --- a/gdb/mi/mi-main.c +++ b/gdb/mi/mi-main.c @@ -191,9 +191,7 @@ mi_cmd_exec_return (char *args, int from_tty) /* Because we have called return_command with from_tty = 0, we need to print the frame here. */ - print_stack_frame (deprecated_selected_frame, - frame_relative_level (deprecated_selected_frame), - LOC_AND_ADDRESS); + print_stack_frame (get_selected_frame (), 1, LOC_AND_ADDRESS); return MI_CMD_DONE; } diff --git a/gdb/ocd.c b/gdb/ocd.c index c53db89f53..466ba05a34 100644 --- a/gdb/ocd.c +++ b/gdb/ocd.c @@ -225,7 +225,7 @@ ocd_start_remote (void *dummy) flush_cached_frames (); registers_changed (); stop_pc = read_pc (); - print_stack_frame (get_selected_frame (), -1, 1); + print_stack_frame (get_selected_frame (), 0, SRC_AND_LOC); buf[0] = OCD_LOG_FILE; buf[1] = 3; /* close existing WIGGLERS.LOG */ diff --git a/gdb/remote-e7000.c b/gdb/remote-e7000.c index c422c94761..f8aa99937b 100644 --- a/gdb/remote-e7000.c +++ b/gdb/remote-e7000.c @@ -629,7 +629,7 @@ e7000_start_remote (void *dummy) flush_cached_frames (); registers_changed (); stop_pc = read_pc (); - print_stack_frame (get_selected_frame (), -1, 1); + print_stack_frame (get_selected_frame (), 0, SRC_AND_LOC); return 1; } diff --git a/gdb/remote-mips.c b/gdb/remote-mips.c index 4886852e86..ea78e8b5c7 100644 --- a/gdb/remote-mips.c +++ b/gdb/remote-mips.c @@ -1588,7 +1588,7 @@ device is attached to the target board (e.g., /dev/ttya).\n" flush_cached_frames (); registers_changed (); stop_pc = read_pc (); - print_stack_frame (get_selected_frame (), -1, 1); + print_stack_frame (get_selected_frame (), 0, SRC_AND_LOC); xfree (serial_port_name); } diff --git a/gdb/remote-rdp.c b/gdb/remote-rdp.c index eab68eaf9e..6452bc2071 100644 --- a/gdb/remote-rdp.c +++ b/gdb/remote-rdp.c @@ -1181,7 +1181,7 @@ remote_rdp_open (char *args, int from_tty) flush_cached_frames (); registers_changed (); stop_pc = read_pc (); - print_stack_frame (get_selected_frame (), -1, 1); + print_stack_frame (get_selected_frame (), 0, SRC_AND_LOC); } diff --git a/gdb/stack.c b/gdb/stack.c index 9120e99fd8..213de17eb4 100644 --- a/gdb/stack.c +++ b/gdb/stack.c @@ -95,9 +95,9 @@ static int print_block_frame_locals (struct block *, struct ui_file *); static void print_frame (struct frame_info *fi, - int level, - int source, - int args, + int print_level, + enum print_what print_what, + int print_args, struct symtab_and_line sal); static void backtrace_command (char *, int); @@ -120,42 +120,38 @@ int annotation_level = 0; struct print_stack_frame_args { struct frame_info *fi; - int level; - int source; - int args; + int print_level; + enum print_what print_what; + int print_args; }; /* Show or print the frame arguments. Pass the args the way catch_errors wants them. */ -static int print_stack_frame_stub (void *args); static int print_stack_frame_stub (void *args) { struct print_stack_frame_args *p = (struct print_stack_frame_args *) args; - print_frame_info (p->fi, p->level, p->source, p->args); + print_frame_info (p->fi, p->print_level, p->print_what, p->print_args); return 0; } -/* Show or print a stack frame briefly. FRAME_INFI should be the frame info - and LEVEL should be its level in the stack (or -1 for level not defined). - This prints the level, the function executing, the arguments, - and the file name and line number. - If the pc is not at the beginning of the source line, - the actual pc is printed at the beginning. - - If SOURCE is 1, print the source line as well. - If SOURCE is -1, print ONLY the source line. */ +/* Show or print a stack frame briefly. FRAME_INFI should be the + frame info. This prints the level, the function executing, the + arguments, and the file name and line number. If the pc is not at + the beginning of the source line, the actual pc is printed at the + beginning. */ void -print_stack_frame (struct frame_info *fi, int level, int source) +print_stack_frame (struct frame_info *fi, int print_level, + enum print_what print_what) { struct print_stack_frame_args args; args.fi = fi; - args.level = level; - args.source = source; - args.args = 1; + args.print_level = print_level; + args.print_what = print_what; + args.print_args = 1; catch_errors (print_stack_frame_stub, (char *) &args, "", RETURN_MASK_ALL); } @@ -418,7 +414,8 @@ print_args_stub (void *args) LOC_AND_SRC: Print location and source line. */ void -print_frame_info (struct frame_info *fi, int level, int source, int args) +print_frame_info (struct frame_info *fi, int print_level, + enum print_what print_what, int print_args) { struct symtab_and_line sal; int source_print; @@ -430,14 +427,16 @@ print_frame_info (struct frame_info *fi, int level, int source, int args) struct cleanup *uiout_cleanup = make_cleanup_ui_out_tuple_begin_end (uiout, "frame"); - annotate_frame_begin (level == -1 ? 0 : level, get_frame_pc (fi)); + annotate_frame_begin (print_level ? frame_relative_level (fi) : 0, + get_frame_pc (fi)); /* Do this regardless of SOURCE because we don't have any source to list for this frame. */ - if (level >= 0) + if (print_level) { ui_out_text (uiout, "#"); - ui_out_field_fmt_int (uiout, 2, ui_left, "level", level); + ui_out_field_fmt_int (uiout, 2, ui_left, "level", + frame_relative_level (fi)); } if (ui_out_is_mi_like_p (uiout)) { @@ -471,14 +470,14 @@ print_frame_info (struct frame_info *fi, int level, int source, int args) line containing fi->pc. */ find_frame_sal (fi, &sal); - location_print = (source == LOCATION - || source == LOC_AND_ADDRESS - || source == SRC_AND_LOC); + location_print = (print_what == LOCATION + || print_what == LOC_AND_ADDRESS + || print_what == SRC_AND_LOC); if (location_print || !sal.symtab) - print_frame (fi, level, source, args, sal); + print_frame (fi, print_level, print_what, print_args, sal); - source_print = (source == SRC_LINE || source == SRC_AND_LOC); + source_print = (print_what == SRC_LINE || print_what == SRC_AND_LOC); if (sal.symtab) set_current_source_symtab_and_line (&sal); @@ -487,7 +486,8 @@ print_frame_info (struct frame_info *fi, int level, int source, int args) { struct symtab_and_line cursal; int done = 0; - int mid_statement = (source == SRC_LINE) && (get_frame_pc (fi) != sal.pc); + int mid_statement = ((print_what == SRC_LINE) + && (get_frame_pc (fi) != sal.pc)); if (annotation_level) done = identify_source_line (sal.symtab, sal.line, mid_statement, @@ -522,7 +522,7 @@ print_frame_info (struct frame_info *fi, int level, int source, int args) set_current_source_symtab_and_line (&cursal); } - if (source != 0) + if (print_what != LOCATION) set_default_breakpoint (1, get_frame_pc (fi), sal.symtab, sal.line); annotate_frame_end (); @@ -532,9 +532,9 @@ print_frame_info (struct frame_info *fi, int level, int source, int args) static void print_frame (struct frame_info *fi, - int level, - int source, - int args, + int print_level, + enum print_what print_what, + int print_args, struct symtab_and_line sal) { struct symbol *func; @@ -622,19 +622,21 @@ print_frame (struct frame_info *fi, } } - annotate_frame_begin (level == -1 ? 0 : level, get_frame_pc (fi)); + annotate_frame_begin (print_level ? frame_relative_level (fi) : 0, + get_frame_pc (fi)); list_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "frame"); - if (level >= 0) + if (print_level) { ui_out_text (uiout, "#"); - ui_out_field_fmt_int (uiout, 2, ui_left, "level", level); + ui_out_field_fmt_int (uiout, 2, ui_left, "level", + frame_relative_level (fi)); } if (addressprint) if (get_frame_pc (fi) != sal.pc || !sal.symtab - || source == LOC_AND_ADDRESS) + || print_what == LOC_AND_ADDRESS) { annotate_frame_address (); ui_out_field_core_addr (uiout, "addr", get_frame_pc (fi)); @@ -649,7 +651,7 @@ print_frame (struct frame_info *fi, annotate_frame_args (); ui_out_text (uiout, " ("); - if (args) + if (print_args) { struct print_args_args args; struct cleanup *args_list_chain; @@ -1220,7 +1222,7 @@ backtrace_command_1 (char *count_exp, int show_locals, int from_tty) means further attempts to backtrace would fail (on the other hand, perhaps the code does or could be fixed to make sure the frame->prev field gets set to NULL in that case). */ - print_frame_info (fi, trailing_level + i, 0, 1); + print_frame_info (fi, 1, LOCATION, 1); if (show_locals) print_frame_local_vars (fi, 1, gdb_stdout); } @@ -1606,9 +1608,7 @@ select_and_print_frame (struct frame_info *fi) { select_frame (fi); if (fi) - { - print_stack_frame (fi, frame_relative_level (fi), 1); - } + print_stack_frame (fi, 1, SRC_AND_LOC); } /* Return the symbol-block in which the selected frame is executing. @@ -1715,8 +1715,7 @@ void frame_command (char *level_exp, int from_tty) { select_frame_command (level_exp, from_tty); - print_stack_frame (deprecated_selected_frame, - frame_relative_level (deprecated_selected_frame), 1); + print_stack_frame (get_selected_frame (), 1, SRC_AND_LOC); } /* The XDB Compatibility command to print the current frame. */ @@ -1726,8 +1725,7 @@ current_frame_command (char *level_exp, int from_tty) { if (target_has_stack == 0 || deprecated_selected_frame == 0) error ("No stack."); - print_stack_frame (deprecated_selected_frame, - frame_relative_level (deprecated_selected_frame), 1); + print_stack_frame (get_selected_frame (), 1, SRC_AND_LOC); } /* Select the frame up one or COUNT stack levels @@ -1762,8 +1760,7 @@ static void up_command (char *count_exp, int from_tty) { up_silently_base (count_exp); - print_stack_frame (deprecated_selected_frame, - frame_relative_level (deprecated_selected_frame), 1); + print_stack_frame (get_selected_frame (), 1, SRC_AND_LOC); } /* Select the frame down one or COUNT stack levels @@ -1807,8 +1804,7 @@ static void down_command (char *count_exp, int from_tty) { down_silently_base (count_exp); - print_stack_frame (deprecated_selected_frame, - frame_relative_level (deprecated_selected_frame), 1); + print_stack_frame (get_selected_frame (), 1, SRC_AND_LOC); } void diff --git a/gdb/thread.c b/gdb/thread.c index f8cc18d72a..b8a7f8bfc5 100644 --- a/gdb/thread.c +++ b/gdb/thread.c @@ -448,7 +448,7 @@ info_threads_command (char *arg, int from_tty) puts_filtered (" "); switch_to_thread (tp->ptid); - print_stack_frame (get_selected_frame (), -1, 0); + print_stack_frame (get_selected_frame (), 0, LOCATION); } switch_to_thread (current_ptid); @@ -465,7 +465,7 @@ info_threads_command (char *arg, int from_tty) { /* Ooops, can't restore, tell user where we are. */ warning ("Couldn't restore frame in current thread, at frame 0"); - print_stack_frame (get_selected_frame (), -1, 0); + print_stack_frame (get_selected_frame (), 0, LOCATION); } else { @@ -497,7 +497,7 @@ restore_current_thread (ptid_t ptid) if (!ptid_equal (ptid, inferior_ptid)) { switch_to_thread (ptid); - print_stack_frame (get_current_frame (), 0, -1); + print_stack_frame (get_current_frame (), 1, SRC_LINE); } } @@ -704,8 +704,7 @@ do_captured_thread_select (struct ui_out *uiout, void *tidstr) #endif ui_out_text (uiout, ")]"); - print_stack_frame (deprecated_selected_frame, - frame_relative_level (deprecated_selected_frame), 1); + print_stack_frame (get_selected_frame (), 1, SRC_AND_LOC); return GDB_RC_OK; } diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c index fe9557ffc6..590e09c2fa 100644 --- a/gdb/tracepoint.c +++ b/gdb/tracepoint.c @@ -1935,7 +1935,7 @@ finish_tfind_command (char *msg, if (from_tty) { - int source_only; + enum print_what print_what; /* NOTE: in immitation of the step command, try to determine whether we have made a transition from one function to another. @@ -1951,13 +1951,11 @@ finish_tfind_command (char *msg, (old_frame_addr == 0 || get_frame_base (get_current_frame ()) == 0 || old_frame_addr == get_frame_base (get_current_frame ()))) - source_only = -1; + print_what = SRC_LINE; else - source_only = 1; + print_what = SRC_AND_LOC; - print_stack_frame (deprecated_selected_frame, - frame_relative_level (deprecated_selected_frame), - source_only); + print_stack_frame (get_selected_frame (), 1, print_what); do_displays (); } }