mirror of
https://git.suyu.dev/suyu/breakpad.git
synced 2026-01-05 14:08:20 +01:00
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
This commit is contained in:
parent
8ade75f955
commit
1a1890a52a
10 changed files with 658 additions and 42 deletions
|
|
@ -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<typename Element>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue