Ivan Maidanski [Mon, 23 May 2016 18:57:46 +0000 (21:57 +0300)]
Update ChangeLog
Hans Boehm [Mon, 23 May 2016 18:24:33 +0000 (21:24 +0300)]
Add disclaimer to README to favor C11/C++14 atomics over libatomic_ops use
(Apply commit fe16265 from 'release-7_4' branch.)
* README: Add top-level disclaimer that it is better to use
C11 or C++14 atomic primitives instead of this library for the
newly-developed code.
Ivan Maidanski [Thu, 20 Feb 2014 20:39:54 +0000 (00:39 +0400)]
Update emails/links due to project site transition
(Apply commit 8c9da2d from 'release-7_4' branch.)
* README: Update links to BDWGC/libatomic_ops site.
* doc/README_stack.txt: Likewise.
Ivan Maidanski [Tue, 26 Apr 2016 08:22:58 +0000 (11:22 +0300)]
Update ChangeLog
Ivan Maidanski [Thu, 24 Mar 2016 20:32:39 +0000 (23:32 +0300)]
Remove obsolete information from README about C++0x standard future
* doc/README.txt (Future directions): Remove.
Ivan Maidanski [Tue, 22 Mar 2016 20:33:55 +0000 (23:33 +0300)]
Fix incorrectly regenerated Makefile.in
(revert part of commit aae1c04)
* Makefile.in: Regenerate properly (remove ltmain.sh from DIST_COMMON).
Ivan Maidanski [Tue, 22 Mar 2016 07:45:49 +0000 (10:45 +0300)]
Update ChangeLog
Ivan Maidanski [Tue, 22 Mar 2016 07:24:02 +0000 (10:24 +0300)]
Regenerate configure files using official libtool release (v2.4.2)
libtool 2.4.2 is an official release unlike libtool 2.4.2.418.
* Makefile.in: Regenerate (by autoreconf -vif using autoconf-2.69,
automake-1.14.1 and libtool-2.4.2).
* config.guess: Likewise.
* config.sub: Likewise.
Ivan Maidanski [Tue, 3 Feb 2015 07:53:07 +0000 (10:53 +0300)]
Update ChangeLog
James Cowgill [Thu, 8 Jan 2015 16:05:57 +0000 (16:05 +0000)]
Remove inclusion of acquire_release_volatile.h on mips
(Apply commit 6fefba1 from 'release-7_4' branch.)
I'm not entirely sure how this ended up here. It might have been the case
that MIPS processors used to do this, but the ISA manuals don't say anything
about volatile loads / stores having acquire / release semantics, so just
remove it to be safe.
Conflicts:
src/atomic_ops/sysdeps/gcc/mips.h
Ivan Maidanski [Mon, 26 May 2014 20:00:00 +0000 (00:00 +0400)]
.gitignore: Ignore .dirstamp
Ivan Maidanski [Sun, 18 May 2014 13:28:54 +0000 (17:28 +0400)]
.gitignore: Ignore tests/.libs (generated if configure --enable-shared)
Ivan Maidanski [Fri, 2 May 2014 15:12:50 +0000 (19:12 +0400)]
[7.2f]
Bump version to 7.2f in README; update ChangeLog
Ivan Maidanski [Fri, 2 May 2014 14:47:26 +0000 (18:47 +0400)]
Regenerate configure files by new automake (v1.14.1), libtool (v2.4.2.418)
* configure: Regenerate (by autoreconf -vif using autoconf-2.69,
automake-1.14.1 and libtool-2.4.2.418).
* INSTALL: Likewise.
* Makefile.in: Likewise.
* aclocal.m4: Likewise.
* config.guess: Likewise.
* config.sub: Likewise.
* doc/Makefile.in: Likewise.
* missing: Likewise.
* src/Makefile.in: Likewise.
* src/atomic_ops/Makefile.in: Likewise.
* src/atomic_ops/sysdeps/Makefile.in: Likewise.
* src/config.h.in: Likewise.
* test-driver: Likewise.
* tests/Makefile.in: Likewise.
Ivan Maidanski [Fri, 2 May 2014 06:24:35 +0000 (10:24 +0400)]
Update ChangeLog
Jan-Erik Rediger [Fri, 28 Mar 2014 13:12:31 +0000 (14:12 +0100)]
Removed unnecessary "an"
Ivan Maidanski [Sun, 10 Nov 2013 08:23:38 +0000 (12:23 +0400)]
[7.2e]
Bump version to 7.2e in README; update ChangeLog
Ivan Maidanski [Sat, 31 Aug 2013 07:16:19 +0000 (11:16 +0400)]
.gitignore: Ignore test*.log, test*.trs
Ivan Maidanski [Sat, 31 Aug 2013 07:00:25 +0000 (11:00 +0400)]
Regenerate configure files by autoconf-2.69, automake-1.13.4
* configure: Regenerate (by autoreconf -vif using autoconf-2.69,
automake-1.13.4 and libtool-2.4.2).
* INSTALL: Likewise.
* Makefile.in: Likewise.
* aclocal.m4: Likewise.
* compile: Likewise.
* config.guess: Likewise.
* config.sub: Likewise.
* depcomp: Likewise.
* doc/Makefile.in: Likewise.
* install-sh: Likewise.
* missing: Likewise.
* mkinstalldirs: Likewise.
* src/Makefile.in: Likewise.
* src/atomic_ops/Makefile.in: Likewise.
* src/atomic_ops/sysdeps/Makefile.in: Likewise.
* tests/Makefile.in: Likewise.
* test-driver: New generated file.
Ivan Maidanski [Sun, 18 Aug 2013 09:04:57 +0000 (13:04 +0400)]
Regenerate aclocal.m4; update ChangeLog
Ivan Maidanski [Sat, 17 Aug 2013 11:05:36 +0000 (15:05 +0400)]
Fix: Do not use LDREXD/STREXD for Clang3.2/arm (and earlier)
(Apply commit 2daf685 from 'master' branch.)
* src/atomic_ops/sysdeps/gcc/arm.h
(AO_compare_double_and_swap_double): Do not define for
pre-Clang3.3 (since the latter does not allocate register pairs for
LDREXD/STREXD instructions properly); add comment.
Conflicts:
src/atomic_ops/sysdeps/gcc/arm.h
Ivan Maidanski [Sat, 17 Aug 2013 09:58:59 +0000 (13:58 +0400)]
Fix ARM double-CAS operands width (GCC/Clang)
(Apply commit a81940c from 'master' branch.)
* src/atomic_ops/sysdeps/gcc/arm.h (AO_double_compare_and_swap): Swap
assembly code operands ("new_val" and "addr") to prevent
Clang3.3 warning about operand truncation.
Conflicts:
src/atomic_ops/sysdeps/gcc/arm.h
Ivan Maidanski [Sat, 17 Aug 2013 07:48:59 +0000 (11:48 +0400)]
Fix ARMv7 LDREXD/STREXD double-wide operand specification (GCC/Clang)
(Apply commit db2eef2 from 'master' branch.)
* src/atomic_ops/sysdeps/gcc/arm.h
(AO_double_compare_and_swap): Specify that LDREXD and STREXD use 2
adjacent registers (thus preventing Clang3.3 from register allocation
failures leading to "registers may not be the same" or
"even register required" GAS errors).
Conflicts:
src/atomic_ops/sysdeps/gcc/arm.h
Ivan Maidanski [Mon, 29 Jul 2013 21:18:38 +0000 (01:18 +0400)]
Fix typo in comment of generalize-small.template
(Apply commit 22d7c97 from 'master' branch.)
* src/atomic_ops/generalize.h: Fix a typo in comment
("acquire").
Conflicts:
src/atomic_ops/generalize-arithm.h
src/atomic_ops/generalize-arithm.template
Manuel Serrano [Wed, 3 Apr 2013 03:58:27 +0000 (07:58 +0400)]
Fix AM_CONFIG_HEADER in configure for autoconf-2.69-1
* configure.ac (AM_CONFIG_HEADER): Replace obsolete macro with with
AC_CONFIG_HEADERS one.
Ivan Maidanski [Fri, 29 Mar 2013 04:53:22 +0000 (08:53 +0400)]
Update ChangeLog
Ivan Maidanski [Fri, 29 Mar 2013 04:50:51 +0000 (08:50 +0400)]
Fix generalized fetch_and_add function
* src/atomic_ops/generalize-small.template (AO_XSIZE_fetch_and_add):
Do not use AO_EXPECT_FALSE (since defined only in v7.3+).
* src/atomic_ops/generalize-small.h: Regenerate.
Ivan Maidanski [Fri, 29 Mar 2013 03:31:06 +0000 (07:31 +0400)]
Fix asm constraints of primitives in sunc/x86.h
(Apply commit 31df7fa from 'master' branch.)
* src/atomic_ops/sysdeps/sunc/x86.h (AO_fetch_and_add_full,
AO_char_fetch_and_add_full, AO_short_fetch_and_add_full, AO_or_full,
AO_test_and_set_full,
AO_compare_and_swap_full): Use "+m" asm constraint for *addr instead
of "=m" (because the value pointed by addr is read and written by the
code).
Conflicts:
src/atomic_ops/sysdeps/sunc/x86.h
Ivan Maidanski [Wed, 13 Mar 2013 18:46:24 +0000 (22:46 +0400)]
Fix asm constraint of CAS memory operand for gcc/alpha
* src/atomic_ops/sysdeps/gcc/alpha.h (AO_compare_and_swap): Use "+m"
asm constraint for *addr instead of "=m" (because the value pointed by
addr is read and written by the code).
Ivan Maidanski [Tue, 12 Mar 2013 18:29:33 +0000 (22:29 +0400)]
Fix asm constraint of compare_and_swap for clang-3.1/mips
(Apply commit 3e4c369 from 'master' branch.)
* src/atomic_ops/sysdeps/gcc/mips.h (AO_compare_and_swap): Use "+m"
asm constraint for *addr instead of "+R" (the letter is unsupported
by clang3.1 resulting in "invalid output constraint in asm" error).
Conflicts:
src/atomic_ops/sysdeps/gcc/mips.h
Ivan Maidanski [Mon, 25 Feb 2013 15:06:22 +0000 (19:06 +0400)]
Update ChangeLog
Ivan Maidanski [Thu, 14 Feb 2013 10:08:47 +0000 (14:08 +0400)]
Fix (remove) invalid include of read_ordered.h for ARM
(fix commit 2df9c1e partially)
* src/atomic_ops/sysdeps/gcc/arm.h: Do not include read_ordered.h
(because load_acquire should contain a DMB instruction in a multi-core
case, new load_acquire/read primitives implementation is generalized
using nop_full/read which either contain a DMB instruction, or is just
a compiler barrier for uniprocessor).
* src/atomic_ops/sysdeps/armcc/arm_v6.h: Likewise.
* src/atomic_ops/sysdeps/msftc/arm.h: Likewise.
Ivan Maidanski [Mon, 25 Feb 2013 15:00:03 +0000 (19:00 +0400)]
Revert "Fix read_ordered.h inclusion for ARM"
(because it makes load_acquire/read incorrect for multi-core ARM)
This reverts commit
53f2152e00d4bf7d395f9de408c71ee2aa9a9bc4.
Ivan Maidanski [Sat, 2 Feb 2013 11:20:12 +0000 (15:20 +0400)]
Update ChangeLog
Ivan Maidanski [Mon, 14 Jan 2013 20:56:35 +0000 (00:56 +0400)]
Fix README regarding _acquire_read barrier
* doc/README.txt (_acquire_read): Add information about memory
barrier (similar as in atomic_ops.h).
* doc/README.txt (_release_read): Remove information about
non-existing barrier.
Ivan Maidanski [Sun, 13 Jan 2013 20:10:48 +0000 (00:10 +0400)]
Fix a typo in ao_t_is_int.h comment
* src/atomic_ops/sysdeps/ao_t_is_int.h: Fix a typo in comment.
Ivan Maidanski [Sun, 13 Jan 2013 18:42:52 +0000 (22:42 +0400)]
Fix return type of AO_int_X primitives defined in ao_t_is_int header
(Apply commit 3e9fc4f from 'add-dbl-load-store' branch.)
* src/atomic_ops/sysdeps/ao_t_is_int.h
(AO_int_load_acquire, AO_int_fetch_and_add_full,
AO_int_fetch_and_add1_acquire, AO_int_fetch_and_add1_release,
AO_int_fetch_and_sub1_acquire, AO_int_fetch_and_sub1_release): Cast
result to unsigned int instead of signed int.
Conflicts:
src/atomic_ops/sysdeps/ao_t_is_int.h
Ivan Maidanski [Sun, 13 Jan 2013 16:19:51 +0000 (20:19 +0400)]
Fix ordered_except_wr header inclusion for s390
* src/atomic_ops/sysdeps/gcc/s390.h: Move include of
ordered_except_wr.h down to be after all_aligned_atomic_load_store.h
inclusion (since the latter defines AO_X_load/store primitives used by
the former header).
Ivan Maidanski [Sun, 13 Jan 2013 16:04:36 +0000 (20:04 +0400)]
Fix read_ordered.h inclusion for ARM
* src/atomic_ops/sysdeps/armcc/arm_v6.h: Move include of read_ordered.h
down to the end of the file to be after AO_load/store definition
(since read_ordered.h depends on these primitives).
* src/atomic_ops/sysdeps/gcc/arm.h: Likewise.
* src/atomic_ops/sysdeps/msftc/arm.h: Likewise.
Conflicts:
src/atomic_ops/sysdeps/armcc/arm_v6.h
src/atomic_ops/sysdeps/gcc/arm.h
src/atomic_ops/sysdeps/msftc/arm.h
Ivan Maidanski [Sun, 13 Jan 2013 12:08:12 +0000 (16:08 +0400)]
Fix a typo in comment in msftc/arm.h
* src/atomic_ops/sysdeps/msftc/arm.h: Fix a typo in comment (about
SWP).
Ivan Maidanski [Sun, 27 Jan 2013 10:33:01 +0000 (14:33 +0400)]
.gitignore: Ignore .gch files
Ivan Maidanski [Fri, 11 Jan 2013 18:52:59 +0000 (22:52 +0400)]
Update ChangeLog
Ivan Maidanski [Mon, 7 Jan 2013 15:24:02 +0000 (19:24 +0400)]
Fix return type of AO_char/short/int_load_read() in read_ordered.h
* src/atomic_ops/sysdeps/read_ordered.h (AO_char_load_read,
AO_short_load_read, AO_int_load_read): Change return type (and the
type of "result" local variable) from AO_t to the type matching the
name of the function (i.e., unsigned char/short/int, respectively).
Ivan Maidanski [Sun, 6 Jan 2013 18:04:48 +0000 (22:04 +0400)]
Fix missing compiler barrier in AO_nop_full for uniprocessor ARM
(Apply commit b78058a from 'add-dbl-load-store' branch.)
* src/atomic_ops/sysdeps/armcc/arm_v6.h (AO_nop_full): Insert
AO_compiler_barrier for AO_UNIPROCESSOR case.
* src/atomic_ops/sysdeps/gcc/arm.h (AO_nop_full): Likewise.
* src/atomic_ops/sysdeps/msftc/arm.h (AO_nop_full): Likewise.
* src/atomic_ops/sysdeps/msftc/arm.h (AO_nop_full): Refine comment.
Conflicts:
src/atomic_ops/sysdeps/msftc/arm.h
Ivan Maidanski [Sat, 5 Jan 2013 06:23:27 +0000 (10:23 +0400)]
Regenerate Makefile.in; update ChangeLog
Ivan Maidanski [Fri, 4 Jan 2013 19:28:42 +0000 (23:28 +0400)]
Fix template-based headers regeneration order in src/Makefile
* src/atomic_ops/Makefile.am (BUILT_SOURCES): Define to force
regeneration of generalize-small.h (if the corresponding
source template is changed) before compilation of .c files (that use
atomic_ops.h).
Conflicts:
src/Makefile.am
Ivan Maidanski [Thu, 3 Jan 2013 08:30:14 +0000 (12:30 +0400)]
Update ChangeLog
Ivan Maidanski [Wed, 2 Jan 2013 09:10:34 +0000 (13:10 +0400)]
Fix generalize-small template adding missed CAS-based fetch_and_add
* src/atomic_ops/generalize-small.template (AO_XSIZE_fetch_and_add):
Add missed definition based on CAS.
* src/atomic_ops/generalize-small.h: Regenerate.
Ivan Maidanski [Wed, 2 Jan 2013 08:31:08 +0000 (12:31 +0400)]
Fix AO_XSIZE_load/store definition order in generalize-small template
* src/atomic_ops/generalize-small.template (AO_XSIZE_load): Move
definition (which is based on AO_XSIZE_load_acquire) down to be after
AO_XSIZE_load_acquire definition.
* src/atomic_ops/generalize-small.template (AO_XSIZE_store): Move
definition (which is based on AO_XSIZE_store_release) down to be after
AO_XSIZE_store_release definition.
* src/atomic_ops/generalize-small.h : Regenerate.
Ivan Maidanski [Mon, 8 Oct 2012 20:23:21 +0000 (00:23 +0400)]
Update ChangeLog
Ivan Maidanski [Mon, 8 Oct 2012 20:06:19 +0000 (00:06 +0400)]
Fix variable type to match printf format specifier in test_stack
* tests/test_stack.c (run_one_test): Change type of "index" local
variable from long to int to match printf format specifier (when
VERBOSE defined); cast from "arg" pointer to integer via size_t (to
avoid 64-bit compiler warning).
Ivan Maidanski [Mon, 8 Oct 2012 18:37:30 +0000 (22:37 +0400)]
Update ChangeLog
Ivan Maidanski [Mon, 8 Oct 2012 10:51:30 +0000 (14:51 +0400)]
Properly fix compare_double_and_swap_double for gcc/x32 (use built-in CAS)
(Apply commit cbe517e from 'master' branch.)
* src/atomic_ops/sysdeps/gcc/x86.h (AO_double_compare_and_swap_full):
New function (only if __x86_64__) implemented using GCC built-in
__sync CAS primitive available for x32.
* src/atomic_ops/sysdeps/gcc/x86.h
(AO_HAVE_double_compare_and_swap_full): New macro (for x32 only).
* src/atomic_ops/sysdeps/gcc/x86.h
(AO_compare_double_and_swap_double_full): Implement using
double_compare_and_swap_full instead of cmpxchg8b for x32 (since
x86_64 has cmpxchg and cmpxchg16b but not cmpxchg8b).
Conflicts:
src/atomic_ops/sysdeps/gcc/x86.h
Ivan Maidanski [Mon, 1 Oct 2012 10:48:43 +0000 (14:48 +0400)]
Fix double_ptr_storage definition for gcc/x32
(Apply commit 9957645 from 'master' branch.)
* src/atomic_ops/sysdeps/standard_ao_double_t.h (double_ptr_storage):
Define as "unsigned long long" instead of __m128 for gcc/x32 (i.e.,
ILP32 on x86_64); update and reformat comment.
Conflicts:
src/atomic_ops/sysdeps/standard_ao_double_t.h
Ivan Maidanski [Tue, 18 Sep 2012 16:48:08 +0000 (20:48 +0400)]
Fix compare_double_and_swap_double_full for gcc/x32
* src/atomic_ops.h: Include gcc/x86.h instead of gcc/x86_64.h if
gcc/x32 (i.e., GCC (or Intel compiler), __x86_64__ is defined, and
__ILP32__ is defined) to have AO_compare_double_and_swap_double_full
defined properly (based on cmpxchg8b); explicitly define
AO_USE_PENTIUM4_INSTRS for gcc/x32.
* src/atomic_ops/sysdeps/gcc/x86_64.h: Remove ILP32-specific code
(AO_T_IS_INT definition).
Ivan Maidanski [Fri, 5 Oct 2012 17:12:47 +0000 (21:12 +0400)]
Fix typos in atomic_ops.h comments
* src/atomic_ops.h: Fix typos in comments (update generalize.h
filename).
Ivan Maidanski [Thu, 4 Oct 2012 11:08:57 +0000 (15:08 +0400)]
.gitignore: Ignore .dll, .so files and pthreads-w32* library folder
(Apply commit 4692f84 from 'master' branch.)
Conflicts:
.gitignore
Ivan Maidanski [Wed, 3 Oct 2012 14:02:03 +0000 (18:02 +0400)]
Fix AO_pause sleep delay for particular argument values (Win32)
* src/atomic_ops.c (AO_pause): Fix millis value (passed to Win32
Sleep) for the case of 'n' argument in range between 12 and 21,
inclusive if AO_USE_WIN32_PTHREADS (sleep for 1 ms in this case).
* src/atomic_ops_stack.c (AO_pause): Evaluate 'msecs' value using the
same algorithm as in atomic_ops.c (Win32 only).
Ivan Maidanski [Wed, 3 Oct 2012 07:59:33 +0000 (11:59 +0400)]
Fix visibility and initial value of 'dummy' variable in atomic_ops_stack
* src/atomic_ops_stack.c (dummy): Define as static (to make symbol
without AO_ prefix visible only within this file); initialize to 1
(same as in atomic_ops.c, so that AO_spin would never really alter
its value).
Ivan Maidanski [Tue, 2 Oct 2012 12:59:58 +0000 (16:59 +0400)]
Fix AO_load primitive name in comment
* src/atomic_ops.h: Fix 'load' primitive name in comment (replace
AO_load_release_read with AO_load_acquire_read).
Ivan Maidanski [Tue, 2 Oct 2012 07:12:24 +0000 (11:12 +0400)]
Fix compare_double_and_swap_double_full definition condition in emul_cas
* src/atomic_ops/sysdeps/emul_cas.h
(AO_compare_double_and_swap_double_full): Test (define if)
AO_HAVE_compare_double_and_swap_double_full macro instead of
AO_HAVE_compare_double_and_swap_double.
Ivan Maidanski [Tue, 18 Sep 2012 15:03:19 +0000 (19:03 +0400)]
Fix cmpxchg16b-based compare_double_and_swap_double for SunCC/x86_64
* src/atomic_ops/sysdeps/sunc/x86_64.h
(AO_compare_double_and_swap_double_full): Fix inline assembly
arguments commenting out "m"(*addr) one (similar to that in
sunc/x86.h) if AO_CMPXCHG16B_AVAILABLE defined.
Ivan Maidanski [Sat, 22 Sep 2012 07:47:37 +0000 (11:47 +0400)]
Merge branch 'libatomic_ops-7_2-hotfix-2' into release-7_2
Ivan Maidanski [Wed, 19 Sep 2012 04:49:18 +0000 (08:49 +0400)]
Update (regenerate) configure files; update ChangeLog
* configure: Regenerate (by autoreconf -vif using autoconf-2.68,
automake-1.11.3 and libtool-2.4.2).
* INSTALL: Likewise.
* Makefile.in: Likewise.
* aclocal.m4: Likewise.
* compile: Likewise.
* config.guess: Likewise.
* config.sub: Likewise.
* depcomp: Likewise.
* doc/Makefile.in: Likewise.
* install-sh: Likewise.
* missing: Likewise.
* src/Makefile.in: Likewise.
* src/atomic_ops/Makefile.in: Likewise.
* src/atomic_ops/sysdeps/Makefile.in: Likewise.
* tests/Makefile.in: Likewise.
Ivan Maidanski [Tue, 18 Sep 2012 17:24:11 +0000 (21:24 +0400)]
Update ChangeLog
Ivan Maidanski [Tue, 18 Sep 2012 17:21:47 +0000 (21:21 +0400)]
Fix a typo in comment of compare_double_and_swap_double (x86_64)
* src/atomic_ops/sysdeps/gcc/x86_64.h
(AO_compare_double_and_swap_double_full): Fix a typo in comment.
* src/atomic_ops/sysdeps/sunc/x86_64.h
(AO_compare_double_and_swap_double_full): Likewise.
Ivan Maidanski [Tue, 18 Sep 2012 12:01:46 +0000 (16:01 +0400)]
Update ChangeLog
Ivan Maidanski [Tue, 18 Sep 2012 10:54:48 +0000 (14:54 +0400)]
Terminate tests with abort after error reported
(Apply commit ebaf32f from 'master' branch)
* tests/test_atomic.c (acqrel_thr): Call abort() after fprintf(stderr).
* tests/test_malloc.c (run_one_test): Likewise.
* tests/test_stack.c (check_list, main): Likewise.
Conflicts:
tests/test_atomic.c
tests/test_stack.c
Ivan Maidanski [Wed, 5 Sep 2012 04:51:21 +0000 (08:51 +0400)]
Update ChangeLog
Ivan Maidanski [Wed, 5 Sep 2012 04:25:24 +0000 (08:25 +0400)]
Fix compare_double_and_swap_double for clang/x86 in PIC mode
* src/atomic_ops/sysdeps/gcc/x86.h
(AO_compare_double_and_swap_double_full): Re-implement for PIC mode
saving EBX to a local variable (instead of pushing it to stack) and
saving memory operand address to a register (edi which is manually
preserved), so that the whole code could also work even if EBX points
to memory operand (e.g., in Clang); test __PIC__ using ifdef (instead
of "if"); update comments; reformat code.
Ivan Maidanski [Thu, 9 Aug 2012 19:48:31 +0000 (23:48 +0400)]
[7.2d]
Change version in README to 7.2d; update ChangeLog
Ivan Maidanski [Thu, 9 Aug 2012 19:40:56 +0000 (23:40 +0400)]
Merge branch 'libatomic_ops-7_2-hotfix-1' into release-7_2
Ivan Maidanski [Wed, 1 Aug 2012 18:37:31 +0000 (22:37 +0400)]
Update ChangeLog
Ivan Maidanski [Wed, 1 Aug 2012 18:35:17 +0000 (22:35 +0400)]
Fix AO_compiler_barrier missing parentheses
* src/atomic_ops.h (AO_compiler_barrier): Add parentheses and cast to
void.
Ivan Maidanski [Sun, 22 Jul 2012 08:18:41 +0000 (12:18 +0400)]
Update (regenerate) config.guess and config.sub; update ChangeLog
* config.guess: Regenerate (by autoreconf -vif using autoconf-2.68,
automake-1.11.1 and libtool-2.4).
* config.sub: Likewise.
Ivan Maidanski [Sun, 22 Jul 2012 07:40:06 +0000 (11:40 +0400)]
Update ChangeLog
Ivan Maidanski [Wed, 4 Jul 2012 04:32:03 +0000 (08:32 +0400)]
Fix AO_compare_double_and_swap_double_full for gcc-4.2.1/x86 in PIC mode
* src/atomic_ops/sysdeps/gcc/x86.h
(AO_compare_double_and_swap_double_full): Use EDI register for
"new_val1" argument in PIC mode only for GCC 4.3+ to workaround
a problem with older compiler versions (e.g., GCC 4.2.1 [FreeBSD])
that do not recognize 'D' as a valid register specification; update
comment.
Ivan Maidanski [Mon, 2 Jul 2012 04:57:51 +0000 (08:57 +0400)]
Update ChangeLog
Ivan Maidanski [Sun, 1 Jul 2012 08:45:23 +0000 (12:45 +0400)]
Fix generalized AO_char/short_fetch_and_add CTYPE args
(fix missing 'unsigned' for generalized fetch_and_add primitives)
* src/atomic_ops/generalize-small.template
(AO_XSIZE_fetch_and_add_full,
AO_XSIZE_fetch_and_add_acquire, AO_XSIZE_fetch_and_add_release):
Fix type of function arguments (or local variables) by adding
'unsigned' to XCTYPE.
* src/atomic_ops/generalize-small.h: Regenerate.
Ivan Maidanski [Fri, 11 May 2012 15:55:17 +0000 (19:55 +0400)]
[7.2]
Bump libatomic_ops version to 7.2 (final)
* configure.ac, README: Bump version to 7.2 (final).
* configure: Regenerate.
* ChangeLog: Update.
Ivan Maidanski [Tue, 1 May 2012 16:05:07 +0000 (20:05 +0400)]
Update ChangeLog
H.J. Lu [Mon, 16 Apr 2012 16:23:51 +0000 (09:23 -0700)]
Define AO_T_IS_INT for x32
* src/atomic_ops/sysdeps/gcc/x86_64.h (AO_T_IS_INT): Defined
for x32.
Ivan Maidanski [Tue, 1 May 2012 14:34:04 +0000 (18:34 +0400)]
Update ChangeLog
H.J. Lu [Tue, 1 May 2012 10:31:30 +0000 (14:31 +0400)]
Fix for x32 by removing 'q' suffix in x86-64 instructions
(Apply commit 711f7fe from 'master' branch)
We do not need the 'q' suffix on x86_64 atomic instructions for AO_t
which is defined as "unsigned long"; the later is 32-bit for x32
and 64-bit for x86-64; the register operand in x86-64 atomic
instructions is sufficient to properly determine the register size.
* src/atomic_ops/sysdeps/gcc/x86_64.h (AO_fetch_and_add_full,
AO_and_full, AO_or_full, AO_xor_full, AO_compare_and_swap_full,
AO_fetch_compare_and_swap_full): Remove 'q' suffix in asm instruction.
Ivan Maidanski [Wed, 28 Mar 2012 04:12:48 +0000 (08:12 +0400)]
Regenerate configure; update ChangeLog
Ivan Maidanski [Wed, 28 Mar 2012 04:07:31 +0000 (08:07 +0400)]
Fix configure to define __PIC__ macro explicitly only if not done by GCC
(Apply commit 058dd11 from 'master' branch)
* configure.ac (PICFLAG): Adjust AC_MSG_CHECKING message; report
"none" result if no -fPIC is needed (for Cygwin/MinGW); determine
whether GCC -fPIC option causes __PIC__ macro definition; pass
-D __PIC__ to PICFLAG (instead of CFLAGS) only if not defined
automatically in case -fPIC specified; update comment.
Ivan Maidanski [Mon, 26 Mar 2012 04:51:03 +0000 (08:51 +0400)]
Update ChangeLog
Ivan Maidanski [Mon, 26 Mar 2012 04:34:27 +0000 (08:34 +0400)]
Fix double_ptr_storage definition for GCC pre-v4 (x86_64)
* src/atomic_ops/sysdeps/standard_ao_double_t.h: Do not use __m128
if GCC pre-v4 (at least, xmmintrin.h is missing in gcc-3.4.3-x86_64
included in Solaris 10 distribution).
Ivan Maidanski [Mon, 26 Mar 2012 04:29:38 +0000 (08:29 +0400)]
Fix a typo in comment in standard_ao_double_t.h
Ivan Maidanski [Mon, 19 Mar 2012 15:59:29 +0000 (19:59 +0400)]
Regenerate configure, Makefile.in; update ChangeLog
Petter Urkedal [Sun, 14 Aug 2011 10:37:31 +0000 (12:37 +0200)]
Add -uninstalled pkg-config file, move them to pkgconfig/.
(Apply commit 8e6f271 from 'master' branch)
* atomic_ops.pc.in -> pkgconfig/atomic_ops.pc.in: Moved.
* pkgconfig/atomic_ops-uninstalled.pc.in: Added developer version.
* configure.ac, Makefile.am: Update accordingly.
Ivan Maidanski [Thu, 4 Aug 2011 17:37:42 +0000 (21:37 +0400)]
Add atomic_ops.pc.
(Apply commit 5757ba9 from 'master' branch)
* atomic_ops.pc.in: new file.
* Makefile.am (pkgconfigdir, pkgconfig_DATA): new items.
* configure.ac (AC_CONFIG_FILES): add atomic_ops.pc.
* configure, Makefile.in: Regenerate.
Ivan Maidanski [Wed, 7 Mar 2012 15:39:29 +0000 (19:39 +0400)]
Update ChangeLog
Ivan Maidanski [Wed, 7 Mar 2012 15:12:49 +0000 (19:12 +0400)]
Fix AO_compare_double_and_swap_double_full for gcc/x86 (PIC mode)
* src/atomic_ops/sysdeps/gcc/x86.h
(AO_compare_double_and_swap_double_full): Use EDI register for
"new_val1" argument instead of a memory operand and use XCHG assembler
instruction instead of push/pop in case of PIC mode (to workaround
a bug in GCC 4.6.1); update the comment.
Ivan Maidanski [Wed, 7 Mar 2012 03:41:23 +0000 (07:41 +0400)]
Fix AO_stack_push_release to workaround bug in clang-1.1/x86
* src/atomic_ops_stack.c (AO_stack_push_release): Make "cptr" local
variable volatile to workaround a bug in clang-1.1/x86 compiler; add
comment.
Ivan Maidanski [Wed, 7 Mar 2012 03:31:55 +0000 (07:31 +0400)]
Fix a typo in comment
* src/atomic_ops/sysdeps/gcc/x86.h
(AO_compare_double_and_swap_double_full): Fix argument name in the
comment.
* src/atomic_ops/sysdeps/sunc/x86.h
(AO_compare_double_and_swap_double_full): Likewise.
Ivan Maidanski [Sun, 4 Mar 2012 18:35:05 +0000 (22:35 +0400)]
Update ChangeLog
Ivan Maidanski [Sun, 4 Mar 2012 16:20:22 +0000 (20:20 +0400)]
Fix a typo in comment
(Apply commit 529f91a from 'master' branch)
* src/atomic_ops_malloc.h (AO_malloc_enable_mmap): Fix a typo in the
comment.
Ivan Maidanski [Thu, 19 Jan 2012 04:37:21 +0000 (08:37 +0400)]
Update ChangeLog
Ivan Maidanski [Thu, 19 Jan 2012 04:33:50 +0000 (08:33 +0400)]
Change function prototype specifications to follow strict ANSI C style
* tests/test_atomic.c (main): Put "void" keyword into the arguments
specification of the function prototype.
* tests/test_stack.c (main): Likewise.