jdk8u: -Wno-regsiter to support newer compilers

David Holmes david.holmes at oracle.com
Wed Aug 7 01:10:09 UTC 2024


On 7/08/2024 4:42 am, Elazar Leibovich wrote:
> Thanks,
> I did follow the readme, but could not find any commentary about the 
> build environment or the required compilers.

There is a tiny bit of info there but I think it is out-of-date:

Linux X86 (32-bit) and X64 (64-bit) Fedora 9 gcc 4.3
Mac OS X X64 (64-bit) Mac OS X 10.7 "Lion" XCode 4.5.2 or newer

There is also info here, but again likely out-of-date:

https://wiki.openjdk.org/display/Build/Supported+Build+Platforms

The folks on jdk8u-dev are the best source of current info.

David
-----


> Even less information was on Mac OS X, where the autoconf files seems 
> not to be updated, and as a result arm was chosen instead of aarch64.
> 
> If you can point me to a specific section in the documentation 
> specifying, say, a list of known good compilers, I'll be grateful.
> 
> On Tue, 6 Aug 2024 at 21:37, Magnus Ihse Bursie 
> <magnus.ihse.bursie at oracle.com <mailto:magnus.ihse.bursie at oracle.com>> 
> wrote:
> 
>     __
> 
>     On 2024-08-06 20:33, Elazar Leibovich wrote:
> 
>>     Thanks,
>>     I still fail to understand how JDK8u developers are building the
>>     project.
> 
>     Setting up a build environment for jdk8 is unfortunately not a
>     trivial task. The build readme can be of some use:
>     https://github.com/openjdk/jdk8u-dev/blob/master/doc/building.md
>     <https://github.com/openjdk/jdk8u-dev/blob/master/doc/building.md>.
>     The build system has gone through a complete overhaul in later
>     versions, so if you were to build the mainline JDK it would be a
>     much smoother experience. After all, JDK 8 was released 10 years
>     ago, and much has happened since then.
> 
>     /Magnus
> 
> 
> 
>>     Is there a docker file specifying the build environment? What's
>>     the recommended way of doing that?
>>     Removing the register keyword, plus disabling an overflow warning
>>     in a specific test with pragma did the trick for me, but:
>>     1. I could not get it built in Mac OS X
>>     2. I felt as if I'm paving my own path building it, instead of
>>     following the Yellow Brick Road, which I'm trying to locate.
>>
>>     Thanks again,
>>
>>     On Tue, 6 Aug 2024 at 21:10, Zdeněk Žamberský <zzambers at redhat.com
>>     <mailto:zzambers at redhat.com>> wrote:
>>
>>         Hello,
>>
>>         this is known issue, which should get fixed by JDK-8281096:
>>         https://github.com/openjdk/jdk8u-dev/pull/357
>>         <https://github.com/openjdk/jdk8u-dev/pull/357>
>>
>>         (see also: https://github.com/openjdk/jdk8u-dev/pull/508
>>         <https://github.com/openjdk/jdk8u-dev/pull/508>)
>>
>>         TLDR:
>>         Jdk 8 explicitly specifies older c++ version (gnu++98, which
>>         not yet
>>         deprecated
>>         'register' keyword), but flags are not propagated to ADLC
>>         build due to bug.
>>         (correct me, if I am wrong)
>>
>>
>>         When it comes to Adoptium, I don't know exactly, but I think
>>         they are using
>>         older compiler, which uses older c++ standard by default.
>>
>>         On 06. 08. 24 18:37, Magnus Ihse Bursie wrote:
>>         > Hi Elazar,
>>         >
>>         > I see that you never got any replies here. I suggest that
>>         you re-ask
>>         > your question on the jdk8u mailing list instead (cc'd).
>>         >
>>         > /Magnus
>>         >
>>         > On 2024-07-19 16:20, Elazar Leibovich wrote:
>>         >> When trying to compile the latest jdk8u on linux I get
>>         failures over
>>         >> warnings with the register keywords.
>>         >>
>>         >> I'm using https://github.com/openjdk/jdk8u-dev.git
>>         <https://github.com/openjdk/jdk8u-dev.git> which seems to be
>>         >> pretty up to date (I'm using master), and last commit is
>>         less than
>>         >> two days ago.
>>         >>
>>         >> This is a workaround I had to use:
>>         >> diff --git a/hotspot/make/linux/makefiles/gcc.make
>>         >> b/hotspot/make/linux/makefiles/gcc.make
>>         >> index 7dde7f0963..81f156574a 100644
>>         >> --- a/hotspot/make/linux/makefiles/gcc.make
>>         >> +++ b/hotspot/make/linux/makefiles/gcc.make
>>         >> @@ -202,7 +202,7 @@ else
>>         >>  endif
>>         >>
>>         >>  # Compiler warnings are treated as errors
>>         >> -WARNINGS_ARE_ERRORS = -Werror
>>         >> +WARNINGS_ARE_ERRORS = -Werror -Wno-register
>>         >>
>>         >> But I guess the best solution is to remove the register
>>         keywords from
>>         >> the codebase.
>>         >>
>>         >> How is adoptium building it? Does it use specific compiler?
>>         Is the
>>         >> supported compiler documented anywhere?
>>         >>
>>         >> FTR using temurin-build repository and scripts, fails for
>>         other
>>         >> reasons, and fails even with -D/--podman docker containers.
>>         >>
>>         >> This patch builds it with centos stream 9 on amd64.
>>         >>
>>         >> Am I doing something wrong? What's the recommended way of
>>         building jdk8?
>>         >>
>>         >> Thanks,
>>         >> Elazar Leibovich
>>         >
>>
>>         -- 
>>         Zdeněk Žamberský
>>         OpenJDK QE
>>         Red Hat
>>


More information about the build-dev mailing list