OpenJDK 11.0.27 on macOS 15: expression is not an integral constant expression

Joshua Root jmr at macports.org
Sun Apr 20 17:28:45 UTC 2025


On 21/4/2025 01:27, Nils Breunese wrote:
> I created a draft pull request to bump the openjdk11 port to version 11.0.27 (https://github.com/macports/macports-ports/pull/28212), but it looks like this line:
> 
> 	AO_UNUSED_MBZ = (-1)<<13, // options bits reserved for future use.
> 
> in src/jdk.pack/share/native/common-unpack/constants.h results in this error on macOS 15:
> 
> 	expression is not an integral constant expression
> 
> On macOS 13 and 14 the build succeeds without this error.
> 
> I am not too familiar with C++, but does this seem related to a change in macOS 15? Any idea what should be done to fix the build on macOS 15?

It would be a compiler change rather than a change in the OS. I believe 
using bitwise shift operators on a negative value has undefined 
behaviour. The fix would be to express the constant in a well-defined 
way, for example directly as a hex value, or by shifting a positive 
value and then negating afterwards. I don't know how this constant is 
used, so I can't say what would be most appropriate.

- Josh


More information about the macports-dev mailing list