Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* [commit] Fix info frame's saved registers output
@ 2004-10-29 14:03 Andrew Cagney
  2004-10-29 14:35 ` Mark Kettenis
  2004-10-30 23:06 ` Eli Zaretskii
  0 siblings, 2 replies; 4+ messages in thread
From: Andrew Cagney @ 2004-10-29 14:03 UTC (permalink / raw)
  To: gdb-patches

[-- Attachment #1: Type: text/plain, Size: 273 bytes --]

Hello,

Folloing up from my earlier e-mail, this restores the original behavior 
of the "info frame" saved registers output.  It will now consistently 
display the registers saved by the selected frame, and the output won't 
change as the stack changes.

Committed,
Andrew

[-- Attachment #2: diffs --]
[-- Type: text/plain, Size: 8613 bytes --]

2004-10-27  Andrew Cagney  <cagney@gnu.org>

	* trad-frame.c (trad_frame_get_prev_register): Use
	frame_unwind_register instead of frame_register_unwind, do not
	recurse the register's location.
	* xstormy16-tdep.c (xstormy16_frame_prev_register): 
	* sparc-tdep.c (sparc32_frame_prev_register): Ditto.
	* sparc64-tdep.c (sparc64_frame_prev_register): Ditto.
	* sh-tdep.c (sh_frame_prev_register): Ditto.
	* m68k-tdep.c (m68k_frame_prev_register): Ditto.
	* i386-tdep.c (i386_frame_prev_register): Ditto.
	* dwarf2-frame.c (dwarf2_frame_prev_register): Ditto.
	* amd64-tdep.c (amd64_frame_prev_register): Ditto.

Index: amd64-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/amd64-tdep.c,v
retrieving revision 1.15
diff -p -u -r1.15 amd64-tdep.c
--- amd64-tdep.c	7 Jun 2004 02:02:45 -0000	1.15
+++ amd64-tdep.c	29 Oct 2004 13:33:05 -0000
@@ -898,8 +898,12 @@ amd64_frame_prev_register (struct frame_
       return;
     }
 
-  frame_register_unwind (next_frame, regnum,
-			 optimizedp, lvalp, addrp, realnump, valuep);
+  *optimizedp = 0;
+  *lvalp = lval_register;
+  *addrp = 0;
+  *realnump = regnum;
+  if (valuep)
+    frame_unwind_register (next_frame, (*realnump), valuep);
 }
 
 static const struct frame_unwind amd64_frame_unwind =
Index: dwarf2-frame.c
===================================================================
RCS file: /cvs/src/src/gdb/dwarf2-frame.c,v
retrieving revision 1.38
diff -p -u -r1.38 dwarf2-frame.c
--- dwarf2-frame.c	23 Jul 2004 22:05:20 -0000	1.38
+++ dwarf2-frame.c	29 Oct 2004 13:33:05 -0000
@@ -770,9 +770,12 @@ dwarf2_frame_prev_register (struct frame
       break;
 
     case DWARF2_FRAME_REG_SAVED_REG:
-      regnum = DWARF2_REG_TO_REGNUM (cache->reg[regnum].loc.reg);
-      frame_register_unwind (next_frame, regnum,
-			     optimizedp, lvalp, addrp, realnump, valuep);
+      *optimizedp = 0;
+      *lvalp = lval_register;
+      *addrp = 0;
+      *realnump = DWARF2_REG_TO_REGNUM (cache->reg[regnum].loc.reg);
+      if (valuep)
+	frame_unwind_register (next_frame, (*realnump), valuep);
       break;
 
     case DWARF2_FRAME_REG_SAVED_EXP:
@@ -797,13 +800,21 @@ dwarf2_frame_prev_register (struct frame
 	 "undefined").  Code above issues a complaint about this.
 	 Here just fudge the books, assume GCC, and that the value is
 	 more inner on the stack.  */
-      frame_register_unwind (next_frame, regnum,
-			     optimizedp, lvalp, addrp, realnump, valuep);
+      *optimizedp = 0;
+      *lvalp = lval_register;
+      *addrp = 0;
+      *realnump = regnum;
+      if (valuep)
+	frame_unwind_register (next_frame, (*realnump), valuep);
       break;
 
     case DWARF2_FRAME_REG_SAME_VALUE:
-      frame_register_unwind (next_frame, regnum,
-			     optimizedp, lvalp, addrp, realnump, valuep);
+      *optimizedp = 0;
+      *lvalp = lval_register;
+      *addrp = 0;
+      *realnump = regnum;
+      if (valuep)
+	frame_unwind_register (next_frame, (*realnump), valuep);
       break;
 
     case DWARF2_FRAME_REG_CFA:
Index: i386-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/i386-tdep.c,v
retrieving revision 1.201
diff -p -u -r1.201 i386-tdep.c
--- i386-tdep.c	18 Sep 2004 20:16:37 -0000	1.201
+++ i386-tdep.c	29 Oct 2004 13:33:05 -0000
@@ -984,8 +984,12 @@ i386_frame_prev_register (struct frame_i
 
   if (regnum == I386_EIP_REGNUM && cache->pc_in_eax)
     {
-      frame_register_unwind (next_frame, I386_EAX_REGNUM,
-			     optimizedp, lvalp, addrp, realnump, valuep);
+      *optimizedp = 0;
+      *lvalp = lval_register;
+      *addrp = 0;
+      *realnump = I386_EAX_REGNUM;
+      if (valuep)
+	frame_unwind_register (next_frame, (*realnump), valuep);
       return;
     }
 
@@ -1018,8 +1022,12 @@ i386_frame_prev_register (struct frame_i
       return;
     }
 
-  frame_register_unwind (next_frame, regnum,
-			 optimizedp, lvalp, addrp, realnump, valuep);
+  *optimizedp = 0;
+  *lvalp = lval_register;
+  *addrp = 0;
+  *realnump = regnum;
+  if (valuep)
+    frame_unwind_register (next_frame, (*realnump), valuep);
 }
 
 static const struct frame_unwind i386_frame_unwind =
Index: m68k-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/m68k-tdep.c,v
retrieving revision 1.95
diff -p -u -r1.95 m68k-tdep.c
--- m68k-tdep.c	2 Sep 2004 19:16:36 -0000	1.95
+++ m68k-tdep.c	29 Oct 2004 13:33:05 -0000
@@ -862,8 +862,12 @@ m68k_frame_prev_register (struct frame_i
       return;
     }
 
-  frame_register_unwind (next_frame, regnum,
-			 optimizedp, lvalp, addrp, realnump, valuep);
+  *optimizedp = 0;
+  *lvalp = lval_register;
+  *addrp = 0;
+  *realnump = regnum;
+  if (valuep)
+    frame_unwind_register (next_frame, (*realnump), valuep);
 }
 
 static const struct frame_unwind m68k_frame_unwind =
Index: sh-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/sh-tdep.c,v
retrieving revision 1.177
diff -p -u -r1.177 sh-tdep.c
--- sh-tdep.c	6 Oct 2004 08:59:02 -0000	1.177
+++ sh-tdep.c	29 Oct 2004 13:33:05 -0000
@@ -2363,8 +2363,12 @@ sh_frame_prev_register (struct frame_inf
       return;
     }
 
-  frame_register_unwind (next_frame, regnum,
-			 optimizedp, lvalp, addrp, realnump, valuep);
+  *optimizedp = 0;
+  *lvalp = lval_register;
+  *addrp = 0;
+  *realnump = regnum;
+  if (valuep)
+    frame_unwind_register (next_frame, (*realnump), valuep);
 }
 
 static void
Index: sparc-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/sparc-tdep.c,v
retrieving revision 1.153
diff -p -u -r1.153 sparc-tdep.c
--- sparc-tdep.c	7 Jun 2004 02:02:55 -0000	1.153
+++ sparc-tdep.c	29 Oct 2004 13:33:06 -0000
@@ -763,8 +763,12 @@ sparc32_frame_prev_register (struct fram
       && regnum >= SPARC_O0_REGNUM && regnum <= SPARC_O7_REGNUM)
     regnum += (SPARC_I0_REGNUM - SPARC_O0_REGNUM);
 
-  frame_register_unwind (next_frame, regnum,
-			 optimizedp, lvalp, addrp, realnump, valuep);
+  *optimizedp = 0;
+  *lvalp = lval_register;
+  *addrp = 0;
+  *realnump = regnum;
+  if (valuep)
+    frame_unwind_register (next_frame, (*realnump), valuep);
 }
 
 static const struct frame_unwind sparc32_frame_unwind =
Index: sparc64-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/sparc64-tdep.c,v
retrieving revision 1.14
diff -p -u -r1.14 sparc64-tdep.c
--- sparc64-tdep.c	24 Jun 2004 19:36:41 -0000	1.14
+++ sparc64-tdep.c	29 Oct 2004 13:33:06 -0000
@@ -544,8 +544,12 @@ sparc64_frame_prev_register (struct fram
       && regnum >= SPARC_O0_REGNUM && regnum <= SPARC_O7_REGNUM)
     regnum += (SPARC_I0_REGNUM - SPARC_O0_REGNUM);
 
-  frame_register_unwind (next_frame, regnum,
-			 optimizedp, lvalp, addrp, realnump, valuep);
+  *optimizedp = 0;
+  *lvalp = lval_register;
+  *addrp = 0;
+  *realnump = regnum;
+  if (valuep)
+    frame_unwind_register (next_frame, regnum, valuep);
 }
 
 static const struct frame_unwind sparc64_frame_unwind =
Index: trad-frame.c
===================================================================
RCS file: /cvs/src/src/gdb/trad-frame.c,v
retrieving revision 1.7
diff -p -u -r1.7 trad-frame.c
--- trad-frame.c	1 Aug 2004 14:34:39 -0000	1.7
+++ trad-frame.c	29 Oct 2004 13:33:06 -0000
@@ -145,9 +145,13 @@ trad_frame_get_prev_register (struct fra
     }
   else if (trad_frame_realreg_p (this_saved_regs, regnum))
     {
+      *optimizedp = 0;
+      *lvalp = lval_register;
+      *addrp = 0;
+      *realregp = this_saved_regs[regnum].realreg;
       /* Ask the next frame to return the value of the register.  */
-      frame_register_unwind (next_frame, this_saved_regs[regnum].realreg,
-			     optimizedp, lvalp, addrp, realregp, bufferp);
+      if (bufferp)
+	frame_unwind_register (next_frame, (*realregp), bufferp);
     }
   else if (trad_frame_value_p (this_saved_regs, regnum))
     {
Index: xstormy16-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/xstormy16-tdep.c,v
retrieving revision 1.82
diff -p -u -r1.82 xstormy16-tdep.c
--- xstormy16-tdep.c	23 Sep 2004 17:00:16 -0000	1.82
+++ xstormy16-tdep.c	29 Oct 2004 13:33:06 -0000
@@ -712,8 +712,12 @@ xstormy16_frame_prev_register (struct fr
       return;
     }
 
-  frame_register_unwind (next_frame, regnum,
-                         optimizedp, lvalp, addrp, realnump, valuep);
+  *optimizedp = 0;
+  *lvalp = lval_register;
+  *addrp = 0;
+  *realnump = regnum;
+  if (valuep)
+    frame_unwind_register (next_frame, (*realnump), valuep);
 }
 
 static void

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [commit] Fix info frame's saved registers output
  2004-10-29 14:03 [commit] Fix info frame's saved registers output Andrew Cagney
@ 2004-10-29 14:35 ` Mark Kettenis
  2004-10-30 23:06 ` Eli Zaretskii
  1 sibling, 0 replies; 4+ messages in thread
From: Mark Kettenis @ 2004-10-29 14:35 UTC (permalink / raw)
  To: cagney; +Cc: gdb-patches

   Date: Fri, 29 Oct 2004 10:02:09 -0400
   From: Andrew Cagney <cagney@gnu.org>

   Hello,

   Folloing up from my earlier e-mail, this restores the original behavior 
   of the "info frame" saved registers output.  It will now consistently 
   display the registers saved by the selected frame, and the output won't 
   change as the stack changes.

Makes sense to me.  The only thing that bothers me is why you used the
extra braces around *realnump in the frame_unwind_register calls?

Mark


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [commit] Fix info frame's saved registers output
  2004-10-29 14:03 [commit] Fix info frame's saved registers output Andrew Cagney
  2004-10-29 14:35 ` Mark Kettenis
@ 2004-10-30 23:06 ` Eli Zaretskii
  2004-10-31 22:44   ` Andrew Cagney
  1 sibling, 1 reply; 4+ messages in thread
From: Eli Zaretskii @ 2004-10-30 23:06 UTC (permalink / raw)
  To: Andrew Cagney; +Cc: gdb-patches

> Date: Fri, 29 Oct 2004 10:02:09 -0400
> From: Andrew Cagney <cagney@gnu.org>
> 
> 2004-10-27  Andrew Cagney  <cagney@gnu.org>
> 
> 	* trad-frame.c (trad_frame_get_prev_register): Use
> 	frame_unwind_register instead of frame_register_unwind

Isn't it confusing to have 2 different functions whose names are just
permutations of the same words?  How can a GDB hacker know what is the
difference between frame_register_unwind and frame_unwind_register,
without reading the sources?


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [commit] Fix info frame's saved registers output
  2004-10-30 23:06 ` Eli Zaretskii
@ 2004-10-31 22:44   ` Andrew Cagney
  0 siblings, 0 replies; 4+ messages in thread
From: Andrew Cagney @ 2004-10-31 22:44 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: gdb-patches

Eli Zaretskii wrote:
>>Date: Fri, 29 Oct 2004 10:02:09 -0400
>>From: Andrew Cagney <cagney@gnu.org>
>>
>>2004-10-27  Andrew Cagney  <cagney@gnu.org>
>>
>>	* trad-frame.c (trad_frame_get_prev_register): Use
>>	frame_unwind_register instead of frame_register_unwind
> 
> 
> Isn't it confusing to have 2 different functions whose names are just
> permutations of the same words?  How can a GDB hacker know what is the
> difference between frame_register_unwind and frame_unwind_register,
> without reading the sources?

True, wan't to rename it?  At the top of frame.h there's a blurb 
proposed naming convention.

Andrew


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2004-10-31 22:44 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-10-29 14:03 [commit] Fix info frame's saved registers output Andrew Cagney
2004-10-29 14:35 ` Mark Kettenis
2004-10-30 23:06 ` Eli Zaretskii
2004-10-31 22:44   ` Andrew Cagney

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox