components/openssl/openssl-1.0.1/patches/38_remove_illegal_instruction_calls.patch
branchs11-update
changeset 3271 5df6b5141bff
child 4006 c737cefdce54
equal deleted inserted replaced
3270:bdcde5632144 3271:5df6b5141bff
       
     1 #
       
     2 # This patch was developed in house.
       
     3 # This is Solaris-specific: not suitable for upstream.
       
     4 #
       
     5 --- openssl-1.0.1h/crypto/sparcv9cap.c.~1~	Tue Aug  5 14:40:03 2014
       
     6 +++ openssl-1.0.1h/crypto/sparcv9cap.c	Tue Aug  5 15:05:26 2014
       
     7 @@ -6,6 +6,7 @@
       
     8  #include <sys/time.h>
       
     9  #include <unistd.h>
       
    10  #include <openssl/bn.h>
       
    11 +#include <sys/auxv.h>
       
    12  
       
    13  #include "sparc_arch.h"
       
    14  
       
    15 @@ -59,10 +60,8 @@
       
    16  void		_sparcv9_vis1_probe(void);
       
    17  unsigned long	_sparcv9_vis1_instrument(void);
       
    18  void		_sparcv9_vis2_probe(void);
       
    19 -void		_sparcv9_fmadd_probe(void);
       
    20  unsigned long	_sparcv9_rdcfr(void);
       
    21  void		_sparcv9_vis3_probe(void);
       
    22 -unsigned long	_sparcv9_random(void);
       
    23  #ifndef _BOOT
       
    24  size_t 	_sparcv9_vis1_instrument_bus(unsigned int *,size_t);
       
    25  size_t		_sparcv9_vis1_instrument_bus2(unsigned int *,size_t,size_t);
       
    26 @@ -236,6 +235,7 @@
       
    27  	struct sigaction	common_act,ill_oact,bus_oact;
       
    28  	sigset_t		all_masked,oset;
       
    29  	static int trigger=0;
       
    30 +	uint_t ui = 0;
       
    31  
       
    32  	if (trigger) return;
       
    33  	trigger=1;
       
    34 @@ -250,6 +250,7 @@
       
    35  
       
    36  	/* Initial value, fits UltraSPARC-I&II... */
       
    37  	OPENSSL_sparcv9cap_P[0] = SPARCV9_PREFER_FPU|SPARCV9_TICK_PRIVILEGED;
       
    38 +	(void) getisax(&ui, 1);
       
    39  
       
    40  	sigfillset(&all_masked);
       
    41  	sigdelset(&all_masked,SIGILL);
       
    42 @@ -289,11 +290,8 @@
       
    43  			}
       
    44  		}
       
    45  
       
    46 -	if (sigsetjmp(common_jmp,1) == 0)
       
    47 -		{
       
    48 -		_sparcv9_fmadd_probe();
       
    49 +	if (ui & AV_SPARC_FMAF)
       
    50  		OPENSSL_sparcv9cap_P[0] |= SPARCV9_FMADD;
       
    51 -		}
       
    52  
       
    53  	/*
       
    54  	 * VIS3 flag is tested independently from VIS1, unlike VIS2 that is,
       
    55 @@ -305,11 +303,9 @@
       
    56  		OPENSSL_sparcv9cap_P[0] |= SPARCV9_VIS3;
       
    57  		}
       
    58  
       
    59 -	if (sigsetjmp(common_jmp,1) == 0)
       
    60 -		{
       
    61 -		(void)_sparcv9_random();
       
    62 -		OPENSSL_sparcv9cap_P[0] |= SPARCV9_RANDOM;
       
    63 -		}
       
    64 +#define	AV_T4_MECHS	(AV_SPARC_AES | AV_SPARC_DES | AV_SPARC_KASUMI | \
       
    65 +			AV_SPARC_CAMELLIA | AV_SPARC_MD5 | AV_SPARC_SHA1 | \
       
    66 +			AV_SPARC_SHA256 | AV_SPARC_SHA512 | AV_SPARC_MPMUL | AV_SPARC_CRC32C)
       
    67  
       
    68  	/*
       
    69  	 * In wait for better solution _sparcv9_rdcfr is masked by
       
    70 @@ -318,10 +314,8 @@
       
    71  	 * different on Linux...
       
    72  	 */
       
    73  	if ((OPENSSL_sparcv9cap_P[0]&SPARCV9_VIS3) &&
       
    74 -	    sigsetjmp(common_jmp,1) == 0)
       
    75 -		{
       
    76 +		(ui & AV_T4_MECHS))
       
    77  		OPENSSL_sparcv9cap_P[1] = (unsigned int)_sparcv9_rdcfr();
       
    78 -		}
       
    79  
       
    80  	sigaction(SIGBUS,&bus_oact,NULL);
       
    81  	sigaction(SIGILL,&ill_oact,NULL);
       
    82 --- openssl-1.0.1h/crypto/sparccpuid.S.~1~	Mon Aug  4 14:45:58 2014
       
    83 +++ openssl-1.0.1h/crypto/sparccpuid.S	Mon Aug  4 14:51:53 2014
       
    84 @@ -315,16 +315,6 @@
       
    85  .type	_sparcv9_vis2_probe,#function
       
    86  .size	_sparcv9_vis2_probe,.-_sparcv9_vis2_probe
       
    87  
       
    88 -.global	_sparcv9_fmadd_probe
       
    89 -.align	8
       
    90 -_sparcv9_fmadd_probe:
       
    91 -	.word	0x81b00d80	!fxor	%f0,%f0,%f0
       
    92 -	.word	0x85b08d82	!fxor	%f2,%f2,%f2
       
    93 -	retl
       
    94 -	.word	0x81b80440	!fmaddd	%f0,%f0,%f2,%f0
       
    95 -.type	_sparcv9_fmadd_probe,#function
       
    96 -.size	_sparcv9_fmadd_probe,.-_sparcv9_fmadd_probe
       
    97 -
       
    98  .global	_sparcv9_rdcfr
       
    99  .align	8
       
   100  _sparcv9_rdcfr:
       
   101 @@ -341,14 +331,6 @@
       
   102  .type	_sparcv9_vis3_probe,#function
       
   103  .size	_sparcv9_vis3_probe,.-_sparcv9_vis3_probe
       
   104  
       
   105 -.global	_sparcv9_random
       
   106 -.align	8
       
   107 -_sparcv9_random:
       
   108 -	retl
       
   109 -	.word	0x91b002a0	!random	%o0
       
   110 -.type	_sparcv9_random,#function
       
   111 -.size	_sparcv9_random,.-_sparcv9_vis3_probe
       
   112 -
       
   113  .global	OPENSSL_cleanse
       
   114  .align	32
       
   115  OPENSSL_cleanse: