summaryrefslogtreecommitdiffstats
path: root/llvm/lib/DebugInfo/CodeView/StringsAndChecksums.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/DebugInfo/CodeView/StringsAndChecksums.cpp')
-rw-r--r--llvm/lib/DebugInfo/CodeView/StringsAndChecksums.cpp28
1 files changed, 25 insertions, 3 deletions
diff --git a/llvm/lib/DebugInfo/CodeView/StringsAndChecksums.cpp b/llvm/lib/DebugInfo/CodeView/StringsAndChecksums.cpp
index 306af1d1ef6..85d9dbb8c7d 100644
--- a/llvm/lib/DebugInfo/CodeView/StringsAndChecksums.cpp
+++ b/llvm/lib/DebugInfo/CodeView/StringsAndChecksums.cpp
@@ -35,14 +35,36 @@ void StringsAndChecksumsRef::initializeStrings(
assert(SR.kind() == DebugSubsectionKind::StringTable);
assert(!Strings && "Found a string table even though we already have one!");
- OwnedStrings = llvm::make_unique<DebugStringTableSubsectionRef>();
+ OwnedStrings = std::make_shared<DebugStringTableSubsectionRef>();
consumeError(OwnedStrings->initialize(SR.getRecordData()));
Strings = OwnedStrings.get();
}
+void StringsAndChecksumsRef::reset() {
+ resetStrings();
+ resetChecksums();
+}
+
+void StringsAndChecksumsRef::resetStrings() {
+ OwnedStrings.reset();
+ Strings = nullptr;
+}
+
+void StringsAndChecksumsRef::resetChecksums() {
+ OwnedChecksums.reset();
+ Checksums = nullptr;
+}
+
+void StringsAndChecksumsRef::setStrings(
+ const DebugStringTableSubsectionRef &StringsRef) {
+ OwnedStrings = std::make_shared<DebugStringTableSubsectionRef>();
+ *OwnedStrings = StringsRef;
+ Strings = OwnedStrings.get();
+}
+
void StringsAndChecksumsRef::setChecksums(
const DebugChecksumsSubsectionRef &CS) {
- OwnedChecksums = llvm::make_unique<DebugChecksumsSubsectionRef>();
+ OwnedChecksums = std::make_shared<DebugChecksumsSubsectionRef>();
*OwnedChecksums = CS;
Checksums = OwnedChecksums.get();
}
@@ -53,7 +75,7 @@ void StringsAndChecksumsRef::initializeChecksums(
if (Checksums)
return;
- OwnedChecksums = llvm::make_unique<DebugChecksumsSubsectionRef>();
+ OwnedChecksums = std::make_shared<DebugChecksumsSubsectionRef>();
consumeError(OwnedChecksums->initialize(FCR.getRecordData()));
Checksums = OwnedChecksums.get();
}
OpenPOWER on IntegriCloud