[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20210204033210.ie2a5zuumtlb4jth@google.com>
Date: Wed, 3 Feb 2021 19:32:10 -0800
From: Fangrui Song <maskray@...gle.com>
To: Masahiro Yamada <masahiroy@...nel.org>
Cc: Nathan Chancellor <nathan@...nel.org>,
Nick Desaulniers <ndesaulniers@...gle.com>,
Nathan Chancellor <natechancellor@...il.com>,
Andrew Morton <akpm@...ux-foundation.org>,
Sedat Dilek <sedat.dilek@...il.com>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
clang-built-linux <clang-built-linux@...glegroups.com>,
Linux Kbuild mailing list <linux-kbuild@...r.kernel.org>,
linux-arch <linux-arch@...r.kernel.org>,
Jakub Jelinek <jakub@...hat.com>,
Caroline Tice <cmtice@...gle.com>,
Nick Clifton <nickc@...hat.com>, Yonghong Song <yhs@...com>,
Jiri Olsa <jolsa@...nel.org>,
Andrii Nakryiko <andrii@...nel.org>,
Arnaldo Carvalho de Melo <acme@...nel.org>,
Arvind Sankar <nivedita@...m.mit.edu>
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@...nel.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@...m.mit.edu>
>> > Suggested-by: Fangrui Song <maskray@...gle.com>
>> > Suggested-by: Nathan Chancellor <nathan@...nel.org>
>> > Suggested-by: Masahiro Yamada <masahiroy@...nel.org>
>> > Signed-off-by: Nick Desaulniers <ndesaulniers@...gle.com>
>>
>> One comment below:
>>
>> Reviewed-by: Nathan Chancellor <nathan@...nel.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
Powered by blists - more mailing lists