wolfssl icon indicating copy to clipboard operation
wolfssl copied to clipboard

[Bug]: 5.8.2 has broken assembler for ppc

Open barracuda156 opened this issue 5 months ago • 13 comments

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

barracuda156 avatar Jul 21 '25 19:07 barracuda156

@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.

barracuda156 avatar Jul 21 '25 19:07 barracuda156

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

anhu avatar Jul 21 '25 19:07 anhu

Hi @barracuda156,

Are you able to use the inline assembly file: ppc32-sha256-asm_c.c?

Sean

SparkiDev avatar Jul 21 '25 22:07 SparkiDev

@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.

barracuda156 avatar Jul 21 '25 23:07 barracuda156

@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....

barracuda156 avatar Jul 22 '25 11:07 barracuda156

Hi @barracuda156,

Please try using -fomit-frame-pointer to mitigate this issue.

Sean

SparkiDev avatar Jul 22 '25 11:07 SparkiDev

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: @.***>

barracuda156 avatar Jul 22 '25 11:07 barracuda156

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 avatar Jul 22 '25 15:07 dgarske

@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.

barracuda156 avatar Jul 22 '25 15:07 barracuda156

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

dgarske avatar Jul 22 '25 15:07 dgarske

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 avatar Sep 12 '25 16:09 dgarske

@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.)

barracuda156 avatar Sep 16 '25 13:09 barracuda156

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

SparkiDev avatar Dec 10 '25 05:12 SparkiDev