git: 69a40d924128 - stable/13 - libcxxrt: Insert padding in __cxa_dependent_exception
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 27 Apr 2022 16:05:05 UTC
The branch stable/13 has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=69a40d924128b88ff2c82a35ab1b4509e1bdca56 commit 69a40d924128b88ff2c82a35ab1b4509e1bdca56 Author: Ed Maste <emaste@FreeBSD.org> AuthorDate: 2022-04-27 13:15:09 +0000 Commit: Ed Maste <emaste@FreeBSD.org> CommitDate: 2022-04-27 15:29:15 +0000 libcxxrt: Insert padding in __cxa_dependent_exception Padding was added to __cxa_exception in 45ca8b19 and __cxa_dependent_exception needs the same layout. Add some static_asserts to detect this in the future. Merge of libcxxrt commit b00c6c564357 (cherry picked from commit c40e4349889b32500e51e60f9529dbcc080f468b) Approved by: re (gjb, accelerated MFC) --- contrib/libcxxrt/exception.cc | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/contrib/libcxxrt/exception.cc b/contrib/libcxxrt/exception.cc index 2f1dc4030ba4..f28082ab7e80 100644 --- a/contrib/libcxxrt/exception.cc +++ b/contrib/libcxxrt/exception.cc @@ -197,6 +197,7 @@ struct __cxa_thread_info struct __cxa_dependent_exception { #if __LP64__ + void *reserve; void *primaryException; #endif std::type_info *exceptionType; @@ -219,6 +220,17 @@ struct __cxa_dependent_exception #endif _Unwind_Exception unwindHeader; }; +static_assert(sizeof(__cxa_exception) == sizeof(__cxa_dependent_exception), + "__cxa_exception and __cxa_dependent_exception should have the same size"); +static_assert(offsetof(__cxa_exception, referenceCount) == + offsetof(__cxa_dependent_exception, primaryException), + "referenceCount and primaryException should have the same offset"); +static_assert(offsetof(__cxa_exception, unwindHeader) == + offsetof(__cxa_dependent_exception, unwindHeader), + "unwindHeader fields should have the same offset"); +static_assert(offsetof(__cxa_dependent_exception, unwindHeader) == + offsetof(__cxa_dependent_exception, adjustedPtr) + 8, + "there should be no padding before unwindHeader"); namespace std