1*333d2b36SAndroid Build Coastguard Workerpackage rust 2*333d2b36SAndroid Build Coastguard Worker 3*333d2b36SAndroid Build Coastguard Workerimport ( 4*333d2b36SAndroid Build Coastguard Worker "fmt" 5*333d2b36SAndroid Build Coastguard Worker "strings" 6*333d2b36SAndroid Build Coastguard Worker "testing" 7*333d2b36SAndroid Build Coastguard Worker 8*333d2b36SAndroid Build Coastguard Worker "android/soong/android" 9*333d2b36SAndroid Build Coastguard Worker) 10*333d2b36SAndroid Build Coastguard Worker 11*333d2b36SAndroid Build Coastguard Workertype MemtagNoteType int 12*333d2b36SAndroid Build Coastguard Worker 13*333d2b36SAndroid Build Coastguard Workerconst ( 14*333d2b36SAndroid Build Coastguard Worker None MemtagNoteType = iota + 1 15*333d2b36SAndroid Build Coastguard Worker Sync 16*333d2b36SAndroid Build Coastguard Worker Async 17*333d2b36SAndroid Build Coastguard Worker) 18*333d2b36SAndroid Build Coastguard Worker 19*333d2b36SAndroid Build Coastguard Workerfunc (t MemtagNoteType) str() string { 20*333d2b36SAndroid Build Coastguard Worker switch t { 21*333d2b36SAndroid Build Coastguard Worker case None: 22*333d2b36SAndroid Build Coastguard Worker return "none" 23*333d2b36SAndroid Build Coastguard Worker case Sync: 24*333d2b36SAndroid Build Coastguard Worker return "sync" 25*333d2b36SAndroid Build Coastguard Worker case Async: 26*333d2b36SAndroid Build Coastguard Worker return "async" 27*333d2b36SAndroid Build Coastguard Worker default: 28*333d2b36SAndroid Build Coastguard Worker panic("type_note_invalid") 29*333d2b36SAndroid Build Coastguard Worker } 30*333d2b36SAndroid Build Coastguard Worker} 31*333d2b36SAndroid Build Coastguard Worker 32*333d2b36SAndroid Build Coastguard Workerfunc checkHasMemtagNote(t *testing.T, m android.TestingModule, expected MemtagNoteType) { 33*333d2b36SAndroid Build Coastguard Worker t.Helper() 34*333d2b36SAndroid Build Coastguard Worker note_async := "note_memtag_heap_async" 35*333d2b36SAndroid Build Coastguard Worker note_sync := "note_memtag_heap_sync" 36*333d2b36SAndroid Build Coastguard Worker 37*333d2b36SAndroid Build Coastguard Worker found := None 38*333d2b36SAndroid Build Coastguard Worker implicits := m.Rule("rustc").Implicits 39*333d2b36SAndroid Build Coastguard Worker for _, lib := range implicits { 40*333d2b36SAndroid Build Coastguard Worker if strings.Contains(lib.Rel(), note_async) { 41*333d2b36SAndroid Build Coastguard Worker found = Async 42*333d2b36SAndroid Build Coastguard Worker break 43*333d2b36SAndroid Build Coastguard Worker } else if strings.Contains(lib.Rel(), note_sync) { 44*333d2b36SAndroid Build Coastguard Worker found = Sync 45*333d2b36SAndroid Build Coastguard Worker break 46*333d2b36SAndroid Build Coastguard Worker } 47*333d2b36SAndroid Build Coastguard Worker } 48*333d2b36SAndroid Build Coastguard Worker 49*333d2b36SAndroid Build Coastguard Worker if found != expected { 50*333d2b36SAndroid Build Coastguard Worker t.Errorf("Wrong Memtag note in target %q: found %q, expected %q", m.Module().(*Module).Name(), found.str(), expected.str()) 51*333d2b36SAndroid Build Coastguard Worker } 52*333d2b36SAndroid Build Coastguard Worker} 53*333d2b36SAndroid Build Coastguard Worker 54*333d2b36SAndroid Build Coastguard Workervar prepareForTestWithMemtagHeap = android.GroupFixturePreparers( 55*333d2b36SAndroid Build Coastguard Worker android.FixtureModifyMockFS(func(fs android.MockFS) { 56*333d2b36SAndroid Build Coastguard Worker templateBp := ` 57*333d2b36SAndroid Build Coastguard Worker rust_test { 58*333d2b36SAndroid Build Coastguard Worker name: "unset_test_%[1]s", 59*333d2b36SAndroid Build Coastguard Worker srcs: ["foo.rs"], 60*333d2b36SAndroid Build Coastguard Worker } 61*333d2b36SAndroid Build Coastguard Worker 62*333d2b36SAndroid Build Coastguard Worker rust_test { 63*333d2b36SAndroid Build Coastguard Worker name: "no_memtag_test_%[1]s", 64*333d2b36SAndroid Build Coastguard Worker srcs: ["foo.rs"], 65*333d2b36SAndroid Build Coastguard Worker sanitize: { memtag_heap: false }, 66*333d2b36SAndroid Build Coastguard Worker } 67*333d2b36SAndroid Build Coastguard Worker 68*333d2b36SAndroid Build Coastguard Worker rust_test { 69*333d2b36SAndroid Build Coastguard Worker name: "set_memtag_test_%[1]s", 70*333d2b36SAndroid Build Coastguard Worker srcs: ["foo.rs"], 71*333d2b36SAndroid Build Coastguard Worker sanitize: { memtag_heap: true }, 72*333d2b36SAndroid Build Coastguard Worker } 73*333d2b36SAndroid Build Coastguard Worker 74*333d2b36SAndroid Build Coastguard Worker rust_test { 75*333d2b36SAndroid Build Coastguard Worker name: "set_memtag_set_async_test_%[1]s", 76*333d2b36SAndroid Build Coastguard Worker srcs: ["foo.rs"], 77*333d2b36SAndroid Build Coastguard Worker sanitize: { memtag_heap: true, diag: { memtag_heap: false } }, 78*333d2b36SAndroid Build Coastguard Worker } 79*333d2b36SAndroid Build Coastguard Worker 80*333d2b36SAndroid Build Coastguard Worker rust_test { 81*333d2b36SAndroid Build Coastguard Worker name: "set_memtag_set_sync_test_%[1]s", 82*333d2b36SAndroid Build Coastguard Worker srcs: ["foo.rs"], 83*333d2b36SAndroid Build Coastguard Worker sanitize: { memtag_heap: true, diag: { memtag_heap: true } }, 84*333d2b36SAndroid Build Coastguard Worker } 85*333d2b36SAndroid Build Coastguard Worker 86*333d2b36SAndroid Build Coastguard Worker rust_test { 87*333d2b36SAndroid Build Coastguard Worker name: "unset_memtag_set_sync_test_%[1]s", 88*333d2b36SAndroid Build Coastguard Worker srcs: ["foo.rs"], 89*333d2b36SAndroid Build Coastguard Worker sanitize: { diag: { memtag_heap: true } }, 90*333d2b36SAndroid Build Coastguard Worker } 91*333d2b36SAndroid Build Coastguard Worker 92*333d2b36SAndroid Build Coastguard Worker rust_binary { 93*333d2b36SAndroid Build Coastguard Worker name: "unset_binary_%[1]s", 94*333d2b36SAndroid Build Coastguard Worker srcs: ["foo.rs"], 95*333d2b36SAndroid Build Coastguard Worker } 96*333d2b36SAndroid Build Coastguard Worker 97*333d2b36SAndroid Build Coastguard Worker rust_binary { 98*333d2b36SAndroid Build Coastguard Worker name: "no_memtag_binary_%[1]s", 99*333d2b36SAndroid Build Coastguard Worker srcs: ["foo.rs"], 100*333d2b36SAndroid Build Coastguard Worker sanitize: { memtag_heap: false }, 101*333d2b36SAndroid Build Coastguard Worker } 102*333d2b36SAndroid Build Coastguard Worker 103*333d2b36SAndroid Build Coastguard Worker rust_binary { 104*333d2b36SAndroid Build Coastguard Worker name: "set_memtag_binary_%[1]s", 105*333d2b36SAndroid Build Coastguard Worker srcs: ["foo.rs"], 106*333d2b36SAndroid Build Coastguard Worker sanitize: { memtag_heap: true }, 107*333d2b36SAndroid Build Coastguard Worker } 108*333d2b36SAndroid Build Coastguard Worker 109*333d2b36SAndroid Build Coastguard Worker rust_binary { 110*333d2b36SAndroid Build Coastguard Worker name: "set_memtag_set_async_binary_%[1]s", 111*333d2b36SAndroid Build Coastguard Worker srcs: ["foo.rs"], 112*333d2b36SAndroid Build Coastguard Worker sanitize: { memtag_heap: true, diag: { memtag_heap: false } }, 113*333d2b36SAndroid Build Coastguard Worker } 114*333d2b36SAndroid Build Coastguard Worker 115*333d2b36SAndroid Build Coastguard Worker rust_binary { 116*333d2b36SAndroid Build Coastguard Worker name: "set_memtag_set_sync_binary_%[1]s", 117*333d2b36SAndroid Build Coastguard Worker srcs: ["foo.rs"], 118*333d2b36SAndroid Build Coastguard Worker sanitize: { memtag_heap: true, diag: { memtag_heap: true } }, 119*333d2b36SAndroid Build Coastguard Worker } 120*333d2b36SAndroid Build Coastguard Worker 121*333d2b36SAndroid Build Coastguard Worker rust_binary { 122*333d2b36SAndroid Build Coastguard Worker name: "unset_memtag_set_sync_binary_%[1]s", 123*333d2b36SAndroid Build Coastguard Worker srcs: ["foo.rs"], 124*333d2b36SAndroid Build Coastguard Worker sanitize: { diag: { memtag_heap: true } }, 125*333d2b36SAndroid Build Coastguard Worker } 126*333d2b36SAndroid Build Coastguard Worker ` 127*333d2b36SAndroid Build Coastguard Worker subdirNoOverrideBp := fmt.Sprintf(templateBp, "no_override") 128*333d2b36SAndroid Build Coastguard Worker subdirOverrideDefaultDisableBp := fmt.Sprintf(templateBp, "override_default_disable") 129*333d2b36SAndroid Build Coastguard Worker subdirSyncBp := fmt.Sprintf(templateBp, "override_default_sync") 130*333d2b36SAndroid Build Coastguard Worker subdirAsyncBp := fmt.Sprintf(templateBp, "override_default_async") 131*333d2b36SAndroid Build Coastguard Worker 132*333d2b36SAndroid Build Coastguard Worker fs.Merge(android.MockFS{ 133*333d2b36SAndroid Build Coastguard Worker "subdir_no_override/Android.bp": []byte(subdirNoOverrideBp), 134*333d2b36SAndroid Build Coastguard Worker "subdir_override_default_disable/Android.bp": []byte(subdirOverrideDefaultDisableBp), 135*333d2b36SAndroid Build Coastguard Worker "subdir_sync/Android.bp": []byte(subdirSyncBp), 136*333d2b36SAndroid Build Coastguard Worker "subdir_async/Android.bp": []byte(subdirAsyncBp), 137*333d2b36SAndroid Build Coastguard Worker }) 138*333d2b36SAndroid Build Coastguard Worker }), 139*333d2b36SAndroid Build Coastguard Worker android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) { 140*333d2b36SAndroid Build Coastguard Worker variables.MemtagHeapExcludePaths = []string{"subdir_override_default_disable"} 141*333d2b36SAndroid Build Coastguard Worker // "subdir_override_default_disable" is covered by both include and override_default_disable paths. override_default_disable wins. 142*333d2b36SAndroid Build Coastguard Worker variables.MemtagHeapSyncIncludePaths = []string{"subdir_sync", "subdir_override_default_disable"} 143*333d2b36SAndroid Build Coastguard Worker variables.MemtagHeapAsyncIncludePaths = []string{"subdir_async", "subdir_override_default_disable"} 144*333d2b36SAndroid Build Coastguard Worker }), 145*333d2b36SAndroid Build Coastguard Worker) 146*333d2b36SAndroid Build Coastguard Worker 147*333d2b36SAndroid Build Coastguard Workerfunc TestSanitizeMemtagHeap(t *testing.T) { 148*333d2b36SAndroid Build Coastguard Worker variant := "android_arm64_armv8-a" 149*333d2b36SAndroid Build Coastguard Worker 150*333d2b36SAndroid Build Coastguard Worker result := android.GroupFixturePreparers( 151*333d2b36SAndroid Build Coastguard Worker prepareForRustTest, 152*333d2b36SAndroid Build Coastguard Worker prepareForTestWithMemtagHeap, 153*333d2b36SAndroid Build Coastguard Worker ).RunTest(t) 154*333d2b36SAndroid Build Coastguard Worker ctx := result.TestContext 155*333d2b36SAndroid Build Coastguard Worker 156*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_binary_no_override", variant), None) 157*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_binary_override_default_async", variant), None) 158*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_binary_override_default_disable", variant), None) 159*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_binary_override_default_sync", variant), None) 160*333d2b36SAndroid Build Coastguard Worker 161*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_test_no_override", variant), None) 162*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_test_override_default_async", variant), None) 163*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_test_override_default_disable", variant), None) 164*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_test_override_default_sync", variant), None) 165*333d2b36SAndroid Build Coastguard Worker 166*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_binary_no_override", variant), Async) 167*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_binary_override_default_async", variant), Async) 168*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_binary_override_default_disable", variant), Async) 169*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_binary_override_default_sync", variant), Sync) 170*333d2b36SAndroid Build Coastguard Worker 171*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_test_no_override", variant), Sync) 172*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_test_override_default_async", variant), Sync) 173*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_test_override_default_disable", variant), Sync) 174*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_test_override_default_sync", variant), Sync) 175*333d2b36SAndroid Build Coastguard Worker 176*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_binary_no_override", variant), Async) 177*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_binary_override_default_async", variant), Async) 178*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_binary_override_default_disable", variant), Async) 179*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_binary_override_default_sync", variant), Async) 180*333d2b36SAndroid Build Coastguard Worker 181*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_test_no_override", variant), Async) 182*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_test_override_default_async", variant), Async) 183*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_test_override_default_disable", variant), Async) 184*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_test_override_default_sync", variant), Async) 185*333d2b36SAndroid Build Coastguard Worker 186*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_binary_no_override", variant), Sync) 187*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_binary_override_default_async", variant), Sync) 188*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_binary_override_default_disable", variant), Sync) 189*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_binary_override_default_sync", variant), Sync) 190*333d2b36SAndroid Build Coastguard Worker 191*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_test_no_override", variant), Sync) 192*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_test_override_default_async", variant), Sync) 193*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_test_override_default_disable", variant), Sync) 194*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_test_override_default_sync", variant), Sync) 195*333d2b36SAndroid Build Coastguard Worker 196*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_binary_no_override", variant), None) 197*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_binary_override_default_async", variant), Sync) 198*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_binary_override_default_disable", variant), None) 199*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_binary_override_default_sync", variant), Sync) 200*333d2b36SAndroid Build Coastguard Worker 201*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_test_no_override", variant), Sync) 202*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_test_override_default_async", variant), Sync) 203*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_test_override_default_disable", variant), Sync) 204*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_test_override_default_sync", variant), Sync) 205*333d2b36SAndroid Build Coastguard Worker 206*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_binary_no_override", variant), None) 207*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_binary_override_default_async", variant), Async) 208*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_binary_override_default_disable", variant), None) 209*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_binary_override_default_sync", variant), Sync) 210*333d2b36SAndroid Build Coastguard Worker 211*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_test_no_override", variant), Sync) 212*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_test_override_default_async", variant), Sync) 213*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_test_override_default_disable", variant), Sync) 214*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_test_override_default_sync", variant), Sync) 215*333d2b36SAndroid Build Coastguard Worker} 216*333d2b36SAndroid Build Coastguard Worker 217*333d2b36SAndroid Build Coastguard Workerfunc TestSanitizeMemtagHeapWithSanitizeDevice(t *testing.T) { 218*333d2b36SAndroid Build Coastguard Worker variant := "android_arm64_armv8-a" 219*333d2b36SAndroid Build Coastguard Worker 220*333d2b36SAndroid Build Coastguard Worker result := android.GroupFixturePreparers( 221*333d2b36SAndroid Build Coastguard Worker prepareForRustTest, 222*333d2b36SAndroid Build Coastguard Worker prepareForTestWithMemtagHeap, 223*333d2b36SAndroid Build Coastguard Worker android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) { 224*333d2b36SAndroid Build Coastguard Worker variables.SanitizeDevice = []string{"memtag_heap"} 225*333d2b36SAndroid Build Coastguard Worker }), 226*333d2b36SAndroid Build Coastguard Worker ).RunTest(t) 227*333d2b36SAndroid Build Coastguard Worker ctx := result.TestContext 228*333d2b36SAndroid Build Coastguard Worker 229*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_binary_no_override", variant), None) 230*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_binary_override_default_async", variant), None) 231*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_binary_override_default_disable", variant), None) 232*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_binary_override_default_sync", variant), None) 233*333d2b36SAndroid Build Coastguard Worker 234*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_test_no_override", variant), None) 235*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_test_override_default_async", variant), None) 236*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_test_override_default_disable", variant), None) 237*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_test_override_default_sync", variant), None) 238*333d2b36SAndroid Build Coastguard Worker 239*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_binary_no_override", variant), Async) 240*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_binary_override_default_async", variant), Async) 241*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_binary_override_default_disable", variant), Async) 242*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_binary_override_default_sync", variant), Sync) 243*333d2b36SAndroid Build Coastguard Worker 244*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_test_no_override", variant), Sync) 245*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_test_override_default_async", variant), Sync) 246*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_test_override_default_disable", variant), Sync) 247*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_test_override_default_sync", variant), Sync) 248*333d2b36SAndroid Build Coastguard Worker 249*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_binary_no_override", variant), Async) 250*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_binary_override_default_async", variant), Async) 251*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_binary_override_default_disable", variant), Async) 252*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_binary_override_default_sync", variant), Async) 253*333d2b36SAndroid Build Coastguard Worker 254*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_test_no_override", variant), Async) 255*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_test_override_default_async", variant), Async) 256*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_test_override_default_disable", variant), Async) 257*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_test_override_default_sync", variant), Async) 258*333d2b36SAndroid Build Coastguard Worker 259*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_binary_no_override", variant), Sync) 260*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_binary_override_default_async", variant), Sync) 261*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_binary_override_default_disable", variant), Sync) 262*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_binary_override_default_sync", variant), Sync) 263*333d2b36SAndroid Build Coastguard Worker 264*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_test_no_override", variant), Sync) 265*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_test_override_default_async", variant), Sync) 266*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_test_override_default_disable", variant), Sync) 267*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_test_override_default_sync", variant), Sync) 268*333d2b36SAndroid Build Coastguard Worker 269*333d2b36SAndroid Build Coastguard Worker // should sanitize: { diag: { memtag: true } } result in Sync instead of None here? 270*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_binary_no_override", variant), Sync) 271*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_binary_override_default_async", variant), Sync) 272*333d2b36SAndroid Build Coastguard Worker // should sanitize: { diag: { memtag: true } } result in Sync instead of None here? 273*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_binary_override_default_disable", variant), None) 274*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_binary_override_default_sync", variant), Sync) 275*333d2b36SAndroid Build Coastguard Worker 276*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_test_no_override", variant), Sync) 277*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_test_override_default_async", variant), Sync) 278*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_test_override_default_disable", variant), Sync) 279*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_test_override_default_sync", variant), Sync) 280*333d2b36SAndroid Build Coastguard Worker 281*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_binary_no_override", variant), Async) 282*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_binary_override_default_async", variant), Async) 283*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_binary_override_default_disable", variant), None) 284*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_binary_override_default_sync", variant), Sync) 285*333d2b36SAndroid Build Coastguard Worker 286*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_test_no_override", variant), Sync) 287*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_test_override_default_async", variant), Sync) 288*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_test_override_default_disable", variant), Sync) 289*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_test_override_default_sync", variant), Sync) 290*333d2b36SAndroid Build Coastguard Worker} 291*333d2b36SAndroid Build Coastguard Worker 292*333d2b36SAndroid Build Coastguard Workerfunc TestSanitizeMemtagHeapWithSanitizeDeviceDiag(t *testing.T) { 293*333d2b36SAndroid Build Coastguard Worker variant := "android_arm64_armv8-a" 294*333d2b36SAndroid Build Coastguard Worker 295*333d2b36SAndroid Build Coastguard Worker result := android.GroupFixturePreparers( 296*333d2b36SAndroid Build Coastguard Worker prepareForRustTest, 297*333d2b36SAndroid Build Coastguard Worker prepareForTestWithMemtagHeap, 298*333d2b36SAndroid Build Coastguard Worker android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) { 299*333d2b36SAndroid Build Coastguard Worker variables.SanitizeDevice = []string{"memtag_heap"} 300*333d2b36SAndroid Build Coastguard Worker variables.SanitizeDeviceDiag = []string{"memtag_heap"} 301*333d2b36SAndroid Build Coastguard Worker }), 302*333d2b36SAndroid Build Coastguard Worker ).RunTest(t) 303*333d2b36SAndroid Build Coastguard Worker ctx := result.TestContext 304*333d2b36SAndroid Build Coastguard Worker 305*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_binary_no_override", variant), None) 306*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_binary_override_default_async", variant), None) 307*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_binary_override_default_disable", variant), None) 308*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_binary_override_default_sync", variant), None) 309*333d2b36SAndroid Build Coastguard Worker 310*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_test_no_override", variant), None) 311*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_test_override_default_async", variant), None) 312*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_test_override_default_disable", variant), None) 313*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_test_override_default_sync", variant), None) 314*333d2b36SAndroid Build Coastguard Worker 315*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_binary_no_override", variant), Sync) 316*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_binary_override_default_async", variant), Sync) 317*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_binary_override_default_disable", variant), Sync) 318*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_binary_override_default_sync", variant), Sync) 319*333d2b36SAndroid Build Coastguard Worker 320*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_test_no_override", variant), Sync) 321*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_test_override_default_async", variant), Sync) 322*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_test_override_default_disable", variant), Sync) 323*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_test_override_default_sync", variant), Sync) 324*333d2b36SAndroid Build Coastguard Worker 325*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_binary_no_override", variant), Async) 326*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_binary_override_default_async", variant), Async) 327*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_binary_override_default_disable", variant), Async) 328*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_binary_override_default_sync", variant), Async) 329*333d2b36SAndroid Build Coastguard Worker 330*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_test_no_override", variant), Async) 331*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_test_override_default_async", variant), Async) 332*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_test_override_default_disable", variant), Async) 333*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_test_override_default_sync", variant), Async) 334*333d2b36SAndroid Build Coastguard Worker 335*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_binary_no_override", variant), Sync) 336*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_binary_override_default_async", variant), Sync) 337*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_binary_override_default_disable", variant), Sync) 338*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_binary_override_default_sync", variant), Sync) 339*333d2b36SAndroid Build Coastguard Worker 340*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_test_no_override", variant), Sync) 341*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_test_override_default_async", variant), Sync) 342*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_test_override_default_disable", variant), Sync) 343*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_test_override_default_sync", variant), Sync) 344*333d2b36SAndroid Build Coastguard Worker 345*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_binary_no_override", variant), Sync) 346*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_binary_override_default_async", variant), Sync) 347*333d2b36SAndroid Build Coastguard Worker // should sanitize: { diag: { memtag: true } } result in Sync instead of None here? 348*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_binary_override_default_disable", variant), None) 349*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_binary_override_default_sync", variant), Sync) 350*333d2b36SAndroid Build Coastguard Worker 351*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_test_no_override", variant), Sync) 352*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_test_override_default_async", variant), Sync) 353*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_test_override_default_disable", variant), Sync) 354*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_test_override_default_sync", variant), Sync) 355*333d2b36SAndroid Build Coastguard Worker 356*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_binary_no_override", variant), Sync) 357*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_binary_override_default_async", variant), Sync) 358*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_binary_override_default_disable", variant), None) 359*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_binary_override_default_sync", variant), Sync) 360*333d2b36SAndroid Build Coastguard Worker 361*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_test_no_override", variant), Sync) 362*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_test_override_default_async", variant), Sync) 363*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_test_override_default_disable", variant), Sync) 364*333d2b36SAndroid Build Coastguard Worker checkHasMemtagNote(t, ctx.ModuleForTests("unset_test_override_default_sync", variant), Sync) 365*333d2b36SAndroid Build Coastguard Worker} 366