Ok. I'm going with that solution, then. See attached diff. Cheers, Richard
On Wed Aug 17 21:21:34 2016, yoi_no_myou...@yahoo.co.jp wrote: > Yes, __SUNPRO_C is defined by DeveloperStudio compiler. > > > 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 > > -- 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
commit 7a73fd48ee58b7792b7c89526c7d3c650091559e Author: Richard Levitte <levi...@openssl.org> Date: Tue Aug 23 03:41:46 2016 -0700 Don't use __atomic_add_fetch with DeveloperStudio on Solaris It seems that, although __ATOMIC_RELAXED is defined, that function isn't necessarely present. RT#4642 diff --git a/crypto/threads_pthread.c b/crypto/threads_pthread.c index 6f5e812..87a2cd6 100644 --- a/crypto/threads_pthread.c +++ b/crypto/threads_pthread.c @@ -109,7 +109,7 @@ int CRYPTO_THREAD_compare_id(CRYPTO_THREAD_ID a, CRYPTO_THREAD_ID b) int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock) { -#ifdef __ATOMIC_RELAXED +#if defined(__ATOMIC_RELAXED) && !defined(__SUNPRO_C) *ret = __atomic_add_fetch(val, amount, __ATOMIC_RELAXED); #else if (!CRYPTO_THREAD_write_lock(lock))
-- openssl-dev mailing list To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-dev