[openssl-dev] OpenSSL 1.1-pre3 fails on Solaris

Erik Forsberg erik at efca.com
Tue Feb 16 07:19:10 UTC 2016


Linking on Solaris is broken
configuration was basically identical to solaris64-x86_64-cc
but looks like a generic failure in Makefile.shared
the -z argument is malformed on Solaris platforms.

LD_LIBRARY_PATH=.: cc -DDSO_DLFCN -DHAVE_DLFCN_H -DOPENSSL_THREADS -DOPENSSL_PIC -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_
MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM 
-DPOLY1305_ASM -DOPENSSLDIR="/usr/local/ssl" -DENGINESDIR="/usr/local/lib/amd64/engines" -KPIC -D_REENTRANT -m64 -xarch=generic -xstrconst -
Xa -DL_ENDIAN -DFILIO_H -xO5 -xdepend -xbuiltin -G -dy -z text -R/usr/local/lib/amd64 -h libcrypto.so.1.1 -Wl,-Bsymbolic -o ./libcrypto.so.1
.1 -z allextract,-M,crypto.map ./libcrypto.a -z defaultextract -L. -lsocket -lnsl -ldl -lpthread
ld: fatal: option '-z' has illegal argument 'allextract,-M,crypto.map'
*** Error code 2
The following command caused the error:
if (cc -Wl,-V /dev/null 2>&1 | grep '^GNU ld' )>/dev/null; then \
    SHLIB_COMPAT=; SHLIB_SOVER=;  if [ -n "1.1;" ]; then  prev="";  for v in `echo "1.1 ;" | cut -d';' -f1`; do  SHLIB_SOVER_NODOT=$v;  SHLI
B_SOVER=.$v;  if [ -n "$prev" ]; then  SHLIB_COMPAT="$SHLIB_COMPAT .$prev";  fi;  prev=$v;  done;  fi;  SHLIB=libcrypto.so;  SHLIB_SUFFIX=; 
 ALLSYMSFLAGS='-Wl,--whole-archive';  NOALLSYMSFLAGS='-Wl,--no-whole-archive';  SHAREDFLAGS="-DDSO_DLFCN -DHAVE_DLFCN_H -DOPENSSL_THREADS -D
OPENSSL_PIC -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD
5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr
/local/lib/amd64/engines\"" -KPIC  -D_REENTRANT -m64 -xarch=generic -xstrconst -Xa -DL_ENDIAN -DFILIO_H -xO5 -xdepend -xbuiltin -G -dy -z te
xt -R/usr/local/lib/amd64 -shared -Wl,-Bsymbolic -Wl,-soname=$SHLIB$SHLIB_SOVER$SHLIB_SUFFIX"; \
else \
    SHLIB_COMPAT=; SHLIB_SOVER=;  if [ -n "1.1;" ]; then  prev="";  for v in `echo "1.1 ;" | cut -d';' -f1`; do  SHLIB_SOVER_NODOT=$v;  SHLI
B_SOVER=.$v;  if [ -n "$prev" ]; then  SHLIB_COMPAT="$SHLIB_COMPAT .$prev";  fi;  prev=$v;  done;  fi; \
    MINUSZ='-z '; \
    (cc -v 2>&1 | grep gcc) > /dev/null && MINUSZ='-Wl,-z,'; \
    SHLIB=libcrypto.so; \
    SHLIB_SUFFIX=;\
    if [ crypto != "crypto" -a crypto != "ssl" ]; then \
        ALLSYMSFLAGS="${MINUSZ}allextract"; \
    else \
        /usr/local/bin/perl ./util/mkdef.pl crypto linux >crypto.map; \
        ALLSYMSFLAGS="${MINUSZ}allextract,-M,crypto.map"; \
    fi; \
    NOALLSYMSFLAGS="${MINUSZ}defaultextract"; \
    SHAREDFLAGS="-DDSO_DLFCN -DHAVE_DLFCN_H -DOPENSSL_THREADS -DOPENSSL_PIC -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5
 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPOL
Y1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/amd64/engines\"" -KPIC  -D_REENTRANT -m64 -xarch=generic -xstrcon
st -Xa -DL_ENDIAN -DFILIO_H -xO5 -xdepend -xbuiltin -G -dy -z text -R/usr/local/lib/amd64 -h $SHLIB$SHLIB_SOVER$SHLIB_SUFFIX -Wl,-Bsymbolic"
; \
fi; \
SHOBJECTS="./libcrypto.a "; ( :;    LIBDEPS="${LIBDEPS:--L.  -lsocket -lnsl -ldl -lpthread}";  SHAREDCMD="${SHAREDCMD:-cc}";  SHAREDFLAGS="$
{SHAREDFLAGS:--DDSO_DLFCN -DHAVE_DLFCN_H -DOPENSSL_THREADS -DOPENSSL_PIC -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -D
OPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPOLY13
05_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/amd64/engines\"" -KPIC  -D_REENTRANT -m64 -xarch=generic -xstrconst 
-Xa -DL_ENDIAN -DFILIO_H -xO5 -xdepend -xbuiltin -G -dy -z text -R/usr/local/lib/amd64}";  LIBPATH=`for x in $LIBDEPS; do echo $x; done | se
d -e 's/^ *-L//;t' -e d | uniq`;  LIBPATH=`echo $LIBPATH | sed -e 's/ /:/g'`;  echo LD_LIBRARY_PATH=$LIBPATH:$LD_LIBRARY_PATH  ${SHAREDCMD} 
${SHAREDFLAGS}  -o ./$SHLIB$SHLIB_SOVER$SHLIB_SUFFIX  $ALLSYMSFLAGS $SHOBJECTS $NOALLSYMSFLAGS $LIBDEPS;  LD_LIBRARY_PATH=$LIBPATH:$LD_LIBRA
RY_PATH  ${SHAREDCMD} ${SHAREDFLAGS}  -o ./$SHLIB$SHLIB_SOVER$SHLIB_SUFFIX  $ALLSYMSFLAGS $SHOBJECTS $NOALLSYMSFLAGS $LIBDEPS  ) && if [ -n 
"$INHIBIT_SYMLINKS" ]; then :; else  prev=$SHLIB$SHLIB_SOVER$SHLIB_SUFFIX;  if [ -n "$SHLIB_COMPAT" ]; then  for x in $SHLIB_COMPAT; do  ( :
; rm -f ./$SHLIB$x$SHLIB_SUFFIX;  ln -s $prev ./$SHLIB$x$SHLIB_SUFFIX );  prev=$SHLIB$x$SHLIB_SUFFIX;  done;  fi;  if [ -n "$SHLIB_SOVER" ];
 then  ( :; rm -f ./$SHLIB$SHLIB_SUFFIX;  ln -s $prev ./$SHLIB$SHLIB_SUFFIX );  fi;  fi
make: Fatal error: Command failed for target `link_a.solaris'
Current working directory /export/home/src/openssl-1.1/x64
*** Error code 1


More information about the openssl-dev mailing list