[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH for-4.15] xen: Bump the minimum version of GCC supported to 4.9 (5.1 on arm64)
On Sat, 6 Mar 2021, Julien Grall wrote: > From: Julien Grall <jgrall@xxxxxxxxxx> > > Compilers older than 4.8 have known codegen issues which can lead to > silent miscompilation: > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58145 > > Furthermore, pre-4.9 GCC have known bugs (including things like > internal compiler errors on Arm) which would require workaround (I > haven't checked if we have any in Xen). > > The minimum version of GCC to build the hypervisor is now raised to 4.9. > > In addition to that, on arm64, GCC version >= 4.9 and < 5.1 have been > shown to emit memory references beyond the stack pointer, resulting in > memory corruption if an interrupt is taken after the stack pointer has > been adjusted but before the reference has been executed. > > Therefore, the minimum for arm64 is raised to 5.1. > > Signed-off-by: Julien Grall <jgrall@xxxxxxxxxx> For the ARM part: Acked-by: Stefano Stabellini <sstabellini@xxxxxxxxxx> > --- > > I don't have a strong opinion on the minimum version for GCC on x86. > So this is following Andrew's suggestion and the minimum from Linux. > > This patch is candidate to 4.15 and backport. > > This is only a build change and will be low-risk for anyone using newer > compiler (5.1+ for arm64 and 4.9 for everyone else). Xen will stop > building for anyone using older compiler. But it is better than fighting > with codegen issues. > --- > README | 9 ++++++--- > xen/include/xen/compiler.h | 13 +++++++++++++ > 2 files changed, 19 insertions(+), 3 deletions(-) > > diff --git a/README b/README > index 8c99c30986c1..5c32c03f2ea1 100644 > --- a/README > +++ b/README > @@ -38,12 +38,15 @@ provided by your OS distributor: > * GNU Make v3.80 or later > * C compiler and linker: > - For x86: > - - GCC 4.1.2_20070115 or later > + - GCC 4.9 or later > - GNU Binutils 2.16.91.0.5 or later > or > - Clang/LLVM 3.5 or later > - - For ARM: > - - GCC 4.8 or later > + - For ARM 32-bit: > + - GCC 4.9 or later > + - GNU Binutils 2.24 or later > + - For ARM 64-bit: > + - GCC 5.1 or later > - GNU Binutils 2.24 or later > * Development install of zlib (e.g., zlib-dev) > * Development install of Python 2.6 or later (e.g., python-dev) > diff --git a/xen/include/xen/compiler.h b/xen/include/xen/compiler.h > index 0ec0b4698ea7..46779660cc8f 100644 > --- a/xen/include/xen/compiler.h > +++ b/xen/include/xen/compiler.h > @@ -5,6 +5,19 @@ > #error Sorry, your compiler is too old/not recognized. > #endif > > +#if CONFIG_CC_IS_GCC > +# if CONFIG_GCC_VERSION < 40900 > +/* https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58145 */ > +# error Sorry, your version of GCC is too old - please use 4.9 or newer. > +# elif defined(CONFIG_ARM_64) && CONFIG_GCC_VERSION < 50100 > +/* > + * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63293 > + * https://lore.kernel.org/r/20210107111841.GN1551@xxxxxxxxxxxxxxxxxxxxx > + */ > +# error Sorry, your version of GCC is too old - please use 5.1 or newer. > +# endif > +#endif > + > #define barrier() __asm__ __volatile__("": : :"memory") > > #define likely(x) __builtin_expect(!!(x),1)
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |