# STL allocators (T *allocator<T *>::allocate(size_type, const void*)).
# The type signature mandates a cast from uninitialized void* to T*.
# size_type can either be unsigned int (j) or unsigned long (m).
fun:*8allocateEjPKv
fun:*8allocateEmPKv

# std::get_temporary_buffer, likewise (libstdc++, libc++).
fun:_ZSt20get_temporary_buffer*
fun:_ZNSt3__120get_temporary_buffer*

# STL address-of magic (libstdc++, libc++).
fun:*__addressof*
fun:_ZNSt3__19addressof*

# Windows C++ stdlib headers that contain bad unrelated casts.
src:*xmemory0
src:*xstddef

# std::_Sp_counted_ptr_inplace::_Sp_counted_ptr_inplace() (libstdc++).
# This ctor is used by std::make_shared and needs to cast to uninitialized T*
# in order to call std::allocator_traits<T>::construct.
fun:_ZNSt23_Sp_counted_ptr_inplace*

# std::get_temporary_buffer, likewise (libstdc++, libc++).
fun:_ZSt20get_temporary_buffer*
fun:_ZNSt3__120get_temporary_buffer*

# STL address-of magic (libstdc++, libc++).
fun:*__addressof*
fun:_ZNSt3__19addressof*

# Windows C++ stdlib headers that contain bad unrelated casts.
src:*xmemory0
src:*xstddef

# std::_Sp_counted_ptr_inplace::_Sp_counted_ptr_inplace() (libstdc++).
# This ctor is used by std::make_shared and needs to cast to uninitialized T*
# in order to call std::allocator_traits<T>::construct.
fun:_ZNSt23_Sp_counted_ptr_inplace*

Move STL allocator blacklist to clang
CFI: Move STL allocator blacklist to clang

Summary:
The regular expression to match STL allocators can't easily account for
C++ mangling compression and fails to match some valid instances of STL
allocators. Perform this logic in clang instead.

Motivated by crbug.com/751385.

Reviewers: pcc, kcc, llvm-commits

Reviewed By: pcc

Differential Revision: https://reviews.llvm.org/D36291

git-svn-id: c199f293c43da69278bea8e88f92242bf3aa95f7@310109 91177308-0d34-0410-b5e6-96231b3b80d8
