openssl: [3.0.0] Build failures on AIX 7.2 XLC/XLCLANG 16.1 32bit

Hey guys, Seeing similar linking errors using both xlc and xlclang compiler frontends for 32bit. The undefined symbols differ between them though. I’ve set -bnoquiet to get more info. 64bit builds and tests fine. Both run on the same machines. Is this another LIBPATH issue? It’s just set to the system default. If so, what’s changed since 1.1.1 that requires it to be set explicitly?

XLC error:

cc  -Iinclude  -q32 -qmaxmem=16384 -qro -qroconst -qthreaded -O -qkeyword=inline -D_THREAD_SAFE -DOPENSSL_BUILDING_OPENSSL -DNDEBUG   -c -o fuzz/client-test-bin-client.o fuzz/client.c
/usr/bin/X11/makedepend -f- -Y --  -Iinclude -q32 -qmaxmem=16384 -qro -qroconst -qthreaded -O -qkeyword=inline -D_THREAD_SAFE -DOPENSSL_BUILDING_OPENSSL -DNDEBUG  -- fuzz/client.c 2>/dev/null \
    > fuzz/client-test-bin-client.d
cc  -Iinclude  -q32 -qmaxmem=16384 -qro -qroconst -qthreaded -O -qkeyword=inline -D_THREAD_SAFE -DOPENSSL_BUILDING_OPENSSL -DNDEBUG   -c -o fuzz/client-test-bin-fuzz_rand.o fuzz/fuzz_rand.c
/usr/bin/X11/makedepend -f- -Y --  -Iinclude -q32 -qmaxmem=16384 -qro -qroconst -qthreaded -O -qkeyword=inline -D_THREAD_SAFE -DOPENSSL_BUILDING_OPENSSL -DNDEBUG  -- fuzz/fuzz_rand.c 2>/dev/null \
    > fuzz/client-test-bin-fuzz_rand.d
cc  -Iinclude  -q32 -qmaxmem=16384 -qro -qroconst -qthreaded -O -qkeyword=inline -D_THREAD_SAFE -DOPENSSL_BUILDING_OPENSSL -DNDEBUG   -c -o fuzz/client-test-bin-test-corpus.o fuzz/test-corpus.c
/usr/bin/X11/makedepend -f- -Y --  -Iinclude -q32 -qmaxmem=16384 -qro -qroconst -qthreaded -O -qkeyword=inline -D_THREAD_SAFE -DOPENSSL_BUILDING_OPENSSL -DNDEBUG  -- fuzz/test-corpus.c 2>/dev/null \
    > fuzz/client-test-bin-test-corpus.d
rm -f fuzz/client-test
${LDCMD:-cc} -q32 -qmaxmem=16384 -qro -qroconst -qthreaded -O -qkeyword=inline -L. -Wl,-bsvr4 -bnoquiet \
        -o fuzz/client-test \
        fuzz/client-test-bin-client.o \
        fuzz/client-test-bin-fuzz_rand.o \
        fuzz/client-test-bin-test-corpus.o \
        -lssl -lcrypto -lpthreads
(ld): halt 4
(ld): setopt noexpall
(ld): setopt rtl
(ld): setopt rtllib
(ld): setopt expfull
(ld): setopt svr4
(ld): setopt symbolic:1
(ld): setfflag 4
(ld): savename fuzz/client-test
(ld): filelist 12 1
(ld): i /lib/crt0.o
(ld): i fuzz/client-test-bin-client.o
(ld): i fuzz/client-test-bin-fuzz_rand.o
(ld): i fuzz/client-test-bin-test-corpus.o
(ld): lib ./libssl.a
(ld): lib ./libcrypto.a
(ld): lib /usr/lib/libpthreads.a
(ld): lib /opt/IBM/xlc/16.1.0/lib/libxlopt.a
(ld): lib /opt/IBM/xlc/16.1.0/lib/libxlipa.a
(ld): lib /opt/IBM/xlc/16.1.0/lib/libxl.a
(ld): lib /usr/lib/libc.a
(ld): lib /usr/lib/librtl.a
LIBRARY: Shared object libssl.a[libssl.so.3]: 517 symbols imported.
LIBRARY: Shared object libcrypto.a[libcrypto.so.3]: 5373 symbols imported.
LIBRARY: Shared object libpthreads.a[shr_comm.o]: 179 symbols imported.
LIBRARY: Shared object libpthreads.a[shr_xpg5.o]: 174 symbols imported.
LIBRARY: Shared object libc.a[shr.o]: 3308 symbols imported.
LIBRARY: Shared object libc.a[meth.o]: 2 symbols imported.
LIBRARY: Shared object libc.a[posix_aio.o]: 20 symbols imported.
LIBRARY: Shared object libc.a[aio.o]: 18 symbols imported.
LIBRARY: Shared object libc.a[pse.o]: 8 symbols imported.
LIBRARY: Shared object libc.a[dl.o]: 4 symbols imported.
LIBRARY: Shared object libc.a[pty.o]: 1 symbols imported.
LIBRARY: Shared object libc.a[cthread.o]: 25 symbols imported.
LIBRARY: Shared object libc.a[uchar.o]: 4 symbols imported.
LIBRARY: Shared object librtl.a[shr.o]: 1 symbols imported.
LIBRARY: Shared object librtl.a[lazy42.o]: 3 symbols imported.
FILELIST: Number of previously inserted files processed: 12
(ld): resolve
RESOLVE: 184 of 14977 symbols were kept.
(ld): addgl /usr/lib/glink.o
ADDGL: Glink code added for 45 symbols.
(ld): er full
ER: There are no unresolved symbols.
(ld): mismatch
MISMATCH: No type mismatches exist.
(ld): comprld
COMPRLD: Kept 291 of 291 relocation entries.
(ld): origin page 0x10000000 0x20000000
(ld): libpath /usr/lib:/lib
LIBPATH: Library path set to /usr/lib:/lib
(ld): save 1L .
SAVE: Section sizes = 6483+973+12 (0x1953+0x3CD+0xC hex)
SAVE: Size of TOC: 276 (0x114 hex)
(ld): rc
RC: Highest return code was 0.
cc  -Iinclude  -q32 -qmaxmem=16384 -qro -qroconst -qthreaded -O -qkeyword=inline -D_THREAD_SAFE -DOPENSSL_BUILDING_OPENSSL -DNDEBUG   -c -o fuzz/cmp-test-bin-cmp.o fuzz/cmp.c
/usr/bin/X11/makedepend -f- -Y --  -Iinclude -q32 -qmaxmem=16384 -qro -qroconst -qthreaded -O -qkeyword=inline -D_THREAD_SAFE -DOPENSSL_BUILDING_OPENSSL -DNDEBUG  -- fuzz/cmp.c 2>/dev/null \
    > fuzz/cmp-test-bin-cmp.d
cc  -Iinclude  -q32 -qmaxmem=16384 -qro -qroconst -qthreaded -O -qkeyword=inline -D_THREAD_SAFE -DOPENSSL_BUILDING_OPENSSL -DNDEBUG   -c -o fuzz/cmp-test-bin-fuzz_rand.o fuzz/fuzz_rand.c
/usr/bin/X11/makedepend -f- -Y --  -Iinclude -q32 -qmaxmem=16384 -qro -qroconst -qthreaded -O -qkeyword=inline -D_THREAD_SAFE -DOPENSSL_BUILDING_OPENSSL -DNDEBUG  -- fuzz/fuzz_rand.c 2>/dev/null \
    > fuzz/cmp-test-bin-fuzz_rand.d
cc  -Iinclude  -q32 -qmaxmem=16384 -qro -qroconst -qthreaded -O -qkeyword=inline -D_THREAD_SAFE -DOPENSSL_BUILDING_OPENSSL -DNDEBUG   -c -o fuzz/cmp-test-bin-test-corpus.o fuzz/test-corpus.c
/usr/bin/X11/makedepend -f- -Y --  -Iinclude -q32 -qmaxmem=16384 -qro -qroconst -qthreaded -O -qkeyword=inline -D_THREAD_SAFE -DOPENSSL_BUILDING_OPENSSL -DNDEBUG  -- fuzz/test-corpus.c 2>/dev/null \
    > fuzz/cmp-test-bin-test-corpus.d
rm -f fuzz/cmp-test
${LDCMD:-cc} -q32 -qmaxmem=16384 -qro -qroconst -qthreaded -O -qkeyword=inline -Wl,-bsvr4 -bnoquiet \
        -o fuzz/cmp-test \
        fuzz/cmp-test-bin-cmp.o fuzz/cmp-test-bin-fuzz_rand.o \
        fuzz/cmp-test-bin-test-corpus.o \
        libcrypto_a.a -lpthreads
(ld): halt 4
(ld): setopt noexpall
(ld): setopt rtl
(ld): setopt rtllib
(ld): setopt expfull
(ld): setopt svr4
(ld): setopt symbolic:1
(ld): setfflag 4
(ld): savename fuzz/cmp-test
(ld): filelist 11 1
(ld): i /lib/crt0.o
(ld): i fuzz/cmp-test-bin-cmp.o
(ld): i fuzz/cmp-test-bin-fuzz_rand.o
(ld): i fuzz/cmp-test-bin-test-corpus.o
(ld): i libcrypto_a.a
(ld): lib /usr/lib/libpthreads.a
(ld): lib /opt/IBM/xlc/16.1.0/lib/libxlopt.a
(ld): lib /opt/IBM/xlc/16.1.0/lib/libxlipa.a
(ld): lib /opt/IBM/xlc/16.1.0/lib/libxl.a
(ld): lib /usr/lib/libc.a
(ld): lib /usr/lib/librtl.a
LIBRARY: Shared object libpthreads.a[shr_comm.o]: 179 symbols imported.
LIBRARY: Shared object libpthreads.a[shr_xpg5.o]: 174 symbols imported.
LIBRARY: Shared object libc.a[shr.o]: 3308 symbols imported.
LIBRARY: Shared object libc.a[meth.o]: 2 symbols imported.
LIBRARY: Shared object libc.a[posix_aio.o]: 20 symbols imported.
LIBRARY: Shared object libc.a[aio.o]: 18 symbols imported.
LIBRARY: Shared object libc.a[pse.o]: 8 symbols imported.
LIBRARY: Shared object libc.a[dl.o]: 4 symbols imported.
LIBRARY: Shared object libc.a[pty.o]: 1 symbols imported.
LIBRARY: Shared object libc.a[cthread.o]: 25 symbols imported.
LIBRARY: Shared object libc.a[uchar.o]: 4 symbols imported.
LIBRARY: Shared object librtl.a[shr.o]: 1 symbols imported.
LIBRARY: Shared object librtl.a[lazy42.o]: 3 symbols imported.
FILELIST: Number of previously inserted files processed: 11
(ld): resolve
RESOLVE: 20842 of 52410 symbols were kept.
(ld): addgl /usr/lib/glink.o
ADDGL: Glink code added for 112 symbols.
(ld): er full
ld: 0711-318 ERROR: Undefined symbols were found.
        The following symbols are in error:
 Symbol                    Inpndx  TY CL Source-File(Object-File) OR Import-File{Shared-object}
                              RLD: Address  Section  Rld-type Referencing Symbol
 ----------------------------------------------------------------------------------------------
ld: 0711-317 ERROR: Undefined symbol: .bn_mul_mont_fixed_n6
 .bn_mul_mont_fixed_n6     [26]    ER PR crypto/bn/bn_ppc.c(libcrypto_a.a[libcrypto-lib-bn_ppc.o])
                                   0000006c .text    R_RBR    [14]    <.bn_mul_mont@AF147_2>
ld: 0711-317 ERROR: Undefined symbol: .bn_mul_mont_300_fixed_n6
 .bn_mul_mont_300_fixed_n6 [28]    ER PR crypto/bn/bn_ppc.c(libcrypto_a.a[libcrypto-lib-bn_ppc.o])
                                   00000084 .text    R_RBR    [14]    <.bn_mul_mont@AF147_2>
ER: The return code is 8.
gmake[1]: *** [Makefile:16213: fuzz/cmp-test] Error 8
gmake[1]: Leaving directory '/bamboo/bamboo-agent-home/xml-data/build-dir/ThirdParty/openssl/3.0.0/_src/openssl-3.0.0-src/openssl-3.0.0'
gmake: *** [Makefile:3373: build_sw] Error 2

XLC build config:


Command line (with current working directory = .):

    /usr/bin/perl ./Configure --prefix=/bamboo/aix7_2/xlc16_1/release32 aix-cc shared -qkeyword=inline enable-fips

Perl information:

    /usr/bin/perl
    5.20.1 for aix-thread-multi

Enabled features:

    acvp-tests
    aria
    asm
    async
    autoalginit
    autoerrinit
    autoload-config
    bf
    blake2
    bulk
    cached-fetch
    camellia
    capieng
    cast
    chacha
    cmac
    cmp
    cms
    comp
    ct
    deprecated
    des
    dgram
    dh
    dsa
    dso
    dtls
    dynamic-engine
    ec
    ec2m
    ecdh
    ecdsa
    engine
    err
    filenames
    fips
    fips-securitychecks
    gost
    idea
    legacy
    loadereng
    makedepend
    md4
    mdc2
    module
    multiblock
    nextprotoneg
    ocb
    ocsp
    padlockeng
    pic
    pinshared
    poly1305
    posix-io
    psk
    rc2
    rc4
    rdrand
    rfc3779
    rmd160
    scrypt
    secure-memory
    seed
    shared
    siphash
    siv
    sm2
    sm3
    sm4
    sock
    srp
    srtp
    sse2
    ssl
    ssl-trace
    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            [not-linux]      OPENSSL_NO_AFALGENG
    asan                [default]        OPENSSL_NO_ASAN
    buildtest-c++       [default]        
    crypto-mdebug       [default]        OPENSSL_NO_CRYPTO_MDEBUG
    devcryptoeng        [default]        OPENSSL_NO_DEVCRYPTOENG
    ec_nistp_64_gcc_128 [default]        OPENSSL_NO_EC_NISTP_64_GCC_128
    egd                 [default]        OPENSSL_NO_EGD
    external-tests      [default]        OPENSSL_NO_EXTERNAL_TESTS
    fuzz-afl            [default]        OPENSSL_NO_FUZZ_AFL
    fuzz-libfuzzer      [default]        OPENSSL_NO_FUZZ_LIBFUZZER
    ktls                [default]        OPENSSL_NO_KTLS
    md2                 [default]        OPENSSL_NO_MD2 (skip crypto/md2)
    msan                [default]        OPENSSL_NO_MSAN
    rc5                 [default]        OPENSSL_NO_RC5 (skip crypto/rc5)
    sctp                [default]        OPENSSL_NO_SCTP
    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 -X32",
    ARFLAGS => "qc",
    CC => "cc",
    CFLAGS => "-O",
    HASHBANGPERL => "/usr/bin/env perl",
    RANLIB => "ranlib -X32",
    RC => "windres",
    asm_arch => "ppc32",
    bn_ops => "BN_LLONG RC4_CHAR",
    build_file => "Makefile",
    build_scheme => [ "unified", "unix" ],
    cflags => "-q32 -qmaxmem=16384 -qro -qroconst -qthreaded",
    cppflags => "-D_THREAD_SAFE",
    defines => [ "OPENSSL_BUILDING_OPENSSL" ],
    disable => [  ],
    dso_scheme => "dlfcn",
    enable => [  ],
    ex_libs => "-lpthreads",
    includes => [  ],
    lflags => "-Wl,-bsvr4",
    lib_cflags => "",
    lib_cppflags => "-DB_ENDIAN",
    lib_defines => [  ],
    module_cflags => "-qpic",
    module_cxxflags => undef,
    module_ldflags => "-Wl,-G,-bsymbolic,-bnoentry",
    perl_platform => "AIX",
    perlasm_scheme => "aix32",
    shared_cflag => "-qpic",
    shared_defflag => "-Wl,-bE:",
    shared_defines => [  ],
    shared_fipsflag => "-Wl,-binitfini:_init:_cleanup",
    shared_ldflag => "-Wl,-G,-bsymbolic,-bnoentry",
    shared_rcflag => "",
    shared_target => "aix",
    sys_id => "AIX",
    thread_defines => [  ],
    thread_scheme => "pthreads",
    unistd => "<unistd.h>",

Recorded environment:

    AR = 
    BUILDFILE = 
    CC = 
    CFLAGS = 
    CPPFLAGS = 
    CROSS_COMPILE = 
    CXX = 
    CXXFLAGS = 
    HASHBANGPERL = 
    LDFLAGS = -bnoquiet
    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 -X32
    ARFLAGS         = qc
    CC              = cc
    CFLAGS          = -O -qkeyword=inline
    CPPDEFINES      = 
    CPPFLAGS        = 
    CPPINCLUDES     = 
    CXXFLAGS        = -qkeyword=inline
    HASHBANGPERL    = /usr/bin/env perl
    LDFLAGS         = -bnoquiet
    LDLIBS          = 
    PERL            = /usr/bin/perl
    RANLIB          = ranlib -X32
    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

=========================================================================================

XLCLANG error:

xlclang  -Iinclude  -q32 -qmaxmem=16384 -qro -qroconst -qthreaded -O -qkeyword=inline -D_THREAD_SAFE -DOPENSSL_BUILDING_OPENSSL -DNDEBUG   -c -o fuzz/client-test-bin-client.o fuzz/client.c
warning: 1540-5200 The option "-qkeyword=inline" is not supported.
1 warning generated.
/usr/bin/X11/makedepend -f- -Y --  -Iinclude -q32 -qmaxmem=16384 -qro -qroconst -qthreaded -O -qkeyword=inline -D_THREAD_SAFE -DOPENSSL_BUILDING_OPENSSL -DNDEBUG  -- fuzz/client.c 2>/dev/null \
    > fuzz/client-test-bin-client.d
xlclang  -Iinclude  -q32 -qmaxmem=16384 -qro -qroconst -qthreaded -O -qkeyword=inline -D_THREAD_SAFE -DOPENSSL_BUILDING_OPENSSL -DNDEBUG   -c -o fuzz/client-test-bin-fuzz_rand.o fuzz/fuzz_rand.c
warning: 1540-5200 The option "-qkeyword=inline" is not supported.
1 warning generated.
/usr/bin/X11/makedepend -f- -Y --  -Iinclude -q32 -qmaxmem=16384 -qro -qroconst -qthreaded -O -qkeyword=inline -D_THREAD_SAFE -DOPENSSL_BUILDING_OPENSSL -DNDEBUG  -- fuzz/fuzz_rand.c 2>/dev/null \
    > fuzz/client-test-bin-fuzz_rand.d
xlclang  -Iinclude  -q32 -qmaxmem=16384 -qro -qroconst -qthreaded -O -qkeyword=inline -D_THREAD_SAFE -DOPENSSL_BUILDING_OPENSSL -DNDEBUG   -c -o fuzz/client-test-bin-test-corpus.o fuzz/test-corpus.c
warning: 1540-5200 The option "-qkeyword=inline" is not supported.
1 warning generated.
/usr/bin/X11/makedepend -f- -Y --  -Iinclude -q32 -qmaxmem=16384 -qro -qroconst -qthreaded -O -qkeyword=inline -D_THREAD_SAFE -DOPENSSL_BUILDING_OPENSSL -DNDEBUG  -- fuzz/test-corpus.c 2>/dev/null \
    > fuzz/client-test-bin-test-corpus.d
rm -f fuzz/client-test
${LDCMD:-xlclang} -q32 -qmaxmem=16384 -qro -qroconst -qthreaded -O -qkeyword=inline -L. -Wl,-bsvr4 -bnoquiet \
        -o fuzz/client-test \
        fuzz/client-test-bin-client.o \
        fuzz/client-test-bin-fuzz_rand.o \
        fuzz/client-test-bin-test-corpus.o \
        -lssl -lcrypto -lpthreads
(ld): halt 4
(ld): setopt noexpall
(ld): setopt rtl
(ld): setopt rtllib
(ld): setopt expfull
(ld): setopt svr4
(ld): setopt symbolic:1
(ld): setfflag 4
(ld): savename fuzz/client-test
(ld): filelist 13 1
(ld): i /lib/crt0.o
(ld): i fuzz/client-test-bin-client.o
(ld): i fuzz/client-test-bin-fuzz_rand.o
(ld): i fuzz/client-test-bin-test-corpus.o
(ld): lib ./libssl.a
(ld): lib ./libcrypto.a
(ld): lib /usr/lib/libpthreads.a
(ld): lib /opt/IBM/xlc/16.1.0/lib/libxlopt.a
(ld): lib /opt/IBM/xlc/16.1.0/lib/libxlipa.a
(ld): lib /opt/IBM/xlc/16.1.0/lib/libxl.a
(ld): lib /usr/lib/libatomic.a
(ld): lib /usr/lib/libc.a
(ld): lib /usr/lib/librtl.a
LIBRARY: Shared object libssl.a[libssl.so.3]: 517 symbols imported.
LIBRARY: Shared object libcrypto.a[libcrypto.so.3]: 5373 symbols imported.
LIBRARY: Shared object libpthreads.a[shr_comm.o]: 179 symbols imported.
LIBRARY: Shared object libpthreads.a[shr_xpg5.o]: 174 symbols imported.
LIBRARY: Shared object libatomic.a[libatomic.so.1]: 40 symbols imported.
LIBRARY: Shared object libc.a[shr.o]: 3308 symbols imported.
LIBRARY: Shared object libc.a[meth.o]: 2 symbols imported.
LIBRARY: Shared object libc.a[posix_aio.o]: 20 symbols imported.
LIBRARY: Shared object libc.a[aio.o]: 18 symbols imported.
LIBRARY: Shared object libc.a[pse.o]: 8 symbols imported.
LIBRARY: Shared object libc.a[dl.o]: 4 symbols imported.
LIBRARY: Shared object libc.a[pty.o]: 1 symbols imported.
LIBRARY: Shared object libc.a[cthread.o]: 25 symbols imported.
LIBRARY: Shared object libc.a[uchar.o]: 4 symbols imported.
LIBRARY: Shared object librtl.a[shr.o]: 1 symbols imported.
LIBRARY: Shared object librtl.a[lazy42.o]: 3 symbols imported.
FILELIST: Number of previously inserted files processed: 13
(ld): resolve
RESOLVE: 184 of 15017 symbols were kept.
(ld): addgl /usr/lib/glink.o
ADDGL: Glink code added for 45 symbols.
(ld): er full
ER: There are no unresolved symbols.
(ld): mismatch
MISMATCH: No type mismatches exist.
(ld): comprld
COMPRLD: Kept 278 of 278 relocation entries.
(ld): origin page 0x10000000 0x20000000
(ld): libpath /usr/lib:/lib
LIBPATH: Library path set to /usr/lib:/lib
(ld): save 1L .
SAVE: Section sizes = 6099+973+12 (0x17D3+0x3CD+0xC hex)
SAVE: Size of TOC: 276 (0x114 hex)
(ld): rc
RC: Highest return code was 0.
xlclang  -Iinclude  -q32 -qmaxmem=16384 -qro -qroconst -qthreaded -O -qkeyword=inline -D_THREAD_SAFE -DOPENSSL_BUILDING_OPENSSL -DNDEBUG   -c -o fuzz/cmp-test-bin-cmp.o fuzz/cmp.c
warning: 1540-5200 The option "-qkeyword=inline" is not supported.
1 warning generated.
/usr/bin/X11/makedepend -f- -Y --  -Iinclude -q32 -qmaxmem=16384 -qro -qroconst -qthreaded -O -qkeyword=inline -D_THREAD_SAFE -DOPENSSL_BUILDING_OPENSSL -DNDEBUG  -- fuzz/cmp.c 2>/dev/null \
    > fuzz/cmp-test-bin-cmp.d
xlclang  -Iinclude  -q32 -qmaxmem=16384 -qro -qroconst -qthreaded -O -qkeyword=inline -D_THREAD_SAFE -DOPENSSL_BUILDING_OPENSSL -DNDEBUG   -c -o fuzz/cmp-test-bin-fuzz_rand.o fuzz/fuzz_rand.c
warning: 1540-5200 The option "-qkeyword=inline" is not supported.
1 warning generated.
/usr/bin/X11/makedepend -f- -Y --  -Iinclude -q32 -qmaxmem=16384 -qro -qroconst -qthreaded -O -qkeyword=inline -D_THREAD_SAFE -DOPENSSL_BUILDING_OPENSSL -DNDEBUG  -- fuzz/fuzz_rand.c 2>/dev/null \
    > fuzz/cmp-test-bin-fuzz_rand.d
xlclang  -Iinclude  -q32 -qmaxmem=16384 -qro -qroconst -qthreaded -O -qkeyword=inline -D_THREAD_SAFE -DOPENSSL_BUILDING_OPENSSL -DNDEBUG   -c -o fuzz/cmp-test-bin-test-corpus.o fuzz/test-corpus.c
warning: 1540-5200 The option "-qkeyword=inline" is not supported.
1 warning generated.
/usr/bin/X11/makedepend -f- -Y --  -Iinclude -q32 -qmaxmem=16384 -qro -qroconst -qthreaded -O -qkeyword=inline -D_THREAD_SAFE -DOPENSSL_BUILDING_OPENSSL -DNDEBUG  -- fuzz/test-corpus.c 2>/dev/null \
    > fuzz/cmp-test-bin-test-corpus.d
rm -f fuzz/cmp-test
${LDCMD:-xlclang} -q32 -qmaxmem=16384 -qro -qroconst -qthreaded -O -qkeyword=inline -Wl,-bsvr4 -bnoquiet \
        -o fuzz/cmp-test \
        fuzz/cmp-test-bin-cmp.o fuzz/cmp-test-bin-fuzz_rand.o \
        fuzz/cmp-test-bin-test-corpus.o \
        libcrypto_a.a -lpthreads
(ld): halt 4
(ld): setopt noexpall
(ld): setopt rtl
(ld): setopt rtllib
(ld): setopt expfull
(ld): setopt svr4
(ld): setopt symbolic:1
(ld): setfflag 4
(ld): savename fuzz/cmp-test
(ld): filelist 12 1
(ld): i /lib/crt0.o
(ld): i fuzz/cmp-test-bin-cmp.o
(ld): i fuzz/cmp-test-bin-fuzz_rand.o
(ld): i fuzz/cmp-test-bin-test-corpus.o
(ld): i libcrypto_a.a
(ld): lib /usr/lib/libpthreads.a
(ld): lib /opt/IBM/xlc/16.1.0/lib/libxlopt.a
(ld): lib /opt/IBM/xlc/16.1.0/lib/libxlipa.a
(ld): lib /opt/IBM/xlc/16.1.0/lib/libxl.a
(ld): lib /usr/lib/libatomic.a
(ld): lib /usr/lib/libc.a
(ld): lib /usr/lib/librtl.a
LIBRARY: Shared object libpthreads.a[shr_comm.o]: 179 symbols imported.
LIBRARY: Shared object libpthreads.a[shr_xpg5.o]: 174 symbols imported.
LIBRARY: Shared object libatomic.a[libatomic.so.1]: 40 symbols imported.
LIBRARY: Shared object libc.a[shr.o]: 3308 symbols imported.
LIBRARY: Shared object libc.a[meth.o]: 2 symbols imported.
LIBRARY: Shared object libc.a[posix_aio.o]: 20 symbols imported.
LIBRARY: Shared object libc.a[aio.o]: 18 symbols imported.
LIBRARY: Shared object libc.a[pse.o]: 8 symbols imported.
LIBRARY: Shared object libc.a[dl.o]: 4 symbols imported.
LIBRARY: Shared object libc.a[pty.o]: 1 symbols imported.
LIBRARY: Shared object libc.a[cthread.o]: 25 symbols imported.
LIBRARY: Shared object libc.a[uchar.o]: 4 symbols imported.
LIBRARY: Shared object librtl.a[shr.o]: 1 symbols imported.
LIBRARY: Shared object librtl.a[lazy42.o]: 3 symbols imported.
FILELIST: Number of previously inserted files processed: 12
(ld): resolve
RESOLVE: 20809 of 52219 symbols were kept.
(ld): addgl /usr/lib/glink.o
ADDGL: Glink code added for 111 symbols.
(ld): er full
ld: 0711-318 ERROR: Undefined symbols were found.
        The following symbols are in error:
 Symbol                    Inpndx  TY CL Source-File(Object-File) OR Import-File{Shared-object}
                              RLD: Address  Section  Rld-type Referencing Symbol
 ----------------------------------------------------------------------------------------------
ld: 0711-317 ERROR: Undefined symbol: .__atomic_is_lock_free
 .__atomic_is_lock_free    [168]   ER PR crypto/threads_pthread.c(libcrypto_a.a[libcrypto-lib-threads_pthread.o])
                                   000003bc .text    R_RBR    [38]    .CRYPTO_atomic_or
                                   0000052c .text    R_RBR    [40]    .CRYPTO_atomic_load
ER: The return code is 8.
gmake[1]: *** [Makefile:16218: fuzz/cmp-test] Error 8
gmake[1]: Leaving directory '/bamboo/bamboo-agent-home/xml-data/build-dir/ThirdParty/openssl/3.0.0/_src/openssl-3.0.0-src/openssl-3.0.0'
gmake: *** [Makefile:3378: build_sw] Error 2

XLCLANG build config:


Command line (with current working directory = .):

    /usr/bin/perl ./Configure --prefix=/bamboo/aix7_2/xlclang16_1/release32 aix-cc shared -qkeyword=inline enable-fips

Perl information:

    /usr/bin/perl
    5.20.1 for aix-thread-multi

Enabled features:

    acvp-tests
    aria
    asm
    async
    autoalginit
    autoerrinit
    autoload-config
    bf
    blake2
    bulk
    cached-fetch
    camellia
    capieng
    cast
    chacha
    cmac
    cmp
    cms
    comp
    ct
    deprecated
    des
    dgram
    dh
    dsa
    dso
    dtls
    dynamic-engine
    ec
    ec2m
    ecdh
    ecdsa
    engine
    err
    filenames
    fips
    fips-securitychecks
    gost
    idea
    legacy
    loadereng
    makedepend
    md4
    mdc2
    module
    multiblock
    nextprotoneg
    ocb
    ocsp
    padlockeng
    pic
    pinshared
    poly1305
    posix-io
    psk
    rc2
    rc4
    rdrand
    rfc3779
    rmd160
    scrypt
    secure-memory
    seed
    shared
    siphash
    siv
    sm2
    sm3
    sm4
    sock
    srp
    srtp
    sse2
    ssl
    ssl-trace
    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            [not-linux]      OPENSSL_NO_AFALGENG
    asan                [default]        OPENSSL_NO_ASAN
    buildtest-c++       [default]        
    crypto-mdebug       [default]        OPENSSL_NO_CRYPTO_MDEBUG
    devcryptoeng        [default]        OPENSSL_NO_DEVCRYPTOENG
    ec_nistp_64_gcc_128 [default]        OPENSSL_NO_EC_NISTP_64_GCC_128
    egd                 [default]        OPENSSL_NO_EGD
    external-tests      [default]        OPENSSL_NO_EXTERNAL_TESTS
    fuzz-afl            [default]        OPENSSL_NO_FUZZ_AFL
    fuzz-libfuzzer      [default]        OPENSSL_NO_FUZZ_LIBFUZZER
    ktls                [default]        OPENSSL_NO_KTLS
    md2                 [default]        OPENSSL_NO_MD2 (skip crypto/md2)
    msan                [default]        OPENSSL_NO_MSAN
    rc5                 [default]        OPENSSL_NO_RC5 (skip crypto/rc5)
    sctp                [default]        OPENSSL_NO_SCTP
    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 -X32",
    ARFLAGS => "qc",
    CC => "cc",
    CFLAGS => "-O",
    HASHBANGPERL => "/usr/bin/env perl",
    RANLIB => "ranlib -X32",
    RC => "windres",
    asm_arch => "ppc32",
    bn_ops => "BN_LLONG RC4_CHAR",
    build_file => "Makefile",
    build_scheme => [ "unified", "unix" ],
    cflags => "-q32 -qmaxmem=16384 -qro -qroconst -qthreaded",
    cppflags => "-D_THREAD_SAFE",
    defines => [ "OPENSSL_BUILDING_OPENSSL" ],
    disable => [  ],
    dso_scheme => "dlfcn",
    enable => [  ],
    ex_libs => "-lpthreads",
    includes => [  ],
    lflags => "-Wl,-bsvr4",
    lib_cflags => "",
    lib_cppflags => "-DB_ENDIAN",
    lib_defines => [  ],
    module_cflags => "-qpic",
    module_cxxflags => undef,
    module_ldflags => "-Wl,-G,-bsymbolic,-bnoentry",
    perl_platform => "AIX",
    perlasm_scheme => "aix32",
    shared_cflag => "-qpic",
    shared_defflag => "-Wl,-bE:",
    shared_defines => [  ],
    shared_fipsflag => "-Wl,-binitfini:_init:_cleanup",
    shared_ldflag => "-Wl,-G,-bsymbolic,-bnoentry",
    shared_rcflag => "",
    shared_target => "aix",
    sys_id => "AIX",
    thread_defines => [  ],
    thread_scheme => "pthreads",
    unistd => "<unistd.h>",

Recorded environment:

    AR = 
    BUILDFILE = 
    CC = xlclang
    CFLAGS = 
    CPPFLAGS = 
    CROSS_COMPILE = 
    CXX = xlclang++
    CXXFLAGS = 
    HASHBANGPERL = 
    LDFLAGS = -bnoquiet
    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 -X32
    ARFLAGS         = qc
    CC              = xlclang
    CFLAGS          = -O -qkeyword=inline
    CPPDEFINES      = 
    CPPFLAGS        = 
    CPPINCLUDES     = 
    CXX             = xlclang++
    CXXFLAGS        = -qkeyword=inline
    HASHBANGPERL    = /usr/bin/env perl
    LDFLAGS         = -bnoquiet
    LDLIBS          = 
    PERL            = /usr/bin/perl
    RANLIB          = ranlib -X32
    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

As always, any help is appreciated. 😃

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Comments: 20 (16 by maintainers)

Commits related to this issue

Most upvoted comments

OK, then I’ll merge the patch as is as it is least invasive IMO.

This is causing issue for us as well with XL C/C++ 13.1 32-bit compilation.

        /usr/bin/X11/makedepend -f- -Y --  -Iinclude -q32 -qmaxmem=16384 -qro -qroconst -qthreaded -O -D_THREAD_SAFE -DOPENSSL_BUILDING_OPENSSL -DNDEBUG  -- fuzz/test-corpus.c 2>/dev/null  > fuzz/cmp-test-bin-test-corpus.d
        rm -f fuzz/cmp-test
        ${LDCMD:-cc} -q32 -qmaxmem=16384 -qro -qroconst -qthreaded -O -Wl,-bsvr4   -o fuzz/cmp-test  fuzz/cmp-test-bin-cmp.o fuzz/cmp-test-bin-fuzz_rand.o  fuzz/cmp-test-bin-test-corpus.o  libcrypto_a.a -lpthreads 
ld: 0711-317 ERROR: Undefined symbol: .bn_mul_mont_fixed_n6
ld: 0711-317 ERROR: Undefined symbol: .bn_mul_mont_300_fixed_n6
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
make: The error code from the last command is 8.

Both 32-bit and 64-bit have _ARCH_PPC64 defined.

$ cc -q64 -qshowmacros -E t.c | grep PPC
#define __PPC 1
#define _ARCH_PPCGR 1
#define __PPC__ 1
#define __THW_PPC__ 1
#define _ARCH_PPC64GRSQ 1
#define _ARCH_PPC 1
#define _ARCH_PPC64GR 1
#define _ARCH_PPC64 1
$ cc -q32 -qshowmacros -E t.c | grep PPC
#define __PPC 1
#define _ARCH_PPCGR 1
#define __PPC__ 1
#define __THW_PPC__ 1
#define _ARCH_PPC64GRSQ 1
#define _ARCH_PPC 1
#define _ARCH_PPC64GR 1
#define _ARCH_PPC64 1

On AIX I think the macro to key off of is ILP32 or LP64 for 32-bit / 64-bit compilation.

$ cc -q32 -qshowmacros -E t.c | grep LP 
#define _ILP32 1
#define __ILP32__ 1

$ cc -q64 -qshowmacros -E t.c | grep LP
#define __LP64__ 1
#define _LP64 1

– edit –

This is my proposed patch for the 32-bit AIX XL C/C++ classic compilation failure for OpenSSL 3.0.1

diff --git a/crypto/bn/bn_ppc.c b/crypto/bn/bn_ppc.c
index 05c0c4c..25bb146 100644
--- a/crypto/bn/bn_ppc.c
+++ b/crypto/bn/bn_ppc.c
@@ -40,7 +40,7 @@ int bn_mul_mont(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp,
      * no opportunity to figure it out...
      */
 
-#if defined(_ARCH_PPC64)
+#if defined(__LP64__)
     if (num == 6) {
         if (OPENSSL_ppccap_P & PPC_MADD300)
             return bn_mul_mont_300_fixed_n6(rp, ap, bp, np, n0, num);