Message ID | 20220814002021.16990-1-dmitrii.bundin.a@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] kbuild: add configurable debug info level | expand |
+CC: Fangrui Song <maskray@google.com> On Sun, Aug 14, 2022 at 9:25 AM Dmitrii Bundin <dmitrii.bundin.a@gmail.com> wrote: > > Provides a way to configure debug info level (-glevel). > Debug level 3 includes extra information such as macro definitions. With > level 3 enabled it's possible to expand macros right from the debugging > session in gdb simplifying debugging when complicated macros involved. > The default level is set to 2 to not change the default build behavior. > > Signed-off-by: Dmitrii Bundin <dmitrii.bundin.a@gmail.com> > --- > > Changes in v2: https://lore.kernel.org/all/20220804223504.4739-1-dmitrii.bundin.a@gmail.com/ > - Replace hardcoded -g3 with a configurable debug info level > > lib/Kconfig.debug | 11 +++++++++++ > scripts/Makefile.debug | 2 +- > 2 files changed, 12 insertions(+), 1 deletion(-) > > diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug > index 2e24db4bff19..a17c12c20290 100644 > --- a/lib/Kconfig.debug > +++ b/lib/Kconfig.debug > @@ -304,6 +304,17 @@ config DEBUG_INFO_REDUCED > DEBUG_INFO build and compile times are reduced too. > Only works with newer gcc versions. > > +config DEBUG_INFO_LEVEL > + int "Debug info level" > + range 0 3 > + default "2" > + help > + Sets the level of how much debug information to generate (-glevel). > + Level 1 produces minimal debug information without including information > + about local variables. Level 3 includes extra information like macro > + definitions. Setting up level 3 will require significantly more disk > + space and increase built time. Level 0 produces no debug information. > + We already have CONFIG_DEBUG_INFO_NONE to disable the debug info. The combination of CONFIG_DEBUG_INFO=y and CONFIG_DEBUG_INFO_LEVEL=0 (-g0) would emulate CONFIG_DEBUG_INFO_NONE ? Using 'int' does not look sensible to me. > config DEBUG_INFO_COMPRESSED > bool "Compressed debugging information" > depends on $(cc-option,-gz=zlib) > diff --git a/scripts/Makefile.debug b/scripts/Makefile.debug > index 9f39b0130551..28beffc42e71 100644 > --- a/scripts/Makefile.debug > +++ b/scripts/Makefile.debug > @@ -3,7 +3,7 @@ DEBUG_CFLAGS := > ifdef CONFIG_DEBUG_INFO_SPLIT > DEBUG_CFLAGS += -gsplit-dwarf > else > -DEBUG_CFLAGS += -g > +DEBUG_CFLAGS += -g$(CONFIG_DEBUG_INFO_LEVEL) > endif > > ifndef CONFIG_AS_IS_LLVM > -- > 2.17.1 > I want to consult Fangrui Song for this part. With this Makefile code, CONFIG_DEBUG_INFO_SPLIT takes the presidency over CONFIG_DEBUG_INFO_LEVEL. When CONFIG_DEBUG_INFO_SPLIT is enabled (-gsplit-dwarf), it always uses the default -g2 level. CONFIG_DEBUG_INFO_LEVEL is just ignored silently. It might be sensible in older GCC/Clang behavior because -gsplit-dwarf implied -g2. But, with this commit: https://reviews.llvm.org/D80391 -gsplit-dwarf and -g<level> are orthogonal for GCC 11+/Clang 12+, correct? I think "splitting debug files" and "debug level" should be controlled independently. (but it depends on the compiler version, if I understood correctly) -- Best Regards Masahiro Yamada
On 2022-08-14, Masahiro Yamada wrote: >+CC: Fangrui Song <maskray@google.com> > > > > >On Sun, Aug 14, 2022 at 9:25 AM Dmitrii Bundin ><dmitrii.bundin.a@gmail.com> wrote: >> >> Provides a way to configure debug info level (-glevel). >> Debug level 3 includes extra information such as macro definitions. With >> level 3 enabled it's possible to expand macros right from the debugging >> session in gdb simplifying debugging when complicated macros involved. >> The default level is set to 2 to not change the default build behavior. GCC -g3 generates macro information (in the .debug_macro section). In Clang, -g = -g2 = -g3. To generate macro information, specify -fdebug-macro. The different choice is known in the initial implementation https://reviews.llvm.org/D16135 . Not generating macro information for -g3 (i.e. diverging from GCC behavior) makes some sense to me: -fstandalone-debug will probably be more suitable as -g3 (it retains some type debug info for C++ (the code after https://github.com/llvm/llvm-project/blob/b2f31cac28c8a03ceb908b544f5790f4f9f2d9ab/clang/lib/CodeGen/CGDebugInfo.cpp#L2497-L2499). >> Signed-off-by: Dmitrii Bundin <dmitrii.bundin.a@gmail.com> >> --- >> >> Changes in v2: https://lore.kernel.org/all/20220804223504.4739-1-dmitrii.bundin.a@gmail.com/ >> - Replace hardcoded -g3 with a configurable debug info level >> >> lib/Kconfig.debug | 11 +++++++++++ >> scripts/Makefile.debug | 2 +- >> 2 files changed, 12 insertions(+), 1 deletion(-) >> >> diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug >> index 2e24db4bff19..a17c12c20290 100644 >> --- a/lib/Kconfig.debug >> +++ b/lib/Kconfig.debug >> @@ -304,6 +304,17 @@ config DEBUG_INFO_REDUCED >> DEBUG_INFO build and compile times are reduced too. >> Only works with newer gcc versions. >> >> +config DEBUG_INFO_LEVEL >> + int "Debug info level" >> + range 0 3 >> + default "2" >> + help >> + Sets the level of how much debug information to generate (-glevel). >> + Level 1 produces minimal debug information without including information >> + about local variables. Level 3 includes extra information like macro >> + definitions. Setting up level 3 will require significantly more disk >> + space and increase built time. Level 0 produces no debug information. >> + > > > >We already have CONFIG_DEBUG_INFO_NONE to >disable the debug info. > > >The combination of CONFIG_DEBUG_INFO=y and >CONFIG_DEBUG_INFO_LEVEL=0 (-g0) >would emulate CONFIG_DEBUG_INFO_NONE ? > > > >Using 'int' does not look sensible to me. > > > > > >> config DEBUG_INFO_COMPRESSED >> bool "Compressed debugging information" >> depends on $(cc-option,-gz=zlib) >> diff --git a/scripts/Makefile.debug b/scripts/Makefile.debug >> index 9f39b0130551..28beffc42e71 100644 >> --- a/scripts/Makefile.debug >> +++ b/scripts/Makefile.debug >> @@ -3,7 +3,7 @@ DEBUG_CFLAGS := >> ifdef CONFIG_DEBUG_INFO_SPLIT >> DEBUG_CFLAGS += -gsplit-dwarf >> else >> -DEBUG_CFLAGS += -g >> +DEBUG_CFLAGS += -g$(CONFIG_DEBUG_INFO_LEVEL) >> endif >> >> ifndef CONFIG_AS_IS_LLVM >> -- >> 2.17.1 >> > > >I want to consult Fangrui Song for this part. > > >With this Makefile code, CONFIG_DEBUG_INFO_SPLIT >takes the presidency over CONFIG_DEBUG_INFO_LEVEL. > > >When CONFIG_DEBUG_INFO_SPLIT is enabled (-gsplit-dwarf), >it always uses the default -g2 level. >CONFIG_DEBUG_INFO_LEVEL is just ignored silently. > > > >It might be sensible in older GCC/Clang behavior because >-gsplit-dwarf implied -g2. > > >But, with this commit: >https://reviews.llvm.org/D80391 > >-gsplit-dwarf and -g<level> are orthogonal >for GCC 11+/Clang 12+, correct? Correct. >I think "splitting debug files" and "debug level" >should be controlled independently. >(but it depends on the compiler version, if I understood correctly) Before GCC 11 and Clang 12, -gsplit-dwarf implied -g2 (older -gsplit-dwarf is like today's `-gsplit-dwarf -g2`). GCC 11 and Clang 12 (https://reviews.llvm.org/D80391) have changed -gsplit-dwarf to not imply -g2. For a group of -g0 -g1 -g2, the last option wins. Therefore, -g0 -gsplit-dwarf => debug info in GCC<11 and Clang<12 -g0 -gsplit-dwarf => no debug info in GCC>=11 and Clang>=12
On Sun, Aug 14, 2022 at 2:31 PM Fangrui Song <maskray@google.com> wrote: > > On 2022-08-14, Masahiro Yamada wrote: > >+CC: Fangrui Song <maskray@google.com> > > > > > > > > > >On Sun, Aug 14, 2022 at 9:25 AM Dmitrii Bundin > ><dmitrii.bundin.a@gmail.com> wrote: > >> > >> Provides a way to configure debug info level (-glevel). > >> Debug level 3 includes extra information such as macro definitions. With > >> level 3 enabled it's possible to expand macros right from the debugging > >> session in gdb simplifying debugging when complicated macros involved. > >> The default level is set to 2 to not change the default build behavior. > > GCC -g3 generates macro information (in the .debug_macro section). > > In Clang, -g = -g2 = -g3. To generate macro information, > specify -fdebug-macro. > The different choice is known in the initial implementation https://reviews.llvm.org/D16135 . > > Not generating macro information for -g3 (i.e. diverging from GCC > behavior) makes some sense to me: -fstandalone-debug will probably be > more suitable as -g3 (it retains some type debug info for C++ (the code > after https://github.com/llvm/llvm-project/blob/b2f31cac28c8a03ceb908b544f5790f4f9f2d9ab/clang/lib/CodeGen/CGDebugInfo.cpp#L2497-L2499). > > >> Signed-off-by: Dmitrii Bundin <dmitrii.bundin.a@gmail.com> > >> --- > >> > >> Changes in v2: https://lore.kernel.org/all/20220804223504.4739-1-dmitrii.bundin.a@gmail.com/ > >> - Replace hardcoded -g3 with a configurable debug info level > >> > >> lib/Kconfig.debug | 11 +++++++++++ > >> scripts/Makefile.debug | 2 +- > >> 2 files changed, 12 insertions(+), 1 deletion(-) > >> > >> diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug > >> index 2e24db4bff19..a17c12c20290 100644 > >> --- a/lib/Kconfig.debug > >> +++ b/lib/Kconfig.debug > >> @@ -304,6 +304,17 @@ config DEBUG_INFO_REDUCED > >> DEBUG_INFO build and compile times are reduced too. > >> Only works with newer gcc versions. > >> > >> +config DEBUG_INFO_LEVEL > >> + int "Debug info level" > >> + range 0 3 > >> + default "2" > >> + help > >> + Sets the level of how much debug information to generate (-glevel). > >> + Level 1 produces minimal debug information without including information > >> + about local variables. Level 3 includes extra information like macro > >> + definitions. Setting up level 3 will require significantly more disk > >> + space and increase built time. Level 0 produces no debug information. > >> + > > > > > > > >We already have CONFIG_DEBUG_INFO_NONE to > >disable the debug info. > > > > > >The combination of CONFIG_DEBUG_INFO=y and > >CONFIG_DEBUG_INFO_LEVEL=0 (-g0) > >would emulate CONFIG_DEBUG_INFO_NONE ? > > > > > > > >Using 'int' does not look sensible to me. > > > > > > > > > > > >> config DEBUG_INFO_COMPRESSED > >> bool "Compressed debugging information" > >> depends on $(cc-option,-gz=zlib) > >> diff --git a/scripts/Makefile.debug b/scripts/Makefile.debug > >> index 9f39b0130551..28beffc42e71 100644 > >> --- a/scripts/Makefile.debug > >> +++ b/scripts/Makefile.debug > >> @@ -3,7 +3,7 @@ DEBUG_CFLAGS := > >> ifdef CONFIG_DEBUG_INFO_SPLIT > >> DEBUG_CFLAGS += -gsplit-dwarf > >> else > >> -DEBUG_CFLAGS += -g > >> +DEBUG_CFLAGS += -g$(CONFIG_DEBUG_INFO_LEVEL) > >> endif > >> > >> ifndef CONFIG_AS_IS_LLVM > >> -- > >> 2.17.1 > >> > > > > > >I want to consult Fangrui Song for this part. > > > > > >With this Makefile code, CONFIG_DEBUG_INFO_SPLIT > >takes the presidency over CONFIG_DEBUG_INFO_LEVEL. > > > > > >When CONFIG_DEBUG_INFO_SPLIT is enabled (-gsplit-dwarf), > >it always uses the default -g2 level. > >CONFIG_DEBUG_INFO_LEVEL is just ignored silently. > > > > > > > >It might be sensible in older GCC/Clang behavior because > >-gsplit-dwarf implied -g2. > > > > > >But, with this commit: > >https://reviews.llvm.org/D80391 > > > >-gsplit-dwarf and -g<level> are orthogonal > >for GCC 11+/Clang 12+, correct? > > Correct. > > >I think "splitting debug files" and "debug level" > >should be controlled independently. > >(but it depends on the compiler version, if I understood correctly) > > Before GCC 11 and Clang 12, -gsplit-dwarf implied -g2 (older > -gsplit-dwarf is like today's `-gsplit-dwarf -g2`). > > GCC 11 and Clang 12 (https://reviews.llvm.org/D80391) have changed > -gsplit-dwarf to not imply -g2. > > For a group of -g0 -g1 -g2, the last option wins. Therefore, > > -g0 -gsplit-dwarf => debug info in GCC<11 and Clang<12 > -g0 -gsplit-dwarf => no debug info in GCC>=11 and Clang>=12 Thanks. I tested GCC 9 on Ubuntu 22.04. "-g3 -gsplit-dwarf" produces .debug_macro In old behavior, -gsplit-dwarf upgrades the level, but does not downgrade it, correct? [Old behavior] -g0 -gsplit-dwarf --> level 2 (gsplit-dwarf upgrade 0 to 2) -gsplit-dwarf -g0 --> level 0 (the last -g0 wins) -g3 -gsplit-dwarf --> level 3 (gsplit-dwarf does not downgrade) -g2 -g3 --> level 3 (the last -g3 wins) -g3 -g2 --> level 2 (the last -g2 wins) [New behavior] -g0 -gsplit-dwarf --> level 0 (the options are orthogonal) -gsplit-dwarf -g0 --> level 0 (the options are orthogonal) -g3 -gsplit-dwarf --> level 3 (the options are orthogonal) -g2 -g3 --> level 3 (the last -g3 wins) -g3 -g2 --> level 2 (the last -g2 wins) masahiro@grover:/tmp/foo$ gcc-9 --version gcc-9 (Ubuntu 9.4.0-5ubuntu1) 9.4.0 Copyright (C) 2019 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. masahiro@grover:/tmp/foo$ rm -f *.dwo masahiro@grover:/tmp/foo$ gcc-9 -gsplit-dwarf -o foo foo.c masahiro@grover:/tmp/foo$ readelf -S foo.dwo There are 9 section headers, starting at offset 0x840: Section Headers: [Nr] Name Type Address Offset Size EntSize Flags Link Info Align [ 0] NULL 0000000000000000 00000000 0000000000000000 0000000000000000 0 0 0 [ 1] .debug_info.dwo PROGBITS 0000000000000000 00000040 0000000000000217 0000000000000000 E 0 0 1 [ 2] .debug_abbrev.dwo PROGBITS 0000000000000000 00000257 00000000000000cb 0000000000000000 E 0 0 1 [ 3] .debug_line.dwo PROGBITS 0000000000000000 00000322 00000000000000e5 0000000000000000 E 0 0 1 [ 4] .debug_str_o[...] PROGBITS 0000000000000000 00000407 00000000000000d4 0000000000000000 E 0 0 1 [ 5] .debug_str.dwo PROGBITS 0000000000000000 000004db 00000000000002bd 0000000000000000 E 0 0 1 [ 6] .symtab SYMTAB 0000000000000000 00000798 0000000000000030 0000000000000018 7 2 8 [ 7] .strtab STRTAB 0000000000000000 000007c8 0000000000000001 0000000000000000 0 0 1 [ 8] .shstrtab STRTAB 0000000000000000 000007c9 0000000000000073 0000000000000000 0 0 1 Key to Flags: W (write), A (alloc), X (execute), M (merge), S (strings), I (info), L (link order), O (extra OS processing required), G (group), T (TLS), C (compressed), x (unknown), o (OS specific), E (exclude), D (mbind), l (large), p (processor specific) masahiro@grover:/tmp/foo$ rm -f *.dwo masahiro@grover:/tmp/foo$ gcc-9 -g3 -gsplit-dwarf -o foo foo.c masahiro@grover:/tmp/foo$ readelf -S foo.dwo There are 32 section headers, starting at offset 0x77f8: Section Headers: [Nr] Name Type Address Offset Size EntSize Flags Link Info Align [ 0] NULL 0000000000000000 00000000 0000000000000000 0000000000000000 0 0 0 [ 1] .debug_info.dwo PROGBITS 0000000000000000 00000040 0000000000000245 0000000000000000 E 0 0 1 [ 2] .debug_abbrev.dwo PROGBITS 0000000000000000 00000285 00000000000000ce 0000000000000000 E 0 0 1 [ 3] .debug_macro.dwo PROGBITS 0000000000000000 00000353 000000000000014a 0000000000000000 E 0 0 1 [ 4] .debug_macro.dwo PROGBITS 0000000000000000 0000049d 0000000000000528 0000000000000000 0 0 1 [ 5] .debug_macro.dwo PROGBITS 0000000000000000 000009c5 000000000000001c 0000000000000000 0 0 1 [ 6] .debug_macro.dwo PROGBITS 0000000000000000 000009e1 000000000000000c 0000000000000000 0 0 1 [ 7] .debug_macro.dwo PROGBITS 0000000000000000 000009ed 000000000000010b 0000000000000000 0 0 1 [ 8] .debug_macro.dwo PROGBITS 0000000000000000 00000af8 0000000000000010 0000000000000000 0 0 1 [ 9] .debug_macro.dwo PROGBITS 0000000000000000 00000b08 0000000000000033 0000000000000000 0 0 1 [10] .debug_macro.dwo PROGBITS 0000000000000000 00000b3b 0000000000000143 0000000000000000 0 0 1 [11] .debug_macro.dwo PROGBITS 0000000000000000 00000c7e 0000000000000056 0000000000000000 0 0 1 [12] .debug_macro.dwo PROGBITS 0000000000000000 00000cd4 0000000000000021 0000000000000000 0 0 1 [13] .debug_macro.dwo PROGBITS 0000000000000000 00000cf5 0000000000000037 0000000000000000 0 0 1 [14] .debug_macro.dwo PROGBITS 0000000000000000 00000d2c 000000000000000b 0000000000000000 0 0 1 [15] .debug_macro.dwo PROGBITS 0000000000000000 00000d37 0000000000000068 0000000000000000 0 0 1 [16] .debug_macro.dwo PROGBITS 0000000000000000 00000d9f 000000000000000c 0000000000000000 0 0 1 [17] .debug_macro.dwo PROGBITS 0000000000000000 00000dab 0000000000000048 0000000000000000 0 0 1 [18] .debug_macro.dwo PROGBITS 0000000000000000 00000df3 00000000000000a8 0000000000000000 0 0 1 [19] .debug_macro.dwo PROGBITS 0000000000000000 00000e9b 000000000000000b 0000000000000000 0 0 1 [20] .debug_macro.dwo PROGBITS 0000000000000000 00000ea6 0000000000000023 0000000000000000 0 0 1 [21] .debug_macro.dwo PROGBITS 0000000000000000 00000ec9 0000000000000030 0000000000000000 0 0 1 [22] .debug_macro.dwo PROGBITS 0000000000000000 00000ef9 0000000000000020 0000000000000000 0 0 1 [23] .debug_macro.dwo PROGBITS 0000000000000000 00000f19 000000000000001d 0000000000000000 0 0 1 [24] .debug_macro.dwo PROGBITS 0000000000000000 00000f36 0000000000000020 0000000000000000 0 0 1 [25] .debug_macro.dwo PROGBITS 0000000000000000 00000f56 0000000000000059 0000000000000000 0 0 1 [26] .debug_line.dwo PROGBITS 0000000000000000 00000faf 0000000000000255 0000000000000000 E 0 0 1 [27] .debug_str_o[...] PROGBITS 0000000000000000 00001204 0000000000000bd4 0000000000000000 E 0 0 1 [28] .debug_str.dwo PROGBITS 0000000000000000 00001dd8 0000000000005721 0000000000000000 E 0 0 1 [29] .symtab SYMTAB 0000000000000000 00007500 0000000000000270 0000000000000018 30 26 8 [30] .strtab STRTAB 0000000000000000 00007770 0000000000000001 0000000000000000 0 0 1 [31] .shstrtab STRTAB 0000000000000000 00007771 0000000000000084 0000000000000000 0 0 1 Key to Flags: W (write), A (alloc), X (execute), M (merge), S (strings), I (info), L (link order), O (extra OS processing required), G (group), T (TLS), C (compressed), x (unknown), o (OS specific), E (exclude), D (mbind), l (large), p (processor specific)
> We already have CONFIG_DEBUG_INFO_NONE to > disable the debug info. Thanks for pointing this out. Indeed providing another way of disabling debug info does not look reasonable to me. So only it makes sense to set only 1, 2 or 3 debug levels. > Using 'int' does not look sensible to me. Could you please give a hint why? My intention to choose int was to provide a boundary with range on the DEBUG_INFO_LEVEL option to choose only acceptable ones. On Sun, Aug 14, 2022 at 8:31 AM Fangrui Song <maskray@google.com> wrote: > In Clang, -g = -g2 = -g3. To generate macro information, > specify -fdebug-macro. Thanks. I would propose to add another config option like DEBUG_MACRO_DEFINITIONS to turn on macro information for GCC/Clang. For GCC it would be -g3, for Clang -fdebug-macro. > Before GCC 11 and Clang 12, -gsplit-dwarf implied -g2 (older > -gsplit-dwarf is like today's `-gsplit-dwarf -g2`). > > GCC 11 and Clang 12 (https://reviews.llvm.org/D80391) have changed > -gsplit-dwarf to not imply -g2. > > For a group of -g0 -g1 -g2, the last option wins. Therefore, > > -g0 -gsplit-dwarf => debug info in GCC<11 and Clang<12 > -g0 -gsplit-dwarf => no debug info in GCC>=11 and Clang>=12 I would add a note that when selecting -gdwarf-<level> gcc also implicitly sets -g2 (at least in older versions). It seems reasonable to me to put the DEBUG_LEVEL_INFO setting at the very bottom to prevent it from overriding implicitly. What do you think?
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index 2e24db4bff19..a17c12c20290 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug @@ -304,6 +304,17 @@ config DEBUG_INFO_REDUCED DEBUG_INFO build and compile times are reduced too. Only works with newer gcc versions. +config DEBUG_INFO_LEVEL + int "Debug info level" + range 0 3 + default "2" + help + Sets the level of how much debug information to generate (-glevel). + Level 1 produces minimal debug information without including information + about local variables. Level 3 includes extra information like macro + definitions. Setting up level 3 will require significantly more disk + space and increase built time. Level 0 produces no debug information. + config DEBUG_INFO_COMPRESSED bool "Compressed debugging information" depends on $(cc-option,-gz=zlib) diff --git a/scripts/Makefile.debug b/scripts/Makefile.debug index 9f39b0130551..28beffc42e71 100644 --- a/scripts/Makefile.debug +++ b/scripts/Makefile.debug @@ -3,7 +3,7 @@ DEBUG_CFLAGS := ifdef CONFIG_DEBUG_INFO_SPLIT DEBUG_CFLAGS += -gsplit-dwarf else -DEBUG_CFLAGS += -g +DEBUG_CFLAGS += -g$(CONFIG_DEBUG_INFO_LEVEL) endif ifndef CONFIG_AS_IS_LLVM
Provides a way to configure debug info level (-glevel). Debug level 3 includes extra information such as macro definitions. With level 3 enabled it's possible to expand macros right from the debugging session in gdb simplifying debugging when complicated macros involved. The default level is set to 2 to not change the default build behavior. Signed-off-by: Dmitrii Bundin <dmitrii.bundin.a@gmail.com> --- Changes in v2: https://lore.kernel.org/all/20220804223504.4739-1-dmitrii.bundin.a@gmail.com/ - Replace hardcoded -g3 with a configurable debug info level lib/Kconfig.debug | 11 +++++++++++ scripts/Makefile.debug | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-)