diff options
author | Yabin Cui <yabinc@google.com> | 2018-03-14 18:16:22 -0700 |
---|---|---|
committer | Christopher Ferris <cferris@google.com> | 2018-03-16 23:38:07 -0700 |
commit | 28eeb35529bc6ac2453d6f713131883ecba1dc15 (patch) | |
tree | 3ba5533a755b8ce04574dc8d9bb30f940814aedf /libunwindstack/include/unwindstack/RegsMips64.h | |
parent | 088fd9fa172e9b2463882981f0449ed42fd998c1 (diff) | |
download | unwinding-28eeb35529bc6ac2453d6f713131883ecba1dc15.tar.gz |
Always set the sp reg to the cfa for DWARF.
There are a few places where it is assumed that this register is
set to the cfa value when interpreting DWARF information.
Add a testcase for unwinding art_quick_osr_stub on ARM.
Bug: 73954823
Test: Ran libunwindstack/libbacktrace unit tests.
Test: Random debuggerd -b of process on a hikey.
Test: Ran the 137 art test on host.
Change-Id: Ida6ccdc38c3cfeea6b57fe861a0cc127b150b790
Diffstat (limited to 'libunwindstack/include/unwindstack/RegsMips64.h')
-rw-r--r-- | libunwindstack/include/unwindstack/RegsMips64.h | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/libunwindstack/include/unwindstack/RegsMips64.h b/libunwindstack/include/unwindstack/RegsMips64.h index 8c2d443..1de83ea 100644 --- a/libunwindstack/include/unwindstack/RegsMips64.h +++ b/libunwindstack/include/unwindstack/RegsMips64.h @@ -34,17 +34,21 @@ class RegsMips64 : public RegsImpl<uint64_t> { RegsMips64(); virtual ~RegsMips64() = default; - virtual ArchEnum Arch() override final; + ArchEnum Arch() override final; uint64_t GetPcAdjustment(uint64_t rel_pc, Elf* elf) override; - void SetFromRaw() override; - bool SetPcFromReturnAddress(Memory* process_memory) override; bool StepIfSignalHandler(uint64_t rel_pc, Elf* elf, Memory* process_memory) override; - virtual void IterateRegisters(std::function<void(const char*, uint64_t)>) override final; + void IterateRegisters(std::function<void(const char*, uint64_t)>) override final; + + uint64_t pc() override; + uint64_t sp() override; + + void set_pc(uint64_t pc) override; + void set_sp(uint64_t sp) override; static Regs* Read(void* data); |