diff --git a/qemu/hw/core/machine.c b/qemu/hw/core/machine.c index 4681cb55..12d7559e 100644 --- a/qemu/hw/core/machine.c +++ b/qemu/hw/core/machine.c @@ -26,6 +26,13 @@ static void machine_class_base_init(struct uc_struct *uc, ObjectClass *oc, void } } +static void machine_class_finalize(struct uc_struct *uc, ObjectClass *klass, void *data) +{ + MachineClass *mc = MACHINE_CLASS(uc, klass); + + g_free(mc->name); +} + static void machine_initfn(struct uc_struct *uc, Object *obj, void *opaque) { } @@ -50,7 +57,7 @@ static const TypeInfo machine_info = { NULL, machine_class_base_init, - NULL, + machine_class_finalize, true, }; diff --git a/qemu/include/hw/boards.h b/qemu/include/hw/boards.h index 0d70f3fd..ce9ba5d7 100644 --- a/qemu/include/hw/boards.h +++ b/qemu/include/hw/boards.h @@ -84,7 +84,7 @@ struct MachineClass { ObjectClass parent_class; /*< public >*/ - const char *name; + char *name; int (*init)(struct uc_struct *uc, MachineState *state); void (*reset)(void); diff --git a/qemu/include/hw/i386/pc.h b/qemu/include/hw/i386/pc.h index b4524eca..159b8b98 100644 --- a/qemu/include/hw/i386/pc.h +++ b/qemu/include/hw/i386/pc.h @@ -54,14 +54,20 @@ void x86_cpu_register_types(struct uc_struct *uc); MachineClass *mc = MACHINE_CLASS(uc, oc); \ mc->max_cpus = 255; \ mc->is_default = 1; \ - mc->name = namestr; \ mc->init = initfn; \ mc->arch = UC_ARCH_X86; \ } \ static const TypeInfo pc_machine_type_##suffix = { \ - .name = namestr TYPE_MACHINE_SUFFIX, \ - .parent = TYPE_PC_MACHINE, \ - .class_init = pc_machine_##suffix##_class_init, \ + namestr TYPE_MACHINE_SUFFIX, \ + TYPE_PC_MACHINE, \ + 0, \ + 0, \ + NULL, \ + NULL, \ + NULL, \ + NULL, \ + NULL, \ + pc_machine_##suffix##_class_init, \ }; \ void pc_machine_init_##suffix(struct uc_struct *uc); \ void pc_machine_init_##suffix(struct uc_struct *uc) \