diff options
author | KJ Tsanaktsidis <[email protected]> | 2023-11-12 16:19:31 +1100 |
---|---|---|
committer | KJ Tsanaktsidis <[email protected]> | 2024-01-12 17:29:48 +1100 |
commit | d10bc3a2b8300cffc383e10c3730871e851be24c (patch) | |
tree | c1c8e09a280ab3d8db0ee941aa8c88ae8592785e /vm_core.h | |
parent | bdafad879093ef16a9a649154c4b2e4ebf492656 (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.h | 5 |
1 files changed, 5 insertions, 0 deletions
@@ -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 |