summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorSergei Golubchik <serg@mariadb.org>2018-01-16 22:57:28 +0100
committerSergei Golubchik <serg@mariadb.org>2018-01-16 22:57:28 +0100
commit5e7593add405f07ac6a7d755ae1349fb1d2eafd4 (patch)
tree8371852e11997e8115f1ab68206cd5a59476e1cb /include
parent6634f460a992811b876909ae5875eac6b0bd18fd (diff)
downloadmariadb-git-5e7593add405f07ac6a7d755ae1349fb1d2eafd4.tar.gz
add support for ASAN instrumentation
Diffstat (limited to 'include')
-rw-r--r--include/my_valgrind.h11
1 files changed, 8 insertions, 3 deletions
diff --git a/include/my_valgrind.h b/include/my_valgrind.h
index 4bd4cf99ada..a9dba1cb06c 100644
--- a/include/my_valgrind.h
+++ b/include/my_valgrind.h
@@ -25,7 +25,13 @@
# define MEM_NOACCESS(a,len) VALGRIND_MAKE_MEM_NOACCESS(a,len)
# define MEM_CHECK_ADDRESSABLE(a,len) VALGRIND_CHECK_MEM_IS_ADDRESSABLE(a,len)
# define MEM_CHECK_DEFINED(a,len) VALGRIND_CHECK_MEM_IS_DEFINED(a,len)
-#else /* HAVE_VALGRIND */
+#elif defined(__SANITIZE_ADDRESS__)
+# include <sanitizer/asan_interface.h>
+# define MEM_UNDEFINED(a,len) ASAN_UNPOISON_MEMORY_REGION(a,len)
+# define MEM_NOACCESS(a,len) ASAN_POISON_MEMORY_REGION(a,len)
+# define MEM_CHECK_ADDRESSABLE(a,len) ((void) 0)
+# define MEM_CHECK_DEFINED(a,len) ((void) 0)
+#else
# define MEM_UNDEFINED(a,len) ((void) 0)
# define MEM_NOACCESS(a,len) ((void) 0)
# define MEM_CHECK_ADDRESSABLE(a,len) ((void) 0)
@@ -35,9 +41,8 @@
#ifndef DBUG_OFF
#define TRASH_FILL(A,B,C) do { memset(A, C, B); MEM_UNDEFINED(A, B); } while (0)
#else
-#define TRASH_FILL(A,B,C) do{ MEM_CHECK_ADDRESSABLE(A,B);MEM_UNDEFINED(A,B);} while (0)
+#define TRASH_FILL(A,B,C) do { MEM_CHECK_ADDRESSABLE(A,B);MEM_UNDEFINED(A,B);} while (0)
#endif
#define TRASH_ALLOC(A,B) TRASH_FILL(A,B,0xA5)
#define TRASH_FREE(A,B) TRASH_FILL(A,B,0x8F)
#define TRASH(A,B) TRASH_FREE(A,B)
-