LLVM  12.0.0git
DbiModuleDescriptor.cpp
Go to the documentation of this file.
1 //===- DbiModuleDescriptor.cpp - PDB module information -------------------===//
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 
12 #include "llvm/Support/Endian.h"
13 #include "llvm/Support/Error.h"
15 #include <cstdint>
16 
17 using namespace llvm;
18 using namespace llvm::pdb;
19 using namespace llvm::support;
20 
23  BinaryStreamReader Reader(Stream);
24  if (auto EC = Reader.readObject(Info.Layout))
25  return EC;
26 
27  if (auto EC = Reader.readCString(Info.ModuleName))
28  return EC;
29 
30  if (auto EC = Reader.readCString(Info.ObjFileName))
31  return EC;
32  return Error::success();
33 }
34 
36  return (Layout->Flags & ModInfoFlags::HasECFlagMask) != 0;
37 }
38 
40  return (Layout->Flags & ModInfoFlags::TypeServerIndexMask) >>
42 }
43 
45  return Layout->SC;
46 }
47 
49  return Layout->ModDiStream;
50 }
51 
53  return Layout->SymBytes;
54 }
55 
57  return Layout->C11Bytes;
58 }
59 
61  return Layout->C13Bytes;
62 }
63 
65  return Layout->NumFiles;
66 }
67 
69  return Layout->SrcFileNameNI;
70 }
71 
73  return Layout->PdbFilePathNI;
74 }
75 
76 StringRef DbiModuleDescriptor::getModuleName() const { return ModuleName; }
77 
78 StringRef DbiModuleDescriptor::getObjFileName() const { return ObjFileName; }
79 
81  uint32_t M = ModuleName.str().size() + 1;
82  uint32_t O = ObjFileName.str().size() + 1;
83  uint32_t Size = sizeof(ModuleInfoHeader) + M + O;
84  Size = alignTo(Size, 4);
85  return Size;
86 }
This class represents lattice values for constants.
Definition: AllocatorList.h:23
static const uint16_t HasECFlagMask
uint16_t fWritten : 1; // True if DbiModuleDescriptor is dirty uint16_t fECEnabled : 1; // Is EC symb...
Definition: RawTypes.h:204
Error readObject(const T *&Dest)
Get a pointer to an object of type T from the underlying stream, as if by memcpy, and store the resul...
const SectionContrib & getSectionContrib() const
Error readCString(StringRef &Dest)
Read a null terminated string from Dest.
static Error initialize(BinaryStreamRef Stream, DbiModuleDescriptor &Info)
Analysis containing CSE Info
Definition: CSEInfo.cpp:25
The header preceding each entry in the Module Info substream of the DBI stream.
Definition: RawTypes.h:212
static const uint16_t TypeServerIndexShift
Definition: RawTypes.h:207
static ErrorSuccess success()
Create a success value.
Definition: Error.h:332
BinaryStreamRef is to BinaryStream what ArrayRef is to an Array.
uint64_t alignTo(uint64_t Size, Align A)
Returns a multiple of A needed to store Size bytes.
Definition: Alignment.h:158
uint32_t Size
Definition: Profile.cpp:46
static const uint16_t TypeServerIndexMask
Definition: RawTypes.h:206
Lightweight error class with error context and mandatory checking.
Definition: Error.h:157
Provides read only access to a subclass of BinaryStream.
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:57