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