diff options
author | Simon Marchi <simon.marchi@efficios.com> | 2024-04-19 15:46:53 -0400 |
---|---|---|
committer | Simon Marchi <simon.marchi@polymtl.ca> | 2024-04-19 16:30:25 -0400 |
commit | 8a8b6c53e12c79abad6defd839ea3000a2cd2398 (patch) | |
tree | 4a30d30848e94e7fa0c134c0b76a22131f97687e /gdb | |
parent | b38f70086dbc2c06ac261829fa31f6cd29d59973 (diff) | |
download | gdb-8a8b6c53e12c79abad6defd839ea3000a2cd2398.zip gdb-8a8b6c53e12c79abad6defd839ea3000a2cd2398.tar.gz gdb-8a8b6c53e12c79abad6defd839ea3000a2cd2398.tar.bz2 |
gdb: make regcache::debug_print_register return a string
Rename the method to `register_debug_string`.
This makes it easier to introduce `target_debug_printf` in a subsequent
patch.
Change-Id: I5bb2d49476d17940d503e66f40762e3f1e3baabc
Approved-By: Tom Tromey <tom@tromey.com>
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/regcache.c | 28 | ||||
-rw-r--r-- | gdb/regcache.h | 5 | ||||
-rw-r--r-- | gdb/target.c | 8 |
3 files changed, 21 insertions, 20 deletions
diff --git a/gdb/regcache.c b/gdb/regcache.c index b7abbe9..c35a813 100644 --- a/gdb/regcache.c +++ b/gdb/regcache.c @@ -1463,36 +1463,38 @@ reg_buffer::num_raw_registers () const return gdbarch_num_regs (arch ()); } -void -regcache::debug_print_register (const char *func, int regno) +std::string +regcache::register_debug_string (int regno) { struct gdbarch *gdbarch = arch (); + std::string s; - gdb_printf (gdb_stdlog, "%s ", func); if (regno >= 0 && regno < gdbarch_num_regs (gdbarch) && gdbarch_register_name (gdbarch, regno)[0] != '\0') - gdb_printf (gdb_stdlog, "(%s)", - gdbarch_register_name (gdbarch, regno)); + string_appendf (s, "register %s:", gdbarch_register_name (gdbarch, regno)); else - gdb_printf (gdb_stdlog, "(%d)", regno); + string_appendf (s, "register %d:", regno); + if (regno >= 0 && regno < gdbarch_num_regs (gdbarch)) { - enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); gdb::array_view<gdb_byte> buf = register_buffer (regno); - gdb_printf (gdb_stdlog, " = "); + string_appendf (s, " = "); + for (gdb_byte byte : buf) - gdb_printf (gdb_stdlog, "%02x", byte); + string_appendf (s, "%02x", byte); if (buf.size () <= sizeof (LONGEST)) { - ULONGEST val = extract_unsigned_integer (buf, byte_order); + ULONGEST val + = extract_unsigned_integer (buf, gdbarch_byte_order (gdbarch)); - gdb_printf (gdb_stdlog, " %s %s", - core_addr_to_string_nz (val), plongest (val)); + string_appendf (s, " %s %s", + core_addr_to_string_nz (val), plongest (val)); } } - gdb_printf (gdb_stdlog, "\n"); + + return s; } /* Implement 'maint flush register-cache' command. */ diff --git a/gdb/regcache.h b/gdb/regcache.h index 9ba6c79..1d049fe 100644 --- a/gdb/regcache.h +++ b/gdb/regcache.h @@ -454,9 +454,8 @@ public: this->m_ptid = ptid; } -/* Dump the contents of a register from the register cache to the target - debug. */ - void debug_print_register (const char *func, int regno); + /* Return a string with the contents of a register, suitable for debug output. */ + std::string register_debug_string (int regno); protected: regcache (inferior *inf_for_target_calls, gdbarch *gdbarch); diff --git a/gdb/target.c b/gdb/target.c index 5c3c1a5..0a836d1 100644 --- a/gdb/target.c +++ b/gdb/target.c @@ -3895,7 +3895,8 @@ target_fetch_registers (struct regcache *regcache, int regno) { current_inferior ()->top_target ()->fetch_registers (regcache, regno); if (targetdebug) - regcache->debug_print_register ("target_fetch_registers", regno); + gdb_printf (gdb_stdlog, "target_fetch_registers: %s", + regcache->register_debug_string (regno).c_str ()); } void @@ -3906,9 +3907,8 @@ target_store_registers (struct regcache *regcache, int regno) current_inferior ()->top_target ()->store_registers (regcache, regno); if (targetdebug) - { - regcache->debug_print_register ("target_store_registers", regno); - } + gdb_printf (gdb_stdlog, "target_store_registers: %s", + regcache->register_debug_string (regno).c_str ()); } int |