
##----------------------------------------------------------------------##

# Errors to suppress by default with glibc 2.4.x

# Format of this file is:
# {
#     name_of_suppression
#     tool_name:supp_kind
#     (optional extra info for some suppression types)
#     caller0 name, or /name/of/so/file.so
#     caller1 name, or ditto
#     (optionally: caller2 name)
#     (optionally: caller3 name)
#  }
#
# For Memcheck, the supp_kinds are:
#
#     Param Value1 Value2 Value4 Value8 Value16
#     Free Addr1 Addr2 Addr4 Addr8 Addr16
#     Cond (previously known as Value0)
#
# and the optional extra info is:
#     if Param: name of system call param
#     if Free: name of free-ing fn)

##----------------------------------------------------------------------##
## Suppressions for Fedora Core 5 on ppc32/amd64 (glibc-2.3.90)

{
   Fedora-Core-5-hack1
   Memcheck:Cond
   fun:_dl_start
   fun:_start
}

{
   Fedora-Core-5-hack2
   Memcheck:Cond
   obj:/lib*/ld-2.3.90.so
   obj:/lib*/ld-2.3.90.so
   obj:/lib*/ld-2.3.90.so
   obj:/lib*/ld-2.3.90.so
}

{
   Fedora-Core-5-hack3
   Memcheck:Cond
   obj:/lib*/ld-2.3.90.so
   obj:/lib*/ld-2.3.90.so
   obj:/lib*/ld-2.3.90.so
   obj:/lib*/libc-2.3.90.so
}

##----------------------------------------------------------------------##
{
   glibc-2.3.x-on-SUSE-10.1-(PPC)-1
   Memcheck:Cond
   fun:_dl_start_final
   fun:_dl_start
   fun:_start
}
{
   glibc-2.3.x-on-SUSE-10.1-(PPC)-2a
   Memcheck:Cond
   fun:index
   obj:*ld-2.3.*.so
}
{
   glibc-2.3.x-on-SuSE-10.1-(PPC)-2b
   Memcheck:Addr4
   fun:index
   fun:expand_dynamic_string_token
}
{
   glibc-2.3.5-on-SuSE-10.1-(PPC)-2c
   Memcheck:Addr4
   fun:index
   obj:*ld-2.3.*.so
}
{
   glibc-2.3.5-on-SuSE-10.1-(PPC)-3
   Memcheck:Addr4
   fun:*wordcopy_fwd_dest_aligned*
   fun:mem*cpy
   obj:*lib*2.3.*.so
}
{
   index-not-intercepted-early-enough-HACK-4
   Memcheck:Cond
   fun:index
   fun:expand_dynamic_string_token
}
