Update copyrights to 2021, using "make update-copyright"
[tor.git] / src / lib / err / backtrace.h
blobec14d1ab024056c1a461f40403f5c25c062f05d0
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
7 /**
8 * \file backtrace.h
10 * \brief Header for backtrace.c
11 **/
13 #include "orconfig.h"
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, ...)
19 CHECK_PRINTF(3,4);
21 void log_backtrace_impl(int severity, log_domain_mask_t domain,
22 const char *msg,
23 tor_log_fn logger);
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);
36 #endif
37 #endif /* defined(BACKTRACE_PRIVATE) */
39 #endif /* !defined(TOR_BACKTRACE_H) */