/hg/release/icedtea7-2.5: 2 new changesets
andrew at icedtea.classpath.org
andrew at icedtea.classpath.org
Wed Jul 16 07:09:22 UTC 2014
changeset 960cf7b88b42 in /hg/release/icedtea7-2.5
details: http://icedtea.classpath.org/hg/release/icedtea7-2.5?cmd=changeset;node=960cf7b88b42
author: Andrew John Hughes <gnu_andrew at member.fsf.org>
date: Wed Jul 16 08:02:42 2014 +0100
Update AArch64 port and add July 2014 security patches.
Common frame handling for C1/C2 which correctly handle all frame sizes
Fix register misuse in verify_method_data_pointer
Fix register usage in generate_verify_oop().
Restrict default ReservedCodeCacheSize to 128M
Use explicit barrier instructions in C1.
2014-07-16 Andrew John Hughes <gnu.andrew at member.fsf.org>
* patches/hotspot/aarch64/20140415-8029858-enhance_array_copies.patch,
* patches/hotspot/aarch64/20140415-8034926-attribute_classes_properly.patch:
Removed, as applied upstream.
* Makefile.am:
(ICEDTEA_PATCHES): Updated.
* NEWS: Likewise.
* hotspot.map: Bump aarch64 port to latest tip.
* patches/hotspot/aarch64/20140715-8030763-validate_global_memory_allocation.patch,
* patches/hotspot/aarch64/20140715-8032536-jvm_resolves_wrong_method.patch,
* patches/hotspot/aarch64/20140715-8035119-fix_exceptions_to_bytecode_verification.patch,
* patches/hotspot/aarch64/20140715-8036800-attribute_oom_to_right_code.patch,
* patches/hotspot/aarch64/20140715-8037076-check_constant_pool_constants.patch,
* patches/hotspot/aarch64/20140715-8037157-verify_init_call.patch,
* patches/hotspot/aarch64/20140715-8037167-better_method_signature_resolution.patch,
* patches/hotspot/aarch64/20140715-8043454-8037157_test_case_fix.patch:
July 2014 security patches for AArch64 HotSpot.
changeset 93624ef7b10e in /hg/release/icedtea7-2.5
details: http://icedtea.classpath.org/hg/release/icedtea7-2.5?cmd=changeset;node=93624ef7b10e
author: Andrew John Hughes <gnu_andrew at member.fsf.org>
date: Wed Jul 16 08:08:57 2014 +0100
PR1867: Turn the infinality patch off by default
2014-07-16 Andrew John Hughes <gnu.andrew at member.fsf.org>
PR1867: Turn the infinality patch off by default
* NEWS: Updated.
* acinclude.m4:
(IT_ENABLE_INFINALITY): Set default to no.
diffstat:
ChangeLog | 26 +
Makefile.am | 10 +-
NEWS | 7 +
acinclude.m4 | 4 +-
hotspot.map | 4 +-
patches/hotspot/aarch64/20140415-8029858-enhance_array_copies.patch | 22 -
patches/hotspot/aarch64/20140415-8034926-attribute_classes_properly.patch | 32 -
patches/hotspot/aarch64/20140715-8030763-validate_global_memory_allocation.patch | 233 ++++++++++
patches/hotspot/aarch64/20140715-8032536-jvm_resolves_wrong_method.patch | 77 +++
patches/hotspot/aarch64/20140715-8035119-fix_exceptions_to_bytecode_verification.patch | 119 +++++
patches/hotspot/aarch64/20140715-8036800-attribute_oom_to_right_code.patch | 40 +
patches/hotspot/aarch64/20140715-8037076-check_constant_pool_constants.patch | 37 +
patches/hotspot/aarch64/20140715-8037157-verify_init_call.patch | 25 +
patches/hotspot/aarch64/20140715-8037167-better_method_signature_resolution.patch | 67 ++
patches/hotspot/aarch64/20140715-8043454-8037157_test_case_fix.patch | 48 ++
15 files changed, 691 insertions(+), 60 deletions(-)
diffs (truncated from 841 to 500 lines):
diff -r 4e0d6d141661 -r 93624ef7b10e ChangeLog
--- a/ChangeLog Wed Jul 16 00:52:19 2014 +0100
+++ b/ChangeLog Wed Jul 16 08:08:57 2014 +0100
@@ -1,3 +1,29 @@
+2014-07-16 Andrew John Hughes <gnu.andrew at member.fsf.org>
+
+ PR1867: Turn the infinality patch off by default
+ * NEWS: Updated.
+ * acinclude.m4:
+ (IT_ENABLE_INFINALITY): Set default to no.
+
+2014-07-16 Andrew John Hughes <gnu.andrew at member.fsf.org>
+
+ * patches/hotspot/aarch64/20140415-8029858-enhance_array_copies.patch,
+ * patches/hotspot/aarch64/20140415-8034926-attribute_classes_properly.patch:
+ Removed, as applied upstream.
+ * Makefile.am:
+ (ICEDTEA_PATCHES): Updated.
+ * NEWS: Likewise.
+ * hotspot.map: Bump aarch64 port to latest tip.
+ * patches/hotspot/aarch64/20140715-8030763-validate_global_memory_allocation.patch,
+ * patches/hotspot/aarch64/20140715-8032536-jvm_resolves_wrong_method.patch,
+ * patches/hotspot/aarch64/20140715-8035119-fix_exceptions_to_bytecode_verification.patch,
+ * patches/hotspot/aarch64/20140715-8036800-attribute_oom_to_right_code.patch,
+ * patches/hotspot/aarch64/20140715-8037076-check_constant_pool_constants.patch,
+ * patches/hotspot/aarch64/20140715-8037157-verify_init_call.patch,
+ * patches/hotspot/aarch64/20140715-8037167-better_method_signature_resolution.patch,
+ * patches/hotspot/aarch64/20140715-8043454-8037157_test_case_fix.patch:
+ July 2014 security patches for AArch64 HotSpot.
+
2014-07-15 Andrew John Hughes <gnu.andrew at member.fsf.org>
* Makefile.am:
diff -r 4e0d6d141661 -r 93624ef7b10e Makefile.am
--- a/Makefile.am Wed Jul 16 00:52:19 2014 +0100
+++ b/Makefile.am Wed Jul 16 08:08:57 2014 +0100
@@ -279,8 +279,14 @@
if WITH_ALT_HSBUILD
ICEDTEA_PATCHES += patches/hotspot/aarch64/werror.patch \
- patches/hotspot/aarch64/20140415-8029858-enhance_array_copies.patch \
- patches/hotspot/aarch64/20140415-8034926-attribute_classes_properly.patch
+ patches/hotspot/aarch64/20140715-8030763-validate_global_memory_allocation.patch \
+ patches/hotspot/aarch64/20140715-8032536-jvm_resolves_wrong_method.patch \
+ patches/hotspot/aarch64/20140715-8036800-attribute_oom_to_right_code.patch \
+ patches/hotspot/aarch64/20140715-8035119-fix_exceptions_to_bytecode_verification.patch \
+ patches/hotspot/aarch64/20140715-8037076-check_constant_pool_constants.patch \
+ patches/hotspot/aarch64/20140715-8037157-verify_init_call.patch \
+ patches/hotspot/aarch64/20140715-8043454-8037157_test_case_fix.patch \
+ patches/hotspot/aarch64/20140715-8037167-better_method_signature_resolution.patch
if ENABLE_SYSTEMTAP
ICEDTEA_PATCHES += \
patches/hotspot/aarch64/systemtap_gc.patch
diff -r 4e0d6d141661 -r 93624ef7b10e NEWS
--- a/NEWS Wed Jul 16 00:52:19 2014 +0100
+++ b/NEWS Wed Jul 16 08:08:57 2014 +0100
@@ -76,7 +76,14 @@
* Bug fixes
- PR1853: Revert PR729 from minor release
- PR1864: PCSC + OpenJDK 1.7 crash on Fedora 20
+ - PR1867: Turn the infinality patch off by default
- PR1868: Avoid x86 workaround when running Zero rather than a JIT
+* AArch64 port
+ - Common frame handling for C1/C2 which correctly handle all frame sizes
+ - Fix register misuse in verify_method_data_pointer
+ - Fix register usage in generate_verify_oop().
+ - Restrict default ReservedCodeCacheSize to 128M
+ - Use explicit barrier instructions in C1.
New in release 2.5.0 (2014-06-13):
diff -r 4e0d6d141661 -r 93624ef7b10e acinclude.m4
--- a/acinclude.m4 Wed Jul 16 00:52:19 2014 +0100
+++ b/acinclude.m4 Wed Jul 16 08:08:57 2014 +0100
@@ -2813,7 +2813,7 @@
AC_REQUIRE([IT_CHECK_FOR_FONTCONFIG])
AC_MSG_CHECKING([whether to use fontconfig to provide better font rendering])
AC_ARG_ENABLE([infinality],
- [AS_HELP_STRING(--enable-infinality,build with fontconfig font rendering [[default=yes]])],
+ [AS_HELP_STRING(--enable-infinality,build with fontconfig font rendering [[default=no]])],
[
case "${enableval}" in
yes)
@@ -2825,7 +2825,7 @@
esac
],
[
- enable_infinality=yes
+ enable_infinality=no
])
AC_MSG_RESULT([$enable_infinality])
AM_CONDITIONAL([ENABLE_INFINALITY], test x"${enable_infinality}" = "xyes")
diff -r 4e0d6d141661 -r 93624ef7b10e hotspot.map
--- a/hotspot.map Wed Jul 16 00:52:19 2014 +0100
+++ b/hotspot.map Wed Jul 16 08:08:57 2014 +0100
@@ -1,3 +1,3 @@
# version type(drop/hg) url changeset sha256sum
-default drop http://icedtea.classpath.org/download/drops/icedtea7/2.5 02066294d005 78d57f7c207d8f56bba2ee6aec232a836fd51830d352cfa4804d8077d9a7b32b
-aarch64 drop http://icedtea.classpath.org/download/drops/aarch64/2.5 d17532dbc6a7 3ad1f3116d30fb937719c6c462e070d689170dcf99173f785a9b13db074e1938
+default drop http://icedtea.classpath.org/download/drops/icedtea7/2.5.1 02066294d005 78d57f7c207d8f56bba2ee6aec232a836fd51830d352cfa4804d8077d9a7b32b
+aarch64 drop http://icedtea.classpath.org/download/drops/aarch64/2.5.1 a03843f2ff15 e88ca1ef9eeafa9bac7f0e5277a927129288547f241f0ed1e53969c6888177f2
diff -r 4e0d6d141661 -r 93624ef7b10e patches/hotspot/aarch64/20140415-8029858-enhance_array_copies.patch
--- a/patches/hotspot/aarch64/20140415-8029858-enhance_array_copies.patch Wed Jul 16 00:52:19 2014 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-# HG changeset patch
-# User dsimms
-# Date 1389348912 -3600
-# Fri Jan 10 11:15:12 2014 +0100
-# Node ID b478fbd631095afe8c37e3582c467d3ef64c7ba5
-# Parent 212a8089da498a233d4279e4b50235c271090f71
-8029858: Enhance array copies
-Summary: Just read the source element once
-Reviewed-by: coleenp, ahgross
-
-diff --git a/src/share/vm/oops/objArrayKlass.cpp b/src/share/vm/oops/objArrayKlass.cpp
---- openjdk/hotspot/src/share/vm/oops/objArrayKlass.cpp
-+++ openjdk/hotspot/src/share/vm/oops/objArrayKlass.cpp
-@@ -269,7 +269,7 @@
- if (element_is_null ||
- (new_val->klass())->is_subtype_of(bound)) {
- bs->write_ref_field_pre(p, new_val);
-- *p = *from;
-+ *p = element;
- } else {
- // We must do a barrier to cover the partial copy.
- const size_t pd = pointer_delta(p, dst, (size_t)heapOopSize);
diff -r 4e0d6d141661 -r 93624ef7b10e patches/hotspot/aarch64/20140415-8034926-attribute_classes_properly.patch
--- a/patches/hotspot/aarch64/20140415-8034926-attribute_classes_properly.patch Wed Jul 16 00:52:19 2014 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-# HG changeset patch
-# User hseigel
-# Date 1392921059 18000
-# Thu Feb 20 13:30:59 2014 -0500
-# Node ID 9b289963cb9a14636fbe8faaa2dd6d3678464a7b
-# Parent c96a3381e55ebacff49901b98c2ee87e17cb0632
-8034926: Attribute classes properly
-Summary: Add check to prevent underflow
-Reviewed-by: coleenp, ahgross
-
-diff --git a/src/share/vm/classfile/classFileParser.cpp b/src/share/vm/classfile/classFileParser.cpp
---- openjdk/hotspot/src/share/vm/classfile/classFileParser.cpp
-+++ openjdk/hotspot/src/share/vm/classfile/classFileParser.cpp
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
-@@ -2777,6 +2777,11 @@
- "Short length on BootstrapMethods in class file %s",
- CHECK);
-
-+ guarantee_property(attribute_byte_length > sizeof(u2),
-+ "Invalid BootstrapMethods attribute length %u in class file %s",
-+ attribute_byte_length,
-+ CHECK);
-+
- // The attribute contains a counted array of counted tuples of shorts,
- // represending bootstrap specifiers:
- // length*{bootstrap_method_index, argument_count*{argument_index}}
diff -r 4e0d6d141661 -r 93624ef7b10e patches/hotspot/aarch64/20140715-8030763-validate_global_memory_allocation.patch
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/hotspot/aarch64/20140715-8030763-validate_global_memory_allocation.patch Wed Jul 16 08:08:57 2014 +0100
@@ -0,0 +1,233 @@
+# HG changeset patch
+# User hseigel
+# Date 1392308897 18000
+# Thu Feb 13 11:28:17 2014 -0500
+# Node ID 5656140324ed3a86860f5bf43f5cab8c99374d9d
+# Parent bf4dc2e29b5cfb724e9289347146ad6df37d011b
+8030763: Validate global memory allocation
+Summary: Add length checks where necessary
+Reviewed-by: coleenp, mschoene
+
+diff -r bf4dc2e29b5c -r 5656140324ed src/os/bsd/vm/os_bsd.cpp
+--- openjdk/hotspot/src/os/bsd/vm/os_bsd.cpp Wed Feb 12 11:33:30 2014 -0800
++++ openjdk/hotspot/src/os/bsd/vm/os_bsd.cpp Thu Feb 13 11:28:17 2014 -0500
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -1115,10 +1115,6 @@
+ ::abort();
+ }
+
+-// unused on bsd for now.
+-void os::set_error_file(const char *logfile) {}
+-
+-
+ // This method is a copy of JDK's sysGetLastErrorString
+ // from src/solaris/hpi/src/system_md.c
+
+@@ -1808,6 +1804,7 @@
+ // determine if this is a legacy image or modules image
+ // modules image doesn't have "jre" subdirectory
+ len = strlen(buf);
++ assert(len < buflen, "Ran out of buffer space");
+ jrelib_p = buf + len;
+
+ // Add the appropriate library subdir
+@@ -1841,7 +1838,7 @@
+ }
+ }
+
+- strcpy(saved_jvm_path, buf);
++ strncpy(saved_jvm_path, buf, MAXPATHLEN);
+ }
+
+ void os::print_jni_name_prefix_on(outputStream* st, int args_size) {
+diff -r bf4dc2e29b5c -r 5656140324ed src/os/linux/vm/os_linux.cpp
+--- openjdk/hotspot/src/os/linux/vm/os_linux.cpp Wed Feb 12 11:33:30 2014 -0800
++++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp Thu Feb 13 11:28:17 2014 -0500
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -1572,9 +1572,6 @@
+ ::abort();
+ }
+
+-// unused on linux for now.
+-void os::set_error_file(const char *logfile) {}
+-
+
+ // This method is a copy of JDK's sysGetLastErrorString
+ // from src/solaris/hpi/src/system_md.c
+@@ -2399,6 +2396,7 @@
+ // determine if this is a legacy image or modules image
+ // modules image doesn't have "jre" subdirectory
+ len = strlen(buf);
++ assert(len < buflen, "Ran out of buffer room");
+ jrelib_p = buf + len;
+ snprintf(jrelib_p, buflen-len, "/jre/lib/%s", cpu_arch);
+ if (0 != access(buf, F_OK)) {
+@@ -2419,7 +2417,7 @@
+ }
+ }
+
+- strcpy(saved_jvm_path, buf);
++ strncpy(saved_jvm_path, buf, MAXPATHLEN);
+ }
+
+ void os::print_jni_name_prefix_on(outputStream* st, int args_size) {
+diff -r bf4dc2e29b5c -r 5656140324ed src/os/solaris/vm/os_solaris.cpp
+--- openjdk/hotspot/src/os/solaris/vm/os_solaris.cpp Wed Feb 12 11:33:30 2014 -0800
++++ openjdk/hotspot/src/os/solaris/vm/os_solaris.cpp Thu Feb 13 11:28:17 2014 -0500
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -1788,9 +1788,6 @@
+ ::abort(); // dump core (for debugging)
+ }
+
+-// unused
+-void os::set_error_file(const char *logfile) {}
+-
+ // DLL functions
+
+ const char* os::dll_file_extension() { return ".so"; }
+@@ -2474,6 +2471,7 @@
+ // determine if this is a legacy image or modules image
+ // modules image doesn't have "jre" subdirectory
+ len = strlen(buf);
++ assert(len < buflen, "Ran out of buffer space");
+ jrelib_p = buf + len;
+ snprintf(jrelib_p, buflen-len, "/jre/lib/%s", cpu_arch);
+ if (0 != access(buf, F_OK)) {
+@@ -2492,7 +2490,7 @@
+ }
+ }
+
+- strcpy(saved_jvm_path, buf);
++ strncpy(saved_jvm_path, buf, MAXPATHLEN);
+ }
+
+
+diff -r bf4dc2e29b5c -r 5656140324ed src/os/windows/vm/os_windows.cpp
+--- openjdk/hotspot/src/os/windows/vm/os_windows.cpp Wed Feb 12 11:33:30 2014 -0800
++++ openjdk/hotspot/src/os/windows/vm/os_windows.cpp Thu Feb 13 11:28:17 2014 -0500
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -1819,7 +1819,8 @@
+ // libjvm.so is installed there (append a fake suffix
+ // hotspot/libjvm.so).
+ char* java_home_var = ::getenv("JAVA_HOME");
+- if (java_home_var != NULL && java_home_var[0] != 0) {
++ if (java_home_var != NULL && java_home_var[0] != 0 &&
++ strlen(java_home_var) < (size_t)buflen) {
+
+ strncpy(buf, java_home_var, buflen);
+
+@@ -1837,9 +1838,9 @@
+ }
+
+ if(buf[0] == '\0') {
+- GetModuleFileName(vm_lib_handle, buf, buflen);
+- }
+- strcpy(saved_jvm_path, buf);
++ GetModuleFileName(vm_lib_handle, buf, buflen);
++ }
++ strncpy(saved_jvm_path, buf, MAX_PATH);
+ }
+
+
+@@ -2290,19 +2291,8 @@
+ }
+
+ */
+-#endif //_WIN64
+-
+-
+-// Fatal error reporting is single threaded so we can make this a
+-// static and preallocated. If it's more than MAX_PATH silently ignore
+-// it.
+-static char saved_error_file[MAX_PATH] = {0};
+-
+-void os::set_error_file(const char *logfile) {
+- if (strlen(logfile) <= MAX_PATH) {
+- strncpy(saved_error_file, logfile, MAX_PATH);
+- }
+-}
++#endif // _WIN64
++
+
+ static inline void report_error(Thread* t, DWORD exception_code,
+ address addr, void* siginfo, void* context) {
+diff -r bf4dc2e29b5c -r 5656140324ed src/share/vm/compiler/compileBroker.cpp
+--- openjdk/hotspot/src/share/vm/compiler/compileBroker.cpp Wed Feb 12 11:33:30 2014 -0800
++++ openjdk/hotspot/src/share/vm/compiler/compileBroker.cpp Thu Feb 13 11:28:17 2014 -0500
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -2089,6 +2089,7 @@
+ ResourceMark rm;
+ char* method_name = method->name()->as_C_string();
+ strncpy(_last_method_compiled, method_name, CompileBroker::name_buffer_length);
++ _last_method_compiled[CompileBroker::name_buffer_length - 1] = '\0'; // ensure null terminated
+ char current_method[CompilerCounters::cmname_buffer_length];
+ size_t maxLen = CompilerCounters::cmname_buffer_length;
+
+diff -r bf4dc2e29b5c -r 5656140324ed src/share/vm/runtime/os.hpp
+--- openjdk/hotspot/src/share/vm/runtime/os.hpp Wed Feb 12 11:33:30 2014 -0800
++++ openjdk/hotspot/src/share/vm/runtime/os.hpp Thu Feb 13 11:28:17 2014 -0500
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -470,9 +470,6 @@
+ // run cmd in a separate process and return its exit code; or -1 on failures
+ static int fork_and_exec(char *cmd);
+
+- // Set file to send error reports.
+- static void set_error_file(const char *logfile);
+-
+ // os::exit() is merged with vm_exit()
+ // static void exit(int num);
+
+diff -r bf4dc2e29b5c -r 5656140324ed src/share/vm/utilities/vmError.cpp
+--- openjdk/hotspot/src/share/vm/utilities/vmError.cpp Wed Feb 12 11:33:30 2014 -0800
++++ openjdk/hotspot/src/share/vm/utilities/vmError.cpp Thu Feb 13 11:28:17 2014 -0500
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -975,7 +975,6 @@
+ if (fd != -1) {
+ out.print_raw("# An error report file with more information is saved as:\n# ");
+ out.print_raw_cr(buffer);
+- os::set_error_file(buffer);
+
+ log.set_fd(fd);
+ } else {
diff -r 4e0d6d141661 -r 93624ef7b10e patches/hotspot/aarch64/20140715-8032536-jvm_resolves_wrong_method.patch
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/hotspot/aarch64/20140715-8032536-jvm_resolves_wrong_method.patch Wed Jul 16 08:08:57 2014 +0100
@@ -0,0 +1,77 @@
+# HG changeset patch
+# User hseigel
+# Date 1393965993 18000
+# Tue Mar 04 15:46:33 2014 -0500
+# Node ID c02077c4b79c0e7a29f439a1e6eb753a6c314b00
+# Parent c28dffbb1d7489ba206e80a3be0a954a9df6277e
+8032536: JVM resolves wrong method in some unusual cases
+Summary: Handle package private case
+Reviewed-by: coleenp, acorn, jdn
+
+diff -r c28dffbb1d74 -r c02077c4b79c src/share/vm/oops/klassVtable.cpp
+--- openjdk/hotspot/src/share/vm/oops/klassVtable.cpp Wed Feb 26 22:07:40 2014 -0800
++++ openjdk/hotspot/src/share/vm/oops/klassVtable.cpp Tue Mar 04 15:46:33 2014 -0500
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -249,6 +249,17 @@
+ // For bytecodes not produced by javac together it is possible that a method does not override
+ // the superclass's method, but might indirectly override a super-super class's vtable entry
+ // If none found, return a null superk, else return the superk of the method this does override
++// For public and protected methods: if they override a superclass, they will
++// also be overridden themselves appropriately.
++// Private methods do not override and are not overridden.
++// Package Private methods are trickier:
++// e.g. P1.A, pub m
++// P2.B extends A, package private m
++// P1.C extends B, public m
++// P1.C.m needs to override P1.A.m and can not override P2.B.m
++// Therefore: all package private methods need their own vtable entries for
++// them to be the root of an inheritance overriding decision
++// Package private methods may also override other vtable entries
+ InstanceKlass* klassVtable::find_transitive_override(InstanceKlass* initialsuper, methodHandle target_method,
+ int vtable_index, Handle target_loader, Symbol* target_classname, Thread * THREAD) {
+ InstanceKlass* superk = initialsuper;
+@@ -396,8 +407,11 @@
+ target_classname, THREAD))
+ != (InstanceKlass*)NULL))))
+ {
+- // overriding, so no new entry
+- allocate_new = false;
++ // Package private methods always need a new entry to root their own
++ // overriding. They may also override other methods.
++ if (!target_method()->is_package_private()) {
++ allocate_new = false;
++ }
+
+ if (checkconstraints) {
+ // Override vtable entry if passes loader constraint check
+@@ -541,8 +555,9 @@
+ AccessFlags class_flags,
+ TRAPS) {
+ if (class_flags.is_interface()) {
+- // Interfaces do not use vtables, so there is no point to assigning
+- // a vtable index to any of their methods. If we refrain from doing this,
++ // Interfaces do not use vtables, except for java.lang.Object methods,
++ // so there is no point to assigning
++ // a vtable index to any of their local methods. If we refrain from doing this,
+ // we can use Method::_vtable_index to hold the itable index
+ return false;
+ }
+@@ -580,6 +595,12 @@
+ return true;
+ }
+
++ // Package private methods always need a new entry to root their own
++ // overriding. This allows transitive overriding to work.
++ if (target_method()->is_package_private()) {
++ return true;
++ }
++
+ // search through the super class hierarchy to see if we need
+ // a new entry
+ ResourceMark rm;
diff -r 4e0d6d141661 -r 93624ef7b10e patches/hotspot/aarch64/20140715-8035119-fix_exceptions_to_bytecode_verification.patch
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/hotspot/aarch64/20140715-8035119-fix_exceptions_to_bytecode_verification.patch Wed Jul 16 08:08:57 2014 +0100
@@ -0,0 +1,119 @@
+# HG changeset patch
+# User hseigel
+# Date 1395065875 14400
+# Mon Mar 17 10:17:55 2014 -0400
+# Node ID aff11567504cdbf0d24cb23a97f9829af47a86f4
+# Parent cc7a96a360d08b926aea788ea6a5dd6dbd963f99
+8035119: Fix exceptions to bytecode verification
+Summary: Prevent ctor calls to super() and this() from avoidable code (try blocks, if stmts, etc.)
+Reviewed-by: coleenp, acorn, mschoene
+
+diff -r cc7a96a360d0 -r aff11567504c src/share/vm/classfile/stackMapTable.cpp
+--- openjdk/hotspot/src/share/vm/classfile/stackMapTable.cpp Tue Mar 11 14:02:23 2014 -0700
++++ openjdk/hotspot/src/share/vm/classfile/stackMapTable.cpp Mon Mar 17 10:17:55 2014 -0400
+@@ -1,5 +1,5 @@
+ /*
More information about the distro-pkg-dev
mailing list