aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniele Buono <dbuono@linux.vnet.ibm.com>2021-03-03 21:59:38 -0500
committerPaolo Bonzini <pbonzini@redhat.com>2021-03-06 11:42:57 +0100
commitc715343fd96bcf93263fda38d81af815fdb5a7fa (patch)
tree819300476e8714851bcc49057708fc17540ba0ef
parent7520c4f0847093aefa87f23113f28d5d1d574aed (diff)
downloadqemu-c715343fd96bcf93263fda38d81af815fdb5a7fa.zip
qemu-c715343fd96bcf93263fda38d81af815fdb5a7fa.tar.gz
qemu-c715343fd96bcf93263fda38d81af815fdb5a7fa.tar.bz2
meson: Stop if cfi is enabled with system slirp
For CFI, we need to compile slirp as a static library together with qemu. This is because we register slirp functions as callbacks for QEMU Timers. When using a system-wide shared libslirp, the type information for the callback is missing and the timer call produces a false positive with CFI. With this patch, meson will stop if CFI is enabled with system-wide slirp. In 6.1 we will introduce a new interface to slirp where the callback is passed as an enum rather than a function pointer. Signed-off-by: Daniele Buono <dbuono@linux.vnet.ibm.com> Message-Id: <20210304025939.9164-1-dbuono@linux.vnet.ibm.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r--meson.build12
1 files changed, 12 insertions, 0 deletions
diff --git a/meson.build b/meson.build
index 07bc231..05fb125 100644
--- a/meson.build
+++ b/meson.build
@@ -1574,6 +1574,18 @@ if have_system
endif
endif
+# For CFI, we need to compile slirp as a static library together with qemu.
+# This is because we register slirp functions as callbacks for QEMU Timers.
+# When using a system-wide shared libslirp, the type information for the
+# callback is missing and the timer call produces a false positive with CFI.
+#
+# Now that slirp_opt has been defined, check if the selected slirp is compatible
+# with control-flow integrity.
+if get_option('cfi') and slirp_opt == 'system'
+ error('Control-Flow Integrity is not compatible with system-wide slirp.' \
+ + ' Please configure with --enable-slirp=git')
+endif
+
fdt = not_found
fdt_opt = get_option('fdt')
if have_system