1 //===- SymbolizableModule.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 declares the SymbolizableModule interface. 10 // 11 //===----------------------------------------------------------------------===// 12 #ifndef LLVM_DEBUGINFO_SYMBOLIZE_SYMBOLIZABLEMODULE_H 13 #define LLVM_DEBUGINFO_SYMBOLIZE_SYMBOLIZABLEMODULE_H 14 15 #include "llvm/DebugInfo/DIContext.h" 16 #include <cstdint> 17 18 namespace llvm { 19 namespace symbolize { 20 21 using FunctionNameKind = DILineInfoSpecifier::FunctionNameKind; 22 23 class SymbolizableModule { 24 public: 25 virtual ~SymbolizableModule() = default; 26 27 virtual DILineInfo symbolizeCode(object::SectionedAddress ModuleOffset, 28 DILineInfoSpecifier LineInfoSpecifier, 29 bool UseSymbolTable) const = 0; 30 virtual DIInliningInfo 31 symbolizeInlinedCode(object::SectionedAddress ModuleOffset, 32 DILineInfoSpecifier LineInfoSpecifier, 33 bool UseSymbolTable) const = 0; 34 virtual DIGlobal 35 symbolizeData(object::SectionedAddress ModuleOffset) const = 0; 36 virtual std::vector<DILocal> 37 symbolizeFrame(object::SectionedAddress ModuleOffset) const = 0; 38 39 // Return true if this is a 32-bit x86 PE COFF module. 40 virtual bool isWin32Module() const = 0; 41 42 // Returns the preferred base of the module, i.e. where the loader would place 43 // it in memory assuming there were no conflicts. 44 virtual uint64_t getModulePreferredBase() const = 0; 45 }; 46 47 } // end namespace symbolize 48 } // end namespace llvm 49 50 #endif // LLVM_DEBUGINFO_SYMBOLIZE_SYMBOLIZABLEMODULE_H 51