Hello community, here is the log from the commit of package libatomic_ops for openSUSE:Factory checked in at 2019-01-15 09:08:24 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libatomic_ops (Old) and /work/SRC/openSUSE:Factory/.libatomic_ops.new.28833 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libatomic_ops" Tue Jan 15 09:08:24 2019 rev:12 rq:663508 version:7.6.8 Changes: -------- --- /work/SRC/openSUSE:Factory/libatomic_ops/libatomic_ops.changes 2018-11-05 22:48:16.860595388 +0100 +++ /work/SRC/openSUSE:Factory/.libatomic_ops.new.28833/libatomic_ops.changes 2019-01-15 09:08:25.690676346 +0100 @@ -1,0 +2,6 @@ +Tue Jan 8 02:26:25 UTC 2019 - Jan Engelhardt <jeng...@inai.de> + +- Update to new upstream release 7.6.8 + * Support aarch64-ilp32 (GCC) target + +------------------------------------------------------------------- Old: ---- libatomic_ops-7.6.6.tar.gz New: ---- libatomic_ops-7.6.8.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libatomic_ops.spec ++++++ --- /var/tmp/diff_new_pack.yylPdp/_old 2019-01-15 09:08:26.170675906 +0100 +++ /var/tmp/diff_new_pack.yylPdp/_new 2019-01-15 09:08:26.170675906 +0100 @@ -1,7 +1,7 @@ # # spec file for package libatomic_ops # -# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: libatomic_ops -Version: 7.6.6 +Version: 7.6.8 Release: 0 Summary: A portable library for atomic memory operations License: GPL-2.0-or-later AND MIT ++++++ libatomic_ops-7.6.6.tar.gz -> libatomic_ops-7.6.8.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.6/AUTHORS new/libatomic_ops-7.6.8/AUTHORS --- old/libatomic_ops-7.6.6/AUTHORS 2018-08-07 09:33:44.000000000 +0200 +++ new/libatomic_ops-7.6.8/AUTHORS 2018-12-11 09:52:06.000000000 +0100 @@ -46,6 +46,7 @@ Shea Levy <s...@shealevy.com> Steve Capper <steve.cap...@linaro.org> Takashi Yoshii <takashi.yoshii...@renesas.com> +Tautvydas Zilys <tautvydas.zi...@gmail.com> Thiemo Seufer <ica2...@csv.ica.uni-stuttgart.de> Thorsten Glaser <t...@debian.org> Tobias Leich <em...@froggs.de> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.6/ChangeLog new/libatomic_ops-7.6.8/ChangeLog --- old/libatomic_ops-7.6.6/ChangeLog 2018-08-07 09:33:44.000000000 +0200 +++ new/libatomic_ops-7.6.8/ChangeLog 2018-12-11 09:52:06.000000000 +0100 @@ -1,4 +1,16 @@ +== [7.6.8] 2018-12-11 == + +* Eliminate 'casting signed to bigger unsigned int' CSA warning (test_stack) +* Eliminate 'redundant blank line at start/end of block' CodeFactor warning +* Fix 'Cannot implement CAS_full on this architecture' build error (nios2) +* Fix a typo in arm_v6.h +* Support aarch64-ilp32 (GCC) and UWP/arm64 (MS VC) targets +* Undefine AO_ARM_HAVE_* private macros after their usage +* Use standalone private macro to guard against AO_GCC_BARRIER redefinition +* Workaround 'condition my_chunk_ptr is always false' cppcheck false positive + + == [7.6.6] 2018-08-07 == * COPYING: sync with FSF's gpl-2.0.txt @@ -130,6 +142,15 @@ Also, includes 7.4.6 changes +== [7.4.12] 2018-12-11 == + +* COPYING: sync with FSF's gpl-2.0.txt +* Fix a typo in arm_v6.h +* Fix a typo in the overview section of README +* Support ILP32 in AArch64 assembly routines (GCC) +* Support UWP/arm64 target + + == [7.4.10] 2017-12-22 == * Fix AO_malloc for sizes near CHUNK_SIZE @@ -333,6 +354,11 @@ Also, includes 7.2 changes +== [7.2j] (not released yet) == + +* Fix a typo in arm_v6.h + + == [7.2i] 2017-12-21 == * Fix 'missing select.h', 'undefined sigprocmask' compiler errors (Hexagon) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.6/README.md new/libatomic_ops-7.6.8/README.md --- old/libatomic_ops-7.6.6/README.md 2018-08-07 09:33:44.000000000 +0200 +++ new/libatomic_ops-7.6.8/README.md 2018-12-11 09:52:06.000000000 +0100 @@ -2,7 +2,7 @@ IN NEW CODE, PLEASE USE C11 OR C++14 STANDARD ATOMICS INSTEAD OF THIS PACKAGE. -This is version 7.6.6 of libatomic_ops. +This is version 7.6.8 of libatomic_ops. ## Download diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.6/configure new/libatomic_ops-7.6.8/configure --- old/libatomic_ops-7.6.6/configure 2018-08-07 09:34:42.000000000 +0200 +++ new/libatomic_ops-7.6.8/configure 2018-12-11 09:53:10.000000000 +0100 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for libatomic_ops 7.6.6. +# Generated by GNU Autoconf 2.69 for libatomic_ops 7.6.8. # # Report bugs to <https://github.com/ivmai/libatomic_ops/issues>. # @@ -590,8 +590,8 @@ # Identity of this package. PACKAGE_NAME='libatomic_ops' PACKAGE_TARNAME='libatomic_ops' -PACKAGE_VERSION='7.6.6' -PACKAGE_STRING='libatomic_ops 7.6.6' +PACKAGE_VERSION='7.6.8' +PACKAGE_STRING='libatomic_ops 7.6.8' PACKAGE_BUGREPORT='https://github.com/ivmai/libatomic_ops/issues' PACKAGE_URL='' @@ -1343,7 +1343,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures libatomic_ops 7.6.6 to adapt to many kinds of systems. +\`configure' configures libatomic_ops 7.6.8 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1414,7 +1414,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of libatomic_ops 7.6.6:";; + short | recursive ) echo "Configuration of libatomic_ops 7.6.8:";; esac cat <<\_ACEOF @@ -1535,7 +1535,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -libatomic_ops configure 7.6.6 +libatomic_ops configure 7.6.8 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1813,7 +1813,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by libatomic_ops $as_me 7.6.6, which was +It was created by libatomic_ops $as_me 7.6.8, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2793,7 +2793,7 @@ # Define the identity of the package. PACKAGE='libatomic_ops' - VERSION='7.6.6' + VERSION='7.6.8' cat >>confdefs.h <<_ACEOF @@ -13168,7 +13168,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by libatomic_ops $as_me 7.6.6, which was +This file was extended by libatomic_ops $as_me 7.6.8, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -13234,7 +13234,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -libatomic_ops config.status 7.6.6 +libatomic_ops config.status 7.6.8 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.6/configure.ac new/libatomic_ops-7.6.8/configure.ac --- old/libatomic_ops-7.6.6/configure.ac 2018-08-07 09:33:44.000000000 +0200 +++ new/libatomic_ops-7.6.8/configure.ac 2018-12-11 09:52:06.000000000 +0100 @@ -12,7 +12,7 @@ dnl Process this file with autoconf to produce configure. -AC_INIT([libatomic_ops],[7.6.6],https://github.com/ivmai/libatomic_ops/issues) +AC_INIT([libatomic_ops],[7.6.8],https://github.com/ivmai/libatomic_ops/issues) AC_PREREQ(2.61) AC_CANONICAL_TARGET([]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.6/src/atomic_ops/ao_version.h new/libatomic_ops-7.6.8/src/atomic_ops/ao_version.h --- old/libatomic_ops-7.6.6/src/atomic_ops/ao_version.h 2018-08-07 09:33:44.000000000 +0200 +++ new/libatomic_ops-7.6.8/src/atomic_ops/ao_version.h 2018-12-11 09:52:06.000000000 +0100 @@ -35,4 +35,4 @@ /* The version here should match that in configure.ac and README. */ #define AO_VERSION_MAJOR 7 #define AO_VERSION_MINOR 6 -#define AO_VERSION_MICRO 6 /* 7.6.6 */ +#define AO_VERSION_MICRO 8 /* 7.6.8 */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.6/src/atomic_ops/sysdeps/armcc/arm_v6.h new/libatomic_ops-7.6.8/src/atomic_ops/sysdeps/armcc/arm_v6.h --- old/libatomic_ops-7.6.6/src/atomic_ops/sysdeps/armcc/arm_v6.h 2018-08-07 09:33:44.000000000 +0200 +++ new/libatomic_ops-7.6.8/src/atomic_ops/sysdeps/armcc/arm_v6.h 2018-12-11 09:52:06.000000000 +0100 @@ -52,8 +52,8 @@ { # ifndef AO_UNIPROCESSOR unsigned int dest=0; - /* issue an data memory barrier (keeps ordering of memory transactions */ - /* before and after this operation) */ + /* Issue a data memory barrier (keeps ordering of memory transactions */ + /* before and after this operation). */ __asm { mcr p15,0,dest,c7,c10,5 }; @@ -100,7 +100,6 @@ #ifndef AO_PREFER_GENERALIZED AO_INLINE AO_TS_VAL_t AO_test_and_set(volatile AO_TS_t *addr) { - AO_TS_VAL_t oldval; unsigned long tmp; unsigned long one = 1; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.6/src/atomic_ops/sysdeps/gcc/aarch64.h new/libatomic_ops-7.6.8/src/atomic_ops/sysdeps/gcc/aarch64.h --- old/libatomic_ops-7.6.6/src/atomic_ops/sysdeps/gcc/aarch64.h 2018-08-07 09:33:44.000000000 +0200 +++ new/libatomic_ops-7.6.8/src/atomic_ops/sysdeps/gcc/aarch64.h 2018-12-11 09:52:06.000000000 +0100 @@ -39,7 +39,8 @@ /* word require -latomic, are not lock-free and cause test_stack */ /* failure, so the asm-based implementation is used for now. */ /* TODO: Update it for newer GCC releases. */ -#if !defined(__clang__) || defined(AO_AARCH64_ASM_LOAD_STORE_CAS) +#if (!defined(__ILP32__) && !defined(__clang__)) \ + || defined(AO_AARCH64_ASM_LOAD_STORE_CAS) # ifndef AO_PREFER_GENERALIZED AO_INLINE AO_double_t @@ -52,8 +53,13 @@ /* single-copy atomic (unlike LDREXD for 32-bit ARM). */ do { __asm__ __volatile__("//AO_double_load\n" - " ldxp %0, %1, %3\n" - " stxp %w2, %0, %1, %3" +# ifdef __ILP32__ + " ldxp %w0, %w1, %3\n" + " stxp %w2, %w0, %w1, %3" +# else + " ldxp %0, %1, %3\n" + " stxp %w2, %0, %1, %3" +# endif : "=&r" (result.AO_val1), "=&r" (result.AO_val2), "=&r" (status) : "Q" (*addr)); } while (AO_EXPECT_FALSE(status)); @@ -69,8 +75,13 @@ do { __asm__ __volatile__("//AO_double_load_acquire\n" - " ldaxp %0, %1, %3\n" - " stxp %w2, %0, %1, %3" +# ifdef __ILP32__ + " ldaxp %w0, %w1, %3\n" + " stxp %w2, %w0, %w1, %3" +# else + " ldaxp %0, %1, %3\n" + " stxp %w2, %0, %1, %3" +# endif : "=&r" (result.AO_val1), "=&r" (result.AO_val2), "=&r" (status) : "Q" (*addr)); } while (AO_EXPECT_FALSE(status)); @@ -86,8 +97,13 @@ do { __asm__ __volatile__("//AO_double_store\n" - " ldxp %0, %1, %3\n" - " stxp %w2, %4, %5, %3" +# ifdef __ILP32__ + " ldxp %w0, %w1, %3\n" + " stxp %w2, %w4, %w5, %3" +# else + " ldxp %0, %1, %3\n" + " stxp %w2, %4, %5, %3" +# endif : "=&r" (old_val.AO_val1), "=&r" (old_val.AO_val2), "=&r" (status), "=Q" (*addr) : "r" (value.AO_val1), "r" (value.AO_val2)); @@ -106,8 +122,13 @@ do { __asm__ __volatile__("//AO_double_store_release\n" - " ldxp %0, %1, %3\n" - " stlxp %w2, %4, %5, %3" +# ifdef __ILP32__ + " ldxp %w0, %w1, %3\n" + " stlxp %w2, %w4, %w5, %3" +# else + " ldxp %0, %1, %3\n" + " stlxp %w2, %4, %5, %3" +# endif : "=&r" (old_val.AO_val1), "=&r" (old_val.AO_val2), "=&r" (status), "=Q" (*addr) : "r" (value.AO_val1), "r" (value.AO_val2)); @@ -125,13 +146,21 @@ do { __asm__ __volatile__("//AO_double_compare_and_swap\n" - " ldxp %0, %1, %2\n" +# ifdef __ILP32__ + " ldxp %w0, %w1, %2\n" +# else + " ldxp %0, %1, %2\n" +# endif : "=&r" (tmp.AO_val1), "=&r" (tmp.AO_val2) : "Q" (*addr)); if (tmp.AO_val1 != old_val.AO_val1 || tmp.AO_val2 != old_val.AO_val2) break; __asm__ __volatile__( - " stxp %w0, %2, %3, %1\n" +# ifdef __ILP32__ + " stxp %w0, %w2, %w3, %1\n" +# else + " stxp %w0, %2, %3, %1\n" +# endif : "=&r" (result), "=Q" (*addr) : "r" (new_val.AO_val1), "r" (new_val.AO_val2)); } while (AO_EXPECT_FALSE(result)); @@ -148,13 +177,21 @@ do { __asm__ __volatile__("//AO_double_compare_and_swap_acquire\n" - " ldaxp %0, %1, %2\n" +# ifdef __ILP32__ + " ldaxp %w0, %w1, %2\n" +# else + " ldaxp %0, %1, %2\n" +# endif : "=&r" (tmp.AO_val1), "=&r" (tmp.AO_val2) : "Q" (*addr)); if (tmp.AO_val1 != old_val.AO_val1 || tmp.AO_val2 != old_val.AO_val2) break; __asm__ __volatile__( - " stxp %w0, %2, %3, %1\n" +# ifdef __ILP32__ + " stxp %w0, %w2, %w3, %1\n" +# else + " stxp %w0, %2, %3, %1\n" +# endif : "=&r" (result), "=Q" (*addr) : "r" (new_val.AO_val1), "r" (new_val.AO_val2)); } while (AO_EXPECT_FALSE(result)); @@ -171,13 +208,21 @@ do { __asm__ __volatile__("//AO_double_compare_and_swap_release\n" - " ldxp %0, %1, %2\n" +# ifdef __ILP32__ + " ldxp %w0, %w1, %2\n" +# else + " ldxp %0, %1, %2\n" +# endif : "=&r" (tmp.AO_val1), "=&r" (tmp.AO_val2) : "Q" (*addr)); if (tmp.AO_val1 != old_val.AO_val1 || tmp.AO_val2 != old_val.AO_val2) break; __asm__ __volatile__( - " stlxp %w0, %2, %3, %1\n" +# ifdef __ILP32__ + " stlxp %w0, %w2, %w3, %1\n" +# else + " stlxp %w0, %2, %3, %1\n" +# endif : "=&r" (result), "=Q" (*addr) : "r" (new_val.AO_val1), "r" (new_val.AO_val2)); } while (AO_EXPECT_FALSE(result)); @@ -194,13 +239,21 @@ do { __asm__ __volatile__("//AO_double_compare_and_swap_full\n" - " ldaxp %0, %1, %2\n" +# ifdef __ILP32__ + " ldaxp %w0, %w1, %2\n" +# else + " ldaxp %0, %1, %2\n" +# endif : "=&r" (tmp.AO_val1), "=&r" (tmp.AO_val2) : "Q" (*addr)); if (tmp.AO_val1 != old_val.AO_val1 || tmp.AO_val2 != old_val.AO_val2) break; __asm__ __volatile__( - " stlxp %w0, %2, %3, %1\n" +# ifdef __ILP32__ + " stlxp %w0, %w2, %w3, %1\n" +# else + " stlxp %w0, %2, %3, %1\n" +# endif : "=&r" (result), "=Q" (*addr) : "r" (new_val.AO_val1), "r" (new_val.AO_val2)); } while (AO_EXPECT_FALSE(result)); @@ -208,11 +261,13 @@ } # define AO_HAVE_double_compare_and_swap_full -#endif /* !__clang__ || AO_AARCH64_ASM_LOAD_STORE_CAS */ +#endif /* !__ILP32__ && !__clang__ || AO_AARCH64_ASM_LOAD_STORE_CAS */ -/* As of clang-5.0 and gcc-5.4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 */ +/* As of clang-5.0 and gcc-8.1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 */ /* macro is still missing (while the double-word CAS is available). */ -# define AO_GCC_HAVE_double_SYNC_CAS +# ifndef __ILP32__ +# define AO_GCC_HAVE_double_SYNC_CAS +# endif #endif /* !__clang__ || AO_CLANG_PREREQ(3, 9) */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.6/src/atomic_ops/sysdeps/gcc/arm.h new/libatomic_ops-7.6.8/src/atomic_ops/sysdeps/gcc/arm.h --- old/libatomic_ops-7.6.6/src/atomic_ops/sysdeps/gcc/arm.h 2018-08-07 09:33:44.000000000 +0200 +++ new/libatomic_ops-7.6.8/src/atomic_ops/sysdeps/gcc/arm.h 2018-12-11 09:52:06.000000000 +0100 @@ -719,6 +719,11 @@ #endif /* AO_GCC_ATOMIC_TEST_AND_SET */ +#undef AO_ARM_HAVE_DMB +#undef AO_ARM_HAVE_LDREX +#undef AO_ARM_HAVE_LDREXBH +#undef AO_ARM_HAVE_LDREXD +#undef AO_ARM_HAVE_SWP #undef AO_BR_ALIGN #undef AO_MASK_PTR #undef AO_SKIPATOMIC_ANY_and_ANY diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.6/src/atomic_ops/sysdeps/hpc/ia64.h new/libatomic_ops-7.6.8/src/atomic_ops/sysdeps/hpc/ia64.h --- old/libatomic_ops-7.6.6/src/atomic_ops/sysdeps/hpc/ia64.h 2018-08-07 09:33:44.000000000 +0200 +++ new/libatomic_ops-7.6.8/src/atomic_ops/sysdeps/hpc/ia64.h 2018-12-11 09:52:06.000000000 +0100 @@ -100,7 +100,6 @@ _Asm_mov_to_ar(_AREG_CCV, old_val, _UP_MEM_FENCE); return _Asm_cmpxchg(AO_T_SIZE, _SEM_REL, addr, new_val, _LDHINT_NONE, _UP_MEM_FENCE); - } #define AO_HAVE_fetch_compare_and_swap_release @@ -111,7 +110,6 @@ _Asm_mov_to_ar(_AREG_CCV, old_val, _DOWN_MEM_FENCE); return _Asm_cmpxchg(_SZ_B, _SEM_ACQ, addr, new_val, _LDHINT_NONE, _DOWN_MEM_FENCE); - } #define AO_HAVE_char_fetch_compare_and_swap_acquire @@ -122,7 +120,6 @@ _Asm_mov_to_ar(_AREG_CCV, old_val, _UP_MEM_FENCE); return _Asm_cmpxchg(_SZ_B, _SEM_REL, addr, new_val, _LDHINT_NONE, _UP_MEM_FENCE); - } #define AO_HAVE_char_fetch_compare_and_swap_release @@ -134,7 +131,6 @@ _Asm_mov_to_ar(_AREG_CCV, old_val, _DOWN_MEM_FENCE); return _Asm_cmpxchg(_SZ_B, _SEM_ACQ, addr, new_val, _LDHINT_NONE, _DOWN_MEM_FENCE); - } #define AO_HAVE_short_fetch_compare_and_swap_acquire @@ -146,7 +142,6 @@ _Asm_mov_to_ar(_AREG_CCV, old_val, _UP_MEM_FENCE); return _Asm_cmpxchg(_SZ_B, _SEM_REL, addr, new_val, _LDHINT_NONE, _UP_MEM_FENCE); - } #define AO_HAVE_short_fetch_compare_and_swap_release diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.6/src/atomic_ops/sysdeps/loadstore/acquire_release_volatile.h new/libatomic_ops-7.6.8/src/atomic_ops/sysdeps/loadstore/acquire_release_volatile.h --- old/libatomic_ops-7.6.6/src/atomic_ops/sysdeps/loadstore/acquire_release_volatile.h 2018-08-07 09:33:44.000000000 +0200 +++ new/libatomic_ops-7.6.8/src/atomic_ops/sysdeps/loadstore/acquire_release_volatile.h 2018-12-11 09:52:06.000000000 +0100 @@ -31,13 +31,14 @@ /* subexpressions across a volatile load; hence, we now add compiler */ /* barriers for gcc. */ -#ifndef AO_GCC_BARRIER +#ifndef AO_HAVE_GCC_BARRIER /* TODO: Check GCC version (if workaround not needed for modern GCC). */ # if defined(__GNUC__) # define AO_GCC_BARRIER() AO_compiler_barrier() # else # define AO_GCC_BARRIER() (void)0 # endif +# define AO_HAVE_GCC_BARRIER #endif AO_INLINE AO_t diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.6/src/atomic_ops/sysdeps/loadstore/acquire_release_volatile.template new/libatomic_ops-7.6.8/src/atomic_ops/sysdeps/loadstore/acquire_release_volatile.template --- old/libatomic_ops-7.6.6/src/atomic_ops/sysdeps/loadstore/acquire_release_volatile.template 2018-08-07 09:33:44.000000000 +0200 +++ new/libatomic_ops-7.6.8/src/atomic_ops/sysdeps/loadstore/acquire_release_volatile.template 2018-12-11 09:52:06.000000000 +0100 @@ -31,13 +31,14 @@ /* subexpressions across a volatile load; hence, we now add compiler */ /* barriers for gcc. */ -#ifndef AO_GCC_BARRIER +#ifndef AO_HAVE_GCC_BARRIER /* TODO: Check GCC version (if workaround not needed for modern GCC). */ # if defined(__GNUC__) # define AO_GCC_BARRIER() AO_compiler_barrier() # else # define AO_GCC_BARRIER() (void)0 # endif +# define AO_HAVE_GCC_BARRIER #endif AO_INLINE XCTYPE diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.6/src/atomic_ops/sysdeps/loadstore/char_acquire_release_volatile.h new/libatomic_ops-7.6.8/src/atomic_ops/sysdeps/loadstore/char_acquire_release_volatile.h --- old/libatomic_ops-7.6.6/src/atomic_ops/sysdeps/loadstore/char_acquire_release_volatile.h 2018-08-07 09:33:44.000000000 +0200 +++ new/libatomic_ops-7.6.8/src/atomic_ops/sysdeps/loadstore/char_acquire_release_volatile.h 2018-12-11 09:52:06.000000000 +0100 @@ -31,13 +31,14 @@ /* subexpressions across a volatile load; hence, we now add compiler */ /* barriers for gcc. */ -#ifndef AO_GCC_BARRIER +#ifndef AO_HAVE_GCC_BARRIER /* TODO: Check GCC version (if workaround not needed for modern GCC). */ # if defined(__GNUC__) # define AO_GCC_BARRIER() AO_compiler_barrier() # else # define AO_GCC_BARRIER() (void)0 # endif +# define AO_HAVE_GCC_BARRIER #endif AO_INLINE unsigned/**/char diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.6/src/atomic_ops/sysdeps/loadstore/int_acquire_release_volatile.h new/libatomic_ops-7.6.8/src/atomic_ops/sysdeps/loadstore/int_acquire_release_volatile.h --- old/libatomic_ops-7.6.6/src/atomic_ops/sysdeps/loadstore/int_acquire_release_volatile.h 2018-08-07 09:33:44.000000000 +0200 +++ new/libatomic_ops-7.6.8/src/atomic_ops/sysdeps/loadstore/int_acquire_release_volatile.h 2018-12-11 09:52:06.000000000 +0100 @@ -31,13 +31,14 @@ /* subexpressions across a volatile load; hence, we now add compiler */ /* barriers for gcc. */ -#ifndef AO_GCC_BARRIER +#ifndef AO_HAVE_GCC_BARRIER /* TODO: Check GCC version (if workaround not needed for modern GCC). */ # if defined(__GNUC__) # define AO_GCC_BARRIER() AO_compiler_barrier() # else # define AO_GCC_BARRIER() (void)0 # endif +# define AO_HAVE_GCC_BARRIER #endif AO_INLINE unsigned diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.6/src/atomic_ops/sysdeps/loadstore/short_acquire_release_volatile.h new/libatomic_ops-7.6.8/src/atomic_ops/sysdeps/loadstore/short_acquire_release_volatile.h --- old/libatomic_ops-7.6.6/src/atomic_ops/sysdeps/loadstore/short_acquire_release_volatile.h 2018-08-07 09:33:44.000000000 +0200 +++ new/libatomic_ops-7.6.8/src/atomic_ops/sysdeps/loadstore/short_acquire_release_volatile.h 2018-12-11 09:52:06.000000000 +0100 @@ -31,13 +31,14 @@ /* subexpressions across a volatile load; hence, we now add compiler */ /* barriers for gcc. */ -#ifndef AO_GCC_BARRIER +#ifndef AO_HAVE_GCC_BARRIER /* TODO: Check GCC version (if workaround not needed for modern GCC). */ # if defined(__GNUC__) # define AO_GCC_BARRIER() AO_compiler_barrier() # else # define AO_GCC_BARRIER() (void)0 # endif +# define AO_HAVE_GCC_BARRIER #endif AO_INLINE unsigned/**/short diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.6/src/atomic_ops.h new/libatomic_ops-7.6.8/src/atomic_ops.h --- old/libatomic_ops-7.6.6/src/atomic_ops.h 2018-08-07 09:33:44.000000000 +0200 +++ new/libatomic_ops-7.6.8/src/atomic_ops.h 2018-12-11 09:52:06.000000000 +0100 @@ -330,11 +330,14 @@ # include "atomic_ops/sysdeps/gcc/avr32.h" # elif defined(__hexagon__) # include "atomic_ops/sysdeps/gcc/hexagon.h" +# elif defined(__nios2__) +# include "atomic_ops/sysdeps/gcc/generic.h" +# define AO_CAN_EMUL_CAS # elif defined(__riscv) # include "atomic_ops/sysdeps/gcc/riscv.h" # elif defined(__tile__) # include "atomic_ops/sysdeps/gcc/tile.h" -# else /* __nios2__, etc. */ +# else /* etc. */ # include "atomic_ops/sysdeps/gcc/generic.h" # endif #endif /* __GNUC__ && !AO_USE_PTHREAD_DEFS */ @@ -380,7 +383,7 @@ #if defined(_MSC_VER) || defined(__DMC__) || defined(__BORLANDC__) \ || (defined(__WATCOMC__) && defined(__NT__)) -# if defined(_AMD64_) || defined(_M_X64) +# if defined(_AMD64_) || defined(_M_X64) || defined(_M_ARM64) # include "atomic_ops/sysdeps/msftc/x86_64.h" # elif defined(_M_IX86) || defined(x86) # include "atomic_ops/sysdeps/msftc/x86.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.6/src/atomic_ops_malloc.c new/libatomic_ops-7.6.8/src/atomic_ops_malloc.c --- old/libatomic_ops-7.6.6/src/atomic_ops_malloc.c 2018-08-07 09:33:44.000000000 +0200 +++ new/libatomic_ops-7.6.8/src/atomic_ops_malloc.c 2018-12-11 09:52:06.000000000 +0100 @@ -230,17 +230,17 @@ } if (AO_EXPECT_FALSE(my_chunk_ptr - AO_initial_heap - > AO_INITIAL_HEAP_SIZE - CHUNK_SIZE)) + > AO_INITIAL_HEAP_SIZE - CHUNK_SIZE)) { + /* We failed. The initial heap is used up. */ + my_chunk_ptr = get_mmaped(CHUNK_SIZE); + assert(((AO_t)my_chunk_ptr & (ALIGNMENT-1)) == 0); break; + } if (AO_compare_and_swap(&initial_heap_ptr, (AO_t)my_chunk_ptr, (AO_t)(my_chunk_ptr + CHUNK_SIZE))) { - return my_chunk_ptr; + break; } } - - /* We failed. The initial heap is used up. */ - my_chunk_ptr = get_mmaped(CHUNK_SIZE); - assert (!((AO_t)my_chunk_ptr & (ALIGNMENT-1))); return my_chunk_ptr; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libatomic_ops-7.6.6/tests/test_stack.c new/libatomic_ops-7.6.8/tests/test_stack.c --- old/libatomic_ops-7.6.6/tests/test_stack.c 2018-08-07 09:33:44.000000000 +0200 +++ new/libatomic_ops-7.6.8/tests/test_stack.c 2018-12-11 09:52:06.000000000 +0100 @@ -179,16 +179,16 @@ #endif { list_element * t[MAX_NTHREADS + 1]; - int index = (int)(size_t)arg; - int i; + unsigned index = (unsigned)(size_t)arg; + unsigned i; # ifdef VERBOSE - int j = 0; + unsigned j = 0; - printf("starting thread %d\n", index); + printf("starting thread %u\n", index); # endif while (fetch_and_add(&ops_performed, index + 1) + index + 1 < LIMIT) { - for (i = 0; i < index + 1; ++i) + for (i = 0; i <= index; ++i) { t[i] = (list_element *)AO_stack_pop(&the_list); if (0 == t[i]) @@ -197,7 +197,7 @@ abort(); } } - for (i = 0; i < index + 1; ++i) + for (i = 0; i <= index; ++i) { AO_stack_push(&the_list, (AO_t *)t[i]); } @@ -206,7 +206,7 @@ # endif } # ifdef VERBOSE - printf("finished thread %d: %d total ops\n", index, j); + printf("finished thread %u: %u total ops\n", index, j); # endif return 0; } @@ -245,7 +245,7 @@ for (exper_n = 0; exper_n < N_EXPERIMENTS; ++ exper_n) for (nthreads = 1; nthreads <= max_nthreads; ++nthreads) { - int i; + unsigned i; # ifdef USE_WINTHREADS DWORD thread_id; HANDLE thread[MAX_NTHREADS]; @@ -268,7 +268,7 @@ # endif ops_performed = 0; start_time = get_msecs(); - for (i = 1; i < nthreads; ++i) { + for (i = 1; (int)i < nthreads; ++i) { int code; # ifdef USE_WINTHREADS @@ -287,7 +287,7 @@ /* We use the main thread to run one test. This allows gprof */ /* profiling to work, for example. */ run_one_test(0); - for (i = 1; i < nthreads; ++i) { + for (i = 1; (int)i < nthreads; ++i) { int code; # ifdef USE_WINTHREADS