blob: a449a9880596ab0d6db39de5cf3c5120b53b17d4 [file] [log] [blame]
Colin Crossaf98f582021-05-12 17:27:32 -07001// Copyright 2021 Google Inc. All rights reserved.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package cc
16
17import (
Liz Kammerbb8d84f2021-06-21 12:53:03 -040018 "fmt"
Colin Cross3e5e7782022-06-17 22:17:05 +000019 "runtime"
Liz Kammerbb8d84f2021-06-21 12:53:03 -040020 "strings"
Colin Crossaf98f582021-05-12 17:27:32 -070021 "testing"
22
23 "android/soong/android"
24)
25
26var prepareForAsanTest = android.FixtureAddFile("asan/Android.bp", []byte(`
27 cc_library_shared {
Colin Cross4c4c1be2022-02-10 11:41:18 -080028 name: "libclang_rt.asan",
Colin Crossaf98f582021-05-12 17:27:32 -070029 }
30`))
31
Liz Kammerfd8a49f2022-10-31 10:31:11 -040032var prepareForTsanTest = android.FixtureAddFile("tsan/Android.bp", []byte(`
33 cc_library_shared {
34 name: "libclang_rt.tsan",
35 }
36`))
37
38// expectSharedLinkDep verifies that the from module links against the to module as a
39// shared library.
40func expectSharedLinkDep(t *testing.T, from, to android.TestingModule) {
41 t.Helper()
42 fromLink := from.Description("link")
43 toLink := to.Description("strip")
44
45 if g, w := fromLink.OrderOnly.Strings(), toLink.Output.String(); !android.InList(w, g) {
46 t.Errorf("%s should link against %s, expected %q, got %q",
47 from.Module(), to.Module(), w, g)
48 }
49}
50
51// expectStaticLinkDep verifies that the from module links against the to module as a
52// static library.
53func expectStaticLinkDep(t *testing.T, from, to android.TestingModule) {
54 t.Helper()
55 fromLink := from.Description("link")
56 toLink := to.Description("static link")
57
58 if g, w := fromLink.Implicits.Strings(), toLink.Output.String(); !android.InList(w, g) {
59 t.Errorf("%s should link against %s, expected %q, got %q",
60 from.Module(), to.Module(), w, g)
61 }
62
63}
64
65// expectInstallDep verifies that the install rule of the from module depends on the
66// install rule of the to module.
67func expectInstallDep(t *testing.T, from, to android.TestingModule) {
68 t.Helper()
69 fromInstalled := from.Description("install")
70 toInstalled := to.Description("install")
71
72 // combine implicits and order-only dependencies, host uses implicit but device uses
73 // order-only.
74 got := append(fromInstalled.Implicits.Strings(), fromInstalled.OrderOnly.Strings()...)
75 want := toInstalled.Output.String()
76 if !android.InList(want, got) {
77 t.Errorf("%s installation should depend on %s, expected %q, got %q",
78 from.Module(), to.Module(), want, got)
79 }
80}
81
Colin Crossaf98f582021-05-12 17:27:32 -070082func TestAsan(t *testing.T) {
83 bp := `
84 cc_binary {
85 name: "bin_with_asan",
86 host_supported: true,
87 shared_libs: [
88 "libshared",
89 "libasan",
90 ],
91 static_libs: [
92 "libstatic",
93 "libnoasan",
Liz Kammerecc659c2022-10-28 16:27:13 -040094 "libstatic_asan",
Colin Crossaf98f582021-05-12 17:27:32 -070095 ],
96 sanitize: {
97 address: true,
98 }
99 }
100
101 cc_binary {
102 name: "bin_no_asan",
103 host_supported: true,
104 shared_libs: [
105 "libshared",
106 "libasan",
107 ],
108 static_libs: [
109 "libstatic",
110 "libnoasan",
Liz Kammerecc659c2022-10-28 16:27:13 -0400111 "libstatic_asan",
Colin Crossaf98f582021-05-12 17:27:32 -0700112 ],
113 }
114
115 cc_library_shared {
116 name: "libshared",
117 host_supported: true,
118 shared_libs: ["libtransitive"],
119 }
120
121 cc_library_shared {
122 name: "libasan",
123 host_supported: true,
124 shared_libs: ["libtransitive"],
125 sanitize: {
126 address: true,
127 }
128 }
129
130 cc_library_shared {
131 name: "libtransitive",
132 host_supported: true,
133 }
134
135 cc_library_static {
136 name: "libstatic",
137 host_supported: true,
138 }
139
140 cc_library_static {
141 name: "libnoasan",
142 host_supported: true,
143 sanitize: {
144 address: false,
145 }
146 }
Liz Kammerecc659c2022-10-28 16:27:13 -0400147
148 cc_library_static {
149 name: "libstatic_asan",
150 host_supported: true,
151 sanitize: {
152 address: true,
153 }
154 }
155
Colin Crossaf98f582021-05-12 17:27:32 -0700156 `
157
158 result := android.GroupFixturePreparers(
159 prepareForCcTest,
160 prepareForAsanTest,
161 ).RunTestWithBp(t, bp)
162
163 check := func(t *testing.T, result *android.TestResult, variant string) {
164 asanVariant := variant + "_asan"
165 sharedVariant := variant + "_shared"
166 sharedAsanVariant := sharedVariant + "_asan"
167 staticVariant := variant + "_static"
168 staticAsanVariant := staticVariant + "_asan"
169
170 // The binaries, one with asan and one without
171 binWithAsan := result.ModuleForTests("bin_with_asan", asanVariant)
172 binNoAsan := result.ModuleForTests("bin_no_asan", variant)
173
174 // Shared libraries that don't request asan
175 libShared := result.ModuleForTests("libshared", sharedVariant)
176 libTransitive := result.ModuleForTests("libtransitive", sharedVariant)
177
178 // Shared library that requests asan
179 libAsan := result.ModuleForTests("libasan", sharedAsanVariant)
180
181 // Static library that uses an asan variant for bin_with_asan and a non-asan variant
182 // for bin_no_asan.
183 libStaticAsanVariant := result.ModuleForTests("libstatic", staticAsanVariant)
184 libStaticNoAsanVariant := result.ModuleForTests("libstatic", staticVariant)
185
186 // Static library that never uses asan.
187 libNoAsan := result.ModuleForTests("libnoasan", staticVariant)
188
Liz Kammerecc659c2022-10-28 16:27:13 -0400189 // Static library that specifies asan
190 libStaticAsan := result.ModuleForTests("libstatic_asan", staticAsanVariant)
191 libStaticAsanNoAsanVariant := result.ModuleForTests("libstatic_asan", staticVariant)
192
Liz Kammerfd8a49f2022-10-31 10:31:11 -0400193 expectSharedLinkDep(t, binWithAsan, libShared)
194 expectSharedLinkDep(t, binWithAsan, libAsan)
195 expectSharedLinkDep(t, libShared, libTransitive)
196 expectSharedLinkDep(t, libAsan, libTransitive)
Colin Crossaf98f582021-05-12 17:27:32 -0700197
Liz Kammerfd8a49f2022-10-31 10:31:11 -0400198 expectStaticLinkDep(t, binWithAsan, libStaticAsanVariant)
199 expectStaticLinkDep(t, binWithAsan, libNoAsan)
200 expectStaticLinkDep(t, binWithAsan, libStaticAsan)
Colin Crossaf98f582021-05-12 17:27:32 -0700201
Liz Kammerfd8a49f2022-10-31 10:31:11 -0400202 expectInstallDep(t, binWithAsan, libShared)
203 expectInstallDep(t, binWithAsan, libAsan)
204 expectInstallDep(t, binWithAsan, libTransitive)
205 expectInstallDep(t, libShared, libTransitive)
206 expectInstallDep(t, libAsan, libTransitive)
Colin Crossaf98f582021-05-12 17:27:32 -0700207
Liz Kammerfd8a49f2022-10-31 10:31:11 -0400208 expectSharedLinkDep(t, binNoAsan, libShared)
209 expectSharedLinkDep(t, binNoAsan, libAsan)
210 expectSharedLinkDep(t, libShared, libTransitive)
211 expectSharedLinkDep(t, libAsan, libTransitive)
Colin Crossaf98f582021-05-12 17:27:32 -0700212
Liz Kammerfd8a49f2022-10-31 10:31:11 -0400213 expectStaticLinkDep(t, binNoAsan, libStaticNoAsanVariant)
214 expectStaticLinkDep(t, binNoAsan, libNoAsan)
215 expectStaticLinkDep(t, binNoAsan, libStaticAsanNoAsanVariant)
Colin Crossaf98f582021-05-12 17:27:32 -0700216
Liz Kammerfd8a49f2022-10-31 10:31:11 -0400217 expectInstallDep(t, binNoAsan, libShared)
218 expectInstallDep(t, binNoAsan, libAsan)
219 expectInstallDep(t, binNoAsan, libTransitive)
220 expectInstallDep(t, libShared, libTransitive)
221 expectInstallDep(t, libAsan, libTransitive)
Colin Crossaf98f582021-05-12 17:27:32 -0700222 }
223
224 t.Run("host", func(t *testing.T) { check(t, result, result.Config.BuildOSTarget.String()) })
225 t.Run("device", func(t *testing.T) { check(t, result, "android_arm64_armv8-a") })
226}
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400227
Liz Kammerfd8a49f2022-10-31 10:31:11 -0400228func TestTsan(t *testing.T) {
229 bp := `
230 cc_binary {
231 name: "bin_with_tsan",
232 host_supported: true,
233 shared_libs: [
234 "libshared",
235 "libtsan",
236 ],
237 sanitize: {
238 thread: true,
239 }
240 }
241
242 cc_binary {
243 name: "bin_no_tsan",
244 host_supported: true,
245 shared_libs: [
246 "libshared",
247 "libtsan",
248 ],
249 }
250
251 cc_library_shared {
252 name: "libshared",
253 host_supported: true,
254 shared_libs: ["libtransitive"],
255 }
256
257 cc_library_shared {
258 name: "libtsan",
259 host_supported: true,
260 shared_libs: ["libtransitive"],
261 sanitize: {
262 thread: true,
263 }
264 }
265
266 cc_library_shared {
267 name: "libtransitive",
268 host_supported: true,
269 }
270`
271
272 result := android.GroupFixturePreparers(
273 prepareForCcTest,
274 prepareForTsanTest,
275 ).RunTestWithBp(t, bp)
276
277 check := func(t *testing.T, result *android.TestResult, variant string) {
278 tsanVariant := variant + "_tsan"
279 sharedVariant := variant + "_shared"
280 sharedTsanVariant := sharedVariant + "_tsan"
281
282 // The binaries, one with tsan and one without
283 binWithTsan := result.ModuleForTests("bin_with_tsan", tsanVariant)
284 binNoTsan := result.ModuleForTests("bin_no_tsan", variant)
285
286 // Shared libraries that don't request tsan
287 libShared := result.ModuleForTests("libshared", sharedVariant)
288 libTransitive := result.ModuleForTests("libtransitive", sharedVariant)
289
290 // Shared library that requests tsan
291 libTsan := result.ModuleForTests("libtsan", sharedTsanVariant)
292
293 expectSharedLinkDep(t, binWithTsan, libShared)
294 expectSharedLinkDep(t, binWithTsan, libTsan)
295 expectSharedLinkDep(t, libShared, libTransitive)
296 expectSharedLinkDep(t, libTsan, libTransitive)
297
298 expectSharedLinkDep(t, binNoTsan, libShared)
299 expectSharedLinkDep(t, binNoTsan, libTsan)
300 expectSharedLinkDep(t, libShared, libTransitive)
301 expectSharedLinkDep(t, libTsan, libTransitive)
302 }
303
304 t.Run("host", func(t *testing.T) { check(t, result, result.Config.BuildOSTarget.String()) })
305 t.Run("device", func(t *testing.T) { check(t, result, "android_arm64_armv8-a") })
306}
307
308func TestFuzz(t *testing.T) {
309 bp := `
310 cc_binary {
311 name: "bin_with_fuzzer",
312 host_supported: true,
313 shared_libs: [
314 "libshared",
315 "libfuzzer",
316 ],
317 static_libs: [
318 "libstatic",
319 "libnofuzzer",
320 "libstatic_fuzzer",
321 ],
322 sanitize: {
323 fuzzer: true,
324 }
325 }
326
327 cc_binary {
328 name: "bin_no_fuzzer",
329 host_supported: true,
330 shared_libs: [
331 "libshared",
332 "libfuzzer",
333 ],
334 static_libs: [
335 "libstatic",
336 "libnofuzzer",
337 "libstatic_fuzzer",
338 ],
339 }
340
341 cc_library_shared {
342 name: "libshared",
343 host_supported: true,
344 shared_libs: ["libtransitive"],
345 }
346
347 cc_library_shared {
348 name: "libfuzzer",
349 host_supported: true,
350 shared_libs: ["libtransitive"],
351 sanitize: {
352 fuzzer: true,
353 }
354 }
355
356 cc_library_shared {
357 name: "libtransitive",
358 host_supported: true,
359 }
360
361 cc_library_static {
362 name: "libstatic",
363 host_supported: true,
364 }
365
366 cc_library_static {
367 name: "libnofuzzer",
368 host_supported: true,
369 sanitize: {
370 fuzzer: false,
371 }
372 }
373
374 cc_library_static {
375 name: "libstatic_fuzzer",
376 host_supported: true,
377 }
378
379 `
380
381 result := android.GroupFixturePreparers(
382 prepareForCcTest,
383 ).RunTestWithBp(t, bp)
384
385 check := func(t *testing.T, result *android.TestResult, variant string) {
386 fuzzerVariant := variant + "_fuzzer"
387 sharedVariant := variant + "_shared"
388 sharedFuzzerVariant := sharedVariant + "_fuzzer"
389 staticVariant := variant + "_static"
390 staticFuzzerVariant := staticVariant + "_fuzzer"
391
392 // The binaries, one with fuzzer and one without
393 binWithFuzzer := result.ModuleForTests("bin_with_fuzzer", fuzzerVariant)
394 binNoFuzzer := result.ModuleForTests("bin_no_fuzzer", variant)
395
396 // Shared libraries that don't request fuzzer
397 libShared := result.ModuleForTests("libshared", sharedVariant)
398 libTransitive := result.ModuleForTests("libtransitive", sharedVariant)
399
400 // Shared libraries that don't request fuzzer
401 libSharedFuzzer := result.ModuleForTests("libshared", sharedFuzzerVariant)
402 libTransitiveFuzzer := result.ModuleForTests("libtransitive", sharedFuzzerVariant)
403
404 // Shared library that requests fuzzer
405 libFuzzer := result.ModuleForTests("libfuzzer", sharedFuzzerVariant)
406
407 // Static library that uses an fuzzer variant for bin_with_fuzzer and a non-fuzzer variant
408 // for bin_no_fuzzer.
409 libStaticFuzzerVariant := result.ModuleForTests("libstatic", staticFuzzerVariant)
410 libStaticNoFuzzerVariant := result.ModuleForTests("libstatic", staticVariant)
411
412 // Static library that never uses fuzzer.
413 libNoFuzzer := result.ModuleForTests("libnofuzzer", staticVariant)
414
415 // Static library that specifies fuzzer
416 libStaticFuzzer := result.ModuleForTests("libstatic_fuzzer", staticFuzzerVariant)
417 libStaticFuzzerNoFuzzerVariant := result.ModuleForTests("libstatic_fuzzer", staticVariant)
418
419 expectSharedLinkDep(t, binWithFuzzer, libSharedFuzzer)
420 expectSharedLinkDep(t, binWithFuzzer, libFuzzer)
421 expectSharedLinkDep(t, libSharedFuzzer, libTransitiveFuzzer)
422 expectSharedLinkDep(t, libFuzzer, libTransitiveFuzzer)
423
424 expectStaticLinkDep(t, binWithFuzzer, libStaticFuzzerVariant)
425 expectStaticLinkDep(t, binWithFuzzer, libNoFuzzer)
426 expectStaticLinkDep(t, binWithFuzzer, libStaticFuzzer)
427
428 expectSharedLinkDep(t, binNoFuzzer, libShared)
429 expectSharedLinkDep(t, binNoFuzzer, libFuzzer)
430 expectSharedLinkDep(t, libShared, libTransitive)
431 expectSharedLinkDep(t, libFuzzer, libTransitiveFuzzer)
432
433 expectStaticLinkDep(t, binNoFuzzer, libStaticNoFuzzerVariant)
434 expectStaticLinkDep(t, binNoFuzzer, libNoFuzzer)
435 expectStaticLinkDep(t, binNoFuzzer, libStaticFuzzerNoFuzzerVariant)
436 }
437
438 t.Run("device", func(t *testing.T) { check(t, result, "android_arm64_armv8-a") })
439}
440
Colin Cross3e5e7782022-06-17 22:17:05 +0000441func TestUbsan(t *testing.T) {
442 if runtime.GOOS != "linux" {
443 t.Skip("requires linux")
444 }
445
446 bp := `
447 cc_binary {
448 name: "bin_with_ubsan",
449 host_supported: true,
450 shared_libs: [
451 "libshared",
452 ],
453 static_libs: [
454 "libstatic",
455 "libnoubsan",
456 ],
457 sanitize: {
458 undefined: true,
459 }
460 }
461
462 cc_binary {
463 name: "bin_depends_ubsan",
464 host_supported: true,
465 shared_libs: [
466 "libshared",
467 ],
468 static_libs: [
469 "libstatic",
470 "libubsan",
471 "libnoubsan",
472 ],
473 }
474
475 cc_binary {
476 name: "bin_no_ubsan",
477 host_supported: true,
478 shared_libs: [
479 "libshared",
480 ],
481 static_libs: [
482 "libstatic",
483 "libnoubsan",
484 ],
485 }
486
487 cc_library_shared {
488 name: "libshared",
489 host_supported: true,
490 shared_libs: ["libtransitive"],
491 }
492
493 cc_library_shared {
494 name: "libtransitive",
495 host_supported: true,
496 }
497
498 cc_library_static {
499 name: "libubsan",
500 host_supported: true,
501 sanitize: {
502 undefined: true,
503 }
504 }
505
506 cc_library_static {
507 name: "libstatic",
508 host_supported: true,
509 }
510
511 cc_library_static {
512 name: "libnoubsan",
513 host_supported: true,
514 }
515 `
516
517 result := android.GroupFixturePreparers(
518 prepareForCcTest,
519 ).RunTestWithBp(t, bp)
520
521 check := func(t *testing.T, result *android.TestResult, variant string) {
522 staticVariant := variant + "_static"
523
524 minimalRuntime := result.ModuleForTests("libclang_rt.ubsan_minimal", staticVariant)
525
526 // The binaries, one with ubsan and one without
527 binWithUbsan := result.ModuleForTests("bin_with_ubsan", variant)
528 binDependsUbsan := result.ModuleForTests("bin_depends_ubsan", variant)
529 binNoUbsan := result.ModuleForTests("bin_no_ubsan", variant)
530
531 android.AssertStringListContains(t, "missing libclang_rt.ubsan_minimal in bin_with_ubsan static libs",
532 strings.Split(binWithUbsan.Rule("ld").Args["libFlags"], " "),
533 minimalRuntime.OutputFiles(t, "")[0].String())
534
535 android.AssertStringListContains(t, "missing libclang_rt.ubsan_minimal in bin_depends_ubsan static libs",
536 strings.Split(binDependsUbsan.Rule("ld").Args["libFlags"], " "),
537 minimalRuntime.OutputFiles(t, "")[0].String())
538
539 android.AssertStringListDoesNotContain(t, "unexpected libclang_rt.ubsan_minimal in bin_no_ubsan static libs",
540 strings.Split(binNoUbsan.Rule("ld").Args["libFlags"], " "),
541 minimalRuntime.OutputFiles(t, "")[0].String())
542
543 android.AssertStringListContains(t, "missing -Wl,--exclude-libs for minimal runtime in bin_with_ubsan",
544 strings.Split(binWithUbsan.Rule("ld").Args["ldFlags"], " "),
545 "-Wl,--exclude-libs="+minimalRuntime.OutputFiles(t, "")[0].Base())
546
547 android.AssertStringListContains(t, "missing -Wl,--exclude-libs for minimal runtime in bin_depends_ubsan static libs",
548 strings.Split(binDependsUbsan.Rule("ld").Args["ldFlags"], " "),
549 "-Wl,--exclude-libs="+minimalRuntime.OutputFiles(t, "")[0].Base())
550
551 android.AssertStringListDoesNotContain(t, "unexpected -Wl,--exclude-libs for minimal runtime in bin_no_ubsan static libs",
552 strings.Split(binNoUbsan.Rule("ld").Args["ldFlags"], " "),
553 "-Wl,--exclude-libs="+minimalRuntime.OutputFiles(t, "")[0].Base())
554 }
555
556 t.Run("host", func(t *testing.T) { check(t, result, result.Config.BuildOSTarget.String()) })
557 t.Run("device", func(t *testing.T) { check(t, result, "android_arm64_armv8-a") })
558}
559
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400560type MemtagNoteType int
561
562const (
563 None MemtagNoteType = iota + 1
564 Sync
565 Async
566)
567
568func (t MemtagNoteType) str() string {
569 switch t {
570 case None:
571 return "none"
572 case Sync:
573 return "sync"
574 case Async:
575 return "async"
576 default:
Liz Kammerd56ddb52021-06-21 17:37:39 -0400577 panic("type_note_invalid")
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400578 }
579}
580
581func checkHasMemtagNote(t *testing.T, m android.TestingModule, expected MemtagNoteType) {
Liz Kammerd56ddb52021-06-21 17:37:39 -0400582 t.Helper()
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400583
584 found := None
Florian Mayerd8434a42022-08-31 20:57:03 +0000585 ldFlags := m.Rule("ld").Args["ldFlags"]
586 if strings.Contains(ldFlags, "-fsanitize-memtag-mode=async") {
587 found = Async
588 } else if strings.Contains(ldFlags, "-fsanitize-memtag-mode=sync") {
589 found = Sync
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400590 }
591
592 if found != expected {
593 t.Errorf("Wrong Memtag note in target %q: found %q, expected %q", m.Module().(*Module).Name(), found.str(), expected.str())
594 }
595}
596
597var prepareForTestWithMemtagHeap = android.GroupFixturePreparers(
598 android.FixtureModifyMockFS(func(fs android.MockFS) {
599 templateBp := `
600 cc_test {
Liz Kammerd56ddb52021-06-21 17:37:39 -0400601 name: "unset_test_%[1]s",
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400602 gtest: false,
603 }
604
605 cc_test {
Liz Kammerd56ddb52021-06-21 17:37:39 -0400606 name: "no_memtag_test_%[1]s",
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400607 gtest: false,
608 sanitize: { memtag_heap: false },
609 }
610
611 cc_test {
Liz Kammerd56ddb52021-06-21 17:37:39 -0400612 name: "set_memtag_test_%[1]s",
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400613 gtest: false,
614 sanitize: { memtag_heap: true },
615 }
616
617 cc_test {
Liz Kammerd56ddb52021-06-21 17:37:39 -0400618 name: "set_memtag_set_async_test_%[1]s",
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400619 gtest: false,
620 sanitize: { memtag_heap: true, diag: { memtag_heap: false } },
621 }
622
623 cc_test {
Liz Kammerd56ddb52021-06-21 17:37:39 -0400624 name: "set_memtag_set_sync_test_%[1]s",
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400625 gtest: false,
626 sanitize: { memtag_heap: true, diag: { memtag_heap: true } },
627 }
628
Liz Kammerd56ddb52021-06-21 17:37:39 -0400629 cc_test {
630 name: "unset_memtag_set_sync_test_%[1]s",
631 gtest: false,
632 sanitize: { diag: { memtag_heap: true } },
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400633 }
634
635 cc_binary {
Liz Kammerd56ddb52021-06-21 17:37:39 -0400636 name: "unset_binary_%[1]s",
637 }
638
639 cc_binary {
640 name: "no_memtag_binary_%[1]s",
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400641 sanitize: { memtag_heap: false },
642 }
643
644 cc_binary {
Liz Kammerd56ddb52021-06-21 17:37:39 -0400645 name: "set_memtag_binary_%[1]s",
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400646 sanitize: { memtag_heap: true },
647 }
648
649 cc_binary {
Liz Kammerd56ddb52021-06-21 17:37:39 -0400650 name: "set_memtag_set_async_binary_%[1]s",
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400651 sanitize: { memtag_heap: true, diag: { memtag_heap: false } },
652 }
653
654 cc_binary {
Liz Kammerd56ddb52021-06-21 17:37:39 -0400655 name: "set_memtag_set_sync_binary_%[1]s",
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400656 sanitize: { memtag_heap: true, diag: { memtag_heap: true } },
657 }
Liz Kammerd56ddb52021-06-21 17:37:39 -0400658
659 cc_binary {
660 name: "unset_memtag_set_sync_binary_%[1]s",
661 sanitize: { diag: { memtag_heap: true } },
662 }
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400663 `
Liz Kammerd56ddb52021-06-21 17:37:39 -0400664 subdirNoOverrideBp := fmt.Sprintf(templateBp, "no_override")
665 subdirOverrideDefaultDisableBp := fmt.Sprintf(templateBp, "override_default_disable")
666 subdirSyncBp := fmt.Sprintf(templateBp, "override_default_sync")
667 subdirAsyncBp := fmt.Sprintf(templateBp, "override_default_async")
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400668
669 fs.Merge(android.MockFS{
Liz Kammerd56ddb52021-06-21 17:37:39 -0400670 "subdir_no_override/Android.bp": []byte(subdirNoOverrideBp),
671 "subdir_override_default_disable/Android.bp": []byte(subdirOverrideDefaultDisableBp),
672 "subdir_sync/Android.bp": []byte(subdirSyncBp),
673 "subdir_async/Android.bp": []byte(subdirAsyncBp),
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400674 })
675 }),
676 android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
Liz Kammerd56ddb52021-06-21 17:37:39 -0400677 variables.MemtagHeapExcludePaths = []string{"subdir_override_default_disable"}
678 // "subdir_override_default_disable" is covered by both include and override_default_disable paths. override_default_disable wins.
679 variables.MemtagHeapSyncIncludePaths = []string{"subdir_sync", "subdir_override_default_disable"}
680 variables.MemtagHeapAsyncIncludePaths = []string{"subdir_async", "subdir_override_default_disable"}
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400681 }),
682)
683
684func TestSanitizeMemtagHeap(t *testing.T) {
685 variant := "android_arm64_armv8-a"
686
687 result := android.GroupFixturePreparers(
688 prepareForCcTest,
689 prepareForTestWithMemtagHeap,
690 ).RunTest(t)
691 ctx := result.TestContext
692
Liz Kammerd56ddb52021-06-21 17:37:39 -0400693 checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_binary_no_override", variant), None)
694 checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_binary_override_default_async", variant), None)
695 checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_binary_override_default_disable", variant), None)
696 checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_binary_override_default_sync", variant), None)
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400697
Liz Kammerd56ddb52021-06-21 17:37:39 -0400698 checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_test_no_override", variant), None)
699 checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_test_override_default_async", variant), None)
700 checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_test_override_default_disable", variant), None)
701 checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_test_override_default_sync", variant), None)
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400702
Liz Kammerd56ddb52021-06-21 17:37:39 -0400703 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_binary_no_override", variant), Async)
704 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_binary_override_default_async", variant), Async)
705 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_binary_override_default_disable", variant), Async)
706 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_binary_override_default_sync", variant), Sync)
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400707
Liz Kammer7b920b42021-06-22 16:57:27 -0400708 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_test_no_override", variant), Sync)
709 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_test_override_default_async", variant), Sync)
710 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_test_override_default_disable", variant), Sync)
Liz Kammerd56ddb52021-06-21 17:37:39 -0400711 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_test_override_default_sync", variant), Sync)
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400712
Liz Kammerd56ddb52021-06-21 17:37:39 -0400713 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_binary_no_override", variant), Async)
714 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_binary_override_default_async", variant), Async)
715 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_binary_override_default_disable", variant), Async)
716 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_binary_override_default_sync", variant), Async)
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400717
Liz Kammerd56ddb52021-06-21 17:37:39 -0400718 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_test_no_override", variant), Async)
719 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_test_override_default_async", variant), Async)
720 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_test_override_default_disable", variant), Async)
721 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_test_override_default_sync", variant), Async)
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400722
Liz Kammerd56ddb52021-06-21 17:37:39 -0400723 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_binary_no_override", variant), Sync)
724 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_binary_override_default_async", variant), Sync)
725 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_binary_override_default_disable", variant), Sync)
726 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_binary_override_default_sync", variant), Sync)
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400727
Liz Kammerd56ddb52021-06-21 17:37:39 -0400728 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_test_no_override", variant), Sync)
729 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_test_override_default_async", variant), Sync)
730 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_test_override_default_disable", variant), Sync)
731 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_test_override_default_sync", variant), Sync)
732
733 // should sanitize: { diag: { memtag: true } } result in Sync instead of None here?
734 checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_binary_no_override", variant), None)
735 checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_binary_override_default_async", variant), Sync)
736 // should sanitize: { diag: { memtag: true } } result in Sync instead of None here?
737 checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_binary_override_default_disable", variant), None)
738 checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_binary_override_default_sync", variant), Sync)
739
740 checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_test_no_override", variant), Sync)
741 checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_test_override_default_async", variant), Sync)
742 checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_test_override_default_disable", variant), Sync)
743 checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_test_override_default_sync", variant), Sync)
744
745 checkHasMemtagNote(t, ctx.ModuleForTests("unset_binary_no_override", variant), None)
746 checkHasMemtagNote(t, ctx.ModuleForTests("unset_binary_override_default_async", variant), Async)
747 checkHasMemtagNote(t, ctx.ModuleForTests("unset_binary_override_default_disable", variant), None)
748 checkHasMemtagNote(t, ctx.ModuleForTests("unset_binary_override_default_sync", variant), Sync)
749
750 checkHasMemtagNote(t, ctx.ModuleForTests("unset_test_no_override", variant), Sync)
751 checkHasMemtagNote(t, ctx.ModuleForTests("unset_test_override_default_async", variant), Sync)
752 checkHasMemtagNote(t, ctx.ModuleForTests("unset_test_override_default_disable", variant), Sync)
753 checkHasMemtagNote(t, ctx.ModuleForTests("unset_test_override_default_sync", variant), Sync)
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400754}
755
756func TestSanitizeMemtagHeapWithSanitizeDevice(t *testing.T) {
757 variant := "android_arm64_armv8-a"
758
759 result := android.GroupFixturePreparers(
760 prepareForCcTest,
761 prepareForTestWithMemtagHeap,
762 android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
763 variables.SanitizeDevice = []string{"memtag_heap"}
764 }),
765 ).RunTest(t)
766 ctx := result.TestContext
767
Liz Kammerd56ddb52021-06-21 17:37:39 -0400768 checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_binary_no_override", variant), None)
769 checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_binary_override_default_async", variant), None)
770 checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_binary_override_default_disable", variant), None)
771 checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_binary_override_default_sync", variant), None)
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400772
Liz Kammerd56ddb52021-06-21 17:37:39 -0400773 checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_test_no_override", variant), None)
774 checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_test_override_default_async", variant), None)
775 checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_test_override_default_disable", variant), None)
776 checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_test_override_default_sync", variant), None)
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400777
Liz Kammerd56ddb52021-06-21 17:37:39 -0400778 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_binary_no_override", variant), Async)
779 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_binary_override_default_async", variant), Async)
780 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_binary_override_default_disable", variant), Async)
781 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_binary_override_default_sync", variant), Sync)
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400782
Liz Kammer7b920b42021-06-22 16:57:27 -0400783 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_test_no_override", variant), Sync)
784 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_test_override_default_async", variant), Sync)
785 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_test_override_default_disable", variant), Sync)
Liz Kammerd56ddb52021-06-21 17:37:39 -0400786 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_test_override_default_sync", variant), Sync)
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400787
Liz Kammerd56ddb52021-06-21 17:37:39 -0400788 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_binary_no_override", variant), Async)
789 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_binary_override_default_async", variant), Async)
790 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_binary_override_default_disable", variant), Async)
791 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_binary_override_default_sync", variant), Async)
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400792
Liz Kammerd56ddb52021-06-21 17:37:39 -0400793 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_test_no_override", variant), Async)
794 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_test_override_default_async", variant), Async)
795 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_test_override_default_disable", variant), Async)
796 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_test_override_default_sync", variant), Async)
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400797
Liz Kammerd56ddb52021-06-21 17:37:39 -0400798 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_binary_no_override", variant), Sync)
799 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_binary_override_default_async", variant), Sync)
800 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_binary_override_default_disable", variant), Sync)
801 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_binary_override_default_sync", variant), Sync)
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400802
Liz Kammerd56ddb52021-06-21 17:37:39 -0400803 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_test_no_override", variant), Sync)
804 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_test_override_default_async", variant), Sync)
805 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_test_override_default_disable", variant), Sync)
806 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_test_override_default_sync", variant), Sync)
807
808 checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_binary_no_override", variant), Sync)
809 checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_binary_override_default_async", variant), Sync)
810 // should sanitize: { diag: { memtag: true } } result in Sync instead of None here?
811 checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_binary_override_default_disable", variant), None)
812 checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_binary_override_default_sync", variant), Sync)
813
814 checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_test_no_override", variant), Sync)
815 checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_test_override_default_async", variant), Sync)
816 checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_test_override_default_disable", variant), Sync)
817 checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_test_override_default_sync", variant), Sync)
818
819 checkHasMemtagNote(t, ctx.ModuleForTests("unset_binary_no_override", variant), Async)
820 checkHasMemtagNote(t, ctx.ModuleForTests("unset_binary_override_default_async", variant), Async)
821 checkHasMemtagNote(t, ctx.ModuleForTests("unset_binary_override_default_disable", variant), None)
822 checkHasMemtagNote(t, ctx.ModuleForTests("unset_binary_override_default_sync", variant), Sync)
823
824 checkHasMemtagNote(t, ctx.ModuleForTests("unset_test_no_override", variant), Sync)
825 checkHasMemtagNote(t, ctx.ModuleForTests("unset_test_override_default_async", variant), Sync)
826 checkHasMemtagNote(t, ctx.ModuleForTests("unset_test_override_default_disable", variant), Sync)
827 checkHasMemtagNote(t, ctx.ModuleForTests("unset_test_override_default_sync", variant), Sync)
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400828}
829
830func TestSanitizeMemtagHeapWithSanitizeDeviceDiag(t *testing.T) {
831 variant := "android_arm64_armv8-a"
832
833 result := android.GroupFixturePreparers(
834 prepareForCcTest,
835 prepareForTestWithMemtagHeap,
836 android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
837 variables.SanitizeDevice = []string{"memtag_heap"}
838 variables.SanitizeDeviceDiag = []string{"memtag_heap"}
839 }),
840 ).RunTest(t)
841 ctx := result.TestContext
842
Liz Kammerd56ddb52021-06-21 17:37:39 -0400843 checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_binary_no_override", variant), None)
844 checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_binary_override_default_async", variant), None)
845 checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_binary_override_default_disable", variant), None)
846 checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_binary_override_default_sync", variant), None)
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400847
Liz Kammerd56ddb52021-06-21 17:37:39 -0400848 checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_test_no_override", variant), None)
849 checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_test_override_default_async", variant), None)
850 checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_test_override_default_disable", variant), None)
851 checkHasMemtagNote(t, ctx.ModuleForTests("no_memtag_test_override_default_sync", variant), None)
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400852
Liz Kammerd56ddb52021-06-21 17:37:39 -0400853 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_binary_no_override", variant), Sync)
854 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_binary_override_default_async", variant), Sync)
855 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_binary_override_default_disable", variant), Sync)
856 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_binary_override_default_sync", variant), Sync)
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400857
Liz Kammerd56ddb52021-06-21 17:37:39 -0400858 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_test_no_override", variant), Sync)
859 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_test_override_default_async", variant), Sync)
860 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_test_override_default_disable", variant), Sync)
861 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_test_override_default_sync", variant), Sync)
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400862
Liz Kammerd56ddb52021-06-21 17:37:39 -0400863 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_binary_no_override", variant), Async)
864 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_binary_override_default_async", variant), Async)
865 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_binary_override_default_disable", variant), Async)
866 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_binary_override_default_sync", variant), Async)
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400867
Liz Kammerd56ddb52021-06-21 17:37:39 -0400868 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_test_no_override", variant), Async)
869 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_test_override_default_async", variant), Async)
870 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_test_override_default_disable", variant), Async)
871 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_async_test_override_default_sync", variant), Async)
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400872
Liz Kammerd56ddb52021-06-21 17:37:39 -0400873 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_binary_no_override", variant), Sync)
874 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_binary_override_default_async", variant), Sync)
875 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_binary_override_default_disable", variant), Sync)
876 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_binary_override_default_sync", variant), Sync)
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400877
Liz Kammerd56ddb52021-06-21 17:37:39 -0400878 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_test_no_override", variant), Sync)
879 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_test_override_default_async", variant), Sync)
880 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_test_override_default_disable", variant), Sync)
881 checkHasMemtagNote(t, ctx.ModuleForTests("set_memtag_set_sync_test_override_default_sync", variant), Sync)
882
883 checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_binary_no_override", variant), Sync)
884 checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_binary_override_default_async", variant), Sync)
885 // should sanitize: { diag: { memtag: true } } result in Sync instead of None here?
886 checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_binary_override_default_disable", variant), None)
887 checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_binary_override_default_sync", variant), Sync)
888
889 checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_test_no_override", variant), Sync)
890 checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_test_override_default_async", variant), Sync)
891 checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_test_override_default_disable", variant), Sync)
892 checkHasMemtagNote(t, ctx.ModuleForTests("unset_memtag_set_sync_test_override_default_sync", variant), Sync)
893
894 checkHasMemtagNote(t, ctx.ModuleForTests("unset_binary_no_override", variant), Sync)
895 checkHasMemtagNote(t, ctx.ModuleForTests("unset_binary_override_default_async", variant), Sync)
896 checkHasMemtagNote(t, ctx.ModuleForTests("unset_binary_override_default_disable", variant), None)
897 checkHasMemtagNote(t, ctx.ModuleForTests("unset_binary_override_default_sync", variant), Sync)
898
899 checkHasMemtagNote(t, ctx.ModuleForTests("unset_test_no_override", variant), Sync)
900 checkHasMemtagNote(t, ctx.ModuleForTests("unset_test_override_default_async", variant), Sync)
901 checkHasMemtagNote(t, ctx.ModuleForTests("unset_test_override_default_disable", variant), Sync)
902 checkHasMemtagNote(t, ctx.ModuleForTests("unset_test_override_default_sync", variant), Sync)
Liz Kammerbb8d84f2021-06-21 12:53:03 -0400903}