sanitize_test.go 19 KB

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