diff mbox series

[14/25] hw/core/cpu: Return static value with gdb_arch_name()

Message ID 20231009164104.369749-15-alex.bennee@linaro.org
State Handled Elsewhere
Headers show
Series October maintainer omnibus pre-PR (tests, gdbstub, plugins) | expand

Commit Message

Alex Bennée Oct. 9, 2023, 4:40 p.m. UTC
From: Akihiko Odaki <akihiko.odaki@daynix.com>

All implementations of gdb_arch_name() returns dynamic duplicates of
static strings. It's also unlikely that there will be an implementation
of gdb_arch_name() that returns a truly dynamic value due to the nature
of the function returning a well-known identifiers. Qualify the value
gdb_arch_name() with const and make all of its implementations return
static strings.

Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20230912224107.29669-8-akihiko.odaki@daynix.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
 include/hw/core/cpu.h  | 2 +-
 target/ppc/internal.h  | 2 +-
 gdbstub/gdbstub.c      | 3 +--
 target/arm/cpu.c       | 6 +++---
 target/arm/cpu64.c     | 4 ++--
 target/i386/cpu.c      | 6 +++---
 target/loongarch/cpu.c | 8 ++++----
 target/ppc/gdbstub.c   | 6 +++---
 target/riscv/cpu.c     | 6 +++---
 target/s390x/cpu.c     | 4 ++--
 target/tricore/cpu.c   | 4 ++--
 11 files changed, 25 insertions(+), 26 deletions(-)

Comments

Alistair Francis Oct. 11, 2023, 12:55 a.m. UTC | #1
On Tue, Oct 10, 2023 at 2:44 AM Alex Bennée <alex.bennee@linaro.org> wrote:
>
> From: Akihiko Odaki <akihiko.odaki@daynix.com>
>
> All implementations of gdb_arch_name() returns dynamic duplicates of
> static strings. It's also unlikely that there will be an implementation
> of gdb_arch_name() that returns a truly dynamic value due to the nature
> of the function returning a well-known identifiers. Qualify the value
> gdb_arch_name() with const and make all of its implementations return
> static strings.
>
> Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
> Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
> Message-Id: <20230912224107.29669-8-akihiko.odaki@daynix.com>
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>

Reviewed-by: Alistair Francis <alistair.francis@wdc.com>

Alistair

> ---
>  include/hw/core/cpu.h  | 2 +-
>  target/ppc/internal.h  | 2 +-
>  gdbstub/gdbstub.c      | 3 +--
>  target/arm/cpu.c       | 6 +++---
>  target/arm/cpu64.c     | 4 ++--
>  target/i386/cpu.c      | 6 +++---
>  target/loongarch/cpu.c | 8 ++++----
>  target/ppc/gdbstub.c   | 6 +++---
>  target/riscv/cpu.c     | 6 +++---
>  target/s390x/cpu.c     | 4 ++--
>  target/tricore/cpu.c   | 4 ++--
>  11 files changed, 25 insertions(+), 26 deletions(-)
>
> diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h
> index e02bc5980f..7b8347ed5a 100644
> --- a/include/hw/core/cpu.h
> +++ b/include/hw/core/cpu.h
> @@ -165,7 +165,7 @@ struct CPUClass {
>      vaddr (*gdb_adjust_breakpoint)(CPUState *cpu, vaddr addr);
>
>      const char *gdb_core_xml_file;
> -    gchar * (*gdb_arch_name)(CPUState *cpu);
> +    const gchar * (*gdb_arch_name)(CPUState *cpu);
>      const char * (*gdb_get_dynamic_xml)(CPUState *cpu, const char *xmlname);
>
>      void (*disas_set_info)(CPUState *cpu, disassemble_info *info);
> diff --git a/target/ppc/internal.h b/target/ppc/internal.h
> index 15803bc313..c881c67a8b 100644
> --- a/target/ppc/internal.h
> +++ b/target/ppc/internal.h
> @@ -221,7 +221,7 @@ void destroy_ppc_opcodes(PowerPCCPU *cpu);
>
>  /* gdbstub.c */
>  void ppc_gdb_init(CPUState *cs, PowerPCCPUClass *ppc);
> -gchar *ppc_gdb_arch_name(CPUState *cs);
> +const gchar *ppc_gdb_arch_name(CPUState *cs);
>
>  /**
>   * prot_for_access_type:
> diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c
> index bba2640293..a20169c27b 100644
> --- a/gdbstub/gdbstub.c
> +++ b/gdbstub/gdbstub.c
> @@ -380,10 +380,9 @@ static const char *get_feature_xml(const char *p, const char **newp,
>                              "<target>");
>
>              if (cc->gdb_arch_name) {
> -                g_autofree gchar *arch = cc->gdb_arch_name(cpu);
>                  g_string_append_printf(xml,
>                                         "<architecture>%s</architecture>",
> -                                       arch);
> +                                       cc->gdb_arch_name(cpu));
>              }
>              g_string_append(xml, "<xi:include href=\"");
>              g_string_append(xml, cc->gdb_core_xml_file);
> diff --git a/target/arm/cpu.c b/target/arm/cpu.c
> index b65e8cfea3..6c6c551573 100644
> --- a/target/arm/cpu.c
> +++ b/target/arm/cpu.c
> @@ -2319,15 +2319,15 @@ static Property arm_cpu_properties[] = {
>      DEFINE_PROP_END_OF_LIST()
>  };
>
> -static gchar *arm_gdb_arch_name(CPUState *cs)
> +static const gchar *arm_gdb_arch_name(CPUState *cs)
>  {
>      ARMCPU *cpu = ARM_CPU(cs);
>      CPUARMState *env = &cpu->env;
>
>      if (arm_feature(env, ARM_FEATURE_IWMMXT)) {
> -        return g_strdup("iwmmxt");
> +        return "iwmmxt";
>      }
> -    return g_strdup("arm");
> +    return "arm";
>  }
>
>  #ifndef CONFIG_USER_ONLY
> diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c
> index 811f3b38c2..1cb9d5b81a 100644
> --- a/target/arm/cpu64.c
> +++ b/target/arm/cpu64.c
> @@ -781,9 +781,9 @@ static void aarch64_cpu_finalizefn(Object *obj)
>  {
>  }
>
> -static gchar *aarch64_gdb_arch_name(CPUState *cs)
> +static const gchar *aarch64_gdb_arch_name(CPUState *cs)
>  {
> -    return g_strdup("aarch64");
> +    return "aarch64";
>  }
>
>  static void aarch64_cpu_class_init(ObjectClass *oc, void *data)
> diff --git a/target/i386/cpu.c b/target/i386/cpu.c
> index 9fad31b8db..c09bab4281 100644
> --- a/target/i386/cpu.c
> +++ b/target/i386/cpu.c
> @@ -5915,12 +5915,12 @@ static void x86_cpu_load_model(X86CPU *cpu, X86CPUModel *model)
>      memset(&env->user_features, 0, sizeof(env->user_features));
>  }
>
> -static gchar *x86_gdb_arch_name(CPUState *cs)
> +static const gchar *x86_gdb_arch_name(CPUState *cs)
>  {
>  #ifdef TARGET_X86_64
> -    return g_strdup("i386:x86-64");
> +    return "i386:x86-64";
>  #else
> -    return g_strdup("i386");
> +    return "i386";
>  #endif
>  }
>
> diff --git a/target/loongarch/cpu.c b/target/loongarch/cpu.c
> index 2bea7ca5d5..ef1bf89dac 100644
> --- a/target/loongarch/cpu.c
> +++ b/target/loongarch/cpu.c
> @@ -766,9 +766,9 @@ static void loongarch_cpu_class_init(ObjectClass *c, void *data)
>  #endif
>  }
>
> -static gchar *loongarch32_gdb_arch_name(CPUState *cs)
> +static const gchar *loongarch32_gdb_arch_name(CPUState *cs)
>  {
> -    return g_strdup("loongarch32");
> +    return "loongarch32";
>  }
>
>  static void loongarch32_cpu_class_init(ObjectClass *c, void *data)
> @@ -780,9 +780,9 @@ static void loongarch32_cpu_class_init(ObjectClass *c, void *data)
>      cc->gdb_arch_name = loongarch32_gdb_arch_name;
>  }
>
> -static gchar *loongarch64_gdb_arch_name(CPUState *cs)
> +static const gchar *loongarch64_gdb_arch_name(CPUState *cs)
>  {
> -    return g_strdup("loongarch64");
> +    return "loongarch64";
>  }
>
>  static void loongarch64_cpu_class_init(ObjectClass *c, void *data)
> diff --git a/target/ppc/gdbstub.c b/target/ppc/gdbstub.c
> index 2ad11510bf..778ef73bd7 100644
> --- a/target/ppc/gdbstub.c
> +++ b/target/ppc/gdbstub.c
> @@ -589,12 +589,12 @@ static int gdb_set_vsx_reg(CPUPPCState *env, uint8_t *mem_buf, int n)
>      return 0;
>  }
>
> -gchar *ppc_gdb_arch_name(CPUState *cs)
> +const gchar *ppc_gdb_arch_name(CPUState *cs)
>  {
>  #if defined(TARGET_PPC64)
> -    return g_strdup("powerpc:common64");
> +    return "powerpc:common64";
>  #else
> -    return g_strdup("powerpc:common");
> +    return "powerpc:common";
>  #endif
>  }
>
> diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c
> index ac2b94b6a6..f5572704de 100644
> --- a/target/riscv/cpu.c
> +++ b/target/riscv/cpu.c
> @@ -2004,17 +2004,17 @@ static Property riscv_cpu_properties[] = {
>      DEFINE_PROP_END_OF_LIST(),
>  };
>
> -static gchar *riscv_gdb_arch_name(CPUState *cs)
> +static const gchar *riscv_gdb_arch_name(CPUState *cs)
>  {
>      RISCVCPU *cpu = RISCV_CPU(cs);
>      CPURISCVState *env = &cpu->env;
>
>      switch (riscv_cpu_mxl(env)) {
>      case MXL_RV32:
> -        return g_strdup("riscv:rv32");
> +        return "riscv:rv32";
>      case MXL_RV64:
>      case MXL_RV128:
> -        return g_strdup("riscv:rv64");
> +        return "riscv:rv64";
>      default:
>          g_assert_not_reached();
>      }
> diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c
> index 4f7599d72c..6093ab0a12 100644
> --- a/target/s390x/cpu.c
> +++ b/target/s390x/cpu.c
> @@ -282,9 +282,9 @@ static void s390_cpu_initfn(Object *obj)
>  #endif
>  }
>
> -static gchar *s390_gdb_arch_name(CPUState *cs)
> +static const gchar *s390_gdb_arch_name(CPUState *cs)
>  {
> -    return g_strdup("s390:64-bit");
> +    return "s390:64-bit";
>  }
>
>  static Property s390x_cpu_properties[] = {
> diff --git a/target/tricore/cpu.c b/target/tricore/cpu.c
> index d1477622e6..5ca666ee12 100644
> --- a/target/tricore/cpu.c
> +++ b/target/tricore/cpu.c
> @@ -29,9 +29,9 @@ static inline void set_feature(CPUTriCoreState *env, int feature)
>      env->features |= 1ULL << feature;
>  }
>
> -static gchar *tricore_gdb_arch_name(CPUState *cs)
> +static const gchar *tricore_gdb_arch_name(CPUState *cs)
>  {
> -    return g_strdup("tricore");
> +    return "tricore";
>  }
>
>  static void tricore_cpu_set_pc(CPUState *cs, vaddr value)
> --
> 2.39.2
>
>
diff mbox series

Patch

diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h
index e02bc5980f..7b8347ed5a 100644
--- a/include/hw/core/cpu.h
+++ b/include/hw/core/cpu.h
@@ -165,7 +165,7 @@  struct CPUClass {
     vaddr (*gdb_adjust_breakpoint)(CPUState *cpu, vaddr addr);
 
     const char *gdb_core_xml_file;
-    gchar * (*gdb_arch_name)(CPUState *cpu);
+    const gchar * (*gdb_arch_name)(CPUState *cpu);
     const char * (*gdb_get_dynamic_xml)(CPUState *cpu, const char *xmlname);
 
     void (*disas_set_info)(CPUState *cpu, disassemble_info *info);
diff --git a/target/ppc/internal.h b/target/ppc/internal.h
index 15803bc313..c881c67a8b 100644
--- a/target/ppc/internal.h
+++ b/target/ppc/internal.h
@@ -221,7 +221,7 @@  void destroy_ppc_opcodes(PowerPCCPU *cpu);
 
 /* gdbstub.c */
 void ppc_gdb_init(CPUState *cs, PowerPCCPUClass *ppc);
-gchar *ppc_gdb_arch_name(CPUState *cs);
+const gchar *ppc_gdb_arch_name(CPUState *cs);
 
 /**
  * prot_for_access_type:
diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c
index bba2640293..a20169c27b 100644
--- a/gdbstub/gdbstub.c
+++ b/gdbstub/gdbstub.c
@@ -380,10 +380,9 @@  static const char *get_feature_xml(const char *p, const char **newp,
                             "<target>");
 
             if (cc->gdb_arch_name) {
-                g_autofree gchar *arch = cc->gdb_arch_name(cpu);
                 g_string_append_printf(xml,
                                        "<architecture>%s</architecture>",
-                                       arch);
+                                       cc->gdb_arch_name(cpu));
             }
             g_string_append(xml, "<xi:include href=\"");
             g_string_append(xml, cc->gdb_core_xml_file);
diff --git a/target/arm/cpu.c b/target/arm/cpu.c
index b65e8cfea3..6c6c551573 100644
--- a/target/arm/cpu.c
+++ b/target/arm/cpu.c
@@ -2319,15 +2319,15 @@  static Property arm_cpu_properties[] = {
     DEFINE_PROP_END_OF_LIST()
 };
 
-static gchar *arm_gdb_arch_name(CPUState *cs)
+static const gchar *arm_gdb_arch_name(CPUState *cs)
 {
     ARMCPU *cpu = ARM_CPU(cs);
     CPUARMState *env = &cpu->env;
 
     if (arm_feature(env, ARM_FEATURE_IWMMXT)) {
-        return g_strdup("iwmmxt");
+        return "iwmmxt";
     }
-    return g_strdup("arm");
+    return "arm";
 }
 
 #ifndef CONFIG_USER_ONLY
diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c
index 811f3b38c2..1cb9d5b81a 100644
--- a/target/arm/cpu64.c
+++ b/target/arm/cpu64.c
@@ -781,9 +781,9 @@  static void aarch64_cpu_finalizefn(Object *obj)
 {
 }
 
-static gchar *aarch64_gdb_arch_name(CPUState *cs)
+static const gchar *aarch64_gdb_arch_name(CPUState *cs)
 {
-    return g_strdup("aarch64");
+    return "aarch64";
 }
 
 static void aarch64_cpu_class_init(ObjectClass *oc, void *data)
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index 9fad31b8db..c09bab4281 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -5915,12 +5915,12 @@  static void x86_cpu_load_model(X86CPU *cpu, X86CPUModel *model)
     memset(&env->user_features, 0, sizeof(env->user_features));
 }
 
-static gchar *x86_gdb_arch_name(CPUState *cs)
+static const gchar *x86_gdb_arch_name(CPUState *cs)
 {
 #ifdef TARGET_X86_64
-    return g_strdup("i386:x86-64");
+    return "i386:x86-64";
 #else
-    return g_strdup("i386");
+    return "i386";
 #endif
 }
 
diff --git a/target/loongarch/cpu.c b/target/loongarch/cpu.c
index 2bea7ca5d5..ef1bf89dac 100644
--- a/target/loongarch/cpu.c
+++ b/target/loongarch/cpu.c
@@ -766,9 +766,9 @@  static void loongarch_cpu_class_init(ObjectClass *c, void *data)
 #endif
 }
 
-static gchar *loongarch32_gdb_arch_name(CPUState *cs)
+static const gchar *loongarch32_gdb_arch_name(CPUState *cs)
 {
-    return g_strdup("loongarch32");
+    return "loongarch32";
 }
 
 static void loongarch32_cpu_class_init(ObjectClass *c, void *data)
@@ -780,9 +780,9 @@  static void loongarch32_cpu_class_init(ObjectClass *c, void *data)
     cc->gdb_arch_name = loongarch32_gdb_arch_name;
 }
 
-static gchar *loongarch64_gdb_arch_name(CPUState *cs)
+static const gchar *loongarch64_gdb_arch_name(CPUState *cs)
 {
-    return g_strdup("loongarch64");
+    return "loongarch64";
 }
 
 static void loongarch64_cpu_class_init(ObjectClass *c, void *data)
diff --git a/target/ppc/gdbstub.c b/target/ppc/gdbstub.c
index 2ad11510bf..778ef73bd7 100644
--- a/target/ppc/gdbstub.c
+++ b/target/ppc/gdbstub.c
@@ -589,12 +589,12 @@  static int gdb_set_vsx_reg(CPUPPCState *env, uint8_t *mem_buf, int n)
     return 0;
 }
 
-gchar *ppc_gdb_arch_name(CPUState *cs)
+const gchar *ppc_gdb_arch_name(CPUState *cs)
 {
 #if defined(TARGET_PPC64)
-    return g_strdup("powerpc:common64");
+    return "powerpc:common64";
 #else
-    return g_strdup("powerpc:common");
+    return "powerpc:common";
 #endif
 }
 
diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c
index ac2b94b6a6..f5572704de 100644
--- a/target/riscv/cpu.c
+++ b/target/riscv/cpu.c
@@ -2004,17 +2004,17 @@  static Property riscv_cpu_properties[] = {
     DEFINE_PROP_END_OF_LIST(),
 };
 
-static gchar *riscv_gdb_arch_name(CPUState *cs)
+static const gchar *riscv_gdb_arch_name(CPUState *cs)
 {
     RISCVCPU *cpu = RISCV_CPU(cs);
     CPURISCVState *env = &cpu->env;
 
     switch (riscv_cpu_mxl(env)) {
     case MXL_RV32:
-        return g_strdup("riscv:rv32");
+        return "riscv:rv32";
     case MXL_RV64:
     case MXL_RV128:
-        return g_strdup("riscv:rv64");
+        return "riscv:rv64";
     default:
         g_assert_not_reached();
     }
diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c
index 4f7599d72c..6093ab0a12 100644
--- a/target/s390x/cpu.c
+++ b/target/s390x/cpu.c
@@ -282,9 +282,9 @@  static void s390_cpu_initfn(Object *obj)
 #endif
 }
 
-static gchar *s390_gdb_arch_name(CPUState *cs)
+static const gchar *s390_gdb_arch_name(CPUState *cs)
 {
-    return g_strdup("s390:64-bit");
+    return "s390:64-bit";
 }
 
 static Property s390x_cpu_properties[] = {
diff --git a/target/tricore/cpu.c b/target/tricore/cpu.c
index d1477622e6..5ca666ee12 100644
--- a/target/tricore/cpu.c
+++ b/target/tricore/cpu.c
@@ -29,9 +29,9 @@  static inline void set_feature(CPUTriCoreState *env, int feature)
     env->features |= 1ULL << feature;
 }
 
-static gchar *tricore_gdb_arch_name(CPUState *cs)
+static const gchar *tricore_gdb_arch_name(CPUState *cs)
 {
-    return g_strdup("tricore");
+    return "tricore";
 }
 
 static void tricore_cpu_set_pc(CPUState *cs, vaddr value)