aboutsummaryrefslogtreecommitdiffstats
path: root/transient_heap.c
diff options
context:
space:
mode:
authorUrabe, Shyouhei <shyouhei@ruby-lang.org>2019-04-24 11:23:13 +0900
committerUrabe, Shyouhei <shyouhei@ruby-lang.org>2019-04-26 15:59:40 +0900
commit6201a89b38afb6bb2a548aeba0ca77090851713b (patch)
tree95135097b4a3e08ccaa952454917b9656832540c /transient_heap.c
parent572f2ddff64ddf12f2331ad77b72d2b0c9d9883c (diff)
downloadruby-6201a89b38afb6bb2a548aeba0ca77090851713b.tar.gz
mark verify functions non-sanitizable
These functions purposefully read from memory regions potentially not handled well. Should let sanitizers avoid checking them.
Diffstat (limited to 'transient_heap.c')
-rw-r--r--transient_heap.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/transient_heap.c b/transient_heap.c
index 9aad8a183d..eb94edabf7 100644
--- a/transient_heap.c
+++ b/transient_heap.c
@@ -155,6 +155,7 @@ rb_transient_heap_dump(void)
}
#if TRANSIENT_HEAP_CHECK_MODE >= 2
+ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS(static void transient_heap_ptr_check(struct transient_heap *theap, VALUE obj));
static void
transient_heap_ptr_check(struct transient_heap *theap, VALUE obj)
{
@@ -164,6 +165,7 @@ transient_heap_ptr_check(struct transient_heap *theap, VALUE obj)
}
}
+ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS(static int transient_heap_block_verify(struct transient_heap *theap, struct transient_heap_block *block));
static int
transient_heap_block_verify(struct transient_heap *theap, struct transient_heap_block *block)
{
@@ -559,6 +561,7 @@ rb_transient_heap_mark(VALUE obj, const void *ptr)
}
}
+ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS(static const void *transient_heap_ptr(VALUE obj, int error));
static const void *
transient_heap_ptr(VALUE obj, int error)
{