[oe] [meta-java][master-next][PATCH 4/4] openjdk-8: update to work with gcc v8

André Draszik git at andred.net
Thu Aug 9 10:46:07 UTC 2018


Argh, this last one still doesn't work, because of weird CFLAGS / CXXFLAGS
in this recipe :-(

We end up adding command line options to gcc based on the cross gcc version,
but openjdk uses the same ones for native tools compilation, which fails.

A,


On Thu, 2018-08-09 at 01:26 +0100, André Draszik wrote:
> From: André Draszik <andre.draszik at jci.com>
> 
> Similar to the existing gcc-6 and gcc-7 support, we need to
> add the same specific compiler flags to avoid miscompilation
> on gcc-8:
>   -fno-lifetime-dse
>   -fno-delete-null-pointer-checks
> 
> In addition, gcc v8 introduces new warnings (which are
> treated as errors), which we can just silence for the
> time being:
> 
> > <<PKGBUILDDIR>>/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp
> > :223:32: error: control reaches end of non-void function [-
> > Werror=return-type]
> >  #define BREAKPOINT ::breakpoint()
> >                     ~~~~~~~~~~~~^~
> > <<PKGBUILDDIR>>/hotspot/src/share/vm/utilities/debug.hpp:192:3: note: in
> > expansion of macro 'BREAKPOINT'
> >    BREAKPOINT;                                                          
> >       \
> >    ^~~~~~~~~~
> > <<PKGBUILDDIR>>/hotspot/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp:1
> > 97:2: note: in expansion of macro 'ShouldNotReachHere'
> >   ShouldNotReachHere();
> >   ^~~~~~~~~~~~~~~~~~
> 
> etc.
> 
> And
> > <<PKGBUILDDIR>>/hotspot/src/share/vm/runtime/arguments.cpp:3811:14:
> > error: 'char* strncat(char*, const char*, size_t)' specified bound 1
> > equals source length [-Werror=stringop-overflow=]
> >        strncat(shared_archive_path, os::file_separator(), file_sep_len);
> >        ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > <<PKGBUILDDIR>>/hotspot/src/share/vm/runtime/arguments.cpp: In static
> > member function 'static void Arguments::fix_appclasspath()':
> > <<PKGBUILDDIR>>/hotspot/src/share/vm/runtime/arguments.cpp:3433:12:
> > error: 'char* strncpy(char*, const char*, size_t)' specified bound
> > depends on the length of the source argument [-Werror=stringop-
> > overflow=]
> >      strncpy(copy, src, strlen(src) + 1);
> >      ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > <<PKGBUILDDIR>>/hotspot/src/share/vm/runtime/arguments.cpp:3433:30:
> > note: length computed here
> >      strncpy(copy, src, strlen(src) + 1);
> >                         ~~~~~~^~~~~
> > <<PKGBUILDDIR>>/hotspot/src/share/vm/runtime/arguments.cpp:3433:12:
> > error: 'char* strncpy(char*, const char*, size_t)' specified bound
> > depends on the length of the source argument [-Werror=stringop-
> > overflow=]
> >      strncpy(copy, src, strlen(src) + 1);
> >      ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > <<PKGBUILDDIR>>/hotspot/src/share/vm/runtime/arguments.cpp:3433:30:
> > note: length computed here
> >      strncpy(copy, src, strlen(src) + 1);
> >                         ~~~~~~^~~~~
> 
> etc.
> 
> With this,
>     bitbake -c testimage openjdk-8-test-image
> works again:
> RESULTS:
> RESULTS - ping.PingTest.test_ping - Testcase 964: PASSED (0.12s)
> RESULTS - ssh.SSHTest.test_ssh - Testcase 224: PASSED (1.20s)
> RESULTS - java.JavaTest.test_java_exists - Testcase -1: PASSED (0.15s)
> RESULTS - java.JavaTest.test_java_jar_comp_mode - Testcase -1: PASSED
> (41.98s)
> RESULTS - java.JavaTest.test_java_jar_int_mode - Testcase -1: PASSED
> (1.76s)
> RESULTS - java.JavaTest.test_java_jar_works - Testcase -1: PASSED (2.13s)
> RESULTS - java.JavaTest.test_java_version - Testcase -1: PASSED (1.51s)
> RESULTS - javac.JavacTest.test_javac_exists - Testcase -1: PASSED (0.11s)
> RESULTS - javac.JavacTest.test_javac_works - Testcase -1: PASSED (17.64s)
> SUMMARY:
> openjdk-8-test-image () - Ran 9 tests in 67.112s
> openjdk-8-test-image - OK - All required tests passed
> 
> Signed-off-by: André Draszik <andre.draszik at jci.com>
> ---
>  recipes-core/openjdk/openjdk-8-common.inc | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/recipes-core/openjdk/openjdk-8-common.inc b/recipes-
> core/openjdk/openjdk-8-common.inc
> index 3b328e9..79af54a 100644
> --- a/recipes-core/openjdk/openjdk-8-common.inc
> +++ b/recipes-core/openjdk/openjdk-8-common.inc
> @@ -216,6 +216,7 @@ EXTRA_OECONF_append = "\
>  # of these changes.
>  FLAGS_GCC6 = "-fno-lifetime-dse -fno-delete-null-pointer-checks"
>  FLAGS_GCC7 = "-fno-lifetime-dse -fno-delete-null-pointer-checks"
> +FLAGS_GCC8 = "-fno-lifetime-dse -fno-delete-null-pointer-checks -Wno-
> error=stringop-overflow -Wno-error=return-type"
>  
>  # All supported cross compilers support the compiler flags that were
>  # added to make compilation with gcc6 work. But the host compiler for



More information about the Openembedded-devel mailing list