platform/upstream/libatomic_ops.git
6 years ago[7.4.10] v7.4.10
Ivan Maidanski [Fri, 22 Dec 2017 16:45:57 +0000 (19:45 +0300)]
[7.4.10]

Bump libatomic_ops version to 7.4.10

* ChangeLog (7.4.10): Add release date.
* README.md: Bump micro version.
* configure.ac (AC_INIT): Likewise.
* src/atomic_ops/ao_version.h (AO_VERSION_MICRO): Likewise.
* src/Makefile.am (LIBATOMIC_OPS_GPL_VER_INFO): Increment revision
(bump version info of libatomic_ops_gpl.so to 1:5:0).

6 years agoUpdate ChangeLog file (v7.2 - v7.4 changes only)
Ivan Maidanski [Fri, 22 Dec 2017 16:30:29 +0000 (19:30 +0300)]
Update ChangeLog file (v7.2 - v7.4 changes only)

6 years agoTravis CI: Test malloc/stack with AO_USE_PTHREAD_DEFS
Ivan Maidanski [Wed, 20 Dec 2017 21:57:53 +0000 (00:57 +0300)]
Travis CI: Test malloc/stack with AO_USE_PTHREAD_DEFS

6 years agoFix typo in AO_REAL_NEXT_PTR comment (atomic_ops_stack.h)
Ivan Maidanski [Tue, 19 Dec 2017 08:26:10 +0000 (11:26 +0300)]
Fix typo in AO_REAL_NEXT_PTR comment (atomic_ops_stack.h)

* src/atomic_ops_stack.h [AO_USE_ALMOST_LOCK_FREE] (AO_REAL_NEXT_PTR):
Fix typo ("either NULL") in the comment.

6 years agoUpdate ChangeLog file (v7.2 - v7.4 changes only)
Ivan Maidanski [Tue, 12 Dec 2017 14:54:03 +0000 (17:54 +0300)]
Update ChangeLog file (v7.2 - v7.4 changes only)

6 years agoFix AO_malloc for sizes near CHUNK_SIZE
Ivan Maidanski [Mon, 4 Dec 2017 20:28:01 +0000 (23:28 +0300)]
Fix AO_malloc for sizes near CHUNK_SIZE

Without this patch, e.g an object of CHUNK_SIZE is treated as non-large
in AO_malloc but freed by AO_free_large (incorrectly).

* src/atomic_ops_malloc.c (AO_malloc): Call AO_malloc_large() also for
size values in range CHUNK_SIZE-sizeof(AO_t)+1 .. CHUNK_SIZE.

6 years agoFix memory leak in test_malloc
Ivan Maidanski [Sun, 3 Dec 2017 07:14:33 +0000 (10:14 +0300)]
Fix memory leak in test_malloc

* tests/test_malloc.c (free_list): New function definition.
* tests/test_malloc.c (run_one_test): Call free_list(x) on return.

6 years ago[7.4.8] v7.4.8
Ivan Maidanski [Wed, 18 Oct 2017 10:47:33 +0000 (13:47 +0300)]
[7.4.8]

Bump libatomic_ops version to 7.4.8

* ChangeLog (7.4.8): Add release date.
* README.md: Bump micro version.
* configure.ac (AC_INIT): Likewise.
* src/atomic_ops/ao_version.h (AO_VERSION_MICRO): Likewise.

6 years agoTravis CI: Test AO_GENERALIZE_ASM_BOOL_CAS, AO_USE_NANOSLEEP/NO_SIGNALS
Ivan Maidanski [Thu, 5 Oct 2017 22:48:28 +0000 (01:48 +0300)]
Travis CI: Test AO_GENERALIZE_ASM_BOOL_CAS, AO_USE_NANOSLEEP/NO_SIGNALS

6 years agoUpdate ChangeLog file (v7.4 changes only)
Ivan Maidanski [Wed, 20 Sep 2017 08:31:29 +0000 (11:31 +0300)]
Update ChangeLog file (v7.4 changes only)

6 years agoUpdate AUTHORS file (add Mikael Urankar)
Ivan Maidanski [Tue, 20 Jun 2017 09:23:15 +0000 (12:23 +0300)]
Update AUTHORS file (add Mikael Urankar)

6 years agoWorkaround misspelling in GCC to detect ARMv6KZ platform
Mikael Urankar [Mon, 19 Jun 2017 08:13:14 +0000 (10:13 +0200)]
Workaround misspelling in GCC to detect ARMv6KZ platform

Issue #26 (libatomic_ops).

Due to a misspelling in GCC, the check for the ARMv6KZ platform
uses ARM_ARCH_6ZK macro instead of ARM_ARCH_6KZ.

* src/atomic_ops/sysdeps/gcc/arm.h (AO_ARM_HAVE_DMB): Do not define
if __ARM_ARCH_6KZ__.

6 years agoAdd bdwgc mailing list online archive link to README
Ivan Maidanski [Thu, 15 Jun 2017 22:14:13 +0000 (01:14 +0300)]
Add bdwgc mailing list online archive link to README

* README.md (Feedback, Contribution, Questions and Notifications):
Update information about accessing the mailing list archive (add link
to that at Narkive site).

6 years agoFix 'missing select.h', 'undefined sigprocmask' compiler errors (Hexagon)
Ivan Maidanski [Thu, 8 Jun 2017 22:01:21 +0000 (01:01 +0300)]
Fix 'missing select.h', 'undefined sigprocmask' compiler errors (Hexagon)

* src/atomic_ops.c [__hexagon__ && !AO_USE_NO_SIGNALS
&& !AO_USE_NANOSLEEP] (AO_USE_NO_SIGNALS, AO_USE_NANOSLEEP): Define;
add comment.

6 years agoUpdate README about bugs reporting and new releases notification
Ivan Maidanski [Fri, 2 Jun 2017 04:44:15 +0000 (07:44 +0300)]
Update README about bugs reporting and new releases notification
(Cherry-pick commit 0a55f08 from 'release-7_6' branch.)

* README.md (Download): Move (and update) information about bug reporting
to another section.
* README.md (Feedback, Contribution, Questions and Notifications): New
section.
* configure.ac (AC_INIT): Change URI for reporting bugs.

6 years agoTravis CI: Move 'gnu-tools' to home folder
Ivan Maidanski [Wed, 24 May 2017 21:39:59 +0000 (00:39 +0300)]
Travis CI: Move 'gnu-tools' to home folder

6 years ago[7.4.6] v7.4.6
Ivan Maidanski [Thu, 18 May 2017 08:39:42 +0000 (11:39 +0300)]
[7.4.6]

Bump libatomic_ops version to 7.4.6

* ChangeLog (7.4.6): Add release date.
* README.md: Bump micro version.
* configure.ac (AC_INIT): Likewise.
* src/atomic_ops/ao_version.h (AO_VERSION_MICRO): Likewise.

6 years agoUpdate ChangeLog file (v7.2 - v7.4 changes only)
Ivan Maidanski [Thu, 18 May 2017 08:33:10 +0000 (11:33 +0300)]
Update ChangeLog file (v7.2 - v7.4 changes only)

6 years agoUse 'inline code' format for commands in README.md
Ivan Maidanski [Thu, 18 May 2017 08:13:24 +0000 (11:13 +0300)]
Use 'inline code' format for commands in README.md
(Cherry-pick commit 015f7a6 from 'master' branch.)

* README.md: Quote commands with a grave accent character ("`"); the
same for names containing an underscore; reformat text.

6 years agoUpdate ChangeLog file (v7.4 changes)
Ivan Maidanski [Tue, 16 May 2017 12:52:34 +0000 (15:52 +0300)]
Update ChangeLog file (v7.4 changes)

6 years agoRename doc/README.txt to doc/README_details.txt
Ivan Maidanski [Tue, 16 May 2017 12:15:55 +0000 (15:15 +0300)]
Rename doc/README.txt to doc/README_details.txt

This is to differentiate from README.md when the documents are installed.

* doc/Makefile.am (dist_doc_DATA): Rename README.txt item to
README_details.txt.
* doc/README.txt: Rename to README_details.txt.

6 years agoTravis CI: Test also with mingw-w64 cross-compiler
Ivan Maidanski [Mon, 3 Apr 2017 06:04:11 +0000 (09:04 +0300)]
Travis CI: Test also with mingw-w64 cross-compiler
(Cherry-pick commit 50a4f94 from 'master' branch.)

6 years agoTravis CI: Setup dist tarball uploading to GitHub on tag creation
Ivan Maidanski [Mon, 15 May 2017 09:33:03 +0000 (12:33 +0300)]
Travis CI: Setup dist tarball uploading to GitHub on tag creation
(Cherry-pick commits 63238a5, 0cbf615, ad26bf4 from 'master' branch.)

6 years agoTravis CI: Test also 'make distcheck'
Ivan Maidanski [Fri, 5 May 2017 18:53:14 +0000 (21:53 +0300)]
Travis CI: Test also 'make distcheck'
(Cherry-pick commits 73162f6, 0ef0fe3 from 'master' branch.)

GNU autotools version:
* autoconf 2.69
* automake 1.15
* m4 1.4.18
* libtool 2.4.6

6 years agoTravis CI: Test also the distributive file creation
Ivan Maidanski [Thu, 27 Apr 2017 20:57:02 +0000 (23:57 +0300)]
Travis CI: Test also the distributive file creation
(Cherry-pick commits 672aab2, 0ef0fe3 from 'master' branch.)

6 years agoTravis CI: Reformat .yml file by travis tool
Ivan Maidanski [Mon, 15 May 2017 19:44:38 +0000 (22:44 +0300)]
Travis CI: Reformat .yml file by travis tool
(Cherry-pick commit 2d0bbb0 from 'master' branch.)

6 years agoUpdate ChangeLog file (v7.2 - v7.4 changes only)
Ivan Maidanski [Mon, 15 May 2017 20:17:10 +0000 (23:17 +0300)]
Update ChangeLog file (v7.2 - v7.4 changes only)

6 years agoEliminate 'value shift followed by expansion' false code defect warning
Ivan Maidanski [Thu, 11 May 2017 08:21:01 +0000 (11:21 +0300)]
Eliminate 'value shift followed by expansion' false code defect warning

* src/atomic_ops.c [AO_USE_NANOSLEEP] (AO_pause): Use "L" suffix for
shifted immediate value (1) to match the type of ts.tv_nsec.
* src/atomic_ops.c [!AO_USE_NANOSLEEP && AO_USE_WIN32_PTHREADS]
(AO_pause): Cast shifted immediate value (1) to DWORD to match Sleep
argument type.
* src/atomic_ops.c [!AO_USE_NANOSLEEP && !AO_USE_WIN32_PTHREADS]
(AO_pause): Store computed usec value to an intermediate int variable
(before storing it to tv.tv_usec) so that to avoid widening conversion
of shifted immediate int value (1); add comment.

6 years agoUpdate AUTHORS file (add Andy Li)
Ivan Maidanski [Wed, 10 May 2017 21:29:22 +0000 (00:29 +0300)]
Update AUTHORS file (add Andy Li)

6 years agoFix 'doc' files installation folder
Andy Li [Tue, 9 May 2017 01:42:14 +0000 (09:42 +0800)]
Fix 'doc' files installation folder

docs are dist_doc_DATA.  They should be installed to /usr/share/doc.

* Makefile.am (dist_pkgdata_DATA): Remove COPYING, README.md.
* Makefile.am (dist_doc_DATA): Add COPYING, README.md.
* doc/Makefile.am (dist_pkgdata_DATA): Remove LICENSING.txt,
README.txt, README_stack.txt, README_malloc.txt, README_win32.txt.
* doc/Makefile.am (dist_doc_DATA): Add LICENSING.txt,
README.txt, README_stack.txt, README_malloc.txt, README_win32.txt.

6 years agoUpdate ChangeLog file (v7.2 - v7.4 changes only)
Ivan Maidanski [Wed, 10 May 2017 06:18:23 +0000 (09:18 +0300)]
Update ChangeLog file (v7.2 - v7.4 changes only)

6 years agoWorkaround 'resource leak' false positives in AO_malloc, add_elements
Ivan Maidanski [Fri, 21 Apr 2017 07:10:58 +0000 (10:10 +0300)]
Workaround 'resource leak' false positives in AO_malloc, add_elements

* src/atomic_ops_stack.c [AO_HAVE_compare_double_and_swap_double
&& LINT2] (AO_noop_sink): New global volatile variable.
* src/atomic_ops_stack.c [AO_HAVE_compare_double_and_swap_double
&& LINT2] (AO_stack_push_release): Store element value to AO_noop_sink;
add comment.

6 years agoUpdate AUTHORS file
Ivan Maidanski [Fri, 4 Mar 2016 18:12:53 +0000 (21:12 +0300)]
Update AUTHORS file

6 years agoWorkaround test_stack failure on AIX/ppc
Fabrizio Fabbri [Fri, 7 Apr 2017 13:56:04 +0000 (09:56 -0400)]
Workaround test_stack failure on AIX/ppc

* src/atomic_ops_stack.c [AO_USE_ALMOST_LOCK_FREE]
(AO_stack_pop_explicit_aux_acquire): Replace AO_load to AO_load_acquire
when loaded value is compared to first; add comment.

7 years agoUpdate ChangeLog file (v7.2 - v7.4 changes only)
Ivan Maidanski [Tue, 4 Apr 2017 08:35:50 +0000 (11:35 +0300)]
Update ChangeLog file (v7.2 - v7.4 changes only)

7 years agoChangeLog: remove trailing dots
Ivan Maidanski [Tue, 4 Apr 2017 08:18:14 +0000 (11:18 +0300)]
ChangeLog: remove trailing dots
(Cherry-pick commit 57c7c94 from 'master' branch.)

7 years agoTravis CI: Also test with musl-gcc (Linux)
Ivan Maidanski [Tue, 21 Mar 2017 09:01:26 +0000 (12:01 +0300)]
Travis CI: Also test with musl-gcc (Linux)
(Cherry-pick commits 0f3f282, 7f09707 from 'master' branch.)

7 years agoTravis CI: Test also Intel x32 builds (Linux)
Ivan Maidanski [Thu, 23 Mar 2017 18:08:18 +0000 (21:08 +0300)]
Travis CI: Test also Intel x32 builds (Linux)
(Cherry-pick commit 011426e from 'master' branch.)

7 years agoTravis CI: Test also with -D _FORTIFY_SOURCE, -std=c11, -std=c89
Ivan Maidanski [Thu, 23 Mar 2017 07:37:59 +0000 (10:37 +0300)]
Travis CI: Test also with -D _FORTIFY_SOURCE, -std=c11, -std=c89
(Cherry-pick commit f541d2a from 'master' branch.)

7 years agoTravis CI: Replace multiple CONF_x with a single CONF_OPTIONS variable
Ivan Maidanski [Tue, 28 Mar 2017 08:19:57 +0000 (11:19 +0300)]
Travis CI: Replace multiple CONF_x with a single CONF_OPTIONS variable
(Cherry-pick commit b7014e6 from 'master' branch.)

7 years agoTravis CI: Specify test configurations using 'matrix:include'
Ivan Maidanski [Mon, 3 Apr 2017 19:21:26 +0000 (22:21 +0300)]
Travis CI: Specify test configurations using 'matrix:include'
(Cherry-pick commits d808080, 64c5c71, ad3932a from 'master' branch.)

Also, require "sudo" only where needed.

7 years agoTravis CI: Output config.h content
Ivan Maidanski [Thu, 16 Feb 2017 21:36:33 +0000 (00:36 +0300)]
Travis CI: Output config.h content
(Cherry-pick commit e6249bb from 'master' branch.)

7 years agoFix AO_SIZE_MAX definition (Linux/musl-gcc)
Ivan Maidanski [Wed, 15 Mar 2017 08:27:48 +0000 (11:27 +0300)]
Fix AO_SIZE_MAX definition (Linux/musl-gcc)
(Cherry-pick commit 7a99c0f from 'master' branch.)

* src/atomic_ops_malloc.c [SIZE_MAX && !CPPCHECK] (AO_SIZE_MAX): Cast
SIZE_MAX to size_t explicitly (to workaround incorrect definition
of SIZE_MAX - e.g. it is defined as ~0ULL in musl-tools which is not
correct for a 32-bit target).

7 years agoUpdate shared libraries version info for 7.4.6+ (to 1:4:0)
Ivan Maidanski [Fri, 31 Mar 2017 14:48:46 +0000 (17:48 +0300)]
Update shared libraries version info for 7.4.6+ (to 1:4:0)

Version info "revision" number is incremented (indicating the library
API is not changed, only the implementation is modified since the
previous version update).

* src/Makefile.am (LIBATOMIC_OPS_VER_INFO, LIBATOMIC_OPS_GPL_VER_INFO):
Change version info from 1:3:0 (used for previous libatomic_ops v7.4.x
releases) to 1:4:0.

7 years agoFix missing .exe for test filenames in Makefile (MinGW)
Ivan Maidanski [Wed, 1 Mar 2017 22:50:24 +0000 (01:50 +0300)]
Fix missing .exe for test filenames in Makefile (MinGW)
(Cherry-pick commit 3aacd48 from 'master' branch.)

* tests/Makefile.am (TESTS): Add $(EXEEXT) suffix to each item (test).
* tests/Makefile.am (TEST_OBJS): Reorder items (to match the that of
TESTS).
* tests/Makefile.am (check_PROGRAMS): Specify all items explicitly (so
that to have all items without the suffix as before this change).

7 years agoMove libraries version info to the beginning of Makefile.am
Ivan Maidanski [Fri, 17 Feb 2017 20:27:19 +0000 (23:27 +0300)]
Move libraries version info to the beginning of Makefile.am
(code refactoring)

* src/Makefile.am (LIBATOMIC_OPS_VER_INFO, LIBATOMIC_OPS_GPL_VER_INFO):
New variable; add comment about the version update rule.
* src/Makefile.am (libatomic_ops_la_LDFLAGS,
libatomic_ops_gpl_la_LDFLAGS): Use LIBATOMIC_OPS_[GPL_]VER_INFO
instead direct hard-coding of version info.

7 years agoRefine documentation in Makefile.msft how to run all tests (MS VC)
Ivan Maidanski [Fri, 17 Feb 2017 20:48:23 +0000 (23:48 +0300)]
Refine documentation in Makefile.msft how to run all tests (MS VC)

* src/Makefile.msft: Refine comment about all tests execution
("make check" is redundant, it is enough to run only "make" to
auto-generate list_atomic.c and test_atomic_include.h).

7 years agoEliminate 'implicit declaration of close' warning in 'strict ANSI' mode
Ivan Maidanski [Thu, 23 Mar 2017 06:52:55 +0000 (09:52 +0300)]
Eliminate 'implicit declaration of close' warning in 'strict ANSI' mode

* src/atomic_ops_malloc.c [HAVE_MMAP && !USE_MMAP_ANON]: Include
unistd.h (to declare "close" function).

7 years agoFix block_all_signals compilation in 'strict ANSI' mode
Ivan Maidanski [Thu, 23 Mar 2017 06:41:37 +0000 (09:41 +0300)]
Fix block_all_signals compilation in 'strict ANSI' mode

* src/atomic_ops.c [(__linux__ || __GLIBC__ || __GNU__)
&& !AO_USE_NO_SIGNALS] (_GNU_SOURCE): Define (before including system
headers).

7 years agoFix 'Cannot implement CAS_full on this architecture' build error (cris)
Ivan Maidanski [Tue, 21 Feb 2017 21:05:11 +0000 (00:05 +0300)]
Fix 'Cannot implement CAS_full on this architecture' build error (cris)

* src/atomic_ops.h [__cris__ || CRIS] (AO_CAN_EMUL_CAS): Define.
* src/atomic_ops/sysdeps/gcc/cris.h: Add TODO to implement CAS.

7 years agoEliminate 'missing braces around initializer' gcc warning (hppa)
Ivan Maidanski [Tue, 21 Feb 2017 20:38:47 +0000 (23:38 +0300)]
Eliminate 'missing braces around initializer' gcc warning (hppa)

* src/atomic_ops/sysdeps/gcc/hppa.h (AO_TS_INITIALIZER): Add extra
outermost {} braces.

7 years agoFix typo in comments in gcc/arm.h
Ivan Maidanski [Mon, 20 Feb 2017 08:19:54 +0000 (11:19 +0300)]
Fix typo in comments in gcc/arm.h

* src/atomic_ops/sysdeps/gcc/arm.h [!AO_GENERALIZE_ASM_BOOL_CAS]
(AO_compare_and_swap): Fix typo ("succeeded") and add "then" in comment.
* src/atomic_ops/sysdeps/gcc/arm.h [AO_ARM_HAVE_LDREXD]
(AO_double_compare_and_swap): Likewise.

7 years ago.gitignore: Ignore *.sancov (generated by ASan)
Ivan Maidanski [Wed, 15 Feb 2017 21:41:00 +0000 (00:41 +0300)]
.gitignore: Ignore *.sancov (generated by ASan)

7 years agoUpdate ChangeLog file (v7.2 - v7.4 changes only)
Ivan Maidanski [Mon, 6 Feb 2017 14:49:02 +0000 (17:49 +0300)]
Update ChangeLog file (v7.2 - v7.4 changes only)

7 years agoTravis CI configuration: turn on assertion checking
Ivan Maidanski [Wed, 7 Dec 2016 23:00:12 +0000 (02:00 +0300)]
Travis CI configuration: turn on assertion checking
(Cherry-pick commits 7e99484, bb94b84, 641030c from 'master' branch.)

7 years agoTravis CI: Output test_atomic*.log content if available
Ivan Maidanski [Tue, 31 Jan 2017 18:46:57 +0000 (21:46 +0300)]
Travis CI: Output test_atomic*.log content if available
(Cherry-pick commits 8b287a7, ecbe38f from 'master' branch.)

7 years agoTravis CI: compile for host CPU (to test double-wide primitives)
Ivan Maidanski [Thu, 26 Jan 2017 07:43:08 +0000 (10:43 +0300)]
Travis CI: compile for host CPU (to test double-wide primitives)
(Cherry-pick part of commits d9f88cd, 8268b62 from 'master' branch.)

7 years agoTravis CI: compile both for x86 and x64
Ivan Maidanski [Fri, 27 Jan 2017 17:20:31 +0000 (20:20 +0300)]
Travis CI: compile both for x86 and x64
(Cherry-pick part of commits e294a77, bb94b84 from 'master' branch.)

7 years agoTravis CI: Exclude osx/gcc builds
Ivan Maidanski [Fri, 27 Jan 2017 21:36:09 +0000 (00:36 +0300)]
Travis CI: Exclude osx/gcc builds
(Cherry-pick commit 6890d9b from 'master' branch.)

7 years agoAppveyor CI: Test double-wide CAS in debug builds (x86/x64)
Ivan Maidanski [Fri, 27 Jan 2017 16:11:22 +0000 (19:11 +0300)]
Appveyor CI: Test double-wide CAS in debug builds (x86/x64)

7 years agoAppveyor CI: run test_malloc/stack
Ivan Maidanski [Thu, 26 Jan 2017 20:10:57 +0000 (23:10 +0300)]
Appveyor CI: run test_malloc/stack

7 years agoEnable limited testing in Makefile.msft without Cygwin
Ivan Maidanski [Thu, 26 Jan 2017 20:07:57 +0000 (23:07 +0300)]
Enable limited testing in Makefile.msft without Cygwin
(Cherry-pick commit 18a05e9 from 'master' branch.)

New target "check-noautogen" is introduced in Makefile.msft to build and
run only test_malloc and test_stack (which do not need test code
auto-generation by sed).

* src/Makefile.msft: Refine comment about tests execution; add comment
about "check-noautogen" target.
* src/Makefile.msft (check): Add dependency on check-noautogen;
move test_malloc and test_stack to check-noautogen.
* src/Makefile.msft (check-noautogen): New target (executes test_malloc
and test_stack only).

7 years agoAdd configure --enable-gcov option (enable code coverage analysis)
Ivan Maidanski [Fri, 13 Jan 2017 17:47:35 +0000 (20:47 +0300)]
Add configure --enable-gcov option (enable code coverage analysis)
(Cherry-pick commits 0d0a16d, 45896dc from 'master' branch.)

* configure.ac (gcov): New --enable-* option.
* configure.ac [enable_gcov] (CFLAGS): Add "--coverage" option; filter
out "-O" options.

7 years agoWorkaround 'uninitialized memory use' MemorySanitizer warning (test_atomic)
Ivan Maidanski [Mon, 5 Dec 2016 17:26:16 +0000 (20:26 +0300)]
Workaround 'uninitialized memory use' MemorySanitizer warning (test_atomic)
(Cherry-pick commit 8fc1a2f from 'master' branch.)

* tests/test_atomic_include.template (test_atomicXX): Ensure old_w is
always initialized before AO_double_storeXX; add comment about MSan
false warning.

7 years agoFix test_atomic fail caused by AO_double_t misaligned load (Linux/i686)
Ivan Maidanski [Tue, 31 Jan 2017 07:29:44 +0000 (10:29 +0300)]
Fix test_atomic fail caused by AO_double_t misaligned load (Linux/i686)
(Cherry-pick commit a53e41b from 'master' branch.)

* src/atomic_ops/sysdeps/standard_ao_double_t.h [__i386__ && __GNUC__]
(double_ptr_storage): Add aligned(8) attribute (so that AO_double_t
global/static variables to have proper (double-word) alignment).

7 years agoFix test_atomic failure caused unaligned AO_double_t access on x86
Ivan Maidanski [Tue, 24 Jan 2017 19:46:57 +0000 (22:46 +0300)]
Fix test_atomic failure caused unaligned AO_double_t access on x86

The failure is caused by violation of an assertion that checks
AO_double_t variable is 8-byte aligned on x86.

* doc/README.txt (AO_double_t): Add note about required alignment.
* src/atomic_ops/sysdeps/standard_ao_double_t.h (AO_double_t): Add
comment about alignment.
* src/atomic_ops_stack.h (AO_stack_t): Likewise.
* tests/test_atomic_include.template (test_atomicXX): Define old_w, w
local variables as static (as otherwise, e.g., they could have 4-byte
alignment on x86); add comment.

7 years agoFix type of general AO_TS_INITIALIZER
Ivan Maidanski [Thu, 26 Jan 2017 06:46:57 +0000 (09:46 +0300)]
Fix type of general AO_TS_INITIALIZER

* src/atomic_ops.h (AO_TS_INITIALIZER): Change type from AO_t to
AO_TS_t; add outermost parentheses.

7 years agoAdd assertion that double-wide CAS target is aligned (msftc/x86[_64])
Ivan Maidanski [Fri, 20 Jan 2017 00:03:54 +0000 (03:03 +0300)]
Add assertion that double-wide CAS target is aligned (msftc/x86[_64])

* src/atomic_ops/sysdeps/msftc/x86.h [AO_ASSUME_VISTA]
(AO_double_compare_and_swap_full): Add assert() that addr pointer is
aligned according to the size of AO_double_t.
* src/atomic_ops/sysdeps/msftc/x86_64.h [AO_CMPXCHG16B_AVAILABLE
&& _MSC_VER>=1500] (AO_compare_double_and_swap_double_full): Likewise.

7 years agoRemove outdated FIXME in msftc/arm.h about _InterlockedOps memory barrier
Ivan Maidanski [Mon, 16 Jan 2017 20:55:01 +0000 (23:55 +0300)]
Remove outdated FIXME in msftc/arm.h about _InterlockedOps memory barrier

* src/atomic_ops/sysdeps/msftc/arm.h: Remove FIXME about memory barrier
of _InterlockedOps (they have the correct one according to the MSDN).

7 years agoSupport CFLAGS_EXTRA to pass extra user-defined compiler flags (MS VC)
Ivan Maidanski [Fri, 27 Jan 2017 16:05:17 +0000 (19:05 +0300)]
Support CFLAGS_EXTRA to pass extra user-defined compiler flags (MS VC)
(Cherry-pick commit 8be4790 from 'master' branch.)

* src/Makefile.msft: Remove commented out variable assignments.
* src/Makefile.msft (CFLAGS_EXTRA): New variable (empty by default).
* src/Makefile.msft (CFLAGS): Append CFLAGS_EXTRA value.

7 years agoSupport CFLAGS_EXTRA to pass extra user-defined compiler flags (configure)
Ivan Maidanski [Fri, 9 Dec 2016 21:31:25 +0000 (00:31 +0300)]
Support CFLAGS_EXTRA to pass extra user-defined compiler flags (configure)

* configure.ac: Add AC_SUBST(CFLAGS_EXTRA).
* src/Makefile.am (CFLAGS): Append $(CFLAGS_EXTRA).
* tests/Makefile.am (CFLAGS): Likewise.

7 years agoEliminate 'printf format specifies type void*' GCC pedantic warnings
Ivan Maidanski [Wed, 7 Dec 2016 09:35:47 +0000 (12:35 +0300)]
Eliminate 'printf format specifies type void*' GCC pedantic warnings

This commit also eliminates 'cast from pointer to integer' compiler
warnings and '32-bit value shift followed by expansion to 64-bit'
static analysis tool warning.

* src/atomic_ops_malloc.c [AO_TRACE_MALLOC] (AO_malloc, AO_free):
Use %p (instead of %x) format specifier to print pthread_self() value
(and cast pthread_self() to void*).
* src/atomic_ops_malloc.c [AO_TRACE_MALLOC] (AO_malloc): Cast result+1
to void* (to match %p printf format specifier).
* src/atomic_ops_malloc.c [AO_TRACE_MALLOC] (AO_free): Use "UL" suffix
for 1 and remove the cast to unsigned long (instead of performing left
shift of an integer value and extending the result to unsigned long).

7 years ago.gitignore: Ignore coverage.info (generated by lcov)
Ivan Maidanski [Tue, 31 Jan 2017 20:48:32 +0000 (23:48 +0300)]
.gitignore: Ignore coverage.info (generated by lcov)

7 years ago.gitignore: Ignore test_atomic_generalized
Ivan Maidanski [Fri, 27 Jan 2017 06:47:03 +0000 (09:47 +0300)]
.gitignore: Ignore test_atomic_generalized

7 years ago.gitignore: Ignore gcov c/h output files
Ivan Maidanski [Fri, 13 Jan 2017 17:31:12 +0000 (20:31 +0300)]
.gitignore: Ignore gcov c/h output files

7 years ago.gitignore: Ignore folders and files of static code analysis tools
Ivan Maidanski [Mon, 12 Dec 2016 21:46:56 +0000 (00:46 +0300)]
.gitignore: Ignore folders and files of static code analysis tools
(Cherry-pick commits fa3ebc3, 8550ecd from 'master' branch.)

7 years agoUpdate ChangeLog file (v7.4 changes)
Ivan Maidanski [Sat, 26 Nov 2016 18:49:24 +0000 (21:49 +0300)]
Update ChangeLog file (v7.4 changes)

7 years agoFix powerpc detection on AIX (gcc)
Tobias Leich [Thu, 17 Nov 2016 22:05:42 +0000 (01:05 +0300)]
Fix powerpc detection on AIX (gcc)

GCC/powerpc-ibm-aix does not define any of __powerpc__, __ppc__,
__PPC__, __powerpc64__, __ppc64__; but it does define _ARCH_PPC (and
_POWER).

* src/atomic_ops.h [_ARCH_PPC]: Include gcc/powerpc.h.

7 years agoUpdate AUTHORS file (add 'Tobias Leich')
Ivan Maidanski [Thu, 10 Nov 2016 09:28:35 +0000 (12:28 +0300)]
Update AUTHORS file (add 'Tobias Leich')

7 years agoImplement fetch-CAS for s390[x] (gcc)
Tobias Leich [Thu, 10 Nov 2016 08:02:56 +0000 (09:02 +0100)]
Implement fetch-CAS for s390[x] (gcc)
(Cherry-pick commits c2edeab, 796b2a6 from 'master' branch.)

* src/atomic_ops/sysdeps/gcc/s390.h (AO_compare_and_swap_full): Do not
define if AO_GENERALIZE_ASM_BOOL_CAS.
* src/atomic_ops/sysdeps/gcc/s390.h (AO_fetch_compare_and_swap_full):
Implement; remove TODO item.

7 years agoTravis CI configuration: remove unsupported --enable-werror
Ivan Maidanski [Fri, 11 Nov 2016 20:13:46 +0000 (23:13 +0300)]
Travis CI configuration: remove unsupported --enable-werror
(fix commit 4fb86d9)

Note: this configuration is for libatomic_ops of version 7.4.x.

7 years agoUpdate ChangeLog file (v7.4 changes)
Ivan Maidanski [Tue, 8 Nov 2016 06:04:28 +0000 (09:04 +0300)]
Update ChangeLog file (v7.4 changes)

7 years agoUpdate AUTHORS file
Ivan Maidanski [Mon, 10 Oct 2016 20:15:06 +0000 (23:15 +0300)]
Update AUTHORS file

7 years agoSupport AIX/ppc (gcc)
Jean Girardet [Mon, 10 Oct 2016 08:04:24 +0000 (11:04 +0300)]
Support AIX/ppc (gcc)

* src/atomic_ops/sysdeps/gcc/powerpc.h (AO_PPC_L, AO_PPC_BR_A): New
internal macros (undefined at the end of file); definition depends on
_AIX macro presence.
* src/atomic_ops/sysdeps/gcc/powerpc.h (AO_load_acquire,
AO_test_and_set, AO_compare_and_swap, AO_fetch_compare_and_swap,
AO_fetch_and_add): Use AO_PPC_L for label definitions; use AO_PPC_BR_A
to specify jump target.

7 years agoCode refactoring of gcc/powerpc.h to avoid code duplication
Ivan Maidanski [Fri, 7 Oct 2016 16:27:09 +0000 (19:27 +0300)]
Code refactoring of gcc/powerpc.h to avoid code duplication

* src/atomic_ops/sysdeps/gcc/powerpc.h (AO_PPC_LD, AO_PPC_LxARX,
AO_PPC_CMPx, AO_PPC_STxCXd, AO_PPC_LOAD_CLOBBER): New internal macros
(undefined at the end of the file).
* src/atomic_ops/sysdeps/gcc/powerpc.h (AO_T_IS_INT): Move definition
upper (to have single check of __ppc64__).
* src/atomic_ops/sysdeps/gcc/powerpc.h (AO_load_acquire): Use AO_PPC_LD,
AO_PPC_LOAD_CLOBBER (and eliminate code duplication).
* src/atomic_ops/sysdeps/gcc/powerpc.h (AO_test_and_set,
AO_compare_and_swap, AO_fetch_compare_and_swap, AO_fetch_and_add): Use
AO_PPC_LxARX, AO_PPC_CMPx, AO_PPC_STxCXd (and eliminate code
duplication).

7 years agoUpdate ChangeLog file (v7.2 - v7.4 changes only)
Ivan Maidanski [Fri, 4 Nov 2016 21:34:00 +0000 (00:34 +0300)]
Update ChangeLog file (v7.2 - v7.4 changes only)

7 years agoFix (improve) AO_REQUIRE_CAS description in README
Ivan Maidanski [Wed, 2 Nov 2016 08:15:15 +0000 (11:15 +0300)]
Fix (improve) AO_REQUIRE_CAS description in README

* doc/README.txt: Document AO_REQUIRE_CAS better (replace
"compare-and-swap" with "AO_compare_and_swap*").

7 years agoAdd configuration file for AppVeyor CI
Ivan Maidanski [Mon, 15 Aug 2016 19:44:10 +0000 (22:44 +0300)]
Add configuration file for AppVeyor CI
(Cherry-pick commit 9010888 from 'master' branch.)

Note: builds version is set to 7.4.x

* appveyor.yml: New file (not a part of the distribution archive).

7 years agoAdd configuration for Travis CI
Ivan Maidanski [Thu, 11 Aug 2016 19:29:46 +0000 (22:29 +0300)]
Add configuration for Travis CI

* .travis.yml: New file.

7 years agoFix 'visibility' of some CPU-specific internal macros
Ivan Maidanski [Wed, 2 Nov 2016 22:05:01 +0000 (01:05 +0300)]
Fix 'visibility' of some CPU-specific internal macros
(Cherry-pick commit 9b7cecb from 'master' branch.)

Undefine internal macros that are defined and used solely in a single
CPU-specific file.

* src/atomic_ops/sysdeps/gcc/arm.h
(AO_THUMB_GO_ARM, AO_THUMB_RESTORE_MODE, AO_THUMB_SWITCH_CLOBBERS):
Undefine at the end of file.
* src/atomic_ops/sysdeps/gcc/hppa.h (AO_PA_LDCW_ALIGNMENT, AO_ldcw,
AO_ldcw_align): Likewise.
* src/atomic_ops/sysdeps/gcc/ia64.h (AO_IN_ADDR, AO_LEN, AO_MASK,
AO_OUT_ADDR, AO_SWIZZLE): Likewise.
* src/atomic_ops/sysdeps/gcc/mips.h (AO_MIPS_LL): Likewise.
* src/atomic_ops/sysdeps/hpc/hppa.h (AO_PA_LDCW_ALIGNMENT, AO_ldcw,
AO_ldcw_align): Likewise.
* src/atomic_ops/sysdeps/hpc/ia64.h (AO_T_FASIZE, AO_T_SIZE): Likewise.
* src/atomic_ops/sysdeps/icc/ia64.h (AO_INTEL_PTR_t): Likewise.

7 years agoSupport n32 ABI for mips64
Frank Schaefer [Sat, 9 May 2015 05:26:43 +0000 (05:26 +0000)]
Support n32 ABI for mips64

Without the proposed change, the existing preprocessor checks for
mips64 support do not account for the n32 ABI (when building with
"gcc -mabi=n32", test_atomic and test_stack both fail, and
test_malloc appears to hang indefinitely while spinning at 100%).

* src/atomic_ops/sysdeps/gcc/mips.h (AO_MIPS_SET_ISA, AO_MIPS_LL_1,
AO_MIPS_SC): Define depending on _MIPS_SIM value.

7 years agoUse LLD and SCD instructions on mips64
James Cowgill [Thu, 8 Jan 2015 16:00:38 +0000 (16:00 +0000)]
Use LLD and SCD instructions on mips64
(Cherry-pick commits 54d1da5, 22ca163 and part of 9b7cecb from 'master' branch.)

7 years agoFix size value wrap around in AO_malloc_large
Ivan Maidanski [Mon, 22 Aug 2016 17:12:19 +0000 (20:12 +0300)]
Fix size value wrap around in AO_malloc_large
(Cherry-pick commits 1033478 and b1365bd from 'master' branch.)

AO_malloc(SIZE_MAX) should return NULL now.

* src/atomic_ops_malloc.c: Include limits.h (unless SIZE_MAX already
defined).
* src/atomic_ops_malloc.c (AO_SIZE_MAX): New macro.
* src/atomic_ops_malloc.c (SIZET_SAT_ADD): New macro.
* src/atomic_ops_malloc.c (AO_malloc_large): Use SIZET_SAT_ADD to
avoid integer overflow when computing the memory size to map (i.e.,
malloc should handle arguments close to SIZE_MAX correctly).

7 years agoEliminate 'cast to long from void*' compiler warning in test_atomic
Ivan Maidanski [Wed, 12 Oct 2016 06:17:01 +0000 (09:17 +0300)]
Eliminate 'cast to long from void*' compiler warning in test_atomic

* tests/run_parallel.h (AO_PTRDIFF_T): Define to ptrdiff_t for all
targets.

7 years agoFix missing printed value names (test_stack)
Ivan Maidanski [Tue, 11 Oct 2016 14:45:01 +0000 (17:45 +0300)]
Fix missing printed value names (test_stack)

* tests/test_stack.c [VERBOSE] (main): Print value name along with the
value itself; print "ms" for time value; remove extra get_msecs() call.

7 years agoFix typos in 'error' pragma messages
Ivan Maidanski [Wed, 5 Oct 2016 18:47:35 +0000 (21:47 +0300)]
Fix typos in 'error' pragma messages

* src/atomic_ops.h [_HPUX_SOURCE && !__ia64] (AO_barrier_dummy):
Fix typo ("do not") in comment.
* src/atomic_ops/generalize.h [AO_HAVE_nop_acquire]: Fix typo
("do not") in #error message.
* src/atomic_ops/generalize.h [AO_HAVE_nop_release]: Likewise.
* src/atomic_ops/sysdeps/armcc/arm_v6.h [__TARGET_ARCH_ARM < 6]:
Likewise.
* src/atomic_ops/sysdeps/armcc/arm_v6.h [__TARGET_ARCH_ARM < 6]: Add
#error pragma.
* src/atomic_ops_stack.c [AO_HAVE_compare_and_swap_double]: Fix typo
("does not") in #error message.

7 years agoFix assertions style in test_atomic_include
Ivan Maidanski [Wed, 24 Aug 2016 08:07:38 +0000 (11:07 +0300)]
Fix assertions style in test_atomic_include

Use TA_assert consistently (not assert).

* tests/test_atomic_include.template (test_atomicXX): Replace assert()
calls with TA_assert().

7 years agoRefine README about library downloading
Ivan Maidanski [Thu, 18 Aug 2016 09:03:15 +0000 (12:03 +0300)]
Refine README about library downloading

* README.md (Download): New section; add link to Download page (located
on GitHub); add information about the code repository.

7 years agoFix (delete) comment for AO_and_full (x86)
Ivan Maidanski [Wed, 17 Aug 2016 16:51:30 +0000 (19:51 +0300)]
Fix (delete) comment for AO_and_full (x86)

* src/atomic_ops/sysdeps/gcc/x86.h [!AO_PREFER_GENERALIZED]
(AO_and_full): Remove incorrect comment (the code should work even for
i386).
* src/atomic_ops/sysdeps/sunc/x86.h [!AO_PREFER_GENERALIZED]
(AO_and_full): Likewise.

7 years ago[7.4.4] libatomic_ops-7_4_4
Ivan Maidanski [Tue, 24 May 2016 17:59:44 +0000 (20:59 +0300)]
[7.4.4]

Bump libatomic_ops version to 7.4.4

* ChangeLog: Add release date.
* README.md: Bump version.
* configure.ac (AC_INIT): Likewise.
* src/atomic_ops/ao_version.h (AO_VERSION_MICRO): Likewise.