[libc++] Always define a key function for std::bad_function_call in the dylib
However, whether applications rely on the std::bad_function_call vtable being in the dylib is still controlled by the ABI macro, since changing that would be an ABI break. Also separate preprocessor definitions for whether to use a key function and whether to use a `bad_function_call`-specific `what` message (`what` message is mandated by [LWG2233](http://wg21.link/LWG2233)). Differential Revision: https://reviews.llvm.org/D92397
This commit is contained in:
@@ -6,7 +6,18 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// UNSUPPORTED: c++03
|
||||
// Address Sanitizer doesn't instrument weak symbols on Linux. When a key
|
||||
// function is defined for bad_function_call's vtable, its typeinfo and vtable
|
||||
// will be defined as strong symbols in the library and weak symbols in other
|
||||
// translation units. Only the strong symbol will be instrumented, increasing
|
||||
// its size (due to the redzone) and leading to a serious ODR violation
|
||||
// resulting in a crash.
|
||||
// Some relevant bugs:
|
||||
// https://github.com/google/sanitizers/issues/1017
|
||||
// https://github.com/google/sanitizers/issues/619
|
||||
// https://github.com/google/sanitizers/issues/398
|
||||
// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68016
|
||||
// UNSUPPORTED: c++03, asan
|
||||
// XFAIL: LIBCXX-AIX-FIXME
|
||||
|
||||
// <functional>
|
||||
|
||||
Reference in New Issue
Block a user