2004-04-28 Andrew Cagney <cagney@redhat.com>

* 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.
This commit is contained in:
Andrew Cagney
2004-04-28 16:36:25 +00:00
parent 5d38b224de
commit 0faf007628
16 changed files with 102 additions and 91 deletions

View File

@ -1,3 +1,31 @@
2004-04-28 Andrew Cagney <cagney@redhat.com>
* 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 <orjanf@axis.com> 2004-04-26 Orjan Friberg <orjanf@axis.com>
* frame.c: Include "observer.h". * frame.c: Include "observer.h".

View File

@ -794,10 +794,8 @@ task_command (char *tidstr, int from_tty)
{ {
/* FIXME: find_printable_frame should be defined in frame.h, and /* FIXME: find_printable_frame should be defined in frame.h, and
implemented in ada-lang.c */ 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); printf_filtered ("[Switching to task %d]\n", num);
print_stack_frame (deprecated_selected_frame, print_stack_frame (get_selected_frame (), 1, SRC_AND_LOC);
frame_relative_level (deprecated_selected_frame), 1);
} }
else else
printf_filtered ("Unable to switch to task %d\n", num); printf_filtered ("Unable to switch to task %d\n", num);

View File

@ -388,8 +388,7 @@ core_open (char *filename, int from_tty)
/* Now, set up the frame cache, and print the top of stack. */ /* Now, set up the frame cache, and print the top of stack. */
flush_cached_frames (); flush_cached_frames ();
select_frame (get_current_frame ()); select_frame (get_current_frame ());
print_stack_frame (deprecated_selected_frame, print_stack_frame (get_selected_frame (), 1, SRC_AND_LOC);
frame_relative_level (deprecated_selected_frame), 1);
} }
else else
{ {

View File

@ -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 struct frame_info *find_relative_frame (struct frame_info *, int *);
extern void show_and_print_stack_frame (struct frame_info *fi, int level, extern void show_and_print_stack_frame (struct frame_info *fi, int print_level,
int source); 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 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 *); extern struct frame_info *block_innermost_frame (struct block *);

View File

@ -1234,8 +1234,7 @@ finish_command (char *arg, int from_tty)
if (from_tty) if (from_tty)
{ {
printf_filtered ("Run till exit from "); printf_filtered ("Run till exit from ");
print_stack_frame (deprecated_selected_frame, print_stack_frame (get_selected_frame (), 1, LOCATION);
frame_relative_level (deprecated_selected_frame), 0);
} }
/* If running asynchronously and the target support asynchronous /* If running asynchronously and the target support asynchronous

View File

@ -595,8 +595,7 @@ kill_command (char *arg, int from_tty)
if (deprecated_selected_frame == NULL) if (deprecated_selected_frame == NULL)
fputs_filtered ("No selected stack frame.\n", gdb_stdout); fputs_filtered ("No selected stack frame.\n", gdb_stdout);
else else
print_stack_frame (deprecated_selected_frame, print_stack_frame (get_selected_frame (), 1, SRC_AND_LOC);
frame_relative_level (deprecated_selected_frame), 1);
} }
} }

View File

@ -3248,7 +3248,7 @@ normal_stop (void)
LOCATION: Print only location LOCATION: Print only location
SRC_AND_LOC: Print location and source line */ SRC_AND_LOC: Print location and source line */
if (do_frame_printing) 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. */ /* Display the auto-display expressions. */
do_displays (); do_displays ();

View File

@ -85,14 +85,9 @@ mi_cmd_stack_list_frames (char *command, char **argv, int argc)
i++, fi = get_prev_frame (fi)) i++, fi = get_prev_frame (fi))
{ {
QUIT; QUIT;
/* level == i: always print the level 'i' /* Print the location and the address always, even for level 0.
source == LOC_AND_ADDRESS: print the location and the address
always, even for level 0.
args == 0: don't print the arguments. */ args == 0: don't print the arguments. */
print_frame_info (fi /* frame info */ , print_frame_info (fi, 1, LOC_AND_ADDRESS, 0 /* args */ );
i /* level */ ,
LOC_AND_ADDRESS /* source */ ,
0 /* args */ );
} }
do_cleanups (cleanup_stack); do_cleanups (cleanup_stack);

View File

@ -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 /* Because we have called return_command with from_tty = 0, we need
to print the frame here. */ to print the frame here. */
print_stack_frame (deprecated_selected_frame, print_stack_frame (get_selected_frame (), 1, LOC_AND_ADDRESS);
frame_relative_level (deprecated_selected_frame),
LOC_AND_ADDRESS);
return MI_CMD_DONE; return MI_CMD_DONE;
} }

View File

@ -225,7 +225,7 @@ ocd_start_remote (void *dummy)
flush_cached_frames (); flush_cached_frames ();
registers_changed (); registers_changed ();
stop_pc = read_pc (); 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[0] = OCD_LOG_FILE;
buf[1] = 3; /* close existing WIGGLERS.LOG */ buf[1] = 3; /* close existing WIGGLERS.LOG */

View File

@ -629,7 +629,7 @@ e7000_start_remote (void *dummy)
flush_cached_frames (); flush_cached_frames ();
registers_changed (); registers_changed ();
stop_pc = read_pc (); stop_pc = read_pc ();
print_stack_frame (get_selected_frame (), -1, 1); print_stack_frame (get_selected_frame (), 0, SRC_AND_LOC);
return 1; return 1;
} }

View File

@ -1588,7 +1588,7 @@ device is attached to the target board (e.g., /dev/ttya).\n"
flush_cached_frames (); flush_cached_frames ();
registers_changed (); registers_changed ();
stop_pc = read_pc (); 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); xfree (serial_port_name);
} }

View File

@ -1181,7 +1181,7 @@ remote_rdp_open (char *args, int from_tty)
flush_cached_frames (); flush_cached_frames ();
registers_changed (); registers_changed ();
stop_pc = read_pc (); stop_pc = read_pc ();
print_stack_frame (get_selected_frame (), -1, 1); print_stack_frame (get_selected_frame (), 0, SRC_AND_LOC);
} }

View File

@ -95,9 +95,9 @@ static int print_block_frame_locals (struct block *,
struct ui_file *); struct ui_file *);
static void print_frame (struct frame_info *fi, static void print_frame (struct frame_info *fi,
int level, int print_level,
int source, enum print_what print_what,
int args, int print_args,
struct symtab_and_line sal); struct symtab_and_line sal);
static void backtrace_command (char *, int); static void backtrace_command (char *, int);
@ -120,42 +120,38 @@ int annotation_level = 0;
struct print_stack_frame_args struct print_stack_frame_args
{ {
struct frame_info *fi; struct frame_info *fi;
int level; int print_level;
int source; enum print_what print_what;
int args; int print_args;
}; };
/* Show or print the frame arguments. /* Show or print the frame arguments.
Pass the args the way catch_errors wants them. */ Pass the args the way catch_errors wants them. */
static int print_stack_frame_stub (void *args);
static int static int
print_stack_frame_stub (void *args) print_stack_frame_stub (void *args)
{ {
struct print_stack_frame_args *p = (struct print_stack_frame_args *) 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; return 0;
} }
/* Show or print a stack frame briefly. FRAME_INFI should be the frame info /* Show or print a stack frame briefly. FRAME_INFI should be the
and LEVEL should be its level in the stack (or -1 for level not defined). frame info. This prints the level, the function executing, the
This prints the level, the function executing, the arguments, arguments, and the file name and line number. If the pc is not at
and the file name and line number. the beginning of the source line, the actual pc is printed at the
If the pc is not at the beginning of the source line, beginning. */
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. */
void 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; struct print_stack_frame_args args;
args.fi = fi; args.fi = fi;
args.level = level; args.print_level = print_level;
args.source = source; args.print_what = print_what;
args.args = 1; args.print_args = 1;
catch_errors (print_stack_frame_stub, (char *) &args, "", RETURN_MASK_ALL); 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. */ LOC_AND_SRC: Print location and source line. */
void 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; struct symtab_and_line sal;
int source_print; int source_print;
@ -430,14 +427,16 @@ print_frame_info (struct frame_info *fi, int level, int source, int args)
struct cleanup *uiout_cleanup struct cleanup *uiout_cleanup
= make_cleanup_ui_out_tuple_begin_end (uiout, "frame"); = 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 /* Do this regardless of SOURCE because we don't have any source
to list for this frame. */ to list for this frame. */
if (level >= 0) if (print_level)
{ {
ui_out_text (uiout, "#"); 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)) 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. */ line containing fi->pc. */
find_frame_sal (fi, &sal); find_frame_sal (fi, &sal);
location_print = (source == LOCATION location_print = (print_what == LOCATION
|| source == LOC_AND_ADDRESS || print_what == LOC_AND_ADDRESS
|| source == SRC_AND_LOC); || print_what == SRC_AND_LOC);
if (location_print || !sal.symtab) 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) if (sal.symtab)
set_current_source_symtab_and_line (&sal); 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; struct symtab_and_line cursal;
int done = 0; 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) if (annotation_level)
done = identify_source_line (sal.symtab, sal.line, mid_statement, 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); 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); set_default_breakpoint (1, get_frame_pc (fi), sal.symtab, sal.line);
annotate_frame_end (); annotate_frame_end ();
@ -532,9 +532,9 @@ print_frame_info (struct frame_info *fi, int level, int source, int args)
static void static void
print_frame (struct frame_info *fi, print_frame (struct frame_info *fi,
int level, int print_level,
int source, enum print_what print_what,
int args, int print_args,
struct symtab_and_line sal) struct symtab_and_line sal)
{ {
struct symbol *func; 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"); list_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "frame");
if (level >= 0) if (print_level)
{ {
ui_out_text (uiout, "#"); 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 (addressprint)
if (get_frame_pc (fi) != sal.pc if (get_frame_pc (fi) != sal.pc
|| !sal.symtab || !sal.symtab
|| source == LOC_AND_ADDRESS) || print_what == LOC_AND_ADDRESS)
{ {
annotate_frame_address (); annotate_frame_address ();
ui_out_field_core_addr (uiout, "addr", get_frame_pc (fi)); ui_out_field_core_addr (uiout, "addr", get_frame_pc (fi));
@ -649,7 +651,7 @@ print_frame (struct frame_info *fi,
annotate_frame_args (); annotate_frame_args ();
ui_out_text (uiout, " ("); ui_out_text (uiout, " (");
if (args) if (print_args)
{ {
struct print_args_args args; struct print_args_args args;
struct cleanup *args_list_chain; 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 means further attempts to backtrace would fail (on the other
hand, perhaps the code does or could be fixed to make sure hand, perhaps the code does or could be fixed to make sure
the frame->prev field gets set to NULL in that case). */ 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) if (show_locals)
print_frame_local_vars (fi, 1, gdb_stdout); print_frame_local_vars (fi, 1, gdb_stdout);
} }
@ -1606,9 +1608,7 @@ select_and_print_frame (struct frame_info *fi)
{ {
select_frame (fi); select_frame (fi);
if (fi) if (fi)
{ print_stack_frame (fi, 1, SRC_AND_LOC);
print_stack_frame (fi, frame_relative_level (fi), 1);
}
} }
/* Return the symbol-block in which the selected frame is executing. /* Return the symbol-block in which the selected frame is executing.
@ -1715,8 +1715,7 @@ void
frame_command (char *level_exp, int from_tty) frame_command (char *level_exp, int from_tty)
{ {
select_frame_command (level_exp, from_tty); select_frame_command (level_exp, from_tty);
print_stack_frame (deprecated_selected_frame, print_stack_frame (get_selected_frame (), 1, SRC_AND_LOC);
frame_relative_level (deprecated_selected_frame), 1);
} }
/* The XDB Compatibility command to print the current frame. */ /* 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) if (target_has_stack == 0 || deprecated_selected_frame == 0)
error ("No stack."); error ("No stack.");
print_stack_frame (deprecated_selected_frame, print_stack_frame (get_selected_frame (), 1, SRC_AND_LOC);
frame_relative_level (deprecated_selected_frame), 1);
} }
/* Select the frame up one or COUNT stack levels /* Select the frame up one or COUNT stack levels
@ -1762,8 +1760,7 @@ static void
up_command (char *count_exp, int from_tty) up_command (char *count_exp, int from_tty)
{ {
up_silently_base (count_exp); up_silently_base (count_exp);
print_stack_frame (deprecated_selected_frame, print_stack_frame (get_selected_frame (), 1, SRC_AND_LOC);
frame_relative_level (deprecated_selected_frame), 1);
} }
/* Select the frame down one or COUNT stack levels /* Select the frame down one or COUNT stack levels
@ -1807,8 +1804,7 @@ static void
down_command (char *count_exp, int from_tty) down_command (char *count_exp, int from_tty)
{ {
down_silently_base (count_exp); down_silently_base (count_exp);
print_stack_frame (deprecated_selected_frame, print_stack_frame (get_selected_frame (), 1, SRC_AND_LOC);
frame_relative_level (deprecated_selected_frame), 1);
} }
void void

View File

@ -448,7 +448,7 @@ info_threads_command (char *arg, int from_tty)
puts_filtered (" "); puts_filtered (" ");
switch_to_thread (tp->ptid); 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); 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. */ /* Ooops, can't restore, tell user where we are. */
warning ("Couldn't restore frame in current thread, at frame 0"); 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 else
{ {
@ -497,7 +497,7 @@ restore_current_thread (ptid_t ptid)
if (!ptid_equal (ptid, inferior_ptid)) if (!ptid_equal (ptid, inferior_ptid))
{ {
switch_to_thread (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 #endif
ui_out_text (uiout, ")]"); ui_out_text (uiout, ")]");
print_stack_frame (deprecated_selected_frame, print_stack_frame (get_selected_frame (), 1, SRC_AND_LOC);
frame_relative_level (deprecated_selected_frame), 1);
return GDB_RC_OK; return GDB_RC_OK;
} }

View File

@ -1935,7 +1935,7 @@ finish_tfind_command (char *msg,
if (from_tty) if (from_tty)
{ {
int source_only; enum print_what print_what;
/* NOTE: in immitation of the step command, try to determine /* NOTE: in immitation of the step command, try to determine
whether we have made a transition from one function to another. whether we have made a transition from one function to another.
@ -1951,13 +1951,11 @@ finish_tfind_command (char *msg,
(old_frame_addr == 0 || (old_frame_addr == 0 ||
get_frame_base (get_current_frame ()) == 0 || get_frame_base (get_current_frame ()) == 0 ||
old_frame_addr == get_frame_base (get_current_frame ()))) old_frame_addr == get_frame_base (get_current_frame ())))
source_only = -1; print_what = SRC_LINE;
else else
source_only = 1; print_what = SRC_AND_LOC;
print_stack_frame (deprecated_selected_frame, print_stack_frame (get_selected_frame (), 1, print_what);
frame_relative_level (deprecated_selected_frame),
source_only);
do_displays (); do_displays ();
} }
} }