Make ASAN default option string built-in libruby
The content depends on ruby internal, not responsibility of the caller. Revive `RUBY_GLOBAL_SETUP` macro to define the hook function.
This commit is contained in:
parent
f23146f09f
commit
453f88f7f1
Notes:
git
2025-03-16 08:34:23 +00:00
@ -426,6 +426,14 @@ __extension__({ \
|
||||
# include "ruby/backward.h"
|
||||
#endif
|
||||
|
||||
#ifndef RUBY__ASAN_DEFAULT_OPTIONS
|
||||
# define RUBY__ASAN_DEFAULT_OPTIONS
|
||||
#endif
|
||||
|
||||
#define RUBY_GLOBAL_SETUP \
|
||||
RUBY__ASAN_DEFAULT_OPTIONS \
|
||||
/* RUBY_GLOBAL_SETUP end */
|
||||
|
||||
RBIMPL_SYMBOL_EXPORT_END()
|
||||
|
||||
#endif /* RUBY_RUBY_H */
|
||||
|
@ -314,5 +314,17 @@ asan_get_fake_stack_extents(void *thread_fake_stack_handle, VALUE slot,
|
||||
return false;
|
||||
}
|
||||
|
||||
extern const char ruby_asan_default_options[];
|
||||
|
||||
#ifdef RUBY_ASAN_ENABLED
|
||||
/* Compile in the ASAN options Ruby needs, rather than relying on environment variables, so
|
||||
* that even tests which fork ruby with a clean environment will run ASAN with the right
|
||||
* settings */
|
||||
# undef RUBY__ASAN_DEFAULT_OPTIONS
|
||||
# define RUBY__ASAN_DEFAULT_OPTIONS \
|
||||
RBIMPL_SYMBOL_EXPORT_BEGIN() \
|
||||
const char * __asan_default_options(void) {return ruby_asan_default_options;} \
|
||||
RBIMPL_SYMBOL_EXPORT_END()
|
||||
#endif
|
||||
|
||||
#endif /* INTERNAL_SANITIZERS_H */
|
||||
|
15
main.c
15
main.c
@ -32,6 +32,8 @@
|
||||
# undef RUBY_DEBUG_ENV
|
||||
#endif
|
||||
|
||||
RUBY_GLOBAL_SETUP
|
||||
|
||||
static int
|
||||
rb_main(int argc, char **argv)
|
||||
{
|
||||
@ -64,16 +66,3 @@ main(int argc, char **argv)
|
||||
ruby_sysinit(&argc, &argv);
|
||||
return rb_main(argc, argv);
|
||||
}
|
||||
|
||||
#ifdef RUBY_ASAN_ENABLED
|
||||
/* Compile in the ASAN options Ruby needs, rather than relying on environment variables, so
|
||||
* that even tests which fork ruby with a clean environment will run ASAN with the right
|
||||
* settings */
|
||||
RUBY_SYMBOL_EXPORT_BEGIN
|
||||
const char *
|
||||
__asan_default_options(void)
|
||||
{
|
||||
return "use_sigaltstack=0:detect_leaks=0";
|
||||
}
|
||||
RUBY_SYMBOL_EXPORT_END
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user