backtrace.h 956 B

1234567891011121314151617181920212223242526272829
  1. /* Copyright (c) 2013-2018, The Tor Project, Inc. */
  2. /* See LICENSE for licensing information */
  3. #ifndef TOR_BACKTRACE_H
  4. #define TOR_BACKTRACE_H
  5. #include "orconfig.h"
  6. #include "common/compat_compiler.h"
  7. typedef void (*tor_log_fn)(int, unsigned, const char *fmt, ...)
  8. CHECK_PRINTF(3,4);
  9. void log_backtrace_impl(int severity, int domain, const char *msg,
  10. tor_log_fn logger);
  11. int configure_backtrace_handler(const char *tor_version);
  12. void clean_up_backtrace_handler(void);
  13. void dump_stack_symbols_to_error_fds(void);
  14. #define log_backtrace(sev, dom, msg) \
  15. log_backtrace_impl((sev), (dom), (msg), tor_log)
  16. #ifdef EXPOSE_CLEAN_BACKTRACE
  17. #if defined(HAVE_EXECINFO_H) && defined(HAVE_BACKTRACE) && \
  18. defined(HAVE_BACKTRACE_SYMBOLS_FD) && defined(HAVE_SIGACTION)
  19. void clean_backtrace(void **stack, size_t depth, const ucontext_t *ctx);
  20. #endif
  21. #endif /* defined(EXPOSE_CLEAN_BACKTRACE) */
  22. #endif /* !defined(TOR_BACKTRACE_H) */