[OpenJDK 2D-Dev] JDK-8081295: Build failed with GCC 5.1.1

Yasumasa Suenaga yasuenag at gmail.com
Thu May 28 11:52:49 UTC 2015


Hi Alexander,

Thank you for your comment.

I agree to use DISABLED_WARNINGS_gcc.

Should I make a patch after JDK-8080695
<https://bugs.openjdk.java.net/browse/JDK-8080695> committed?

Thanks,

Yasumasa
2015/05/28 18:19 "Alexander Zvegintsev" <alexander.zvegintsev at oracle.com>:

Hello Yasumasa,

I prefer to avoid such pragma usage, as for me code is more readable
without it.
So we can add array-bounds to DISABLED_WARNINGS_gcc in
make/lib/Awt2dLibraries.gmk for BUILD_LIBJAVAJPEG and BUILD_LIBMLIB_IMAGE.

We can nullify row_pointers and image_data after setjmp call to remove
warnings in splashscreen_png.c:
diff -r 729dffc8afa0
src/java.desktop/share/native/libsplashscreen/splashscreen_png.c
--- a/src/java.desktop/share/native/libsplashscreen/splashscreen_png.c
+++ b/src/java.desktop/share/native/libsplashscreen/splashscreen_png.c
@@ -77,6 +77,8 @@ SplashDecodePng(Splash * splash, png_rw_
 #else
     if (setjmp(png_jmpbuf(png_ptr))) {
 #endif
+        row_pointers = NULL;
+        image_data = NULL;
         goto done;
     }
(or declare them as volatile, but I prefer the first option).
BTW, there is another issue about this splashscreen_png.c gcc build failure
[1].

[1] https://bugs.openjdk.java.net/browse/JDK-8080695

Thanks,

Alexander.


On 05/28/2015 06:27 AM, Yasumasa Suenaga wrote:

> I've uploaded webrev:
>    http://cr.openjdk.java.net/~ysuenaga/JDK-8081295/webrev.01/
>
> Please review.
>
>
> Thanks,
>
> Yasumasa
>
>
> On 2015/05/28 12:19, Yasumasa Suenaga wrote:
>
>> Hi all,
>>
>> I tried to build jdk9/dev on Fedora22 with GCC 5.1.1, however, it was
>> failed.
>> I found several problems:
>>
>>
>>    System:
>>     Fedora release 22 (Twenty Two) x86_64
>>      - gcc-5.1.1-1.fc22.x86_64
>>
>>
>>    Problems:
>>      1. Array bounds check in GCC
>>        - jdk/src/java.desktop/share/native/libjavajpeg/jcmaster.c
>>        - jdk/src/java.desktop/share/native/libjavajpeg/jquant1.c
>>        -
>> jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageLookUp_64.c
>>        -
>> jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageLookUp_f.c
>>
>>        It seems to be bug of GCC:
>>          Bug 59124: [4.8/4.9/5/6 Regression] Wrong warnings "array
>> subscript is above array bounds"
>>          https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59124
>>
>>        I think implementations of these files have no problem.
>>        So I propose to ignore warning(s) of compiler through pragma
>> option as
>>        workaround when we use GCC [1].
>>
>>
>>      2. Local variables might be clobbered
>>        -
>> jdk/src/java.desktop/share/native/libsplashscreen/splashscreen_png.c
>>
>>        SplashDecodePng() calls setjmp(3).
>>        Some local variables initialize before setjmp() call, and use
>> after it.
>>        Their initial values are only used at cleanup code (*done* label)
>> and
>>        actual values are stored only after setjmp() call.
>>        So I think we can ignore this error through pragma option [1].
>>
>>
>>      3. Incorrect condition
>>        - jdk/src/jdk.jdwp.agent/share/native/libjdwp/eventFilter.c
>>
>>        searchAllSourceNames() returns int value. However, branch
>> condition in
>>        eventFilterRestricted_passesFilter() treats it as boolean value.
>>
>>
>> I received a comment from Erik to use --disable-warnings-as-errors,
>> however I could not avoid error in 3.
>>
>>
>> Thanks,
>>
>> Yasumasa
>>
>>
>> [1] https://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/2d-dev/attachments/20150528/428864ab/attachment.html>


More information about the 2d-dev mailing list