summaryrefslogtreecommitdiffstats
path: root/src/svm
diff options
context:
space:
mode:
authorBenoît Ganne <bganne@cisco.com>2019-04-15 15:28:21 +0200
committerDamjan Marion <dmarion@me.com>2019-11-27 10:50:28 +0000
commit9fb6d40eb3d4a2da8f45187de773498b784596e6 (patch)
treee785ebfbe73b847146debb2dae4a4304c51aa9cf /src/svm
parent99fbf0574f099f09b7b46dcabe5bb50d78091dce (diff)
misc: add address sanitizer heap instrumentation
Introduce AddressSanitizer support: https://github.com/google/sanitizers/ This starts with heap instrumentation. vlib_buffer, bihash and stack instrumentation should follow. Type: feature Change-Id: I7f20e235b2f79db72efd0e756f22c75f717a9884 Signed-off-by: Benoît Ganne <bganne@cisco.com>
Diffstat (limited to 'src/svm')
-rw-r--r--src/svm/svm.c4
-rw-r--r--src/svm/svm_common.h4
2 files changed, 8 insertions, 0 deletions
diff --git a/src/svm/svm.c b/src/svm/svm.c
index 421121957f0..cc49eb3c6e2 100644
--- a/src/svm/svm.c
+++ b/src/svm/svm.c
@@ -61,6 +61,10 @@ svm_get_root_rp (void)
u64
svm_get_global_region_base_va ()
{
+#ifdef CLIB_SANITIZE_ADDR
+ return 0x200000000000;
+#endif
+
#if __aarch64__
/* On AArch64 VA space can have different size, from 36 to 48 bits.
Here we are trying to detect VA bits by parsing /proc/self/maps
diff --git a/src/svm/svm_common.h b/src/svm/svm_common.h
index ce07c37b24e..ce317229916 100644
--- a/src/svm/svm_common.h
+++ b/src/svm/svm_common.h
@@ -81,7 +81,11 @@ typedef struct svm_map_region_args_
* Memory mapped to high addresses for session/vppcom/vcl/etc...
*/
#if __WORDSIZE == 64
+#ifdef CLIB_SANITIZE_ADDR
+#define HIGH_SEGMENT_BASEVA 0x300000000000
+#else /* CLIB_SANITIZE_ADDR */
#define HIGH_SEGMENT_BASEVA (8ULL << 30) /* 8GB */
+#endif /* CLIB_SANITIZE_ADDR */
#elif __WORDSIZE == 32
#define HIGH_SEGMENT_BASEVA (3584UL << 20) /* 3.5GB */
#else