[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v9 17/23] gdbstub: Expose functions to read registers
|
From: |
Akihiko Odaki |
|
Subject: |
[PATCH v9 17/23] gdbstub: Expose functions to read registers |
|
Date: |
Wed, 11 Oct 2023 16:03:03 +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 b2b2675f6f..d73abfbd44 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 v9 10/23] gdbstub: Use GDBFeature for gdb_register_coprocessor, (continued)
- [PATCH v9 10/23] gdbstub: Use GDBFeature for gdb_register_coprocessor, Akihiko Odaki, 2023/10/11
- [PATCH v9 11/23] gdbstub: Use GDBFeature for GDBRegisterState, Akihiko Odaki, 2023/10/11
- [PATCH v9 13/23] gdbstub: Simplify XML lookup, Akihiko Odaki, 2023/10/11
- [PATCH v9 12/23] gdbstub: Change gdb_get_reg_cb and gdb_set_reg_cb, Akihiko Odaki, 2023/10/11
- [PATCH v9 14/23] gdbstub: Infer number of core registers from XML, Akihiko Odaki, 2023/10/11
- [PATCH v9 15/23] hw/core/cpu: Remove gdb_get_dynamic_xml member, Akihiko Odaki, 2023/10/11
- [PATCH v9 16/23] gdbstub: Add members to identify registers to GDBFeature, Akihiko Odaki, 2023/10/11
- [PATCH v9 18/23] cpu: Call plugin hooks only when ready, Akihiko Odaki, 2023/10/11
- [PATCH v9 19/23] plugins: Remove an extra parameter, Akihiko Odaki, 2023/10/11
- [PATCH v9 17/23] gdbstub: Expose functions to read registers,
Akihiko Odaki <=
- [PATCH v9 20/23] plugins: Use different helpers when reading registers, Akihiko Odaki, 2023/10/11
- [PATCH v9 21/23] plugins: Allow to read registers, Akihiko Odaki, 2023/10/11
- [PATCH v9 22/23] contrib/plugins: Allow to log registers, Akihiko Odaki, 2023/10/11
- [PATCH v9 23/23] plugins: Support C++, Akihiko Odaki, 2023/10/11