LLVM 18.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
17using namespace llvm;
18using namespace llvm::pdb;
19using namespace llvm::support;
20
22 DbiModuleDescriptor &Info) {
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
77
78StringRef 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}
Analysis containing CSE Info
Definition: CSEInfo.cpp:27
uint64_t Size
Provides read only access to a subclass of BinaryStream.
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...
Error readCString(StringRef &Dest)
Read a null terminated string from Dest.
BinaryStreamRef is to BinaryStream what ArrayRef is to an Array.
Lightweight error class with error context and mandatory checking.
Definition: Error.h:160
static ErrorSuccess success()
Create a success value.
Definition: Error.h:334
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:50
std::string str() const
str - Get the contents as an std::string.
Definition: StringRef.h:222
const SectionContrib & getSectionContrib() const
static Error initialize(BinaryStreamRef Stream, DbiModuleDescriptor &Info)
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18
uint64_t alignTo(uint64_t Size, Align A)
Returns a multiple of A needed to store Size bytes.
Definition: Alignment.h:155
static const uint16_t TypeServerIndexShift
Definition: RawTypes.h:207
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
static const uint16_t TypeServerIndexMask
Definition: RawTypes.h:206
The header preceding each entry in the Module Info substream of the DBI stream.
Definition: RawTypes.h:212
support::ulittle32_t PdbFilePathNI
Name Index for path to compiler PDB.
Definition: RawTypes.h:255
support::ulittle16_t ModDiStream
Stream Number of module debug info.
Definition: RawTypes.h:226
support::ulittle16_t NumFiles
Number of files contributing to this module.
Definition: RawTypes.h:238
support::ulittle16_t Flags
See ModInfoFlags definition.
Definition: RawTypes.h:223
support::ulittle32_t SrcFileNameNI
Name Index for src file name.
Definition: RawTypes.h:252
SectionContrib SC
First section contribution of this module.
Definition: RawTypes.h:220
support::ulittle32_t C13Bytes
Size of C13 line number info in above stream.
Definition: RawTypes.h:235
support::ulittle32_t SymBytes
Size of local symbol debug info in above stream.
Definition: RawTypes.h:229
support::ulittle32_t C11Bytes
Size of C11 line number info in above stream.
Definition: RawTypes.h:232