12d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines//===-- sanitizer_symbolizer_libbacktrace.h ---------------------*- C++ -*-===// 22d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// 32d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// The LLVM Compiler Infrastructure 42d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// 52d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// This file is distributed under the University of Illinois Open Source 62d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// License. See LICENSE.TXT for details. 72d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// 82d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines//===----------------------------------------------------------------------===// 92d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// 102d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// This file is shared between AddressSanitizer and ThreadSanitizer 112d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// run-time libraries. 122d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// Header for libbacktrace symbolizer. 132d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines//===----------------------------------------------------------------------===// 142d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#ifndef SANITIZER_SYMBOLIZER_LIBBACKTRACE_H 152d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define SANITIZER_SYMBOLIZER_LIBBACKTRACE_H 162d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 172d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#include "sanitizer_platform.h" 182d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#include "sanitizer_common.h" 192d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#include "sanitizer_symbolizer.h" 202d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 212d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#ifndef SANITIZER_LIBBACKTRACE 222d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines# define SANITIZER_LIBBACKTRACE 0 232d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 242d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 252d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#ifndef SANITIZER_CP_DEMANGLE 262d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines# define SANITIZER_CP_DEMANGLE 0 272d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 282d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 292d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hinesnamespace __sanitizer { 302d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 312d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hinesclass LibbacktraceSymbolizer { 322d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines public: 332d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines static LibbacktraceSymbolizer *get(LowLevelAllocator *alloc); 342d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 352d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines uptr SymbolizeCode(uptr addr, AddressInfo *frames, uptr max_frames, 362d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines const char *module_name, uptr module_offset); 372d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 382d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines bool SymbolizeData(DataInfo *info); 392d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 402d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines // May return NULL if demangling failed. 412d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines static char *Demangle(const char *name, bool always_alloc = false); 422d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 432d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines private: 442d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines explicit LibbacktraceSymbolizer(void *state) : state_(state) {} 452d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 462d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines void *state_; // Leaked. 472d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines}; 482d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 492d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines} // namespace __sanitizer 502d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif // SANITIZER_SYMBOLIZER_LIBBACKTRACE_H 51