summaryrefslogtreecommitdiff
path: root/libunwindstack/include/unwindstack/JitDebug.h
diff options
context:
space:
mode:
authorDavid Srbecky <dsrbecky@google.com>2021-03-12 16:36:27 +0000
committerDavid Srbecky <dsrbecky@google.com>2021-03-17 19:43:19 +0000
commitfad04881a56fc8cae98dbf8d38f2e274effdcb40 (patch)
tree24f0e15f8fba32405db75a42635dac21f2f5955b /libunwindstack/include/unwindstack/JitDebug.h
parentcd5123b49f3cd86ce3a06ddb207932b4571491ed (diff)
downloadunwinding-fad04881a56fc8cae98dbf8d38f2e274effdcb40.tar.gz
Simplify JitDebug implementation with templates.
Reduce the amount of repeated code using templates. Test: libunwindstack_unit_test Change-Id: I92ab53b050bcb877974dff95496a1fc41cbb41c0
Diffstat (limited to 'libunwindstack/include/unwindstack/JitDebug.h')
-rw-r--r--libunwindstack/include/unwindstack/JitDebug.h26
1 files changed, 4 insertions, 22 deletions
diff --git a/libunwindstack/include/unwindstack/JitDebug.h b/libunwindstack/include/unwindstack/JitDebug.h
index d8c04e0..c4944d7 100644
--- a/libunwindstack/include/unwindstack/JitDebug.h
+++ b/libunwindstack/include/unwindstack/JitDebug.h
@@ -34,31 +34,13 @@ class Elf;
class Maps;
enum ArchEnum : uint8_t;
-class JitDebug : public Global {
+class JitDebug {
public:
- explicit JitDebug(std::shared_ptr<Memory>& memory);
- JitDebug(std::shared_ptr<Memory>& memory, std::vector<std::string>& search_libs);
- virtual ~JitDebug();
+ virtual ~JitDebug() {}
- Elf* Find(Maps* maps, uint64_t pc);
-
- private:
- void Init(Maps* maps);
-
- uint64_t (JitDebug::*read_descriptor_func_)(uint64_t) = nullptr;
- uint64_t (JitDebug::*read_entry_func_)(uint64_t*, uint64_t*) = nullptr;
-
- uint64_t ReadDescriptor32(uint64_t);
- uint64_t ReadDescriptor64(uint64_t);
-
- uint64_t ReadEntry32Pack(uint64_t* start, uint64_t* size);
- uint64_t ReadEntry32Pad(uint64_t* start, uint64_t* size);
- uint64_t ReadEntry64(uint64_t* start, uint64_t* size);
-
- bool ReadVariableData(uint64_t ptr_offset) override;
-
- void ProcessArch() override;
+ virtual Elf* Find(Maps* maps, uint64_t pc) = 0;
+ protected:
uint64_t entry_addr_ = 0;
bool initialized_ = false;
std::vector<Elf*> elf_list_;