1a8cfc29cSZachary Turner //===- StringsAndChecksums.cpp ----------------------------------*- C++ -*-===// 2a8cfc29cSZachary Turner // 3a8cfc29cSZachary Turner // The LLVM Compiler Infrastructure 4a8cfc29cSZachary Turner // 5a8cfc29cSZachary Turner // This file is distributed under the University of Illinois Open Source 6a8cfc29cSZachary Turner // License. See LICENSE.TXT for details. 7a8cfc29cSZachary Turner // 8a8cfc29cSZachary Turner //===----------------------------------------------------------------------===// 9a8cfc29cSZachary Turner 10a8cfc29cSZachary Turner #include "llvm/DebugInfo/CodeView/StringsAndChecksums.h" 11a8cfc29cSZachary Turner #include "llvm/DebugInfo/CodeView/DebugChecksumsSubsection.h" 12a8cfc29cSZachary Turner #include "llvm/DebugInfo/CodeView/DebugStringTableSubsection.h" 13a8cfc29cSZachary Turner #include "llvm/DebugInfo/CodeView/DebugSubsectionRecord.h" 14a8cfc29cSZachary Turner 15a8cfc29cSZachary Turner using namespace llvm; 16a8cfc29cSZachary Turner using namespace llvm::codeview; 17a8cfc29cSZachary Turner 18a8cfc29cSZachary Turner StringsAndChecksumsRef::StringsAndChecksumsRef() {} 19a8cfc29cSZachary Turner 20a8cfc29cSZachary Turner StringsAndChecksumsRef::StringsAndChecksumsRef( 21a8cfc29cSZachary Turner const DebugStringTableSubsectionRef &Strings) 22a8cfc29cSZachary Turner : Strings(&Strings) {} 23a8cfc29cSZachary Turner 24a8cfc29cSZachary Turner StringsAndChecksumsRef::StringsAndChecksumsRef( 25a8cfc29cSZachary Turner const DebugStringTableSubsectionRef &Strings, 26a8cfc29cSZachary Turner const DebugChecksumsSubsectionRef &Checksums) 27a8cfc29cSZachary Turner : Strings(&Strings), Checksums(&Checksums) {} 28a8cfc29cSZachary Turner 29a8cfc29cSZachary Turner void StringsAndChecksumsRef::initializeStrings( 30a8cfc29cSZachary Turner const DebugSubsectionRecord &SR) { 31a8cfc29cSZachary Turner assert(SR.kind() == DebugSubsectionKind::StringTable); 32a8cfc29cSZachary Turner assert(!Strings && "Found a string table even though we already have one!"); 33a8cfc29cSZachary Turner 34a8cfc29cSZachary Turner OwnedStrings = llvm::make_unique<DebugStringTableSubsectionRef>(); 35a8cfc29cSZachary Turner consumeError(OwnedStrings->initialize(SR.getRecordData())); 36a8cfc29cSZachary Turner Strings = OwnedStrings.get(); 37a8cfc29cSZachary Turner } 38a8cfc29cSZachary Turner 39*4e950647SZachary Turner void StringsAndChecksumsRef::setChecksums( 40*4e950647SZachary Turner const DebugChecksumsSubsectionRef &CS) { 41*4e950647SZachary Turner OwnedChecksums = llvm::make_unique<DebugChecksumsSubsectionRef>(); 42*4e950647SZachary Turner *OwnedChecksums = CS; 43*4e950647SZachary Turner Checksums = OwnedChecksums.get(); 44*4e950647SZachary Turner } 45*4e950647SZachary Turner 46a8cfc29cSZachary Turner void StringsAndChecksumsRef::initializeChecksums( 47a8cfc29cSZachary Turner const DebugSubsectionRecord &FCR) { 48a8cfc29cSZachary Turner assert(FCR.kind() == DebugSubsectionKind::FileChecksums); 49a8cfc29cSZachary Turner if (Checksums) 50a8cfc29cSZachary Turner return; 51a8cfc29cSZachary Turner 52a8cfc29cSZachary Turner OwnedChecksums = llvm::make_unique<DebugChecksumsSubsectionRef>(); 53a8cfc29cSZachary Turner consumeError(OwnedChecksums->initialize(FCR.getRecordData())); 54a8cfc29cSZachary Turner Checksums = OwnedChecksums.get(); 55a8cfc29cSZachary Turner } 56