summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Zhu <peter@peterzhu.ca>2025-10-07 21:01:59 -0400
committerPeter Zhu <peter@peterzhu.ca>2025-10-09 20:35:02 -0400
commitc80ff8da25333bac6beaff7b0cffd07b023f78e9 (patch)
tree229c043a1840a7b743cafc565a35fd7854d3b78f
parentfc7fd63880dd8e22ac253330d1d07b8896fb7f39 (diff)
Add Test::Sanitizers.lsan_enabled?
-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);
}