libthr: Disable stack unwinding on ARM.
When a thread exits, _Unwind_ForcedUnwind() is used to walk up stack
frames executing pending cleanups pushed by pthread_cleanup_push().
The cleanups are popped by thread_unwind_stop() which is passed as a
callback function to _Unwind_ForcedUnwind().
LLVM's libunwind uses a different function type for the callback on
32-bit ARM relative to all other platforms. The previous unwind.h
header (as well as the unwind.h from libcxxrt) use the non-ARM type on
all platforms, so this has likely been broken on 32-bit arm since it
switched to using LLVM's libunwind.
For now, just disable stack unwinding on 32-bit arm to unbreak the
build until a proper fix is tested.
(cherry picked from commit bbf4df1722
)
This commit is contained in:
parent
b2127b6f1a
commit
d378ddab79
@ -29,6 +29,10 @@ CFLAGS.thr_stack.c+= -Wno-cast-align
|
||||
CFLAGS.rtld_malloc.c+= -Wno-cast-align
|
||||
CFLAGS.thr_symbols.c+= -Wno-missing-variable-declarations
|
||||
|
||||
.if ${MACHINE_CPUARCH} == "arm"
|
||||
NO_THREAD_UNWIND_STACK= yes
|
||||
.endif
|
||||
|
||||
.ifndef NO_THREAD_UNWIND_STACK
|
||||
CFLAGS+=-fexceptions
|
||||
CFLAGS+=-D_PTHREAD_FORCED_UNWIND
|
||||
|
Loading…
Reference in New Issue
Block a user