On 13/05/2024 02:42, Neil Horman wrote:
We added support for RCU locks in 3.3 which required the use of atomics (or emulated atomic where they couldn't be supported), but those were in libcrypro not liberal


Right - its supposed to fallback to emulated atomic calls where atomics aren't available on a particular platform.

Some platforms have some atomics support but you have to link in a separate atomics library to get it to work. You might try adding "-latomic" to Configure command line and see if that helps at all.

Matt



On Sun, May 12, 2024, 7:26 PM Dennis Clarke via openssl-users <openssl-users@openssl.org <mailto:openssl-users@openssl.org>> wrote:


    On 4/9/24 08:56, OpenSSL wrote:
     > -----BEGIN PGP SIGNED MESSAGE-----
     > Hash: SHA256
     >
     >
     >     OpenSSL version 3.3.0 released
     >     ==============================
     >


    Trying to compile this on an old Solaris 10 machine and over and over
    and over I see these strange things as Undefined symbols :

    Undefined                       first referenced
       symbol                             in file
    __atomic_store_4                    ./libssl.so
    __atomic_fetch_add_4                ./libssl.so
    __atomic_fetch_sub_4                ./libssl.so
    atomic_thread_fence                 ./libssl.so
    __atomic_load_4                     ./libssl.so
    ld: fatal: symbol referencing errors. No output written to apps/openssl
    gmake[1]: *** [Makefile:12601: apps/openssl] Error 2
    gmake[1]: Leaving directory
    '/opt/bw/build/openssl-3.3.0_SunOS_5.10_SPARC64.002'
    gmake: *** [Makefile:1978: build_sw] Error 2


    Those look like strange C11 atomics. Are they really needed somewhere?

    I see include/internal/refcount.h talks about C11 atomics and yet the
    entire code base is supposed to be C90 clean.  See section the OpenSSL
    Coding Style policy :

    https://www.openssl.org/policies/technical/coding-style.html
    <https://www.openssl.org/policies/technical/coding-style.html>

          Chapter 14: Portability

              To maximise portability the version of C defined in
              ISO/IEC 9899:1990 should be used. This is more commonly
              referred to as C90. ISO/IEC 9899:1999 (also known as C99) is
              not supported on some platforms that OpenSSL is used on and
              therefore should be avoided.


    Perhaps I need to define OPENSSL_DEV_NO_ATOMICS ?


    Dennis Clarke
    RISC-V/SPARC/PPC/ARM/CISC
    UNIX and Linux spoken

Reply via email to