1 /* Copyright (c) 2013-2021, The Tor Project, Inc. */
2 /* See LICENSE for licensing information */
4 #ifndef TOR_BACKTRACE_H
5 #define TOR_BACKTRACE_H
10 * \brief Header for backtrace.c
14 #include "lib/cc/compat_compiler.h"
15 #include "lib/cc/torint.h"
16 #include "lib/defs/logging_types.h"
18 typedef void (*tor_log_fn
)(int, log_domain_mask_t
, const char *fmt
, ...)
21 void log_backtrace_impl(int severity
, log_domain_mask_t domain
,
24 int configure_backtrace_handler(const char *tor_version
);
25 void clean_up_backtrace_handler(void);
26 void dump_stack_symbols_to_error_fds(void);
27 const char *get_tor_backtrace_version(void);
29 #define log_backtrace(sev, dom, msg) \
30 log_backtrace_impl((sev), (dom), (msg), tor_log)
32 #ifdef BACKTRACE_PRIVATE
33 #if defined(HAVE_EXECINFO_H) && defined(HAVE_BACKTRACE) && \
34 defined(HAVE_BACKTRACE_SYMBOLS_FD) && defined(HAVE_SIGACTION)
35 void clean_backtrace(void **stack
, size_t depth
, const ucontext_t
*ctx
);
37 #endif /* defined(BACKTRACE_PRIVATE) */
39 #endif /* !defined(TOR_BACKTRACE_H) */