blob: d8943df0a6e4bec47c22e41561d5be1beee58d52 [file] [log] [blame]
sewardj95386ae2007-11-09 22:50:55 +00001
2##----------------------------------------------------------------------##
3# Suppressions for the Helgrind tool when using
sewardjf7218152008-12-22 20:21:38 +00004# a glibc-2.{3,4,5,6,7,8,9} system
sewardj95386ae2007-11-09 22:50:55 +00005
sewardjf7218152008-12-22 20:21:38 +00006####################################################
7# glibc-2.X specific
8# These are generic cover-alls which catch a lot of stuff
9# in various combinations of ld, libc and libpthread
sewardj95386ae2007-11-09 22:50:55 +000010#
sewardj95386ae2007-11-09 22:50:55 +000011{
sewardjf7218152008-12-22 20:21:38 +000012 helgrind-glibc2X-001
sewardj963286e2007-11-10 12:44:56 +000013 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +000014 obj:/lib*/ld-2.*so*
15 obj:/lib*/ld-2.*so*
sewardj95386ae2007-11-09 22:50:55 +000016}
17{
sewardjf7218152008-12-22 20:21:38 +000018 helgrind-glibc2X-002
sewardj963286e2007-11-10 12:44:56 +000019 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +000020 obj:/lib*/ld-2.*so*
21 obj:/lib*/libc-2.*so*
22 obj:/lib*/ld-2.*so*
sewardj95386ae2007-11-09 22:50:55 +000023}
24{
sewardjf7218152008-12-22 20:21:38 +000025 helgrind-glibc2X-003
sewardj963286e2007-11-10 12:44:56 +000026 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +000027 obj:/lib*/ld-2.*so*
28 obj:/lib*/libc-2.*so*
29 obj:/lib*/libc-2.*so*
sewardj95386ae2007-11-09 22:50:55 +000030}
31{
sewardjf7218152008-12-22 20:21:38 +000032 helgrind-glibc2X-004
sewardj963286e2007-11-10 12:44:56 +000033 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +000034 obj:/lib*/libc-2.*so*
35 obj:/lib*/libc-2.*so*
sewardj95386ae2007-11-09 22:50:55 +000036}
37{
sewardjf7218152008-12-22 20:21:38 +000038 helgrind-glibc2X-005
sewardj963286e2007-11-10 12:44:56 +000039 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +000040 obj:/lib*/libpthread-2.*so*
41 obj:/lib*/libpthread-2.*so*
42 obj:/lib*/libpthread-2.*so*
sewardj95386ae2007-11-09 22:50:55 +000043}
44{
sewardjf7218152008-12-22 20:21:38 +000045 helgrind-glibc2X-006
sewardj963286e2007-11-10 12:44:56 +000046 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +000047 obj:/lib*/libpthread-2.*so*
48 obj:/lib*/libpthread-2.*so*
49 obj:/lib*/libc-2.*so*
sewardj95386ae2007-11-09 22:50:55 +000050}
51{
sewardjf7218152008-12-22 20:21:38 +000052 helgrind-glibc2X-007
sewardj963286e2007-11-10 12:44:56 +000053 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +000054 obj:/lib*/ld-2.*so*
55 obj:/lib*/libc-2.*so*
56 obj:/lib*/libdl-2.*so*
sewardj95386ae2007-11-09 22:50:55 +000057}
58{
sewardjf7218152008-12-22 20:21:38 +000059 helgrind-glibc2X-008
sewardj963286e2007-11-10 12:44:56 +000060 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +000061 obj:/lib*/libpthread-2.*so*
62 obj:/lib*/libc-2.*so*
sewardj95386ae2007-11-09 22:50:55 +000063}
64{
sewardjf7218152008-12-22 20:21:38 +000065 helgrind-glibc2X-009
sewardj963286e2007-11-10 12:44:56 +000066 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +000067 obj:/lib*/libc-2.*so*
sewardj95386ae2007-11-09 22:50:55 +000068 fun:*
sewardjf7218152008-12-22 20:21:38 +000069 obj:/lib*/libc-2.*so*
sewardj95386ae2007-11-09 22:50:55 +000070}
71{
sewardjf7218152008-12-22 20:21:38 +000072 helgrind-glibc2X-010
sewardj963286e2007-11-10 12:44:56 +000073 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +000074 obj:/lib*/ld-2.*so*
75 obj:/lib*/libpthread-2.*so*
sewardj95386ae2007-11-09 22:50:55 +000076}
77{
sewardjf7218152008-12-22 20:21:38 +000078 helgrind-glibc2X-011
sewardj963286e2007-11-10 12:44:56 +000079 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +000080 obj:/lib*/libc-2.*so*
81 obj:/lib*/libpthread-2.*so*
sewardj95386ae2007-11-09 22:50:55 +000082}
83{
sewardjf7218152008-12-22 20:21:38 +000084 helgrind-glibc2X-012
sewardj963286e2007-11-10 12:44:56 +000085 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +000086 obj:/lib*/ld-2.*so*
87 obj:/lib*/ld-2.*so*
88 obj:/lib*/libc-2.*so*
89}
90{
91 helgrind-glibc2X-013
92 Helgrind:Race
93 obj:/lib*/ld-2.*so*
sewardj95386ae2007-11-09 22:50:55 +000094 fun:*
sewardjf7218152008-12-22 20:21:38 +000095 obj:/lib*/ld-2.*so*
sewardj95386ae2007-11-09 22:50:55 +000096}
97{
sewardjf7218152008-12-22 20:21:38 +000098 helgrind-glibc2X-014
sewardj963286e2007-11-10 12:44:56 +000099 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +0000100 obj:/lib*/ld-2.*so*
101 obj:/lib*/ld-2.*so*
102 obj:/lib*/libpthread-2.*so*
sewardj95386ae2007-11-09 22:50:55 +0000103}
sewardj4b03c422008-12-23 11:12:40 +0000104{
105 helgrind-glibc2X-015
106 Helgrind:Race
107 obj:/lib*/libc-2.*so*
108 obj:/lib*/libdl-2.*so*
109 obj:/lib*/ld-2.*so*
110}
111{
112 helgrind-glibc2X-016
113 Helgrind:Race
114 obj:/lib*/libpthread-2.*so*
115 obj:/lib*/ld-2.*so*
116 obj:/lib*/ld-2.*so*
117}
sewardj95386ae2007-11-09 22:50:55 +0000118
119# These are very ugly. They are needed to suppress errors inside (eg)
120# NPTL's pthread_cond_signal. Why only one stack frame -- at least we
121# should see the wrapper calling the real functions, right?
122# Unfortunately, no: the real functions are handwritten assembly (in
123# the glibc-2.5 sources) and does not create a proper stack frame.
124# Therefore it's only one level of unwinding before we're back out in
125# user code rather than the 2 levels you'd expect.
126{
sewardjf7218152008-12-22 20:21:38 +0000127 helgrind-glibc2X-101
sewardj963286e2007-11-10 12:44:56 +0000128 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +0000129 obj:/lib*/libpthread-2.*so*
sewardj95386ae2007-11-09 22:50:55 +0000130 fun:pthread_*
131}
132{
sewardjf7218152008-12-22 20:21:38 +0000133 helgrind-glibc2X-102
sewardj963286e2007-11-10 12:44:56 +0000134 Helgrind:Race
sewardj95386ae2007-11-09 22:50:55 +0000135 fun:mythread_wrapper
sewardjf7218152008-12-22 20:21:38 +0000136 obj:/lib*/libpthread-2.*so*
sewardj95386ae2007-11-09 22:50:55 +0000137}
138{
sewardjf7218152008-12-22 20:21:38 +0000139 helgrind-glibc2X-103
sewardj963286e2007-11-10 12:44:56 +0000140 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +0000141 fun:pthread_cond_*@@GLIBC_2.*
sewardj95386ae2007-11-09 22:50:55 +0000142}
143{
sewardjf7218152008-12-22 20:21:38 +0000144 helgrind-glibc2X-104
sewardj963286e2007-11-10 12:44:56 +0000145 Helgrind:Race
sewardj95386ae2007-11-09 22:50:55 +0000146 fun:__lll_mutex_*
147}
148{
sewardjf7218152008-12-22 20:21:38 +0000149 helgrind-glibc2X-105
sewardj963286e2007-11-10 12:44:56 +0000150 Helgrind:Race
sewardj95386ae2007-11-09 22:50:55 +0000151 fun:pthread_rwlock_*lock*
152}
sewardjb9354be2007-11-18 01:40:14 +0000153{
sewardjf7218152008-12-22 20:21:38 +0000154 helgrind-glibc2X-106
sewardj963286e2007-11-10 12:44:56 +0000155 Helgrind:Race
sewardj95386ae2007-11-09 22:50:55 +0000156 fun:__lll_lock_wait
157}
sewardja8e939e2007-11-13 20:51:26 +0000158{
sewardjf7218152008-12-22 20:21:38 +0000159 helgrind-glibc2X-107
sewardja8e939e2007-11-13 20:51:26 +0000160 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +0000161 obj:/lib*/libpthread-2.*so*
sewardja8e939e2007-11-13 20:51:26 +0000162 fun:sem_*
163}
sewardja1c0df32007-11-18 18:22:50 +0000164{
sewardjf7218152008-12-22 20:21:38 +0000165 helgrind-glibc2X-108
sewardja1c0df32007-11-18 18:22:50 +0000166 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +0000167 fun:clone
sewardja1c0df32007-11-18 18:22:50 +0000168}
169{
sewardjf7218152008-12-22 20:21:38 +0000170 helgrind-glibc2X-109
sewardja1c0df32007-11-18 18:22:50 +0000171 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +0000172 fun:start_thread
sewardja1c0df32007-11-18 18:22:50 +0000173}
174{
sewardjf7218152008-12-22 20:21:38 +0000175 helgrind-glibc2X-110
sewardja1c0df32007-11-18 18:22:50 +0000176 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +0000177 obj:/lib*/libc-2.*so*
sewardja1c0df32007-11-18 18:22:50 +0000178 fun:pthread_*
179}
180{
sewardjf7218152008-12-22 20:21:38 +0000181 helgrind-glibc2X-111
sewardja1c0df32007-11-18 18:22:50 +0000182 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +0000183 fun:__lll_*lock_*
sewardj95386ae2007-11-09 22:50:55 +0000184}
185{
sewardjf7218152008-12-22 20:21:38 +0000186 helgrind-glibc2X-112
sewardj963286e2007-11-10 12:44:56 +0000187 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +0000188 fun:pthread_create@*
sewardj95386ae2007-11-09 22:50:55 +0000189}
190{
sewardjf7218152008-12-22 20:21:38 +0000191 helgrind-glibc2X-113
sewardj1990d5d2007-12-06 01:58:05 +0000192 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +0000193 fun:pthread_barrier_wait*
sewardj95386ae2007-11-09 22:50:55 +0000194}
195
sewardj13ca8a62008-12-20 09:20:33 +0000196
197####################################################
sewardjf7218152008-12-22 20:21:38 +0000198# qt4 specific (GNU mangling)
199#
sewardj95386ae2007-11-09 22:50:55 +0000200{
sewardj0f7a0292008-11-19 10:41:55 +0000201 helgrind-qt4---QMutex::lock()-QMutex::lock()
sewardj963286e2007-11-10 12:44:56 +0000202 Helgrind:Race
sewardj95386ae2007-11-09 22:50:55 +0000203 fun:_ZN6QMutex4lockEv
204 fun:_ZN6QMutex4lockEv
205}
sewardj0f7a0292008-11-19 10:41:55 +0000206
sewardj13ca8a62008-12-20 09:20:33 +0000207{
208 helgrind-qt4---QMutex::unlock()-QMutex::unlock()
209 Helgrind:Race
210 fun:_ZN6QMutex6unlockEv
211 fun:_ZN6QMutex6unlockEv
212}
213
sewardj0f7a0292008-11-19 10:41:55 +0000214{
215 helgrind-qt4---pthread_setspecific-QThreadPrivate::start(void*)
216 Helgrind:Race
217 fun:pthread_setspecific
218 fun:_ZN14QThreadPrivate5startEPv
219}
220
sewardj357cb162008-12-13 01:18:38 +0000221
222####################################################
223# Other stuff.
224#
225# pthread_exit apparently calls some kind of unwind
226# mechanism - maybe to remove some number of frames
227# from the thread's stack, so as to get back to the
228# outermost frame for the thread? Anyway..
229
230{
231 helgrind---*Unwind*-...-pthread_exit
232 Helgrind:Race
233 fun:*Unwind*
234 ...
235 fun:pthread_exit
236}
237
238{
239 helgrind---...-*Unwind*-*pthread_unwind*
240 Helgrind:Race
241 ...
242 fun:*Unwind*
243 fun:*pthread_unwind*
244}
sewardj13ca8a62008-12-20 09:20:33 +0000245
sewardj4b03c422008-12-23 11:12:40 +0000246{
247 helgrind---...-*Unwind*-*pthread_unwind*
248 Helgrind:Race
249 ...
250 fun:_Unwind*
251 ...
252 fun:_Unwind_Backtrace
253}
254
255
256
sewardj13ca8a62008-12-20 09:20:33 +0000257
258####################################################
259# To do with thread stack allocation and deallocation?
260#
261{
262 helgrind---free_stacks-__deallocate_stack
263 Helgrind:Race
264 fun:free_stacks
265 fun:__deallocate_stack
266}
267
268{
269 helgrind---__deallocate_stack-start_thread-clone
270 Helgrind:Race
271 fun:__deallocate_stack
272 fun:start_thread
273 fun:clone
274}
275
276
277####################################################
278# To do with pthread_{set,get}specific
279#
280{
281 helgrind---pthread_setspecific
282 Helgrind:Race
283 fun:pthread_setspecific
284}
285
286{
287 helgrind---pthread_getspecific
288 Helgrind:Race
289 fun:pthread_getspecific
290}
291
292
293####################################################
294# To do with dynamic linking
295#
296{
297 helgrind---ld.so-...-dlsym
298 Helgrind:Race
299 obj:/lib*/ld-2.*so*
300 ...
301 fun:dlsym
302}