Skip to content

OpenSSL 3.0.0 alpha 10 fails to build when no-deprecated is specified #13865

@quanah

Description

@quanah

I wanted to test that other software I build that relies on OpenSSL is not using deprecated functions. However, if I specify the "no-deprecated" flag to configure, the build fails.

Full configuration details:

perl configdata.pm --dump

Command line (with current working directory = .):

    /usr/bin/perl ./Configure no-idea enable-ec_nistp_64_gcc_128 no-mdc2 no-rc5 no-egd no-deprecated -g --debug --prefix=/opt/symas/common --libdir=lib --openssldir=/opt/sym
as/common/etc/ssl shared linux-x86_64 -g -O0 -DOPENSSL_NO_HEARTBEATS

Perl information:

    /usr/bin/perl
    5.26.1 for x86_64-linux-gnu-thread-multi

Enabled features:

    acvp_tests
    aria
    asm
    async
    autoalginit
    autoerrinit
    autoload-config
    bf
    blake2
    bulk
    camellia
    cast
    chacha
    cmac
    cmp
    cms
    comp
    ct
    des
    dgram
    dh
    dsa
    dso
    dtls
    ec
    ec2m
    ecdh
    ecdsa
    ec_nistp_64_gcc_128
    err
    filenames
    fips
    fips-securitychecks
    gost
    legacy
    makedepend
    md4
    module
    multiblock
    nextprotoneg
    pinshared
    ocb
    ocsp
    pic
    poly1305
    posix-io
    psk
    rc2
    rc4
    rdrand
    rfc3779
    rmd160
    scrypt
    secure-memory
    seed
    shared
    siphash
    siv
    sm2
    sm3
    sm4
    sock
    srp
    srtp
    sse2
    ssl
    static-engine
    stdio
    tests
    threads
    tls
    ts
    ui-console
    whirlpool
    tls1
    tls1-method
    tls1_1
    tls1_1-method
    tls1_2
    tls1_2-method
    tls1_3
    dtls1
    dtls1-method
    dtls1_2
    dtls1_2-method

Disabled features:

    afalgeng            [cascade]        OPENSSL_NO_AFALGENG
    asan                [default]        OPENSSL_NO_ASAN
    buildtest-c++       [default]
    capieng             [cascade]        OPENSSL_NO_CAPIENG
    crypto-mdebug       [default]        OPENSSL_NO_CRYPTO_MDEBUG
    deprecated          [option]         OPENSSL_NO_DEPRECATED
    devcryptoeng        [default]        OPENSSL_NO_DEVCRYPTOENG
    dynamic-engine      [cascade]
    egd                 [option]         OPENSSL_NO_EGD
    engine              [cascade]        OPENSSL_NO_ENGINE (skip crypto/engine)
    external-tests      [default]        OPENSSL_NO_EXTERNAL_TESTS
    fuzz-libfuzzer      [default]        OPENSSL_NO_FUZZ_LIBFUZZER
    fuzz-afl            [default]        OPENSSL_NO_FUZZ_AFL
    idea                [option]         OPENSSL_NO_IDEA (skip crypto/idea)
    ktls                [default]        OPENSSL_NO_KTLS
    md2                 [default]        OPENSSL_NO_MD2 (skip crypto/md2)
    mdc2                [option]         OPENSSL_NO_MDC2 (skip crypto/mdc2)
    msan                [default]        OPENSSL_NO_MSAN
    padlockeng          [cascade]        OPENSSL_NO_PADLOCKENG
    rc5                 [option]         OPENSSL_NO_RC5 (skip crypto/rc5)
    sctp                [default]        OPENSSL_NO_SCTP
    ssl-trace           [default]        OPENSSL_NO_SSL_TRACE
    trace               [default]        OPENSSL_NO_TRACE
    ubsan               [default]        OPENSSL_NO_UBSAN
    unit-test           [default]        OPENSSL_NO_UNIT_TEST
    uplink              [no uplink_arch] OPENSSL_NO_UPLINK
    weak-ssl-ciphers    [default]        OPENSSL_NO_WEAK_SSL_CIPHERS
    zlib                [default]
    zlib-dynamic        [default]
    ssl3                [default]        OPENSSL_NO_SSL3
    ssl3-method         [default]        OPENSSL_NO_SSL3_METHOD

Config target attributes:

    AR => "ar",
    ARFLAGS => "qc",
    CC => "gcc",
    CFLAGS => "-Wall -O0 -g",
    CXX => "g++",
    CXXFLAGS => "-Wall -O0 -g",
    HASHBANGPERL => "/usr/bin/env perl",
    RANLIB => "ranlib",
    RC => "windres",
    asm_arch => "x86_64",
    bn_ops => "SIXTY_FOUR_BIT_LONG",
    build_file => "Makefile",
    build_scheme => [ "unified", "unix" ],
    cflags => "-pthread -m64",
    cppflags => "",
    cxxflags => "-std=c++11 -pthread -m64",
    defines => [ "OPENSSL_BUILDING_OPENSSL" ],
    disable => [  ],
    dso_ldflags => "-Wl,-z,defs",
    dso_scheme => "dlfcn",
    enable => [ "afalgeng" ],
    ex_libs => "-ldl -pthread",
    includes => [  ],
    lflags => "",
    lib_cflags => "",
    lib_cppflags => "-DOPENSSL_USE_NODELETE -DL_ENDIAN",
    lib_defines => [  ],
    module_cflags => "-fPIC",
    module_cxxflags => undef,
    module_ldflags => "-Wl,-znodelete -shared -Wl,-Bsymbolic",
    multilib => "64",
    perl_platform => "Unix",
    perlasm_scheme => "elf",
    shared_cflag => "-fPIC",
    shared_defflag => "-Wl,--version-script=",
    shared_defines => [  ],
    shared_ldflag => "-Wl,-znodelete -shared -Wl,-Bsymbolic",
    shared_rcflag => "",
    shared_sonameflag => "-Wl,-soname=",
    shared_target => "linux-shared",
    thread_defines => [  ],
    thread_scheme => "pthreads",
    unistd => "<unistd.h>",

Recorded environment:

    AR =
    BUILDFILE =
    CC =
    CFLAGS = -g -fdebug-prefix-map=/home/build/git/symas-packages/thirdparty/openssl/build/UBUNTU18_64/symas-openssl=. -fstack-protector-strong -Wformat -Werror=format-security -O0
    CPPFLAGS = -Wdate-time -D_FORTIFY_SOURCE=2
    CROSS_COMPILE =
    CXX =
    CXXFLAGS = -g -O2 -fdebug-prefix-map=/home/build/git/symas-packages/thirdparty/openssl/build/UBUNTU18_64/symas-openssl=. -fstack-protector-strong -Wformat -Werror=format-security
    HASHBANGPERL =
    LDFLAGS = -Wl,-Bsymbolic-functions -Wl,-z,relro "-L/opt/symas/common/lib -R/opt/symas/common/lib -Wl,-rpath,/opt/symas/common/lib"
    LDLIBS =
    OPENSSL_LOCAL_CONFIG_DIR =
    PERL =
    RANLIB =
    RC =
    RCFLAGS =
    WINDRES =
    __CNF_CFLAGS =
    __CNF_CPPDEFINES =
    __CNF_CPPFLAGS =
    __CNF_CPPINCLUDES =
    __CNF_CXXFLAGS =
    __CNF_LDFLAGS =
    __CNF_LDLIBS =

Makevars:

    AR              = ar
    ARFLAGS         = qc
    CC              = gcc
    CFLAGS          = -g -fdebug-prefix-map=/home/build/git/symas-packages/thirdparty/openssl/build/UBUNTU18_64/symas-openssl=. -fstack-protector-strong -Wformat -Werror=format-security -O0 -g -g -O0
    CPPDEFINES      = OPENSSL_NO_HEARTBEATS
    CPPFLAGS        = -Wdate-time -D_FORTIFY_SOURCE=2
    CPPINCLUDES     =
    CXX             = g++
    CXXFLAGS        = -g -O2 -fdebug-prefix-map=/home/build/git/symas-packages/thirdparty/openssl/build/UBUNTU18_64/symas-openssl=. -fstack-protector-strong -Wformat -Werror=format-security -g -g -O0
    HASHBANGPERL    = /usr/bin/env perl
    LDFLAGS         = -Wl,-Bsymbolic-functions -Wl,-z,relro "-L/opt/symas/common/lib -R/opt/symas/common/lib -Wl,-rpath,/opt/symas/common/lib"
    LDLIBS          =
    PERL            = /usr/bin/perl
    RANLIB          = ranlib
    RC              = windres
    RCFLAGS         =

NOTE: These variables only represent the configuration view.  The build file
template may have processed these variables further, please have a look at the
build file for more exact data:
    Makefile

build file:

    Makefile

build file templates:

    Configurations/common0.tmpl
    Configurations/unix-Makefile.tmpl
    Configurations/common.tmpl

Build fails with:

/usr/bin/perl ./util/mkdef.pl --ordinals util/providers.num  --name providers/legacy --OS linux > providers/legacy.ld
gcc -fPIC -pthread -m64 -Wa,--noexecstack -g -fdebug-prefix-map=/home/build/git/symas-packages/thirdparty/openssl/build/UBUNTU18_64/symas-openssl=. -fstack-protector-strong -Wformat -Werror=format-security -O0 -g -g -O0 -L. -Wl,-z,defs -Wl,-znodelete -shared -Wl,-Bsymbolic  -Wl,-Bsymbolic-functions -Wl,-z,relro "-L/opt/symas/common/lib -R/opt/symas/common/lib -Wl,-rpath,/opt/symas/common/lib" \
        -o providers/legacy.so -Wl,--version-script=providers/legacy.ld \
        providers/legacy-dso-legacyprov.o \
        providers/liblegacy.a providers/libcommon.a providers/libnonfips.a -lcrypto -ldl -pthread
providers/liblegacy.a(liblegacy-lib-cipher_des.o): In function `des_generatekey':
./providers/implementations/ciphers/cipher_des.c:121: undefined reference to `DES_set_odd_parity'
providers/liblegacy.a(liblegacy-lib-cipher_des_hw.o): In function `cipher_hw_des_initkey':
./providers/implementations/ciphers/cipher_des_hw.c:37: undefined reference to `DES_set_key_unchecked'
providers/liblegacy.a(liblegacy-lib-cipher_des_hw.o): In function `cipher_hw_des_ecb_cipher':
./providers/implementations/ciphers/cipher_des_hw.c:60: undefined reference to `DES_ecb_encrypt'
providers/liblegacy.a(liblegacy-lib-cipher_des_hw.o): In function `cipher_hw_des_ofb64_cipher':
./providers/implementations/ciphers/cipher_des_hw.c:96: undefined reference to `DES_ofb64_encrypt'
./providers/implementations/ciphers/cipher_des_hw.c:102: undefined reference to `DES_ofb64_encrypt'
providers/liblegacy.a(liblegacy-lib-cipher_des_hw.o): In function `cipher_hw_des_cfb64_cipher':
./providers/implementations/ciphers/cipher_des_hw.c:118: undefined reference to `DES_cfb64_encrypt'
providers/liblegacy.a(liblegacy-lib-cipher_des_hw.o): In function `cipher_hw_des_cfb1_cipher':
./providers/implementations/ciphers/cipher_des_hw.c:147: undefined reference to `DES_cfb_encrypt'
providers/liblegacy.a(liblegacy-lib-cipher_des_hw.o): In function `cipher_hw_des_cfb8_cipher':
./providers/implementations/ciphers/cipher_des_hw.c:168: undefined reference to `DES_cfb_encrypt'
./providers/implementations/ciphers/cipher_des_hw.c:175: undefined reference to `DES_cfb_encrypt'
providers/liblegacy.a(liblegacy-lib-cipher_desx_hw.o): In function `cipher_hw_desx_cbc_initkey':
./providers/implementations/ciphers/cipher_desx_hw.c:33: undefined reference to `DES_set_key_unchecked'
providers/liblegacy.a(liblegacy-lib-cipher_desx_hw.o): In function `cipher_hw_desx_cbc':
./providers/implementations/ciphers/cipher_desx_hw.c:56: undefined reference to `DES_xcbc_encrypt'
./providers/implementations/ciphers/cipher_desx_hw.c:64: undefined reference to `DES_xcbc_encrypt'
providers/liblegacy.a(liblegacy-lib-cipher_tdes_common.o): In function `tdes_generatekey':
./providers/implementations/ciphers/cipher_tdes_common.c:115: undefined reference to `DES_set_odd_parity'
./providers/implementations/ciphers/cipher_tdes_common.c:117: undefined reference to `DES_set_odd_parity'
./providers/implementations/ciphers/cipher_tdes_common.c:119: undefined reference to `DES_set_odd_parity'
collect2: error: ld returned 1 exit status
Makefile:22816: recipe for target 'providers/legacy.so' failed
make[4]: *** [providers/legacy.so] Error 1
make[4]: Leaving directory '/home/build/git/symas-packages/thirdparty/openssl/build/UBUNTU18_64/symas-openssl'
Makefile:3149: recipe for target 'build_sw' failed
make[3]: *** [build_sw] Error 2

If I remove the no-deprecated flag, the build completes. It should be possible to build OpenSSL without enabling deprecated functions.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions