1# Suppressions for Android's libc (bionic) and probably other
2# stuff too.
3
4{
5  bionic_dlopen
6  Memcheck:Addr4
7  fun:__dl_strlen
8  ...
9  fun:__dl_find_library
10  fun:__dl_dlopen
11}
12
13{
14  bionic_dlopen_c
15  Memcheck:Cond
16  fun:__dl_strlen
17  ...
18  fun:__dl_find_library
19  fun:__dl_dlopen
20}
21
22# this is a real bug in the Android stack -- this routine really does read and write below sp.
23{
24   sha1_block_data_order-reads-below-sp
25   Memcheck:Addr4
26   fun:sha1_block_data_order
27}
28
29# This is a false error, and it's reported in the wrong place.  Memcheck misinterprets
30# a restore path in dvmPlatformInvoke: "ldmdb   r4, {r4, r5, r6, r7, r8, r9, sp, pc}"
31# because it breaks this up into non-atomic IR.  This non atomic IR restores PC
32# first, then SP, and then r4-r9; the latter of which happen after (from Memcheck's
33# point of view) the assignment to SP, hence constitute a read below SP (depends
34# which way SP moved, I guess).  Worse, because these happen after the restore to SP,
35# the errors are reported in the callers of this function, not here :-(
36# General bogusness all round, but I don't see how to handle it any better.  Hence
37# hide all the callers; fortunately there appear to be not many.
38#
39{
40   dvmPlatformInvoke-misinterpretation-1
41   Memcheck:Addr4
42   fun:dvmCallJNIMethod_virtualNoRef
43}
44
45{
46   dvmPlatformInvoke-misinterpretation-2
47   Memcheck:Addr4
48   fun:dvmCallJNIMethod_staticNoRef
49}
50
51{
52   dvmPlatformInvoke-misinterpretation-3
53   Memcheck:Addr4
54   fun:dvmCallJNIMethod_general
55}
56