diff options
author | rmcilroy@chromium.org <rmcilroy@chromium.org@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2014-04-02 23:12:40 +0000 |
---|---|---|
committer | rmcilroy@chromium.org <rmcilroy@chromium.org@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2014-04-02 23:12:40 +0000 |
commit | 83b9a28cf94979f9b6c33f492a4072766eff3e6e (patch) | |
tree | e43731eb28abb4b5d192e20efb9286de01dfe927 /src/client/linux/minidump_writer/minidump_writer.cc | |
parent | Remove some unecessary Android system header definitions. (diff) | |
download | breakpad-83b9a28cf94979f9b6c33f492a4072766eff3e6e.tar.xz |
First cut at adding arm64 Linux / Android support to Breakpad.
This is an initial attempt to add Arm64 (aarch64) support to Breakpad for
Linux / Android platforms. This CL adds the Arm64 data structures, but does
not yet implement the Android getcontext support or CPUFillFromThreadInfo /
CPUFillFromUContext.
BUG=354405,335641
R=mark@chromium.org
Review URL: https://breakpad.appspot.com/1354002
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1301 4c0a9323-5329-0410-9bdc-e9ce6186880e
Diffstat (limited to 'src/client/linux/minidump_writer/minidump_writer.cc')
-rw-r--r-- | src/client/linux/minidump_writer/minidump_writer.cc | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/src/client/linux/minidump_writer/minidump_writer.cc b/src/client/linux/minidump_writer/minidump_writer.cc index ee759274..50929f80 100644 --- a/src/client/linux/minidump_writer/minidump_writer.cc +++ b/src/client/linux/minidump_writer/minidump_writer.cc @@ -374,6 +374,19 @@ void CPUFillFromUContext(MDRawContextARM* out, const ucontext* uc, my_memset(&out->float_save.extra, 0, sizeof(out->float_save.extra)); } +#elif defined(__aarch64__) +typedef MDRawContextARM64 RawContextCPU; + +void CPUFillFromThreadInfo(MDRawContextARM64* out, + const google_breakpad::ThreadInfo& info) { + // TODO(rmcilroy): Implement for arm64. +} + +void CPUFillFromUContext(MDRawContextARM64* out, const ucontext* uc, + const struct _libc_fpstate* fpregs) { + // TODO(rmcilroy): Implement for arm64. +} + #elif defined(__mips__) typedef MDRawContextMIPS RawContextCPU; @@ -470,7 +483,7 @@ class MinidumpWriter { : fd_(minidump_fd), path_(minidump_path), ucontext_(context ? &context->context : NULL), -#if !defined(__ARM_EABI__) && !defined(__mips__) +#if !defined(__ARM_EABI__) && !defined(__mips__) && !defined(__aarch64__) float_state_(context ? &context->float_state : NULL), #else // TODO: fix this after fixing ExceptionHandler @@ -1271,6 +1284,18 @@ class MinidumpWriter { uintptr_t GetInstructionPointer(const ThreadInfo& info) { return info.regs.uregs[15]; } +#elif defined(__aarch64__) + uintptr_t GetStackPointer() { + return ucontext_->uc_mcontext.sp; + } + + uintptr_t GetInstructionPointer() { + return ucontext_->uc_mcontext.pc; + } + + uintptr_t GetInstructionPointer(const ThreadInfo& info) { + return info.regs.pc; + } #elif defined(__mips__) uintptr_t GetStackPointer() { return ucontext_->uc_mcontext.gregs[MD_CONTEXT_MIPS_REG_SP]; @@ -1581,6 +1606,11 @@ class MinidumpWriter { return true; } +#elif defined(__aarch64__) + bool WriteCPUInformation(MDRawSystemInfo* sys_info) { + // TODO(rmcilroy): Implement for arm64. + return false; + } #else # error "Unsupported CPU" #endif |