Upstream-Status: Backport

Hotspot compiler has a bug where signed integers could overflow. This is
undefined behaviour, and causes massive memory leak when compiled with GCC 5.0+,
causing the build to fail.

This is fixed by backporting patch from
https://bugs.openjdk.java.net/browse/JDK-8078666 where it was fixed by
Severin Gehwolf.

Signed-off-by: Erkka Kääriä <[email protected]>
---
 .../icedtea-hotspot-fix-undefined-behaviour.patch  | 49 ++++++++++++++++++++++
 recipes-core/icedtea/openjdk-7-release-03b147.inc  |  2 +
 2 files changed, 51 insertions(+)
 create mode 100644 
recipes-core/icedtea/openjdk-7-03b147/icedtea-hotspot-fix-undefined-behaviour.patch

diff --git 
a/recipes-core/icedtea/openjdk-7-03b147/icedtea-hotspot-fix-undefined-behaviour.patch
 
b/recipes-core/icedtea/openjdk-7-03b147/icedtea-hotspot-fix-undefined-behaviour.patch
new file mode 100644
index 0000000..56513a0
--- /dev/null
+++ 
b/recipes-core/icedtea/openjdk-7-03b147/icedtea-hotspot-fix-undefined-behaviour.patch
@@ -0,0 +1,49 @@
+Upstream-Status: Backport
+
+Hotspot compiler has a bug where signed integers could overflow. This is 
+undefined behaviour, and causes massive memory leak when compiled with GCC 
5.0+, 
+causing the build to fail.
+
+This is fixed by backporting patch from 
+https://bugs.openjdk.java.net/browse/JDK-8078666 where it was fixed by 
+Severin Gehwolf.
+
+Signed-off-by: Erkka Kääriä <[email protected]>
+
+--- openjdk/hotspot/src/share/vm/opto/type.cpp
++++ openjdk/hotspot/src/share/vm/opto/type.cpp
+@@ -1077,11 +1077,11 @@ static int normalize_int_widen( jint lo, jint hi, int 
w ) {
+   // Certain normalizations keep us sane when comparing types.
+   // The 'SMALLINT' covers constants and also CC and its relatives.
+   if (lo <= hi) {
+-    if ((juint)(hi - lo) <= SMALLINT)  w = Type::WidenMin;
+-    if ((juint)(hi - lo) >= max_juint) w = Type::WidenMax; // TypeInt::INT
++    if (((juint)hi - lo) <= SMALLINT)  w = Type::WidenMin;
++    if (((juint)hi - lo) >= max_juint) w = Type::WidenMax; // TypeInt::INT
+   } else {
+-    if ((juint)(lo - hi) <= SMALLINT)  w = Type::WidenMin;
+-    if ((juint)(lo - hi) >= max_juint) w = Type::WidenMin; // dual 
TypeInt::INT
++    if (((juint)lo - hi) <= SMALLINT)  w = Type::WidenMin;
++    if (((juint)lo - hi) >= max_juint) w = Type::WidenMin; // dual 
TypeInt::INT  
+   }
+   return w;
+ }
+@@ -1332,11 +1332,11 @@ static int normalize_long_widen( jlong lo, jlong hi, 
int w ) {
+   // Certain normalizations keep us sane when comparing types.
+   // The 'SMALLINT' covers constants.
+   if (lo <= hi) {
+-    if ((julong)(hi - lo) <= SMALLINT)   w = Type::WidenMin;
+-    if ((julong)(hi - lo) >= max_julong) w = Type::WidenMax; // TypeLong::LONG
++    if (((julong)hi - lo) <= SMALLINT)   w = Type::WidenMin;
++    if (((julong)hi - lo) >= max_julong) w = Type::WidenMax; // 
TypeLong::LONG  
+   } else {
+-    if ((julong)(lo - hi) <= SMALLINT)   w = Type::WidenMin;
+-    if ((julong)(lo - hi) >= max_julong) w = Type::WidenMin; // dual 
TypeLong::LONG
++    if (((julong)lo - hi) <= SMALLINT)   w = Type::WidenMin;
++    if (((julong)lo - hi) >= max_julong) w = Type::WidenMin; // dual 
TypeLong::LONG
+   }
+   return w;
+ }
+-- 
+2.1.4
+
diff --git a/recipes-core/icedtea/openjdk-7-release-03b147.inc 
b/recipes-core/icedtea/openjdk-7-release-03b147.inc
index 98266f7..b1cf6e9 100644
--- a/recipes-core/icedtea/openjdk-7-release-03b147.inc
+++ b/recipes-core/icedtea/openjdk-7-release-03b147.inc
@@ -84,6 +84,7 @@ OPENJDK_PATCHES = " \
        file://icedtea-change-to-gdb-debug-format.patch;apply=no \
        file://icedtea-disable-x11-in-headless.patch;apply=no \
        file://icedtea-disable-sun.applet-for-tools-in-headless.patch;apply=no \
+       file://icedtea-hotspot-fix-undefined-behaviour.patch;apply=no \
         "
 
 OPENJDK_HEADLESS_PATCHES = " \
@@ -102,5 +103,6 @@ export DISTRIBUTION_PATCHES = " \
        patches/icedtea-flags.patch \
        patches/icedtea-openjdk-remove-currency-data-generation-expi.patch \
        patches/icedtea-change-to-gdb-debug-format.patch \
+       patches/icedtea-hotspot-fix-undefined-behaviour.patch \
        ${CLEAN_X11_DISTRIBUTION_PATCH} \
         "
-- 
2.1.4

---------------------------------------------------------------------
Intel Finland Oy
Registered Address: PL 281, 00181 Helsinki 
Business Identity Code: 0357606 - 4 
Domiciled in Helsinki 

This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.
-- 
_______________________________________________
Openembedded-devel mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-devel

Reply via email to