mirror of
https://gitee.com/bianbu-linux/linux-6.6
synced 2025-04-26 14:17:26 -04:00
Kconfig.debug: make DEBUG_INFO selectable from a choice
Currently it's not possible to enable DEBUG_INFO for an all*config build, since it is marked as "depends on !COMPILE_TEST". This generally makes sense because a debug build of an all*config target ends up taking much longer and the output is much larger. Having this be "default off" makes sense. However, there are cases where enabling DEBUG_INFO for such builds is useful for doing treewide A/B comparisons of build options, etc. Make DEBUG_INFO selectable from any of the DWARF version choice options, with DEBUG_INFO_NONE being the default for COMPILE_TEST. The mutually exclusive relationship between DWARF5 and BTF must be inverted, but the result remains the same. Additionally moves DEBUG_KERNEL and DEBUG_MISC up to the top of the menu because they were enabling features _above_ it, making it weird to navigate menuconfig. [keescook@chromium.org: make DEBUG_INFO always default=n] Link: https://lkml.kernel.org/r/20220128214131.580131-1-keescook@chromium.org Link: https://lore.kernel.org/lkml/YfRY6+CaQxX7O8vF@dev-arch.archlinux-ax161 Link: https://lkml.kernel.org/r/20220125075126.891825-1-keescook@chromium.org Signed-off-by: Kees Cook <keescook@chromium.org> Suggested-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Nathan Chancellor <nathan@kernel.org> Reviewed-by: Nick Desaulniers <ndesaulniers@google.com> Tested-by: Nick Desaulniers <ndesaulniers@google.com> Reviewed-by: Masahiro Yamada <masahiroy@kernel.org> Cc: Nick Desaulniers <ndesaulniers@google.com> Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
a7cd9a5376
commit
f9b3cd2457
1 changed files with 74 additions and 65 deletions
|
@ -208,20 +208,87 @@ config DEBUG_BUGVERBOSE
|
||||||
|
|
||||||
endmenu # "printk and dmesg options"
|
endmenu # "printk and dmesg options"
|
||||||
|
|
||||||
|
config DEBUG_KERNEL
|
||||||
|
bool "Kernel debugging"
|
||||||
|
help
|
||||||
|
Say Y here if you are developing drivers or trying to debug and
|
||||||
|
identify kernel problems.
|
||||||
|
|
||||||
|
config DEBUG_MISC
|
||||||
|
bool "Miscellaneous debug code"
|
||||||
|
default DEBUG_KERNEL
|
||||||
|
depends on DEBUG_KERNEL
|
||||||
|
help
|
||||||
|
Say Y here if you need to enable miscellaneous debug code that should
|
||||||
|
be under a more specific debug option but isn't.
|
||||||
|
|
||||||
menu "Compile-time checks and compiler options"
|
menu "Compile-time checks and compiler options"
|
||||||
|
|
||||||
config DEBUG_INFO
|
config DEBUG_INFO
|
||||||
bool "Compile the kernel with debug info"
|
bool
|
||||||
depends on DEBUG_KERNEL && !COMPILE_TEST
|
|
||||||
help
|
help
|
||||||
If you say Y here the resulting kernel image will include
|
A kernel debug info option other than "None" has been selected
|
||||||
debugging info resulting in a larger kernel image.
|
in the "Debug information" choice below, indicating that debug
|
||||||
|
information will be generated for build targets.
|
||||||
|
|
||||||
|
choice
|
||||||
|
prompt "Debug information"
|
||||||
|
depends on DEBUG_KERNEL
|
||||||
|
help
|
||||||
|
Selecting something other than "None" results in a kernel image
|
||||||
|
that will include debugging info resulting in a larger kernel image.
|
||||||
This adds debug symbols to the kernel and modules (gcc -g), and
|
This adds debug symbols to the kernel and modules (gcc -g), and
|
||||||
is needed if you intend to use kernel crashdump or binary object
|
is needed if you intend to use kernel crashdump or binary object
|
||||||
tools like crash, kgdb, LKCD, gdb, etc on the kernel.
|
tools like crash, kgdb, LKCD, gdb, etc on the kernel.
|
||||||
Say Y here only if you plan to debug the kernel.
|
|
||||||
|
|
||||||
If unsure, say N.
|
Choose which version of DWARF debug info to emit. If unsure,
|
||||||
|
select "Toolchain default".
|
||||||
|
|
||||||
|
config DEBUG_INFO_NONE
|
||||||
|
bool "Disable debug information"
|
||||||
|
help
|
||||||
|
Do not build the kernel with debugging information, which will
|
||||||
|
result in a faster and smaller build.
|
||||||
|
|
||||||
|
config DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT
|
||||||
|
bool "Rely on the toolchain's implicit default DWARF version"
|
||||||
|
select DEBUG_INFO
|
||||||
|
help
|
||||||
|
The implicit default version of DWARF debug info produced by a
|
||||||
|
toolchain changes over time.
|
||||||
|
|
||||||
|
This can break consumers of the debug info that haven't upgraded to
|
||||||
|
support newer revisions, and prevent testing newer versions, but
|
||||||
|
those should be less common scenarios.
|
||||||
|
|
||||||
|
config DEBUG_INFO_DWARF4
|
||||||
|
bool "Generate DWARF Version 4 debuginfo"
|
||||||
|
select DEBUG_INFO
|
||||||
|
help
|
||||||
|
Generate DWARF v4 debug info. This requires gcc 4.5+ and gdb 7.0+.
|
||||||
|
|
||||||
|
If you have consumers of DWARF debug info that are not ready for
|
||||||
|
newer revisions of DWARF, you may wish to choose this or have your
|
||||||
|
config select this.
|
||||||
|
|
||||||
|
config DEBUG_INFO_DWARF5
|
||||||
|
bool "Generate DWARF Version 5 debuginfo"
|
||||||
|
select DEBUG_INFO
|
||||||
|
depends on !CC_IS_CLANG || (CC_IS_CLANG && (AS_IS_LLVM || (AS_IS_GNU && AS_VERSION >= 23502)))
|
||||||
|
help
|
||||||
|
Generate DWARF v5 debug info. Requires binutils 2.35.2, gcc 5.0+ (gcc
|
||||||
|
5.0+ accepts the -gdwarf-5 flag but only had partial support for some
|
||||||
|
draft features until 7.0), and gdb 8.0+.
|
||||||
|
|
||||||
|
Changes to the structure of debug info in Version 5 allow for around
|
||||||
|
15-18% savings in resulting image and debug info section sizes as
|
||||||
|
compared to DWARF Version 4. DWARF Version 5 standardizes previous
|
||||||
|
extensions such as accelerators for symbol indexing and the format
|
||||||
|
for fission (.dwo/.dwp) files. Users may not want to select this
|
||||||
|
config if they rely on tooling that has not yet been updated to
|
||||||
|
support DWARF Version 5.
|
||||||
|
|
||||||
|
endchoice # "Debug information"
|
||||||
|
|
||||||
if DEBUG_INFO
|
if DEBUG_INFO
|
||||||
|
|
||||||
|
@ -267,56 +334,12 @@ config DEBUG_INFO_SPLIT
|
||||||
to know about the .dwo files and include them.
|
to know about the .dwo files and include them.
|
||||||
Incompatible with older versions of ccache.
|
Incompatible with older versions of ccache.
|
||||||
|
|
||||||
choice
|
|
||||||
prompt "DWARF version"
|
|
||||||
help
|
|
||||||
Which version of DWARF debug info to emit.
|
|
||||||
|
|
||||||
config DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT
|
|
||||||
bool "Rely on the toolchain's implicit default DWARF version"
|
|
||||||
help
|
|
||||||
The implicit default version of DWARF debug info produced by a
|
|
||||||
toolchain changes over time.
|
|
||||||
|
|
||||||
This can break consumers of the debug info that haven't upgraded to
|
|
||||||
support newer revisions, and prevent testing newer versions, but
|
|
||||||
those should be less common scenarios.
|
|
||||||
|
|
||||||
If unsure, say Y.
|
|
||||||
|
|
||||||
config DEBUG_INFO_DWARF4
|
|
||||||
bool "Generate DWARF Version 4 debuginfo"
|
|
||||||
help
|
|
||||||
Generate DWARF v4 debug info. This requires gcc 4.5+ and gdb 7.0+.
|
|
||||||
|
|
||||||
If you have consumers of DWARF debug info that are not ready for
|
|
||||||
newer revisions of DWARF, you may wish to choose this or have your
|
|
||||||
config select this.
|
|
||||||
|
|
||||||
config DEBUG_INFO_DWARF5
|
|
||||||
bool "Generate DWARF Version 5 debuginfo"
|
|
||||||
depends on !CC_IS_CLANG || (CC_IS_CLANG && (AS_IS_LLVM || (AS_IS_GNU && AS_VERSION >= 23502)))
|
|
||||||
depends on !DEBUG_INFO_BTF
|
|
||||||
help
|
|
||||||
Generate DWARF v5 debug info. Requires binutils 2.35.2, gcc 5.0+ (gcc
|
|
||||||
5.0+ accepts the -gdwarf-5 flag but only had partial support for some
|
|
||||||
draft features until 7.0), and gdb 8.0+.
|
|
||||||
|
|
||||||
Changes to the structure of debug info in Version 5 allow for around
|
|
||||||
15-18% savings in resulting image and debug info section sizes as
|
|
||||||
compared to DWARF Version 4. DWARF Version 5 standardizes previous
|
|
||||||
extensions such as accelerators for symbol indexing and the format
|
|
||||||
for fission (.dwo/.dwp) files. Users may not want to select this
|
|
||||||
config if they rely on tooling that has not yet been updated to
|
|
||||||
support DWARF Version 5.
|
|
||||||
|
|
||||||
endchoice # "DWARF version"
|
|
||||||
|
|
||||||
config DEBUG_INFO_BTF
|
config DEBUG_INFO_BTF
|
||||||
bool "Generate BTF typeinfo"
|
bool "Generate BTF typeinfo"
|
||||||
depends on !DEBUG_INFO_SPLIT && !DEBUG_INFO_REDUCED
|
depends on !DEBUG_INFO_SPLIT && !DEBUG_INFO_REDUCED
|
||||||
depends on !GCC_PLUGIN_RANDSTRUCT || COMPILE_TEST
|
depends on !GCC_PLUGIN_RANDSTRUCT || COMPILE_TEST
|
||||||
depends on BPF_SYSCALL
|
depends on BPF_SYSCALL
|
||||||
|
depends on !DEBUG_INFO_DWARF5
|
||||||
help
|
help
|
||||||
Generate deduplicated BTF type information from DWARF debug info.
|
Generate deduplicated BTF type information from DWARF debug info.
|
||||||
Turning this on expects presence of pahole tool, which will convert
|
Turning this on expects presence of pahole tool, which will convert
|
||||||
|
@ -585,20 +608,6 @@ source "lib/Kconfig.kcsan"
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
config DEBUG_KERNEL
|
|
||||||
bool "Kernel debugging"
|
|
||||||
help
|
|
||||||
Say Y here if you are developing drivers or trying to debug and
|
|
||||||
identify kernel problems.
|
|
||||||
|
|
||||||
config DEBUG_MISC
|
|
||||||
bool "Miscellaneous debug code"
|
|
||||||
default DEBUG_KERNEL
|
|
||||||
depends on DEBUG_KERNEL
|
|
||||||
help
|
|
||||||
Say Y here if you need to enable miscellaneous debug code that should
|
|
||||||
be under a more specific debug option but isn't.
|
|
||||||
|
|
||||||
menu "Networking Debugging"
|
menu "Networking Debugging"
|
||||||
|
|
||||||
source "net/Kconfig.debug"
|
source "net/Kconfig.debug"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue