From: Andrew Cooper Date: Thu, 20 Mar 2025 14:05:58 +0000 (+0000) Subject: Xen: Update compiler baseline checks X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=40458f7525504000ad26d7ef73cb452a976828fa;p=xen.git Xen: Update compiler baseline checks We have checks in both xen/compiler.h, and Config.mk. Both are incomplete. The check in Config.mk sees $(CC) in system and cross-compiler form, so cannot express anything more than the global baseline. Change it to simply 5.1. In xen/compiler.h, rewrite the expression for clarity/brevity. Include a GCC 12.2 check for RISCV, and include a Clang 11 baseline check. Signed-off-by: Andrew Cooper Reviewed-by: Jan Beulich --- diff --git a/Config.mk b/Config.mk index 8a73f3da62..8a60d4a55a 100644 --- a/Config.mk +++ b/Config.mk @@ -125,8 +125,8 @@ define cc-ver-check-closure endif endef -# Require GCC v4.1+ -check-$(gcc) = $(call cc-ver-check,CC,0x040100,"Xen requires at least gcc-4.1") +# Require GCC v5.1 as the project global baseline +check-$(gcc) = $(call cc-ver-check,CC,0x050100,"Xen requires at least GCC 5.1") $(eval $(check-y)) ld-ver-build-id = $(shell $(1) --build-id 2>&1 | \ diff --git a/xen/include/xen/compiler.h b/xen/include/xen/compiler.h index 636a85bc41..38b8fa3d38 100644 --- a/xen/include/xen/compiler.h +++ b/xen/include/xen/compiler.h @@ -1,19 +1,21 @@ #ifndef __LINUX_COMPILER_H #define __LINUX_COMPILER_H -#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@shell.armlinux.org.uk - */ -# error Sorry, your version of GCC is too old - please use 5.1 or newer. +#if CONFIG_CC_IS_GCC + +# if defined(CONFIG_RISCV) && CONFIG_GCC_VERSION < 120200 +# error Sorry, please use GCC >= 12.2 +# elif CONFIG_GCC_VERSION < 50100 +# error Sorry, please use GCC >= 5.1 # endif -#endif + +#elif CONFIG_CC_IS_CLANG + +# if CONFIG_CLANG_VERSION < 110000 +# error Sorry, please use Clang >= 11 +# endif + +#endif /* Compiler checks. */ #ifdef CONFIG_CC_HAS_VISIBILITY_ATTRIBUTE /* Results in more efficient PIC code (no indirections through GOT or PLT). */