diff mbox series

Kconfig.debug: Make DEBUG_INFO always default=n

Message ID 20220128214131.580131-1-keescook@chromium.org (mailing list archive)
State Mainlined
Commit f9b3cd24578401e7a392974b3353277286e49cee
Headers show
Series Kconfig.debug: Make DEBUG_INFO always default=n | expand

Commit Message

Kees Cook Jan. 28, 2022, 9:41 p.m. UTC
While trying to make sure CONFIG_DEBUG_INFO wasn't set for COMPILE_TEST,
I ordered the choices incorrectly to retain the prior default=n state.
Move DEBUG_INFO_NONE to the top so that the default choice is disabled,
and remove the "if COMPILE_TEST" as it is now redundant.

Reported-by: Nathan Chancellor <nathan@kernel.org>
Link: https://lore.kernel.org/lkml/YfRY6+CaQxX7O8vF@dev-arch.archlinux-ax161
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Masahiro Yamada <masahiroy@kernel.org>
Cc: Nathan Chancellor <nathan@kernel.org>
Cc: Nick Desaulniers <ndesaulniers@google.com>
Cc: Miguel Ojeda <ojeda@kernel.org>
Signed-off-by: Kees Cook <keescook@chromium.org>
---
Andrew, this is a fix for kconfigdebug-make-debug_info-selectable-from-a-choice.patch
---
 lib/Kconfig.debug | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

Comments

Nathan Chancellor Jan. 28, 2022, 11:39 p.m. UTC | #1
On Fri, Jan 28, 2022 at 01:41:31PM -0800, Kees Cook wrote:
> While trying to make sure CONFIG_DEBUG_INFO wasn't set for COMPILE_TEST,
> I ordered the choices incorrectly to retain the prior default=n state.
> Move DEBUG_INFO_NONE to the top so that the default choice is disabled,
> and remove the "if COMPILE_TEST" as it is now redundant.
> 
> Reported-by: Nathan Chancellor <nathan@kernel.org>
> Link: https://lore.kernel.org/lkml/YfRY6+CaQxX7O8vF@dev-arch.archlinux-ax161
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Cc: Masahiro Yamada <masahiroy@kernel.org>
> Cc: Nathan Chancellor <nathan@kernel.org>
> Cc: Nick Desaulniers <ndesaulniers@google.com>
> Cc: Miguel Ojeda <ojeda@kernel.org>
> Signed-off-by: Kees Cook <keescook@chromium.org>

Reviewed-by: Nathan Chancellor <nathan@kernel.org>

Another fallout of the original change is that defconfigs that do enable
CONFIG_DEBUG_INFO without any of the DWARF version configs will not have
debug info anymore.

Mainline:

$ make -sj$(nproc) ARCH=arm64 LLVM=1 mrproper defconfig && rg DEBUG_INFO .config
9296:CONFIG_DEBUG_INFO=y
9297:CONFIG_DEBUG_INFO_REDUCED=y
9298:# CONFIG_DEBUG_INFO_COMPRESSED is not set
9299:# CONFIG_DEBUG_INFO_SPLIT is not set
9300:CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y
9301:# CONFIG_DEBUG_INFO_DWARF4 is not set
9302:# CONFIG_DEBUG_INFO_DWARF5 is not set

next-20220128:

$ make -sj$(nproc) ARCH=arm64 LLVM=1 mrproper defconfig && rg DEBUG_INFO .config
9299:CONFIG_DEBUG_INFO=y
9300:CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y
9301:# CONFIG_DEBUG_INFO_DWARF4 is not set
9302:# CONFIG_DEBUG_INFO_DWARF5 is not set
9303:# CONFIG_DEBUG_INFO_NONE is not set
9304:CONFIG_DEBUG_INFO_REDUCED=y
9305:# CONFIG_DEBUG_INFO_COMPRESSED is not set
9306:# CONFIG_DEBUG_INFO_SPLIT is not set

next-20220128 + this patch:

$ make -sj$(nproc) ARCH=arm64 LLVM=1 mrproper defconfig && rg DEBUG_INFO .config
9299:CONFIG_DEBUG_INFO_NONE=y
9300:# CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT is not set
9301:# CONFIG_DEBUG_INFO_DWARF4 is not set
9302:# CONFIG_DEBUG_INFO_DWARF5 is not set

I guess there is not really a way around that other than having people
regenerate their defconfigs (which should really be done each release
anyways) since DEBUG_INFO is no longer a user selectable symbol and it
is probably better to have this choice default to no debug info rather
than debug info. Is there any precedent to updating defconfigs due to a
change like this or some other way to let people know about it?

Cheers,
Nathan

> ---
> Andrew, this is a fix for kconfigdebug-make-debug_info-selectable-from-a-choice.patch
> ---
>  lib/Kconfig.debug | 13 ++++++-------
>  1 file changed, 6 insertions(+), 7 deletions(-)
> 
> diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
> index a7b657d67318..a1262358d55a 100644
> --- a/lib/Kconfig.debug
> +++ b/lib/Kconfig.debug
> @@ -234,7 +234,6 @@ config DEBUG_INFO
>  choice
>  	prompt "Debug information"
>  	depends on DEBUG_KERNEL
> -	default DEBUG_INFO_NONE if COMPILE_TEST
>  	help
>  	  Selecting something other than "None" results in a kernel image
>  	  that will include debugging info resulting in a larger kernel image.
> @@ -245,6 +244,12 @@ choice
>  	  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
> @@ -283,12 +288,6 @@ config DEBUG_INFO_DWARF5
>  	  config if they rely on tooling that has not yet been updated to
>  	  support DWARF Version 5.
>  
> -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.
> -
>  endchoice # "Debug information"
>  
>  if DEBUG_INFO
> -- 
> 2.30.2
>
diff mbox series

Patch

diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index a7b657d67318..a1262358d55a 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -234,7 +234,6 @@  config DEBUG_INFO
 choice
 	prompt "Debug information"
 	depends on DEBUG_KERNEL
-	default DEBUG_INFO_NONE if COMPILE_TEST
 	help
 	  Selecting something other than "None" results in a kernel image
 	  that will include debugging info resulting in a larger kernel image.
@@ -245,6 +244,12 @@  choice
 	  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
@@ -283,12 +288,6 @@  config DEBUG_INFO_DWARF5
 	  config if they rely on tooling that has not yet been updated to
 	  support DWARF Version 5.
 
-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.
-
 endchoice # "Debug information"
 
 if DEBUG_INFO