[libcxx-commits] [PATCH] D121015: [libunwind] Add a _LIBUNWIND_VERSION macro
Louis Dionne via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Mon Mar 14 10:34:57 PDT 2022
ldionne updated this revision to Diff 415154.
ldionne added a comment.
Add workaround for building libc++abi against older libunwind. What do people think about this?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D121015/new/
https://reviews.llvm.org/D121015
Files:
libcxx/docs/Contributing.rst
libcxxabi/CMakeLists.txt
libcxxabi/src/cxa_personality.cpp
libunwind/include/__libunwind_config.h
Index: libunwind/include/__libunwind_config.h
===================================================================
--- libunwind/include/__libunwind_config.h
+++ libunwind/include/__libunwind_config.h
@@ -9,6 +9,8 @@
#ifndef ____LIBUNWIND_CONFIG_H__
#define ____LIBUNWIND_CONFIG_H__
+#define _LIBUNWIND_VERSION 15000
+
#if defined(__arm__) && !defined(__USING_SJLJ_EXCEPTIONS__) && \
!defined(__ARM_DWARF_EH__)
#define _LIBUNWIND_ARM_EHABI
Index: libcxxabi/src/cxa_personality.cpp
===================================================================
--- libcxxabi/src/cxa_personality.cpp
+++ libcxxabi/src/cxa_personality.cpp
@@ -22,6 +22,15 @@
#include "private_typeinfo.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__)
#include <windows.h>
#include <winnt.h>
@@ -1015,7 +1024,7 @@
}
// 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
#endif
static const uint32_t REG_SP = 13;
@@ -1050,7 +1059,7 @@
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
// _Unwind_GetLanguageSpecificData() and _Unwind_GetRegionStart() can
// return correct address.
Index: libcxxabi/CMakeLists.txt
===================================================================
--- libcxxabi/CMakeLists.txt
+++ libcxxabi/CMakeLists.txt
@@ -485,11 +485,6 @@
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
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)
add_definitions(-DLIBCXXABI_SILENT_TERMINATE)
endif()
Index: libcxx/docs/Contributing.rst
===================================================================
--- libcxx/docs/Contributing.rst
+++ libcxx/docs/Contributing.rst
@@ -70,6 +70,7 @@
2. Update the ``libcxx/include/__libcpp_version`` file
3. Update the version number in ``libcxx/docs/conf.py``
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
======================================
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D121015.415154.patch
Type: text/x-patch
Size: 2924 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20220314/f1130912/attachment-0001.bin>
More information about the libcxx-commits
mailing list