From 1a1890a52aaf8bfbea34a8d918423e6c81f3ea80 Mon Sep 17 00:00:00 2001 From: "ted.mielczarek" Date: Tue, 30 Aug 2011 22:22:08 +0000 Subject: 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 --- src/processor/synth_minidump.h | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'src/processor/synth_minidump.h') diff --git a/src/processor/synth_minidump.h b/src/processor/synth_minidump.h index f09a68fc..245afe66 100644 --- a/src/processor/synth_minidump.h +++ b/src/processor/synth_minidump.h @@ -196,7 +196,7 @@ class SystemInfo: public Stream { static const string windows_x86_csd_version; }; -// An MDString: a string predeced by a 32-bit length. +// An MDString: a string preceded by a 32-bit length. class String: public Section { public: String(const Dump &dump, const string &value); @@ -227,6 +227,7 @@ class Context: public Section { public: // Create a context belonging to DUMP whose contents are a copy of CONTEXT. Context(const Dump &dump, const MDRawContextX86 &context); + Context(const Dump &dump, const MDRawContextARM &context); // Add constructors for other architectures here. Remember to byteswap. }; @@ -266,6 +267,16 @@ class Module: public Section { static const MDVSFixedFileInfo stock_version_info; }; +class Exception : public Stream { +public: + Exception(const Dump &dump, + const Context &context, + u_int32_t thread_id = 0, + u_int32_t exception_code = 0, + u_int32_t exception_flags = 0, + u_int64_t exception_address = 0); +}; + // A list of entries starting with a 32-bit count, like a memory list // or a thread list. template -- cgit v1.2.1