OpenJDK 11.0.27 on macOS 15: expression is not an integral constant expression
Dave Allured - NOAA Affiliate
dave.allured at noaa.gov
Sun Apr 20 18:14:22 UTC 2025
On Sun, Apr 20, 2025 at 11:29 AM Joshua Root <jmr at macports.org> wrote:
> 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.
cppreference.com says that is undefined behavior. That constant is defined
as an enum, which I think means only that it needs to be a correctly
defined integer. Try something like this:
AO_UNUSED_MBZ = (~((1<<13) - 1))
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macports.org/pipermail/macports-dev/attachments/20250420/48ea2ef6/attachment.htm>
More information about the macports-dev
mailing list