[Bug]: 5.8.2 has broken assembler for ppc
Contact Details
No response
Version
5.8.2
Description
Somehow we are back to a broken build on ppc in 5.8.2 (at least 5.8.0 worked fine with the same toolchain).
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S fails to compile with numerous syntax errors (see below).
Reproduction steps
Run the build on Darwin powerpc.
Relevant log output
libtool: compile: /opt/local/bin/gcc-mp-14 -DHAVE_CONFIG_H -I. -DBUILDING_WOLFSSL -DWOLFSSL_HAVE_ATOMIC_H -DWOLFSSL_HAVE_ASSERT_H -DWOLFSSL_WOLFSSH -isystem/opt/local/include/LegacySupport -I/opt/local/include -DBUILDING_WOLFSSL -fvisibility=hidden -DHAVE_THREAD_LS -DNDEBUG -DNO_DO178 -DWOLFSSL_ASN_TEMPLATE -DHAVE_CRL_IO -DHAVE_IO_TIMEOUT -DWOLFSSL_DER_LOAD -DKEEP_OUR_CERT -DKEEP_PEER_CERT -DWOLFSSL_SUBJ_DIR_ATTR -DWOLFSSL_FPKI -DWOLFSSL_SUBJ_INFO_ACC -DWOLFSSL_CERT_NAME_ALL -DWOLFSSL_VERBOSE_ERRORS -DHAVE_ECC_CDH -DHAVE_ECC_KOBLITZ -DHAVE_ECC_SECPR2 -DHAVE_ECC_SECPR3 -DWOLFSSL_DES_ECB -DHAVE_AES_DECRYPT -DHAVE_AES_ECB -DWOLFSSL_ALT_NAMES -DHAVE_FFDHE_2048 -DHAVE_FFDHE_3072 -DWOLFSSL_ASN_ALL -DWOLFSSL_DH_EXTRA -DWOLFSSL_ECDSA_DETERMINISTIC_K_VARIANT -DWOLFSSL_HAVE_ISSUER_NAMES -pthread -DHAVE_ECH -DWOLFSSL_DTLS -DWOLFSSL_DTLS_MTU -DWOLFSSL_QUIC -DHAVE_EX_DATA -DWOLFSSL_POST_HANDSHAKE_AUTH -DWOLFSSL_SEND_HRR_COOKIE -DWOLFSSL_OPENSSH -DHAVE_EX_DATA -DWOLFSSL_BASE16 -DWOLFSSL_ERROR_CODE_OPENSSL -DWC_RNG_SEED_CB -DWOLFSSL_LIBWEBSOCKETS -DHAVE_EX_DATA -DOPENSSL_NO_EC -DERROR_QUEUE_PER_THREAD -DTFM_TIMING_RESISTANT -DECC_TIMING_RESISTANT -DWC_RSA_BLINDING -DFORTRESS -DWOLFSSL_ALWAYS_VERIFY_CB -DWOLFSSL_AES_COUNTER -DWOLFSSL_AES_DIRECT -DWOLFSSL_DER_LOAD -DWOLFSSL_KEY_GEN -DPERSIST_SESSION_CACHE -DPERSIST_CERT_CACHE -DATOMIC_USER -DHAVE_PK_CALLBACKS -DWOLFSSL_AES_CBC_LENGTH_CHECKS -DHAVE_AESCCM -DWOLFSSL_AES_EAX -DWOLFSSL_AES_OFB -DWOLFSSL_AES_DIRECT -DWOLFSSL_AES_CFB -DWOLFSSL_ARMASM_NO_HW_CRYPTO -DWOLFSSL_PPC32_ASM -DWOLFSSL_USE_ALIGN -DHAVE_CAMELLIA -DWOLFSSL_MD2 -DHAVE_NULL_CIPHER -DWOLFSSL_RIPEMD -DHAVE_BLAKE2 -DHAVE_BLAKE2B -DHAVE_BLAKE2S -DWOLFSSL_SHA224 -DWOLFSSL_SHA512 -DWOLFSSL_SHA384 -DSESSION_CERTS -DWOLFSSL_SEP -DKEEP_PEER_CERT -DHAVE_HKDF -DHAVE_HPKE -DHAVE_X963_KDF -DHAVE_ECC -DECC_SHAMIR -DECC_MIN_KEY_SZ=224 -DHAVE_ECC_BRAINPOOL -DFP_ECC -DHAVE_ECC_ENCRYPT -DWOLFCRYPT_HAVE_ECCSI -DWOLFSSL_PUBLIC_MP -DWOLFCRYPT_HAVE_SAKKE -DNO_OLD_TLS -DWOLFSSL_QT -DSESSION_CERTS -DOPENSSL_NO_SSL2 -DWOLFSSL_KEY_GEN -DHAVE_EX_DATA -DWOLFSSL_CUSTOM_CURVES -DHAVE_ECC_SECPR2 -DHAVE_ECC_SECPR3 -DHAVE_ECC_BRAINPOOL -DHAVE_ECC_KOBLITZ -DWC_RSA_PSS -DWOLFSSL_PSS_LONG_SALT -DHAVE_ANON -DWOLFSSL_ASN_PRINT -DWOLFSSL_DTLS13 -DWOLFSSL_W64_WRAPPER -DWOLFSSL_AES_DIRECT -DWOLFSSL_DTLS_CID -DWOLFSSL_DTLS_CH_FRAG -DWOLFSSL_BASE64_ENCODE -DWOLFSSL_BASE16 -DWOLFSSL_SIPHASH -DWOLFSSL_CMAC -DWOLFSSL_AES_DIRECT -DHAVE_WEBSERVER -DWOLFSSL_AES_XTS -DWOLFSSL_AES_DIRECT -DWOLFSSL_CUSTOM_CURVES -DHAVE_ECC_SECPR2 -DHAVE_ECC_SECPR3 -DHAVE_ECC_BRAINPOOL -DHAVE_ECC_KOBLITZ -DHAVE_ECC_CDH -DHAVE_CURVE448 -DHAVE_ED448 -DWOLFSSL_ED448_STREAMING_VERIFY -DWC_SRTP_KDF -DHAVE_AES_ECB -DWOLFSSL_AES_DIRECT -DWOLFSSL_SHA3 -DWOLFSSL_SHAKE128 -DWOLFSSL_SHAKE256 -DHAVE_POLY1305 -DHAVE_CHACHA -DHAVE_XCHACHA -DHAVE_HASHDRBG -DHAVE_OPENSSL_CMD -DHAVE_TLS_EXTENSIONS -DHAVE_CERTIFICATE_STATUS_REQUEST -DHAVE_TLS_EXTENSIONS -DHAVE_CERTIFICATE_STATUS_REQUEST_V2 -DHAVE_CRL -DHAVE_CRL_MONITOR -DHAVE_TLS_EXTENSIONS -DHAVE_SNI -DHAVE_TLS_EXTENSIONS -DHAVE_ALPN -DHAVE_TLS_EXTENSIONS -DHAVE_MAX_FRAGMENT -DHAVE_TLS_EXTENSIONS -DHAVE_TRUSTED_CA -DHAVE_TLS_EXTENSIONS -DHAVE_TRUNCATED_HMAC -DHAVE_FALLBACK_SCSV -DHAVE_KEYING_MATERIAL -DHAVE_TLS_EXTENSIONS -DHAVE_SUPPORTED_CURVES -DHAVE_FFDHE_2048 -DHAVE_SUPPORTED_CURVES -DWOLFSSL_TLS13 -DHAVE_TLS_EXTENSIONS -DHAVE_TLS_EXTENSIONS -DHAVE_SESSION_TICKET -DHAVE_EXTENDED_MASTER -DHAVE_TLS_EXTENSIONS -DHAVE_SNI -DHAVE_MAX_FRAGMENT -DHAVE_TRUNCATED_HMAC -DHAVE_ALPN -DHAVE_TRUSTED_CA -DHAVE_SUPPORTED_CURVES -DWOLFSSL_EARLY_DATA -DHAVE_SMIME -DWOLFCRYPT_HAVE_SRP -DASN_BER_TO_DER -DWOLFSSL_HAVE_CERT_SERVICE -DHAVE_LIGHTY -DHAVE_WOLFSSL_SSL_H=1 -DHAVE_EX_DATA -DOPENSSL_ALL -DWOLFSSL_KEY_GEN -DWOLFSSL_NGINX -DWOLFSSL_SIGNER_DER_CERT -DOPENSSL_COMPATIBLE_DEFAULTS -DWOLFSSL_ERROR_CODE_OPENSSL -DWOLFSSL_OPENVPN -DHAVE_KEYING_MATERIAL -DHAVE_EX_DATA -DWOLFSSL_KEY_GEN -DWOLFSSL_DES_ECB -DWOLFSSL_ALWAYS_VERIFY_CB -DWOLFSSL_ALWAYS_KEEP_SNI -DKEEP_OUR_CERT -DKEEP_PEER_CERT -DHAVE_EXT_CACHE -DHAVE_EX_DATA -DWOLFSSL_CERT_GEN -DWOLFSSL_ASIO -DASIO_USE_WOLFSSL -DWOLFSSL_KEY_GEN -DBOOST_ASIO_USE_WOLFSSL -DHAVE_EX_DATA -DSSL_TXT_TLSV1_2 -DOPENSSL_NO_SSL2 -DOPENSSL_NO_SSL3 -DHAVE_ENCRYPT_THEN_MAC -DHAVE_STUNNEL -DWOLFSSL_ALWAYS_VERIFY_CB -DWOLFSSL_ALWAYS_KEEP_SNI -DHAVE_EX_DATA -DWOLFSSL_SIGNER_DER_CERT -DWOLFSSL_DES_ECB -DOPENSSL_COMPATIBLE_DEFAULTS -DWOLFSSL_TICKET_HAVE_ID -DWOLFSSL_ALT_CERT_CHAINS -DWOLFSSL_IP_ALT_NAME -DNO_SESSION_CACHE_REF -DWOLFSSL_DES_ECB -DWOLFSSL_TICKET_NONCE_MALLOC -DWOLFSSL_ENCRYPTED_KEYS -DHAVE_SCRYPT -DWOLFSSL_SP_MATH_ALL -DWOLFSSL_SP_PPC -DWOLF_CRYPTO_CB -DWC_NO_ASYNC_THREADING -DHAVE_AES_KEYWRAP -DWOLFSSL_AES_DIRECT -DNO_OLD_RNGNAME -DNO_OLD_WC_NAMES -DNO_OLD_SSL_NAMES -DNO_OLD_SHA_NAMES -DNO_OLD_MD5_NAME -DWOLFSSL_HASH_FLAGS -DRSA_MAX_SIZE=4096 -DFP_MAX_BITS=8192 -DSP_INT_BITS=4096 -DWOLFSSL_TRUST_PEER_CERT -DNO_SESSION_CACHE_REF -DWOLFSSL_TLS13_NO_PEEK_HANDSHAKE_DONE -DWOLFSSL_ALT_CERT_CHAINS -DWOLFSSL_PRIORITIZE_PSK -DWOLFSSL_CHECK_ALERT_ON_ERR -DWOLFSSL_TICKET_HAVE_ID -DHAVE_CURVE25519 -DHAVE_ED25519 -DHAVE_RPK -DWOLFSSL_KEY_GEN -DWOLFSSL_CERT_REQ -DWOLFSSL_CERT_GEN -DWOLFSSL_CERT_EXT -DHAVE_OCSP -DWOLFSSL_ED25519_STREAMING_VERIFY -DOPENSSL_ALL -DWOLFSSL_EITHER_SIDE -DWC_RSA_NO_PADDING -DWC_RSA_PSS -DWOLFSSL_PSS_LONG_SALT -DWOLFSSL_TICKET_HAVE_ID -DWOLFSSL_ERROR_CODE_OPENSSL -DWOLFSSL_CERT_NAME_ALL -DWOLFSSL_AES_SIV -DOPENSSL_EXTRA -DWOLFSSL_HAVE_WOLFSCEP -DHAVE_PKCS7 -DNO_DES3_TLS_SUITES -DHAVE_AESGCM -DWOLFSSL_AESGCM_STREAM -DWOLFSSL_AESXTS_STREAM -DWOLFSSL_SRTP -DWOLFSSL_MULTICAST -DWOLFSSL_PUBLIC_MP -DHAVE_TLS_EXTENSIONS -DHAVE_SERVER_RENEGOTIATION_INFO -DHAVE_COMP_KEY -DWOLFSSL_ALLOW_RC4 -DWOLFSSL_TLS_OCSP_MULTI -Wall -Wno-unused -O2 -DHAVE_GETPID=1 -DHAVE_WC_INTROSPECTION -include ./.build_params "-DLIBWOLFSSL_GLOBAL_EXTRA_CFLAGS=\" \"" -pipe -Os -arch ppc -Wno-pragmas -Wall -Wextra -Wunknown-pragmas --param=ssp-buffer-size=1 -Waddress -Warray-bounds -Wbad-function-cast -Wchar-subscripts -Wcomment -Wfloat-equal -Wformat-security -Wformat=2 -Wmaybe-uninitialized -Wmissing-field-initializers -Wmissing-noreturn -Wmissing-prototypes -Wnested-externs -Wnormalized=id -Woverride-init -Wpointer-arith -Wpointer-sign -Wshadow -Wsign-compare -Wstrict-overflow=1 -Wstrict-prototypes -Wswitch-enum -Wundef -Wunused -Wunused-result -Wunused-variable -Wwrite-strings -fwrapv -MT wolfcrypt/src/src_libwolfssl_la-sha256.lo -MD -MP -MF wolfcrypt/src/.deps/src_libwolfssl_la-sha256.Tpo -c wolfcrypt/src/sha256.c -fno-common -DPIC -o wolfcrypt/src/.libs/src_libwolfssl_la-sha256.o
libtool: compile: /opt/local/bin/gcc-mp-14 -DHAVE_CONFIG_H -I. -DBUILDING_WOLFSSL -DWOLFSSL_HAVE_ATOMIC_H -DWOLFSSL_HAVE_ASSERT_H -DWOLFSSL_WOLFSSH -isystem/opt/local/include/LegacySupport -I/opt/local/include -DNDEBUG -DHAVE_AESCCM -DWOLFSSL_PPC32_ASM -DWOLFSSL_ED448_STREAMING_VERIFY -DHAVE_CURVE25519 -DHAVE_ED25519 -DWOLFSSL_ED25519_STREAMING_VERIFY -DWOLFSSL_AESGCM_STREAM -DWOLFSSL_AESXTS_STREAM -pipe -Os -arch ppc -MT wolfcrypt/src/port/ppc32/src_libwolfssl_la-ppc32-sha256-asm.lo -MD -MP -MF wolfcrypt/src/port/ppc32/.deps/src_libwolfssl_la-ppc32-sha256-asm.Tpo -c wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S -fno-common -DPIC -o wolfcrypt/src/port/ppc32/.libs/src_libwolfssl_la-ppc32-sha256-asm.o
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1220:Expected comma after segment-name
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1220:Rest of line ignored. 1st junk character valued 32 ( ).
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1221:Unknown pseudo-op: .type
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1221:Rest of line ignored. 1st junk character valued 76 (L).
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1221:Invalid mnemonic 'object'
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1222:Unknown pseudo-op: .size
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1222:Rest of line ignored. 1st junk character valued 76 (L).
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1289:Expected comma after segment-name
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1289:Rest of line ignored. 1st junk character valued 32 ( ).
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1291:Unknown pseudo-op: .type
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1291:Rest of line ignored. 1st junk character valued 84 (T).
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1291:Invalid mnemonic 'function'
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1293:Parameter syntax error (parameter 1)
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1294:Parameter syntax error (parameter 1)
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1295:Parameter syntax error (parameter 1)
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1296:Parameter syntax error (parameter 1)
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1297:Parameter syntax error (parameter 1)
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1298:Parameter syntax error (parameter 1)
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1299:Parameter syntax error (parameter 1)
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1300:Parameter syntax error (parameter 1)
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1301:Parameter syntax error (parameter 1)
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1302:Parameter syntax error (parameter 1)
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1303:Parameter syntax error (parameter 1)
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1304:Parameter syntax error (parameter 1)
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1305:Parameter syntax error (parameter 1)
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1306:Parameter syntax error (parameter 1)
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1307:Parameter syntax error (parameter 1)
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1308:Parameter syntax error (parameter 1)
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1309:Parameter syntax error (parameter 1)
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1310:Parameter syntax error (parameter 1)
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1311:Parameter syntax error (parameter 1)
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1312:Parameter syntax error (parameter 1)
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1313:Parameter syntax error (parameter 1)
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1314:Parameter syntax error (parameter 1)
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1315:Parameter syntax error (parameter 1)
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1315:Invalid mnemonic 'ha'
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1316:Parameter syntax error (parameter 1)
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1316:Invalid mnemonic 'l(6)'
wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S:1318:Parameter syntax error (parameter 1)
. . .
P. S. Breakage introduced with https://github.com/wolfSSL/wolfssl/commit/c39f1fe72159b521d0d06358ebb6dbaf7041a3b1
@SparkiDev Could we have this fixed for macOS, please? If it is a matter of prefixing registers and [conditionally] excluding unsupported mnemonics, I can handle that, but we need to decide whether separate files are used or not.
Hello @barracuda156 ,
My name is Anthony; I think I've helped you in the past. I will assign this to @SparkiDev and will make sure he is aware of this bug report via internal channels. Please stay tuned.
Warm regards, Anthony
Hi @barracuda156,
Are you able to use the inline assembly file: ppc32-sha256-asm_c.c?
Sean
@SparkiDev Thank you for responding. I don’t think it will compile, since registers are still unprefixed, but I will verify and let you know.
@SparkiDev Upon switching to inline asm:
libtool: compile: /opt/local/bin/gcc-mp-14 -DHAVE_CONFIG_H -I. -DBUILDING_WOLFSSL -DWOLFSSL_HAVE_ATOMIC_H -DWOLFSSL_HAVE_ASSERT_H -DWOLFSSL_WOLFSSH -isystem/opt/local/include/LegacySupport -I/opt/local/include -DBUILDING_WOLFSSL -fvisibility=hidden -DHAVE_THREAD_LS -DNDEBUG -DNO_DO178 -DWOLFSSL_ASN_TEMPLATE -DHAVE_CRL_IO -DHAVE_IO_TIMEOUT -DWOLFSSL_DER_LOAD -DKEEP_OUR_CERT -DKEEP_PEER_CERT -DWOLFSSL_SUBJ_DIR_ATTR -DWOLFSSL_FPKI -DWOLFSSL_SUBJ_INFO_ACC -DWOLFSSL_CERT_NAME_ALL -DWOLFSSL_VERBOSE_ERRORS -DHAVE_ECC_CDH -DHAVE_ECC_KOBLITZ -DHAVE_ECC_SECPR2 -DHAVE_ECC_SECPR3 -DWOLFSSL_DES_ECB -DHAVE_AES_DECRYPT -DHAVE_AES_ECB -DWOLFSSL_ALT_NAMES -DHAVE_FFDHE_2048 -DHAVE_FFDHE_3072 -DWOLFSSL_ASN_ALL -DWOLFSSL_DH_EXTRA -DWOLFSSL_ECDSA_DETERMINISTIC_K_VARIANT -DWOLFSSL_HAVE_ISSUER_NAMES -pthread -DHAVE_ECH -DWOLFSSL_DTLS -DWOLFSSL_DTLS_MTU -DWOLFSSL_QUIC -DHAVE_EX_DATA -DWOLFSSL_POST_HANDSHAKE_AUTH -DWOLFSSL_SEND_HRR_COOKIE -DWOLFSSL_OPENSSH -DHAVE_EX_DATA -DWOLFSSL_BASE16 -DWOLFSSL_ERROR_CODE_OPENSSL -DWC_RNG_SEED_CB -DWOLFSSL_LIBWEBSOCKETS -DHAVE_EX_DATA -DOPENSSL_NO_EC -DERROR_QUEUE_PER_THREAD -DTFM_TIMING_RESISTANT -DECC_TIMING_RESISTANT -DWC_RSA_BLINDING -DFORTRESS -DWOLFSSL_ALWAYS_VERIFY_CB -DWOLFSSL_AES_COUNTER -DWOLFSSL_AES_DIRECT -DWOLFSSL_DER_LOAD -DWOLFSSL_KEY_GEN -DPERSIST_SESSION_CACHE -DPERSIST_CERT_CACHE -DATOMIC_USER -DHAVE_PK_CALLBACKS -DWOLFSSL_AES_CBC_LENGTH_CHECKS -DHAVE_AESCCM -DWOLFSSL_AES_EAX -DWOLFSSL_AES_OFB -DWOLFSSL_AES_DIRECT -DWOLFSSL_AES_CFB -DWOLFSSL_ARMASM_NO_HW_CRYPTO -DWOLFSSL_PPC32_ASM -DWOLFSSL_PPC32_ASM_INLINE -DWOLFSSL_USE_ALIGN -DHAVE_CAMELLIA -DWOLFSSL_MD2 -DHAVE_NULL_CIPHER -DWOLFSSL_RIPEMD -DHAVE_BLAKE2 -DHAVE_BLAKE2B -DHAVE_BLAKE2S -DWOLFSSL_SHA224 -DWOLFSSL_SHA512 -DWOLFSSL_SHA384 -DSESSION_CERTS -DWOLFSSL_SEP -DKEEP_PEER_CERT -DHAVE_HKDF -DHAVE_HPKE -DHAVE_X963_KDF -DHAVE_ECC -DECC_SHAMIR -DECC_MIN_KEY_SZ=224 -DHAVE_ECC_BRAINPOOL -DFP_ECC -DHAVE_ECC_ENCRYPT -DWOLFCRYPT_HAVE_ECCSI -DWOLFSSL_PUBLIC_MP -DWOLFCRYPT_HAVE_SAKKE -DNO_OLD_TLS -DWOLFSSL_QT -DSESSION_CERTS -DOPENSSL_NO_SSL2 -DWOLFSSL_KEY_GEN -DHAVE_EX_DATA -DWOLFSSL_CUSTOM_CURVES -DHAVE_ECC_SECPR2 -DHAVE_ECC_SECPR3 -DHAVE_ECC_BRAINPOOL -DHAVE_ECC_KOBLITZ -DWC_RSA_PSS -DWOLFSSL_PSS_LONG_SALT -DHAVE_ANON -DWOLFSSL_ASN_PRINT -DWOLFSSL_DTLS13 -DWOLFSSL_W64_WRAPPER -DWOLFSSL_AES_DIRECT -DWOLFSSL_DTLS_CID -DWOLFSSL_DTLS_CH_FRAG -DWOLFSSL_BASE64_ENCODE -DWOLFSSL_BASE16 -DWOLFSSL_SIPHASH -DWOLFSSL_CMAC -DWOLFSSL_AES_DIRECT -DHAVE_WEBSERVER -DWOLFSSL_AES_XTS -DWOLFSSL_AES_DIRECT -DWOLFSSL_CUSTOM_CURVES -DHAVE_ECC_SECPR2 -DHAVE_ECC_SECPR3 -DHAVE_ECC_BRAINPOOL -DHAVE_ECC_KOBLITZ -DHAVE_ECC_CDH -DHAVE_CURVE448 -DHAVE_ED448 -DWOLFSSL_ED448_STREAMING_VERIFY -DWC_SRTP_KDF -DHAVE_AES_ECB -DWOLFSSL_AES_DIRECT -DWOLFSSL_SHA3 -DWOLFSSL_SHAKE128 -DWOLFSSL_SHAKE256 -DHAVE_POLY1305 -DHAVE_CHACHA -DHAVE_XCHACHA -DHAVE_HASHDRBG -DHAVE_OPENSSL_CMD -DHAVE_TLS_EXTENSIONS -DHAVE_CERTIFICATE_STATUS_REQUEST -DHAVE_TLS_EXTENSIONS -DHAVE_CERTIFICATE_STATUS_REQUEST_V2 -DHAVE_CRL -DHAVE_CRL_MONITOR -DHAVE_TLS_EXTENSIONS -DHAVE_SNI -DHAVE_TLS_EXTENSIONS -DHAVE_ALPN -DHAVE_TLS_EXTENSIONS -DHAVE_MAX_FRAGMENT -DHAVE_TLS_EXTENSIONS -DHAVE_TRUSTED_CA -DHAVE_TLS_EXTENSIONS -DHAVE_TRUNCATED_HMAC -DHAVE_FALLBACK_SCSV -DHAVE_KEYING_MATERIAL -DHAVE_TLS_EXTENSIONS -DHAVE_SUPPORTED_CURVES -DHAVE_FFDHE_2048 -DHAVE_SUPPORTED_CURVES -DWOLFSSL_TLS13 -DHAVE_TLS_EXTENSIONS -DHAVE_TLS_EXTENSIONS -DHAVE_SESSION_TICKET -DHAVE_EXTENDED_MASTER -DHAVE_TLS_EXTENSIONS -DHAVE_SNI -DHAVE_MAX_FRAGMENT -DHAVE_TRUNCATED_HMAC -DHAVE_ALPN -DHAVE_TRUSTED_CA -DHAVE_SUPPORTED_CURVES -DWOLFSSL_EARLY_DATA -DHAVE_SMIME -DWOLFCRYPT_HAVE_SRP -DASN_BER_TO_DER -DWOLFSSL_HAVE_CERT_SERVICE -DHAVE_LIGHTY -DHAVE_WOLFSSL_SSL_H=1 -DHAVE_EX_DATA -DOPENSSL_ALL -DWOLFSSL_KEY_GEN -DWOLFSSL_NGINX -DWOLFSSL_SIGNER_DER_CERT -DOPENSSL_COMPATIBLE_DEFAULTS -DWOLFSSL_ERROR_CODE_OPENSSL -DWOLFSSL_OPENVPN -DHAVE_KEYING_MATERIAL -DHAVE_EX_DATA -DWOLFSSL_KEY_GEN -DWOLFSSL_DES_ECB -DWOLFSSL_ALWAYS_VERIFY_CB -DWOLFSSL_ALWAYS_KEEP_SNI -DKEEP_OUR_CERT -DKEEP_PEER_CERT -DHAVE_EXT_CACHE -DHAVE_EX_DATA -DWOLFSSL_CERT_GEN -DWOLFSSL_ASIO -DASIO_USE_WOLFSSL -DWOLFSSL_KEY_GEN -DBOOST_ASIO_USE_WOLFSSL -DHAVE_EX_DATA -DSSL_TXT_TLSV1_2 -DOPENSSL_NO_SSL2 -DOPENSSL_NO_SSL3 -DHAVE_ENCRYPT_THEN_MAC -DHAVE_STUNNEL -DWOLFSSL_ALWAYS_VERIFY_CB -DWOLFSSL_ALWAYS_KEEP_SNI -DHAVE_EX_DATA -DWOLFSSL_SIGNER_DER_CERT -DWOLFSSL_DES_ECB -DOPENSSL_COMPATIBLE_DEFAULTS -DWOLFSSL_TICKET_HAVE_ID -DWOLFSSL_ALT_CERT_CHAINS -DWOLFSSL_IP_ALT_NAME -DNO_SESSION_CACHE_REF -DWOLFSSL_DES_ECB -DWOLFSSL_TICKET_NONCE_MALLOC -DWOLFSSL_ENCRYPTED_KEYS -DHAVE_SCRYPT -DWOLFSSL_SP_MATH_ALL -DWOLFSSL_SP_PPC -DWOLF_CRYPTO_CB -DWC_NO_ASYNC_THREADING -DHAVE_AES_KEYWRAP -DWOLFSSL_AES_DIRECT -DNO_OLD_RNGNAME -DNO_OLD_WC_NAMES -DNO_OLD_SSL_NAMES -DNO_OLD_SHA_NAMES -DNO_OLD_MD5_NAME -DWOLFSSL_HASH_FLAGS -DRSA_MAX_SIZE=4096 -DFP_MAX_BITS=8192 -DSP_INT_BITS=4096 -DWOLFSSL_TRUST_PEER_CERT -DNO_SESSION_CACHE_REF -DWOLFSSL_TLS13_NO_PEEK_HANDSHAKE_DONE -DWOLFSSL_ALT_CERT_CHAINS -DWOLFSSL_PRIORITIZE_PSK -DWOLFSSL_CHECK_ALERT_ON_ERR -DWOLFSSL_TICKET_HAVE_ID -DHAVE_CURVE25519 -DHAVE_ED25519 -DHAVE_RPK -DWOLFSSL_KEY_GEN -DWOLFSSL_CERT_REQ -DWOLFSSL_CERT_GEN -DWOLFSSL_CERT_EXT -DHAVE_OCSP -DWOLFSSL_ED25519_STREAMING_VERIFY -DOPENSSL_ALL -DWOLFSSL_EITHER_SIDE -DWC_RSA_NO_PADDING -DWC_RSA_PSS -DWOLFSSL_PSS_LONG_SALT -DWOLFSSL_TICKET_HAVE_ID -DWOLFSSL_ERROR_CODE_OPENSSL -DWOLFSSL_CERT_NAME_ALL -DWOLFSSL_AES_SIV -DOPENSSL_EXTRA -DWOLFSSL_HAVE_WOLFSCEP -DHAVE_PKCS7 -DNO_DES3_TLS_SUITES -DHAVE_AESGCM -DWOLFSSL_AESGCM_STREAM -DWOLFSSL_AESXTS_STREAM -DWOLFSSL_SRTP -DWOLFSSL_MULTICAST -DWOLFSSL_PUBLIC_MP -DHAVE_TLS_EXTENSIONS -DHAVE_SERVER_RENEGOTIATION_INFO -DHAVE_COMP_KEY -DWOLFSSL_ALLOW_RC4 -DWOLFSSL_TLS_OCSP_MULTI -Wall -Wno-unused -O2 -DHAVE_GETPID=1 -DHAVE_WC_INTROSPECTION -include ./.build_params "-DLIBWOLFSSL_GLOBAL_EXTRA_CFLAGS=\" \"" -pipe -Os -arch ppc -Wno-pragmas -Wall -Wextra -Wunknown-pragmas --param=ssp-buffer-size=1 -Waddress -Warray-bounds -Wbad-function-cast -Wchar-subscripts -Wcomment -Wfloat-equal -Wformat-security -Wformat=2 -Wmaybe-uninitialized -Wmissing-field-initializers -Wmissing-noreturn -Wmissing-prototypes -Wnested-externs -Wnormalized=id -Woverride-init -Wpointer-arith -Wpointer-sign -Wshadow -Wsign-compare -Wstrict-overflow=1 -Wstrict-prototypes -Wswitch-enum -Wundef -Wunused -Wunused-result -Wunused-variable -Wwrite-strings -fwrapv -MT wolfcrypt/src/port/ppc32/src_libwolfssl_la-ppc32-sha256-asm_c.lo -MD -MP -MF wolfcrypt/src/port/ppc32/.deps/src_libwolfssl_la-ppc32-sha256-asm_c.Tpo -c wolfcrypt/src/port/ppc32/ppc32-sha256-asm_c.c -fno-common -DPIC -o wolfcrypt/src/port/ppc32/.libs/src_libwolfssl_la-ppc32-sha256-asm_c.o
wolfcrypt/src/port/ppc32/ppc32-sha256-asm_c.c: In function 'Transform_Sha256_Len':
wolfcrypt/src/port/ppc32/ppc32-sha256-asm_c.c:1220:5: error: PIC register clobbered by '31' in 'asm'
1220 | __asm__ __volatile__ (
| ^~~~~~~
make[2]: *** [wolfcrypt/src/port/ppc32/src_libwolfssl_la-ppc32-sha256-asm_c.lo] Error 1
make[2]: *** Waiting for unfinished jobs....
Hi @barracuda156,
Please try using -fomit-frame-pointer to mitigate this issue.
Sean
Unfortunately, that still fails identically:
libtool: compile: /opt/local/bin/gcc-mp-14 -DHAVE_CONFIG_H -I.
-DBUILDING_WOLFSSL -DWOLFSSL_HAVE_ATOMIC_H -DWOLFSSL_HAVE_ASSERT_H
-DWOLFSSL_WOLFSSH -isystem/opt/local/include/LegacySupport
-I/opt/local/include -DBUILDING_WOLFSSL -fvisibility=hidden
-DHAVE_THREAD_LS -DNDEBUG -DNO_DO178 -DWOLFSSL_ASN_TEMPLATE -DHAVE_CRL_IO
-DHAVE_IO_TIMEOUT -DWOLFSSL_DER_LOAD -DKEEP_OUR_CERT -DKEEP_PEER_CERT
-DWOLFSSL_SUBJ_DIR_ATTR -DWOLFSSL_FPKI -DWOLFSSL_SUBJ_INFO_ACC
-DWOLFSSL_CERT_NAME_ALL -DWOLFSSL_VERBOSE_ERRORS -DHAVE_ECC_CDH
-DHAVE_ECC_KOBLITZ -DHAVE_ECC_SECPR2 -DHAVE_ECC_SECPR3 -DWOLFSSL_DES_ECB
-DHAVE_AES_DECRYPT -DHAVE_AES_ECB -DWOLFSSL_ALT_NAMES -DHAVE_FFDHE_2048
-DHAVE_FFDHE_3072 -DWOLFSSL_ASN_ALL -DWOLFSSL_DH_EXTRA
-DWOLFSSL_ECDSA_DETERMINISTIC_K_VARIANT -DWOLFSSL_HAVE_ISSUER_NAMES
-pthread -DHAVE_ECH -DWOLFSSL_DTLS -DWOLFSSL_DTLS_MTU -DWOLFSSL_QUIC
-DHAVE_EX_DATA -DWOLFSSL_POST_HANDSHAKE_AUTH -DWOLFSSL_SEND_HRR_COOKIE
-DWOLFSSL_OPENSSH -DHAVE_EX_DATA -DWOLFSSL_BASE16
-DWOLFSSL_ERROR_CODE_OPENSSL -DWC_RNG_SEED_CB -DWOLFSSL_LIBWEBSOCKETS
-DHAVE_EX_DATA -DOPENSSL_NO_EC -DERROR_QUEUE_PER_THREAD
-DTFM_TIMING_RESISTANT -DECC_TIMING_RESISTANT -DWC_RSA_BLINDING -DFORTRESS
-DWOLFSSL_ALWAYS_VERIFY_CB -DWOLFSSL_AES_COUNTER -DWOLFSSL_AES_DIRECT
-DWOLFSSL_DER_LOAD -DWOLFSSL_KEY_GEN -DPERSIST_SESSION_CACHE
-DPERSIST_CERT_CACHE -DATOMIC_USER -DHAVE_PK_CALLBACKS
-DWOLFSSL_AES_CBC_LENGTH_CHECKS -DHAVE_AESCCM -DWOLFSSL_AES_EAX
-DWOLFSSL_AES_OFB -DWOLFSSL_AES_DIRECT -DWOLFSSL_AES_CFB
-DWOLFSSL_ARMASM_NO_HW_CRYPTO -DWOLFSSL_PPC32_ASM
-DWOLFSSL_PPC32_ASM_INLINE -DWOLFSSL_USE_ALIGN -DHAVE_CAMELLIA
-DWOLFSSL_MD2 -DHAVE_NULL_CIPHER -DWOLFSSL_RIPEMD -DHAVE_BLAKE2
-DHAVE_BLAKE2B -DHAVE_BLAKE2S -DWOLFSSL_SHA224 -DWOLFSSL_SHA512
-DWOLFSSL_SHA384 -DSESSION_CERTS -DWOLFSSL_SEP -DKEEP_PEER_CERT -DHAVE_HKDF
-DHAVE_HPKE -DHAVE_X963_KDF -DHAVE_ECC -DECC_SHAMIR -DECC_MIN_KEY_SZ=224
-DHAVE_ECC_BRAINPOOL -DFP_ECC -DHAVE_ECC_ENCRYPT -DWOLFCRYPT_HAVE_ECCSI
-DWOLFSSL_PUBLIC_MP -DWOLFCRYPT_HAVE_SAKKE -DNO_OLD_TLS -DWOLFSSL_QT
-DSESSION_CERTS -DOPENSSL_NO_SSL2 -DWOLFSSL_KEY_GEN -DHAVE_EX_DATA
-DWOLFSSL_CUSTOM_CURVES -DHAVE_ECC_SECPR2 -DHAVE_ECC_SECPR3
-DHAVE_ECC_BRAINPOOL -DHAVE_ECC_KOBLITZ -DWC_RSA_PSS
-DWOLFSSL_PSS_LONG_SALT -DHAVE_ANON -DWOLFSSL_ASN_PRINT -DWOLFSSL_DTLS13
-DWOLFSSL_W64_WRAPPER -DWOLFSSL_AES_DIRECT -DWOLFSSL_DTLS_CID
-DWOLFSSL_DTLS_CH_FRAG -DWOLFSSL_BASE64_ENCODE -DWOLFSSL_BASE16
-DWOLFSSL_SIPHASH -DWOLFSSL_CMAC -DWOLFSSL_AES_DIRECT -DHAVE_WEBSERVER
-DWOLFSSL_AES_XTS -DWOLFSSL_AES_DIRECT -DWOLFSSL_CUSTOM_CURVES
-DHAVE_ECC_SECPR2 -DHAVE_ECC_SECPR3 -DHAVE_ECC_BRAINPOOL -DHAVE_ECC_KOBLITZ
-DHAVE_ECC_CDH -DHAVE_CURVE448 -DHAVE_ED448
-DWOLFSSL_ED448_STREAMING_VERIFY -DWC_SRTP_KDF -DHAVE_AES_ECB
-DWOLFSSL_AES_DIRECT -DWOLFSSL_SHA3 -DWOLFSSL_SHAKE128 -DWOLFSSL_SHAKE256
-DHAVE_POLY1305 -DHAVE_CHACHA -DHAVE_XCHACHA -DHAVE_HASHDRBG
-DHAVE_OPENSSL_CMD -DHAVE_TLS_EXTENSIONS -DHAVE_CERTIFICATE_STATUS_REQUEST
-DHAVE_TLS_EXTENSIONS -DHAVE_CERTIFICATE_STATUS_REQUEST_V2 -DHAVE_CRL
-DHAVE_CRL_MONITOR -DHAVE_TLS_EXTENSIONS -DHAVE_SNI -DHAVE_TLS_EXTENSIONS
-DHAVE_ALPN -DHAVE_TLS_EXTENSIONS -DHAVE_MAX_FRAGMENT -DHAVE_TLS_EXTENSIONS
-DHAVE_TRUSTED_CA -DHAVE_TLS_EXTENSIONS -DHAVE_TRUNCATED_HMAC
-DHAVE_FALLBACK_SCSV -DHAVE_KEYING_MATERIAL -DHAVE_TLS_EXTENSIONS
-DHAVE_SUPPORTED_CURVES -DHAVE_FFDHE_2048 -DHAVE_SUPPORTED_CURVES
-DWOLFSSL_TLS13 -DHAVE_TLS_EXTENSIONS -DHAVE_TLS_EXTENSIONS
-DHAVE_SESSION_TICKET -DHAVE_EXTENDED_MASTER -DHAVE_TLS_EXTENSIONS
-DHAVE_SNI -DHAVE_MAX_FRAGMENT -DHAVE_TRUNCATED_HMAC -DHAVE_ALPN
-DHAVE_TRUSTED_CA -DHAVE_SUPPORTED_CURVES -DWOLFSSL_EARLY_DATA -DHAVE_SMIME
-DWOLFCRYPT_HAVE_SRP -DASN_BER_TO_DER -DWOLFSSL_HAVE_CERT_SERVICE
-DHAVE_LIGHTY -DHAVE_WOLFSSL_SSL_H=1 -DHAVE_EX_DATA -DOPENSSL_ALL
-DWOLFSSL_KEY_GEN -DWOLFSSL_NGINX -DWOLFSSL_SIGNER_DER_CERT
-DOPENSSL_COMPATIBLE_DEFAULTS -DWOLFSSL_ERROR_CODE_OPENSSL
-DWOLFSSL_OPENVPN -DHAVE_KEYING_MATERIAL -DHAVE_EX_DATA -DWOLFSSL_KEY_GEN
-DWOLFSSL_DES_ECB -DWOLFSSL_ALWAYS_VERIFY_CB -DWOLFSSL_ALWAYS_KEEP_SNI
-DKEEP_OUR_CERT -DKEEP_PEER_CERT -DHAVE_EXT_CACHE -DHAVE_EX_DATA
-DWOLFSSL_CERT_GEN -DWOLFSSL_ASIO -DASIO_USE_WOLFSSL -DWOLFSSL_KEY_GEN
-DBOOST_ASIO_USE_WOLFSSL -DHAVE_EX_DATA -DSSL_TXT_TLSV1_2 -DOPENSSL_NO_SSL2
-DOPENSSL_NO_SSL3 -DHAVE_ENCRYPT_THEN_MAC -DHAVE_STUNNEL
-DWOLFSSL_ALWAYS_VERIFY_CB -DWOLFSSL_ALWAYS_KEEP_SNI -DHAVE_EX_DATA
-DWOLFSSL_SIGNER_DER_CERT -DWOLFSSL_DES_ECB -DOPENSSL_COMPATIBLE_DEFAULTS
-DWOLFSSL_TICKET_HAVE_ID -DWOLFSSL_ALT_CERT_CHAINS -DWOLFSSL_IP_ALT_NAME
-DNO_SESSION_CACHE_REF -DWOLFSSL_DES_ECB -DWOLFSSL_TICKET_NONCE_MALLOC
-DWOLFSSL_ENCRYPTED_KEYS -DHAVE_SCRYPT -DWOLFSSL_SP_MATH_ALL
-DWOLFSSL_SP_PPC -DWOLF_CRYPTO_CB -DWC_NO_ASYNC_THREADING
-DHAVE_AES_KEYWRAP -DWOLFSSL_AES_DIRECT -DNO_OLD_RNGNAME -DNO_OLD_WC_NAMES
-DNO_OLD_SSL_NAMES -DNO_OLD_SHA_NAMES -DNO_OLD_MD5_NAME
-DWOLFSSL_HASH_FLAGS -DRSA_MAX_SIZE=4096 -DFP_MAX_BITS=8192
-DSP_INT_BITS=4096 -DWOLFSSL_TRUST_PEER_CERT -DNO_SESSION_CACHE_REF
-DWOLFSSL_TLS13_NO_PEEK_HANDSHAKE_DONE -DWOLFSSL_ALT_CERT_CHAINS
-DWOLFSSL_PRIORITIZE_PSK -DWOLFSSL_CHECK_ALERT_ON_ERR
-DWOLFSSL_TICKET_HAVE_ID -DHAVE_CURVE25519 -DHAVE_ED25519 -DHAVE_RPK
-DWOLFSSL_KEY_GEN -DWOLFSSL_CERT_REQ -DWOLFSSL_CERT_GEN -DWOLFSSL_CERT_EXT
-DHAVE_OCSP -DWOLFSSL_ED25519_STREAMING_VERIFY -DOPENSSL_ALL
-DWOLFSSL_EITHER_SIDE -DWC_RSA_NO_PADDING -DWC_RSA_PSS
-DWOLFSSL_PSS_LONG_SALT -DWOLFSSL_TICKET_HAVE_ID
-DWOLFSSL_ERROR_CODE_OPENSSL -DWOLFSSL_CERT_NAME_ALL -DWOLFSSL_AES_SIV
-DOPENSSL_EXTRA -DWOLFSSL_HAVE_WOLFSCEP -DHAVE_PKCS7 -DNO_DES3_TLS_SUITES
-DHAVE_AESGCM -DWOLFSSL_AESGCM_STREAM -DWOLFSSL_AESXTS_STREAM
-DWOLFSSL_SRTP -DWOLFSSL_MULTICAST -DWOLFSSL_PUBLIC_MP
-DHAVE_TLS_EXTENSIONS -DHAVE_SERVER_RENEGOTIATION_INFO -DHAVE_COMP_KEY
-DWOLFSSL_ALLOW_RC4 -DWOLFSSL_TLS_OCSP_MULTI -Wall -Wno-unused -O2
-DHAVE_GETPID=1 -DHAVE_WC_INTROSPECTION -include ./.build_params
"-DLIBWOLFSSL_GLOBAL_EXTRA_CFLAGS=\" \"" -pipe -Os -fomit-frame-pointer
-arch ppc -Wno-pragmas -Wall -Wextra -Wunknown-pragmas
--param=ssp-buffer-size=1 -Waddress -Warray-bounds -Wbad-function-cast
-Wchar-subscripts -Wcomment -Wfloat-equal -Wformat-security -Wformat=2
-Wmaybe-uninitialized -Wmissing-field-initializers -Wmissing-noreturn
-Wmissing-prototypes -Wnested-externs -Wnormalized=id -Woverride-init
-Wpointer-arith -Wpointer-sign -Wshadow -Wsign-compare -Wstrict-overflow=1
-Wstrict-prototypes -Wswitch-enum -Wundef -Wunused -Wunused-result
-Wunused-variable -Wwrite-strings -fwrapv -MT
wolfcrypt/src/port/ppc32/src_libwolfssl_la-ppc32-sha256-asm_c.lo -MD -MP
-MF wolfcrypt/src/port/ppc32/.deps/src_libwolfssl_la-ppc32-sha256-asm_c.Tpo
-c wolfcrypt/src/port/ppc32/ppc32-sha256-asm_c.c -fno-common -DPIC -o
wolfcrypt/src/port/ppc32/.libs/src_libwolfssl_la-ppc32-sha256-asm_c.o
wolfcrypt/src/port/ppc32/ppc32-sha256-asm_c.c: In function
'Transform_Sha256_Len':
wolfcrypt/src/port/ppc32/ppc32-sha256-asm_c.c:1220:5: error: PIC register
clobbered by '31' in 'asm'
1220 | __asm__ __volatile__ (
| ^~~~~~~
make[2]: ***
[wolfcrypt/src/port/ppc32/src_libwolfssl_la-ppc32-sha256-asm_c.lo] Error 1
make[2]: *** Waiting for unfinished jobs....
On Tue, Jul 22, 2025 at 7:33 PM Sean Parkinson @.***> wrote:
SparkiDev left a comment (wolfSSL/wolfssl#9023) https://github.com/wolfSSL/wolfssl/issues/9023#issuecomment-3102333507
Hi @barracuda156 https://github.com/barracuda156,
Please try using -fomit-frame-pointer to mitigate this issue.
Sean
— Reply to this email directly, view it on GitHub https://github.com/wolfSSL/wolfssl/issues/9023#issuecomment-3102333507, or unsubscribe https://github.com/notifications/unsubscribe-auth/AV6AXFTLK46GJ5J6PHRQX4D3JYOSNAVCNFSM6AAAAACCAWOL2KVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZTCMBSGMZTGNJQG4 . You are receiving this because you were mentioned.Message ID: @.***>
Hi @barracuda156 ,
Thanks for confirming -fomit-frame-pointer did not help. The register 31 should be allowed use, so we will look into it.
I noticed -Os and -O2 in your compiler flags. Have you tried with just one and does it build with any other optimization levels?
The failure is with the assembly version of the code that was introduced. For now you can add --disable-ppc32-asm to use the pure C version. The assembly version is about 10% faster, but not required.
If you want to use the assembly version I am curious if the small version works? --enable-ppc32-asm=WOLFSSL_PPC32_ASM_SMALL or WOLFSSL_PPC32_ASM_SMALL?
Note: Sean will be away for a week, so he'll look at this when he returns.
Thanks, David Garske, wolfSSL
@dgarske Is there some direct test to verify if an implementation – assuming it builds – is working as intended? I mean, specifically for this file. Fixing syntax in .S file for Darwin conventions will likely allow it to build. (In practice it should either be in parallel to Linux one or in the same file, but using conditional macros.) That won’t guarantee it will do what it should though. So a quick specific test would be helpful.
Hi @barracuda156 ,
Yes after the build run ./wolfcrypt/test/testwolfcrypt or make check. The wolfCrypt test runs test vectors for all algorithms.
Thanks, David Garske, wolfSSL
Hi @barracuda156 ,
Have you been able to work through these issues? If not please share an update and we can assist.
Thanks, David Garske, wolfSSL
@dgarske @SparkiDev If someone could take a look at the issue again, it will be great. It is still relevant. (And thank you for reminding about it.)
Hi @barracuda156,
The PPC32 SHA-256 assembly code has been updated with the PR: #9508
When __PIC__ is defined, the new implementation will be used that doesn't use registers 30 or 31.
Let me know if this works for you!
Sean