aboutsummaryrefslogtreecommitdiff
path: root/src/processor/minidump_format.h
diff options
context:
space:
mode:
authormmentovai <mmentovai@4c0a9323-5329-0410-9bdc-e9ce6186880e>2006-09-22 01:10:25 +0000
committermmentovai <mmentovai@4c0a9323-5329-0410-9bdc-e9ce6186880e>2006-09-22 01:10:25 +0000
commit3402cae5e58f7503adc4d9de6d9ea69e725ddcb2 (patch)
tree8b35e29094057df5938145f622c017f09692c1cd /src/processor/minidump_format.h
parentHandle frame pointer omission (#21), part 2: PostfixEvaluator. r=bryner. (diff)
downloadbreakpad-3402cae5e58f7503adc4d9de6d9ea69e725ddcb2.tar.xz
Add ppc support to minidump reader (#27). r=bryner.
- Uses new MDRawContextPPC structure from #25. - Interface change: (MinidumpContext).context() replaced with GetContextCPU to determine CPU type and GetContextX86/GetContextPPC to get CPU-specific context. http://groups.google.com/group/airbag-dev/browse_thread/thread/f6c2e9cab2832b4c git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@33 4c0a9323-5329-0410-9bdc-e9ce6186880e
Diffstat (limited to 'src/processor/minidump_format.h')
-rw-r--r--src/processor/minidump_format.h24
1 files changed, 17 insertions, 7 deletions
diff --git a/src/processor/minidump_format.h b/src/processor/minidump_format.h
index 0d1e4b36..b3661d8d 100644
--- a/src/processor/minidump_format.h
+++ b/src/processor/minidump_format.h
@@ -198,6 +198,8 @@ typedef struct {
#define MD_CONTEXT_MIPS 0x00010000 /* CONTEXT_R4000 (same value as x86?) */
#define MD_CONTEXT_ALPHA 0x00020000 /* CONTEXT_ALPHA */
+#define MD_CONTEXT_CPU_MASK 0xffffffc0
+
/*
* Airbag minidump extension for PowerPC support. Based on Darwin/Mac OS X'
@@ -205,6 +207,14 @@ typedef struct {
*/
+/* This is a base type for MDRawContextX86 and MDRawContextPPC. This
+ * structure should never be allocated directly. The actual structure type
+ * can be determined by examining the context_flags field. */
+typedef struct {
+ u_int32_t context_flags;
+} MDRawContextBase;
+
+
#define MD_FLOATINGSAVEAREA_PPC_FPR_COUNT 32
typedef struct {
@@ -219,13 +229,13 @@ typedef struct {
#define MD_VECTORSAVEAREA_PPC_VR_COUNT 32
typedef struct {
- /* Vector registers are 128 bits, but mach/ppc/_types.h exposes them as
- * four 32-bit quantities. */
- u_int32_t save_vr[MD_VECTORSAVEAREA_PPC_VR_COUNT][4];
- u_int32_t save_vscr[4]; /* Status/control */
- u_int32_t save_pad5[4];
- u_int32_t save_vrvalid; /* Identifies which vector registers are saved */
- u_int32_t save_pad6[7];
+ /* Vector registers (including vscr) are 128 bits, but mach/ppc/_types.h
+ * exposes them as four 32-bit quantities. */
+ u_int128_t save_vr[MD_VECTORSAVEAREA_PPC_VR_COUNT];
+ u_int128_t save_vscr; /* Status/control */
+ u_int32_t save_pad5[4];
+ u_int32_t save_vrvalid; /* Identifies which vector registers are saved */
+ u_int32_t save_pad6[7];
} MDVectorSaveAreaPPC; /* ppc_vector_state */