aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Marchi <simon.marchi@efficios.com>2024-04-19 15:46:53 -0400
committerSimon Marchi <simon.marchi@polymtl.ca>2024-04-19 16:30:25 -0400
commit8a8b6c53e12c79abad6defd839ea3000a2cd2398 (patch)
tree4a30d30848e94e7fa0c134c0b76a22131f97687e
parentb38f70086dbc2c06ac261829fa31f6cd29d59973 (diff)
downloadbinutils-8a8b6c53e12c79abad6defd839ea3000a2cd2398.zip
binutils-8a8b6c53e12c79abad6defd839ea3000a2cd2398.tar.gz
binutils-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>
-rw-r--r--gdb/regcache.c28
-rw-r--r--gdb/regcache.h5
-rw-r--r--gdb/target.c8
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