summaryrefslogtreecommitdiffstats
path: root/lldb/source/lldb.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/lldb.cpp')
-rw-r--r--lldb/source/lldb.cpp21
1 files changed, 18 insertions, 3 deletions
diff --git a/lldb/source/lldb.cpp b/lldb/source/lldb.cpp
index fc2c5b1d472..4cb0aaed2d8 100644
--- a/lldb/source/lldb.cpp
+++ b/lldb/source/lldb.cpp
@@ -224,9 +224,8 @@ lldb_private::Terminate ()
Log::Terminate();
}
-
#if defined (__APPLE__)
-extern "C" const double liblldb_coreVersionNumber;
+extern "C" const unsigned char liblldb_coreVersionString[];
#else
#include "clang/Basic/Version.h"
@@ -259,7 +258,23 @@ lldb_private::GetVersion ()
#if defined (__APPLE__)
static char g_version_string[32];
if (g_version_string[0] == '\0')
- ::snprintf (g_version_string, sizeof(g_version_string), "LLDB-%g", liblldb_coreVersionNumber);
+ {
+ const char *version_string = ::strstr ((const char *)liblldb_coreVersionString, "PROJECT:");
+
+ if (version_string)
+ version_string += sizeof("PROJECT:") - 1;
+ else
+ version_string = "unknown";
+
+ const char *newline_loc = strchr(version_string, '\n');
+
+ size_t version_len = sizeof(g_version_string);
+
+ if (newline_loc && (newline_loc - version_string < version_len))
+ version_len = newline_loc - version_string;
+
+ ::strncpy(g_version_string, version_string, version_len);
+ }
return g_version_string;
#else
OpenPOWER on IntegriCloud