History log of /freebsd-current/contrib/libcxxrt/atomic.h
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
# bfffb66e 20-Mar-2022 Dimitry Andric <dim@FreeBSD.org>

Reapply libcxxrt atomics cleanup commit, preparing for upstream fix

This reapplies upstream commit fd484be, as there is a follow-up fix for
the possible hangs in __cxa_guard_acquire() on i386:

Atomics cleanup (#11)

We need to test exception specifiers but they're gone in C++17 so
compile the tests with an older version of the standard.

Rewrite the guard logic to be more idiomatic C++ and more
comprehensible and make sure that atomics are used where necessary.

Obtained from: https://github.com/libcxxrt/libcxxrt/commit/fd484be
Fixes: 56aaed388b0a
MFC after: 2 weeks


# 25482379 19-Mar-2022 Dimitry Andric <dim@FreeBSD.org>

Revert upstream libcxxrt commit which can cause hangs on i386

This reverts upstream commit fd484be:

Atomics cleanup (#11)

We need to test exception specifiers but they're gone in C++17 so
compile the tests with an older version of the standard.

Rewrite the guard logic to be more idiomatic C++ and more
comprehensible and make sure that atomics are used where necessary.

It looks like there are some corner cases in the i386 and/or 32-bit
atomics handling, which can make __cxa_guard_acquire() hang in certain
situations.

Reported by: antoine
Obtained from: https://github.com/libcxxrt/libcxxrt/commit/fd484be
Fixes: 56aaed388b0a
MFC after: 2 weeks


# 56aaed38 09-Mar-2022 Dimitry Andric <dim@FreeBSD.org>

Merge libcxxrt master fd484be8d1e94a1fcf6bc5c67e5c07b65ada19b6

Interesting fixes:
47661d0 Match libc++abi/libsupc++ when demangling array types
e44a05c Fix unitialized variable in __cxa_demangle_gnu3 after #6 (#8)
5088b05 Remove some code duplication.
fd484be Atomics cleanup (#11)

MFC after: 2 weeks


# f2dc4184 30-Dec-2014 Dimitry Andric <dim@FreeBSD.org>

Import libcxxrt master 00bc29eb6513624824a6d7db2ebc768a4216a604.

Interesting fixes:
76584a0 Reorganize code to use only 32bit atomic ops for 32bit platforms
30d2ae5 Implement __cxa_throw_bad_array_new_length

Reviewed by: bapt
MFC after: 1 month
Differential Revision: https://reviews.freebsd.org/D1390


# 4bab9fd9 10-Jul-2013 David Chisnall <theraven@FreeBSD.org>

Import new libcxxrt / libc++. This brings some bug fixes, including a potential race condition for static initialisers.


# d9e22925 27-Apr-2013 Dimitry Andric <dim@FreeBSD.org>

Merge libcxxrt c812a07cd2f95c1403baf0bbe0366e7618d1d6d3:

* Don't call the _fast version of the TLS accessor in terminate() or
unexpected().
1) TLS may not have been set up yet.
2) When we're in one of these functions, Really Bad Stuff has
happened and potentially saving a few cycles really isn't
important.
* Merge in fixes from FreeBSD trunk to make atomics work with recent
clang.

MFC after: 1 week


# f795bc7c 12-Jan-2013 David Chisnall <theraven@FreeBSD.org>

Fix libcxxrt / libc++ build with the clang in head.

Pointy hat to: theraven

# f7cb1657 11-Jan-2013 David Chisnall <theraven@FreeBSD.org>

Merge new version of libcxxrt. This brings in three fixes:

- Don't treat pointers to members as pointers in catch blocks (they're usually
fat pointers).

- Correctly catch foreign exceptions in catchalls.

- Ensure that a happens-before relationship is established when setting
terminate handlers in one thread and calling them in another.


# f795bc7c 12-Jan-2013 David Chisnall <theraven@FreeBSD.org>

Fix libcxxrt / libc++ build with the clang in head.

Pointy hat to: theraven