From 8758aeca2cae24b040eebcd6ded27edd9e6861a5 Mon Sep 17 00:00:00 2001 From: Pierrick Bouvier Date: Thu, 14 May 2026 10:22:59 -0700 Subject: [PATCH] qom/object: register OBJECT and INTERFACE QOM types before main MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- qom/object.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) 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)