From d5b2055769f40386a818e9df0a173eafa0e7dc5f Mon Sep 17 00:00:00 2001 From: Joseph Huber Date: Mon, 28 Feb 2022 13:14:54 -0500 Subject: [PATCH] [OpenMP] Add verbose output for linker wrapper Summary; This path adds printing support for the linker wrapper. When the user passes `-v` it will not print the commands used by the linker wrapper to indicate to the user what is happening during the linking. --- .../ClangLinkerWrapper.cpp | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp b/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp index 2d73e0e574cbb..d183c8b09c997 100644 --- a/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp +++ b/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp @@ -164,6 +164,15 @@ Expected> extractFromBuffer(std::unique_ptr Buffer, SmallVectorImpl &DeviceFiles); +void printCommands(ArrayRef CmdArgs) { + if (CmdArgs.empty()) + return; + + llvm::errs() << " \"" << CmdArgs.front() << "\" "; + for (auto IC = CmdArgs.begin() + 1, IE = CmdArgs.end(); IC != IE; ++IC) + llvm::errs() << *IC << (IC + 1 != IE ? " " : "\n"); +} + static StringRef getDeviceFileExtension(StringRef DeviceTriple, bool IsBitcode = false) { Triple TheTriple(DeviceTriple); @@ -210,6 +219,9 @@ Error runLinker(std::string &LinkerPath, SmallVectorImpl &Args) { for (auto &Arg : Args) LinkerArgs.push_back(Arg); + if (Verbose) + printCommands(LinkerArgs); + if (sys::ExecuteAndWait(LinkerPath, LinkerArgs)) return createStringError(inconvertibleErrorCode(), "'linker' failed"); return Error::success(); @@ -338,6 +350,9 @@ extractFromBinary(const ObjectFile &Obj, StripArgs.push_back("-o"); StripArgs.push_back(TempFile); + if (Verbose) + printCommands(StripArgs); + if (sys::ExecuteAndWait(*StripPath, StripArgs)) return createStringError(inconvertibleErrorCode(), "'llvm-strip' failed"); @@ -560,6 +575,9 @@ Expected assemble(StringRef InputFile, Triple TheTriple, CmdArgs.push_back(InputFile); + if (Verbose) + printCommands(CmdArgs); + if (sys::ExecuteAndWait(*PtxasPath, CmdArgs)) return createStringError(inconvertibleErrorCode(), "'ptxas' failed"); @@ -601,6 +619,9 @@ Expected link(ArrayRef InputFiles, Triple TheTriple, for (StringRef Input : InputFiles) CmdArgs.push_back(Input); + if (Verbose) + printCommands(CmdArgs); + if (sys::ExecuteAndWait(*NvlinkPath, CmdArgs)) return createStringError(inconvertibleErrorCode(), "'nvlink' failed"); @@ -639,6 +660,9 @@ Expected link(ArrayRef InputFiles, Triple TheTriple, for (StringRef Input : InputFiles) CmdArgs.push_back(Input); + if (Verbose) + printCommands(CmdArgs); + if (sys::ExecuteAndWait(*LLDPath, CmdArgs)) return createStringError(inconvertibleErrorCode(), "'lld' failed"); @@ -716,6 +740,9 @@ Expected link(ArrayRef InputFiles, Triple TheTriple, for (StringRef Input : InputFiles) CmdArgs.push_back(Input); + if (Verbose) + printCommands(CmdArgs); + if (sys::ExecuteAndWait(LinkerUserPath, CmdArgs)) return createStringError(inconvertibleErrorCode(), "'linker' failed");