git: d0dcee46d971 - releng/14.2 - libcxxrt: Update to upstream 6f2fdfebcd62
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 05 Nov 2024 04:20:34 UTC
The branch releng/14.2 has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=d0dcee46d971c79257be42b0e50cd9183c79fcbb commit d0dcee46d971c79257be42b0e50cd9183c79fcbb Author: Ed Maste <emaste@FreeBSD.org> AuthorDate: 2024-10-31 15:51:29 +0000 Commit: Ed Maste <emaste@FreeBSD.org> CommitDate: 2024-11-05 04:19:58 +0000 libcxxrt: Update to upstream 6f2fdfebcd62 Interesting fixes: 3cbfe5a556fe Avoid noreturn warning on terminate() (cherry picked from commit 2dccd21949f26b1bdf5e7cf258b760fffd3bf259) (cherry picked from commit d9901a23bd2f4e6aeef7f628f946134c4698fc38) Approved by: re (cperciva) --- contrib/libcxxrt/exception.cc | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/contrib/libcxxrt/exception.cc b/contrib/libcxxrt/exception.cc index c87fe5ac4468..5034809a1380 100644 --- a/contrib/libcxxrt/exception.cc +++ b/contrib/libcxxrt/exception.cc @@ -237,7 +237,7 @@ static_assert(offsetof(__cxa_dependent_exception, unwindHeader) == namespace std { - void unexpected(); + [[noreturn]] void unexpected(); class exception { public: @@ -1530,28 +1530,34 @@ namespace std if (0 != info && 0 != info->terminateHandler) { info->terminateHandler(); - // Should not be reached - a terminate handler is not expected to - // return. - abort(); } - terminateHandler.load()(); + else + { + terminateHandler.load()(); + } + // Should not be reached - a terminate handler is not expected + // to return. + abort(); } /** * Called when an unexpected exception is encountered (i.e. an exception * violates an exception specification). This calls abort() unless a * custom handler has been set.. */ - void unexpected() + [[noreturn]] void unexpected() { static __cxa_thread_info *info = thread_info(); if (0 != info && 0 != info->unexpectedHandler) { info->unexpectedHandler(); - // Should not be reached - a terminate handler is not expected to - // return. - abort(); } - unexpectedHandler.load()(); + else + { + unexpectedHandler.load()(); + } + // Should not be reached - a unexpected handler is not expected + // to return. + abort(); } /** * Returns whether there are any exceptions currently being thrown that