[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v14 14/18] gdbstub: Expose functions to read registers
|
From: |
Alex Bennée |
|
Subject: |
Re: [PATCH v14 14/18] gdbstub: Expose functions to read registers |
|
Date: |
Tue, 24 Oct 2023 16:41:57 +0100 |
|
User-agent: |
mu4e 1.11.22; emacs 29.1.90 |
Akihiko Odaki <akihiko.odaki@daynix.com> writes:
> 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);
> +
Can we try to add kdoc comments to the new external facing APIs please.
I should have mentioned that for previous cases as well.
> 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;
--
Alex Bennée
Virtualisation Tech Lead @ Linaro
- Re: [PATCH v14 09/18] gdbstub: Change gdb_get_reg_cb and gdb_set_reg_cb, (continued)
- [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, 2023/10/19
- Re: [PATCH v14 14/18] gdbstub: Expose functions to read registers,
Alex Bennée <=
- [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