From: Claudiu Zissulescu <[email protected]>
Hi Tamar,
Please find the updated aarch64 patches with considering your
feedback. I have also included the test patch as I have updated a
number of them.
What is new:
- Tagging a memory region is using now st2g instruction in the
loop. Now the tagging loop has this structure:
tbz size, 4, .L1
stg tag, [tptr], 16
.L1:
asr size, size, 5
cbz size, .L2
.L3:
st2g tag, [tptr], 32
subs size, size, 1
bne .L3
.L2:
- The decision if a tagging loop is unrolled can be controlled using
the architecture specific parameter
`aarch64-tag-memory-loop-threshold`.
- Update post/pre variants stg/st2g instructions.
Thank you,
Claudiu
Claudiu Zissulescu (2):
aarch64: Add support for memetag-stack sanitizer using MTE insns
aarch64: Add memtag-stack tests
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 | 322 +++++++++++++++++-
gcc/config/aarch64/aarch64.md | 127 +++++--
gcc/config/aarch64/aarch64.opt | 5 +
gcc/config/aarch64/constraints.md | 21 ++
gcc/config/aarch64/iterators.md | 20 ++
gcc/config/aarch64/predicates.md | 13 +-
gcc/doc/invoke.texi | 11 +-
.../gcc.target/aarch64/acle/memtag_1.c | 4 +-
.../gcc.target/aarch64/memtag/alloca-1.c | 15 +
.../gcc.target/aarch64/memtag/alloca-2.c | 15 +
.../gcc.target/aarch64/memtag/alloca-3.c | 28 ++
.../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 | 15 +
.../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 +++
38 files changed, 1039 insertions(+), 44 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.52.0