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