2 # This was developed in house to fix x86 compilation of hand crafted
3 # assembler, namely optimized AES cipher implementations.
4 # Otherwise, with Solaris assembler, the build will fail with errors
7 # "crypto/aes/aes-586.s", line 1002 : Illegal subtraction in ... "OPENSSL_ia32cap_P - .L004pic_point"
9 # The problem is the reference to global variable (OPENSSL_ia32cap_P)
10 # which Oracle Developer Studio assembler cannot deal with. The assembler label references
13 # There is an upstream bug that matches this:
14 # https://github.com/openssl/openssl/issues/1715
16 # However it was closed with advice to use newer/better (i.e. GNU) assembler.
18 # This is tracked as enhancement for Oracle Developer Studio:
20 # 30005149 treat undefined subtraction operand in leal instruction as relocation entry
22 --- openssl-1.0.2d/crypto/perlasm/x86gas.pl Thu Jul 9 04:57:15 2015
23 +++ openssl-1.0.2d/crypto/perlasm/x86gas.pl.new Thu Jul 30 15:17:14 2015
25 &::mov($dst,&::DWP("$indirect-$reflabel",$base));
26 $non_lazy_ptr{"$nmdecor$sym"}=$indirect;
28 - elsif ($sym eq "OPENSSL_ia32cap_P" && $::elf>0)
29 - { &::lea($dst,&::DWP("$sym-$reflabel",$base)); }
31 { &::lea($dst,&::DWP("_GLOBAL_OFFSET_TABLE_+[.-$reflabel]",