# Suppressions for Darwin 11.x / Mac OS X 10.7 Lion

##----------------------------------------------------------------------##
# Memcheck
##----------------------------------------------------------------------##

# Dunno where this is a real bug, or due to borked 10.7-specific syscall
# wrappers.  64-bit mode; not sure if occurs in 32-bit mode. 
# Anyway, for the tine being:
#
# Conditional jump or move depends on uninitialised value(s)
#    at 0x1973E6: __mtx_droplock (in /usr/lib/system/libsystem_c.dylib)
#    by 0x1976AA: pthread_mutex_unlock (in /usr/lib/system/libsystem_c.dylib)
#    by 0x100B3D: unlock_node (in /usr/lib/system/libkeymgr.dylib)
{
   OSX107:__mtx_droplock
   Memcheck:Cond
   fun:__mtx_droplock
   fun:pthread_mutex_unlock
   fun:unlock_node
}

# Conditional jump or move depends on uninitialised value(s)
#    at 0x2EB883: ??? (in /usr/lib/system/libxpc.dylib)
#    by 0x237C6: ??? (in /usr/lib/libSystem.B.dylib)
#    by 0x8FE1115A: ImageLoaderMachO::doModInitFunctions(ImageLoader::LinkContext const&) (in /usr/lib/dyld)
{
   <insert_a_suppression_name_here>
   Memcheck:Cond
   obj:/usr/lib/system/libxpc.dylib
   obj:/usr/lib/libSystem.B.dylib
   fun:_ZN16ImageLoaderMachO18doModInitFunctionsERKN11ImageLoader11LinkContextE
}

# ZLib stuff.  How come this wasn't necessary in 10.6 ?
{
   OSX107:zlib-C
   Memcheck:Cond
   obj:/usr/lib/libz.*dylib
   obj:/usr/lib/libz.*dylib
}
{
   OSX107:zlib-8
   Memcheck:Value8
   obj:/usr/lib/libz.*dylib
   obj:/usr/lib/libz.*dylib
}

# Really a bug?  I don't know.
# Conditional jump or move depends on uninitialised value(s)
#    at 0x3A322FE: __mtx_droplock (in /usr/lib/system/libsystem_c.dylib)
#    by 0x3A326AA: pthread_mutex_unlock (in /usr/lib/system/libsystem_c.dylib)
#    by 0x26382: load_images (in /usr/lib/libobjc.A.dylib)
{
   OSX107:blah
   Memcheck:Cond
   fun:__mtx_droplock
   fun:pthread_mutex_unlock
}

{
   OSX107:blah
   Memcheck:Cond
   fun:pthread_mutex_lock
}

################
# More OSX 10.7.2 supps from startup of Firefox, for reports
# that look like they are in the OSX system libraries

# Conditional jump or move depends on uninitialised value(s)
#    at 0x65ADC41: TParsingContext::BuildMacEncTable()
#    by 0x65AD98B: TParsingContext::GetEncHash(char const*)
#  Uninitialised value was created by a heap allocation
#    at 0xC743: malloc (vg_replace_malloc.c:266)
#    by 0x65ADADA: TParsingContext::BuildMacEncTable()
{
   OSX107:more1
   Memcheck:Cond
   fun:*TParsingContext16BuildMacEncTable*
   fun:*TParsingContext10GetEncHash*
}

# Conditional jump or move depends on uninitialised value(s)
#    at 0x49ABC48: CGColorSpaceAdjustColor
#    by 0x4A9AEE8: CGGradientCreateWithColorComponents
#  Uninitialised value was created by a heap allocation
#    at 0xC743: malloc (vg_replace_malloc.c:266)
#    by 0x4A9AEC4: CGGradientCreateWithColorComponents
#    by 0x4A9AC49: CGGradientCreateWithColors
{
   OSX107:more2
   Memcheck:Cond
   fun:CGColorSpaceAdjustColor
   fun:CGGradientCreateWithColorComponents
}


# Conditional jump or move depends on uninitialised value(s)
#    at 0x2119CCA8: BitSetNextSetBit
#    by 0x211A4BA5: BuildInterferenceSets
#  Uninitialised value was created by a heap allocation
#    at 0xC743: malloc (vg_replace_malloc.c:266)
#    by 0x2119CB98: BitSetNew
#    by 0x2119D06F: BuildGenKill
{
   OSX107:more3
   Memcheck:Cond
   fun:BitSetNextSetBit
   fun:BuildInterferenceSets
}

# and similar
{
   OSX107:more4
   Memcheck:Cond
   fun:BitSetNextSetBit
   fun:RegistersReInterfere
}


# Conditional jump or move depends on uninitialised value(s)
#    at 0x33E4160: CUIRenderer::CreateImage
#    by 0x33C14A4: CUIRenderer::DrawMenuBar
#  Uninitialised value was created by a stack allocation
#    at 0x33C12FC: CUIRenderer::DrawMenuBar
{
   OSX107:more5
   Memcheck:Cond
   fun:*CUIRenderer*CreateImage*
   fun:*CUIRenderer*DrawMenu*
}

# and similar
{
   OSX107:more6
   Memcheck:Cond
   fun:floor$fenv_access_off
   fun:*CUIRenderer*CreateImage*
   fun:*CUIRenderer*DrawMenu*
}

# This appears a lot, and the origins seem either missing or
# from system libs.
# Use of uninitialised value of size 8
#    at 0x39CC164: aes_encrypt_xmm_no_save
{
   OSX107:more7
   Memcheck:Value8
   fun:aes_encrypt_xmm_no_save
}


# Conditional jump or move depends on uninitialised value(s)
#    at 0xD6D193: -[NSPersistentUIManager writeWindowSnapshot:length:...
#    by 0xD71A03: __-[NSPersistentUIManager _updateSnapshotForWindowN...
{
   OSX107:more8
   Memcheck:Cond
   fun:-[NSPersistentUIManager?writeWindowSnapshot*
   fun:__-[NSPersistentUIManager?_updateSnapshotForWindowNumber*
}


##########################################################################
### The ones below are from darwin10.supp (for Snow Leopard).  I don't
### know whether they are still necessary.

# afaict this is legit.  Might be caused by setenv("VAR=")
# where the value string is empty (not sure)
{
   macos-Cond-7
   Memcheck:Cond
   fun:__setenv
}

# From Jesse Ruderman.
#{
#   Mac OS X 10.6.4. rdar://8145289. "new[]" paired with "delete" in the DesktopServicesPriv framework.
#   Memcheck:Free
#   fun:_ZdlPv
#   fun:_ZN5TChar18RemovePtrReferenceEv
# }

# From Jesse Ruderman.
#{
#   Mac OS X 10.6.4. rdar://8145318. Uninitialized memory from HIMenuBarView::MeasureAppMenus is used in HIMenuBarView::SetAdjustTextTitleBoundsAtIndex.
#   Memcheck:Cond
#   fun:_ZN13HIMenuBarView31SetAdjustTextTitleBoundsAtIndexEih
#   fun:_ZN13HIMenuBarView15MeasureAppMenusEv
#}

#{
#   TFontFeatures::TFontFeatures(CGFont*) (in CoreText.framework)
#   Memcheck:Cond
#   fun:_ZN13TFontFeaturesC2EP6CGFont
#   fun:_ZNK9TBaseFont12CopyFeaturesEv
#}

# 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
   fun:malloc_zone_malloc
   fun:__setenv
}

#{
#   libSystem-keymgr-leak-at-exit
#   Memcheck:Leak
#   fun:malloc
#   fun:get_or_create_key_element
#   fun:_keymgr_get_and_lock_processwide_ptr_2
#   fun:__keymgr_initializer
#   fun:libSystem_initializer
#}

# From Gary Kwong
{
   macos-malloc_set_zone_name-see-our-bug-307557
   Memcheck:Leak
   fun:malloc_zone_malloc
   ...
   fun:malloc_set_zone_name
   ...
   fun:init__zone0
}