# 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.
fun:_ZSt20get_temporary_buffer*
fun:_ZNSt3__120get_temporary_buffer*

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

# WTF allocators.
fun:*allocate*Backing*

# WTF::ThreadSpecific
fun:*ThreadSpecific*

# Mesa contains several bad casts.
src:*third_party/mesa*

# Deliberate bad cast to derived class to hide functions.
type:*BlockRefType*
type:*SkAutoTUnref*
# https://crbug.com/517959
type:*NoAddRefRelease*

# All std:: types
# This should be possible to remove, if/when we build against
# a statically linked libc++.
type:std::*

# All mojo::test:: types.
# They are loaded from libmojo_public_test_support.so
# https://crbug.com/515347
type:mojo::test::*

# invalid downcasts for IPC messages
# https://crbug.com/520760
fun:*MessageScannerImpl*MessageScannerImpl*

#############################################################################
# Base class's constructor accesses a derived class.

fun:*DoublyLinkedListNode*

# RenderFrameObserverTracker<T>::RenderFrameObserverTracker()
fun:*content*RenderFrameObserverTracker*RenderFrame*

# RenderViewObserverTracker<T>::RenderViewObserverTracker()
fun:*content*RenderViewObserverTracker*RenderView*

fun:*RefCountedGarbageCollected*makeKeepAlive*
fun:*ThreadSafeRefCountedGarbageCollected*makeKeepAlive*

#############################################################################
# Base class's destructor accesses a derived class.

fun:*DatabaseContext*contextDestroyed*

# FIXME: Cannot handle template function LifecycleObserver<>::setContext,
# so exclude source file for now. 
src:*LifecycleObserver.h*
