summaryrefslogtreecommitdiff
path: root/lang
diff options
context:
space:
mode:
authorjoerg <joerg@pkgsrc.org>2015-09-12 16:56:47 +0000
committerjoerg <joerg@pkgsrc.org>2015-09-12 16:56:47 +0000
commitc070819581845e3f5997c6493dc9f3e1273101be (patch)
tree47e34c164cc6f3bb4c158259bdf59e7c9329215d /lang
parent729f6db35155d535760561391f8fe7d7d1ea3b7c (diff)
downloadpkgsrc-c070819581845e3f5997c6493dc9f3e1273101be.tar.gz
Avoid UB by left shift of negative values.
Diffstat (limited to 'lang')
-rw-r--r--lang/openjdk7/distinfo4
-rw-r--r--lang/openjdk7/patches/patch-hotspot_src_share_vm_oops_klass.hpp20
-rw-r--r--lang/openjdk7/patches/patch-hotspot_src_share_vm_opto_library__call.cpp17
-rw-r--r--lang/openjdk8/distinfo4
-rw-r--r--lang/openjdk8/patches/patch-hotspot_src_share_vm_oops_klass.hpp20
-rw-r--r--lang/openjdk8/patches/patch-hotspot_src_share_vm_opto_library__call.cpp17
6 files changed, 80 insertions, 2 deletions
diff --git a/lang/openjdk7/distinfo b/lang/openjdk7/distinfo
index 855d3922c25..b3d8b9c1672 100644
--- a/lang/openjdk7/distinfo
+++ b/lang/openjdk7/distinfo
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.84 2015/06/09 15:03:43 tnn Exp $
+$NetBSD: distinfo,v 1.85 2015/09/12 16:56:47 joerg Exp $
SHA1 (openjdk7/apache-ant-1.9.4-bin.tar.bz2) = 99bff3c702dd79076f4e705e3541f7e35bbb4306
RMD160 (openjdk7/apache-ant-1.9.4-bin.tar.bz2) = 7f4263d617bbf40a15eab401369d18a755f8d260
@@ -97,6 +97,8 @@ SHA1 (patch-hotspot_src_os_solaris_dtrace_jhelper.d) = 43ae9934ce7cf477f7968bcf9
SHA1 (patch-hotspot_src_os_solaris_vm_decoder__solaris.cpp) = 3be8a96525ead1df18a40b18dccfad4ef2765d47
SHA1 (patch-hotspot_src_os_solaris_vm_os__solaris.cpp) = ea09ffd080fcf4c12b0b69cb622ee3945000cb68
SHA1 (patch-hotspot_src_os_solaris_vm_perfMemory__solaris.cpp) = 1bc67dd849eec122162b71f21d204e5489555738
+SHA1 (patch-hotspot_src_share_vm_oops_klass.hpp) = 8f25f2df28e4d644cd0408cc6c198d6e9d8b9155
+SHA1 (patch-hotspot_src_share_vm_opto_library__call.cpp) = 86ba7f86ba769a444484f3c586e8b039079d2456
SHA1 (patch-hotspot_src_share_vm_opto_node.cpp) = 869d8ec9dc6dae6e0b8a23fe44f2583747059553
SHA1 (patch-hotspot_src_share_vm_runtime_os.cpp) = c7a33e791e3b5fec5cca9a5343c6d1f685e0cd4b
SHA1 (patch-hotspot_src_share_vm_utilities_globalDefinitions__gcc.hpp) = 1935e8225e08870fd912737de6dee3d599d260ab
diff --git a/lang/openjdk7/patches/patch-hotspot_src_share_vm_oops_klass.hpp b/lang/openjdk7/patches/patch-hotspot_src_share_vm_oops_klass.hpp
new file mode 100644
index 00000000000..fd30bab46e6
--- /dev/null
+++ b/lang/openjdk7/patches/patch-hotspot_src_share_vm_oops_klass.hpp
@@ -0,0 +1,20 @@
+$NetBSD: patch-hotspot_src_share_vm_oops_klass.hpp,v 1.1 2015/09/12 16:56:48 joerg Exp $
+
+Left shift of negative values is UB.
+
+--- hotspot/src/share/vm/oops/klass.hpp.orig 2015-06-09 13:46:56.000000000 +0000
++++ hotspot/src/share/vm/oops/klass.hpp
+@@ -419,11 +419,11 @@ class Klass : public Klass_vtbl {
+ }
+ static bool layout_helper_is_typeArray(jint lh) {
+ // _lh_array_tag_type_value == (lh >> _lh_array_tag_shift);
+- return (juint)lh >= (juint)(_lh_array_tag_type_value << _lh_array_tag_shift);
++ return (juint)lh >= ((juint)_lh_array_tag_type_value << _lh_array_tag_shift);
+ }
+ static bool layout_helper_is_objArray(jint lh) {
+ // _lh_array_tag_obj_value == (lh >> _lh_array_tag_shift);
+- return (jint)lh < (jint)(_lh_array_tag_type_value << _lh_array_tag_shift);
++ return (jint)lh < (jint)((juint)_lh_array_tag_type_value << _lh_array_tag_shift);
+ }
+ static int layout_helper_header_size(jint lh) {
+ assert(lh < (jint)_lh_neutral_value, "must be array");
diff --git a/lang/openjdk7/patches/patch-hotspot_src_share_vm_opto_library__call.cpp b/lang/openjdk7/patches/patch-hotspot_src_share_vm_opto_library__call.cpp
new file mode 100644
index 00000000000..185a6d16ce8
--- /dev/null
+++ b/lang/openjdk7/patches/patch-hotspot_src_share_vm_opto_library__call.cpp
@@ -0,0 +1,17 @@
+$NetBSD: patch-hotspot_src_share_vm_opto_library__call.cpp,v 1.1 2015/09/12 16:56:48 joerg Exp $
+
+Left shift of negative values is UB.
+
+--- hotspot/src/share/vm/opto/library_call.cpp.orig 2015-06-09 13:47:01.000000000 +0000
++++ hotspot/src/share/vm/opto/library_call.cpp
+@@ -3454,8 +3454,8 @@ Node* LibraryCallKit::generate_array_gua
+ }
+ // Now test the correct condition.
+ jint nval = (obj_array
+- ? ((jint)Klass::_lh_array_tag_type_value
+- << Klass::_lh_array_tag_shift)
++ ? (jint)((juint)Klass::_lh_array_tag_type_value
++ << Klass::_lh_array_tag_shift)
+ : Klass::_lh_neutral_value);
+ Node* cmp = _gvn.transform( new(C) CmpINode(layout_val, intcon(nval)) );
+ BoolTest::mask btest = BoolTest::lt; // correct for testing is_[obj]array
diff --git a/lang/openjdk8/distinfo b/lang/openjdk8/distinfo
index cb4bae2a6ed..dea7158fdab 100644
--- a/lang/openjdk8/distinfo
+++ b/lang/openjdk8/distinfo
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.25 2015/08/27 19:03:59 joerg Exp $
+$NetBSD: distinfo,v 1.26 2015/09/12 16:56:48 joerg Exp $
SHA1 (openjdk7/bootstrap-jdk-1.7.76-freebsd-10-amd64-20150301.tar.xz) = 7408f52d3bbe35c2b14bbd3215cbf60f1335d334
RMD160 (openjdk7/bootstrap-jdk-1.7.76-freebsd-10-amd64-20150301.tar.xz) = 24f1577b5fc86d137f070aedb4610c8c89e45815
@@ -83,6 +83,8 @@ SHA1 (patch-hotspot_src_os_solaris_vm_os__solaris.cpp) = c8840633681c01d4a911e32
SHA1 (patch-hotspot_src_os_solaris_vm_perfMemory__solaris.cpp) = 589bf0707023b9f799caf2cafe5aeba89af46b05
SHA1 (patch-hotspot_src_share_vm_ci_ciTypeFlow.cpp) = 2d827ade6fcf0ba08fcd0390472cda17772bc0c5
SHA1 (patch-hotspot_src_share_vm_interpreter_interpreterRuntime.cpp) = d2eaaae414810ab460ced512fdfc07385d60f4b8
+SHA1 (patch-hotspot_src_share_vm_oops_klass.hpp) = 2a728aa8fb04976195ebf58549a544b97e56b329
+SHA1 (patch-hotspot_src_share_vm_opto_library__call.cpp) = 4654248e3fdf9a1be8ef5563e50b12dcd59aa1aa
SHA1 (patch-hotspot_src_share_vm_opto_node.cpp) = aacb4e03f62f1a6f9b38de39a966c318b70b1293
SHA1 (patch-hotspot_src_share_vm_runtime_arguments.cpp) = 80265396c62de95b0937d770c1dba0e8a53daa80
SHA1 (patch-hotspot_src_share_vm_utilities_globalDefinitions__gcc.hpp) = f35b8c1a1841f1239aa25d58d0b8749bb7b29ad2
diff --git a/lang/openjdk8/patches/patch-hotspot_src_share_vm_oops_klass.hpp b/lang/openjdk8/patches/patch-hotspot_src_share_vm_oops_klass.hpp
new file mode 100644
index 00000000000..830683c5edf
--- /dev/null
+++ b/lang/openjdk8/patches/patch-hotspot_src_share_vm_oops_klass.hpp
@@ -0,0 +1,20 @@
+$NetBSD: patch-hotspot_src_share_vm_oops_klass.hpp,v 1.1 2015/09/12 16:56:48 joerg Exp $
+
+Left shift of negative values is UB.
+
+--- hotspot/src/share/vm/oops/klass.hpp.orig 2015-09-03 15:25:36.000000000 +0000
++++ hotspot/src/share/vm/oops/klass.hpp
+@@ -352,11 +352,11 @@ protected:
+ }
+ static bool layout_helper_is_typeArray(jint lh) {
+ // _lh_array_tag_type_value == (lh >> _lh_array_tag_shift);
+- return (juint)lh >= (juint)(_lh_array_tag_type_value << _lh_array_tag_shift);
++ return (juint)lh >= ((juint)_lh_array_tag_type_value << _lh_array_tag_shift);
+ }
+ static bool layout_helper_is_objArray(jint lh) {
+ // _lh_array_tag_obj_value == (lh >> _lh_array_tag_shift);
+- return (jint)lh < (jint)(_lh_array_tag_type_value << _lh_array_tag_shift);
++ return (jint)lh < (jint)((juint)_lh_array_tag_type_value << _lh_array_tag_shift);
+ }
+ static int layout_helper_header_size(jint lh) {
+ assert(lh < (jint)_lh_neutral_value, "must be array");
diff --git a/lang/openjdk8/patches/patch-hotspot_src_share_vm_opto_library__call.cpp b/lang/openjdk8/patches/patch-hotspot_src_share_vm_opto_library__call.cpp
new file mode 100644
index 00000000000..f6bb0b35abc
--- /dev/null
+++ b/lang/openjdk8/patches/patch-hotspot_src_share_vm_opto_library__call.cpp
@@ -0,0 +1,17 @@
+$NetBSD: patch-hotspot_src_share_vm_opto_library__call.cpp,v 1.1 2015/09/12 16:56:48 joerg Exp $
+
+Left shift of negative values is UB.
+
+--- hotspot/src/share/vm/opto/library_call.cpp.orig 2015-09-03 15:27:49.000000000 +0000
++++ hotspot/src/share/vm/opto/library_call.cpp
+@@ -3750,8 +3750,8 @@ Node* LibraryCallKit::generate_array_gua
+ }
+ // Now test the correct condition.
+ jint nval = (obj_array
+- ? ((jint)Klass::_lh_array_tag_type_value
+- << Klass::_lh_array_tag_shift)
++ ? (jint)((juint)Klass::_lh_array_tag_type_value
++ << Klass::_lh_array_tag_shift)
+ : Klass::_lh_neutral_value);
+ Node* cmp = _gvn.transform(new(C) CmpINode(layout_val, intcon(nval)));
+ BoolTest::mask btest = BoolTest::lt; // correct for testing is_[obj]array