summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--error.c8
-rw-r--r--include/ruby/version.h3
-rw-r--r--ruby.c6
-rw-r--r--test/-ext-/bug_reporter/test_bug_reporter.rb2
-rw-r--r--test/ruby/test_rubyoptions.rb2
-rw-r--r--version.c15
6 files changed, 16 insertions, 20 deletions
diff --git a/error.c b/error.c
index 35e797f5b9..d5721b2eca 100644
--- a/error.c
+++ b/error.c
@@ -82,7 +82,7 @@ static struct {
st_table *id2enum, *enum2id;
} warning_categories;
-extern const char ruby_description[];
+extern const char *rb_dynamic_description;
static const char *
rb_strerrno(int err)
@@ -730,7 +730,7 @@ bug_report_begin_valist(FILE *out, const char *fmt, va_list args)
fputs("[BUG] ", out);
vsnprintf(buf, sizeof(buf), fmt, args);
fputs(buf, out);
- snprintf(buf, sizeof(buf), "\n%s\n\n", ruby_description);
+ snprintf(buf, sizeof(buf), "\n%s\n\n", rb_dynamic_description);
fputs(buf, out);
preface_dump(out);
}
@@ -866,7 +866,7 @@ rb_async_bug_errno(const char *mesg, int errno_arg)
write_or_abort(2, errno_str, strlen(errno_str));
}
WRITE_CONST(2, "\n\n");
- write_or_abort(2, ruby_description, strlen(ruby_description));
+ write_or_abort(2, rb_dynamic_description, strlen(rb_dynamic_description));
abort();
}
@@ -882,7 +882,7 @@ rb_assert_failure(const char *file, int line, const char *name, const char *expr
FILE *out = stderr;
fprintf(out, "Assertion Failed: %s:%d:", file, line);
if (name) fprintf(out, "%s:", name);
- fprintf(out, "%s\n%s\n\n", expr, ruby_description);
+ fprintf(out, "%s\n%s\n\n", expr, rb_dynamic_description);
preface_dump(out);
rb_vm_bugreport(NULL);
bug_report_end(out);
diff --git a/include/ruby/version.h b/include/ruby/version.h
index f10b58f9c7..18b3abc8d7 100644
--- a/include/ruby/version.h
+++ b/include/ruby/version.h
@@ -137,7 +137,8 @@ RUBY_EXTERN const int ruby_patchlevel;
/**
* This is what `ruby -v` prints to the standard error. Something like:
- * `"ruby 2.5.9p229 (2021-04-05 revision 67829) [x86_64-linux]"`
+ * `"ruby 2.5.9p229 (2021-04-05 revision 67829) [x86_64-linux]"`. This doesn't
+ * include runtime options like a JIT being enabled.
*/
RUBY_EXTERN const char ruby_description[];
diff --git a/ruby.c b/ruby.c
index 9e38572751..191e8a7a71 100644
--- a/ruby.c
+++ b/ruby.c
@@ -1826,10 +1826,11 @@ process_options(int argc, char **argv, ruby_cmdline_options_t *opt)
rb_yjit_init();
#endif
}
- if (opt->dump & (DUMP_BIT(version) | DUMP_BIT(version_v))) {
#if USE_MJIT
- mjit_opts.on = opt->mjit.on; /* used by ruby_show_version(). mjit_init() still can't be called here. */
+ mjit_opts.on = opt->mjit.on; /* used by Init_ruby_description(). mjit_init() still can't be called here. */
#endif
+ Init_ruby_description();
+ if (opt->dump & (DUMP_BIT(version) | DUMP_BIT(version_v))) {
ruby_show_version();
if (opt->dump & DUMP_BIT(version)) return Qtrue;
}
@@ -1888,7 +1889,6 @@ process_options(int argc, char **argv, ruby_cmdline_options_t *opt)
mjit_init(&opt->mjit);
#endif
- Init_ruby_description();
Init_enc();
lenc = rb_locale_encoding();
rb_enc_associate(rb_progname, lenc);
diff --git a/test/-ext-/bug_reporter/test_bug_reporter.rb b/test/-ext-/bug_reporter/test_bug_reporter.rb
index 990b6a2cc5..6e955e2cbd 100644
--- a/test/-ext-/bug_reporter/test_bug_reporter.rb
+++ b/test/-ext-/bug_reporter/test_bug_reporter.rb
@@ -7,8 +7,6 @@ class TestBugReporter < Test::Unit::TestCase
omit if ENV['RUBY_ON_BUG']
description = RUBY_DESCRIPTION
- description = description.sub(/\+MJIT /, '') if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled?
- description = description.sub(/\+YJIT /, '') if defined?(RubyVM::YJIT.enabled?) && RubyVM::YJIT.enabled?
expected_stderr = [
:*,
/\[BUG\]\sSegmentation\sfault.*\n/,
diff --git a/test/ruby/test_rubyoptions.rb b/test/ruby/test_rubyoptions.rb
index ab15006e4c..757cbcf41f 100644
--- a/test/ruby/test_rubyoptions.rb
+++ b/test/ruby/test_rubyoptions.rb
@@ -740,7 +740,7 @@ class TestRubyOptions < Test::Unit::TestCase
-e:(?:1:)?\s\[BUG\]\sSegmentation\sfault.*\n
)x,
%r(
- #{ Regexp.quote(NO_JIT_DESCRIPTION) }\n\n
+ #{ Regexp.quote(RUBY_DESCRIPTION) }\n\n
)x,
%r(
(?:--\s(?:.+\n)*\n)?
diff --git a/version.c b/version.c
index 7d4478eeb6..a628952907 100644
--- a/version.c
+++ b/version.c
@@ -47,6 +47,9 @@ static const char ruby_description_with_yjit[] = RUBY_DESCRIPTION_WITH(" +YJIT")
const char ruby_copyright[] = RUBY_COPYRIGHT;
const char ruby_engine[] = "ruby";
+// Might change after initialization
+const char *rb_dynamic_description = ruby_description;
+
/*! Defines platform-depended Ruby-level constants */
void
Init_version(void)
@@ -104,9 +107,11 @@ Init_ruby_description(void)
VALUE description;
if (MJIT_OPTS_ON) {
+ rb_dynamic_description = ruby_description_with_mjit;
description = MKSTR(description_with_mjit);
}
else if (rb_yjit_enabled_p()) {
+ rb_dynamic_description = ruby_description_with_yjit;
description = MKSTR(description_with_yjit);
}
else {
@@ -122,15 +127,7 @@ Init_ruby_description(void)
void
ruby_show_version(void)
{
- if (MJIT_OPTS_ON) {
- PRINT(description_with_mjit);
- }
- else if (rb_yjit_enabled_p()) {
- PRINT(description_with_yjit);
- }
- else {
- PRINT(description);
- }
+ puts(rb_dynamic_description);
#ifdef RUBY_LAST_COMMIT_TITLE
fputs("last_commit=" RUBY_LAST_COMMIT_TITLE, stdout);