summaryrefslogtreecommitdiff
path: root/gdb/stack.c
diff options
context:
space:
mode:
authorAndrew Cagney <cagney@redhat.com>2003-05-03 00:26:34 +0000
committerAndrew Cagney <cagney@redhat.com>2003-05-03 00:26:34 +0000
commitcf054bce6862d043381f82865c46f308182a5568 (patch)
tree18b88fa9cb247a97259d593c3e8535b6c6831de0 /gdb/stack.c
parent934aafc563dd674e1870201835fdb1643aa340b1 (diff)
downloadgdb-cf054bce6862d043381f82865c46f308182a5568.tar.gz
2003-05-02 Andrew Cagney <cagney@redhat.com>
* std-regs.c (value_of_builtin_frame_pc_reg): Delete #ifdef PC_REGNUM, re-indent. * stack.c (frame_info): Use "pc" for the name of get_frame_pc when PC_REGNUM isn't set.
Diffstat (limited to 'gdb/stack.c')
-rw-r--r--gdb/stack.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/gdb/stack.c b/gdb/stack.c
index 2cb9a95dc3d..cfb3605d73a 100644
--- a/gdb/stack.c
+++ b/gdb/stack.c
@@ -614,10 +614,25 @@ frame_info (char *addr_exp, int from_tty)
int i, count, numregs;
char *funname = 0;
enum language funlang = language_unknown;
+ const char *pc_regname;
if (!target_has_stack)
error ("No stack.");
+ /* Name of the value returned by get_frame_pc(). Per comments, "pc"
+ is not a good name. */
+ if (PC_REGNUM >= 0)
+ /* OK, this is weird. The PC_REGNUM hardware register's value can
+ easily not match that of the internal value returned by
+ get_frame_pc(). */
+ pc_regname = REGISTER_NAME (PC_REGNUM);
+ else
+ /* But then, this is weird to. Even without PC_REGNUM, an
+ architectures will often have a hardware register called "pc",
+ and that register's value, again, can easily not match
+ get_frame_pc(). */
+ pc_regname = "pc";
+
fi = parse_frame_specification (addr_exp);
if (fi == NULL)
error ("Invalid frame specified.");
@@ -680,7 +695,7 @@ frame_info (char *addr_exp, int from_tty)
print_address_numeric (get_frame_base (fi), 1, gdb_stdout);
printf_filtered (":\n");
}
- printf_filtered (" %s = ", REGISTER_NAME (PC_REGNUM));
+ printf_filtered (" %s = ", pc_regname);
print_address_numeric (get_frame_pc (fi), 1, gdb_stdout);
wrap_here (" ");
@@ -695,7 +710,7 @@ frame_info (char *addr_exp, int from_tty)
printf_filtered (" (%s:%d)", sal.symtab->filename, sal.line);
puts_filtered ("; ");
wrap_here (" ");
- printf_filtered ("saved %s ", REGISTER_NAME (PC_REGNUM));
+ printf_filtered ("saved %s ", pc_regname);
print_address_numeric (frame_pc_unwind (fi), 1, gdb_stdout);
printf_filtered ("\n");