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"
|
# include "ruby/backward.h"
|
||||||
#endif
|
#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()
|
RBIMPL_SYMBOL_EXPORT_END()
|
||||||
|
|
||||||
#endif /* RUBY_RUBY_H */
|
#endif /* RUBY_RUBY_H */
|
||||||
|
@ -314,5 +314,17 @@ asan_get_fake_stack_extents(void *thread_fake_stack_handle, VALUE slot,
|
|||||||
return false;
|
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 */
|
#endif /* INTERNAL_SANITIZERS_H */
|
||||||
|
15
main.c
15
main.c
@ -32,6 +32,8 @@
|
|||||||
# undef RUBY_DEBUG_ENV
|
# undef RUBY_DEBUG_ENV
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
RUBY_GLOBAL_SETUP
|
||||||
|
|
||||||
static int
|
static int
|
||||||
rb_main(int argc, char **argv)
|
rb_main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
@ -64,16 +66,3 @@ main(int argc, char **argv)
|
|||||||
ruby_sysinit(&argc, &argv);
|
ruby_sysinit(&argc, &argv);
|
||||||
return rb_main(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