From: Andrew Cagney <cagney@gnu.org>
To: gdb-patches@sources.redhat.com
Subject: [commit] Fix info frame's saved registers output
Date: Fri, 29 Oct 2004 14:03:00 -0000 [thread overview]
Message-ID: <41824D61.3050208@gnu.org> (raw)
[-- 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
next reply other threads:[~2004-10-29 14:03 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-10-29 14:03 Andrew Cagney [this message]
2004-10-29 14:35 ` Mark Kettenis
2004-10-30 23:06 ` Eli Zaretskii
2004-10-31 22:44 ` Andrew Cagney
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=41824D61.3050208@gnu.org \
--to=cagney@gnu.org \
--cc=gdb-patches@sources.redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox