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

Commit 87971533 authored by Elliott Hughes's avatar Elliott Hughes Committed by Android Git Automerger
Browse files

am b7fdf4fa: am 4077acd2: am 21be143a: Merge "Fix register dump and back trace after a crash."

* commit 'b7fdf4fa':
  Fix register dump and back trace after a crash.
parents 51d65e6d b7fdf4fa
Loading
Loading
Loading
Loading
+14 −2
Original line number Diff line number Diff line
@@ -32,10 +32,22 @@

#define R(x) (static_cast<unsigned int>(x))

// The MIPS uapi ptrace.h has the wrong definition for pt_regs. PTRACE_GETREGS
// writes 64-bit quantities even though the public struct uses 32-bit ones.
struct pt_regs_mips_t {
  uint64_t regs[32];
  uint64_t lo;
  uint64_t hi;
  uint64_t cp0_epc;
  uint64_t cp0_badvaddr;
  uint64_t cp0_status;
  uint64_t cp0_cause;
};

// If configured to do so, dump memory around *all* registers
// for the crashing thread.
void dump_memory_and_code(log_t* log, pid_t tid, int scope_flags) {
  pt_regs r;
  pt_regs_mips_t r;
  if (ptrace(PTRACE_GETREGS, tid, 0, &r)) {
    return;
  }
@@ -78,7 +90,7 @@ void dump_memory_and_code(log_t* log, pid_t tid, int scope_flags) {
}

void dump_registers(log_t* log, pid_t tid, int scope_flags) {
  pt_regs r;
  pt_regs_mips_t r;
  if(ptrace(PTRACE_GETREGS, tid, 0, &r)) {
    _LOG(log, scope_flags, "cannot get registers: %s\n", strerror(errno));
    return;