Kconfig (245137cdf0cd92077dad37868fe4859c90dada36) Kconfig (887596095ec2a9ea39ffcf98f27bf2e77c5eb512)
1# SPDX-License-Identifier: GPL-2.0-only
2config DEFCONFIG_LIST
3 string
4 depends on !UML
5 option defconfig_list
6 default "/lib/modules/$(shell,uname -r)/.config"
7 default "/etc/kernel-config"
8 default "/boot/config-$(shell,uname -r)"

--- 5 unchanged lines hidden (view full) ---

14 help
15 This is used in unclear ways:
16
17 - Re-run Kconfig when the compiler is updated
18 The 'default' property references the environment variable,
19 CC_VERSION_TEXT so it is recorded in include/config/auto.conf.cmd.
20 When the compiler is updated, Kconfig will be invoked.
21
1# SPDX-License-Identifier: GPL-2.0-only
2config DEFCONFIG_LIST
3 string
4 depends on !UML
5 option defconfig_list
6 default "/lib/modules/$(shell,uname -r)/.config"
7 default "/etc/kernel-config"
8 default "/boot/config-$(shell,uname -r)"

--- 5 unchanged lines hidden (view full) ---

14 help
15 This is used in unclear ways:
16
17 - Re-run Kconfig when the compiler is updated
18 The 'default' property references the environment variable,
19 CC_VERSION_TEXT so it is recorded in include/config/auto.conf.cmd.
20 When the compiler is updated, Kconfig will be invoked.
21
22 - Ensure full rebuild when the compiler is updated
22 - Ensure full rebuild when the compier is updated
23 include/linux/kconfig.h contains this option in the comment line so
24 fixdep adds include/config/cc/version/text.h into the auto-generated
25 dependency. When the compiler is updated, syncconfig will touch it
26 and then every file will be rebuilt.
27
28config CC_IS_GCC
23 include/linux/kconfig.h contains this option in the comment line so
24 fixdep adds include/config/cc/version/text.h into the auto-generated
25 dependency. When the compiler is updated, syncconfig will touch it
26 and then every file will be rebuilt.
27
28config CC_IS_GCC
29 def_bool $(success,test "$(cc-name)" = GCC)
29 def_bool $(success,echo "$(CC_VERSION_TEXT)" | grep -q gcc)
30
31config GCC_VERSION
32 int
30
31config GCC_VERSION
32 int
33 default $(cc-version) if CC_IS_GCC
33 default $(shell,$(srctree)/scripts/gcc-version.sh $(CC)) if CC_IS_GCC
34 default 0
35
34 default 0
35
36config CC_IS_CLANG
37 def_bool $(success,test "$(cc-name)" = Clang)
38
39config CLANG_VERSION
40 int
41 default $(cc-version) if CC_IS_CLANG
42 default 0
43
44config LD_IS_BFD
45 def_bool $(success,test "$(ld-name)" = BFD)
46
47config LD_VERSION
48 int
36config LD_VERSION
37 int
49 default $(ld-version) if LD_IS_BFD
50 default 0
38 default $(shell,$(LD) --version | $(srctree)/scripts/ld-version.sh)
51
39
40config CC_IS_CLANG
41 def_bool $(success,echo "$(CC_VERSION_TEXT)" | grep -q clang)
42
52config LD_IS_LLD
43config LD_IS_LLD
53 def_bool $(success,test "$(ld-name)" = LLD)
44 def_bool $(success,$(LD) -v | head -n 1 | grep -q LLD)
54
45
46config CLANG_VERSION
47 int
48 default $(shell,$(srctree)/scripts/clang-version.sh $(CC))
49
55config LLD_VERSION
56 int
50config LLD_VERSION
51 int
57 default $(ld-version) if LD_IS_LLD
58 default 0
52 default $(shell,$(srctree)/scripts/lld-version.sh $(LD))
59
60config CC_CAN_LINK
61 bool
62 default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(m64-flag)) if 64BIT
63 default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(m32-flag))
64
65config CC_CAN_LINK_STATIC
66 bool

--- 1127 unchanged lines hidden (view full) ---

1194 Allow user space to create what appear to be multiple instances
1195 of the network stack.
1196
1197endif # NAMESPACES
1198
1199config CHECKPOINT_RESTORE
1200 bool "Checkpoint/restore support"
1201 select PROC_CHILDREN
53
54config CC_CAN_LINK
55 bool
56 default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(m64-flag)) if 64BIT
57 default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(m32-flag))
58
59config CC_CAN_LINK_STATIC
60 bool

--- 1127 unchanged lines hidden (view full) ---

1188 Allow user space to create what appear to be multiple instances
1189 of the network stack.
1190
1191endif # NAMESPACES
1192
1193config CHECKPOINT_RESTORE
1194 bool "Checkpoint/restore support"
1195 select PROC_CHILDREN
1202 select KCMP
1203 default n
1204 help
1205 Enables additional kernel features in a sake of checkpoint/restore.
1206 In particular it adds auxiliary prctl codes to setup process text,
1207 data and heap segment sizes, and a few additional /proc filesystem
1208 entries.
1209
1210 If unsure, say N here.

--- 493 unchanged lines hidden (view full) ---

1704
1705 If you are unsure how to answer this question, answer N.
1706
1707config BPF_SYSCALL
1708 bool "Enable bpf() system call"
1709 select BPF
1710 select IRQ_WORK
1711 select TASKS_TRACE_RCU
1196 default n
1197 help
1198 Enables additional kernel features in a sake of checkpoint/restore.
1199 In particular it adds auxiliary prctl codes to setup process text,
1200 data and heap segment sizes, and a few additional /proc filesystem
1201 entries.
1202
1203 If unsure, say N here.

--- 493 unchanged lines hidden (view full) ---

1697
1698 If you are unsure how to answer this question, answer N.
1699
1700config BPF_SYSCALL
1701 bool "Enable bpf() system call"
1702 select BPF
1703 select IRQ_WORK
1704 select TASKS_TRACE_RCU
1705 select NET_SOCK_MSG if INET
1712 default n
1713 help
1714 Enable the bpf() system call that allows to manipulate eBPF
1715 programs and maps via file descriptors.
1716
1717config ARCH_WANT_DEFAULT_BPF_JIT
1718 bool
1719

--- 18 unchanged lines hidden (view full) ---

1738 handle page faults in userland.
1739
1740config ARCH_HAS_MEMBARRIER_CALLBACKS
1741 bool
1742
1743config ARCH_HAS_MEMBARRIER_SYNC_CORE
1744 bool
1745
1706 default n
1707 help
1708 Enable the bpf() system call that allows to manipulate eBPF
1709 programs and maps via file descriptors.
1710
1711config ARCH_WANT_DEFAULT_BPF_JIT
1712 bool
1713

--- 18 unchanged lines hidden (view full) ---

1732 handle page faults in userland.
1733
1734config ARCH_HAS_MEMBARRIER_CALLBACKS
1735 bool
1736
1737config ARCH_HAS_MEMBARRIER_SYNC_CORE
1738 bool
1739
1746config KCMP
1747 bool "Enable kcmp() system call" if EXPERT
1748 help
1749 Enable the kernel resource comparison system call. It provides
1750 user-space with the ability to compare two processes to see if they
1751 share a common resource, such as a file descriptor or even virtual
1752 memory space.
1753
1754 If unsure, say N.
1755
1756config RSEQ
1757 bool "Enable rseq() system call" if EXPERT
1758 default y
1759 depends on HAVE_RSEQ
1760 select MEMBARRIER
1761 help
1762 Enable the restartable sequences system call. It provides a
1763 user-space cache for the current CPU number value, which

--- 98 unchanged lines hidden (view full) ---

1862 bool "Enable SLUB debugging support" if EXPERT
1863 depends on SLUB && SYSFS
1864 help
1865 SLUB has extensive debug support features. Disabling these can
1866 result in significant savings in code size. This also disables
1867 SLUB sysfs support. /sys/slab will not exist and there will be
1868 no support for cache validation etc.
1869
1740config RSEQ
1741 bool "Enable rseq() system call" if EXPERT
1742 default y
1743 depends on HAVE_RSEQ
1744 select MEMBARRIER
1745 help
1746 Enable the restartable sequences system call. It provides a
1747 user-space cache for the current CPU number value, which

--- 98 unchanged lines hidden (view full) ---

1846 bool "Enable SLUB debugging support" if EXPERT
1847 depends on SLUB && SYSFS
1848 help
1849 SLUB has extensive debug support features. Disabling these can
1850 result in significant savings in code size. This also disables
1851 SLUB sysfs support. /sys/slab will not exist and there will be
1852 no support for cache validation etc.
1853
1854config SLUB_MEMCG_SYSFS_ON
1855 default n
1856 bool "Enable memcg SLUB sysfs support by default" if EXPERT
1857 depends on SLUB && SYSFS && MEMCG
1858 help
1859 SLUB creates a directory under /sys/kernel/slab for each
1860 allocation cache to host info and debug files. If memory
1861 cgroup is enabled, each cache can have per memory cgroup
1862 caches. SLUB can create the same sysfs directories for these
1863 caches under /sys/kernel/slab/CACHE/cgroup but it can lead
1864 to a very high number of debug files being created. This is
1865 controlled by slub_memcg_sysfs boot parameter and this
1866 config option determines the parameter's default value.
1867
1870config COMPAT_BRK
1871 bool "Disable heap randomization"
1872 default y
1873 help
1874 Randomizing heap placement makes heap exploits harder, but it
1875 also breaks ancient binaries (including anything libc5 based).
1876 This option changes the bootup default to heap randomization
1877 disabled, and can be overridden at runtime by setting

--- 381 unchanged lines hidden (view full) ---

2259 namespace is required to import the namespace via MODULE_IMPORT_NS().
2260 There is no technical reason to enforce correct namespace imports,
2261 but it creates consistency between symbols defining namespaces and
2262 users importing namespaces they make use of. This option relaxes this
2263 requirement and lifts the enforcement when loading a module.
2264
2265 If unsure, say N.
2266
1868config COMPAT_BRK
1869 bool "Disable heap randomization"
1870 default y
1871 help
1872 Randomizing heap placement makes heap exploits harder, but it
1873 also breaks ancient binaries (including anything libc5 based).
1874 This option changes the bootup default to heap randomization
1875 disabled, and can be overridden at runtime by setting

--- 381 unchanged lines hidden (view full) ---

2257 namespace is required to import the namespace via MODULE_IMPORT_NS().
2258 There is no technical reason to enforce correct namespace imports,
2259 but it creates consistency between symbols defining namespaces and
2260 users importing namespaces they make use of. This option relaxes this
2261 requirement and lifts the enforcement when loading a module.
2262
2263 If unsure, say N.
2264
2265config UNUSED_SYMBOLS
2266 bool "Enable unused/obsolete exported symbols"
2267 default y if X86
2268 help
2269 Unused but exported symbols make the kernel needlessly bigger. For
2270 that reason most of these unused exports will soon be removed. This
2271 option is provided temporarily to provide a transition period in case
2272 some external kernel module needs one of these symbols anyway. If you
2273 encounter such a case in your module, consider if you are actually
2274 using the right API. (rationale: since nobody in the kernel is using
2275 this in a module, there is a pretty good chance it's actually the
2276 wrong interface to use). If you really need the symbol, please send a
2277 mail to the linux kernel mailing list mentioning the symbol and why
2278 you really need it, and what the merge plan to the mainline kernel for
2279 your module is.
2280
2267config TRIM_UNUSED_KSYMS
2281config TRIM_UNUSED_KSYMS
2268 bool "Trim unused exported kernel symbols" if EXPERT
2269 depends on !COMPILE_TEST
2282 bool "Trim unused exported kernel symbols"
2283 depends on !UNUSED_SYMBOLS
2270 help
2271 The kernel and some modules make many symbols available for
2272 other modules to use via EXPORT_SYMBOL() and variants. Depending
2273 on the set of modules being selected in your kernel configuration,
2274 many of those exported symbols might never be used.
2275
2276 This option allows for unused exported symbols to be dropped from
2277 the build. In turn, this provides the compiler more opportunities
2278 (especially when using LTO) for optimizing the code and reducing
2279 binary size. This might have some security advantages as well.
2280
2281 If unsure, or if you need to build out-of-tree modules, say N.
2282
2283config UNUSED_KSYMS_WHITELIST
2284 string "Whitelist of symbols to keep in ksymtab"
2285 depends on TRIM_UNUSED_KSYMS
2284 help
2285 The kernel and some modules make many symbols available for
2286 other modules to use via EXPORT_SYMBOL() and variants. Depending
2287 on the set of modules being selected in your kernel configuration,
2288 many of those exported symbols might never be used.
2289
2290 This option allows for unused exported symbols to be dropped from
2291 the build. In turn, this provides the compiler more opportunities
2292 (especially when using LTO) for optimizing the code and reducing
2293 binary size. This might have some security advantages as well.
2294
2295 If unsure, or if you need to build out-of-tree modules, say N.
2296
2297config UNUSED_KSYMS_WHITELIST
2298 string "Whitelist of symbols to keep in ksymtab"
2299 depends on TRIM_UNUSED_KSYMS
2286 default "scripts/lto-used-symbollist.txt" if LTO_CLANG
2287 help
2288 By default, all unused exported symbols will be un-exported from the
2289 build when TRIM_UNUSED_KSYMS is selected.
2290
2291 UNUSED_KSYMS_WHITELIST allows to whitelist symbols that must be kept
2292 exported at all times, even in absence of in-tree users. The value to
2293 set here is the path to a text file containing the list of symbols,
2294 one per line. The path can be absolute, or relative to the kernel

--- 51 unchanged lines hidden ---
2300 help
2301 By default, all unused exported symbols will be un-exported from the
2302 build when TRIM_UNUSED_KSYMS is selected.
2303
2304 UNUSED_KSYMS_WHITELIST allows to whitelist symbols that must be kept
2305 exported at all times, even in absence of in-tree users. The value to
2306 set here is the path to a text file containing the list of symbols,
2307 one per line. The path can be absolute, or relative to the kernel

--- 51 unchanged lines hidden ---