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");