aboutsummaryrefslogtreecommitdiffstats
path: root/contrib
diff options
context:
space:
mode:
authorrobot-contrib <robot-contrib@yandex-team.com>2025-01-11 12:39:04 +0300
committerrobot-contrib <robot-contrib@yandex-team.com>2025-01-11 12:57:10 +0300
commitc0cafa96b3eb8b9cea45553a452016f4fce4bd14 (patch)
tree75f0f7181b40e6a55e0e48ea08aba0e4c280d965 /contrib
parent2d3b7f1966f9716551a0d7db72a9608addab8ecf (diff)
downloadydb-c0cafa96b3eb8b9cea45553a452016f4fce4bd14.tar.gz
Update contrib/libs/libunwind to 19.1.5
commit_hash:26df5425466c047cc00493ac63a5422c221053ca
Diffstat (limited to 'contrib')
-rw-r--r--contrib/libs/libunwind/.yandex_meta/__init__.py3
-rw-r--r--contrib/libs/libunwind/.yandex_meta/override.nix4
-rw-r--r--contrib/libs/libunwind/patches/03-unused.patch9
-rw-r--r--contrib/libs/libunwind/patches/04-wasm-config.patch19
-rw-r--r--contrib/libs/libunwind/patches/04-wasm-exceptions.patch6
-rw-r--r--contrib/libs/libunwind/src/Registers.hpp7
-rw-r--r--contrib/libs/libunwind/src/Unwind-wasm.c4
-rw-r--r--contrib/libs/libunwind/src/UnwindCursor.hpp18
-rw-r--r--contrib/libs/libunwind/src/UnwindLevel1.c36
-rw-r--r--contrib/libs/libunwind/src/UnwindRegistersRestore.S18
-rw-r--r--contrib/libs/libunwind/src/UnwindRegistersSave.S4
-rw-r--r--contrib/libs/libunwind/src/assembly.h25
-rw-r--r--contrib/libs/libunwind/src/cet_unwind.h22
-rw-r--r--contrib/libs/libunwind/src/libunwind.cpp5
-rw-r--r--contrib/libs/libunwind/ya.make9
15 files changed, 124 insertions, 65 deletions
diff --git a/contrib/libs/libunwind/.yandex_meta/__init__.py b/contrib/libs/libunwind/.yandex_meta/__init__.py
index 803baf46fb..0e5950112a 100644
--- a/contrib/libs/libunwind/.yandex_meta/__init__.py
+++ b/contrib/libs/libunwind/.yandex_meta/__init__.py
@@ -25,7 +25,6 @@ def post_install(self):
{
"NOT OS_EMSCRIPTEN": Linkable(
SRCS=sources,
- CFLAGS=["-D_LIBUNWIND_IS_NATIVE_ONLY"],
),
"OS_EMSCRIPTEN AND ARCH_WASM32": Linkable(
SRCS=["src/Unwind-wasm.c"],
@@ -39,7 +38,7 @@ def post_install(self):
PEERDIR=["contrib/restricted/emscripten/include"],
CFLAGS=[
"-D_LIBUNWIND_HIDE_SYMBOLS",
- "-D__USING_WASM_EXCEPTIONS__",
+ "-D__WASM_EXCEPTIONS__",
],
),
}
diff --git a/contrib/libs/libunwind/.yandex_meta/override.nix b/contrib/libs/libunwind/.yandex_meta/override.nix
index 04e5939865..3b7ed16a16 100644
--- a/contrib/libs/libunwind/.yandex_meta/override.nix
+++ b/contrib/libs/libunwind/.yandex_meta/override.nix
@@ -1,11 +1,11 @@
pkgs: attrs: with pkgs; with attrs; rec {
- version = "18.1.0-rc1";
+ version = "19.1.5";
src = fetchFromGitHub {
owner = "llvm";
repo = "llvm-project";
rev = "llvmorg-${version}";
- hash = "sha256-I9VUoDv+P/3C6R1I9VozGYJDjK4KBAkezVkpPMLjMuU=";
+ hash = "sha256-QxQL4QwUH6e5HWpBvI8yIbZYBNwqqRsZqPH0w/JSiHQ=";
};
patches = [];
diff --git a/contrib/libs/libunwind/patches/03-unused.patch b/contrib/libs/libunwind/patches/03-unused.patch
index 0b59655a26..4001186411 100644
--- a/contrib/libs/libunwind/patches/03-unused.patch
+++ b/contrib/libs/libunwind/patches/03-unused.patch
@@ -13,15 +13,6 @@ diff --git a/contrib/libs/libunwind/src/Unwind-EHABI.cpp b/contrib/libs/libunwin
diff --git a/contrib/libs/libunwind/src/UnwindLevel1.c b/contrib/libs/libunwind/src/UnwindLevel1.c
--- a/contrib/libs/libunwind/src/UnwindLevel1.c
+++ b/contrib/libs/libunwind/src/UnwindLevel1.c
-@@ -195,7 +195,7 @@
-
- // uc is initialized by __unw_getcontext in the parent frame. The first stack
- // frame walked is unwind_phase2.
-- unsigned framesWalked = 1;
-+ unsigned framesWalked __attribute__((unused)) = 1;
- #ifdef _LIBUNWIND_USE_CET
- unsigned long shadowStackTop = _get_ssp();
- #endif
@@ -330,7 +330,7 @@
// uc is initialized by __unw_getcontext in the parent frame. The first stack
diff --git a/contrib/libs/libunwind/patches/04-wasm-config.patch b/contrib/libs/libunwind/patches/04-wasm-config.patch
deleted file mode 100644
index c093f47541..0000000000
--- a/contrib/libs/libunwind/patches/04-wasm-config.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-commit 080afaf1ef8e81cfdc26850560b639acd0c88733
-author: robot-contrib
-date: 2024-12-28T08:39:56+03:00
-
- Update contrib/libs/libunwind to 19.1.5
-
---- contrib/libs/libunwind/include/__libunwind_config.h (cc7e7e3cd08b4064e3856fcec6df5aa39b8cc0a4)
-+++ contrib/libs/libunwind/include/__libunwind_config.h (080afaf1ef8e81cfdc26850560b639acd0c88733)
-@@ -180,6 +180,10 @@
- #endif
- #define _LIBUNWIND_HIGHEST_DWARF_REGISTER \
- _LIBUNWIND_HIGHEST_DWARF_REGISTER_LOONGARCH
-+#elif defined(__wasm__)
-+// Unused
-+#define _LIBUNWIND_CONTEXT_SIZE 0
-+#define _LIBUNWIND_CURSOR_SIZE 0
- # else
- # error "Unsupported architecture."
- # endif
diff --git a/contrib/libs/libunwind/patches/04-wasm-exceptions.patch b/contrib/libs/libunwind/patches/04-wasm-exceptions.patch
index 22b0ead0e6..167b0a5d78 100644
--- a/contrib/libs/libunwind/patches/04-wasm-exceptions.patch
+++ b/contrib/libs/libunwind/patches/04-wasm-exceptions.patch
@@ -4,11 +4,11 @@
#include "config.h"
--#ifdef __USING_WASM_EXCEPTIONS__
+-#ifdef __WASM_EXCEPTIONS__
#include "unwind.h"
+
-+#ifdef __USING_WASM_EXCEPTIONS__
++#ifdef __WASM_EXCEPTIONS__
#include <threads.h>
_Unwind_Reason_Code __gxx_personality_wasm0(int version, _Unwind_Action actions,
@@ -24,4 +24,4 @@
+_Unwind_RaiseException(_Unwind_Exception *exception_object __attribute__((unused))) {
+ abort();
+}
- #endif // defined(__USING_WASM_EXCEPTIONS__)
+ #endif // defined(__WASM_EXCEPTIONS__)
diff --git a/contrib/libs/libunwind/src/Registers.hpp b/contrib/libs/libunwind/src/Registers.hpp
index d11ddb3426..861e6b5f6f 100644
--- a/contrib/libs/libunwind/src/Registers.hpp
+++ b/contrib/libs/libunwind/src/Registers.hpp
@@ -1815,6 +1815,13 @@ inline const char *Registers_ppc64::getRegisterName(int regNum) {
/// process.
class _LIBUNWIND_HIDDEN Registers_arm64;
extern "C" void __libunwind_Registers_arm64_jumpto(Registers_arm64 *);
+
+#if defined(_LIBUNWIND_USE_GCS)
+extern "C" void *__libunwind_cet_get_jump_target() {
+ return reinterpret_cast<void *>(&__libunwind_Registers_arm64_jumpto);
+}
+#endif
+
class _LIBUNWIND_HIDDEN Registers_arm64 {
public:
Registers_arm64();
diff --git a/contrib/libs/libunwind/src/Unwind-wasm.c b/contrib/libs/libunwind/src/Unwind-wasm.c
index 379e66e80d..f1fa0fd25f 100644
--- a/contrib/libs/libunwind/src/Unwind-wasm.c
+++ b/contrib/libs/libunwind/src/Unwind-wasm.c
@@ -17,7 +17,7 @@
#include "unwind.h"
-#ifdef __USING_WASM_EXCEPTIONS__
+#ifdef __WASM_EXCEPTIONS__
#include <threads.h>
_Unwind_Reason_Code __gxx_personality_wasm0(int version, _Unwind_Action actions,
@@ -129,4 +129,4 @@ _LIBUNWIND_EXPORT _Unwind_Reason_Code
_Unwind_RaiseException(_Unwind_Exception *exception_object __attribute__((unused))) {
abort();
}
-#endif // defined(__USING_WASM_EXCEPTIONS__)
+#endif // defined(__WASM_EXCEPTIONS__)
diff --git a/contrib/libs/libunwind/src/UnwindCursor.hpp b/contrib/libs/libunwind/src/UnwindCursor.hpp
index e251e13520..30a889d102 100644
--- a/contrib/libs/libunwind/src/UnwindCursor.hpp
+++ b/contrib/libs/libunwind/src/UnwindCursor.hpp
@@ -36,7 +36,6 @@
#include <errno.h>
#include <signal.h>
#include <sys/syscall.h>
-#include <sys/uio.h>
#include <unistd.h>
#define _LIBUNWIND_CHECK_LINUX_SIGRETURN 1
#endif
@@ -472,7 +471,7 @@ public:
}
#endif
-#if defined(_LIBUNWIND_USE_CET)
+#if defined(_LIBUNWIND_USE_CET) || defined(_LIBUNWIND_USE_GCS)
virtual void *get_registers() {
_LIBUNWIND_ABORT("get_registers not implemented");
}
@@ -955,7 +954,7 @@ public:
virtual uintptr_t getDataRelBase();
#endif
-#if defined(_LIBUNWIND_USE_CET)
+#if defined(_LIBUNWIND_USE_CET) || defined(_LIBUNWIND_USE_GCS)
virtual void *get_registers() { return &_registers; }
#endif
@@ -2416,7 +2415,7 @@ int UnwindCursor<A, R>::stepWithTBTable(pint_t pc, tbtable *TBTable,
}
// Reset LR in the current context.
- newRegisters.setLR(NULL);
+ newRegisters.setLR(static_cast<uintptr_t>(NULL));
_LIBUNWIND_TRACE_UNWINDING(
"Extract info from lastStack=%p, returnAddress=%p",
@@ -2590,6 +2589,15 @@ void UnwindCursor<A, R>::setInfoBasedOnIPRegister(bool isReturnAddress) {
--pc;
#endif
+#if !(defined(_LIBUNWIND_SUPPORT_SEH_UNWIND) && defined(_WIN32)) && \
+ !defined(_LIBUNWIND_SUPPORT_TBTAB_UNWIND)
+ // In case of this is frame of signal handler, the IP saved in the signal
+ // handler points to first non-executed instruction, while FDE/CIE expects IP
+ // to be after the first non-executed instruction.
+ if (_isSignalFrame)
+ ++pc;
+#endif
+
// Ask address space object to find unwind sections for this pc.
UnwindInfoSections sects;
if (_addressSpace.findUnwindSections(pc, sects)) {
@@ -2997,7 +3005,7 @@ bool UnwindCursor<A, R>::isReadableAddr(const pint_t addr) const {
}
#endif
-#if defined(_LIBUNWIND_USE_CET)
+#if defined(_LIBUNWIND_USE_CET) || defined(_LIBUNWIND_USE_GCS)
extern "C" void *__libunwind_cet_get_registers(unw_cursor_t *cursor) {
AbstractUnwindCursor *co = (AbstractUnwindCursor *)cursor;
return co->get_registers();
diff --git a/contrib/libs/libunwind/src/UnwindLevel1.c b/contrib/libs/libunwind/src/UnwindLevel1.c
index 39a261c0f8..17a06189b2 100644
--- a/contrib/libs/libunwind/src/UnwindLevel1.c
+++ b/contrib/libs/libunwind/src/UnwindLevel1.c
@@ -31,7 +31,8 @@
#include "libunwind_ext.h"
#include "unwind.h"
-#if !defined(_LIBUNWIND_ARM_EHABI) && !defined(__USING_SJLJ_EXCEPTIONS__)
+#if !defined(_LIBUNWIND_ARM_EHABI) && !defined(__USING_SJLJ_EXCEPTIONS__) && \
+ !defined(__wasm__)
#ifndef _LIBUNWIND_SUPPORT_SEH_UNWIND
@@ -43,7 +44,7 @@
// _LIBUNWIND_POP_CET_SSP is used to adjust CET shadow stack pointer and we
// directly jump to __libunwind_Registers_x86/x86_64_jumpto instead of using
// a regular function call to avoid pushing to CET shadow stack again.
-#if !defined(_LIBUNWIND_USE_CET)
+#if !defined(_LIBUNWIND_USE_CET) && !defined(_LIBUNWIND_USE_GCS)
#define __unw_phase2_resume(cursor, fn) \
do { \
(void)fn; \
@@ -71,6 +72,19 @@
__asm__ volatile("jmpq *%%rdx\n\t" :: "D"(cetRegContext), \
"d"(cetJumpAddress)); \
} while (0)
+#elif defined(_LIBUNWIND_TARGET_AARCH64)
+#define __cet_ss_step_size 8
+#define __unw_phase2_resume(cursor, fn) \
+ do { \
+ _LIBUNWIND_POP_CET_SSP((fn)); \
+ void *cetRegContext = __libunwind_cet_get_registers((cursor)); \
+ void *cetJumpAddress = __libunwind_cet_get_jump_target(); \
+ __asm__ volatile("mov x0, %0\n\t" \
+ "br %1\n\t" \
+ : \
+ : "r"(cetRegContext), "r"(cetJumpAddress) \
+ : "x0"); \
+ } while (0)
#endif
static _Unwind_Reason_Code
@@ -186,6 +200,10 @@ unwind_phase1(unw_context_t *uc, unw_cursor_t *cursor, _Unwind_Exception *except
}
extern int __unw_step_stage2(unw_cursor_t *);
+#if defined(_LIBUNWIND_USE_GCS)
+// Enable the GCS target feature to permit gcspop instructions to be used.
+__attribute__((target("gcs")))
+#endif
static _Unwind_Reason_Code
unwind_phase2(unw_context_t *uc, unw_cursor_t *cursor, _Unwind_Exception *exception_object) {
__unw_init_local(cursor, uc);
@@ -195,9 +213,13 @@ unwind_phase2(unw_context_t *uc, unw_cursor_t *cursor, _Unwind_Exception *except
// uc is initialized by __unw_getcontext in the parent frame. The first stack
// frame walked is unwind_phase2.
- unsigned framesWalked __attribute__((unused)) = 1;
-#ifdef _LIBUNWIND_USE_CET
+ unsigned framesWalked = 1;
+#if defined(_LIBUNWIND_USE_CET)
unsigned long shadowStackTop = _get_ssp();
+#elif defined(_LIBUNWIND_USE_GCS)
+ unsigned long shadowStackTop = 0;
+ if (__chkfeat(_CHKFEAT_GCS))
+ shadowStackTop = (unsigned long)__gcspr();
#endif
// Walk each frame until we reach where search phase said to stop.
while (true) {
@@ -254,7 +276,7 @@ unwind_phase2(unw_context_t *uc, unw_cursor_t *cursor, _Unwind_Exception *except
// against return address stored in CET shadow stack, if the 2 addresses don't
// match, it means return address in normal stack has been corrupted, we return
// _URC_FATAL_PHASE2_ERROR.
-#ifdef _LIBUNWIND_USE_CET
+#if defined(_LIBUNWIND_USE_CET) || defined(_LIBUNWIND_USE_GCS)
if (shadowStackTop != 0) {
unw_word_t retInNormalStack;
__unw_get_reg(cursor, UNW_REG_IP, &retInNormalStack);
@@ -322,6 +344,10 @@ unwind_phase2(unw_context_t *uc, unw_cursor_t *cursor, _Unwind_Exception *except
return _URC_FATAL_PHASE2_ERROR;
}
+#if defined(_LIBUNWIND_USE_GCS)
+// Enable the GCS target feature to permit gcspop instructions to be used.
+__attribute__((target("gcs")))
+#endif
static _Unwind_Reason_Code
unwind_phase2_forced(unw_context_t *uc, unw_cursor_t *cursor,
_Unwind_Exception *exception_object,
diff --git a/contrib/libs/libunwind/src/UnwindRegistersRestore.S b/contrib/libs/libunwind/src/UnwindRegistersRestore.S
index 42c2488fc7..9d34c7909e 100644
--- a/contrib/libs/libunwind/src/UnwindRegistersRestore.S
+++ b/contrib/libs/libunwind/src/UnwindRegistersRestore.S
@@ -20,7 +20,7 @@
.text
#endif
-#if !defined(__USING_SJLJ_EXCEPTIONS__)
+#if !defined(__USING_SJLJ_EXCEPTIONS__) && !defined(__wasm__)
#if defined(__i386__)
DEFINE_LIBUNWIND_FUNCTION(__libunwind_Registers_x86_jumpto)
@@ -629,6 +629,10 @@ Lnovec:
#elif defined(__aarch64__)
+#if defined(__ARM_FEATURE_GCS_DEFAULT)
+.arch_extension gcs
+#endif
+
//
// extern "C" void __libunwind_Registers_arm64_jumpto(Registers_arm64 *);
//
@@ -680,6 +684,16 @@ DEFINE_LIBUNWIND_FUNCTION(__libunwind_Registers_arm64_jumpto)
ldr x16, [x0, #0x0F8]
ldp x0, x1, [x0, #0x000] // restore x0,x1
mov sp,x16 // restore sp
+#if defined(__ARM_FEATURE_GCS_DEFAULT)
+ // If GCS is enabled we need to push the address we're returning to onto the
+ // GCS stack. We can't just return using br, as there won't be a BTI landing
+ // pad instruction at the destination.
+ mov x16, #1
+ chkfeat x16
+ cbnz x16, Lnogcs
+ gcspushm x30
+Lnogcs:
+#endif
ret x30 // jump to pc
#elif defined(__arm__) && !defined(__APPLE__)
@@ -1232,7 +1246,7 @@ DEFINE_LIBUNWIND_FUNCTION(_ZN9libunwind19Registers_loongarch6jumptoEv)
#endif
-#endif /* !defined(__USING_SJLJ_EXCEPTIONS__) */
+#endif /* !defined(__USING_SJLJ_EXCEPTIONS__) && !defined(__wasm__) */
NO_EXEC_STACK_DIRECTIVE
diff --git a/contrib/libs/libunwind/src/UnwindRegistersSave.S b/contrib/libs/libunwind/src/UnwindRegistersSave.S
index 19a0e87d68..5bf6055fe4 100644
--- a/contrib/libs/libunwind/src/UnwindRegistersSave.S
+++ b/contrib/libs/libunwind/src/UnwindRegistersSave.S
@@ -20,7 +20,7 @@
.text
#endif
-#if !defined(__USING_SJLJ_EXCEPTIONS__)
+#if !defined(__USING_SJLJ_EXCEPTIONS__) && !defined(__wasm__)
#if defined(__i386__)
@@ -1177,6 +1177,6 @@ DEFINE_LIBUNWIND_FUNCTION(__unw_getcontext)
WEAK_ALIAS(__unw_getcontext, unw_getcontext)
-#endif /* !defined(__USING_SJLJ_EXCEPTIONS__) */
+#endif /* !defined(__USING_SJLJ_EXCEPTIONS__) && !defined(__wasm__) */
NO_EXEC_STACK_DIRECTIVE
diff --git a/contrib/libs/libunwind/src/assembly.h b/contrib/libs/libunwind/src/assembly.h
index fb07d04071..f8e83e138e 100644
--- a/contrib/libs/libunwind/src/assembly.h
+++ b/contrib/libs/libunwind/src/assembly.h
@@ -82,7 +82,22 @@
#define PPC64_OPD2
#endif
-#if defined(__aarch64__) && defined(__ARM_FEATURE_BTI_DEFAULT)
+#if defined(__aarch64__)
+#if defined(__ARM_FEATURE_GCS_DEFAULT) && defined(__ARM_FEATURE_BTI_DEFAULT)
+// Set BTI, PAC, and GCS gnu property bits
+#define GNU_PROPERTY 7
+// We indirectly branch to __libunwind_Registers_arm64_jumpto from
+// __unw_phase2_resume, so we need to use bti jc.
+#define AARCH64_BTI bti jc
+#elif defined(__ARM_FEATURE_GCS_DEFAULT)
+// Set GCS gnu property bit
+#define GNU_PROPERTY 4
+#elif defined(__ARM_FEATURE_BTI_DEFAULT)
+// Set BTI and PAC gnu property bits
+#define GNU_PROPERTY 3
+#define AARCH64_BTI bti c
+#endif
+#ifdef GNU_PROPERTY
.pushsection ".note.gnu.property", "a" SEPARATOR \
.balign 8 SEPARATOR \
.long 4 SEPARATOR \
@@ -91,12 +106,12 @@
.asciz "GNU" SEPARATOR \
.long 0xc0000000 SEPARATOR /* GNU_PROPERTY_AARCH64_FEATURE_1_AND */ \
.long 4 SEPARATOR \
- .long 3 SEPARATOR /* GNU_PROPERTY_AARCH64_FEATURE_1_BTI AND */ \
- /* GNU_PROPERTY_AARCH64_FEATURE_1_PAC */ \
+ .long GNU_PROPERTY SEPARATOR \
.long 0 SEPARATOR \
.popsection SEPARATOR
-#define AARCH64_BTI bti c
-#else
+#endif
+#endif
+#if !defined(AARCH64_BTI)
#define AARCH64_BTI
#endif
diff --git a/contrib/libs/libunwind/src/cet_unwind.h b/contrib/libs/libunwind/src/cet_unwind.h
index c364ed3e12..47d7616a73 100644
--- a/contrib/libs/libunwind/src/cet_unwind.h
+++ b/contrib/libs/libunwind/src/cet_unwind.h
@@ -35,6 +35,28 @@
} while (0)
#endif
+// On AArch64 we use _LIBUNWIND_USE_GCS to indicate that GCS is supported. We
+// need to guard any use of GCS instructions with __chkfeat though, as GCS may
+// not be enabled.
+#if defined(_LIBUNWIND_TARGET_AARCH64) && defined(__ARM_FEATURE_GCS_DEFAULT)
+#include <arm_acle.h>
+
+// We can only use GCS if arm_acle.h defines the GCS intrinsics.
+#ifdef _CHKFEAT_GCS
+#define _LIBUNWIND_USE_GCS 1
+#endif
+
+#define _LIBUNWIND_POP_CET_SSP(x) \
+ do { \
+ if (__chkfeat(_CHKFEAT_GCS)) { \
+ unsigned tmp = (x); \
+ while (tmp--) \
+ __gcspopm(); \
+ } \
+ } while (0)
+
+#endif
+
extern void *__libunwind_cet_get_registers(unw_cursor_t *);
extern void *__libunwind_cet_get_jump_target(void);
diff --git a/contrib/libs/libunwind/src/libunwind.cpp b/contrib/libs/libunwind/src/libunwind.cpp
index 217dde9098..cf39ec5f7d 100644
--- a/contrib/libs/libunwind/src/libunwind.cpp
+++ b/contrib/libs/libunwind/src/libunwind.cpp
@@ -26,7 +26,7 @@
#include <sanitizer/asan_interface.h>
#endif
-#if !defined(__USING_SJLJ_EXCEPTIONS__) && !defined(__USING_WASM_EXCEPTIONS__)
+#if !defined(__USING_SJLJ_EXCEPTIONS__) && !defined(__wasm__)
#include "AddressSpace.hpp"
#include "UnwindCursor.hpp"
@@ -347,8 +347,7 @@ void __unw_remove_dynamic_eh_frame_section(unw_word_t eh_frame_start) {
}
#endif // defined(_LIBUNWIND_SUPPORT_DWARF_UNWIND)
-#endif // !defined(__USING_SJLJ_EXCEPTIONS__) &&
- // !defined(__USING_WASM_EXCEPTIONS__)
+#endif // !defined(__USING_SJLJ_EXCEPTIONS__) && !defined(__wasm__)
#ifdef __APPLE__
diff --git a/contrib/libs/libunwind/ya.make b/contrib/libs/libunwind/ya.make
index 062d702729..4abb1db13b 100644
--- a/contrib/libs/libunwind/ya.make
+++ b/contrib/libs/libunwind/ya.make
@@ -11,9 +11,9 @@ LICENSE(
LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-VERSION(18.1.0-rc1)
+VERSION(19.1.5)
-ORIGINAL_SOURCE(https://github.com/llvm/llvm-project/archive/llvmorg-18.1.0-rc1.tar.gz)
+ORIGINAL_SOURCE(https://github.com/llvm/llvm-project/archive/llvmorg-19.1.5.tar.gz)
PEERDIR(
library/cpp/sanitizer/include
@@ -50,9 +50,6 @@ IF (SANITIZER_TYPE == memory)
ENDIF()
IF (NOT OS_EMSCRIPTEN)
- CFLAGS(
- -D_LIBUNWIND_IS_NATIVE_ONLY
- )
SRCS(
src/Unwind-EHABI.cpp
src/Unwind-seh.cpp
@@ -80,7 +77,7 @@ ELSEIF (OS_EMSCRIPTEN AND NOT ARCH_WASM32)
)
CFLAGS(
-D_LIBUNWIND_HIDE_SYMBOLS
- -D__USING_WASM_EXCEPTIONS__
+ -D__WASM_EXCEPTIONS__
)
SRCS(
src/Unwind-wasm.c