Ping On 9/2/25 3:44 PM, [email protected] wrote: > From: Claudiu Zissulescu <[email protected]> > > Hi, > > Please find series of patches for adding memtag-stack sanitizer using > AArch64 MTE instructions. > > Most of the patches are ACKed, however, I have included them for > reference. The remaining ones to be reviews are: > > * target-insns.def: (compose_tag) New pattern. > * aarch64: Add support for memetag-stack sanitizer using MTE insns > > The first patch introduces a new target pattern (compose_tag) which is > used exclusively for memtag sanitizer. This pattern replaces the > previously introduced hook TARGET_MEMTAG_COMPOSE_OFFSET_TAG. > > The second patch reverts the usage of the memory barrier to unspec > volatile patterns. The post/pre increment/decrement patterns are > implemented using a code iterator, avoiding in this way the problem of > having patterns with multiple memory updates into instruction > patterns. It also fixes the other found issues in the previous patch > series. > > For the ACKed patches, there are slight changes which I would like to > list them: > > * aarch64: Add memtag-stack tests > - New comments added to the tests. > - More matching patterns added too. > - A new execution test that uses memtag-stack sanitizer and pthreads. > - Moved the check_effective_target_memtag_exec predicate to > target-supports.exp > > * asan: add new memtag sanitizer > - Fix formating. > - Comment on -fsanitize-recover flag manipulation: The > modification is there to avoid calling memtag-stack sanitizer > when -fsanitize-recove=all is used. > - Update fsanitize=memtag-stack documentation to underline the > probabilistic nature of this sanitizer. > > * asan: memtag-stack add support for MTE instructions > - Fix formating, and text. > - Use compose_tag instruction pattern for memtag-stack sanitizer. > > Thank you for all your help, > Claudiu > > Claudiu Zissulescu (4): > target-insns.def: (tag_memory) New pattern. > target-insns.def: (compose_tag) New pattern. > asan: memtag-stack add support for MTE instructions > aarch64: Add support for memetag-stack sanitizer using MTE insns > > Indu Bhagat (2): > asan: add new memtag sanitizer > aarch64: Add memtag-stack tests > > gcc/asan.cc | 231 +++++++++--- > gcc/asan.h | 10 +- > gcc/builtins.def | 1 + > gcc/cfgexpand.cc | 29 +- > gcc/config/aarch64/aarch64-builtins.cc | 7 +- > gcc/config/aarch64/aarch64-linux.h | 4 +- > gcc/config/aarch64/aarch64-protos.h | 3 + > gcc/config/aarch64/aarch64.cc | 333 +++++++++++++++++- > gcc/config/aarch64/aarch64.md | 127 +++++-- > gcc/config/aarch64/constraints.md | 21 ++ > gcc/config/aarch64/iterators.md | 20 ++ > gcc/config/aarch64/predicates.md | 13 +- > gcc/doc/invoke.texi | 20 +- > gcc/doc/md.texi | 10 + > gcc/doc/tm.texi | 6 +- > gcc/flag-types.h | 4 + > gcc/gcc.cc | 2 + > gcc/gimplify.cc | 5 +- > gcc/internal-fn.cc | 68 +++- > gcc/internal-fn.def | 1 + > gcc/opts.cc | 22 +- > gcc/params.opt | 8 + > gcc/sanopt.cc | 2 +- > gcc/target-insns.def | 2 + > gcc/target.def | 10 +- > .../gcc.target/aarch64/acle/memtag_1.c | 4 +- > .../gcc.target/aarch64/memtag/alloca-1.c | 14 + > .../gcc.target/aarch64/memtag/alloca-3.c | 27 ++ > .../gcc.target/aarch64/memtag/arguments-1.c | 3 + > .../gcc.target/aarch64/memtag/arguments-2.c | 3 + > .../gcc.target/aarch64/memtag/arguments-3.c | 3 + > .../gcc.target/aarch64/memtag/arguments-4.c | 16 + > .../gcc.target/aarch64/memtag/arguments.c | 3 + > .../gcc.target/aarch64/memtag/basic-1.c | 14 + > .../gcc.target/aarch64/memtag/basic-3.c | 28 ++ > .../gcc.target/aarch64/memtag/basic-struct.c | 22 ++ > .../aarch64/memtag/cfi-mte-memtag-frame-1.c | 11 + > .../gcc.target/aarch64/memtag/large-array.c | 23 ++ > .../aarch64/memtag/local-no-escape.c | 22 ++ > .../gcc.target/aarch64/memtag/memtag.exp | 32 ++ > .../gcc.target/aarch64/memtag/mte-sig.h | 15 + > .../aarch64/memtag/no-sanitize-attribute.c | 18 + > .../gcc.target/aarch64/memtag/texec-1.c | 27 ++ > .../gcc.target/aarch64/memtag/texec-2.c | 22 ++ > .../gcc.target/aarch64/memtag/texec-3.c | 37 ++ > .../gcc.target/aarch64/memtag/value-init.c | 14 + > .../aarch64/memtag/vararray-gimple.c | 16 + > .../gcc.target/aarch64/memtag/vararray.c | 14 + > .../gcc.target/aarch64/memtag/vla-1.c | 39 ++ > .../gcc.target/aarch64/memtag/vla-2.c | 48 +++ > .../gcc.target/aarch64/memtag/zero-init.c | 14 + > gcc/testsuite/lib/target-supports.exp | 44 +++ > 52 files changed, 1369 insertions(+), 123 deletions(-) > create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/alloca-1.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/alloca-3.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/arguments-1.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/arguments-2.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/arguments-3.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/arguments-4.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/arguments.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/basic-1.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/basic-3.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/basic-struct.c > create mode 100644 > gcc/testsuite/gcc.target/aarch64/memtag/cfi-mte-memtag-frame-1.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/large-array.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/local-no-escape.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/memtag.exp > create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/mte-sig.h > create mode 100644 > gcc/testsuite/gcc.target/aarch64/memtag/no-sanitize-attribute.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/texec-1.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/texec-2.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/texec-3.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/value-init.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/vararray-gimple.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/vararray.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/vla-1.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/vla-2.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/zero-init.c >
Re: [PATCH v5 0/6] Add memtag-stack sanitizer using MTE instructions
Claudiu Zissulescu-Ianculescu Tue, 23 Sep 2025 12:51:44 -0700
