diff options
author | Christopher Ferris <cferris@google.com> | 2018-04-03 16:03:28 -0700 |
---|---|---|
committer | Christopher Ferris <cferris@google.com> | 2018-04-03 18:37:52 -0700 |
commit | a0b5a8de9ae31e8f0908848763990548eacd47ae (patch) | |
tree | ebe9b1b20279d52f5a858be2ea54ca13ff6ce43f /libunwindstack/include/unwindstack | |
parent | 394d3a35738a0fe2706a4f4b24687d2e57d2b18c (diff) | |
download | unwinding-a0b5a8de9ae31e8f0908848763990548eacd47ae.tar.gz |
Add a MemoryOfflineBuffer object.
Use this for offline stack data so that it's not necessary to
copy any data around.
Add unit tests for the new object.
Bug: 77258731
Bug: 74354410
Test: Ran libunwindstack/libbacktrace unit tests.
Change-Id: I9b0f25d9520c96e64aedef5f295423c60ddb3488
Diffstat (limited to 'libunwindstack/include/unwindstack')
-rw-r--r-- | libunwindstack/include/unwindstack/Memory.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/libunwindstack/include/unwindstack/Memory.h b/libunwindstack/include/unwindstack/Memory.h index 19bce04..c0c07f4 100644 --- a/libunwindstack/include/unwindstack/Memory.h +++ b/libunwindstack/include/unwindstack/Memory.h @@ -151,6 +151,21 @@ class MemoryOffline : public Memory { std::unique_ptr<MemoryRange> memory_; }; +class MemoryOfflineBuffer : public Memory { + public: + MemoryOfflineBuffer(const uint8_t* data, uint64_t start, uint64_t end); + virtual ~MemoryOfflineBuffer() = default; + + void Reset(const uint8_t* data, uint64_t start, uint64_t end); + + size_t Read(uint64_t addr, void* dst, size_t size) override; + + private: + const uint8_t* data_; + uint64_t start_; + uint64_t end_; +}; + class MemoryOfflineParts : public Memory { public: MemoryOfflineParts() = default; |