Messages in this thread | | | Date | Wed, 3 Feb 2021 19:32:10 -0800 | From | Fangrui Song <> | Subject | Re: [PATCH v7 1/2] Kbuild: make DWARF version a choice |
| |
On 2021-02-04, Masahiro Yamada wrote: >On Sat, Jan 30, 2021 at 10:52 AM Nathan Chancellor <nathan@kernel.org> wrote: >> >> On Fri, Jan 29, 2021 at 04:44:00PM -0800, Nick Desaulniers wrote: >> > Modifies CONFIG_DEBUG_INFO_DWARF4 to be a member of a choice which is >> > the default. Does so in a way that's forward compatible with existing >> > configs, and makes adding future versions more straightforward. >> > >> > GCC since ~4.8 has defaulted to this DWARF version implicitly. >> > >> > Suggested-by: Arvind Sankar <nivedita@alum.mit.edu> >> > Suggested-by: Fangrui Song <maskray@google.com> >> > Suggested-by: Nathan Chancellor <nathan@kernel.org> >> > Suggested-by: Masahiro Yamada <masahiroy@kernel.org> >> > Signed-off-by: Nick Desaulniers <ndesaulniers@google.com> >> >> One comment below: >> >> Reviewed-by: Nathan Chancellor <nathan@kernel.org> >> >> > --- >> > Makefile | 5 ++--- >> > lib/Kconfig.debug | 16 +++++++++++----- >> > 2 files changed, 13 insertions(+), 8 deletions(-) >> > >> > diff --git a/Makefile b/Makefile >> > index 95ab9856f357..d2b4980807e0 100644 >> > --- a/Makefile >> > +++ b/Makefile >> > @@ -830,9 +830,8 @@ ifneq ($(LLVM_IAS),1) >> > KBUILD_AFLAGS += -Wa,-gdwarf-2 >> >> It is probably worth a comment somewhere that assembly files will still >> have DWARF v2. > >I agree. >Please noting the reason will be helpful. > >Could you summarize Jakub's comment in short? >https://patchwork.kernel.org/project/linux-kbuild/patch/20201022012106.1875129-1-ndesaulniers@google.com/#23727667 > > > > > > >One more question. > > >Can we remove -g option like follows? > > > ifdef CONFIG_DEBUG_INFO_SPLIT > DEBUG_CFLAGS += -gsplit-dwarf >-else >-DEBUG_CFLAGS += -g > endif
GCC 11/Clang 12 -gsplit-dwarf no longer imply -g2 (https://reviews.llvm.org/D80391). May be worth checking whether -gsplit-dwarf is used without a debug info enabling option.
> > > > >In the current mainline code, >-g is the only debug option >if CONFIG_DEBUG_INFO_DWARF4 is disabled. > > >The GCC manual says: >https://gcc.gnu.org/onlinedocs/gcc-10.2.0/gcc/Debugging-Options.html#Debugging-Options > > >-g > > Produce debugging information in the operating system’s > native format (stabs, COFF, XCOFF, or DWARF). > GDB can work with this debugging information. > > >Of course, we expect the -g option will produce >the debug info in the DWARF format. > > > > > >With this patch set applied, it is very explicit. > >Only the format type, but also the version. > >The compiler will be given either >-gdwarf-4 or -gdwarf-5, >making the -g option redundant, I think.
-gdwarf-N does imply -g2 but personally I'd not suggest remove it if it already exists. The non-orthogonality is the reason Clang has -fdebug-default-version (https://reviews.llvm.org/D69822).
> > > > > > > > >> >> > endif >> > >> > -ifdef CONFIG_DEBUG_INFO_DWARF4 >> > -DEBUG_CFLAGS += -gdwarf-4 >> > -endif >> > +dwarf-version-$(CONFIG_DEBUG_INFO_DWARF4) := 4 >> > +DEBUG_CFLAGS += -gdwarf-$(dwarf-version-y) >> > >> > ifdef CONFIG_DEBUG_INFO_REDUCED >> > DEBUG_CFLAGS += $(call cc-option, -femit-struct-debug-baseonly) \ >> > diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug >> > index e906ea906cb7..94c1a7ed6306 100644 >> > --- a/lib/Kconfig.debug >> > +++ b/lib/Kconfig.debug >> > @@ -256,13 +256,19 @@ config DEBUG_INFO_SPLIT >> > to know about the .dwo files and include them. >> > Incompatible with older versions of ccache. >> > >> > +choice >> > + prompt "DWARF version" >> > + help >> > + Which version of DWARF debug info to emit. >> > + >> > config DEBUG_INFO_DWARF4 >> > - bool "Generate dwarf4 debuginfo" >> > + bool "Generate DWARF Version 4 debuginfo" >> > help >> > - Generate dwarf4 debug info. This requires recent versions >> > - of gcc and gdb. It makes the debug information larger. >> > - But it significantly improves the success of resolving >> > - variables in gdb on optimized code. >> > + Generate DWARF v4 debug info. This requires gcc 4.5+ and gdb 7.0+. >> > + It makes the debug information larger, but it significantly >> > + improves the success of resolving variables in gdb on optimized code. >> > + >> > +endchoice # "DWARF version" >> > >> > config DEBUG_INFO_BTF >> > bool "Generate BTF typeinfo" >> > -- >> > 2.30.0.365.g02bc693789-goog >> > > > > >-- >Best Regards >Masahiro Yamada
| |