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