nickdesaulniers created this revision. nickdesaulniers added a reviewer: MaskRay. Herald added a subscriber: StephenFan. Herald added a project: All. nickdesaulniers requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits.
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. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D136309 Files: clang/lib/Driver/ToolChains/Gnu.cpp clang/test/Driver/as-options.s Index: clang/test/Driver/as-options.s =================================================================== --- clang/test/Driver/as-options.s +++ clang/test/Driver/as-options.s @@ -116,3 +116,8 @@ // RUN: %clang -mrelax-all -fno-integrated-as -x c++ %s -S -o /dev/null 2>&1 \ // RUN: | FileCheck --check-prefix=WARN --allow-empty %s // WARN: unused + +// Test that -g is passed through to GAS. +// RUN: %clang -fno-integrated-as -g %s -### 2>&1 | \ +// RUN: FileCheck --check-prefix=CHECK-DEBUG %s +// CHECK-DEBUG: "-g" Index: clang/lib/Driver/ToolChains/Gnu.cpp =================================================================== --- clang/lib/Driver/ToolChains/Gnu.cpp +++ clang/lib/Driver/ToolChains/Gnu.cpp @@ -976,6 +976,9 @@ for (const auto &II : Inputs) CmdArgs.push_back(II.getFilename()); + if (Arg *A = Args.getLastArg(options::OPT_g_Flag)) + A->render(Args, CmdArgs); + const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath(DefaultAssembler)); C.addCommand(std::make_unique<Command>(JA, *this,
Index: clang/test/Driver/as-options.s =================================================================== --- clang/test/Driver/as-options.s +++ clang/test/Driver/as-options.s @@ -116,3 +116,8 @@ // RUN: %clang -mrelax-all -fno-integrated-as -x c++ %s -S -o /dev/null 2>&1 \ // RUN: | FileCheck --check-prefix=WARN --allow-empty %s // WARN: unused + +// Test that -g is passed through to GAS. +// RUN: %clang -fno-integrated-as -g %s -### 2>&1 | \ +// RUN: FileCheck --check-prefix=CHECK-DEBUG %s +// CHECK-DEBUG: "-g" Index: clang/lib/Driver/ToolChains/Gnu.cpp =================================================================== --- clang/lib/Driver/ToolChains/Gnu.cpp +++ clang/lib/Driver/ToolChains/Gnu.cpp @@ -976,6 +976,9 @@ for (const auto &II : Inputs) CmdArgs.push_back(II.getFilename()); + if (Arg *A = Args.getLastArg(options::OPT_g_Flag)) + A->render(Args, CmdArgs); + const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath(DefaultAssembler)); C.addCommand(std::make_unique<Command>(JA, *this,
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits