Re: [PATCH v7 1/2] Kbuild: make DWARF version a choice

From: Nick Desaulniers
Date: Thu Feb 04 2021 - 01:11:47 EST


On Wed, Feb 3, 2021 at 7:32 PM Fangrui Song <maskray@xxxxxxxxxx> wrote:
>
> On 2021-02-04, Masahiro Yamada wrote:
> >On Sat, Jan 30, 2021 at 10:52 AM Nathan Chancellor <nathan@xxxxxxxxxx> 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@xxxxxxxxxxxx>
> >> > Suggested-by: Fangrui Song <maskray@xxxxxxxxxx>
> >> > Suggested-by: Nathan Chancellor <nathan@xxxxxxxxxx>
> >> > Suggested-by: Masahiro Yamada <masahiroy@xxxxxxxxxx>
> >> > Signed-off-by: Nick Desaulniers <ndesaulniers@xxxxxxxxxx>
> >>
> >> One comment below:
> >>
> >> Reviewed-by: Nathan Chancellor <nathan@xxxxxxxxxx>
> >>
> >> > ---
> >> > 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@xxxxxxxxxx/#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.

Indeed, I also remember -g was required for
-fno-eliminate-unused-debug-types, used by libabigail.
https://reviews.llvm.org/D80242
Masahiro, respectfully, I will not touch removing -g in this series.
I suspect it will be its own can of worms.

>
> >
> >
> >
> >
> >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).

--
Thanks,
~Nick Desaulniers