# zlib deliberately checks the end condition less often than it should.
# Debian etch and Ubuntu feisty both have this suppression, but only for:
# obj:/usr/lib/libz.so.1.2.2
{
    zlib end condition check
    Memcheck:Cond
    obj:/usr/lib/libz.so.1.2.3
    obj:/usr/lib/libz.so.1.2.3
    fun:deflate
}
{
    zlib end condition check
    Memcheck:Cond
    obj:/usr/lib/libz.so.1.2.*
    fun:deflate
}
{
    zlib end condition check
    Memcheck:Value4
    obj:/usr/lib/libz.so.1.2.*
    fun:deflate
}
{
    zlib end condition check
    Memcheck:Value4
    obj:/usr/lib/libz.so.1.2.*
    obj:/usr/lib/libz.so.1.2.*
    obj:/usr/lib/libz.so.1.2.*
    fun:deflate
}
{
    zlib end condition check
    Memcheck:Value8
    obj:/usr/lib/libz.so.1.2.*
    fun:deflate
}
{
    zlib end condition check
    Memcheck:Value8
    obj:/usr/lib/libz.so.1.2.*
    obj:/usr/lib/libz.so.1.2.*
    obj:/usr/lib/libz.so.1.2.*
    fun:deflate
}
{
    zlib end condition check
    Memcheck:Cond
    obj:/usr/lib/libz.so.1.2.*
    obj:/usr/lib/libz.so.1.2.*
    obj:/usr/lib/libz.so.1.2.*
    fun:deflate
}

# Workaround valgrind bug where it moans about memmove() with overlapping
# source and destination (which is defined to work, unlike memcpy()):
# https://bugs.kde.org/show_bug.cgi?id=402833
{
   memmove overlapping source and destination
   Memcheck:Overlap
   fun:__memcpy_chk
   fun:memmove
}
