OK bcook@, looks fine for portable too.
> On Nov 4, 2016, at 11:02 AM, Tom Cosgrove
> <tom.cosgr...@arches-consulting.com> wrote:
>
>>>> Miod Vallat 4-Nov-16 08:53 >>>
>>
>> I386_ONLY was used to prefer a different assembler sequence in the
>> sha512 code, which would be faster on 80386 processors, but slower on
>> 80486 and above.
>>
>> This code path has never been enabled, and there are actually no plans
>> to make libcrypto friendlier to genuine 80386 chips, so why bother
>> keeping this - it's only contributing to obfuscation.
>
> ... not to mention that OpenBSD hasn't supported the 386 for a long time now
>
> ok tom@
>
>> Index: cryptlib.c
>> ===================================================================
>> RCS file: /cvs/src/lib/libcrypto/cryptlib.c,v
>> retrieving revision 1.37
>> diff -u -p -r1.37 cryptlib.c
>> --- cryptlib.c 13 Sep 2015 16:56:11 -0000 1.37
>> +++ cryptlib.c 4 Nov 2016 08:49:22 -0000
>> @@ -635,7 +635,7 @@ OPENSSL_cpu_caps(void)
>> return *(uint64_t *)OPENSSL_ia32cap_P;
>> }
>>
>> -#if defined(OPENSSL_CPUID_OBJ) && !defined(OPENSSL_NO_ASM) &&
>> !defined(I386_ONLY)
>> +#if defined(OPENSSL_CPUID_OBJ) && !defined(OPENSSL_NO_ASM)
>> #define OPENSSL_CPUID_SETUP
>> typedef unsigned long long IA32CAP;
>> void
>> Index: md32_common.h
>> ===================================================================
>> RCS file: /cvs/src/lib/libcrypto/md32_common.h,v
>> retrieving revision 1.21
>> diff -u -p -r1.21 md32_common.h
>> --- md32_common.h 4 Sep 2016 14:31:29 -0000 1.21
>> +++ md32_common.h 4 Nov 2016 08:49:22 -0000
>> @@ -152,8 +152,8 @@ static inline uint32_t ROTATE(uint32_t a
>> #if defined(DATA_ORDER_IS_BIG_ENDIAN)
>>
>> #if defined(__GNUC__) && __GNUC__>=2 && !defined(OPENSSL_NO_ASM) &&
>> !defined(OPENSSL_NO_INLINE_ASM)
>> -# if ((defined(__i386) || defined(__i386__)) && !defined(I386_ONLY)) || \
>> - (defined(__x86_64) || defined(__x86_64__))
>> +# if (defined(__i386) || defined(__i386__) || \
>> + defined(__x86_64) || defined(__x86_64__))
>> /*
>> * This gives ~30-40% performance improvement in SHA-256 compiled
>> * with gcc [on P4]. Well, first macro to be frank. We can pull
>> Index: arch/alpha/opensslconf.h
>> ===================================================================
>> RCS file: /cvs/src/lib/libcrypto/arch/alpha/opensslconf.h,v
>> retrieving revision 1.7
>> diff -u -p -r1.7 opensslconf.h
>> --- arch/alpha/opensslconf.h 19 Jun 2015 06:05:11 -0000 1.7
>> +++ arch/alpha/opensslconf.h 4 Nov 2016 08:49:22 -0000
>> @@ -1,9 +1,6 @@
>> #include <openssl/opensslfeatures.h>
>> /* crypto/opensslconf.h.in */
>>
>> -/* Generate 80386 code? */
>> -#undef I386_ONLY
>> -
>> #if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR)
>> #define OPENSSLDIR "/etc/ssl"
>> #endif
>> Index: arch/amd64/opensslconf.h
>> ===================================================================
>> RCS file: /cvs/src/lib/libcrypto/arch/amd64/opensslconf.h,v
>> retrieving revision 1.9
>> diff -u -p -r1.9 opensslconf.h
>> --- arch/amd64/opensslconf.h 19 Jun 2015 06:05:11 -0000 1.9
>> +++ arch/amd64/opensslconf.h 4 Nov 2016 08:49:22 -0000
>> @@ -1,9 +1,6 @@
>> #include <openssl/opensslfeatures.h>
>> /* crypto/opensslconf.h.in */
>>
>> -/* Generate 80386 code? */
>> -#undef I386_ONLY
>> -
>> #if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR)
>> #define OPENSSLDIR "/etc/ssl"
>> #endif
>> Index: arch/arm/opensslconf.h
>> ===================================================================
>> RCS file: /cvs/src/lib/libcrypto/arch/arm/opensslconf.h,v
>> retrieving revision 1.7
>> diff -u -p -r1.7 opensslconf.h
>> --- arch/arm/opensslconf.h 19 Jun 2015 06:05:11 -0000 1.7
>> +++ arch/arm/opensslconf.h 4 Nov 2016 08:49:22 -0000
>> @@ -1,9 +1,6 @@
>> #include <openssl/opensslfeatures.h>
>> /* crypto/opensslconf.h.in */
>>
>> -/* Generate 80386 code? */
>> -#undef I386_ONLY
>> -
>> #if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR)
>> #define OPENSSLDIR "/etc/ssl"
>> #endif
>> Index: arch/hppa/opensslconf.h
>> ===================================================================
>> RCS file: /cvs/src/lib/libcrypto/arch/hppa/opensslconf.h,v
>> retrieving revision 1.7
>> diff -u -p -r1.7 opensslconf.h
>> --- arch/hppa/opensslconf.h 19 Jun 2015 06:05:11 -0000 1.7
>> +++ arch/hppa/opensslconf.h 4 Nov 2016 08:49:22 -0000
>> @@ -1,9 +1,6 @@
>> #include <openssl/opensslfeatures.h>
>> /* crypto/opensslconf.h.in */
>>
>> -/* Generate 80386 code? */
>> -#undef I386_ONLY
>> -
>> #if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR)
>> #define OPENSSLDIR "/etc/ssl"
>> #endif
>> Index: arch/i386/opensslconf.h
>> ===================================================================
>> RCS file: /cvs/src/lib/libcrypto/arch/i386/opensslconf.h,v
>> retrieving revision 1.7
>> diff -u -p -r1.7 opensslconf.h
>> --- arch/i386/opensslconf.h 19 Jun 2015 06:05:11 -0000 1.7
>> +++ arch/i386/opensslconf.h 4 Nov 2016 08:49:22 -0000
>> @@ -1,9 +1,6 @@
>> #include <openssl/opensslfeatures.h>
>> /* crypto/opensslconf.h.in */
>>
>> -/* Generate 80386 code? */
>> -#undef I386_ONLY
>> -
>> #if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR)
>> #define OPENSSLDIR "/etc/ssl"
>> #endif
>> Index: arch/m88k/opensslconf.h
>> ===================================================================
>> RCS file: /cvs/src/lib/libcrypto/arch/m88k/opensslconf.h,v
>> retrieving revision 1.7
>> diff -u -p -r1.7 opensslconf.h
>> --- arch/m88k/opensslconf.h 19 Jun 2015 06:05:11 -0000 1.7
>> +++ arch/m88k/opensslconf.h 4 Nov 2016 08:49:22 -0000
>> @@ -1,9 +1,6 @@
>> #include <openssl/opensslfeatures.h>
>> /* crypto/opensslconf.h.in */
>>
>> -/* Generate 80386 code? */
>> -#undef I386_ONLY
>> -
>> #if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR)
>> #define OPENSSLDIR "/etc/ssl"
>> #endif
>> Index: arch/mips64/opensslconf.h
>> ===================================================================
>> RCS file: /cvs/src/lib/libcrypto/arch/mips64/opensslconf.h,v
>> retrieving revision 1.7
>> diff -u -p -r1.7 opensslconf.h
>> --- arch/mips64/opensslconf.h 19 Jun 2015 06:05:11 -0000 1.7
>> +++ arch/mips64/opensslconf.h 4 Nov 2016 08:49:22 -0000
>> @@ -1,9 +1,6 @@
>> #include <openssl/opensslfeatures.h>
>> /* crypto/opensslconf.h.in */
>>
>> -/* Generate 80386 code? */
>> -#undef I386_ONLY
>> -
>> #if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR)
>> #define OPENSSLDIR "/etc/ssl"
>> #endif
>> Index: arch/powerpc/opensslconf.h
>> ===================================================================
>> RCS file: /cvs/src/lib/libcrypto/arch/powerpc/opensslconf.h,v
>> retrieving revision 1.7
>> diff -u -p -r1.7 opensslconf.h
>> --- arch/powerpc/opensslconf.h 19 Jun 2015 06:05:11 -0000 1.7
>> +++ arch/powerpc/opensslconf.h 4 Nov 2016 08:49:22 -0000
>> @@ -1,9 +1,6 @@
>> #include <openssl/opensslfeatures.h>
>> /* crypto/opensslconf.h.in */
>>
>> -/* Generate 80386 code? */
>> -#undef I386_ONLY
>> -
>> #if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR)
>> #define OPENSSLDIR "/etc/ssl"
>> #endif
>> Index: arch/sh/opensslconf.h
>> ===================================================================
>> RCS file: /cvs/src/lib/libcrypto/arch/sh/opensslconf.h,v
>> retrieving revision 1.7
>> diff -u -p -r1.7 opensslconf.h
>> --- arch/sh/opensslconf.h 19 Jun 2015 06:05:11 -0000 1.7
>> +++ arch/sh/opensslconf.h 4 Nov 2016 08:49:22 -0000
>> @@ -1,9 +1,6 @@
>> #include <openssl/opensslfeatures.h>
>> /* crypto/opensslconf.h.in */
>>
>> -/* Generate 80386 code? */
>> -#undef I386_ONLY
>> -
>> #if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR)
>> #define OPENSSLDIR "/etc/ssl"
>> #endif
>> Index: arch/sparc/opensslconf.h
>> ===================================================================
>> RCS file: /cvs/src/lib/libcrypto/arch/sparc/opensslconf.h,v
>> retrieving revision 1.7
>> diff -u -p -r1.7 opensslconf.h
>> --- arch/sparc/opensslconf.h 19 Jun 2015 06:05:11 -0000 1.7
>> +++ arch/sparc/opensslconf.h 4 Nov 2016 08:49:22 -0000
>> @@ -1,9 +1,6 @@
>> #include <openssl/opensslfeatures.h>
>> /* crypto/opensslconf.h.in */
>>
>> -/* Generate 80386 code? */
>> -#undef I386_ONLY
>> -
>> #if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR)
>> #define OPENSSLDIR "/etc/ssl"
>> #endif
>> Index: arch/sparc64/opensslconf.h
>> ===================================================================
>> RCS file: /cvs/src/lib/libcrypto/arch/sparc64/opensslconf.h,v
>> retrieving revision 1.7
>> diff -u -p -r1.7 opensslconf.h
>> --- arch/sparc64/opensslconf.h 19 Jun 2015 06:05:11 -0000 1.7
>> +++ arch/sparc64/opensslconf.h 4 Nov 2016 08:49:22 -0000
>> @@ -1,9 +1,6 @@
>> #include <openssl/opensslfeatures.h>
>> /* crypto/opensslconf.h.in */
>>
>> -/* Generate 80386 code? */
>> -#undef I386_ONLY
>> -
>> #if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR)
>> #define OPENSSLDIR "/etc/ssl"
>> #endif
>> Index: engine/eng_padlock.c
>> ===================================================================
>> RCS file: /cvs/src/lib/libcrypto/engine/eng_padlock.c,v
>> retrieving revision 1.14
>> diff -u -p -r1.14 eng_padlock.c
>> --- engine/eng_padlock.c 7 Feb 2015 13:19:15 -0000 1.14
>> +++ engine/eng_padlock.c 4 Nov 2016 08:49:23 -0000
>> @@ -100,7 +100,7 @@
>> In addition, because of the heavy use of inline assembler,
>> compiler choice is limited to GCC and Microsoft C. */
>> #undef COMPILE_HW_PADLOCK
>> -#if !defined(I386_ONLY) && !defined(OPENSSL_NO_INLINE_ASM)
>> +#if !defined(OPENSSL_NO_INLINE_ASM)
>> # if (defined(__GNUC__) && (defined(__i386__) || defined(__i386)))
>> # define COMPILE_HW_PADLOCK
>> # endif
>> Index: evp/e_aes.c
>> ===================================================================
>> RCS file: /cvs/src/lib/libcrypto/evp/e_aes.c,v
>> retrieving revision 1.29
>> diff -u -p -r1.29 e_aes.c
>> --- evp/e_aes.c 10 Sep 2015 15:56:25 -0000 1.29
>> +++ evp/e_aes.c 4 Nov 2016 08:49:23 -0000
>> @@ -143,14 +143,14 @@ void AES_xts_decrypt(const char *inp, ch
>> const AES_KEY *key1, const AES_KEY *key2, const unsigned char iv[16]);
>> #endif
>>
>> -#if defined(AES_ASM) && !defined(I386_ONLY) && ( \
>> +#if defined(AES_ASM) && ( \
>> ((defined(__i386) || defined(__i386__) || \
>> defined(_M_IX86)) && defined(OPENSSL_IA32_SSE2))|| \
>> defined(__x86_64) || defined(__x86_64__) || \
>> defined(_M_AMD64) || defined(_M_X64) || \
>> defined(__INTEL__) )
>>
>> -extern unsigned int OPENSSL_ia32cap_P[2];
>> +extern unsigned int OPENSSL_ia32cap_P[];
>>
>> #ifdef VPAES_ASM
>> #define VPAES_CAPABLE (OPENSSL_ia32cap_P[1]&(1<<(41-32)))
>> Index: modes/gcm128.c
>> ===================================================================
>> RCS file: /cvs/src/lib/libcrypto/modes/gcm128.c,v
>> retrieving revision 1.13
>> diff -u -p -r1.13 gcm128.c
>> --- modes/gcm128.c 10 Sep 2015 15:56:25 -0000 1.13
>> +++ modes/gcm128.c 4 Nov 2016 08:49:23 -0000
>> @@ -638,8 +638,7 @@ static void gcm_gmult_1bit(u64 Xi[2],con
>> #endif
>>
>> #if TABLE_BITS==4 && defined(GHASH_ASM)
>> -# if !defined(I386_ONLY) && \
>> - (defined(__i386) || defined(__i386__) || \
>> +# if (defined(__i386) || defined(__i386__) || \
>> defined(__x86_64) || defined(__x86_64__) || \
>> defined(_M_IX86) || defined(_M_AMD64) || defined(_M_X64))
>> # define GHASH_ASM_X86_OR_64
>> Index: modes/modes_lcl.h
>> ===================================================================
>> RCS file: /cvs/src/lib/libcrypto/modes/modes_lcl.h,v
>> retrieving revision 1.8
>> diff -u -p -r1.8 modes_lcl.h
>> --- modes/modes_lcl.h 10 Jul 2014 22:45:57 -0000 1.8
>> +++ modes/modes_lcl.h 4 Nov 2016 08:49:23 -0000
>> @@ -34,7 +34,7 @@ typedef unsigned char u8;
>> # define BSWAP4(x) ({ u32 ret=(x); \
>> asm ("bswapl %0" \
>> : "+r"(ret)); ret; })
>> -# elif (defined(__i386) || defined(__i386__)) && !defined(I386_ONLY)
>> +# elif (defined(__i386) || defined(__i386__))
>> # define BSWAP8(x) ({ u32 lo=(u64)(x)>>32,hi=(x); \
>> asm ("bswapl %0; bswapl %1" \
>> : "+r"(hi),"+r"(lo)); \
>> Index: sha/sha512.c
>> ===================================================================
>> RCS file: /cvs/src/lib/libcrypto/sha/sha512.c,v
>> retrieving revision 1.14
>> diff -u -p -r1.14 sha512.c
>> --- sha/sha512.c 10 Sep 2015 15:56:26 -0000 1.14
>> +++ sha/sha512.c 4 Nov 2016 08:49:23 -0000
>> @@ -320,23 +320,12 @@ static const SHA_LONG64 K512[80] = {
>> : "=r"(ret) \
>> : "0"(ret)); ret; })
>> # elif (defined(__i386) || defined(__i386__))
>> -# if defined(I386_ONLY)
>> -# define PULL64(x) ({ const unsigned int *p=(const unsigned int *)(&(x));\
>> - unsigned int hi=p[0],lo=p[1]; \
>> - asm("xchgb %%ah,%%al;xchgb %%dh,%%dl;"\
>> - "roll $16,%%eax; roll $16,%%edx; "\
>> - "xchgb %%ah,%%al;xchgb %%dh,%%dl;" \
>> - : "=a"(lo),"=d"(hi) \
>> - : "0"(lo),"1"(hi) : "cc"); \
>> - ((SHA_LONG64)hi)<<32|lo; })
>> -# else
>> # define PULL64(x) ({ const unsigned int *p=(const unsigned int *)(&(x));\
>> unsigned int hi=p[0],lo=p[1]; \
>> asm ("bswapl %0; bswapl %1;" \
>> : "=r"(lo),"=r"(hi) \
>> : "0"(lo),"1"(hi)); \
>> ((SHA_LONG64)hi)<<32|lo; })
>> -# endif
>> # elif (defined(_ARCH_PPC) && defined(__64BIT__)) || defined(_ARCH_PPC64)
>> # define ROTR(a,n) ({ SHA_LONG64 ret; \
>> asm ("rotrdi %0,%1,%2" \
>