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;