On 4/22/25 10:56, Richard Henderson wrote:
On 4/22/25 07:54, Philippe Mathieu-Daudé wrote:
+#ifdef CONFIG_TCG
+ vct = g_slist_prepend(vct, g_strdup(ARM_CPU_TYPE_NAME("cortex-a7")));
+ vct = g_slist_prepend(vct, g_strdup(ARM_CPU_TYPE_NAME("cortex-a15")));
+#ifdef TARGET_AARCH64
+ vct = g_slist_prepend(vct, g_strdup(ARM_CPU_TYPE_NAME("cortex-a35")));
+ vct = g_slist_prepend(vct, g_strdup(ARM_CPU_TYPE_NAME("cortex-a55")));
+ vct = g_slist_prepend(vct, g_strdup(ARM_CPU_TYPE_NAME("cortex-a72")));
+ vct = g_slist_prepend(vct, g_strdup(ARM_CPU_TYPE_NAME("cortex-a76")));
+ vct = g_slist_prepend(vct, g_strdup(ARM_CPU_TYPE_NAME("cortex-a710")));
+ vct = g_slist_prepend(vct, g_strdup(ARM_CPU_TYPE_NAME("a64fx")));
+ vct = g_slist_prepend(vct, g_strdup(ARM_CPU_TYPE_NAME("neoverse-n1")));
+ vct = g_slist_prepend(vct, g_strdup(ARM_CPU_TYPE_NAME("neoverse-v1")));
+ vct = g_slist_prepend(vct, g_strdup(ARM_CPU_TYPE_NAME("neoverse-n2")));
+#endif /* TARGET_AARCH64 */
Why do these need to be strdup'ed?
Do you anticipate other instances where these names cannot be constructed at
compile-time?
It seems it would be more easy if get_valid_cpu_types simply return a
const* char* const (same as existing valid_cpu_types), and caller does
not have the responsibility to free it.
This way, the list can be built either with a static array initializer,
or with a dynamic GPtrArray, that we keep under a local static variable,
so it has to be built only once. We can debate the leak introduced but I
don't think it's really a problem.
r~