summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/-test-/sanitizers/sanitizers.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/ext/-test-/sanitizers/sanitizers.c b/ext/-test-/sanitizers/sanitizers.c
index bd00f0be77..97a85b26ef 100644
--- a/ext/-test-/sanitizers/sanitizers.c
+++ b/ext/-test-/sanitizers/sanitizers.c
@@ -14,11 +14,23 @@ asan_enabled_p(VALUE self)
#endif
}
+static VALUE
+lsan_enabled_p(VALUE self)
+{
+#if defined(__has_feature)
+ /* clang uses __has_feature for determining LSAN */
+ return __has_feature(leak_sanitizer) ? Qtrue : Qfalse;
+#else
+ return Qfalse;
+#endif
+}
+
void
Init_sanitizers(void)
{
VALUE m = rb_define_module("Test");
VALUE c = rb_define_class_under(m, "Sanitizers", rb_cObject);
rb_define_singleton_method(c, "asan_enabled?", asan_enabled_p, 0);
+ rb_define_singleton_method(c, "lsan_enabled?", lsan_enabled_p, 0);
}