aboutsummaryrefslogtreecommitdiff
path: root/init
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2026-10-21 10:45:44 -1000
committerLinus Torvalds <torvalds@linux-foundation.org>2026-10-21 10:45:44 -1000
commitbb29b957eaaa15be33243550d9ee576c2d601669 (patch)
tree6827930af194a0ad5a8d8152fe2892d1be9b711b /init
parent12d5fc96ebbb3b948861805b32a4c3a96105ccd9 (diff)
parent997208ce9f43f01febac956cf9aeffe89945e3c1 (diff)
Merge tag 'kbuild-7.4-1' of git://git.kernel.org/pub/scm/linux/kernel/git/kbuild/linux
Pull Kbuild / Kconfig updates from Nathan Chancellor: "Kbuild: - Suppress compiler flags in debug info for external module builds - Use '-fmacro-prefix-map' in more places in the build - Merge initial set of changes from Lorenzo's speed up series, along with some fixes found through testing: - Avoid allocating .modinfo in vmlinux - Speed up kallsyms by indexing symbols by token and outputting binary data to disk directly then including in assembly via .incbin - Don't sort $(NM) output when unnecessary - Only emit relocations on the final vmlinx link - Reimplement mksysmap in C - Move many cc-option and ld-option calls into the Kconfig stage to cache their results - Use pigz for gzip compression when available - Move gen_init_cpio and gen_initramfs.sh from usr/ to scripts/ - Add a TOML configuration to scripts/container and update documentation accordingly - Add a generic, opt-in mechanism for checking that headers can compile standalone - Update machine function splitting argument for LLVM 24 rename in AutoFDO build - Miscellaneous minor clean ups, fixes, and hardening, mostly found/fixed via LLMs Kconfig: - Turn recursive ranges into an error - Fix savedefconfig for defaults that were adjusted for being out of range and revert a previously applied workaround - Improvements and hardening around integer and hexadecimal values - Emit a warning when selecting or implying a choice symbol, which has no effect - Emit a warning when KCONFIG_PROBABILITY is malformed - Introduce def_string / def_int / def_hex to mirror the existing def_bool / def_tristate to succinctly set a value and type at the same time. - Add cc-option-str and ld-option-str macros to act like Kbuild's cc-option and ld-option, returning the string when the option is supported, allowing many checks to be moved into Kconfig - Minor usability improvements to Kconfig tests" * tag 'kbuild-7.4-1' of git://git.kernel.org/pub/scm/linux/kernel/git/kbuild/linux: (59 commits) kbuild: AutoFDO: Update split machine function argument for upstream rename kbuild: Mark the initcall ordering recipe as recursive kbuild: Mark the gzip recipes as recursive localmodconfig: Explicitly report boolean configs during integrity check scripts/make_fit: Ignore schema checks when decomposing DTBs clang-tools: Import os for broken pipe handling kconfig: use the value argument in sym_get_near_range_bound() kconfig: fix infinite loop in conf_choice() when no choice value is visible kconfig: cleanup stale comment about 'keys' array kconfig: Improve ergonomics around disabling warnings with cc-option scripts/Kconfig.toolchain: Drop compiler symbols from dependencies checkkconfigsymbols.py: Parse Git status output line by line gen_init_cpio: stop parsing on lines with a missing argument list .gitignore: drop Module.markers .gitignore: ignore pacman package signatures kbuild: add header check facility as a manually run static analyzer Documentation: dev-tools: refer to user ID rather than id Documentation: dev-tools: update container.rst with config file scripts: add TOML config to container tool kconfig: tests: {old,save}defconfig: Forward dynamic keyword arguments ...
Diffstat (limited to 'init')
-rw-r--r--init/Kconfig199
1 files changed, 1 insertions, 198 deletions
diff --git a/init/Kconfig b/init/Kconfig
index 2e3d745090e6..046ae0bf1186 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -1,203 +1,6 @@
# SPDX-License-Identifier: GPL-2.0-only
-config CC_VERSION_TEXT
- string
- default "$(CC_VERSION_TEXT)"
- help
- This is used in unclear ways:
-
- - Re-run Kconfig when the compiler is updated
- The 'default' property references the environment variable,
- CC_VERSION_TEXT so it is recorded in include/config/auto.conf.cmd.
- When the compiler is updated, Kconfig will be invoked.
-
- - Ensure full rebuild when the compiler is updated
- include/linux/compiler-version.h contains this option in the comment
- line so fixdep adds include/config/CC_VERSION_TEXT into the
- auto-generated dependency. When the compiler is updated, syncconfig
- will touch it and then every file will be rebuilt.
-
-config CC_IS_GCC
- def_bool $(success,test "$(cc-name)" = GCC)
-
-config GCC_VERSION
- int
- default $(cc-version) if CC_IS_GCC
- default 0
-
-config CC_IS_CLANG
- def_bool $(success,test "$(cc-name)" = Clang)
-
-config CLANG_VERSION
- int
- default $(cc-version) if CC_IS_CLANG
- default 0
-
-config AS_IS_GNU
- def_bool $(success,test "$(as-name)" = GNU)
-
-config AS_IS_LLVM
- def_bool $(success,test "$(as-name)" = LLVM)
-
-config AS_VERSION
- int
- # Use clang version if this is the integrated assembler
- default CLANG_VERSION if AS_IS_LLVM
- default $(as-version)
-
-config LD_IS_BFD
- def_bool $(success,test "$(ld-name)" = BFD)
-
-config LD_VERSION
- int
- default $(ld-version) if LD_IS_BFD
- default 0
-
-config LD_IS_LLD
- def_bool $(success,test "$(ld-name)" = LLD)
-
-config LLD_VERSION
- int
- default $(ld-version) if LD_IS_LLD
- default 0
-
-config RUSTC_VERSION
- int
- default $(rustc-version)
- help
- It does not depend on `RUST` since that one may need to use the version
- in a `depends on`.
-
-config RUST_IS_AVAILABLE
- def_bool $(success,$(srctree)/scripts/rust_is_available.sh)
- help
- This shows whether a suitable Rust toolchain is available (found).
-
- Please see Documentation/rust/quick-start.rst for instructions on how
- to satisfy the build requirements of Rust support.
-
- In particular, the Makefile target 'rustavailable' is useful to check
- why the Rust toolchain is not being detected.
-
-config RUSTC_LLVM_VERSION
- int
- default $(rustc-llvm-version)
-
-config RUSTC_LLVM_MAJOR_VERSION
- int
- default $(shell,expr $(rustc-llvm-version) / 10000)
-config RUSTC_CLANG_LLVM_COMPATIBLE
- bool
- default y if CC_IS_CLANG && RUSTC_LLVM_MAJOR_VERSION = $(shell,expr $(cc-version) / 10000)
- help
- This indicates whether Rust and Clang use LLVM of the same major
- version.
-
- Operations involving handling LLVM IR or bitcode (e.g. cross-language
- LTO) require the same LLVM major version to work properly. For best
- compatibility it is recommended that the exact same LLVM is used.
-
-config ARCH_HAS_CC_CAN_LINK
- bool
-
-config CC_CAN_LINK
- bool
- default ARCH_CC_CAN_LINK if ARCH_HAS_CC_CAN_LINK
- default $(cc_can_link_user,$(m64-flag)) if 64BIT
- default $(cc_can_link_user,$(m32-flag))
-
-# Fixed in GCC 14, 13.3, 12.4 and 11.5
-# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113921
-config GCC_ASM_GOTO_OUTPUT_BROKEN
- bool
- depends on CC_IS_GCC
- default y if GCC_VERSION < 110500
- default y if GCC_VERSION >= 120000 && GCC_VERSION < 120400
- default y if GCC_VERSION >= 130000 && GCC_VERSION < 130300
-
-config CC_HAS_ASM_GOTO_OUTPUT
- def_bool y
- depends on !GCC_ASM_GOTO_OUTPUT_BROKEN
- depends on $(success,echo 'int foo(int x) { asm goto ("": "=r"(x) ::: bar); return x; bar: return 0; }' | $(CC) -x c - -c -o /dev/null)
-
-config CC_HAS_ASM_GOTO_TIED_OUTPUT
- depends on CC_HAS_ASM_GOTO_OUTPUT
- # Detect buggy gcc and clang, fixed in gcc-11 clang-14.
- def_bool $(success,echo 'int foo(int *x) { asm goto (".long (%l[bar]) - .": "+m"(*x) ::: bar); return *x; bar: return 0; }' | $CC -x c - -c -o /dev/null)
-
-config TOOLS_SUPPORT_RELR
- def_bool $(success,env "CC=$(CC)" "LD=$(LD)" "NM=$(NM)" "OBJCOPY=$(OBJCOPY)" $(srctree)/scripts/tools-support-relr.sh)
-
-config CC_HAS_ASM_INLINE
- def_bool $(success,echo 'void foo(void) { asm inline (""); }' | $(CC) -x c - -c -o /dev/null)
-
-config CC_HAS_ASSUME
- bool
- # clang needs to be at least 19.1.0 since the meaning of the assume
- # attribute changed:
- # https://github.com/llvm/llvm-project/commit/c44fa3e8a9a44c2e9a575768a3c185354b9f6c17
- default y if CC_IS_CLANG && CLANG_VERSION >= 190100
- # supported since gcc 13.1.0
- # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106654
- default y if CC_IS_GCC && GCC_VERSION >= 130100
-
-config CC_HAS_NO_PROFILE_FN_ATTR
- def_bool $(success,echo '__attribute__((no_profile_instrument_function)) int x();' | $(CC) -x c - -c -o /dev/null -Werror)
-
-config CC_HAS_COUNTED_BY
- bool
- # clang needs to be at least 20.1.0 to avoid potential crashes
- # when building structures that contain __counted_by
- # https://github.com/ClangBuiltLinux/linux/issues/2114
- # https://github.com/llvm/llvm-project/commit/160fb1121cdf703c3ef5e61fb26c5659eb581489
- default y if CC_IS_CLANG && CLANG_VERSION >= 200100
- # supported since gcc 15.1.0
- # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108896
- default y if CC_IS_GCC && GCC_VERSION >= 150100
-
-config CC_HAS_COUNTED_BY_PTR
- bool
- # supported since clang 22
- default y if CC_IS_CLANG && CLANG_VERSION >= 220100
- # supported since gcc 16.0.0
- default y if CC_IS_GCC && GCC_VERSION >= 160000
-
-config CC_HAS_BROKEN_COUNTED_BY_REF
- bool
- # https://github.com/llvm/llvm-project/issues/182575
- default y if CC_IS_CLANG && CLANG_VERSION < 220100
-
-config CC_HAS_ALLOC_TOKEN
- def_bool $(cc-option,-falloc-token-max=123)
-
-config CC_HAS_MULTIDIMENSIONAL_NONSTRING
- def_bool $(success,echo 'char tag[][4] __attribute__((__nonstring__)) = { };' | $(CC) $(CLANG_FLAGS) -x c - -c -o /dev/null -Werror)
-
-config CC_OPT_INLINE_MEMSET
- string
- default "-finline-stringops=memset" if $(cc-option,-finline-stringops=memset)
- default "-mllvm -max-store-memset=4294967294" if $(cc-option,-mllvm -max-store-memset=4294967294)
-
-config LD_CAN_USE_KEEP_IN_OVERLAY
- # ld.lld prior to 21.0.0 did not support KEEP within an overlay description
- # https://github.com/llvm/llvm-project/pull/130661
- def_bool LD_IS_BFD || LLD_VERSION >= 210000
-
-config RUSTC_HAS_UNNECESSARY_TRANSMUTES
- def_bool RUSTC_VERSION >= 108800
-
-config RUSTC_HAS_FILE_WITH_NUL
- def_bool RUSTC_VERSION >= 108900
-
-config RUSTC_HAS_FILE_AS_C_STR
- def_bool RUSTC_VERSION >= 109100
-
-config RUSTC_HAS_SUSPICIOUS_RUNTIME_SYMBOL_DEFINITIONS
- def_bool RUSTC_VERSION >= 109800
-
-config PAHOLE_VERSION
- int
- default "$(PAHOLE_VERSION)"
+source "scripts/Kconfig.toolchain"
config CONSTRUCTORS
bool