mirror of
https://git.suyu.dev/suyu/breakpad.git
synced 2026-03-06 20:32:59 +00:00
Define and use a a new MDRawContextARM64
This struct matches the layout defined by Microsoft and replaces Breakpad's MDRawContextARM64_Old. This CL updates the processor to understand either the old or new structs, but clients continue to write the old structs. Change-Id: I8dedd9ddb2ec083b802723b9ac87beb18d98edbd Reviewed-on: https://chromium-review.googlesource.com/1155938 Reviewed-by: Mark Mentovai <mark@chromium.org>
This commit is contained in:
@@ -56,7 +56,7 @@ class DumpContext : public DumpObject {
|
||||
// context data does not match the CPU type or does not exist, returns NULL.
|
||||
const MDRawContextAMD64* GetContextAMD64() const;
|
||||
const MDRawContextARM* GetContextARM() const;
|
||||
const MDRawContextARM64_Old* GetContextARM64() const;
|
||||
const MDRawContextARM64* GetContextARM64() const;
|
||||
const MDRawContextMIPS* GetContextMIPS() const;
|
||||
const MDRawContextPPC* GetContextPPC() const;
|
||||
const MDRawContextPPC64* GetContextPPC64() const;
|
||||
@@ -85,7 +85,7 @@ class DumpContext : public DumpObject {
|
||||
void SetContextAMD64(MDRawContextAMD64* amd64);
|
||||
void SetContextSPARC(MDRawContextSPARC* ctx_sparc);
|
||||
void SetContextARM(MDRawContextARM* arm);
|
||||
void SetContextARM64(MDRawContextARM64_Old* arm64);
|
||||
void SetContextARM64(MDRawContextARM64* arm64);
|
||||
void SetContextMIPS(MDRawContextMIPS* ctx_mips);
|
||||
|
||||
// Free the CPU-specific context structure.
|
||||
@@ -103,7 +103,7 @@ class DumpContext : public DumpObject {
|
||||
// so variables can NOT be named as sparc
|
||||
MDRawContextSPARC* ctx_sparc;
|
||||
MDRawContextARM* arm;
|
||||
MDRawContextARM64_Old* arm64_old;
|
||||
MDRawContextARM64* arm64;
|
||||
MDRawContextMIPS* ctx_mips;
|
||||
} context_;
|
||||
|
||||
|
||||
@@ -68,7 +68,7 @@ class MicrodumpModules : public BasicCodeModules {
|
||||
class MicrodumpContext : public DumpContext {
|
||||
public:
|
||||
virtual void SetContextARM(MDRawContextARM* arm);
|
||||
virtual void SetContextARM64(MDRawContextARM64_Old* arm64);
|
||||
virtual void SetContextARM64(MDRawContextARM64* arm64);
|
||||
virtual void SetContextX86(MDRawContextX86* x86);
|
||||
virtual void SetContextMIPS(MDRawContextMIPS* mips32);
|
||||
virtual void SetContextMIPS64(MDRawContextMIPS* mips64);
|
||||
|
||||
@@ -1260,6 +1260,8 @@ class Minidump {
|
||||
|
||||
bool swap() const { return valid_ ? swap_ : false; }
|
||||
|
||||
bool is_big_endian() const { return valid_ ? is_big_endian_ : false; }
|
||||
|
||||
// Print a human-readable representation of the object to stdout.
|
||||
void Print();
|
||||
|
||||
@@ -1325,6 +1327,9 @@ class Minidump {
|
||||
// same-endian, this will be false.
|
||||
bool swap_;
|
||||
|
||||
// true if the minidump was produced by a big-endian cpu.
|
||||
bool is_big_endian_;
|
||||
|
||||
// Validity of the Minidump structure, false immediately after
|
||||
// construction or after a failed Read(); true following a successful
|
||||
// Read().
|
||||
|
||||
@@ -327,7 +327,7 @@ struct StackFrameARM64 : public StackFrame {
|
||||
// stack. In other frames, the values of nonvolatile registers may be
|
||||
// present, given sufficient debugging information. Refer to
|
||||
// context_validity.
|
||||
MDRawContextARM64_Old context;
|
||||
MDRawContextARM64 context;
|
||||
|
||||
// For each register in context whose value has been recovered, we set
|
||||
// the corresponding CONTEXT_VALID_ bit in context_validity.
|
||||
|
||||
Reference in New Issue
Block a user