003 File Manager
Current Path:
/usr/src/contrib/llvm-project/llvm/lib/DebugInfo/PDB/Native
usr
/
src
/
contrib
/
llvm-project
/
llvm
/
lib
/
DebugInfo
/
PDB
/
Native
/
📁
..
📄
DbiModuleDescriptor.cpp
(2.5 KB)
📄
DbiModuleDescriptorBuilder.cpp
(6.63 KB)
📄
DbiModuleList.cpp
(8.3 KB)
📄
DbiStream.cpp
(12.8 KB)
📄
DbiStreamBuilder.cpp
(14.82 KB)
📄
EnumTables.cpp
(1.33 KB)
📄
GSIStreamBuilder.cpp
(17.23 KB)
📄
GlobalsStream.cpp
(6.56 KB)
📄
Hash.cpp
(2.39 KB)
📄
HashTable.cpp
(2.55 KB)
📄
InfoStream.cpp
(3.94 KB)
📄
InfoStreamBuilder.cpp
(2.67 KB)
📄
InjectedSourceStream.cpp
(2.31 KB)
📄
ModuleDebugStream.cpp
(4.74 KB)
📄
NamedStreamMap.cpp
(4.2 KB)
📄
NativeCompilandSymbol.cpp
(2.22 KB)
📄
NativeEnumGlobals.cpp
(1.87 KB)
📄
NativeEnumInjectedSources.cpp
(4.05 KB)
📄
NativeEnumLineNumbers.cpp
(1.44 KB)
📄
NativeEnumModules.cpp
(1.36 KB)
📄
NativeEnumTypes.cpp
(2.62 KB)
📄
NativeExeSymbol.cpp
(3.25 KB)
📄
NativeFunctionSymbol.cpp
(2.12 KB)
📄
NativeLineNumber.cpp
(1.88 KB)
📄
NativePublicSymbol.cpp
(1.92 KB)
📄
NativeRawSymbol.cpp
(14.98 KB)
📄
NativeSession.cpp
(12.36 KB)
📄
NativeSourceFile.cpp
(1.47 KB)
📄
NativeSymbolEnumerator.cpp
(4.24 KB)
📄
NativeTypeArray.cpp
(2.6 KB)
📄
NativeTypeBuiltin.cpp
(1.67 KB)
📄
NativeTypeEnum.cpp
(12.55 KB)
📄
NativeTypeFunctionSig.cpp
(7.3 KB)
📄
NativeTypePointer.cpp
(6.41 KB)
📄
NativeTypeTypedef.cpp
(1.05 KB)
📄
NativeTypeUDT.cpp
(6.93 KB)
📄
NativeTypeVTShape.cpp
(1.42 KB)
📄
PDBFile.cpp
(16.2 KB)
📄
PDBFileBuilder.cpp
(11 KB)
📄
PDBStringTable.cpp
(4.53 KB)
📄
PDBStringTableBuilder.cpp
(6.88 KB)
📄
PublicsStream.cpp
(3.89 KB)
📄
RawError.cpp
(2.13 KB)
📄
SymbolCache.cpp
(22.39 KB)
📄
SymbolStream.cpp
(1.4 KB)
📄
TpiHashing.cpp
(4.32 KB)
📄
TpiStream.cpp
(7.85 KB)
📄
TpiStreamBuilder.cpp
(6.32 KB)
Editing: InfoStream.cpp
//===- InfoStream.cpp - PDB Info Stream (Stream 1) Access -------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #include "llvm/DebugInfo/PDB/Native/InfoStream.h" #include "llvm/ADT/BitVector.h" #include "llvm/ADT/SmallVector.h" #include "llvm/DebugInfo/PDB/Native/RawConstants.h" #include "llvm/DebugInfo/PDB/Native/RawError.h" #include "llvm/DebugInfo/PDB/Native/RawTypes.h" #include "llvm/Support/BinaryStreamReader.h" using namespace llvm; using namespace llvm::codeview; using namespace llvm::msf; using namespace llvm::pdb; InfoStream::InfoStream(std::unique_ptr<BinaryStream> Stream) : Stream(std::move(Stream)), Header(nullptr) {} Error InfoStream::reload() { BinaryStreamReader Reader(*Stream); if (auto EC = Reader.readObject(Header)) return joinErrors( std::move(EC), make_error<RawError>(raw_error_code::corrupt_file, "PDB Stream does not contain a header.")); switch (Header->Version) { case PdbImplVC70: case PdbImplVC80: case PdbImplVC110: case PdbImplVC140: break; default: return make_error<RawError>(raw_error_code::corrupt_file, "Unsupported PDB stream version."); } uint32_t Offset = Reader.getOffset(); if (auto EC = NamedStreams.load(Reader)) return EC; uint32_t NewOffset = Reader.getOffset(); NamedStreamMapByteSize = NewOffset - Offset; Reader.setOffset(Offset); if (auto EC = Reader.readSubstream(SubNamedStreams, NamedStreamMapByteSize)) return EC; bool Stop = false; while (!Stop && !Reader.empty()) { PdbRaw_FeatureSig Sig; if (auto EC = Reader.readEnum(Sig)) return EC; // Since this value comes from a file, it's possible we have some strange // value which doesn't correspond to any value. We don't want to warn on // -Wcovered-switch-default in this case, so switch on the integral value // instead of the enumeration value. switch (uint32_t(Sig)) { case uint32_t(PdbRaw_FeatureSig::VC110): // No other flags for VC110 PDB. Stop = true; LLVM_FALLTHROUGH; case uint32_t(PdbRaw_FeatureSig::VC140): Features |= PdbFeatureContainsIdStream; break; case uint32_t(PdbRaw_FeatureSig::NoTypeMerge): Features |= PdbFeatureNoTypeMerging; break; case uint32_t(PdbRaw_FeatureSig::MinimalDebugInfo): Features |= PdbFeatureMinimalDebugInfo; break; default: continue; } FeatureSignatures.push_back(Sig); } return Error::success(); } uint32_t InfoStream::getStreamSize() const { return Stream->getLength(); } Expected<uint32_t> InfoStream::getNamedStreamIndex(llvm::StringRef Name) const { uint32_t Result; if (!NamedStreams.get(Name, Result)) return make_error<RawError>(raw_error_code::no_stream); return Result; } StringMap<uint32_t> InfoStream::named_streams() const { return NamedStreams.entries(); } bool InfoStream::containsIdStream() const { return !!(Features & PdbFeatureContainsIdStream); } PdbRaw_ImplVer InfoStream::getVersion() const { return static_cast<PdbRaw_ImplVer>(uint32_t(Header->Version)); } uint32_t InfoStream::getSignature() const { return uint32_t(Header->Signature); } uint32_t InfoStream::getAge() const { return uint32_t(Header->Age); } GUID InfoStream::getGuid() const { return Header->Guid; } uint32_t InfoStream::getNamedStreamMapByteSize() const { return NamedStreamMapByteSize; } PdbRaw_Features InfoStream::getFeatures() const { return Features; } ArrayRef<PdbRaw_FeatureSig> InfoStream::getFeatureSignatures() const { return FeatureSignatures; } const NamedStreamMap &InfoStream::getNamedStreams() const { return NamedStreams; } BinarySubstreamRef InfoStream::getNamedStreamsBuffer() const { return SubNamedStreams; }
Upload File
Create Folder