[Lldb-commits] [lldb] r176274 - Made lldb.cpp build with clang 5.0.
Greg Clayton
gclayton at apple.com
Thu Feb 28 10:09:18 PST 2013
Author: gclayton
Date: Thu Feb 28 12:09:18 2013
New Revision: 176274
URL: http://llvm.org/viewvc/llvm-project?rev=176274&view=rev
Log:
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.
Modified:
lldb/trunk/source/lldb.cpp
Modified: lldb/trunk/source/lldb.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/lldb.cpp?rev=176274&r1=176273&r2=176274&view=diff
==============================================================================
--- lldb/trunk/source/lldb.cpp (original)
+++ lldb/trunk/source/lldb.cpp Thu Feb 28 12:09:18 2013
@@ -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;
-
- if (lldb_repo.length() > 0)
- OS << ")";
+ 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;
+ }
+
+ 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
}
More information about the lldb-commits
mailing list