summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Clayton <gclayton@apple.com>2013-02-28 18:09:18 +0000
committerGreg Clayton <gclayton@apple.com>2013-02-28 18:09:18 +0000
commit7170f3fc54b611974a1deebbe0f2a26d39ea6959 (patch)
tree78caf47701bf01c2f85e0094ba66da1a9ba8180d
parentd0c6e7b0385e54384e4ab79382f2927b3bdd04af (diff)
downloadbcm5719-llvm-7170f3fc54b611974a1deebbe0f2a26d39ea6959.tar.gz
bcm5719-llvm-7170f3fc54b611974a1deebbe0f2a26d39ea6959.zip
Made lldb.cpp build with clang 5.0.
Also removed the use of llvm::raw_string_ostream as it wasn't needed. Also fixed a crasher that could occur when the following line returned a C string tied to a local variable: return OS.str().c_str(); I am guessing "static std::string buf;" was supposed to get assigned to "OS.str()" and then have "buf.c_str()" returned. Modified the non-apple version code to cache its value and not recompute the version every time. llvm-svn: 176274
-rw-r--r--lldb/source/lldb.cpp102
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
}
OpenPOWER on IntegriCloud