From 64c0d9c66d207ccc1cf2a5f0c470b595735dd1a9 Mon Sep 17 00:00:00 2001 From: "cjhopman@chromium.org" Date: Wed, 5 Aug 2015 22:48:48 +0000 Subject: Fix breakpad for arm on arm64 On arm64 devices, GETFPREGS fails with errno==EIO. Ignore those failures on Android arm builds. BUG=508324 R=thestig@chromium.org Review URL: https://codereview.chromium.org/1268023003 . git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1479 4c0a9323-5329-0410-9bdc-e9ce6186880e --- src/client/linux/minidump_writer/linux_ptrace_dumper.cc | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/client/linux/minidump_writer/linux_ptrace_dumper.cc') diff --git a/src/client/linux/minidump_writer/linux_ptrace_dumper.cc b/src/client/linux/minidump_writer/linux_ptrace_dumper.cc index 5ea0050d..c35e0e95 100644 --- a/src/client/linux/minidump_writer/linux_ptrace_dumper.cc +++ b/src/client/linux/minidump_writer/linux_ptrace_dumper.cc @@ -206,12 +206,18 @@ bool LinuxPtraceDumper::GetThreadInfoByIndex(size_t index, ThreadInfo* info) { return false; } +#if !(defined(__ANDROID__) && defined(__ARM_EABI__)) + // When running an arm build on an arm64 device, attempting to get the + // floating point registers fails. On Android, the floating point registers + // aren't written to the cpu context anyway, so just don't get them here. + // See http://crbug.com/508324 void* fp_addr; info->GetFloatingPointRegisters(&fp_addr, NULL); if (sys_ptrace(PTRACE_GETFPREGS, tid, NULL, fp_addr) == -1) { return false; } #endif +#endif // PTRACE_GETREGSET #if defined(__i386) #if !defined(bit_FXSAVE) // e.g. Clang -- cgit v1.2.1