From: Claudiu Zissulescu <claudiu.zissulescu-iancule...@oracle.com>

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

-- 
2.51.0

Reply via email to