diff options
author | André Draszik <andre.draszik@jci.com> | 2018-08-14 13:50:58 +0100 |
---|---|---|
committer | Richard Leitner <richard.leitner@skidata.com> | 2018-08-14 16:41:47 +0200 |
commit | e89564dc67cf0136d998a73813c74d9e174f30af (patch) | |
tree | b6b8b90360be488da280b06833c604858fea8c6a /recipes-core/openjdk/patches-openjdk-8/0016-hotspot-Zero-build-requires-disabled-warnings.patch | |
parent | cd17a0f9389594d931d859472c18d166d4996df1 (diff) | |
download | meta-java-e89564dc67cf0136d998a73813c74d9e174f30af.tar.gz |
openjdk-8: gcc-8 fix #4: undefined behaviour (hotspot)
Using gcc-8, Hotspot is being miscompiled, resulting in non-
working binaries.
The reason is undefined behaviour, which gcc-8 even warns about
and errors out. We have so far have taped over those warnings,
but it turns out that we simply cannot do that.
Add patches to address undefined behaviour causing miscompilation
of hotsport.
This also means we can remove the -Wno-error=return-type C compiler
flag again which was recently added in error in
commit 52fb41cec7d5 ("openjdk-8: fix build for gcc8.x") only hiding
the compiler warnings/errors that were flagging the incorrect code
in the first place.
With these patches applied, the openjdk-8 ARM port works again:
| RESULTS:
| RESULTS - ping.PingTest.test_ping - Testcase 964: PASSED (0.04s)
| RESULTS - ssh.SSHTest.test_ssh - Testcase 224: PASSED (0.68s)
| RESULTS - java.JavaTest.test_java_exists - Testcase -1: PASSED (0.14s)
| RESULTS - java.JavaTest.test_java_jar_comp_mode - Testcase -1: FAILED (5.13s)
| RESULTS - java.JavaTest.test_java_jar_int_mode - Testcase -1: PASSED (4.48s)
| RESULTS - java.JavaTest.test_java_jar_works - Testcase -1: PASSED (4.44s)
| RESULTS - java.JavaTest.test_java_version - Testcase -1: PASSED (3.66s)
| RESULTS - javac.JavacTest.test_javac_exists - Testcase -1: PASSED (0.13s)
| RESULTS - javac.JavacTest.test_javac_works - Testcase -1: PASSED (30.87s)
| SUMMARY:
| openjdk-8-test-image () - Ran 9 tests in 50.263s
The java.JavaTest.test_java_jar_comp_mode failure can be ignored for now,
as that test verifies compiled mode which is not available on arm. The
testcase must be fixed instead.
(We need to refresh one unrelated existing patch to avoid patch fuzz warnings)
Signed-off-by: André Draszik <andre.draszik@jci.com>
Signed-off-by: Richard Leitner <richard.leitner@skidata.com>
Diffstat (limited to 'recipes-core/openjdk/patches-openjdk-8/0016-hotspot-Zero-build-requires-disabled-warnings.patch')
-rw-r--r-- | recipes-core/openjdk/patches-openjdk-8/0016-hotspot-Zero-build-requires-disabled-warnings.patch | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/recipes-core/openjdk/patches-openjdk-8/0016-hotspot-Zero-build-requires-disabled-warnings.patch b/recipes-core/openjdk/patches-openjdk-8/0016-hotspot-Zero-build-requires-disabled-warnings.patch new file mode 100644 index 0000000..d6bedbc --- /dev/null +++ b/recipes-core/openjdk/patches-openjdk-8/0016-hotspot-Zero-build-requires-disabled-warnings.patch | |||
@@ -0,0 +1,148 @@ | |||
1 | From 43c1f744e5f6171df3158baf88dd0a64c4b5e439 Mon Sep 17 00:00:00 2001 | ||
2 | From: =?UTF-8?q?Andr=C3=A9=20Draszik?= <andre.draszik@jci.com> | ||
3 | Date: Mon, 13 Aug 2018 16:45:24 +0100 | ||
4 | Subject: [PATCH 2/5] hotspot: Zero build requires disabled warnings | ||
5 | MIME-Version: 1.0 | ||
6 | Content-Type: text/plain; charset=UTF-8 | ||
7 | Content-Transfer-Encoding: 8bit | ||
8 | |||
9 | |# HG changeset patch | ||
10 | |# User sgehwolf | ||
11 | |# Date 1525714161 -3600 | ||
12 | |# Mon May 07 18:29:21 2018 +0100 | ||
13 | |# Node ID afb31413c73cbc06420fdb447aa90a7a38258904 | ||
14 | |# Parent bcbc64dfb629c5f188bbf59b8f986ad95963ed60 | ||
15 | 8143245, PR3548: Zero build requires disabled warnings | ||
16 | Reviewed-by: dholmes, coleenp | ||
17 | |||
18 | Signed-off-by: André Draszik <andre.draszik@jci.com> | ||
19 | Upstream-Status: Backport | ||
20 | --- | ||
21 | hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp | 2 +- | ||
22 | hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp | 4 ++-- | ||
23 | .../src/os_cpu/linux_zero/vm/os_linux_zero.cpp | 16 +++++++++++++--- | ||
24 | .../os_cpu/linux_zero/vm/thread_linux_zero.hpp | 3 ++- | ||
25 | 4 files changed, 18 insertions(+), 7 deletions(-) | ||
26 | |||
27 | diff --git a/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp b/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp | ||
28 | index 242ce1cf..065471af 100644 | ||
29 | --- a/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp | ||
30 | +++ b/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp | ||
31 | @@ -100,7 +100,7 @@ intptr_t narrow(BasicType type, intptr_t result) { | ||
32 | case T_DOUBLE: | ||
33 | case T_VOID: | ||
34 | return result; | ||
35 | - default : ShouldNotReachHere(); | ||
36 | + default : ShouldNotReachHere(); return NULL_WORD; | ||
37 | } | ||
38 | } | ||
39 | |||
40 | diff --git a/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp b/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp | ||
41 | index e23e3eaa..061ed8ce 100644 | ||
42 | --- a/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp | ||
43 | +++ b/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp | ||
44 | @@ -1,5 +1,5 @@ | ||
45 | /* | ||
46 | - * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. | ||
47 | + * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved. | ||
48 | * Copyright 2007, 2008, 2010 Red Hat, Inc. | ||
49 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | ||
50 | * | ||
51 | @@ -62,7 +62,7 @@ void InterpreterRuntime::SignatureHandlerGeneratorBase::pass_object() { | ||
52 | } | ||
53 | |||
54 | void InterpreterRuntime::SignatureHandlerGeneratorBase::push(BasicType type) { | ||
55 | - ffi_type *ftype; | ||
56 | + ffi_type *ftype = NULL; | ||
57 | switch (type) { | ||
58 | case T_VOID: | ||
59 | ftype = &ffi_type_void; | ||
60 | diff --git a/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp b/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp | ||
61 | index 8dcf9d44..508eb172 100644 | ||
62 | --- a/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp | ||
63 | +++ b/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp | ||
64 | @@ -1,6 +1,6 @@ | ||
65 | /* | ||
66 | * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. | ||
67 | - * Copyright 2007, 2008, 2009, 2010 Red Hat, Inc. | ||
68 | + * Copyright 2016 Red Hat, Inc. | ||
69 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | ||
70 | * | ||
71 | * This code is free software; you can redistribute it and/or modify it | ||
72 | @@ -61,6 +61,7 @@ address os::current_stack_pointer() { | ||
73 | |||
74 | frame os::get_sender_for_C_frame(frame* fr) { | ||
75 | ShouldNotCallThis(); | ||
76 | + return frame(NULL, NULL); // silence compile warning. | ||
77 | } | ||
78 | |||
79 | frame os::current_frame() { | ||
80 | @@ -98,16 +99,19 @@ void os::initialize_thread(Thread * thr){ | ||
81 | |||
82 | address os::Linux::ucontext_get_pc(ucontext_t* uc) { | ||
83 | ShouldNotCallThis(); | ||
84 | + return NULL; // silence compile warnings | ||
85 | } | ||
86 | |||
87 | ExtendedPC os::fetch_frame_from_context(void* ucVoid, | ||
88 | intptr_t** ret_sp, | ||
89 | intptr_t** ret_fp) { | ||
90 | ShouldNotCallThis(); | ||
91 | + return NULL; // silence compile warnings | ||
92 | } | ||
93 | |||
94 | frame os::fetch_frame_from_context(void* ucVoid) { | ||
95 | ShouldNotCallThis(); | ||
96 | + return frame(NULL, NULL); // silence compile warnings | ||
97 | } | ||
98 | |||
99 | extern "C" JNIEXPORT int | ||
100 | @@ -247,11 +251,16 @@ JVM_handle_linux_signal(int sig, | ||
101 | } | ||
102 | #endif // !PRODUCT | ||
103 | |||
104 | - const char *fmt = "caught unhandled signal %d"; | ||
105 | char buf[64]; | ||
106 | |||
107 | - sprintf(buf, fmt, sig); | ||
108 | + sprintf(buf, "caught unhandled signal %d", sig); | ||
109 | + | ||
110 | +// Silence -Wformat-security warning for fatal() | ||
111 | +PRAGMA_DIAG_PUSH | ||
112 | +PRAGMA_FORMAT_NONLITERAL_IGNORED | ||
113 | fatal(buf); | ||
114 | +PRAGMA_DIAG_POP | ||
115 | + return true; // silence compiler warnings | ||
116 | } | ||
117 | |||
118 | void os::Linux::init_thread_fpu_state(void) { | ||
119 | @@ -260,6 +269,7 @@ void os::Linux::init_thread_fpu_state(void) { | ||
120 | |||
121 | int os::Linux::get_fpu_control_word() { | ||
122 | ShouldNotCallThis(); | ||
123 | + return -1; // silence compile warnings | ||
124 | } | ||
125 | |||
126 | void os::Linux::set_fpu_control_word(int fpu) { | ||
127 | diff --git a/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp b/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp | ||
128 | index 39f77f85..b9c73dc4 100644 | ||
129 | --- a/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp | ||
130 | +++ b/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp | ||
131 | @@ -1,5 +1,5 @@ | ||
132 | /* | ||
133 | - * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. | ||
134 | + * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. | ||
135 | * Copyright 2007, 2008, 2009, 2010 Red Hat, Inc. | ||
136 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | ||
137 | * | ||
138 | @@ -110,6 +110,7 @@ | ||
139 | void* ucontext, | ||
140 | bool isInJava) { | ||
141 | ShouldNotCallThis(); | ||
142 | + return false; // silence compile warning | ||
143 | } | ||
144 | |||
145 | // These routines are only used on cpu architectures that | ||
146 | -- | ||
147 | 2.18.0 | ||
148 | |||