1 //==- IPDBSectionContrib.h - Interfaces for PDB SectionContribs --*- 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_IPDBSECTIONCONTRIB_H
10 #define LLVM_DEBUGINFO_PDB_IPDBSECTIONCONTRIB_H
11 
12 #include "PDBTypes.h"
13 
14 namespace llvm {
15 namespace pdb {
16 
17 /// IPDBSectionContrib defines an interface used to represent section
18 /// contributions whose information are stored in the PDB.
19 class IPDBSectionContrib {
20 public:
21   virtual ~IPDBSectionContrib();
22 
23   virtual std::unique_ptr<PDBSymbolCompiland> getCompiland() const = 0;
24   virtual uint32_t getAddressSection() const = 0;
25   virtual uint32_t getAddressOffset() const = 0;
26   virtual uint32_t getRelativeVirtualAddress() const = 0;
27   virtual uint64_t getVirtualAddress() const  = 0;
28   virtual uint32_t getLength() const = 0;
29   virtual bool isNotPaged() const = 0;
30   virtual bool hasCode() const = 0;
31   virtual bool hasCode16Bit() const = 0;
32   virtual bool hasInitializedData() const = 0;
33   virtual bool hasUninitializedData() const = 0;
34   virtual bool isRemoved() const = 0;
35   virtual bool hasComdat() const = 0;
36   virtual bool isDiscardable() const = 0;
37   virtual bool isNotCached() const = 0;
38   virtual bool isShared() const = 0;
39   virtual bool isExecutable() const = 0;
40   virtual bool isReadable() const = 0;
41   virtual bool isWritable() const = 0;
42   virtual uint32_t getDataCrc32() const = 0;
43   virtual uint32_t getRelocationsCrc32() const = 0;
44   virtual uint32_t getCompilandId() const = 0;
45 };
46 }
47 }
48 
49 #endif // LLVM_DEBUGINFO_PDB_IPDBSECTIONCONTRIB_H
50