aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorthestig@chromium.org <thestig@chromium.org@4c0a9323-5329-0410-9bdc-e9ce6186880e>2013-04-25 20:36:31 +0000
committerthestig@chromium.org <thestig@chromium.org@4c0a9323-5329-0410-9bdc-e9ce6186880e>2013-04-25 20:36:31 +0000
commit0bdc714c20a7891b79ea3b0fa50fff289f8fd01a (patch)
tree616be689191b967e67c88ce9420bc6891bc1292b /src
parentCleanup: Use scoped_ptr where appropriate in DwarfCUToModule. (diff)
downloadbreakpad-0bdc714c20a7891b79ea3b0fa50fff289f8fd01a.tar.xz
Add MD_OS_PS3 to breakpad and exception types.
A=Jia Ji <jijia@google.com> Original review: https://breakpad.appspot.com/571002/ Review URL: https://breakpad.appspot.com/574002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1165 4c0a9323-5329-0410-9bdc-e9ce6186880e
Diffstat (limited to 'src')
-rw-r--r--src/google_breakpad/common/minidump_exception_ps3.h67
-rw-r--r--src/google_breakpad/common/minidump_format.h8
-rw-r--r--src/processor/exploitability.cc1
-rwxr-xr-xsrc/processor/minidump.cc7
-rw-r--r--src/processor/minidump_processor.cc82
5 files changed, 161 insertions, 4 deletions
diff --git a/src/google_breakpad/common/minidump_exception_ps3.h b/src/google_breakpad/common/minidump_exception_ps3.h
new file mode 100644
index 00000000..adff5a6b
--- /dev/null
+++ b/src/google_breakpad/common/minidump_exception_ps3.h
@@ -0,0 +1,67 @@
+/* Copyright (c) 2013, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
+
+/* minidump_exception_ps3.h: A definition of exception codes for
+ * PS3 */
+
+
+#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_PS3_H__
+#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_PS3_H__
+
+#include <stddef.h>
+
+#include "google_breakpad/common/breakpad_types.h"
+
+typedef enum {
+ MD_EXCEPTION_CODE_PS3_UNKNOWN = 0,
+ MD_EXCEPTION_CODE_PS3_TRAP_EXCEP = 1,
+ MD_EXCEPTION_CODE_PS3_PRIV_INSTR = 2,
+ MD_EXCEPTION_CODE_PS3_ILLEGAL_INSTR = 3,
+ MD_EXCEPTION_CODE_PS3_INSTR_STORAGE = 4,
+ MD_EXCEPTION_CODE_PS3_INSTR_SEGMENT = 5,
+ MD_EXCEPTION_CODE_PS3_DATA_STORAGE = 6,
+ MD_EXCEPTION_CODE_PS3_DATA_SEGMENT = 7,
+ MD_EXCEPTION_CODE_PS3_FLOAT_POINT = 8,
+ MD_EXCEPTION_CODE_PS3_DABR_MATCH = 9,
+ MD_EXCEPTION_CODE_PS3_ALIGN_EXCEP = 10,
+ MD_EXCEPTION_CODE_PS3_MEMORY_ACCESS = 11,
+ MD_EXCEPTION_CODE_PS3_COPRO_ALIGN = 12,
+ MD_EXCEPTION_CODE_PS3_COPRO_INVALID_COM = 13,
+ MD_EXCEPTION_CODE_PS3_COPRO_ERR = 14,
+ MD_EXCEPTION_CODE_PS3_COPRO_FIR = 15,
+ MD_EXCEPTION_CODE_PS3_COPRO_DATA_SEGMENT = 16,
+ MD_EXCEPTION_CODE_PS3_COPRO_DATA_STORAGE = 17,
+ MD_EXCEPTION_CODE_PS3_COPRO_STOP_INSTR = 18,
+ MD_EXCEPTION_CODE_PS3_COPRO_HALT_INSTR = 19,
+ MD_EXCEPTION_CODE_PS3_COPRO_HALTINST_UNKNOWN = 20,
+ MD_EXCEPTION_CODE_PS3_COPRO_MEMORY_ACCESS = 21,
+ MD_EXCEPTION_CODE_PS3_GRAPHIC = 22
+} MDExceptionCodePS3;
+
+#endif /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_PS3_H__ */
diff --git a/src/google_breakpad/common/minidump_format.h b/src/google_breakpad/common/minidump_format.h
index f1a65cbf..11c21419 100644
--- a/src/google_breakpad/common/minidump_format.h
+++ b/src/google_breakpad/common/minidump_format.h
@@ -529,10 +529,11 @@ typedef struct {
uint64_t exception_information[MD_EXCEPTION_MAXIMUM_PARAMETERS];
} MDException; /* MINIDUMP_EXCEPTION */
-#include "minidump_exception_win32.h"
-#include "minidump_exception_mac.h"
#include "minidump_exception_linux.h"
+#include "minidump_exception_mac.h"
+#include "minidump_exception_ps3.h"
#include "minidump_exception_solaris.h"
+#include "minidump_exception_win32.h"
typedef struct {
uint32_t thread_id; /* Thread in which the exception
@@ -652,7 +653,8 @@ typedef enum {
MD_OS_IOS = 0x8102, /* iOS */
MD_OS_LINUX = 0x8201, /* Linux */
MD_OS_SOLARIS = 0x8202, /* Solaris */
- MD_OS_ANDROID = 0x8203 /* Android */
+ MD_OS_ANDROID = 0x8203, /* Android */
+ MD_OS_PS3 = 0x8204 /* PS3 */
} MDOSPlatform;
typedef struct {
diff --git a/src/processor/exploitability.cc b/src/processor/exploitability.cc
index 5355b7d1..5598966c 100644
--- a/src/processor/exploitability.cc
+++ b/src/processor/exploitability.cc
@@ -80,6 +80,7 @@ Exploitability *Exploitability::ExploitabilityForPlatform(
case MD_OS_UNIX:
case MD_OS_SOLARIS:
case MD_OS_ANDROID:
+ case MD_OS_PS3:
default: {
platform_exploitability = NULL;
break;
diff --git a/src/processor/minidump.cc b/src/processor/minidump.cc
index e29fccbc..94ea08b5 100755
--- a/src/processor/minidump.cc
+++ b/src/processor/minidump.cc
@@ -1950,7 +1950,8 @@ string MinidumpModule::code_identifier() const {
case MD_OS_IOS:
case MD_OS_SOLARIS:
case MD_OS_ANDROID:
- case MD_OS_LINUX: {
+ case MD_OS_LINUX:
+ case MD_OS_PS3: {
// TODO(mmentovai): support uuid extension if present, otherwise fall
// back to version (from LC_ID_DYLIB?), otherwise fall back to something
// else.
@@ -3302,6 +3303,10 @@ string MinidumpSystemInfo::GetOS() {
os = "android";
break;
+ case MD_OS_PS3:
+ os = "ps3";
+ break;
+
default:
BPLOG(ERROR) << "MinidumpSystemInfo unknown OS for platform " <<
HexString(system_info_.platform_id);
diff --git a/src/processor/minidump_processor.cc b/src/processor/minidump_processor.cc
index 2d14cb37..8b138775 100644
--- a/src/processor/minidump_processor.cc
+++ b/src/processor/minidump_processor.cc
@@ -552,6 +552,10 @@ bool MinidumpProcessor::GetOSInfo(Minidump *dump, SystemInfo *info) {
break;
}
+ case MD_OS_PS3: {
+ info->os = "PS3";
+ }
+
default: {
// Assign the numeric platform ID into the OS string.
char os_string[11];
@@ -1277,6 +1281,84 @@ string MinidumpProcessor::GetCrashReason(Minidump *dump, uint64_t *address) {
break;
}
+ case MD_OS_PS3: {
+ switch (exception_code) {
+ case MD_EXCEPTION_CODE_PS3_UNKNOWN:
+ reason = "UNKNOWN";
+ break;
+ case MD_EXCEPTION_CODE_PS3_TRAP_EXCEP:
+ reason = "TRAP_EXCEP";
+ break;
+ case MD_EXCEPTION_CODE_PS3_PRIV_INSTR:
+ reason = "PRIV_INSTR";
+ break;
+ case MD_EXCEPTION_CODE_PS3_ILLEGAL_INSTR:
+ reason = "ILLEGAL_INSTR";
+ break;
+ case MD_EXCEPTION_CODE_PS3_INSTR_STORAGE:
+ reason = "INSTR_STORAGE";
+ break;
+ case MD_EXCEPTION_CODE_PS3_INSTR_SEGMENT:
+ reason = "INSTR_SEGMENT";
+ break;
+ case MD_EXCEPTION_CODE_PS3_DATA_STORAGE:
+ reason = "DATA_STORAGE";
+ break;
+ case MD_EXCEPTION_CODE_PS3_DATA_SEGMENT:
+ reason = "DATA_SEGMENT";
+ break;
+ case MD_EXCEPTION_CODE_PS3_FLOAT_POINT:
+ reason = "FLOAT_POINT";
+ break;
+ case MD_EXCEPTION_CODE_PS3_DABR_MATCH:
+ reason = "DABR_MATCH";
+ break;
+ case MD_EXCEPTION_CODE_PS3_ALIGN_EXCEP:
+ reason = "ALIGN_EXCEP";
+ break;
+ case MD_EXCEPTION_CODE_PS3_MEMORY_ACCESS:
+ reason = "MEMORY_ACCESS";
+ break;
+ case MD_EXCEPTION_CODE_PS3_COPRO_ALIGN:
+ reason = "COPRO_ALIGN";
+ break;
+ case MD_EXCEPTION_CODE_PS3_COPRO_INVALID_COM:
+ reason = "COPRO_INVALID_COM";
+ break;
+ case MD_EXCEPTION_CODE_PS3_COPRO_ERR:
+ reason = "COPRO_ERR";
+ break;
+ case MD_EXCEPTION_CODE_PS3_COPRO_FIR:
+ reason = "COPRO_FIR";
+ break;
+ case MD_EXCEPTION_CODE_PS3_COPRO_DATA_SEGMENT:
+ reason = "COPRO_DATA_SEGMENT";
+ break;
+ case MD_EXCEPTION_CODE_PS3_COPRO_DATA_STORAGE:
+ reason = "COPRO_DATA_STORAGE";
+ break;
+ case MD_EXCEPTION_CODE_PS3_COPRO_STOP_INSTR:
+ reason = "COPRO_STOP_INSTR";
+ break;
+ case MD_EXCEPTION_CODE_PS3_COPRO_HALT_INSTR:
+ reason = "COPRO_HALT_INSTR";
+ break;
+ case MD_EXCEPTION_CODE_PS3_COPRO_HALTINST_UNKNOWN:
+ reason = "COPRO_HALTINSTR_UNKNOWN";
+ break;
+ case MD_EXCEPTION_CODE_PS3_COPRO_MEMORY_ACCESS:
+ reason = "COPRO_MEMORY_ACCESS";
+ break;
+ case MD_EXCEPTION_CODE_PS3_GRAPHIC:
+ reason = "GRAPHIC";
+ break;
+ default:
+ BPLOG(INFO) << "Unknown exception reason "<< reason;
+ break;
+ }
+ break;
+ }
+
default: {
BPLOG(INFO) << "Unknown exception reason " << reason;
break;