diff options
Diffstat (limited to 'ext/-test-')
33 files changed, 345 insertions, 351 deletions
diff --git a/ext/-test-/asan/asan.c b/ext/-test-/asan/asan.c deleted file mode 100644 index 45b6253fda..0000000000 --- a/ext/-test-/asan/asan.c +++ /dev/null @@ -1,24 +0,0 @@ -#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/depend b/ext/-test-/asan/depend deleted file mode 100644 index 93cdc739ec..0000000000 --- a/ext/-test-/asan/depend +++ /dev/null @@ -1,162 +0,0 @@ -# AUTOGENERATED DEPENDENCIES START -asan.o: $(RUBY_EXTCONF_H) -asan.o: $(arch_hdrdir)/ruby/config.h -asan.o: $(hdrdir)/ruby/assert.h -asan.o: $(hdrdir)/ruby/backward.h -asan.o: $(hdrdir)/ruby/backward/2/assume.h -asan.o: $(hdrdir)/ruby/backward/2/attributes.h -asan.o: $(hdrdir)/ruby/backward/2/bool.h -asan.o: $(hdrdir)/ruby/backward/2/inttypes.h -asan.o: $(hdrdir)/ruby/backward/2/limits.h -asan.o: $(hdrdir)/ruby/backward/2/long_long.h -asan.o: $(hdrdir)/ruby/backward/2/stdalign.h -asan.o: $(hdrdir)/ruby/backward/2/stdarg.h -asan.o: $(hdrdir)/ruby/defines.h -asan.o: $(hdrdir)/ruby/intern.h -asan.o: $(hdrdir)/ruby/internal/abi.h -asan.o: $(hdrdir)/ruby/internal/anyargs.h -asan.o: $(hdrdir)/ruby/internal/arithmetic.h -asan.o: $(hdrdir)/ruby/internal/arithmetic/char.h -asan.o: $(hdrdir)/ruby/internal/arithmetic/double.h -asan.o: $(hdrdir)/ruby/internal/arithmetic/fixnum.h -asan.o: $(hdrdir)/ruby/internal/arithmetic/gid_t.h -asan.o: $(hdrdir)/ruby/internal/arithmetic/int.h -asan.o: $(hdrdir)/ruby/internal/arithmetic/intptr_t.h -asan.o: $(hdrdir)/ruby/internal/arithmetic/long.h -asan.o: $(hdrdir)/ruby/internal/arithmetic/long_long.h -asan.o: $(hdrdir)/ruby/internal/arithmetic/mode_t.h -asan.o: $(hdrdir)/ruby/internal/arithmetic/off_t.h -asan.o: $(hdrdir)/ruby/internal/arithmetic/pid_t.h -asan.o: $(hdrdir)/ruby/internal/arithmetic/short.h -asan.o: $(hdrdir)/ruby/internal/arithmetic/size_t.h -asan.o: $(hdrdir)/ruby/internal/arithmetic/st_data_t.h -asan.o: $(hdrdir)/ruby/internal/arithmetic/uid_t.h -asan.o: $(hdrdir)/ruby/internal/assume.h -asan.o: $(hdrdir)/ruby/internal/attr/alloc_size.h -asan.o: $(hdrdir)/ruby/internal/attr/artificial.h -asan.o: $(hdrdir)/ruby/internal/attr/cold.h -asan.o: $(hdrdir)/ruby/internal/attr/const.h -asan.o: $(hdrdir)/ruby/internal/attr/constexpr.h -asan.o: $(hdrdir)/ruby/internal/attr/deprecated.h -asan.o: $(hdrdir)/ruby/internal/attr/diagnose_if.h -asan.o: $(hdrdir)/ruby/internal/attr/enum_extensibility.h -asan.o: $(hdrdir)/ruby/internal/attr/error.h -asan.o: $(hdrdir)/ruby/internal/attr/flag_enum.h -asan.o: $(hdrdir)/ruby/internal/attr/forceinline.h -asan.o: $(hdrdir)/ruby/internal/attr/format.h -asan.o: $(hdrdir)/ruby/internal/attr/maybe_unused.h -asan.o: $(hdrdir)/ruby/internal/attr/noalias.h -asan.o: $(hdrdir)/ruby/internal/attr/nodiscard.h -asan.o: $(hdrdir)/ruby/internal/attr/noexcept.h -asan.o: $(hdrdir)/ruby/internal/attr/noinline.h -asan.o: $(hdrdir)/ruby/internal/attr/nonnull.h -asan.o: $(hdrdir)/ruby/internal/attr/noreturn.h -asan.o: $(hdrdir)/ruby/internal/attr/packed_struct.h -asan.o: $(hdrdir)/ruby/internal/attr/pure.h -asan.o: $(hdrdir)/ruby/internal/attr/restrict.h -asan.o: $(hdrdir)/ruby/internal/attr/returns_nonnull.h -asan.o: $(hdrdir)/ruby/internal/attr/warning.h -asan.o: $(hdrdir)/ruby/internal/attr/weakref.h -asan.o: $(hdrdir)/ruby/internal/cast.h -asan.o: $(hdrdir)/ruby/internal/compiler_is.h -asan.o: $(hdrdir)/ruby/internal/compiler_is/apple.h -asan.o: $(hdrdir)/ruby/internal/compiler_is/clang.h -asan.o: $(hdrdir)/ruby/internal/compiler_is/gcc.h -asan.o: $(hdrdir)/ruby/internal/compiler_is/intel.h -asan.o: $(hdrdir)/ruby/internal/compiler_is/msvc.h -asan.o: $(hdrdir)/ruby/internal/compiler_is/sunpro.h -asan.o: $(hdrdir)/ruby/internal/compiler_since.h -asan.o: $(hdrdir)/ruby/internal/config.h -asan.o: $(hdrdir)/ruby/internal/constant_p.h -asan.o: $(hdrdir)/ruby/internal/core.h -asan.o: $(hdrdir)/ruby/internal/core/rarray.h -asan.o: $(hdrdir)/ruby/internal/core/rbasic.h -asan.o: $(hdrdir)/ruby/internal/core/rbignum.h -asan.o: $(hdrdir)/ruby/internal/core/rclass.h -asan.o: $(hdrdir)/ruby/internal/core/rdata.h -asan.o: $(hdrdir)/ruby/internal/core/rfile.h -asan.o: $(hdrdir)/ruby/internal/core/rhash.h -asan.o: $(hdrdir)/ruby/internal/core/robject.h -asan.o: $(hdrdir)/ruby/internal/core/rregexp.h -asan.o: $(hdrdir)/ruby/internal/core/rstring.h -asan.o: $(hdrdir)/ruby/internal/core/rstruct.h -asan.o: $(hdrdir)/ruby/internal/core/rtypeddata.h -asan.o: $(hdrdir)/ruby/internal/ctype.h -asan.o: $(hdrdir)/ruby/internal/dllexport.h -asan.o: $(hdrdir)/ruby/internal/dosish.h -asan.o: $(hdrdir)/ruby/internal/error.h -asan.o: $(hdrdir)/ruby/internal/eval.h -asan.o: $(hdrdir)/ruby/internal/event.h -asan.o: $(hdrdir)/ruby/internal/fl_type.h -asan.o: $(hdrdir)/ruby/internal/gc.h -asan.o: $(hdrdir)/ruby/internal/glob.h -asan.o: $(hdrdir)/ruby/internal/globals.h -asan.o: $(hdrdir)/ruby/internal/has/attribute.h -asan.o: $(hdrdir)/ruby/internal/has/builtin.h -asan.o: $(hdrdir)/ruby/internal/has/c_attribute.h -asan.o: $(hdrdir)/ruby/internal/has/cpp_attribute.h -asan.o: $(hdrdir)/ruby/internal/has/declspec_attribute.h -asan.o: $(hdrdir)/ruby/internal/has/extension.h -asan.o: $(hdrdir)/ruby/internal/has/feature.h -asan.o: $(hdrdir)/ruby/internal/has/warning.h -asan.o: $(hdrdir)/ruby/internal/intern/array.h -asan.o: $(hdrdir)/ruby/internal/intern/bignum.h -asan.o: $(hdrdir)/ruby/internal/intern/class.h -asan.o: $(hdrdir)/ruby/internal/intern/compar.h -asan.o: $(hdrdir)/ruby/internal/intern/complex.h -asan.o: $(hdrdir)/ruby/internal/intern/cont.h -asan.o: $(hdrdir)/ruby/internal/intern/dir.h -asan.o: $(hdrdir)/ruby/internal/intern/enum.h -asan.o: $(hdrdir)/ruby/internal/intern/enumerator.h -asan.o: $(hdrdir)/ruby/internal/intern/error.h -asan.o: $(hdrdir)/ruby/internal/intern/eval.h -asan.o: $(hdrdir)/ruby/internal/intern/file.h -asan.o: $(hdrdir)/ruby/internal/intern/hash.h -asan.o: $(hdrdir)/ruby/internal/intern/io.h -asan.o: $(hdrdir)/ruby/internal/intern/load.h -asan.o: $(hdrdir)/ruby/internal/intern/marshal.h -asan.o: $(hdrdir)/ruby/internal/intern/numeric.h -asan.o: $(hdrdir)/ruby/internal/intern/object.h -asan.o: $(hdrdir)/ruby/internal/intern/parse.h -asan.o: $(hdrdir)/ruby/internal/intern/proc.h -asan.o: $(hdrdir)/ruby/internal/intern/process.h -asan.o: $(hdrdir)/ruby/internal/intern/random.h -asan.o: $(hdrdir)/ruby/internal/intern/range.h -asan.o: $(hdrdir)/ruby/internal/intern/rational.h -asan.o: $(hdrdir)/ruby/internal/intern/re.h -asan.o: $(hdrdir)/ruby/internal/intern/ruby.h -asan.o: $(hdrdir)/ruby/internal/intern/select.h -asan.o: $(hdrdir)/ruby/internal/intern/select/largesize.h -asan.o: $(hdrdir)/ruby/internal/intern/set.h -asan.o: $(hdrdir)/ruby/internal/intern/signal.h -asan.o: $(hdrdir)/ruby/internal/intern/sprintf.h -asan.o: $(hdrdir)/ruby/internal/intern/string.h -asan.o: $(hdrdir)/ruby/internal/intern/struct.h -asan.o: $(hdrdir)/ruby/internal/intern/thread.h -asan.o: $(hdrdir)/ruby/internal/intern/time.h -asan.o: $(hdrdir)/ruby/internal/intern/variable.h -asan.o: $(hdrdir)/ruby/internal/intern/vm.h -asan.o: $(hdrdir)/ruby/internal/interpreter.h -asan.o: $(hdrdir)/ruby/internal/iterator.h -asan.o: $(hdrdir)/ruby/internal/memory.h -asan.o: $(hdrdir)/ruby/internal/method.h -asan.o: $(hdrdir)/ruby/internal/module.h -asan.o: $(hdrdir)/ruby/internal/newobj.h -asan.o: $(hdrdir)/ruby/internal/scan_args.h -asan.o: $(hdrdir)/ruby/internal/special_consts.h -asan.o: $(hdrdir)/ruby/internal/static_assert.h -asan.o: $(hdrdir)/ruby/internal/stdalign.h -asan.o: $(hdrdir)/ruby/internal/stdbool.h -asan.o: $(hdrdir)/ruby/internal/stdckdint.h -asan.o: $(hdrdir)/ruby/internal/symbol.h -asan.o: $(hdrdir)/ruby/internal/value.h -asan.o: $(hdrdir)/ruby/internal/value_type.h -asan.o: $(hdrdir)/ruby/internal/variable.h -asan.o: $(hdrdir)/ruby/internal/warning_push.h -asan.o: $(hdrdir)/ruby/internal/xmalloc.h -asan.o: $(hdrdir)/ruby/missing.h -asan.o: $(hdrdir)/ruby/ruby.h -asan.o: $(hdrdir)/ruby/st.h -asan.o: $(hdrdir)/ruby/subst.h -asan.o: asan.c -# AUTOGENERATED DEPENDENCIES END diff --git a/ext/-test-/asan/extconf.rb b/ext/-test-/asan/extconf.rb deleted file mode 100644 index ec02742b81..0000000000 --- a/ext/-test-/asan/extconf.rb +++ /dev/null @@ -1,2 +0,0 @@ -require 'mkmf' -create_makefile('-test-/asan') diff --git a/ext/-test-/bignum/depend b/ext/-test-/bignum/depend index 049f0c7b52..82972f1032 100644 --- a/ext/-test-/bignum/depend +++ b/ext/-test-/bignum/depend @@ -6,6 +6,7 @@ big2str.o: $(hdrdir)/ruby/backward.h big2str.o: $(hdrdir)/ruby/backward/2/assume.h big2str.o: $(hdrdir)/ruby/backward/2/attributes.h big2str.o: $(hdrdir)/ruby/backward/2/bool.h +big2str.o: $(hdrdir)/ruby/backward/2/gcc_version_since.h big2str.o: $(hdrdir)/ruby/backward/2/inttypes.h big2str.o: $(hdrdir)/ruby/backward/2/limits.h big2str.o: $(hdrdir)/ruby/backward/2/long_long.h @@ -159,6 +160,7 @@ big2str.o: $(hdrdir)/ruby/ruby.h big2str.o: $(hdrdir)/ruby/st.h big2str.o: $(hdrdir)/ruby/subst.h big2str.o: $(top_srcdir)/internal/bignum.h +big2str.o: $(top_srcdir)/internal/compilers.h big2str.o: big2str.c bigzero.o: $(RUBY_EXTCONF_H) bigzero.o: $(arch_hdrdir)/ruby/config.h @@ -167,6 +169,7 @@ bigzero.o: $(hdrdir)/ruby/backward.h bigzero.o: $(hdrdir)/ruby/backward/2/assume.h bigzero.o: $(hdrdir)/ruby/backward/2/attributes.h bigzero.o: $(hdrdir)/ruby/backward/2/bool.h +bigzero.o: $(hdrdir)/ruby/backward/2/gcc_version_since.h bigzero.o: $(hdrdir)/ruby/backward/2/inttypes.h bigzero.o: $(hdrdir)/ruby/backward/2/limits.h bigzero.o: $(hdrdir)/ruby/backward/2/long_long.h @@ -320,6 +323,7 @@ bigzero.o: $(hdrdir)/ruby/ruby.h bigzero.o: $(hdrdir)/ruby/st.h bigzero.o: $(hdrdir)/ruby/subst.h bigzero.o: $(top_srcdir)/internal/bignum.h +bigzero.o: $(top_srcdir)/internal/compilers.h bigzero.o: bigzero.c div.o: $(RUBY_EXTCONF_H) div.o: $(arch_hdrdir)/ruby/config.h @@ -328,6 +332,7 @@ div.o: $(hdrdir)/ruby/backward.h div.o: $(hdrdir)/ruby/backward/2/assume.h div.o: $(hdrdir)/ruby/backward/2/attributes.h div.o: $(hdrdir)/ruby/backward/2/bool.h +div.o: $(hdrdir)/ruby/backward/2/gcc_version_since.h div.o: $(hdrdir)/ruby/backward/2/inttypes.h div.o: $(hdrdir)/ruby/backward/2/limits.h div.o: $(hdrdir)/ruby/backward/2/long_long.h @@ -481,6 +486,7 @@ div.o: $(hdrdir)/ruby/ruby.h div.o: $(hdrdir)/ruby/st.h div.o: $(hdrdir)/ruby/subst.h div.o: $(top_srcdir)/internal/bignum.h +div.o: $(top_srcdir)/internal/compilers.h div.o: div.c init.o: $(RUBY_EXTCONF_H) init.o: $(arch_hdrdir)/ruby/config.h @@ -650,6 +656,7 @@ intpack.o: $(hdrdir)/ruby/backward.h intpack.o: $(hdrdir)/ruby/backward/2/assume.h intpack.o: $(hdrdir)/ruby/backward/2/attributes.h intpack.o: $(hdrdir)/ruby/backward/2/bool.h +intpack.o: $(hdrdir)/ruby/backward/2/gcc_version_since.h intpack.o: $(hdrdir)/ruby/backward/2/inttypes.h intpack.o: $(hdrdir)/ruby/backward/2/limits.h intpack.o: $(hdrdir)/ruby/backward/2/long_long.h @@ -803,6 +810,7 @@ intpack.o: $(hdrdir)/ruby/ruby.h intpack.o: $(hdrdir)/ruby/st.h intpack.o: $(hdrdir)/ruby/subst.h intpack.o: $(top_srcdir)/internal/bignum.h +intpack.o: $(top_srcdir)/internal/compilers.h intpack.o: intpack.c mul.o: $(RUBY_EXTCONF_H) mul.o: $(arch_hdrdir)/ruby/config.h @@ -811,6 +819,7 @@ mul.o: $(hdrdir)/ruby/backward.h mul.o: $(hdrdir)/ruby/backward/2/assume.h mul.o: $(hdrdir)/ruby/backward/2/attributes.h mul.o: $(hdrdir)/ruby/backward/2/bool.h +mul.o: $(hdrdir)/ruby/backward/2/gcc_version_since.h mul.o: $(hdrdir)/ruby/backward/2/inttypes.h mul.o: $(hdrdir)/ruby/backward/2/limits.h mul.o: $(hdrdir)/ruby/backward/2/long_long.h @@ -964,6 +973,7 @@ mul.o: $(hdrdir)/ruby/ruby.h mul.o: $(hdrdir)/ruby/st.h mul.o: $(hdrdir)/ruby/subst.h mul.o: $(top_srcdir)/internal/bignum.h +mul.o: $(top_srcdir)/internal/compilers.h mul.o: mul.c str2big.o: $(RUBY_EXTCONF_H) str2big.o: $(arch_hdrdir)/ruby/config.h @@ -972,6 +982,7 @@ str2big.o: $(hdrdir)/ruby/backward.h str2big.o: $(hdrdir)/ruby/backward/2/assume.h str2big.o: $(hdrdir)/ruby/backward/2/attributes.h str2big.o: $(hdrdir)/ruby/backward/2/bool.h +str2big.o: $(hdrdir)/ruby/backward/2/gcc_version_since.h str2big.o: $(hdrdir)/ruby/backward/2/inttypes.h str2big.o: $(hdrdir)/ruby/backward/2/limits.h str2big.o: $(hdrdir)/ruby/backward/2/long_long.h @@ -1125,5 +1136,6 @@ str2big.o: $(hdrdir)/ruby/ruby.h str2big.o: $(hdrdir)/ruby/st.h str2big.o: $(hdrdir)/ruby/subst.h str2big.o: $(top_srcdir)/internal/bignum.h +str2big.o: $(top_srcdir)/internal/compilers.h str2big.o: str2big.c # AUTOGENERATED DEPENDENCIES END diff --git a/ext/-test-/box/yay1/extconf.rb b/ext/-test-/box/yay1/extconf.rb new file mode 100644 index 0000000000..54387cedf1 --- /dev/null +++ b/ext/-test-/box/yay1/extconf.rb @@ -0,0 +1 @@ +create_makefile('-test-/box/yay1') diff --git a/ext/-test-/namespace/yay1/yay1.c b/ext/-test-/box/yay1/yay1.c index 564a221c8c..564a221c8c 100644 --- a/ext/-test-/namespace/yay1/yay1.c +++ b/ext/-test-/box/yay1/yay1.c diff --git a/ext/-test-/namespace/yay1/yay1.def b/ext/-test-/box/yay1/yay1.def index 510fbe7017..510fbe7017 100644 --- a/ext/-test-/namespace/yay1/yay1.def +++ b/ext/-test-/box/yay1/yay1.def diff --git a/ext/-test-/namespace/yay1/yay1.h b/ext/-test-/box/yay1/yay1.h index c4dade928a..c4dade928a 100644 --- a/ext/-test-/namespace/yay1/yay1.h +++ b/ext/-test-/box/yay1/yay1.h diff --git a/ext/-test-/box/yay2/extconf.rb b/ext/-test-/box/yay2/extconf.rb new file mode 100644 index 0000000000..850ef3edc9 --- /dev/null +++ b/ext/-test-/box/yay2/extconf.rb @@ -0,0 +1 @@ +create_makefile('-test-/box/yay2') diff --git a/ext/-test-/namespace/yay2/yay2.c b/ext/-test-/box/yay2/yay2.c index b632ae8495..b632ae8495 100644 --- a/ext/-test-/namespace/yay2/yay2.c +++ b/ext/-test-/box/yay2/yay2.c diff --git a/ext/-test-/namespace/yay2/yay2.def b/ext/-test-/box/yay2/yay2.def index 163fc44c04..163fc44c04 100644 --- a/ext/-test-/namespace/yay2/yay2.def +++ b/ext/-test-/box/yay2/yay2.def diff --git a/ext/-test-/namespace/yay2/yay2.h b/ext/-test-/box/yay2/yay2.h index c4dade928a..c4dade928a 100644 --- a/ext/-test-/namespace/yay2/yay2.h +++ b/ext/-test-/box/yay2/yay2.h diff --git a/ext/-test-/cxxanyargs/cxxanyargs.cpp b/ext/-test-/cxxanyargs/cxxanyargs.cpp index eded13e2ee..c7df7f9038 100644 --- a/ext/-test-/cxxanyargs/cxxanyargs.cpp +++ b/ext/-test-/cxxanyargs/cxxanyargs.cpp @@ -97,31 +97,6 @@ struct test_rb_define_hooked_variable { }; VALUE test_rb_define_hooked_variable::v = Qundef; -namespace test_rb_iterate { - VALUE - iter(VALUE self) - { - return rb_funcall(self, rb_intern("yield"), 0); - } - - VALUE - block(RB_BLOCK_CALL_FUNC_ARGLIST(arg, param)) - { - return rb_funcall(arg, rb_intern("=="), 1, param); - } - - VALUE - test(VALUE self) - { -#ifdef HAVE_NULLPTR - rb_iterate(iter, self, nullptr, self); -#endif - - rb_iterate(iter, self, RUBY_METHOD_FUNC(block), self); // old - return rb_iterate(iter, self, block, self); // new - } -} - namespace test_rb_block_call { VALUE block(RB_BLOCK_CALL_FUNC_ARGLIST(arg, param)) @@ -936,7 +911,6 @@ Init_cxxanyargs(void) test(rb_define_virtual_variable); test(rb_define_hooked_variable); - test(rb_iterate); test(rb_block_call); test(rb_rescue); test(rb_rescue2); diff --git a/ext/-test-/fatal/invalid.c b/ext/-test-/fatal/invalid.c index 393465416a..6fd970b181 100644 --- a/ext/-test-/fatal/invalid.c +++ b/ext/-test-/fatal/invalid.c @@ -1,11 +1,5 @@ #include <ruby.h> -#if SIZEOF_LONG == SIZEOF_VOIDP -# define NUM2PTR(x) NUM2ULONG(x) -#elif SIZEOF_LONG_LONG == SIZEOF_VOIDP -# define NUM2PTR(x) NUM2ULL(x) -#endif - static VALUE invalid_call(VALUE obj, VALUE address) { diff --git a/ext/-test-/integer/depend b/ext/-test-/integer/depend index 0ea007e814..d0589b5e5d 100644 --- a/ext/-test-/integer/depend +++ b/ext/-test-/integer/depend @@ -159,8 +159,11 @@ core_ext.o: $(hdrdir)/ruby/missing.h core_ext.o: $(hdrdir)/ruby/ruby.h core_ext.o: $(hdrdir)/ruby/st.h core_ext.o: $(hdrdir)/ruby/subst.h +core_ext.o: $(top_srcdir)/internal.h +core_ext.o: $(top_srcdir)/internal/basic_operators.h core_ext.o: $(top_srcdir)/internal/bignum.h core_ext.o: $(top_srcdir)/internal/bits.h +core_ext.o: $(top_srcdir)/internal/compar.h core_ext.o: $(top_srcdir)/internal/compilers.h core_ext.o: $(top_srcdir)/internal/fixnum.h core_ext.o: $(top_srcdir)/internal/numeric.h diff --git a/ext/-test-/namespace/yay1/extconf.rb b/ext/-test-/namespace/yay1/extconf.rb deleted file mode 100644 index 539e99ab09..0000000000 --- a/ext/-test-/namespace/yay1/extconf.rb +++ /dev/null @@ -1 +0,0 @@ -create_makefile('-test-/namespace/yay1') diff --git a/ext/-test-/namespace/yay2/extconf.rb b/ext/-test-/namespace/yay2/extconf.rb deleted file mode 100644 index 2027a42860..0000000000 --- a/ext/-test-/namespace/yay2/extconf.rb +++ /dev/null @@ -1 +0,0 @@ -create_makefile('-test-/namespace/yay2') diff --git a/ext/-test-/postponed_job/postponed_job.c b/ext/-test-/postponed_job/postponed_job.c index 9ac866ae77..4426fc3104 100644 --- a/ext/-test-/postponed_job/postponed_job.c +++ b/ext/-test-/postponed_job/postponed_job.c @@ -36,38 +36,6 @@ pjob_callback(void *data) } static VALUE -pjob_register(VALUE self, VALUE obj) -{ - counter = 0; - rb_postponed_job_register(0, pjob_callback, (void *)obj); - rb_gc_start(); - counter++; - rb_gc_start(); - counter++; - rb_gc_start(); - counter++; - return self; -} - -static void -pjob_one_callback(void *data) -{ - VALUE ary = (VALUE)data; - Check_Type(ary, T_ARRAY); - - rb_ary_push(ary, INT2FIX(1)); -} - -static VALUE -pjob_register_one(VALUE self, VALUE obj) -{ - rb_postponed_job_register_one(0, pjob_one_callback, (void *)obj); - rb_postponed_job_register_one(0, pjob_one_callback, (void *)obj); - rb_postponed_job_register_one(0, pjob_one_callback, (void *)obj); - return self; -} - -static VALUE pjob_call_direct(VALUE self, VALUE obj) { counter = 0; @@ -83,48 +51,6 @@ pjob_call_direct(VALUE self, VALUE obj) static void pjob_noop_callback(void *data) { } -static VALUE -pjob_register_one_same(VALUE self) -{ - rb_gc_start(); - int r1 = rb_postponed_job_register_one(0, pjob_noop_callback, NULL); - int r2 = rb_postponed_job_register_one(0, pjob_noop_callback, NULL); - int r3 = rb_postponed_job_register_one(0, pjob_noop_callback, NULL); - VALUE ary = rb_ary_new(); - rb_ary_push(ary, INT2FIX(r1)); - rb_ary_push(ary, INT2FIX(r2)); - rb_ary_push(ary, INT2FIX(r3)); - return ary; -} - -#ifdef HAVE_PTHREAD_H -#include <pthread.h> - -static void * -pjob_register_in_c_thread_i(void *obj) -{ - rb_postponed_job_register_one(0, pjob_one_callback, (void *)obj); - rb_postponed_job_register_one(0, pjob_one_callback, (void *)obj); - rb_postponed_job_register_one(0, pjob_one_callback, (void *)obj); - return NULL; -} - -static VALUE -pjob_register_in_c_thread(VALUE self, VALUE obj) -{ - pthread_t thread; - if (pthread_create(&thread, NULL, pjob_register_in_c_thread_i, (void *)obj)) { - return Qfalse; - } - - if (pthread_join(thread, NULL)) { - return Qfalse; - } - - return Qtrue; -} -#endif - static void pjob_preregistered_callback(void *data) { @@ -216,13 +142,7 @@ void Init_postponed_job(VALUE self) { VALUE mBug = rb_define_module("Bug"); - rb_define_module_function(mBug, "postponed_job_register", pjob_register, 1); - rb_define_module_function(mBug, "postponed_job_register_one", pjob_register_one, 1); rb_define_module_function(mBug, "postponed_job_call_direct", pjob_call_direct, 1); - rb_define_module_function(mBug, "postponed_job_register_one_same", pjob_register_one_same, 0); -#ifdef HAVE_PTHREAD_H - rb_define_module_function(mBug, "postponed_job_register_in_c_thread", pjob_register_in_c_thread, 1); -#endif rb_define_module_function(mBug, "postponed_job_preregister_and_call_with_sleep", pjob_preregister_and_call_with_sleep, 1); rb_define_module_function(mBug, "postponed_job_preregister_and_call_without_sleep", pjob_preregister_and_call_without_sleep, 1); rb_define_module_function(mBug, "postponed_job_preregister_multiple_times", pjob_preregister_multiple_times, 0); diff --git a/ext/-test-/rational/depend b/ext/-test-/rational/depend index 56d6ab77d6..d949fca66b 100644 --- a/ext/-test-/rational/depend +++ b/ext/-test-/rational/depend @@ -163,8 +163,11 @@ rat.o: $(hdrdir)/ruby/missing.h rat.o: $(hdrdir)/ruby/ruby.h rat.o: $(hdrdir)/ruby/st.h rat.o: $(hdrdir)/ruby/subst.h +rat.o: $(top_srcdir)/internal.h +rat.o: $(top_srcdir)/internal/basic_operators.h rat.o: $(top_srcdir)/internal/bignum.h rat.o: $(top_srcdir)/internal/bits.h +rat.o: $(top_srcdir)/internal/compar.h rat.o: $(top_srcdir)/internal/compilers.h rat.o: $(top_srcdir)/internal/fixnum.h rat.o: $(top_srcdir)/internal/gc.h diff --git a/ext/-test-/sanitizers/depend b/ext/-test-/sanitizers/depend new file mode 100644 index 0000000000..0e6e632803 --- /dev/null +++ b/ext/-test-/sanitizers/depend @@ -0,0 +1,162 @@ +# AUTOGENERATED DEPENDENCIES START +sanitizers.o: $(RUBY_EXTCONF_H) +sanitizers.o: $(arch_hdrdir)/ruby/config.h +sanitizers.o: $(hdrdir)/ruby/assert.h +sanitizers.o: $(hdrdir)/ruby/backward.h +sanitizers.o: $(hdrdir)/ruby/backward/2/assume.h +sanitizers.o: $(hdrdir)/ruby/backward/2/attributes.h +sanitizers.o: $(hdrdir)/ruby/backward/2/bool.h +sanitizers.o: $(hdrdir)/ruby/backward/2/inttypes.h +sanitizers.o: $(hdrdir)/ruby/backward/2/limits.h +sanitizers.o: $(hdrdir)/ruby/backward/2/long_long.h +sanitizers.o: $(hdrdir)/ruby/backward/2/stdalign.h +sanitizers.o: $(hdrdir)/ruby/backward/2/stdarg.h +sanitizers.o: $(hdrdir)/ruby/defines.h +sanitizers.o: $(hdrdir)/ruby/intern.h +sanitizers.o: $(hdrdir)/ruby/internal/abi.h +sanitizers.o: $(hdrdir)/ruby/internal/anyargs.h +sanitizers.o: $(hdrdir)/ruby/internal/arithmetic.h +sanitizers.o: $(hdrdir)/ruby/internal/arithmetic/char.h +sanitizers.o: $(hdrdir)/ruby/internal/arithmetic/double.h +sanitizers.o: $(hdrdir)/ruby/internal/arithmetic/fixnum.h +sanitizers.o: $(hdrdir)/ruby/internal/arithmetic/gid_t.h +sanitizers.o: $(hdrdir)/ruby/internal/arithmetic/int.h +sanitizers.o: $(hdrdir)/ruby/internal/arithmetic/intptr_t.h +sanitizers.o: $(hdrdir)/ruby/internal/arithmetic/long.h +sanitizers.o: $(hdrdir)/ruby/internal/arithmetic/long_long.h +sanitizers.o: $(hdrdir)/ruby/internal/arithmetic/mode_t.h +sanitizers.o: $(hdrdir)/ruby/internal/arithmetic/off_t.h +sanitizers.o: $(hdrdir)/ruby/internal/arithmetic/pid_t.h +sanitizers.o: $(hdrdir)/ruby/internal/arithmetic/short.h +sanitizers.o: $(hdrdir)/ruby/internal/arithmetic/size_t.h +sanitizers.o: $(hdrdir)/ruby/internal/arithmetic/st_data_t.h +sanitizers.o: $(hdrdir)/ruby/internal/arithmetic/uid_t.h +sanitizers.o: $(hdrdir)/ruby/internal/assume.h +sanitizers.o: $(hdrdir)/ruby/internal/attr/alloc_size.h +sanitizers.o: $(hdrdir)/ruby/internal/attr/artificial.h +sanitizers.o: $(hdrdir)/ruby/internal/attr/cold.h +sanitizers.o: $(hdrdir)/ruby/internal/attr/const.h +sanitizers.o: $(hdrdir)/ruby/internal/attr/constexpr.h +sanitizers.o: $(hdrdir)/ruby/internal/attr/deprecated.h +sanitizers.o: $(hdrdir)/ruby/internal/attr/diagnose_if.h +sanitizers.o: $(hdrdir)/ruby/internal/attr/enum_extensibility.h +sanitizers.o: $(hdrdir)/ruby/internal/attr/error.h +sanitizers.o: $(hdrdir)/ruby/internal/attr/flag_enum.h +sanitizers.o: $(hdrdir)/ruby/internal/attr/forceinline.h +sanitizers.o: $(hdrdir)/ruby/internal/attr/format.h +sanitizers.o: $(hdrdir)/ruby/internal/attr/maybe_unused.h +sanitizers.o: $(hdrdir)/ruby/internal/attr/noalias.h +sanitizers.o: $(hdrdir)/ruby/internal/attr/nodiscard.h +sanitizers.o: $(hdrdir)/ruby/internal/attr/noexcept.h +sanitizers.o: $(hdrdir)/ruby/internal/attr/noinline.h +sanitizers.o: $(hdrdir)/ruby/internal/attr/nonnull.h +sanitizers.o: $(hdrdir)/ruby/internal/attr/noreturn.h +sanitizers.o: $(hdrdir)/ruby/internal/attr/packed_struct.h +sanitizers.o: $(hdrdir)/ruby/internal/attr/pure.h +sanitizers.o: $(hdrdir)/ruby/internal/attr/restrict.h +sanitizers.o: $(hdrdir)/ruby/internal/attr/returns_nonnull.h +sanitizers.o: $(hdrdir)/ruby/internal/attr/warning.h +sanitizers.o: $(hdrdir)/ruby/internal/attr/weakref.h +sanitizers.o: $(hdrdir)/ruby/internal/cast.h +sanitizers.o: $(hdrdir)/ruby/internal/compiler_is.h +sanitizers.o: $(hdrdir)/ruby/internal/compiler_is/apple.h +sanitizers.o: $(hdrdir)/ruby/internal/compiler_is/clang.h +sanitizers.o: $(hdrdir)/ruby/internal/compiler_is/gcc.h +sanitizers.o: $(hdrdir)/ruby/internal/compiler_is/intel.h +sanitizers.o: $(hdrdir)/ruby/internal/compiler_is/msvc.h +sanitizers.o: $(hdrdir)/ruby/internal/compiler_is/sunpro.h +sanitizers.o: $(hdrdir)/ruby/internal/compiler_since.h +sanitizers.o: $(hdrdir)/ruby/internal/config.h +sanitizers.o: $(hdrdir)/ruby/internal/constant_p.h +sanitizers.o: $(hdrdir)/ruby/internal/core.h +sanitizers.o: $(hdrdir)/ruby/internal/core/rarray.h +sanitizers.o: $(hdrdir)/ruby/internal/core/rbasic.h +sanitizers.o: $(hdrdir)/ruby/internal/core/rbignum.h +sanitizers.o: $(hdrdir)/ruby/internal/core/rclass.h +sanitizers.o: $(hdrdir)/ruby/internal/core/rdata.h +sanitizers.o: $(hdrdir)/ruby/internal/core/rfile.h +sanitizers.o: $(hdrdir)/ruby/internal/core/rhash.h +sanitizers.o: $(hdrdir)/ruby/internal/core/robject.h +sanitizers.o: $(hdrdir)/ruby/internal/core/rregexp.h +sanitizers.o: $(hdrdir)/ruby/internal/core/rstring.h +sanitizers.o: $(hdrdir)/ruby/internal/core/rstruct.h +sanitizers.o: $(hdrdir)/ruby/internal/core/rtypeddata.h +sanitizers.o: $(hdrdir)/ruby/internal/ctype.h +sanitizers.o: $(hdrdir)/ruby/internal/dllexport.h +sanitizers.o: $(hdrdir)/ruby/internal/dosish.h +sanitizers.o: $(hdrdir)/ruby/internal/error.h +sanitizers.o: $(hdrdir)/ruby/internal/eval.h +sanitizers.o: $(hdrdir)/ruby/internal/event.h +sanitizers.o: $(hdrdir)/ruby/internal/fl_type.h +sanitizers.o: $(hdrdir)/ruby/internal/gc.h +sanitizers.o: $(hdrdir)/ruby/internal/glob.h +sanitizers.o: $(hdrdir)/ruby/internal/globals.h +sanitizers.o: $(hdrdir)/ruby/internal/has/attribute.h +sanitizers.o: $(hdrdir)/ruby/internal/has/builtin.h +sanitizers.o: $(hdrdir)/ruby/internal/has/c_attribute.h +sanitizers.o: $(hdrdir)/ruby/internal/has/cpp_attribute.h +sanitizers.o: $(hdrdir)/ruby/internal/has/declspec_attribute.h +sanitizers.o: $(hdrdir)/ruby/internal/has/extension.h +sanitizers.o: $(hdrdir)/ruby/internal/has/feature.h +sanitizers.o: $(hdrdir)/ruby/internal/has/warning.h +sanitizers.o: $(hdrdir)/ruby/internal/intern/array.h +sanitizers.o: $(hdrdir)/ruby/internal/intern/bignum.h +sanitizers.o: $(hdrdir)/ruby/internal/intern/class.h +sanitizers.o: $(hdrdir)/ruby/internal/intern/compar.h +sanitizers.o: $(hdrdir)/ruby/internal/intern/complex.h +sanitizers.o: $(hdrdir)/ruby/internal/intern/cont.h +sanitizers.o: $(hdrdir)/ruby/internal/intern/dir.h +sanitizers.o: $(hdrdir)/ruby/internal/intern/enum.h +sanitizers.o: $(hdrdir)/ruby/internal/intern/enumerator.h +sanitizers.o: $(hdrdir)/ruby/internal/intern/error.h +sanitizers.o: $(hdrdir)/ruby/internal/intern/eval.h +sanitizers.o: $(hdrdir)/ruby/internal/intern/file.h +sanitizers.o: $(hdrdir)/ruby/internal/intern/hash.h +sanitizers.o: $(hdrdir)/ruby/internal/intern/io.h +sanitizers.o: $(hdrdir)/ruby/internal/intern/load.h +sanitizers.o: $(hdrdir)/ruby/internal/intern/marshal.h +sanitizers.o: $(hdrdir)/ruby/internal/intern/numeric.h +sanitizers.o: $(hdrdir)/ruby/internal/intern/object.h +sanitizers.o: $(hdrdir)/ruby/internal/intern/parse.h +sanitizers.o: $(hdrdir)/ruby/internal/intern/proc.h +sanitizers.o: $(hdrdir)/ruby/internal/intern/process.h +sanitizers.o: $(hdrdir)/ruby/internal/intern/random.h +sanitizers.o: $(hdrdir)/ruby/internal/intern/range.h +sanitizers.o: $(hdrdir)/ruby/internal/intern/rational.h +sanitizers.o: $(hdrdir)/ruby/internal/intern/re.h +sanitizers.o: $(hdrdir)/ruby/internal/intern/ruby.h +sanitizers.o: $(hdrdir)/ruby/internal/intern/select.h +sanitizers.o: $(hdrdir)/ruby/internal/intern/select/largesize.h +sanitizers.o: $(hdrdir)/ruby/internal/intern/set.h +sanitizers.o: $(hdrdir)/ruby/internal/intern/signal.h +sanitizers.o: $(hdrdir)/ruby/internal/intern/sprintf.h +sanitizers.o: $(hdrdir)/ruby/internal/intern/string.h +sanitizers.o: $(hdrdir)/ruby/internal/intern/struct.h +sanitizers.o: $(hdrdir)/ruby/internal/intern/thread.h +sanitizers.o: $(hdrdir)/ruby/internal/intern/time.h +sanitizers.o: $(hdrdir)/ruby/internal/intern/variable.h +sanitizers.o: $(hdrdir)/ruby/internal/intern/vm.h +sanitizers.o: $(hdrdir)/ruby/internal/interpreter.h +sanitizers.o: $(hdrdir)/ruby/internal/iterator.h +sanitizers.o: $(hdrdir)/ruby/internal/memory.h +sanitizers.o: $(hdrdir)/ruby/internal/method.h +sanitizers.o: $(hdrdir)/ruby/internal/module.h +sanitizers.o: $(hdrdir)/ruby/internal/newobj.h +sanitizers.o: $(hdrdir)/ruby/internal/scan_args.h +sanitizers.o: $(hdrdir)/ruby/internal/special_consts.h +sanitizers.o: $(hdrdir)/ruby/internal/static_assert.h +sanitizers.o: $(hdrdir)/ruby/internal/stdalign.h +sanitizers.o: $(hdrdir)/ruby/internal/stdbool.h +sanitizers.o: $(hdrdir)/ruby/internal/stdckdint.h +sanitizers.o: $(hdrdir)/ruby/internal/symbol.h +sanitizers.o: $(hdrdir)/ruby/internal/value.h +sanitizers.o: $(hdrdir)/ruby/internal/value_type.h +sanitizers.o: $(hdrdir)/ruby/internal/variable.h +sanitizers.o: $(hdrdir)/ruby/internal/warning_push.h +sanitizers.o: $(hdrdir)/ruby/internal/xmalloc.h +sanitizers.o: $(hdrdir)/ruby/missing.h +sanitizers.o: $(hdrdir)/ruby/ruby.h +sanitizers.o: $(hdrdir)/ruby/st.h +sanitizers.o: $(hdrdir)/ruby/subst.h +sanitizers.o: sanitizers.c +# AUTOGENERATED DEPENDENCIES END diff --git a/ext/-test-/sanitizers/extconf.rb b/ext/-test-/sanitizers/extconf.rb new file mode 100644 index 0000000000..c94a96de6c --- /dev/null +++ b/ext/-test-/sanitizers/extconf.rb @@ -0,0 +1,2 @@ +require 'mkmf' +create_makefile('-test-/sanitizers') diff --git a/ext/-test-/sanitizers/sanitizers.c b/ext/-test-/sanitizers/sanitizers.c new file mode 100644 index 0000000000..97a85b26ef --- /dev/null +++ b/ext/-test-/sanitizers/sanitizers.c @@ -0,0 +1,36 @@ +#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 +} + +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); +} + diff --git a/ext/-test-/scheduler/extconf.rb b/ext/-test-/scheduler/extconf.rb new file mode 100644 index 0000000000..159699bd8e --- /dev/null +++ b/ext/-test-/scheduler/extconf.rb @@ -0,0 +1,2 @@ +# frozen_string_literal: false +create_makefile("-test-/scheduler") diff --git a/ext/-test-/scheduler/scheduler.c b/ext/-test-/scheduler/scheduler.c new file mode 100644 index 0000000000..b742a5573b --- /dev/null +++ b/ext/-test-/scheduler/scheduler.c @@ -0,0 +1,92 @@ +#include "ruby/ruby.h" +#include "ruby/thread.h" +#include "ruby/io.h" +#include "ruby/fiber/scheduler.h" + +/* + * Test extension for reproducing the gRPC interrupt handling bug. + * + * This reproduces the exact issue from grpc/grpc commit 69f229e (June 2025): + * https://github.com/grpc/grpc/commit/69f229edd1d79ab7a7dfda98e3aef6fd807adcad + * + * The bug occurs when: + * 1. A fiber scheduler uses Thread.handle_interrupt(::SignalException => :never) + * (like Async::Scheduler does) + * 2. Native code uses rb_thread_call_without_gvl in a retry loop that checks + * the interrupted flag and retries (like gRPC's completion queue) + * 3. A signal (SIGINT/SIGTERM) is sent + * 4. The unblock_func sets interrupted=1, but Thread.handle_interrupt defers the signal + * 5. The loop sees interrupted=1 and retries without yielding to the scheduler + * 6. The deferred interrupt never gets processed -> infinite hang + * + * The fix is in vm_check_ints_blocking() in thread.c, which should yield to + * the fiber scheduler when interrupts are pending, allowing the scheduler to + * detect Thread.pending_interrupt? and exit its run loop. + */ + +struct blocking_state { + int notify_descriptor; + volatile int interrupted; +}; + +static void +unblock_callback(void *argument) +{ + struct blocking_state *blocking_state = (struct blocking_state *)argument; + blocking_state->interrupted = 1; +} + +static void * +blocking_operation(void *argument) +{ + struct blocking_state *blocking_state = (struct blocking_state *)argument; + + ssize_t ret = write(blocking_state->notify_descriptor, "x", 1); + (void)ret; // ignore the result for now + + while (!blocking_state->interrupted) { + struct timeval tv = {1, 0}; // 1 second timeout. + int result = select(0, NULL, NULL, NULL, &tv); + + if (result == -1 && errno == EINTR) { + blocking_state->interrupted = 1; + } + + // Otherwise, timeout -> loop again. + } + + return NULL; +} + +static VALUE +scheduler_blocking_loop(VALUE self, VALUE notify) +{ + struct blocking_state blocking_state = { + .notify_descriptor = rb_io_descriptor(notify), + .interrupted = 0, + }; + + while (true) { + blocking_state.interrupted = 0; + + rb_thread_call_without_gvl( + blocking_operation, &blocking_state, + unblock_callback, &blocking_state + ); + + // The bug: When interrupted, loop retries without yielding to scheduler. + // With Thread.handle_interrupt(:never), this causes an infinite hang, + // because the deferred interrupt never gets a chance to be processed. + } while (blocking_state.interrupted); + + return Qnil; +} + +void +Init_scheduler(void) +{ + VALUE mBug = rb_define_module("Bug"); + VALUE mScheduler = rb_define_module_under(mBug, "Scheduler"); + + rb_define_module_function(mScheduler, "blocking_loop", scheduler_blocking_loop, 1); +} diff --git a/ext/-test-/st/foreach/foreach.c b/ext/-test-/st/foreach/foreach.c index 7fbf064694..5c1bfd1631 100644 --- a/ext/-test-/st/foreach/foreach.c +++ b/ext/-test-/st/foreach/foreach.c @@ -14,13 +14,9 @@ force_unpack_check(struct checker *c, st_data_t key, st_data_t val) if (c->nr == 0) { st_data_t i; - if (c->tbl->bins != NULL) rb_bug("should be packed"); - /* force unpacking during iteration: */ for (i = 1; i < expect_size; i++) st_add_direct(c->tbl, i, i); - - if (c->tbl->bins == NULL) rb_bug("should be unpacked"); } if (key != c->nr) { @@ -84,8 +80,6 @@ unp_fec(VALUE self, VALUE test) st_add_direct(tbl, 0, 0); - if (tbl->bins != NULL) rb_bug("should still be packed"); - st_foreach_check(tbl, unp_fec_i, (st_data_t)&c, -1); if (c.test == ID2SYM(rb_intern("delete2"))) { @@ -98,8 +92,6 @@ unp_fec(VALUE self, VALUE test) (VALUE)c.nr, (VALUE)expect_size); } - if (tbl->bins == NULL) rb_bug("should be unpacked"); - st_free_table(tbl); return Qnil; @@ -145,8 +137,6 @@ unp_fe(VALUE self, VALUE test) st_add_direct(tbl, 0, 0); - if (tbl->bins != NULL) rb_bug("should still be packed"); - st_foreach(tbl, unp_fe_i, (st_data_t)&c); if (c.test == ID2SYM(rb_intern("unpack_delete"))) { @@ -159,8 +149,6 @@ unp_fe(VALUE self, VALUE test) (VALUE)c.nr, (VALUE)expect_size); } - if (tbl->bins == NULL) rb_bug("should be unpacked"); - st_free_table(tbl); return Qnil; diff --git a/ext/-test-/stack/depend b/ext/-test-/stack/depend index 31571c882e..77e93bb201 100644 --- a/ext/-test-/stack/depend +++ b/ext/-test-/stack/depend @@ -172,6 +172,7 @@ stack.o: $(hdrdir)/ruby/oniguruma.h stack.o: $(hdrdir)/ruby/ruby.h stack.o: $(hdrdir)/ruby/st.h stack.o: $(hdrdir)/ruby/subst.h +stack.o: $(top_srcdir)/encindex.h stack.o: $(top_srcdir)/internal/compilers.h stack.o: $(top_srcdir)/internal/string.h stack.o: stack.c diff --git a/ext/-test-/stack/stack.c b/ext/-test-/stack/stack.c index 8ff32f9737..f0e65e74b2 100644 --- a/ext/-test-/stack/stack.c +++ b/ext/-test-/stack/stack.c @@ -2,7 +2,7 @@ #include "internal/string.h" static VALUE -stack_alloca_overflow(VALUE self) +stack_overflow(VALUE self) { size_t i = 0; @@ -30,6 +30,6 @@ asan_p(VALUE klass) void Init_stack(VALUE klass) { - rb_define_singleton_method(rb_cThread, "alloca_overflow", stack_alloca_overflow, 0); + rb_define_singleton_method(rb_cThread, "stack_overflow", stack_overflow, 0); rb_define_singleton_method(rb_cThread, "asan?", asan_p, 0); } diff --git a/ext/-test-/string/cstr.c b/ext/-test-/string/cstr.c index b0b1ef5374..931220b46b 100644 --- a/ext/-test-/string/cstr.c +++ b/ext/-test-/string/cstr.c @@ -111,9 +111,10 @@ bug_str_s_cstr_noembed(VALUE self, VALUE str) FL_SET((str2), STR_NOEMBED); memcpy(buf, RSTRING_PTR(str), capacity); RBASIC(str2)->flags &= ~(STR_SHARED | FL_USER5 | FL_USER6); - RSTRING(str2)->as.heap.aux.capa = capacity; + RSTRING(str2)->as.heap.aux.capa = RSTRING_LEN(str); RSTRING(str2)->as.heap.ptr = buf; RSTRING(str2)->len = RSTRING_LEN(str); + TERM_FILL(RSTRING_END(str2), TERM_LEN(str)); return str2; } diff --git a/ext/-test-/string/depend b/ext/-test-/string/depend index de6e775acc..478ae3b82b 100644 --- a/ext/-test-/string/depend +++ b/ext/-test-/string/depend @@ -172,6 +172,7 @@ capacity.o: $(hdrdir)/ruby/oniguruma.h capacity.o: $(hdrdir)/ruby/ruby.h capacity.o: $(hdrdir)/ruby/st.h capacity.o: $(hdrdir)/ruby/subst.h +capacity.o: $(top_srcdir)/encindex.h capacity.o: $(top_srcdir)/internal/compilers.h capacity.o: $(top_srcdir)/internal/string.h capacity.o: capacity.c @@ -679,6 +680,7 @@ cstr.o: $(hdrdir)/ruby/oniguruma.h cstr.o: $(hdrdir)/ruby/ruby.h cstr.o: $(hdrdir)/ruby/st.h cstr.o: $(hdrdir)/ruby/subst.h +cstr.o: $(top_srcdir)/encindex.h cstr.o: $(top_srcdir)/internal.h cstr.o: $(top_srcdir)/internal/compilers.h cstr.o: $(top_srcdir)/internal/string.h @@ -1535,6 +1537,7 @@ fstring.o: $(hdrdir)/ruby/oniguruma.h fstring.o: $(hdrdir)/ruby/ruby.h fstring.o: $(hdrdir)/ruby/st.h fstring.o: $(hdrdir)/ruby/subst.h +fstring.o: $(top_srcdir)/encindex.h fstring.o: $(top_srcdir)/internal/compilers.h fstring.o: $(top_srcdir)/internal/string.h fstring.o: fstring.c diff --git a/ext/-test-/string/fstring.c b/ext/-test-/string/fstring.c index 71c4b7f97e..0b5940f28c 100644 --- a/ext/-test-/string/fstring.c +++ b/ext/-test-/string/fstring.c @@ -12,20 +12,20 @@ VALUE bug_s_fstring_fake_str(VALUE self) { static const char literal[] = "abcdefghijklmnopqrstuvwxyz"; - struct RString fake_str; + struct RString fake_str = {RBASIC_INIT}; return rb_str_to_interned_str(rb_setup_fake_str(&fake_str, literal, sizeof(literal) - 1, 0)); } VALUE bug_s_rb_enc_interned_str(VALUE self, VALUE encoding) { - return rb_enc_interned_str("foo", 3, NIL_P(encoding) ? NULL : RDATA(encoding)->data); + return rb_enc_interned_str("foo", 3, NIL_P(encoding) ? NULL : RTYPEDDATA_GET_DATA(encoding)); } VALUE bug_s_rb_enc_str_new(VALUE self, VALUE encoding) { - return rb_enc_str_new("foo", 3, NIL_P(encoding) ? NULL : RDATA(encoding)->data); + return rb_enc_str_new("foo", 3, NIL_P(encoding) ? NULL : RTYPEDDATA_GET_DATA(encoding)); } void diff --git a/ext/-test-/time/leap_second.c b/ext/-test-/time/leap_second.c deleted file mode 100644 index ee7011fa97..0000000000 --- a/ext/-test-/time/leap_second.c +++ /dev/null @@ -1,15 +0,0 @@ -#include "ruby.h" -#include "internal/time.h" - -static VALUE -bug_time_s_reset_leap_second_info(VALUE klass) -{ - ruby_reset_leap_second_info(); - return Qnil; -} - -void -Init_time_leap_second(VALUE klass) -{ - rb_define_singleton_method(klass, "reset_leap_second_info", bug_time_s_reset_leap_second_info, 0); -} diff --git a/ext/-test-/tracepoint/gc_hook.c b/ext/-test-/tracepoint/gc_hook.c index 54c06c54a5..525be6da63 100644 --- a/ext/-test-/tracepoint/gc_hook.c +++ b/ext/-test-/tracepoint/gc_hook.c @@ -2,6 +2,7 @@ #include "ruby/debug.h" static int invoking; /* TODO: should not be global variable */ +extern VALUE tp_mBug; static VALUE invoke_proc_ensure(VALUE _) @@ -17,9 +18,9 @@ invoke_proc_begin(VALUE proc) } static void -invoke_proc(void *data) +invoke_proc(void *ivar_name) { - VALUE proc = (VALUE)data; + VALUE proc = rb_ivar_get(tp_mBug, rb_intern(ivar_name)); invoking += 1; rb_ensure(invoke_proc_begin, proc, invoke_proc_ensure, 0); } @@ -40,16 +41,16 @@ gc_start_end_i(VALUE tpval, void *data) } static VALUE -set_gc_hook(VALUE module, VALUE proc, rb_event_flag_t event, const char *tp_str, const char *proc_str) +set_gc_hook(VALUE proc, rb_event_flag_t event, const char *tp_str, const char *proc_str) { VALUE tpval; ID tp_key = rb_intern(tp_str); /* disable previous keys */ - if (rb_ivar_defined(module, tp_key) != 0 && - RTEST(tpval = rb_ivar_get(module, tp_key))) { + if (rb_ivar_defined(tp_mBug, tp_key) != 0 && + RTEST(tpval = rb_ivar_get(tp_mBug, tp_key))) { rb_tracepoint_disable(tpval); - rb_ivar_set(module, tp_key, Qnil); + rb_ivar_set(tp_mBug, tp_key, Qnil); } if (RTEST(proc)) { @@ -57,8 +58,9 @@ set_gc_hook(VALUE module, VALUE proc, rb_event_flag_t event, const char *tp_str, rb_raise(rb_eTypeError, "trace_func needs to be Proc"); } - tpval = rb_tracepoint_new(0, event, gc_start_end_i, (void *)proc); - rb_ivar_set(module, tp_key, tpval); + rb_ivar_set(tp_mBug, rb_intern(proc_str), proc); + tpval = rb_tracepoint_new(0, event, gc_start_end_i, (void *)proc_str); + rb_ivar_set(tp_mBug, tp_key, tpval); rb_tracepoint_enable(tpval); } @@ -66,16 +68,16 @@ set_gc_hook(VALUE module, VALUE proc, rb_event_flag_t event, const char *tp_str, } static VALUE -set_after_gc_start(VALUE module, VALUE proc) +set_after_gc_start(VALUE _self, VALUE proc) { - return set_gc_hook(module, proc, RUBY_INTERNAL_EVENT_GC_START, + return set_gc_hook(proc, RUBY_INTERNAL_EVENT_GC_START, "__set_after_gc_start_tpval__", "__set_after_gc_start_proc__"); } static VALUE -start_after_gc_exit(VALUE module, VALUE proc) +start_after_gc_exit(VALUE _self, VALUE proc) { - return set_gc_hook(module, proc, RUBY_INTERNAL_EVENT_GC_EXIT, + return set_gc_hook(proc, RUBY_INTERNAL_EVENT_GC_EXIT, "__set_after_gc_exit_tpval__", "__set_after_gc_exit_proc__"); } diff --git a/ext/-test-/tracepoint/tracepoint.c b/ext/-test-/tracepoint/tracepoint.c index 2826cc038c..001d9513b2 100644 --- a/ext/-test-/tracepoint/tracepoint.c +++ b/ext/-test-/tracepoint/tracepoint.c @@ -1,6 +1,8 @@ #include "ruby/ruby.h" #include "ruby/debug.h" +VALUE tp_mBug; + struct tracepoint_track { size_t newobj_count; size_t free_count; @@ -89,8 +91,8 @@ void Init_gc_hook(VALUE); void Init_tracepoint(void) { - VALUE mBug = rb_define_module("Bug"); - Init_gc_hook(mBug); - rb_define_module_function(mBug, "tracepoint_track_objspace_events", tracepoint_track_objspace_events, 0); - rb_define_module_function(mBug, "tracepoint_specify_normal_and_internal_events", tracepoint_specify_normal_and_internal_events, 0); + tp_mBug = rb_define_module("Bug"); // GC root + Init_gc_hook(tp_mBug); + rb_define_module_function(tp_mBug, "tracepoint_track_objspace_events", tracepoint_track_objspace_events, 0); + rb_define_module_function(tp_mBug, "tracepoint_specify_normal_and_internal_events", tracepoint_specify_normal_and_internal_events, 0); } |
