[OpenJDK 2D-Dev] RFR: Bug Pending: Build fails to compile jchuff.c
David Holmes
david.holmes at oracle.com
Thu Jan 25 00:37:36 UTC 2018
Hi Magnus,
On 25/01/2018 9:55 AM, Magnus Ihse Bursie wrote:
> I'm not sure I'm able to follow where this discussion is heading, but at
> the very least I'd like to chime in on the patch below:
>
> I don't like how the entire DISABLED_WARNINGS_gcc line is lifted out. A
> better solution is something like this:
>
> ifeq ($(CC_VERSION_NUMBER), 4.8.5)
> #Turn off array-bounds warnings for libjava compilation because jchuff.c
> #fails to compile on gcc 4.8.5 with a warning that an array is potentially
> #out of bounds. This kills a warnings=errors build.
> LIBJAVAJPEG_DISABLED_WARNINGS_gcc485 := array-bounds
> endif
> ...
> DISABLED_WARNINGS_gcc := clobbered
> $(LIBJAVAJPEG_DISABLED_WARNINGS_gcc485), \
>
> I also can't see this going into anything else than the current
> mainline, jdk/jdk i.e. JDK 11. Since the issue is trivially avoided by
> using --disable-warnings-as-errors, I hardly see that it warrants a
> backport.
It's pointless in JDK 11 as we're not going to claim support for gcc 4.8.5.
The issue is that out-of-the-box if you are building 8u or 9 and use gcc
4.8.5, which is supposed to be a valid compiler to use based on the
wiki, then it fails because of this gcc bug, unless you disable
warnings-as-errors. So either we put in a workaround for the bug or we
update to the build docs (and/or the wiki) to make it very clear that
you may need to disable warnings-as-errors (something there is no
mention of in the build doc in 9).
David
-----
> /Magnus
>
> On 2018-01-23 14:44, Adam Farley8 wrote:
>> Hi All,
>>
>> All: I think I responded to everyone below. Please could a committer or
>> author raise a bug and, if people are happy with this change, line it up
>> for contribution to JDKs 8-11 (assuming 4.8.5 is still the recommended
>> gcc
>> for JDK10 and 11 on SUSE sles)?
>>
>> Erik: One toolchain-specific change, as requested. This was tested on
>> JDK9,
>> so please apply an offset of -1 to the line numbers before applying to
>> JDK10.
>>
>> ----------------------- Start of Diff -----------------------
>>
>> diff --git a/make/lib/Awt2dLibraries.gmk b/make/lib/Awt2dLibraries.gmk
>> --- a/make/lib/Awt2dLibraries.gmk
>> +++ b/make/lib/Awt2dLibraries.gmk
>> @@ -482,6 +482,14 @@
>> BUILD_LIBJAVAJPEG_HEADERS := $(addprefix -I, $(LIBJAVAJPEG_SRC))
>> endif
>>
>> +LIBJAVAJPEG_DISABLED_WARNINGS_gcc := clobbered
>> +ifeq ($(CC_VERSION_NUMBER), 4.8.5)
>> + #Turn off array-bounds warnings for libjava compilation because
>> jchuff.c
>> + #fails to compile on gcc 4.8.5 with a warning that an array is
>> potentially
>> + #out of bounds. This kills a warnings=errors build.
>> + LIBJAVAJPEG_DISABLED_WARNINGS_gcc := clobbered array-bounds
>> +endif
>> +
>> $(eval $(call SetupNativeCompilation,BUILD_LIBJAVAJPEG, \
>> LIBRARY := javajpeg, \
>> OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
>> @@ -491,7 +499,7 @@
>> CFLAGS := $(CFLAGS_JDKLIB) $(BUILD_LIBJAVAJPEG_HEADERS) \
>> $(LIBJAVA_HEADER_FLAGS) \
>> -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop, \
>> - DISABLED_WARNINGS_gcc := clobbered, \
>> + DISABLED_WARNINGS_gcc := $(LIBJAVAJPEG_DISABLED_WARNINGS_gcc), \
>> MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjpeg/mapfile-vers, \
>> LDFLAGS := $(LDFLAGS_JDKLIB) \
>> $(call SET_SHARED_LIBRARY_ORIGIN), \
>>
>> ----------------------- End of Diff -----------------------
>>
>> Phil: I've changed the title as asked and supplied the diff above.
>> However,
>> I can't upload files to cr.openjdk.java.net, nor can I create bugs
>> myself.
>> I understand that authors and committers can, but I don't have those
>> privileges yet. Be nice if I did. :)
>>
>> John: I read your email, and I understand your position. I disagree
>> with it,
>> but I understand it. 4.8.5 is an old version of gcc, but right now it
>> is the
>> listed gcc version for SUSE sles on intel, ppc, ppcle, and zLinux.
>> Even if
>> this is not the case for JDK 10 or 11, we should ensure this fix is fully
>> propagated to ensure consistent behaviour.
>>
>> That is my position.
>>
>> David: Thanks for the URL. I agree with your position on 4.8.5 gcc
>> needing
>> to compile OpenJDK without errors or special options. :)
>>
>> Best Regards
>>
>> Adam Farley
>>
>>
>>
>> From: Phil Race <philip.race at oracle.com>
>> To: Adam Farley8 <adam.farley at uk.ibm.com>, 2d-dev at openjdk.java.net
>> Cc: build-dev <build-dev at openjdk.java.net>
>> Date: 18/01/2018 19:16
>> Subject: Re: [OpenJDK 2D-Dev] [PATCH] Build fails to compile jchuff.c
>> ------------------------------------------------------------------------
>>
>>
>>
>> Try again with build-dev cc'd ..
>>
>> -phil.
>>
>> On 01/18/2018 11:14 AM, Phil Race wrote:
>> I agree with what Erik said on build-dev that being specific about the
>> tool chain
>> and the reason are worthwhile and important. We've done that in
>> similar cases.
>>
>> Also these review threads usually should have a subject like
>> RFR: <BUG ID>: <Bug Synopsis>
>>
>> which means you first need a bug id .. the patch can't be pushed
>> without one anyway.
>>
>> Then the patch should be an in-line diff or a webrev hosted on
>> cr.openjdk.java.net.
>>
>> I think in-line would be OK for this small change.
>>
>> -phil.
>>
>> On 01/17/2018 09:30 AM, Adam Farley8 wrote:
>> Hi All,
>>
>> Under these circumstances, jchuff.c will not compile:
>>
>> Platform: zLinux (s390x)
>> Release: JDK9 (may affect other JDKs).
>> GCC Version: 4.8.5
>> Notes: --disable-warnings-as-errors suppresses this error.
>>
>> The error is:
>>
>> /home/adamfarl/hotspot/jdk9/jdk/src/java.desktop/share/native/libjavajpeg/jchuff.c:
>> In function 'jGenOptTbl':
>> /home/adamfarl/hotspot/jdk9/jdk/src/java.desktop/share/native/libjavajpeg/jchuff.c:808:18:
>> error: array subscript is below array bounds [-Werror=array-bounds]
>> while (bits[j] == 0)
>> ^
>>
>> This is a continuation of a conversation in the build-dev mailing
>> list, if anyone wants to
>> check the history.
>>
>> The short version is that, while you *can* suppress the problem by adding
>> --disable-warnings-as-errors to your configure step, I posit that a
>> builder shouldn't
>> have to.
>>
>> Various solutions were debated. One involves changing Awt2dLibraries.gmk.
>>
>> Basically you change line 494 to this:
>>
>> DISABLED_WARNINGS_gcc := clobbered array-bounds, \
>>
>> I'm running a build now to check that works, but basically we should
>> end up with a
>> -Wno-array-bounds on the gcc compile command for jchuff.c, thereby
>> ignoring the warning.
>>
>> A smarter variant involves checking for that specific version of the
>> gcc, but that seems
>> wordy to me for this problem. Keeping it simple. :)
>>
>> Thoughts?
>>
>> Best Regards
>>
>> Adam Farley
>>
>> Unless stated otherwise above:
>> IBM United Kingdom Limited - Registered in England and Wales with
>> number 741598.
>> Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6
>> 3AU
>>
>>
>>
>>
>>
>> Unless stated otherwise above:
>> IBM United Kingdom Limited - Registered in England and Wales with
>> number 741598.
>> Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU
>
More information about the build-dev
mailing list