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 Original line 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;
  std::vector<std::pair<std::string, uint64_t>> special_row;


#if defined(__arm__) || defined(__aarch64__)
#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__)
#elif defined(__i386__)
  static constexpr const char* special_registers[] = {"ebp", "esp", "eip"};
  static constexpr const char* special_registers[] = {"ebp", "esp", "eip"};
#elif defined(__x86_64__)
#elif defined(__x86_64__)
+2 −0
Original line number Original line 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("sp", regs_[ARM64_REG_SP]);
  fn("lr", regs_[ARM64_REG_LR]);
  fn("lr", regs_[ARM64_REG_LR]);
  fn("pc", regs_[ARM64_REG_PC]);
  fn("pc", regs_[ARM64_REG_PC]);
  fn("pst", regs_[ARM64_REG_PSTATE]);
}
}


Regs* RegsArm64::Read(void* remote_data) {
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());
  uint64_t* reg_data = reinterpret_cast<uint64_t*>(regs->RawData());
  reg_data[ARM64_REG_PC] = user->pc;
  reg_data[ARM64_REG_PC] = user->pc;
  reg_data[ARM64_REG_SP] = user->sp;
  reg_data[ARM64_REG_SP] = user->sp;
  reg_data[ARM64_REG_PSTATE] = user->pstate;
  return regs;
  return regs;
}
}


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


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