Releases: ivmai/libatomic_ops
Releases · ivmai/libatomic_ops
7.4.8
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
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
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
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
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
7.2g
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
7.2f
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
7.4.2
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
7.4.0
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
7.2e
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