1 //===- NativeExeSymbol.h - native impl for PDBSymbolExe ---------*- 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 #ifndef LLVM_DEBUGINFO_PDB_NATIVE_NATIVEEXESYMBOL_H 10 #define LLVM_DEBUGINFO_PDB_NATIVE_NATIVEEXESYMBOL_H 11 12 #include "llvm/DebugInfo/CodeView/GUID.h" 13 #include "llvm/DebugInfo/PDB/Native/NativeRawSymbol.h" 14 #include "llvm/DebugInfo/PDB/PDBTypes.h" 15 16 namespace llvm { 17 namespace pdb { 18 19 class NativeSession; 20 21 class DbiStream; 22 23 class NativeExeSymbol : public NativeRawSymbol { 24 // EXE symbol is the authority on the various symbol types. 25 DbiStream *Dbi = nullptr; 26 27 public: 28 NativeExeSymbol(NativeSession &Session, SymIndexId Id); 29 30 std::unique_ptr<IPDBEnumSymbols> 31 findChildren(PDB_SymType Type) const override; 32 33 uint32_t getAge() const override; 34 std::string getSymbolsFileName() const override; 35 codeview::GUID getGuid() const override; 36 bool hasCTypes() const override; 37 bool hasPrivateSymbols() const override; 38 }; 39 40 } // namespace pdb 41 } // namespace llvm 42 43 #endif 44