diff options
Diffstat (limited to 'lldb/source/lldb.cpp')
-rw-r--r-- | lldb/source/lldb.cpp | 21 |
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 |