Removed the configure test for __builtin_frame_address() again because it is no longe...
[ambi/valgrind.git] / glibc-2.34567-NPTL-helgrind.supp
1
2 # FIXME 22 Jan 09: helgrind-glibc2X-005 overlaps with a lot of
3 # other stuff.  They should be removed.
4
5 ##----------------------------------------------------------------------##
6 # Suppressions for the Helgrind tool when using 
7 # a glibc-2.{3,4,5,6,7,8,9} system
8
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
13 #
14 # Note this is heavyhanded and not very clever:
15 #
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
19 #
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.
26
27 #{
28 #   helgrind-glibc2X-001
29 #   Helgrind:Race
30 #   obj:/lib*/ld-2.*so*
31 #}
32
33 # helgrind-glibc2X-002 was merged into helgrind-glibc2X-001
34
35 # helgrind-glibc2X-003 was merged into helgrind-glibc2X-001
36
37 {
38    helgrind-glibc2X-004
39    Helgrind:Race
40    obj:/lib*/libc-2.*so*
41 }
42
43 {
44    helgrind-glibc2X-005
45    Helgrind:Race
46    obj:/lib*/libpthread-2.*so*
47 }
48
49 # helgrind-glibc2X-006 was merged into helgrind-glibc2X-005
50
51 # helgrind-glibc2X-007 was merged into helgrind-glibc2X-001
52
53 # helgrind-glibc2X-008 was merged into helgrind-glibc2X-004
54
55 # helgrind-glibc2X-009 was merged into helgrind-glibc2X-004
56
57 # helgrind-glibc2X-010 was merged into helgrind-glibc2X-001
58
59 # helgrind-glibc2X-011 was merged into helgrind-glibc2X-004
60
61 # helgrind-glibc2X-012 was merged into helgrind-glibc2X-001
62
63 # helgrind-glibc2X-013 was merged into helgrind-glibc2X-001
64
65 # helgrind-glibc2X-014 was merged into helgrind-glibc2X-001
66
67 # helgrind-glibc2X-015 was merged into helgrind-glibc2X-004
68
69 # helgrind-glibc2X-016 was merged into helgrind-glibc2X-004
70
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.
78 {
79    helgrind-glibc2X-101
80    Helgrind:Race
81    obj:/lib*/libpthread-2.*so*
82    fun:pthread_*
83 }
84 {
85    helgrind-glibc2X-102
86    Helgrind:Race
87    fun:mythread_wrapper
88    obj:/lib*/libpthread-2.*so*
89 }
90 {
91    helgrind-glibc2X-103
92    Helgrind:Race
93    fun:pthread_cond_*@@GLIBC_2.*
94 }
95 {
96    helgrind-glibc2X-104
97    Helgrind:Race
98    fun:__lll_mutex_*
99 }
100 {
101    helgrind-glibc2X-105
102    Helgrind:Race
103    fun:pthread_rwlock_*lock*
104 }
105 {
106    helgrind-glibc2X-106
107    Helgrind:Race
108    fun:__lll_lock_wait
109 }
110 {
111    helgrind-glibc2X-107
112    Helgrind:Race
113    obj:/lib*/libpthread-2.*so*
114    fun:sem_*
115 }
116 {
117    helgrind-glibc2X-108
118    Helgrind:Race
119    fun:clone
120 }
121 {
122    helgrind-glibc2X-109
123    Helgrind:Race
124    fun:start_thread
125 }
126 {
127    helgrind-glibc2X-110
128    Helgrind:Race
129    obj:/lib*/libc-2.*so*
130    fun:pthread_*
131 }
132 {
133    helgrind-glibc2X-111
134    Helgrind:Race
135    fun:__lll_*lock_*
136 }
137 {
138    helgrind-glibc2X-113
139    Helgrind:Race
140    fun:pthread_barrier_wait*
141 }
142
143
144 ####################################################
145 # qt4 specific (GNU mangling)
146 #
147 {
148    helgrind-qt4---QMutex::lock()-QMutex::lock()
149    Helgrind:Race
150    ...
151    fun:_ZN6QMutex4lockEv
152    fun:_ZN6QMutex4lockEv
153 }
154
155 {                                                               
156    helgrind-qt4---QMutex::unlock()-QMutex::unlock()
157    Helgrind:Race                                                
158    ...
159    fun:_ZN6QMutex6unlockEv                                      
160    fun:_ZN6QMutex6unlockEv
161 }
162
163 {
164    helgrind-qt4---pthread_setspecific-QThreadPrivate::start(void*)
165    Helgrind:Race
166    fun:pthread_setspecific
167    fun:_ZN14QThreadPrivate5startEPv
168 }
169
170
171 ####################################################
172 # Other stuff.
173 #
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..
178
179 {
180    helgrind---*Unwind*-...-pthread_exit
181    Helgrind:Race
182    fun:*Unwind*
183    ...
184    fun:pthread_exit
185 }
186
187 {
188    helgrind---...-*Unwind*-*pthread_unwind*
189    Helgrind:Race
190    ...
191    fun:*Unwind*
192    fun:*pthread_unwind*
193 }
194
195 {
196    helgrind---...-*Unwind*-*pthread_unwind*
197    Helgrind:Race
198    ...
199    fun:_Unwind*
200    ...
201    fun:_Unwind_Backtrace
202 }
203
204
205
206
207 ####################################################
208 # To do with thread stack allocation and deallocation?
209 #
210 {
211    helgrind---free_stacks-__deallocate_stack
212    Helgrind:Race
213    fun:free_stacks
214    fun:__deallocate_stack
215 }
216
217 {
218    helgrind---__deallocate_stack-start_thread-clone
219    Helgrind:Race
220    fun:__deallocate_stack
221    fun:start_thread
222    fun:clone
223 }
224
225
226 ####################################################
227 # To do with pthread_{set,get}specific
228 #
229 {
230    helgrind---pthread_setspecific
231    Helgrind:Race
232    fun:pthread_setspecific
233 }
234
235 {
236    helgrind---pthread_getspecific
237    Helgrind:Race
238    fun:pthread_getspecific
239 }
240
241
242 ####################################################
243 # To do with dynamic linking
244 #
245 # helgrind---ld.so-...-dlsym was merged into helgrind-glibc2X-001
246
247
248 ####################################################
249 # To do with GNU libgomp
250 #
251 {
252    helgrind---libgomp43-1
253    Helgrind:Race
254    fun:gomp_ordered_sync
255 }
256
257 {
258    helgrind---libgomp43-1
259    Helgrind:Race
260    fun:gomp_ordered_next
261 }
262
263 {
264    helgrind---libgomp43-1
265    Helgrind:Race
266    fun:gomp_ordered_last
267 }