The branch master has been updated
       via  0bd93bbe4ae60e5f318b298bfe617e468a7b71d0 (commit)
      from  d83112b7fd3b0e751f8a5947e5a93db1cbbe86dc (commit)


- Log -----------------------------------------------------------------
commit 0bd93bbe4ae60e5f318b298bfe617e468a7b71d0
Author: Andy Polyakov <[email protected]>
Date:   Sat Apr 1 15:28:28 2017 +0200

    crypto/ppccap.c: SIGILL-free processor capabilities detection on MacOS X.
    
    It seems to be problematic to probe processor capabilities with SIGILL
    on MacOS X. The problem should be limited to cases when application code
    is debugged, but crashes were reported even during normal execution...
    
    Reviewed-by: Kurt Roeckx <[email protected]>
    Reviewed-by: Richard Levitte <[email protected]>
    Reviewed-by: Rich Salz <[email protected]>

-----------------------------------------------------------------------

Summary of changes:
 crypto/ppccap.c | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/crypto/ppccap.c b/crypto/ppccap.c
index b2b898e..2f7cd8e 100644
--- a/crypto/ppccap.c
+++ b/crypto/ppccap.c
@@ -22,6 +22,10 @@
 #  define __power_set(a) (_system_configuration.implementation & (a))
 # endif
 #endif
+#if defined(__APPLE__) && defined(__MACH__)
+# include <sys/types.h>
+# include <sys/sysctl.h>
+#endif
 #include <openssl/crypto.h>
 #include <openssl/bn.h>
 
@@ -240,6 +244,28 @@ void OPENSSL_cpuid_setup(void)
 # endif
 #endif
 
+#if defined(__APPLE__) && defined(__MACH__)
+    OPENSSL_ppccap_P |= PPC_FPU;
+
+    {
+        int val;
+        size_t len = sizeof(val);
+
+        if (sysctlbyname("hw.optional.64bitops", &val, &len, NULL, 0) == 0) {
+            if (val)
+                OPENSSL_ppccap_P |= PPC_FPU64;
+        }
+
+        len = sizeof(val);
+        if (sysctlbyname("hw.optional.altivec", &val, &len, NULL, 0) == 0) {
+            if (val)
+                OPENSSL_ppccap_P |= PPC_ALTIVEC;
+        }
+
+        return;
+    }
+#endif
+
     if (getauxval != NULL) {
         unsigned long hwcap = getauxval(HWCAP);
 
_____
openssl-commits mailing list
To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-commits

Reply via email to