[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v14 14/18] gdbstub: Expose functions to read registers
|
From: |
Akihiko Odaki |
|
Subject: |
[PATCH v14 14/18] gdbstub: Expose functions to read registers |
|
Date: |
Thu, 19 Oct 2023 19:26:49 +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 346151d0f2..308b5c266a 100644
--- a/include/exec/gdbstub.h
+++ b/include/exec/gdbstub.h
@@ -74,6 +74,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 fade023559..0b64b93960 100644
--- a/gdbstub/gdbstub.c
+++ b/gdbstub/gdbstub.c
@@ -490,7 +490,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 v14 09/18] gdbstub: Change gdb_get_reg_cb and gdb_set_reg_cb, (continued)
- [PATCH v14 09/18] gdbstub: Change gdb_get_reg_cb and gdb_set_reg_cb, Akihiko Odaki, 2023/10/19
- [PATCH v14 12/18] hw/core/cpu: Remove gdb_get_dynamic_xml member, Akihiko Odaki, 2023/10/19
- [PATCH v14 11/18] gdbstub: Infer number of core registers from XML, Akihiko Odaki, 2023/10/19
- [PATCH v14 16/18] plugins: Use different helpers when reading registers, Akihiko Odaki, 2023/10/19
- [PATCH v14 17/18] plugins: Allow to read registers, Akihiko Odaki, 2023/10/19
- [PATCH v14 13/18] gdbstub: Add members to identify registers to GDBFeature, Akihiko Odaki, 2023/10/19
- [PATCH v14 14/18] gdbstub: Expose functions to read registers,
Akihiko Odaki <=
- [PATCH v14 15/18] cpu: Call plugin hooks only when ready, Akihiko Odaki, 2023/10/19
- [PATCH v14 18/18] contrib/plugins: Allow to log registers, Akihiko Odaki, 2023/10/19
- Re: [PATCH v14 00/18] plugins: Allow to read registers, Alex Bennée, 2023/10/24