Skip to content
Snippets Groups Projects
Commit bb2dc4b7 authored by Paolo Bonzini's avatar Paolo Bonzini
Browse files

meson: -display dbus and CFI are incompatible


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.

Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent 0e902f59
No related branches found
No related tags found
No related merge requests found
...@@ -487,6 +487,7 @@ meson.override_dependency('glib-2.0', glib) ...@@ -487,6 +487,7 @@ meson.override_dependency('glib-2.0', glib)
gio = not_found gio = not_found
gdbus_codegen = 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 if not get_option('gio').auto() or have_system
gio = dependency('gio-2.0', required: get_option('gio'), gio = dependency('gio-2.0', required: get_option('gio'),
method: 'pkg-config', kwargs: static_kwargs) method: 'pkg-config', kwargs: static_kwargs)
...@@ -511,6 +512,10 @@ if not get_option('gio').auto() or have_system ...@@ -511,6 +512,10 @@ if not get_option('gio').auto() or have_system
version: gio.version()) version: gio.version())
endif endif
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 lttng = not_found
if 'ust' in get_option('trace_backends') if 'ust' in get_option('trace_backends')
...@@ -1676,7 +1681,7 @@ dbus_display = get_option('dbus_display') \ ...@@ -1676,7 +1681,7 @@ dbus_display = get_option('dbus_display') \
.require(enable_modules, .require(enable_modules,
error_message: '-display dbus requires --enable-modules') \ error_message: '-display dbus requires --enable-modules') \
.require(gdbus_codegen.found(), .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(), .require(opengl.found() and gbm.found(),
error_message: '-display dbus requires epoxy/egl and gbm') \ error_message: '-display dbus requires epoxy/egl and gbm') \
.allowed() .allowed()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment