From bf0c5130d28f010c62fcec83cc8775ebc321f19e Mon Sep 17 00:00:00 2001 From: Andrew Cagney Date: Sat, 4 May 2002 14:19:21 +0000 Subject: [PATCH] * target.c (debug_print_register): New function. Handle oversize registers. (debug_to_fetch_registers): Call. (debug_to_store_registers): Call. --- gdb/ChangeLog | 7 +++++++ gdb/target.c | 48 ++++++++++++++++++++++++++++++++---------------- 2 files changed, 39 insertions(+), 16 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index d7582011ab..de25269d73 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2002-05-04 Andrew Cagney + + * target.c (debug_print_register): New function. Handle oversize + registers. + (debug_to_fetch_registers): Call. + (debug_to_store_registers): Call. + 2002-05-03 Jim Blandy * stabsread.c (cleanup_undefined_types): Use replace_type, not memcpy. diff --git a/gdb/target.c b/gdb/target.c index ddc012c4f8..2cd492809f 100644 --- a/gdb/target.c +++ b/gdb/target.c @@ -1652,32 +1652,48 @@ debug_to_post_wait (ptid_t ptid, int status) PIDGET (ptid), 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 -- 2.34.1