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