Skip to content

Releases: ivmai/libatomic_ops

7.4.8

18 Oct 11:11
Compare
Choose a tag to compare

Changes

  • Fix 'missing select.h', 'undefined sigprocmask' compiler errors (Hexagon)
  • Update README about bugs reporting and new releases notification
  • Workaround misspelling in GCC to detect ARMv6KZ platform

Build status

Travis CI build
AppVeyor CI build

Distribution Tarball

libatomic_ops-7.4.8.tar.gz (see below)

7.6.0

19 May 07:53
Compare
Choose a tag to compare
7.6.0 Pre-release
Pre-release

Changes

  • Add _and/or/xor and [fetch]compare_and_swap tests to test_atomic
  • Add asm-based and/or/xor implementation for char/short/int (gcc/x86)
  • Add asm-based char/short/int CAS implementation for gcc/x86[_64]
  • Add configure '--disable-atomic-intrinsics' option
  • Add dd_acquire_read case to test_atomic
  • Add initial nios2 architecture support
  • Add Makefile target (check-nolink) to compile all source without linking
  • Add Makefile target to run all tests without test-driver
  • Add test_atomic_generalized to Makefile and Makefile.msft
  • Allow alternate CC (CROSS_CC) for AC_TRY_COMPILE (configure)
  • Always define word-wide CAS for x86 (MS VC++ 8+)
  • Avoid atomic_compare_exchange_n if no __GCC_HAVE_SYNC_COMPARE_AND_SWAP_n
  • Avoid extra nop_full in stack_pop_acquire if atomic intrinsics used (x86)
  • Basic support of TILE-Gx and TILEPro CPUs
  • Code refactoring of int-wide primitives in gcc/x86.h
  • Define AO_TS_SET as __GCC_ATOMIC_TEST_AND_SET_TRUEVAL if applicable
  • Define CLANG/GNUC_PREREQ macros to check gcc/clang minimum version
  • Do not define print_list() unless used (tests)
  • Eliminate 'condition sizeof(long)>4 is always true' cppcheck style warning
  • Eliminate 'ISO C90 does not support long long' compiler pedantic warning
  • Eliminate 'scope of variable can be reduced' cppcheck warnings
  • Eliminate redundant lwsync 2nd call in CAS_full on fail (gcc/PowerPC)
  • Fix 'unknown attribute no_sanitize' compiler warning (clang prior to v3.8)
  • Fix 'variable new value is never used' cppcheck style warning
  • Fix missing double_compare_and_swap_dd_acquire_read
  • Fix reporting about missing and/or/xor_dd_acquire_read (test_atomic)
  • Hide AO_locks symbol
  • Implement AO_CLEAR using C11 atomic intrinsic (GCC)
  • Implement CAS_acquire/release/full using __atomic_compare_exchange_n (gcc)
  • Implement char and/or/xor and short CAS for msftc ARM and X86[_64]
  • Implement char CAS and char/short add for msftc X86[_64] (VS 2013+)
  • Implement compiler_barrier using C11 __atomic_signal_fence (GCC)
  • Implement int CAS/inc/dec for msftc/x86_64
  • Implement short inc/dec directly for msftc ARM and X86[_64]
  • Initial ibmc/powerpc (xlc) support
  • New configure option (--enable-werror) to treat warnings as compiler errors
  • New macro AO_PREFER_BUILTIN_ATOMICS to rely on C11 atomics fully (AArch64)
  • Refine AO_nop_write comment for ARM big.LITTLE architecture
  • Refine configure messages when checking for compiler options
  • Refine documentation about _full memory ordering suffix
  • Refine README how to build the library source from the repository
  • Relax shareability domain for dmb st in AO_nop_write (ARM/AArch64)
  • Remove redundant include windows.h from headers (msftc/x86[_64])
  • Remove spaces at EOLn in asm code
  • Report gcc/clang pedantic warnings (configure)
  • Support NaCl/arm
  • Suppress 'ISO C does not support __int128 type' GCC/Clang pedantic warning
  • Test store/CAS emulation explicitly
  • Update shared libraries version info to 2:0:1
  • Use GCC atomic intrinsics for PowerPC 32/64 (GCC 4.8+ and clang 3.8+)
  • Use GCC atomic intrinsics for x86, x64, ARM, MIPS (gcc 4.9+, clang 3.5+)
  • Use generalized double-wide load/store if AO_PREFER_GENERALIZED (gcc/x86)
  • Workaround '#error' cppcheck error messages
  • Workaround 'condition always true', 'unused stored value' cppcheck warnings
  • Workaround 'function is never used' cppcheck style warnings
  • Workaround 'obsolescent ftime called' cppcheck style warning (POSIX)
  • Workaround 'overflow in pointer subtraction' cppcheck warning
  • Workaround 'shifting 32-bit value by 32 bits undefined' cppcheck warning
  • Workaround 'uninitialized memory use' code analyzer false warning (tests)
  • Workaround 'uninitialized variable' cppcheck error in hpc/hppa.h
  • Workaround 'value of macro is unknown' cppcheck information messages
  • Workaround a bug in double-wide intrinsics of Clang/x64 with ASan enabled
  • Workaround MSan warning about uninitialized data read by generalized store
    Also, includes 7.4.6 changes

Build status

Travis CI build
AppVeyor CI build
Coveralls test coverage

Distribution Tarball

libatomic_ops-7.6.0.tar.gz (see below)

7.4.6

18 May 08:54
Compare
Choose a tag to compare

Changes

  • Add assertion that double-wide CAS target is aligned (msftc/x86[_64])
  • Add configure --enable-gcov option (enable code coverage analysis)
  • Code refactoring of gcc/powerpc.h to avoid code duplication
  • Eliminate 'cast to long from void*' compiler warning in test_atomic
  • Eliminate 'implicit declaration of close' warning in 'strict ANSI' mode
  • Eliminate 'missing braces around initializer' gcc warning (hppa)
  • Eliminate 'printf format specifies type void*' GCC pedantic warnings
  • Eliminate 'value shift followed by expansion' false code defect warning
  • Enable limited testing in Makefile.msft without Cygwin
  • Fix (delete) comment for AO_and_full (x86)
  • Fix block_all_signals compilation in 'strict ANSI' mode
  • Fix missing .exe for test filenames in Makefile (MinGW)
  • Fix missing printed value names (test_stack)
  • Implement fetch-CAS for s390[x] (gcc)
  • Move libraries version info to the beginning of Makefile.am
  • Refine documentation in Makefile.msft how to run all tests (MS VC)
  • Refine README about library downloading
  • Rename doc/README.txt to doc/README_details.txt
  • Support AIX/ppc (gcc)
  • Support CFLAGS_EXTRA to pass extra user-defined compiler flags (make)
  • Support n32 ABI for mips64
  • Update shared libraries version info for 7.4.6+ (to 1:4:0)
  • Use 'inline code' format for commands in README.md
  • Use LLD and SCD instructions on mips64
  • Workaround 'resource leak' false positives in AO_malloc, add_elements
  • Workaround 'uninitialized memory use' MemorySanitizer warning (test_atomic)
    Also, includes 7.2h changes

Build status

Travis CI build
AppVeyor CI build

Distribution Tarball

libatomic_ops-7.4.6.tar.gz (see below)

7.2h

17 May 08:56
Compare
Choose a tag to compare

Changes

  • Add 'clean' target to Makefile.msft
  • Enable Makefile.msft for Win64
  • Exclude 'check' from nmake all (Makefile.msft)
  • Fix 'Cannot implement CAS_full on this architecture' build error (cris)
  • Fix 'doc' files installation folder
  • Fix (improve) AO_REQUIRE_CAS description in README
  • Fix AO_SIZE_MAX definition (Linux/musl-gcc)
  • Fix assertions style in test_atomic_include
  • Fix size value wrap around in AO_malloc_large
  • Fix test_atomic failure caused unaligned AO_double_t access (x86)
  • Fix type of general AO_TS_INITIALIZER
  • Fix typo in comments in gcc/arm.h
  • Fix typos in 'error' pragma messages
  • Workaround test_stack failure on AIX/ppc

Build status

Travis CI build
AppVeyor CI build

Distribution Tarball

libatomic_ops-7.2h.tar.gz (see below)

7.4.4

10 May 19:23
Compare
Choose a tag to compare

Changes

  • Eliminate 'signed-to-unsigned value extension' compiler warning in malloc
  • Eliminate 'variable set but not used' Cppcheck warnings in test_stack
  • Fix GCC 5.x compatibility for AArch64 double-wide primitives
  • Fix makefile preventing AO_pause undefined in libatomic_ops_gpl
  • Fix missing casts to match printf format specifier in test_atomic
  • Fix missing output folder on making auto-generated test files (Automake)
  • Fix typo in configure.ac (in description of AO_ASM_X64_AVAILABLE)
  • Minor fix of code alignment in mips AO_compare_and_swap
  • Remove TODO file
  • Restore contribution info in ChangeLog for authors not listed in git log
    Also, includes 7.2g changes

Distribution Tarball

libatomic_ops-7.4.4.tar.gz

7.2g

10 May 19:33
Compare
Choose a tag to compare

Changes

  • Add disclaimer to README to favor C11/C++14 atomics over libatomic_ops use
  • Regenerate configure files using official libtool release (v2.4.2)
  • Remove inclusion of acquire_release_volatile.h on MIPS
  • Remove obsolete information from README about C++0x standard future
  • Update links due to project site transition

Distribution Tarball

libatomic_ops-7.2g.tar.gz

7.2f

10 May 20:09
Compare
Choose a tag to compare

Changes

  • Fix a typo in doc/README.txt (remove redundant "an" article)
  • Regenerate configure files by new automake (v1.14.1), libtool (v2.4.2.418)

Distribution Tarball

libatomic_ops-7.2f.tar.gz

7.4.2

10 May 20:23
Compare
Choose a tag to compare
7.4.2 Pre-release
Pre-release

Changes

  • Fix a typo in doc/README.txt (remove redundant "an" article)
  • Update emails/links due to project site transition
    Also, includes 7.2f changes

Distribution Tarball

libatomic_ops-7.4.2.tar.gz

7.4.0

10 May 20:18
Compare
Choose a tag to compare
7.4.0 Pre-release
Pre-release

Changes

  • Add and/or/xor entries to list_atomic (tests)
  • Add char/short/int/AO_double_t and dd_acquire cases to list_atomic (tests)
  • Add compile-time assertion for size of 'standard' AO_double_t
  • Add double_store pthread-based implementation and tests
  • Add generalized CAS primitives of char/short/int size
  • Add generalized atomic and/or/xor operations for char/short/int types
  • Add generalized fetch_and_add_acquire/release (for ARMv6+)
  • Add generic implementation of double_load primitives
  • Add information about AO_ASSUME_VISTA to README_win32
  • Add internal header containing only char/short/int/AO_t atomic loads
  • Add load/store primitives generalization based on CAS
  • Add lock-based implementation of char/short/int_fetch_compare_and_swap
  • Add makefile rule to test list_atomic.template syntax (tests)
  • Add missing 'const' in aligned-atomic XSIZE_load implementation
  • Add missing double_compare_and_swap to generalization
  • Add missing generalization of no-barrier CAS in template
  • Add negative double-CAS test cases to test_atomic_include (tests)
  • Add test_stack to Makefile.msft (tests)
  • Adjust fprintf arguments type matching specifier in test_stack (tests)
  • Adjust included filenames in atomic_ops_malloc and test_stack
  • Adjust quotes in echo command of Makefile.msft (Win32)
  • Always use 'mfence' for nop_full if target CPU supports SSE2 (gcc/x86)
  • Better document configure THREADDLLIBS variable
  • Cast away volatile on dereference in CAS-based generalization primitives
  • Change policy regarding version numbers ("micro" part instead of "alpha")
  • Convert README to Markdown format
  • Define AO_NO_PTHREADS in configure if no pthreads (Win32 and VxWorks)
  • Define AO_int_X operations for ARM and avr32
  • Define double-wide ordered loads/stores for x86
  • Define int_and/or/xor primitives in ao_t_is_int header
  • Define nop_full as compiler barrier for pre-ARMv6 single-core case
  • Do not duplicate BUILT_SOURCES entries in nobase_private_HEADERS (Makefile)
  • Do not include standard_ao_double_t.h where double-CAS is unimplemented
  • Do not report absence of meaningless nop, load and store in test_atomic
  • Do not use deprecated AO_T and AO_TS_T (tests)
  • Eliminate 'missing initializer' warning for AO_stack_t value initializer
  • Eliminate 64-bit compiler warnings in atomic_ops_malloc
  • Eliminate arithmetic shifts in double-CAS (gcc/arm, msftc/x86)
  • Eliminate warning for fetch_and_add argument in test_atomic_include (tests)
  • Enable Makefile.msft for Win64
  • Enable build using toolchain without pthreads
  • Enable double_compare_and_swap for non-cpp code (msftc/x86.h)
  • Enable generalization of all variants of CAS via fetch_compare_and_swap
  • Enable test_stack for pthreads-w32 and Win32 with native threads
  • Fix generalized AO_char/short_compare_and_swap args (missing 'unsigned')
  • Fix makefile sed rule for list_atomic (tests)
  • Fix missing abort() usage in atomic_ops_malloc and tests on WinCE
  • Generalize compare_double_and_swap_double using double_compare_and_swap
  • Generalize double_load/store for x86_64 (GCC)
  • Generate ao_t_is_int, 'loadstore' headers from templates
  • Generate generalized AO_t load/store/fetch_and_add primitives from template
  • Generate ordered_loads/stores_only headers from templates
  • Group all X_acquire_release_volatile.h and X_[aligned_]atomic_load_store.h
  • Implement and/or/xor, AO_double_load for ARM
  • Implement atomic store using direct write by default on ARMv6+
  • Implement char/short/int-wide primitives using GCC built-in atomic/sync
  • Implement char/short/int_fetch_and_add for msftc/x86[_64] (Win32)
  • Implement char/short_fetch_and_add, char/short_load for ARMv6+ (GCC)
  • Implement char/short_store primitives at aligned addresses for ARM
  • Implement compare_double_and_swap_double for SunCC/x86
  • Implement double_load/store based on guaranteed x86 access atomicity
  • Implement double_store for ARMv7 using LDREXD/STREXD
  • Implement load/store via simple LDR/STR for ARMv6+ (msftc)
  • Implement nop_full/write using 'dmb' instruction if available (gcc/arm)
  • Improve debug printing in test_stack (tests)
  • Log messages to stdout instead of stderr (tests)
  • Make AO_ASSUME_VISTA also enables Win98 code in msftc/x86.h (Win32)
  • Minimize gcc/generic-arithm template by factoring out barriers
  • Move 'unsigned' keyword to XCTYPE in generalize-small template
  • Move default compiler options to CFLAGS in Makefile.msft (Win32)
  • Move definitions of ordered loads/stores to inner separate headers
  • Move gcc-generic AO_t-wide primitives to generic-small/arithm headers
  • Move generalized arithmetical primitives to 'generalize-arithm' template
  • Optimize AO_spin manually to minimize compiler influence on its duration
  • Parameterize list_atomic template with XSIZE (tests)
  • Perform only few list reversals in test_malloc if AO based on pthreads
  • Put autogen.sh to 'dist' package (Automake)
  • Remote duplicate definition of test_and_set_acquire in generalize.h
  • Remove X_aligned_atomic_load_store headers and template
  • Remove duplicate AO_spin and AO_pause definition in atomic_ops_stack
  • Remove gcc/x86_64.h eliminating code duplication of gcc/x86.h
  • Remove nested AO_USE_PTHREAD_DEFS macro check in atomic_ops.h (gcc/arm)
  • Remove redundant 'cc' clobber for LDREXD instruction (gcc/arm)
  • Remove store_full from msftc/arm.h in favor of generalized primitive
  • Remove sunc/x86_64.h eliminating code duplication of sunc/x86.h
  • Remove unsafe emulation-based implementation of double CAS (SunCC/x86_64)
  • Remove useless 'perror' call in run_parallel.h (tests)
  • Reorder AO_double_t union elements for AO_DOUBLE_T_INITIALIZER portability
  • Replace atomic_load_store.template with atomic_load and atomic_store ones
  • Replace some FIXME items with TODO in atomic_ops.c and sysdeps headers
  • Specify fetch_and_add/sub1 result as unused in test_atomic (tests)
  • Support AArch64 (64-bit ARM) target (GCC)
  • Support ARMv8 target (gcc/arm)
  • Test double_compare_and_swap in test_atomic (tests)
  • Use AO_ prefix for internal functions in arm_v6.h, hppa.h
  • Use __atomic GCC built-in to implement generic double-wide CAS
  • Use built-in __sync CAS for double-CAS if AO_USE_SYNC_CAS_BUILTIN for x86
  • Workaround GCC 4.4.3 warning reported for 'val' of list_atomic.c (tests)
    Also, includes 7.2e changes

Distribution Tarball

libatomic_ops-7.4.0.tar.gz

7.2e

10 May 20:07
Compare
Choose a tag to compare

Changes

  • Fix (remove) invalid include of read_ordered.h for ARM
  • Fix AM_CONFIG_HEADER in configure for autoconf-2.69-1
  • Fix AO_pause sleep delay for particular argument values (Win32)
  • Fix ARMv7 LDREXD/STREXD double-wide operand specification (GCC/Clang)
  • Fix LDREXD/STREXD use for pre-Clang3.3/arm
  • Fix README regarding _acquire_read barrier
  • Fix XSIZE_load/store definition order in generalize-small template
  • Fix asm constraint of CAS memory operand for gcc/alpha, clang-3.1/mips
  • Fix asm constraints of primitives in sunc/x86.h
  • Fix cmpxchg16b-based compare_double_and_swap_double for SunCC/x86_64
  • Fix compare_double_and_swap_double and double_ptr_storage for gcc/x32
  • Fix compare_double_and_swap_double for clang3.0/x86 in PIC mode
  • Fix compare_double_and_swap_double_full definition condition in emul_cas
  • Fix generalize-small template adding missed CAS-based fetch_and_add
  • Fix generalized fetch_and_add function
  • Fix missing compiler barrier in nop_full for uniprocessor ARM
  • Fix ordered_except_wr header inclusion for s390
  • Fix return type of AO_int_X primitives defined in ao_t_is_int header
  • Fix return type of char/short/int_load_read() in read_ordered.h
  • Fix template-based headers regeneration order in src/Makefile
  • Fix typos in ao_t_is_int, atomic_ops.h, generalize.h, msftc/arm.h comments
  • Fix variable type to match printf format specifier in test_stack
  • Fix visibility and initial value of 'dummy' variable in atomic_ops_stack
  • Terminate tests with abort after error reported

Distribution Tarball

libatomic_ops-7.2e.tar.gz