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: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
0e902f59c1
commit
bb2dc4b73a
@ -487,6 +487,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)
|
||||
@ -511,6 +512,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')
|
||||
@ -1676,7 +1681,7 @@ dbus_display = get_option('dbus_display') \
|
||||
.require(enable_modules,
|
||||
error_message: '-display dbus requires --enable-modules') \
|
||||
.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()
|
||||
|
Loading…
Reference in New Issue
Block a user