[PATCH 1/4] kbuild: require gcc-8 and binutils-2.30

Mainline
From:Arnd Bergmann <arnd@kernel.org>
Date:
Message-ID:<20250407094116.1339199-2-arnd@kernel.org>
Patch:v1 · 1/4
Language:zh_CN
Patch-ID:899ab0bb674bbceae1bf03361e7cf0bbe31e1811
Files:Documentation/admin-guide/README.rstDocumentation/kbuild/makefiles.rstDocumentation/process/changes.rstDocumentation/translations/it_IT/process/changes.rstDocumentation/translations/zh_CN/admin-guide/README.rstarch/um/Makefileinclude/linux/unroll.hkernel/gcov/gcc_4_7.clib/test_fortify/Makefilescripts/Makefile.compilerscripts/gcc-plugins/gcc-common.hscripts/min-tool-version.sh

Patch content 12 changed files

From: Arnd Bergmann <arnd@arndb.de> Commit a3e8fe814ad1 ("x86/build: Raise the minimum GCC version to 8.1")raised the minimum compiler version as enforced by Kbuild to gcc-8.1and clang-15 for x86. This is actually the same gcc version that has been discussed as theminimum for all architectures several times in the past, with littleobjection. A previous concern was the kernel for SLE15-SP7 needing tobe built with gcc-7. As this ended up still using linux-6.4 and thereis no plan for an SP8, this is no longer a problem. Change it for all architectures and adjust the documentation accordingly.A few version checks can be removed in the process.  The binutilsversion 2.30 is the lowest version used in combination with gcc-8 oncommon distros, so use that as the corresponding minimum. Link: https://lore.kernel.org/lkml/20240925150059.3955569-32-ardb+git@google.com/Link: https://lore.kernel.org/lkml/871q7yxrgv.wl-tiwai@suse.de/Signed-off-by: Arnd Bergmann <arnd@arndb.de>--- Documentation/admin-guide/README.rst          |  2 +- Documentation/kbuild/makefiles.rst            |  4 +- Documentation/process/changes.rst             |  4 +- .../translations/it_IT/process/changes.rst    |  4 +- .../translations/zh_CN/admin-guide/README.rst |  2 +- arch/um/Makefile                              |  4 +- include/linux/unroll.h                        |  4 +- kernel/gcov/gcc_4_7.c                         |  4 -- lib/test_fortify/Makefile                     |  5 +-- scripts/Makefile.compiler                     |  2 +- scripts/gcc-plugins/gcc-common.h              | 45 ------------------- scripts/min-tool-version.sh                   |  6 +-- 12 files changed, 14 insertions(+), 72 deletions(-) diff --git a/Documentation/admin-guide/README.rst b/Documentation/admin-guide/README.rstindex 70b02f30013a..05301f03b717 100644--- a/Documentation/admin-guide/README.rst+++ b/Documentation/admin-guide/README.rst@@ -259,7 +259,7 @@ Configuring the kernel Compiling the kernel -------------------- - - Make sure you have at least gcc 5.1 available.+ - Make sure you have at least gcc 8.1 available.    For more information, refer to :ref:`Documentation/process/changes.rst <changes>`.   - Do a ``make`` to create a compressed kernel image. It is also possible to dodiff --git a/Documentation/kbuild/makefiles.rst b/Documentation/kbuild/makefiles.rstindex 3b9a8bc671e2..38cc656fac20 100644--- a/Documentation/kbuild/makefiles.rst+++ b/Documentation/kbuild/makefiles.rst@@ -625,10 +625,10 @@ gcc-min-version    Example:: -    cflags-$(call gcc-min-version, 70100) := -foo+    cflags-$(call gcc-min-version, 110100) := -foo    In this example, cflags-y will be assigned the value -foo if $(CC) is gcc and-  $(CONFIG_GCC_VERSION) is >= 7.1.+  $(CONFIG_GCC_VERSION) is >= 11.1.  clang-min-version   clang-min-version tests if the value of $(CONFIG_CLANG_VERSION) is greaterdiff --git a/Documentation/process/changes.rst b/Documentation/process/changes.rstindex d564362773b5..41b1431f5a6b 100644--- a/Documentation/process/changes.rst+++ b/Documentation/process/changes.rst@@ -29,13 +29,13 @@ you probably needn't concern yourself with pcmciautils. ====================== ===============  ========================================         Program        Minimal version       Command to check the version ====================== ===============  ========================================-GNU C                  5.1              gcc --version+GNU C                  8.1              gcc --version Clang/LLVM (optional)  13.0.1           clang --version Rust (optional)        1.78.0           rustc --version bindgen (optional)     0.65.1           bindgen --version GNU make               4.0              make --version bash                   4.2              bash --version-binutils               2.25             ld -v+binutils               2.30             ld -v flex                   2.5.35           flex --version bison                  2.0              bison --version pahole                 1.16             pahole --versiondiff --git a/Documentation/translations/it_IT/process/changes.rst b/Documentation/translations/it_IT/process/changes.rstindex c7d05e2fff15..2e203fbd1785 100644--- a/Documentation/translations/it_IT/process/changes.rst+++ b/Documentation/translations/it_IT/process/changes.rst@@ -32,13 +32,13 @@ PC Card, per esempio, probabilmente non dovreste preoccuparvi di pcmciautils. ====================== =================  ========================================         Programma       Versione minima       Comando per verificare la versione ====================== =================  ========================================-GNU C                  5.1                gcc --version+GNU C                  8.1                gcc --version Clang/LLVM (optional)  13.0.0             clang --version Rust (opzionale)       1.78.0             rustc --version bindgen (opzionale)    0.65.1             bindgen --version GNU make               4.0                make --version bash                   4.2                bash --version-binutils               2.25               ld -v+binutils               2.30               ld -v flex                   2.5.35             flex --version bison                  2.0                bison --version pahole                 1.16               pahole --versiondiff --git a/Documentation/translations/zh_CN/admin-guide/README.rst b/Documentation/translations/zh_CN/admin-guide/README.rstindex 1bdafdc4c8e2..82e628b77efd 100644--- a/Documentation/translations/zh_CN/admin-guide/README.rst+++ b/Documentation/translations/zh_CN/admin-guide/README.rst@@ -224,7 +224,7 @@ Linux内核6.x版本 <http://kernel.org/> 编译内核 --------- - - 确保您至少有gcc 5.1可用。+ - 确保您至少有gcc 8.1可用。    有关更多信息,请参阅 :ref:`Documentation/process/changes.rst <changes>` 。   - 执行 ``make`` 来创建压缩内核映像。如果您安装了lilo以适配内核makefile,diff --git a/arch/um/Makefile b/arch/um/Makefileindex 1d36a613aad8..599c167890ff 100644--- a/arch/um/Makefile+++ b/arch/um/Makefile@@ -118,9 +118,7 @@ archprepare: 	$(Q)$(MAKE) $(build)=$(HOST_DIR)/um include/generated/user_constants.h  LINK-$(CONFIG_LD_SCRIPT_STATIC) += -static-ifdef CONFIG_LD_SCRIPT_DYN-LINK-$(call gcc-min-version, 60100)$(CONFIG_CC_IS_CLANG) += -no-pie-endif+LINK-$(CONFIG_LD_SCRIPT_DYN) += -no-pie LINK-$(CONFIG_LD_SCRIPT_DYN_RPATH) += -Wl,-rpath,/lib  CFLAGS_NO_HARDENING := $(call cc-option, -fno-PIC,) $(call cc-option, -fno-pic,) \diff --git a/include/linux/unroll.h b/include/linux/unroll.hindex 863fb69f6a7e..186b71de740f 100644--- a/include/linux/unroll.h+++ b/include/linux/unroll.h@@ -11,10 +11,8 @@  #ifdef CONFIG_CC_IS_CLANG #define __pick_unrolled(x, y)		_Pragma(#x)-#elif CONFIG_GCC_VERSION >= 80000-#define __pick_unrolled(x, y)		_Pragma(#y) #else-#define __pick_unrolled(x, y)		/* not supported */+#define __pick_unrolled(x, y)		_Pragma(#y) #endif  /**diff --git a/kernel/gcov/gcc_4_7.c b/kernel/gcov/gcc_4_7.cindex fd75b4a484d7..a08cc076f332 100644--- a/kernel/gcov/gcc_4_7.c+++ b/kernel/gcov/gcc_4_7.c@@ -22,10 +22,6 @@ #define GCOV_COUNTERS			9 #elif (__GNUC__ >= 10) #define GCOV_COUNTERS			8-#elif (__GNUC__ >= 7)-#define GCOV_COUNTERS			9-#elif (__GNUC__ > 5) || (__GNUC__ == 5 && __GNUC_MINOR__ >= 1)-#define GCOV_COUNTERS			10 #else #define GCOV_COUNTERS			9 #endifdiff --git a/lib/test_fortify/Makefile b/lib/test_fortify/Makefileindex 1c3f82ad8bb2..399cae880e1d 100644--- a/lib/test_fortify/Makefile+++ b/lib/test_fortify/Makefile@@ -18,10 +18,7 @@ quiet_cmd_gen_fortify_log = CAT     $@ $(obj)/test_fortify.log: $(addprefix $(obj)/, $(logs)) FORCE 	$(call if_changed,gen_fortify_log) -# GCC<=7 does not always produce *.d files.-# Run the tests only for GCC>=8 or Clang.-always-$(call gcc-min-version, 80000) += test_fortify.log-always-$(CONFIG_CC_IS_CLANG)          += test_fortify.log+always-y += test_fortify.log  # Some architectures define __NO_FORTIFY if __SANITIZE_ADDRESS__ is undefined. # Pass CFLAGS_KASAN to avoid warnings.diff --git a/scripts/Makefile.compiler b/scripts/Makefile.compilerindex 8956587b8547..d74fad494b5b 100644--- a/scripts/Makefile.compiler+++ b/scripts/Makefile.compiler@@ -60,7 +60,7 @@ cc-option-yn = $(if $(call cc-option,$1),y,n) cc-disable-warning = $(if $(call cc-option,-W$(strip $1)),-Wno-$(strip $1))  # gcc-min-version-# Usage: cflags-$(call gcc-min-version, 70100) += -foo+# Usage: cflags-$(call gcc-min-version, 110100) += -foo gcc-min-version = $(call test-ge, $(CONFIG_GCC_VERSION), $1)  # clang-min-versiondiff --git a/scripts/gcc-plugins/gcc-common.h b/scripts/gcc-plugins/gcc-common.hindex 3222c1070444..3fdaf1c4b258 100644--- a/scripts/gcc-plugins/gcc-common.h+++ b/scripts/gcc-plugins/gcc-common.h@@ -3,11 +3,7 @@ #define GCC_COMMON_H_INCLUDED  #include "bversion.h"-#if BUILDING_GCC_VERSION >= 6000 #include "gcc-plugin.h"-#else-#include "plugin.h"-#endif #include "plugin-version.h" #include "config.h" #include "system.h"@@ -39,9 +35,7 @@  #include "hash-map.h" -#if BUILDING_GCC_VERSION >= 7000 #include "memmodel.h"-#endif #include "emit-rtl.h" #include "debug.h" #include "target.h"@@ -74,9 +68,7 @@ #include "context.h" #include "tree-ssa-alias.h" #include "tree-ssa.h"-#if BUILDING_GCC_VERSION >= 7000 #include "tree-vrp.h"-#endif #include "tree-ssanames.h" #include "print-tree.h" #include "tree-eh.h"@@ -149,16 +141,6 @@ static inline opt_pass *get_pass_for_id(int id) 	return g->get_passes()->get_pass_for_id(id); } -#if BUILDING_GCC_VERSION < 6000-/* gimple related */-template <>-template <>-inline bool is_a_helper<const gassign *>::test(const_gimple gs)-{-	return gs->code == GIMPLE_ASSIGN;-}-#endif- #define TODO_verify_ssa TODO_verify_il #define TODO_verify_flow TODO_verify_il #define TODO_verify_stmts TODO_verify_il@@ -181,7 +163,6 @@ static inline const char *get_decl_section_name(const_tree decl) #define varpool_get_node(decl) varpool_node::get(decl) #define dump_varpool_node(file, node) (node)->dump(file) -#if BUILDING_GCC_VERSION >= 8000 #define cgraph_create_edge(caller, callee, call_stmt, count, freq) \ 	(caller)->create_edge((callee), (call_stmt), (count)) @@ -189,15 +170,6 @@ static inline const char *get_decl_section_name(const_tree decl) 		old_call_stmt, call_stmt, count, freq, reason)	\ 	(caller)->create_edge_including_clones((callee),	\ 		(old_call_stmt), (call_stmt), (count), (reason))-#else-#define cgraph_create_edge(caller, callee, call_stmt, count, freq) \-	(caller)->create_edge((callee), (call_stmt), (count), (freq))--#define cgraph_create_edge_including_clones(caller, callee,	\-		old_call_stmt, call_stmt, count, freq, reason)	\-	(caller)->create_edge_including_clones((callee),	\-		(old_call_stmt), (call_stmt), (count), (freq), (reason))-#endif  typedef struct cgraph_node *cgraph_node_ptr; typedef struct cgraph_edge *cgraph_edge_p;@@ -293,14 +265,12 @@ static inline void cgraph_call_edge_duplication_hooks(cgraph_edge *cs1, cgraph_e 	symtab->call_edge_duplication_hooks(cs1, cs2); } -#if BUILDING_GCC_VERSION >= 6000 typedef gimple *gimple_ptr; typedef const gimple *const_gimple_ptr; #define gimple gimple_ptr #define const_gimple const_gimple_ptr #undef CONST_CAST_GIMPLE #define CONST_CAST_GIMPLE(X) CONST_CAST(gimple, (X))-#endif  /* gimple related */ static inline gimple gimple_build_assign_with_ops(enum tree_code subcode, tree lhs, tree op1, tree op2 MEM_STAT_DECL)@@ -400,15 +370,7 @@ static inline void ipa_remove_stmt_references(symtab_node *referring_node, gimpl 	referring_node->remove_stmt_references(stmt); } -#if BUILDING_GCC_VERSION < 6000-#define get_inner_reference(exp, pbitsize, pbitpos, poffset, pmode, punsignedp, preversep, pvolatilep, keep_aligning)	\-	get_inner_reference(exp, pbitsize, pbitpos, poffset, pmode, punsignedp, pvolatilep, keep_aligning)-#define gen_rtx_set(ARG0, ARG1) gen_rtx_SET(VOIDmode, (ARG0), (ARG1))-#endif--#if BUILDING_GCC_VERSION >= 6000 #define gen_rtx_set(ARG0, ARG1) gen_rtx_SET((ARG0), (ARG1))-#endif  #ifdef __cplusplus static inline void debug_tree(const_tree t)@@ -425,15 +387,8 @@ static inline void debug_gimple_stmt(const_gimple s) #define debug_gimple_stmt(s) debug_gimple_stmt(CONST_CAST_GIMPLE(s)) #endif -#if BUILDING_GCC_VERSION >= 7000 #define get_inner_reference(exp, pbitsize, pbitpos, poffset, pmode, punsignedp, preversep, pvolatilep, keep_aligning)	\ 	get_inner_reference(exp, pbitsize, pbitpos, poffset, pmode, punsignedp, preversep, pvolatilep)-#endif--#if BUILDING_GCC_VERSION < 7000-#define SET_DECL_ALIGN(decl, align)	DECL_ALIGN(decl) = (align)-#define SET_DECL_MODE(decl, mode)	DECL_MODE(decl) = (mode)-#endif  #if BUILDING_GCC_VERSION >= 14000 #define last_stmt(x)			last_nondebug_stmt(x)diff --git a/scripts/min-tool-version.sh b/scripts/min-tool-version.shindex 787868183b84..0d223b4a9445 100755--- a/scripts/min-tool-version.sh+++ b/scripts/min-tool-version.sh@@ -14,15 +14,13 @@ fi  case "$1" in binutils)-	echo 2.25.0+	echo 2.30.0 	;; gcc) 	if [ "$ARCH" = parisc64 ]; then 		echo 12.0.0-	elif [ "$SRCARCH" = x86 ]; then-		echo 8.1.0 	else-		echo 5.1.0+		echo 8.1.0 	fi 	;; llvm)-- 2.39.5