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

Alexander Zvegintsev alexander.zvegintsev at oracle.com
Thu May 28 15:48:57 UTC 2015


Hi Yasumasa,

the fix looks good to me.

Thanks,

Alexander.

On 05/28/2015 05:41 PM, Yasumasa Suenaga wrote:
> Hi Alexander,
>
> I've uploaded new webrev:
>   http://cr.openjdk.java.net/~ysuenaga/JDK-8081295/webrev.02/
>
> This patch excludes libsplashscreen, and fix Awt2dLibraries.gmk .
> Could you review it?
>
>
> Thanks,
>
> Yasumasa
>
>
>
> On 2015/05/28 22:00, Alexander Zvegintsev wrote:
>> I think that you can just exclude libsplashscreen part from your fix,
>> since it is covered by JDK-8080695.
>>
>> Thanks,
>>
>> Alexander.
>>
>> On 05/28/2015 02:52 PM, Yasumasa Suenaga wrote:
>>>
>>> Hi Alexander,
>>>
>>> Thank you for your comment.
>>>
>>> I agree to use DISABLED_WARNINGS_gcc.
>>>
>>> Should I make a patch afterJDK-8080695 
>>> <https://bugs.openjdk.java.net/browse/JDK-8080695> committed?
>>>
>>> Thanks,
>>>
>>> Yasumasa
>>>
>>> 2015/05/28 18:19 "Alexander Zvegintsev" 
>>> <alexander.zvegintsev at oracle.com 
>>> <mailto: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/ 
>>> <http://cr.openjdk.java.net/%7Eysuenaga/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
>>>
>>>
>>




More information about the 2d-dev mailing list