diff options
author | Volodymyr Sapsai <vsapsai@apple.com> | 2018-08-02 17:29:53 +0000 |
---|---|---|
committer | Volodymyr Sapsai <vsapsai@apple.com> | 2018-08-02 17:29:53 +0000 |
commit | 7b16e8ad32ae163ec0d687848c9280e81ec38736 (patch) | |
tree | 32189a34ff4f2ea2cddcae98a206f94a25fd02d4 /clang/tools/c-index-test/core_main.cpp | |
parent | bd45adb50f7844d679cd823a4fc999a769bc615c (diff) | |
download | bcm5719-llvm-7b16e8ad32ae163ec0d687848c9280e81ec38736.tar.gz bcm5719-llvm-7b16e8ad32ae163ec0d687848c9280e81ec38736.zip |
[c-index-test] Use correct executable path to discover resource directory.
Driver builds resource directory path based on provided executable path.
Instead of string "clang" use actual executable path.
rdar://problem/42699514
Reviewers: nathawes, akyrtzi, bob.wilson
Reviewed By: akyrtzi
Subscribers: dexonsmith, cfe-commits
Differential Revision: https://reviews.llvm.org/D50160
llvm-svn: 338741
Diffstat (limited to 'clang/tools/c-index-test/core_main.cpp')
-rw-r--r-- | clang/tools/c-index-test/core_main.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/clang/tools/c-index-test/core_main.cpp b/clang/tools/c-index-test/core_main.cpp index a7732c09d5b..9921a403a4b 100644 --- a/clang/tools/c-index-test/core_main.cpp +++ b/clang/tools/c-index-test/core_main.cpp @@ -20,6 +20,7 @@ #include "clang/Lex/Preprocessor.h" #include "clang/Serialization/ASTReader.h" #include "llvm/Support/CommandLine.h" +#include "llvm/Support/FileSystem.h" #include "llvm/Support/Signals.h" #include "llvm/Support/raw_ostream.h" #include "llvm/Support/PrettyStackTrace.h" @@ -202,11 +203,11 @@ static void dumpModuleFileInputs(serialization::ModuleFile &Mod, }); } -static bool printSourceSymbols(ArrayRef<const char *> Args, - bool dumpModuleImports, - bool indexLocals) { +static bool printSourceSymbols(const char *Executable, + ArrayRef<const char *> Args, + bool dumpModuleImports, bool indexLocals) { SmallVector<const char *, 4> ArgsWithProgName; - ArgsWithProgName.push_back("clang"); + ArgsWithProgName.push_back(Executable); ArgsWithProgName.append(Args.begin(), Args.end()); IntrusiveRefCntPtr<DiagnosticsEngine> Diags(CompilerInstance::createDiagnostics(new DiagnosticOptions)); @@ -314,6 +315,8 @@ static void printSymbolNameAndUSR(const Decl *D, ASTContext &Ctx, int indextest_core_main(int argc, const char **argv) { sys::PrintStackTraceOnErrorSignal(argv[0]); PrettyStackTraceProgram X(argc, argv); + void *MainAddr = (void*) (intptr_t) indextest_core_main; + std::string Executable = llvm::sys::fs::getMainExecutable(argv[0], MainAddr); assert(argv[1] == StringRef("core")); ++argv; @@ -343,7 +346,9 @@ int indextest_core_main(int argc, const char **argv) { errs() << "error: missing compiler args; pass '-- <compiler arguments>'\n"; return 1; } - return printSourceSymbols(CompArgs, options::DumpModuleImports, options::IncludeLocals); + return printSourceSymbols(Executable.c_str(), CompArgs, + options::DumpModuleImports, + options::IncludeLocals); } return 0; |