# 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
}