Commit a66049e2 authored by Nick Desaulniers's avatar Nick Desaulniers Committed by Masahiro Yamada

Kbuild: make DWARF version a choice

Adds a default CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT which allows
the implicit default version of DWARF emitted by the toolchain to
progress over time.

Modifies CONFIG_DEBUG_INFO_DWARF4 to be a member of a choice, making it
mutually exclusive with CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT. Users
may want to select this if they are using a newer toolchain, but have
consumers of the DWARF debug info that aren't yet ready for newer DWARF
versions' debug info.

Does so in a way that's forward compatible with existing
configs, and makes adding future versions more straightforward. This
patch does not change the current behavior or selection of DWARF
version for users upgrading to kernels with this patch.

GCC since ~4.8 has defaulted to DWARF v4 implicitly, and GCC 11 has
bumped this to v5.

Remove the Kconfig help text  about DWARF v4 being larger.  It's
empirically false for the latest toolchains for x86_64 defconfig, has no
point of reference (I suspect it was DWARF v2 but that's stil
empirically false), and debug info size is not a qualatative measure.
Suggested-by: default avatarArvind Sankar <nivedita@alum.mit.edu>
Suggested-by: default avatarFangrui Song <maskray@google.com>
Suggested-by: default avatarJakub Jelinek <jakub@redhat.com>
Suggested-by: default avatarMark Wielaard <mark@klomp.org>
Suggested-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
Suggested-by: default avatarNathan Chancellor <nathan@kernel.org>
Tested-by: default avatarSedat Dilek <sedat.dilek@gmail.com>
Signed-off-by: default avatarNick Desaulniers <ndesaulniers@google.com>
Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
parent 3c4fa46b
...@@ -830,8 +830,9 @@ ifneq ($(LLVM_IAS),1) ...@@ -830,8 +830,9 @@ ifneq ($(LLVM_IAS),1)
KBUILD_AFLAGS += -Wa,-gdwarf-2 KBUILD_AFLAGS += -Wa,-gdwarf-2
endif endif
ifdef CONFIG_DEBUG_INFO_DWARF4 ifndef CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT
DEBUG_CFLAGS += -gdwarf-4 dwarf-version-$(CONFIG_DEBUG_INFO_DWARF4) := 4
DEBUG_CFLAGS += -gdwarf-$(dwarf-version-y)
endif endif
ifdef CONFIG_DEBUG_INFO_REDUCED ifdef CONFIG_DEBUG_INFO_REDUCED
......
...@@ -256,13 +256,33 @@ config DEBUG_INFO_SPLIT ...@@ -256,13 +256,33 @@ 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 config DEBUG_INFO_DWARF4
bool "Generate dwarf4 debuginfo" bool "Generate DWARF Version 4 debuginfo"
help help
Generate dwarf4 debug info. This requires recent versions Generate DWARF v4 debug info. This requires gcc 4.5+ and gdb 7.0+.
of gcc and gdb. It makes the debug information larger.
But it significantly improves the success of resolving If you have consumers of DWARF debug info that are not ready for
variables in gdb on optimized code. newer revisions of DWARF, you may wish to choose this or have your
config select this.
endchoice # "DWARF version"
config DEBUG_INFO_BTF config DEBUG_INFO_BTF
bool "Generate BTF typeinfo" bool "Generate BTF typeinfo"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment