[Bug 1863260] Re: gcc-9 in Ubuntu generate unbootable xen hypervisor
Matthias Klose
doko at ubuntu.com
Wed Mar 11 08:33:14 UTC 2020
** Changed in: gcc-9 (Ubuntu)
Status: New => Invalid
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to gcc-9 in Ubuntu.
https://bugs.launchpad.net/bugs/1863260
Title:
gcc-9 in Ubuntu generate unbootable xen hypervisor
Status in gcc-9 package in Ubuntu:
Invalid
Bug description:
This problem was first observed in Ubuntu 19.10 (Eoan) but persists in
the current Focal development. The results are the same for the old
Xen version (4.9.2) and the fresh 4.11 merge. As a test I took the
xen-hypervisor binary from Debian Sid (which has been compiled with
gcc-9 as well) and that succeeds in booting Xen (libraries and dom0
kernel are Ubuntu Focal).
There seems to be one major difference between build environments. The
Xen hypervisor build is done with an external retpoline mitigation:
# Compile with thunk-extern, indirect-branch-register if avaiable.
ifneq ($(call cc-option,$(CC),-mindirect-branch-register,n),n)
CFLAGS += -mindirect-branch=thunk-extern -mindirect-branch-register
CFLAGS += -DCONFIG_INDIRECT_THUNK
export CONFIG_INDIRECT_THUNK=y
endif
The use of -mindirect-branch is incompatible with -fcf-protection. To
be able to build the hypervisor in Ubuntu, I have to add the following
modifications to the make file:
--- xen.orig/xen/arch/x86/Rules.mk
+++ xen/xen/arch/x86/Rules.mk
@@ -42,6 +42,10 @@ endif
# Compile with thunk-extern, indirect-branch-register if avaiable.
ifneq ($(call cc-option,$(CC),-mindirect-branch-register,n),n)
+ifneq ($(call cc-option,$(CC),-fcf-protection,n),n)
+CFLAGS += -fcf-protection=none
+CXXFLAGS += -fcf-protection=none
+endif
CFLAGS += -mindirect-branch=thunk-extern -mindirect-branch-register
CFLAGS += -DCONFIG_INDIRECT_THUNK
export CONFIG_INDIRECT_THUNK=y
I am wondering whether -fcf-protection=none is only partially
effective and causes the binary to be unbootable (basically it causes
an immediate reset when started).
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/gcc-9/+bug/1863260/+subscriptions
More information about the foundations-bugs
mailing list