diff options
Diffstat (limited to 'lib/DebugInfo/CodeView/StringsAndChecksums.cpp')
| -rw-r--r-- | lib/DebugInfo/CodeView/StringsAndChecksums.cpp | 55 | 
1 files changed, 55 insertions, 0 deletions
| diff --git a/lib/DebugInfo/CodeView/StringsAndChecksums.cpp b/lib/DebugInfo/CodeView/StringsAndChecksums.cpp new file mode 100644 index 000000000000..928bf8c94f73 --- /dev/null +++ b/lib/DebugInfo/CodeView/StringsAndChecksums.cpp @@ -0,0 +1,55 @@ +//===- StringsAndChecksums.cpp ----------------------------------*- C++ -*-===// +// +//                     The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "llvm/DebugInfo/CodeView/StringsAndChecksums.h" +#include "llvm/DebugInfo/CodeView/DebugChecksumsSubsection.h" +#include "llvm/DebugInfo/CodeView/DebugStringTableSubsection.h" +#include "llvm/DebugInfo/CodeView/DebugSubsectionRecord.h" + +using namespace llvm; +using namespace llvm::codeview; + +StringsAndChecksumsRef::StringsAndChecksumsRef() {} + +StringsAndChecksumsRef::StringsAndChecksumsRef( +    const DebugStringTableSubsectionRef &Strings) +    : Strings(&Strings) {} + +StringsAndChecksumsRef::StringsAndChecksumsRef( +    const DebugStringTableSubsectionRef &Strings, +    const DebugChecksumsSubsectionRef &Checksums) +    : Strings(&Strings), Checksums(&Checksums) {} + +void StringsAndChecksumsRef::initializeStrings( +    const DebugSubsectionRecord &SR) { +  assert(SR.kind() == DebugSubsectionKind::StringTable); +  assert(!Strings && "Found a string table even though we already have one!"); + +  OwnedStrings = llvm::make_unique<DebugStringTableSubsectionRef>(); +  consumeError(OwnedStrings->initialize(SR.getRecordData())); +  Strings = OwnedStrings.get(); +} + +void StringsAndChecksumsRef::setChecksums( +    const DebugChecksumsSubsectionRef &CS) { +  OwnedChecksums = llvm::make_unique<DebugChecksumsSubsectionRef>(); +  *OwnedChecksums = CS; +  Checksums = OwnedChecksums.get(); +} + +void StringsAndChecksumsRef::initializeChecksums( +    const DebugSubsectionRecord &FCR) { +  assert(FCR.kind() == DebugSubsectionKind::FileChecksums); +  if (Checksums) +    return; + +  OwnedChecksums = llvm::make_unique<DebugChecksumsSubsectionRef>(); +  consumeError(OwnedChecksums->initialize(FCR.getRecordData())); +  Checksums = OwnedChecksums.get(); +} | 
