From 0ec55604c0aa0574fbb04bef9e9617d9ea980568 Mon Sep 17 00:00:00 2001 From: Andy Polyakov Date: Tue, 28 Jun 2011 13:31:58 +0000 Subject: Expand OPENSSL_ia32cap_P to 64 bits. It might appear controversial, because such operation can be considered as breaking binary compatibility. However! OPNESSL_ia32cap_P is accessed by application through pointer returned by OPENSSL_ia32cap_loc() and such change of *internal* OPENSSL_ia32cap_P declaration is possible specifically on little-endian platforms, such as x86[_64] ones in question. In addition, if 32-bit application calls OPENSSL_ia32cap_loc(), it clears upper half of capability vector maintaining the illusion that it's still 32 bits wide. --- crypto/cryptlib.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'crypto/cryptlib.h') diff --git a/crypto/cryptlib.h b/crypto/cryptlib.h index fc249c57f3..1761f6b668 100644 --- a/crypto/cryptlib.h +++ b/crypto/cryptlib.h @@ -99,7 +99,7 @@ extern "C" { #define HEX_SIZE(type) (sizeof(type)*2) void OPENSSL_cpuid_setup(void); -extern unsigned long OPENSSL_ia32cap_P; +extern unsigned int OPENSSL_ia32cap_P[]; void OPENSSL_showfatal(const char *,...); void *OPENSSL_stderr(void); extern int OPENSSL_NONPIC_relocated; -- cgit v1.2.3