From df4cfe680414833eea875a9a6951cd812e35009f Mon Sep 17 00:00:00 2001 From: Eduardo Habkost Date: Sun, 11 Mar 2018 13:44:24 -0400 Subject: [PATCH] machine: MACHINE_TYPE_NAME macro The macro will be useful to ensure the machine class names follow the right format to make machine class lookup by class name work correctly. Backports commit c84a8f01b2a5d8bf98c447796d4a747333a5b1fd from qemu --- qemu/include/hw/boards.h | 6 ++++++ qemu/vl.c | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/qemu/include/hw/boards.h b/qemu/include/hw/boards.h index 1f10643a..c0f1e9b1 100644 --- a/qemu/include/hw/boards.h +++ b/qemu/include/hw/boards.h @@ -59,6 +59,12 @@ void qemu_register_machine(struct uc_struct *uc, QEMUMachine *m, const char *typ void (*init)(struct uc_struct *uc, ObjectClass *oc, void *data)); #define TYPE_MACHINE_SUFFIX "-machine" + +/* Machine class name that needs to be used for class-name-based machine + * type lookup to work. + */ +#define MACHINE_TYPE_NAME(machinename) (machinename TYPE_MACHINE_SUFFIX) + #define TYPE_MACHINE "machine" #undef MACHINE /* BSD defines it and QEMU does not use it */ #define MACHINE(uc, obj) \ diff --git a/qemu/vl.c b/qemu/vl.c index d9b910ba..a04b4b9b 100644 --- a/qemu/vl.c +++ b/qemu/vl.c @@ -193,7 +193,7 @@ static void machine_class_init(struct uc_struct *uc, ObjectClass *oc, void *data void qemu_register_machine(struct uc_struct *uc, QEMUMachine *m, const char *type_machine, void (*init)(struct uc_struct *uc, ObjectClass *oc, void *data)) { - char *name = g_strconcat(m->name, TYPE_MACHINE_SUFFIX, NULL); + char *name = g_strdup_printf(MACHINE_TYPE_NAME("%s"), m->name); TypeInfo ti = {0}; ti.name = name; ti.parent = type_machine;