To only allow the use of __atomic_add_fetch when __ATOMIC_RELAXED is non-zero isn't the right move here. So it seems that different compilers either only implement a subset of the __atomic builtins, or name them differently.
What was the macro defined by the DeveloperStudio compiler? __SUNPRO_C or something else? In that case, the correct method might be to exclude it, like this: #if defined(__ATOMIC_RELAXED) && !defined(__SUNPRO_C) On Mon Aug 08 08:33:34 2016, yoi_no_myou...@yahoo.co.jp wrote: > Hello, > > % ./Configure solaris-x86-cc > % make > : > Undefined first referenced > symbol in file > __atomic_add_fetch ./libcrypto.so > ld: fatal: symbol referencing errors. No output written to > fuzz/asn1parse-test > > > % ./Configure solaris64-x86_64-cc > % make > has the same error. > > Tested on Solaris10 x86/64, with Solaris developerstudio12.5. > > > This is caused because __ATOMIC_RELAXED is #defined as 0 > in /opt/developerstudio12.5/lib/compilers/include/CC/gnu/builtins.h > > > Sample patch: > --- ../openssl-1.1.0-pre6.orig/crypto/threads_pthread.c > +++ ./crypto/threads_pthread.c > @@ -109,7 +109,7 @@ > > int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK > *lock) > { > -#ifdef __ATOMIC_RELAXED > +#if __ATOMIC_RELAXED > *ret = __atomic_add_fetch(val, amount, __ATOMIC_RELAXED); > #else > if (!CRYPTO_THREAD_write_lock(lock)) > > > With this patch, > % ./Configure solaris-x86-cc > % make > % make test > passes. > > % ./Configure solaris64-x86_64-cc > % make > passes but > % make test > stops. > This is another problem, which seems to be the same as bug #4641. > > > Regards, > > --- Kiyoshi <yoi_no_myou...@yahoo.co.jp> -- Richard Levitte levi...@openssl.org -- Ticket here: http://rt.openssl.org/Ticket/Display.html?id=4642 Please log in as guest with password guest if prompted -- openssl-dev mailing list To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-dev