From: Alexandre Ganea Date: Mon, 7 Jan 2019 13:53:16 +0000 (+0000) Subject: [CodeView] More appropriate name and type for a Microsoft precompiled headers paramet... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c5ca54a30fb6aeb221b0c0bbd74589576b5fed5c;p=llvm [CodeView] More appropriate name and type for a Microsoft precompiled headers parameter. NFC git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@350520 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/DebugInfo/CodeView/TypeStreamMerger.h b/include/llvm/DebugInfo/CodeView/TypeStreamMerger.h index a84f074237d..0b9f54ec60b 100644 --- a/include/llvm/DebugInfo/CodeView/TypeStreamMerger.h +++ b/include/llvm/DebugInfo/CodeView/TypeStreamMerger.h @@ -84,20 +84,20 @@ Error mergeTypeAndIdRecords(MergingTypeTableBuilder &DestIds, MergingTypeTableBuilder &DestTypes, SmallVectorImpl &SourceToDest, const CVTypeArray &IdsAndTypes, - Optional &EndPrecomp); + Optional &PCHSignature); Error mergeTypeAndIdRecords(GlobalTypeTableBuilder &DestIds, GlobalTypeTableBuilder &DestTypes, SmallVectorImpl &SourceToDest, const CVTypeArray &IdsAndTypes, ArrayRef Hashes, - Optional &EndPrecomp); + Optional &PCHSignature); Error mergeTypeRecords(GlobalTypeTableBuilder &Dest, SmallVectorImpl &SourceToDest, const CVTypeArray &Types, ArrayRef Hashes, - Optional &EndPrecomp); + Optional &PCHSignature); Error mergeIdRecords(GlobalTypeTableBuilder &Dest, ArrayRef Types, SmallVectorImpl &SourceToDest, diff --git a/lib/DebugInfo/CodeView/TypeStreamMerger.cpp b/lib/DebugInfo/CodeView/TypeStreamMerger.cpp index 803818226e5..bae11ce6a6a 100644 --- a/lib/DebugInfo/CodeView/TypeStreamMerger.cpp +++ b/lib/DebugInfo/CodeView/TypeStreamMerger.cpp @@ -77,8 +77,7 @@ public: // Local hashing entry points Error mergeTypesAndIds(MergingTypeTableBuilder &DestIds, MergingTypeTableBuilder &DestTypes, - const CVTypeArray &IdsAndTypes, - Optional &EP); + const CVTypeArray &IdsAndTypes, Optional &S); Error mergeIdRecords(MergingTypeTableBuilder &Dest, ArrayRef TypeSourceToDest, const CVTypeArray &Ids); @@ -90,14 +89,14 @@ public: GlobalTypeTableBuilder &DestTypes, const CVTypeArray &IdsAndTypes, ArrayRef Hashes, - Optional &EP); + Optional &S); Error mergeIdRecords(GlobalTypeTableBuilder &Dest, ArrayRef TypeSourceToDest, const CVTypeArray &Ids, ArrayRef Hashes); Error mergeTypeRecords(GlobalTypeTableBuilder &Dest, const CVTypeArray &Types, ArrayRef Hashes, - Optional &EP); + Optional &S); private: Error doit(const CVTypeArray &Types); @@ -197,7 +196,7 @@ private: /// its type indices. SmallVector RemapStorage; - Optional EndPrecomp; + Optional PCHSignature; }; } // end anonymous namespace @@ -275,12 +274,12 @@ Error TypeStreamMerger::mergeIdRecords(MergingTypeTableBuilder &Dest, Error TypeStreamMerger::mergeTypesAndIds(MergingTypeTableBuilder &DestIds, MergingTypeTableBuilder &DestTypes, const CVTypeArray &IdsAndTypes, - Optional &EP) { + Optional &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 Hashes, - Optional &EP) { + Optional &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 Hashes, - Optional &EP) { + Optional &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 &SourceToDest, const CVTypeArray &IdsAndTypes, - Optional &EndPrecomp) { + Optional &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 &SourceToDest, const CVTypeArray &IdsAndTypes, - ArrayRef Hashes, - Optional &EndPrecomp) { + ArrayRef Hashes, Optional &PCHSignature) { TypeStreamMerger M(SourceToDest); return M.mergeTypesAndIds(DestIds, DestTypes, IdsAndTypes, Hashes, - EndPrecomp); + PCHSignature); } Error llvm::codeview::mergeTypeRecords(GlobalTypeTableBuilder &Dest, SmallVectorImpl &SourceToDest, const CVTypeArray &Types, ArrayRef Hashes, - Optional &EndPrecomp) { + Optional &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 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(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/tools/llvm-readobj/COFFDumper.cpp b/tools/llvm-readobj/COFFDumper.cpp index a58e9d1a5b9..3e2626dad11 100644 --- a/tools/llvm-readobj/COFFDumper.cpp +++ b/tools/llvm-readobj/COFFDumper.cpp @@ -1248,9 +1248,9 @@ void COFFDumper::mergeCodeViewTypes(MergingTypeTableBuilder &CVIDs, error(object_error::parse_failed); } SmallVector SourceToDest; - Optional EndPrecomp; + Optional PCHSignature; if (auto EC = mergeTypeAndIdRecords(CVIDs, CVTypes, SourceToDest, Types, - EndPrecomp)) + PCHSignature)) return error(std::move(EC)); } }