diff options
Diffstat (limited to 'toolkit/crashreporter/breakpad-patches/23-si-user-si-kernel-siginfo.patch')
-rw-r--r-- | toolkit/crashreporter/breakpad-patches/23-si-user-si-kernel-siginfo.patch | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/toolkit/crashreporter/breakpad-patches/23-si-user-si-kernel-siginfo.patch b/toolkit/crashreporter/breakpad-patches/23-si-user-si-kernel-siginfo.patch new file mode 100644 index 0000000000..9e779f7dd8 --- /dev/null +++ b/toolkit/crashreporter/breakpad-patches/23-si-user-si-kernel-siginfo.patch @@ -0,0 +1,76 @@ +diff --git a/src/google_breakpad/common/minidump_exception_linux.h b/src/google_breakpad/common/minidump_exception_linux.h +--- a/src/google_breakpad/common/minidump_exception_linux.h ++++ b/src/google_breakpad/common/minidump_exception_linux.h +@@ -83,16 +83,20 @@ typedef enum { + MD_EXCEPTION_CODE_LIN_DUMP_REQUESTED = 0xFFFFFFFF /* No exception, + dump requested. */ + } MDExceptionCodeLinux; + + /* For (MDException).exception_flags. These values come from + * asm-generic/siginfo.h. + */ + typedef enum { ++ /* Generic */ ++ MD_EXCEPTION_FLAG_LIN_SI_USER = 0, ++ MD_EXCEPTION_FLAG_LIN_SI_KERNEL = 0x80, ++ + /* SIGILL */ + MD_EXCEPTION_FLAG_LIN_ILL_ILLOPC = 1, + MD_EXCEPTION_FLAG_LIN_ILL_ILLOPN = 2, + MD_EXCEPTION_FLAG_LIN_ILL_ILLADR = 3, + MD_EXCEPTION_FLAG_LIN_ILL_ILLTRP = 4, + MD_EXCEPTION_FLAG_LIN_ILL_PRVOPC = 5, + MD_EXCEPTION_FLAG_LIN_ILL_PRVREG = 6, + MD_EXCEPTION_FLAG_LIN_ILL_COPROC = 7, +diff --git a/src/processor/minidump_processor.cc b/src/processor/minidump_processor.cc +--- a/src/processor/minidump_processor.cc ++++ b/src/processor/minidump_processor.cc +@@ -1401,16 +1401,22 @@ string MinidumpProcessor::GetCrashReason + reason = "SIGTRAP"; + break; + case MD_EXCEPTION_CODE_LIN_SIGABRT: + reason = "SIGABRT"; + break; + case MD_EXCEPTION_CODE_LIN_SIGBUS: + reason = "SIGBUS / "; + switch (exception_flags) { ++ case MD_EXCEPTION_FLAG_LIN_SI_USER: ++ reason.append("SI_USER"); ++ break; ++ case MD_EXCEPTION_FLAG_LIN_SI_KERNEL: ++ reason.append("SI_KERNEL"); ++ break; + case MD_EXCEPTION_FLAG_LIN_BUS_ADRALN: + reason.append("BUS_ADRALN"); + break; + case MD_EXCEPTION_FLAG_LIN_BUS_ADRERR: + reason.append("BUS_ADRERR"); + break; + case MD_EXCEPTION_FLAG_LIN_BUS_OBJERR: + reason.append("BUS_OBJERR"); +@@ -1462,18 +1468,24 @@ string MinidumpProcessor::GetCrashReason + break; + case MD_EXCEPTION_CODE_LIN_SIGKILL: + reason = "SIGKILL"; + break; + case MD_EXCEPTION_CODE_LIN_SIGUSR1: + reason = "SIGUSR1"; + break; + case MD_EXCEPTION_CODE_LIN_SIGSEGV: +- reason = "SIGSEGV /"; ++ reason = "SIGSEGV / "; + switch (exception_flags) { ++ case MD_EXCEPTION_FLAG_LIN_SI_USER: ++ reason.append("SI_USER"); ++ break; ++ case MD_EXCEPTION_FLAG_LIN_SI_KERNEL: ++ reason.append("SI_KERNEL"); ++ break; + case MD_EXCEPTION_FLAG_LIN_SEGV_MAPERR: + reason.append("SEGV_MAPERR"); + break; + case MD_EXCEPTION_FLAG_LIN_SEGV_ACCERR: + reason.append("SEGV_ACCERR"); + break; + case MD_EXCEPTION_FLAG_LIN_SEGV_BNDERR: + reason.append("SEGV_BNDERR"); |