diff --git a/llvm/docs/LangRef.rst b/llvm/docs/LangRef.rst --- a/llvm/docs/LangRef.rst +++ b/llvm/docs/LangRef.rst @@ -746,8 +746,8 @@ [] [, section "name"] [, partition "name"] [, comdat [($name)]] [, align ] - [, no_sanitize] [, no_sanitize_address] - [, no_sanitize_hwaddress] [, sanitize_address_dyninit] + [, no_sanitize_address] [, no_sanitize_hwaddress] + [, sanitize_address_dyninit] [, sanitize_memtag] (, !name !N)* For example, the following defines a global in a numbered address space @@ -2327,19 +2327,31 @@ Unlike :ref:`function attributes `, attributes on a global variable are grouped into a single :ref:`attribute group `. -``no_sanitize`` - This attribute indicates that the global variable should not have any - sanitizers applied to it, either because it was in the sanitizer ignore - list, or it was annotated with - `__attribute__((disable_sanitizer_instrumentation))`. ``no_sanitize_address`` This attribute indicates that the global variable should not have AddressSanitizer instrumentation applied to it, because it was annotated - with `__attribute__((no_sanitize("address")))`. + with `__attribute__((no_sanitize("address")))`, + `__attribute__((disable_sanitizer_instrumentation))`, or included in the + `-fsanitize-ignorelist` file. ``no_sanitize_hwaddress`` This attribute indicates that the global variable should not have HWAddressSanitizer instrumentation applied to it, because it was annotated - with `__attribute__((no_sanitize("hwaddress")))`. + with `__attribute__((no_sanitize("hwaddress")))`, + `__attribute__((disable_sanitizer_instrumentation))`, or included in the + `-fsanitize-ignorelist` file. +``sanitize_memtag`` + This attribute indicates that the global variable should have AArch64 memory + tags (MTE) instrumentation applied to it. This attribute causes the + suppression of certain optimisations, like GlobalMerge, as well as ensuring + extra directives are emitted in the assembly and extra bits of metadata are + placed in the object file so that the linker can ensure the accesses are + protected by MTE. This attribute is added by clang when + `-fsanitize=memtag-globals` is provided, as long as the global is not marked + with `__attribute__((no_sanitize("memtag")))`, + `__attribute__((disable_sanitizer_instrumentation))`, or included in the + `-fsanitize-ignorelist` file. The AArch64 Globals Tagging pass may remove + this attribute when it's not possible to tag the global (e.g. it's a TLS + variable). ``sanitize_address_dyninit`` This attribute indicates that the global variable, when instrumented with AddressSanitizer, should be checked for ODR violations. This attribute is