mirror of
https://github.com/openssl/openssl.git
synced 2026-06-06 20:18:09 +00:00
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...
[backport of 0bd93bbe4a]
Reviewed-by: Rich Salz <rsalz@openssl.org>
This commit is contained in:
@@ -7,6 +7,10 @@
|
||||
#if defined(__linux) || defined(_AIX)
|
||||
# include <sys/utsname.h>
|
||||
#endif
|
||||
#if defined(__APPLE__) && defined(__MACH__)
|
||||
# include <sys/types.h>
|
||||
# include <sys/sysctl.h>
|
||||
#endif
|
||||
#include <openssl/crypto.h>
|
||||
#include <openssl/bn.h>
|
||||
|
||||
@@ -123,6 +127,26 @@ void OPENSSL_cpuid_setup(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(__APPLE__) && defined(__MACH__)
|
||||
{
|
||||
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
|
||||
|
||||
memset(&ill_act, 0, sizeof(ill_act));
|
||||
ill_act.sa_handler = ill_handler;
|
||||
ill_act.sa_mask = all_masked;
|
||||
|
||||
Reference in New Issue
Block a user