This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
[patch/rfc] selected_frame_level -> frame_relative_level (selected_frame)
- From: Andrew Cagney <ac131313 at cygnus dot com>
- To: gdb-patches at sources dot redhat dot com
- Date: Sun, 14 Apr 2002 20:50:12 -0400
- Subject: [patch/rfc] selected_frame_level -> frame_relative_level (selected_frame)
Hello,
This follows up last weeks change. It eliminates the global
selected_frame_level but in a brutal way. Many of the frame functions
are now carrying around a redundant level parameter, that will be
removed slowly.
(need to also tweak gdbtk).
I'll commit it in a few days.
Andrew
2002-04-14 Andrew Cagney <ac131313@redhat.com>
* frame.h (selected_frame_level): Delete declaration.
(frame_relative_level): Declare.
* stack.c (selected_frame_level): Delete variable.
(frame_relative_level): New function.
(select_frame): Do not set the selected_frame_level.
* stack.c (frame_info, record_selected_frame): Update.
(frame_command, current_frame_command): Update.
(up_silently_base, up_command, down_silently_base): Update.
(down_command): Update.
* inflow.c (kill_command): Update.
* tracepoint.c (finish_tfind_command): Update.
* corelow.c (core_open): Update.
* thread.c (info_threads_command): Update.
(do_captured_thread_select): Update.
* infcmd.c (finish_command): Update.
* breakpoint.c (insert_breakpoints, do_enable_breakpoint): Update.
Index: breakpoint.c
===================================================================
RCS file: /cvs/src/src/gdb/breakpoint.c,v
retrieving revision 1.72
diff -u -r1.72 breakpoint.c
--- breakpoint.c 9 Apr 2002 22:33:25 -0000 1.72
+++ breakpoint.c 15 Apr 2002 00:17:15 -0000
@@ -901,7 +901,7 @@
/* Save the current frame and level so we can restore it after
evaluating the watchpoint expression on its own frame. */
saved_frame = selected_frame;
- saved_level = selected_frame_level;
+ saved_level = frame_relative_level (selected_frame);
/* Determine if the watchpoint is within scope. */
if (b->exp_valid_block == NULL)
@@ -1002,7 +1002,7 @@
/* Restore the frame and level. */
if ((saved_frame != selected_frame) ||
- (saved_level != selected_frame_level))
+ (saved_level != frame_relative_level (selected_frame)))
select_frame (saved_frame, saved_level);
if (val)
@@ -7282,7 +7282,7 @@
}
save_selected_frame = selected_frame;
- save_selected_frame_level = selected_frame_level;
+ save_selected_frame_level = frame_relative_level (selected_frame);
select_frame (fr, -1);
}
Index: corelow.c
===================================================================
RCS file: /cvs/src/src/gdb/corelow.c,v
retrieving revision 1.19
diff -u -r1.19 corelow.c
--- corelow.c 27 Feb 2002 01:40:35 -0000 1.19
+++ corelow.c 15 Apr 2002 00:17:18 -0000
@@ -359,7 +359,8 @@
/* Now, set up the frame cache, and print the top of stack. */
flush_cached_frames ();
select_frame (get_current_frame (), 0);
- print_stack_frame (selected_frame, selected_frame_level, 1);
+ print_stack_frame (selected_frame,
+ frame_relative_level (selected_frame), 1);
}
else
{
Index: frame.h
===================================================================
RCS file: /cvs/src/src/gdb/frame.h,v
retrieving revision 1.12
diff -u -r1.12 frame.h
--- frame.h 12 Apr 2002 18:18:57 -0000 1.12
+++ frame.h 15 Apr 2002 00:17:19 -0000
@@ -160,6 +160,11 @@
#define FRAME_FP(fi) ((fi)->frame)
+/* Level of the frame: 0 for innermost, 1 for its caller, ...; or -1
+ for an invalid frame. */
+
+extern int frame_relative_level (struct frame_info *fi);
+
/* Define a default FRAME_CHAIN_VALID, in the form that is suitable for most
targets. If FRAME_CHAIN_VALID returns zero it means that the given frame
is the outermost one and has no caller.
@@ -179,12 +184,6 @@
Note that one cannot assume this is the address of valid data. */
extern struct frame_info *selected_frame;
-
-/* Level of the selected frame:
- 0 for innermost, 1 for its caller, ...
- or -1 for frame specified by address with no defined level. */
-
-extern int selected_frame_level;
extern struct frame_info *create_new_frame (CORE_ADDR, CORE_ADDR);
Index: infcmd.c
===================================================================
RCS file: /cvs/src/src/gdb/infcmd.c,v
retrieving revision 1.44
diff -u -r1.44 infcmd.c
--- infcmd.c 12 Apr 2002 18:18:57 -0000 1.44
+++ infcmd.c 15 Apr 2002 00:17:29 -0000
@@ -1289,7 +1289,8 @@
if (from_tty)
{
printf_filtered ("Run till exit from ");
- print_stack_frame (selected_frame, selected_frame_level, 0);
+ print_stack_frame (selected_frame,
+ frame_relative_level (selected_frame), 0);
}
/* If running asynchronously and the target support asynchronous
Index: inflow.c
===================================================================
RCS file: /cvs/src/src/gdb/inflow.c,v
retrieving revision 1.13
diff -u -r1.13 inflow.c
--- inflow.c 27 Mar 2002 21:35:35 -0000 1.13
+++ inflow.c 15 Apr 2002 00:17:37 -0000
@@ -594,7 +594,8 @@
if (selected_frame == NULL)
fputs_filtered ("No selected stack frame.\n", gdb_stdout);
else
- print_stack_frame (selected_frame, selected_frame_level, 1);
+ print_stack_frame (selected_frame,
+ frame_relative_level (selected_frame), 1);
}
}
Index: stack.c
===================================================================
RCS file: /cvs/src/src/gdb/stack.c,v
retrieving revision 1.33
diff -u -r1.33 stack.c
--- stack.c 10 Apr 2002 23:32:33 -0000 1.33
+++ stack.c 15 Apr 2002 00:17:41 -0000
@@ -115,11 +115,17 @@
struct frame_info *selected_frame;
-/* Level of the selected frame:
- 0 for innermost, 1 for its caller, ...
- or -1 for frame specified by address with no defined level. */
+/* Level of the selected frame: 0 for innermost, 1 for its caller, ...
+ or -1 for NULL frame. */
-int selected_frame_level;
+int
+frame_relative_level (struct frame_info *fi)
+{
+ if (fi == NULL)
+ return -1;
+ else
+ return fi->level;
+}
/* Zero means do things normally; we are interacting directly with the
user. One means print the full filename and linenumber when a
@@ -817,9 +823,10 @@
}
calling_frame_info = get_prev_frame (fi);
- if (!addr_exp && selected_frame_level >= 0)
+ if (!addr_exp && frame_relative_level (selected_frame) >= 0)
{
- printf_filtered ("Stack level %d, frame at ", selected_frame_level);
+ printf_filtered ("Stack level %d, frame at ",
+ frame_relative_level (selected_frame));
print_address_numeric (fi->frame, 1, gdb_stdout);
printf_filtered (":\n");
}
@@ -1457,7 +1464,6 @@
register struct symtab *s;
selected_frame = fi;
- selected_frame_level = level;
/* FIXME: cagney/2002-04-05: It can't be this easy (and looking at
the increasingly complex list of checkes, it wasn't)! GDB is
dragging around, and constantly updating, the global variable
@@ -1530,7 +1536,7 @@
record_selected_frame (CORE_ADDR *frameaddrp, int *levelp)
{
*frameaddrp = selected_frame ? selected_frame->frame : 0;
- *levelp = selected_frame_level;
+ *levelp = frame_relative_level (selected_frame);
}
/* Return the symbol-block in which the selected frame is executing.
@@ -1641,7 +1647,8 @@
frame_command (char *level_exp, int from_tty)
{
select_frame_command (level_exp, from_tty);
- show_and_print_stack_frame (selected_frame, selected_frame_level, 1);
+ show_and_print_stack_frame (selected_frame,
+ frame_relative_level (selected_frame), 1);
}
/* The XDB Compatibility command to print the current frame. */
@@ -1651,7 +1658,8 @@
{
if (target_has_stack == 0 || selected_frame == 0)
error ("No stack.");
- print_only_stack_frame (selected_frame, selected_frame_level, 1);
+ print_only_stack_frame (selected_frame,
+ frame_relative_level (selected_frame), 1);
}
/* Select the frame up one or COUNT stack levels
@@ -1673,7 +1681,7 @@
fi = find_relative_frame (selected_frame, &count1);
if (count1 != 0 && count_exp == 0)
error ("Initial frame selected; you cannot go up.");
- select_frame (fi, selected_frame_level + count - count1);
+ select_frame (fi, frame_relative_level (selected_frame) + count - count1);
}
static void
@@ -1686,7 +1694,8 @@
up_command (char *count_exp, int from_tty)
{
up_silently_base (count_exp);
- show_and_print_stack_frame (selected_frame, selected_frame_level, 1);
+ show_and_print_stack_frame (selected_frame,
+ frame_relative_level (selected_frame), 1);
}
/* Select the frame down one or COUNT stack levels
@@ -1717,7 +1726,7 @@
error ("Bottom (i.e., innermost) frame selected; you cannot go down.");
}
- select_frame (frame, selected_frame_level + count - count1);
+ select_frame (frame, frame_relative_level (selected_frame) + count - count1);
}
/* ARGSUSED */
@@ -1731,7 +1740,8 @@
down_command (char *count_exp, int from_tty)
{
down_silently_base (count_exp);
- show_and_print_stack_frame (selected_frame, selected_frame_level, 1);
+ show_and_print_stack_frame (selected_frame,
+ frame_relative_level (selected_frame), 1);
}
void
Index: thread.c
===================================================================
RCS file: /cvs/src/src/gdb/thread.c,v
retrieving revision 1.20
diff -u -r1.20 thread.c
--- thread.c 17 Jan 2002 22:15:17 -0000 1.20
+++ thread.c 15 Apr 2002 00:17:42 -0000
@@ -421,7 +421,7 @@
struct thread_info *tp;
ptid_t current_ptid;
struct frame_info *cur_frame;
- int saved_frame_level = selected_frame_level;
+ int saved_frame_level = frame_relative_level (selected_frame);
int counter;
char *extra_info;
@@ -713,7 +713,7 @@
#endif
ui_out_text (uiout, ")]");
- print_stack_frame (selected_frame, selected_frame_level, 1);
+ print_stack_frame (selected_frame, frame_relative_level (selected_frame), 1);
return GDB_RC_OK;
}
Index: tracepoint.c
===================================================================
RCS file: /cvs/src/src/gdb/tracepoint.c,v
retrieving revision 1.36
diff -u -r1.36 tracepoint.c
--- tracepoint.c 27 Mar 2002 21:35:35 -0000 1.36
+++ tracepoint.c 15 Apr 2002 00:17:51 -0000
@@ -1958,7 +1958,8 @@
else
source_only = 1;
- print_stack_frame (selected_frame, selected_frame_level, source_only);
+ print_stack_frame (selected_frame, frame_relative_level (selected_frame),
+ source_only);
do_displays ();
}
}
Index: mi/ChangeLog
===================================================================
RCS file: /cvs/src/src/gdb/mi/ChangeLog,v
retrieving revision 1.64
diff -u -r1.64 ChangeLog
--- mi/ChangeLog 12 Apr 2002 18:18:59 -0000 1.64
+++ mi/ChangeLog 15 Apr 2002 00:17:57 -0000
@@ -1,3 +1,7 @@
+2002-04-14 Andrew Cagney <ac131313@redhat.com>
+
+ * mi-main.c (mi_cmd_exec_return):
+
2002-04-09 Andrew Cagney <ac131313@redhat.com>
* mi-main.c (register_changed_p): Use frame_register_read instead
Index: mi/mi-main.c
===================================================================
RCS file: /cvs/src/src/gdb/mi/mi-main.c,v
retrieving revision 1.28
diff -u -r1.28 mi-main.c
--- mi/mi-main.c 12 Apr 2002 18:18:59 -0000 1.28
+++ mi/mi-main.c 15 Apr 2002 00:18:00 -0000
@@ -165,7 +165,7 @@
/* Because we have called return_command with from_tty = 0, we need
to print the frame here. */
show_and_print_stack_frame (selected_frame,
- selected_frame_level,
+ frame_relative_level (selected_frame),
LOC_AND_ADDRESS);
return MI_CMD_DONE;