This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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;

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]