summaryrefslogtreecommitdiffstats
path: root/lldb/source/Core/DataExtractor.cpp
diff options
context:
space:
mode:
authorSean Callanan <scallanan@apple.com>2014-12-09 21:18:59 +0000
committerSean Callanan <scallanan@apple.com>2014-12-09 21:18:59 +0000
commit7375f3e30e3e8ecd3d03febeff780936677b7e18 (patch)
tree602cf68f6c351fe9d10583f99e93ee2e58c3db53 /lldb/source/Core/DataExtractor.cpp
parent21909e35cb06b7c0e2181254299817fdecbcad62 (diff)
downloadbcm5719-llvm-7375f3e30e3e8ecd3d03febeff780936677b7e18.tar.gz
bcm5719-llvm-7375f3e30e3e8ecd3d03febeff780936677b7e18.zip
Fixed ValueObject::UpdateValueIfNeeded to keep
track of the checksum of the object so we can track if it is modified. This fixes a testcase (test/expression_command/issue_11588) on OS X. Patch by Enrico Granata. llvm-svn: 223830
Diffstat (limited to 'lldb/source/Core/DataExtractor.cpp')
-rw-r--r--lldb/source/Core/DataExtractor.cpp26
1 files changed, 25 insertions, 1 deletions
diff --git a/lldb/source/Core/DataExtractor.cpp b/lldb/source/Core/DataExtractor.cpp
index 27dccfe5cf2..6e1d63095cf 100644
--- a/lldb/source/Core/DataExtractor.cpp
+++ b/lldb/source/Core/DataExtractor.cpp
@@ -22,7 +22,7 @@
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/Support/MathExtras.h"
-
+#include "llvm/Support/MD5.h"
#include "lldb/Core/DataBufferHeap.h"
#include "lldb/Core/DataExtractor.h"
@@ -2238,3 +2238,27 @@ DataExtractor::Append(void* buf, offset_t length)
return true;
}
+
+void
+DataExtractor::Checksum (llvm::SmallVectorImpl<uint8_t> &dest,
+ uint64_t max_data)
+{
+ if (max_data == 0)
+ max_data = GetByteSize();
+ else
+ max_data = std::min(max_data, GetByteSize());
+
+ llvm::MD5 md5;
+
+ const llvm::ArrayRef<uint8_t> data(GetDataStart(),max_data);
+ md5.update(data);
+
+ llvm::MD5::MD5Result result;
+ md5.final(result);
+
+ dest.resize(16);
+ std::copy(result,
+ result+16,
+ dest.begin());
+}
+
OpenPOWER on IntegriCloud