[Lldb-commits] [PATCH] D20671: [cmake] Add a big warning about a libstdc++ issue

Pavel Labath via lldb-commits lldb-commits at lists.llvm.org
Thu May 26 08:22:34 PDT 2016


This revision was automatically updated to reflect the committed changes.
Closed by commit rL270854: [cmake] Add a big warning about a libstdc++ issue (authored by labath).

Changed prior to commit:
  http://reviews.llvm.org/D20671?vs=58584&id=58616#toc

Repository:
  rL LLVM

http://reviews.llvm.org/D20671

Files:
  lldb/trunk/cmake/modules/LLDBConfig.cmake

Index: lldb/trunk/cmake/modules/LLDBConfig.cmake
===================================================================
--- lldb/trunk/cmake/modules/LLDBConfig.cmake
+++ lldb/trunk/cmake/modules/LLDBConfig.cmake
@@ -1,3 +1,5 @@
+include(CheckCXXSymbolExists)
+
 set(LLDB_PROJECT_ROOT ${CMAKE_CURRENT_SOURCE_DIR})
 set(LLDB_SOURCE_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/source")
 set(LLDB_INCLUDE_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/include")
@@ -415,3 +417,25 @@
     list(APPEND system_libs ${CURSES_LIBRARIES})
     include_directories(${CURSES_INCLUDE_DIR})
 endif ()
+
+check_cxx_symbol_exists("__GLIBCXX__" "string" LLDB_USING_LIBSTDCXX)
+if(LLDB_USING_LIBSTDCXX)
+    # There doesn't seem to be an easy way to check the library version. Instead, we rely on the
+    # fact that std::set did not have the allocator constructor available until version 4.9
+    check_cxx_source_compiles("
+            #include <set>
+            std::set<int> s = std::set<int>(std::allocator<int>());
+            int main() { return 0; }"
+            LLDB_USING_LIBSTDCXX_4_9)
+    if (NOT LLDB_USING_LIBSTDCXX_4_9 AND NOT LLVM_ENABLE_EH)
+        message(WARNING
+            "You appear to be linking to libstdc++ version lesser than 4.9 without exceptions "
+            "enabled. These versions of the library have an issue, which causes occasional "
+            "lldb crashes. See <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59656> for "
+            "details. Possible courses of action are:\n"
+            "- use libstdc++ version 4.9 or newer\n"
+            "- use libc++ (via LLVM_ENABLE_LIBCXX)\n"
+            "- enable exceptions (via LLVM_ENABLE_EH)\n"
+            "- ignore this warning and accept occasional instability")
+    endif()
+endif()


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D20671.58616.patch
Type: text/x-patch
Size: 1746 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20160526/c79ce59a/attachment-0001.bin>


More information about the lldb-commits mailing list