summaryrefslogtreecommitdiffstats
path: root/recipes-core/openjdk/patches-openjdk-8/0016-hotspot-Zero-build-requires-disabled-warnings.patch
diff options
context:
space:
mode:
authorAndré Draszik <andre.draszik@jci.com>2018-08-14 13:50:58 +0100
committerRichard Leitner <richard.leitner@skidata.com>2018-08-14 16:41:47 +0200
commite89564dc67cf0136d998a73813c74d9e174f30af (patch)
treeb6b8b90360be488da280b06833c604858fea8c6a /recipes-core/openjdk/patches-openjdk-8/0016-hotspot-Zero-build-requires-disabled-warnings.patch
parentcd17a0f9389594d931d859472c18d166d4996df1 (diff)
downloadmeta-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.patch148
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 @@
1From 43c1f744e5f6171df3158baf88dd0a64c4b5e439 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Andr=C3=A9=20Draszik?= <andre.draszik@jci.com>
3Date: Mon, 13 Aug 2018 16:45:24 +0100
4Subject: [PATCH 2/5] hotspot: Zero build requires disabled warnings
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-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
158143245, PR3548: Zero build requires disabled warnings
16Reviewed-by: dholmes, coleenp
17
18Signed-off-by: André Draszik <andre.draszik@jci.com>
19Upstream-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
27diff --git a/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp b/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp
28index 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
40diff --git a/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp b/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp
41index 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;
60diff --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
61index 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) {
127diff --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
128index 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--
1472.18.0
148