On Fri, Sep 30, 2022 at 5:55 PM Masahiro Yamada <masahiroy@xxxxxxxxxx> wrote: > > Commit f9b3cd245784 ("Kconfig.debug: make DEBUG_INFO selectable from > a choice") added CONFIG_DEBUG_INFO_NONE into the DWARF version choice, > but it should rather belong to the debug level choice. > > This commit cosolidates CONFIG options into two choices: > > - Debug info level (NONE / REDUCED / DEFAULT) > > - DWARF format (DWARF_TOOLCHAIN_DEFAULT / DWARF4 / DWARF5) > > This is more consistent with compilers' policy because the -g0 compiler > flag means "no debug info". > > GCC manual: > > -g<level> > > Request debugging information and also use level to specify how > much information. The default level is 2. > > Level 0 produces no debug information at all. Thus, -g0 negates -g. > > Level 1 produces minimal information, enough for making backtraces > in parts of the program that you don’t plan to debug. This includes > descriptions of functions and external variables, and line number > tables, but no information about local variables. > > Level 3 includes extra information, such as all the macro > definitions present in the program. Some debuggers support macro > expansion when you use -g3. > > Rustc Codegen manual: > > debuginfo > > This flag controls the generation of debug information. It takes > one of the following values: > > 0: no debug info at all (the default). > 1: line tables only. > 2: full debug info. > > I moved CONFIG_DEBUG_INFO_REDUCED into the debug level choice. > > This change will make it easier to add another debug info level if > necessary. > > Signed-off-by: Masahiro Yamada <masahiroy@xxxxxxxxxx> > --- > > lib/Kconfig.debug | 60 +++++++++++++++++++++++++++++------------------ > 1 file changed, 37 insertions(+), 23 deletions(-) > > diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug > index d3e5f36bb01e..03e75a54be6c 100644 > --- a/lib/Kconfig.debug > +++ b/lib/Kconfig.debug > @@ -232,17 +232,11 @@ config DEBUG_INFO > information will be generated for build targets. > > choice > - prompt "Debug information" > + prompt "Debug information level" > 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 > - is needed if you intend to use kernel crashdump or binary object > - tools like crash, kgdb, LKCD, gdb, etc on the kernel. > - > - Choose which version of DWARF debug info to emit. If unsure, > - select "Toolchain default". > > config DEBUG_INFO_NONE > bool "Disable debug information" > @@ -250,9 +244,41 @@ config DEBUG_INFO_NONE > Do not build the kernel with debugging information, which will > result in a faster and smaller build. > > +config DEBUG_INFO_REDUCED > + bool "Reduced debugging information" > + select DEBUG_INFO > + help > + If you say Y here compiler is instructed to generate less debugging > + information for structure types. This means that tools that > + need full debugging information (like kgdb or systemtap) won't > + be happy. But if you merely need debugging information to > + resolve line numbers there is no loss. Advantage is that > + build directory object sizes shrink dramatically over a full > + DEBUG_INFO build and compile times are reduced too. > + Only works with newer gcc versions. > + > +config DEBUG_INFO_DEFAULT > + bool "Default-level debugging information" > + select DEBUG_INFO > + help > + If you say Y here compiler is instructed to generate the default > + level of debugging information. > + > + This adds debug symbols to the kernel and modules (gcc -g), and > + is needed if you intend to use kernel crashdump or binary object > + tools like crash, kgdb, LKCD, gdb, etc on the kernel. > + > +endchoice # "Debug information level" > + > +choice > + prompt "DWARF version" > + depends on DEBUG_INFO > + prompt "DWARF version" Nit. The same prompt appears twice. I will drop one. -- Best Regards Masahiro Yamada