[openssl-commits] [openssl] master update

Andy Polyakov appro at openssl.org
Sun Apr 2 18:48:34 UTC 2017


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


- Log -----------------------------------------------------------------
commit 0bd93bbe4ae60e5f318b298bfe617e468a7b71d0
Author: Andy Polyakov <appro at openssl.org>
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 <kurt at openssl.org>
    Reviewed-by: Richard Levitte <levitte at openssl.org>
    Reviewed-by: Rich Salz <rsalz at openssl.org>

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

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);
 


More information about the openssl-commits mailing list