--- old/src/share/vm/runtime/arguments.cpp 2016-03-24 16:29:30.507042974 -0400 +++ new/src/share/vm/runtime/arguments.cpp 2016-03-24 16:29:30.343869082 -0400 @@ -975,10 +975,33 @@ return NULL; } -AliasedLoggingFlag Arguments::catch_logging_aliases(const char* name){ +void log_deprecated_flag( const char* name, const char* pref, AliasedLoggingFlag alf) { + LogTagType tagSet[5] = {alf.tag0, alf.tag1, alf.tag2, alf.tag3, alf.tag4}; + // Set tagset string buffer at max size of 256, large enough for any alias tagset + int max_tagset_size = 256; + char tagset_buffer[max_tagset_size]; + memset(tagset_buffer, 0, max_tagset_size); + + // Write tag-set for aliased logging option, in string list form + for (int i = 0; i < 5 && tagSet[i] != LogTag::__NO_TAG; i++) { + if (i > 0) { + strncat(tagset_buffer, ",", 1); + } + strncat(tagset_buffer, LogTag::name(tagSet[i]), max_tagset_size - strlen(tagset_buffer)); + } + + log_warning(arguments)("-XX:%s%s is deprecated. Will use -Xlog:%s=%s instead.", + pref, + name, + tagset_buffer, + (pref == "-") ? "off" : LogLevel::name(alf.level)); +} + +AliasedLoggingFlag Arguments::catch_logging_aliases(const char* name, const char* pref){ for (size_t i = 0; aliased_logging_flags[i].alias_name != NULL; i++) { const AliasedLoggingFlag& alf = aliased_logging_flags[i]; if (strcmp(alf.alias_name, name) == 0) { + log_deprecated_flag(name, pref, alf); return alf; } } @@ -997,7 +1020,7 @@ bool warn_if_deprecated = true; if (sscanf(arg, "-%" XSTR(BUFLEN) NAME_RANGE "%c", name, &dummy) == 1) { - AliasedLoggingFlag alf = catch_logging_aliases(name); + AliasedLoggingFlag alf = catch_logging_aliases(name, "-"); if (alf.alias_name != NULL){ LogConfiguration::configure_stdout(LogLevel::Off, alf.exactMatch, alf.tag0, alf.tag1, alf.tag2, alf.tag3, alf.tag4, alf.tag5); return true; @@ -1009,7 +1032,7 @@ return set_bool_flag(real_name, false, origin); } if (sscanf(arg, "+%" XSTR(BUFLEN) NAME_RANGE "%c", name, &dummy) == 1) { - AliasedLoggingFlag alf = catch_logging_aliases(name); + AliasedLoggingFlag alf = catch_logging_aliases(name, "+"); if (alf.alias_name != NULL){ LogConfiguration::configure_stdout(alf.level, alf.exactMatch, alf.tag0, alf.tag1, alf.tag2, alf.tag3, alf.tag4, alf.tag5); return true; @@ -1225,8 +1248,9 @@ else { const char* replacement; if ((replacement = removed_develop_logging_flag_name(stripped_argname)) != NULL){ - jio_fprintf(defaultStream::error_stream(), - "%s has been removed. Please use %s instead.\n", stripped_argname, replacement); + log_warning(arguments)("%s has been removed. Please use %s instead.", + stripped_argname, + replacement); return false; } }