--- old/src/share/vm/runtime/arguments.hpp 2016-03-22 14:48:46.568698981 -0400 +++ new/src/share/vm/runtime/arguments.hpp 2016-03-22 14:48:46.415518949 -0400 @@ -467,7 +467,7 @@ // Return NULL if the arg has expired. static const char* handle_aliases_and_deprecation(const char* arg, bool warn); static bool lookup_logging_aliases(const char* arg, char* buffer); - static AliasedLoggingFlag catch_logging_aliases(const char* name); + static AliasedLoggingFlag catch_logging_aliases(const char* name, const char* pref); static short CompileOnlyClassesNum; static short CompileOnlyClassesMax; static char** CompileOnlyClasses; --- old/src/share/vm/runtime/arguments.cpp 2016-03-22 14:48:46.610850501 -0400 +++ new/src/share/vm/runtime/arguments.cpp 2016-03-22 14:48:46.452464615 -0400 @@ -947,10 +947,35 @@ 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}; + int max_tagset_size = 256; + char tagset_buffer[max_tagset_size]; + memset(tagset_buffer, 0, max_tagset_size); + char* pos = tagset_buffer; + + // 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) { + strcpy(pos, ","); + pos++; + } + strcpy(pos, LogTag::name(tagSet[i])); + pos += strlen(pos); + } + + 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; } } @@ -969,7 +994,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; @@ -981,7 +1006,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; --- old/src/share/vm/logging/logTag.hpp 2016-03-22 14:48:46.615514639 -0400 +++ new/src/share/vm/logging/logTag.hpp 2016-03-22 14:48:46.435302680 -0400 @@ -34,6 +34,7 @@ #define LOG_TAG_LIST \ LOG_TAG(alloc) \ LOG_TAG(age) \ + LOG_TAG(arguments) \ LOG_TAG(barrier) \ LOG_TAG(biasedlocking) \ LOG_TAG(bot) \