1276789Sdim//===-- sanitizer_symbolizer_libbacktrace.h ---------------------*- C++ -*-===//
2276789Sdim//
3276789Sdim//                     The LLVM Compiler Infrastructure
4276789Sdim//
5276789Sdim// This file is distributed under the University of Illinois Open Source
6276789Sdim// License. See LICENSE.TXT for details.
7276789Sdim//
8276789Sdim//===----------------------------------------------------------------------===//
9276789Sdim//
10276789Sdim// This file is shared between AddressSanitizer and ThreadSanitizer
11276789Sdim// run-time libraries.
12276789Sdim// Header for libbacktrace symbolizer.
13276789Sdim//===----------------------------------------------------------------------===//
14276789Sdim#ifndef SANITIZER_SYMBOLIZER_LIBBACKTRACE_H
15276789Sdim#define SANITIZER_SYMBOLIZER_LIBBACKTRACE_H
16276789Sdim
17276789Sdim#include "sanitizer_platform.h"
18276789Sdim#include "sanitizer_common.h"
19296417Sdim#include "sanitizer_allocator_internal.h"
20288943Sdim#include "sanitizer_symbolizer_internal.h"
21276789Sdim
22276789Sdim#ifndef SANITIZER_LIBBACKTRACE
23276789Sdim# define SANITIZER_LIBBACKTRACE 0
24276789Sdim#endif
25276789Sdim
26276789Sdim#ifndef SANITIZER_CP_DEMANGLE
27276789Sdim# define SANITIZER_CP_DEMANGLE 0
28276789Sdim#endif
29276789Sdim
30276789Sdimnamespace __sanitizer {
31276789Sdim
32288943Sdimclass LibbacktraceSymbolizer : public SymbolizerTool {
33276789Sdim public:
34276789Sdim  static LibbacktraceSymbolizer *get(LowLevelAllocator *alloc);
35276789Sdim
36288943Sdim  bool SymbolizePC(uptr addr, SymbolizedStack *stack) override;
37276789Sdim
38288943Sdim  bool SymbolizeData(uptr addr, DataInfo *info) override;
39276789Sdim
40276789Sdim  // May return NULL if demangling failed.
41288943Sdim  const char *Demangle(const char *name) override;
42276789Sdim
43276789Sdim private:
44276789Sdim  explicit LibbacktraceSymbolizer(void *state) : state_(state) {}
45276789Sdim
46276789Sdim  void *state_;  // Leaked.
47276789Sdim};
48276789Sdim
49276789Sdim}  // namespace __sanitizer
50276789Sdim#endif  // SANITIZER_SYMBOLIZER_LIBBACKTRACE_H
51