[libunwind] Add a _LIBUNWIND_VERSION macro
This allows us to detect whether we're being compiled with LLVM's libunwind more easily, without CMake having to set explicit variables. As discussed in https://llvm.org/D119538. Differential Revision: https://reviews.llvm.org/D121015
This commit is contained in:
parent
436b875e49
commit
f29002a4b7
|
@ -70,6 +70,7 @@ After branching for an LLVM release:
|
||||||
2. Update the ``libcxx/include/__libcpp_version`` file
|
2. Update the ``libcxx/include/__libcpp_version`` file
|
||||||
3. Update the version number in ``libcxx/docs/conf.py``
|
3. Update the version number in ``libcxx/docs/conf.py``
|
||||||
4. Update ``_LIBCPPABI_VERSION`` in ``libcxxabi/include/cxxabi.h``
|
4. Update ``_LIBCPPABI_VERSION`` in ``libcxxabi/include/cxxabi.h``
|
||||||
|
5. Update ``_LIBUNWIND_VERSION`` in ``libunwind/include/__libunwind_config.h``
|
||||||
|
|
||||||
Exporting new symbols from the library
|
Exporting new symbols from the library
|
||||||
======================================
|
======================================
|
||||||
|
|
|
@ -485,11 +485,6 @@ if (MSVC)
|
||||||
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
|
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Define LIBCXXABI_USE_LLVM_UNWINDER for conditional compilation.
|
|
||||||
if (LIBCXXABI_USE_LLVM_UNWINDER)
|
|
||||||
add_definitions(-DLIBCXXABI_USE_LLVM_UNWINDER)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (LIBCXXABI_SILENT_TERMINATE)
|
if (LIBCXXABI_SILENT_TERMINATE)
|
||||||
add_definitions(-DLIBCXXABI_SILENT_TERMINATE)
|
add_definitions(-DLIBCXXABI_SILENT_TERMINATE)
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -22,6 +22,15 @@
|
||||||
#include "private_typeinfo.h"
|
#include "private_typeinfo.h"
|
||||||
#include "unwind.h"
|
#include "unwind.h"
|
||||||
|
|
||||||
|
// TODO: This is a temporary workaround for libc++abi to recognize that it's being
|
||||||
|
// built against LLVM's libunwind. LLVM's libunwind started reporting _LIBUNWIND_VERSION
|
||||||
|
// in LLVM 15 -- we can remove this workaround after shipping LLVM 17. Once we remove
|
||||||
|
// this workaround, it won't be possible to build libc++abi against libunwind headers
|
||||||
|
// from LLVM 14 and before anymore.
|
||||||
|
#if defined(____LIBUNWIND_CONFIG_H__) && !defined(_LIBUNWIND_VERSION)
|
||||||
|
# define _LIBUNWIND_VERSION
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(__SEH__) && !defined(__USING_SJLJ_EXCEPTIONS__)
|
#if defined(__SEH__) && !defined(__USING_SJLJ_EXCEPTIONS__)
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <winnt.h>
|
#include <winnt.h>
|
||||||
|
@ -1015,7 +1024,7 @@ static _Unwind_Reason_Code continue_unwind(_Unwind_Exception* unwind_exception,
|
||||||
}
|
}
|
||||||
|
|
||||||
// ARM register names
|
// ARM register names
|
||||||
#if !defined(LIBCXXABI_USE_LLVM_UNWINDER)
|
#if !defined(_LIBUNWIND_VERSION)
|
||||||
static const uint32_t REG_UCB = 12; // Register to save _Unwind_Control_Block
|
static const uint32_t REG_UCB = 12; // Register to save _Unwind_Control_Block
|
||||||
#endif
|
#endif
|
||||||
static const uint32_t REG_SP = 13;
|
static const uint32_t REG_SP = 13;
|
||||||
|
@ -1050,7 +1059,7 @@ __gxx_personality_v0(_Unwind_State state,
|
||||||
|
|
||||||
bool native_exception = __isOurExceptionClass(unwind_exception);
|
bool native_exception = __isOurExceptionClass(unwind_exception);
|
||||||
|
|
||||||
#if !defined(LIBCXXABI_USE_LLVM_UNWINDER)
|
#if !defined(_LIBUNWIND_VERSION)
|
||||||
// Copy the address of _Unwind_Control_Block to r12 so that
|
// Copy the address of _Unwind_Control_Block to r12 so that
|
||||||
// _Unwind_GetLanguageSpecificData() and _Unwind_GetRegionStart() can
|
// _Unwind_GetLanguageSpecificData() and _Unwind_GetRegionStart() can
|
||||||
// return correct address.
|
// return correct address.
|
||||||
|
|
|
@ -9,6 +9,8 @@
|
||||||
#ifndef ____LIBUNWIND_CONFIG_H__
|
#ifndef ____LIBUNWIND_CONFIG_H__
|
||||||
#define ____LIBUNWIND_CONFIG_H__
|
#define ____LIBUNWIND_CONFIG_H__
|
||||||
|
|
||||||
|
#define _LIBUNWIND_VERSION 15000
|
||||||
|
|
||||||
#if defined(__arm__) && !defined(__USING_SJLJ_EXCEPTIONS__) && \
|
#if defined(__arm__) && !defined(__USING_SJLJ_EXCEPTIONS__) && \
|
||||||
!defined(__ARM_DWARF_EH__)
|
!defined(__ARM_DWARF_EH__)
|
||||||
#define _LIBUNWIND_ARM_EHABI
|
#define _LIBUNWIND_ARM_EHABI
|
||||||
|
|
Loading…
Reference in a new issue