69 switch (Annot.OpCode) {
70 case BinaryAnnotationsOpCode::CodeOffset:
71 case BinaryAnnotationsOpCode::ChangeCodeOffset:
72 case BinaryAnnotationsOpCode::ChangeCodeOffsetAndLineOffset:
77 case BinaryAnnotationsOpCode::ChangeCodeLength:
83 case BinaryAnnotationsOpCode::ChangeCodeLengthAndCodeOffset:
96std::unique_ptr<IPDBEnumSymbols>
111 std::vector<SymIndexId> Frames;
115 while (Start !=
End) {
118 for (; Start !=
End; ++Start) {
119 if (Start->kind() != S_INLINESITE)
123 cantFail(SymbolDeserializer::deserializeAs<InlineSiteSym>(*Start));
128 Frames.insert(Frames.begin(), Id);
137 Start = Syms.
at(IS.
End);
146 return std::make_unique<NativeEnumSymbols>(
Session, std::move(Frames));
static bool inlineSiteContainsAddress(InlineSiteSym &IS, uint32_t OffsetInFunc)
Tagged union holding either a T or a Error.
Error takeError()
Take ownership of the stored error.
Iterator at(uint32_t Offset) const
given an offset into the array's underlying stream, return an iterator to the record at that offset.
iterator_range< BinaryAnnotationIterator > annotations() const
NativeFunctionSymbol(NativeSession &Session, SymIndexId Id, const codeview::ProcSym &Sym, uint32_t RecordOffset)
uint32_t getAddressSection() const override
std::unique_ptr< IPDBEnumSymbols > findInlineFramesByVA(uint64_t VA) const override
uint64_t getVirtualAddress() const override
void dump(raw_ostream &OS, int Indent, PdbSymbolIdField ShowIdFields, PdbSymbolIdField RecurseIdFields) const override
uint32_t getAddressOffset() const override
~NativeFunctionSymbol() override
std::string getName() const override
const codeview::ProcSym Sym
uint64_t getLength() const override
uint32_t getRelativeVirtualAddress() const override
void dump(raw_ostream &OS, int Indent, PdbSymbolIdField ShowIdFields, PdbSymbolIdField RecurseIdFields) const override
SymbolCache & getSymbolCache()
uint64_t getVAFromSectOffset(uint32_t Section, uint32_t Offset) const
uint32_t getRVAFromSectOffset(uint32_t Section, uint32_t Offset) const
Expected< ModuleDebugStreamRef > getModuleDebugStream(uint32_t Index) const
bool moduleIndexForVA(uint64_t VA, uint16_t &ModuleIndex) const
SymIndexId getOrCreateInlineSymbol(codeview::InlineSiteSym Sym, uint64_t ParentAddr, uint16_t Modi, uint32_t RecordOffset) const
This class implements an extremely fast bulk output stream that can only output to a stream.
void dumpSymbolField(raw_ostream &OS, StringRef Name, T Value, int Indent)
PDB_SymType
These values correspond to the SymTagEnum enumeration, and are documented here: https://msdn....
This is an optimization pass for GlobalISel generic memory operations.
void cantFail(Error Err, const char *Msg=nullptr)
Report a fatal error if Err is a failure value.
void consumeError(Error Err)
Consume a Error without doing anything.