diff options
Diffstat (limited to 'libunwindstack/Memory.h')
-rw-r--r-- | libunwindstack/Memory.h | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/libunwindstack/Memory.h b/libunwindstack/Memory.h index 5ab031dd0..c5316a1d0 100644 --- a/libunwindstack/Memory.h +++ b/libunwindstack/Memory.h @@ -22,10 +22,7 @@ #include <unistd.h> #include <string> - -#include <android-base/unique_fd.h> - -constexpr bool kMemoryStatsEnabled = true; +#include <vector> class Memory { public: @@ -50,15 +47,34 @@ class Memory { } }; +class MemoryBuffer : public Memory { + public: + MemoryBuffer() = default; + virtual ~MemoryBuffer() = default; + + bool Read(uint64_t addr, void* dst, size_t size) override; + + uint8_t* GetPtr(size_t offset); + + void Resize(size_t size) { raw_.resize(size); } + + uint64_t Size() { return raw_.size(); } + + private: + std::vector<uint8_t> raw_; +}; + class MemoryFileAtOffset : public Memory { public: MemoryFileAtOffset() = default; virtual ~MemoryFileAtOffset(); - bool Init(const std::string& file, uint64_t offset); + bool Init(const std::string& file, uint64_t offset, uint64_t size = UINT64_MAX); bool Read(uint64_t addr, void* dst, size_t size) override; + void Clear(); + protected: size_t size_ = 0; size_t offset_ = 0; |