diff options
author | Christopher Ferris <cferris@google.com> | 2017-07-14 10:37:19 -0700 |
---|---|---|
committer | Christopher Ferris <cferris@google.com> | 2017-07-14 12:20:23 -0700 |
commit | 81e61fa6964dfa45301b555ea1ae000bb97df07b (patch) | |
tree | 3b5a8dbdb189045d23108e26e6d0a2f4ca11940e /libunwindstack/Memory.cpp | |
parent | c29ea6ea7802b15fa4eb07b02a4e73b599b3cc21 (diff) | |
download | unwinding-81e61fa6964dfa45301b555ea1ae000bb97df07b.tar.gz |
Make the library usable as a library.
- Add namespace unwindstack everywhere so that it's easier for other
code to use the library.
- Move some of the header files into include/unwindstack so that they
can be exposed.
- Modify the headers so that only a limited number need to be exposed.
- Update the tools to use the new headers.
- Add a GetLoadBias() call on the Elf object. This prevents the need
to get the interface object out of the Elf object.
- Move the GetRelPc() call out of the Reg class, to the Elf class. It's
not always the case that a Reg object will be around when you want to
get a relative pc. The tests for this moved to ElfTest.cpp.
Bug: 23762183
Test: Unit tests pass.
Change-Id: Iac609dac1dd90ed83d1a1e24ff2579c96c023bc3
Diffstat (limited to 'libunwindstack/Memory.cpp')
-rw-r--r-- | libunwindstack/Memory.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/libunwindstack/Memory.cpp b/libunwindstack/Memory.cpp index 9e46509..8c36055 100644 --- a/libunwindstack/Memory.cpp +++ b/libunwindstack/Memory.cpp @@ -28,7 +28,11 @@ #include <android-base/unique_fd.h> -#include "Memory.h" +#include <unwindstack/Memory.h> + +#include "Check.h" + +namespace unwindstack { bool Memory::ReadString(uint64_t addr, std::string* string, uint64_t max_read) { string->clear(); @@ -245,6 +249,11 @@ bool MemoryOffline::Read(uint64_t addr, void* dst, size_t size) { return true; } +MemoryRange::MemoryRange(Memory* memory, uint64_t begin, uint64_t end) + : memory_(memory), begin_(begin), length_(end - begin) { + CHECK(end > begin); +} + bool MemoryRange::Read(uint64_t addr, void* dst, size_t size) { uint64_t max_read; if (__builtin_add_overflow(addr, size, &max_read) || max_read > length_) { @@ -253,3 +262,5 @@ bool MemoryRange::Read(uint64_t addr, void* dst, size_t size) { // The check above guarantees that addr + begin_ will not overflow. return memory_->Read(addr + begin_, dst, size); } + +} // namespace unwindstack |