brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · 7b039b8 Raw
50 lines · c
1//===-- sanitizer_symbolizer_libbacktrace.h ---------------------*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9// This file is shared between AddressSanitizer and ThreadSanitizer10// run-time libraries.11// Header for libbacktrace symbolizer.12//===----------------------------------------------------------------------===//13#ifndef SANITIZER_SYMBOLIZER_LIBBACKTRACE_H14#define SANITIZER_SYMBOLIZER_LIBBACKTRACE_H15 16#include "sanitizer_platform.h"17#include "sanitizer_common.h"18#include "sanitizer_allocator_internal.h"19#include "sanitizer_symbolizer_internal.h"20 21#ifndef SANITIZER_LIBBACKTRACE22# define SANITIZER_LIBBACKTRACE 023#endif24 25#ifndef SANITIZER_CP_DEMANGLE26# define SANITIZER_CP_DEMANGLE 027#endif28 29namespace __sanitizer {30 31class LibbacktraceSymbolizer final : public SymbolizerTool {32 public:33  static LibbacktraceSymbolizer *get(LowLevelAllocator *alloc);34 35  bool SymbolizePC(uptr addr, SymbolizedStack *stack) override;36 37  bool SymbolizeData(uptr addr, DataInfo *info) override;38 39  // May return NULL if demangling failed.40  const char *Demangle(const char *name) override;41 42 private:43  explicit LibbacktraceSymbolizer(void *state) : state_(state) {}44 45  void *state_;  // Leaked.46};47 48}  // namespace __sanitizer49#endif  // SANITIZER_SYMBOLIZER_LIBBACKTRACE_H50