summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPavel Labath <labath@google.com>2016-08-26 09:47:58 +0000
committerPavel Labath <labath@google.com>2016-08-26 09:47:58 +0000
commit0e947eb636af23cfcb1791c1e2ff457da82c1c68 (patch)
tree91bcae14496ca25b792734e7423b72e389d77fa7
parentea877d40b45ae3f77ceaa517ee8f878be45543bc (diff)
downloadbcm5719-llvm-0e947eb636af23cfcb1791c1e2ff457da82c1c68.tar.gz
bcm5719-llvm-0e947eb636af23cfcb1791c1e2ff457da82c1c68.zip
Add cmake option to choose whether to use the builtin demangler
Summary: Previously the builting demangler was on for platforms that explicitly set a flag by modifying Mangled.cpp (windows, freebsd). The Xcode build always used builtin demangler by passing a compiler flag. This adds a cmake flag (defaulting to ON) to configure the demangling library used at build time. The flag is only available on non-windows platforms as there the system demangler is not present (in the form we're trying to use it, at least). The impact of this change is: - linux: switches to the builtin demangler - freebsd, windows: NFC (I hope) - netbsd: switches to the builtin demangler - osx cmake build: switches to the builtin demangler (matching the XCode build) The main motivation for this is the cross-platform case, where it should bring more consistency by removing the dependency on the host demangler (which can be completely unrelated to the debug target). Reviewers: zturner, emaste, krytarowski Subscribers: emaste, clayborg, lldb-commits Differential Revision: https://reviews.llvm.org/D23830 llvm-svn: 279808
-rw-r--r--lldb/cmake/modules/LLDBConfig.cmake9
-rw-r--r--lldb/source/Core/Mangled.cpp9
2 files changed, 11 insertions, 7 deletions
diff --git a/lldb/cmake/modules/LLDBConfig.cmake b/lldb/cmake/modules/LLDBConfig.cmake
index 043b3260484..66ba12607a4 100644
--- a/lldb/cmake/modules/LLDBConfig.cmake
+++ b/lldb/cmake/modules/LLDBConfig.cmake
@@ -401,3 +401,12 @@ if(LLDB_USING_LIBSTDCXX)
"- ignore this warning and accept occasional instability")
endif()
endif()
+
+if(MSVC)
+ set(LLDB_USE_BUILTIN_DEMANGLER ON)
+else()
+ option(LLDB_USE_BUILTIN_DEMANGLER "Use lldb's builtin demangler instead of the system one" ON)
+endif()
+if(LLDB_USE_BUILTIN_DEMANGLER)
+ add_definitions(-DLLDB_USE_BUILTIN_DEMANGLER)
+endif()
diff --git a/lldb/source/Core/Mangled.cpp b/lldb/source/Core/Mangled.cpp
index 31e78ced2c1..5a1f1e83554 100644
--- a/lldb/source/Core/Mangled.cpp
+++ b/lldb/source/Core/Mangled.cpp
@@ -14,20 +14,15 @@
#include "lldb/Host/windows/windows.h"
#include <Dbghelp.h>
#pragma comment(lib, "dbghelp.lib")
-#define LLDB_USE_BUILTIN_DEMANGLER
-#elif defined (__FreeBSD__)
-#define LLDB_USE_BUILTIN_DEMANGLER
-#else
-#include <cxxabi.h>
#endif
#ifdef LLDB_USE_BUILTIN_DEMANGLER
-
// Provide a fast-path demangler implemented in FastDemangle.cpp until it can
// replace the existing C++ demangler with a complete implementation
#include "lldb/Core/FastDemangle.h"
#include "lldb/Core/CxaDemangle.h"
-
+#else
+#include <cxxabi.h>
#endif
OpenPOWER on IntegriCloud