RFR: [XS] 8184338 : switch minimum supported gcc version to 4.8 - was : RE: jdk10 build : usage of -fno-var-tracking-assignments g++ flag in hotspot build

dalibor topic dalibor.topic at oracle.com
Fri Jul 14 13:01:36 UTC 2017


Fwiw, gcc 4.x has seen its last release about a year ago with 4.9.4: 
https://gcc.gnu.org/gcc-4.9/ . It is no longer maintained.

cheers,
dalibor topic

On 14.07.2017 08:45, Erik Joelsson wrote:
>  From my point of view, the minimum version is a bit arbitrary. We have 
> identified that we likely need 4.6 or newer now, so we could set the 
> limit to 4.6 or 4.7 if needed. Supporting very old compilers have a 
> cost. The setting here will only cause a warning to be printed that 
> essentially means we don't test builds with this old compiler and we 
> won't make any effort in keeping it working. I would expect 4.7 to 
> continue to work for a time anyway.
> 
> Eventually though, we will upgrade the recommended toolchain and we will 
> start using newer compiler features that will make older compilers 
> obsolete for real.
> 
> /Erik
> 
> 
> On 2017-07-13 21:56, Simon Nash wrote:
>> I am currently building JDK 9 for arm32 (hard float and soft float) using
>> a Linaro GCC 4.7 cross-compiler (binary download).  What is the reason 
>> that
>> this cannot be supported for JDK 10?
>>
>> Best regards,
>> Simon
>>
>> On 13/07/2017 14:40, Baesken, Matthias wrote:
>>> Hi Erik, I prepared the change :
>>>
>>> http://cr.openjdk.java.net/~mbaesken/webrevs/8184338/
>>>
>>> bug :
>>>
>>> https://bugs.openjdk.java.net/browse/JDK-8184338
>>>
>>> Asking for review(s) ...
>>>
>>>
>>> Best regards, Matthias
>>>
>>>
>>>
>>>
>>> -----Original Message-----
>>> From: Erik Joelsson [mailto:erik.joelsson at oracle.com] Sent: 
>>> Donnerstag, 13. Juli 2017 13:34
>>> To: Baesken, Matthias <matthias.baesken at sap.com>; 
>>> 'build-dev at openjdk.java.net' <build-dev at openjdk.java.net>; 
>>> 'hotspot-dev at openjdk.java.net' <hotspot-dev at openjdk.java.net>
>>> Subject: Re: jdk10 build : usage of -fno-var-tracking-assignments g++ 
>>> flag in hotspot build
>>>
>>> Hello,
>>>
>>> That would be the correct place. If you prepare the change and send 
>>> the review I can sponsor the push.
>>>
>>> /Erik
>>>
>>> On 2017-07-13 13:16, Baesken, Matthias wrote:
>>>> Hi Erik,
>>>>
>>>>> AFAIK, the only reason we support GCC versions older than 4.9 is 
>>>>> for you
>>>>> guys at SAP, so if you would suggest dropping support, that would of
>>>>> course be the simplest solution.
>>>>    for jdk10  it is fine for us to  use  minimum gcc 4.8  . That 
>>>> would be probably the most simple solution to avoid running into 
>>>> the  "-fno-var-tracking-assignments"  issue
>>>>   ( I now and then run into it when I forget to set the PATH to 
>>>> gcc-4.8 one should use for compiling on the SLES11 machine, so I 
>>>> pick up instead the default gcc 4.3.4 from the machine  ,
>>>> configure works nicely and then the build fails in the middle of the 
>>>> HS make )
>>>>
>>>> autoconf/toolchain.m4
>>>>
>>>> TOOLCHAIN_MINIMUM_VERSION_gcc="4.8"
>>>>
>>>> Is there right place to  adjust I think, I guess we need someone for 
>>>> Oracle to regenerate the generated-configure.sh files ?
>>>>
>>>> Best regards, Matthias
>>>>
>>>>
>>>>
>>>>
>>>> -----Original Message-----
>>>> From: Erik Joelsson [mailto:erik.joelsson at oracle.com]
>>>> Sent: Donnerstag, 13. Juli 2017 11:59
>>>> To: Baesken, Matthias <matthias.baesken at sap.com>; 
>>>> 'build-dev at openjdk.java.net' <build-dev at openjdk.java.net>; 
>>>> 'hotspot-dev at openjdk.java.net' <hotspot-dev at openjdk.java.net>
>>>> Subject: Re: jdk10 build : usage of -fno-var-tracking-assignments 
>>>> g++ flag in hotspot build
>>>>
>>>> Hello Matthias,
>>>>
>>>> AFAIK, the only reason we support GCC versions older than 4.9 is for 
>>>> you
>>>> guys at SAP, so if you would suggest dropping support, that would of
>>>> course be the simplest solution.
>>>>
>>>> If you want to keep support but make the use of this flag optional, the
>>>> preferred method is to add a test in flags.m4. We have macros defined
>>>> for this. FLAGS_COMPILER_CHECK_ARGUMENTS or
>>>> FLAGS_CXX_COMPILER_CHECK_ARGUMENTS would be suitable in this case. Use
>>>> it to check if the flag is valid for the current compiler. If so, you
>>>> can define a variable
>>>> "CXXFLAGS_GCC_NO_VAR_TRACKING_ASSIGNMENTS=-fno-var-tracking-assignment"
>>>> and empty otherwise, and in the makefile use this variable in the
>>>> assignement.
>>>>
>>>> We want to avoid static shell expressions in the makefiles if possible
>>>> and keep that kind of logic in configure. It's also better to 
>>>> explicitly
>>>> check for features rather than versions.
>>>>
>>>> /Erik
>>>>
>>>>
>>>> On 2017-07-13 11:21, Baesken, Matthias wrote:
>>>>> Hello,  when building jdk10 on Suse Linux 11 with default gcc/g++ 
>>>>> 4.3.4 installed, I was running into
>>>>> compilation errors because of the  missing support for  g++ flag 
>>>>> -fno-var-tracking-assignments .
>>>>>
>>>>> It seems gcc-4.6  has the -fvar-tracking-assignments / 
>>>>> -fnovar-tracking-assignments  flags , see
>>>>>
>>>>> https://gcc.gnu.org/onlinedocs/gcc-4.6.4/gcc/Option-Summary.html#Option-Summary 
>>>>>
>>>>>
>>>>> I have no gcc-4.6 at hand but could verify that gcc-4.7 and gcc-4.8 
>>>>> "know" the flag.
>>>>> There are various solutions one could do  to avoid  the compilation 
>>>>> error .
>>>>>
>>>>>
>>>>> 1) disallow usage of old gcc versions here :
>>>>>
>>>>> autoconf/toolchain.m4
>>>>>
>>>>> TOOLCHAIN_MINIMUM_VERSION_gcc="4.3"
>>>>>
>>>>> ( e.g. change to minimum gcc   4.6 or gcc  4.7  supporting the 
>>>>> flags used in the build )
>>>>>
>>>>>
>>>>> 2) remove the flag  -fno-var-tracking-assignments for older gcc 
>>>>> versions here :
>>>>> (in a similar way it was done : 
>>>>> http://hg.openjdk.java.net/jdk9/jdk9/hotspot/rev/37e693211deb )
>>>>>
>>>>> hotspot/make/lib/JvmOverrideFiles.gmk-32-ifeq ($(TOOLCHAIN_TYPE), gcc)
>>>>> hotspot/make/lib/JvmOverrideFiles.gmk:33: 
>>>>> BUILD_LIBJVM_vmStructs.cpp_CXXFLAGS := 
>>>>> -fno-var-tracking-assignments -O0
>>>>> hotspot/make/lib/JvmOverrideFiles.gmk:34: 
>>>>> BUILD_LIBJVM_jvmciCompilerToVM.cpp_CXXFLAGS := 
>>>>> -fno-var-tracking-assignments
>>>>> hotspot/make/lib/JvmOverrideFiles.gmk-35-endif
>>>>>
>>>>> What is your preferred solution ?
>>>>>
>>>>>
>>>>> Thanks, Matthias
>>>>>
>>>>>
>>>
>>
> 

-- 
<http://www.oracle.com> Dalibor Topic | Principal Product Manager
Phone: +494089091214 <tel:+494089091214> | Mobile: +491737185961
<tel:+491737185961>

ORACLE Deutschland B.V. & Co. KG | Kühnehöfe 5 | 22761 Hamburg

ORACLE Deutschland B.V. & Co. KG
Hauptverwaltung: Riesstr. 25, D-80992 München
Registergericht: Amtsgericht München, HRA 95603

Komplementärin: ORACLE Deutschland Verwaltung B.V.
Hertogswetering 163/167, 3543 AS Utrecht, Niederlande
Handelsregister der Handelskammer Midden-Niederlande, Nr. 30143697
Geschäftsführer: Alexander van der Ven, Jan Schultheiss, Val Maher

<http://www.oracle.com/commitment> Oracle is committed to developing
practices and products that help protect the environment


More information about the hotspot-dev mailing list