From: Pierrick Bouvier Date: Thu, 14 May 2026 17:22:59 +0000 (-0700) Subject: qom/object: register OBJECT and INTERFACE QOM types before main X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8758aeca2cae24b040eebcd6ded27edd9e6861a5;p=thirdparty%2Fqemu.git qom/object: register OBJECT and INTERFACE QOM types before main Those types are special, as they are the base of all other QOM types. In next commit, we'll introduce an extra step in module initialization for target-info-* types. However, those types depend on TYPE_OBJECT, which is only registered at MODULE_INIT_QOM step. To avoid having to introduce another step, and modify all code calling module_call_init(MODULE_INIT_QOM), we simply register those base types directly in the static constructor, before anything else. Reviewed-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daudé Link: https://lore.kernel.org/qemu-devel/20260514172303.1484273-2-pierrick.bouvier@oss.qualcomm.com Signed-off-by: Pierrick Bouvier --- diff --git a/qom/object.c b/qom/object.c index 59fd79738d..b82b65a3a1 100644 --- a/qom/object.c +++ b/qom/object.c @@ -2844,7 +2844,7 @@ static void object_class_init(ObjectClass *klass, const void *data) NULL); } -static void register_types(void) +static void __attribute__((constructor)) register_types(void) { static const TypeInfo interface_info = { .name = TYPE_INTERFACE, @@ -2862,5 +2862,3 @@ static void register_types(void) type_interface = type_register_internal(&interface_info); type_register_internal(&object_info); } - -type_init(register_types)