зеркало из https://github.com/microsoft/clang-1.git
Use llvm::sys::fs::getMainExecutable.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184915 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
48955f8119
Коммит
ac1db6b2bd
|
@ -21,6 +21,7 @@
|
|||
#include "llvm/ExecutionEngine/ExecutionEngine.h"
|
||||
#include "llvm/ExecutionEngine/JIT.h"
|
||||
#include "llvm/IR/Module.h"
|
||||
#include "llvm/Support/FileSystem.h"
|
||||
#include "llvm/Support/Host.h"
|
||||
#include "llvm/Support/ManagedStatic.h"
|
||||
#include "llvm/Support/Path.h"
|
||||
|
@ -35,11 +36,11 @@ using namespace clang::driver;
|
|||
// GetMainExecutable (since some platforms don't support taking the
|
||||
// address of main, and some platforms can't implement GetMainExecutable
|
||||
// without being given the address of a function in the main executable).
|
||||
llvm::sys::Path GetExecutablePath(const char *Argv0) {
|
||||
std::string GetExecutablePath(const char *Argv0) {
|
||||
// This just needs to be some symbol in the binary; C++ doesn't
|
||||
// allow taking the address of ::main however.
|
||||
void *MainAddr = (void*) (intptr_t) GetExecutablePath;
|
||||
return llvm::sys::Path::GetMainExecutable(Argv0, MainAddr);
|
||||
return llvm::sys::fs::getMainExecutable(Argv0, MainAddr);
|
||||
}
|
||||
|
||||
static int Execute(llvm::Module *Mod, char * const *envp) {
|
||||
|
@ -68,14 +69,14 @@ static int Execute(llvm::Module *Mod, char * const *envp) {
|
|||
|
||||
int main(int argc, const char **argv, char * const *envp) {
|
||||
void *MainAddr = (void*) (intptr_t) GetExecutablePath;
|
||||
llvm::sys::Path Path = GetExecutablePath(argv[0]);
|
||||
std::string Path = GetExecutablePath(argv[0]);
|
||||
IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts = new DiagnosticOptions();
|
||||
TextDiagnosticPrinter *DiagClient =
|
||||
new TextDiagnosticPrinter(llvm::errs(), &*DiagOpts);
|
||||
|
||||
IntrusiveRefCntPtr<DiagnosticIDs> DiagID(new DiagnosticIDs());
|
||||
DiagnosticsEngine Diags(DiagID, &*DiagOpts, DiagClient);
|
||||
Driver TheDriver(Path.str(), llvm::sys::getProcessTriple(), "a.out", Diags);
|
||||
Driver TheDriver(Path, llvm::sys::getProcessTriple(), "a.out", Diags);
|
||||
TheDriver.setTitle("clang interpreter");
|
||||
|
||||
// FIXME: This is a hack to try to force the driver to do something we can
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
#include "llvm/Option/OptTable.h"
|
||||
#include "llvm/Option/Option.h"
|
||||
#include "llvm/Support/ErrorHandling.h"
|
||||
#include "llvm/Support/FileSystem.h"
|
||||
#include "llvm/Support/Host.h"
|
||||
#include "llvm/Support/Path.h"
|
||||
#include "llvm/Support/PathV1.h"
|
||||
|
@ -845,7 +846,7 @@ static InputKind ParseFrontendArgs(FrontendOptions &Opts, ArgList &Args,
|
|||
|
||||
std::string CompilerInvocation::GetResourcesPath(const char *Argv0,
|
||||
void *MainAddr) {
|
||||
llvm::sys::Path P = llvm::sys::Path::GetMainExecutable(Argv0, MainAddr);
|
||||
llvm::sys::Path P(llvm::sys::fs::getMainExecutable(Argv0, MainAddr));
|
||||
|
||||
if (!P.isEmpty()) {
|
||||
P.eraseComponent(); // Remove /clang from foo/bin/clang
|
||||
|
|
|
@ -292,7 +292,7 @@ int ClangTool::run(FrontendActionFactory *ActionFactory) {
|
|||
// first argument, thus allowing ClangTool and runToolOnCode to just
|
||||
// pass in made-up names here. Make sure this works on other platforms.
|
||||
std::string MainExecutable =
|
||||
llvm::sys::Path::GetMainExecutable("clang_tool", &StaticSymbol).str();
|
||||
llvm::sys::fs::getMainExecutable("clang_tool", &StaticSymbol);
|
||||
|
||||
bool ProcessingFailed = false;
|
||||
for (unsigned I = 0; I < CompileCommands.size(); ++I) {
|
||||
|
|
|
@ -62,11 +62,11 @@ static llvm::cl::extrahelp extraHelp(
|
|||
// GetMainExecutable (since some platforms don't support taking the
|
||||
// address of main, and some platforms can't implement GetMainExecutable
|
||||
// without being given the address of a function in the main executable).
|
||||
llvm::sys::Path GetExecutablePath(const char *Argv0) {
|
||||
std::string GetExecutablePath(const char *Argv0) {
|
||||
// This just needs to be some symbol in the binary; C++ doesn't
|
||||
// allow taking the address of ::main however.
|
||||
void *MainAddr = (void*) (intptr_t) GetExecutablePath;
|
||||
return llvm::sys::Path::GetMainExecutable(Argv0, MainAddr);
|
||||
return llvm::sys::fs::getMainExecutable(Argv0, MainAddr);
|
||||
}
|
||||
|
||||
static void printSourceLocation(SourceLocation loc, ASTContext &Ctx,
|
||||
|
|
|
@ -48,14 +48,14 @@ using namespace clang;
|
|||
using namespace clang::driver;
|
||||
using namespace llvm::opt;
|
||||
|
||||
llvm::sys::Path GetExecutablePath(const char *Argv0, bool CanonicalPrefixes) {
|
||||
std::string GetExecutablePath(const char *Argv0, bool CanonicalPrefixes) {
|
||||
if (!CanonicalPrefixes)
|
||||
return llvm::sys::Path(Argv0);
|
||||
return Argv0;
|
||||
|
||||
// This just needs to be some symbol in the binary; C++ doesn't
|
||||
// allow taking the address of ::main however.
|
||||
void *P = (void*) (intptr_t) GetExecutablePath;
|
||||
return llvm::sys::Path::GetMainExecutable(Argv0, P);
|
||||
return llvm::sys::fs::getMainExecutable(Argv0, P);
|
||||
}
|
||||
|
||||
static const char *SaveStringInSet(std::set<std::string> &SavedStrings,
|
||||
|
@ -401,7 +401,7 @@ int main(int argc_, const char **argv_) {
|
|||
argv.insert(&argv[1], ExtraArgs.begin(), ExtraArgs.end());
|
||||
}
|
||||
|
||||
llvm::sys::Path Path = GetExecutablePath(argv[0], CanonicalPrefixes);
|
||||
std::string Path = GetExecutablePath(argv[0], CanonicalPrefixes);
|
||||
|
||||
IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts = new DiagnosticOptions;
|
||||
{
|
||||
|
@ -419,14 +419,13 @@ int main(int argc_, const char **argv_) {
|
|||
// DiagnosticOptions instance.
|
||||
TextDiagnosticPrinter *DiagClient
|
||||
= new TextDiagnosticPrinter(llvm::errs(), &*DiagOpts);
|
||||
DiagClient->setPrefix(llvm::sys::path::filename(Path.str()));
|
||||
DiagClient->setPrefix(llvm::sys::path::filename(Path));
|
||||
IntrusiveRefCntPtr<DiagnosticIDs> DiagID(new DiagnosticIDs());
|
||||
|
||||
DiagnosticsEngine Diags(DiagID, &*DiagOpts, DiagClient);
|
||||
ProcessWarningOptions(Diags, *DiagOpts, /*ReportDiags=*/false);
|
||||
|
||||
Driver TheDriver(Path.str(), llvm::sys::getDefaultTargetTriple(),
|
||||
"a.out", Diags);
|
||||
Driver TheDriver(Path, llvm::sys::getDefaultTargetTriple(), "a.out", Diags);
|
||||
|
||||
// Attempt to find the original path used to invoke the driver, to determine
|
||||
// the installed path. We do this manually, because we want to support that
|
||||
|
|
Загрузка…
Ссылка в новой задаче