mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 13:39:04 +02:00
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
4 changed files with 28 additions and 13 deletions
|
@ -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
|
||||
|
|
6
ruby.c
6
ruby.c
|
@ -3188,3 +3188,9 @@ ruby_sysinit(int *argc, char ***argv)
|
|||
}
|
||||
fill_standard_fds();
|
||||
}
|
||||
|
||||
#ifdef RUBY_ASAN_ENABLED
|
||||
RUBY_SYMBOL_EXPORT_BEGIN
|
||||
const char ruby_asan_default_options[] = "use_sigaltstack=0:detect_leaks=0";
|
||||
RUBY_SYMBOL_EXPORT_END
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue