ChangeLog 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595
  1. == [7.6.10] 2019-03-01 ==
  2. * Eliminate 'my_chunk_ptr-AO_initial_heap out of bounds' cppcheck warning
  3. * Fix 'AO_*_TS_T is not defined' compiler warnings (GCC-8)
  4. * Fix 'duplicate symbol' error for test_malloc/stack with static libs (OS X)
  5. * Workaround 'argument to function assert is always 1' cppcheck warnings
  6. == [7.6.8] 2018-12-11 ==
  7. * Eliminate 'casting signed to bigger unsigned int' CSA warning (test_stack)
  8. * Eliminate 'redundant blank line at start/end of block' CodeFactor warning
  9. * Fix 'Cannot implement CAS_full on this architecture' build error (nios2)
  10. * Fix a typo in arm_v6.h
  11. * Support aarch64-ilp32 (GCC) and UWP/arm64 (MS VC) targets
  12. * Undefine AO_ARM_HAVE_* private macros after their usage
  13. * Use standalone private macro to guard against AO_GCC_BARRIER redefinition
  14. * Workaround 'condition my_chunk_ptr is always false' cppcheck false positive
  15. == [7.6.6] 2018-08-07 ==
  16. * COPYING: sync with FSF's gpl-2.0.txt
  17. * Fix 'undefined reference to __atomic_load/store/cas_16' error (gcc-7/x64)
  18. * Fix a typo in the overview section of README
  19. * Fix comments style in configure.ac and Makefile.am
  20. * Update copyright information in README and some header files
  21. == [7.6.4] 2018-03-27 ==
  22. * Add RISC-V support
  23. * Convert atomic_ops_malloc.c and tests to valid C++ code
  24. * Eliminate 'function is never used' cppcheck warning for load_before_cas
  25. * Eliminate 'using argument that points at uninitialized var' cppcheck error
  26. * Fix 'AO_pt_lock undefined' error if cross-compiling manually (MinGW)
  27. * Fix public headers inclusion from clients C++ code
  28. * Remove gcc/nios2.h file (include gcc/generic.h directly for nios2)
  29. * Support MIPS rel6
  30. == [7.6.2] 2017-12-24 ==
  31. * Allow to alter DEFAULT/MAX_NTHREADS values in test_malloc/stack
  32. * Allow to select almost-non-blocking stack implementation explicitly
  33. * Annotate AO_malloc with 'alloc_size' and 'malloc' attributes
  34. * Avoid misleading 'AO_t undefined' error if wrong atomic_ops.h included
  35. * Define AO_TS_SET to 1 (true) if GCC atomic_test_and_set is used
  36. * Disable workaround in stack_pop_acquire that was needed for ancient Clang
  37. * Do not define AO_GCC_FORCE_HAVE_CAS for Clang 3.8+ (Aarch64)
  38. * Do not disallow to define double_load using built-in atomics (Aarch64)
  39. * Do not expose AO_GCC_FORCE_HAVE_CAS macro to client code (GCC)
  40. * Do not install documentation if configure --disable-docs (new option)
  41. * Do not produce .tar.bz2 distribution file (configure)
  42. * Eliminate '-pedantic is not an option that controls warnings' GCC message
  43. * Eliminate data race in cons() of test_malloc
  44. * Eliminate GCC-5 ASan global-buffer-overflow false positive for AO_stack_bl
  45. * Fill in allocated memory with values depending on thread id (test_malloc)
  46. * Fix 'bad register name %sil' assembler error (GCC-4.4/x86)
  47. * Fix 'unknown attribute no_sanitize' compiler warning for GCC
  48. * Fix AO_malloc for sizes near CHUNK_SIZE
  49. * Fix memory leak in test_malloc
  50. * Fix test failures for Clang-3.8 and older (Aarch64)
  51. * Fix test_stack failure if AO_PREFER_BUILTIN_ATOMICS (GCC/Aarch64)
  52. * Fix typo in AO_REAL_NEXT_PTR comment
  53. * Increase the default number of threads to 16 in test_malloc/stack
  54. * Mark unallocated/freed memory as inaccessible using ASan functionality
  55. * New macro (DONT_USE_MMAP) to support testing as if mmap() is unavailable
  56. * New macro to select stack implementation based on CAS-double
  57. * Place no_sanitize attributes in a GCC-compliant way
  58. * Prevent too long run of test_atomic_generalized (especially with TSan)
  59. * Simplify '#if' expressions in gcc/x86.h (code refactoring)
  60. * Test smallest allocation of large type (test_malloc)
  61. * Use __builtin_expect in atomic_ops_malloc
  62. * Use built-in atomics for load/store/CAS for Clang by default (Aarch64)
  63. * Use double-word atomic intrinsics for recent Clang versions (gcc/x86.h)
  64. * Use GCC atomic intrinsics for Hexagon (clang 3.9+)
  65. * Use generalized double-wide load/store if AO_PREFER_GENERALIZED (Aarch64)
  66. * Workaround 'unused result' code defects in atomic_ops.c, list_atomic
  67. * Workaround Thread Sanitizer (TSan) false positive warnings
  68. Also, includes 7.4.8 changes
  69. == [7.6.0] 2017-05-19 ==
  70. * Add *_and/or/xor* and *_[fetch_]compare_and_swap* tests to test_atomic
  71. * Add asm-based and/or/xor implementation for char/short/int (gcc/x86)
  72. * Add asm-based char/short/int CAS implementation for gcc/x86[_64]
  73. * Add configure '--disable-atomic-intrinsics' option
  74. * Add dd_acquire_read case to test_atomic
  75. * Add initial nios2 architecture support
  76. * Add Makefile target (check-nolink) to compile all source without linking
  77. * Add Makefile target to run all tests without test-driver
  78. * Add test_atomic_generalized to Makefile and Makefile.msft
  79. * Allow alternate CC (CROSS_CC) for AC_TRY_COMPILE (configure)
  80. * Always define word-wide CAS for x86 (MS VC++ 8+)
  81. * Avoid atomic_compare_exchange_n if no __GCC_HAVE_SYNC_COMPARE_AND_SWAP_n
  82. * Avoid extra nop_full in stack_pop_acquire if atomic intrinsics used (x86)
  83. * Basic support of TILE-Gx and TILEPro CPUs
  84. * Code refactoring of int-wide primitives in gcc/x86.h
  85. * Define AO_TS_SET as __GCC_ATOMIC_TEST_AND_SET_TRUEVAL if applicable
  86. * Define CLANG/GNUC_PREREQ macros to check gcc/clang minimum version
  87. * Do not define print_list() unless used (tests)
  88. * Eliminate 'condition sizeof(long)>4 is always true' cppcheck style warning
  89. * Eliminate 'ISO C90 does not support long long' compiler pedantic warning
  90. * Eliminate 'scope of variable can be reduced' cppcheck warnings
  91. * Eliminate redundant lwsync 2nd call in CAS_full on fail (gcc/PowerPC)
  92. * Fix 'unknown attribute no_sanitize' compiler warning (clang prior to v3.8)
  93. * Fix 'variable new value is never used' cppcheck style warning
  94. * Fix missing double_compare_and_swap_dd_acquire_read
  95. * Fix reporting about missing and/or/xor_dd_acquire_read (test_atomic)
  96. * Hide AO_locks symbol
  97. * Implement AO_CLEAR using C11 atomic intrinsic (GCC)
  98. * Implement CAS_acquire/release/full using __atomic_compare_exchange_n (gcc)
  99. * Implement char and/or/xor and short CAS for msftc ARM and X86[_64]
  100. * Implement char CAS and char/short add for msftc X86[_64] (VS 2013+)
  101. * Implement compiler_barrier using C11 __atomic_signal_fence (GCC)
  102. * Implement int CAS/inc/dec for msftc/x86_64
  103. * Implement short inc/dec directly for msftc ARM and X86[_64]
  104. * Initial ibmc/powerpc (xlc) support
  105. * New configure option (--enable-werror) to treat warnings as compiler errors
  106. * New macro AO_PREFER_BUILTIN_ATOMICS to rely on C11 atomics fully (AArch64)
  107. * Refine AO_nop_write comment for ARM big.LITTLE architecture
  108. * Refine configure messages when checking for compiler options
  109. * Refine documentation about _full memory ordering suffix
  110. * Refine README how to build the library source from the repository
  111. * Relax shareability domain for dmb st in AO_nop_write (ARM/AArch64)
  112. * Remove redundant include windows.h from headers (msftc/x86[_64])
  113. * Remove spaces at EOLn in asm code
  114. * Report gcc/clang pedantic warnings (configure)
  115. * Support NaCl/arm
  116. * Suppress 'ISO C does not support __int128 type' GCC/Clang pedantic warning
  117. * Test store/CAS emulation explicitly
  118. * Update shared libraries version info to 2:0:1
  119. * Use GCC atomic intrinsics for PowerPC 32/64 (GCC 4.8+ and clang 3.8+)
  120. * Use GCC atomic intrinsics for x86, x64, ARM, MIPS (gcc 4.9+, clang 3.5+)
  121. * Use generalized double-wide load/store if AO_PREFER_GENERALIZED (gcc/x86)
  122. * Workaround '#error' cppcheck error messages
  123. * Workaround 'condition always true', 'unused stored value' cppcheck warnings
  124. * Workaround 'function is never used' cppcheck style warnings
  125. * Workaround 'obsolescent ftime called' cppcheck style warning (POSIX)
  126. * Workaround 'overflow in pointer subtraction' cppcheck warning
  127. * Workaround 'shifting 32-bit value by 32 bits undefined' cppcheck warning
  128. * Workaround 'uninitialized memory use' code analyzer false warning (tests)
  129. * Workaround 'uninitialized variable' cppcheck error in hpc/hppa.h
  130. * Workaround 'value of macro is unknown' cppcheck information messages
  131. * Workaround a bug in double-wide intrinsics of Clang/x64 with ASan enabled
  132. * Workaround MSan warning about uninitialized data read by generalized store
  133. Also, includes 7.4.6 changes
  134. == [7.4.14] 2019-03-01 ==
  135. * Fix 'AO_*_TS_T is not defined' compiler warnings (GCC-8)
  136. == [7.4.12] 2018-12-11 ==
  137. * COPYING: sync with FSF's gpl-2.0.txt
  138. * Fix a typo in arm_v6.h
  139. * Fix a typo in the overview section of README
  140. * Support ILP32 in AArch64 assembly routines (GCC)
  141. * Support UWP/arm64 target
  142. == [7.4.10] 2017-12-22 ==
  143. * Fix AO_malloc for sizes near CHUNK_SIZE
  144. * Fix memory leak in test_malloc
  145. * Fix typo in AO_REAL_NEXT_PTR comment
  146. == [7.4.8] 2017-10-18 ==
  147. * Fix 'missing select.h', 'undefined sigprocmask' compiler errors (Hexagon)
  148. * Update README about bugs reporting and new releases notification
  149. * Workaround misspelling in GCC to detect ARMv6KZ platform
  150. == [7.4.6] 2017-05-18 ==
  151. * Add assertion that double-wide CAS target is aligned (msftc/x86[_64])
  152. * Add configure --enable-gcov option (enable code coverage analysis)
  153. * Code refactoring of gcc/powerpc.h to avoid code duplication
  154. * Eliminate 'cast to long from void*' compiler warning in test_atomic
  155. * Eliminate 'implicit declaration of close' warning in 'strict ANSI' mode
  156. * Eliminate 'missing braces around initializer' gcc warning (hppa)
  157. * Eliminate 'printf format specifies type void*' GCC pedantic warnings
  158. * Eliminate 'value shift followed by expansion' false code defect warning
  159. * Enable limited testing in Makefile.msft without Cygwin
  160. * Fix (delete) comment for AO_and_full (x86)
  161. * Fix block_all_signals compilation in 'strict ANSI' mode
  162. * Fix missing .exe for test filenames in Makefile (MinGW)
  163. * Fix missing printed value names (test_stack)
  164. * Implement fetch-CAS for s390[x] (gcc)
  165. * Move libraries version info to the beginning of Makefile.am
  166. * Refine documentation in Makefile.msft how to run all tests (MS VC)
  167. * Refine README about library downloading
  168. * Rename doc/README.txt to doc/README_details.txt
  169. * Support AIX/ppc (gcc)
  170. * Support CFLAGS_EXTRA to pass extra user-defined compiler flags (make)
  171. * Support n32 ABI for mips64
  172. * Update shared libraries version info for 7.4.6+ (to 1:4:0)
  173. * Use 'inline code' format for commands in README.md
  174. * Use LLD and SCD instructions on mips64
  175. * Workaround 'resource leak' false positives in AO_malloc, add_elements
  176. * Workaround 'uninitialized memory use' MemorySanitizer warning (test_atomic)
  177. Also, includes 7.2h changes
  178. == [7.4.4] 2016-05-24 ==
  179. * Eliminate 'signed-to-unsigned value extension' compiler warning in malloc
  180. * Eliminate 'variable set but not used' Cppcheck warnings in test_stack
  181. * Fix GCC 5.x compatibility for AArch64 double-wide primitives
  182. * Fix makefile preventing AO_pause undefined in libatomic_ops_gpl
  183. * Fix missing casts to match printf format specifier in test_atomic
  184. * Fix missing output folder on making auto-generated test files (Automake)
  185. * Fix typo in configure.ac (in description of AO_ASM_X64_AVAILABLE)
  186. * Minor fix of code alignment in mips AO_compare_and_swap
  187. * Remove TODO file
  188. * Restore contribution info in ChangeLog for authors not listed in git log
  189. Also, includes 7.2g changes
  190. == [7.4.2] 2014-05-02 ==
  191. * Fix a typo in doc/README.txt (remove redundant "an" article)
  192. * Update emails/links due to project site transition
  193. Also, includes 7.2f changes
  194. == [7.4.0] 2013-11-17 ==
  195. * Add and/or/xor entries to list_atomic (tests)
  196. * Add char/short/int/AO_double_t and dd_acquire cases to list_atomic (tests)
  197. * Add compile-time assertion for size of 'standard' AO_double_t
  198. * Add double_store pthread-based implementation and tests
  199. * Add generalized CAS primitives of char/short/int size
  200. * Add generalized atomic and/or/xor operations for char/short/int types
  201. * Add generalized fetch_and_add_acquire/release (for ARMv6+)
  202. * Add generic implementation of double_load primitives
  203. * Add information about AO_ASSUME_VISTA to README_win32
  204. * Add internal header containing only char/short/int/AO_t atomic loads
  205. * Add load/store primitives generalization based on CAS
  206. * Add lock-based implementation of char/short/int_fetch_compare_and_swap
  207. * Add makefile rule to test list_atomic.template syntax (tests)
  208. * Add missing 'const' in aligned-atomic XSIZE_load implementation
  209. * Add missing double_compare_and_swap to generalization
  210. * Add missing generalization of no-barrier CAS in template
  211. * Add negative double-CAS test cases to test_atomic_include (tests)
  212. * Add test_stack to Makefile.msft (tests)
  213. * Adjust fprintf arguments type matching specifier in test_stack (tests)
  214. * Adjust included filenames in atomic_ops_malloc and test_stack
  215. * Adjust quotes in echo command of Makefile.msft (Win32)
  216. * Always use 'mfence' for nop_full if target CPU supports SSE2 (gcc/x86)
  217. * Better document configure THREADDLLIBS variable
  218. * Cast away volatile on dereference in CAS-based generalization primitives
  219. * Change policy regarding version numbers ("micro" part instead of "alpha")
  220. * Convert README to Markdown format
  221. * Define AO_NO_PTHREADS in configure if no pthreads (Win32 and VxWorks)
  222. * Define AO_int_X operations for ARM and avr32
  223. * Define double-wide ordered loads/stores for x86
  224. * Define int_and/or/xor primitives in ao_t_is_int header
  225. * Define nop_full as compiler barrier for pre-ARMv6 single-core case
  226. * Do not duplicate BUILT_SOURCES entries in nobase_private_HEADERS (Makefile)
  227. * Do not include standard_ao_double_t.h where double-CAS is unimplemented
  228. * Do not report absence of meaningless nop, load and store in test_atomic
  229. * Do not use deprecated AO_T and AO_TS_T (tests)
  230. * Eliminate 'missing initializer' warning for AO_stack_t value initializer
  231. * Eliminate 64-bit compiler warnings in atomic_ops_malloc
  232. * Eliminate arithmetic shifts in double-CAS (gcc/arm, msftc/x86)
  233. * Eliminate warning for fetch_and_add argument in test_atomic_include (tests)
  234. * Enable Makefile.msft for Win64
  235. * Enable build using toolchain without pthreads
  236. * Enable double_compare_and_swap for non-cpp code (msftc/x86.h)
  237. * Enable generalization of all variants of CAS via fetch_compare_and_swap
  238. * Enable test_stack for pthreads-w32 and Win32 with native threads
  239. * Fix generalized AO_char/short_compare_and_swap args (missing 'unsigned')
  240. * Fix makefile sed rule for list_atomic (tests)
  241. * Fix missing abort() usage in atomic_ops_malloc and tests on WinCE
  242. * Generalize compare_double_and_swap_double using double_compare_and_swap
  243. * Generalize double_load/store for x86_64 (GCC)
  244. * Generate ao_t_is_int, 'loadstore' headers from templates
  245. * Generate generalized AO_t load/store/fetch_and_add primitives from template
  246. * Generate ordered_loads/stores_only headers from templates
  247. * Group all X_acquire_release_volatile.h and X_[aligned_]atomic_load_store.h
  248. * Implement and/or/xor, AO_double_load for ARM
  249. * Implement atomic store using direct write by default on ARMv6+
  250. * Implement char/short/int-wide primitives using GCC built-in atomic/sync
  251. * Implement char/short/int_fetch_and_add for msftc/x86[_64] (Win32)
  252. * Implement char/short_fetch_and_add, char/short_load for ARMv6+ (GCC)
  253. * Implement char/short_store primitives at aligned addresses for ARM
  254. * Implement compare_double_and_swap_double for SunCC/x86
  255. * Implement double_load/store based on guaranteed x86 access atomicity
  256. * Implement double_store for ARMv7 using LDREXD/STREXD
  257. * Implement load/store via simple LDR/STR for ARMv6+ (msftc)
  258. * Implement nop_full/write using 'dmb' instruction if available (gcc/arm)
  259. * Improve debug printing in test_stack (tests)
  260. * Log messages to stdout instead of stderr (tests)
  261. * Make AO_ASSUME_VISTA also enables Win98 code in msftc/x86.h (Win32)
  262. * Minimize gcc/generic-arithm template by factoring out barriers
  263. * Move 'unsigned' keyword to XCTYPE in generalize-small template
  264. * Move default compiler options to CFLAGS in Makefile.msft (Win32)
  265. * Move definitions of ordered loads/stores to inner separate headers
  266. * Move gcc-generic AO_t-wide primitives to generic-small/arithm headers
  267. * Move generalized arithmetical primitives to 'generalize-arithm' template
  268. * Optimize AO_spin manually to minimize compiler influence on its duration
  269. * Parameterize list_atomic template with XSIZE (tests)
  270. * Perform only few list reversals in test_malloc if AO based on pthreads
  271. * Put autogen.sh to 'dist' package (Automake)
  272. * Remote duplicate definition of test_and_set_acquire in generalize.h
  273. * Remove X_aligned_atomic_load_store headers and template
  274. * Remove duplicate AO_spin and AO_pause definition in atomic_ops_stack
  275. * Remove gcc/x86_64.h eliminating code duplication of gcc/x86.h
  276. * Remove nested AO_USE_PTHREAD_DEFS macro check in atomic_ops.h (gcc/arm)
  277. * Remove redundant 'cc' clobber for LDREXD instruction (gcc/arm)
  278. * Remove store_full from msftc/arm.h in favor of generalized primitive
  279. * Remove sunc/x86_64.h eliminating code duplication of sunc/x86.h
  280. * Remove unsafe emulation-based implementation of double CAS (SunCC/x86_64)
  281. * Remove useless 'perror' call in run_parallel.h (tests)
  282. * Reorder AO_double_t union elements for AO_DOUBLE_T_INITIALIZER portability
  283. * Replace atomic_load_store.template with atomic_load and atomic_store ones
  284. * Replace some FIXME items with TODO in atomic_ops.c and sysdeps headers
  285. * Specify fetch_and_add/sub1 result as unused in test_atomic (tests)
  286. * Support AArch64 (64-bit ARM) target (GCC)
  287. * Support ARMv8 target (gcc/arm)
  288. * Test double_compare_and_swap in test_atomic (tests)
  289. * Use AO_ prefix for internal functions in arm_v6.h, hppa.h
  290. * Use __atomic GCC built-in to implement generic double-wide CAS
  291. * Use built-in __sync CAS for double-CAS if AO_USE_SYNC_CAS_BUILTIN for x86
  292. * Workaround GCC 4.4.3 warning reported for 'val' of list_atomic.c (tests)
  293. Also, includes 7.2e changes
  294. == [7.3alpha2] 2012-05-11 ==
  295. * Add '-no-undefined' to LDFLAGS in src/Makefile.am
  296. * Add AO_and, AO_xor atomic operations
  297. * Add AO_fetch_compare_and_swap primitives
  298. * Add and fill in AUTHORS, TODO files
  299. * Add autogen.sh file
  300. * Adjust AO_..._H macros in public headers
  301. * Code refactoring of gcc/arm.h by introducing AO_ARM_HAVE_x macros
  302. * Define AO macros for libatomic_ops version identification
  303. * Do not define NDEBUG if '--enable-assertions' passed to configure
  304. * Eliminate compiler warnings in various functions and macros
  305. * Generalize AO_compare_and_swap primitives via AO_fetch_compare_and_swap
  306. * Generalize acquire/release/full CAS primitives for MIPS
  307. * Implement fetch_and_add, test_and_set primitives for MIPS
  308. * Improve Makefile for MS VC++; pass '-W3' option to MS compiler
  309. * Include ao_t_is_int.h from atomic_ops.h after first generalization pass
  310. * Merge all Makefile.am files in src tree
  311. * Minor code refactoring of atomic_ops.c, generic_pthread.h
  312. * Minor configure build improvements (e.g., ensure proper autoconf version)
  313. * Place only major per-release changes description to ChangeLog (this file)
  314. * Recognize AO_PREFER_GENERALIZED macro to favor generalization over assembly
  315. * Remove all auto-generated files except for generalize-small.h from the repo
  316. * Remove duplicate doc/COPYING and empty NEWS files
  317. * Replace atomic_ops_malloc static mmap-related empty functions with macros
  318. * Replace pointer relational comparisons with non-pointer ones
  319. * Require autoconf 2.61 instead of v2.64
  320. * Show extra compiler warnings (GCC only)
  321. * Turn off AO primitives inlining if AO_NO_INLINE defined
  322. * Use __builtin_expect in CAS failure loop condition checks (GCC only)
  323. Also, includes 7.2 changes
  324. == [7.2j] (not released yet) ==
  325. * Fix a typo in arm_v6.h
  326. == [7.2i] 2017-12-21 ==
  327. * Fix 'missing select.h', 'undefined sigprocmask' compiler errors (Hexagon)
  328. * Fix AO_malloc for sizes near CHUNK_SIZE
  329. * Fix typo in AO_REAL_NEXT_PTR comment
  330. == [7.2h] 2017-05-17 ==
  331. * Add 'clean' target to Makefile.msft
  332. * Enable Makefile.msft for Win64
  333. * Exclude 'check' from nmake all (Makefile.msft)
  334. * Fix 'Cannot implement CAS_full on this architecture' build error (cris)
  335. * Fix 'doc' files installation folder
  336. * Fix (improve) AO_REQUIRE_CAS description in README
  337. * Fix AO_SIZE_MAX definition (Linux/musl-gcc)
  338. * Fix assertions style in test_atomic_include
  339. * Fix size value wrap around in AO_malloc_large
  340. * Fix test_atomic failure caused unaligned AO_double_t access (x86)
  341. * Fix type of general AO_TS_INITIALIZER
  342. * Fix typo in comments in gcc/arm.h
  343. * Fix typos in 'error' pragma messages
  344. * Workaround test_stack failure on AIX/ppc
  345. == [7.2g] 2016-05-23 ==
  346. * Add disclaimer to README to favor C11/C++14 atomics over libatomic_ops use
  347. * Regenerate configure files using official libtool release (v2.4.2)
  348. * Remove inclusion of acquire_release_volatile.h on MIPS
  349. * Remove obsolete information from README about C++0x standard future
  350. * Update links due to project site transition
  351. == [7.2f] 2014-05-02 ==
  352. * Fix a typo in doc/README.txt (remove redundant "an" article)
  353. * Regenerate configure files by new automake (v1.14.1), libtool (v2.4.2.418)
  354. == [7.2e] 2013-11-10 ==
  355. * Fix (remove) invalid include of read_ordered.h for ARM
  356. * Fix AM_CONFIG_HEADER in configure for autoconf-2.69-1
  357. * Fix AO_pause sleep delay for particular argument values (Win32)
  358. * Fix ARMv7 LDREXD/STREXD double-wide operand specification (GCC/Clang)
  359. * Fix LDREXD/STREXD use for pre-Clang3.3/arm
  360. * Fix README regarding _acquire_read barrier
  361. * Fix XSIZE_load/store definition order in generalize-small template
  362. * Fix asm constraint of CAS memory operand for gcc/alpha, clang-3.1/mips
  363. * Fix asm constraints of primitives in sunc/x86.h
  364. * Fix cmpxchg16b-based compare_double_and_swap_double for SunCC/x86_64
  365. * Fix compare_double_and_swap_double and double_ptr_storage for gcc/x32
  366. * Fix compare_double_and_swap_double for clang3.0/x86 in PIC mode
  367. * Fix compare_double_and_swap_double_full definition condition in emul_cas
  368. * Fix generalize-small template adding missed CAS-based fetch_and_add
  369. * Fix generalized fetch_and_add function
  370. * Fix missing compiler barrier in nop_full for uniprocessor ARM
  371. * Fix ordered_except_wr header inclusion for s390
  372. * Fix return type of AO_int_X primitives defined in ao_t_is_int header
  373. * Fix return type of char/short/int_load_read() in read_ordered.h
  374. * Fix template-based headers regeneration order in src/Makefile
  375. * Fix typos in ao_t_is_int, atomic_ops.h, generalize.h, msftc/arm.h comments
  376. * Fix variable type to match printf format specifier in test_stack
  377. * Fix visibility and initial value of 'dummy' variable in atomic_ops_stack
  378. * Terminate tests with abort after error reported
  379. == [7.2d] 2012-08-09 ==
  380. * Fix AO_compare_double_and_swap_double_full for gcc-4.2.1/x86 in PIC mode
  381. * Fix AO_compiler_barrier missing parentheses
  382. * Fix missing 'unsigned' for generalized AO_char/short_fetch_and_add result
  383. == [7.2] 2012-05-11 ==
  384. * Add atomic_ops.pc.in and atomic_ops-uninstalled.pc.in to pkgconfig folder
  385. * Define and use AO_PTRDIFF_T in tests for casts between pointer and integer
  386. * Fix AO_compare_and_swap return type for s390 and PowerPC
  387. * Fix AO_compare_double_and_swap_double_full for gcc/x86 (PIC mode)
  388. * Fix AO_stack_push_release to workaround bug in clang-1.1/x86 compiler
  389. * Fix AO_test_and_setXX in tests/list_atomic.template
  390. * Fix AO_test_and_set_full (gcc/x86[_64].h) to work-around a bug in LLVM v2.7
  391. * Fix AO_test_and_set_full on m68k
  392. * Fix __ARM_ARCH_5__ macro handling for Android NDK (ARMv7)
  393. * Fix configure for Cygwin, mingw-w64/32
  394. * Fix configure to define __PIC__ macro explicitly if needed (GCC)
  395. * Fix double_ptr_storage definition for GCC pre-v4 (x86_64)
  396. * Fix for x32 by removing 'q' suffix in x86-64 instructions
  397. * Fix generalization for IA-64 (regarding AO_or, AO_..._read/write primitives)
  398. * Fix generalized AO_<type>_fetch_and_add() return type
  399. * Fix test_atomic_include for the case of missing CAS primitive
  400. * Fix test_malloc - allocate less memory in case of missing mmap
  401. * Implement the basic atomic primitives for the hexagon CPU
  402. == [7.2alpha6] 2011-06-14 ==
  403. * Add missing AO_HAVE_ macros
  404. * Add support of avr32 CPU
  405. * Better support of various models of ARM
  406. * Disable AO_compare_double_and_swap_double_full for SunCC x86 as not working
  407. * Enable ARM Thumb-2 mode
  408. * Fix AO_test_and_set_full for SunCC (x86)
  409. * Fix bugs in tests
  410. * Fix clobbers in AO_compare_and_swap_full (x86.h)
  411. * Fix typos in identifiers and comments
  412. * Improve AO_sync for PowerPC
  413. * Improve make scripts (configure.ac)
  414. * Make get_mmaped() in atomic_ops_malloc.c more portable
  415. * Support Intel compiler
  416. * Support NaCl target
  417. * Suppress compiler warnings in various places
  418. * Test more predefined macros (ARM, PowerPC)
  419. * Use assembly code only for MS VC if available (x86_64)
  420. * Use built-in __sync_bool_compare_and_swap if available (x86_64)
  421. * Workaround bugs in LLVM GCC and SunCC regarding XCHG (x86, x86_64)
  422. == [7.2alpha4] 2009-12-02 ==
  423. * Fix typos in comments, identifiers and documentation
  424. * Implement AO_compare_and_swap_full for SPARC
  425. * Refine ARM-specific code
  426. * Refine code and comments for MS VC
  427. * Regenerate make scripts
  428. * Share common code for all 32-bit CPUs (MS VC)
  429. * Support DigitalMars and Watcom compilers
  430. * Support MS VC for ARM (WinCE)
  431. * Support SH CPU
  432. * Support win32-pthreads
  433. * Support x86 and x86_64 for SunCC compiler
  434. == [7.2alpha2] 2009-05-27 ==
  435. * Add MIPS support
  436. * Add better support for m68k
  437. * Add "const" to first parameter of load calls
  438. * Add parentheses around address argument for various macros
  439. * Add some platform-specific documentation to INSTALL
  440. * Add untested 64-bit support for PowerPC
  441. * Fix AO_compare_and_swap_double_acquire
  442. * Fix AO_int_fetch_and_add_full (x86_64)
  443. * Fix comments
  444. * Fix s390 include paths
  445. * Fix use of lwz instruction (PowerPC)
  446. * Refine clobbers (PowerPC)
  447. * Remove outdated info about Windows support in README
  448. * Replace K&R-style function definition with ANSI C one
  449. * add AO_compare_double_and_swap_double for ARMv6
  450. * gcc/powerpc.h: Consider __NO_LWSYNC__
  451. == [7.1] 2008-02-11 ==
  452. * Add test_and_set, AO_double_compare_and_swap generalizations
  453. * Conditionally add compare_double_and_swap_double (x86)
  454. * Conditionally add compare_double_and_swap_double (x86)
  455. * Fix AO_compare_double_and_swap_double_full (x86) for PIC mode
  456. * Fix AO_load_acquire for PowerPC
  457. * Fix double-width CAS (x86)
  458. * Refine README (add more warnings about data dependencies)
  459. * Refine double_ptr_storage type definition
  460. * Support ARMv6+ in GCC
  461. * Support ArmCC compiler
  462. * Use _InterlockedExchangeAdd for MS VC (x86)
  463. == [7.0] 2007-06-28 ==
  464. * Add 64-bit version of AO_load_acquire for PowerPC (by Luca Barbato)
  465. * Add support of x86 and x86_64 for MS VC
  466. * Do not assume that "mfence" is always present (x86.h)
  467. * Fix ARM AO_test_and_set_full
  468. * Include windows.h (MS VC)
  469. * Update README to reflect C++0x effort
  470. == [1.2] 2006-07-11 ==
  471. * Add prototypes to suppress compiler warnings
  472. * Add simple VxWorks support
  473. * Fix InterlockedCompareExchange proto usage
  474. * Fix typos (ia64)
  475. * Include all_acquire_release_volatile.h and all_atomic_load_store.h (ia64)
  476. * Initial support for 64-bit targets
  477. * Use "=q" for AO_test_and_set_full (x86)
  478. * Use inline assembler to generate "mfence" and byte sized XCHG
  479. * Use new intrinsics available in MSVC 2003 and MSVC 2005
  480. == [1.1] 2005-09-27 ==
  481. * Add and use read_ordered.h
  482. * Change function naming from "byte" to "char"
  483. * Fix AO_test_and_set for ARM; define AO_CAN_EMUL_CAS
  484. == [1.0] 2005-03-21 ==
  485. * Add atomic_ops primitives for different sized data
  486. * Add compare_double_and_swap_double and compare_and_swap_double
  487. * Add gcc/cris.h (originally comes from Hans-Peter Nilsson)
  488. * Add gcc/m68k.h (contributed by Tony Mantler)
  489. * Add gcc/powerpc.h (with help of Maged Michael, Doug Lea, Roger Hoover)
  490. * Add initial support for atomic_ops for VC++/Windows/X86 and HP/UX
  491. * Add minimal support for the Sun SPARC compiler
  492. * Add support for platforms that require out-of-line assembly code
  493. * Add support of int-wide operations on platforms with int-sized pointers
  494. * Added libatomic_ops_gpl library with support for lock-free stack and malloc
  495. * Change atomic_ops include file structure
  496. * Change most platforms to use byte-wide test-and-set locations
  497. * Define AO_CLEAR, __ldcw[_align] macros in gcc/hppa.h (by Carlos O'Donell)
  498. * Fix various bugs
  499. * Install under "atomic_ops" instead of "ao"
  500. * Remove compiler_barrier workaround for gcc 3.4+
  501. * Renamed various types to end in _t
  502. * Replace AO_HAVE_NOP_FULL with AO_HAVE_nop_full (by Ranko Zivojnovic)
  503. * Use autoconf, automake