[openssl-dev] [openssl.org #3794] Missing symbols for padlock_aes_block during link in Master

noloader@gmail.com via RT rt at openssl.org
Fri Apr 10 10:30:08 UTC 2015


I'm trying to run OpenSSL Master through Clang's sanitizers. Below is
from 99-clang-sanitizer.conf (this is my fumbling).

$ make
making all in crypto...
/opt/local/bin/perl5 ../util/mkbuildinf.pl "/usr/local/bin/clang -I.
-I.. -I../include  -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN
-DHAVE_DLFCN_H -g3 -O1 -Wall -fsanitize=undefined -fsanitize=address
-arch x86_64 -DL_ENDIAN" "darwin-sanitize-x86_64" >buildinf.h
/usr/local/bin/clang -I. -I.. -I../include  -DOPENSSL_THREADS
-D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -g3 -O1 -Wall
-fsanitize=undefined -fsanitize=address -arch x86_64 -DL_ENDIAN   -c
-o cryptlib.o cryptlib.c
...
( :; LIBDEPS="${LIBDEPS:--L.. -lssl  -L.. -lcrypto -arch x86_64}";
LDCMD="${LDCMD:-/usr/local/bin/clang}";
LDFLAGS="${LDFLAGS:--DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN
-DHAVE_DLFCN_H -g3 -O1 -Wall -fsanitize=undefined -fsanitize=address
-arch x86_64 -DL_ENDIAN}"; LIBPATH=`for x in $LIBDEPS; do echo $x;
done | sed -e 's/^ *-L//;t' -e d | uniq`; LIBPATH=`echo $LIBPATH | sed
-e 's/ /:/g'`; LD_LIBRARY_PATH=$LIBPATH:$LD_LIBRARY_PATH ${LDCMD}
${LDFLAGS} -o ${APPNAME:=openssl} openssl.o verify.o asn1pars.o req.o
dgst.o dh.o dhparam.o enc.o passwd.o gendh.o errstr.o ca.o pkcs7.o
crl2p7.o crl.o rsa.o rsautl.o dsa.o dsaparam.o ec.o ecparam.o x509.o
genrsa.o gendsa.o genpkey.o s_server.o s_client.o speed.o s_time.o
apps.o s_cb.o s_socket.o app_rand.o version.o sess_id.o ciphers.o
nseq.o pkcs12.o pkcs8.o pkey.o pkeyparam.o pkeyutl.o spkac.o smime.o
cms.o rand.o engine.o ocsp.o prime.o ts.o srp.o ${LIBDEPS} )
Undefined symbols for architecture x86_64:
  "_padlock_aes_block", referenced from:
      _padlock_ofb_cipher in libcrypto.a(e_padlock.o)
      _padlock_cfb_cipher in libcrypto.a(e_padlock.o)
  "_padlock_capability", referenced from:
      _padlock_available in libcrypto.a(e_padlock.o)
  "_padlock_cbc_encrypt", referenced from:
      _padlock_cbc_cipher in libcrypto.a(e_padlock.o)
  "_padlock_cfb_encrypt", referenced from:
      _padlock_cfb_cipher in libcrypto.a(e_padlock.o)
  "_padlock_ctr32_encrypt", referenced from:
      _padlock_ctr32_encrypt_glue in libcrypto.a(e_padlock.o)
  "_padlock_ecb_encrypt", referenced from:
      _padlock_ecb_cipher in libcrypto.a(e_padlock.o)
  "_padlock_key_bswap", referenced from:
      _padlock_aes_init_key in libcrypto.a(e_padlock.o)
  "_padlock_ofb_encrypt", referenced from:
      _padlock_ofb_cipher in libcrypto.a(e_padlock.o)
  "_padlock_reload_key", referenced from:
      _padlock_aes_init_key in libcrypto.a(e_padlock.o)
      _padlock_ofb_cipher in libcrypto.a(e_padlock.o)
      _padlock_cfb_cipher in libcrypto.a(e_padlock.o)
  "_padlock_xstore", referenced from:
      _padlock_rand_bytes in libcrypto.a(e_padlock.o)
  "_rc4_md5_enc", referenced from:
      _rc4_hmac_md5_cipher in libcrypto.a(e_rc4_hmac_md5.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [link_app.] Error 1
make[1]: *** [openssl] Error 2
make: *** [build_apps] Error 1

**********

$ ./Configure darwin-sanitize-x86_64
Configuring for darwin-sanitize-x86_64
    no-deprecated   [default]  OPENSSL_NO_DEPRECATED (skip dir)
    no-ec_nistp_64_gcc_128 [default]  OPENSSL_NO_EC_NISTP_64_GCC_128 (skip dir)
    no-gmp          [default]  OPENSSL_NO_GMP (skip dir)
    no-jpake        [experimental] OPENSSL_NO_JPAKE (skip dir)
    no-krb5         [krb5-flavor not specified] OPENSSL_NO_KRB5
    no-md2          [default]  OPENSSL_NO_MD2 (skip dir)
    no-rc5          [default]  OPENSSL_NO_RC5 (skip dir)
    no-rfc3779      [default]  OPENSSL_NO_RFC3779 (skip dir)
    no-sctp         [default]  OPENSSL_NO_SCTP (skip dir)
    no-shared       [default]
    no-ssl-trace    [default]  OPENSSL_NO_SSL_TRACE (skip dir)
    no-store        [experimental] OPENSSL_NO_STORE (skip dir)
    no-unit-test    [default]  OPENSSL_NO_UNIT_TEST (skip dir)
    no-zlib         [default]
    no-zlib-dynamic [default]
IsMK1MF=0
CC            =/usr/local/bin/clang
CFLAG         =-DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN
-DHAVE_DLFCN_H -g3 -O1 -Wall -fsanitize=undefined -fsanitize=address
-arch x86_64 -DL_ENDIAN
EX_LIBS       =-arch x86_64
CPUID_OBJ     =mem_clr.o
BN_ASM        =bn_asm.o
EC_ASM        =
DES_ENC       =des_enc.o fcrypt_b.o
AES_ENC       =aes_core.o aes_cbc.o
BF_ENC        =bf_enc.o
CAST_ENC      =c_enc.o
RC4_ENC       =rc4_enc.o rc4_skey.o
RC5_ENC       =rc5_enc.o
MD5_OBJ_ASM   =
SHA1_OBJ_ASM  =
RMD160_OBJ_ASM=
CMLL_ENC      =camellia.o cmll_misc.o cmll_cbc.o
MODES_OBJ     =
ENGINES_OBJ   =
PROCESSOR     =
RANLIB        =/usr/bin/ranlib
ARFLAGS       =
PERL          =/opt/local/bin/perl5
SIXTY_FOUR_BIT_LONG mode
DES_UNROLL used
DES_INT used
RC4_CHUNK is unsigned long

Configured for darwin-sanitize-x86_64.

**********

## Personal configuration targets
##
## If you edit this file, run this command before committing
##    make -f Makefile.org TABLE
## This file is interpolated by the Configure script.

%targets = (
    "darwin-sanitize-x86_64" => {
        sys_id           => "MACOSX",
        # inherit_from     => [ asm("x86_64_asm") ],
        cc               => "clang",
        cflags           => "-g3 -O1 -Wall -fsanitize=undefined
-fsanitize=address -arch x86_64 -DL_ENDIAN",
        lflags           => "-arch x86_64",
        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL",
        thread_cflag     => "-D_REENTRANT",
        perlasm_scheme   => "osx64",
        dso_scheme       => "dlfcn",
    },
    "darwin-sanitize-i386" => {
        sys_id           => "MACOSX",
        # inherit_from     => [ asm("x86_asm") ],
        cc               => "clang",
        cflags           => "-g3 -O1 -Wall -fsanitize=undefined
-fsanitize=address -arch i386 -DL_ENDIAN",
        lflags           => "-arch i386",
        bn_ops           => "BN_LLONG RC4_INT RC4_CHUNK DES_UNROLL BF_PTR",
        thread_cflag     => "-D_REENTRANT",
        perlasm_scheme   => "osx32",
        dso_scheme       => "dlfcn",
    },
);

**********
$ grep -R padlock_aes_block *
engines/asm/e_padlock-x86.pl:&function_begin_B("padlock_aes_block");
engines/asm/e_padlock-x86.pl:&function_end_B("padlock_aes_block");
engines/asm/e_padlock-x86_64.pl:.globl    padlock_aes_block
engines/asm/e_padlock-x86_64.pl:.type    padlock_aes_block,\@function,3
engines/asm/e_padlock-x86_64.pl:padlock_aes_block:
engines/asm/e_padlock-x86_64.pl:.size    padlock_aes_block,.-padlock_aes_block
engines/e_padlock.c:void padlock_aes_block(void *out, const void *inp,
engines/e_padlock.c:            padlock_aes_block(ivp, ivp, cdata);
engines/e_padlock.c:            padlock_aes_block(ivp, ivp, cdata);
engines/e_padlock.c:        padlock_aes_block(ivp, ivp, cdata);
Binary file engines/e_padlock.o matches
Binary file libcrypto.a matches




More information about the openssl-dev mailing list