Author: phosek Date: Mon Jan 28 12:55:12 2019 New Revision: 352427 URL: http://llvm.org/viewvc/llvm-project?rev=352427&view=rev Log: Revert "[libunwind] Drop the dependency on <algorithm>, add placement new inline"
This reverts commit r352384: this broke on ARM as UnwindCursor.hpp still has some C++ library dependencies. Modified: libunwind/trunk/CMakeLists.txt libunwind/trunk/src/Unwind-seh.cpp libunwind/trunk/src/UnwindCursor.hpp libunwind/trunk/src/libunwind.cpp Modified: libunwind/trunk/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/libunwind/trunk/CMakeLists.txt?rev=352427&r1=352426&r2=352427&view=diff ============================================================================== --- libunwind/trunk/CMakeLists.txt (original) +++ libunwind/trunk/CMakeLists.txt Mon Jan 28 12:55:12 2019 @@ -287,9 +287,6 @@ unwind_append_if(LIBUNWIND_CXX_FLAGS LIB unwind_append_if(LIBUNWIND_C_FLAGS LIBUNWIND_HAS_FUNWIND_TABLES -funwind-tables) -# Ensure that we don't depend on C++ standard library. -unwind_append_if(LIBUNWIND_CXX_FLAGS LIBUNWIND_HAS_NOSTDINCXX_FLAG -nostdinc++) - # Assert string(TOUPPER "${CMAKE_BUILD_TYPE}" uppercase_CMAKE_BUILD_TYPE) if (LIBUNWIND_ENABLE_ASSERTIONS) @@ -344,6 +341,28 @@ endif() include_directories(include) +find_path( + LIBUNWIND_LIBCXX_INCLUDES_INTERNAL + __libcpp_version + PATHS ${LLVM_MAIN_SRC_DIR}/projects/libcxx/include + ${LLVM_MAIN_SRC_DIR}/runtimes/libcxx/include + ${LLVM_MAIN_SRC_DIR}/../libcxx/include + NO_DEFAULT_PATH + NO_CMAKE_FIND_ROOT_PATH + ) +if ((NOT LIBUNWIND_STANDALONE_BUILD OR HAVE_LIBCXX) AND + IS_DIRECTORY "${LIBUNWIND_LIBCXX_INCLUDES_INTERNAL}") + set(LIBUNWIND_CXX_INCLUDE_PATHS_DEFAULT "${LIBUNWIND_LIBCXX_INCLUDES_INTERNAL}") +endif() + +set(LIBUNWIND_CXX_INCLUDE_PATHS "${LIBUNWIND_CXX_INCLUDE_PATHS_DEFAULT}" CACHE PATH + "Paths to C++ header directories separated by ';'.") + +if (NOT LIBUNWIND_CXX_INCLUDE_PATHS STREQUAL "") + list(APPEND LIBUNWIND_CXX_FLAGS -nostdinc++) + include_directories("${LIBUNWIND_CXX_INCLUDE_PATHS}") +endif() + add_subdirectory(src) if (LIBUNWIND_INCLUDE_DOCS) Modified: libunwind/trunk/src/Unwind-seh.cpp URL: http://llvm.org/viewvc/llvm-project/libunwind/trunk/src/Unwind-seh.cpp?rev=352427&r1=352426&r2=352427&view=diff ============================================================================== --- libunwind/trunk/src/Unwind-seh.cpp (original) +++ libunwind/trunk/src/Unwind-seh.cpp Mon Jan 28 12:55:12 2019 @@ -49,10 +49,6 @@ using namespace libunwind; /// Class of foreign exceptions based on unrecognized SEH exceptions. static const uint64_t kSEHExceptionClass = 0x434C4E4753454800; // CLNGSEH\0 -// libunwind does not and should not depend on C++ library which means that we -// need our own declaration of global placement new. -void *operator new(size_t, void*); - /// Exception cleanup routine used by \c _GCC_specific_handler to /// free foreign exceptions. static void seh_exc_cleanup(_Unwind_Reason_Code urc, _Unwind_Exception *exc) { Modified: libunwind/trunk/src/UnwindCursor.hpp URL: http://llvm.org/viewvc/llvm-project/libunwind/trunk/src/UnwindCursor.hpp?rev=352427&r1=352426&r2=352427&view=diff ============================================================================== --- libunwind/trunk/src/UnwindCursor.hpp (original) +++ libunwind/trunk/src/UnwindCursor.hpp Mon Jan 28 12:55:12 2019 @@ -11,6 +11,7 @@ #ifndef __UNWINDCURSOR_HPP__ #define __UNWINDCURSOR_HPP__ +#include <algorithm> #include <stdint.h> #include <stdio.h> #include <stdlib.h> Modified: libunwind/trunk/src/libunwind.cpp URL: http://llvm.org/viewvc/llvm-project/libunwind/trunk/src/libunwind.cpp?rev=352427&r1=352426&r2=352427&view=diff ============================================================================== --- libunwind/trunk/src/libunwind.cpp (original) +++ libunwind/trunk/src/libunwind.cpp Mon Jan 28 12:55:12 2019 @@ -11,6 +11,10 @@ #include <libunwind.h> +#ifndef NDEBUG +#include <cstdlib> // getenv +#endif + #include "libunwind_ext.h" #include "config.h" @@ -23,10 +27,6 @@ using namespace libunwind; -// libunwind does not and should not depend on C++ library which means that we -// need our own declaration of global placement new. -void *operator new(size_t, void*); - /// internal object to represent this processes address space LocalAddressSpace LocalAddressSpace::sThisAddressSpace; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits