Check for SANITIZER_MEMTAG in the gate function for pass_asan gimple
pass; enable it.
TBD:
- This commit was initially carved out in order to ensure each patch
works in isolation. Need to revisit and double check this.
gcc/ChangeLog:
* asan.cc (memtag_sanitize_p): Fix definition.
(gate): Add gate_memtag ().
(gate_memtag): New definition.
* asan.h (gate_memtag): New declaration.
---
gcc/asan.cc | 12 +++++++++---
gcc/asan.h | 1 +
2 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/gcc/asan.cc b/gcc/asan.cc
index d71a540edc52..e62721e77901 100644
--- a/gcc/asan.cc
+++ b/gcc/asan.cc
@@ -1944,7 +1944,7 @@ hwasan_memintrin (void)
bool
memtag_sanitize_p ()
{
- return false;
+ return sanitize_flags_p (SANITIZE_MEMTAG);
}
/* Are we tagging the stack? */
@@ -4482,7 +4482,7 @@ public:
opt_pass * clone () final override { return new pass_asan (m_ctxt); }
bool gate (function *) final override
{
- return gate_asan () || gate_hwasan ();
+ return gate_asan () || gate_hwasan () || gate_memtag ();
}
unsigned int execute (function *) final override
{
@@ -4524,7 +4524,7 @@ public:
/* opt_pass methods: */
bool gate (function *) final override
{
- return !optimize && (gate_asan () || gate_hwasan ());
+ return !optimize && (gate_asan () || gate_hwasan () || gate_memtag ());
}
unsigned int execute (function *) final override
{
@@ -5063,4 +5063,10 @@ gate_hwasan ()
return hwasan_sanitize_p ();
}
+bool
+gate_memtag ()
+{
+ return memtag_sanitize_p ();
+}
+
#include "gt-asan.h"
diff --git a/gcc/asan.h b/gcc/asan.h
index 832e743401db..3a2cb610cd15 100644
--- a/gcc/asan.h
+++ b/gcc/asan.h
@@ -60,6 +60,7 @@ extern bool gate_hwasan (void);
extern bool memtag_sanitize_p (void);
extern bool memtag_sanitize_stack_p (void);
extern bool memtag_sanitize_allocas_p (void);
+extern bool gate_memtag (void);
bool hwassist_sanitize_p (void);
bool hwassist_sanitize_stack_p (void);
--
2.43.0