summaryrefslogtreecommitdiff
path: root/vm_core.h
diff options
context:
space:
mode:
authorKJ Tsanaktsidis <[email protected]>2023-11-12 16:19:31 +1100
committerKJ Tsanaktsidis <[email protected]>2024-01-12 17:29:48 +1100
commitd10bc3a2b8300cffc383e10c3730871e851be24c (patch)
treec1c8e09a280ab3d8db0ee941aa8c88ae8592785e /vm_core.h
parentbdafad879093ef16a9a649154c4b2e4ebf492656 (diff)
Mark asan fake stacks during machine stack marking
ASAN leaves a pointer to the fake frame on the stack; we can use the __asan_addr_is_in_fake_stack API to work out the extent of the fake stack and thus mark any VALUEs contained therein. [Bug #20001]
Diffstat (limited to 'vm_core.h')
-rw-r--r--vm_core.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/vm_core.h b/vm_core.h
index 91cfae77e9..9557004dbc 100644
--- a/vm_core.h
+++ b/vm_core.h
@@ -94,6 +94,7 @@ extern int ruby_assert_critical_section_entered;
#include "internal.h"
#include "internal/array.h"
#include "internal/basic_operators.h"
+#include "internal/sanitizers.h"
#include "internal/serial.h"
#include "internal/vm.h"
#include "method.h"
@@ -1155,6 +1156,10 @@ typedef struct rb_thread_struct {
void **specific_storage;
struct rb_ext_config ext_config;
+
+#ifdef RUBY_ASAN_ENABLED
+ void *asan_fake_stack_handle;
+#endif
} rb_thread_t;
static inline unsigned int