Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
14 pmbaty 1
//===- DbiModuleDescriptor.h - PDB module information -----------*- 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_DBIMODULEDESCRIPTOR_H
10
#define LLVM_DEBUGINFO_PDB_NATIVE_DBIMODULEDESCRIPTOR_H
11
 
12
#include "llvm/ADT/StringRef.h"
13
#include "llvm/Support/BinaryStreamRef.h"
14
#include "llvm/Support/Error.h"
15
#include <cstdint>
16
 
17
namespace llvm {
18
template <typename T> struct VarStreamArrayExtractor;
19
 
20
namespace pdb {
21
struct ModuleInfoHeader;
22
struct SectionContrib;
23
class DbiModuleDescriptor {
24
  friend class DbiStreamBuilder;
25
 
26
public:
27
  DbiModuleDescriptor() = default;
28
  DbiModuleDescriptor(const DbiModuleDescriptor &Info) = default;
29
  DbiModuleDescriptor &operator=(const DbiModuleDescriptor &Info) = default;
30
 
31
  static Error initialize(BinaryStreamRef Stream, DbiModuleDescriptor &Info);
32
 
33
  bool hasECInfo() const;
34
  uint16_t getTypeServerIndex() const;
35
  uint16_t getModuleStreamIndex() const;
36
  uint32_t getSymbolDebugInfoByteSize() const;
37
  uint32_t getC11LineInfoByteSize() const;
38
  uint32_t getC13LineInfoByteSize() const;
39
  uint32_t getNumberOfFiles() const;
40
  uint32_t getSourceFileNameIndex() const;
41
  uint32_t getPdbFilePathNameIndex() const;
42
 
43
  StringRef getModuleName() const;
44
  StringRef getObjFileName() const;
45
 
46
  uint32_t getRecordLength() const;
47
 
48
  const SectionContrib &getSectionContrib() const;
49
 
50
private:
51
  StringRef ModuleName;
52
  StringRef ObjFileName;
53
  const ModuleInfoHeader *Layout = nullptr;
54
};
55
 
56
} // end namespace pdb
57
 
58
template <> struct VarStreamArrayExtractor<pdb::DbiModuleDescriptor> {
59
  Error operator()(BinaryStreamRef Stream, uint32_t &Length,
60
                   pdb::DbiModuleDescriptor &Info) {
61
    if (auto EC = pdb::DbiModuleDescriptor::initialize(Stream, Info))
62
      return EC;
63
    Length = Info.getRecordLength();
64
    return Error::success();
65
  }
66
};
67
 
68
} // end namespace llvm
69
 
70
#endif // LLVM_DEBUGINFO_PDB_NATIVE_DBIMODULEDESCRIPTOR_H