openssl: OpenSSL 3.2.0 build fails on 32bit PowerPC macs running OS X

On a 32bit (ppc7450) PowerPC Mac (iBook G4) running Mac OS X 10.5 (darwin 9), the build of OpenSSL 3.2.0 fails due to the use of 64bit instructions in crypto/aes/aesp8-ppc.s which I guess is for POWER8 but targets ppc970 (G5) which is 64bit.

I guess we now need to state no-asm on such systems?

Invoking the build with

perl Configure --prefix=/tmp/openssl3 no-ssl3 no-ssl3-method no-zlib darwin-ppc-cc

Build eventually fails with

cc -fPIC -fno-common -arch ppc -std=gnu9x -Wa,-force_cpusubtype_ALL -O3 -DB_ENDIAN -DOPENSSL_PIC -DOPENSSLDIR="\"/tmp/openssl3/ssl\"" -DENGINESDIR="\"/tmp/openssl3/lib/engines-3\"" -DMODULESDIR="\"/tmp/openssl3/lib/ossl-modules\"" -D_REENTRANT -DOPENSSL_BUILDING_OPENSSL -DNDEBUG  -c -o crypto/aes/libcrypto-shlib-aesp8-ppc.o crypto/aes/aesp8-ppc.s
crypto/aes/aesp8-ppc.s:2343:Invalid mnemonic 'xxlor'
crypto/aes/aesp8-ppc.s:2345:Invalid mnemonic 'xxlor'
crypto/aes/aesp8-ppc.s:2350:Invalid mnemonic 'lxvw4x'
crypto/aes/aesp8-ppc.s:2411:Invalid mnemonic 'xxlor'
crypto/aes/aesp8-ppc.s:2412:Invalid mnemonic 'vpermxor'
crypto/aes/aesp8-ppc.s:2421:Invalid mnemonic 'xxlor'
crypto/aes/aesp8-ppc.s:2422:Invalid mnemonic 'vpermxor'
crypto/aes/aesp8-ppc.s:2432:Invalid mnemonic 'xxlor'
crypto/aes/aesp8-ppc.s:2433:Invalid mnemonic 'vpermxor'
crypto/aes/aesp8-ppc.s:2443:Invalid mnemonic 'xxlor'
crypto/aes/aesp8-ppc.s:2444:Invalid mnemonic 'vpermxor'
crypto/aes/aesp8-ppc.s:2454:Invalid mnemonic 'xxlor'
crypto/aes/aesp8-ppc.s:2455:Invalid mnemonic 'vpermxor'
crypto/aes/aesp8-ppc.s:2465:Invalid mnemonic 'xxlor'
crypto/aes/aesp8-ppc.s:2466:Invalid mnemonic 'vpermxor'
crypto/aes/aesp8-ppc.s:2492:Invalid mnemonic 'xxlor'
crypto/aes/aesp8-ppc.s:2510:Invalid mnemonic 'xxlor'
crypto/aes/aesp8-ppc.s:2511:Invalid mnemonic 'vpermxor'
crypto/aes/aesp8-ppc.s:2527:Invalid mnemonic 'xxlor'
crypto/aes/aesp8-ppc.s:2528:Invalid mnemonic 'vpermxor'
crypto/aes/aesp8-ppc.s:2549:Invalid mnemonic 'xxlor'
crypto/aes/aesp8-ppc.s:2550:Invalid mnemonic 'vpermxor'
crypto/aes/aesp8-ppc.s:2566:Invalid mnemonic 'xxlor'
crypto/aes/aesp8-ppc.s:2567:Invalid mnemonic 'vpermxor'
crypto/aes/aesp8-ppc.s:2583:Invalid mnemonic 'xxlor'
crypto/aes/aesp8-ppc.s:2584:Invalid mnemonic 'vpermxor'
crypto/aes/aesp8-ppc.s:2606:Invalid mnemonic 'xxlor'
crypto/aes/aesp8-ppc.s:2607:Invalid mnemonic 'xxlor'
crypto/aes/aesp8-ppc.s:2608:Invalid mnemonic 'vpermxor'
crypto/aes/aesp8-ppc.s:2609:Invalid mnemonic 'xxlor'
crypto/aes/aesp8-ppc.s:2642:Invalid mnemonic 'xxlor'
crypto/aes/aesp8-ppc.s:3021:Invalid mnemonic 'xxlor'
crypto/aes/aesp8-ppc.s:3023:Invalid mnemonic 'xxlor'
crypto/aes/aesp8-ppc.s:3028:Invalid mnemonic 'lxvw4x'
crypto/aes/aesp8-ppc.s:3081:Invalid mnemonic 'xxlor'
crypto/aes/aesp8-ppc.s:3082:Invalid mnemonic 'vpermxor'
crypto/aes/aesp8-ppc.s:3091:Invalid mnemonic 'xxlor'
crypto/aes/aesp8-ppc.s:3092:Invalid mnemonic 'vpermxor'
crypto/aes/aesp8-ppc.s:3102:Invalid mnemonic 'xxlor'
crypto/aes/aesp8-ppc.s:3103:Invalid mnemonic 'vpermxor'
crypto/aes/aesp8-ppc.s:3113:Invalid mnemonic 'xxlor'
crypto/aes/aesp8-ppc.s:3114:Invalid mnemonic 'vpermxor'
crypto/aes/aesp8-ppc.s:3124:Invalid mnemonic 'xxlor'
crypto/aes/aesp8-ppc.s:3125:Invalid mnemonic 'vpermxor'
crypto/aes/aesp8-ppc.s:3135:Invalid mnemonic 'xxlor'
crypto/aes/aesp8-ppc.s:3136:Invalid mnemonic 'vpermxor'
crypto/aes/aesp8-ppc.s:3162:Invalid mnemonic 'xxlor'
crypto/aes/aesp8-ppc.s:3180:Invalid mnemonic 'xxlor'
crypto/aes/aesp8-ppc.s:3181:Invalid mnemonic 'vpermxor'
crypto/aes/aesp8-ppc.s:3197:Invalid mnemonic 'xxlor'
crypto/aes/aesp8-ppc.s:3198:Invalid mnemonic 'vpermxor'
crypto/aes/aesp8-ppc.s:3219:Invalid mnemonic 'xxlor'
crypto/aes/aesp8-ppc.s:3220:Invalid mnemonic 'vpermxor'
crypto/aes/aesp8-ppc.s:3236:Invalid mnemonic 'xxlor'
crypto/aes/aesp8-ppc.s:3237:Invalid mnemonic 'vpermxor'
crypto/aes/aesp8-ppc.s:3253:Invalid mnemonic 'xxlor'
crypto/aes/aesp8-ppc.s:3254:Invalid mnemonic 'vpermxor'
crypto/aes/aesp8-ppc.s:3276:Invalid mnemonic 'xxlor'
crypto/aes/aesp8-ppc.s:3277:Invalid mnemonic 'xxlor'
crypto/aes/aesp8-ppc.s:3278:Invalid mnemonic 'vpermxor'
crypto/aes/aesp8-ppc.s:3279:Invalid mnemonic 'xxlor'
crypto/aes/aesp8-ppc.s:3310:Invalid mnemonic 'xxlor'

Config dump

Command line (with current working directory = .):

    /Users/sme/tigerbrew/opt/perl/bin/perl ./Configure --prefix=/tmp/openssl3 no-ssl3 no-ssl3-method no-zlib darwin-ppc-cc

Perl information:

    /Users/sme/tigerbrew/opt/perl/bin/perl
    5.38.0 for darwin-thread-multi-2level

Enabled features:

    apps
    argon2
    aria
    asm
    async
    autoalginit
    autoerrinit
    autoload-config
    bf
    blake2
    bulk
    cached-fetch
    camellia
    capieng
    cast
    chacha
    cmac
    cmp
    cms
    comp
    ct
    default-thread-pool
    deprecated
    des
    dgram
    dh
    docs
    dsa
    dso
    dtls
    dynamic-engine
    ec
    ec2m
    ecdh
    ecdsa
    ecx
    engine
    err
    filenames
    gost
    http
    idea
    legacy
    loadereng
    makedepend
    md4
    mdc2
    module
    multiblock
    nextprotoneg
    ocb
    ocsp
    padlockeng
    pic
    pinshared
    poly1305
    posix-io
    psk
    quic
    rc2
    rc4
    rdrand
    rfc3779
    rmd160
    scrypt
    secure-memory
    seed
    shared
    siphash
    siv
    sm2
    sm2-precomp
    sm3
    sm4
    sock
    srp
    srtp
    sse2
    ssl
    ssl-trace
    static-engine
    stdio
    tests
    thread-pool
    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:

    acvp-tests          [cascade]             OPENSSL_NO_ACVP_TESTS
    afalgeng            [not-linux]           OPENSSL_NO_AFALGENG
    asan                [default]             OPENSSL_NO_ASAN
    brotli              [default]             OPENSSL_NO_BROTLI
    brotli-dynamic      [default]             OPENSSL_NO_BROTLI_DYNAMIC
    buildtest-c++       [default]             
    winstore            [not-windows]         OPENSSL_NO_WINSTORE
    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
    fips                [default]             
    fips-securitychecks [cascade]             OPENSSL_NO_FIPS_SECURITYCHECKS
    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
    tfo                 [default]             OPENSSL_NO_TFO
    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                [option]              OPENSSL_NO_ZLIB
    zlib-dynamic        [default]             OPENSSL_NO_ZLIB_DYNAMIC
    zstd                [default]             OPENSSL_NO_ZSTD
    zstd-dynamic        [default]             OPENSSL_NO_ZSTD_DYNAMIC
    ssl3                [option(ssl3-method)] OPENSSL_NO_SSL3
    ssl3-method         [option]              OPENSSL_NO_SSL3_METHOD

Config target attributes:

    AR => "ar",
    ARFLAGS => "qc",
    CC => "cc",
    CFLAGS => "-O3",
    HASHBANGPERL => "/usr/bin/env perl",
    RANLIB => "ranlib -c",
    RC => "windres",
    asm_arch => "ppc32",
    bn_ops => "BN_LLONG RC4_CHAR",
    build_file => "Makefile",
    build_scheme => [ "unified", "unix" ],
    cflags => "-arch ppc -std=gnu9x -Wa,-force_cpusubtype_ALL",
    cppflags => "-D_REENTRANT",
    defines => [ "OPENSSL_BUILDING_OPENSSL" ],
    disable => [  ],
    dso_scheme => "dlfcn",
    enable => [  ],
    ex_libs => "",
    includes => [  ],
    lflags => "-Wl,-search_paths_first",
    lib_cflags => "",
    lib_cppflags => "-DB_ENDIAN",
    lib_defines => [  ],
    module_cflags => "-fPIC -fno-common",
    module_cxxflags => undef,
    module_ldflags => "-bundle",
    perl_platform => "Unix",
    perlasm_scheme => "osx32",
    shared_cflag => "-fPIC -fno-common",
    shared_defines => [  ],
    shared_extension => ".\$(SHLIB_VERSION_NUMBER).dylib",
    shared_ldflag => "-dynamiclib -current_version \$(SHLIB_VERSION_NUMBER) -compatibility_version \$(SHLIB_VERSION_NUMBER)",
    shared_rcflag => "",
    shared_sonameflag => "-install_name \$(libdir)/",
    shared_target => "darwin-shared",
    sys_id => "MACOSX",
    thread_defines => [  ],
    thread_scheme => "pthreads",
    unistd => "<unistd.h>",

Recorded environment:

    AR = 
    ARFLAGS = 
    AS = 
    ASFLAGS = 
    BUILDFILE = 
    CC = 
    CFLAGS = 
    CPP = 
    CPPDEFINES = 
    CPPFLAGS = 
    CPPINCLUDES = 
    CROSS_COMPILE = 
    CXX = 
    CXXFLAGS = 
    HASHBANGPERL = 
    LD = 
    LDFLAGS = 
    LDLIBS = 
    MT = 
    MTFLAGS = 
    OPENSSL_LOCAL_CONFIG_DIR = 
    PERL = 
    RANLIB = 
    RC = 
    RCFLAGS = 
    RM = 
    WINDRES = 
    __CNF_CFLAGS = 
    __CNF_CPPDEFINES = 
    __CNF_CPPFLAGS = 
    __CNF_CPPINCLUDES = 
    __CNF_CXXFLAGS = 
    __CNF_LDFLAGS = 
    __CNF_LDLIBS = 

Makevars:

    AR              = ar
    ARFLAGS         = qc
    ASFLAGS         = 
    CC              = cc
    CFLAGS          = -O3
    CPPDEFINES      = 
    CPPFLAGS        = 
    CPPINCLUDES     = 
    CXXFLAGS        = 
    HASHBANGPERL    = /usr/bin/env perl
    LDFLAGS         = 
    LDLIBS          = 
    PERL            = /Users/sme/tigerbrew/opt/perl/bin/perl
    RANLIB          = ranlib -c
    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

About this issue

  • Original URL
  • State: closed
  • Created 7 months ago
  • Comments: 17 (11 by maintainers)

Commits related to this issue

Most upvoted comments

Works for me, tested on a G5 running Tiger, and a G4 running Leopard and with the proposed patch v3.2.0 builds. Only tried darwin-ppc-cc.

Could you please try the patch from #22860 if it fixes this issue for you?

Maybe - not really sure if that will cover all cases. I was thinking something similar to this, for consistency:

https://github.com/openssl/openssl/blob/a435d786046fabc85acdb89cbf47f154a09796e1/crypto/chacha/build.info#L17-L21

That said, perhaps all the PPC conditional stuff needs cleaning up.