diff options
author | Pavel Labath <labath@google.com> | 2016-08-26 09:47:58 +0000 |
---|---|---|
committer | Pavel Labath <labath@google.com> | 2016-08-26 09:47:58 +0000 |
commit | 0e947eb636af23cfcb1791c1e2ff457da82c1c68 (patch) | |
tree | 91bcae14496ca25b792734e7423b72e389d77fa7 | |
parent | ea877d40b45ae3f77ceaa517ee8f878be45543bc (diff) | |
download | bcm5719-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.cmake | 9 | ||||
-rw-r--r-- | lldb/source/Core/Mangled.cpp | 9 |
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 |