Message ID | 20230731084354.115015-5-akihiko.odaki@daynix.com |
---|---|
State | New |
Headers | show |
Series | plugins: Allow to read registers | expand |
On 31/7/23 10:43, Akihiko Odaki wrote: > This function is useful to determine the number of registers exposed to > GDB from the XML name. > > Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com> > --- > include/exec/gdbstub.h | 2 ++ > gdbstub/gdbstub.c | 13 +++++++++++++ > 2 files changed, 15 insertions(+) > > diff --git a/include/exec/gdbstub.h b/include/exec/gdbstub.h > index 22e5add5b1..3115dc21c0 100644 > --- a/include/exec/gdbstub.h > +++ b/include/exec/gdbstub.h > @@ -34,6 +34,8 @@ void gdb_register_coprocessor(CPUState *cpu, > */ > int gdbserver_start(const char *port_or_device); > > +const GDBFeature *gdb_find_static_feature(const char *xmlname); > + > void gdb_set_stop_cpu(CPUState *cpu); > > /** > diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c > index fad70200d8..6d9cef5b95 100644 > --- a/gdbstub/gdbstub.c > +++ b/gdbstub/gdbstub.c > @@ -414,6 +414,19 @@ static const char *get_feature_xml(const char *p, const char **newp, > return name ? gdb_features[i].xml : NULL; > } > > +const GDBFeature *gdb_find_static_feature(const char *xmlname) > +{ > + const GDBFeature *feature; Alternatively (in case you consider the suggestion to use array of dyn_features): const GDBFeature *gdb_find_feature(const GDBFeature *gdb_features, const char *xmlname) { const GDBFeature *feature; const GDBFeature *features = gdb_features ?: gdb_static_features; > + for (feature = gdb_features; feature->xmlname; feature++) { > + if (!strcmp(feature->xmlname, xmlname)) { > + return feature; > + } > + } > + > + return NULL; > +} Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Akihiko Odaki <akihiko.odaki@daynix.com> writes: > This function is useful to determine the number of registers exposed to > GDB from the XML name. > > Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com> > --- > include/exec/gdbstub.h | 2 ++ > gdbstub/gdbstub.c | 13 +++++++++++++ > 2 files changed, 15 insertions(+) > > diff --git a/include/exec/gdbstub.h b/include/exec/gdbstub.h > index 22e5add5b1..3115dc21c0 100644 > --- a/include/exec/gdbstub.h > +++ b/include/exec/gdbstub.h > @@ -34,6 +34,8 @@ void gdb_register_coprocessor(CPUState *cpu, > */ > int gdbserver_start(const char *port_or_device); > > +const GDBFeature *gdb_find_static_feature(const char *xmlname); > + > void gdb_set_stop_cpu(CPUState *cpu); > > /** > diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c > index fad70200d8..6d9cef5b95 100644 > --- a/gdbstub/gdbstub.c > +++ b/gdbstub/gdbstub.c > @@ -414,6 +414,19 @@ static const char *get_feature_xml(const char *p, const char **newp, > return name ? gdb_features[i].xml : NULL; > } > > +const GDBFeature *gdb_find_static_feature(const char *xmlname) > +{ > + const GDBFeature *feature; > + > + for (feature = gdb_features; feature->xmlname; feature++) { > + if (!strcmp(feature->xmlname, xmlname)) { I'd prefer g_strcmp0(feature->xmlname, xmlname) == 0 but either way: Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
diff --git a/include/exec/gdbstub.h b/include/exec/gdbstub.h index 22e5add5b1..3115dc21c0 100644 --- a/include/exec/gdbstub.h +++ b/include/exec/gdbstub.h @@ -34,6 +34,8 @@ void gdb_register_coprocessor(CPUState *cpu, */ int gdbserver_start(const char *port_or_device); +const GDBFeature *gdb_find_static_feature(const char *xmlname); + void gdb_set_stop_cpu(CPUState *cpu); /** diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c index fad70200d8..6d9cef5b95 100644 --- a/gdbstub/gdbstub.c +++ b/gdbstub/gdbstub.c @@ -414,6 +414,19 @@ static const char *get_feature_xml(const char *p, const char **newp, return name ? gdb_features[i].xml : NULL; } +const GDBFeature *gdb_find_static_feature(const char *xmlname) +{ + const GDBFeature *feature; + + for (feature = gdb_features; feature->xmlname; feature++) { + if (!strcmp(feature->xmlname, xmlname)) { + return feature; + } + } + + return NULL; +} + static int gdb_read_register(CPUState *cpu, GByteArray *buf, int reg) { CPUClass *cc = CPU_GET_CLASS(cpu);
This function is useful to determine the number of registers exposed to GDB from the XML name. Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com> --- include/exec/gdbstub.h | 2 ++ gdbstub/gdbstub.c | 13 +++++++++++++ 2 files changed, 15 insertions(+)