diff options
-rw-r--r-- | lldb/source/lldb.cpp | 102 |
1 files changed, 57 insertions, 45 deletions
diff --git a/lldb/source/lldb.cpp b/lldb/source/lldb.cpp index 7bc2c4e04c5..fc2c5b1d472 100644 --- a/lldb/source/lldb.cpp +++ b/lldb/source/lldb.cpp @@ -7,8 +7,6 @@ // //===----------------------------------------------------------------------===// -#include "clang/Basic/Version.h" - #include "lldb/lldb-python.h" #include "lldb/lldb-private.h" @@ -25,7 +23,6 @@ #include "lldb/Target/Thread.h" #include "llvm/ADT/StringRef.h" -#include "llvm/Support/raw_ostream.h" #include "Plugins/ABI/MacOSX-i386/ABIMacOSX_i386.h" #include "Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.h" @@ -80,26 +77,6 @@ using namespace lldb; using namespace lldb_private; -namespace { - -std::string getLLDBRevision() { -#ifdef LLDB_REVISION - return LLDB_REVISION; -#else - return ""; -#endif -} - -std::string getLLDBRepository() { -#ifdef LLDB_REPOSITORY - return LLDB_REPOSITORY; -#else - return ""; -#endif -} - -} - void lldb_private::Initialize () { @@ -250,6 +227,30 @@ lldb_private::Terminate () #if defined (__APPLE__) extern "C" const double liblldb_coreVersionNumber; +#else + +#include "clang/Basic/Version.h" + +static const char * +GetLLDBRevision() +{ +#ifdef LLDB_REVISION + return LLDB_REVISION; +#else + return NULL; +#endif +} + +static const char * +GetLLDBRepository() +{ +#ifdef LLDB_REPOSITORY + return LLDB_REPOSITORY; +#else + return NULL; +#endif +} + #endif const char * @@ -263,30 +264,41 @@ lldb_private::GetVersion () return g_version_string; #else // On Linux/FreeBSD/Windows, report a version number in the same style as the clang tool. - static std::string buf; - llvm::raw_string_ostream OS(buf); - OS << "lldb version " CLANG_VERSION_STRING " "; - - std::string lldb_repo = getLLDBRepository(); - if (lldb_repo.length() > 0) - OS << "(" << lldb_repo; - - std::string lldb_rev = getLLDBRevision(); - if (lldb_rev.length() > 0) - OS << " revision " << lldb_rev; - - std::string clang_rev = clang::getClangRevision(); - if (clang_rev.length() > 0) - OS << " clang revision " << clang_rev; - - std::string llvm_rev = clang::getLLVMRevision(); - if (llvm_rev.length() > 0) - OS << " llvm revision " << llvm_rev; + static std::string g_version_str; + if (g_version_str.empty()) + { + g_version_str += "lldb version "; + g_version_str += CLANG_VERSION_STRING; + const char * lldb_repo = GetLLDBRepository(); + if (lldb_repo) + { + g_version_str += " ("; + g_version_str += lldb_repo; + } - if (lldb_repo.length() > 0) - OS << ")"; + const char *lldb_rev = GetLLDBRevision(); + if (lldb_rev) + { + g_version_str += " revision "; + g_version_str += lldb_rev; + } + std::string clang_rev (clang::getClangRevision()); + if (clang_rev.length() > 0) + { + g_version_str += " clang revision "; + g_version_str += clang_rev; + } + std::string llvm_rev (clang::getLLVMRevision()); + if (llvm_rev.length() > 0) + { + g_version_str += " llvm revision "; + g_version_str += llvm_rev; + } - return OS.str().c_str(); + if (lldb_repo) + g_version_str += ")"; + } + return g_version_str.c_str(); #endif } |