From e6a08018aba7f55d778d7aa20466cf52358fb0a2 Mon Sep 17 00:00:00 2001 From: Konstantin Baladurin Date: Mon, 15 Apr 2019 20:36:54 +0300 Subject: [PATCH] clang: add support for LLVM gold plugin in case of accelerated environment Change-Id: I5e29abefacef0f25e44cf4d3f030a8ba762586d2 --- clang/include/clang/Driver/Driver.h | 4 ++++ clang/lib/Driver/Driver.cpp | 2 ++ clang/lib/Driver/ToolChains/CommonArgs.cpp | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/clang/include/clang/Driver/Driver.h b/clang/include/clang/Driver/Driver.h index 04b46782467d..94b27a0fade8 100644 --- a/clang/include/clang/Driver/Driver.h +++ b/clang/include/clang/Driver/Driver.h @@ -154,6 +154,10 @@ public: /// command line. std::string Dir; + /// The real path the driver executable was in, as invoked from the + /// command line. It differs from Dir in case of accelerated environment. + std::string RealDir; + /// The original path to the clang executable. std::string ClangExecutable; diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index e304130f09a5..d7508015f41e 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -219,6 +219,8 @@ Driver::Driver(StringRef ClangExecutable, StringRef TargetTriple, if (!this->VFS) this->VFS = llvm::vfs::getRealFileSystem(); + RealDir = llvm::sys::path::parent_path(ClangExecutable); + // Skip /emul if we work in accelerated environment #define QEMU_ACCEL_DIR "/emul" if (ClangExecutable.substr(0, sizeof(QEMU_ACCEL_DIR) - 1) == QEMU_ACCEL_DIR) diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp index 019df16a909f..283c27b1f42f 100644 --- a/clang/lib/Driver/ToolChains/CommonArgs.cpp +++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -836,7 +836,7 @@ void tools::addLTOOptions(const ToolChain &ToolChain, const ArgList &Args, #endif SmallString<1024> Plugin; - llvm::sys::path::native(Twine(D.Dir) + + llvm::sys::path::native(Twine(D.RealDir) + "/../" CLANG_INSTALL_LIBDIR_BASENAME + PluginName + Suffix, Plugin); -- 2.34.1