diff options
Diffstat (limited to 'ext/-test-/asan')
-rw-r--r-- | ext/-test-/asan/asan.c | 24 | ||||
-rw-r--r-- | ext/-test-/asan/extconf.rb | 2 |
2 files changed, 26 insertions, 0 deletions
diff --git a/ext/-test-/asan/asan.c b/ext/-test-/asan/asan.c new file mode 100644 index 0000000000..45b6253fda --- /dev/null +++ b/ext/-test-/asan/asan.c @@ -0,0 +1,24 @@ +#include "ruby/ruby.h" + +static VALUE +asan_enabled_p(VALUE self) +{ +#if defined(__has_feature) + /* clang uses __has_feature for determining asan */ + return __has_feature(address_sanitizer) ? Qtrue : Qfalse; +#elif defined(__SANITIZE_ADDRESS__) + /* GCC sets __SANITIZE_ADDRESS__ for determining asan */ + return Qtrue; +#else + return Qfalse; +#endif +} + +void +Init_asan(void) +{ + VALUE m = rb_define_module("Test"); + VALUE c = rb_define_class_under(m, "ASAN", rb_cObject); + rb_define_singleton_method(c, "enabled?", asan_enabled_p, 0); +} + diff --git a/ext/-test-/asan/extconf.rb b/ext/-test-/asan/extconf.rb new file mode 100644 index 0000000000..ec02742b81 --- /dev/null +++ b/ext/-test-/asan/extconf.rb @@ -0,0 +1,2 @@ +require 'mkmf' +create_makefile('-test-/asan') |