[clang][Toolchains][Gnu] pass -gdwarf-* through to assembler
authorNick Desaulniers <ndesaulniers@google.com>
Wed, 26 Oct 2022 17:39:08 +0000 (10:39 -0700)
committerNick Desaulniers <ndesaulniers@google.com>
Wed, 26 Oct 2022 17:45:22 +0000 (10:45 -0700)
commitad78ce44bb4771139d2a18d6e1052268a7507a52
tree9d21ae55cd7d4342a14a8e7386e0f4f85693499e
parent41a278f56aab5fa1b4d8e875207771318a8d3ef0
[clang][Toolchains][Gnu] pass -gdwarf-* through to assembler

We've been working around this for a long time in the Linux kernel; we
bend over backwards to continue to support CC=clang (w/
-fno-integrated-as) for architectures where clang can't yet be used to
assemble the kernel's assembler sources. Supporting debug info for the
combination of CC=clang w/ GNU binutils as "GAS" has been painful.

Fix this in clang so that we can work towards dropping complexity in the
Linux kernel's build system, Kbuild, for supporting this combination of
tools.

GAS added support for -gdwarf-{3|4|5} in 2020 2.35 release via
commit 31bf18645d98 ("Add support for --dwarf-[3|4|5] to assembler command line.")

Refactor code to share logic between integrated-as and non-integrated-as
for determining the implicit default.  This change will now always
explicitly pass a -gdwarf-* flag to the GNU assembler when -g is
specified.

Reviewed By: MaskRay

Differential Revision: https://reviews.llvm.org/D136707
clang/lib/Driver/ToolChains/Clang.cpp
clang/lib/Driver/ToolChains/CommonArgs.cpp
clang/lib/Driver/ToolChains/CommonArgs.h
clang/lib/Driver/ToolChains/Gnu.cpp
clang/test/Driver/as-options.s