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
This commit is contained in:
parent
affac9413b
commit
0bdc714c20
5 changed files with 161 additions and 4 deletions
67
src/google_breakpad/common/minidump_exception_ps3.h
Normal file
67
src/google_breakpad/common/minidump_exception_ps3.h
Normal file
|
@ -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__ */
|
|
@ -529,10 +529,11 @@ typedef struct {
|
||||||
uint64_t exception_information[MD_EXCEPTION_MAXIMUM_PARAMETERS];
|
uint64_t exception_information[MD_EXCEPTION_MAXIMUM_PARAMETERS];
|
||||||
} MDException; /* MINIDUMP_EXCEPTION */
|
} MDException; /* MINIDUMP_EXCEPTION */
|
||||||
|
|
||||||
#include "minidump_exception_win32.h"
|
|
||||||
#include "minidump_exception_mac.h"
|
|
||||||
#include "minidump_exception_linux.h"
|
#include "minidump_exception_linux.h"
|
||||||
|
#include "minidump_exception_mac.h"
|
||||||
|
#include "minidump_exception_ps3.h"
|
||||||
#include "minidump_exception_solaris.h"
|
#include "minidump_exception_solaris.h"
|
||||||
|
#include "minidump_exception_win32.h"
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
uint32_t thread_id; /* Thread in which the exception
|
uint32_t thread_id; /* Thread in which the exception
|
||||||
|
@ -652,7 +653,8 @@ typedef enum {
|
||||||
MD_OS_IOS = 0x8102, /* iOS */
|
MD_OS_IOS = 0x8102, /* iOS */
|
||||||
MD_OS_LINUX = 0x8201, /* Linux */
|
MD_OS_LINUX = 0x8201, /* Linux */
|
||||||
MD_OS_SOLARIS = 0x8202, /* Solaris */
|
MD_OS_SOLARIS = 0x8202, /* Solaris */
|
||||||
MD_OS_ANDROID = 0x8203 /* Android */
|
MD_OS_ANDROID = 0x8203, /* Android */
|
||||||
|
MD_OS_PS3 = 0x8204 /* PS3 */
|
||||||
} MDOSPlatform;
|
} MDOSPlatform;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|
|
@ -80,6 +80,7 @@ Exploitability *Exploitability::ExploitabilityForPlatform(
|
||||||
case MD_OS_UNIX:
|
case MD_OS_UNIX:
|
||||||
case MD_OS_SOLARIS:
|
case MD_OS_SOLARIS:
|
||||||
case MD_OS_ANDROID:
|
case MD_OS_ANDROID:
|
||||||
|
case MD_OS_PS3:
|
||||||
default: {
|
default: {
|
||||||
platform_exploitability = NULL;
|
platform_exploitability = NULL;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -1950,7 +1950,8 @@ string MinidumpModule::code_identifier() const {
|
||||||
case MD_OS_IOS:
|
case MD_OS_IOS:
|
||||||
case MD_OS_SOLARIS:
|
case MD_OS_SOLARIS:
|
||||||
case MD_OS_ANDROID:
|
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
|
// TODO(mmentovai): support uuid extension if present, otherwise fall
|
||||||
// back to version (from LC_ID_DYLIB?), otherwise fall back to something
|
// back to version (from LC_ID_DYLIB?), otherwise fall back to something
|
||||||
// else.
|
// else.
|
||||||
|
@ -3302,6 +3303,10 @@ string MinidumpSystemInfo::GetOS() {
|
||||||
os = "android";
|
os = "android";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case MD_OS_PS3:
|
||||||
|
os = "ps3";
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
BPLOG(ERROR) << "MinidumpSystemInfo unknown OS for platform " <<
|
BPLOG(ERROR) << "MinidumpSystemInfo unknown OS for platform " <<
|
||||||
HexString(system_info_.platform_id);
|
HexString(system_info_.platform_id);
|
||||||
|
|
|
@ -552,6 +552,10 @@ bool MinidumpProcessor::GetOSInfo(Minidump *dump, SystemInfo *info) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case MD_OS_PS3: {
|
||||||
|
info->os = "PS3";
|
||||||
|
}
|
||||||
|
|
||||||
default: {
|
default: {
|
||||||
// Assign the numeric platform ID into the OS string.
|
// Assign the numeric platform ID into the OS string.
|
||||||
char os_string[11];
|
char os_string[11];
|
||||||
|
@ -1277,6 +1281,84 @@ string MinidumpProcessor::GetCrashReason(Minidump *dump, uint64_t *address) {
|
||||||
break;
|
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: {
|
default: {
|
||||||
BPLOG(INFO) << "Unknown exception reason " << reason;
|
BPLOG(INFO) << "Unknown exception reason " << reason;
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in a new issue