Hi On Fri, Sep 30, 2022 at 11:53 AM Paolo Bonzini <[email protected]> wrote:
> The generated skeletons for DBus call the finalize method of the parent > type using code like > > G_OBJECT_CLASS > (qemu_dbus_display1_chardev_skeleton_parent_class)->finalize (object); > > However, the finalize method is defined in a shared library that is not > compiled with CFI. Do not enable anything that uses gdbus-codegen if > --enable-cfi was specified. > I had the same analysis. But what if gdbus (or other dependencies) is compiled with CFI ? Note: I have no idea if CFI is meant to be usable in production or just for developers. > Signed-off-by: Paolo Bonzini <[email protected]> > Reviewed-by: Marc-André Lureau <[email protected]> > --- > meson.build | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/meson.build b/meson.build > index f6962834a3..6106daf267 100644 > --- a/meson.build > +++ b/meson.build > @@ -515,6 +515,7 @@ meson.override_dependency('glib-2.0', glib) > > gio = not_found > gdbus_codegen = not_found > +gdbus_codegen_error = '@0@ requires gdbus-codegen, please install libgio' > if not get_option('gio').auto() or have_system > gio = dependency('gio-2.0', required: get_option('gio'), > method: 'pkg-config', kwargs: static_kwargs) > @@ -539,6 +540,10 @@ if not get_option('gio').auto() or have_system > version: gio.version()) > endif > endif > +if gdbus_codegen.found() and get_option('cfi') > + gdbus_codegen = not_found > + gdbus_codegen_error = '@0@ uses gdbus-codegen, which does not support > control flow integrity') > +endif > > lttng = not_found > if 'ust' in get_option('trace_backends') > @@ -1697,7 +1702,7 @@ dbus_display = get_option('dbus_display') \ > .require(gio.version().version_compare('>=2.64'), > error_message: '-display dbus requires glib>=2.64') \ > .require(gdbus_codegen.found(), > - error_message: '-display dbus requires gdbus-codegen') \ > + error_message: gdbus_codegen_error.format('-display dbus')) \ > .require(opengl.found() and gbm.found(), > error_message: '-display dbus requires epoxy/egl and gbm') \ > .allowed() > -- > 2.37.3 > > > -- Marc-André Lureau
