diff options
author | ted.mielczarek <ted.mielczarek@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2011-08-30 22:22:08 +0000 |
---|---|---|
committer | ted.mielczarek <ted.mielczarek@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2011-08-30 22:22:08 +0000 |
commit | 1a1890a52aaf8bfbea34a8d918423e6c81f3ea80 (patch) | |
tree | 24e84b122a562af38ebb1ce28ed0d71046bc7439 /src/google_breakpad/common/minidump_cpu_x86.h | |
parent | issue 243 - Linux dumper should use build id produced by ld --build-id if ava... (diff) | |
download | breakpad-1a1890a52aaf8bfbea34a8d918423e6c81f3ea80.tar.xz |
Adjust MD_CONTEXT_CPU_MASK to reflect reality, fix some code so it can handle dumps using the old value for MD_CONTEXT_ARM
The value of MD_CONTEXT_CPU_MASK in use assumes that only the lower 6 bits are used for flags, and the upper 26 bits are for the CPU type. However, as of Windows 7 SP1, the 7th bit is being used as a flag (per http://msdn.microsoft.com/en-us/library/hh134238%28v=vs.85%29.aspx and the Windows SDK headers). Adjusting MD_CONTEXT_CPU_MASK works, but unfortunately that masks off the existing value of MD_CONTEXT_ARM. This patch also changes the value of MD_CONTEXT_ARM and adjusts the minidump context reading machinery to gracefully handle minidumps with the old value.
R=mark at http://breakpad.appspot.com/302001
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@831 4c0a9323-5329-0410-9bdc-e9ce6186880e
Diffstat (limited to 'src/google_breakpad/common/minidump_cpu_x86.h')
-rw-r--r-- | src/google_breakpad/common/minidump_cpu_x86.h | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/google_breakpad/common/minidump_cpu_x86.h b/src/google_breakpad/common/minidump_cpu_x86.h index 4dbc0e9a..32aff8a7 100644 --- a/src/google_breakpad/common/minidump_cpu_x86.h +++ b/src/google_breakpad/common/minidump_cpu_x86.h @@ -141,8 +141,8 @@ typedef struct { } MDRawContextX86; /* CONTEXT */ /* For (MDRawContextX86).context_flags. These values indicate the type of - * context stored in the structure. The high 26 bits identify the CPU, the - * low 6 bits identify the type of context saved. */ + * context stored in the structure. The high 24 bits identify the CPU, the + * low 8 bits identify the type of context saved. */ #define MD_CONTEXT_X86 0x00010000 /* CONTEXT_i386, CONTEXT_i486: identifies CPU */ #define MD_CONTEXT_X86_CONTROL (MD_CONTEXT_X86 | 0x00000001) @@ -157,6 +157,8 @@ typedef struct { /* CONTEXT_DEBUG_REGISTERS */ #define MD_CONTEXT_X86_EXTENDED_REGISTERS (MD_CONTEXT_X86 | 0x00000020) /* CONTEXT_EXTENDED_REGISTERS */ +#define MD_CONTEXT_X86_XSTATE (MD_CONTEXT_X86 | 0x00000040) + /* CONTEXT_XSTATE */ #define MD_CONTEXT_X86_FULL (MD_CONTEXT_X86_CONTROL | \ MD_CONTEXT_X86_INTEGER | \ |