mirror of
https://github.com/Zenithsiz/ftmemsim-valgrind.git
synced 2026-02-03 18:13:01 +00:00
different error kinds were reusing the same struct for storing their details. Each one used some but not all the fields, and the AddrInfo was similar, and it was very confusing. So I changed MC_Error and AddrInfo to be tagged unions, like Vex's IRExpr and IRStmt types. The resulting code is a little more verbose but much easier to understand. I also split up several error kinds, which also made things simpler. The user-visible behaviour is identical except for a couple of very minor things that I've documented in the NEWS file for the 3.3.0 release. Ideally I'd get rid of the Addr and Char* fields in the core Error type, which are not always used, and do them similarly within tools. But that would require changing the core/tool interface, so I'm leaving it for the moment. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6402
567 lines
11 KiB
Plaintext
567 lines
11 KiB
Plaintext
|
|
##----------------------------------------------------------------------##
|
|
|
|
# Errors to suppress by default with glibc 2.3.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 Jump
|
|
# Free Addr1 Addr2 Addr4 Addr8 Addr16
|
|
# Cond (previously known as Value0)
|
|
#
|
|
# and the optional extra info is:
|
|
# if Param: name of system call param
|
|
|
|
{
|
|
__GI___stpcpy/*
|
|
Memcheck:Cond
|
|
fun:__GI___stpcpy
|
|
fun:*
|
|
}
|
|
{
|
|
strlen/__GI__dl_open/dlopen_doit
|
|
Memcheck:Cond
|
|
fun:strlen
|
|
fun:__GI__dl_open
|
|
fun:dlopen_doit
|
|
}
|
|
{
|
|
strlen/_dl_signal_cerror/_dl_lookup_symbol_internal/do_dlsym
|
|
Memcheck:Cond
|
|
fun:_dl_signal_cerror
|
|
fun:_dl_lookup_symbol_internal
|
|
fun:do_dlsym
|
|
}
|
|
{
|
|
strlen/*dl_map_object*(Cond)
|
|
Memcheck:Cond
|
|
fun:strlen
|
|
fun:*dl_map_object*
|
|
}
|
|
|
|
{
|
|
strlen/*dl_open_worker*(Cond)
|
|
Memcheck:Cond
|
|
fun:strlen
|
|
fun:*dl_open_worker*
|
|
}
|
|
{
|
|
strlen/_dl_sym/dlsym_doit
|
|
Memcheck:Cond
|
|
fun:strlen
|
|
fun:_dl_sym
|
|
fun:dlsym_doit
|
|
}
|
|
{
|
|
realpath is inefficiently coded
|
|
Memcheck:Overlap
|
|
fun:memcpy
|
|
fun:realpath*
|
|
}
|
|
|
|
{
|
|
realpath stupidity part II
|
|
Memcheck:Overlap
|
|
fun:strcpy
|
|
fun:realpath*
|
|
}
|
|
{
|
|
strlen/decompose_rpath/_dl_map_object
|
|
Memcheck:Cond
|
|
fun:strlen
|
|
fun:decompose_rpath
|
|
fun:*dl_map_object*
|
|
}
|
|
{
|
|
stpcpy/_dl_sym*
|
|
Memcheck:Cond
|
|
fun:__stpcpy
|
|
fun:_dl_*
|
|
}
|
|
|
|
#-------- For R H 8.0
|
|
{
|
|
elf_dynamic_do_rel.7/_dl_relocate_object_internal/dl_open_worker(Cond)
|
|
Memcheck:Cond
|
|
fun:elf_dynamic_do_rel.7
|
|
fun:_dl_relocate_object_internal
|
|
fun:dl_open_worker
|
|
}
|
|
{
|
|
dl_relocate/dl_open_worker
|
|
Memcheck:Cond
|
|
fun:_dl_relocate_object_internal
|
|
fun:dl_open_worker
|
|
}
|
|
|
|
#-------- glibc 2.3.2/ Fedora Core 1
|
|
{
|
|
dl_relocate/dl_main
|
|
Memcheck:Cond
|
|
fun:_dl_relocate_object_internal
|
|
fun:dl_main
|
|
}
|
|
|
|
#-------- glibc 2.3.3/ Fedora Core 2
|
|
{
|
|
dl_relocate_object/dl_main
|
|
Memcheck:Cond
|
|
fun:_dl_relocate_object
|
|
fun:dl_main
|
|
}
|
|
{
|
|
_dl_relocate_object/dl_open_worker
|
|
Memcheck:Cond
|
|
fun:_dl_relocate_object
|
|
fun:dl_open_worker
|
|
}
|
|
|
|
#-------- glibc 2.3.4/ Fedora Core 3
|
|
{
|
|
dl_relocate_object
|
|
Memcheck:Cond
|
|
fun:_dl_relocate_object
|
|
}
|
|
|
|
#-------- Data races
|
|
{
|
|
_dl_lookup_symbol_internal/fixup/_dl_runtime_resolve
|
|
Helgrind:Eraser
|
|
fun:_dl_lookup_symbol_internal
|
|
fun:fixup
|
|
fun:_dl_runtime_resolve
|
|
}
|
|
{
|
|
_dl_lookup_symbol_x/fixup/_dl_runtime_resolve
|
|
Helgrind:Eraser
|
|
fun:_dl_lookup_symbol_x
|
|
fun:fixup
|
|
fun:_dl_runtime_resolve
|
|
}
|
|
{
|
|
_dl_lookup_versioned_symbol_internal/fixup/_dl_runtime_resolve
|
|
Helgrind:Eraser
|
|
fun:_dl_lookup_versioned_symbol_internal
|
|
fun:fixup
|
|
fun:_dl_runtime_resolve
|
|
}
|
|
{
|
|
_dl_lookup_versioned_symbol/ld-2.3.2.so/ld-2.3.2.so
|
|
Helgrind:Eraser
|
|
fun:_dl_lookup_versioned_symbol
|
|
obj:/lib/ld-2.3.2.so
|
|
obj:/lib/ld-2.3.2.so
|
|
}
|
|
{
|
|
_dl_lookup_symbol/ld-2.3.2.so/ld-2.3.2.so
|
|
Helgrind:Eraser
|
|
fun:_dl_lookup_symbol
|
|
obj:/lib/ld-2.3.2.so
|
|
obj:/lib/ld-2.3.2.so
|
|
}
|
|
{
|
|
_dl_fini
|
|
Helgrind:Eraser
|
|
fun:_dl_fini
|
|
}
|
|
{
|
|
ld-2.3.2.so/exit/__libc_start_main
|
|
Helgrind:Eraser
|
|
obj:/lib/ld-2.3.2.so
|
|
fun:exit
|
|
fun:__libc_start_main
|
|
}
|
|
|
|
##----------------------------------------------------------------------##
|
|
## Bugs in helper library supplied with Intel Icc 7.0 (65)
|
|
## in /opt/intel/compiler70/ia32/lib/libcxa.so.3
|
|
{
|
|
Intel compiler70/ia32/lib/libcxa.so.3 below-esp accesses
|
|
Memcheck:Addr4
|
|
obj:/opt/intel/compiler70/ia32/lib/libcxa.so.3
|
|
}
|
|
|
|
##----------------------------------------------------------------------##
|
|
## SuSE 9 after FV changes (post 2.1.0)
|
|
|
|
{
|
|
strlen/_dl_init_paths/dl_main/_dl_sysdep_start(Cond)
|
|
Memcheck:Cond
|
|
fun:strlen
|
|
fun:_dl_init_paths
|
|
fun:dl_main
|
|
fun:_dl_sysdep_start
|
|
}
|
|
|
|
{
|
|
Ugly strchr error in /lib/ld-2.3.2.so
|
|
Memcheck:Cond
|
|
obj:/lib/ld-2.3.2.so
|
|
}
|
|
|
|
##----------------------------------------------------------------------##
|
|
## SuSE 9.1 with post 2.1.2
|
|
{
|
|
Ugly strchr error in /lib/ld-2.3.3.so
|
|
Memcheck:Cond
|
|
obj:/lib/ld-2.3.3.so
|
|
}
|
|
|
|
##----------------------------------------------------------------------##
|
|
## SuSE 9.1 with 3.0 branch (x86)
|
|
{
|
|
Strstr dubiousness in pthread_initialize
|
|
Memcheck:Cond
|
|
fun:strstr
|
|
fun:pthread_initialize
|
|
obj:/lib/libpthread.so.0
|
|
obj:/lib/libpthread.so.0
|
|
}
|
|
|
|
##----------------------------------------------------------------------##
|
|
## glibc-2.3.3 on FC2
|
|
## Assumes that sysctl returns \0-terminated strings in is_smp_system
|
|
#{
|
|
# Unterminated strstr string in is_smp_system() (NPTL)
|
|
# Memcheck:Cond
|
|
# fun:strstr
|
|
# fun:__pthread_initialize_minimal
|
|
# obj:/lib/tls/libpthread*.so*
|
|
# obj:/lib/tls/libpthread*.so*
|
|
#}
|
|
#{
|
|
# Unterminated strstr string in is_smp_system() (LinuxThreads)
|
|
# Memcheck:Cond
|
|
# fun:strstr
|
|
# fun:pthread_initialize
|
|
# obj:/lib/i686/libpthread*.so*
|
|
# obj:/lib/i686/libpthread*.so*
|
|
#}
|
|
#{
|
|
# Unterminated strstr string in is_smp_system() (LinuxThreads)
|
|
# Memcheck:Cond
|
|
# fun:strstr
|
|
# fun:pthread_initialize
|
|
# obj:/lib/libpthread-0.10.so
|
|
# obj:/lib/libpthread-0.10.so
|
|
#}
|
|
|
|
## Bug in PRE(sys_clone), really. Some args are not used.
|
|
{
|
|
LinuxThread clone use (parent_tidptr)
|
|
Memcheck:Param
|
|
clone(parent_tidptr)
|
|
fun:clone
|
|
fun:pthread_create
|
|
}
|
|
{
|
|
LinuxThread clone use (child_tidptr)
|
|
Memcheck:Param
|
|
clone(child_tidptr)
|
|
fun:clone
|
|
fun:pthread_create
|
|
}
|
|
{
|
|
LinuxThread clone use (tlsinfo)
|
|
Memcheck:Param
|
|
clone(tlsinfo)
|
|
fun:clone
|
|
fun:pthread_create
|
|
}
|
|
{
|
|
LinuxThread clone use (parent_tidptr)
|
|
Memcheck:Param
|
|
clone(parent_tidptr)
|
|
fun:clone
|
|
fun:pthread_create@@GLIBC_2.1
|
|
}
|
|
{
|
|
LinuxThread clone use (child_tidptr)
|
|
Memcheck:Param
|
|
clone(child_tidptr)
|
|
fun:clone
|
|
fun:pthread_create@@GLIBC_2.1
|
|
}
|
|
{
|
|
LinuxThread clone use (tlsinfo)
|
|
Memcheck:Param
|
|
clone(tlsinfo)
|
|
fun:clone
|
|
fun:pthread_create@@GLIBC_2.1
|
|
}
|
|
|
|
## LinuxThreads manager writes messages containing undefined bytes
|
|
{
|
|
LinuxThreads: write/pthread_onexit_process
|
|
Memcheck:Param
|
|
write(buf)
|
|
fun:pthread_onexit_process
|
|
fun:exit
|
|
}
|
|
{
|
|
LinuxThreads: write/pthread_join
|
|
Memcheck:Param
|
|
write(buf)
|
|
fun:pthread_join
|
|
}
|
|
{
|
|
LinuxThreads: write/pthread_create
|
|
Memcheck:Param
|
|
write(buf)
|
|
fun:pthread_create@@GLIBC_2.1
|
|
}
|
|
{
|
|
LinuxThreads: write/__pthread_initialize_manager/pthread_create
|
|
Memcheck:Param
|
|
write(buf)
|
|
fun:__pthread_initialize_manager
|
|
fun:pthread_create@@GLIBC_2.1
|
|
}
|
|
|
|
{
|
|
LinuxThreads: write/pthread_create
|
|
Memcheck:Param
|
|
write(buf)
|
|
fun:write
|
|
fun:pthread_create
|
|
}
|
|
|
|
## LinuxThreads leaks the stack and TLS data for the manager thread
|
|
{
|
|
LinuxThreads: leaks stack of manager thread
|
|
Memcheck:Leak
|
|
fun:malloc
|
|
fun:__pthread_initialize_manager
|
|
fun:pthread_create@@GLIBC_2.1
|
|
}
|
|
{
|
|
LinuxThreads: leaks TLS data for manager thread
|
|
Memcheck:Leak
|
|
fun:calloc
|
|
fun:_dl_allocate_tls
|
|
fun:__pthread_initialize_minimal
|
|
}
|
|
{
|
|
LinuxThreads: leaks TLS data for manager thread
|
|
Memcheck:Leak
|
|
fun:memalign
|
|
fun:_dl_allocate_tls
|
|
fun:__pthread_initialize_minimal
|
|
}
|
|
|
|
##----------------------------------------------------------------------##
|
|
## glibc-2.3.4 on FC3
|
|
## Assumes that sysctl returns \0-terminated strings in is_smp_system
|
|
#{
|
|
# Unterminated strstr string in is_smp_system() (NPTL)
|
|
# Memcheck:Cond
|
|
# fun:strstr
|
|
# fun:__pthread_initialize_minimal
|
|
# obj:/lib/tls/libpthread-2.3.4.so
|
|
# obj:/lib/tls/libpthread-2.3.4.so
|
|
#}
|
|
#{
|
|
# Unterminated strstr string in is_smp_system() (NPTL)
|
|
# Memcheck:Cond
|
|
# fun:strstr
|
|
# fun:__pthread_initialize_minimal
|
|
# obj:/lib64/tls/libpthread*.so*
|
|
#}
|
|
|
|
##----------------------------------------------------------------------##
|
|
## glibc-2.3.5 on FC4
|
|
## Assumes that sysctl returns \0-terminated strings in is_smp_system
|
|
#{
|
|
# Unterminated strstr string in is_smp_system() (NPTL)
|
|
# Memcheck:Cond
|
|
# fun:strstr
|
|
# fun:__pthread_initialize_minimal
|
|
# obj:*/libpthread-2.3.5.so
|
|
# obj:*/libpthread-2.3.5.so
|
|
#}
|
|
|
|
|
|
##----------------------------------------------------------------------##
|
|
#
|
|
# I don't know why this is needed, but still:
|
|
{
|
|
glibc-2.3.x-on-SuSE-10.0-(PPC)-1
|
|
Memcheck:Cond
|
|
fun:_dl_start
|
|
fun:_start
|
|
}
|
|
{
|
|
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.0/10.1-(PPC)-2a
|
|
Memcheck:Cond
|
|
fun:index
|
|
obj:*ld-2.3.*.so
|
|
}
|
|
{
|
|
glibc-2.3.x-on-SuSE-10.0/10.1-(PPC)-2b
|
|
Memcheck:Addr4
|
|
fun:index
|
|
fun:expand_dynamic_string_token
|
|
}
|
|
{
|
|
glibc-2.3.5-on-SuSE-10.0/10.1-(PPC)-2c
|
|
Memcheck:Addr4
|
|
fun:index
|
|
obj:*ld-2.3.*.so
|
|
}
|
|
{
|
|
glibc-2.3.5-on-SuSE-10.0/10.1-(PPC)-3
|
|
Memcheck:Addr4
|
|
fun:*wordcopy_fwd_dest_aligned*
|
|
fun:mem*cpy
|
|
obj:*lib*2.3.*.so
|
|
}
|
|
{
|
|
glibc-2.3.5-on-SuSE-10.0/10.1-(PPC)-4
|
|
Memcheck:Addr4
|
|
fun:bcmp
|
|
fun:*rpath*
|
|
fun:*rpath*
|
|
fun:*rpath*
|
|
}
|
|
|
|
##----------------------------------------------------------------------##
|
|
# Hacks pertaining to the fact that our intercept mechanism can't
|
|
# always get hold of strlen early enough, due to idiocy in the low
|
|
# level memory manager.
|
|
|
|
## HACK to do with strlen not being intercepted early enough
|
|
{
|
|
strlen-not-intercepted-early-enough-HACK-1
|
|
Memcheck:Addr4
|
|
fun:strlen
|
|
fun:_dl_map_object_from_fd
|
|
fun:_dl_map_object
|
|
}
|
|
|
|
{
|
|
strlen-not-intercepted-early-enough-HACK-2
|
|
Memcheck:Addr4
|
|
fun:strlen
|
|
fun:decompose_rpath
|
|
fun:cache_rpath
|
|
fun:_dl_map_object
|
|
}
|
|
|
|
{
|
|
strlen-not-intercepted-early-enough-HACK-3
|
|
Memcheck:Cond
|
|
fun:strlen
|
|
fun:_dl_new_object
|
|
fun:_dl_map_object_from_fd
|
|
fun:_dl_map_object
|
|
}
|
|
|
|
{
|
|
strlen-not-intercepted-early-enough-HACK-4
|
|
Memcheck:Cond
|
|
fun:strlen
|
|
fun:expand_dynamic_string_token
|
|
fun:_dl_map_object
|
|
}
|
|
|
|
{
|
|
strlen-not-intercepted-early-enough-HACK-5
|
|
Memcheck:Cond
|
|
fun:strlen
|
|
fun:fillin_rpath
|
|
fun:_dl_init_paths
|
|
}
|
|
|
|
|
|
## HACK to do with index not being intercepted early enough
|
|
{
|
|
index-not-intercepted-early-enough-HACK-1
|
|
Memcheck:Cond
|
|
fun:index
|
|
obj:*
|
|
fun:_dl_map_object
|
|
}
|
|
{
|
|
index-not-intercepted-early-enough-HACK-2
|
|
Memcheck:Cond
|
|
fun:index
|
|
fun:_dl_map_object
|
|
obj:*
|
|
fun:_dl_catch_error
|
|
}
|
|
{
|
|
index-not-intercepted-early-enough-HACK-3
|
|
Memcheck:Cond
|
|
fun:index
|
|
fun:_dl_map_object
|
|
obj:*
|
|
fun:_dl_sysdep_start
|
|
}
|
|
|
|
{
|
|
index-not-intercepted-early-enough-HACK-4
|
|
Memcheck:Cond
|
|
fun:index
|
|
fun:expand_dynamic_string_token
|
|
}
|
|
|
|
|
|
##----------------------------------------------------------------------##
|
|
## MontaVista 3.1 on ppc32 integer only
|
|
{
|
|
MontaVista-3.1-ppc32-#1
|
|
Memcheck:Value4
|
|
obj:/lib/ld-2.3.2.so
|
|
obj:/lib/ld-2.3.2.so
|
|
fun:*dl_map_object*
|
|
obj:/lib/libc-2.3.2.so
|
|
}
|
|
|
|
{
|
|
MontaVista-3.1-ppc32-#2
|
|
Memcheck:Value4
|
|
fun:malloc
|
|
obj:/lib/ld-2.3.2.so
|
|
obj:/lib/ld-2.3.2.so
|
|
obj:/lib/libc-2.3.2.so
|
|
}
|
|
|
|
{
|
|
MontaVista-3.1-ppc32-#3
|
|
Memcheck:Value4
|
|
obj:/lib/ld-2.3.2.so
|
|
obj:/lib/ld-2.3.2.so
|
|
}
|
|
|
|
##----------------------------------------------------------------------##
|
|
## Ubuntu something (based on Debian 3.0?) on x86
|
|
|
|
{
|
|
Ubuntu-stripped-ld.so
|
|
Memcheck:Cond
|
|
obj:/lib/ld-2.3.*.so
|
|
obj:/lib/ld-2.3.*.so
|
|
obj:/lib/ld-2.3.*.so
|
|
obj:/lib/ld-2.3.*.so
|
|
obj:/lib/ld-2.3.*.so
|
|
}
|
|
|