blob: 00b465a72774ba99f757d7b75e3c94d6b7634560 [file] [log] [blame]
Stephen Hines2d1fdb22014-05-28 23:58:16 -07001//===-- sanitizer_symbolizer_libbacktrace.h ---------------------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This file is shared between AddressSanitizer and ThreadSanitizer
11// run-time libraries.
12// Header for libbacktrace symbolizer.
13//===----------------------------------------------------------------------===//
14#ifndef SANITIZER_SYMBOLIZER_LIBBACKTRACE_H
15#define SANITIZER_SYMBOLIZER_LIBBACKTRACE_H
16
17#include "sanitizer_platform.h"
18#include "sanitizer_common.h"
Pirama Arumuga Nainar7c915052015-04-08 08:58:29 -070019#include "sanitizer_symbolizer_internal.h"
Stephen Hines2d1fdb22014-05-28 23:58:16 -070020
21#ifndef SANITIZER_LIBBACKTRACE
22# define SANITIZER_LIBBACKTRACE 0
23#endif
24
25#ifndef SANITIZER_CP_DEMANGLE
26# define SANITIZER_CP_DEMANGLE 0
27#endif
28
29namespace __sanitizer {
30
Pirama Arumuga Nainar7c915052015-04-08 08:58:29 -070031class LibbacktraceSymbolizer : public SymbolizerTool {
Stephen Hines2d1fdb22014-05-28 23:58:16 -070032 public:
33 static LibbacktraceSymbolizer *get(LowLevelAllocator *alloc);
34
Pirama Arumuga Nainar7c915052015-04-08 08:58:29 -070035 bool SymbolizePC(uptr addr, SymbolizedStack *stack) override;
Stephen Hines2d1fdb22014-05-28 23:58:16 -070036
Pirama Arumuga Nainar7c915052015-04-08 08:58:29 -070037 bool SymbolizeData(uptr addr, DataInfo *info) override;
Stephen Hines2d1fdb22014-05-28 23:58:16 -070038
39 // May return NULL if demangling failed.
Pirama Arumuga Nainar7c915052015-04-08 08:58:29 -070040 const char *Demangle(const char *name) override;
Stephen Hines2d1fdb22014-05-28 23:58:16 -070041
42 private:
43 explicit LibbacktraceSymbolizer(void *state) : state_(state) {}
44
45 void *state_; // Leaked.
46};
47
48} // namespace __sanitizer
49#endif // SANITIZER_SYMBOLIZER_LIBBACKTRACE_H