summaryrefslogtreecommitdiff
path: root/libunwindstack/include/unwindstack/RegsMips64.h
diff options
context:
space:
mode:
authorYabin Cui <yabinc@google.com>2018-03-14 18:16:22 -0700
committerChristopher Ferris <cferris@google.com>2018-03-16 23:38:07 -0700
commit28eeb35529bc6ac2453d6f713131883ecba1dc15 (patch)
tree3ba5533a755b8ce04574dc8d9bb30f940814aedf /libunwindstack/include/unwindstack/RegsMips64.h
parent088fd9fa172e9b2463882981f0449ed42fd998c1 (diff)
downloadunwinding-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.h12
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);