Index: clang/lib/Sema/SemaDeclAttr.cpp =================================================================== --- clang/lib/Sema/SemaDeclAttr.cpp +++ clang/lib/Sema/SemaDeclAttr.cpp @@ -7856,7 +7856,7 @@ static bool isSanitizerAttributeAllowedOnGlobals(StringRef Sanitizer) { return Sanitizer == "address" || Sanitizer == "hwaddress" || - Sanitizer == "memtag"; + Sanitizer == "memtag" || Sanitizer == "all"; } static void handleNoSanitizeAttr(Sema &S, Decl *D, const ParsedAttr &AL) { Index: clang/test/CodeGen/asan-globals.cpp =================================================================== --- clang/test/CodeGen/asan-globals.cpp +++ clang/test/CodeGen/asan-globals.cpp @@ -11,6 +11,7 @@ int dyn_init_global = global; int __attribute__((no_sanitize("address"))) attributed_global; int __attribute__((disable_sanitizer_instrumentation)) disable_instrumentation_global; +int __attribute__((no_sanitize("all"))) no_sanitize_all_global; int ignorelisted_global; extern int __attribute__((no_sanitize("address"))) external_global; @@ -34,6 +35,7 @@ // GLOBS: @{{.*}}attributed_global{{.*}} ={{.*}} global {{.*}} no_sanitize_address // GLOBS: @{{.*}}disable_instrumentation_global{{.*}} ={{.*}} global {{.*}} no_sanitize_address +// GLOBS: @{{.*}}no_sanitize_all_global{{.*}} ={{.*}} global {{.*}} no_sanitize_address // GLOBS: @{{.*}}ignorelisted_global{{.*}} ={{.*}} global {{.*}} no_sanitize_address // ASAN: @{{.*}}sectioned_global{{.*}} ={{.*}} global { i32, [28 x i8] }{{.*}}, align 32 @@ -82,6 +84,7 @@ // IGNORELIST-SRC: @{{.*}}dyn_init_global{{.*}} ={{.*}} global {{.*}} no_sanitize_address // IGNORELIST-SRC: @{{.*}}attributed_global{{.*}} ={{.*}} global {{.*}} no_sanitize_address // IGNORELIST-SRC: @{{.*}}disable_instrumentation_global{{.*}} ={{.*}} global {{.*}} no_sanitize_address +// IGNORELIST-SRC: @{{.*}}no_sanitize_all_global{{.*}} ={{.*}} global {{.*}} no_sanitize_address // IGNORELIST-SRC: @{{.*}}ignorelisted_global{{.*}} ={{.*}} global {{.*}} no_sanitize_address // IGNORELIST-SRC: @{{.*}}sectioned_global{{.*}} ={{.*}} global {{.*}} no_sanitize_address // IGNORELIST-SRC: @{{.*}}__special_global{{.*}} ={{.*}} global {{.*}} no_sanitize_address Index: clang/test/CodeGen/hwasan-globals.cpp =================================================================== --- clang/test/CodeGen/hwasan-globals.cpp +++ clang/test/CodeGen/hwasan-globals.cpp @@ -13,6 +13,7 @@ int global; int __attribute__((no_sanitize("hwaddress"))) attributed_global; int __attribute__((disable_sanitizer_instrumentation)) disable_instrumentation_global; +int __attribute__((no_sanitize("all"))) no_sanitize_all_global; int ignorelisted_global; extern int __attribute__((no_sanitize("hwaddress"))) external_global; @@ -24,6 +25,7 @@ // CHECK: @{{.*}}attributed_global{{.*}} ={{.*}} global {{.*}}, no_sanitize_hwaddress // CHECK: @{{.*}}disable_instrumentation_global{{.*}} ={{.*}} global {{.*}}, no_sanitize_hwaddress +// CHECK: @{{.*}}no_sanitize_all_global{{.*}} ={{.*}} global {{.*}}, no_sanitize_hwaddress // CHECK: @{{.*}}ignorelisted_global{{.*}} ={{.*}} global {{.*}}, no_sanitize_hwaddress // CHECK: @{{.*}}external_global{{.*}} ={{.*}}, no_sanitize_hwaddress // CHECK: @{{.*}}extra_global{{.*}}.hwasan{{.*}} = @@ -34,6 +36,7 @@ // IGNORELIST: @{{.*}}global{{.*}} ={{.*}} global {{.*}}, no_sanitize_hwaddress // IGNORELIST: @{{.*}}attributed_global{{.*}} ={{.*}} global {{.*}}, no_sanitize_hwaddress // IGNORELIST: @{{.*}}disable_instrumentation_global{{.*}} ={{.*}} global {{.*}}, no_sanitize_hwaddress +// IGNORELIST: @{{.*}}no_sanitize_all_global{{.*}} ={{.*}} global {{.*}}, no_sanitize_hwaddress // IGNORELIST: @{{.*}}ignorelisted_globa{{.*}} ={{.*}} global {{.*}}, no_sanitize_hwaddress // IGNORELIST: @{{.*}}static_var{{.*}} ={{.*}} global {{.*}}, no_sanitize_hwaddress // IGNORELIST: @{{.*}} = {{.*}} c"Hello, world!\00"{{.*}}, no_sanitize_hwaddress Index: clang/test/CodeGen/memtag-globals.cpp =================================================================== --- clang/test/CodeGen/memtag-globals.cpp +++ clang/test/CodeGen/memtag-globals.cpp @@ -10,6 +10,7 @@ int global; int __attribute__((no_sanitize("memtag"))) attributed_global; int __attribute__((disable_sanitizer_instrumentation)) disable_instrumentation_global; +int __attribute__((no_sanitize("all"))) no_sanitize_all_global; int ignorelisted_global; extern int external_global; @@ -26,6 +27,8 @@ // CHECK-NOT: sanitize_memtag // CHECK: @{{.*}}disable_instrumentation_global{{.*}} = // CHECK-NOT: sanitize_memtag +// CHECK: @{{.*}}no_sanitize_all_global{{.*}} = +// CHECK-NOT: sanitize_memtag // CHECK: @{{.*}}ignorelisted_global{{.*}} = // CHECK-NOT: sanitize_memtag @@ -41,6 +44,8 @@ // IGNORELIST-NOT: sanitize_memtag // IGNORELIST: @{{.*}}disable_instrumentation_global{{.*}} = // IGNORELIST-NOT: sanitize_memtag +// IGNORELIST: @{{.*}}no_sanitize_all_global{{.*}} = +// IGNORELIST-NOT: sanitize_memtag // IGNORELIST: @{{.*}}ignorelisted_globa{{.*}} = // IGNORELIST-NOT: sanitize_memtag // IGNORELIST: @{{.*}}static_var{{.*}} =