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