//===-- sanitizer_symbolizer.h ----------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // Symbolizer is used by sanitizers to map instruction address to a location in // source code at run-time. Symbolizer either uses __sanitizer_symbolize_* // defined in the program, or (if they are missing) tries to find and // launch "llvm-symbolizer" commandline tool in a separate process and // communicate with it. // // Generally we should try to avoid calling system library functions during // symbolization (and use their replacements from sanitizer_libc.h instead). //===----------------------------------------------------------------------===// #ifndef SANITIZER_SYMBOLIZER_H #define SANITIZER_SYMBOLIZER_H #include "sanitizer_common.h" #include "sanitizer_mutex.h" #include "sanitizer_vector.h" namespace __sanitizer { struct AddressInfo { … }; // Linked list of symbolized frames (each frame is described by AddressInfo). struct SymbolizedStack { … }; class SymbolizedStackHolder { … }; // For now, DataInfo is used to describe global variable. struct DataInfo { … }; struct LocalInfo { … }; struct FrameInfo { … }; class SymbolizerTool; class Symbolizer final { … }; #ifdef SANITIZER_WINDOWS void InitializeDbgHelpIfNeeded(); #endif } // namespace __sanitizer #endif // SANITIZER_SYMBOLIZER_H