Go to the documentation of this file.
9 #ifndef LLVM_DEBUGINFO_PDB_NATIVE_DBISTREAMBUILDER_H
10 #define LLVM_DEBUGINFO_PDB_NATIVE_DBISTREAMBUILDER_H
30 class BinaryStreamWriter;
39 class DbiModuleDescriptorBuilder;
81 SectionContribs.emplace_back(
SC);
95 uint32_t calculateModiSubstreamSize()
const;
96 uint32_t calculateNamesOffset()
const;
97 uint32_t calculateSectionContribsStreamSize()
const;
98 uint32_t calculateSectionMapStreamSize()
const;
99 uint32_t calculateFileInfoSubstreamSize()
const;
100 uint32_t calculateNamesBufferSize()
const;
101 uint32_t calculateDbgStreamsSize()
const;
103 Error generateFileInfoSubstream();
119 const DbiStreamHeader *Header;
121 std::vector<std::unique_ptr<DbiModuleDescriptorBuilder>> ModiList;
124 std::vector<object::FpoData> OldFpoData;
128 PDBStringTableBuilder ECNamesBuilder;
131 std::vector<SectionContrib> SectionContribs;
132 std::vector<SecMapEntry> SectionMap;
Error commit(const msf::MSFLayout &Layout, WritableBinaryStreamRef MsfBuffer)
void setBuildNumber(uint16_t B)
This is an optimization pass for GlobalISel generic memory operations.
We currently emits eax Perhaps this is what we really should generate is Is imull three or four cycles eax eax The current instruction priority is based on pattern complexity The former is more complex because it folds a load so the latter will not be emitted Perhaps we should use AddedComplexity to give LEA32r a higher priority We should always try to match LEA first since the LEA matching code does some estimate to determine whether the match is profitable if we care more about code then imull is better It s two bytes shorter than movl leal On a Pentium M
An implementation of BinaryStream which holds its entire data set in a single contiguous buffer.
Expected< DbiModuleDescriptorBuilder & > addModuleInfo(StringRef ModuleName)
Provides write only access to a subclass of WritableBinaryStream.
void setMachineType(PDB_Machine M)
const uint16_t kInvalidStreamIndex
Error addDbgStream(pdb::DbgHeaderType Type, ArrayRef< uint8_t > Data)
The instances of the Type class are immutable: once they are created, they are never changed.
Data in the SUBSEC_FRAMEDATA subection.
Error addModuleSourceFile(DbiModuleDescriptorBuilder &Module, StringRef File)
void setVersionHeader(PdbRaw_DbiVer V)
Tagged union holding either a T or a Error.
void addNewFpoData(const codeview::FrameData &FD)
void addOldFpoData(const object::FpoData &Fpo)
void createSectionMap(ArrayRef< llvm::object::coff_section > SecHdrs)
@ SC
CHAIN = SC CHAIN, Imm128 - System call.
Expected< uint32_t > getSourceFileNameIndex(StringRef FileName)
Clang compiles this i1 i64 store i64 i64 store i64 i64 store i64 i64 store i64 align Which gets codegen d xmm0 movaps rbp movaps rbp movaps rbp movaps rbp rbp rbp rbp rbp It would be better to have movq s of instead of the movaps s LLVM produces ret int
static GCRegistry::Add< OcamlGC > B("ocaml", "ocaml 3.10-compatible GC")
uint32_t addECName(StringRef Name)
void setPdbDllVersion(uint16_t V)
void setPublicsStreamIndex(uint32_t Index)
void setFlags(uint16_t F)
void setGlobalsStreamIndex(uint32_t Index)
Allocate memory in an ever growing pool, as if by bump-pointer.
DbiStreamBuilder(msf::MSFBuilder &Msf)
print Print MemDeps of function
A Module instance is used to store all the information related to an LLVM module.
StringRef - Represent a constant reference to a string, i.e.
Error finalizeMsfLayout()
void setSymbolRecordStreamIndex(uint32_t Index)
void setPdbDllRbld(uint16_t R)
DbiStreamBuilder & operator=(const DbiStreamBuilder &)=delete
Lightweight error class with error context and mandatory checking.
void addSectionContrib(const SectionContrib &SC)
uint32_t calculateSerializedLength() const