Message ID | 20201104005343.4192504-3-ndesaulniers@google.com |
---|---|
State | New |
Headers | show |
Series | [v2,1/4] x86_64: Change .weak to SYM_FUNC_START_WEAK for arch/x86/lib/mem*_64.S | expand |
On Tue, Nov 03, 2020 at 04:53:41PM -0800, Nick Desaulniers wrote: > Clang's integrated assembler produces the warning for assembly files: > > warning: DWARF2 only supports one section per compilation unit > > If -Wa,-gdwarf-* is unspecified, then debug info is not emitted. This Is this something that should be called out somewhere? If I understand this correctly, LLVM_IAS=1 + CONFIG_DEBUG_INFO=y won't work? Maybe this should be handled in Kconfig? > will be re-enabled for new DWARF versions in a follow up patch. > > Enables defconfig+CONFIG_DEBUG_INFO to build cleanly with > LLVM=1 LLVM_IAS=1 for x86_64 and arm64. > > Cc: <stable@vger.kernel.org> > Link: https://github.com/ClangBuiltLinux/linux/issues/716 > Reported-by: Nathan Chancellor <natechancellor@gmail.com> > Suggested-by: Dmitry Golovin <dima@golovin.in> If you happen to respin, Dmitry deserves a Reported-by tag too :) > Suggested-by: Sedat Dilek <sedat.dilek@gmail.com> > Signed-off-by: Nick Desaulniers <ndesaulniers@google.com> Regardless of the other two comments, this is fine as is as a fix for stable to unblock Android + CrOS since we have been running something similar to it in CI: Reviewed-by: Nathan Chancellor <natechancellor@gmail.com> > --- > Makefile | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/Makefile b/Makefile > index f353886dbf44..75b1a3dcbf30 100644 > --- a/Makefile > +++ b/Makefile > @@ -826,7 +826,9 @@ else > DEBUG_CFLAGS += -g > endif > > +ifndef LLVM_IAS Nit: this should probably match the existing LLVM_IAS check ifneq ($(LLVM_IAS),1) > KBUILD_AFLAGS += -Wa,-gdwarf-2 > +endif > > ifdef CONFIG_DEBUG_INFO_DWARF4 > DEBUG_CFLAGS += -gdwarf-4 > -- > 2.29.1.341.ge80a0c044ae-goog >
On 2020-11-04, Nathan Chancellor wrote: >On Tue, Nov 03, 2020 at 04:53:41PM -0800, Nick Desaulniers wrote: >> Clang's integrated assembler produces the warning for assembly files: >> >> warning: DWARF2 only supports one section per compilation unit >> >> If -Wa,-gdwarf-* is unspecified, then debug info is not emitted. This > >Is this something that should be called out somewhere? If I understand >this correctly, LLVM_IAS=1 + CONFIG_DEBUG_INFO=y won't work? Maybe this >should be handled in Kconfig? > >> will be re-enabled for new DWARF versions in a follow up patch. >> >> Enables defconfig+CONFIG_DEBUG_INFO to build cleanly with >> LLVM=1 LLVM_IAS=1 for x86_64 and arm64. >> >> Cc: <stable@vger.kernel.org> >> Link: https://github.com/ClangBuiltLinux/linux/issues/716 >> Reported-by: Nathan Chancellor <natechancellor@gmail.com> >> Suggested-by: Dmitry Golovin <dima@golovin.in> > >If you happen to respin, Dmitry deserves a Reported-by tag too :) > >> Suggested-by: Sedat Dilek <sedat.dilek@gmail.com> >> Signed-off-by: Nick Desaulniers <ndesaulniers@google.com> > >Regardless of the other two comments, this is fine as is as a fix for >stable to unblock Android + CrOS since we have been running something >similar to it in CI: > >Reviewed-by: Nathan Chancellor <natechancellor@gmail.com> > >> --- >> Makefile | 2 ++ >> 1 file changed, 2 insertions(+) >> >> diff --git a/Makefile b/Makefile >> index f353886dbf44..75b1a3dcbf30 100644 >> --- a/Makefile >> +++ b/Makefile >> @@ -826,7 +826,9 @@ else >> DEBUG_CFLAGS += -g >> endif >> >> +ifndef LLVM_IAS > >Nit: this should probably match the existing LLVM_IAS check > >ifneq ($(LLVM_IAS),1) > >> KBUILD_AFLAGS += -Wa,-gdwarf-2 >> +endif >> >> ifdef CONFIG_DEBUG_INFO_DWARF4 >> DEBUG_CFLAGS += -gdwarf-4 >> -- >> 2.29.1.341.ge80a0c044ae-goog >> The root cause is that DWARF v2 has no DW_AT_ranges, so it cannot represent non-contiguous address ranges. It seems that GNU as -gdwarf-3 emits DW_AT_ranges as well and emits an entry for a non-executable section. In any case, the option is of very low value, at least for LLVM. Reviewed-by: Fangrui Song <maskray@google.com>
On Wed, Nov 4, 2020 at 10:58 PM Nathan Chancellor <natechancellor@gmail.com> wrote: > > On Tue, Nov 03, 2020 at 04:53:41PM -0800, Nick Desaulniers wrote: > > Clang's integrated assembler produces the warning for assembly files: > > > > warning: DWARF2 only supports one section per compilation unit > > > > If -Wa,-gdwarf-* is unspecified, then debug info is not emitted. This > > Is this something that should be called out somewhere? If I understand > this correctly, LLVM_IAS=1 + CONFIG_DEBUG_INFO=y won't work? Maybe this > should be handled in Kconfig? Specifically, debug info will not be emitted, for assembler source files. It will still be emitted for C source files (via -gdwarf-*). -Wa,-gdwarf-* only affects assembler file sources. > > > will be re-enabled for new DWARF versions in a follow up patch. > > > > Enables defconfig+CONFIG_DEBUG_INFO to build cleanly with > > LLVM=1 LLVM_IAS=1 for x86_64 and arm64. > > > > Cc: <stable@vger.kernel.org> > > Link: https://github.com/ClangBuiltLinux/linux/issues/716 > > Reported-by: Nathan Chancellor <natechancellor@gmail.com> > > Suggested-by: Dmitry Golovin <dima@golovin.in> > > If you happen to respin, Dmitry deserves a Reported-by tag too :) Sure. > > > Suggested-by: Sedat Dilek <sedat.dilek@gmail.com> > > Signed-off-by: Nick Desaulniers <ndesaulniers@google.com> > > Regardless of the other two comments, this is fine as is as a fix for > stable to unblock Android + CrOS since we have been running something > similar to it in CI: > > Reviewed-by: Nathan Chancellor <natechancellor@gmail.com> > > > --- > > Makefile | 2 ++ > > 1 file changed, 2 insertions(+) > > > > diff --git a/Makefile b/Makefile > > index f353886dbf44..75b1a3dcbf30 100644 > > --- a/Makefile > > +++ b/Makefile > > @@ -826,7 +826,9 @@ else > > DEBUG_CFLAGS += -g > > endif > > > > +ifndef LLVM_IAS > > Nit: this should probably match the existing LLVM_IAS check Sure, will send a v3. Going to just send this for now, as it's blocking some downstream work I'm trying to get done in Android. > > ifneq ($(LLVM_IAS),1) > > > KBUILD_AFLAGS += -Wa,-gdwarf-2 > > +endif > > > > ifdef CONFIG_DEBUG_INFO_DWARF4 > > DEBUG_CFLAGS += -gdwarf-4 > > -- > > 2.29.1.341.ge80a0c044ae-goog > > -- Thanks, ~Nick Desaulniers
diff --git a/Makefile b/Makefile index f353886dbf44..75b1a3dcbf30 100644 --- a/Makefile +++ b/Makefile @@ -826,7 +826,9 @@ else DEBUG_CFLAGS += -g endif +ifndef LLVM_IAS KBUILD_AFLAGS += -Wa,-gdwarf-2 +endif ifdef CONFIG_DEBUG_INFO_DWARF4 DEBUG_CFLAGS += -gdwarf-4
Clang's integrated assembler produces the warning for assembly files: warning: DWARF2 only supports one section per compilation unit If -Wa,-gdwarf-* is unspecified, then debug info is not emitted. This will be re-enabled for new DWARF versions in a follow up patch. Enables defconfig+CONFIG_DEBUG_INFO to build cleanly with LLVM=1 LLVM_IAS=1 for x86_64 and arm64. Cc: <stable@vger.kernel.org> Link: https://github.com/ClangBuiltLinux/linux/issues/716 Reported-by: Nathan Chancellor <natechancellor@gmail.com> Suggested-by: Dmitry Golovin <dima@golovin.in> Suggested-by: Sedat Dilek <sedat.dilek@gmail.com> Signed-off-by: Nick Desaulniers <ndesaulniers@google.com> --- Makefile | 2 ++ 1 file changed, 2 insertions(+)