Fix minidump generation on arm softfp targets.

Test: arm softfp build, crashed program intentionally with kill -4 and
observed successful minidump generation.
Bug: b/283473162
Change-Id: Id71f92653ced04575ffbb87e309d4139ca34d843
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/4545508
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
diff --git a/src/client/linux/minidump_writer/linux_ptrace_dumper.cc b/src/client/linux/minidump_writer/linux_ptrace_dumper.cc
index 0e58236..2adc39e 100644
--- a/src/client/linux/minidump_writer/linux_ptrace_dumper.cc
+++ b/src/client/linux/minidump_writer/linux_ptrace_dumper.cc
@@ -179,6 +179,13 @@
     return false;
   }
 
+  // When running on arm processors the binary may be built with softfp or
+  // hardfp. If built with softfp we have no hardware registers to read from,
+  // so the following read will always fail. gcc defines __SOFTFP__ macro,
+  // clang13 does not do so. see: https://reviews.llvm.org/D135680.
+  // If you are using clang and the macro is NOT defined, please include the
+  // macro define for applicable targets.
+#if !defined(__SOFTFP__)
 #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
@@ -190,6 +197,7 @@
     return false;
   }
 #endif  // !(defined(__ANDROID__) && defined(__ARM_EABI__))
+#endif  // !defined(__SOFTFP__)
   return true;
 #else  // PTRACE_GETREGS
   return false;