diff options
author | Sean Callanan <scallanan@apple.com> | 2014-12-09 21:18:59 +0000 |
---|---|---|
committer | Sean Callanan <scallanan@apple.com> | 2014-12-09 21:18:59 +0000 |
commit | 7375f3e30e3e8ecd3d03febeff780936677b7e18 (patch) | |
tree | 602cf68f6c351fe9d10583f99e93ee2e58c3db53 /lldb/source/Core/DataExtractor.cpp | |
parent | 21909e35cb06b7c0e2181254299817fdecbcad62 (diff) | |
download | bcm5719-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.cpp | 26 |
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()); +} + |