diff options
author | mark@chromium.org <mark@chromium.org@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2013-11-21 17:44:57 +0000 |
---|---|---|
committer | mark@chromium.org <mark@chromium.org@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2013-11-21 17:44:57 +0000 |
commit | 77022ac0df3e079fb0abea05033b0239d12a4e72 (patch) | |
tree | 6f7207ff153e8306c441fa0cdb18b728ef971fe5 /src/client/mac/handler/minidump_generator.h | |
parent | Provide BreakpadGetCrashReportCount() and -[BreakpadController (diff) | |
download | breakpad-77022ac0df3e079fb0abea05033b0239d12a4e72.tar.xz |
Generate minidumps for 64-bit ARM apps on iOS.
Adds an ARM64-specific definition of MDRawContext and support for writing out a
minidump when running on ARM64. Additionally, extends the iOS minidump generator
for NSExceptions to work on ARM64 as well as ARM.
Patch by Colin Blundell <blundell@chromium.org>
BUG=542
Review URL: https://breakpad.appspot.com/664002/
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1235 4c0a9323-5329-0410-9bdc-e9ce6186880e
Diffstat (limited to 'src/client/mac/handler/minidump_generator.h')
-rw-r--r-- | src/client/mac/handler/minidump_generator.h | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/client/mac/handler/minidump_generator.h b/src/client/mac/handler/minidump_generator.h index c79873fa..3f7f8de0 100644 --- a/src/client/mac/handler/minidump_generator.h +++ b/src/client/mac/handler/minidump_generator.h @@ -37,6 +37,7 @@ #include <string> +#include "client/mac/handler/ucontext_compat.h" #include "client/minidump_file_writer.h" #include "common/memory.h" #include "common/mac/macho_utilities.h" @@ -49,7 +50,9 @@ #define HAS_PPC_SUPPORT #endif #if defined(__arm__) - #define HAS_ARM_SUPPORT +#define HAS_ARM_SUPPORT +#elif defined(__arm64__) +#define HAS_ARM64_SUPPORT #elif defined(__i386__) || defined(__x86_64__) #define HAS_X86_SUPPORT #endif @@ -105,7 +108,7 @@ class MinidumpGenerator { // Specify the task context. If |task_context| is not NULL, it will be used // to retrieve the context of the current thread, instead of using // |thread_get_state|. - void SetTaskContext(ucontext_t *task_context); + void SetTaskContext(breakpad_ucontext_t *task_context); // Gather system information. This should be call at least once before using // the MinidumpGenerator class. @@ -153,6 +156,13 @@ class MinidumpGenerator { MDLocationDescriptor *register_location); uint64_t CurrentPCForStackARM(breakpad_thread_state_data_t state); #endif +#ifdef HAS_ARM64_SUPPORT + bool WriteStackARM64(breakpad_thread_state_data_t state, + MDMemoryDescriptor *stack_location); + bool WriteContextARM64(breakpad_thread_state_data_t state, + MDLocationDescriptor *register_location); + uint64_t CurrentPCForStackARM64(breakpad_thread_state_data_t state); +#endif #ifdef HAS_PPC_SUPPORT bool WriteStackPPC(breakpad_thread_state_data_t state, MDMemoryDescriptor *stack_location); @@ -205,7 +215,7 @@ class MinidumpGenerator { static int os_build_number_; // Context of the task to dump. - ucontext_t *task_context_; + breakpad_ucontext_t *task_context_; // Information about dynamically loaded code DynamicImages *dynamic_images_; |