(root)/
gcc-13.2.0/
libsanitizer/
sanitizer_common/
sanitizer_symbolizer_libbacktrace.h
       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-exception
       6  //
       7  //===----------------------------------------------------------------------===//
       8  //
       9  // This file is shared between AddressSanitizer and ThreadSanitizer
      10  // run-time libraries.
      11  // Header for libbacktrace symbolizer.
      12  //===----------------------------------------------------------------------===//
      13  #ifndef SANITIZER_SYMBOLIZER_LIBBACKTRACE_H
      14  #define SANITIZER_SYMBOLIZER_LIBBACKTRACE_H
      15  
      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_LIBBACKTRACE
      22  # define SANITIZER_LIBBACKTRACE 0
      23  #endif
      24  
      25  #ifndef SANITIZER_CP_DEMANGLE
      26  # define SANITIZER_CP_DEMANGLE 0
      27  #endif
      28  
      29  namespace __sanitizer {
      30  
      31  class 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 __sanitizer
      49  #endif  // SANITIZER_SYMBOLIZER_LIBBACKTRACE_H