[libc++] Introduce a compile-time mechanism to override __libcpp_verbose_abort
authorLouis Dionne <ldionne.2@gmail.com>
Mon, 9 Jan 2023 21:59:59 +0000 (16:59 -0500)
committerLouis Dionne <ldionne.2@gmail.com>
Wed, 25 Jan 2023 02:39:14 +0000 (21:39 -0500)
commit17c05a44d9f0ab08342c7310bd0e22114e932882
tree8752291a382a72b05c82bfe7b9b049944f1b3e8f
parent19f100e89ad5b62e1fca76bd9c3aceca173cb45e
[libc++] Introduce a compile-time mechanism to override __libcpp_verbose_abort

This changes the mechanism for verbose termination (again!) to make it
support compile-time customization in addition to link-time customization,
which is important for users who need fine-grained control over what code
gets generated around sites that call the verbose termination handler.

This concern had been raised to me both privately by prospecting users
and in https://llvm.org/D140944, so I think it is clearly worth fixing.

We still support _LIBCPP_AVAILABILITY_CUSTOM_VERBOSE_ABORT_PROVIDED for
a limited time since the same functionality can be achieved by overriding
the _LIBCPP_VERBOSE_ABORT macro.

Differential Revision: https://reviews.llvm.org/D141326
libcxx/docs/ReleaseNotes.rst
libcxx/docs/UsingLibcxx.rst
libcxx/include/__assert
libcxx/include/__availability
libcxx/include/__verbose_abort
libcxx/test/libcxx/assertions/customize_verbose_abort.compile-time.pass.cpp [new file with mode: 0644]
libcxx/test/libcxx/assertions/customize_verbose_abort.link-time.pass.cpp [moved from libcxx/test/libcxx/assertions/customize_verbose_abort.pass.cpp with 91% similarity]
libcxx/test/libcxx/assertions/deprecated-link-time-custom-handler.pass.cpp [moved from libcxx/test/libcxx/assertions/customize_verbose_abort.backdeployment.pass.cpp with 66% similarity]
libcxx/test/libcxx/assertions/headers_declare_verbose_abort.sh.cpp