Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ba535169 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Include PSTATE in tombstones on arm64."

parents dc2f874e bb2f941f
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -428,7 +428,7 @@ void dump_registers(log_t* log, unwindstack::Regs* regs) {
  std::vector<std::pair<std::string, uint64_t>> special_row;

#if defined(__arm__) || defined(__aarch64__)
  static constexpr const char* special_registers[] = {"ip", "lr", "sp", "pc"};
  static constexpr const char* special_registers[] = {"ip", "lr", "sp", "pc", "pst"};
#elif defined(__i386__)
  static constexpr const char* special_registers[] = {"ebp", "esp", "eip"};
#elif defined(__x86_64__)
+2 −0
Original line number Diff line number Diff line
@@ -103,6 +103,7 @@ void RegsArm64::IterateRegisters(std::function<void(const char*, uint64_t)> fn)
  fn("sp", regs_[ARM64_REG_SP]);
  fn("lr", regs_[ARM64_REG_LR]);
  fn("pc", regs_[ARM64_REG_PC]);
  fn("pst", regs_[ARM64_REG_PSTATE]);
}

Regs* RegsArm64::Read(void* remote_data) {
@@ -113,6 +114,7 @@ Regs* RegsArm64::Read(void* remote_data) {
  uint64_t* reg_data = reinterpret_cast<uint64_t*>(regs->RawData());
  reg_data[ARM64_REG_PC] = user->pc;
  reg_data[ARM64_REG_SP] = user->sp;
  reg_data[ARM64_REG_PSTATE] = user->pstate;
  return regs;
}

+1 −0
Original line number Diff line number Diff line
@@ -55,6 +55,7 @@ enum Arm64Reg : uint16_t {
  ARM64_REG_R30,
  ARM64_REG_R31,
  ARM64_REG_PC,
  ARM64_REG_PSTATE,
  ARM64_REG_LAST,

  ARM64_REG_SP = ARM64_REG_R31,
+1 −0
Original line number Diff line number Diff line
@@ -114,6 +114,7 @@ std::vector<Register> ExpectedRegisters<RegsArm64>() {
  result.push_back({"sp", ARM64_REG_SP});
  result.push_back({"lr", ARM64_REG_LR});
  result.push_back({"pc", ARM64_REG_PC});
  result.push_back({"pst", ARM64_REG_PSTATE});
  return result;
}