blob: 4b910238522aefe5d294502eb163d9df00f8a789 [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#
sewardj94a9b242009-01-02 23:17:02 +000011# Note this is heavyhanded and not very clever:
12#
13# - suppress anything that has its top frame in ld.so
14# That's fine, since it's mostly dynamic linking stuff,
15# which has various deliberate (harmless) races
16#
17# - suppress anything that has its top frame in libc.so.
18# This really isn't clever, since it could hide some
19# legitimate races. But the problem is, if we don't do
20# this, then loads of errors to do with stdio are reported, because
21# H fails to see glibc's internal locking/unlocking of FILE*s
22# as required by POSIX. A better solution is needed.
23
sewardj95386ae2007-11-09 22:50:55 +000024{
sewardjf7218152008-12-22 20:21:38 +000025 helgrind-glibc2X-001
sewardj963286e2007-11-10 12:44:56 +000026 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +000027 obj:/lib*/ld-2.*so*
sewardj95386ae2007-11-09 22:50:55 +000028}
sewardj94a9b242009-01-02 23:17:02 +000029
sewardj4f75be32008-12-29 14:46:26 +000030# helgrind-glibc2X-002 was merged into helgrind-glibc2X-001
sewardj94a9b242009-01-02 23:17:02 +000031
sewardj4f75be32008-12-29 14:46:26 +000032# helgrind-glibc2X-003 was merged into helgrind-glibc2X-001
sewardj94a9b242009-01-02 23:17:02 +000033
sewardj95386ae2007-11-09 22:50:55 +000034{
sewardjf7218152008-12-22 20:21:38 +000035 helgrind-glibc2X-004
sewardj963286e2007-11-10 12:44:56 +000036 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +000037 obj:/lib*/libc-2.*so*
sewardj95386ae2007-11-09 22:50:55 +000038}
sewardj94a9b242009-01-02 23:17:02 +000039
sewardj95386ae2007-11-09 22:50:55 +000040{
sewardjf7218152008-12-22 20:21:38 +000041 helgrind-glibc2X-005
sewardj963286e2007-11-10 12:44:56 +000042 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +000043 obj:/lib*/libpthread-2.*so*
44 obj:/lib*/libpthread-2.*so*
sewardj95386ae2007-11-09 22:50:55 +000045}
sewardj94a9b242009-01-02 23:17:02 +000046
47# helgrind-glibc2X-006 was merged into helgrind-glibc2X-005
48
sewardj4f75be32008-12-29 14:46:26 +000049# helgrind-glibc2X-007 was merged into helgrind-glibc2X-001
sewardj94a9b242009-01-02 23:17:02 +000050
sewardj95386ae2007-11-09 22:50:55 +000051{
sewardjf7218152008-12-22 20:21:38 +000052 helgrind-glibc2X-008
sewardj963286e2007-11-10 12:44:56 +000053 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +000054 obj:/lib*/libpthread-2.*so*
55 obj:/lib*/libc-2.*so*
sewardj95386ae2007-11-09 22:50:55 +000056}
sewardj94a9b242009-01-02 23:17:02 +000057
58# helgrind-glibc2X-009 was merged into helgrind-glibc2X-004
59
sewardj4f75be32008-12-29 14:46:26 +000060# helgrind-glibc2X-010 was merged into helgrind-glibc2X-001
sewardj94a9b242009-01-02 23:17:02 +000061
62# helgrind-glibc2X-011 was merged into helgrind-glibc2X-004
63
sewardj4f75be32008-12-29 14:46:26 +000064# helgrind-glibc2X-012 was merged into helgrind-glibc2X-001
sewardj94a9b242009-01-02 23:17:02 +000065
sewardj4f75be32008-12-29 14:46:26 +000066# helgrind-glibc2X-013 was merged into helgrind-glibc2X-001
sewardj94a9b242009-01-02 23:17:02 +000067
sewardj4f75be32008-12-29 14:46:26 +000068# helgrind-glibc2X-014 was merged into helgrind-glibc2X-001
sewardj94a9b242009-01-02 23:17:02 +000069
70# helgrind-glibc2X-015 was merged into helgrind-glibc2X-004
71
sewardj4b03c422008-12-23 11:12:40 +000072{
73 helgrind-glibc2X-016
74 Helgrind:Race
75 obj:/lib*/libpthread-2.*so*
76 obj:/lib*/ld-2.*so*
sewardj4b03c422008-12-23 11:12:40 +000077}
sewardj95386ae2007-11-09 22:50:55 +000078
79# These are very ugly. They are needed to suppress errors inside (eg)
80# NPTL's pthread_cond_signal. Why only one stack frame -- at least we
81# should see the wrapper calling the real functions, right?
82# Unfortunately, no: the real functions are handwritten assembly (in
83# the glibc-2.5 sources) and does not create a proper stack frame.
84# Therefore it's only one level of unwinding before we're back out in
85# user code rather than the 2 levels you'd expect.
86{
sewardjf7218152008-12-22 20:21:38 +000087 helgrind-glibc2X-101
sewardj963286e2007-11-10 12:44:56 +000088 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +000089 obj:/lib*/libpthread-2.*so*
sewardj95386ae2007-11-09 22:50:55 +000090 fun:pthread_*
91}
92{
sewardjf7218152008-12-22 20:21:38 +000093 helgrind-glibc2X-102
sewardj963286e2007-11-10 12:44:56 +000094 Helgrind:Race
sewardj95386ae2007-11-09 22:50:55 +000095 fun:mythread_wrapper
sewardjf7218152008-12-22 20:21:38 +000096 obj:/lib*/libpthread-2.*so*
sewardj95386ae2007-11-09 22:50:55 +000097}
98{
sewardjf7218152008-12-22 20:21:38 +000099 helgrind-glibc2X-103
sewardj963286e2007-11-10 12:44:56 +0000100 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +0000101 fun:pthread_cond_*@@GLIBC_2.*
sewardj95386ae2007-11-09 22:50:55 +0000102}
103{
sewardjf7218152008-12-22 20:21:38 +0000104 helgrind-glibc2X-104
sewardj963286e2007-11-10 12:44:56 +0000105 Helgrind:Race
sewardj95386ae2007-11-09 22:50:55 +0000106 fun:__lll_mutex_*
107}
108{
sewardjf7218152008-12-22 20:21:38 +0000109 helgrind-glibc2X-105
sewardj963286e2007-11-10 12:44:56 +0000110 Helgrind:Race
sewardj95386ae2007-11-09 22:50:55 +0000111 fun:pthread_rwlock_*lock*
112}
sewardjb9354be2007-11-18 01:40:14 +0000113{
sewardjf7218152008-12-22 20:21:38 +0000114 helgrind-glibc2X-106
sewardj963286e2007-11-10 12:44:56 +0000115 Helgrind:Race
sewardj95386ae2007-11-09 22:50:55 +0000116 fun:__lll_lock_wait
117}
sewardja8e939e2007-11-13 20:51:26 +0000118{
sewardjf7218152008-12-22 20:21:38 +0000119 helgrind-glibc2X-107
sewardja8e939e2007-11-13 20:51:26 +0000120 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +0000121 obj:/lib*/libpthread-2.*so*
sewardja8e939e2007-11-13 20:51:26 +0000122 fun:sem_*
123}
sewardja1c0df32007-11-18 18:22:50 +0000124{
sewardjf7218152008-12-22 20:21:38 +0000125 helgrind-glibc2X-108
sewardja1c0df32007-11-18 18:22:50 +0000126 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +0000127 fun:clone
sewardja1c0df32007-11-18 18:22:50 +0000128}
129{
sewardjf7218152008-12-22 20:21:38 +0000130 helgrind-glibc2X-109
sewardja1c0df32007-11-18 18:22:50 +0000131 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +0000132 fun:start_thread
sewardja1c0df32007-11-18 18:22:50 +0000133}
134{
sewardjf7218152008-12-22 20:21:38 +0000135 helgrind-glibc2X-110
sewardja1c0df32007-11-18 18:22:50 +0000136 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +0000137 obj:/lib*/libc-2.*so*
sewardja1c0df32007-11-18 18:22:50 +0000138 fun:pthread_*
139}
140{
sewardjf7218152008-12-22 20:21:38 +0000141 helgrind-glibc2X-111
sewardja1c0df32007-11-18 18:22:50 +0000142 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +0000143 fun:__lll_*lock_*
sewardj95386ae2007-11-09 22:50:55 +0000144}
145{
sewardjf7218152008-12-22 20:21:38 +0000146 helgrind-glibc2X-112
sewardj963286e2007-11-10 12:44:56 +0000147 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +0000148 fun:pthread_create@*
sewardj95386ae2007-11-09 22:50:55 +0000149}
150{
sewardjf7218152008-12-22 20:21:38 +0000151 helgrind-glibc2X-113
sewardj1990d5d2007-12-06 01:58:05 +0000152 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +0000153 fun:pthread_barrier_wait*
sewardj95386ae2007-11-09 22:50:55 +0000154}
155
sewardj13ca8a62008-12-20 09:20:33 +0000156
157####################################################
sewardjf7218152008-12-22 20:21:38 +0000158# qt4 specific (GNU mangling)
159#
sewardj95386ae2007-11-09 22:50:55 +0000160{
sewardj0f7a0292008-11-19 10:41:55 +0000161 helgrind-qt4---QMutex::lock()-QMutex::lock()
sewardj963286e2007-11-10 12:44:56 +0000162 Helgrind:Race
sewardj95386ae2007-11-09 22:50:55 +0000163 fun:_ZN6QMutex4lockEv
164 fun:_ZN6QMutex4lockEv
165}
sewardj0f7a0292008-11-19 10:41:55 +0000166
sewardj13ca8a62008-12-20 09:20:33 +0000167{
168 helgrind-qt4---QMutex::unlock()-QMutex::unlock()
169 Helgrind:Race
170 fun:_ZN6QMutex6unlockEv
171 fun:_ZN6QMutex6unlockEv
172}
173
sewardj0f7a0292008-11-19 10:41:55 +0000174{
175 helgrind-qt4---pthread_setspecific-QThreadPrivate::start(void*)
176 Helgrind:Race
177 fun:pthread_setspecific
178 fun:_ZN14QThreadPrivate5startEPv
179}
180
sewardj357cb162008-12-13 01:18:38 +0000181
182####################################################
183# Other stuff.
184#
185# pthread_exit apparently calls some kind of unwind
186# mechanism - maybe to remove some number of frames
187# from the thread's stack, so as to get back to the
188# outermost frame for the thread? Anyway..
189
190{
191 helgrind---*Unwind*-...-pthread_exit
192 Helgrind:Race
193 fun:*Unwind*
194 ...
195 fun:pthread_exit
196}
197
198{
199 helgrind---...-*Unwind*-*pthread_unwind*
200 Helgrind:Race
201 ...
202 fun:*Unwind*
203 fun:*pthread_unwind*
204}
sewardj13ca8a62008-12-20 09:20:33 +0000205
sewardj4b03c422008-12-23 11:12:40 +0000206{
207 helgrind---...-*Unwind*-*pthread_unwind*
208 Helgrind:Race
209 ...
210 fun:_Unwind*
211 ...
212 fun:_Unwind_Backtrace
213}
214
215
216
sewardj13ca8a62008-12-20 09:20:33 +0000217
218####################################################
219# To do with thread stack allocation and deallocation?
220#
221{
222 helgrind---free_stacks-__deallocate_stack
223 Helgrind:Race
224 fun:free_stacks
225 fun:__deallocate_stack
226}
227
228{
229 helgrind---__deallocate_stack-start_thread-clone
230 Helgrind:Race
231 fun:__deallocate_stack
232 fun:start_thread
233 fun:clone
234}
235
236
237####################################################
238# To do with pthread_{set,get}specific
239#
240{
241 helgrind---pthread_setspecific
242 Helgrind:Race
243 fun:pthread_setspecific
244}
245
246{
247 helgrind---pthread_getspecific
248 Helgrind:Race
249 fun:pthread_getspecific
250}
251
252
253####################################################
254# To do with dynamic linking
255#
sewardj4f75be32008-12-29 14:46:26 +0000256# helgrind---ld.so-...-dlsym was merged into helgrind-glibc2X-001
sewardj94a9b242009-01-02 23:17:02 +0000257