[8u] RFR: 8196882: VS2017 Hotspot Defined vsnprintf Function Causes C2084 Already Defined Compilation Error
Kevin Walls
kevin.walls at oracle.com
Thu Jul 26 10:22:05 UTC 2018
Hi - Is anybody available to comment on this one... Thanks!
On 13/07/2018 20:12, Kevin Walls wrote:
> Hi,
>
> I'd like to request a review of a backport from 11 to 8u:
>
> 8196882: VS2017 Hotspot Defined vsnprintf Function Causes C2084
> Already Defined Compilation Error
> JBS: https://bugs.openjdk.java.net/browse/JDK-8196882
>
> 11 changeset:
> http://hg.openjdk.java.net/jdk/hs/rev/eebf559c9e0d
>
> 11 review thread:
> http://mail.openjdk.java.net/pipermail/hotspot-dev/2018-February/030252.html
>
> ...to...
> http://mail.openjdk.java.net/pipermail/hotspot-dev/2018-February/030279.html
>
>
>
> 8u webrev: http://cr.openjdk.java.net/~kevinw/8196882/webrev.00/
>
>
> From VS2015, vsnprintf is provided, and is C99 conforming. This is
> new, and
> conflicts with the hotspot-provided definition. 8196882 introduces
> os::vsnprintf()
> so we can choose what we call in there.
>
> We don't necessarily want to change behaviour in jdk8u, so we call
> _vsnprintf()
> on Windows to get the old behaviour.
>
> I didn't plan to move everything to a C99 behaviour here for jdk8u as
> we did in jdk11.
> We just want to solve the symbol clash, so
> outputStream::do_vsnprintf() does
> not need to change as it does in 11.
>
> In jvm.cpp, the change in jdk11 changes jio_vsnprintf behaviour, but
> we wouldn't
> normally choose to change the behaviour at this point in 8u.
>
> (But ensuring the buffer is null-terminated looks like a positive
> change.)
>
> The original has GTests, here in 8u it's a debug-mode test at
> runtime. I have edited some of the
> asserts in check_snprintf_result() as not changing jio_vsnprintf.
>
> I've been building and testing with VS2017 and the current default
> compiler VS2010,
> plus the other platforms.
>
> Many thanks!
> Kevin
>
More information about the hotspot-dev
mailing list