From: Claudiu Zissulescu <[email protected]>
Hi Wilco,
Please find a updated series of patches for adding memtag-stack
sanitizer using AArch64 MTE instructions.
What is new:
- handle the situations when tagging a memory with size zero.
- add a new test for the above situation.
- remove typos.
Older message:
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 | 339 +++++++++++++++++-
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 | 77 +++-
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-2.c | 15 +
.../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 | 43 +++
53 files changed, 1398 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-2.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