diff options
author | Andrew Cagney <cagney@redhat.com> | 2002-05-04 14:19:21 +0000 |
---|---|---|
committer | Andrew Cagney <cagney@redhat.com> | 2002-05-04 14:19:21 +0000 |
commit | aed7cf6eaafd616b5e71c348a121c381b45b4576 (patch) | |
tree | c4c99f89826e71735927a27dfc1ab607194a6361 /gdb/target.c | |
parent | 49deb6adce6f3ea565d803197632f2880cecd3e8 (diff) | |
download | gdb-aed7cf6eaafd616b5e71c348a121c381b45b4576.tar.gz |
* target.c (debug_print_register): New function. Handle oversize
registers.
(debug_to_fetch_registers): Call.
(debug_to_store_registers): Call.
Diffstat (limited to 'gdb/target.c')
-rw-r--r-- | gdb/target.c | 48 |
1 files changed, 32 insertions, 16 deletions
diff --git a/gdb/target.c b/gdb/target.c index ddc012c4f83..2cd492809f4 100644 --- a/gdb/target.c +++ b/gdb/target.c @@ -1653,31 +1653,47 @@ debug_to_post_wait (ptid_t ptid, int status) } static void +debug_print_register (const char * func, int regno) +{ + fprintf_unfiltered (gdb_stdlog, "%s ", func); + if (regno >= 0 && regno < NUM_REGS + NUM_PSEUDO_REGS + && REGISTER_NAME (regno) != NULL && REGISTER_NAME (regno)[0] != '\0') + fprintf_unfiltered (gdb_stdlog, "(%s)", REGISTER_NAME (regno)); + else + fprintf_unfiltered (gdb_stdlog, "(%d)", regno); + if (regno >= 0) + { + int i; + unsigned char *buf = alloca (MAX_REGISTER_RAW_SIZE); + read_register_gen (regno, buf); + fprintf_unfiltered (gdb_stdlog, " = "); + for (i = 0; i < REGISTER_RAW_SIZE (regno); i++) + { + fprintf_unfiltered (gdb_stdlog, "%02x", buf[i]); + } + if (REGISTER_RAW_SIZE (regno) <= sizeof (LONGEST)) + { + fprintf_unfiltered (gdb_stdlog, " 0x%s %s", + paddr_nz (read_register (regno)), + paddr_d (read_register (regno))); + } + } + fprintf_unfiltered (gdb_stdlog, "\n"); +} + +static void debug_to_fetch_registers (int regno) { debug_target.to_fetch_registers (regno); - - fprintf_unfiltered (gdb_stdlog, "target_fetch_registers (%s)", - regno != -1 ? REGISTER_NAME (regno) : "-1"); - if (regno != -1) - fprintf_unfiltered (gdb_stdlog, " = 0x%lx %ld", - (unsigned long) read_register (regno), - (unsigned long) read_register (regno)); - fprintf_unfiltered (gdb_stdlog, "\n"); + debug_print_register ("target_fetch_registers", regno); } static void debug_to_store_registers (int regno) { debug_target.to_store_registers (regno); - - if (regno >= 0 && regno < NUM_REGS) - fprintf_unfiltered (gdb_stdlog, "target_store_registers (%s) = 0x%lx %ld\n", - REGISTER_NAME (regno), - (unsigned long) read_register (regno), - (unsigned long) read_register (regno)); - else - fprintf_unfiltered (gdb_stdlog, "target_store_registers (%d)\n", regno); + debug_print_register ("target_store_registers", regno); + fprintf_unfiltered (gdb_stdlog, "\n"); } static void |