diff options
| author | Alexandre Ganea <alexandre.ganea@ubisoft.com> | 2019-01-07 13:53:16 +0000 |
|---|---|---|
| committer | Alexandre Ganea <alexandre.ganea@ubisoft.com> | 2019-01-07 13:53:16 +0000 |
| commit | 90f4b94da3bc48c6645fa15d8060f72d9a443449 (patch) | |
| tree | 631e255bb843124fb7bec230b8e0ae1555f87eaf | |
| parent | 76ab9d4589fc59c7f00f512ae86c73303ccb0f4a (diff) | |
| download | bcm5719-llvm-90f4b94da3bc48c6645fa15d8060f72d9a443449.tar.gz bcm5719-llvm-90f4b94da3bc48c6645fa15d8060f72d9a443449.zip | |
[CodeView] More appropriate name and type for a Microsoft precompiled headers parameter. NFC
llvm-svn: 350520
| -rw-r--r-- | lld/COFF/InputFiles.h | 2 | ||||
| -rw-r--r-- | lld/COFF/PDB.cpp | 10 | ||||
| -rw-r--r-- | llvm/include/llvm/DebugInfo/CodeView/TypeStreamMerger.h | 6 | ||||
| -rw-r--r-- | llvm/lib/DebugInfo/CodeView/TypeStreamMerger.cpp | 42 | ||||
| -rw-r--r-- | llvm/tools/llvm-readobj/COFFDumper.cpp | 4 |
5 files changed, 32 insertions, 32 deletions
diff --git a/lld/COFF/InputFiles.h b/lld/COFF/InputFiles.h index 9e156078422..ec802f2d030 100644 --- a/lld/COFF/InputFiles.h +++ b/lld/COFF/InputFiles.h @@ -154,7 +154,7 @@ public: // When using Microsoft precompiled headers, this is the PCH's key. // The same key is used by both the precompiled object, and objects using the // precompiled object. Any difference indicates out-of-date objects. - llvm::Optional<llvm::codeview::EndPrecompRecord> EndPrecomp; + llvm::Optional<uint32_t> PCHSignature; private: void initializeChunks(); diff --git a/lld/COFF/PDB.cpp b/lld/COFF/PDB.cpp index c6e803737b3..10b3fc1108d 100644 --- a/lld/COFF/PDB.cpp +++ b/lld/COFF/PDB.cpp @@ -494,13 +494,13 @@ PDBLinker::mergeDebugT(ObjFile *File, CVIndexMap *ObjectIndexMap) { if (auto Err = mergeTypeAndIdRecords(GlobalIDTable, GlobalTypeTable, ObjectIndexMap->TPIMap, Types, Hashes, - File->EndPrecomp)) + File->PCHSignature)) fatal("codeview::mergeTypeAndIdRecords failed: " + toString(std::move(Err))); } else { if (auto Err = mergeTypeAndIdRecords(IDTable, TypeTable, ObjectIndexMap->TPIMap, - Types, File->EndPrecomp)) + Types, File->PCHSignature)) fatal("codeview::mergeTypeAndIdRecords failed: " + toString(std::move(Err))); } @@ -632,7 +632,7 @@ PDBLinker::maybeMergeTypeServerPDB(ObjFile *File, const CVType &FirstType) { auto IpiHashes = GloballyHashedType::hashIds(ExpectedIpi->typeArray(), TpiHashes); - Optional<EndPrecompRecord> EndPrecomp; + Optional<uint32_t> EndPrecomp; // Merge TPI first, because the IPI stream will reference type indices. if (auto Err = mergeTypeRecords(GlobalTypeTable, IndexMap.TPIMap, ExpectedTpi->typeArray(), TpiHashes, EndPrecomp)) @@ -744,10 +744,10 @@ PDBLinker::aquirePrecompObj(ObjFile *File, PrecompRecord Precomp) { addObjFile(PrecompFile, &IndexMap); - if (!PrecompFile->EndPrecomp) + if (!PrecompFile->PCHSignature) fatal(PrecompFile->getName() + " is not a precompiled headers object"); - if (Precomp.getSignature() != PrecompFile->EndPrecomp->getSignature()) + if (Precomp.getSignature() != PrecompFile->PCHSignature.getValueOr(0)) return createFileError( Precomp.getPrecompFilePath().str(), make_error<pdb::PDBError>(pdb::pdb_error_code::signature_out_of_date)); diff --git a/llvm/include/llvm/DebugInfo/CodeView/TypeStreamMerger.h b/llvm/include/llvm/DebugInfo/CodeView/TypeStreamMerger.h index a84f074237d..0b9f54ec60b 100644 --- a/llvm/include/llvm/DebugInfo/CodeView/TypeStreamMerger.h +++ b/llvm/include/llvm/DebugInfo/CodeView/TypeStreamMerger.h @@ -84,20 +84,20 @@ Error mergeTypeAndIdRecords(MergingTypeTableBuilder &DestIds, MergingTypeTableBuilder &DestTypes, SmallVectorImpl<TypeIndex> &SourceToDest, const CVTypeArray &IdsAndTypes, - Optional<EndPrecompRecord> &EndPrecomp); + Optional<uint32_t> &PCHSignature); Error mergeTypeAndIdRecords(GlobalTypeTableBuilder &DestIds, GlobalTypeTableBuilder &DestTypes, SmallVectorImpl<TypeIndex> &SourceToDest, const CVTypeArray &IdsAndTypes, ArrayRef<GloballyHashedType> Hashes, - Optional<EndPrecompRecord> &EndPrecomp); + Optional<uint32_t> &PCHSignature); Error mergeTypeRecords(GlobalTypeTableBuilder &Dest, SmallVectorImpl<TypeIndex> &SourceToDest, const CVTypeArray &Types, ArrayRef<GloballyHashedType> Hashes, - Optional<EndPrecompRecord> &EndPrecomp); + Optional<uint32_t> &PCHSignature); Error mergeIdRecords(GlobalTypeTableBuilder &Dest, ArrayRef<TypeIndex> Types, SmallVectorImpl<TypeIndex> &SourceToDest, diff --git a/llvm/lib/DebugInfo/CodeView/TypeStreamMerger.cpp b/llvm/lib/DebugInfo/CodeView/TypeStreamMerger.cpp index 803818226e5..bae11ce6a6a 100644 --- a/llvm/lib/DebugInfo/CodeView/TypeStreamMerger.cpp +++ b/llvm/lib/DebugInfo/CodeView/TypeStreamMerger.cpp @@ -77,8 +77,7 @@ public: // Local hashing entry points Error mergeTypesAndIds(MergingTypeTableBuilder &DestIds, MergingTypeTableBuilder &DestTypes, - const CVTypeArray &IdsAndTypes, - Optional<EndPrecompRecord> &EP); + const CVTypeArray &IdsAndTypes, Optional<uint32_t> &S); Error mergeIdRecords(MergingTypeTableBuilder &Dest, ArrayRef<TypeIndex> TypeSourceToDest, const CVTypeArray &Ids); @@ -90,14 +89,14 @@ public: GlobalTypeTableBuilder &DestTypes, const CVTypeArray &IdsAndTypes, ArrayRef<GloballyHashedType> Hashes, - Optional<EndPrecompRecord> &EP); + Optional<uint32_t> &S); Error mergeIdRecords(GlobalTypeTableBuilder &Dest, ArrayRef<TypeIndex> TypeSourceToDest, const CVTypeArray &Ids, ArrayRef<GloballyHashedType> Hashes); Error mergeTypeRecords(GlobalTypeTableBuilder &Dest, const CVTypeArray &Types, ArrayRef<GloballyHashedType> Hashes, - Optional<EndPrecompRecord> &EP); + Optional<uint32_t> &S); private: Error doit(const CVTypeArray &Types); @@ -197,7 +196,7 @@ private: /// its type indices. SmallVector<uint8_t, 256> RemapStorage; - Optional<EndPrecompRecord> EndPrecomp; + Optional<uint32_t> PCHSignature; }; } // end anonymous namespace @@ -275,12 +274,12 @@ Error TypeStreamMerger::mergeIdRecords(MergingTypeTableBuilder &Dest, Error TypeStreamMerger::mergeTypesAndIds(MergingTypeTableBuilder &DestIds, MergingTypeTableBuilder &DestTypes, const CVTypeArray &IdsAndTypes, - Optional<EndPrecompRecord> &EP) { + Optional<uint32_t> &S) { DestIdStream = &DestIds; DestTypeStream = &DestTypes; UseGlobalHashes = false; auto Err = doit(IdsAndTypes); - EP = EndPrecomp; + S = PCHSignature; return Err; } @@ -288,12 +287,12 @@ Error TypeStreamMerger::mergeTypesAndIds(MergingTypeTableBuilder &DestIds, Error TypeStreamMerger::mergeTypeRecords(GlobalTypeTableBuilder &Dest, const CVTypeArray &Types, ArrayRef<GloballyHashedType> Hashes, - Optional<EndPrecompRecord> &EP) { + Optional<uint32_t> &S) { DestGlobalTypeStream = &Dest; UseGlobalHashes = true; GlobalHashes = Hashes; auto Err = doit(Types); - EP = EndPrecomp; + S = PCHSignature; return Err; } @@ -313,13 +312,13 @@ Error TypeStreamMerger::mergeTypesAndIds(GlobalTypeTableBuilder &DestIds, GlobalTypeTableBuilder &DestTypes, const CVTypeArray &IdsAndTypes, ArrayRef<GloballyHashedType> Hashes, - Optional<EndPrecompRecord> &EP) { + Optional<uint32_t> &S) { DestGlobalIdStream = &DestIds; DestGlobalTypeStream = &DestTypes; UseGlobalHashes = true; GlobalHashes = Hashes; auto Err = doit(IdsAndTypes); - EP = EndPrecomp; + S = PCHSignature; return Err; } @@ -445,28 +444,27 @@ Error llvm::codeview::mergeIdRecords(MergingTypeTableBuilder &Dest, Error llvm::codeview::mergeTypeAndIdRecords( MergingTypeTableBuilder &DestIds, MergingTypeTableBuilder &DestTypes, SmallVectorImpl<TypeIndex> &SourceToDest, const CVTypeArray &IdsAndTypes, - Optional<EndPrecompRecord> &EndPrecomp) { + Optional<uint32_t> &PCHSignature) { TypeStreamMerger M(SourceToDest); - return M.mergeTypesAndIds(DestIds, DestTypes, IdsAndTypes, EndPrecomp); + return M.mergeTypesAndIds(DestIds, DestTypes, IdsAndTypes, PCHSignature); } Error llvm::codeview::mergeTypeAndIdRecords( GlobalTypeTableBuilder &DestIds, GlobalTypeTableBuilder &DestTypes, SmallVectorImpl<TypeIndex> &SourceToDest, const CVTypeArray &IdsAndTypes, - ArrayRef<GloballyHashedType> Hashes, - Optional<EndPrecompRecord> &EndPrecomp) { + ArrayRef<GloballyHashedType> Hashes, Optional<uint32_t> &PCHSignature) { TypeStreamMerger M(SourceToDest); return M.mergeTypesAndIds(DestIds, DestTypes, IdsAndTypes, Hashes, - EndPrecomp); + PCHSignature); } Error llvm::codeview::mergeTypeRecords(GlobalTypeTableBuilder &Dest, SmallVectorImpl<TypeIndex> &SourceToDest, const CVTypeArray &Types, ArrayRef<GloballyHashedType> Hashes, - Optional<EndPrecompRecord> &EndPrecomp) { + Optional<uint32_t> &PCHSignature) { TypeStreamMerger M(SourceToDest); - return M.mergeTypeRecords(Dest, Types, Hashes, EndPrecomp); + return M.mergeTypeRecords(Dest, Types, Hashes, PCHSignature); } Error llvm::codeview::mergeIdRecords(GlobalTypeTableBuilder &Dest, @@ -483,11 +481,13 @@ Expected<bool> TypeStreamMerger::shouldRemapType(const CVType &Type) { // signature, through EndPrecompRecord. This is done here for performance // reasons, to avoid re-parsing the Types stream. if (Type.kind() == LF_ENDPRECOMP) { - assert(!EndPrecomp); - EndPrecomp.emplace(); + EndPrecompRecord EP; if (auto EC = TypeDeserializer::deserializeAs(const_cast<CVType &>(Type), - EndPrecomp.getValue())) + EP)) return joinErrors(std::move(EC), errorCorruptRecord()); + if (PCHSignature.hasValue()) + return errorCorruptRecord(); + PCHSignature.emplace(EP.getSignature()); return false; } return true; diff --git a/llvm/tools/llvm-readobj/COFFDumper.cpp b/llvm/tools/llvm-readobj/COFFDumper.cpp index a58e9d1a5b9..3e2626dad11 100644 --- a/llvm/tools/llvm-readobj/COFFDumper.cpp +++ b/llvm/tools/llvm-readobj/COFFDumper.cpp @@ -1248,9 +1248,9 @@ void COFFDumper::mergeCodeViewTypes(MergingTypeTableBuilder &CVIDs, error(object_error::parse_failed); } SmallVector<TypeIndex, 128> SourceToDest; - Optional<EndPrecompRecord> EndPrecomp; + Optional<uint32_t> PCHSignature; if (auto EC = mergeTypeAndIdRecords(CVIDs, CVTypes, SourceToDest, Types, - EndPrecomp)) + PCHSignature)) return error(std::move(EC)); } } |

