mirror of
https://anongit.gentoo.org/git/repo/gentoo.git
synced 2025-07-26 08:55:57 +02:00
36 lines
1.4 KiB
Diff
36 lines
1.4 KiB
Diff
Fix build with llvm-libunwind, and also fix for non-llvm libunwind
|
|
when using clang+bfd given clang doesn't have _Unwind_Find_FDE in
|
|
its rtlib and expects it from llvm-libunwind.
|
|
|
|
The _CONFIG_H_ check is for <llvm-libunwind-15 (adds _VERSION).
|
|
--- a/dlls/ntdll/unix/dwarf.h
|
|
+++ b/dlls/ntdll/unix/dwarf.h
|
|
@@ -255,5 +255,7 @@
|
|
};
|
|
|
|
+#if defined(_LIBUNWIND_VERSION) || defined(____LIBUNWIND_CONFIG_H__) || !defined(__clang__)
|
|
extern const struct dwarf_fde *_Unwind_Find_FDE (void *, struct dwarf_eh_bases *);
|
|
+#endif
|
|
|
|
static unsigned char dwarf_get_u1( const unsigned char **p )
|
|
--- a/dlls/ntdll/unix/signal_x86_64.c
|
|
+++ b/dlls/ntdll/unix/signal_x86_64.c
|
|
@@ -623,5 +623,5 @@
|
|
int rc;
|
|
|
|
-#ifdef __APPLE__
|
|
+#if defined(__APPLE__) || defined(_LIBUNWIND_VERSION) || defined(____LIBUNWIND_CONFIG_H__)
|
|
rc = unw_getcontext( &unw_context );
|
|
if (rc == UNW_ESUCCESS)
|
|
@@ -746,4 +746,5 @@
|
|
{
|
|
struct dwarf_eh_bases bases;
|
|
+#if defined(_LIBUNWIND_VERSION) || defined(____LIBUNWIND_CONFIG_H__) || !defined(__clang__)
|
|
const struct dwarf_fde *fde = _Unwind_Find_FDE( (void *)(context->Rip - 1), &bases );
|
|
|
|
@@ -751,4 +752,5 @@
|
|
return dwarf_virtual_unwind( context->Rip, &dispatch->EstablisherFrame, context, fde,
|
|
&bases, &dispatch->LanguageHandler, &dispatch->HandlerData );
|
|
+#endif
|
|
#ifdef HAVE_LIBUNWIND
|
|
return libunwind_virtual_unwind( context->Rip, &dispatch->EstablisherFrame, context,
|