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