
# DRD suppressions for Darwin 9.x / Mac OS X 10.5 Leopard

#
# Suppression patterns for dyld, the dynamic loader.
#

{
   drd-darwin-dyld-register-func-for-add-image
   drd:MutexErr
   fun:pthread_mutex_unlock
   fun:_dyld_register_func_for_add_image
   fun:__keymgr_initializer
   fun:libSystem_initializer
}
{
   drd-darwin-dyld-register-func-for-remove-image
   drd:MutexErr
   fun:pthread_mutex_unlock
   fun:_dyld_register_func_for_remove_image
   fun:__keymgr_initializer
   fun:libSystem_initializer
}
{
   drd-darwin-dyld-GlobalLockInitialize
   drd:MutexErr
   fun:pthread_mutex_init
   fun:_Z24dyldGlobalLockInitializev
   fun:_dyld_initializer
}
{
   drd-darwin-dyld-bindLazySymbol
   drd:ConflictingAccess
   ...
   fun:_ZN4dyld14bindLazySymbolEPK11mach_headerPm
   fun:stub_binding_helper_interface2
}
{
   drd-darwin-dyld-addImage
   drd:ConflictingAccess
   fun:_ZN4dyld8addImageEP11ImageLoader
}
{
   dyld-ImageLoader::link
   drd:ConflictingAccess
   ...
   fun:_ZN4dyld18notifyBatchPartialE17dyld_image_statesbPFPKcS0_jPK15dyld_image_infoE
   fun:_ZN11ImageLoader4linkERKNS_11LinkContextEbbRKNS_10RPathChainE
   fun:_ZN4dyld4linkEP11ImageLoaderbRKNS0_10RPathChainE
}
{
   drd-darwin-dyld-ImageLoaderMachO::resolveUndefined
   drd:ConflictingAccess
   ...
   fun:_ZN16ImageLoaderMachO16resolveUndefinedERKN11ImageLoader11LinkContextEPK11macho_nlistbPPKS0_
}
{
   drd-darwin-dyld-ImageLoaderMachO::findExportedSymbol
   drd:ConflictingAccess
   fun:_ZNK16ImageLoaderMachO18findExportedSymbolEPKcPKvbPPK11ImageLoader
   fun:_ZNK11ImageLoader41findExportedSymbolInDependentImagesExceptEPKcPPKS_RS4_S4_S4_
   fun:_ZNK11ImageLoader42findExportedSymbolInImageOrDependentImagesEPKcRKNS_11LinkContextEPPKS_
   fun:dlsym
}


#
# Suppression patterns for libc, Darwin's C library.
#

{
   drd-darwin-libc-cerror
   drd:ConflictingAccess
   ...
   fun:cerror
}
{
   drd-darwin-libc-rand
   drd:ConflictingAccess
   fun:do_rand
}
{
   drd-darwin-libc-vfprintf-1
   drd:ConflictingAccess
   fun:vfprintf_l
}
{
   drd-darwin-libc-vfprintf-2
   drd:ConflictingAccess
   fun:__vfprintf
}
{
   drd-darwin-libc-localeconv
   drd:ConflictingAccess
   fun:localeconv_l
}
{
   drd-darwin-libc-fwrite
   drd:ConflictingAccess
   ...
   fun:fwrite$UNIX2003
}
{
   drd-darwin-cxa-guard-acquire
   drd:ConflictingAccess
   obj:*
   fun:__cxa_current_exception_type
   fun:__cxa_guard_acquire
}
{
   drd-darwin-cxa-guard-release
   drd:ConflictingAccess
   fun:__cxa_guard_release
}
{
   drd-darwin-cxa-finalize
   drd:MutexErr
   fun:pthread_mutex_destroy
   fun:__tcf_115
   fun:__cxa_finalize
   fun:exit
}
{
   drd-darwin-atexit-register
   drd:ConflictingAccess
   fun:atexit_register
}
{
   drd-darwin-opendir
   drd:ConflictingAccess
   fun:telldir$UNIX2003
   fun:__opendir2$UNIX2003
   fun:opendir$UNIX2003
}
{
   drd-darwin-readdir
   drd:ConflictingAccess
   fun:readdir
}
{
   drd-darwin-closedir
   drd:ConflictingAccess
   fun:closedir$UNIX2003
}
{
   drd:darwin-ptrace
   drd:ConflictingAccess
   fun:ptrace
}


#
# Suppression patterns for libpthread, Darwin's POSIX threads implementation.
#

{
   drd-darwin-pthread-create-1
   drd:ConflictingAccess
   obj:*
   fun:thread_start
}
{
   drd-darwin-pthread-create-2
   drd:ConflictingAccess
   ...
   fun:pthread_create*
}
{
   drd-darwin-pthread-join-1
   drd:ConflictingAccess
   ...
   fun:pthread_join$UNIX2003
}
{
   drd-darwin-pthread-exit
   drd:ConflictingAccess
   ...
   fun:_pthread_exit
}
{
   drd-darwin-pthread-find-thread
   drd:ConflictingAccess
   fun:_pthread_find_thread
}
{
   drd-darwin-pthread-spin-unlock
   drd:ConflictingAccess
   fun:spin_unlock
}
{
   drd-darwin-pthread-testcancel
   drd:ConflictingAccess
   fun:_pthread_testcancel
}
{
   drd-darwin-pthread-detach
   drd:ConflictingAccess
   ...
   fun:pthread_detach
}
{
   drd-darwin-pthread-detach
   drd:CondRaceErr
   ...
   fun:pthread_detach
}
{
   drd-darwin-pthread-kill
   drd:ConflictingAccess
   ...
   fun:pthread_kill
}
{
   drd-darwin-pthread-free-pthread-onstack
   drd:ConflictingAccess
   fun:mig_dealloc_reply_port
   fun:_pthread_free_pthread_onstack
}
{
   drd-darwin-pthread-mach-thread-np
   drd:ConflictingAccess
   ...
   fun:pthread_mach_thread_np
}
{
   drd-darwin-pthread-key-create
   drd:ConflictingAccess
   fun:pthread_key_create
}


#
# Suppression patterns for libobjc.
#

# It looks like the implementation of objc_msgSend uses another means than the
# POSIX threads library for locking. More information about messaging and
# objc_msgSend can be found here: 
# http://devworld.apple.com/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtHowMessagingWorks.html
#

{
   drd-darwin-objc-msgSend
   drd:ConflictingAccess
   ...
   fun:objc_msgSend
}
{
   drd-darwin-objc-msgSend
   drd:ConflictingAccess
   ...
   fun:objc_sync_enter
}


#
# Suppression patterns for CoreFoundation.framework.
#

# Suppressions for NSObject methods. For more information about the NSObject
# class, see also
# http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/Reference/Reference.html
{
   drd-darwin-NSObject-release
   drd:ConflictingAccess
   ...
   fun:-[NSObject release]
}
{
   drd-darwin-NSObject-autorelease-1
   drd:ConflictingAccess
   ...
   fun:-[NSObject(NSObject) autorelease]
}
{
   drd-darwin-NSObject-autorelease-2
   drd:ConflictingAccess
   fun:__NSAutoreleaseObject
}
{
   drd-darwin-NSObject-NSDeallocateObject
   drd:ConflictingAccess
   fun:_internal_object_dispose
   fun:NSDeallocateObject
}
{
   drd-darwin-NSObject-retain
   drd:ConflictingAccess
   ...
   fun:-[NSObject retain]
}
{
   drd-darwin-NSObject-retainCount
   drd:ConflictingAccess
   ...
   fun:-[NSObject retainCount]
}
{
   drd-darwin-NSObject-NSDelayedPerforming-1
   drd:ConflictingAccess
   ...
   fun:+[NSObject(NSDelayedPerforming) cancelPreviousPerformRequestsWithTarget:selector:object:]
}
{
   drd-darwin-NSObject-NSDelayedPerforming-2
   drd:ConflictingAccess
   ...
   fun:-[NSObject(NSDelayedPerforming) performSelector:withObject:afterDelay:]
}
{
   drd-darwin-NSObject-NSDelayedPerforming-3
   drd:ConflictingAccess
   ...
   fun:-[NSObject(NSDelayedPerforming) performSelector:withObject:afterDelay:inModes:]
}
{
   drd-darwin-NSObject-NSDelayedPerforming-4
   drd:ConflictingAccess
   ...
   fun:-[NSObject(NSThreadPerformAdditions) performSelector:onThread:withObject:waitUntilDone:modes:]
}
{
   drd-darwin-NSObject-NSDelayedPerforming-5
   drd:ConflictingAccess
   ...
   fun:-[NSObject(NSThreadPerformAdditions) performSelectorOnMainThread:withObject:waitUntilDone:]
}

# Suppressions for methods of the NSThread class.
{
   drd-NSThread-nq
   drd:ConflictingAccess
   ...
   fun:-[NSThread _nq:]
}

# Suppressions for methods of the NSLock class. See also
# http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSLock_Class/Reference/Reference.html
{
   drd-darwin-NSLock-lock
   drd:ConflictingAccess
   fun:-[NSLock lock]
}
{
   drd-darwin-NSLock-unlock
   drd:ConflictingAccess
   fun:-[NSLock unlock]
}
# Suppressions for NSCondition methods.
{
   drd-darwin-NSConditionLock-lock
   drd:ConflictingAccess
   fun:-[NSCondition lock]
}
# Suppressions for NSConditionLock methods.
{
   drd-darwin-NSConditionLock-lockWhenCondition:beforeDate:
   drd:ConflictingAccess
   fun:-[NSConditionLock lockWhenCondition:beforeDate:]
}


# NSExtraRefCount returns the specified object's reference count, and
# NSDecrementExtraRefCountWasZero decrements the specified object's reference
# count.
# See also http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Functions/Reference/reference.html
{
   drd-darwin-NSExtraRefCount
   drd:ConflictingAccess
   ...
   fun:NSExtraRefCount
}
{
   drd-darwin-NSDecrementExtraRefCountWasZero
   drd:ConflictingAccess
   ...
   fun:NSDecrementExtraRefCountWasZero
}
# For more information about key-value observing, see also the NSKeyValueObserving Protocol Reference:
# http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Protocols/NSKeyValueObserving_Protocol/Reference/Reference.html
{
   drd-darwin-NSKVONotify
   drd:ConflictingAccess
   ...
   fun:NSKVONotify
}
{
   drd-darwin-NSKVONotifyingEnableForInfoAndKey
   drd:ConflictingAccess
   ...
   fun:_NSKVONotifyingEnableForInfoAndKey
}
# From the NSRunLoop class reference:
# Warning: The NSRunLoop class is generally not considered to be thread-safe
# and its methods should only be called within the context of the current
# thread. You should never try to call the methods of an NSRunLoop object
# running in a different thread, as doing so might cause unexpected results.
# See also the NSRunLoop Class Reference:
# http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSRunLoop_Class/Reference/Reference.html
# {
#    drd-darwin-CFRunLoop*
#    drd:ConflictingAccess
#    ...
#    fun:CFRunLoop*
# }
# See also the CFBag reference:
# http://developer.apple.com/documentation/CoreFoundation/Reference/CFBagRef/Reference/reference.html
# {
#    drd-darwin-CFBag*
#    drd:ConflictingAccess
#    fun:CFBag*
# }

# Suppression patterns for the memory allocation functions in WTF.
{
   drd-WTF::fastCalloc
   drd:ConflictingAccess
   ...
   fun:_ZN3WTF10fastCallocEmm
}
{
   drd-WTF::fastMalloc
   drd:ConflictingAccess
   ...
   fun:_ZN3WTF10fastMallocEm
}
{
   drd-WTF::fastFree
   drd:ConflictingAccess
   ...
   fun:_ZN3WTF8fastFreeEPv
}

# Suppression patterns for the string manipulation functions in WebCore.
{
   drd-WebCore::StringImpl::init
   drd:ConflictingAccess
   ...
   fun:_ZN7WebCore10StringImpl4initEPKcj
}
{
   drd-WebCore::StringImpl::append
   drd:ConflictingAccess
   ...
   fun:_ZN7WebCore10StringImpl6appendEPKtj
}
{
   drd-WebCore::CString::init
   drd:ConflictingAccess
   ...
   fun:_ZN7WebCore7CString4initEPKcj
}

# Suppression patterns for the text encoding functions in WebCore.
{
   drd-WebCore::WebCore::TextCodec::~TextCodec()
   drd:ConflictingAccess
   fun:_ZN7WebCore9TextCodecD2Ev
}
{
   drd-WebCore::TextCodecICU::TextCodecICU
   drd:ConflictingAccess
   fun:_ZN7WebCore12TextCodecICUC2ERKNS_12TextEncodingE
}
{
   drd-WebCore::TextCodecICU::~TextCodecICU
   drd:ConflictingAccess
   fun:_ZN7WebCore12TextCodecICUD0Ev
}
