insn_has_no_other_exits_or_PUTs_to_PC: also check Ist_PutI and Ist_Dirty for writes...
[valgrind.git] / glibc-2.34567-NPTL-helgrind.supp
blob7ebd2c4b4e567a2be19d9e92f67fef88e53a8a55
2 # FIXME 22 Jan 09: helgrind-glibc2X-005 overlaps with a lot of
3 # other stuff.  They should be removed.
5 ##----------------------------------------------------------------------##
6 # Suppressions for the Helgrind tool when using 
7 # a glibc-2.{3,4,5,6,7,8,9} system
9 ####################################################
10 # glibc-2.X specific
11 # These are generic cover-alls which catch a lot of stuff
12 # in various combinations of ld, libc and libpthread
14 # Note this is heavyhanded and not very clever:
16 # - suppress anything that has its top frame in ld.so
17 #   That's fine, since it's mostly dynamic linking stuff,
18 #   which has various deliberate (harmless) races
20 # - suppress anything that has its top frame in libc.so.
21 #   This really isn't clever, since it could hide some 
22 #   legitimate races.  But the problem is, if we don't do
23 #   this, then loads of errors to do with stdio are reported, because
24 #   H fails to see glibc's internal locking/unlocking of FILE*s
25 #   as required by POSIX.  A better solution is needed.
27 # - some of the stdio functions in newer glibc manipulate stdio
28 #   FILE*s state through mempcpy, which we intercept, so we also need
29 #   to suppress such manipulations.
32 #   helgrind-glibc2X-001
33 #   Helgrind:Race
34 #   obj:*/lib*/ld-2.*so*
37 # helgrind-glibc2X-002 was merged into helgrind-glibc2X-001
39 # helgrind-glibc2X-003 was merged into helgrind-glibc2X-001
42    helgrind-glibc2X-004
43    Helgrind:Race
44    obj:*/lib*/libc-2.*so*
48    helgrind-glibc-io-xsputn-mempcpy
49    Helgrind:Race
50    fun:__GI_mempcpy
51    fun:_IO_*xsputn*
52    obj:*/lib*/libc-2.*so*
56    helgrind-glibc2X-005
57    Helgrind:Race
58    obj:*/lib*/libpthread-2.*so*
61 # helgrind-glibc2X-006 was merged into helgrind-glibc2X-005
63 # helgrind-glibc2X-007 was merged into helgrind-glibc2X-001
65 # helgrind-glibc2X-008 was merged into helgrind-glibc2X-004
67 # helgrind-glibc2X-009 was merged into helgrind-glibc2X-004
69 # helgrind-glibc2X-010 was merged into helgrind-glibc2X-001
71 # helgrind-glibc2X-011 was merged into helgrind-glibc2X-004
73 # helgrind-glibc2X-012 was merged into helgrind-glibc2X-001
75 # helgrind-glibc2X-013 was merged into helgrind-glibc2X-001
77 # helgrind-glibc2X-014 was merged into helgrind-glibc2X-001
79 # helgrind-glibc2X-015 was merged into helgrind-glibc2X-004
81 # helgrind-glibc2X-016 was merged into helgrind-glibc2X-004
83 # These are very ugly.  They are needed to suppress errors inside (eg)
84 # NPTL's pthread_cond_signal.  Why only one stack frame -- at least we
85 # should see the wrapper calling the real functions, right?
86 # Unfortunately, no: the real functions are handwritten assembly (in
87 # the glibc-2.5 sources) and does not create a proper stack frame.
88 # Therefore it's only one level of unwinding before we're back out in
89 # user code rather than the 2 levels you'd expect.
91    helgrind-glibc2X-101
92    Helgrind:Race
93    obj:*/lib*/libpthread-2.*so*
94    fun:pthread_*
97    helgrind-glibc2X-102
98    Helgrind:Race
99    fun:mythread_wrapper
100    obj:*/lib*/libpthread-2.*so*
103    helgrind-glibc2X-103
104    Helgrind:Race
105    fun:pthread_cond_*@@GLIBC_2.*
108    helgrind-glibc2X-104
109    Helgrind:Race
110    fun:__lll_mutex_*
113    helgrind-glibc2X-105
114    Helgrind:Race
115    fun:pthread_rwlock_*lock*
118    helgrind-glibc2X-106
119    Helgrind:Race
120    fun:__lll_lock_wait
123    helgrind-glibc2X-107
124    Helgrind:Race
125    obj:*/lib*/libpthread-2.*so*
126    fun:sem_*
129    helgrind-glibc2X-108
130    Helgrind:Race
131    fun:clone
134    helgrind-glibc2X-109
135    Helgrind:Race
136    fun:start_thread
139    helgrind-glibc2X-110
140    Helgrind:Race
141    obj:*/lib*/libc-2.*so*
142    fun:pthread_*
145    helgrind-glibc2X-111
146    Helgrind:Race
147    fun:__lll_*lock_*
150    helgrind-glibc2X-113
151    Helgrind:Race
152    fun:pthread_barrier_wait*
156 ####################################################
157 # qt4 specific (GNU mangling)
160    helgrind-qt4---QMutex::lock()-QMutex::lock()
161    Helgrind:Race
162    ...
163    fun:_ZN6QMutex4lockEv
164    fun:_ZN6QMutex4lockEv
167 {                                                               
168    helgrind-qt4---QMutex::unlock()-QMutex::unlock()
169    Helgrind:Race                                                
170    ...
171    fun:_ZN6QMutex6unlockEv                                      
172    fun:_ZN6QMutex6unlockEv
176    helgrind-qt4---pthread_setspecific-QThreadPrivate::start(void*)
177    Helgrind:Race
178    fun:pthread_setspecific
179    fun:_ZN14QThreadPrivate5startEPv
183 ####################################################
184 # Other stuff.
186 # pthread_exit apparently calls some kind of unwind
187 # mechanism - maybe to remove some number of frames
188 # from the thread's stack, so as to get back to the 
189 # outermost frame for the thread?  Anyway..
192    helgrind---*Unwind*-...-pthread_exit
193    Helgrind:Race
194    fun:*Unwind*
195    ...
196    fun:pthread_exit
200    helgrind---...-*Unwind*-*pthread_unwind*
201    Helgrind:Race
202    ...
203    fun:*Unwind*
204    fun:*pthread_unwind*
208    helgrind---...-*Unwind*-*pthread_unwind*
209    Helgrind:Race
210    ...
211    fun:_Unwind*
212    ...
213    fun:_Unwind_Backtrace
219 ####################################################
220 # To do with thread stack allocation and deallocation?
223    helgrind---free_stacks-__deallocate_stack
224    Helgrind:Race
225    fun:free_stacks
226    fun:__deallocate_stack
230    helgrind---__deallocate_stack-start_thread-clone
231    Helgrind:Race
232    fun:__deallocate_stack
233    fun:start_thread
234    fun:clone
238 ####################################################
239 # To do with pthread_{set,get}specific
242    helgrind---pthread_setspecific
243    Helgrind:Race
244    fun:pthread_setspecific
248    helgrind---pthread_getspecific
249    Helgrind:Race
250    fun:pthread_getspecific
254 ####################################################
255 # To do with dynamic linking
257 # helgrind---ld.so-...-dlsym was merged into helgrind-glibc2X-001
260    helgrind---_dl_allocate_tls 
261    Helgrind:Race
262    fun:mempcpy
263    fun:_dl_allocate_tls_init
264    ...
265    fun:pthread_create@@GLIBC_2.2*
266    fun:pthread_create_WRK
267    fun:pthread_create@*
271    helgrind---_dl_allocate_tls2
272    Helgrind:Race
273    fun:memcpy
274    fun:__mempcpy_inline
275    fun:_dl_allocate_tls_init
276    ...
277    fun:pthread_create@@GLIBC_2.2*
278    fun:pthread_create_WRK
279    fun:pthread_create@*
282 ####################################################
283 # To do with GNU libgomp
286    helgrind---libgomp43-1
287    Helgrind:Race
288    fun:gomp_ordered_sync
292    helgrind---libgomp43-1
293    Helgrind:Race
294    fun:gomp_ordered_next
298    helgrind---libgomp43-1
299    Helgrind:Race
300    fun:gomp_ordered_last