RFR: 8365163: [ubsan] left-shift issue in globalDefinitions.hpp [v5]

Kim Barrett kbarrett at openjdk.org
Wed Aug 27 00:13:42 UTC 2025


On Tue, 26 Aug 2025 13:51:53 GMT, Afshin Zafari <azafari at openjdk.org> wrote:

>> There was a left-shift of negative value UB in `set_high` function where the high value sign bit is on and is left-shifted 32 bits to put it in high word of the destination address.
>> To address it, first the left 32 bits of the provided `high` arg is cleared and then left-shifted 32 bits. 
>> 
>> Tests:
>> mach5 tiers 1-5 {macosx-aarch64, linux-x64, windows-x64} x {debug, product}
>
> Afshin Zafari has updated the pull request incrementally with one additional commit since the last revision:
> 
>   CONST64 vs explicit casting.

test/hotspot/gtest/utilities/test_globalDefinitions.cpp line 301:

> 299: TEST(globalDefinitions, jlong_from) {
> 300:   jlong val = jlong_from(0xFF, 0);
> 301:   EXPECT_EQ(val, 0x00000000FF00000000);

Should be using `CONST64` here and elsewhere.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/26809#discussion_r2302451319


More information about the hotspot-dev mailing list