mirror of
https://github.com/tobast/libunwind-eh_elf.git
synced 2024-06-28 12:11:45 +02:00
84d4150668
Greetings, We use libunwind just for stack traces (I suspect many others do as well). The use pattern is: GetStackTrace(void** result, int max_depth) { ... unw_getcontext(&uc); unw_init_local(&cursor, &uc); while (n < max_depth) { if (unw_get_reg(&cursor, UNW_REG_IP, (unw_word_t *) &ip) < 0) { break; } result[n++] = ip; if (unw_step(&cursor) <= 0) { break; } } Given this usage, it is quite convenient for us to block signals (or prevent signal handlers from re-entering libunwind by other means) at the "top level", which makes most of the sigprocmask calls performed by libunwind itself unneccessary. The second patch in this series adds a configure option which removes most of the sigprocmask calls. Attached patch is a preliminary for it -- consolidating all of the "sigprocmask; mutex_lock;" sequences into lock_acquire and "mutex_unlock; sigprocmask;" sequences into lock_release. Thanks, -- Paul Pluzhnikov commit 402d15b123d54a7669db7cf17a76dd315094e472 Author: Paul Pluzhnikov <ppluzhnikov@google.com> Date: Mon Sep 21 10:18:28 2009 -0700 Replace "sigprocmask + mutext_lock" with a single lock_acquire. Likewise, replace "mutext_unlock + sigprocmask" with lock_release. |
||
---|---|---|
.. | ||
arm | ||
dwarf | ||
hppa | ||
ia64 | ||
mi | ||
mips | ||
ppc | ||
ppc32 | ||
ppc64 | ||
ptrace | ||
setjmp | ||
unwind | ||
x86 | ||
x86_64 | ||
elf32.c | ||
elf32.h | ||
elf64.c | ||
elf64.h | ||
elfxx.c | ||
elfxx.h | ||
Makefile.am | ||
os-hpux.c | ||
os-linux.c | ||
os-linux.h |