Fix non portability spotted by Florian:
[valgrind.git] / glibc-2.34567-NPTL-helgrind.supp
blobb61a339556758d633db09654da778238faf7b246
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.
28 #   helgrind-glibc2X-001
29 #   Helgrind:Race
30 #   obj:*/lib*/ld-2.*so*
33 # helgrind-glibc2X-002 was merged into helgrind-glibc2X-001
35 # helgrind-glibc2X-003 was merged into helgrind-glibc2X-001
38    helgrind-glibc2X-004
39    Helgrind:Race
40    obj:*/lib*/libc-2.*so*
44    helgrind-glibc2X-005
45    Helgrind:Race
46    obj:*/lib*/libpthread-2.*so*
49 # helgrind-glibc2X-006 was merged into helgrind-glibc2X-005
51 # helgrind-glibc2X-007 was merged into helgrind-glibc2X-001
53 # helgrind-glibc2X-008 was merged into helgrind-glibc2X-004
55 # helgrind-glibc2X-009 was merged into helgrind-glibc2X-004
57 # helgrind-glibc2X-010 was merged into helgrind-glibc2X-001
59 # helgrind-glibc2X-011 was merged into helgrind-glibc2X-004
61 # helgrind-glibc2X-012 was merged into helgrind-glibc2X-001
63 # helgrind-glibc2X-013 was merged into helgrind-glibc2X-001
65 # helgrind-glibc2X-014 was merged into helgrind-glibc2X-001
67 # helgrind-glibc2X-015 was merged into helgrind-glibc2X-004
69 # helgrind-glibc2X-016 was merged into helgrind-glibc2X-004
71 # These are very ugly.  They are needed to suppress errors inside (eg)
72 # NPTL's pthread_cond_signal.  Why only one stack frame -- at least we
73 # should see the wrapper calling the real functions, right?
74 # Unfortunately, no: the real functions are handwritten assembly (in
75 # the glibc-2.5 sources) and does not create a proper stack frame.
76 # Therefore it's only one level of unwinding before we're back out in
77 # user code rather than the 2 levels you'd expect.
79    helgrind-glibc2X-101
80    Helgrind:Race
81    obj:*/lib*/libpthread-2.*so*
82    fun:pthread_*
85    helgrind-glibc2X-102
86    Helgrind:Race
87    fun:mythread_wrapper
88    obj:*/lib*/libpthread-2.*so*
91    helgrind-glibc2X-103
92    Helgrind:Race
93    fun:pthread_cond_*@@GLIBC_2.*
96    helgrind-glibc2X-104
97    Helgrind:Race
98    fun:__lll_mutex_*
101    helgrind-glibc2X-105
102    Helgrind:Race
103    fun:pthread_rwlock_*lock*
106    helgrind-glibc2X-106
107    Helgrind:Race
108    fun:__lll_lock_wait
111    helgrind-glibc2X-107
112    Helgrind:Race
113    obj:*/lib*/libpthread-2.*so*
114    fun:sem_*
117    helgrind-glibc2X-108
118    Helgrind:Race
119    fun:clone
122    helgrind-glibc2X-109
123    Helgrind:Race
124    fun:start_thread
127    helgrind-glibc2X-110
128    Helgrind:Race
129    obj:*/lib*/libc-2.*so*
130    fun:pthread_*
133    helgrind-glibc2X-111
134    Helgrind:Race
135    fun:__lll_*lock_*
138    helgrind-glibc2X-113
139    Helgrind:Race
140    fun:pthread_barrier_wait*
144 ####################################################
145 # qt4 specific (GNU mangling)
148    helgrind-qt4---QMutex::lock()-QMutex::lock()
149    Helgrind:Race
150    ...
151    fun:_ZN6QMutex4lockEv
152    fun:_ZN6QMutex4lockEv
155 {                                                               
156    helgrind-qt4---QMutex::unlock()-QMutex::unlock()
157    Helgrind:Race                                                
158    ...
159    fun:_ZN6QMutex6unlockEv                                      
160    fun:_ZN6QMutex6unlockEv
164    helgrind-qt4---pthread_setspecific-QThreadPrivate::start(void*)
165    Helgrind:Race
166    fun:pthread_setspecific
167    fun:_ZN14QThreadPrivate5startEPv
171 ####################################################
172 # Other stuff.
174 # pthread_exit apparently calls some kind of unwind
175 # mechanism - maybe to remove some number of frames
176 # from the thread's stack, so as to get back to the 
177 # outermost frame for the thread?  Anyway..
180    helgrind---*Unwind*-...-pthread_exit
181    Helgrind:Race
182    fun:*Unwind*
183    ...
184    fun:pthread_exit
188    helgrind---...-*Unwind*-*pthread_unwind*
189    Helgrind:Race
190    ...
191    fun:*Unwind*
192    fun:*pthread_unwind*
196    helgrind---...-*Unwind*-*pthread_unwind*
197    Helgrind:Race
198    ...
199    fun:_Unwind*
200    ...
201    fun:_Unwind_Backtrace
207 ####################################################
208 # To do with thread stack allocation and deallocation?
211    helgrind---free_stacks-__deallocate_stack
212    Helgrind:Race
213    fun:free_stacks
214    fun:__deallocate_stack
218    helgrind---__deallocate_stack-start_thread-clone
219    Helgrind:Race
220    fun:__deallocate_stack
221    fun:start_thread
222    fun:clone
226 ####################################################
227 # To do with pthread_{set,get}specific
230    helgrind---pthread_setspecific
231    Helgrind:Race
232    fun:pthread_setspecific
236    helgrind---pthread_getspecific
237    Helgrind:Race
238    fun:pthread_getspecific
242 ####################################################
243 # To do with dynamic linking
245 # helgrind---ld.so-...-dlsym was merged into helgrind-glibc2X-001
248    helgrind---_dl_allocate_tls 
249    Helgrind:Race
250    fun:mempcpy
251    fun:_dl_allocate_tls_init
252    ...
253    fun:pthread_create@@GLIBC_2.2*
254    fun:pthread_create_WRK
255    fun:pthread_create@*
258 ####################################################
259 # To do with GNU libgomp
262    helgrind---libgomp43-1
263    Helgrind:Race
264    fun:gomp_ordered_sync
268    helgrind---libgomp43-1
269    Helgrind:Race
270    fun:gomp_ordered_next
274    helgrind---libgomp43-1
275    Helgrind:Race
276    fun:gomp_ordered_last