
# Suppressions for Darwin 15.x / Mac OS X 10.11 El Capitan

############################################
## Leaks.  For other stuff see below.

{
   OSX1011:1-Leak
   Memcheck:Leak
   match-leak-kinds: possible
   fun:malloc_zone_?alloc
   ...
   fun:_read_images
}

{
   OSX1011:2-Leak
   Memcheck:Leak
   match-leak-kinds: definite
   fun:malloc_zone_?alloc
   ...
   fun:_read_images
}

{
   OSX1011:3-Leak
   Memcheck:Leak
   match-leak-kinds: definite
   fun:malloc_zone_?alloc
   fun:recursive_mutex_init
   ...
   fun:_os_object_init
   fun:libdispatch_init
   fun:libSystem_initializer
   ...
}

{
   OSX1011:4-Leak
   Memcheck:Leak
   fun:malloc_zone_?alloc
   ...
   fun:dyld_register_image_state_change_handler
   ...
}

{
   OSX1011:5-Leak
   Memcheck:Leak
   match-leak-kinds: reachable
   fun:?alloc
   ...
   fun:dyld_register_image_state_change_handler
   ...
}

{
   OSX1011:6-Leak
   Memcheck:Leak
   match-leak-kinds: reachable
   fun:malloc_zone_?alloc
   ...
   fun:map_images_nolock
   fun:map_2_images
   ...
}

{
   OSX1011:7-Leak
   Memcheck:Leak
   match-leak-kinds: possible
   fun:malloc_zone_?alloc
   ...
   fun:map_images_nolock
   fun:map_2_images
   ...
}

{
   OSX1011:8-Leak
   Memcheck:Leak
   match-leak-kinds: definite
   fun:?alloc
   ...
   fun:libSystem_initializer
   ...
}

{
   OSX1011:9-Leak
   Memcheck:Leak
   match-leak-kinds: reachable
   fun:malloc_zone_?alloc
   ...
   fun:libSystem_initializer
   ...
}

{
   OSX1011:10-Leak
   Memcheck:Leak
   match-leak-kinds: reachable
   fun:?alloc
   ...
   fun:libSystem_initializer
   ...
}

#{
#   OSX1011:11-Leak
#   Memcheck:Leak
#   match-leak-kinds: definite
#   fun:malloc
#   fun:currentlocale
#}
#
#{
#   OSX1011:12-Leak
#   Memcheck:Leak
#   match-leak-kinds: possible
#   fun:malloc
#   fun:tzsetwall_basic
#   fun:_st_tzset_basic
#}

{
   OSX1011:13-Leak
   Memcheck:Leak
   match-leak-kinds: reachable
   fun:malloc_zone_memalign
   ...
   fun:_ZN4dyld24initializeMainExecutableEv
   ...
}

{
   OSX1011:14-Leak
   Memcheck:Leak
   match-leak-kinds: reachable
   fun:?alloc
   ...
   fun:libSystem_atfork_child
   ...
}

{
   OSX1011:15-Leak
   Memcheck:Leak
   match-leak-kinds: reachable
   fun:malloc
   fun:__smakebuf
   ...
   fun:printf
   ...
}

{
   OSX1011:16-Leak
   Memcheck:Leak
   match-leak-kinds: possible
   fun:?alloc
   ...
   fun:_read_images
}

{
   OSX1011:17-Leak
   Memcheck:Leak
   match-leak-kinds: reachable
   fun:?alloc
   ...
   fun:_read_images
}

{
   OSX1011:18-Leak
   Memcheck:Leak
   match-leak-kinds: reachable
   fun:malloc_zone_?alloc
   ...
   fun:_read_images
}

{
   OSX1011:19-Leak
   Memcheck:Leak
   match-leak-kinds: possible
   fun:malloc_zone_?alloc
   ...
   fun:*NX*Map*
   fun:*NX*Map*
}

{
   OSX1011:20-Leak
   Memcheck:Leak
   match-leak-kinds: indirect
   fun:?alloc
   ...
   fun:libSystem_initializer
   ...
}

{
   OSX1011:21-Leak
   Memcheck:Leak
   match-leak-kinds: definite
   fun:malloc_zone_memalign
   ...
   fun:_ZN4dyld24initializeMainExecutableEv
   ...
}


############################################
## Non-leak errors

##{
##   OSX1011:CoreFoundation-1
##   Memcheck:Cond
##   obj:*CoreFoundation.framework*CoreFoundation*
##   obj:*CoreFoundation.framework*CoreFoundation*
##   obj:*CoreFoundation.framework*CoreFoundation*
##}

{
   OSX1011:CoreFoundation-2
   Memcheck:Cond
   obj:*CoreFoundation.framework*CoreFoundation*
   obj:*libdispatch.dylib*
   obj:*libdispatch.dylib*
}

{
   OSX1011:CoreFoundation-3
   Memcheck:Cond
   obj:*CoreFoundation.framework*CoreFoundation*
   obj:*CoreFoundation.framework*CoreFoundation*
   obj:*Foundation.framework*Foundation*
}

{
   OSX1011:CoreFoundation-4
   Memcheck:Cond
   obj:*CoreFoundation.framework*CoreFoundation*
   obj:*CoreFoundation.framework*CoreFoundation*
   obj:*SystemConfiguration.framework*SystemConfiguration*
}

{
   OSX1011:CoreFoundation-5
   Memcheck:Cond
   obj:*CoreFoundation.framework*CoreFoundation*
   obj:*CoreFoundation.framework*CoreFoundation*
   obj:*HIServices.framework*HIServices*
}

{
   OSX1011:CoreFoundation-6
   Memcheck:Cond
   obj:*CoreFoundation.framework*CoreFoundation*
   obj:*SystemConfiguration.framework*SystemConfiguration*
   obj:*SystemConfiguration.framework*SystemConfiguration*
}

{
   OSX1011:CoreFoundation-7
   Memcheck:Cond
   obj:*CoreFoundation.framework*CoreFoundation*
   obj:*SystemConfiguration.framework*SystemConfiguration*
   obj:*CoreFoundation.framework*CoreFoundation*
}

{
   OSX1011:CoreFoundation-8
   Memcheck:Cond
   obj:*CoreFoundation.framework*CoreFoundation*
   obj:*IOKit.framework*IOKit*
}

{
   OSX1011:CoreFoundation-9
   Memcheck:Cond
   obj:*CoreFoundation.framework*CoreFoundation*
   obj:*Foundation.framework*Foundation*
   obj:*AppKit.framework*AppKit*
}

{
   OSX1011:CoreFoundation-10
   Memcheck:Cond
   obj:*CoreFoundation.framework*CoreFoundation*
   obj:*HIToolbox.framework*HIToolbox*
   obj:*HIToolbox.framework*HIToolbox*
}

{
   OSX1011:CoreFoundation-11
   Memcheck:Cond
   obj:*CoreFoundation.framework*CoreFoundation*
   obj:*AE.framework*AE*
   obj:*AE.framework*AE*
}

{
   OSX1011:CoreFoundation-12
   Memcheck:Cond
   obj:*CoreFoundation.framework*CoreFoundation*
   obj:*CoreFoundation.framework*CoreFoundation*
   obj:*HIToolbox.framework*HIToolbox*
}

{
   OSX1011:CoreFoundation-13
   Memcheck:Cond
   obj:*CoreFoundation.framework*CoreFoundation*
   obj:*CoreFoundation.framework*CoreFoundation*
   obj:*AE.framework*AE*
}

{
   OSX1011:AppKit-1
   Memcheck:Cond
   obj:*AppKit.framework*AppKit*
   obj:*AppKit.framework*AppKit*
   obj:*AppKit.framework*AppKit*
}

{
   OSX1011:AppKit-2
   Memcheck:Cond
   obj:*AppKit.framework*AppKit*
   obj:*AppKit.framework*AppKit*
   obj:*libdispatch.dylib*
}

#{
#   OSX1011:AppKit-3
#   Memcheck:Cond
#   obj:*AppKit.framework*AppKit*
#   obj:*libdispatch.dylib*
#   obj:*libdispatch.dylib*
#}

##{
##   OSX1011:AppKit-4
##   Memcheck:Cond
##   obj:*AppKit.framework*AppKit*
##   obj:*AppKit.framework*AppKit*
##   obj:*CoreFoundation.framework*CoreFoundation*
##}

{
   OSX1011:AppKit-5
   Memcheck:Cond
   obj:*AppKit.framework*AppKit*
   obj:*AppKit.framework*AppKit*
   obj:*Foundation.framework*Foundation*
}

{
   OSX1011:AppKit-6
   Memcheck:Cond
   obj:*AppKit.framework*AppKit*
   obj:*Foundation.framework*Foundation*
   obj:*AppKit.framework*AppKit*
}

{
   OSX1011:AppKit-7
   Memcheck:Cond
   obj:*AppKit.framework*AppKit*
   obj:*libdispatch.dylib*
   obj:*libdispatch.dylib*
}

{
   OSX1011:AppKit-8
   Memcheck:Cond
   obj:*AppKit.framework*AppKit*
   obj:*Foundation.framework*Foundation*
   obj:*Foundation.framework*Foundation*
}

{
   OSX1011:ColorSync-1
   Memcheck:Cond
   obj:*ColorSync.framework*ColorSync*
   obj:*ColorSync.framework*ColorSync*
   obj:*ColorSync.framework*ColorSync*
}

#{
#   OSX1011:ColorSync-2
#   Memcheck:Value8
#   obj:*ColorSync.framework*ColorSync*
#   obj:*ColorSync.framework*ColorSync*
#   obj:*ColorSync.framework*ColorSync*
#}

{
   OSX1011:CoreGraphics-1
   Memcheck:Cond
   obj:*CoreGraphics.framework*CoreGraphics*
   obj:*CoreGraphics.framework*CoreGraphics*
}

#{
#   OSX1011:CoreGraphics-2
#   Memcheck:Value8
#   obj:*CoreGraphics.framework*CoreGraphics*
#   obj:*CoreGraphics.framework*CoreGraphics*
#   obj:*CoreGraphics.framework*CoreGraphics*
#}

{
   OSX1011:CoreGraphics-3
   Memcheck:Cond
   obj:*CoreGraphics.framework*CoreGraphics*
   obj:*CoreGraphics.framework*libRIP*
   obj:*CoreGraphics.framework*libRIP*
}

#{
#   OSX1011:CoreGraphics-4
#   Memcheck:Cond
#   obj:*CoreGraphics.framework*CoreGraphics*
#   obj:*CoreGraphics.framework*CoreGraphics*
#   obj:*CoreGraphics.framework*libRIP*
#}

{
   OSX1011:CoreGraphics-5
   Memcheck:Cond
   obj:*CoreGraphics.framework*CoreGraphics*
   obj:*libdispatch.dylib*
   obj:*libdispatch.dylib*
}

#{
#   OSX1011:CoreGraphics-6
#   Memcheck:Cond
#   obj:*CoreGraphics.framework*CoreGraphics*
#   obj:*CoreGraphics.framework*CoreGraphics*
#   obj:*HIToolbox.framework*HIToolbox*
#}

{
   OSX1011:HIServices-1
   Memcheck:Cond
   obj:*HIServices.framework*HIServices*
   obj:*HIToolbox.framework*HIToolbox*
   obj:*HIToolbox.framework*HIToolbox*
}

{
   OSX1011:LaunchServices-1
   Memcheck:Cond
   obj:*LaunchServices.framework*LaunchServices*
   obj:*AppKit.framework*AppKit*
   obj:*AppKit.framework*AppKit*
}

{
   OSX1011:LaunchServices-2
   Memcheck:Cond
   obj:*LaunchServices.framework*LaunchServices*
   obj:*libdispatch.dylib*
   obj:*libdispatch.dylib*
}

{
   OSX1011:QuartzCore-1
   Memcheck:Cond
   obj:*QuartzCore.framework*QuartzCore
   obj:*QuartzCore.framework*QuartzCore
   obj:*QuartzCore.framework*QuartzCore
}

#{
#   OSX1011:vImage-1
#   Memcheck:Cond
#   obj:*vImage.framework*vImage*
#   obj:*vImage.framework*vImage*
#   obj:*CoreGraphics.framework*CoreGraphics*
#}

{
   OSX1011:zlib-C
   Memcheck:Cond
   obj:/usr/lib/libz.*dylib
   obj:/usr/lib/libz.*dylib
}

{
   OSX1011:zlib-8
   Memcheck:Value8
   obj:/usr/lib/libz.*dylib
   obj:/usr/lib/libz.*dylib
}

{
   OSX1011:32bit:_libxpc_initializer
   Memcheck:Cond
   obj:/usr/lib/system/libsystem_c.dylib
   obj:/usr/lib/system/libsystem_c.dylib
   fun:_libxpc_initializer
   obj:/usr/lib/libSystem.B.dylib
   fun:*ImageLoaderMachO*doModInitFunctions*
}

{
   OSX1011:dyld-1
   Memcheck:Cond
   fun:*ImageLoader*weakBind*
   fun:*ImageLoader*link*
   fun:*dyld*link*
}

{
   OSX1011:dyld-2
   Memcheck:Cond
   fun:exit
   obj:*libdyld*dylib*
}

{
   OSX1011:libsystem_kernel-1
   Memcheck:Cond
   obj:*libsystem_kernel*dylib*
   obj:*libsystem_kernel*dylib*
   obj:*CoreFoundation.framework*CoreFoundation*
}

{
   OSX1011:CoreServicesInternal-1
   Memcheck:Cond
   obj:*CoreServicesInternal.framework*CoreServicesInternal*
   obj:*CoreServices.framework*LaunchServices*
   obj:*CoreServices.framework*LaunchServices*
}

{
   OSX1011:CoreServicesInternal-2
   Memcheck:Cond
   obj:*CoreServicesInternal.framework*CoreServicesInternal*
   obj:*CoreServicesInternal.framework*CoreServicesInternal*
   obj:*CoreServicesInternal.framework*CoreServicesInternal*
}

{
   OSX1011:CoreServicesInternal-3
   Memcheck:Cond
   obj:*CoreServicesInternal.framework*CoreServicesInternal*
   obj:*CoreServicesInternal.framework*CoreServicesInternal*
   obj:*CoreFoundation.framework*CoreFoundation*
}

{
   OSX1011:CoreServices-1
   Memcheck:Cond
   obj:*CoreServices.framework*LaunchServices*
   obj:*CoreServices.framework*LaunchServices*
   obj:*CoreServices.framework*LaunchServices*
}

##{
##   OSX1011:libsystem_pthread-1
##   Memcheck:Cond
##   obj:*libsystem_pthread*dylib*
##   obj:*ImageIO.framework*ImageIO*
##   obj:*ImageIO.framework*ImageIO*
##}

{
   OSX1011:ApplicationServices-1
   Memcheck:Cond
   obj:*ApplicationServices.framework*ATS*
   obj:*libsystem_pthread*dylib*
   obj:*libsystem_platform*dylib*
}

{
   OSX1011:HIToolbox-1
   Memcheck:Cond
   obj:*HIToolbox.framework*HIToolbox*
   obj:*HIToolbox.framework*HIToolbox*
   obj:*HIToolbox.framework*HIToolbox*
}

{
   OSX1011:RawCamera-1
   Memcheck:Cond
   obj:*RawCamera.bundle*RawCamera*
   obj:*libdispatch.dylib*
   obj:*libdispatch.dylib*
}

##{
##   OSX1011:CoreImage-1
##   Memcheck:Cond
##   obj:*CoreImage.framework*CoreImage*
##   obj:*CoreImage.framework*CoreImage*
##   obj:*CoreImage.framework*CoreImage*
##}

##{
##   OSX1011:strncpy-1
##   Memcheck:Cond
##   fun:strncpy
##   obj:*CoreServicesInternal.framework*CoreServicesInternal
##   obj:*CoreServicesInternal.framework*CoreServicesInternal
##}

{
   OSX1011:pthread_rwlock_init
   Memcheck:Cond
   fun:pthread_rwlock_init
   obj:*ImageIO.framework*ImageIO*
   obj:*ImageIO.framework*ImageIO*
}

{
   OSX1011:CFBasicHash
   Memcheck:Value8
   fun:*CFBasicHash*
   fun:*CF*
}

{
   OSX1011:AppleIntelHD4000GraphicsGLDriver-1-Addr8
   Memcheck:Addr8
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
}
{
   OSX1011:AppleIntelHD4000GraphicsGLDriver-1-Addr8
   Memcheck:Addr4
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
}

{
   OSX1011:AppleIntelHD4000GraphicsGLDriver-2-Addr8
   Memcheck:Addr8
   fun:*platform_memmove*
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
}
{
   OSX1011:AppleIntelHD4000GraphicsGLDriver-2-Addr2
   Memcheck:Addr2
   fun:*platform_memmove*
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
}

{
   OSX1011:AppleIntelHD4000GraphicsGLDriver-3-Addr8
   Memcheck:Addr8
   fun:*platform_memmove*
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
   obj:*GLEngine.bundle*GLEngine*
}
{
   OSX1011:AppleIntelHD4000GraphicsGLDriver-3-Addr2
   Memcheck:Addr2
   fun:*platform_memmove*
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
   obj:*GLEngine.bundle*GLEngine*
}
{
   OSX1011:AppleIntelHD4000GraphicsGLDriver-3-Addr1
   Memcheck:Addr1
   fun:*platform_memmove*
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
   obj:*GLEngine.bundle*GLEngine*
}

{
   OSX1011:AppleIntelHD4000GraphicsGLDriver-4
   Memcheck:Addr8
   fun:*platform_bzero*
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
}

{
   OSX1011:AppleIntelHD4000GraphicsGLDriver-6-Addr8
   Memcheck:Addr8
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
   obj:*GLEngine.bundle*GLEngine*
}
{
   OSX1011:AppleIntelHD4000GraphicsGLDriver-6-Addr4
   Memcheck:Addr4
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
   obj:*GLEngine.bundle*GLEngine*
}

{
   OSX1011:AppleIntelHD4000GraphicsGLDriver-7
   Memcheck:Addr4
   obj:*AppleIntelHD4000GraphicsGLDriver.bundle*AppleIntelHD4000GraphicsGLDriver*
   obj:*GLEngine.bundle*GLEngine*
}

{
   OSX1011:OSAtomicAdd32
   Memcheck:Addr4
   fun:*OSAtomicAdd32*
   obj:*IOAccelerator.framework*IOAccelerator*
   obj:*GPUSupport.framework*GPUSupportMercury*
}

{
   OSX1011:IOAccelerator-1
   Memcheck:Addr4
   obj:*IOAccelerator.framework*IOAccelerator*
   obj:*GPUSupport.framework*GPUSupportMercury*
}

{
   OSX1011:mach_msg_trap-1
   Memcheck:Param
   msg->desc.port.name
   fun:mach_msg_trap
   obj:*libsystem_kernel.dylib*
   obj:*SystemConfiguration.framework*SystemConfiguration*
}

{
   OSX1011:mach_msg_trap-2
   Memcheck:Param
   msg->desc.port.name
   fun:mach_msg_trap
   obj:*SystemConfiguration.framework*SystemConfiguration*
   obj:*SystemConfiguration.framework*SystemConfiguration*
}

# See https://bugs.kde.org/show_bug.cgi?id=188572 about this;  it's
# unavoidable due to BSD setenv() semantics.
{
   macos-__setenv-leak-see-our-bug-188572
   Memcheck:Leak
   match-leak-kinds: definite
   fun:malloc
   fun:_owned_ptr_alloc
   fun:setenv
}

# See https://bugs.kde.org/show_bug.cgi?id=196528
{
macos-__pthread_rwlock_init-see-our-bug-196528
Memcheck:Cond
fun:pthread_rwlock_init
}
