[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v11 14/18] gdbstub: Expose functions to read registers
From: |
Akihiko Odaki |
Subject: |
[PATCH v11 14/18] gdbstub: Expose functions to read registers |
Date: |
Thu, 12 Oct 2023 22:06:08 +0900 |
gdb_find_feature() and gdb_find_feature_register() find registers.
gdb_read_register() actually reads registers.
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
---
include/exec/gdbstub.h | 5 +++++
gdbstub/gdbstub.c | 31 ++++++++++++++++++++++++++++++-
2 files changed, 35 insertions(+), 1 deletion(-)
diff --git a/include/exec/gdbstub.h b/include/exec/gdbstub.h
index 229fa382bc..b85f700c5f 100644
--- a/include/exec/gdbstub.h
+++ b/include/exec/gdbstub.h
@@ -71,6 +71,11 @@ void gdb_feature_builder_end(const GDBFeatureBuilder
*builder);
const GDBFeature *gdb_find_static_feature(const char *xmlname);
+int gdb_find_feature(CPUState *cpu, const char *name);
+int gdb_find_feature_register(CPUState *cpu, int feature, const char *name);
+
+int gdb_read_register(CPUState *cpu, GByteArray *buf, int reg);
+
void gdb_set_stop_cpu(CPUState *cpu);
/* in gdbstub-xml.c, generated by scripts/feature_to_c.py */
diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c
index 987af2298c..a3fc65ec86 100644
--- a/gdbstub/gdbstub.c
+++ b/gdbstub/gdbstub.c
@@ -484,7 +484,36 @@ const GDBFeature *gdb_find_static_feature(const char
*xmlname)
g_assert_not_reached();
}
-static int gdb_read_register(CPUState *cpu, GByteArray *buf, int reg)
+int gdb_find_feature(CPUState *cpu, const char *name)
+{
+ GDBRegisterState *r;
+
+ for (guint i = 0; i < cpu->gdb_regs->len; i++) {
+ r = &g_array_index(cpu->gdb_regs, GDBRegisterState, i);
+ if (!strcmp(name, r->feature->name)) {
+ return i;
+ }
+ }
+
+ return -1;
+}
+
+int gdb_find_feature_register(CPUState *cpu, int feature, const char *name)
+{
+ GDBRegisterState *r;
+
+ r = &g_array_index(cpu->gdb_regs, GDBRegisterState, feature);
+
+ for (int i = 0; i < r->feature->num_regs; i++) {
+ if (r->feature->regs[i] && !strcmp(name, r->feature->regs[i])) {
+ return r->base_reg + i;
+ }
+ }
+
+ return -1;
+}
+
+int gdb_read_register(CPUState *cpu, GByteArray *buf, int reg)
{
CPUClass *cc = CPU_GET_CLASS(cpu);
GDBRegisterState *r;
--
2.42.0
- [PATCH v11 04/18] target/arm: Use GDBFeature for dynamic XML, (continued)
- [PATCH v11 04/18] target/arm: Use GDBFeature for dynamic XML, Akihiko Odaki, 2023/10/12
- [PATCH v11 05/18] target/ppc: Use GDBFeature for dynamic XML, Akihiko Odaki, 2023/10/12
- [PATCH v11 06/18] target/riscv: Use GDBFeature for dynamic XML, Akihiko Odaki, 2023/10/12
- [PATCH v11 07/18] gdbstub: Use GDBFeature for gdb_register_coprocessor, Akihiko Odaki, 2023/10/12
- [PATCH v11 09/18] gdbstub: Change gdb_get_reg_cb and gdb_set_reg_cb, Akihiko Odaki, 2023/10/12
- [PATCH v11 08/18] gdbstub: Use GDBFeature for GDBRegisterState, Akihiko Odaki, 2023/10/12
- [PATCH v11 11/18] gdbstub: Infer number of core registers from XML, Akihiko Odaki, 2023/10/12
- [PATCH v11 10/18] gdbstub: Simplify XML lookup, Akihiko Odaki, 2023/10/12
- [PATCH v11 12/18] hw/core/cpu: Remove gdb_get_dynamic_xml member, Akihiko Odaki, 2023/10/12
- [PATCH v11 13/18] gdbstub: Add members to identify registers to GDBFeature, Akihiko Odaki, 2023/10/12
- [PATCH v11 14/18] gdbstub: Expose functions to read registers,
Akihiko Odaki <=
- [PATCH v11 15/18] cpu: Call plugin hooks only when ready, Akihiko Odaki, 2023/10/12
- [PATCH v11 16/18] plugins: Use different helpers when reading registers, Akihiko Odaki, 2023/10/12
- [PATCH v11 17/18] plugins: Allow to read registers, Akihiko Odaki, 2023/10/12
- [PATCH v11 18/18] contrib/plugins: Allow to log registers, Akihiko Odaki, 2023/10/12