[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