[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL v2 09/15] meson: -display dbus and CFI are incompatible
From: |
Paolo Bonzini |
Subject: |
[PULL v2 09/15] meson: -display dbus and CFI are incompatible |
Date: |
Fri, 30 Sep 2022 11:10:33 +0200 |
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.
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
meson.build | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/meson.build b/meson.build
index 3885fc1076..ca47ecbffe 100644
--- a/meson.build
+++ b/meson.build
@@ -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()
--
2.37.3