summaryrefslogtreecommitdiff
path: root/ext/-test-
diff options
context:
space:
mode:
authorKJ Tsanaktsidis <kj@kjtsanaktsidis.id.au>2024-02-24 14:45:05 +1100
committerKJ Tsanaktsidis <kj@kjtsanaktsidis.id.au>2024-02-28 14:41:03 +1100
commitfe0b704df5553bdd59e90650ffbbfac785a2e48a (patch)
tree2b9b59cb1280cb91aa83b08fb2b3987ce21d1f76 /ext/-test-
parent47b46fd98c71732400d53805f63ab988b28fa651 (diff)
Skip assert_no_memory_leak when ASAN is enabled
ASAN greatly increases the memory footprint of Ruby, so these static thresholds are not appropriate. There's no real need to run these tests under ASAN. [Bug #20274]
Diffstat (limited to 'ext/-test-')
-rw-r--r--ext/-test-/asan/asan.c24
-rw-r--r--ext/-test-/asan/extconf.rb2
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')