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]

[commit] Eliminate two X deprecated_selected_frame


Hello,

The attached makes two changes:

- Removes two references to the global deprecated_selected_frame.
One is replaced with get_selected_frame() and the other with the parameter `frame'. Only 144 to go ...


- Fixes the ordering of the checks in get_current_frame() so that target_has_registers is checked before target_has_stack. Otherwize, you end up with the very confusing message:

	(gdb) print $pc
	No stack

(it also avoids a testsuite regression :-)

committed,
Andrew
2003-03-12  Andrew Cagney  <cagney at redhat dot com>

	* frame.c (get_current_frame): Check target_has_registers before
	checking target_has_stack.
	* eval.c (evaluate_subexp_standard): Use get_selected_frame,
	instead of deprecated_selected_frame.
	* findvar.c (value_of_register): Pass "frame", not
	deprecated_selected_frame, to value_of_builtin_reg.

Index: eval.c
===================================================================
RCS file: /cvs/src/src/gdb/eval.c,v
retrieving revision 1.27
diff -u -r1.27 eval.c
--- eval.c	14 Jan 2003 00:49:03 -0000	1.27
+++ eval.c	12 Mar 2003 22:34:52 -0000
@@ -447,7 +447,7 @@
     case OP_REGISTER:
       {
 	int regno = longest_to_int (exp->elts[pc + 1].longconst);
-	struct value *val = value_of_register (regno, deprecated_selected_frame);
+	struct value *val = value_of_register (regno, get_selected_frame ());
 	(*pos) += 2;
 	if (val == NULL)
 	  error ("Value of register %s not available.",
Index: findvar.c
===================================================================
RCS file: /cvs/src/src/gdb/findvar.c,v
retrieving revision 1.50
diff -u -r1.50 findvar.c
--- findvar.c	1 Mar 2003 17:03:19 -0000	1.50
+++ findvar.c	12 Mar 2003 22:34:52 -0000
@@ -305,7 +305,7 @@
   /* Builtin registers lie completly outside of the range of normal
      registers.  Catch them early so that the target never sees them.  */
   if (regnum >= NUM_REGS + NUM_PSEUDO_REGS)
-    return value_of_builtin_reg (regnum, deprecated_selected_frame);
+    return value_of_builtin_reg (regnum, frame);
 
   get_saved_register (raw_buffer, &optim, &addr,
 		      frame, regnum, &lval);
Index: frame.c
===================================================================
RCS file: /cvs/src/src/gdb/frame.c,v
retrieving revision 1.78
diff -u -r1.78 frame.c
--- frame.c	12 Mar 2003 16:50:43 -0000	1.78
+++ frame.c	12 Mar 2003 22:34:52 -0000
@@ -566,10 +566,15 @@
 struct frame_info *
 get_current_frame (void)
 {
-  if (!target_has_stack)
-    error ("No stack.");
+  /* First check, and report, the lack of registers.  Having GDB
+     report "No stack!" or "No memory" when the target doesn't even
+     have registers is very confusing.  Besides, "printcmd.exp"
+     explicitly checks that ``print $pc'' with no registers prints "No
+     registers".  */
   if (!target_has_registers)
     error ("No registers.");
+  if (!target_has_stack)
+    error ("No stack.");
   if (!target_has_memory)
     error ("No memory.");
   if (current_frame == NULL)

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