Fix CFI issues in <future>
authorEvgenii Stepanov <eugenis@google.com>
Thu, 6 Aug 2020 18:32:33 +0000 (11:32 -0700)
committerEvgenii Stepanov <eugenis@google.com>
Thu, 6 Aug 2020 19:05:22 +0000 (12:05 -0700)
commit189ba3db8653eaefc191599dd60d9aa6b0127c44
tree42bca4a0bba6783fc2e6082ca1738d103feb97a7
parent87ce06e3155775f63ce8b6693282c130e7dff21d
Fix CFI issues in <future>

This change fixes errors reported by Control Flow Integrity (CFI) checking when using `std::packaged_task`.  The errors mostly stem from casting the underlying storage (`__buf_`) to `__base*`, even if it is uninitialized.  The solution is to wrap `__base*` access to `__buf_` behind a getter marked with _LIBCPP_NO_CFI.

Differential Revision: https://reviews.llvm.org/D82627
libcxx/include/future