[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH for-4.15 v2] xen: Bump the minimum version of GCC supported to 4.9 for arm32 and 5.1 on arm64
Hi Julien, > On 13 Mar 2021, at 13:41, Julien Grall <julien@xxxxxxx> 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 on arm 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> Reviewed-by: Bertrand Marquis <bertrand.marquis@xxxxxxx> Cheers Bertrand > > --- > > 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 arm32). Xen will stop building > for anyone using older compiler. But it is better than fighting > with codegen issues. > > Changes in v2: > - Only bump the GCC version for Arm. > --- > README | 7 +++++-- > xen/include/xen/compiler.h | 10 ++++++++++ > 2 files changed, 15 insertions(+), 2 deletions(-) > > diff --git a/README b/README > index 8c99c30986c1..aa8b4fe126a8 100644 > --- a/README > +++ b/README > @@ -42,8 +42,11 @@ provided by your OS distributor: > - 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..17cf00e1ec92 100644 > --- a/xen/include/xen/compiler.h > +++ b/xen/include/xen/compiler.h > @@ -3,6 +3,16 @@ > > #if !defined(__GNUC__) || (__GNUC__ < 4) > #error Sorry, your compiler is too old/not recognized. > +#elif CONFIG_CC_IS_GCC > +# if defined(CONFIG_ARM_32) && CONFIG_GCC_VERSION < 40900 > +# 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") > -- > 2.17.1 >
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |