ports/java/openjdk8/files/patch-bsd
2015-12-13 00:50:58 +00:00

21441 lines
797 KiB
Text

--- ./.hgtags 2015-12-12 10:53:30.938451000 -0800
+++ ./.hgtags 2015-10-24 06:20:54.000000000 -0700
@@ -487,4 +487,3 @@
b5c54b2e12c3fbc54c7d7e0f22187fa601feb749 jdk8u66-b14
d45e1dc28a6ee6fd03348ee170d9895957888124 jdk8u66-b15
5f29f2da7993f09564f6a5cb34e2799981ea96bb jdk8u66-b16
-5b37e6757d7c95c9c58b07fb3c9eba234567385a jdk8u40-b24
--- ./common/autoconf/build-performance.m4 2015-12-12 10:53:20.526424000 -0800
+++ ./common/autoconf/build-performance.m4 2015-10-24 06:20:55.000000000 -0700
@@ -41,6 +41,10 @@
# Looks like a MacOSX system
NUM_CORES=`/usr/sbin/system_profiler -detailLevel full SPHardwareDataType | grep 'Cores' | awk '{print [$]5}'`
FOUND_CORES=yes
+ elif test "x$OPENJDK_BUILD_OS" = xbsd && test "x$(uname -s | grep -o BSD)" = xBSD; then
+ # Looks like a BSD system
+ NUM_CORES=`/sbin/sysctl -n hw.ncpu`
+ FOUND_CORES=yes
elif test "x$OPENJDK_BUILD_OS" = xaix ; then
NUM_CORES=`/usr/sbin/prtconf | grep "^Number Of Processors" | awk '{ print [$]4 }'`
FOUND_CORES=yes
@@ -79,6 +83,15 @@
MEMORY_SIZE=`/usr/sbin/system_profiler -detailLevel full SPHardwareDataType | grep 'Memory' | awk '{print [$]2}'`
MEMORY_SIZE=`expr $MEMORY_SIZE \* 1024`
FOUND_MEM=yes
+ elif test "x$OPENJDK_BUILD_OS" = xbsd && test "x$(uname -s | grep -o OpenBSD)" = xOpenBSD; then
+ # Looks like an OpenBSD system
+ MEMORY_SIZE=`/sbin/sysctl -n hw.physmem | awk '{print int($NF / 1048576); }'`
+ FOUND_MEM=yes
+ elif test "x$OPENJDK_BUILD_OS" = xbsd && test "x$(uname -s | grep -o BSD)" = xBSD; then
+ # Looks like a BSD system
+ MEMORY_SIZE=`/sbin/sysctl -n hw.physmem`
+ MEMORY_SIZE=`expr $MEMORY_SIZE / 1024 / 1024`
+ FOUND_MEM=yes
elif test "x$OPENJDK_BUILD_OS" = xwindows; then
# Windows, but without cygwin
MEMORY_SIZE=`wmic computersystem get totalphysicalmemory -value | grep = | cut -d "=" -f 2-`
@@ -199,8 +212,8 @@
# Only use ccache if it is 3.1.4 or later, which supports
# precompiled headers.
AC_MSG_CHECKING([if ccache supports precompiled headers])
- HAS_GOOD_CCACHE=`($CCACHE --version | head -n 1 | grep -E 3.1.@<:@456789@:>@) 2> /dev/null`
- if test "x$HAS_GOOD_CCACHE" = x; then
+ HAS_GOOD_CCACHE=`($CCACHE --version | head -n 1 | awk '{ split($3, a, "."); if (a@<:@1@:>@ >= 3 && (a@<:@2@:>@ > 1 || (a@<:@2@:>@ == 1 && a@<:@3@:>@ >= 4))) print "yes"; else print "no"; }') 2> /dev/null`
+ if test "x$HAS_GOOD_CCACHE" = xyes; then
AC_MSG_RESULT([no, disabling ccache])
CCACHE=
else
--- ./common/autoconf/generated-configure.sh 2015-12-12 10:53:30.948059000 -0800
+++ ./common/autoconf/generated-configure.sh 2015-10-24 06:20:55.000000000 -0700
@@ -646,6 +646,8 @@
LIBM
LIBZIP_CAN_USE_MMAP
USE_EXTERNAL_LIBZ
+GIFLIB_LDFLAGS
+GIFLIB_CFLAGS
USE_EXTERNAL_LIBGIF
USE_EXTERNAL_LIBJPEG
ALSA_LIBS
@@ -818,6 +820,7 @@
JDK_MAJOR_VERSION
USER_RELEASE_SUFFIX
COMPRESS_JARS
+BSD_STATIC_LIBJLI
UNLIMITED_CRYPTO
CACERTS_FILE
TEST_IN_BUILD
@@ -894,6 +897,7 @@
OPENJDK_TARGET_CPU_ARCH
OPENJDK_TARGET_CPU
OPENJDK_TARGET_OS_API
+OPENJDK_TARGET_OS_VENDOR
OPENJDK_TARGET_OS
OPENJDK_BUILD_CPU_ENDIAN
OPENJDK_BUILD_CPU_BITS
@@ -1026,6 +1030,7 @@
enable_hotspot_test_in_build
with_cacerts_file
enable_unlimited_crypto
+enable_static_libjli
with_milestone
with_update_version
with_user_release_suffix
@@ -1052,6 +1057,7 @@
with_extra_cflags
with_extra_cxxflags
with_extra_ldflags
+with_package_path
enable_debug_symbols
enable_zip_debug_info
enable_macosx_runtime_support
@@ -1728,6 +1734,7 @@
run the Queens test after Hotspot build [disabled]
--enable-unlimited-crypto
Enable unlimited crypto policy [disabled]
+ --enable-static-libjli Enable staticly linking libjli on bsd [disabled]
--disable-debug-symbols disable generation of debug symbols [enabled]
--disable-zip-debug-info
disable zipping of debug-info files [enabled]
@@ -1824,6 +1831,8 @@
--with-extra-cflags extra flags to be used when compiling jdk c-files
--with-extra-cxxflags extra flags to be used when compiling jdk c++-files
--with-extra-ldflags extra flags to be used when linking jdk
+ --with-package-path package path to be used for location of third party
+ packages
--with-x use the X Window System
--with-cups specify prefix directory for the cups package
(expecting the headers under PATH/include)
@@ -6807,11 +6816,27 @@
as_fn_error $? "unsupported operating system $build_os" "$LINENO" 5
;;
esac
+ # The BSD's have slight differences so determine which one we are building on.
+ # For the rest set VAR_OS_VENDOR to VAR_OS
+ case "$build_os" in
+ *openbsd*)
+ VAR_OS_VENDOR=openbsd
+ ;;
+ *netbsd*)
+ VAR_OS_VENDOR=netbsd
+ ;;
+ *freebsd*)
+ VAR_OS_VENDOR=freebsd
+ ;;
+ *)
+ VAR_OS_VENDOR="$VAR_OS"
+ ;;
+ esac
# First argument is the cpu name from the trip/quad
case "$build_cpu" in
- x86_64)
+ amd64|x86_64)
VAR_CPU=x86_64
VAR_CPU_ARCH=x86
VAR_CPU_BITS=64
@@ -6944,11 +6969,27 @@
as_fn_error $? "unsupported operating system $host_os" "$LINENO" 5
;;
esac
+ # The BSD's have slight differences so determine which one we are building on.
+ # For the rest set VAR_OS_VENDOR to VAR_OS
+ case "$host_os" in
+ *openbsd*)
+ VAR_OS_VENDOR=openbsd
+ ;;
+ *netbsd*)
+ VAR_OS_VENDOR=netbsd
+ ;;
+ *freebsd*)
+ VAR_OS_VENDOR=freebsd
+ ;;
+ *)
+ VAR_OS_VENDOR="$VAR_OS"
+ ;;
+ esac
# First argument is the cpu name from the trip/quad
case "$host_cpu" in
- x86_64)
+ amd64|x86_64)
VAR_CPU=x86_64
VAR_CPU_ARCH=x86
VAR_CPU_BITS=64
@@ -7021,6 +7062,7 @@
# ... and setup our own variables. (Do this explicitely to facilitate searching)
OPENJDK_TARGET_OS="$VAR_OS"
+ OPENJDK_TARGET_OS_VENDOR="$VAR_OS_VENDOR"
OPENJDK_TARGET_OS_API="$VAR_OS_API"
OPENJDK_TARGET_OS_ENV="$VAR_OS_ENV"
OPENJDK_TARGET_CPU="$VAR_CPU"
@@ -7034,6 +7076,7 @@
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking openjdk-target os-cpu" >&5
$as_echo_n "checking openjdk-target os-cpu... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $OPENJDK_TARGET_OS-$OPENJDK_TARGET_CPU" >&5
@@ -7162,8 +7205,8 @@
# Setup OPENJDK_TARGET_CPU_OSARCH, which is used to set the os.arch Java system property
OPENJDK_TARGET_CPU_OSARCH="$OPENJDK_TARGET_CPU"
- if test "x$OPENJDK_TARGET_OS" = xlinux && test "x$OPENJDK_TARGET_CPU" = xx86; then
- # On linux only, we replace x86 with i386.
+ if test "x$OPENJDK_TARGET_OS" = xbsd -o "x$OPENJDK_TARGET_OS" = xlinux && test "x$OPENJDK_TARGET_CPU" = xx86; then
+ # On Linux and BSD, we replace x86 with i386.
OPENJDK_TARGET_CPU_OSARCH="i386"
elif test "x$OPENJDK_TARGET_OS" != xmacosx && test "x$OPENJDK_TARGET_CPU" = xx86_64; then
# On all platforms except macosx, we replace x86_64 with amd64.
@@ -11173,6 +11216,24 @@
###############################################################################
#
+ # Enable or disable static linking of libjli on bsd only
+ #
+ # Check whether --enable-static-libjli was given.
+if test "${enable_static_libjli+set}" = set; then :
+ enableval=$enable_static_libjli;
+else
+ enable_static_libjli=no
+fi
+
+ if test "x$OPENJDK_TARGET_OS" = "xbsd" && test "x$enable_static_libjli" = "xyes"; then
+ BSD_STATIC_LIBJLI=bsd
+ else
+ BSD_STATIC_LIBJLI=
+ fi
+
+
+ ###############################################################################
+ #
# Enable or disable the elliptic curve crypto implementation
#
@@ -20344,7 +20405,7 @@
else
COMPILER_VERSION_TEST=`$COMPILER --version 2>&1 | $HEAD -n 1`
# Check that this is likely to be GCC.
- $COMPILER --version 2>&1 | $GREP "Free Software Foundation" > /dev/null
+ $COMPILER --version 2>&1 | $GREP -E "(Free Software Foundation|clang)" > /dev/null
if test $? -ne 0; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required GCC compiler." >&5
$as_echo "$as_me: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required GCC compiler." >&6;}
@@ -21945,7 +22006,7 @@
else
COMPILER_VERSION_TEST=`$COMPILER --version 2>&1 | $HEAD -n 1`
# Check that this is likely to be GCC.
- $COMPILER --version 2>&1 | $GREP "Free Software Foundation" > /dev/null
+ $COMPILER --version 2>&1 | $GREP -E "(Free Software Foundation|clang)" > /dev/null
if test $? -ne 0; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required GCC compiler." >&5
$as_echo "$as_me: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required GCC compiler." >&6;}
@@ -27952,7 +28013,7 @@
# objcopy is used for moving debug symbols to separate files when
# full debug symbols are enabled.
- if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xlinux; then
+ if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xlinux || test "x$OPENJDK_TARGET_OS" = xbsd ; then
if test -n "$ac_tool_prefix"; then
for ac_prog in gobjcopy objcopy
do
@@ -29309,9 +29370,11 @@
SET_SHARED_LIBRARY_NAME='-Xlinker -install_name -Xlinker @rpath/$1'
SET_SHARED_LIBRARY_MAPFILE=''
SET_SHARED_LIBRARY_ORIGIN='-Xlinker -rpath -Xlinker @loader_path/.'
- SET_EXECUTABLE_ORIGIN="$SET_SHARED_LIBRARY_ORIGIN"
POST_STRIP_CMD="$STRIP -S"
fi
+ if test "x$OPENJDK_TARGET_OS" = xbsd || test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ SET_EXECUTABLE_ORIGIN="$SET_SHARED_LIBRARY_ORIGIN"
+ fi
else
if test "x$OPENJDK_TARGET_OS" = xsolaris; then
# If it is not gcc, then assume it is the Oracle Solaris Studio Compiler
@@ -29736,22 +29799,37 @@
CCXXFLAGS_JDK="$CCXXFLAGS_JDK $ADD_LP64"
# The package path is used only on macosx?
+
+# Check whether --with-package-path was given.
+if test "${with_package_path+set}" = set; then :
+ withval=$with_package_path;
+fi
+
+ PACKAGE_PATH="$with_package_path"
+ if test "x$PACKAGE_PATH" = x; then
+ if test "`uname -s`" = "Darwin"; then
PACKAGE_PATH=/opt/local
+ fi
+ if test "`uname -s`" = "FreeBSD"; then
+ PACKAGE_PATH=/usr/local
+ fi
- if test "x$OPENJDK_TARGET_CPU_ENDIAN" = xlittle; then
- # The macro _LITTLE_ENDIAN needs to be defined the same to avoid the
- # Sun C compiler warning message: warning: macro redefined: _LITTLE_ENDIAN
- # (The Solaris X86 system defines this in file /usr/include/sys/isa_defs.h).
- # Note: -Dmacro is the same as #define macro 1
- # -Dmacro= is the same as #define macro
- if test "x$OPENJDK_TARGET_OS" = xsolaris; then
- CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_LITTLE_ENDIAN="
- else
- CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_LITTLE_ENDIAN"
+ if test "`uname -s`" = "NetBSD"; then
+ PACKAGE_PATH=/usr/pkg
fi
+
+ if test "`uname -s`" = "OpenBSD"; then
+ PACKAGE_PATH=/usr/local
+ fi
+ fi
+
+
+
+ if test "x$OPENJDK_TARGET_CPU_ENDIAN" = xlittle; then
+ CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DVM_LITTLE_ENDIAN"
else
- CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_BIG_ENDIAN"
+ CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DVM_BIG_ENDIAN"
fi
if test "x$OPENJDK_TARGET_OS" = xlinux; then
CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DLINUX"
@@ -30248,11 +30326,18 @@
fi
if test "x$OPENJDK_TARGET_OS" = xbsd; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking what is not needed on bsd?" >&5
-$as_echo_n "checking what is not needed on bsd?... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking what is not needed on BSD?" >&5
+$as_echo_n "checking what is not needed on BSD?... " >&6; }
+ if test "x$OPENJDK_TARGET_OS_VENDOR" = xopenbsd; then
ALSA_NOT_NEEDED=yes
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: alsa" >&5
-$as_echo "alsa" >&6; }
+ PULSE_NOT_NEEDED=yes
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: alsa pulse" >&5
+$as_echo "alsa pulse" >&6; }
+ else
+ PULSE_NOT_NEEDED=yes
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: pulse" >&5
+$as_echo "pulse" >&6; }
+ fi
fi
if test "x$OPENJDK" = "xfalse"; then
@@ -30288,14 +30373,18 @@
# --x-libraries for the sysroot, if that seems to be correct.
if test "x$SYS_ROOT" != "x/"; then
if test "x$x_includes" = xNONE; then
- if test -f "$SYS_ROOT/usr/X11R6/include/X11/Xlib.h"; then
+ if test -f "$SYS_ROOT/usr/X11R7/include/X11/Xlib.h"; then
+ x_includes="$SYS_ROOT/usr/X11R7/include"
+ elif test -f "$SYS_ROOT/usr/X11R6/include/X11/Xlib.h"; then
x_includes="$SYS_ROOT/usr/X11R6/include"
elif test -f "$SYS_ROOT/usr/include/X11/Xlib.h"; then
x_includes="$SYS_ROOT/usr/include"
fi
fi
if test "x$x_libraries" = xNONE; then
- if test -f "$SYS_ROOT/usr/X11R6/lib/libX11.so"; then
+ if test -f "$SYS_ROOT/usr/X11R7/lib/libX11.so"; then
+ x_libraries="$SYS_ROOT/usr/X11R7/lib"
+ elif test -f "$SYS_ROOT/usr/X11R6/lib/libX11.so"; then
x_libraries="$SYS_ROOT/usr/X11R6/lib"
elif test "$SYS_ROOT/usr/lib64/libX11.so" && test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
x_libraries="$SYS_ROOT/usr/lib64"
@@ -31342,6 +31431,10 @@
# A CSW package seems to be installed!
CUPS_FOUND=yes
CUPS_CFLAGS="-I/opt/csw/include"
+ elif test -s ${PACKAGE_PATH}/include/cups/cups.h; then
+ # Standard package location for BSD
+ CUPS_FOUND=yes
+ CUPS_CFLAGS="-I${PACKAGE_PATH}/include"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CUPS_FOUND" >&5
$as_echo "$CUPS_FOUND" >&6; }
@@ -34507,7 +34600,7 @@
###############################################################################
#
- # Check for alsa headers and libraries. Used on Linux/GNU systems.
+ # Check for alsa headers and libraries. Used on Linux/GNU and BSD systems.
#
# Check whether --with-alsa was given.
@@ -34915,15 +35008,66 @@
if test "x${with_giflib}" = "xbundled"; then
USE_EXTERNAL_LIBGIF=false
+ GIFLIB_CFLAGS=
+ GIFLIB_LDFLAGS=
elif test "x${with_giflib}" = "xsystem"; then
+ GIFLIB_H_FOUND=no
ac_fn_cxx_check_header_mongrel "$LINENO" "gif_lib.h" "ac_cv_header_gif_lib_h" "$ac_includes_default"
if test "x$ac_cv_header_gif_lib_h" = xyes; then :
-else
- as_fn_error $? "--with-giflib=system specified, but gif_lib.h not found!" "$LINENO" 5
+ GIFLIB_H_FOUND=yes
+ GIFLIB_CFLAGS=
+
+
fi
+ if test "x$GIFLIB_H_FOUND" = xno; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for giflib headers" >&5
+$as_echo_n "checking for giflib headers... " >&6; }
+ if test -s ${PACKAGE_PATH}/include/gif_lib.h; then
+ # Standard package location for BSD
+ GIFLIB_H_FOUND=yes
+ GIFLIB_CFLAGS="-I${PACKAGE_PATH}/include"
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GIFLIB_H_FOUND" >&5
+$as_echo "$GIFLIB_H_FOUND" >&6; }
+ fi
+ if test "x$GIFLIB_H_FOUND" = xno; then
+
+ # Print a helpful message on how to acquire the necessary build dependency.
+ # giflib is the help tag: freetype, cups, pulse, alsa etc
+ MISSING_DEPENDENCY=giflib
+
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ cygwin_help $MISSING_DEPENDENCY
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ msys_help $MISSING_DEPENDENCY
+ else
+ PKGHANDLER_COMMAND=
+
+ case $PKGHANDLER in
+ apt-get)
+ apt_help $MISSING_DEPENDENCY ;;
+ yum)
+ yum_help $MISSING_DEPENDENCY ;;
+ port)
+ port_help $MISSING_DEPENDENCY ;;
+ pkgutil)
+ pkgutil_help $MISSING_DEPENDENCY ;;
+ pkgadd)
+ pkgadd_help $MISSING_DEPENDENCY ;;
+ esac
+
+ if test "x$PKGHANDLER_COMMAND" != x; then
+ HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
+ fi
+ fi
+
+ as_fn_error $? "Could not find giflib headers! $HELP_MSG " "$LINENO" 5
+ fi
+
+ GIFLIB_LIB_FOUND=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for DGifGetCode in -lgif" >&5
$as_echo_n "checking for DGifGetCode in -lgif... " >&6; }
if ${ac_cv_lib_gif_DGifGetCode+:} false; then :
@@ -34961,16 +35105,96 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gif_DGifGetCode" >&5
$as_echo "$ac_cv_lib_gif_DGifGetCode" >&6; }
if test "x$ac_cv_lib_gif_DGifGetCode" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBGIF 1
-_ACEOF
- LIBS="-lgif $LIBS"
+ GIFLIB_LIB_FOUND=yes
+ GIFLIB_LDFLAGS=
+
+fi
+
+ if test "x$GIFLIB_LIB_FOUND" = xno; then
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -L${PACKAGE_PATH}/lib"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DGifOpen in -lgif" >&5
+$as_echo_n "checking for DGifOpen in -lgif... " >&6; }
+if ${ac_cv_lib_gif_DGifOpen+:} false; then :
+ $as_echo_n "(cached) " >&6
else
- as_fn_error $? "--with-giflib=system specified, but no giflib found!" "$LINENO" 5
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lgif $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char DGifOpen ();
+int
+main ()
+{
+return DGifOpen ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+ ac_cv_lib_gif_DGifOpen=yes
+else
+ ac_cv_lib_gif_DGifOpen=no
fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gif_DGifOpen" >&5
+$as_echo "$ac_cv_lib_gif_DGifOpen" >&6; }
+if test "x$ac_cv_lib_gif_DGifOpen" = xyes; then :
+
+ GIFLIB_LIB_FOUND=yes
+ GIFLIB_LDFLAGS="-L${PACKAGE_PATH}/lib"
+
+
+fi
+
+ LDFLAGS="$save_LDFLAGS"
+ fi
+ if test "x$GIFLIB_LIB_FOUND" = xno; then
+
+ # Print a helpful message on how to acquire the necessary build dependency.
+ # giflib is the help tag: freetype, cups, pulse, alsa etc
+ MISSING_DEPENDENCY=giflib
+
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ cygwin_help $MISSING_DEPENDENCY
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ msys_help $MISSING_DEPENDENCY
+ else
+ PKGHANDLER_COMMAND=
+
+ case $PKGHANDLER in
+ apt-get)
+ apt_help $MISSING_DEPENDENCY ;;
+ yum)
+ yum_help $MISSING_DEPENDENCY ;;
+ port)
+ port_help $MISSING_DEPENDENCY ;;
+ pkgutil)
+ pkgutil_help $MISSING_DEPENDENCY ;;
+ pkgadd)
+ pkgadd_help $MISSING_DEPENDENCY ;;
+ esac
+
+ if test "x$PKGHANDLER_COMMAND" != x; then
+ HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
+ fi
+ fi
+
+ as_fn_error $? "Could not find giflib library! $HELP_MSG " "$LINENO" 5
+ fi
USE_EXTERNAL_LIBGIF=true
else
@@ -34978,6 +35202,8 @@
fi
+
+
###############################################################################
#
# Check for the zlib library
@@ -35545,6 +35771,11 @@
LIBCXX="-lstdc++"
fi
+ # TODO better (platform agnostic) test
+ if test "x$OPENJDK_TARGET_OS" = xbsd && test "x$LIBCXX" = x && test "x$GCC" = xyes; then
+ LIBCXX="-lstdc++"
+ fi
+
@@ -35618,6 +35849,10 @@
# Looks like a MacOSX system
NUM_CORES=`/usr/sbin/system_profiler -detailLevel full SPHardwareDataType | grep 'Cores' | awk '{print $5}'`
FOUND_CORES=yes
+ elif test "x$OPENJDK_BUILD_OS" = xbsd && test "x$(uname -s | grep -o BSD)" = xBSD; then
+ # Looks like a BSD system
+ NUM_CORES=`/sbin/sysctl -n hw.ncpu`
+ FOUND_CORES=yes
elif test "x$OPENJDK_BUILD_OS" = xaix ; then
NUM_CORES=`/usr/sbin/prtconf | grep "^Number Of Processors" | awk '{ print $4 }'`
FOUND_CORES=yes
@@ -35673,6 +35908,15 @@
MEMORY_SIZE=`/usr/sbin/system_profiler -detailLevel full SPHardwareDataType | grep 'Memory' | awk '{print $2}'`
MEMORY_SIZE=`expr $MEMORY_SIZE \* 1024`
FOUND_MEM=yes
+ elif test "x$OPENJDK_BUILD_OS" = xbsd && test "x$(uname -s | grep -o OpenBSD)" = xOpenBSD; then
+ # Looks like an OpenBSD system
+ MEMORY_SIZE=`/sbin/sysctl -n hw.physmem | awk '{print int($NF / 1048576); }'`
+ FOUND_MEM=yes
+ elif test "x$OPENJDK_BUILD_OS" = xbsd && test "x$(uname -s | grep -o BSD)" = xBSD; then
+ # Looks like a BSD system
+ MEMORY_SIZE=`/sbin/sysctl -n hw.physmem`
+ MEMORY_SIZE=`expr $MEMORY_SIZE / 1024 / 1024`
+ FOUND_MEM=yes
elif test "x$OPENJDK_BUILD_OS" = xwindows; then
# Windows, but without cygwin
MEMORY_SIZE=`wmic computersystem get totalphysicalmemory -value | grep = | cut -d "=" -f 2-`
@@ -36080,8 +36324,8 @@
# precompiled headers.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if ccache supports precompiled headers" >&5
$as_echo_n "checking if ccache supports precompiled headers... " >&6; }
- HAS_GOOD_CCACHE=`($CCACHE --version | head -n 1 | grep -E 3.1.[456789]) 2> /dev/null`
- if test "x$HAS_GOOD_CCACHE" = x; then
+ HAS_GOOD_CCACHE=`($CCACHE --version | head -n 1 | awk '{ split(, a, "."); if (a[1] >= 3 && (a[2] > 1 || (a[2] == 1 && a[3] >= 4))) print "yes"; else print "no"; }') 2> /dev/null`
+ if test "x$HAS_GOOD_CCACHE" = xyes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no, disabling ccache" >&5
$as_echo "no, disabling ccache" >&6; }
CCACHE=
--- ./common/autoconf/jdk-options.m4 2015-12-12 10:53:29.272768000 -0800
+++ ./common/autoconf/jdk-options.m4 2015-10-24 06:20:55.000000000 -0700
@@ -410,6 +410,20 @@
###############################################################################
#
+ # Enable or disable static linking of libjli on bsd only
+ #
+ AC_ARG_ENABLE(static-libjli, [AS_HELP_STRING([--enable-static-libjli],
+ [Enable staticly linking libjli on bsd @<:@disabled@:>@])],,
+ [enable_static_libjli=no])
+ if test "x$OPENJDK_TARGET_OS" = "xbsd" && test "x$enable_static_libjli" = "xyes"; then
+ BSD_STATIC_LIBJLI=bsd
+ else
+ BSD_STATIC_LIBJLI=
+ fi
+ AC_SUBST(BSD_STATIC_LIBJLI)
+
+ ###############################################################################
+ #
# Enable or disable the elliptic curve crypto implementation
#
AC_DEFUN_ONCE([JDKOPT_DETECT_INTREE_EC],
--- ./common/autoconf/libraries.m4 2015-12-12 10:53:29.275607000 -0800
+++ ./common/autoconf/libraries.m4 2015-10-24 06:20:55.000000000 -0700
@@ -69,9 +69,15 @@
fi
if test "x$OPENJDK_TARGET_OS" = xbsd; then
- AC_MSG_CHECKING([what is not needed on bsd?])
+ AC_MSG_CHECKING([what is not needed on BSD?])
+ if test "x$OPENJDK_TARGET_OS_VENDOR" = xopenbsd; then
ALSA_NOT_NEEDED=yes
- AC_MSG_RESULT([alsa])
+ PULSE_NOT_NEEDED=yes
+ AC_MSG_RESULT([alsa pulse])
+ else
+ PULSE_NOT_NEEDED=yes
+ AC_MSG_RESULT([pulse])
+ fi
fi
if test "x$OPENJDK" = "xfalse"; then
@@ -99,14 +105,18 @@
# --x-libraries for the sysroot, if that seems to be correct.
if test "x$SYS_ROOT" != "x/"; then
if test "x$x_includes" = xNONE; then
- if test -f "$SYS_ROOT/usr/X11R6/include/X11/Xlib.h"; then
+ if test -f "$SYS_ROOT/usr/X11R7/include/X11/Xlib.h"; then
+ x_includes="$SYS_ROOT/usr/X11R7/include"
+ elif test -f "$SYS_ROOT/usr/X11R6/include/X11/Xlib.h"; then
x_includes="$SYS_ROOT/usr/X11R6/include"
elif test -f "$SYS_ROOT/usr/include/X11/Xlib.h"; then
x_includes="$SYS_ROOT/usr/include"
fi
fi
if test "x$x_libraries" = xNONE; then
- if test -f "$SYS_ROOT/usr/X11R6/lib/libX11.so"; then
+ if test -f "$SYS_ROOT/usr/X11R7/lib/libX11.so"; then
+ x_libraries="$SYS_ROOT/usr/X11R7/lib"
+ elif test -f "$SYS_ROOT/usr/X11R6/lib/libX11.so"; then
x_libraries="$SYS_ROOT/usr/X11R6/lib"
elif test "$SYS_ROOT/usr/lib64/libX11.so" && test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
x_libraries="$SYS_ROOT/usr/lib64"
@@ -232,6 +242,10 @@
# A CSW package seems to be installed!
CUPS_FOUND=yes
CUPS_CFLAGS="-I/opt/csw/include"
+ elif test -s ${PACKAGE_PATH}/include/cups/cups.h; then
+ # Standard package location for BSD
+ CUPS_FOUND=yes
+ CUPS_CFLAGS="-I${PACKAGE_PATH}/include"
fi
AC_MSG_RESULT([$CUPS_FOUND])
fi
@@ -525,7 +539,7 @@
###############################################################################
#
- # Check for alsa headers and libraries. Used on Linux/GNU systems.
+ # Check for alsa headers and libraries. Used on Linux/GNU and BSD systems.
#
AC_ARG_WITH(alsa, [AS_HELP_STRING([--with-alsa],
[specify prefix directory for the alsa package
@@ -627,17 +641,61 @@
if test "x${with_giflib}" = "xbundled"; then
USE_EXTERNAL_LIBGIF=false
+ GIFLIB_CFLAGS=
+ GIFLIB_LDFLAGS=
elif test "x${with_giflib}" = "xsystem"; then
- AC_CHECK_HEADER(gif_lib.h, [],
- [ AC_MSG_ERROR([--with-giflib=system specified, but gif_lib.h not found!])])
- AC_CHECK_LIB(gif, DGifGetCode, [],
- [ AC_MSG_ERROR([--with-giflib=system specified, but no giflib found!])])
+ GIFLIB_H_FOUND=no
+ AC_CHECK_HEADER(gif_lib.h,
+ [
+ GIFLIB_H_FOUND=yes
+ GIFLIB_CFLAGS=
+ ]
+ )
+ if test "x$GIFLIB_H_FOUND" = xno; then
+ AC_MSG_CHECKING([for giflib headers])
+ if test -s ${PACKAGE_PATH}/include/gif_lib.h; then
+ # Standard package location for BSD
+ GIFLIB_H_FOUND=yes
+ GIFLIB_CFLAGS="-I${PACKAGE_PATH}/include"
+ fi
+ AC_MSG_RESULT([$GIFLIB_H_FOUND])
+ fi
+ if test "x$GIFLIB_H_FOUND" = xno; then
+ HELP_MSG_MISSING_DEPENDENCY([giflib])
+ AC_MSG_ERROR([Could not find giflib headers! $HELP_MSG ])
+ fi
+
+ GIFLIB_LIB_FOUND=no
+ AC_CHECK_LIB(gif, DGifGetCode,
+ [
+ GIFLIB_LIB_FOUND=yes
+ GIFLIB_LDFLAGS=
+ ]
+ )
+ if test "x$GIFLIB_LIB_FOUND" = xno; then
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -L${PACKAGE_PATH}/lib"
+ AC_CHECK_LIB(gif, DGifOpen,
+ [
+ GIFLIB_LIB_FOUND=yes
+ GIFLIB_LDFLAGS="-L${PACKAGE_PATH}/lib"
+ ]
+ )
+ LDFLAGS="$save_LDFLAGS"
+ fi
+
+ if test "x$GIFLIB_LIB_FOUND" = xno; then
+ HELP_MSG_MISSING_DEPENDENCY([giflib])
+ AC_MSG_ERROR([Could not find giflib library! $HELP_MSG ])
+ fi
USE_EXTERNAL_LIBGIF=true
else
AC_MSG_ERROR([Invalid value of --with-giflib: ${with_giflib}, use 'system' or 'bundled'])
fi
AC_SUBST(USE_EXTERNAL_LIBGIF)
+ AC_SUBST(GIFLIB_CFLAGS)
+ AC_SUBST(GIFLIB_LDFLAGS)
###############################################################################
#
@@ -872,5 +930,10 @@
LIBCXX="-lstdc++"
fi
+ # TODO better (platform agnostic) test
+ if test "x$OPENJDK_TARGET_OS" = xbsd && test "x$LIBCXX" = x && test "x$GCC" = xyes; then
+ LIBCXX="-lstdc++"
+ fi
+
AC_SUBST(LIBCXX)
])
--- ./common/autoconf/platform.m4 2015-12-12 10:53:29.275987000 -0800
+++ ./common/autoconf/platform.m4 2015-10-24 06:20:55.000000000 -0700
@@ -30,7 +30,7 @@
[
# First argument is the cpu name from the trip/quad
case "$1" in
- x86_64)
+ amd64|x86_64)
VAR_CPU=x86_64
VAR_CPU_ARCH=x86
VAR_CPU_BITS=64
@@ -147,6 +147,22 @@
AC_MSG_ERROR([unsupported operating system $1])
;;
esac
+ # The BSD's have slight differences so determine which one we are building on.
+ # For the rest set VAR_OS_VENDOR to VAR_OS
+ case "$1" in
+ *openbsd*)
+ VAR_OS_VENDOR=openbsd
+ ;;
+ *netbsd*)
+ VAR_OS_VENDOR=netbsd
+ ;;
+ *freebsd*)
+ VAR_OS_VENDOR=freebsd
+ ;;
+ *)
+ VAR_OS_VENDOR="$VAR_OS"
+ ;;
+ esac
])
# Expects $host_os $host_cpu $build_os and $build_cpu
@@ -192,6 +208,7 @@
PLATFORM_EXTRACT_VARS_FROM_CPU($host_cpu)
# ... and setup our own variables. (Do this explicitely to facilitate searching)
OPENJDK_TARGET_OS="$VAR_OS"
+ OPENJDK_TARGET_OS_VENDOR="$VAR_OS_VENDOR"
OPENJDK_TARGET_OS_API="$VAR_OS_API"
OPENJDK_TARGET_OS_ENV="$VAR_OS_ENV"
OPENJDK_TARGET_CPU="$VAR_CPU"
@@ -199,6 +216,7 @@
OPENJDK_TARGET_CPU_BITS="$VAR_CPU_BITS"
OPENJDK_TARGET_CPU_ENDIAN="$VAR_CPU_ENDIAN"
AC_SUBST(OPENJDK_TARGET_OS)
+ AC_SUBST(OPENJDK_TARGET_OS_VENDOR)
AC_SUBST(OPENJDK_TARGET_OS_API)
AC_SUBST(OPENJDK_TARGET_CPU)
AC_SUBST(OPENJDK_TARGET_CPU_ARCH)
@@ -308,8 +326,8 @@
# Setup OPENJDK_TARGET_CPU_OSARCH, which is used to set the os.arch Java system property
OPENJDK_TARGET_CPU_OSARCH="$OPENJDK_TARGET_CPU"
- if test "x$OPENJDK_TARGET_OS" = xlinux && test "x$OPENJDK_TARGET_CPU" = xx86; then
- # On linux only, we replace x86 with i386.
+ if test "x$OPENJDK_TARGET_OS" = xbsd -o "x$OPENJDK_TARGET_OS" = xlinux && test "x$OPENJDK_TARGET_CPU" = xx86; then
+ # On Linux and BSD, we replace x86 with i386.
OPENJDK_TARGET_CPU_OSARCH="i386"
elif test "x$OPENJDK_TARGET_OS" != xmacosx && test "x$OPENJDK_TARGET_CPU" = xx86_64; then
# On all platforms except macosx, we replace x86_64 with amd64.
--- ./common/autoconf/spec.gmk.in 2015-12-12 10:53:29.276399000 -0800
+++ ./common/autoconf/spec.gmk.in 2015-10-24 06:20:55.000000000 -0700
@@ -76,6 +76,7 @@
OPENJDK_TARGET_OS:=@OPENJDK_TARGET_OS@
OPENJDK_TARGET_OS_API:=@OPENJDK_TARGET_OS_API@
OPENJDK_TARGET_OS_ENV:=@OPENJDK_TARGET_OS_ENV@
+OPENJDK_TARGET_OS_VENDOR:=@OPENJDK_TARGET_OS_VENDOR@
OPENJDK_TARGET_CPU:=@OPENJDK_TARGET_CPU@
OPENJDK_TARGET_CPU_ARCH:=@OPENJDK_TARGET_CPU_ARCH@
@@ -276,7 +277,7 @@
ALSA_LIBS:=@ALSA_LIBS@
ALSA_CFLAGS:=@ALSA_CFLAGS@
-PACKAGE_PATH=@PACKAGE_PATH@
+PACKAGE_PATH:=@PACKAGE_PATH@
# Source file for cacerts
CACERTS_FILE=@CACERTS_FILE@
@@ -284,6 +285,9 @@
# Enable unlimited crypto policy
UNLIMITED_CRYPTO=@UNLIMITED_CRYPTO@
+# Build static libjli on bsd
+BSD_STATIC_LIBJLI=@BSD_STATIC_LIBJLI@
+
# Necessary additional compiler flags to compile X11
X_CFLAGS:=@X_CFLAGS@
X_LIBS:=@X_LIBS@
@@ -564,6 +568,8 @@
ENABLE_INTREE_EC=@ENABLE_INTREE_EC@
USE_EXTERNAL_LIBJPEG:=@USE_EXTERNAL_LIBJPEG@
USE_EXTERNAL_LIBGIF:=@USE_EXTERNAL_LIBGIF@
+GIFLIB_CFLAGS:=@GIFLIB_CFLAGS@
+GIFLIB_LDFLAGS:=@GIFLIB_LDFLAGS@
USE_EXTERNAL_LIBZ:=@USE_EXTERNAL_LIBZ@
LIBZIP_CAN_USE_MMAP:=@LIBZIP_CAN_USE_MMAP@
MSVCR_DLL:=@MSVCR_DLL@
--- ./common/autoconf/toolchain.m4 2015-12-12 10:53:29.276999000 -0800
+++ ./common/autoconf/toolchain.m4 2015-10-24 06:20:55.000000000 -0700
@@ -72,7 +72,7 @@
else
COMPILER_VERSION_TEST=`$COMPILER --version 2>&1 | $HEAD -n 1`
# Check that this is likely to be GCC.
- $COMPILER --version 2>&1 | $GREP "Free Software Foundation" > /dev/null
+ $COMPILER --version 2>&1 | $GREP -E "(Free Software Foundation|clang)" > /dev/null
if test $? -ne 0; then
AC_MSG_NOTICE([The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required GCC compiler.])
AC_MSG_NOTICE([The result from running with --version was: "$COMPILER_VERSION_TEST"])
@@ -571,7 +571,7 @@
# objcopy is used for moving debug symbols to separate files when
# full debug symbols are enabled.
- if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xlinux; then
+ if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xlinux || test "x$OPENJDK_TARGET_OS" = xbsd ; then
AC_CHECK_TOOLS(OBJCOPY, [gobjcopy objcopy])
# Only call fixup if objcopy was found.
if test -n "$OBJCOPY"; then
@@ -634,9 +634,11 @@
SET_SHARED_LIBRARY_NAME='-Xlinker -install_name -Xlinker @rpath/[$]1'
SET_SHARED_LIBRARY_MAPFILE=''
SET_SHARED_LIBRARY_ORIGIN='-Xlinker -rpath -Xlinker @loader_path/.'
- SET_EXECUTABLE_ORIGIN="$SET_SHARED_LIBRARY_ORIGIN"
POST_STRIP_CMD="$STRIP -S"
fi
+ if test "x$OPENJDK_TARGET_OS" = xbsd || test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ SET_EXECUTABLE_ORIGIN="$SET_SHARED_LIBRARY_ORIGIN"
+ fi
else
if test "x$OPENJDK_TARGET_OS" = xsolaris; then
# If it is not gcc, then assume it is the Oracle Solaris Studio Compiler
@@ -1039,22 +1041,33 @@
CCXXFLAGS_JDK="$CCXXFLAGS_JDK $ADD_LP64"
# The package path is used only on macosx?
+ AC_ARG_WITH(package-path, [AS_HELP_STRING([--with-package-path],
+ [package path to be used for location of third party packages])])
+ PACKAGE_PATH="$with_package_path"
+ if test "x$PACKAGE_PATH" = x; then
+ if test "`uname -s`" = "Darwin"; then
PACKAGE_PATH=/opt/local
+ fi
+
+ if test "`uname -s`" = "FreeBSD"; then
+ PACKAGE_PATH=/usr/local
+ fi
+
+ if test "`uname -s`" = "NetBSD"; then
+ PACKAGE_PATH=/usr/pkg
+ fi
+
+ if test "`uname -s`" = "OpenBSD"; then
+ PACKAGE_PATH=/usr/local
+ fi
+ fi
+
AC_SUBST(PACKAGE_PATH)
if test "x$OPENJDK_TARGET_CPU_ENDIAN" = xlittle; then
- # The macro _LITTLE_ENDIAN needs to be defined the same to avoid the
- # Sun C compiler warning message: warning: macro redefined: _LITTLE_ENDIAN
- # (The Solaris X86 system defines this in file /usr/include/sys/isa_defs.h).
- # Note: -Dmacro is the same as #define macro 1
- # -Dmacro= is the same as #define macro
- if test "x$OPENJDK_TARGET_OS" = xsolaris; then
- CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_LITTLE_ENDIAN="
- else
- CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_LITTLE_ENDIAN"
- fi
+ CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DVM_LITTLE_ENDIAN"
else
- CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_BIG_ENDIAN"
+ CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DVM_BIG_ENDIAN"
fi
if test "x$OPENJDK_TARGET_OS" = xlinux; then
CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DLINUX"
--- ./configure 2015-12-12 10:53:19.849663000 -0800
+++ ./configure 2015-10-24 06:20:55.000000000 -0700
@@ -1,4 +1,4 @@
-#!/usr/local/bin/bash
+#!/bin/sh
#
# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
--- ./corba/.hgtags 2015-12-12 10:53:30.949741000 -0800
+++ ./corba/.hgtags 2015-10-24 06:20:56.000000000 -0700
@@ -489,4 +489,3 @@
0db478b43d7fcf26dc613241654737756ec982c5 jdk8u66-b14
b88ba0b818831eb6f3a7954e218b371ed6f5d154 jdk8u66-b15
606448f919ad288412669c3e78482b99d8f5f416 jdk8u66-b16
-472aa5bae0e78614e873d56bcc31e7caba49963c jdk8u40-b24
--- ./hotspot/.hgtags 2015-12-12 10:53:30.953266000 -0800
+++ ./hotspot/.hgtags 2015-10-24 06:21:08.000000000 -0700
@@ -755,4 +755,3 @@
9f7f29ff487ae023ca1f697445004a532751b0d2 jdk8u66-b14
5b67af3317bce1f940c5dc1535411a1002bed6c1 jdk8u66-b15
4bbf0e9196f2786e0bc4f17664e2533808d944bf jdk8u66-b16
-fa4e797f61e6dda1a60e06944018213bff2a1b76 jdk8u40-b24
--- ./hotspot/make/bsd/makefiles/build_vm_def.sh 2014-03-03 18:52:06.000000000 -0800
+++ ./hotspot/make/bsd/makefiles/build_vm_def.sh 2015-10-24 06:21:09.000000000 -0700
@@ -2,11 +2,27 @@
# If we're cross compiling use that path for nm
if [ "$CROSS_COMPILE_ARCH" != "" ]; then
-NM=$ALT_COMPILER_PATH/nm
+ NM=$ALT_COMPILER_PATH/nm
else
-NM=nm
+ NM=nm
fi
-$NM -Uj $* | awk '
- { if ($3 ~ /^_ZTV/ || $3 ~ /^gHotSpotVM/) print "\t" $3 }
- '
+case "$(uname -s)" in
+Darwin )
+ $NM -Uj $@ | awk '{
+ if ($3 ~ /^_ZTV/ || $3 ~ /^gHotSpotVM/) print "\t" $3
+ }' ;;
+OpenBSD )
+ $NM $@ | awk '{
+ if ($2 == "U") next
+ if ($3 ~ /^_ZTV/ || $3 ~ /^gHotSpotVM/) print "\t" $3 ";"
+ if ($3 ~ /^UseSharedSpaces$/) print "\t" $3 ";"
+ if ($3 ~ /^_ZN9Arguments17SharedArchivePathE$/) print "\t" $3 ";"
+ }' | sort -u ;;
+* )
+ $NM --defined-only $@ | awk '{
+ if ($3 ~ /^_ZTV/ || $3 ~ /^gHotSpotVM/) print "\t" $3 ";"
+ if ($3 ~ /^UseSharedSpaces$/) print "\t" $3 ";"
+ if ($3 ~ /^_ZN9Arguments17SharedArchivePathE$/) print "\t" $3 ";"
+ }' | sort -u ;;
+esac
--- ./hotspot/make/bsd/makefiles/debug.make 2014-03-03 18:52:06.000000000 -0800
+++ ./hotspot/make/bsd/makefiles/debug.make 2015-10-24 06:21:09.000000000 -0700
@@ -35,7 +35,10 @@
# to inhibit the effect of the previous line on CFLAGS.
# Linker mapfile
-MAPFILE = $(GAMMADIR)/make/bsd/makefiles/mapfile-vers-debug
+ifeq ($(OS_VENDOR), Darwin)
+MAPSUFX = .macosx
+endif
+MAPFILE = $(GAMMADIR)/make/bsd/makefiles/mapfile-vers-debug$(MAPSUFX)
VERSION = debug
SYSDEFS += -DASSERT
--- ./hotspot/make/bsd/makefiles/fastdebug.make 2014-03-03 18:52:06.000000000 -0800
+++ ./hotspot/make/bsd/makefiles/fastdebug.make 2015-10-24 06:21:09.000000000 -0700
@@ -56,7 +56,10 @@
# to inhibit the effect of the previous line on CFLAGS.
# Linker mapfile
-MAPFILE = $(GAMMADIR)/make/bsd/makefiles/mapfile-vers-debug
+ifeq ($(OS_VENDOR), Darwin)
+MAPSUFX = .macosx
+endif
+MAPFILE = $(GAMMADIR)/make/bsd/makefiles/mapfile-vers-debug$(MAPSUFX)
VERSION = fastdebug
SYSDEFS += -DASSERT -DCHECK_UNHANDLED_OOPS
--- ./hotspot/make/bsd/makefiles/gcc.make 2015-12-12 10:53:29.301009000 -0800
+++ ./hotspot/make/bsd/makefiles/gcc.make 2015-10-24 06:21:09.000000000 -0700
@@ -168,6 +168,9 @@
CFLAGS += -DDONT_USE_PRECOMPILED_HEADER
endif
+# Allow for where third party packages are located
+CFLAGS+= -DPACKAGE_PATH=\"$(PACKAGE_PATH)\"
+
#------------------------------------------------------------------------
# Compiler flags
@@ -201,12 +204,15 @@
endif
ifeq ($(USE_CLANG), true)
+ STACK_ALIGNMENT_OPT = -mno-omit-leaf-frame-pointer
+ ifeq ($(OS_VENDOR), Darwin)
# Before Clang 3.1, we had to pass the stack alignment specification directly to llvm with the help of '-mllvm'
# Starting with version 3.1, Clang understands the '-mstack-alignment' (and rejects '-mllvm -stack-alignment')
ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 3 \) \| \( \( $(CC_VER_MAJOR) = 3 \) \& \( $(CC_VER_MINOR) \>= 1 \) \))" "0"
- STACK_ALIGNMENT_OPT = -mno-omit-leaf-frame-pointer -mstack-alignment=16
+ STACK_ALIGNMENT_OPT += -mstack-alignment=16
else
- STACK_ALIGNMENT_OPT = -mno-omit-leaf-frame-pointer -mllvm -stack-alignment=16
+ STACK_ALIGNMENT_OPT += -mllvm -stack-alignment=16
+ endif
endif
endif
@@ -265,7 +271,7 @@
ifeq "$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0"
# Since GCC 4.3, -Wconversion has changed its meanings to warn these implicit
# conversions which might affect the values. Only enable it in earlier versions.
- WARNING_FLAGS = -Wunused-function
+# WARNING_FLAGS = -Wunused-function
ifeq ($(USE_CLANG),)
WARNING_FLAGS += -Wconversion
endif
@@ -432,17 +438,20 @@
# (warning: that could easily inflate libjvm.so to 150M!)
# Note: The Itanium gcc compiler crashes when using -gstabs.
DEBUG_CFLAGS/ia64 = -g
- DEBUG_CFLAGS/amd64 = -g
DEBUG_CFLAGS/arm = -g
DEBUG_CFLAGS/ppc = -g
DEBUG_CFLAGS += $(DEBUG_CFLAGS/$(BUILDARCH))
ifeq ($(DEBUG_CFLAGS/$(BUILDARCH)),)
+ ifeq ($(USE_CLANG), true)
+ # Clang doesn't understand -gstabs
+ DEBUG_CFLAGS += -g
+ else
DEBUG_CFLAGS += -gstabs
endif
+ endif
ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
FASTDEBUG_CFLAGS/ia64 = -g
- FASTDEBUG_CFLAGS/amd64 = -g
FASTDEBUG_CFLAGS/arm = -g
FASTDEBUG_CFLAGS/ppc = -g
FASTDEBUG_CFLAGS += $(FASTDEBUG_CFLAGS/$(BUILDARCH))
@@ -456,7 +465,6 @@
endif
OPT_CFLAGS/ia64 = -g
- OPT_CFLAGS/amd64 = -g
OPT_CFLAGS/arm = -g
OPT_CFLAGS/ppc = -g
OPT_CFLAGS += $(OPT_CFLAGS/$(BUILDARCH))
--- ./hotspot/make/bsd/makefiles/launcher.make 1969-12-31 16:00:00.000000000 -0800
+++ ./hotspot/make/bsd/makefiles/launcher.make 2015-10-24 06:21:09.000000000 -0700
@@ -0,0 +1,117 @@
+#
+# Copyright (c) 2005, 2012, 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
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
+# Rules to build gamma launcher, used by vm.make
+
+
+LAUNCHER_SCRIPT = hotspot
+LAUNCHER = gamma
+
+LAUNCHERDIR := $(GAMMADIR)/src/os/posix/launcher
+LAUNCHERDIR_SHARE := $(GAMMADIR)/src/share/tools/launcher
+LAUNCHERFLAGS := $(ARCHFLAG) \
+ -I$(LAUNCHERDIR) -I$(GAMMADIR)/src/share/vm/prims \
+ -I$(LAUNCHERDIR_SHARE) \
+ -DFULL_VERSION=\"$(HOTSPOT_RELEASE_VERSION)\" \
+ -DJDK_MAJOR_VERSION=\"$(JDK_MAJOR_VERSION)\" \
+ -DJDK_MINOR_VERSION=\"$(JDK_MINOR_VERSION)\" \
+ -DARCH=\"$(LIBARCH)\" \
+ -DGAMMA \
+ -DLAUNCHER_TYPE=\"gamma\" \
+ -DLINK_INTO_$(LINK_INTO) \
+ $(TARGET_DEFINES)
+# Give the launcher task_for_pid() privileges so that it can be used to run JStack, JInfo, et al.
+ifeq ($(OS_VENDOR), Darwin)
+LFLAGS_LAUNCHER += -sectcreate __TEXT __info_plist $(GAMMADIR)/src/os/bsd/launcher/Info-privileged.plist
+endif
+
+ifeq ($(LINK_INTO),AOUT)
+ LAUNCHER.o = launcher.o $(JVM_OBJ_FILES)
+ LAUNCHER_MAPFILE = mapfile_reorder
+ LFLAGS_LAUNCHER$(LDNOMAP) += $(MAPFLAG:FILENAME=$(LAUNCHER_MAPFILE))
+ LFLAGS_LAUNCHER += $(SONAMEFLAG:SONAME=$(LIBJVM)) $(STATIC_LIBGCC)
+ LIBS_LAUNCHER += $(STATIC_STDCXX) $(LIBS)
+else
+ LAUNCHER.o = launcher.o
+ LFLAGS_LAUNCHER += -L`pwd`
+
+ # The gamma launcher runs the JDK from $JAVA_HOME, overriding the JVM with a
+ # freshly built JVM at ./libjvm.{so|dylib}. This is accomplished by setting
+ # the library searchpath using ({DY}LD_LIBRARY_PATH) to find the local JVM
+ # first. Gamma dlopen()s libjava from $JAVA_HOME/jre/lib{/$arch}, which is
+ # statically linked with CoreFoundation framework libs. Unfortunately, gamma's
+ # unique searchpath results in some unresolved symbols in the framework
+ # libraries, because JDK libraries are inadvertently discovered first on the
+ # searchpath, e.g. libjpeg. On Mac OS X, filenames are case *insensitive*.
+ # So, the actual filename collision is libjpeg.dylib and libJPEG.dylib.
+ # To resolve this, gamma needs to also statically link with the CoreFoundation
+ # framework libraries.
+
+ ifeq ($(OS_VENDOR),Darwin)
+ LFLAGS_LAUNCHER += -framework CoreFoundation
+ endif
+
+ LIBS_LAUNCHER += -l$(JVM) $(LIBS)
+endif
+
+LINK_LAUNCHER = $(LINK.CC)
+
+LINK_LAUNCHER/PRE_HOOK = $(LINK_LIB.CXX/PRE_HOOK)
+LINK_LAUNCHER/POST_HOOK = $(LINK_LIB.CXX/POST_HOOK)
+
+LAUNCHER_OUT = launcher
+
+SUFFIXES += .d
+
+SOURCES := $(shell find $(LAUNCHERDIR) -name "*.c")
+SOURCES_SHARE := $(shell find $(LAUNCHERDIR_SHARE) -name "*.c")
+
+OBJS := $(patsubst $(LAUNCHERDIR)/%.c,$(LAUNCHER_OUT)/%.o,$(SOURCES)) $(patsubst $(LAUNCHERDIR_SHARE)/%.c,$(LAUNCHER_OUT)/%.o,$(SOURCES_SHARE))
+
+DEPFILES := $(patsubst %.o,%.d,$(OBJS))
+-include $(DEPFILES)
+
+$(LAUNCHER_OUT)/%.o: $(LAUNCHERDIR_SHARE)/%.c
+ $(QUIETLY) [ -d $(LAUNCHER_OUT) ] || { mkdir -p $(LAUNCHER_OUT); }
+ $(QUIETLY) $(CC) -g -o $@ -c $< -MMD $(LAUNCHERFLAGS) $(CXXFLAGS)
+
+$(LAUNCHER_OUT)/%.o: $(LAUNCHERDIR)/%.c
+ $(QUIETLY) [ -d $(LAUNCHER_OUT) ] || { mkdir -p $(LAUNCHER_OUT); }
+ $(QUIETLY) $(CC) -g -o $@ -c $< -MMD $(LAUNCHERFLAGS) $(CXXFLAGS)
+
+$(LAUNCHER): $(OBJS) $(LIBJVM) $(LAUNCHER_MAPFILE)
+ $(QUIETLY) echo Linking launcher...
+ $(QUIETLY) $(LINK_LAUNCHER/PRE_HOOK)
+ $(QUIETLY) $(LINK_LAUNCHER) $(LFLAGS_LAUNCHER) -o $@ $(sort $(OBJS)) $(LIBS_LAUNCHER)
+ $(QUIETLY) $(LINK_LAUNCHER/POST_HOOK)
+ # Sign the launcher with the development certificate (if present) so that it can be used
+ # to run JStack, JInfo, et al.
+ $(QUIETLY) -codesign -s openjdk_codesign $@
+
+$(LAUNCHER): $(LAUNCHER_SCRIPT)
+
+$(LAUNCHER_SCRIPT): $(LAUNCHERDIR)/launcher.script
+ $(QUIETLY) sed -e 's/@@LIBARCH@@/$(LIBARCH)/g' $< > $@
+ $(QUIETLY) chmod +x $@
+
--- ./hotspot/make/bsd/makefiles/mapfile-vers-debug 2015-12-12 10:53:26.626789000 -0800
+++ ./hotspot/make/bsd/makefiles/mapfile-vers-debug 2015-10-24 06:21:09.000000000 -0700
@@ -21,246 +21,254 @@
# questions.
#
#
-# Only used for OSX/Darwin builds
# Define public interface.
+
+SUNWprivate_1.1 {
+ global:
# _JNI
- _JNI_CreateJavaVM
- _JNI_GetCreatedJavaVMs
- _JNI_GetDefaultJavaVMInitArgs
-
- # _JVM
- _JVM_Accept
- _JVM_ActiveProcessorCount
- _JVM_AllocateNewArray
- _JVM_AllocateNewObject
- _JVM_ArrayCopy
- _JVM_AssertionStatusDirectives
- _JVM_Available
- _JVM_Bind
- _JVM_ClassDepth
- _JVM_ClassLoaderDepth
- _JVM_Clone
- _JVM_Close
- _JVM_CX8Field
- _JVM_CompileClass
- _JVM_CompileClasses
- _JVM_CompilerCommand
- _JVM_Connect
- _JVM_ConstantPoolGetClassAt
- _JVM_ConstantPoolGetClassAtIfLoaded
- _JVM_ConstantPoolGetDoubleAt
- _JVM_ConstantPoolGetFieldAt
- _JVM_ConstantPoolGetFieldAtIfLoaded
- _JVM_ConstantPoolGetFloatAt
- _JVM_ConstantPoolGetIntAt
- _JVM_ConstantPoolGetLongAt
- _JVM_ConstantPoolGetMethodAt
- _JVM_ConstantPoolGetMethodAtIfLoaded
- _JVM_ConstantPoolGetMemberRefInfoAt
- _JVM_ConstantPoolGetSize
- _JVM_ConstantPoolGetStringAt
- _JVM_ConstantPoolGetUTF8At
- _JVM_CountStackFrames
- _JVM_CurrentClassLoader
- _JVM_CurrentLoadedClass
- _JVM_CurrentThread
- _JVM_CurrentTimeMillis
- _JVM_DefineClass
- _JVM_DefineClassWithSource
- _JVM_DefineClassWithSourceCond
- _JVM_DesiredAssertionStatus
- _JVM_DisableCompiler
- _JVM_DoPrivileged
- _JVM_DTraceGetVersion
- _JVM_DTraceActivate
- _JVM_DTraceIsProbeEnabled
- _JVM_DTraceIsSupported
- _JVM_DTraceDispose
- _JVM_DumpAllStacks
- _JVM_DumpThreads
- _JVM_EnableCompiler
- _JVM_Exit
- _JVM_FillInStackTrace
- _JVM_FindClassFromCaller
- _JVM_FindClassFromClass
- _JVM_FindClassFromClassLoader
- _JVM_FindClassFromBootLoader
- _JVM_FindLibraryEntry
- _JVM_FindLoadedClass
- _JVM_FindPrimitiveClass
- _JVM_FindSignal
- _JVM_FreeMemory
- _JVM_GC
- _JVM_GetAllThreads
- _JVM_GetArrayElement
- _JVM_GetArrayLength
- _JVM_GetCPClassNameUTF
- _JVM_GetCPFieldClassNameUTF
- _JVM_GetCPFieldModifiers
- _JVM_GetCPFieldNameUTF
- _JVM_GetCPFieldSignatureUTF
- _JVM_GetCPMethodClassNameUTF
- _JVM_GetCPMethodModifiers
- _JVM_GetCPMethodNameUTF
- _JVM_GetCPMethodSignatureUTF
- _JVM_GetCallerClass
- _JVM_GetClassAccessFlags
- _JVM_GetClassAnnotations
- _JVM_GetClassCPEntriesCount
- _JVM_GetClassCPTypes
- _JVM_GetClassConstantPool
- _JVM_GetClassContext
- _JVM_GetClassDeclaredConstructors
- _JVM_GetClassDeclaredFields
- _JVM_GetClassDeclaredMethods
- _JVM_GetClassFieldsCount
- _JVM_GetClassInterfaces
- _JVM_GetClassLoader
- _JVM_GetClassMethodsCount
- _JVM_GetClassModifiers
- _JVM_GetClassName
- _JVM_GetClassNameUTF
- _JVM_GetClassSignature
- _JVM_GetClassSigners
- _JVM_GetClassTypeAnnotations
- _JVM_GetComponentType
- _JVM_GetDeclaredClasses
- _JVM_GetDeclaringClass
- _JVM_GetEnclosingMethodInfo
- _JVM_GetFieldAnnotations
- _JVM_GetFieldIxModifiers
- _JVM_GetFieldTypeAnnotations
- _JVM_GetHostName
- _JVM_GetInheritedAccessControlContext
- _JVM_GetInterfaceVersion
- _JVM_GetLastErrorString
- _JVM_GetManagement
- _JVM_GetMethodAnnotations
- _JVM_GetMethodDefaultAnnotationValue
- _JVM_GetMethodIxArgsSize
- _JVM_GetMethodIxByteCode
- _JVM_GetMethodIxByteCodeLength
- _JVM_GetMethodIxExceptionIndexes
- _JVM_GetMethodIxExceptionTableEntry
- _JVM_GetMethodIxExceptionTableLength
- _JVM_GetMethodIxExceptionsCount
- _JVM_GetMethodIxLocalsCount
- _JVM_GetMethodIxMaxStack
- _JVM_GetMethodIxModifiers
- _JVM_GetMethodIxNameUTF
- _JVM_GetMethodIxSignatureUTF
- _JVM_GetMethodParameterAnnotations
- _JVM_GetMethodParameters
- _JVM_GetMethodTypeAnnotations
- _JVM_GetPrimitiveArrayElement
- _JVM_GetProtectionDomain
- _JVM_GetSockName
- _JVM_GetSockOpt
- _JVM_GetStackAccessControlContext
- _JVM_GetStackTraceDepth
- _JVM_GetStackTraceElement
- _JVM_GetSystemPackage
- _JVM_GetSystemPackages
- _JVM_GetTemporaryDirectory
- _JVM_GetThreadStateNames
- _JVM_GetThreadStateValues
- _JVM_GetVersionInfo
- _JVM_Halt
- _JVM_HoldsLock
- _JVM_IHashCode
- _JVM_InitAgentProperties
- _JVM_InitProperties
- _JVM_InitializeCompiler
- _JVM_InitializeSocketLibrary
- _JVM_InternString
- _JVM_Interrupt
- _JVM_InvokeMethod
- _JVM_IsArrayClass
- _JVM_IsConstructorIx
- _JVM_IsInterface
- _JVM_IsInterrupted
- _JVM_IsNaN
- _JVM_IsPrimitiveClass
- _JVM_IsSameClassPackage
- _JVM_IsSilentCompiler
- _JVM_IsSupportedJNIVersion
- _JVM_IsThreadAlive
- _JVM_IsVMGeneratedMethodIx
- _JVM_KnownToNotExist
- _JVM_GetResourceLookupCacheURLs
- _JVM_GetResourceLookupCache
- _JVM_LatestUserDefinedLoader
- _JVM_Listen
- _JVM_LoadClass0
- _JVM_LoadLibrary
- _JVM_Lseek
- _JVM_MaxObjectInspectionAge
- _JVM_MaxMemory
- _JVM_MonitorNotify
- _JVM_MonitorNotifyAll
- _JVM_MonitorWait
- _JVM_NanoTime
- _JVM_NativePath
- _JVM_NewArray
- _JVM_NewInstanceFromConstructor
- _JVM_NewMultiArray
- _JVM_OnExit
- _JVM_Open
- _JVM_RaiseSignal
- _JVM_RawMonitorCreate
- _JVM_RawMonitorDestroy
- _JVM_RawMonitorEnter
- _JVM_RawMonitorExit
- _JVM_Read
- _JVM_Recv
- _JVM_RecvFrom
- _JVM_RegisterSignal
- _JVM_ReleaseUTF
- _JVM_ResolveClass
- _JVM_ResumeThread
- _JVM_Send
- _JVM_SendTo
- _JVM_SetArrayElement
- _JVM_SetClassSigners
- _JVM_SetLength
- _JVM_SetNativeThreadName
- _JVM_SetPrimitiveArrayElement
- _JVM_SetSockOpt
- _JVM_SetThreadPriority
- _JVM_Sleep
- _JVM_Socket
- _JVM_SocketAvailable
- _JVM_SocketClose
- _JVM_SocketShutdown
- _JVM_StartThread
- _JVM_StopThread
- _JVM_SuspendThread
- _JVM_SupportsCX8
- _JVM_Sync
- _JVM_Timeout
- _JVM_TotalMemory
- _JVM_TraceInstructions
- _JVM_TraceMethodCalls
- _JVM_UnloadLibrary
- _JVM_Write
- _JVM_Yield
- _JVM_handle_bsd_signal
-
- # debug _JVM
- _JVM_AccessVMBooleanFlag
- _JVM_AccessVMIntFlag
- _JVM_VMBreakPoint
+ JNI_CreateJavaVM;
+ JNI_GetCreatedJavaVMs;
+ JNI_GetDefaultJavaVMInitArgs;
+
+ # JVM
+ JVM_Accept;
+ JVM_ActiveProcessorCount;
+ JVM_AllocateNewArray;
+ JVM_AllocateNewObject;
+ JVM_ArrayCopy;
+ JVM_AssertionStatusDirectives;
+ JVM_Available;
+ JVM_Bind;
+ JVM_ClassDepth;
+ JVM_ClassLoaderDepth;
+ JVM_Clone;
+ JVM_Close;
+ JVM_CX8Field;
+ JVM_CompileClass;
+ JVM_CompileClasses;
+ JVM_CompilerCommand;
+ JVM_Connect;
+ JVM_ConstantPoolGetClassAt;
+ JVM_ConstantPoolGetClassAtIfLoaded;
+ JVM_ConstantPoolGetDoubleAt;
+ JVM_ConstantPoolGetFieldAt;
+ JVM_ConstantPoolGetFieldAtIfLoaded;
+ JVM_ConstantPoolGetFloatAt;
+ JVM_ConstantPoolGetIntAt;
+ JVM_ConstantPoolGetLongAt;
+ JVM_ConstantPoolGetMethodAt;
+ JVM_ConstantPoolGetMethodAtIfLoaded;
+ JVM_ConstantPoolGetMemberRefInfoAt;
+ JVM_ConstantPoolGetSize;
+ JVM_ConstantPoolGetStringAt;
+ JVM_ConstantPoolGetUTF8At;
+ JVM_CountStackFrames;
+ JVM_CurrentClassLoader;
+ JVM_CurrentLoadedClass;
+ JVM_CurrentThread;
+ JVM_CurrentTimeMillis;
+ JVM_DefineClass;
+ JVM_DefineClassWithSource;
+ JVM_DefineClassWithSourceCond;
+ JVM_DesiredAssertionStatus;
+ JVM_DisableCompiler;
+ JVM_DoPrivileged;
+ JVM_DTraceGetVersion;
+ JVM_DTraceActivate;
+ JVM_DTraceIsProbeEnabled;
+ JVM_DTraceIsSupported;
+ JVM_DTraceDispose;
+ JVM_DumpAllStacks;
+ JVM_DumpThreads;
+ JVM_EnableCompiler;
+ JVM_Exit;
+ JVM_FillInStackTrace;
+ JVM_FindClassFromCaller;
+ JVM_FindClassFromClass;
+ JVM_FindClassFromClassLoader;
+ JVM_FindClassFromBootLoader;
+ JVM_FindLibraryEntry;
+ JVM_FindLoadedClass;
+ JVM_FindPrimitiveClass;
+ JVM_FindSignal;
+ JVM_FreeMemory;
+ JVM_GC;
+ JVM_GetAllThreads;
+ JVM_GetArrayElement;
+ JVM_GetArrayLength;
+ JVM_GetCPClassNameUTF;
+ JVM_GetCPFieldClassNameUTF;
+ JVM_GetCPFieldModifiers;
+ JVM_GetCPFieldNameUTF;
+ JVM_GetCPFieldSignatureUTF;
+ JVM_GetCPMethodClassNameUTF;
+ JVM_GetCPMethodModifiers;
+ JVM_GetCPMethodNameUTF;
+ JVM_GetCPMethodSignatureUTF;
+ JVM_GetCallerClass;
+ JVM_GetClassAccessFlags;
+ JVM_GetClassAnnotations;
+ JVM_GetClassCPEntriesCount;
+ JVM_GetClassCPTypes;
+ JVM_GetClassConstantPool;
+ JVM_GetClassContext;
+ JVM_GetClassDeclaredConstructors;
+ JVM_GetClassDeclaredFields;
+ JVM_GetClassDeclaredMethods;
+ JVM_GetClassFieldsCount;
+ JVM_GetClassInterfaces;
+ JVM_GetClassLoader;
+ JVM_GetClassMethodsCount;
+ JVM_GetClassModifiers;
+ JVM_GetClassName;
+ JVM_GetClassNameUTF;
+ JVM_GetClassSignature;
+ JVM_GetClassSigners;
+ JVM_GetClassTypeAnnotations;
+ JVM_GetComponentType;
+ JVM_GetDeclaredClasses;
+ JVM_GetDeclaringClass;
+ JVM_GetEnclosingMethodInfo;
+ JVM_GetFieldAnnotations;
+ JVM_GetFieldIxModifiers;
+ JVM_GetFieldTypeAnnotations;
+ JVM_GetHostName;
+ JVM_GetInheritedAccessControlContext;
+ JVM_GetInterfaceVersion;
+ JVM_GetLastErrorString;
+ JVM_GetManagement;
+ JVM_GetMethodAnnotations;
+ JVM_GetMethodDefaultAnnotationValue;
+ JVM_GetMethodIxArgsSize;
+ JVM_GetMethodIxByteCode;
+ JVM_GetMethodIxByteCodeLength;
+ JVM_GetMethodIxExceptionIndexes;
+ JVM_GetMethodIxExceptionTableEntry;
+ JVM_GetMethodIxExceptionTableLength;
+ JVM_GetMethodIxExceptionsCount;
+ JVM_GetMethodIxLocalsCount;
+ JVM_GetMethodIxMaxStack;
+ JVM_GetMethodIxModifiers;
+ JVM_GetMethodIxNameUTF;
+ JVM_GetMethodIxSignatureUTF;
+ JVM_GetMethodParameterAnnotations;
+ JVM_GetMethodParameters;
+ JVM_GetMethodTypeAnnotations;
+ JVM_GetPrimitiveArrayElement;
+ JVM_GetProtectionDomain;
+ JVM_GetSockName;
+ JVM_GetSockOpt;
+ JVM_GetStackAccessControlContext;
+ JVM_GetStackTraceDepth;
+ JVM_GetStackTraceElement;
+ JVM_GetSystemPackage;
+ JVM_GetSystemPackages;
+ JVM_GetTemporaryDirectory;
+ JVM_GetThreadStateNames;
+ JVM_GetThreadStateValues;
+ JVM_GetVersionInfo;
+ JVM_Halt;
+ JVM_HoldsLock;
+ JVM_IHashCode;
+ JVM_InitAgentProperties;
+ JVM_InitProperties;
+ JVM_InitializeCompiler;
+ JVM_InitializeSocketLibrary;
+ JVM_InternString;
+ JVM_Interrupt;
+ JVM_InvokeMethod;
+ JVM_IsArrayClass;
+ JVM_IsConstructorIx;
+ JVM_IsInterface;
+ JVM_IsInterrupted;
+ JVM_IsNaN;
+ JVM_IsPrimitiveClass;
+ JVM_IsSameClassPackage;
+ JVM_IsSilentCompiler;
+ JVM_IsSupportedJNIVersion;
+ JVM_IsThreadAlive;
+ JVM_IsVMGeneratedMethodIx;
+ JVM_KnownToNotExist;
+ JVM_GetResourceLookupCacheURLs;
+ JVM_GetResourceLookupCache;
+ JVM_LatestUserDefinedLoader;
+ JVM_Listen;
+ JVM_LoadClass0;
+ JVM_LoadLibrary;
+ JVM_Lseek;
+ JVM_MaxObjectInspectionAge;
+ JVM_MaxMemory;
+ JVM_MonitorNotify;
+ JVM_MonitorNotifyAll;
+ JVM_MonitorWait;
+ JVM_NanoTime;
+ JVM_NativePath;
+ JVM_NewArray;
+ JVM_NewInstanceFromConstructor;
+ JVM_NewMultiArray;
+ JVM_OnExit;
+ JVM_Open;
+ JVM_RaiseSignal;
+ JVM_RawMonitorCreate;
+ JVM_RawMonitorDestroy;
+ JVM_RawMonitorEnter;
+ JVM_RawMonitorExit;
+ JVM_Read;
+ JVM_Recv;
+ JVM_RecvFrom;
+ JVM_RegisterSignal;
+ JVM_ReleaseUTF;
+ JVM_ResolveClass;
+ JVM_ResumeThread;
+ JVM_Send;
+ JVM_SendTo;
+ JVM_SetArrayElement;
+ JVM_SetClassSigners;
+ JVM_SetLength;
+ JVM_SetNativeThreadName;
+ JVM_SetPrimitiveArrayElement;
+ JVM_SetSockOpt;
+ JVM_SetThreadPriority;
+ JVM_Sleep;
+ JVM_Socket;
+ JVM_SocketAvailable;
+ JVM_SocketClose;
+ JVM_SocketShutdown;
+ JVM_StartThread;
+ JVM_StopThread;
+ JVM_SuspendThread;
+ JVM_SupportsCX8;
+ JVM_Sync;
+ JVM_Timeout;
+ JVM_TotalMemory;
+ JVM_TraceInstructions;
+ JVM_TraceMethodCalls;
+ JVM_UnloadLibrary;
+ JVM_Write;
+ JVM_Yield;
+ JVM_handle_bsd_signal;
+
+ # debug JVM
+ JVM_AccessVMBooleanFlag;
+ JVM_AccessVMIntFlag;
+ JVM_VMBreakPoint;
# miscellaneous functions
- _jio_fprintf
- _jio_printf
- _jio_snprintf
- _jio_vfprintf
- _jio_vsnprintf
+ jio_fprintf;
+ jio_printf;
+ jio_snprintf;
+ jio_vfprintf;
+ jio_vsnprintf;
+ fork1;
+ numa_warn;
+ numa_error;
# This is for Forte Analyzer profiling support.
- _AsyncGetCallTrace
+ AsyncGetCallTrace;
# INSERT VTABLE SYMBOLS HERE
+ local:
+ *;
+};
--- ./hotspot/make/bsd/makefiles/mapfile-vers-debug.macosx 1969-12-31 16:00:00.000000000 -0800
+++ ./hotspot/make/bsd/makefiles/mapfile-vers-debug.macosx 2015-10-24 06:21:09.000000000 -0700
@@ -0,0 +1,266 @@
+#
+# Copyright (c) 2002, 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
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+# Only used for OSX/Darwin builds
+
+# Define public interface.
+ # _JNI
+ _JNI_CreateJavaVM
+ _JNI_GetCreatedJavaVMs
+ _JNI_GetDefaultJavaVMInitArgs
+
+ # _JVM
+ _JVM_Accept
+ _JVM_ActiveProcessorCount
+ _JVM_AllocateNewArray
+ _JVM_AllocateNewObject
+ _JVM_ArrayCopy
+ _JVM_AssertionStatusDirectives
+ _JVM_Available
+ _JVM_Bind
+ _JVM_ClassDepth
+ _JVM_ClassLoaderDepth
+ _JVM_Clone
+ _JVM_Close
+ _JVM_CX8Field
+ _JVM_CompileClass
+ _JVM_CompileClasses
+ _JVM_CompilerCommand
+ _JVM_Connect
+ _JVM_ConstantPoolGetClassAt
+ _JVM_ConstantPoolGetClassAtIfLoaded
+ _JVM_ConstantPoolGetDoubleAt
+ _JVM_ConstantPoolGetFieldAt
+ _JVM_ConstantPoolGetFieldAtIfLoaded
+ _JVM_ConstantPoolGetFloatAt
+ _JVM_ConstantPoolGetIntAt
+ _JVM_ConstantPoolGetLongAt
+ _JVM_ConstantPoolGetMethodAt
+ _JVM_ConstantPoolGetMethodAtIfLoaded
+ _JVM_ConstantPoolGetMemberRefInfoAt
+ _JVM_ConstantPoolGetSize
+ _JVM_ConstantPoolGetStringAt
+ _JVM_ConstantPoolGetUTF8At
+ _JVM_CountStackFrames
+ _JVM_CurrentClassLoader
+ _JVM_CurrentLoadedClass
+ _JVM_CurrentThread
+ _JVM_CurrentTimeMillis
+ _JVM_DefineClass
+ _JVM_DefineClassWithSource
+ _JVM_DefineClassWithSourceCond
+ _JVM_DesiredAssertionStatus
+ _JVM_DisableCompiler
+ _JVM_DoPrivileged
+ _JVM_DTraceGetVersion
+ _JVM_DTraceActivate
+ _JVM_DTraceIsProbeEnabled
+ _JVM_DTraceIsSupported
+ _JVM_DTraceDispose
+ _JVM_DumpAllStacks
+ _JVM_DumpThreads
+ _JVM_EnableCompiler
+ _JVM_Exit
+ _JVM_FillInStackTrace
+ _JVM_FindClassFromCaller
+ _JVM_FindClassFromClass
+ _JVM_FindClassFromClassLoader
+ _JVM_FindClassFromBootLoader
+ _JVM_FindLibraryEntry
+ _JVM_FindLoadedClass
+ _JVM_FindPrimitiveClass
+ _JVM_FindSignal
+ _JVM_FreeMemory
+ _JVM_GC
+ _JVM_GetAllThreads
+ _JVM_GetArrayElement
+ _JVM_GetArrayLength
+ _JVM_GetCPClassNameUTF
+ _JVM_GetCPFieldClassNameUTF
+ _JVM_GetCPFieldModifiers
+ _JVM_GetCPFieldNameUTF
+ _JVM_GetCPFieldSignatureUTF
+ _JVM_GetCPMethodClassNameUTF
+ _JVM_GetCPMethodModifiers
+ _JVM_GetCPMethodNameUTF
+ _JVM_GetCPMethodSignatureUTF
+ _JVM_GetCallerClass
+ _JVM_GetClassAccessFlags
+ _JVM_GetClassAnnotations
+ _JVM_GetClassCPEntriesCount
+ _JVM_GetClassCPTypes
+ _JVM_GetClassConstantPool
+ _JVM_GetClassContext
+ _JVM_GetClassDeclaredConstructors
+ _JVM_GetClassDeclaredFields
+ _JVM_GetClassDeclaredMethods
+ _JVM_GetClassFieldsCount
+ _JVM_GetClassInterfaces
+ _JVM_GetClassLoader
+ _JVM_GetClassMethodsCount
+ _JVM_GetClassModifiers
+ _JVM_GetClassName
+ _JVM_GetClassNameUTF
+ _JVM_GetClassSignature
+ _JVM_GetClassSigners
+ _JVM_GetClassTypeAnnotations
+ _JVM_GetComponentType
+ _JVM_GetDeclaredClasses
+ _JVM_GetDeclaringClass
+ _JVM_GetEnclosingMethodInfo
+ _JVM_GetFieldAnnotations
+ _JVM_GetFieldIxModifiers
+ _JVM_GetFieldTypeAnnotations
+ _JVM_GetHostName
+ _JVM_GetInheritedAccessControlContext
+ _JVM_GetInterfaceVersion
+ _JVM_GetLastErrorString
+ _JVM_GetManagement
+ _JVM_GetMethodAnnotations
+ _JVM_GetMethodDefaultAnnotationValue
+ _JVM_GetMethodIxArgsSize
+ _JVM_GetMethodIxByteCode
+ _JVM_GetMethodIxByteCodeLength
+ _JVM_GetMethodIxExceptionIndexes
+ _JVM_GetMethodIxExceptionTableEntry
+ _JVM_GetMethodIxExceptionTableLength
+ _JVM_GetMethodIxExceptionsCount
+ _JVM_GetMethodIxLocalsCount
+ _JVM_GetMethodIxMaxStack
+ _JVM_GetMethodIxModifiers
+ _JVM_GetMethodIxNameUTF
+ _JVM_GetMethodIxSignatureUTF
+ _JVM_GetMethodParameterAnnotations
+ _JVM_GetMethodParameters
+ _JVM_GetMethodTypeAnnotations
+ _JVM_GetPrimitiveArrayElement
+ _JVM_GetProtectionDomain
+ _JVM_GetSockName
+ _JVM_GetSockOpt
+ _JVM_GetStackAccessControlContext
+ _JVM_GetStackTraceDepth
+ _JVM_GetStackTraceElement
+ _JVM_GetSystemPackage
+ _JVM_GetSystemPackages
+ _JVM_GetTemporaryDirectory
+ _JVM_GetThreadStateNames
+ _JVM_GetThreadStateValues
+ _JVM_GetVersionInfo
+ _JVM_Halt
+ _JVM_HoldsLock
+ _JVM_IHashCode
+ _JVM_InitAgentProperties
+ _JVM_InitProperties
+ _JVM_InitializeCompiler
+ _JVM_InitializeSocketLibrary
+ _JVM_InternString
+ _JVM_Interrupt
+ _JVM_InvokeMethod
+ _JVM_IsArrayClass
+ _JVM_IsConstructorIx
+ _JVM_IsInterface
+ _JVM_IsInterrupted
+ _JVM_IsNaN
+ _JVM_IsPrimitiveClass
+ _JVM_IsSameClassPackage
+ _JVM_IsSilentCompiler
+ _JVM_IsSupportedJNIVersion
+ _JVM_IsThreadAlive
+ _JVM_IsVMGeneratedMethodIx
+ _JVM_KnownToNotExist
+ _JVM_GetResourceLookupCacheURLs
+ _JVM_GetResourceLookupCache
+ _JVM_LatestUserDefinedLoader
+ _JVM_Listen
+ _JVM_LoadClass0
+ _JVM_LoadLibrary
+ _JVM_Lseek
+ _JVM_MaxObjectInspectionAge
+ _JVM_MaxMemory
+ _JVM_MonitorNotify
+ _JVM_MonitorNotifyAll
+ _JVM_MonitorWait
+ _JVM_NanoTime
+ _JVM_NativePath
+ _JVM_NewArray
+ _JVM_NewInstanceFromConstructor
+ _JVM_NewMultiArray
+ _JVM_OnExit
+ _JVM_Open
+ _JVM_RaiseSignal
+ _JVM_RawMonitorCreate
+ _JVM_RawMonitorDestroy
+ _JVM_RawMonitorEnter
+ _JVM_RawMonitorExit
+ _JVM_Read
+ _JVM_Recv
+ _JVM_RecvFrom
+ _JVM_RegisterSignal
+ _JVM_ReleaseUTF
+ _JVM_ResolveClass
+ _JVM_ResumeThread
+ _JVM_Send
+ _JVM_SendTo
+ _JVM_SetArrayElement
+ _JVM_SetClassSigners
+ _JVM_SetLength
+ _JVM_SetNativeThreadName
+ _JVM_SetPrimitiveArrayElement
+ _JVM_SetSockOpt
+ _JVM_SetThreadPriority
+ _JVM_Sleep
+ _JVM_Socket
+ _JVM_SocketAvailable
+ _JVM_SocketClose
+ _JVM_SocketShutdown
+ _JVM_StartThread
+ _JVM_StopThread
+ _JVM_SuspendThread
+ _JVM_SupportsCX8
+ _JVM_Sync
+ _JVM_Timeout
+ _JVM_TotalMemory
+ _JVM_TraceInstructions
+ _JVM_TraceMethodCalls
+ _JVM_UnloadLibrary
+ _JVM_Write
+ _JVM_Yield
+ _JVM_handle_bsd_signal
+
+ # debug _JVM
+ _JVM_AccessVMBooleanFlag
+ _JVM_AccessVMIntFlag
+ _JVM_VMBreakPoint
+
+ # miscellaneous functions
+ _jio_fprintf
+ _jio_printf
+ _jio_snprintf
+ _jio_vfprintf
+ _jio_vsnprintf
+
+ # This is for Forte Analyzer profiling support.
+ _AsyncGetCallTrace
+
+ # INSERT VTABLE SYMBOLS HERE
+
--- ./hotspot/make/bsd/makefiles/mapfile-vers-product 2015-12-12 10:53:26.627041000 -0800
+++ ./hotspot/make/bsd/makefiles/mapfile-vers-product 2015-10-24 06:21:09.000000000 -0700
@@ -21,241 +21,249 @@
# questions.
#
#
-# Only used for OSX/Darwin builds
# Define public interface.
+
+SUNWprivate_1.1 {
+ global:
# _JNI
- _JNI_CreateJavaVM
- _JNI_GetCreatedJavaVMs
- _JNI_GetDefaultJavaVMInitArgs
-
- # _JVM
- _JVM_Accept
- _JVM_ActiveProcessorCount
- _JVM_AllocateNewArray
- _JVM_AllocateNewObject
- _JVM_ArrayCopy
- _JVM_AssertionStatusDirectives
- _JVM_Available
- _JVM_Bind
- _JVM_ClassDepth
- _JVM_ClassLoaderDepth
- _JVM_Clone
- _JVM_Close
- _JVM_CX8Field
- _JVM_CompileClass
- _JVM_CompileClasses
- _JVM_CompilerCommand
- _JVM_Connect
- _JVM_ConstantPoolGetClassAt
- _JVM_ConstantPoolGetClassAtIfLoaded
- _JVM_ConstantPoolGetDoubleAt
- _JVM_ConstantPoolGetFieldAt
- _JVM_ConstantPoolGetFieldAtIfLoaded
- _JVM_ConstantPoolGetFloatAt
- _JVM_ConstantPoolGetIntAt
- _JVM_ConstantPoolGetLongAt
- _JVM_ConstantPoolGetMethodAt
- _JVM_ConstantPoolGetMethodAtIfLoaded
- _JVM_ConstantPoolGetMemberRefInfoAt
- _JVM_ConstantPoolGetSize
- _JVM_ConstantPoolGetStringAt
- _JVM_ConstantPoolGetUTF8At
- _JVM_CountStackFrames
- _JVM_CurrentClassLoader
- _JVM_CurrentLoadedClass
- _JVM_CurrentThread
- _JVM_CurrentTimeMillis
- _JVM_DefineClass
- _JVM_DefineClassWithSource
- _JVM_DefineClassWithSourceCond
- _JVM_DesiredAssertionStatus
- _JVM_DisableCompiler
- _JVM_DoPrivileged
- _JVM_DTraceGetVersion
- _JVM_DTraceActivate
- _JVM_DTraceIsProbeEnabled
- _JVM_DTraceIsSupported
- _JVM_DTraceDispose
- _JVM_DumpAllStacks
- _JVM_DumpThreads
- _JVM_EnableCompiler
- _JVM_Exit
- _JVM_FillInStackTrace
- _JVM_FindClassFromCaller
- _JVM_FindClassFromClass
- _JVM_FindClassFromClassLoader
- _JVM_FindClassFromBootLoader
- _JVM_FindLibraryEntry
- _JVM_FindLoadedClass
- _JVM_FindPrimitiveClass
- _JVM_FindSignal
- _JVM_FreeMemory
- _JVM_GC
- _JVM_GetAllThreads
- _JVM_GetArrayElement
- _JVM_GetArrayLength
- _JVM_GetCPClassNameUTF
- _JVM_GetCPFieldClassNameUTF
- _JVM_GetCPFieldModifiers
- _JVM_GetCPFieldNameUTF
- _JVM_GetCPFieldSignatureUTF
- _JVM_GetCPMethodClassNameUTF
- _JVM_GetCPMethodModifiers
- _JVM_GetCPMethodNameUTF
- _JVM_GetCPMethodSignatureUTF
- _JVM_GetCallerClass
- _JVM_GetClassAccessFlags
- _JVM_GetClassAnnotations
- _JVM_GetClassCPEntriesCount
- _JVM_GetClassCPTypes
- _JVM_GetClassConstantPool
- _JVM_GetClassContext
- _JVM_GetClassDeclaredConstructors
- _JVM_GetClassDeclaredFields
- _JVM_GetClassDeclaredMethods
- _JVM_GetClassFieldsCount
- _JVM_GetClassInterfaces
- _JVM_GetClassLoader
- _JVM_GetClassMethodsCount
- _JVM_GetClassModifiers
- _JVM_GetClassName
- _JVM_GetClassNameUTF
- _JVM_GetClassSignature
- _JVM_GetClassSigners
- _JVM_GetClassTypeAnnotations
- _JVM_GetComponentType
- _JVM_GetDeclaredClasses
- _JVM_GetDeclaringClass
- _JVM_GetEnclosingMethodInfo
- _JVM_GetFieldAnnotations
- _JVM_GetFieldIxModifiers
- _JVM_GetFieldTypeAnnotations
- _JVM_GetHostName
- _JVM_GetInheritedAccessControlContext
- _JVM_GetInterfaceVersion
- _JVM_GetLastErrorString
- _JVM_GetManagement
- _JVM_GetMethodAnnotations
- _JVM_GetMethodDefaultAnnotationValue
- _JVM_GetMethodIxArgsSize
- _JVM_GetMethodIxByteCode
- _JVM_GetMethodIxByteCodeLength
- _JVM_GetMethodIxExceptionIndexes
- _JVM_GetMethodIxExceptionTableEntry
- _JVM_GetMethodIxExceptionTableLength
- _JVM_GetMethodIxExceptionsCount
- _JVM_GetMethodIxLocalsCount
- _JVM_GetMethodIxMaxStack
- _JVM_GetMethodIxModifiers
- _JVM_GetMethodIxNameUTF
- _JVM_GetMethodIxSignatureUTF
- _JVM_GetMethodParameterAnnotations
- _JVM_GetMethodParameters
- _JVM_GetMethodTypeAnnotations
- _JVM_GetPrimitiveArrayElement
- _JVM_GetProtectionDomain
- _JVM_GetSockName
- _JVM_GetSockOpt
- _JVM_GetStackAccessControlContext
- _JVM_GetStackTraceDepth
- _JVM_GetStackTraceElement
- _JVM_GetSystemPackage
- _JVM_GetSystemPackages
- _JVM_GetTemporaryDirectory
- _JVM_GetThreadStateNames
- _JVM_GetThreadStateValues
- _JVM_GetVersionInfo
- _JVM_Halt
- _JVM_HoldsLock
- _JVM_IHashCode
- _JVM_InitAgentProperties
- _JVM_InitProperties
- _JVM_InitializeCompiler
- _JVM_InitializeSocketLibrary
- _JVM_InternString
- _JVM_Interrupt
- _JVM_InvokeMethod
- _JVM_IsArrayClass
- _JVM_IsConstructorIx
- _JVM_IsInterface
- _JVM_IsInterrupted
- _JVM_IsNaN
- _JVM_IsPrimitiveClass
- _JVM_IsSameClassPackage
- _JVM_IsSilentCompiler
- _JVM_IsSupportedJNIVersion
- _JVM_IsThreadAlive
- _JVM_IsVMGeneratedMethodIx
- _JVM_KnownToNotExist
- _JVM_GetResourceLookupCacheURLs
- _JVM_GetResourceLookupCache
- _JVM_LatestUserDefinedLoader
- _JVM_Listen
- _JVM_LoadClass0
- _JVM_LoadLibrary
- _JVM_Lseek
- _JVM_MaxObjectInspectionAge
- _JVM_MaxMemory
- _JVM_MonitorNotify
- _JVM_MonitorNotifyAll
- _JVM_MonitorWait
- _JVM_NanoTime
- _JVM_NativePath
- _JVM_NewArray
- _JVM_NewInstanceFromConstructor
- _JVM_NewMultiArray
- _JVM_OnExit
- _JVM_Open
- _JVM_RaiseSignal
- _JVM_RawMonitorCreate
- _JVM_RawMonitorDestroy
- _JVM_RawMonitorEnter
- _JVM_RawMonitorExit
- _JVM_Read
- _JVM_Recv
- _JVM_RecvFrom
- _JVM_RegisterSignal
- _JVM_ReleaseUTF
- _JVM_ResolveClass
- _JVM_ResumeThread
- _JVM_Send
- _JVM_SendTo
- _JVM_SetArrayElement
- _JVM_SetClassSigners
- _JVM_SetLength
- _JVM_SetNativeThreadName
- _JVM_SetPrimitiveArrayElement
- _JVM_SetSockOpt
- _JVM_SetThreadPriority
- _JVM_Sleep
- _JVM_Socket
- _JVM_SocketAvailable
- _JVM_SocketClose
- _JVM_SocketShutdown
- _JVM_StartThread
- _JVM_StopThread
- _JVM_SuspendThread
- _JVM_SupportsCX8
- _JVM_Sync
- _JVM_Timeout
- _JVM_TotalMemory
- _JVM_TraceInstructions
- _JVM_TraceMethodCalls
- _JVM_UnloadLibrary
- _JVM_Write
- _JVM_Yield
- _JVM_handle_bsd_signal
+ JNI_CreateJavaVM;
+ JNI_GetCreatedJavaVMs;
+ JNI_GetDefaultJavaVMInitArgs;
+
+ # JVM
+ JVM_Accept;
+ JVM_ActiveProcessorCount;
+ JVM_AllocateNewArray;
+ JVM_AllocateNewObject;
+ JVM_ArrayCopy;
+ JVM_AssertionStatusDirectives;
+ JVM_Available;
+ JVM_Bind;
+ JVM_ClassDepth;
+ JVM_ClassLoaderDepth;
+ JVM_Clone;
+ JVM_Close;
+ JVM_CX8Field;
+ JVM_CompileClass;
+ JVM_CompileClasses;
+ JVM_CompilerCommand;
+ JVM_Connect;
+ JVM_ConstantPoolGetClassAt;
+ JVM_ConstantPoolGetClassAtIfLoaded;
+ JVM_ConstantPoolGetDoubleAt;
+ JVM_ConstantPoolGetFieldAt;
+ JVM_ConstantPoolGetFieldAtIfLoaded;
+ JVM_ConstantPoolGetFloatAt;
+ JVM_ConstantPoolGetIntAt;
+ JVM_ConstantPoolGetLongAt;
+ JVM_ConstantPoolGetMethodAt;
+ JVM_ConstantPoolGetMethodAtIfLoaded;
+ JVM_ConstantPoolGetMemberRefInfoAt;
+ JVM_ConstantPoolGetSize;
+ JVM_ConstantPoolGetStringAt;
+ JVM_ConstantPoolGetUTF8At;
+ JVM_CountStackFrames;
+ JVM_CurrentClassLoader;
+ JVM_CurrentLoadedClass;
+ JVM_CurrentThread;
+ JVM_CurrentTimeMillis;
+ JVM_DefineClass;
+ JVM_DefineClassWithSource;
+ JVM_DefineClassWithSourceCond;
+ JVM_DesiredAssertionStatus;
+ JVM_DisableCompiler;
+ JVM_DoPrivileged;
+ JVM_DTraceGetVersion;
+ JVM_DTraceActivate;
+ JVM_DTraceIsProbeEnabled;
+ JVM_DTraceIsSupported;
+ JVM_DTraceDispose;
+ JVM_DumpAllStacks;
+ JVM_DumpThreads;
+ JVM_EnableCompiler;
+ JVM_Exit;
+ JVM_FillInStackTrace;
+ JVM_FindClassFromCaller;
+ JVM_FindClassFromClass;
+ JVM_FindClassFromClassLoader;
+ JVM_FindClassFromBootLoader;
+ JVM_FindLibraryEntry;
+ JVM_FindLoadedClass;
+ JVM_FindPrimitiveClass;
+ JVM_FindSignal;
+ JVM_FreeMemory;
+ JVM_GC;
+ JVM_GetAllThreads;
+ JVM_GetArrayElement;
+ JVM_GetArrayLength;
+ JVM_GetCPClassNameUTF;
+ JVM_GetCPFieldClassNameUTF;
+ JVM_GetCPFieldModifiers;
+ JVM_GetCPFieldNameUTF;
+ JVM_GetCPFieldSignatureUTF;
+ JVM_GetCPMethodClassNameUTF;
+ JVM_GetCPMethodModifiers;
+ JVM_GetCPMethodNameUTF;
+ JVM_GetCPMethodSignatureUTF;
+ JVM_GetCallerClass;
+ JVM_GetClassAccessFlags;
+ JVM_GetClassAnnotations;
+ JVM_GetClassCPEntriesCount;
+ JVM_GetClassCPTypes;
+ JVM_GetClassConstantPool;
+ JVM_GetClassContext;
+ JVM_GetClassDeclaredConstructors;
+ JVM_GetClassDeclaredFields;
+ JVM_GetClassDeclaredMethods;
+ JVM_GetClassFieldsCount;
+ JVM_GetClassInterfaces;
+ JVM_GetClassLoader;
+ JVM_GetClassMethodsCount;
+ JVM_GetClassModifiers;
+ JVM_GetClassName;
+ JVM_GetClassNameUTF;
+ JVM_GetClassSignature;
+ JVM_GetClassSigners;
+ JVM_GetClassTypeAnnotations;
+ JVM_GetComponentType;
+ JVM_GetDeclaredClasses;
+ JVM_GetDeclaringClass;
+ JVM_GetEnclosingMethodInfo;
+ JVM_GetFieldAnnotations;
+ JVM_GetFieldIxModifiers;
+ JVM_GetFieldTypeAnnotations;
+ JVM_GetHostName;
+ JVM_GetInheritedAccessControlContext;
+ JVM_GetInterfaceVersion;
+ JVM_GetLastErrorString;
+ JVM_GetManagement;
+ JVM_GetMethodAnnotations;
+ JVM_GetMethodDefaultAnnotationValue;
+ JVM_GetMethodIxArgsSize;
+ JVM_GetMethodIxByteCode;
+ JVM_GetMethodIxByteCodeLength;
+ JVM_GetMethodIxExceptionIndexes;
+ JVM_GetMethodIxExceptionTableEntry;
+ JVM_GetMethodIxExceptionTableLength;
+ JVM_GetMethodIxExceptionsCount;
+ JVM_GetMethodIxLocalsCount;
+ JVM_GetMethodIxMaxStack;
+ JVM_GetMethodIxModifiers;
+ JVM_GetMethodIxNameUTF;
+ JVM_GetMethodIxSignatureUTF;
+ JVM_GetMethodParameterAnnotations;
+ JVM_GetMethodParameters;
+ JVM_GetMethodTypeAnnotations;
+ JVM_GetPrimitiveArrayElement;
+ JVM_GetProtectionDomain;
+ JVM_GetSockName;
+ JVM_GetSockOpt;
+ JVM_GetStackAccessControlContext;
+ JVM_GetStackTraceDepth;
+ JVM_GetStackTraceElement;
+ JVM_GetSystemPackage;
+ JVM_GetSystemPackages;
+ JVM_GetTemporaryDirectory;
+ JVM_GetThreadStateNames;
+ JVM_GetThreadStateValues;
+ JVM_GetVersionInfo;
+ JVM_Halt;
+ JVM_HoldsLock;
+ JVM_IHashCode;
+ JVM_InitAgentProperties;
+ JVM_InitProperties;
+ JVM_InitializeCompiler;
+ JVM_InitializeSocketLibrary;
+ JVM_InternString;
+ JVM_Interrupt;
+ JVM_InvokeMethod;
+ JVM_IsArrayClass;
+ JVM_IsConstructorIx;
+ JVM_IsInterface;
+ JVM_IsInterrupted;
+ JVM_IsNaN;
+ JVM_IsPrimitiveClass;
+ JVM_IsSameClassPackage;
+ JVM_IsSilentCompiler;
+ JVM_IsSupportedJNIVersion;
+ JVM_IsThreadAlive;
+ JVM_IsVMGeneratedMethodIx;
+ JVM_KnownToNotExist;
+ JVM_GetResourceLookupCacheURLs;
+ JVM_GetResourceLookupCache;
+ JVM_LatestUserDefinedLoader;
+ JVM_Listen;
+ JVM_LoadClass0;
+ JVM_LoadLibrary;
+ JVM_Lseek;
+ JVM_MaxObjectInspectionAge;
+ JVM_MaxMemory;
+ JVM_MonitorNotify;
+ JVM_MonitorNotifyAll;
+ JVM_MonitorWait;
+ JVM_NanoTime;
+ JVM_NativePath;
+ JVM_NewArray;
+ JVM_NewInstanceFromConstructor;
+ JVM_NewMultiArray;
+ JVM_OnExit;
+ JVM_Open;
+ JVM_RaiseSignal;
+ JVM_RawMonitorCreate;
+ JVM_RawMonitorDestroy;
+ JVM_RawMonitorEnter;
+ JVM_RawMonitorExit;
+ JVM_Read;
+ JVM_Recv;
+ JVM_RecvFrom;
+ JVM_RegisterSignal;
+ JVM_ReleaseUTF;
+ JVM_ResolveClass;
+ JVM_ResumeThread;
+ JVM_Send;
+ JVM_SendTo;
+ JVM_SetArrayElement;
+ JVM_SetClassSigners;
+ JVM_SetLength;
+ JVM_SetNativeThreadName;
+ JVM_SetPrimitiveArrayElement;
+ JVM_SetSockOpt;
+ JVM_SetThreadPriority;
+ JVM_Sleep;
+ JVM_Socket;
+ JVM_SocketAvailable;
+ JVM_SocketClose;
+ JVM_SocketShutdown;
+ JVM_StartThread;
+ JVM_StopThread;
+ JVM_SuspendThread;
+ JVM_SupportsCX8;
+ JVM_Sync;
+ JVM_Timeout;
+ JVM_TotalMemory;
+ JVM_TraceInstructions;
+ JVM_TraceMethodCalls;
+ JVM_UnloadLibrary;
+ JVM_Write;
+ JVM_Yield;
+ JVM_handle_bsd_signal;
# miscellaneous functions
- _jio_fprintf
- _jio_printf
- _jio_snprintf
- _jio_vfprintf
- _jio_vsnprintf
+ jio_fprintf;
+ jio_printf;
+ jio_snprintf;
+ jio_vfprintf;
+ jio_vsnprintf;
+ fork1;
+ numa_warn;
+ numa_error;
# This is for Forte Analyzer profiling support.
- _AsyncGetCallTrace
+ AsyncGetCallTrace;
# INSERT VTABLE SYMBOLS HERE
+ local:
+ *;
+};
--- ./hotspot/make/bsd/makefiles/mapfile-vers-product.macosx 1969-12-31 16:00:00.000000000 -0800
+++ ./hotspot/make/bsd/makefiles/mapfile-vers-product.macosx 2015-10-24 06:21:09.000000000 -0700
@@ -0,0 +1,261 @@
+#
+# Copyright (c) 2002, 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
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+# Only used for OSX/Darwin builds
+
+# Define public interface.
+ # _JNI
+ _JNI_CreateJavaVM
+ _JNI_GetCreatedJavaVMs
+ _JNI_GetDefaultJavaVMInitArgs
+
+ # _JVM
+ _JVM_Accept
+ _JVM_ActiveProcessorCount
+ _JVM_AllocateNewArray
+ _JVM_AllocateNewObject
+ _JVM_ArrayCopy
+ _JVM_AssertionStatusDirectives
+ _JVM_Available
+ _JVM_Bind
+ _JVM_ClassDepth
+ _JVM_ClassLoaderDepth
+ _JVM_Clone
+ _JVM_Close
+ _JVM_CX8Field
+ _JVM_CompileClass
+ _JVM_CompileClasses
+ _JVM_CompilerCommand
+ _JVM_Connect
+ _JVM_ConstantPoolGetClassAt
+ _JVM_ConstantPoolGetClassAtIfLoaded
+ _JVM_ConstantPoolGetDoubleAt
+ _JVM_ConstantPoolGetFieldAt
+ _JVM_ConstantPoolGetFieldAtIfLoaded
+ _JVM_ConstantPoolGetFloatAt
+ _JVM_ConstantPoolGetIntAt
+ _JVM_ConstantPoolGetLongAt
+ _JVM_ConstantPoolGetMethodAt
+ _JVM_ConstantPoolGetMethodAtIfLoaded
+ _JVM_ConstantPoolGetMemberRefInfoAt
+ _JVM_ConstantPoolGetSize
+ _JVM_ConstantPoolGetStringAt
+ _JVM_ConstantPoolGetUTF8At
+ _JVM_CountStackFrames
+ _JVM_CurrentClassLoader
+ _JVM_CurrentLoadedClass
+ _JVM_CurrentThread
+ _JVM_CurrentTimeMillis
+ _JVM_DefineClass
+ _JVM_DefineClassWithSource
+ _JVM_DefineClassWithSourceCond
+ _JVM_DesiredAssertionStatus
+ _JVM_DisableCompiler
+ _JVM_DoPrivileged
+ _JVM_DTraceGetVersion
+ _JVM_DTraceActivate
+ _JVM_DTraceIsProbeEnabled
+ _JVM_DTraceIsSupported
+ _JVM_DTraceDispose
+ _JVM_DumpAllStacks
+ _JVM_DumpThreads
+ _JVM_EnableCompiler
+ _JVM_Exit
+ _JVM_FillInStackTrace
+ _JVM_FindClassFromCaller
+ _JVM_FindClassFromClass
+ _JVM_FindClassFromClassLoader
+ _JVM_FindClassFromBootLoader
+ _JVM_FindLibraryEntry
+ _JVM_FindLoadedClass
+ _JVM_FindPrimitiveClass
+ _JVM_FindSignal
+ _JVM_FreeMemory
+ _JVM_GC
+ _JVM_GetAllThreads
+ _JVM_GetArrayElement
+ _JVM_GetArrayLength
+ _JVM_GetCPClassNameUTF
+ _JVM_GetCPFieldClassNameUTF
+ _JVM_GetCPFieldModifiers
+ _JVM_GetCPFieldNameUTF
+ _JVM_GetCPFieldSignatureUTF
+ _JVM_GetCPMethodClassNameUTF
+ _JVM_GetCPMethodModifiers
+ _JVM_GetCPMethodNameUTF
+ _JVM_GetCPMethodSignatureUTF
+ _JVM_GetCallerClass
+ _JVM_GetClassAccessFlags
+ _JVM_GetClassAnnotations
+ _JVM_GetClassCPEntriesCount
+ _JVM_GetClassCPTypes
+ _JVM_GetClassConstantPool
+ _JVM_GetClassContext
+ _JVM_GetClassDeclaredConstructors
+ _JVM_GetClassDeclaredFields
+ _JVM_GetClassDeclaredMethods
+ _JVM_GetClassFieldsCount
+ _JVM_GetClassInterfaces
+ _JVM_GetClassLoader
+ _JVM_GetClassMethodsCount
+ _JVM_GetClassModifiers
+ _JVM_GetClassName
+ _JVM_GetClassNameUTF
+ _JVM_GetClassSignature
+ _JVM_GetClassSigners
+ _JVM_GetClassTypeAnnotations
+ _JVM_GetComponentType
+ _JVM_GetDeclaredClasses
+ _JVM_GetDeclaringClass
+ _JVM_GetEnclosingMethodInfo
+ _JVM_GetFieldAnnotations
+ _JVM_GetFieldIxModifiers
+ _JVM_GetFieldTypeAnnotations
+ _JVM_GetHostName
+ _JVM_GetInheritedAccessControlContext
+ _JVM_GetInterfaceVersion
+ _JVM_GetLastErrorString
+ _JVM_GetManagement
+ _JVM_GetMethodAnnotations
+ _JVM_GetMethodDefaultAnnotationValue
+ _JVM_GetMethodIxArgsSize
+ _JVM_GetMethodIxByteCode
+ _JVM_GetMethodIxByteCodeLength
+ _JVM_GetMethodIxExceptionIndexes
+ _JVM_GetMethodIxExceptionTableEntry
+ _JVM_GetMethodIxExceptionTableLength
+ _JVM_GetMethodIxExceptionsCount
+ _JVM_GetMethodIxLocalsCount
+ _JVM_GetMethodIxMaxStack
+ _JVM_GetMethodIxModifiers
+ _JVM_GetMethodIxNameUTF
+ _JVM_GetMethodIxSignatureUTF
+ _JVM_GetMethodParameterAnnotations
+ _JVM_GetMethodParameters
+ _JVM_GetMethodTypeAnnotations
+ _JVM_GetPrimitiveArrayElement
+ _JVM_GetProtectionDomain
+ _JVM_GetSockName
+ _JVM_GetSockOpt
+ _JVM_GetStackAccessControlContext
+ _JVM_GetStackTraceDepth
+ _JVM_GetStackTraceElement
+ _JVM_GetSystemPackage
+ _JVM_GetSystemPackages
+ _JVM_GetTemporaryDirectory
+ _JVM_GetThreadStateNames
+ _JVM_GetThreadStateValues
+ _JVM_GetVersionInfo
+ _JVM_Halt
+ _JVM_HoldsLock
+ _JVM_IHashCode
+ _JVM_InitAgentProperties
+ _JVM_InitProperties
+ _JVM_InitializeCompiler
+ _JVM_InitializeSocketLibrary
+ _JVM_InternString
+ _JVM_Interrupt
+ _JVM_InvokeMethod
+ _JVM_IsArrayClass
+ _JVM_IsConstructorIx
+ _JVM_IsInterface
+ _JVM_IsInterrupted
+ _JVM_IsNaN
+ _JVM_IsPrimitiveClass
+ _JVM_IsSameClassPackage
+ _JVM_IsSilentCompiler
+ _JVM_IsSupportedJNIVersion
+ _JVM_IsThreadAlive
+ _JVM_IsVMGeneratedMethodIx
+ _JVM_KnownToNotExist
+ _JVM_GetResourceLookupCacheURLs
+ _JVM_GetResourceLookupCache
+ _JVM_LatestUserDefinedLoader
+ _JVM_Listen
+ _JVM_LoadClass0
+ _JVM_LoadLibrary
+ _JVM_Lseek
+ _JVM_MaxObjectInspectionAge
+ _JVM_MaxMemory
+ _JVM_MonitorNotify
+ _JVM_MonitorNotifyAll
+ _JVM_MonitorWait
+ _JVM_NanoTime
+ _JVM_NativePath
+ _JVM_NewArray
+ _JVM_NewInstanceFromConstructor
+ _JVM_NewMultiArray
+ _JVM_OnExit
+ _JVM_Open
+ _JVM_RaiseSignal
+ _JVM_RawMonitorCreate
+ _JVM_RawMonitorDestroy
+ _JVM_RawMonitorEnter
+ _JVM_RawMonitorExit
+ _JVM_Read
+ _JVM_Recv
+ _JVM_RecvFrom
+ _JVM_RegisterSignal
+ _JVM_ReleaseUTF
+ _JVM_ResolveClass
+ _JVM_ResumeThread
+ _JVM_Send
+ _JVM_SendTo
+ _JVM_SetArrayElement
+ _JVM_SetClassSigners
+ _JVM_SetLength
+ _JVM_SetNativeThreadName
+ _JVM_SetPrimitiveArrayElement
+ _JVM_SetSockOpt
+ _JVM_SetThreadPriority
+ _JVM_Sleep
+ _JVM_Socket
+ _JVM_SocketAvailable
+ _JVM_SocketClose
+ _JVM_SocketShutdown
+ _JVM_StartThread
+ _JVM_StopThread
+ _JVM_SuspendThread
+ _JVM_SupportsCX8
+ _JVM_Sync
+ _JVM_Timeout
+ _JVM_TotalMemory
+ _JVM_TraceInstructions
+ _JVM_TraceMethodCalls
+ _JVM_UnloadLibrary
+ _JVM_Write
+ _JVM_Yield
+ _JVM_handle_bsd_signal
+
+ # miscellaneous functions
+ _jio_fprintf
+ _jio_printf
+ _jio_snprintf
+ _jio_vfprintf
+ _jio_vsnprintf
+
+ # This is for Forte Analyzer profiling support.
+ _AsyncGetCallTrace
+
+ # INSERT VTABLE SYMBOLS HERE
+
--- ./hotspot/make/bsd/makefiles/optimized.make 2014-03-03 18:52:06.000000000 -0800
+++ ./hotspot/make/bsd/makefiles/optimized.make 2015-10-24 06:21:09.000000000 -0700
@@ -38,6 +38,9 @@
# to inhibit the effect of the previous line on CFLAGS.
# Linker mapfile
-MAPFILE = $(GAMMADIR)/make/bsd/makefiles/mapfile-vers-debug
+ifeq ($(OS_VENDOR), Darwin)
+MAPSUFX = .macosx
+endif
+MAPFILE = $(GAMMADIR)/make/bsd/makefiles/mapfile-vers-debug$(MAPSUFX)
VERSION = optimized
--- ./hotspot/make/bsd/makefiles/product.make 2014-03-03 18:52:06.000000000 -0800
+++ ./hotspot/make/bsd/makefiles/product.make 2015-10-24 06:21:09.000000000 -0700
@@ -38,7 +38,10 @@
# to inhibit the effect of the previous line on CFLAGS.
# Linker mapfile
-MAPFILE = $(GAMMADIR)/make/bsd/makefiles/mapfile-vers-product
+ifeq ($(OS_VENDOR), Darwin)
+ MAPSUFX = .macosx
+endif
+MAPFILE = $(GAMMADIR)/make/bsd/makefiles/mapfile-vers-product$(MAPSUFX)
SYSDEFS += -DPRODUCT
VERSION = optimized
--- ./hotspot/make/bsd/makefiles/rules.make 2014-03-03 18:52:06.000000000 -0800
+++ ./hotspot/make/bsd/makefiles/rules.make 2015-10-24 06:21:09.000000000 -0700
@@ -34,7 +34,7 @@
CC_COMPILE = $(CC) $(CXXFLAGS) $(CFLAGS)
CXX_COMPILE = $(CXX) $(CXXFLAGS) $(CFLAGS)
-AS.S = $(AS) $(ASFLAGS)
+AS.S = $(AS) -x assembler-with-cpp $(ASFLAGS)
COMPILE.CC = $(CC_COMPILE) -c
GENASM.CC = $(CC_COMPILE) -S
--- ./hotspot/make/bsd/makefiles/vm.make 2015-12-12 10:53:26.627607000 -0800
+++ ./hotspot/make/bsd/makefiles/vm.make 2015-10-24 06:21:09.000000000 -0700
@@ -107,7 +107,7 @@
# File specific flags
CXXFLAGS += $(CXXFLAGS/BYFILE)
-ifdef DEFAULT_LIBPATH
+ifneq ($(DEFAULT_LIBPATH),)
CXXFLAGS += -DDEFAULT_LIBPATH="\"$(DEFAULT_LIBPATH)\""
endif
--- ./hotspot/src/cpu/x86/vm/jni_x86.h 2014-03-03 18:52:11.000000000 -0800
+++ ./hotspot/src/cpu/x86/vm/jni_x86.h 2015-10-24 06:21:09.000000000 -0700
@@ -34,7 +34,7 @@
#ifndef __has_attribute
#define __has_attribute(x) 0
#endif
-#if (defined(__GNUC__) && ((__GNUC__ > 4) || (__GNUC__ == 4) && (__GNUC_MINOR__ > 2))) || __has_attribute(visibility)
+#if (defined(__clang__) || (defined(__GNUC__) && ((__GNUC__ > 4) || (__GNUC__ == 4) && (__GNUC_MINOR__ > 2)))) || __has_attribute(visibility)
#define JNIEXPORT __attribute__((visibility("default")))
#define JNIIMPORT __attribute__((visibility("default")))
#else
--- ./hotspot/src/cpu/x86/vm/sharedRuntime_x86_32.cpp 2015-12-12 10:53:20.996606000 -0800
+++ ./hotspot/src/cpu/x86/vm/sharedRuntime_x86_32.cpp 2015-10-24 06:21:09.000000000 -0700
@@ -2266,7 +2266,7 @@
if (!is_critical_native) {
// reset handle block
__ movptr(rcx, Address(thread, JavaThread::active_handles_offset()));
- __ movl(Address(rcx, JNIHandleBlock::top_offset_in_bytes()), NULL_WORD);
+ __ movl(Address(rcx, JNIHandleBlock::top_offset_in_bytes()), (int32_t)NULL_WORD);
// Any exception pending?
__ cmpptr(Address(thread, in_bytes(Thread::pending_exception_offset())), (int32_t)NULL_WORD);
--- ./hotspot/src/cpu/x86/vm/templateInterpreter_x86_32.cpp 2015-12-12 10:53:21.001927000 -0800
+++ ./hotspot/src/cpu/x86/vm/templateInterpreter_x86_32.cpp 2015-10-24 06:21:09.000000000 -0700
@@ -1287,7 +1287,7 @@
// reset handle block
__ movptr(t, Address(thread, JavaThread::active_handles_offset()));
- __ movl(Address(t, JNIHandleBlock::top_offset_in_bytes()), NULL_WORD);
+ __ movl(Address(t, JNIHandleBlock::top_offset_in_bytes()), (int32_t)NULL_WORD);
// If result was an oop then unbox and save it in the frame
{ Label L;
--- ./hotspot/src/cpu/x86/vm/x86_32.ad 2015-12-12 10:53:29.328084000 -0800
+++ ./hotspot/src/cpu/x86/vm/x86_32.ad 2015-10-24 06:21:09.000000000 -0700
@@ -1246,6 +1246,7 @@
Unimplemented();
+ return 0;
}
#ifndef PRODUCT
--- ./hotspot/src/os/aix/vm/os_aix.cpp 2015-12-12 10:53:29.334088000 -0800
+++ ./hotspot/src/os/aix/vm/os_aix.cpp 2015-10-24 06:21:09.000000000 -0700
@@ -5236,6 +5236,10 @@
return 0;
}
+ const int n = strlen(buffer);
+
+ jio_snprintf(buffer + n, bufferSize - n, "/core or core.%d", current_process_id());
+
return strlen(buffer);
}
--- ./hotspot/src/os/bsd/vm/decoder_bsd.cpp 1969-12-31 16:00:00.000000000 -0800
+++ ./hotspot/src/os/bsd/vm/decoder_bsd.cpp 2015-10-24 06:21:09.000000000 -0700
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 1997, 2012, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef __APPLE__
+#include "prims/jvm.h"
+#include "utilities/decoder_elf.hpp"
+
+#include <cxxabi.h>
+
+bool ElfDecoder::demangle(const char* symbol, char *buf, int buflen) {
+ int status;
+ char* result;
+ size_t size = (size_t)buflen;
+
+ // Don't pass buf to __cxa_demangle. In case of the 'buf' is too small,
+ // __cxa_demangle will call system "realloc" for additional memory, which
+ // may use different malloc/realloc mechanism that allocates 'buf'.
+ if ((result = abi::__cxa_demangle(symbol, NULL, NULL, &status)) != NULL) {
+ jio_snprintf(buf, buflen, "%s", result);
+ // call c library's free
+ ::free(result);
+ return true;
+ }
+ return false;
+}
+#endif
--- ./hotspot/src/os/bsd/vm/jsig.c 2015-12-12 10:53:30.954913000 -0800
+++ ./hotspot/src/os/bsd/vm/jsig.c 2015-10-24 06:21:09.000000000 -0700
@@ -165,9 +165,8 @@
}
sa_handler_t sigset(int sig, sa_handler_t disp) {
- printf("sigset() is not supported by BSD");
- exit(0);
- }
+ return set_signal(sig, disp, true);
+}
static int call_os_sigaction(int sig, const struct sigaction *act,
struct sigaction *oact) {
--- ./hotspot/src/os/bsd/vm/jvm_bsd.cpp 2014-03-03 18:52:13.000000000 -0800
+++ ./hotspot/src/os/bsd/vm/jvm_bsd.cpp 2015-10-24 06:21:09.000000000 -0700
@@ -50,6 +50,7 @@
case INTERRUPT_SIGNAL:
case SIGFPE:
case SIGILL:
+ case SIGBUS:
case SIGSEGV:
/* The following signal is used by the VM to dump thread stacks unless
@@ -110,71 +111,29 @@
JVM_END
/*
- All the defined signal names for Bsd.
+ All the defined signal names for BSD are defined by sys_signame[].
NOTE that not all of these names are accepted by our Java implementation
Via an existing claim by the VM, sigaction restrictions, or
the "rules of Unix" some of these names will be rejected at runtime.
For example the VM sets up to handle USR1, sigaction returns EINVAL for
- STOP, and Bsd simply doesn't allow catching of KILL.
+ STOP, and BSD simply doesn't allow catching of KILL.
Here are the names currently accepted by a user of sun.misc.Signal with
1.4.1 (ignoring potential interaction with use of chaining, etc):
- HUP, INT, TRAP, ABRT, IOT, BUS, USR2, PIPE, ALRM, TERM, STKFLT,
- CLD, CHLD, CONT, TSTP, TTIN, TTOU, URG, XCPU, XFSZ, VTALRM, PROF,
- WINCH, POLL, IO, PWR, SYS
-
+ HUP, INT, TRAP, ABRT, EMT, SYS, PIPE, ALRM, TERM, URG, TSTP, CONT,
+ CHLD, TTIN, TTOU, IO, XCPU, XFSZ, VTALRM, PROF, WINCH, INFO, USR2
*/
-struct siglabel {
- const char *name;
- int number;
-};
-
-struct siglabel siglabels[] = {
- /* derived from /usr/include/bits/signum.h on RH7.2 */
- "HUP", SIGHUP, /* Hangup (POSIX). */
- "INT", SIGINT, /* Interrupt (ANSI). */
- "QUIT", SIGQUIT, /* Quit (POSIX). */
- "ILL", SIGILL, /* Illegal instruction (ANSI). */
- "TRAP", SIGTRAP, /* Trace trap (POSIX). */
- "ABRT", SIGABRT, /* Abort (ANSI). */
- "EMT", SIGEMT, /* EMT trap */
- "FPE", SIGFPE, /* Floating-point exception (ANSI). */
- "KILL", SIGKILL, /* Kill, unblockable (POSIX). */
- "BUS", SIGBUS, /* BUS error (4.2 BSD). */
- "SEGV", SIGSEGV, /* Segmentation violation (ANSI). */
- "SYS", SIGSYS, /* Bad system call. Only on some Bsden! */
- "PIPE", SIGPIPE, /* Broken pipe (POSIX). */
- "ALRM", SIGALRM, /* Alarm clock (POSIX). */
- "TERM", SIGTERM, /* Termination (ANSI). */
- "URG", SIGURG, /* Urgent condition on socket (4.2 BSD). */
- "STOP", SIGSTOP, /* Stop, unblockable (POSIX). */
- "TSTP", SIGTSTP, /* Keyboard stop (POSIX). */
- "CONT", SIGCONT, /* Continue (POSIX). */
- "CHLD", SIGCHLD, /* Child status has changed (POSIX). */
- "TTIN", SIGTTIN, /* Background read from tty (POSIX). */
- "TTOU", SIGTTOU, /* Background write to tty (POSIX). */
- "IO", SIGIO, /* I/O now possible (4.2 BSD). */
- "XCPU", SIGXCPU, /* CPU limit exceeded (4.2 BSD). */
- "XFSZ", SIGXFSZ, /* File size limit exceeded (4.2 BSD). */
- "VTALRM", SIGVTALRM, /* Virtual alarm clock (4.2 BSD). */
- "PROF", SIGPROF, /* Profiling alarm clock (4.2 BSD). */
- "WINCH", SIGWINCH, /* Window size change (4.3 BSD, Sun). */
- "INFO", SIGINFO, /* Information request. */
- "USR1", SIGUSR1, /* User-defined signal 1 (POSIX). */
- "USR2", SIGUSR2 /* User-defined signal 2 (POSIX). */
- };
-
JVM_ENTRY_NO_ENV(jint, JVM_FindSignal(const char *name))
/* find and return the named signal's number */
- for(uint i=0; i<ARRAY_SIZE(siglabels); i++)
- if(!strcmp(name, siglabels[i].name))
- return siglabels[i].number;
+ for (int i = 1; i < NSIG; i++)
+ if (strcasecmp(name, sys_signame[i]) == 0)
+ return i;
return -1;
@@ -182,11 +141,14 @@
// used by os::exception_name()
extern bool signal_name(int signo, char* buf, size_t len) {
- for(uint i = 0; i < ARRAY_SIZE(siglabels); i++) {
- if (signo == siglabels[i].number) {
- jio_snprintf(buf, len, "SIG%s", siglabels[i].name);
- return true;
- }
- }
+ if (signo <= 0 || signo >= NSIG)
return false;
+ char signame[8];
+ const char *s = sys_signame[signo];
+ uint i;
+ for (i = 0; i < sizeof(signame) - 1 && s[i] != '\0'; i++)
+ signame[i] = toupper(s[i]);
+ signame[i] = '\0';
+ jio_snprintf(buf, len, "SIG%s", signame);
+ return true;
}
--- ./hotspot/src/os/bsd/vm/jvm_bsd.h 2014-03-03 18:52:13.000000000 -0800
+++ ./hotspot/src/os/bsd/vm/jvm_bsd.h 2015-10-24 06:21:09.000000000 -0700
@@ -112,20 +112,6 @@
#define SHUTDOWN2_SIGNAL SIGINT
#define SHUTDOWN3_SIGNAL SIGTERM
-#ifndef SIGRTMIN
-#ifdef __OpenBSD__
-#define SIGRTMIN 1
-#else
-#define SIGRTMIN 33
-#endif
-#endif
-#ifndef SIGRTMAX
-#ifdef __OpenBSD__
-#define SIGRTMAX 31
-#else
-#define SIGRTMAX 63
-#endif
-#endif
#endif /* JVM_MD_H */
#endif // OS_BSD_VM_JVM_BSD_H
--- ./hotspot/src/os/bsd/vm/osThread_bsd.cpp 2014-03-03 18:52:13.000000000 -0800
+++ ./hotspot/src/os/bsd/vm/osThread_bsd.cpp 2015-10-24 06:21:09.000000000 -0700
@@ -30,7 +30,7 @@
void OSThread::pd_initialize() {
assert(this != NULL, "check");
-#ifdef __APPLE__
+#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
_thread_id = 0;
#else
_thread_id = NULL;
--- ./hotspot/src/os/bsd/vm/os_bsd.cpp 2015-12-12 10:53:29.335390000 -0800
+++ ./hotspot/src/os/bsd/vm/os_bsd.cpp 2015-10-24 06:21:09.000000000 -0700
@@ -97,16 +97,31 @@
# include <sys/shm.h>
#ifndef __APPLE__
# include <link.h>
+# include <stdlib.h>
#endif
# include <stdint.h>
# include <inttypes.h>
# include <sys/ioctl.h>
# include <sys/syscall.h>
+#ifdef __FreeBSD__
+# if __FreeBSD_version > 900030
+# include <pthread_np.h>
+# else
+# include <sys/thr.h>
+# endif
+# include <sys/cpuset.h>
+# include <vm/vm_param.h>
+#endif
+
#if defined(__FreeBSD__) || defined(__NetBSD__)
# include <elf.h>
#endif
+#ifdef __NetBSD__
+#include <lwp.h>
+#endif
+
#ifdef __APPLE__
# include <mach/mach.h> // semaphore_* API
# include <mach-o/dyld.h>
@@ -169,6 +184,27 @@
// available here means free
julong os::Bsd::available_memory() {
+#ifdef __FreeBSD__
+ static const char *vm_stats[] = {
+ "vm.stats.vm.v_free_count",
+ "vm.stats.vm.v_cache_count",
+ "vm.stats.vm.v_inactive_count"
+ };
+ size_t size;
+ julong free_pages;
+ u_int i, npages;
+
+ for (i = 0, free_pages = 0; i < sizeof(vm_stats) / sizeof(vm_stats[0]); i++) {
+ size = sizeof(npages);
+ if (sysctlbyname(vm_stats[i], &npages, &size, NULL, 0) == -1) {
+ free_pages = 0;
+ break;
+ }
+ free_pages += npages;
+ }
+ if (free_pages > 0)
+ return free_pages * os::vm_page_size();
+#endif
uint64_t available = physical_memory() >> 2;
#ifdef __APPLE__
mach_msg_type_number_t count = HOST_VM_INFO64_COUNT;
@@ -208,7 +244,7 @@
static bool init = false;
static bool privileges = false;
if (!init) {
- privileges = (getuid() != geteuid()) || (getgid() != getegid());
+ privileges = issetugid();
init = true;
}
return privileges;
@@ -411,12 +447,21 @@
const char *v = ::getenv("LD_LIBRARY_PATH");
const char *v_colon = ":";
if (v == NULL) { v = ""; v_colon = ""; }
+#ifdef __APPLE__
// That's +1 for the colon and +1 for the trailing '\0'.
char *ld_library_path = (char *)NEW_C_HEAP_ARRAY(char,
strlen(v) + 1 +
sizeof(SYS_EXT_DIR) + sizeof("/lib/") + strlen(cpu_arch) + sizeof(DEFAULT_LIBPATH) + 1,
mtInternal);
sprintf(ld_library_path, "%s%s" SYS_EXT_DIR "/lib/%s:" DEFAULT_LIBPATH, v, v_colon, cpu_arch);
+#else
+ // That's +1 for the colon and +1 for the trailing '\0'.
+ char *ld_library_path = (char *)NEW_C_HEAP_ARRAY(char,
+ strlen(v) + 1 +
+ sizeof(PACKAGE_PATH) + sizeof("/lib") + 1,
+ mtInternal);
+ sprintf(ld_library_path, "%s%s" PACKAGE_PATH "/lib", v, v_colon);
+#endif
Arguments::set_library_path(ld_library_path);
FREE_C_HEAP_ARRAY(char, ld_library_path, mtInternal);
}
@@ -1190,35 +1235,38 @@
pid_t os::Bsd::gettid() {
int retval = -1;
-#ifdef __APPLE__ //XNU kernel
+#if defined(__APPLE__) //XNU kernel
// despite the fact mach port is actually not a thread id use it
// instead of syscall(SYS_thread_selfid) as it certainly fits to u4
retval = ::pthread_mach_thread_np(::pthread_self());
guarantee(retval != 0, "just checking");
return retval;
+#elif defined(__FreeBSD__)
+#if __FreeBSD_version > 900030
+ return ::pthread_getthreadid_np();
#else
- #ifdef __FreeBSD__
- retval = syscall(SYS_thr_self);
- #else
- #ifdef __OpenBSD__
+ long tid;
+ thr_self(&tid);
+ return (pid_t)tid;
+#endif
+#elif defined(__OpenBSD__)
retval = syscall(SYS_getthrid);
- #else
- #ifdef __NetBSD__
- retval = (pid_t) syscall(SYS__lwp_self);
- #endif
- #endif
- #endif
+#elif defined(__NetBSD__)
+ retval = (pid_t) _lwp_self();
#endif
if (retval == -1) {
return getpid();
}
+ return retval;
}
intx os::current_thread_id() {
-#ifdef __APPLE__
+#if defined(__APPLE__)
return (intx)::pthread_mach_thread_np(::pthread_self());
+#elif defined(__FreeBSD__)
+ return os::Bsd::gettid();
#else
return (intx)::pthread_self();
#endif
@@ -1696,14 +1744,14 @@
}
void os::print_os_info_brief(outputStream* st) {
- st->print("Bsd");
+ st->print_cr("BSD");
os::Posix::print_uname_info(st);
}
void os::print_os_info(outputStream* st) {
st->print("OS:");
- st->print("Bsd");
+ st->print_cr("BSD");
os::Posix::print_uname_info(st);
@@ -1716,6 +1764,29 @@
// Nothing to do for now.
}
+#ifdef __FreeBSD__
+static void get_swap_info(int *total_pages, int *used_pages) {
+ struct xswdev xsw;
+ size_t mibsize, size;
+ int mib[16];
+ int n, total = 0, used = 0;
+
+ mibsize = sizeof(mib) / sizeof(mib[0]);
+ if (sysctlnametomib("vm.swap_info", mib, &mibsize) != -1) {
+ for (n = 0; ; n++) {
+ mib[mibsize] = n;
+ size = sizeof(xsw);
+ if (sysctl(mib, mibsize + 1, &xsw, &size, NULL, 0) == -1)
+ break;
+ total += xsw.xsw_nblks;
+ used += xsw.xsw_used;
+ }
+ }
+ *total_pages = total;
+ *used_pages = used;
+}
+#endif
+
void os::print_memory_info(outputStream* st) {
st->print("Memory:");
@@ -1725,11 +1796,14 @@
os::physical_memory() >> 10);
st->print("(" UINT64_FORMAT "k free)",
os::available_memory() >> 10);
- st->cr();
-
- // meminfo
- st->print("\n/proc/meminfo:\n");
- _print_ascii_file("/proc/meminfo", st);
+#ifdef __FreeBSD__
+ int total, used;
+ get_swap_info(&total, &used);
+ st->print(", swap " UINT64_FORMAT "k",
+ (total * os::vm_page_size()) >> 10);
+ st->print("(" UINT64_FORMAT "k free)",
+ ((total - used) * os::vm_page_size()) >> 10);
+#endif
st->cr();
}
@@ -1965,7 +2039,7 @@
os_semaphore_t _semaphore;
};
-Semaphore::Semaphore() : _semaphore(0) {
+Semaphore::Semaphore() {
SEM_INIT(_semaphore, 0);
}
@@ -2153,7 +2227,7 @@
if (::write(fd, "", 1) == 1) {
mmap(base, size,
PROT_READ|PROT_WRITE|PROT_EXEC,
- MAP_PRIVATE|MAP_FIXED|MAP_NORESERVE, fd, 0);
+ MAP_PRIVATE|MAP_FIXED, fd, 0);
}
}
::close(fd);
@@ -2263,7 +2337,7 @@
return ::mprotect(addr, size, PROT_NONE) == 0;
#else
uintptr_t res = (uintptr_t) ::mmap(addr, size, PROT_NONE,
- MAP_PRIVATE|MAP_FIXED|MAP_NORESERVE|MAP_ANONYMOUS, -1, 0);
+ MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0);
return res != (uintptr_t) MAP_FAILED;
#endif
}
@@ -2290,7 +2364,7 @@
char * addr;
int flags;
- flags = MAP_PRIVATE | MAP_NORESERVE | MAP_ANONYMOUS;
+ flags = MAP_PRIVATE | MAP_ANONYMOUS;
if (fixed) {
assert((uintptr_t)requested_addr % os::Bsd::page_size() == 0, "unaligned address");
flags |= MAP_FIXED;
@@ -2779,6 +2853,7 @@
return OS_OK;
#elif defined(__FreeBSD__)
int ret = pthread_setprio(thread->osthread()->pthread_id(), newpri);
+ return (ret == 0) ? OS_OK : OS_ERR;
#elif defined(__APPLE__) || defined(__NetBSD__)
struct sched_param sp;
int policy;
@@ -3373,18 +3448,6 @@
}
}
-
-/////
-// glibc on Bsd platform uses non-documented flag
-// to indicate, that some special sort of signal
-// trampoline is used.
-// We will never set this flag, and we should
-// ignore this flag in our diagnostic
-#ifdef SIGNIFICANT_SIGNAL_MASK
-#undef SIGNIFICANT_SIGNAL_MASK
-#endif
-#define SIGNIFICANT_SIGNAL_MASK (~0x04000000)
-
static const char* get_signal_handler_name(address handler,
char* buf, int buflen) {
int offset;
@@ -3408,9 +3471,6 @@
sigaction(sig, NULL, &sa);
- // See comment for SIGNIFICANT_SIGNAL_MASK define
- sa.sa_flags &= SIGNIFICANT_SIGNAL_MASK;
-
st->print("%s: ", os::exception_name(sig, buf, buflen));
address handler = (sa.sa_flags & SA_SIGINFO)
@@ -3432,7 +3492,7 @@
// May be, handler was resetted by VMError?
if(rh != NULL) {
handler = rh;
- sa.sa_flags = VMError::get_resetted_sigflags(sig) & SIGNIFICANT_SIGNAL_MASK;
+ sa.sa_flags = VMError::get_resetted_sigflags(sig);
}
st->print(", sa_flags=");
@@ -3508,8 +3568,6 @@
os_sigaction(sig, (struct sigaction*)NULL, &act);
- act.sa_flags &= SIGNIFICANT_SIGNAL_MASK;
-
address thisHandler = (act.sa_flags & SA_SIGINFO)
? CAST_FROM_FN_PTR(address, act.sa_sigaction)
: CAST_FROM_FN_PTR(address, act.sa_handler) ;
@@ -3574,6 +3632,14 @@
extern bool signal_name(int signo, char* buf, size_t len);
+#ifndef SIGRTMAX
+#ifdef __OpenBSD__
+#define SIGRTMAX 31
+#else
+#define SIGRTMAX 63
+#endif
+#endif
+
const char* os::exception_name(int exception_code, char* buf, size_t size) {
if (0 < exception_code && exception_code <= SIGRTMAX) {
// signal
@@ -3770,6 +3836,19 @@
};
int os::active_processor_count() {
+#ifdef __FreeBSD__
+ int online_cpus = 0;
+ cpuset_t mask;
+ if (cpuset_getaffinity(CPU_LEVEL_WHICH, CPU_WHICH_PID, -1, sizeof(mask),
+ &mask) == 0)
+ for (u_int i = 0; i < sizeof(mask) / sizeof(long); i++)
+ online_cpus += __builtin_popcountl(((long *)&mask)[i]);
+ if (online_cpus > 0 && online_cpus <= _processor_count)
+ return online_cpus;
+ online_cpus = sysconf(_SC_NPROCESSORS_ONLN);
+ if (online_cpus >= 1)
+ return online_cpus;
+#endif
return _processor_count;
}
@@ -3981,7 +4060,10 @@
}
int fd;
int o_delete = (oflag & O_DELETE);
- oflag = oflag & ~O_DELETE;
+ oflag &= ~O_DELETE;
+#ifdef O_CLOEXEC
+ oflag |= O_CLOEXEC;
+#endif
fd = ::open(path, oflag, mode);
if (fd == -1) return -1;
@@ -4026,7 +4108,7 @@
* 4843136: (process) pipe file descriptor from Runtime.exec not being closed
* 6339493: (process) Runtime.exec does not close all file descriptors on Solaris 9
*/
-#ifdef FD_CLOEXEC
+#if !defined(O_CLOEXEC) && defined(FD_CLOEXEC)
{
int flags = ::fcntl(fd, F_GETFD);
if (flags != -1)
@@ -4822,13 +4904,29 @@
// Get the default path to the core file
// Returns the length of the string
-int os::get_core_path(char* buffer, size_t bufferSize) {
- int n = jio_snprintf(buffer, bufferSize, "/cores");
+int os::get_core_path(char *buffer, size_t bufferSize) {
+#ifdef __APPLE__
+ jio_snprintf(buffer, bufferSize, "/cores/core.%d", current_process_id());
+#else
+ const char *p = get_current_directory(buffer, bufferSize);
+
+ if (p == NULL) {
+ assert(p != NULL, "failed to get current directory");
+ return 0;
+ }
- // Truncate if theoretical string was longer than bufferSize
- n = MIN2(n, (int)bufferSize);
+ const char *q = getprogname();
- return n;
+ if (q == NULL) {
+ assert(q != NULL, "failed to get progname");
+ return 0;
+ }
+
+ const int n = strlen(buffer);
+
+ jio_snprintf(buffer + n, bufferSize - n, "/%s.core", q);
+#endif
+ return strlen(buffer);
}
#ifndef PRODUCT
--- ./hotspot/src/os/bsd/vm/vmError_bsd.cpp 2014-03-03 18:52:13.000000000 -0800
+++ ./hotspot/src/os/bsd/vm/vmError_bsd.cpp 2015-10-24 06:21:09.000000000 -0700
@@ -33,30 +33,50 @@
#include <sys/syscall.h>
#include <unistd.h>
#include <signal.h>
+#ifdef __FreeBSD__
+#include <limits.h>
+#include <sys/sysctl.h>
+#endif
+
+#define GDB_CMD "gdb"
+
+static void set_debugger(char *buf, int buflen) {
+ int pid = os::current_process_id();
+#ifdef __FreeBSD__
+ char cmd[PATH_MAX+1];
+ int name[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, pid };
+ size_t len = sizeof(cmd);
+ if (sysctl(name, 4, cmd, &len, NULL, 0) == 0 && len > 0) {
+ cmd[len] = '\0';
+ jio_snprintf(buf, buflen, "%s %s %d", GDB_CMD, cmd, pid);
+ } else
+#endif
+ jio_snprintf(buf, buflen, "%s /proc/%d/file %d", GDB_CMD, pid, pid);
+}
void VMError::show_message_box(char *buf, int buflen) {
bool yes;
do {
- error_string(buf, buflen);
- int len = (int)strlen(buf);
+ intx tid = os::current_thread_id();
+ set_debugger(buf, buflen);
+ int len = (int)strlen(buf) + 1;
+ char *msg = &buf[len];
+ error_string(msg, buflen - len);
+ len += (int)strlen(msg);
char *p = &buf[len];
jio_snprintf(p, buflen - len,
"\n\n"
"Do you want to debug the problem?\n\n"
- "To debug, run 'gdb /proc/%d/exe %d'; then switch to thread " INTX_FORMAT " (" INTPTR_FORMAT ")\n"
- "Enter 'yes' to launch gdb automatically (PATH must include gdb)\n"
+ "To debug, run '%s'; then switch to thread " INTX_FORMAT " (" INTPTR_FORMAT ")\n"
+ "Enter 'yes' to launch " GDB_CMD " automatically (PATH must include " GDB_CMD ")\n"
"Otherwise, press RETURN to abort...",
- os::current_process_id(), os::current_process_id(),
- os::current_thread_id(), os::current_thread_id());
+ buf, tid, tid);
- yes = os::message_box("Unexpected Error", buf);
+ yes = os::message_box("Unexpected Error", msg);
if (yes) {
// yes, user asked VM to launch debugger
- jio_snprintf(buf, buflen, "gdb /proc/%d/exe %d",
- os::current_process_id(), os::current_process_id());
-
os::fork_and_exec(buf);
yes = false;
}
--- ./hotspot/src/os/linux/vm/os_linux.cpp 2015-12-12 10:53:29.337171000 -0800
+++ ./hotspot/src/os/linux/vm/os_linux.cpp 2015-10-24 06:21:09.000000000 -0700
@@ -6046,6 +6046,10 @@
return 0;
}
+ const int n = strlen(buffer);
+
+ jio_snprintf(buffer + n, bufferSize - n, "/core or core.%d", current_process_id());
+
return strlen(buffer);
}
--- ./hotspot/src/os/posix/vm/os_posix.cpp 2015-12-12 10:53:26.672577000 -0800
+++ ./hotspot/src/os/posix/vm/os_posix.cpp 2015-10-24 06:21:09.000000000 -0700
@@ -53,12 +53,11 @@
n = get_core_path(buffer, bufferSize);
if (getrlimit(RLIMIT_CORE, &rlim) != 0) {
- jio_snprintf(buffer + n, bufferSize - n, "/core or core.%d (may not exist)", current_process_id());
+ jio_snprintf(buffer + n, bufferSize - n, " (may not exist)");
success = true;
} else {
switch(rlim.rlim_cur) {
case RLIM_INFINITY:
- jio_snprintf(buffer + n, bufferSize - n, "/core or core.%d", current_process_id());
success = true;
break;
case 0:
@@ -66,7 +65,7 @@
success = false;
break;
default:
- jio_snprintf(buffer + n, bufferSize - n, "/core or core.%d (max size %lu kB). To ensure a full core dump, try \"ulimit -c unlimited\" before starting Java again", current_process_id(), (unsigned long)(rlim.rlim_cur >> 10));
+ jio_snprintf(buffer + n, bufferSize - n, " (max size %lu kB). To ensure a full core dump, try \"ulimit -c unlimited\" before starting Java again", (unsigned long)(rlim.rlim_cur >> 10));
success = true;
break;
}
@@ -201,8 +200,13 @@
if (rlim.rlim_cur == RLIM_INFINITY) st->print("infinity");
else st->print("%d", rlim.rlim_cur);
+#ifdef __OpenBSD__
+ st->print(", DATA ");
+ getrlimit(RLIMIT_DATA, &rlim);
+#else
st->print(", AS ");
getrlimit(RLIMIT_AS, &rlim);
+#endif
if (rlim.rlim_cur == RLIM_INFINITY) st->print("infinity");
else st->print("%uk", rlim.rlim_cur >> 10);
st->cr();
@@ -222,7 +226,11 @@
bool os::has_allocatable_memory_limit(julong* limit) {
struct rlimit rlim;
+#ifdef __OpenBSD__
+ int getrlimit_res = getrlimit(RLIMIT_DATA, &rlim);
+#else
int getrlimit_res = getrlimit(RLIMIT_AS, &rlim);
+#endif
// if there was an error when calling getrlimit, assume that there is no limitation
// on virtual memory.
bool result;
@@ -706,8 +714,12 @@
{ SI_USER, "SI_USER", "Signal sent by kill()." },
{ SI_QUEUE, "SI_QUEUE", "Signal sent by the sigqueue()." },
{ SI_TIMER, "SI_TIMER", "Signal generated by expiration of a timer set by timer_settime()." },
+#ifdef SI_ASYNCIO
{ SI_ASYNCIO, "SI_ASYNCIO", "Signal generated by completion of an asynchronous I/O request." },
+#endif
+#ifdef SI_MESGQ
{ SI_MESGQ, "SI_MESGQ", "Signal generated by arrival of a message on an empty message queue." },
+#endif
// Linux specific
#ifdef SI_TKILL
{ SI_TKILL, "SI_TKILL", "Signal sent by tkill (pthread_kill)" },
--- ./hotspot/src/os/solaris/vm/os_solaris.cpp 2015-12-12 10:53:29.339165000 -0800
+++ ./hotspot/src/os/solaris/vm/os_solaris.cpp 2015-10-24 06:21:09.000000000 -0700
@@ -6500,6 +6500,10 @@
return 0;
}
+ const int n = strlen(buffer);
+
+ jio_snprintf(buffer + n, bufferSize - n, "/core or core.%d", current_process_id());
+
return strlen(buffer);
}
--- ./hotspot/src/share/vm/opto/node.cpp 2015-12-12 10:53:26.875374000 -0800
+++ ./hotspot/src/share/vm/opto/node.cpp 2015-10-24 06:21:09.000000000 -0700
@@ -286,6 +286,10 @@
#ifdef _MSC_VER // the IDX_INIT hack falls foul of warning C4355
#pragma warning( disable:4355 ) // 'this' : used in base member initializer list
#endif
+#ifdef __clang__
+#pragma clang diagnostic push
+#pragma GCC diagnostic ignored "-Wuninitialized"
+#endif
// Out-of-line code from node constructors.
// Executed only when extra debug info. is being passed around.
@@ -469,6 +473,10 @@
_in[6] = n6; if (n6 != NULL) n6->add_out((Node *)this);
}
+#ifdef __clang__
+#pragma clang diagnostic pop
+#endif
+
//------------------------------clone------------------------------------------
// Clone a Node.
--- ./hotspot/src/share/vm/runtime/os.cpp 2015-12-12 10:53:29.475009000 -0800
+++ ./hotspot/src/share/vm/runtime/os.cpp 2015-10-24 06:21:09.000000000 -0700
@@ -420,15 +420,6 @@
if (_native_java_library == NULL) {
vm_exit_during_initialization("Unable to load native library", ebuf);
}
-
-#if defined(__OpenBSD__)
- // Work-around OpenBSD's lack of $ORIGIN support by pre-loading libnet.so
- // ignore errors
- if (dll_build_name(buffer, sizeof(buffer), Arguments::get_dll_dir(),
- "net")) {
- dll_load(buffer, ebuf, sizeof(ebuf));
- }
-#endif
}
static jboolean onLoaded = JNI_FALSE;
if (onLoaded) {
--- ./hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp 2015-12-12 10:53:29.488346000 -0800
+++ ./hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp 2015-10-24 06:21:09.000000000 -0700
@@ -242,7 +242,7 @@
#endif
// GCC 4.3 does not allow 0.0/0.0 to produce a NAN value
-#if (__GNUC__ == 4) && (__GNUC_MINOR__ > 2)
+#if defined(__clang__) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 2))
#define CAN_USE_NAN_DEFINE 1
#endif
--- ./jaxp/.hgtags 2015-12-12 10:53:30.973405000 -0800
+++ ./jaxp/.hgtags 2015-10-24 06:20:58.000000000 -0700
@@ -491,4 +491,3 @@
94b6e3ddc19334578abefbc44a7ec6f9e20a6e24 jdk8u66-b14
25cf8ddfc8bf163211d1dfd79f31765cac58eef5 jdk8u66-b15
40ce5a6d733d44d93cbd5c0105a820ad7a7f4754 jdk8u66-b16
-048cebd17f73f23ce2295e360f31c1b6788195aa jdk8u40-b24
--- ./jaxws/.hgtags 2015-12-12 10:53:31.062074000 -0800
+++ ./jaxws/.hgtags 2015-10-24 06:21:00.000000000 -0700
@@ -485,4 +485,3 @@
972d89655bab60525ddbc9365354fc809d0b74ea jdk8u66-b14
19e64af41036d4ba0109ac2838133de5e7d159cc jdk8u66-b15
529e4f09082daa07610ddde7dd2bca35b979eb14 jdk8u66-b16
-5fbbfd66643edb81cfa0688825d698dcc5f2eb11 jdk8u40-b24
--- ./jdk/.hgtags 2015-12-12 10:53:31.062671000 -0800
+++ ./jdk/.hgtags 2015-10-24 06:21:16.000000000 -0700
@@ -488,4 +488,3 @@
371fc17e38ccf9a729e34c518f6942162ba6c225 jdk8u66-b14
ea602badedd0cd0c352c072220a884e8f1335e33 jdk8u66-b15
5ceafca6a734e13d51319df6afd40678d68f9851 jdk8u66-b16
-9d903721276c8684706db7ecfb6cda568e9f4f69 jdk8u40-b24
--- ./jdk/make/CompileDemos.gmk 2015-12-12 10:53:27.302357000 -0800
+++ ./jdk/make/CompileDemos.gmk 2015-10-24 06:21:20.000000000 -0700
@@ -323,7 +323,7 @@
$(eval $(call SetupJVMTIDemo,hprof, java_crw_demo, \
-I$(JDK_TOPDIR)/src/share/npt -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/npt \
$(BUILD_LIBHPROF_AIX_EXTRA_CFLAGS), C, \
- -ldl, ws2_32.lib winmm.lib, -lsocket -lnsl, -lpthread, $(BUILD_LIBHPROF_AIX_EXTRA_SRC)))
+ $(LIBDL), ws2_32.lib winmm.lib, -lsocket -lnsl, -lpthread, $(BUILD_LIBHPROF_AIX_EXTRA_SRC)))
$(eval $(call SetupJVMTIDemo,minst, agent_util java_crw_demo))
$(eval $(call SetupJVMTIDemo,mtrace, agent_util java_crw_demo))
--- ./jdk/make/CompileJavaClasses.gmk 2015-12-12 10:53:31.063015000 -0800
+++ ./jdk/make/CompileJavaClasses.gmk 2015-10-24 06:21:21.000000000 -0700
@@ -128,23 +128,32 @@
sun/nio/fs/LinuxFileStore.java \
sun/nio/fs/LinuxFileSystem.java \
sun/nio/fs/LinuxFileSystemProvider.java \
- sun/nio/fs/MagicFileTypeDetector.java \
sun/nio/fs/LinuxNativeDispatcher.java \
sun/nio/fs/LinuxUserDefinedFileAttributeView.java \
sun/nio/fs/LinuxWatchService.java
endif
+ifeq (, $(filter $(OPENJDK_TARGET_OS), linux bsd))
+ EXFILES += sun/nio/fs/MagicFileTypeDetector.java
+endif
+
ifneq ($(OPENJDK_TARGET_OS), macosx)
+ EXFILES += sun/nio/fs/MacOSXFileSystemProvider.java \
+ sun/nio/fs/MacOSXFileSystem.java \
+ sun/nio/fs/MacOSXNativeDispatcher.java
+endif
+
+ifeq (, $(filter $(OPENJDK_TARGET_OS), bsd macosx))
EXFILES += sun/nio/ch/BsdAsynchronousChannelProvider.java \
sun/nio/ch/KQueue.java \
+ sun/nio/ch/KQueueArrayWrapper.java \
sun/nio/ch/KQueuePort.java \
+ sun/nio/ch/KQueueSelectorImpl.java \
+ sun/nio/ch/KQueueSelectorProvider.java \
sun/nio/fs/BsdFileStore.java \
sun/nio/fs/BsdFileSystem.java \
sun/nio/fs/BsdFileSystemProvider.java \
sun/nio/fs/BsdNativeDispatcher.java \
- sun/nio/fs/MacOSXFileSystemProvider.java \
- sun/nio/fs/MacOSXFileSystem.java \
- sun/nio/fs/MacOSXNativeDispatcher.java \
sun/tools/attach/BsdAttachProvider.java \
sun/tools/attach/BsdVirtualMachine.java
endif
@@ -231,9 +240,9 @@
# Exclude another implicitly not included file.
EXFILES += sun/util/locale/AsciiUtil.java
-ifeq (, $(filter $(OPENJDK_TARGET_OS), solaris macosx aix))
+ifeq (, $(filter $(OPENJDK_TARGET_OS), solaris bsd macosx aix))
#
- # only solaris, macosx and aix
+ # only solaris, BSD, macosx and aix
#
EXFILES += sun/nio/fs/PollingWatchService.java
endif
@@ -268,21 +277,26 @@
$(wildcard $(JDK_TOPDIR)/src/closed/$(OPENJDK_TARGET_OS_API_DIR)/classes)
endif
-MACOSX_SRC_DIRS :=
+BSD_SRC_DIRS :=
+ifneq (, $(filter $(OPENJDK_TARGET_OS), bsd macosx))
+ BSD_SRC_DIRS += $(JDK_TOPDIR)/src/bsd/classes
+
+ # these files are duplicated in BSD_SRC_DIRS
+ EXFILES += $(JDK_TOPDIR)/src/solaris/classes/java/net/DefaultInterface.java \
+ $(JDK_TOPDIR)/src/solaris/classes/sun/nio/ch/DefaultSelectorProvider.java
+endif
+
ifeq ($(OPENJDK_TARGET_OS), macosx)
- MACOSX_SRC_DIRS += $(JDK_TOPDIR)/src/macosx/classes
+ BSD_SRC_DIRS += $(JDK_TOPDIR)/src/macosx/classes
- # this files are duplicated in MACOSX_SRC_DIRS
- EXFILES += $(JDK_TOPDIR)/src/solaris/classes/sun/nio/ch/DefaultSelectorProvider.java \
- $(JDK_TOPDIR)/src/solaris/classes/sun/java2d/BackBufferCapsProvider.java \
- $(JDK_TOPDIR)/src/solaris/classes/java/net/DefaultInterface.java \
+ # these files are duplicated in BSD_SRC_DIRS
+ EXFILES += $(JDK_TOPDIR)/src/solaris/classes/sun/java2d/BackBufferCapsProvider.java \
$(JDK_TOPDIR)/src/solaris/classes/java/lang/ClassLoaderHelper.java \
$(JDK_TOPDIR)/src/solaris/classes/sun/util/locale/provider/HostLocaleProviderAdapterImpl.java \
$(JDK_TOPDIR)/src/solaris/classes/sun/nio/fs/GnomeFileTypeDetector.java \
$(JDK_TOPDIR)/src/solaris/classes/sun/nio/ch/sctp/SctpChannelImpl.java \
$(JDK_TOPDIR)/src/solaris/classes/sun/nio/ch/sctp/SctpMultiChannelImpl.java \
$(JDK_TOPDIR)/src/solaris/classes/sun/nio/ch/sctp/SctpServerChannelImpl.java
-
endif
# The security classes should not end up in the classes directory as that will prevent them
@@ -332,6 +346,7 @@
SRC:=$(JDK_TOPDIR)/src/share/classes \
$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/classes \
$(MACOSX_SRC_DIRS) \
+ $(BSD_SRC_DIRS) \
$(AIX_SRC_DIRS) \
$(JDK_OUTPUTDIR)/gensrc \
$(JDK_OUTPUTDIR)/gensrc_no_srczip \
@@ -351,7 +366,7 @@
SETUP := GENERATE_JDKBYTECODE, \
SRC := $(JDK_TOPDIR)/src/share/classes \
$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/classes \
- $(MACOSX_SRC_DIRS) \
+ $(BSD_SRC_DIRS) \
$(CLOSED_SRC_DIRS), \
INCLUDES := $(SECURITY_PKGS), \
EXCLUDES := $(EXCLUDES), \
--- ./jdk/make/CompileLaunchers.gmk 2015-12-12 10:53:29.543422000 -0800
+++ ./jdk/make/CompileLaunchers.gmk 2015-10-24 06:21:20.000000000 -0700
@@ -49,7 +49,7 @@
ORIGIN_ROOT := /..
endif
-ifeq ($(OPENJDK_TARGET_OS), macosx)
+ifneq ($(findstring $(OPENJDK_TARGET_OS), $(BSD_STATIC_LIBJLI) macosx), )
ORIGIN_ARG := $(call SET_EXECUTABLE_ORIGIN)
else
ORIGIN_ARG := $(call SET_EXECUTABLE_ORIGIN,$(ORIGIN_ROOT)/lib$(OPENJDK_TARGET_CPU_LIBDIR)/jli)
@@ -60,7 +60,7 @@
# System.loadLibrary("jawt") first. This was the behaviour described in the
# devloper documentation of JAWT and what worked with OpenJDK6.
#
-ifneq ($(findstring $(OPENJDK_TARGET_OS), linux solaris), )
+ifneq ($(findstring $(OPENJDK_TARGET_OS), linux solaris bsd), )
ORIGIN_ARG += $(call SET_EXECUTABLE_ORIGIN,$(ORIGIN_ROOT)/lib$(OPENJDK_TARGET_CPU_LIBDIR))
endif
@@ -89,6 +89,18 @@
$1_LDFLAGS := $3
$1_LDFLAGS_SUFFIX :=
+ ifeq ($(OPENJDK_TARGET_OS), bsd)
+ ifeq ($(BSD_STATIC_LIBJLI), bsd)
+ $1_LDFLAGS += -Wl,--whole-archive $(JDK_OUTPUTDIR)/objs/libjli_static.a \
+ -Wl,--no-whole-archive
+ $1_LDFLAGS_SUFFIX += -pthread
+ else
+ $1_LDFLAGS += \
+ $(call SET_SHARED_LIBRARY_NAME,$(LIBRARY_PREFIX)$(SHARED_LIBRARY_SUFFIX))
+ $1_LDFLAGS_SUFFIX += -L$(JDK_OUTPUTDIR)/lib$(OPENJDK_TARGET_CPU_LIBDIR)/jli -ljli -pthread
+ endif
+ endif
+
ifeq ($(OPENJDK_TARGET_OS), macosx)
$1_PLIST_FILE := Info-cmdline.plist
ifneq ($(11), )
@@ -162,9 +174,11 @@
-DLIBARCHNAME='"$(OPENJDK_TARGET_CPU_LEGACY)"' \
-DLAUNCHER_NAME='"$(LAUNCHER_NAME)"' \
-DPROGNAME='"$1"' $(DPACKAGEPATH) \
+ -DPACKAGE_PATH='"$(PACKAGE_PATH)"' \
$2, \
CFLAGS_linux := -fPIC, \
CFLAGS_solaris := -KPIC -DHAVE_GETHRTIME, \
+ CFLAGS_bsd := -fPIC, \
LDFLAGS := $(LDFLAGS_JDKEXE) \
$(ORIGIN_ARG) \
$$($1_LDFLAGS), \
@@ -195,7 +209,7 @@
BUILD_LAUNCHERS += $$(BUILD_LAUNCHER_$1)
- ifneq (,$(filter $(OPENJDK_TARGET_OS), macosx aix))
+ ifneq (,$(filter $(OPENJDK_TARGET_OS), $(BSD_STATIC_LIBJLI) macosx aix))
$$(BUILD_LAUNCHER_$1): $(JDK_OUTPUTDIR)/objs/libjli_static.a
endif
@@ -481,6 +495,7 @@
CFLAGS_release := -DPRODUCT, \
CFLAGS_linux := -fPIC, \
CFLAGS_solaris := -KPIC, \
+ CFLAGS_bsd := -fPIC, \
CFLAGS_macosx := -fPIC, \
MAPFILE := $(UNPACK_MAPFILE),\
LDFLAGS := $(UNPACKEXE_ZIPOBJS), \
@@ -543,7 +558,7 @@
endif
endif
-ifeq ($(OPENJDK_TARGET_OS), linux)
+ifneq ($(findstring $(OPENJDK_TARGET_OS), linux bsd), )
BUILD_JEXEC := 1
endif # OPENJDK_TARGET_OS
@@ -579,6 +594,7 @@
$(BUILD_JEXEC_INC), \
CFLAGS_linux := -fPIC, \
CFLAGS_solaris := -KPIC, \
+ CFLAGS_bsd := -fPIC, \
LDFLAGS := $(LDFLAGS_JDKEXE) \
$(call SET_SHARED_LIBRARY_NAME,$(LIBRARY_PREFIX)$(SHARED_LIBRARY_SUFFIX)), \
OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/jexec_obj, \
@@ -595,10 +611,7 @@
# The java-rmi.cgi script in bin/ only gets delivered in certain situations
#
JAVA_RMI_CGI := $(JDK_OUTPUTDIR)/bin$(OUTPUT_SUBDIR)/java-rmi.cgi
-ifeq ($(OPENJDK_TARGET_OS), linux)
- BUILD_LAUNCHERS += $(JAVA_RMI_CGI)
-endif
-ifeq ($(OPENJDK_TARGET_OS), solaris)
+ifneq ($(findstring $(OPENJDK_TARGET_OS), linux solaris bsd), )
BUILD_LAUNCHERS += $(JAVA_RMI_CGI)
endif
@@ -626,7 +639,7 @@
LINK_JSPAWNHELPER_OBJECTS := $(JDK_OUTPUTDIR)/objs/libjava/childproc.o
LINK_JSPAWNHELPER_FLAGS :=
-ifneq ($(findstring $(OPENJDK_TARGET_OS), macosx solaris aix), )
+ifneq ($(findstring $(OPENJDK_TARGET_OS), bsd macosx solaris aix), )
BUILD_JSPAWNHELPER := 1
endif
--- ./jdk/make/CopyFiles.gmk 2015-12-12 10:53:29.543804000 -0800
+++ ./jdk/make/CopyFiles.gmk 2015-10-24 06:21:20.000000000 -0700
@@ -29,6 +29,8 @@
ifeq ($(OPENJDK_TARGET_OS), windows)
OPENJDK_TARGET_OS_INCLUDE = $(INCLUDEDIR)/win32
+else ifeq ($(OPENJDK_TARGET_OS), bsd)
+ OPENJDK_TARGET_OS_INCLUDE = $(INCLUDEDIR)/$(shell uname -s | ${TR} "[:upper:]" "[:lower:]")
else ifeq ($(OPENJDK_TARGET_OS), macosx)
OPENJDK_TARGET_OS_INCLUDE = $(INCLUDEDIR)/darwin
endif
@@ -323,23 +325,23 @@
$(RM) $(@)
# Now check for other permutations
ifeq ($(JVM_VARIANT_SERVER), true)
- $(PRINTF) "-server KNOWN\n">>$(@)
- $(PRINTF) "-client ALIASED_TO -server\n">>$(@)
+ $(PRINTF) -- "-server KNOWN\n">>$(@)
+ $(PRINTF) -- "-client ALIASED_TO -server\n">>$(@)
ifeq ($(JVM_VARIANT_MINIMAL1), true)
- $(PRINTF) "-minimal KNOWN\n">>$(@)
+ $(PRINTF) -- "-minimal KNOWN\n">>$(@)
endif
else
ifeq ($(JVM_VARIANT_CLIENT), true)
- $(PRINTF) "-client KNOWN\n">>$(@)
- $(PRINTF) "-server ALIASED_TO -client\n">>$(@)
+ $(PRINTF) -- "-client KNOWN\n">>$(@)
+ $(PRINTF) -- "-server ALIASED_TO -client\n">>$(@)
ifeq ($(JVM_VARIANT_MINIMAL1), true)
- $(PRINTF) "-minimal KNOWN\n">>$(@)
+ $(PRINTF) -- "-minimal KNOWN\n">>$(@)
endif
else
ifeq ($(JVM_VARIANT_MINIMAL1), true)
- $(PRINTF) "-minimal KNOWN\n">>$(@)
- $(PRINTF) "-server ALIASED_TO -minimal\n">>$(@)
- $(PRINTF) "-client ALIASED_TO -minimal\n">>$(@)
+ $(PRINTF) -- "-minimal KNOWN\n">>$(@)
+ $(PRINTF) -- "-server ALIASED_TO -minimal\n">>$(@)
+ $(PRINTF) -- "-client ALIASED_TO -minimal\n">>$(@)
endif
endif
endif
--- ./jdk/make/Images.gmk 2015-12-12 10:53:29.544643000 -0800
+++ ./jdk/make/Images.gmk 2015-10-24 06:21:20.000000000 -0700
@@ -236,11 +236,11 @@
endif
JDK_LIB_FILES := $(NOT_JRE_LIB_FILES)
-ifeq ($(OPENJDK_TARGET_OS), linux)
+ifneq ($(findstring $(OPENJDK_TARGET_OS), linux bsd),)
JDK_LIB_FILES += jexec
endif
-ifneq ($(findstring $(OPENJDK_TARGET_OS), linux solaris),) # If Linux or Solaris
+ifneq ($(findstring $(OPENJDK_TARGET_OS), linux solaris bsd),) # If Linux, Solaris, or BSD
JDK_LIB_FILES += $(LIBRARY_PREFIX)jli$(SHARED_LIBRARY_SUFFIX) \
$(LIBRARY_PREFIX)jawt$(SHARED_LIBRARY_SUFFIX)
endif
@@ -391,7 +391,7 @@
MAN_SRC_DIR = $(MAN_SRC_BASEDIR)/solaris/doc
MAN1_SUBDIR = sun/man/man1
endif
- ifeq ($(OPENJDK_TARGET_OS), macosx)
+ ifneq ($(findstring $(OPENJDK_TARGET_OS), bsd macosx),)
MAN_SRC_DIR = $(MAN_SRC_BASEDIR)/bsd/doc
MAN1_SUBDIR = man
endif
@@ -447,7 +447,7 @@
$(install-file)
endif
- ifeq ($(OPENJDK_TARGET_OS), linux)
+ ifneq ($(findstring $(OPENJDK_TARGET_OS), linux bsd macosx),)
$(JRE_IMAGE_DIR)/man/ja:
$(ECHO) $(LOG_INFO) Creating $(patsubst $(OUTPUT_ROOT)/%,%,$@)
$(CD) $(@D) && $(RM) ja && $(LN) -s ja_JP.UTF-8 ja
@@ -455,19 +455,7 @@
$(JDK_IMAGE_DIR)/man/ja:
$(ECHO) $(LOG_INFO) Creating $(patsubst $(OUTPUT_ROOT)/%,%,$@)
$(CD) $(@D) && $(RM) ja && $(LN) -s ja_JP.UTF-8 ja
- endif
-
- ifeq ($(OPENJDK_TARGET_OS), macosx)
- $(JRE_IMAGE_DIR)/man/ja:
- $(ECHO) $(LOG_INFO) Creating $(patsubst $(OUTPUT_ROOT)/%,%,$@)
- $(CD) $(@D) && $(RM) ja && $(LN) -s ja_JP.UTF-8 ja
-
- $(JDK_IMAGE_DIR)/man/ja:
- $(ECHO) $(LOG_INFO) Creating $(patsubst $(OUTPUT_ROOT)/%,%,$@)
- $(CD) $(@D) && $(RM) ja && $(LN) -s ja_JP.UTF-8 ja
- endif
- ifeq ($(OPENJDK_TARGET_OS), linux)
JRE_MAN_PAGE_LIST = $(addprefix $(JRE_IMAGE_DIR)/man/man1/, $(JRE_MAN_PAGES)) \
$(addprefix $(JRE_IMAGE_DIR)/man/ja_JP.UTF-8/man1/, $(JRE_MAN_PAGES)) \
$(JRE_IMAGE_DIR)/man/ja
@@ -489,16 +477,6 @@
$(addprefix $(JDK_IMAGE_DIR)/man/ja_JP.PCK/man1/, $(JDK_MAN_PAGES))
endif
- ifeq ($(OPENJDK_TARGET_OS), macosx)
- JRE_MAN_PAGE_LIST = $(addprefix $(JRE_IMAGE_DIR)/man/man1/, $(JRE_MAN_PAGES)) \
- $(addprefix $(JRE_IMAGE_DIR)/man/ja_JP.UTF-8/man1/, $(JRE_MAN_PAGES)) \
- $(JRE_IMAGE_DIR)/man/ja
-
- JDK_MAN_PAGE_LIST = $(addprefix $(JDK_IMAGE_DIR)/man/man1/, $(JDK_MAN_PAGES)) \
- $(addprefix $(JDK_IMAGE_DIR)/man/ja_JP.UTF-8/man1/, $(JDK_MAN_PAGES)) \
- $(JDK_IMAGE_DIR)/man/ja
- endif
-
endif # Windows
################################################################################
--- ./jdk/make/data/classlist/classlist.bsd 1969-12-31 16:00:00.000000000 -0800
+++ ./jdk/make/data/classlist/classlist.bsd 2015-10-24 06:21:20.000000000 -0700
@@ -0,0 +1,2803 @@
+com/sun/java/swing/SwingUtilities3
+com/sun/java/swing/plaf/windows/WindowsTabbedPaneUI
+com/sun/swing/internal/plaf/basic/resources/basic
+com/sun/swing/internal/plaf/metal/resources/metal
+java/applet/Applet
+java/awt/AWTEvent
+java/awt/AWTEvent$1
+java/awt/AWTEvent$2
+java/awt/AWTEventMulticaster
+java/awt/AWTKeyStroke
+java/awt/AWTKeyStroke$1
+java/awt/ActiveEvent
+java/awt/Adjustable
+java/awt/AlphaComposite
+java/awt/BasicStroke
+java/awt/BorderLayout
+java/awt/BufferCapabilities
+java/awt/Canvas
+java/awt/CardLayout
+java/awt/CardLayout$Card
+java/awt/Color
+java/awt/Component
+java/awt/Component$1
+java/awt/Component$3
+java/awt/Component$AWTTreeLock
+java/awt/Component$AccessibleAWTComponent
+java/awt/Component$BaselineResizeBehavior
+java/awt/Component$BltBufferStrategy
+java/awt/Component$BltSubRegionBufferStrategy
+java/awt/Component$DummyRequestFocusController
+java/awt/Component$FlipBufferStrategy
+java/awt/ComponentOrientation
+java/awt/Composite
+java/awt/Conditional
+java/awt/Container
+java/awt/Container$1
+java/awt/Container$AccessibleAWTContainer
+java/awt/Container$EventTargetFilter
+java/awt/Container$MouseEventTargetFilter
+java/awt/ContainerOrderFocusTraversalPolicy
+java/awt/Cursor
+java/awt/Cursor$1
+java/awt/DefaultFocusTraversalPolicy
+java/awt/DefaultKeyboardFocusManager
+java/awt/DefaultKeyboardFocusManager$1
+java/awt/DefaultKeyboardFocusManager$DefaultKeyboardFocusManagerSentEvent
+java/awt/DefaultKeyboardFocusManager$TypeAheadMarker
+java/awt/Dialog
+java/awt/Dialog$1
+java/awt/Dialog$3
+java/awt/Dialog$ModalExclusionType
+java/awt/Dialog$ModalityType
+java/awt/Dimension
+java/awt/Event
+java/awt/EventDispatchThread
+java/awt/EventDispatchThread$1
+java/awt/EventDispatchThread$HierarchyEventFilter
+java/awt/EventFilter
+java/awt/EventFilter$FilterAction
+java/awt/EventQueue
+java/awt/EventQueue$1
+java/awt/EventQueue$1AWTInvocationLock
+java/awt/EventQueue$2
+java/awt/EventQueue$3
+java/awt/EventQueue$4
+java/awt/EventQueue$5
+java/awt/FlowLayout
+java/awt/FocusTraversalPolicy
+java/awt/Font
+java/awt/Font$FontAccessImpl
+java/awt/FontFormatException
+java/awt/FontMetrics
+java/awt/Frame
+java/awt/Frame$1
+java/awt/Graphics
+java/awt/Graphics2D
+java/awt/GraphicsCallback
+java/awt/GraphicsCallback$PaintCallback
+java/awt/GraphicsConfiguration
+java/awt/GraphicsDevice
+java/awt/GraphicsEnvironment
+java/awt/GraphicsEnvironment$1
+java/awt/GridLayout
+java/awt/Image
+java/awt/Image$1
+java/awt/ImageCapabilities
+java/awt/ImageMediaEntry
+java/awt/Insets
+java/awt/ItemSelectable
+java/awt/KeyEventDispatcher
+java/awt/KeyEventPostProcessor
+java/awt/KeyboardFocusManager
+java/awt/KeyboardFocusManager$1
+java/awt/KeyboardFocusManager$2
+java/awt/KeyboardFocusManager$3
+java/awt/KeyboardFocusManager$HeavyweightFocusRequest
+java/awt/KeyboardFocusManager$LightweightFocusRequest
+java/awt/Label
+java/awt/LayoutManager
+java/awt/LayoutManager2
+java/awt/LightweightDispatcher
+java/awt/LightweightDispatcher$1
+java/awt/LightweightDispatcher$2
+java/awt/MediaEntry
+java/awt/MediaTracker
+java/awt/MenuBar
+java/awt/MenuComponent
+java/awt/MenuContainer
+java/awt/ModalEventFilter
+java/awt/ModalEventFilter$1
+java/awt/ModalEventFilter$ApplicationModalEventFilter
+java/awt/Paint
+java/awt/Panel
+java/awt/Point
+java/awt/PrintGraphics
+java/awt/Queue
+java/awt/Rectangle
+java/awt/RenderingHints
+java/awt/RenderingHints$Key
+java/awt/SecondaryLoop
+java/awt/SentEvent
+java/awt/SequencedEvent
+java/awt/SequencedEvent$1
+java/awt/Shape
+java/awt/SplashScreen
+java/awt/Stroke
+java/awt/SystemColor
+java/awt/Toolkit
+java/awt/Toolkit$1
+java/awt/Toolkit$2
+java/awt/Toolkit$3
+java/awt/Toolkit$4
+java/awt/Toolkit$5
+java/awt/Toolkit$DesktopPropertyChangeSupport
+java/awt/Toolkit$DesktopPropertyChangeSupport$1
+java/awt/Toolkit$SelectiveAWTEventListener
+java/awt/Toolkit$ToolkitEventMulticaster
+java/awt/Transparency
+java/awt/TrayIcon
+java/awt/VKCollection
+java/awt/WaitDispatchSupport
+java/awt/WaitDispatchSupport$1
+java/awt/WaitDispatchSupport$2
+java/awt/WaitDispatchSupport$5
+java/awt/Window
+java/awt/Window$1
+java/awt/Window$1DisposeAction
+java/awt/Window$Type
+java/awt/Window$WindowDisposerRecord
+java/awt/color/ColorSpace
+java/awt/color/ICC_ColorSpace
+java/awt/color/ICC_Profile
+java/awt/color/ICC_Profile$1
+java/awt/color/ICC_ProfileRGB
+java/awt/datatransfer/Clipboard
+java/awt/datatransfer/ClipboardOwner
+java/awt/datatransfer/DataFlavor
+java/awt/datatransfer/FlavorMap
+java/awt/datatransfer/FlavorTable
+java/awt/datatransfer/MimeType
+java/awt/datatransfer/MimeTypeParameterList
+java/awt/datatransfer/MimeTypeParseException
+java/awt/datatransfer/SystemFlavorMap
+java/awt/datatransfer/SystemFlavorMap$1
+java/awt/datatransfer/SystemFlavorMap$2
+java/awt/datatransfer/Transferable
+java/awt/dnd/DropTarget
+java/awt/dnd/DropTargetContext
+java/awt/dnd/DropTargetListener
+java/awt/dnd/peer/DragSourceContextPeer
+java/awt/dnd/peer/DropTargetContextPeer
+java/awt/dnd/peer/DropTargetPeer
+java/awt/event/AWTEventListener
+java/awt/event/AWTEventListenerProxy
+java/awt/event/ActionEvent
+java/awt/event/ActionListener
+java/awt/event/AdjustmentEvent
+java/awt/event/AdjustmentListener
+java/awt/event/ComponentAdapter
+java/awt/event/ComponentEvent
+java/awt/event/ComponentListener
+java/awt/event/ContainerEvent
+java/awt/event/ContainerListener
+java/awt/event/FocusAdapter
+java/awt/event/FocusEvent
+java/awt/event/FocusListener
+java/awt/event/HierarchyBoundsListener
+java/awt/event/HierarchyEvent
+java/awt/event/HierarchyListener
+java/awt/event/InputEvent
+java/awt/event/InputEvent$1
+java/awt/event/InputMethodEvent
+java/awt/event/InputMethodListener
+java/awt/event/InvocationEvent
+java/awt/event/InvocationEvent$1
+java/awt/event/ItemEvent
+java/awt/event/ItemListener
+java/awt/event/KeyAdapter
+java/awt/event/KeyEvent
+java/awt/event/KeyEvent$1
+java/awt/event/KeyListener
+java/awt/event/MouseAdapter
+java/awt/event/MouseEvent
+java/awt/event/MouseListener
+java/awt/event/MouseMotionAdapter
+java/awt/event/MouseMotionListener
+java/awt/event/MouseWheelEvent
+java/awt/event/MouseWheelListener
+java/awt/event/NativeLibLoader
+java/awt/event/NativeLibLoader$1
+java/awt/event/PaintEvent
+java/awt/event/TextListener
+java/awt/event/WindowAdapter
+java/awt/event/WindowEvent
+java/awt/event/WindowFocusListener
+java/awt/event/WindowListener
+java/awt/event/WindowStateListener
+java/awt/font/FontRenderContext
+java/awt/font/GlyphVector
+java/awt/font/LineMetrics
+java/awt/font/TextAttribute
+java/awt/geom/AffineTransform
+java/awt/geom/Dimension2D
+java/awt/geom/GeneralPath
+java/awt/geom/Line2D
+java/awt/geom/Line2D$Float
+java/awt/geom/Path2D
+java/awt/geom/Path2D$Float
+java/awt/geom/Path2D$Float$CopyIterator
+java/awt/geom/Path2D$Iterator
+java/awt/geom/PathIterator
+java/awt/geom/Point2D
+java/awt/geom/Point2D$Double
+java/awt/geom/Point2D$Float
+java/awt/geom/RectIterator
+java/awt/geom/Rectangle2D
+java/awt/geom/Rectangle2D$Double
+java/awt/geom/Rectangle2D$Float
+java/awt/geom/RectangularShape
+java/awt/im/InputContext
+java/awt/im/InputMethodRequests
+java/awt/im/spi/InputMethod
+java/awt/im/spi/InputMethodContext
+java/awt/im/spi/InputMethodDescriptor
+java/awt/image/BufferStrategy
+java/awt/image/BufferedImage
+java/awt/image/BufferedImage$1
+java/awt/image/ColorModel
+java/awt/image/ColorModel$1
+java/awt/image/ComponentSampleModel
+java/awt/image/DataBuffer
+java/awt/image/DataBuffer$1
+java/awt/image/DataBufferByte
+java/awt/image/DataBufferInt
+java/awt/image/DirectColorModel
+java/awt/image/FilteredImageSource
+java/awt/image/ImageConsumer
+java/awt/image/ImageFilter
+java/awt/image/ImageObserver
+java/awt/image/ImageProducer
+java/awt/image/IndexColorModel
+java/awt/image/PackedColorModel
+java/awt/image/PixelInterleavedSampleModel
+java/awt/image/RGBImageFilter
+java/awt/image/Raster
+java/awt/image/RenderedImage
+java/awt/image/SampleModel
+java/awt/image/SinglePixelPackedSampleModel
+java/awt/image/VolatileImage
+java/awt/image/WritableRaster
+java/awt/image/WritableRenderedImage
+java/awt/peer/CanvasPeer
+java/awt/peer/ComponentPeer
+java/awt/peer/ContainerPeer
+java/awt/peer/DialogPeer
+java/awt/peer/FramePeer
+java/awt/peer/KeyboardFocusManagerPeer
+java/awt/peer/LabelPeer
+java/awt/peer/LightweightPeer
+java/awt/peer/PanelPeer
+java/awt/peer/SystemTrayPeer
+java/awt/peer/WindowPeer
+java/awt/print/PrinterGraphics
+java/beans/ChangeListenerMap
+java/beans/PropertyChangeEvent
+java/beans/PropertyChangeListener
+java/beans/PropertyChangeListenerProxy
+java/beans/PropertyChangeSupport
+java/beans/PropertyChangeSupport$PropertyChangeListenerMap
+java/beans/VetoableChangeListener
+java/io/Bits
+java/io/BufferedInputStream
+java/io/BufferedOutputStream
+java/io/BufferedReader
+java/io/BufferedWriter
+java/io/ByteArrayInputStream
+java/io/ByteArrayOutputStream
+java/io/Closeable
+java/io/DataInput
+java/io/DataInputStream
+java/io/DataOutput
+java/io/DataOutputStream
+java/io/DefaultFileSystem
+java/io/EOFException
+java/io/ExpiringCache
+java/io/ExpiringCache$1
+java/io/ExpiringCache$Entry
+java/io/Externalizable
+java/io/File
+java/io/File$PathStatus
+java/io/FileDescriptor
+java/io/FileDescriptor$1
+java/io/FileInputStream
+java/io/FileInputStream$1
+java/io/FileNotFoundException
+java/io/FileOutputStream
+java/io/FileOutputStream$1
+java/io/FilePermission
+java/io/FilePermission$1
+java/io/FilePermissionCollection
+java/io/FileReader
+java/io/FileSystem
+java/io/FileWriter
+java/io/FilenameFilter
+java/io/FilterInputStream
+java/io/FilterOutputStream
+java/io/FilterReader
+java/io/Flushable
+java/io/IOException
+java/io/InputStream
+java/io/InputStreamReader
+java/io/InterruptedIOException
+java/io/NotSerializableException
+java/io/ObjectInput
+java/io/ObjectInputStream
+java/io/ObjectInputStream$BlockDataInputStream
+java/io/ObjectInputStream$GetField
+java/io/ObjectInputStream$GetFieldImpl
+java/io/ObjectInputStream$HandleTable
+java/io/ObjectInputStream$HandleTable$HandleList
+java/io/ObjectInputStream$PeekInputStream
+java/io/ObjectInputStream$ValidationList
+java/io/ObjectOutput
+java/io/ObjectOutputStream
+java/io/ObjectOutputStream$BlockDataOutputStream
+java/io/ObjectOutputStream$HandleTable
+java/io/ObjectOutputStream$ReplaceTable
+java/io/ObjectStreamClass
+java/io/ObjectStreamClass$1
+java/io/ObjectStreamClass$2
+java/io/ObjectStreamClass$3
+java/io/ObjectStreamClass$4
+java/io/ObjectStreamClass$5
+java/io/ObjectStreamClass$Caches
+java/io/ObjectStreamClass$ClassDataSlot
+java/io/ObjectStreamClass$EntryFuture
+java/io/ObjectStreamClass$ExceptionInfo
+java/io/ObjectStreamClass$FieldReflector
+java/io/ObjectStreamClass$FieldReflectorKey
+java/io/ObjectStreamClass$MemberSignature
+java/io/ObjectStreamClass$WeakClassKey
+java/io/ObjectStreamConstants
+java/io/ObjectStreamException
+java/io/ObjectStreamField
+java/io/OutputStream
+java/io/OutputStreamWriter
+java/io/PrintStream
+java/io/PrintWriter
+java/io/PushbackInputStream
+java/io/RandomAccessFile
+java/io/RandomAccessFile$1
+java/io/Reader
+java/io/SerialCallbackContext
+java/io/Serializable
+java/io/StreamTokenizer
+java/io/StringReader
+java/io/StringWriter
+java/io/UnixFileSystem
+java/io/UnsupportedEncodingException
+java/io/Writer
+java/lang/AbstractStringBuilder
+java/lang/Appendable
+java/lang/ApplicationShutdownHooks
+java/lang/ApplicationShutdownHooks$1
+java/lang/ArithmeticException
+java/lang/ArrayIndexOutOfBoundsException
+java/lang/ArrayStoreException
+java/lang/AssertionError
+java/lang/AutoCloseable
+java/lang/Boolean
+java/lang/BootstrapMethodError
+java/lang/Byte
+java/lang/CharSequence
+java/lang/Character
+java/lang/Character$CharacterCache
+java/lang/CharacterData
+java/lang/CharacterData00
+java/lang/CharacterDataLatin1
+java/lang/Class
+java/lang/Class$1
+java/lang/Class$3
+java/lang/Class$4
+java/lang/Class$AnnotationData
+java/lang/Class$Atomic
+java/lang/Class$ReflectionData
+java/lang/ClassCastException
+java/lang/ClassFormatError
+java/lang/ClassLoader
+java/lang/ClassLoader$2
+java/lang/ClassLoader$3
+java/lang/ClassLoader$NativeLibrary
+java/lang/ClassLoader$ParallelLoaders
+java/lang/ClassLoaderHelper
+java/lang/ClassNotFoundException
+java/lang/ClassValue$ClassValueMap
+java/lang/CloneNotSupportedException
+java/lang/Cloneable
+java/lang/Comparable
+java/lang/Compiler
+java/lang/Compiler$1
+java/lang/Double
+java/lang/Enum
+java/lang/Error
+java/lang/Exception
+java/lang/ExceptionInInitializerError
+java/lang/Float
+java/lang/IllegalAccessError
+java/lang/IllegalAccessException
+java/lang/IllegalArgumentException
+java/lang/IllegalMonitorStateException
+java/lang/IllegalStateException
+java/lang/IncompatibleClassChangeError
+java/lang/IndexOutOfBoundsException
+java/lang/InheritableThreadLocal
+java/lang/InstantiationException
+java/lang/Integer
+java/lang/Integer$IntegerCache
+java/lang/InternalError
+java/lang/InterruptedException
+java/lang/Iterable
+java/lang/LinkageError
+java/lang/Long
+java/lang/Long$LongCache
+java/lang/Math
+java/lang/NoClassDefFoundError
+java/lang/NoSuchFieldException
+java/lang/NoSuchMethodError
+java/lang/NoSuchMethodException
+java/lang/NullPointerException
+java/lang/Number
+java/lang/NumberFormatException
+java/lang/Object
+java/lang/OutOfMemoryError
+java/lang/Package
+java/lang/Process
+java/lang/ProcessBuilder
+java/lang/ProcessBuilder$NullInputStream
+java/lang/ProcessBuilder$NullOutputStream
+java/lang/ProcessEnvironment
+java/lang/ProcessEnvironment$ExternalData
+java/lang/ProcessEnvironment$StringEnvironment
+java/lang/ProcessEnvironment$Value
+java/lang/ProcessEnvironment$Variable
+java/lang/ProcessImpl
+java/lang/Readable
+java/lang/ReflectiveOperationException
+java/lang/Runnable
+java/lang/Runtime
+java/lang/RuntimeException
+java/lang/RuntimePermission
+java/lang/SecurityException
+java/lang/SecurityManager
+java/lang/Short
+java/lang/Short$ShortCache
+java/lang/Shutdown
+java/lang/Shutdown$Lock
+java/lang/StackOverflowError
+java/lang/StackTraceElement
+java/lang/StrictMath
+java/lang/String
+java/lang/String$CaseInsensitiveComparator
+java/lang/StringBuffer
+java/lang/StringBuilder
+java/lang/StringCoding
+java/lang/StringCoding$StringDecoder
+java/lang/StringCoding$StringEncoder
+java/lang/StringIndexOutOfBoundsException
+java/lang/System
+java/lang/System$2
+java/lang/SystemClassLoaderAction
+java/lang/Terminator
+java/lang/Terminator$1
+java/lang/Thread
+java/lang/Thread$State
+java/lang/Thread$UncaughtExceptionHandler
+java/lang/ThreadDeath
+java/lang/ThreadGroup
+java/lang/ThreadLocal
+java/lang/ThreadLocal$ThreadLocalMap
+java/lang/ThreadLocal$ThreadLocalMap$Entry
+java/lang/Throwable
+java/lang/Throwable$PrintStreamOrWriter
+java/lang/Throwable$WrappedPrintStream
+java/lang/Throwable$WrappedPrintWriter
+java/lang/UNIXProcess
+java/lang/UNIXProcess$1
+java/lang/UNIXProcess$2
+java/lang/UNIXProcess$3
+java/lang/UNIXProcess$4
+java/lang/UNIXProcess$LaunchMechanism
+java/lang/UNIXProcess$ProcessPipeInputStream
+java/lang/UNIXProcess$ProcessPipeOutputStream
+java/lang/UNIXProcess$ProcessReaperThreadFactory
+java/lang/UNIXProcess$ProcessReaperThreadFactory$1
+java/lang/UnsatisfiedLinkError
+java/lang/UnsupportedOperationException
+java/lang/VirtualMachineError
+java/lang/Void
+java/lang/annotation/Annotation
+java/lang/invoke/CallSite
+java/lang/invoke/ConstantCallSite
+java/lang/invoke/DirectMethodHandle
+java/lang/invoke/Invokers
+java/lang/invoke/LambdaForm
+java/lang/invoke/LambdaForm$NamedFunction
+java/lang/invoke/MemberName
+java/lang/invoke/MemberName$Factory
+java/lang/invoke/MethodHandle
+java/lang/invoke/MethodHandleImpl
+java/lang/invoke/MethodHandleNatives
+java/lang/invoke/MethodHandleStatics
+java/lang/invoke/MethodHandleStatics$1
+java/lang/invoke/MethodType
+java/lang/invoke/MethodType$ConcurrentWeakInternSet
+java/lang/invoke/MethodType$ConcurrentWeakInternSet$WeakEntry
+java/lang/invoke/MethodTypeForm
+java/lang/invoke/MutableCallSite
+java/lang/invoke/VolatileCallSite
+java/lang/ref/FinalReference
+java/lang/ref/Finalizer
+java/lang/ref/Finalizer$FinalizerThread
+java/lang/ref/PhantomReference
+java/lang/ref/Reference
+java/lang/ref/Reference$Lock
+java/lang/ref/Reference$ReferenceHandler
+java/lang/ref/ReferenceQueue
+java/lang/ref/ReferenceQueue$Lock
+java/lang/ref/ReferenceQueue$Null
+java/lang/ref/SoftReference
+java/lang/ref/WeakReference
+java/lang/reflect/AccessibleObject
+java/lang/reflect/AnnotatedElement
+java/lang/reflect/Array
+java/lang/reflect/Constructor
+java/lang/reflect/Executable
+java/lang/reflect/Field
+java/lang/reflect/GenericDeclaration
+java/lang/reflect/InvocationHandler
+java/lang/reflect/InvocationTargetException
+java/lang/reflect/Member
+java/lang/reflect/Method
+java/lang/reflect/Modifier
+java/lang/reflect/Parameter
+java/lang/reflect/Proxy
+java/lang/reflect/Proxy$KeyFactory
+java/lang/reflect/Proxy$ProxyClassFactory
+java/lang/reflect/ReflectAccess
+java/lang/reflect/ReflectPermission
+java/lang/reflect/Type
+java/lang/reflect/WeakCache
+java/math/BigInteger
+java/math/BigInteger$UnsafeHolder
+java/math/MutableBigInteger
+java/math/RoundingMode
+java/math/SignedMutableBigInteger
+java/net/AbstractPlainDatagramSocketImpl
+java/net/AbstractPlainDatagramSocketImpl$1
+java/net/AbstractPlainSocketImpl
+java/net/AbstractPlainSocketImpl$1
+java/net/Authenticator
+java/net/BindException
+java/net/ConnectException
+java/net/DatagramPacket
+java/net/DatagramPacket$1
+java/net/DatagramSocket
+java/net/DatagramSocket$1
+java/net/DatagramSocketImpl
+java/net/DefaultDatagramSocketImplFactory
+java/net/DefaultInterface
+java/net/FileNameMap
+java/net/HttpURLConnection
+java/net/Inet4Address
+java/net/Inet4AddressImpl
+java/net/Inet6Address
+java/net/Inet6Address$Inet6AddressHolder
+java/net/Inet6AddressImpl
+java/net/InetAddress
+java/net/InetAddress$1
+java/net/InetAddress$2
+java/net/InetAddress$Cache
+java/net/InetAddress$Cache$Type
+java/net/InetAddress$CacheEntry
+java/net/InetAddress$InetAddressHolder
+java/net/InetAddressImpl
+java/net/InetAddressImplFactory
+java/net/InetSocketAddress
+java/net/InetSocketAddress$InetSocketAddressHolder
+java/net/InterfaceAddress
+java/net/JarURLConnection
+java/net/MalformedURLException
+java/net/MulticastSocket
+java/net/NetworkInterface
+java/net/NetworkInterface$1
+java/net/NetworkInterface$2
+java/net/NoRouteToHostException
+java/net/Parts
+java/net/PlainDatagramSocketImpl
+java/net/PlainSocketImpl
+java/net/Proxy
+java/net/Proxy$Type
+java/net/ProxySelector
+java/net/ServerSocket
+java/net/Socket
+java/net/SocketAddress
+java/net/SocketException
+java/net/SocketImpl
+java/net/SocketImplFactory
+java/net/SocketOptions
+java/net/SocksConsts
+java/net/SocksSocketImpl
+java/net/SocksSocketImpl$3
+java/net/URI
+java/net/URI$Parser
+java/net/URL
+java/net/URLClassLoader
+java/net/URLClassLoader$1
+java/net/URLClassLoader$2
+java/net/URLClassLoader$3
+java/net/URLClassLoader$3$1
+java/net/URLClassLoader$7
+java/net/URLConnection
+java/net/URLConnection$1
+java/net/URLStreamHandler
+java/net/URLStreamHandlerFactory
+java/net/UnknownHostException
+java/nio/Bits
+java/nio/Bits$1
+java/nio/Buffer
+java/nio/BufferUnderflowException
+java/nio/ByteBuffer
+java/nio/ByteBufferAsIntBufferB
+java/nio/ByteBufferAsShortBufferB
+java/nio/ByteOrder
+java/nio/CharBuffer
+java/nio/DirectByteBuffer
+java/nio/DirectByteBuffer$Deallocator
+java/nio/DirectByteBufferR
+java/nio/DirectLongBufferU
+java/nio/HeapByteBuffer
+java/nio/HeapCharBuffer
+java/nio/IntBuffer
+java/nio/LongBuffer
+java/nio/MappedByteBuffer
+java/nio/ShortBuffer
+java/nio/channels/ByteChannel
+java/nio/channels/Channel
+java/nio/channels/FileChannel
+java/nio/channels/FileChannel$MapMode
+java/nio/channels/GatheringByteChannel
+java/nio/channels/InterruptibleChannel
+java/nio/channels/NetworkChannel
+java/nio/channels/ReadableByteChannel
+java/nio/channels/ScatteringByteChannel
+java/nio/channels/SeekableByteChannel
+java/nio/channels/SelectableChannel
+java/nio/channels/SocketChannel
+java/nio/channels/WritableByteChannel
+java/nio/channels/spi/AbstractInterruptibleChannel
+java/nio/channels/spi/AbstractInterruptibleChannel$1
+java/nio/channels/spi/AbstractSelectableChannel
+java/nio/charset/Charset
+java/nio/charset/Charset$ExtendedProviderHolder
+java/nio/charset/Charset$ExtendedProviderHolder$1
+java/nio/charset/CharsetDecoder
+java/nio/charset/CharsetEncoder
+java/nio/charset/CoderResult
+java/nio/charset/CoderResult$1
+java/nio/charset/CoderResult$2
+java/nio/charset/CoderResult$Cache
+java/nio/charset/CodingErrorAction
+java/nio/charset/StandardCharsets
+java/nio/charset/spi/CharsetProvider
+java/nio/file/Path
+java/nio/file/Watchable
+java/nio/file/attribute/FileAttribute
+java/rmi/MarshalledObject
+java/rmi/Remote
+java/security/AccessControlContext
+java/security/AccessControlException
+java/security/AccessController
+java/security/AlgorithmParameters
+java/security/AlgorithmParametersSpi
+java/security/AllPermission
+java/security/AllPermissionCollection
+java/security/AuthProvider
+java/security/BasicPermission
+java/security/BasicPermissionCollection
+java/security/CodeSigner
+java/security/CodeSource
+java/security/DigestException
+java/security/GeneralSecurityException
+java/security/Guard
+java/security/InvalidAlgorithmParameterException
+java/security/InvalidKeyException
+java/security/InvalidParameterException
+java/security/Key
+java/security/KeyException
+java/security/KeyFactory
+java/security/KeyFactorySpi
+java/security/MessageDigest
+java/security/MessageDigest$Delegate
+java/security/MessageDigestSpi
+java/security/NoSuchAlgorithmException
+java/security/Permission
+java/security/PermissionCollection
+java/security/Permissions
+java/security/Principal
+java/security/PrivateKey
+java/security/PrivilegedAction
+java/security/PrivilegedActionException
+java/security/PrivilegedExceptionAction
+java/security/ProtectionDomain
+java/security/ProtectionDomain$1
+java/security/ProtectionDomain$3
+java/security/ProtectionDomain$Key
+java/security/Provider
+java/security/Provider$EngineDescription
+java/security/Provider$Service
+java/security/Provider$ServiceKey
+java/security/Provider$UString
+java/security/ProviderException
+java/security/PublicKey
+java/security/SecureClassLoader
+java/security/SecureRandomSpi
+java/security/Security
+java/security/Security$1
+java/security/SecurityPermission
+java/security/Signature
+java/security/Signature$Delegate
+java/security/SignatureException
+java/security/SignatureSpi
+java/security/UnresolvedPermission
+java/security/cert/CertPath
+java/security/cert/Certificate
+java/security/cert/CertificateFactory
+java/security/cert/CertificateFactorySpi
+java/security/cert/Extension
+java/security/cert/X509Certificate
+java/security/cert/X509Extension
+java/security/interfaces/DSAKey
+java/security/interfaces/DSAParams
+java/security/interfaces/DSAPrivateKey
+java/security/interfaces/DSAPublicKey
+java/security/interfaces/RSAKey
+java/security/interfaces/RSAPrivateCrtKey
+java/security/interfaces/RSAPrivateKey
+java/security/interfaces/RSAPublicKey
+java/security/spec/AlgorithmParameterSpec
+java/security/spec/DSAParameterSpec
+java/security/spec/DSAPublicKeySpec
+java/security/spec/EncodedKeySpec
+java/security/spec/InvalidKeySpecException
+java/security/spec/KeySpec
+java/security/spec/PKCS8EncodedKeySpec
+java/security/spec/RSAPrivateCrtKeySpec
+java/security/spec/RSAPrivateKeySpec
+java/security/spec/RSAPublicKeySpec
+java/security/spec/X509EncodedKeySpec
+java/text/AttributedCharacterIterator
+java/text/AttributedCharacterIterator$Attribute
+java/text/AttributedString
+java/text/AttributedString$AttributedStringIterator
+java/text/CharacterIterator
+java/text/Collator
+java/text/DateFormat
+java/text/DateFormat$Field
+java/text/DateFormatSymbols
+java/text/DecimalFormat
+java/text/DecimalFormatSymbols
+java/text/DigitList
+java/text/DontCareFieldPosition
+java/text/DontCareFieldPosition$1
+java/text/EntryPair
+java/text/FieldPosition
+java/text/Format
+java/text/Format$Field
+java/text/Format$FieldDelegate
+java/text/MergeCollation
+java/text/MessageFormat
+java/text/MessageFormat$Field
+java/text/Normalizer
+java/text/Normalizer$Form
+java/text/NumberFormat
+java/text/NumberFormat$Field
+java/text/ParseException
+java/text/PatternEntry
+java/text/PatternEntry$Parser
+java/text/RBCollationTables
+java/text/RBCollationTables$BuildAPI
+java/text/RBTableBuilder
+java/text/RuleBasedCollator
+java/text/SimpleDateFormat
+java/text/spi/BreakIteratorProvider
+java/text/spi/CollatorProvider
+java/text/spi/DateFormatProvider
+java/text/spi/DateFormatSymbolsProvider
+java/text/spi/DecimalFormatSymbolsProvider
+java/text/spi/NumberFormatProvider
+java/util/AbstractCollection
+java/util/AbstractList
+java/util/AbstractList$Itr
+java/util/AbstractList$ListItr
+java/util/AbstractMap
+java/util/AbstractQueue
+java/util/AbstractSequentialList
+java/util/AbstractSet
+java/util/ArrayDeque
+java/util/ArrayList
+java/util/ArrayList$1
+java/util/ArrayList$Itr
+java/util/ArrayList$ListItr
+java/util/ArrayList$SubList
+java/util/ArrayList$SubList$1
+java/util/Arrays
+java/util/Arrays$ArrayList
+java/util/Arrays$LegacyMergeSort
+java/util/Base64
+java/util/Base64$Decoder
+java/util/Base64$Encoder
+java/util/BitSet
+java/util/Calendar
+java/util/Calendar$Builder
+java/util/Collection
+java/util/Collections
+java/util/Collections$3
+java/util/Collections$EmptyEnumeration
+java/util/Collections$EmptyIterator
+java/util/Collections$EmptyList
+java/util/Collections$EmptyMap
+java/util/Collections$EmptySet
+java/util/Collections$SetFromMap
+java/util/Collections$SynchronizedCollection
+java/util/Collections$SynchronizedMap
+java/util/Collections$SynchronizedSet
+java/util/Collections$SynchronizedSortedSet
+java/util/Collections$UnmodifiableCollection
+java/util/Collections$UnmodifiableCollection$1
+java/util/Collections$UnmodifiableList
+java/util/Collections$UnmodifiableList$1
+java/util/Collections$UnmodifiableMap
+java/util/Collections$UnmodifiableRandomAccessList
+java/util/Collections$UnmodifiableSet
+java/util/Collections$UnmodifiableSortedSet
+java/util/ComparableTimSort
+java/util/Comparator
+java/util/Currency
+java/util/Currency$1
+java/util/Currency$CurrencyNameGetter
+java/util/Date
+java/util/Deque
+java/util/Dictionary
+java/util/Enumeration
+java/util/EventListener
+java/util/EventListenerProxy
+java/util/EventObject
+java/util/GregorianCalendar
+java/util/HashMap
+java/util/HashMap$EntryIterator
+java/util/HashMap$EntrySet
+java/util/HashMap$HashIterator
+java/util/HashMap$KeyIterator
+java/util/HashMap$KeySet
+java/util/HashMap$Node
+java/util/HashMap$TreeNode
+java/util/HashMap$ValueIterator
+java/util/HashMap$Values
+java/util/HashSet
+java/util/Hashtable
+java/util/Hashtable$Entry
+java/util/Hashtable$EntrySet
+java/util/Hashtable$Enumerator
+java/util/Hashtable$ValueCollection
+java/util/IdentityHashMap
+java/util/IdentityHashMap$IdentityHashMapIterator
+java/util/IdentityHashMap$KeyIterator
+java/util/IdentityHashMap$KeySet
+java/util/IdentityHashMap$ValueIterator
+java/util/IdentityHashMap$Values
+java/util/Iterator
+java/util/LinkedHashMap
+java/util/LinkedHashMap$Entry
+java/util/LinkedHashMap$LinkedEntryIterator
+java/util/LinkedHashMap$LinkedEntrySet
+java/util/LinkedHashMap$LinkedHashIterator
+java/util/LinkedHashMap$LinkedKeyIterator
+java/util/LinkedHashMap$LinkedKeySet
+java/util/LinkedHashSet
+java/util/LinkedList
+java/util/LinkedList$ListItr
+java/util/LinkedList$Node
+java/util/List
+java/util/ListIterator
+java/util/ListResourceBundle
+java/util/Locale
+java/util/Locale$1
+java/util/Locale$Cache
+java/util/Locale$Category
+java/util/Locale$LocaleKey
+java/util/Map
+java/util/Map$Entry
+java/util/MissingResourceException
+java/util/NavigableMap
+java/util/NavigableSet
+java/util/Objects
+java/util/PriorityQueue
+java/util/Properties
+java/util/Properties$LineReader
+java/util/PropertyResourceBundle
+java/util/Queue
+java/util/Random
+java/util/RandomAccess
+java/util/ResourceBundle
+java/util/ResourceBundle$1
+java/util/ResourceBundle$BundleReference
+java/util/ResourceBundle$CacheKey
+java/util/ResourceBundle$CacheKeyReference
+java/util/ResourceBundle$Control
+java/util/ResourceBundle$Control$1
+java/util/ResourceBundle$Control$CandidateListCache
+java/util/ResourceBundle$LoaderReference
+java/util/ResourceBundle$RBClassLoader
+java/util/ResourceBundle$RBClassLoader$1
+java/util/ResourceBundle$SingleFormatControl
+java/util/ServiceLoader
+java/util/ServiceLoader$1
+java/util/ServiceLoader$LazyIterator
+java/util/Set
+java/util/SortedMap
+java/util/SortedSet
+java/util/Stack
+java/util/StringTokenizer
+java/util/TimSort
+java/util/TimeZone
+java/util/TimeZone$1
+java/util/TreeMap
+java/util/TreeMap$Entry
+java/util/TreeMap$KeyIterator
+java/util/TreeMap$KeySet
+java/util/TreeMap$PrivateEntryIterator
+java/util/TreeSet
+java/util/Vector
+java/util/Vector$1
+java/util/Vector$Itr
+java/util/Vector$ListItr
+java/util/WeakHashMap
+java/util/WeakHashMap$Entry
+java/util/WeakHashMap$HashIterator
+java/util/WeakHashMap$KeyIterator
+java/util/WeakHashMap$KeySet
+java/util/concurrent/AbstractExecutorService
+java/util/concurrent/BlockingQueue
+java/util/concurrent/ConcurrentHashMap
+java/util/concurrent/ConcurrentHashMap$BaseIterator
+java/util/concurrent/ConcurrentHashMap$CollectionView
+java/util/concurrent/ConcurrentHashMap$CounterCell
+java/util/concurrent/ConcurrentHashMap$EntrySetView
+java/util/concurrent/ConcurrentHashMap$ForwardingNode
+java/util/concurrent/ConcurrentHashMap$KeyIterator
+java/util/concurrent/ConcurrentHashMap$KeySetView
+java/util/concurrent/ConcurrentHashMap$Node
+java/util/concurrent/ConcurrentHashMap$Segment
+java/util/concurrent/ConcurrentHashMap$Traverser
+java/util/concurrent/ConcurrentHashMap$ValueIterator
+java/util/concurrent/ConcurrentHashMap$ValuesView
+java/util/concurrent/ConcurrentMap
+java/util/concurrent/ConcurrentNavigableMap
+java/util/concurrent/ConcurrentSkipListMap
+java/util/concurrent/ConcurrentSkipListMap$EntrySet
+java/util/concurrent/ConcurrentSkipListMap$HeadIndex
+java/util/concurrent/ConcurrentSkipListMap$Index
+java/util/concurrent/ConcurrentSkipListMap$KeySet
+java/util/concurrent/ConcurrentSkipListMap$Node
+java/util/concurrent/ConcurrentSkipListMap$Values
+java/util/concurrent/ConcurrentSkipListSet
+java/util/concurrent/CopyOnWriteArrayList
+java/util/concurrent/DelayQueue
+java/util/concurrent/Delayed
+java/util/concurrent/Executor
+java/util/concurrent/ExecutorService
+java/util/concurrent/Executors
+java/util/concurrent/RejectedExecutionHandler
+java/util/concurrent/SynchronousQueue
+java/util/concurrent/SynchronousQueue$TransferStack
+java/util/concurrent/SynchronousQueue$TransferStack$SNode
+java/util/concurrent/SynchronousQueue$Transferer
+java/util/concurrent/ThreadFactory
+java/util/concurrent/ThreadLocalRandom
+java/util/concurrent/ThreadPoolExecutor
+java/util/concurrent/ThreadPoolExecutor$AbortPolicy
+java/util/concurrent/ThreadPoolExecutor$Worker
+java/util/concurrent/TimeUnit
+java/util/concurrent/TimeUnit$1
+java/util/concurrent/TimeUnit$2
+java/util/concurrent/TimeUnit$3
+java/util/concurrent/TimeUnit$4
+java/util/concurrent/TimeUnit$5
+java/util/concurrent/TimeUnit$6
+java/util/concurrent/TimeUnit$7
+java/util/concurrent/atomic/AtomicBoolean
+java/util/concurrent/atomic/AtomicInteger
+java/util/concurrent/atomic/AtomicLong
+java/util/concurrent/atomic/AtomicMarkableReference
+java/util/concurrent/atomic/AtomicMarkableReference$Pair
+java/util/concurrent/atomic/AtomicReferenceFieldUpdater
+java/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl
+java/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl$1
+java/util/concurrent/locks/AbstractOwnableSynchronizer
+java/util/concurrent/locks/AbstractQueuedSynchronizer
+java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject
+java/util/concurrent/locks/AbstractQueuedSynchronizer$Node
+java/util/concurrent/locks/Condition
+java/util/concurrent/locks/Lock
+java/util/concurrent/locks/LockSupport
+java/util/concurrent/locks/ReadWriteLock
+java/util/concurrent/locks/ReentrantLock
+java/util/concurrent/locks/ReentrantLock$NonfairSync
+java/util/concurrent/locks/ReentrantLock$Sync
+java/util/concurrent/locks/ReentrantReadWriteLock
+java/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync
+java/util/concurrent/locks/ReentrantReadWriteLock$ReadLock
+java/util/concurrent/locks/ReentrantReadWriteLock$Sync
+java/util/concurrent/locks/ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter
+java/util/concurrent/locks/ReentrantReadWriteLock$WriteLock
+java/util/function/BiFunction
+java/util/jar/Attributes
+java/util/jar/Attributes$Name
+java/util/jar/JarEntry
+java/util/jar/JarFile
+java/util/jar/JarFile$JarEntryIterator
+java/util/jar/JarFile$JarFileEntry
+java/util/jar/JarVerifier
+java/util/jar/JarVerifier$3
+java/util/jar/JarVerifier$VerifierStream
+java/util/jar/JavaUtilJarAccessImpl
+java/util/jar/Manifest
+java/util/jar/Manifest$FastInputStream
+java/util/logging/Handler
+java/util/logging/Level
+java/util/logging/Level$KnownLevel
+java/util/logging/LogManager
+java/util/logging/LogManager$1
+java/util/logging/LogManager$2
+java/util/logging/LogManager$3
+java/util/logging/LogManager$5
+java/util/logging/LogManager$Cleaner
+java/util/logging/LogManager$LogNode
+java/util/logging/LogManager$LoggerContext
+java/util/logging/LogManager$LoggerContext$1
+java/util/logging/LogManager$LoggerWeakRef
+java/util/logging/LogManager$RootLogger
+java/util/logging/LogManager$SystemLoggerContext
+java/util/logging/Logger
+java/util/logging/Logger$1
+java/util/logging/LoggingPermission
+java/util/logging/LoggingProxyImpl
+java/util/regex/MatchResult
+java/util/regex/Matcher
+java/util/regex/Pattern
+java/util/regex/Pattern$4
+java/util/regex/Pattern$BnM
+java/util/regex/Pattern$GroupHead
+java/util/regex/Pattern$LastNode
+java/util/regex/Pattern$Node
+java/util/regex/Pattern$Slice
+java/util/regex/Pattern$SliceNode
+java/util/regex/Pattern$Start
+java/util/regex/Pattern$TreeInfo
+java/util/spi/CalendarDataProvider
+java/util/spi/CurrencyNameProvider
+java/util/spi/LocaleNameProvider
+java/util/spi/LocaleServiceProvider
+java/util/spi/ResourceBundleControlProvider
+java/util/spi/TimeZoneNameProvider
+java/util/zip/CRC32
+java/util/zip/Checksum
+java/util/zip/DeflaterOutputStream
+java/util/zip/GZIPInputStream
+java/util/zip/Inflater
+java/util/zip/InflaterInputStream
+java/util/zip/ZStreamRef
+java/util/zip/ZipCoder
+java/util/zip/ZipConstants
+java/util/zip/ZipEntry
+java/util/zip/ZipException
+java/util/zip/ZipFile
+java/util/zip/ZipFile$1
+java/util/zip/ZipFile$ZipEntryIterator
+java/util/zip/ZipFile$ZipFileInflaterInputStream
+java/util/zip/ZipFile$ZipFileInputStream
+java/util/zip/ZipInputStream
+java/util/zip/ZipUtils
+javax/accessibility/Accessible
+javax/accessibility/AccessibleAction
+javax/accessibility/AccessibleBundle
+javax/accessibility/AccessibleComponent
+javax/accessibility/AccessibleContext
+javax/accessibility/AccessibleExtendedComponent
+javax/accessibility/AccessibleRelationSet
+javax/accessibility/AccessibleState
+javax/accessibility/AccessibleText
+javax/accessibility/AccessibleValue
+javax/security/auth/Destroyable
+javax/security/auth/login/FailedLoginException
+javax/security/auth/login/LoginException
+javax/security/auth/x500/X500Principal
+javax/sound/sampled/Control$Type
+javax/sound/sampled/DataLine
+javax/sound/sampled/DataLine$Info
+javax/sound/sampled/FloatControl$Type
+javax/sound/sampled/Line
+javax/sound/sampled/Line$Info
+javax/sound/sampled/LineUnavailableException
+javax/sound/sampled/UnsupportedAudioFileException
+javax/swing/AbstractAction
+javax/swing/AbstractButton
+javax/swing/AbstractButton$AccessibleAbstractButton
+javax/swing/AbstractButton$Handler
+javax/swing/AbstractCellEditor
+javax/swing/AbstractListModel
+javax/swing/Action
+javax/swing/ActionMap
+javax/swing/AncestorNotifier
+javax/swing/ArrayTable
+javax/swing/Autoscroller
+javax/swing/BorderFactory
+javax/swing/BoundedRangeModel
+javax/swing/Box
+javax/swing/Box$Filler
+javax/swing/BoxLayout
+javax/swing/BufferStrategyPaintManager
+javax/swing/BufferStrategyPaintManager$BufferInfo
+javax/swing/ButtonGroup
+javax/swing/ButtonModel
+javax/swing/CellEditor
+javax/swing/CellRendererPane
+javax/swing/ClientPropertyKey
+javax/swing/ClientPropertyKey$1
+javax/swing/ComboBoxEditor
+javax/swing/ComboBoxModel
+javax/swing/ComponentInputMap
+javax/swing/DefaultBoundedRangeModel
+javax/swing/DefaultButtonModel
+javax/swing/DefaultCellEditor
+javax/swing/DefaultCellEditor$1
+javax/swing/DefaultCellEditor$EditorDelegate
+javax/swing/DefaultComboBoxModel
+javax/swing/DefaultListCellRenderer
+javax/swing/DefaultListCellRenderer$UIResource
+javax/swing/DefaultListModel
+javax/swing/DefaultListSelectionModel
+javax/swing/DefaultSingleSelectionModel
+javax/swing/DropMode
+javax/swing/FocusManager
+javax/swing/GrayFilter
+javax/swing/Icon
+javax/swing/ImageIcon
+javax/swing/ImageIcon$1
+javax/swing/ImageIcon$2
+javax/swing/ImageIcon$2$1
+javax/swing/ImageIcon$3
+javax/swing/InputMap
+javax/swing/InternalFrameFocusTraversalPolicy
+javax/swing/JButton
+javax/swing/JCheckBox
+javax/swing/JCheckBoxMenuItem
+javax/swing/JCheckBoxMenuItem$AccessibleJCheckBoxMenuItem
+javax/swing/JComboBox
+javax/swing/JComboBox$1
+javax/swing/JComboBox$KeySelectionManager
+javax/swing/JComponent
+javax/swing/JComponent$1
+javax/swing/JComponent$2
+javax/swing/JComponent$AccessibleJComponent
+javax/swing/JDialog
+javax/swing/JEditorPane
+javax/swing/JFrame
+javax/swing/JInternalFrame
+javax/swing/JLabel
+javax/swing/JLayer
+javax/swing/JLayeredPane
+javax/swing/JList
+javax/swing/JList$3
+javax/swing/JList$ListSelectionHandler
+javax/swing/JMenu
+javax/swing/JMenu$MenuChangeListener
+javax/swing/JMenu$WinListener
+javax/swing/JMenuBar
+javax/swing/JMenuItem
+javax/swing/JMenuItem$AccessibleJMenuItem
+javax/swing/JMenuItem$MenuItemFocusListener
+javax/swing/JPanel
+javax/swing/JPasswordField
+javax/swing/JPopupMenu
+javax/swing/JPopupMenu$Separator
+javax/swing/JProgressBar
+javax/swing/JProgressBar$ModelListener
+javax/swing/JRadioButton
+javax/swing/JRadioButtonMenuItem
+javax/swing/JRootPane
+javax/swing/JRootPane$1
+javax/swing/JRootPane$RootLayout
+javax/swing/JScrollBar
+javax/swing/JScrollBar$ModelListener
+javax/swing/JScrollPane
+javax/swing/JScrollPane$ScrollBar
+javax/swing/JSeparator
+javax/swing/JSlider
+javax/swing/JSlider$ModelListener
+javax/swing/JSplitPane
+javax/swing/JTabbedPane
+javax/swing/JTabbedPane$ModelListener
+javax/swing/JTabbedPane$Page
+javax/swing/JTable
+javax/swing/JTable$2
+javax/swing/JTable$5
+javax/swing/JTable$Resizable2
+javax/swing/JTable$Resizable3
+javax/swing/JTextArea
+javax/swing/JTextField
+javax/swing/JTextField$NotifyAction
+javax/swing/JTextField$ScrollRepainter
+javax/swing/JToggleButton
+javax/swing/JToggleButton$ToggleButtonModel
+javax/swing/JToolBar
+javax/swing/JToolBar$DefaultToolBarLayout
+javax/swing/JToolBar$Separator
+javax/swing/JToolTip
+javax/swing/JTree
+javax/swing/JTree$TreeModelHandler
+javax/swing/JTree$TreeSelectionRedirector
+javax/swing/JViewport
+javax/swing/JViewport$ViewListener
+javax/swing/JWindow
+javax/swing/KeyStroke
+javax/swing/KeyboardManager
+javax/swing/KeyboardManager$ComponentKeyStrokePair
+javax/swing/LayoutComparator
+javax/swing/LayoutFocusTraversalPolicy
+javax/swing/ListCellRenderer
+javax/swing/ListModel
+javax/swing/ListSelectionModel
+javax/swing/LookAndFeel
+javax/swing/MenuElement
+javax/swing/MenuSelectionManager
+javax/swing/MultiUIDefaults
+javax/swing/MutableComboBoxModel
+javax/swing/PopupFactory
+javax/swing/RepaintManager
+javax/swing/RepaintManager$2
+javax/swing/RepaintManager$3
+javax/swing/RepaintManager$DisplayChangedHandler
+javax/swing/RepaintManager$PaintManager
+javax/swing/RepaintManager$ProcessingRunnable
+javax/swing/RootPaneContainer
+javax/swing/ScrollPaneConstants
+javax/swing/ScrollPaneLayout
+javax/swing/ScrollPaneLayout$UIResource
+javax/swing/Scrollable
+javax/swing/SingleSelectionModel
+javax/swing/SizeRequirements
+javax/swing/SortingFocusTraversalPolicy
+javax/swing/SwingConstants
+javax/swing/SwingContainerOrderFocusTraversalPolicy
+javax/swing/SwingDefaultFocusTraversalPolicy
+javax/swing/SwingHeavyWeight
+javax/swing/SwingPaintEventDispatcher
+javax/swing/SwingUtilities
+javax/swing/SwingUtilities$SharedOwnerFrame
+javax/swing/Timer
+javax/swing/Timer$DoPostEvent
+javax/swing/TimerQueue
+javax/swing/TimerQueue$1
+javax/swing/TimerQueue$DelayedTimer
+javax/swing/ToolTipManager
+javax/swing/ToolTipManager$AccessibilityKeyListener
+javax/swing/ToolTipManager$MoveBeforeEnterListener
+javax/swing/ToolTipManager$insideTimerAction
+javax/swing/ToolTipManager$outsideTimerAction
+javax/swing/ToolTipManager$stillInsideTimerAction
+javax/swing/TransferHandler
+javax/swing/TransferHandler$DropHandler
+javax/swing/TransferHandler$HasGetTransferHandler
+javax/swing/TransferHandler$SwingDropTarget
+javax/swing/TransferHandler$TransferAction
+javax/swing/TransferHandler$TransferAction$1
+javax/swing/TransferHandler$TransferAction$2
+javax/swing/TransferHandler$TransferSupport
+javax/swing/UIDefaults
+javax/swing/UIDefaults$ActiveValue
+javax/swing/UIDefaults$LazyInputMap
+javax/swing/UIDefaults$LazyValue
+javax/swing/UIDefaults$TextAndMnemonicHashMap
+javax/swing/UIManager
+javax/swing/UIManager$1
+javax/swing/UIManager$2
+javax/swing/UIManager$LAFState
+javax/swing/UIManager$LookAndFeelInfo
+javax/swing/UnsupportedLookAndFeelException
+javax/swing/ViewportLayout
+javax/swing/WindowConstants
+javax/swing/border/AbstractBorder
+javax/swing/border/BevelBorder
+javax/swing/border/Border
+javax/swing/border/CompoundBorder
+javax/swing/border/EmptyBorder
+javax/swing/border/EtchedBorder
+javax/swing/border/LineBorder
+javax/swing/border/MatteBorder
+javax/swing/border/TitledBorder
+javax/swing/event/AncestorEvent
+javax/swing/event/AncestorListener
+javax/swing/event/CaretEvent
+javax/swing/event/CaretListener
+javax/swing/event/CellEditorListener
+javax/swing/event/ChangeEvent
+javax/swing/event/ChangeListener
+javax/swing/event/DocumentEvent
+javax/swing/event/DocumentEvent$ElementChange
+javax/swing/event/DocumentEvent$EventType
+javax/swing/event/DocumentListener
+javax/swing/event/EventListenerList
+javax/swing/event/ListDataEvent
+javax/swing/event/ListDataListener
+javax/swing/event/ListSelectionEvent
+javax/swing/event/ListSelectionListener
+javax/swing/event/MenuDragMouseListener
+javax/swing/event/MenuEvent
+javax/swing/event/MenuKeyListener
+javax/swing/event/MenuListener
+javax/swing/event/MouseInputAdapter
+javax/swing/event/MouseInputListener
+javax/swing/event/PopupMenuListener
+javax/swing/event/RowSorterListener
+javax/swing/event/SwingPropertyChangeSupport
+javax/swing/event/TableColumnModelEvent
+javax/swing/event/TableColumnModelListener
+javax/swing/event/TableModelEvent
+javax/swing/event/TableModelListener
+javax/swing/event/TreeExpansionListener
+javax/swing/event/TreeModelEvent
+javax/swing/event/TreeModelListener
+javax/swing/event/TreeSelectionEvent
+javax/swing/event/TreeSelectionListener
+javax/swing/event/UndoableEditEvent
+javax/swing/event/UndoableEditListener
+javax/swing/filechooser/FileFilter
+javax/swing/plaf/ActionMapUIResource
+javax/swing/plaf/BorderUIResource
+javax/swing/plaf/BorderUIResource$CompoundBorderUIResource
+javax/swing/plaf/BorderUIResource$EmptyBorderUIResource
+javax/swing/plaf/BorderUIResource$LineBorderUIResource
+javax/swing/plaf/ButtonUI
+javax/swing/plaf/ColorUIResource
+javax/swing/plaf/ComboBoxUI
+javax/swing/plaf/ComponentInputMapUIResource
+javax/swing/plaf/ComponentUI
+javax/swing/plaf/DimensionUIResource
+javax/swing/plaf/FontUIResource
+javax/swing/plaf/IconUIResource
+javax/swing/plaf/InputMapUIResource
+javax/swing/plaf/InsetsUIResource
+javax/swing/plaf/LabelUI
+javax/swing/plaf/ListUI
+javax/swing/plaf/MenuBarUI
+javax/swing/plaf/MenuItemUI
+javax/swing/plaf/PanelUI
+javax/swing/plaf/PopupMenuUI
+javax/swing/plaf/ProgressBarUI
+javax/swing/plaf/RootPaneUI
+javax/swing/plaf/ScrollBarUI
+javax/swing/plaf/ScrollPaneUI
+javax/swing/plaf/SeparatorUI
+javax/swing/plaf/SliderUI
+javax/swing/plaf/SplitPaneUI
+javax/swing/plaf/TabbedPaneUI
+javax/swing/plaf/TableHeaderUI
+javax/swing/plaf/TableUI
+javax/swing/plaf/TextUI
+javax/swing/plaf/ToolBarUI
+javax/swing/plaf/TreeUI
+javax/swing/plaf/UIResource
+javax/swing/plaf/ViewportUI
+javax/swing/plaf/basic/BasicArrowButton
+javax/swing/plaf/basic/BasicBorders
+javax/swing/plaf/basic/BasicBorders$ButtonBorder
+javax/swing/plaf/basic/BasicBorders$MarginBorder
+javax/swing/plaf/basic/BasicBorders$RadioButtonBorder
+javax/swing/plaf/basic/BasicBorders$RolloverButtonBorder
+javax/swing/plaf/basic/BasicBorders$RolloverMarginBorder
+javax/swing/plaf/basic/BasicBorders$SplitPaneBorder
+javax/swing/plaf/basic/BasicBorders$SplitPaneDividerBorder
+javax/swing/plaf/basic/BasicButtonListener
+javax/swing/plaf/basic/BasicButtonUI
+javax/swing/plaf/basic/BasicCheckBoxMenuItemUI
+javax/swing/plaf/basic/BasicComboBoxEditor
+javax/swing/plaf/basic/BasicComboBoxEditor$BorderlessTextField
+javax/swing/plaf/basic/BasicComboBoxEditor$UIResource
+javax/swing/plaf/basic/BasicComboBoxRenderer
+javax/swing/plaf/basic/BasicComboBoxRenderer$UIResource
+javax/swing/plaf/basic/BasicComboBoxUI
+javax/swing/plaf/basic/BasicComboBoxUI$ComboBoxLayoutManager
+javax/swing/plaf/basic/BasicComboBoxUI$DefaultKeySelectionManager
+javax/swing/plaf/basic/BasicComboBoxUI$FocusHandler
+javax/swing/plaf/basic/BasicComboBoxUI$Handler
+javax/swing/plaf/basic/BasicComboBoxUI$PropertyChangeHandler
+javax/swing/plaf/basic/BasicComboPopup
+javax/swing/plaf/basic/BasicComboPopup$1
+javax/swing/plaf/basic/BasicComboPopup$EmptyListModelClass
+javax/swing/plaf/basic/BasicComboPopup$Handler
+javax/swing/plaf/basic/BasicGraphicsUtils
+javax/swing/plaf/basic/BasicHTML
+javax/swing/plaf/basic/BasicIconFactory
+javax/swing/plaf/basic/BasicIconFactory$MenuItemArrowIcon
+javax/swing/plaf/basic/BasicIconFactory$MenuItemCheckIcon
+javax/swing/plaf/basic/BasicLabelUI
+javax/swing/plaf/basic/BasicListUI
+javax/swing/plaf/basic/BasicListUI$FocusHandler
+javax/swing/plaf/basic/BasicListUI$Handler
+javax/swing/plaf/basic/BasicListUI$ListTransferHandler
+javax/swing/plaf/basic/BasicListUI$MouseInputHandler
+javax/swing/plaf/basic/BasicListUI$PropertyChangeHandler
+javax/swing/plaf/basic/BasicLookAndFeel
+javax/swing/plaf/basic/BasicLookAndFeel$1
+javax/swing/plaf/basic/BasicLookAndFeel$2
+javax/swing/plaf/basic/BasicLookAndFeel$AWTEventHelper
+javax/swing/plaf/basic/BasicMenuBarUI
+javax/swing/plaf/basic/BasicMenuBarUI$Handler
+javax/swing/plaf/basic/BasicMenuItemUI
+javax/swing/plaf/basic/BasicMenuItemUI$Handler
+javax/swing/plaf/basic/BasicMenuUI
+javax/swing/plaf/basic/BasicMenuUI$ChangeHandler
+javax/swing/plaf/basic/BasicMenuUI$Handler
+javax/swing/plaf/basic/BasicMenuUI$MouseInputHandler
+javax/swing/plaf/basic/BasicPanelUI
+javax/swing/plaf/basic/BasicPopupMenuUI
+javax/swing/plaf/basic/BasicPopupMenuUI$BasicMenuKeyListener
+javax/swing/plaf/basic/BasicPopupMenuUI$BasicPopupMenuListener
+javax/swing/plaf/basic/BasicPopupMenuUI$MenuKeyboardHelper
+javax/swing/plaf/basic/BasicPopupMenuUI$MenuKeyboardHelper$1
+javax/swing/plaf/basic/BasicPopupMenuUI$MouseGrabber
+javax/swing/plaf/basic/BasicProgressBarUI
+javax/swing/plaf/basic/BasicProgressBarUI$Handler
+javax/swing/plaf/basic/BasicRadioButtonMenuItemUI
+javax/swing/plaf/basic/BasicRadioButtonUI
+javax/swing/plaf/basic/BasicRootPaneUI
+javax/swing/plaf/basic/BasicRootPaneUI$RootPaneInputMap
+javax/swing/plaf/basic/BasicScrollBarUI
+javax/swing/plaf/basic/BasicScrollBarUI$ArrowButtonListener
+javax/swing/plaf/basic/BasicScrollBarUI$Handler
+javax/swing/plaf/basic/BasicScrollBarUI$ModelListener
+javax/swing/plaf/basic/BasicScrollBarUI$PropertyChangeHandler
+javax/swing/plaf/basic/BasicScrollBarUI$ScrollListener
+javax/swing/plaf/basic/BasicScrollBarUI$TrackListener
+javax/swing/plaf/basic/BasicScrollPaneUI
+javax/swing/plaf/basic/BasicScrollPaneUI$Handler
+javax/swing/plaf/basic/BasicScrollPaneUI$MouseWheelHandler
+javax/swing/plaf/basic/BasicSeparatorUI
+javax/swing/plaf/basic/BasicSliderUI
+javax/swing/plaf/basic/BasicSliderUI$Actions
+javax/swing/plaf/basic/BasicSliderUI$Handler
+javax/swing/plaf/basic/BasicSliderUI$PropertyChangeHandler
+javax/swing/plaf/basic/BasicSliderUI$ScrollListener
+javax/swing/plaf/basic/BasicSliderUI$TrackListener
+javax/swing/plaf/basic/BasicSplitPaneDivider
+javax/swing/plaf/basic/BasicSplitPaneDivider$DividerLayout
+javax/swing/plaf/basic/BasicSplitPaneDivider$MouseHandler
+javax/swing/plaf/basic/BasicSplitPaneDivider$OneTouchActionHandler
+javax/swing/plaf/basic/BasicSplitPaneUI
+javax/swing/plaf/basic/BasicSplitPaneUI$1
+javax/swing/plaf/basic/BasicSplitPaneUI$BasicHorizontalLayoutManager
+javax/swing/plaf/basic/BasicSplitPaneUI$Handler
+javax/swing/plaf/basic/BasicTabbedPaneUI
+javax/swing/plaf/basic/BasicTabbedPaneUI$Handler
+javax/swing/plaf/basic/BasicTabbedPaneUI$TabbedPaneLayout
+javax/swing/plaf/basic/BasicTabbedPaneUI$TabbedPaneScrollLayout
+javax/swing/plaf/basic/BasicTableHeaderUI
+javax/swing/plaf/basic/BasicTableHeaderUI$1
+javax/swing/plaf/basic/BasicTableHeaderUI$MouseInputHandler
+javax/swing/plaf/basic/BasicTableUI
+javax/swing/plaf/basic/BasicTableUI$Handler
+javax/swing/plaf/basic/BasicTableUI$TableTransferHandler
+javax/swing/plaf/basic/BasicTextAreaUI
+javax/swing/plaf/basic/BasicTextFieldUI
+javax/swing/plaf/basic/BasicTextUI
+javax/swing/plaf/basic/BasicTextUI$BasicCaret
+javax/swing/plaf/basic/BasicTextUI$BasicCursor
+javax/swing/plaf/basic/BasicTextUI$BasicHighlighter
+javax/swing/plaf/basic/BasicTextUI$DragListener
+javax/swing/plaf/basic/BasicTextUI$FocusAction
+javax/swing/plaf/basic/BasicTextUI$RootView
+javax/swing/plaf/basic/BasicTextUI$TextActionWrapper
+javax/swing/plaf/basic/BasicTextUI$TextTransferHandler
+javax/swing/plaf/basic/BasicTextUI$TextTransferHandler$TextTransferable
+javax/swing/plaf/basic/BasicTextUI$UpdateHandler
+javax/swing/plaf/basic/BasicToggleButtonUI
+javax/swing/plaf/basic/BasicToolBarSeparatorUI
+javax/swing/plaf/basic/BasicToolBarUI
+javax/swing/plaf/basic/BasicToolBarUI$DockingListener
+javax/swing/plaf/basic/BasicToolBarUI$Handler
+javax/swing/plaf/basic/BasicTransferable
+javax/swing/plaf/basic/BasicTreeUI
+javax/swing/plaf/basic/BasicTreeUI$Actions
+javax/swing/plaf/basic/BasicTreeUI$Handler
+javax/swing/plaf/basic/BasicTreeUI$NodeDimensionsHandler
+javax/swing/plaf/basic/BasicTreeUI$TreeTransferHandler
+javax/swing/plaf/basic/BasicViewportUI
+javax/swing/plaf/basic/ComboPopup
+javax/swing/plaf/basic/DefaultMenuLayout
+javax/swing/plaf/basic/DragRecognitionSupport$BeforeDrag
+javax/swing/plaf/basic/LazyActionMap
+javax/swing/plaf/metal/DefaultMetalTheme
+javax/swing/plaf/metal/DefaultMetalTheme$FontDelegate
+javax/swing/plaf/metal/DefaultMetalTheme$FontDelegate$1
+javax/swing/plaf/metal/MetalBorders
+javax/swing/plaf/metal/MetalBorders$ButtonBorder
+javax/swing/plaf/metal/MetalBorders$Flush3DBorder
+javax/swing/plaf/metal/MetalBorders$MenuBarBorder
+javax/swing/plaf/metal/MetalBorders$MenuItemBorder
+javax/swing/plaf/metal/MetalBorders$PopupMenuBorder
+javax/swing/plaf/metal/MetalBorders$RolloverButtonBorder
+javax/swing/plaf/metal/MetalBorders$RolloverMarginBorder
+javax/swing/plaf/metal/MetalBorders$ScrollPaneBorder
+javax/swing/plaf/metal/MetalBorders$TextFieldBorder
+javax/swing/plaf/metal/MetalBorders$ToggleButtonBorder
+javax/swing/plaf/metal/MetalBorders$ToolBarBorder
+javax/swing/plaf/metal/MetalBumps
+javax/swing/plaf/metal/MetalButtonUI
+javax/swing/plaf/metal/MetalCheckBoxUI
+javax/swing/plaf/metal/MetalComboBoxButton
+javax/swing/plaf/metal/MetalComboBoxButton$1
+javax/swing/plaf/metal/MetalComboBoxEditor
+javax/swing/plaf/metal/MetalComboBoxEditor$1
+javax/swing/plaf/metal/MetalComboBoxEditor$EditorBorder
+javax/swing/plaf/metal/MetalComboBoxEditor$UIResource
+javax/swing/plaf/metal/MetalComboBoxIcon
+javax/swing/plaf/metal/MetalComboBoxUI
+javax/swing/plaf/metal/MetalComboBoxUI$MetalComboBoxLayoutManager
+javax/swing/plaf/metal/MetalComboBoxUI$MetalPropertyChangeListener
+javax/swing/plaf/metal/MetalIconFactory
+javax/swing/plaf/metal/MetalIconFactory$CheckBoxIcon
+javax/swing/plaf/metal/MetalIconFactory$CheckBoxMenuItemIcon
+javax/swing/plaf/metal/MetalIconFactory$FolderIcon16
+javax/swing/plaf/metal/MetalIconFactory$HorizontalSliderThumbIcon
+javax/swing/plaf/metal/MetalIconFactory$MenuArrowIcon
+javax/swing/plaf/metal/MetalIconFactory$MenuItemArrowIcon
+javax/swing/plaf/metal/MetalIconFactory$RadioButtonIcon
+javax/swing/plaf/metal/MetalIconFactory$RadioButtonMenuItemIcon
+javax/swing/plaf/metal/MetalIconFactory$TreeFolderIcon
+javax/swing/plaf/metal/MetalIconFactory$VerticalSliderThumbIcon
+javax/swing/plaf/metal/MetalLabelUI
+javax/swing/plaf/metal/MetalLookAndFeel
+javax/swing/plaf/metal/MetalLookAndFeel$AATextListener
+javax/swing/plaf/metal/MetalLookAndFeel$FontActiveValue
+javax/swing/plaf/metal/MetalLookAndFeel$MetalLazyValue
+javax/swing/plaf/metal/MetalLookAndFeel$MetalLazyValue$1
+javax/swing/plaf/metal/MetalPopupMenuSeparatorUI
+javax/swing/plaf/metal/MetalProgressBarUI
+javax/swing/plaf/metal/MetalRadioButtonUI
+javax/swing/plaf/metal/MetalRootPaneUI
+javax/swing/plaf/metal/MetalScrollBarUI
+javax/swing/plaf/metal/MetalScrollBarUI$ScrollBarListener
+javax/swing/plaf/metal/MetalScrollButton
+javax/swing/plaf/metal/MetalScrollPaneUI
+javax/swing/plaf/metal/MetalScrollPaneUI$1
+javax/swing/plaf/metal/MetalSeparatorUI
+javax/swing/plaf/metal/MetalSliderUI
+javax/swing/plaf/metal/MetalSliderUI$MetalPropertyListener
+javax/swing/plaf/metal/MetalSplitPaneDivider
+javax/swing/plaf/metal/MetalSplitPaneDivider$1
+javax/swing/plaf/metal/MetalSplitPaneDivider$2
+javax/swing/plaf/metal/MetalSplitPaneUI
+javax/swing/plaf/metal/MetalTabbedPaneUI
+javax/swing/plaf/metal/MetalTabbedPaneUI$TabbedPaneLayout
+javax/swing/plaf/metal/MetalTextFieldUI
+javax/swing/plaf/metal/MetalTheme
+javax/swing/plaf/metal/MetalToggleButtonUI
+javax/swing/plaf/metal/MetalToolBarUI
+javax/swing/plaf/metal/MetalToolBarUI$MetalDockingListener
+javax/swing/plaf/metal/MetalTreeUI
+javax/swing/plaf/metal/MetalTreeUI$LineListener
+javax/swing/plaf/metal/OceanTheme
+javax/swing/plaf/metal/OceanTheme$1
+javax/swing/plaf/metal/OceanTheme$2
+javax/swing/plaf/metal/OceanTheme$3
+javax/swing/plaf/metal/OceanTheme$4
+javax/swing/plaf/metal/OceanTheme$5
+javax/swing/plaf/metal/OceanTheme$6
+javax/swing/plaf/synth/SynthConstants
+javax/swing/plaf/synth/SynthUI
+javax/swing/table/AbstractTableModel
+javax/swing/table/DefaultTableCellRenderer
+javax/swing/table/DefaultTableColumnModel
+javax/swing/table/DefaultTableModel
+javax/swing/table/JTableHeader
+javax/swing/table/TableCellEditor
+javax/swing/table/TableCellRenderer
+javax/swing/table/TableColumn
+javax/swing/table/TableColumnModel
+javax/swing/table/TableModel
+javax/swing/text/AbstractDocument
+javax/swing/text/AbstractDocument$1
+javax/swing/text/AbstractDocument$AbstractElement
+javax/swing/text/AbstractDocument$AttributeContext
+javax/swing/text/AbstractDocument$BidiElement
+javax/swing/text/AbstractDocument$BidiRootElement
+javax/swing/text/AbstractDocument$BranchElement
+javax/swing/text/AbstractDocument$Content
+javax/swing/text/AbstractDocument$DefaultDocumentEvent
+javax/swing/text/AbstractDocument$ElementEdit
+javax/swing/text/AbstractDocument$LeafElement
+javax/swing/text/AttributeSet
+javax/swing/text/AttributeSet$CharacterAttribute
+javax/swing/text/AttributeSet$ColorAttribute
+javax/swing/text/AttributeSet$FontAttribute
+javax/swing/text/AttributeSet$ParagraphAttribute
+javax/swing/text/Caret
+javax/swing/text/DefaultCaret
+javax/swing/text/DefaultCaret$1
+javax/swing/text/DefaultCaret$Handler
+javax/swing/text/DefaultEditorKit
+javax/swing/text/DefaultEditorKit$BeepAction
+javax/swing/text/DefaultEditorKit$BeginAction
+javax/swing/text/DefaultEditorKit$BeginLineAction
+javax/swing/text/DefaultEditorKit$BeginParagraphAction
+javax/swing/text/DefaultEditorKit$BeginWordAction
+javax/swing/text/DefaultEditorKit$CopyAction
+javax/swing/text/DefaultEditorKit$CutAction
+javax/swing/text/DefaultEditorKit$DefaultKeyTypedAction
+javax/swing/text/DefaultEditorKit$DeleteNextCharAction
+javax/swing/text/DefaultEditorKit$DeletePrevCharAction
+javax/swing/text/DefaultEditorKit$DeleteWordAction
+javax/swing/text/DefaultEditorKit$DumpModelAction
+javax/swing/text/DefaultEditorKit$EndAction
+javax/swing/text/DefaultEditorKit$EndLineAction
+javax/swing/text/DefaultEditorKit$EndParagraphAction
+javax/swing/text/DefaultEditorKit$EndWordAction
+javax/swing/text/DefaultEditorKit$InsertBreakAction
+javax/swing/text/DefaultEditorKit$InsertContentAction
+javax/swing/text/DefaultEditorKit$InsertTabAction
+javax/swing/text/DefaultEditorKit$NextVisualPositionAction
+javax/swing/text/DefaultEditorKit$NextWordAction
+javax/swing/text/DefaultEditorKit$PageAction
+javax/swing/text/DefaultEditorKit$PasteAction
+javax/swing/text/DefaultEditorKit$PreviousWordAction
+javax/swing/text/DefaultEditorKit$ReadOnlyAction
+javax/swing/text/DefaultEditorKit$SelectAllAction
+javax/swing/text/DefaultEditorKit$SelectLineAction
+javax/swing/text/DefaultEditorKit$SelectParagraphAction
+javax/swing/text/DefaultEditorKit$SelectWordAction
+javax/swing/text/DefaultEditorKit$ToggleComponentOrientationAction
+javax/swing/text/DefaultEditorKit$UnselectAction
+javax/swing/text/DefaultEditorKit$VerticalPageAction
+javax/swing/text/DefaultEditorKit$WritableAction
+javax/swing/text/DefaultHighlighter
+javax/swing/text/DefaultHighlighter$DefaultHighlightPainter
+javax/swing/text/DefaultHighlighter$HighlightInfo
+javax/swing/text/DefaultHighlighter$LayeredHighlightInfo
+javax/swing/text/DefaultHighlighter$SafeDamager
+javax/swing/text/Document
+javax/swing/text/EditorKit
+javax/swing/text/Element
+javax/swing/text/FieldView
+javax/swing/text/GapContent
+javax/swing/text/GapContent$InsertUndo
+javax/swing/text/GapContent$MarkData
+javax/swing/text/GapContent$MarkVector
+javax/swing/text/GapContent$StickyPosition
+javax/swing/text/GapVector
+javax/swing/text/Highlighter
+javax/swing/text/Highlighter$Highlight
+javax/swing/text/Highlighter$HighlightPainter
+javax/swing/text/JTextComponent
+javax/swing/text/JTextComponent$1
+javax/swing/text/JTextComponent$DefaultKeymap
+javax/swing/text/JTextComponent$KeymapActionMap
+javax/swing/text/JTextComponent$KeymapWrapper
+javax/swing/text/JTextComponent$MutableCaretEvent
+javax/swing/text/Keymap
+javax/swing/text/LayeredHighlighter
+javax/swing/text/LayeredHighlighter$LayerPainter
+javax/swing/text/MutableAttributeSet
+javax/swing/text/PlainDocument
+javax/swing/text/PlainView
+javax/swing/text/Position
+javax/swing/text/Position$Bias
+javax/swing/text/Segment
+javax/swing/text/SegmentCache
+javax/swing/text/SegmentCache$CachedSegment
+javax/swing/text/SimpleAttributeSet
+javax/swing/text/SimpleAttributeSet$EmptyAttributeSet
+javax/swing/text/Style
+javax/swing/text/StyleConstants
+javax/swing/text/StyleConstants$CharacterConstants
+javax/swing/text/StyleConstants$ColorConstants
+javax/swing/text/StyleConstants$FontConstants
+javax/swing/text/StyleConstants$ParagraphConstants
+javax/swing/text/StyleContext
+javax/swing/text/StyleContext$FontKey
+javax/swing/text/StyleContext$KeyEnumeration
+javax/swing/text/StyleContext$NamedStyle
+javax/swing/text/StyleContext$SmallAttributeSet
+javax/swing/text/TabExpander
+javax/swing/text/TextAction
+javax/swing/text/Utilities
+javax/swing/text/View
+javax/swing/text/ViewFactory
+javax/swing/tree/AbstractLayoutCache
+javax/swing/tree/AbstractLayoutCache$NodeDimensions
+javax/swing/tree/DefaultMutableTreeNode
+javax/swing/tree/DefaultMutableTreeNode$PreorderEnumeration
+javax/swing/tree/DefaultTreeCellEditor
+javax/swing/tree/DefaultTreeCellEditor$1
+javax/swing/tree/DefaultTreeCellEditor$DefaultTextField
+javax/swing/tree/DefaultTreeCellEditor$EditorContainer
+javax/swing/tree/DefaultTreeCellRenderer
+javax/swing/tree/DefaultTreeModel
+javax/swing/tree/DefaultTreeSelectionModel
+javax/swing/tree/MutableTreeNode
+javax/swing/tree/PathPlaceHolder
+javax/swing/tree/RowMapper
+javax/swing/tree/TreeCellEditor
+javax/swing/tree/TreeCellRenderer
+javax/swing/tree/TreeModel
+javax/swing/tree/TreeNode
+javax/swing/tree/TreePath
+javax/swing/tree/TreeSelectionModel
+javax/swing/tree/VariableHeightLayoutCache
+javax/swing/tree/VariableHeightLayoutCache$TreeStateNode
+javax/swing/undo/AbstractUndoableEdit
+javax/swing/undo/CompoundEdit
+javax/swing/undo/UndoableEdit
+javax/xml/parsers/DocumentBuilder
+javax/xml/parsers/DocumentBuilderFactory
+javax/xml/parsers/FactoryFinder
+javax/xml/parsers/FactoryFinder$1
+javax/xml/parsers/ParserConfigurationException
+javax/xml/parsers/SecuritySupport
+javax/xml/parsers/SecuritySupport$2
+javax/xml/parsers/SecuritySupport$5
+org/w3c/dom/Attr
+org/w3c/dom/CDATASection
+org/w3c/dom/CharacterData
+org/w3c/dom/Comment
+org/w3c/dom/DOMException
+org/w3c/dom/Document
+org/w3c/dom/DocumentFragment
+org/w3c/dom/DocumentType
+org/w3c/dom/Element
+org/w3c/dom/Entity
+org/w3c/dom/EntityReference
+org/w3c/dom/NamedNodeMap
+org/w3c/dom/Node
+org/w3c/dom/NodeList
+org/w3c/dom/Notation
+org/w3c/dom/ProcessingInstruction
+org/w3c/dom/Text
+org/w3c/dom/events/DocumentEvent
+org/w3c/dom/events/Event
+org/w3c/dom/events/EventException
+org/w3c/dom/events/EventTarget
+org/w3c/dom/events/MutationEvent
+org/w3c/dom/ranges/DocumentRange
+org/w3c/dom/ranges/Range
+org/w3c/dom/traversal/DocumentTraversal
+org/w3c/dom/traversal/NodeIterator
+org/w3c/dom/traversal/TreeWalker
+org/xml/sax/AttributeList
+org/xml/sax/ContentHandler
+org/xml/sax/DTDHandler
+org/xml/sax/EntityResolver
+org/xml/sax/ErrorHandler
+org/xml/sax/InputSource
+org/xml/sax/Locator
+org/xml/sax/SAXException
+org/xml/sax/SAXNotRecognizedException
+org/xml/sax/SAXNotSupportedException
+org/xml/sax/SAXParseException
+org/xml/sax/helpers/DefaultHandler
+sun/awt/AWTAccessor
+sun/awt/AWTAccessor$AWTEventAccessor
+sun/awt/AWTAccessor$ClientPropertyKeyAccessor
+sun/awt/AWTAccessor$ComponentAccessor
+sun/awt/AWTAccessor$ContainerAccessor
+sun/awt/AWTAccessor$CursorAccessor
+sun/awt/AWTAccessor$DefaultKeyboardFocusManagerAccessor
+sun/awt/AWTAccessor$EventQueueAccessor
+sun/awt/AWTAccessor$FrameAccessor
+sun/awt/AWTAccessor$InputEventAccessor
+sun/awt/AWTAccessor$InvocationEventAccessor
+sun/awt/AWTAccessor$KeyEventAccessor
+sun/awt/AWTAccessor$KeyboardFocusManagerAccessor
+sun/awt/AWTAccessor$SequencedEventAccessor
+sun/awt/AWTAccessor$ToolkitAccessor
+sun/awt/AWTAccessor$WindowAccessor
+sun/awt/AWTAutoShutdown
+sun/awt/AWTIcon32_java_icon16_png
+sun/awt/AWTIcon32_java_icon24_png
+sun/awt/AWTIcon32_java_icon32_png
+sun/awt/AWTIcon32_java_icon48_png
+sun/awt/AWTIcon64_java_icon16_png
+sun/awt/AWTIcon64_java_icon24_png
+sun/awt/AWTIcon64_java_icon32_png
+sun/awt/AWTIcon64_java_icon48_png
+sun/awt/AppContext
+sun/awt/AppContext$1
+sun/awt/AppContext$2
+sun/awt/AppContext$3
+sun/awt/AppContext$6
+sun/awt/AppContext$GetAppContextLock
+sun/awt/AppContext$State
+sun/awt/CausedFocusEvent
+sun/awt/CausedFocusEvent$Cause
+sun/awt/ComponentFactory
+sun/awt/ConstrainableGraphics
+sun/awt/DisplayChangedListener
+sun/awt/EmbeddedFrame
+sun/awt/EventQueueDelegate
+sun/awt/EventQueueItem
+sun/awt/FontConfiguration
+sun/awt/FontConfiguration$1
+sun/awt/FontDescriptor
+sun/awt/GlobalCursorManager
+sun/awt/GlobalCursorManager$NativeUpdater
+sun/awt/HeadlessToolkit
+sun/awt/IconInfo
+sun/awt/InputMethodSupport
+sun/awt/KeyboardFocusManagerPeerImpl
+sun/awt/KeyboardFocusManagerPeerProvider
+sun/awt/LightweightFrame
+sun/awt/ModalExclude
+sun/awt/ModalityEvent
+sun/awt/ModalityListener
+sun/awt/MostRecentKeyValue
+sun/awt/Mutex
+sun/awt/NullComponentPeer
+sun/awt/OSInfo
+sun/awt/OSInfo$1
+sun/awt/OSInfo$OSType
+sun/awt/OSInfo$WindowsVersion
+sun/awt/PaintEventDispatcher
+sun/awt/PeerEvent
+sun/awt/PostEventQueue
+sun/awt/RepaintArea
+sun/awt/RequestFocusController
+sun/awt/SubRegionShowable
+sun/awt/SunDisplayChanger
+sun/awt/SunGraphicsCallback
+sun/awt/SunHints
+sun/awt/SunHints$Key
+sun/awt/SunHints$LCDContrastKey
+sun/awt/SunHints$Value
+sun/awt/SunToolkit
+sun/awt/SunToolkit$1
+sun/awt/SunToolkit$ModalityListenerList
+sun/awt/TimedWindowEvent
+sun/awt/UNIXToolkit
+sun/awt/WindowClosingListener
+sun/awt/WindowClosingSupport
+sun/awt/X11/AwtGraphicsConfigData
+sun/awt/X11/AwtScreenData
+sun/awt/X11/MotifColorUtilities
+sun/awt/X11/MotifDnDConstants
+sun/awt/X11/MotifDnDDragSourceProtocol
+sun/awt/X11/MotifDnDDropTargetProtocol
+sun/awt/X11/Native
+sun/awt/X11/Native$1
+sun/awt/X11/OwnershipListener
+sun/awt/X11/PropMwmHints
+sun/awt/X11/UnsafeXDisposerRecord
+sun/awt/X11/WindowDimensions
+sun/awt/X11/WindowPropertyGetter
+sun/awt/X11/XAWTXSettings
+sun/awt/X11/XAnyEvent
+sun/awt/X11/XAtom
+sun/awt/X11/XAtomList
+sun/awt/X11/XAwtState
+sun/awt/X11/XBaseWindow
+sun/awt/X11/XBaseWindow$1
+sun/awt/X11/XBaseWindow$InitialiseState
+sun/awt/X11/XBaseWindow$StateLock
+sun/awt/X11/XCanvasPeer
+sun/awt/X11/XClientMessageEvent
+sun/awt/X11/XClipboard
+sun/awt/X11/XComponentPeer
+sun/awt/X11/XComponentPeer$1
+sun/awt/X11/XConfigureEvent
+sun/awt/X11/XContentWindow
+sun/awt/X11/XCreateWindowParams
+sun/awt/X11/XDecoratedPeer
+sun/awt/X11/XDnDConstants
+sun/awt/X11/XDnDDragSourceProtocol
+sun/awt/X11/XDnDDropTargetProtocol
+sun/awt/X11/XDragAndDropProtocols
+sun/awt/X11/XDragSourceContextPeer
+sun/awt/X11/XDragSourceProtocol
+sun/awt/X11/XDragSourceProtocolListener
+sun/awt/X11/XDropTargetContextPeer
+sun/awt/X11/XDropTargetContextPeer$XDropTargetProtocolListenerImpl
+sun/awt/X11/XDropTargetEventProcessor
+sun/awt/X11/XDropTargetProtocol
+sun/awt/X11/XDropTargetProtocolListener
+sun/awt/X11/XDropTargetRegistry
+sun/awt/X11/XEmbeddedFramePeer
+sun/awt/X11/XErrorEvent
+sun/awt/X11/XErrorHandler
+sun/awt/X11/XErrorHandler$IgnoreBadWindowHandler
+sun/awt/X11/XErrorHandler$VerifyChangePropertyHandler
+sun/awt/X11/XErrorHandler$XBaseErrorHandler
+sun/awt/X11/XErrorHandlerUtil
+sun/awt/X11/XEvent
+sun/awt/X11/XEventDispatcher
+sun/awt/X11/XExposeEvent
+sun/awt/X11/XFocusChangeEvent
+sun/awt/X11/XFocusProxyWindow
+sun/awt/X11/XFramePeer
+sun/awt/X11/XGlobalCursorManager
+sun/awt/X11/XInputMethod
+sun/awt/X11/XInputMethodDescriptor
+sun/awt/X11/XKeyboardFocusManagerPeer
+sun/awt/X11/XLabelPeer
+sun/awt/X11/XLayerProtocol
+sun/awt/X11/XMSelection
+sun/awt/X11/XMSelection$1
+sun/awt/X11/XMSelection$3
+sun/awt/X11/XMSelectionListener
+sun/awt/X11/XModifierKeymap
+sun/awt/X11/XNETProtocol
+sun/awt/X11/XPanelPeer
+sun/awt/X11/XPropertyCache
+sun/awt/X11/XPropertyEvent
+sun/awt/X11/XProtocol
+sun/awt/X11/XRepaintArea
+sun/awt/X11/XReparentEvent
+sun/awt/X11/XRootWindow
+sun/awt/X11/XSelection
+sun/awt/X11/XSelection$IncrementalTransferHandler
+sun/awt/X11/XSelection$SelectionEventHandler
+sun/awt/X11/XSetWindowAttributes
+sun/awt/X11/XSizeHints
+sun/awt/X11/XStateProtocol
+sun/awt/X11/XSystemTrayPeer
+sun/awt/X11/XToolkit
+sun/awt/X11/XToolkit$1
+sun/awt/X11/XToolkit$2
+sun/awt/X11/XToolkit$2$1
+sun/awt/X11/XToolkit$3
+sun/awt/X11/XToolkit$4
+sun/awt/X11/XToolkit$5
+sun/awt/X11/XTranslateCoordinates
+sun/awt/X11/XUnmapEvent
+sun/awt/X11/XVisibilityEvent
+sun/awt/X11/XVisualInfo
+sun/awt/X11/XWINProtocol
+sun/awt/X11/XWM
+sun/awt/X11/XWM$1
+sun/awt/X11/XWMHints
+sun/awt/X11/XWindow
+sun/awt/X11/XWindowAttributes
+sun/awt/X11/XWindowAttributesData
+sun/awt/X11/XWindowPeer
+sun/awt/X11/XWindowPeer$2
+sun/awt/X11/XWindowPeer$4
+sun/awt/X11/XWrapperBase
+sun/awt/X11/XlibUtil
+sun/awt/X11/XlibWrapper
+sun/awt/X11ComponentPeer
+sun/awt/X11FontManager
+sun/awt/X11GraphicsConfig
+sun/awt/X11GraphicsConfig$X11GCDisposerRecord
+sun/awt/X11GraphicsDevice
+sun/awt/X11GraphicsEnvironment
+sun/awt/X11GraphicsEnvironment$1
+sun/awt/X11InputMethod
+sun/awt/X11InputMethodDescriptor
+sun/awt/XSettings
+sun/awt/XSettings$Update
+sun/awt/datatransfer/DataTransferer
+sun/awt/datatransfer/DataTransferer$1
+sun/awt/datatransfer/DataTransferer$CharsetComparator
+sun/awt/datatransfer/DataTransferer$IndexOrderComparator
+sun/awt/datatransfer/DataTransferer$IndexedComparator
+sun/awt/datatransfer/DataTransferer$RMI
+sun/awt/datatransfer/DataTransferer$StandardEncodingsHolder
+sun/awt/datatransfer/SunClipboard
+sun/awt/datatransfer/ToolkitThreadBlockedHandler
+sun/awt/datatransfer/TransferableProxy
+sun/awt/dnd/SunDragSourceContextPeer
+sun/awt/dnd/SunDropTargetContextPeer
+sun/awt/dnd/SunDropTargetEvent
+sun/awt/event/IgnorePaintEvent
+sun/awt/geom/PathConsumer2D
+sun/awt/im/CompositionAreaHandler
+sun/awt/im/ExecutableInputMethodManager
+sun/awt/im/ExecutableInputMethodManager$3
+sun/awt/im/InputContext
+sun/awt/im/InputMethodAdapter
+sun/awt/im/InputMethodContext
+sun/awt/im/InputMethodLocator
+sun/awt/im/InputMethodManager
+sun/awt/im/InputMethodWindow
+sun/awt/image/BufImgSurfaceData
+sun/awt/image/BufImgSurfaceData$ICMColorData
+sun/awt/image/BufImgSurfaceManager
+sun/awt/image/BufferedImageGraphicsConfig
+sun/awt/image/ByteComponentRaster
+sun/awt/image/ByteInterleavedRaster
+sun/awt/image/BytePackedRaster
+sun/awt/image/FetcherInfo
+sun/awt/image/GifFrame
+sun/awt/image/GifImageDecoder
+sun/awt/image/ImageConsumerQueue
+sun/awt/image/ImageDecoder
+sun/awt/image/ImageDecoder$1
+sun/awt/image/ImageFetchable
+sun/awt/image/ImageFetcher
+sun/awt/image/ImageFetcher$1
+sun/awt/image/ImageRepresentation
+sun/awt/image/ImageWatched
+sun/awt/image/ImageWatched$Link
+sun/awt/image/ImageWatched$WeakLink
+sun/awt/image/InputStreamImageSource
+sun/awt/image/IntegerComponentRaster
+sun/awt/image/IntegerInterleavedRaster
+sun/awt/image/NativeLibLoader
+sun/awt/image/NativeLibLoader$1
+sun/awt/image/OffScreenImage
+sun/awt/image/OffScreenImageSource
+sun/awt/image/PNGFilterInputStream
+sun/awt/image/PNGImageDecoder
+sun/awt/image/PixelConverter
+sun/awt/image/PixelConverter$Argb
+sun/awt/image/PixelConverter$ArgbBm
+sun/awt/image/PixelConverter$ArgbPre
+sun/awt/image/PixelConverter$Bgrx
+sun/awt/image/PixelConverter$ByteGray
+sun/awt/image/PixelConverter$Rgba
+sun/awt/image/PixelConverter$RgbaPre
+sun/awt/image/PixelConverter$Rgbx
+sun/awt/image/PixelConverter$Ushort4444Argb
+sun/awt/image/PixelConverter$Ushort555Rgb
+sun/awt/image/PixelConverter$Ushort555Rgbx
+sun/awt/image/PixelConverter$Ushort565Rgb
+sun/awt/image/PixelConverter$UshortGray
+sun/awt/image/PixelConverter$Xbgr
+sun/awt/image/PixelConverter$Xrgb
+sun/awt/image/SunVolatileImage
+sun/awt/image/SunWritableRaster
+sun/awt/image/SunWritableRaster$DataStealer
+sun/awt/image/SurfaceManager
+sun/awt/image/SurfaceManager$FlushableCacheData
+sun/awt/image/SurfaceManager$ImageAccessor
+sun/awt/image/SurfaceManager$ProxiedGraphicsConfig
+sun/awt/image/ToolkitImage
+sun/awt/image/URLImageSource
+sun/awt/image/VolatileSurfaceManager
+sun/awt/motif/MFontConfiguration
+sun/awt/resources/awt
+sun/awt/util/IdentityArrayList
+sun/awt/util/IdentityLinkedList
+sun/awt/util/IdentityLinkedList$Entry
+sun/awt/util/IdentityLinkedList$ListItr
+sun/font/AttributeValues
+sun/font/CMap$CMapFormat12
+sun/font/CMap$NullCMapClass
+sun/font/CharToGlyphMapper
+sun/font/CompositeFont
+sun/font/CompositeFontDescriptor
+sun/font/CompositeGlyphMapper
+sun/font/CompositeStrike
+sun/font/CoreMetrics
+sun/font/EAttribute
+sun/font/FcFontConfiguration
+sun/font/FileFont
+sun/font/FileFontStrike
+sun/font/Font2D
+sun/font/Font2DHandle
+sun/font/FontAccess
+sun/font/FontConfigManager
+sun/font/FontConfigManager$FcCompFont
+sun/font/FontConfigManager$FontConfigFont
+sun/font/FontConfigManager$FontConfigInfo
+sun/font/FontDesignMetrics
+sun/font/FontDesignMetrics$KeyReference
+sun/font/FontDesignMetrics$MetricsKey
+sun/font/FontFamily
+sun/font/FontLineMetrics
+sun/font/FontManager
+sun/font/FontManagerFactory
+sun/font/FontManagerFactory$1
+sun/font/FontManagerForSGE
+sun/font/FontManagerNativeLibrary
+sun/font/FontManagerNativeLibrary$1
+sun/font/FontScaler
+sun/font/FontStrike
+sun/font/FontStrikeDesc
+sun/font/FontStrikeDisposer
+sun/font/FontUtilities
+sun/font/FontUtilities$1
+sun/font/GlyphDisposedListener
+sun/font/GlyphList
+sun/font/PhysicalFont
+sun/font/PhysicalStrike
+sun/font/StandardGlyphVector
+sun/font/StandardGlyphVector$GlyphStrike
+sun/font/StrikeCache
+sun/font/StrikeCache$1
+sun/font/StrikeCache$DisposableStrike
+sun/font/StrikeCache$SoftDisposerRef
+sun/font/StrikeMetrics
+sun/font/SunFontManager
+sun/font/SunFontManager$1
+sun/font/SunFontManager$11
+sun/font/SunFontManager$13
+sun/font/SunFontManager$2
+sun/font/SunFontManager$3
+sun/font/SunFontManager$FontRegistrationInfo
+sun/font/SunFontManager$T1Filter
+sun/font/SunFontManager$TTFilter
+sun/font/TrueTypeFont
+sun/font/TrueTypeFont$1
+sun/font/TrueTypeFont$DirectoryEntry
+sun/font/TrueTypeFont$TTDisposerRecord
+sun/font/TrueTypeGlyphMapper
+sun/font/Type1Font
+sun/font/Type1Font$1
+sun/font/X11TextRenderer
+sun/font/XRGlyphCache
+sun/font/XRGlyphCacheEntry
+sun/font/XRTextRenderer
+sun/java2d/BackBufferCapsProvider
+sun/java2d/DefaultDisposerRecord
+sun/java2d/DestSurfaceProvider
+sun/java2d/Disposer
+sun/java2d/Disposer$1
+sun/java2d/Disposer$2
+sun/java2d/Disposer$PollDisposable
+sun/java2d/DisposerRecord
+sun/java2d/DisposerTarget
+sun/java2d/FontSupport
+sun/java2d/InvalidPipeException
+sun/java2d/NullSurfaceData
+sun/java2d/StateTrackable
+sun/java2d/StateTrackable$State
+sun/java2d/StateTrackableDelegate
+sun/java2d/StateTrackableDelegate$1
+sun/java2d/StateTrackableDelegate$2
+sun/java2d/StateTracker
+sun/java2d/StateTracker$1
+sun/java2d/StateTracker$2
+sun/java2d/SunGraphics2D
+sun/java2d/SunGraphicsEnvironment
+sun/java2d/SunGraphicsEnvironment$1
+sun/java2d/Surface
+sun/java2d/SurfaceData
+sun/java2d/SurfaceData$PixelToPgramLoopConverter
+sun/java2d/SurfaceData$PixelToShapeLoopConverter
+sun/java2d/SurfaceDataProxy
+sun/java2d/SurfaceDataProxy$1
+sun/java2d/SurfaceManagerFactory
+sun/java2d/UnixSurfaceManagerFactory
+sun/java2d/cmm/CMSManager
+sun/java2d/cmm/ProfileActivator
+sun/java2d/cmm/ProfileDeferralInfo
+sun/java2d/cmm/ProfileDeferralMgr
+sun/java2d/jules/JulesPathBuf
+sun/java2d/jules/JulesPathBuf$1
+sun/java2d/loops/Blit
+sun/java2d/loops/BlitBg
+sun/java2d/loops/CompositeType
+sun/java2d/loops/CustomComponent
+sun/java2d/loops/DrawGlyphList
+sun/java2d/loops/DrawGlyphListAA
+sun/java2d/loops/DrawGlyphListLCD
+sun/java2d/loops/DrawLine
+sun/java2d/loops/DrawParallelogram
+sun/java2d/loops/DrawPath
+sun/java2d/loops/DrawPolygons
+sun/java2d/loops/DrawRect
+sun/java2d/loops/FillParallelogram
+sun/java2d/loops/FillPath
+sun/java2d/loops/FillRect
+sun/java2d/loops/FillSpans
+sun/java2d/loops/FontInfo
+sun/java2d/loops/GeneralRenderer
+sun/java2d/loops/GraphicsPrimitive
+sun/java2d/loops/GraphicsPrimitiveMgr
+sun/java2d/loops/GraphicsPrimitiveMgr$1
+sun/java2d/loops/GraphicsPrimitiveMgr$2
+sun/java2d/loops/GraphicsPrimitiveMgr$PrimitiveSpec
+sun/java2d/loops/GraphicsPrimitiveProxy
+sun/java2d/loops/MaskBlit
+sun/java2d/loops/MaskFill
+sun/java2d/loops/ProcessPath
+sun/java2d/loops/ProcessPath$1
+sun/java2d/loops/ProcessPath$ActiveEdgeList
+sun/java2d/loops/ProcessPath$DrawHandler
+sun/java2d/loops/ProcessPath$Edge
+sun/java2d/loops/ProcessPath$EndSubPathHandler
+sun/java2d/loops/ProcessPath$FillData
+sun/java2d/loops/ProcessPath$FillProcessHandler
+sun/java2d/loops/ProcessPath$Point
+sun/java2d/loops/ProcessPath$ProcessHandler
+sun/java2d/loops/RenderCache
+sun/java2d/loops/RenderCache$Entry
+sun/java2d/loops/RenderLoops
+sun/java2d/loops/ScaledBlit
+sun/java2d/loops/SurfaceType
+sun/java2d/loops/TransformBlit
+sun/java2d/loops/TransformHelper
+sun/java2d/loops/XORComposite
+sun/java2d/opengl/GLXGraphicsConfig
+sun/java2d/opengl/OGLAnyCompositeBlit
+sun/java2d/opengl/OGLBlitLoops
+sun/java2d/opengl/OGLContext
+sun/java2d/opengl/OGLContext$OGLContextCaps
+sun/java2d/opengl/OGLDrawImage
+sun/java2d/opengl/OGLGeneralBlit
+sun/java2d/opengl/OGLGraphicsConfig
+sun/java2d/opengl/OGLMaskBlit
+sun/java2d/opengl/OGLMaskFill
+sun/java2d/opengl/OGLRTTSurfaceToSurfaceBlit
+sun/java2d/opengl/OGLRTTSurfaceToSurfaceScale
+sun/java2d/opengl/OGLRTTSurfaceToSurfaceTransform
+sun/java2d/opengl/OGLRenderQueue
+sun/java2d/opengl/OGLRenderQueue$1
+sun/java2d/opengl/OGLRenderQueue$QueueFlusher
+sun/java2d/opengl/OGLRenderer
+sun/java2d/opengl/OGLSurfaceData
+sun/java2d/opengl/OGLSurfaceData$1
+sun/java2d/opengl/OGLSurfaceDataProxy
+sun/java2d/opengl/OGLSurfaceToSurfaceBlit
+sun/java2d/opengl/OGLSurfaceToSurfaceScale
+sun/java2d/opengl/OGLSurfaceToSurfaceTransform
+sun/java2d/opengl/OGLSurfaceToSwBlit
+sun/java2d/opengl/OGLSwToSurfaceBlit
+sun/java2d/opengl/OGLSwToSurfaceScale
+sun/java2d/opengl/OGLSwToSurfaceTransform
+sun/java2d/opengl/OGLSwToTextureBlit
+sun/java2d/opengl/OGLTextRenderer
+sun/java2d/opengl/OGLTextureToSurfaceBlit
+sun/java2d/opengl/OGLTextureToSurfaceScale
+sun/java2d/opengl/OGLTextureToSurfaceTransform
+sun/java2d/pipe/AAShapePipe
+sun/java2d/pipe/AATextRenderer
+sun/java2d/pipe/AlphaColorPipe
+sun/java2d/pipe/AlphaPaintPipe
+sun/java2d/pipe/BufferedContext
+sun/java2d/pipe/BufferedMaskBlit
+sun/java2d/pipe/BufferedMaskFill
+sun/java2d/pipe/BufferedPaints
+sun/java2d/pipe/BufferedRenderPipe
+sun/java2d/pipe/BufferedRenderPipe$AAParallelogramPipe
+sun/java2d/pipe/BufferedRenderPipe$BufferedDrawHandler
+sun/java2d/pipe/BufferedTextPipe
+sun/java2d/pipe/CompositePipe
+sun/java2d/pipe/DrawImage
+sun/java2d/pipe/DrawImagePipe
+sun/java2d/pipe/GeneralCompositePipe
+sun/java2d/pipe/GlyphListLoopPipe
+sun/java2d/pipe/GlyphListPipe
+sun/java2d/pipe/LCDTextRenderer
+sun/java2d/pipe/LoopBasedPipe
+sun/java2d/pipe/LoopPipe
+sun/java2d/pipe/NullPipe
+sun/java2d/pipe/OutlineTextRenderer
+sun/java2d/pipe/ParallelogramPipe
+sun/java2d/pipe/PixelDrawPipe
+sun/java2d/pipe/PixelFillPipe
+sun/java2d/pipe/PixelToParallelogramConverter
+sun/java2d/pipe/PixelToShapeConverter
+sun/java2d/pipe/Region
+sun/java2d/pipe/Region$ImmutableRegion
+sun/java2d/pipe/RegionIterator
+sun/java2d/pipe/RenderBuffer
+sun/java2d/pipe/RenderQueue
+sun/java2d/pipe/RenderingEngine
+sun/java2d/pipe/RenderingEngine$1
+sun/java2d/pipe/ShapeDrawPipe
+sun/java2d/pipe/ShapeSpanIterator
+sun/java2d/pipe/SolidTextRenderer
+sun/java2d/pipe/SpanClipRenderer
+sun/java2d/pipe/SpanIterator
+sun/java2d/pipe/SpanShapeRenderer
+sun/java2d/pipe/SpanShapeRenderer$Composite
+sun/java2d/pipe/TextPipe
+sun/java2d/pipe/TextRenderer
+sun/java2d/pipe/ValidatePipe
+sun/java2d/pipe/hw/AccelGraphicsConfig
+sun/java2d/pipe/hw/AccelSurface
+sun/java2d/pipe/hw/BufferedContextProvider
+sun/java2d/pipe/hw/ContextCapabilities
+sun/java2d/x11/X11Renderer
+sun/java2d/x11/X11SurfaceData
+sun/java2d/x11/X11SurfaceData$LazyPipe
+sun/java2d/x11/X11SurfaceData$X11WindowSurfaceData
+sun/java2d/x11/X11VolatileSurfaceManager
+sun/java2d/x11/XSurfaceData
+sun/java2d/xr/DirtyRegion
+sun/java2d/xr/GrowableEltArray
+sun/java2d/xr/GrowableIntArray
+sun/java2d/xr/GrowableRectArray
+sun/java2d/xr/MaskTile
+sun/java2d/xr/MaskTileManager
+sun/java2d/xr/MutableInteger
+sun/java2d/xr/XRBackend
+sun/java2d/xr/XRBackendNative
+sun/java2d/xr/XRColor
+sun/java2d/xr/XRCompositeManager
+sun/java2d/xr/XRCompositeManager$1
+sun/java2d/xr/XRDrawImage
+sun/java2d/xr/XRDrawLine
+sun/java2d/xr/XRGraphicsConfig
+sun/java2d/xr/XRMaskBlit
+sun/java2d/xr/XRMaskFill
+sun/java2d/xr/XRMaskImage
+sun/java2d/xr/XRPMBlit
+sun/java2d/xr/XRPMBlitLoops
+sun/java2d/xr/XRPMScaledBlit
+sun/java2d/xr/XRPMTransformedBlit
+sun/java2d/xr/XRPaints
+sun/java2d/xr/XRPaints$XRGradient
+sun/java2d/xr/XRPaints$XRLinearGradient
+sun/java2d/xr/XRPaints$XRRadialGradient
+sun/java2d/xr/XRPaints$XRTexture
+sun/java2d/xr/XRRenderer
+sun/java2d/xr/XRRenderer$XRDrawHandler
+sun/java2d/xr/XRSolidSrcPict
+sun/java2d/xr/XRSurfaceData
+sun/java2d/xr/XRSurfaceData$XRInternalSurfaceData
+sun/java2d/xr/XRSurfaceData$XRPixmapSurfaceData
+sun/java2d/xr/XRSurfaceData$XRWindowSurfaceData
+sun/java2d/xr/XRSurfaceDataProxy
+sun/java2d/xr/XRUtils
+sun/java2d/xr/XRVolatileSurfaceManager
+sun/java2d/xr/XrSwToPMBlit
+sun/java2d/xr/XrSwToPMScaledBlit
+sun/java2d/xr/XrSwToPMTransformedBlit
+sun/launcher/LauncherHelper
+sun/launcher/LauncherHelper$FXHelper
+sun/misc/ASCIICaseInsensitiveComparator
+sun/misc/Cleaner
+sun/misc/CompoundEnumeration
+sun/misc/ExtensionDependency
+sun/misc/FDBigInteger
+sun/misc/FileURLMapper
+sun/misc/FloatingDecimal
+sun/misc/FloatingDecimal$1
+sun/misc/FloatingDecimal$ASCIIToBinaryBuffer
+sun/misc/FloatingDecimal$ASCIIToBinaryConverter
+sun/misc/FloatingDecimal$BinaryToASCIIBuffer
+sun/misc/FloatingDecimal$BinaryToASCIIConverter
+sun/misc/FloatingDecimal$ExceptionalBinaryToASCIIBuffer
+sun/misc/FloatingDecimal$PreparedASCIIToBinaryBuffer
+sun/misc/IOUtils
+sun/misc/JarIndex
+sun/misc/JavaAWTAccess
+sun/misc/JavaIOFileDescriptorAccess
+sun/misc/JavaLangAccess
+sun/misc/JavaNetAccess
+sun/misc/JavaNioAccess
+sun/misc/JavaSecurityAccess
+sun/misc/JavaSecurityProtectionDomainAccess
+sun/misc/JavaUtilJarAccess
+sun/misc/JavaUtilZipFileAccess
+sun/misc/Launcher
+sun/misc/Launcher$AppClassLoader
+sun/misc/Launcher$AppClassLoader$1
+sun/misc/Launcher$BootClassPathHolder
+sun/misc/Launcher$BootClassPathHolder$1
+sun/misc/Launcher$ExtClassLoader
+sun/misc/Launcher$ExtClassLoader$1
+sun/misc/Launcher$Factory
+sun/misc/MetaIndex
+sun/misc/NativeSignalHandler
+sun/misc/OSEnvironment
+sun/misc/Perf
+sun/misc/Perf$GetPerfAction
+sun/misc/PerfCounter
+sun/misc/PerfCounter$CoreCounters
+sun/misc/PerformanceLogger
+sun/misc/PerformanceLogger$TimeData
+sun/misc/Resource
+sun/misc/SharedSecrets
+sun/misc/Signal
+sun/misc/SignalHandler
+sun/misc/SoftCache
+sun/misc/SoftCache$ValueCell
+sun/misc/URLClassPath
+sun/misc/URLClassPath$1
+sun/misc/URLClassPath$2
+sun/misc/URLClassPath$3
+sun/misc/URLClassPath$FileLoader
+sun/misc/URLClassPath$JarLoader
+sun/misc/URLClassPath$JarLoader$1
+sun/misc/URLClassPath$JarLoader$2
+sun/misc/URLClassPath$Loader
+sun/misc/Unsafe
+sun/misc/VM
+sun/misc/Version
+sun/net/DefaultProgressMeteringPolicy
+sun/net/InetAddressCachePolicy
+sun/net/InetAddressCachePolicy$1
+sun/net/InetAddressCachePolicy$2
+sun/net/NetHooks
+sun/net/NetHooks$Provider
+sun/net/NetProperties
+sun/net/NetProperties$1
+sun/net/ProgressMeteringPolicy
+sun/net/ProgressMonitor
+sun/net/ResourceManager
+sun/net/sdp/SdpProvider
+sun/net/spi/DefaultProxySelector
+sun/net/spi/DefaultProxySelector$1
+sun/net/spi/DefaultProxySelector$3
+sun/net/spi/DefaultProxySelector$NonProxyInfo
+sun/net/spi/nameservice/NameService
+sun/net/util/IPAddressUtil
+sun/net/util/URLUtil
+sun/net/www/MessageHeader
+sun/net/www/MimeEntry
+sun/net/www/MimeTable
+sun/net/www/MimeTable$1
+sun/net/www/MimeTable$DefaultInstanceHolder
+sun/net/www/MimeTable$DefaultInstanceHolder$1
+sun/net/www/ParseUtil
+sun/net/www/URLConnection
+sun/net/www/protocol/file/FileURLConnection
+sun/net/www/protocol/file/Handler
+sun/net/www/protocol/http/Handler
+sun/net/www/protocol/jar/Handler
+sun/net/www/protocol/jar/JarFileFactory
+sun/net/www/protocol/jar/JarURLConnection
+sun/net/www/protocol/jar/JarURLConnection$JarURLInputStream
+sun/net/www/protocol/jar/URLJarFile
+sun/net/www/protocol/jar/URLJarFile$URLJarFileCloseController
+sun/net/www/protocol/jar/URLJarFile$URLJarFileEntry
+sun/nio/ByteBuffered
+sun/nio/ch/DirectBuffer
+sun/nio/ch/FileChannelImpl
+sun/nio/ch/FileChannelImpl$Unmapper
+sun/nio/ch/FileDispatcher
+sun/nio/ch/FileDispatcherImpl
+sun/nio/ch/IOStatus
+sun/nio/ch/IOUtil
+sun/nio/ch/IOUtil$1
+sun/nio/ch/Interruptible
+sun/nio/ch/NativeDispatcher
+sun/nio/ch/NativeThread
+sun/nio/ch/NativeThreadSet
+sun/nio/ch/Util
+sun/nio/ch/Util$1
+sun/nio/ch/Util$4
+sun/nio/ch/Util$BufferCache
+sun/nio/cs/AbstractCharsetProvider
+sun/nio/cs/ArrayDecoder
+sun/nio/cs/ArrayEncoder
+sun/nio/cs/FastCharsetProvider
+sun/nio/cs/HistoricallyNamedCharset
+sun/nio/cs/ISO_8859_1
+sun/nio/cs/ISO_8859_1$Decoder
+sun/nio/cs/ISO_8859_1$Encoder
+sun/nio/cs/StandardCharsets
+sun/nio/cs/StandardCharsets$Aliases
+sun/nio/cs/StandardCharsets$Cache
+sun/nio/cs/StandardCharsets$Classes
+sun/nio/cs/StreamDecoder
+sun/nio/cs/StreamEncoder
+sun/nio/cs/Surrogate
+sun/nio/cs/Surrogate$Parser
+sun/nio/cs/US_ASCII
+sun/nio/cs/US_ASCII$Decoder
+sun/nio/cs/UTF_16
+sun/nio/cs/UTF_16$Decoder
+sun/nio/cs/UTF_16BE
+sun/nio/cs/UTF_16LE
+sun/nio/cs/UTF_8
+sun/nio/cs/UTF_8$Decoder
+sun/nio/cs/UTF_8$Encoder
+sun/nio/cs/Unicode
+sun/nio/cs/UnicodeDecoder
+sun/nio/cs/ext/DelegatableDecoder
+sun/nio/cs/ext/DoubleByte
+sun/nio/cs/ext/DoubleByte$Decoder
+sun/nio/cs/ext/EUC_KR
+sun/nio/cs/ext/ExtendedCharsets
+sun/print/PrinterGraphicsConfig
+sun/reflect/AccessorGenerator
+sun/reflect/BootstrapConstructorAccessorImpl
+sun/reflect/ByteVector
+sun/reflect/ByteVectorFactory
+sun/reflect/ByteVectorImpl
+sun/reflect/CallerSensitive
+sun/reflect/ClassDefiner
+sun/reflect/ClassDefiner$1
+sun/reflect/ClassFileAssembler
+sun/reflect/ClassFileConstants
+sun/reflect/ConstantPool
+sun/reflect/ConstructorAccessor
+sun/reflect/ConstructorAccessorImpl
+sun/reflect/DelegatingClassLoader
+sun/reflect/DelegatingConstructorAccessorImpl
+sun/reflect/DelegatingMethodAccessorImpl
+sun/reflect/FieldAccessor
+sun/reflect/FieldAccessorImpl
+sun/reflect/Label
+sun/reflect/Label$PatchInfo
+sun/reflect/LangReflectAccess
+sun/reflect/MagicAccessorImpl
+sun/reflect/MethodAccessor
+sun/reflect/MethodAccessorGenerator
+sun/reflect/MethodAccessorGenerator$1
+sun/reflect/MethodAccessorImpl
+sun/reflect/NativeConstructorAccessorImpl
+sun/reflect/NativeMethodAccessorImpl
+sun/reflect/Reflection
+sun/reflect/ReflectionFactory
+sun/reflect/ReflectionFactory$1
+sun/reflect/ReflectionFactory$GetReflectionFactoryAction
+sun/reflect/SerializationConstructorAccessorImpl
+sun/reflect/UTF8
+sun/reflect/UnsafeBooleanFieldAccessorImpl
+sun/reflect/UnsafeFieldAccessorFactory
+sun/reflect/UnsafeFieldAccessorImpl
+sun/reflect/UnsafeObjectFieldAccessorImpl
+sun/reflect/UnsafeQualifiedStaticFieldAccessorImpl
+sun/reflect/UnsafeQualifiedStaticIntegerFieldAccessorImpl
+sun/reflect/UnsafeQualifiedStaticLongFieldAccessorImpl
+sun/reflect/UnsafeQualifiedStaticObjectFieldAccessorImpl
+sun/reflect/UnsafeStaticFieldAccessorImpl
+sun/reflect/annotation/AnnotationType
+sun/reflect/generics/repository/AbstractRepository
+sun/reflect/generics/repository/ClassRepository
+sun/reflect/generics/repository/GenericDeclRepository
+sun/reflect/misc/MethodUtil
+sun/reflect/misc/MethodUtil$1
+sun/reflect/misc/ReflectUtil
+sun/security/action/GetBooleanAction
+sun/security/action/GetIntegerAction
+sun/security/action/GetPropertyAction
+sun/security/action/PutAllAction
+sun/security/jca/GetInstance
+sun/security/jca/GetInstance$Instance
+sun/security/jca/ProviderConfig
+sun/security/jca/ProviderConfig$1
+sun/security/jca/ProviderConfig$2
+sun/security/jca/ProviderConfig$3
+sun/security/jca/ProviderList
+sun/security/jca/ProviderList$1
+sun/security/jca/ProviderList$2
+sun/security/jca/ProviderList$3
+sun/security/jca/ProviderList$ServiceList
+sun/security/jca/ProviderList$ServiceList$1
+sun/security/jca/Providers
+sun/security/jca/ServiceId
+sun/security/pkcs/ContentInfo
+sun/security/pkcs/PKCS7
+sun/security/pkcs/PKCS8Key
+sun/security/pkcs/PKCS9Attribute
+sun/security/pkcs/SignerInfo
+sun/security/provider/ByteArrayAccess
+sun/security/provider/DSA
+sun/security/provider/DSA$LegacyDSA
+sun/security/provider/DSA$SHA1withDSA
+sun/security/provider/DSAKeyFactory
+sun/security/provider/DSAParameters
+sun/security/provider/DSAPublicKey
+sun/security/provider/DSAPublicKeyImpl
+sun/security/provider/DigestBase
+sun/security/provider/NativePRNG
+sun/security/provider/NativePRNG$1
+sun/security/provider/NativePRNG$2
+sun/security/provider/NativePRNG$Blocking
+sun/security/provider/NativePRNG$NonBlocking
+sun/security/provider/NativePRNG$RandomIO
+sun/security/provider/NativePRNG$Variant
+sun/security/provider/SHA
+sun/security/provider/SHA2
+sun/security/provider/SHA2$SHA256
+sun/security/provider/Sun
+sun/security/provider/SunEntries
+sun/security/provider/SunEntries$1
+sun/security/provider/X509Factory
+sun/security/provider/certpath/X509CertPath
+sun/security/rsa/RSACore
+sun/security/rsa/RSAKeyFactory
+sun/security/rsa/RSAPadding
+sun/security/rsa/RSAPrivateCrtKeyImpl
+sun/security/rsa/RSAPrivateKeyImpl
+sun/security/rsa/RSAPublicKeyImpl
+sun/security/rsa/RSASignature
+sun/security/rsa/RSASignature$SHA256withRSA
+sun/security/rsa/SunRsaSign
+sun/security/rsa/SunRsaSignEntries
+sun/security/util/BitArray
+sun/security/util/ByteArrayLexOrder
+sun/security/util/ByteArrayTagOrder
+sun/security/util/Cache
+sun/security/util/Cache$EqualByteArray
+sun/security/util/Debug
+sun/security/util/DerEncoder
+sun/security/util/DerIndefLenConverter
+sun/security/util/DerInputBuffer
+sun/security/util/DerInputStream
+sun/security/util/DerOutputStream
+sun/security/util/DerValue
+sun/security/util/Length
+sun/security/util/ManifestDigester
+sun/security/util/ManifestDigester$Entry
+sun/security/util/ManifestDigester$Position
+sun/security/util/ManifestEntryVerifier
+sun/security/util/ManifestEntryVerifier$SunProviderHolder
+sun/security/util/MemoryCache
+sun/security/util/MemoryCache$CacheEntry
+sun/security/util/MemoryCache$HardCacheEntry
+sun/security/util/MemoryCache$SoftCacheEntry
+sun/security/util/ObjectIdentifier
+sun/security/util/PropertyExpander
+sun/security/util/SignatureFileVerifier
+sun/security/x509/AVA
+sun/security/x509/AVAKeyword
+sun/security/x509/AlgorithmId
+sun/security/x509/AuthorityKeyIdentifierExtension
+sun/security/x509/BasicConstraintsExtension
+sun/security/x509/CertAttrSet
+sun/security/x509/CertificateAlgorithmId
+sun/security/x509/CertificateExtensions
+sun/security/x509/CertificateSerialNumber
+sun/security/x509/CertificateValidity
+sun/security/x509/CertificateVersion
+sun/security/x509/CertificateX509Key
+sun/security/x509/Extension
+sun/security/x509/GeneralName
+sun/security/x509/GeneralNameInterface
+sun/security/x509/GeneralNames
+sun/security/x509/KeyIdentifier
+sun/security/x509/KeyUsageExtension
+sun/security/x509/NetscapeCertTypeExtension
+sun/security/x509/NetscapeCertTypeExtension$MapEntry
+sun/security/x509/OIDMap
+sun/security/x509/OIDMap$OIDInfo
+sun/security/x509/PKIXExtensions
+sun/security/x509/RDN
+sun/security/x509/RFC822Name
+sun/security/x509/SerialNumber
+sun/security/x509/SubjectAlternativeNameExtension
+sun/security/x509/SubjectKeyIdentifierExtension
+sun/security/x509/X500Name
+sun/security/x509/X500Name$1
+sun/security/x509/X509AttributeName
+sun/security/x509/X509CertImpl
+sun/security/x509/X509CertInfo
+sun/security/x509/X509Key
+sun/swing/DefaultLookup
+sun/swing/ImageIconUIResource
+sun/swing/JLightweightFrame
+sun/swing/MenuItemLayoutHelper
+sun/swing/MenuItemLayoutHelper$ColumnAlignment
+sun/swing/MenuItemLayoutHelper$LayoutResult
+sun/swing/MenuItemLayoutHelper$RectSize
+sun/swing/PrintColorUIResource
+sun/swing/StringUIClientPropertyKey
+sun/swing/SwingAccessor
+sun/swing/SwingAccessor$JTextComponentAccessor
+sun/swing/SwingLazyValue
+sun/swing/SwingLazyValue$1
+sun/swing/SwingUtilities2
+sun/swing/SwingUtilities2$2
+sun/swing/SwingUtilities2$AATextInfo
+sun/swing/SwingUtilities2$LSBCacheEntry
+sun/swing/UIAction
+sun/swing/UIClientPropertyKey
+sun/swing/table/DefaultTableCellHeaderRenderer
+sun/swing/table/DefaultTableCellHeaderRenderer$EmptyIcon
+sun/text/ComposedCharIter
+sun/text/IntHashtable
+sun/text/UCompactIntArray
+sun/text/normalizer/CharTrie
+sun/text/normalizer/CharTrie$FriendAgent
+sun/text/normalizer/ICUBinary
+sun/text/normalizer/ICUBinary$Authenticate
+sun/text/normalizer/ICUData
+sun/text/normalizer/IntTrie
+sun/text/normalizer/NormalizerBase
+sun/text/normalizer/NormalizerBase$1
+sun/text/normalizer/NormalizerBase$Mode
+sun/text/normalizer/NormalizerBase$NFCMode
+sun/text/normalizer/NormalizerBase$NFDMode
+sun/text/normalizer/NormalizerBase$NFKCMode
+sun/text/normalizer/NormalizerBase$NFKDMode
+sun/text/normalizer/NormalizerBase$QuickCheckResult
+sun/text/normalizer/NormalizerDataReader
+sun/text/normalizer/NormalizerImpl
+sun/text/normalizer/NormalizerImpl$AuxTrieImpl
+sun/text/normalizer/NormalizerImpl$DecomposeArgs
+sun/text/normalizer/NormalizerImpl$FCDTrieImpl
+sun/text/normalizer/NormalizerImpl$NormTrieImpl
+sun/text/normalizer/Trie
+sun/text/normalizer/Trie$DataManipulate
+sun/text/normalizer/UTF16
+sun/text/normalizer/UnicodeMatcher
+sun/text/normalizer/UnicodeSet
+sun/text/resources/CollationData
+sun/text/resources/FormatData
+sun/text/resources/en/FormatData_en
+sun/text/resources/en/FormatData_en_US
+sun/util/CoreResourceBundleControl
+sun/util/PreHashedMap
+sun/util/ResourceBundleEnumeration
+sun/util/calendar/AbstractCalendar
+sun/util/calendar/BaseCalendar
+sun/util/calendar/BaseCalendar$Date
+sun/util/calendar/CalendarDate
+sun/util/calendar/CalendarSystem
+sun/util/calendar/CalendarUtils
+sun/util/calendar/Gregorian
+sun/util/calendar/Gregorian$Date
+sun/util/calendar/ZoneInfo
+sun/util/calendar/ZoneInfoFile
+sun/util/calendar/ZoneInfoFile$1
+sun/util/calendar/ZoneInfoFile$Checksum
+sun/util/calendar/ZoneInfoFile$ZoneOffsetTransitionRule
+sun/util/locale/BaseLocale
+sun/util/locale/BaseLocale$Cache
+sun/util/locale/BaseLocale$Key
+sun/util/locale/LanguageTag
+sun/util/locale/LocaleObjectCache
+sun/util/locale/LocaleObjectCache$CacheEntry
+sun/util/locale/LocaleUtils
+sun/util/locale/provider/AuxLocaleProviderAdapter
+sun/util/locale/provider/AuxLocaleProviderAdapter$NullProvider
+sun/util/locale/provider/AvailableLanguageTags
+sun/util/locale/provider/CalendarDataProviderImpl
+sun/util/locale/provider/CalendarDataUtility
+sun/util/locale/provider/CalendarDataUtility$CalendarWeekParameterGetter
+sun/util/locale/provider/CalendarProviderImpl
+sun/util/locale/provider/CollatorProviderImpl
+sun/util/locale/provider/CurrencyNameProviderImpl
+sun/util/locale/provider/DateFormatSymbolsProviderImpl
+sun/util/locale/provider/DecimalFormatSymbolsProviderImpl
+sun/util/locale/provider/JRELocaleProviderAdapter
+sun/util/locale/provider/JRELocaleProviderAdapter$1
+sun/util/locale/provider/LocaleDataMetaInfo
+sun/util/locale/provider/LocaleProviderAdapter
+sun/util/locale/provider/LocaleProviderAdapter$1
+sun/util/locale/provider/LocaleProviderAdapter$Type
+sun/util/locale/provider/LocaleResources
+sun/util/locale/provider/LocaleResources$ResourceReference
+sun/util/locale/provider/LocaleServiceProviderPool
+sun/util/locale/provider/LocaleServiceProviderPool$LocalizedObjectGetter
+sun/util/locale/provider/NumberFormatProviderImpl
+sun/util/locale/provider/ResourceBundleBasedAdapter
+sun/util/locale/provider/SPILocaleProviderAdapter
+sun/util/locale/provider/SPILocaleProviderAdapter$1
+sun/util/locale/provider/TimeZoneNameProviderImpl
+sun/util/locale/provider/TimeZoneNameUtility
+sun/util/locale/provider/TimeZoneNameUtility$TimeZoneNameGetter
+sun/util/logging/LoggingProxy
+sun/util/logging/LoggingSupport
+sun/util/logging/LoggingSupport$1
+sun/util/logging/LoggingSupport$2
+sun/util/logging/PlatformLogger
+sun/util/logging/PlatformLogger$1
+sun/util/logging/PlatformLogger$DefaultLoggerProxy
+sun/util/logging/PlatformLogger$JavaLoggerProxy
+sun/util/logging/PlatformLogger$Level
+sun/util/logging/PlatformLogger$LoggerProxy
+sun/util/logging/resources/logging
+sun/util/resources/CalendarData
+sun/util/resources/CurrencyNames
+sun/util/resources/LocaleData
+sun/util/resources/LocaleData$1
+sun/util/resources/LocaleData$LocaleDataResourceBundleControl
+sun/util/resources/LocaleNamesBundle
+sun/util/resources/OpenListResourceBundle
+sun/util/resources/ParallelListResourceBundle
+sun/util/resources/ParallelListResourceBundle$KeySet
+sun/util/resources/TimeZoneNames
+sun/util/resources/TimeZoneNamesBundle
+sun/util/resources/en/CalendarData_en
+sun/util/resources/en/CurrencyNames_en_US
+sun/util/resources/en/TimeZoneNames_en
+sun/util/spi/CalendarProvider
+# ca392e7ee7285d72
--- ./jdk/make/gendata/GendataFontConfig.gmk 2015-12-12 10:53:21.841274000 -0800
+++ ./jdk/make/gendata/GendataFontConfig.gmk 2015-10-24 06:21:20.000000000 -0700
@@ -73,6 +73,13 @@
GENDATA_FONT_CONFIG_SRC_PREFIX := aix.
endif
+ifeq ($(OPENJDK_TARGET_OS), bsd)
+ GENDATA_FONT_CONFIG_SRC_DIR := \
+ $(JDK_TOPDIR)/src/solaris/classes/sun/awt/fontconfigs
+ GENDATA_FONT_CONFIG_SRC_FILES := fontconfig.properties
+ GENDATA_FONT_CONFIG_SRC_PREFIX := bsd.
+endif
+
###
$(GENDATA_FONT_CONFIG_DST)/%.src: \
--- ./jdk/make/lib/Awt2dLibraries.gmk 2015-12-12 10:53:31.075363000 -0800
+++ ./jdk/make/lib/Awt2dLibraries.gmk 2015-10-24 06:32:30.000000000 -0700
@@ -309,7 +309,7 @@
debug_trace.c \
debug_util.c
-ifneq (, $(filter $(OPENJDK_TARGET_OS), solaris linux aix))
+ifneq (, $(filter $(OPENJDK_TARGET_OS), bsd solaris linux aix))
LIBAWT_FILES += awt_LoadLibrary.c initIDs.c img_colors.c
endif
@@ -481,6 +481,7 @@
LDFLAGS_SUFFIX_linux := -ljvm $(LIBM) $(LIBDL) -ljava, \
LDFLAGS_SUFFIX_solaris := -ljvm $(LIBM) $(LIBDL) -ljava -lc, \
LDFLAGS_SUFFIX_aix :=-ljvm $(LIBM) $(LIBDL) -ljava -lm,\
+ LDFLAGS_SUFFIX_bsd := -ljvm $(LIBM) -ljava, \
LDFLAGS_SUFFIX_macosx := -lmlib_image -ljvm $(LIBM) \
-framework Cocoa \
-framework OpenGL \
@@ -557,6 +558,16 @@
endif
endif
+ ifeq ($(OPENJDK_TARGET_OS), bsd)
+ ifndef OPENJDK
+ include $(JDK_TOPDIR)/make/closed/xawt.gmk
+ endif
+
+ ifeq ($(DISABLE_XRENDER), true)
+ LIBAWT_XAWT_CFLAGS += -DDISABLE_XRENDER_BY_DEFAULT=true
+ endif
+ endif
+
ifeq ($(MILESTONE), internal)
LIBAWT_XAWT_CFLAGS += -DINTERNAL_BUILD
endif
@@ -625,6 +636,11 @@
LIBAWT_XAWT_LDFLAGS += -lpthread
endif
+ ifeq ($(OPENJDK_TARGET_OS), bsd)
+ # To match old build, add this to LDFLAGS instead of suffix.
+ LIBAWT_XAWT_LDFLAGS += -pthread
+ endif
+
$(eval $(call SetupNativeCompilation,BUILD_LIBAWT_XAWT, \
LIBRARY := awt_xawt, \
OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
@@ -646,6 +662,7 @@
-R/usr/dt/lib$(OPENJDK_TARGET_CPU_ISADIR) \
$(call SET_SHARED_LIBRARY_ORIGIN) \
$(call SET_SHARED_LIBRARY_ORIGIN,/..), \
+ LDFLAGS_bsd := $(call SET_SHARED_LIBRARY_ORIGIN), \
LDFLAGS_SUFFIX := $(LIBAWT_XAWT_LDFLAGS_SUFFIX), \
VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \
RC_FLAGS := $(RC_FLAGS) \
@@ -689,6 +706,7 @@
LDFLAGS_SUFFIX_macosx := $(LIBM) -lawt -ljava -ljvm, \
LDFLAGS_SUFFIX_linux := -lm -lawt -ljava -ljvm, \
LDFLAGS_SUFFIX_aix := -lm -lawt -ljava -ljvm,\
+ LDFLAGS_SUFFIX_bsd := -lm -lawt -ljava -ljvm, \
VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=lcms.dll" \
@@ -847,6 +865,7 @@
LDFLAGS_SUFFIX_linux := -ljvm -lawt -lm $(LIBDL) -ljava, \
LDFLAGS_SUFFIX_aix := -ljvm -lawt -ljava,\
LDFLAGS_SUFFIX_solaris := $(LIBDL) -ljvm -lawt -lm -ljava $(LIBCXX) -lc, \
+ LDFLAGS_SUFFIX_bsd := -ljvm -lawt -lm -ljava, \
OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libawt_headless, \
DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES)))
@@ -924,6 +943,7 @@
LDFLAGS_SUFFIX_linux := -lawt $(LIBM) $(LIBCXX) -ljava -ljvm -lc, \
LDFLAGS_SUFFIX_solaris := -lawt -lawt_headless -lc $(LIBM) $(LIBCXX) -ljava -ljvm, \
LDFLAGS_SUFFIX_aix := -lawt -lawt_headless $(LIBM) $(LIBCXX) -ljava -ljvm,\
+ LDFLAGS_SUFFIX_bsd := -lawt $(LIBM) $(LIBCXX) -ljava -ljvm -lc, \
LDFLAGS_SUFFIX_macosx := -lawt $(LIBM) $(LIBCXX) -undefined dynamic_lookup \
-ljava -ljvm, \
LDFLAGS_SUFFIX_windows := $(WIN_JAVA_LIB) advapi32.lib user32.lib gdi32.lib \
@@ -1067,6 +1087,7 @@
OPTIMIZATION := LOW, \
CFLAGS := $(CFLAGS_JDKLIB), \
CFLAGS_linux := $(HEADLESS_CFLAG), \
+ CFLAGS_bsd := $(HEADLESS_CFLAG), \
CFLAGS_macosx := -I$(JDK_TOPDIR)/src/solaris/native/sun/awt, \
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjawt/mapfile-vers, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
@@ -1075,6 +1096,7 @@
LDFLAGS_SUFFIX_linux := $(JAWT_LIBS) $(LDFLAGS_JDKLIB_SUFFIX), \
LDFLAGS_SUFFIX_aix := $(JAWT_LIBS) $(LDFLAGS_JDKLIB_SUFFIX),\
LDFLAGS_SUFFIX_solaris := $(JAWT_LIBS) $(LDFLAGS_JDKLIB_SUFFIX) -lXrender, \
+ LDFLAGS_SUFFIX_bsd := $(JAWT_LIBS) $(LDFLAGS_JDKLIB_SUFFIX), \
LDFLAGS_SUFFIX_macosx := -Xlinker -rpath -Xlinker @loader_path $(JAWT_LIBS) \
-framework Cocoa $(LDFLAGS_JDKLIB_SUFFIX), \
OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libjawt, \
@@ -1193,7 +1215,7 @@
$(JDK_TOPDIR)/src/share/native/sun/awt/splashscreen
ifeq ($(USE_EXTERNAL_LIBGIF), true)
- GIFLIB_LDFLAGS := -lgif
+ GIFLIB_LDFLAGS += -lgif
else
LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/share/native/sun/awt/giflib
GIFLIB_CFLAGS := -I$(JDK_TOPDIR)/src/share/native/sun/awt/giflib
@@ -1226,6 +1248,11 @@
LIBSPLASHSCREEN_CFLAGS += -DWITH_WIN32
else ifeq ($(OPENJDK_TARGET_OS), solaris)
LIBSPLASHSCREEN_CFLAGS += -DWITH_X11 -I$(OPENWIN_HOME)/include -I$(OPENWIN_HOME)/include/X11/extensions
+ else ifeq ($(OPENJDK_TARGET_OS), bsd)
+ LIBSPLASHSCREEN_CFLAGS += -DWITH_X11 $(X_CFLAGS) -I$(PACKAGE_PATH)/include
+ ifneq ($(OPENJDK_TARGET_OS_VENDOR), openbsd)
+ LIBSPLASHSCREEN_CFLAGS += -DLIBICONV_PLUG
+ endif
else
LIBSPLASHSCREEN_CFLAGS += -DWITH_X11 $(X_CFLAGS)
endif
@@ -1248,6 +1275,8 @@
else ifeq ($(OPENJDK_TARGET_OS), solaris)
# Solaris still uses OPENWIN_LIB ..
LIBSPLASHSCREEN_LDFLAGS_SUFFIX += -L$(OPENWIN_LIB)$(OPENJDK_TARGET_CPU_ISADIR) -lX11 -lXext $(LIBM) -lpthread
+ else ifeq ($(OPENJDK_TARGET_OS), bsd)
+ LIBSPLASHSCREEN_LDFLAGS_SUFFIX += $(X_LIBS) -lX11 -lXext $(LIBM) -L$(PACKAGE_PATH)/lib -liconv -pthread
else # .. all other Unixes can use X_LIBS
LIBSPLASHSCREEN_LDFLAGS_SUFFIX += $(X_LIBS) -lX11 -lXext $(LIBM) -lpthread
endif
--- ./jdk/make/lib/CoreLibraries.gmk 2015-12-12 10:53:29.552844000 -0800
+++ ./jdk/make/lib/CoreLibraries.gmk 2015-10-24 06:21:20.000000000 -0700
@@ -82,7 +82,7 @@
endif
LIBVERIFY_OPTIMIZATION := HIGH
-ifneq ($(findstring $(OPENJDK_TARGET_OS), solaris linux), )
+ifneq ($(findstring $(OPENJDK_TARGET_OS), solaris linux bsd), )
ifeq ($(ENABLE_DEBUG_SYMBOLS), true)
LIBVERIFY_OPTIMIZATION := LOW
endif
@@ -200,6 +200,7 @@
LDFLAGS_SUFFIX_solaris := -lsocket -lnsl -lscf $(LIBDL) $(BUILD_LIBFDLIBM) -lc, \
LDFLAGS_SUFFIX_linux := $(LIBDL) $(BUILD_LIBFDLIBM), \
LDFLAGS_SUFFIX_aix := $(LIBDL) $(BUILD_LIBFDLIBM) -lm,\
+ LDFLAGS_SUFFIX_bsd := $(BUILD_LIBFDLIBM), \
LDFLAGS_SUFFIX_macosx := -L$(JDK_OUTPUTDIR)/objs/ -lfdlibm \
-framework CoreFoundation \
-framework Foundation \
@@ -269,6 +270,7 @@
LDFLAGS_SUFFIX_linux := -ljvm -ljava $(LIBZ), \
LDFLAGS_SUFFIX_solaris := -ljvm -ljava $(LIBZ) -lc, \
LDFLAGS_SUFFIX_aix := -ljvm -ljava $(LIBZ),\
+ LDFLAGS_SUFFIX_bsd := -ljvm -ljava $(LIBZ), \
LDFLAGS_SUFFIX_macosx := $(LIBZ) -ljava -ljvm, \
VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \
RC_FLAGS := $(RC_FLAGS) \
@@ -379,7 +381,7 @@
# Append defines depending on target platform
LIBJLI_CFLAGS += $(OPENJDK_TARGET_CPU_JLI_CFLAGS)
-ifeq ($(OPENJDK_TARGET_OS), macosx)
+ifneq ($(findstring $(OPENJDK_TARGET_OS), bsd macosx), )
LIBJLI_CFLAGS += -DPACKAGE_PATH=\"$(PACKAGE_PATH)\"
endif
@@ -414,11 +416,13 @@
$(call SET_SHARED_LIBRARY_ORIGIN), \
LDFLAGS_linux := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \
LDFLAGS_solaris := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \
+ LDFLAGS_bsd := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \
LDFLAGS_macosx := -framework Cocoa -framework Security -framework ApplicationServices, \
LDFLAGS_SUFFIX_solaris := $(LIBZ) $(LIBDL) -lc, \
LDFLAGS_SUFFIX_linux := $(LIBZ) $(LIBDL) -lc -lpthread, \
LDFLAGS_SUFFIX_aix := $(LIBZ) $(LIBDL),\
LDFLAGS_SUFFIX_macosx := $(LIBZ), \
+ LDFLAGS_SUFFIX_bsd := $(LIBZ) -pthread, \
LDFLAGS_SUFFIX_windows := \
-export:JLI_Launch \
-export:JLI_ManifestIterate \
@@ -462,9 +466,9 @@
BUILD_LIBRARIES += $(BUILD_LIBJLI_STATIC)
-else ifeq ($(OPENJDK_TARGET_OS), macosx)
+else ifneq ($(findstring $(OPENJDK_TARGET_OS), $(BSD_STATIC_LIBJLI) macosx), )
#
- # On macosx they do partial (incremental) linking of libjli_static.a
+ # On BSD they do partial (incremental) linking of libjli_static.a
# code it here...rather than add support to NativeCompilation
# as this is first time I see it
$(eval $(call SetupNativeCompilation,BUILD_LIBJLI_STATIC, \
@@ -503,6 +507,13 @@
##########################################################################################
+ifeq ($(OPENJDK_TARGET_OS), bsd)
+ BSD_ICONV_CFLAGS:= -I$(PACKAGE_PATH)/include
+ ifneq ($(OPENJDK_TARGET_OS_VENDOR), openbsd)
+ BSD_ICONV_CFLAGS += -DLIBICONV_PLUG
+ endif
+endif
+
$(eval $(call SetupNativeCompilation,BUILD_LIBNPT, \
LIBRARY := npt, \
OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
@@ -512,9 +523,11 @@
CFLAGS := $(CFLAGS_JDKLIB) \
-I$(JDK_TOPDIR)/src/share/npt \
-I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/npt, \
+ CFLAGS_bsd := $(BSD_ICONV_CFLAGS), \
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libnpt/mapfile-vers, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
+ LDFLAGS_bsd := -L$(PACKAGE_PATH)/lib -liconv, \
LDFLAGS_macosx := -liconv, \
LDFLAGS_SUFFIX_windows := -export:nptInitialize -export:nptTerminate, \
LDFLAGS_SUFFIX_solaris := -lc, \
--- ./jdk/make/lib/NetworkingLibraries.gmk 2015-12-12 10:53:21.842716000 -0800
+++ ./jdk/make/lib/NetworkingLibraries.gmk 2015-10-24 06:21:20.000000000 -0700
@@ -42,7 +42,7 @@
LIBNET_EXCLUDE_FILES += linux_close.c
endif
-ifneq ($(OPENJDK_TARGET_OS), macosx)
+ifeq (,$(findstring $(OPENJDK_TARGET_OS), bsd macosx))
LIBNET_EXCLUDE_FILES += bsd_close.c
endif
@@ -58,6 +58,10 @@
NTLMAuthSequence.c NetworkInterface_winXP.c
endif
+ifneq ($(DONT_ENABLE_IPV6),)
+ LIBNET_CFLAGS += -DDONT_ENABLE_IPV6
+endif
+
$(eval $(call SetupNativeCompilation,BUILD_LIBNET, \
LIBRARY := net, \
OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
@@ -74,6 +78,7 @@
LDFLAGS_SUFFIX_solaris := -ljvm -ljava -lnsl -lsocket $(LIBDL) -lc, \
LDFLAGS_SUFFIX_linux := $(LIBDL) -ljvm -lpthread -ljava, \
LDFLAGS_SUFFIX_aix := $(LIBDL) -ljvm -ljava,\
+ LDFLAGS_SUFFIX_bsd := -ljvm -pthread -ljava, \
LDFLAGS_SUFFIX_windows := ws2_32.lib jvm.lib secur32.lib iphlpapi.lib \
delayimp.lib $(WIN_JAVA_LIB) advapi32.lib \
-DELAYLOAD:secur32.dll -DELAYLOAD:iphlpapi.dll, \
--- ./jdk/make/lib/NioLibraries.gmk 2015-12-12 10:53:21.842959000 -0800
+++ ./jdk/make/lib/NioLibraries.gmk 2015-10-24 06:21:20.000000000 -0700
@@ -77,9 +77,28 @@
UnixNativeDispatcher.c
endif
+ifeq ($(OPENJDK_TARGET_OS), bsd)
+ BUILD_LIBNIO_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libnio/mapfile-$(OPENJDK_TARGET_OS)
+ BUILD_LIBNIO_SRC += $(JDK_TOPDIR)/src/bsd/native/sun/nio/ch
+ BUILD_LIBNIO_FILES += \
+ BsdNativeDispatcher.c \
+ GnomeFileTypeDetector.c \
+ InheritedChannel.c \
+ KQueue.c \
+ KQueueArrayWrapper.c \
+ KQueuePort.c \
+ MagicFileTypeDetector.c \
+ NativeThread.c \
+ PollArrayWrapper.c \
+ UnixAsynchronousServerSocketChannelImpl.c \
+ UnixAsynchronousSocketChannelImpl.c \
+ UnixCopyFile.c \
+ UnixNativeDispatcher.c
+endif
+
ifeq ($(OPENJDK_TARGET_OS), macosx)
BUILD_LIBNIO_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libnio/mapfile-$(OPENJDK_TARGET_OS)
- BUILD_LIBNIO_SRC += $(JDK_TOPDIR)/src/macosx/native/sun/nio/ch
+ BUILD_LIBNIO_SRC += $(JDK_TOPDIR)/src/bsd/native/sun/nio/ch
BUILD_LIBNIO_FILES += \
InheritedChannel.c \
NativeThread.c \
@@ -149,6 +168,7 @@
LDFLAGS_SUFFIX_windows := jvm.lib ws2_32.lib $(WIN_JAVA_LIB) \
$(JDK_OUTPUTDIR)/objs/libnet/net.lib \
advapi32.lib, \
+ LDFLAGS_SUFFIX_bsd := -ljava -lnet -pthread, \
LDFLAGS_SUFFIX_macosx := -ljava -lnet -pthread -framework CoreFoundation, \
LDFLAGS_SUFFIX :=, \
VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \
@@ -168,6 +188,7 @@
ifeq ($(OPENJDK_TARGET_OS_API), posix)
ifeq (, $(filter $(OPENJDK_TARGET_OS), macosx aix))
+ ifeq (, $(filter $(OPENJDK_TARGET_OS_VENDOR), netbsd openbsd))
# Suppress unused parameters required by exported JNI functions.
SCTP_WERROR := -Werror -Wno-error=unused-parameter
@@ -194,6 +215,7 @@
LDFLAGS_SUFFIX_linux := -lpthread $(LIBDL) -ljava -ljvm, \
LDFLAGS_SUFFIX_posix := -lnio -lnet, \
LDFLAGS_SUFFIX_solaris := -lsocket -ljava -ljvm -lc, \
+ LDFLAGS_SUFFIX_bsd := -pthread -ljava -ljvm, \
LDFLAGS_SUFFIX_macosx := -ljava -ljvm, \
OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libsctp, \
DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES)))
@@ -202,4 +224,5 @@
$(BUILD_LIBSCTP): $(BUILD_LIBNIO)
endif
+ endif
endif
--- ./jdk/make/lib/ServiceabilityLibraries.gmk 2015-12-12 10:53:27.306448000 -0800
+++ ./jdk/make/lib/ServiceabilityLibraries.gmk 2015-10-24 06:21:20.000000000 -0700
@@ -34,7 +34,7 @@
ifneq ($(OPENJDK_TARGET_OS), linux)
LIBATTACH_EXCLUDE_FILES += LinuxVirtualMachine.c
endif
-ifneq ($(OPENJDK_TARGET_OS), macosx)
+ifeq (,$(findstring $(OPENJDK_TARGET_OS), bsd macosx))
LIBATTACH_EXCLUDE_FILES += BsdVirtualMachine.c
endif
ifneq ($(OPENJDK_TARGET_OS),aix)
@@ -94,6 +94,7 @@
$(call SET_SHARED_LIBRARY_ORIGIN), \
LDFLAGS_SUFFIX_linux := -lpthread, \
LDFLAGS_SUFFIX_solaris := -lnsl -lsocket -lc, \
+ LDFLAGS_SUFFIX_bsd := -pthread, \
LDFLAGS_SUFFIX_windows := $(LDFLAGS_JDKLIB_SUFFIX) -export:jdwpTransport_OnLoad ws2_32.lib, \
VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \
RC_FLAGS := $(RC_FLAGS) \
@@ -245,6 +246,19 @@
LIBINSTRUMENT_CFLAGS += -Dstrcasecmp=stricmp
endif
+ifeq ($(OPENJDK_TARGET_OS), bsd)
+ ifeq ($(BSD_STATIC_LIBJLI), bsd)
+ LIBINSTRUMENT_LDFLAGS += -Xlinker --whole-archive $(JDK_OUTPUTDIR)/objs/libjli_static.a \
+ -Xlinker --no-whole-archive
+ else
+ LIBINSTRUMENT_LDFLAGS += $(call SET_SHARED_LIBRARY_ORIGIN,/jli)
+ endif
+ BSD_ICONV_CFLAGS:= -I$(PACKAGE_PATH)/include
+ ifneq ($(OPENJDK_TARGET_OS_VENDOR), openbsd)
+ BSD_ICONV_CFLAGS += -DLIBICONV_PLUG
+ endif
+endif
+
$(eval $(call SetupNativeCompilation,BUILD_LIBINSTRUMENT, \
LIBRARY := instrument, \
OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
@@ -255,6 +269,7 @@
CFLAGS := $(LIBINSTRUMENT_CFLAGS), \
CFLAGS_debug := -DJPLIS_LOGGING, \
CFLAGS_release := -DNO_JPLIS_LOGGING, \
+ CFLAGS_bsd := $(BSD_ICONV_CFLAGS), \
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libinstrument/mapfile-vers, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN) \
@@ -268,6 +283,7 @@
LDFLAGS_SUFFIX_solaris := $(LIBZ) -L $(INSTALL_LIBRARIES_HERE)/jli -ljli $(LIBDL) -lc, \
LDFLAGS_SUFFIX_linux := $(LIBZ) -L $(INSTALL_LIBRARIES_HERE)/jli -ljli $(LIBDL), \
LDFLAGS_SUFFIX_aix := $(LIBZ) -L$(JDK_OUTPUTDIR)/objs -ljli_static $(LIBDL),\
+ LDFLAGS_SUFFIX_bsd := -L$(PACKAGE_PATH)/lib -liconv $(LIBZ), \
VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=instrument.dll" \
@@ -276,7 +292,7 @@
OBJECT_DIR := $(LIBINSTRUMENT_DIR), \
DEBUG_SYMBOLS := true))
-ifneq (, $(findstring $(OPENJDK_TARGET_OS), macosx windows aix))
+ifneq (, $(findstring $(OPENJDK_TARGET_OS), $(BSD_STATIC_LIBJLI) macosx windows aix))
$(BUILD_LIBINSTRUMENT): $(JDK_OUTPUTDIR)/objs/$(LIBRARY_PREFIX)jli_static$(STATIC_LIBRARY_SUFFIX)
else
$(BUILD_LIBINSTRUMENT): $(INSTALL_LIBRARIES_HERE)/jli/$(LIBRARY_PREFIX)jli$(SHARED_LIBRARY_SUFFIX)
@@ -302,12 +318,16 @@
BUILD_LIBMANAGEMENT_EXCLUDES += LinuxOperatingSystem.c
endif
+ifneq ($(OPENJDK_TARGET_OS), bsd)
+ BUILD_LIBMANAGEMENT_EXCLUDES += BsdOperatingSystem.c
+endif
+
ifneq ($(OPENJDK_TARGET_OS), macosx)
BUILD_LIBMANAGEMENT_EXCLUDES += MacosxOperatingSystem.c
endif
LIBMANAGEMENT_OPTIMIZATION := HIGH
-ifneq ($(findstring $(OPENJDK_TARGET_OS), solaris linux), )
+ifneq ($(findstring $(OPENJDK_TARGET_OS), solaris linux bsd), )
ifeq ($(ENABLE_DEBUG_SYMBOLS), true)
LIBMANAGEMENT_OPTIMIZATION := LOW
endif
@@ -359,7 +379,7 @@
BUILD_LIBHPROF_LDFLAGS :=
LIBHPROF_OPTIMIZATION := HIGHEST
-ifneq ($(findstring $(OPENJDK_TARGET_OS), solaris linux), )
+ifneq ($(findstring $(OPENJDK_TARGET_OS), solaris linux bsd), )
ifeq ($(ENABLE_DEBUG_SYMBOLS), true)
LIBHPROF_OPTIMIZATION := LOW
endif
--- ./jdk/make/lib/SoundLibraries.gmk 2015-12-12 10:53:21.843826000 -0800
+++ ./jdk/make/lib/SoundLibraries.gmk 2015-10-24 06:21:20.000000000 -0700
@@ -75,6 +75,13 @@
LIBJSOUND_CFLAGS += -DX_PLATFORM=X_AIX
endif # OPENJDK_TARGET_OS aix
+ifeq ($(OPENJDK_TARGET_OS), bsd)
+ ifneq ($(OPENJDK_TARGET_OS_VENDOR), openbsd)
+ EXTRA_SOUND_JNI_LIBS += jsoundalsa
+ endif # OPENJDK_TARGET_OS_VENDOR openbsd
+ LIBJSOUND_CFLAGS += -DX_PLATFORM=X_BSD
+endif # OPENJDK_TARGET_OS bsd
+
ifeq ($(OPENJDK_TARGET_OS), macosx)
LIBJSOUND_LANG := C++
LIBJSOUND_CFLAGS += -DX_PLATFORM=X_MACOSX \
@@ -196,12 +203,14 @@
CFLAGS := $(CFLAGS_JDKLIB) $(ALSA_CFLAGS) \
$(LIBJSOUND_CFLAGS) \
-DUSE_DAUDIO=TRUE \
- -DUSE_PORTS=TRUE \
- -DUSE_PLATFORM_MIDI_OUT=TRUE \
+ -DUSE_PORTS=TRUE, \
+ CFLAGS_linux := -DUSE_PLATFORM_MIDI_OUT=TRUE \
-DUSE_PLATFORM_MIDI_IN=TRUE, \
+ CFLAGS_bsd := -I$(PACKAGE_PATH)/include, \
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjsoundalsa/mapfile-vers, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
+ LDFLAGS_bsd := -L$(PACKAGE_PATH)/lib, \
LDFLAGS_SUFFIX := $(ALSA_LIBS) -ljava -ljvm, \
OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libjsoundalsa, \
DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES)))
--- ./jdk/make/mapfiles/launchers/mapfile-x86 2014-03-03 18:57:12.000000000 -0800
+++ ./jdk/make/mapfiles/launchers/mapfile-x86 2015-10-24 06:21:20.000000000 -0700
@@ -33,6 +33,7 @@
environ; # Public symbols and required by Java run time
_environ;
__environ_lock;
+ __progname;
___Argv; # The following are private, but as they are
_start; # exported from ctr1/crtn, the clever hacker
_init; # might know about them. However note, that
--- ./jdk/make/mapfiles/launchers/mapfile-x86_64 2014-03-03 18:57:12.000000000 -0800
+++ ./jdk/make/mapfiles/launchers/mapfile-x86_64 2015-10-24 06:21:20.000000000 -0700
@@ -33,6 +33,7 @@
environ; # Public symbols and required by Java run time
_environ;
__environ_lock;
+ __progname;
local:
*;
--- ./jdk/make/mapfiles/libattach/mapfile-bsd 1969-12-31 16:00:00.000000000 -0800
+++ ./jdk/make/mapfiles/libattach/mapfile-bsd 2015-10-24 06:21:20.000000000 -0700
@@ -0,0 +1,42 @@
+#
+# Copyright (c) 2005, 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
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# Define public interface.
+
+SUNWprivate_1.1 {
+ global:
+ Java_sun_tools_attach_BsdVirtualMachine_checkPermissions;
+ Java_sun_tools_attach_BsdVirtualMachine_close;
+ Java_sun_tools_attach_BsdVirtualMachine_connect;
+ Java_sun_tools_attach_BsdVirtualMachine_getTempDir;
+ Java_sun_tools_attach_BsdVirtualMachine_open;
+ Java_sun_tools_attach_BsdVirtualMachine_sendQuitTo;
+ Java_sun_tools_attach_BsdVirtualMachine_socket;
+ Java_sun_tools_attach_BsdVirtualMachine_read;
+ Java_sun_tools_attach_BsdVirtualMachine_write;
+ Java_sun_tools_attach_BsdVirtualMachine_createAttachFile;
+ local:
+ *;
+};
--- ./jdk/make/mapfiles/libnio/mapfile-bsd 1969-12-31 16:00:00.000000000 -0800
+++ ./jdk/make/mapfiles/libnio/mapfile-bsd 2015-10-24 06:21:20.000000000 -0700
@@ -0,0 +1,195 @@
+#
+# Copyright (c) 2001, 2013, 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
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+SUNWprivate_1.1 {
+ global:
+ Java_java_nio_MappedByteBuffer_force0;
+ Java_java_nio_MappedByteBuffer_isLoaded0;
+ Java_java_nio_MappedByteBuffer_load0;
+ Java_sun_nio_ch_DatagramChannelImpl_disconnect0;
+ Java_sun_nio_ch_DatagramChannelImpl_initIDs;
+ Java_sun_nio_ch_DatagramChannelImpl_receive0;
+ Java_sun_nio_ch_DatagramChannelImpl_send0;
+ Java_sun_nio_ch_DatagramDispatcher_read0;
+ Java_sun_nio_ch_DatagramDispatcher_readv0;
+ Java_sun_nio_ch_DatagramDispatcher_write0;
+ Java_sun_nio_ch_DatagramDispatcher_writev0;
+ Java_sun_nio_ch_FileChannelImpl_close0;
+ Java_sun_nio_ch_FileChannelImpl_initIDs;
+ Java_sun_nio_ch_FileChannelImpl_map0;
+ Java_sun_nio_ch_FileChannelImpl_position0;
+ Java_sun_nio_ch_FileChannelImpl_transferTo0;
+ Java_sun_nio_ch_FileChannelImpl_unmap0;
+ Java_sun_nio_ch_FileDispatcherImpl_close0;
+ Java_sun_nio_ch_FileDispatcherImpl_closeIntFD;
+ Java_sun_nio_ch_FileDispatcherImpl_force0;
+ Java_sun_nio_ch_FileDispatcherImpl_init;
+ Java_sun_nio_ch_FileDispatcherImpl_lock0;
+ Java_sun_nio_ch_FileDispatcherImpl_preClose0;
+ Java_sun_nio_ch_FileDispatcherImpl_pread0;
+ Java_sun_nio_ch_FileDispatcherImpl_pwrite0;
+ Java_sun_nio_ch_FileDispatcherImpl_read0;
+ Java_sun_nio_ch_FileDispatcherImpl_readv0;
+ Java_sun_nio_ch_FileDispatcherImpl_release0;
+ Java_sun_nio_ch_FileDispatcherImpl_size0;
+ Java_sun_nio_ch_FileDispatcherImpl_truncate0;
+ Java_sun_nio_ch_FileDispatcherImpl_write0;
+ Java_sun_nio_ch_FileDispatcherImpl_writev0;
+ Java_sun_nio_ch_FileKey_init;
+ Java_sun_nio_ch_FileKey_initIDs;
+ Java_sun_nio_ch_IOUtil_configureBlocking;
+ Java_sun_nio_ch_IOUtil_drain;
+ Java_sun_nio_ch_IOUtil_fdLimit;
+ Java_sun_nio_ch_IOUtil_fdVal;
+ Java_sun_nio_ch_IOUtil_initIDs;
+ Java_sun_nio_ch_IOUtil_iovMax;
+ Java_sun_nio_ch_IOUtil_makePipe;
+ Java_sun_nio_ch_IOUtil_randomBytes;
+ Java_sun_nio_ch_IOUtil_setfdVal;
+ Java_sun_nio_ch_InheritedChannel_close0;
+ Java_sun_nio_ch_InheritedChannel_dup2;
+ Java_sun_nio_ch_InheritedChannel_dup;
+ Java_sun_nio_ch_InheritedChannel_open0;
+ Java_sun_nio_ch_InheritedChannel_peerAddress0;
+ Java_sun_nio_ch_InheritedChannel_peerPort0;
+ Java_sun_nio_ch_InheritedChannel_soType0;
+ Java_sun_nio_ch_KQueueArrayWrapper_init;
+ Java_sun_nio_ch_KQueueArrayWrapper_initStructSizes;
+ Java_sun_nio_ch_KQueueArrayWrapper_interrupt;
+ Java_sun_nio_ch_KQueueArrayWrapper_kevent0;
+ Java_sun_nio_ch_KQueueArrayWrapper_register0;
+ Java_sun_nio_ch_KQueuePort_close0;
+ Java_sun_nio_ch_KQueuePort_drain1;
+ Java_sun_nio_ch_KQueuePort_interrupt;
+ Java_sun_nio_ch_KQueuePort_socketpair;
+ Java_sun_nio_ch_KQueue_filterOffset;
+ Java_sun_nio_ch_KQueue_flagsOffset;
+ Java_sun_nio_ch_KQueue_identOffset;
+ Java_sun_nio_ch_KQueue_keventPoll;
+ Java_sun_nio_ch_KQueue_keventRegister;
+ Java_sun_nio_ch_KQueue_keventSize;
+ Java_sun_nio_ch_KQueue_kqueue;
+ Java_sun_nio_ch_NativeThread_current;
+ Java_sun_nio_ch_NativeThread_init;
+ Java_sun_nio_ch_NativeThread_signal;
+ Java_sun_nio_ch_Net_bind0;
+ Java_sun_nio_ch_Net_blockOrUnblock4;
+ Java_sun_nio_ch_Net_blockOrUnblock6;
+ Java_sun_nio_ch_Net_canIPv6SocketJoinIPv4Group0;
+ Java_sun_nio_ch_Net_canJoin6WithIPv4Group0;
+ Java_sun_nio_ch_Net_connect0;
+ Java_sun_nio_ch_Net_getIntOption0;
+ Java_sun_nio_ch_Net_getInterface4;
+ Java_sun_nio_ch_Net_getInterface6;
+ Java_sun_nio_ch_Net_initIDs;
+ Java_sun_nio_ch_Net_isExclusiveBindAvailable;
+ Java_sun_nio_ch_Net_isIPv6Available0;
+ Java_sun_nio_ch_Net_joinOrDrop4;
+ Java_sun_nio_ch_Net_joinOrDrop6;
+ Java_sun_nio_ch_Net_listen;
+ Java_sun_nio_ch_Net_localInetAddress;
+ Java_sun_nio_ch_Net_localPort;
+ Java_sun_nio_ch_Net_poll;
+ Java_sun_nio_ch_Net_pollconnValue;
+ Java_sun_nio_ch_Net_pollerrValue;
+ Java_sun_nio_ch_Net_pollhupValue;
+ Java_sun_nio_ch_Net_pollinValue;
+ Java_sun_nio_ch_Net_pollnvalValue;
+ Java_sun_nio_ch_Net_polloutValue;
+ Java_sun_nio_ch_Net_setIntOption0;
+ Java_sun_nio_ch_Net_setInterface4;
+ Java_sun_nio_ch_Net_setInterface6;
+ Java_sun_nio_ch_Net_shutdown;
+ Java_sun_nio_ch_Net_socket0;
+ Java_sun_nio_ch_PollArrayWrapper_interrupt;
+ Java_sun_nio_ch_PollArrayWrapper_poll0;
+ Java_sun_nio_ch_ServerSocketChannelImpl_accept0;
+ Java_sun_nio_ch_ServerSocketChannelImpl_initIDs;
+ Java_sun_nio_ch_SocketChannelImpl_checkConnect;
+ Java_sun_nio_ch_SocketChannelImpl_sendOutOfBandData;
+ Java_sun_nio_ch_UnixAsynchronousServerSocketChannelImpl_accept0;
+ Java_sun_nio_ch_UnixAsynchronousServerSocketChannelImpl_initIDs;
+ Java_sun_nio_ch_UnixAsynchronousSocketChannelImpl_checkConnect;
+ Java_sun_nio_fs_BsdNativeDispatcher_endfsstat;
+ Java_sun_nio_fs_BsdNativeDispatcher_fsstatEntry;
+ Java_sun_nio_fs_BsdNativeDispatcher_getfsstat;
+ Java_sun_nio_fs_BsdNativeDispatcher_initIDs;
+ Java_sun_nio_fs_GnomeFileTypeDetector_initializeGio;
+ Java_sun_nio_fs_GnomeFileTypeDetector_initializeGnomeVfs;
+ Java_sun_nio_fs_GnomeFileTypeDetector_probeUsingGio;
+ Java_sun_nio_fs_GnomeFileTypeDetector_probeUsingGnomeVfs;
+ Java_sun_nio_fs_MagicFileTypeDetector_initialize0;
+ Java_sun_nio_fs_MagicFileTypeDetector_probe0;
+ Java_sun_nio_fs_UnixCopyFile_transfer;
+ Java_sun_nio_fs_UnixNativeDispatcher_access0;
+ Java_sun_nio_fs_UnixNativeDispatcher_chmod0;
+ Java_sun_nio_fs_UnixNativeDispatcher_chown0;
+ Java_sun_nio_fs_UnixNativeDispatcher_close;
+ Java_sun_nio_fs_UnixNativeDispatcher_closedir;
+ Java_sun_nio_fs_UnixNativeDispatcher_dup;
+ Java_sun_nio_fs_UnixNativeDispatcher_fchmod;
+ Java_sun_nio_fs_UnixNativeDispatcher_fchown;
+ Java_sun_nio_fs_UnixNativeDispatcher_fclose;
+ Java_sun_nio_fs_UnixNativeDispatcher_fdopendir;
+ Java_sun_nio_fs_UnixNativeDispatcher_fopen0;
+ Java_sun_nio_fs_UnixNativeDispatcher_fpathconf;
+ Java_sun_nio_fs_UnixNativeDispatcher_fstat;
+ Java_sun_nio_fs_UnixNativeDispatcher_fstatat0;
+ Java_sun_nio_fs_UnixNativeDispatcher_futimes;
+ Java_sun_nio_fs_UnixNativeDispatcher_getcwd;
+ Java_sun_nio_fs_UnixNativeDispatcher_getgrgid;
+ Java_sun_nio_fs_UnixNativeDispatcher_getgrnam0;
+ Java_sun_nio_fs_UnixNativeDispatcher_getpwnam0;
+ Java_sun_nio_fs_UnixNativeDispatcher_getpwuid;
+ Java_sun_nio_fs_UnixNativeDispatcher_init;
+ Java_sun_nio_fs_UnixNativeDispatcher_lchown0;
+ Java_sun_nio_fs_UnixNativeDispatcher_link0;
+ Java_sun_nio_fs_UnixNativeDispatcher_lstat0;
+ Java_sun_nio_fs_UnixNativeDispatcher_mkdir0;
+ Java_sun_nio_fs_UnixNativeDispatcher_mknod0;
+ Java_sun_nio_fs_UnixNativeDispatcher_open0;
+ Java_sun_nio_fs_UnixNativeDispatcher_openat0;
+ Java_sun_nio_fs_UnixNativeDispatcher_opendir0;
+ Java_sun_nio_fs_UnixNativeDispatcher_pathconf0;
+ Java_sun_nio_fs_UnixNativeDispatcher_read;
+ Java_sun_nio_fs_UnixNativeDispatcher_readdir;
+ Java_sun_nio_fs_UnixNativeDispatcher_readlink0;
+ Java_sun_nio_fs_UnixNativeDispatcher_realpath0;
+ Java_sun_nio_fs_UnixNativeDispatcher_rename0;
+ Java_sun_nio_fs_UnixNativeDispatcher_renameat0;
+ Java_sun_nio_fs_UnixNativeDispatcher_rmdir0;
+ Java_sun_nio_fs_UnixNativeDispatcher_stat0;
+ Java_sun_nio_fs_UnixNativeDispatcher_statvfs0;
+ Java_sun_nio_fs_UnixNativeDispatcher_strerror;
+ Java_sun_nio_fs_UnixNativeDispatcher_symlink0;
+ Java_sun_nio_fs_UnixNativeDispatcher_unlink0;
+ Java_sun_nio_fs_UnixNativeDispatcher_unlinkat0;
+ Java_sun_nio_fs_UnixNativeDispatcher_utimes0;
+ Java_sun_nio_fs_UnixNativeDispatcher_write;
+ handleSocketError;
+
+ local:
+ *;
+};
--- ./jdk/make/mapfiles/libunpack/mapfile-vers-unpack200 2014-03-03 18:57:12.000000000 -0800
+++ ./jdk/make/mapfiles/libunpack/mapfile-vers-unpack200 2015-10-24 06:21:20.000000000 -0700
@@ -26,6 +26,9 @@
# Define library interface.
SUNWprivate_1.1 {
+ global:
+ environ;
+ __progname;
local:
*;
};
--- ./jdk/make/netbeans/common/bsd-sources.ent 1969-12-31 16:00:00.000000000 -0800
+++ ./jdk/make/netbeans/common/bsd-sources.ent 2015-10-24 06:21:20.000000000 -0700
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Oracle nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<source-folder>
+ <label>Sources for BSD Platform</label>
+ <type>java</type>
+ <location>${root}/src/bsd/classes</location>
+ <includes>${includes}</includes>
+ <excludes>${excludes}</excludes>
+ <encoding>US-ASCII</encoding>
+</source-folder>
+<source-folder>
+ <label>Sources for BSD Platform</label>
+ <location>${root}/src/bsd/classes</location>
+</source-folder>
--- ./jdk/make/netbeans/common/bsd-view.ent 1969-12-31 16:00:00.000000000 -0800
+++ ./jdk/make/netbeans/common/bsd-view.ent 2015-10-24 06:21:20.000000000 -0700
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Oracle nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<source-folder style="tree">
+ <label>Sources for BSD Platform</label>
+ <location>${root}/src/bsd/classes</location>
+ <includes>${includes}</includes>
+ <excludes>${excludes}</excludes>
+</source-folder>
--- ./jdk/make/netbeans/common/java-data-native.ent 2014-03-03 18:57:13.000000000 -0800
+++ ./jdk/make/netbeans/common/java-data-native.ent 2015-10-24 06:21:20.000000000 -0700
@@ -34,6 +34,7 @@
<java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/4">
<compilation-unit>
<package-root>${root}/src/share/classes</package-root>
+ <package-root>${root}/src/bsd/classes</package-root>
<package-root>${root}/src/macosx/classes</package-root>
<package-root>${root}/src/solaris/classes</package-root>
<package-root>${root}/src/windows/classes</package-root>
--- ./jdk/make/netbeans/common/make.xml 2014-03-03 18:57:13.000000000 -0800
+++ ./jdk/make/netbeans/common/make.xml 2015-10-24 06:21:20.000000000 -0700
@@ -33,7 +33,7 @@
<project name="make" basedir="..">
- <target name="-make.init" depends="-init,-pre-init.linux,-pre-init.macosx,-pre-init.solaris,-pre-init.windows,-pre-init.macosx">
+ <target name="-make.init" depends="-init,-pre-init.linux,-pre-init.bsd,-pre-init.macosx,-pre-init.solaris,-pre-init.windows">
<property name="make.options" value=""/> <!-- default, can be overridden per user or per project -->
</target>
@@ -42,6 +42,11 @@
<property name="make" value="make"/>
</target>
+ <target name="-pre-init.bsd" if="os.bsd">
+ <property name="platform" value="bsd"/>
+ <property name="make" value="gmake"/>
+ </target>
+
<target name="-pre-init.macosx" if="os.macosx">
<property name="platform" value="macosx"/>
<property name="make" value="make"/>
--- ./jdk/make/netbeans/j2se/nbproject/project.xml 2014-03-03 18:57:13.000000000 -0800
+++ ./jdk/make/netbeans/j2se/nbproject/project.xml 2015-10-24 06:21:20.000000000 -0700
@@ -34,6 +34,7 @@
<!DOCTYPE project [
<!ENTITY properties SYSTEM "../../common/properties.ent">
<!ENTITY share-sources SYSTEM "../../common/share-sources.ent">
+ <!ENTITY bsd-sources SYSTEM "../../common/bsd-sources.ent">
<!ENTITY macosx-sources SYSTEM "../../common/macosx-sources.ent">
<!ENTITY unix-sources SYSTEM "../../common/unix-sources.ent">
<!ENTITY windows-sources SYSTEM "../../common/windows-sources.ent">
@@ -41,6 +42,7 @@
<!ENTITY build-folder SYSTEM "../../common/build-folder.ent">
<!ENTITY standard-bindings SYSTEM "../../common/standard-bindings.ent">
<!ENTITY share-view SYSTEM "../../common/share-view.ent">
+ <!ENTITY bsd-view SYSTEM "../../common/bsd-view.ent">
<!ENTITY macosx-view SYSTEM "../../common/macosx-view.ent">
<!ENTITY unix-view SYSTEM "../../common/unix-view.ent">
<!ENTITY windows-view SYSTEM "../../common/windows-view.ent">
@@ -60,6 +62,7 @@
</properties>
<folders>
&share-sources;
+ &bsd-sources;
&macosx-sources;
&unix-sources;
&windows-sources;
@@ -86,6 +89,7 @@
<view>
<items>
&share-view;
+ &bsd-view;
&macosx-view;
&unix-view;
&windows-view;
--- ./jdk/make/netbeans/world/nbproject/project.xml 2014-03-03 18:57:13.000000000 -0800
+++ ./jdk/make/netbeans/world/nbproject/project.xml 2015-10-24 06:21:20.000000000 -0700
@@ -34,12 +34,14 @@
<!DOCTYPE project [
<!ENTITY properties SYSTEM "../../common/properties.ent">
<!ENTITY share-sources SYSTEM "../../common/share-sources.ent">
+ <!ENTITY bsd-sources SYSTEM "../../common/bsd-sources.ent">
<!ENTITY macosx-sources SYSTEM "../../common/macosx-sources.ent">
<!ENTITY unix-sources SYSTEM "../../common/unix-sources.ent">
<!ENTITY windows-sources SYSTEM "../../common/windows-sources.ent">
<!ENTITY build-folder SYSTEM "../../common/build-folder.ent">
<!ENTITY standard-bindings SYSTEM "../../common/standard-bindings.ent">
<!ENTITY share-view SYSTEM "../../common/share-view.ent">
+ <!ENTITY bsd-view SYSTEM "../../common/bsd-view.ent">
<!ENTITY macosx-view SYSTEM "../../common/macosx-view.ent">
<!ENTITY unix-view SYSTEM "../../common/unix-view.ent">
<!ENTITY windows-view SYSTEM "../../common/windows-view.ent">
@@ -58,6 +60,7 @@
</properties>
<folders>
&share-sources;
+ &bsd-sources;
&macosx-sources;
&unix-sources;
&windows-sources;
@@ -69,6 +72,7 @@
<view>
<items>
&share-view;
+ &bsd-view;
&macosx-view;
&unix-view;
&windows-view;
--- ./jdk/src/bsd/classes/java/net/DefaultInterface.java 1969-12-31 16:00:00.000000000 -0800
+++ ./jdk/src/bsd/classes/java/net/DefaultInterface.java 2015-10-24 06:21:20.000000000 -0700
@@ -0,0 +1,97 @@
+/*
+ * Copyright (c) 2011, 2013, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package java.net;
+
+/**
+ * Choose a network interface to be the default for
+ * outgoing IPv6 traffic that does not specify a scope_id (and which needs one).
+ * We choose the first interface that is up and is (in order of preference):
+ * 1. neither loopback nor point to point
+ * 2. point to point
+ * 3. loopback
+ * 4. none.
+ * Platforms that do not require a default interface implement a dummy
+ * that returns null.
+ */
+
+import java.util.Enumeration;
+import java.io.IOException;
+
+class DefaultInterface {
+
+ private final static NetworkInterface defaultInterface =
+ chooseDefaultInterface();
+
+ static NetworkInterface getDefault() {
+ return defaultInterface;
+ }
+
+ /**
+ * Choose a default interface. This method returns an interface that is
+ * both "up" and supports multicast. This method choses an interface in
+ * order of preference:
+ * 1. neither loopback nor point to point
+ * 2. point to point
+ * 3. loopback
+ *
+ * @return the chosen interface or {@code null} if there isn't a suitable
+ * default
+ */
+ private static NetworkInterface chooseDefaultInterface() {
+ Enumeration<NetworkInterface> nifs;
+
+ try {
+ nifs = NetworkInterface.getNetworkInterfaces();
+ } catch (IOException ignore) {
+ // unable to enumate network interfaces
+ return null;
+ }
+
+ NetworkInterface ppp = null;
+ NetworkInterface loopback = null;
+
+ while (nifs.hasMoreElements()) {
+ NetworkInterface ni = nifs.nextElement();
+ try {
+ if (ni.isUp() && ni.supportsMulticast()) {
+ boolean isLoopback = ni.isLoopback();
+ boolean isPPP = ni.isPointToPoint();
+ if (!isLoopback && !isPPP) {
+ // found an interface that is not the loopback or a
+ // point-to-point interface
+ return ni;
+ }
+ if (ppp == null && isPPP)
+ ppp = ni;
+ if (loopback == null && isLoopback)
+ loopback = ni;
+ }
+ } catch (IOException skip) { }
+ }
+
+ return (ppp != null) ? ppp : loopback;
+ }
+}
--- ./jdk/src/bsd/classes/sun/nio/ch/DefaultSelectorProvider.java 1969-12-31 16:00:00.000000000 -0800
+++ ./jdk/src/bsd/classes/sun/nio/ch/DefaultSelectorProvider.java 2015-10-24 06:21:20.000000000 -0700
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2011, 2012, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package sun.nio.ch;
+
+import java.nio.channels.spi.SelectorProvider;
+
+/**
+ * Creates this platform's default SelectorProvider
+ */
+
+public class DefaultSelectorProvider {
+
+ /**
+ * Prevent instantiation.
+ */
+ private DefaultSelectorProvider() { }
+
+ /**
+ * Returns the default SelectorProvider.
+ */
+ public static SelectorProvider create() {
+ return new sun.nio.ch.KQueueSelectorProvider();
+ }
+
+}
--- ./jdk/src/bsd/classes/sun/nio/ch/KQueueArrayWrapper.java 1969-12-31 16:00:00.000000000 -0800
+++ ./jdk/src/bsd/classes/sun/nio/ch/KQueueArrayWrapper.java 2015-10-24 06:21:20.000000000 -0700
@@ -0,0 +1,213 @@
+/*
+ * Copyright (c) 2011, 2013, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * KQueueArrayWrapper.java
+ * Implementation of Selector using FreeBSD / Mac OS X kqueues
+ * Derived from Sun's DevPollArrayWrapper
+ */
+
+package sun.nio.ch;
+
+import sun.misc.*;
+import java.io.IOException;
+import java.io.FileDescriptor;
+import java.util.Iterator;
+import java.util.LinkedList;
+
+/*
+ * struct kevent { // 32-bit 64-bit
+ * uintptr_t ident; // 4 8
+ * short filter; // 2 2
+ * u_short flags; // 2 2
+ * u_int fflags; // 4 4
+ * intptr_t data; // 4 8
+ * void *udata; // 4 8
+ * } // Total: 20 32
+ *
+ * The implementation works in 32-bit and 64-bit world. We do this by calling a
+ * native function that actually sets the sizes and offsets of the fields based
+ * on which mode we're in.
+ */
+
+class KQueueArrayWrapper {
+ // kevent filters
+ static short EVFILT_READ;
+ static short EVFILT_WRITE;
+
+ // kevent struct
+ // These fields are now set by initStructSizes in the static initializer.
+ static short SIZEOF_KEVENT;
+ static short FD_OFFSET;
+ static short FILTER_OFFSET;
+
+ // kevent array size
+ static final int NUM_KEVENTS = 128;
+
+ // Are we in a 64-bit VM?
+ static boolean is64bit = false;
+
+ // The kevent array (used for outcoming events only)
+ private AllocatedNativeObject keventArray = null;
+ private long keventArrayAddress;
+
+ // The kqueue fd
+ private int kq = -1;
+
+ // The fd of the interrupt line going out
+ private int outgoingInterruptFD;
+
+ // The fd of the interrupt line coming in
+ private int incomingInterruptFD;
+
+ static {
+ IOUtil.load();
+ initStructSizes();
+ String datamodel = java.security.AccessController.doPrivileged(
+ new sun.security.action.GetPropertyAction("sun.arch.data.model")
+ );
+ is64bit = datamodel.equals("64");
+ }
+
+ KQueueArrayWrapper() {
+ int allocationSize = SIZEOF_KEVENT * NUM_KEVENTS;
+ keventArray = new AllocatedNativeObject(allocationSize, true);
+ keventArrayAddress = keventArray.address();
+ kq = init();
+ }
+
+ // Used to update file description registrations
+ private static class Update {
+ SelChImpl channel;
+ int events;
+ Update(SelChImpl channel, int events) {
+ this.channel = channel;
+ this.events = events;
+ }
+ }
+
+ private LinkedList<Update> updateList = new LinkedList<Update>();
+
+ void initInterrupt(int fd0, int fd1) {
+ outgoingInterruptFD = fd1;
+ incomingInterruptFD = fd0;
+ register0(kq, fd0, 1, 0);
+ }
+
+ int getReventOps(int index) {
+ int result = 0;
+ int offset = SIZEOF_KEVENT*index + FILTER_OFFSET;
+ short filter = keventArray.getShort(offset);
+
+ // This is all that's necessary based on inspection of usage:
+ // SinkChannelImpl, SourceChannelImpl, DatagramChannelImpl,
+ // ServerSocketChannelImpl, SocketChannelImpl
+ if (filter == EVFILT_READ) {
+ result |= Net.POLLIN;
+ } else if (filter == EVFILT_WRITE) {
+ result |= Net.POLLOUT;
+ }
+
+ return result;
+ }
+
+ int getDescriptor(int index) {
+ int offset = SIZEOF_KEVENT*index + FD_OFFSET;
+ /* The ident field is 8 bytes in 64-bit world, however the API wants us
+ * to return an int. Hence read the 8 bytes but return as an int.
+ */
+ if (is64bit) {
+ long fd = keventArray.getLong(offset);
+ assert fd <= Integer.MAX_VALUE;
+ return (int) fd;
+ } else {
+ return keventArray.getInt(offset);
+ }
+ }
+
+ void setInterest(SelChImpl channel, int events) {
+ synchronized (updateList) {
+ // update existing registration
+ updateList.add(new Update(channel, events));
+ }
+ }
+
+ void release(SelChImpl channel) {
+ synchronized (updateList) {
+ // flush any pending updates
+ for (Iterator<Update> it = updateList.iterator(); it.hasNext();) {
+ if (it.next().channel == channel) {
+ it.remove();
+ }
+ }
+
+ // remove
+ register0(kq, channel.getFDVal(), 0, 0);
+ }
+ }
+
+ void updateRegistrations() {
+ synchronized (updateList) {
+ Update u = null;
+ while ((u = updateList.poll()) != null) {
+ SelChImpl ch = u.channel;
+ if (!ch.isOpen())
+ continue;
+
+ register0(kq, ch.getFDVal(), u.events & Net.POLLIN, u.events & Net.POLLOUT);
+ }
+ }
+ }
+
+
+ void close() throws IOException {
+ if (keventArray != null) {
+ keventArray.free();
+ keventArray = null;
+ }
+ if (kq >= 0) {
+ FileDispatcherImpl.closeIntFD(kq);
+ kq = -1;
+ }
+ }
+
+ int poll(long timeout) {
+ updateRegistrations();
+ int updated = kevent0(kq, keventArrayAddress, NUM_KEVENTS, timeout);
+ return updated;
+ }
+
+ void interrupt() {
+ interrupt(outgoingInterruptFD);
+ }
+
+ private native int init();
+ private static native void initStructSizes();
+
+ private native void register0(int kq, int fd, int read, int write);
+ private native int kevent0(int kq, long keventAddress, int keventCount,
+ long timeout);
+ private static native void interrupt(int fd);
+}
--- ./jdk/src/bsd/classes/sun/nio/ch/KQueueSelectorImpl.java 1969-12-31 16:00:00.000000000 -0800
+++ ./jdk/src/bsd/classes/sun/nio/ch/KQueueSelectorImpl.java 2015-10-24 06:21:20.000000000 -0700
@@ -0,0 +1,249 @@
+/*
+ * Copyright (c) 2011, 2013, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * KQueueSelectorImpl.java
+ * Implementation of Selector using FreeBSD / Mac OS X kqueues
+ * Derived from Sun's DevPollSelectorImpl
+ */
+
+package sun.nio.ch;
+
+import java.io.IOException;
+import java.io.FileDescriptor;
+import java.nio.channels.*;
+import java.nio.channels.spi.*;
+import java.util.*;
+import sun.misc.*;
+
+class KQueueSelectorImpl
+ extends SelectorImpl
+{
+ // File descriptors used for interrupt
+ protected int fd0;
+ protected int fd1;
+
+ // The kqueue manipulator
+ KQueueArrayWrapper kqueueWrapper;
+
+ // Count of registered descriptors (including interrupt)
+ private int totalChannels;
+
+ // Map from a file descriptor to an entry containing the selection key
+ private HashMap<Integer,MapEntry> fdMap;
+
+ // True if this Selector has been closed
+ private boolean closed = false;
+
+ // Lock for interrupt triggering and clearing
+ private Object interruptLock = new Object();
+ private boolean interruptTriggered = false;
+
+ // used by updateSelectedKeys to handle cases where the same file
+ // descriptor is polled by more than one filter
+ private long updateCount;
+
+ // Used to map file descriptors to a selection key and "update count"
+ // (see updateSelectedKeys for usage).
+ private static class MapEntry {
+ SelectionKeyImpl ski;
+ long updateCount;
+ MapEntry(SelectionKeyImpl ski) {
+ this.ski = ski;
+ }
+ }
+
+ /**
+ * Package private constructor called by factory method in
+ * the abstract superclass Selector.
+ */
+ KQueueSelectorImpl(SelectorProvider sp) {
+ super(sp);
+ long fds = IOUtil.makePipe(false);
+ fd0 = (int)(fds >>> 32);
+ fd1 = (int)fds;
+ kqueueWrapper = new KQueueArrayWrapper();
+ kqueueWrapper.initInterrupt(fd0, fd1);
+ fdMap = new HashMap<>();
+ totalChannels = 1;
+ }
+
+
+ protected int doSelect(long timeout)
+ throws IOException
+ {
+ int entries = 0;
+ if (closed)
+ throw new ClosedSelectorException();
+ processDeregisterQueue();
+ try {
+ begin();
+ entries = kqueueWrapper.poll(timeout);
+ } finally {
+ end();
+ }
+ processDeregisterQueue();
+ return updateSelectedKeys(entries);
+ }
+
+ /**
+ * Update the keys whose fd's have been selected by kqueue.
+ * Add the ready keys to the selected key set.
+ * If the interrupt fd has been selected, drain it and clear the interrupt.
+ */
+ private int updateSelectedKeys(int entries)
+ throws IOException
+ {
+ int numKeysUpdated = 0;
+ boolean interrupted = false;
+
+ // A file descriptor may be registered with kqueue with more than one
+ // filter and so there may be more than one event for a fd. The update
+ // count in the MapEntry tracks when the fd was last updated and this
+ // ensures that the ready ops are updated rather than replaced by a
+ // second or subsequent event.
+ updateCount++;
+
+ for (int i = 0; i < entries; i++) {
+ int nextFD = kqueueWrapper.getDescriptor(i);
+ if (nextFD == fd0) {
+ interrupted = true;
+ } else {
+ MapEntry me = fdMap.get(Integer.valueOf(nextFD));
+
+ // entry is null in the case of an interrupt
+ if (me != null) {
+ int rOps = kqueueWrapper.getReventOps(i);
+ SelectionKeyImpl ski = me.ski;
+ if (selectedKeys.contains(ski)) {
+ // first time this file descriptor has been encountered on this
+ // update?
+ if (me.updateCount != updateCount) {
+ if (ski.channel.translateAndSetReadyOps(rOps, ski)) {
+ numKeysUpdated++;
+ me.updateCount = updateCount;
+ }
+ } else {
+ // ready ops have already been set on this update
+ ski.channel.translateAndUpdateReadyOps(rOps, ski);
+ }
+ } else {
+ ski.channel.translateAndSetReadyOps(rOps, ski);
+ if ((ski.nioReadyOps() & ski.nioInterestOps()) != 0) {
+ selectedKeys.add(ski);
+ numKeysUpdated++;
+ me.updateCount = updateCount;
+ }
+ }
+ }
+ }
+ }
+
+ if (interrupted) {
+ // Clear the wakeup pipe
+ synchronized (interruptLock) {
+ IOUtil.drain(fd0);
+ interruptTriggered = false;
+ }
+ }
+ return numKeysUpdated;
+ }
+
+
+ protected void implClose() throws IOException {
+ if (!closed) {
+ closed = true;
+
+ // prevent further wakeup
+ synchronized (interruptLock) {
+ interruptTriggered = true;
+ }
+
+ FileDispatcherImpl.closeIntFD(fd0);
+ FileDispatcherImpl.closeIntFD(fd1);
+ if (kqueueWrapper != null) {
+ kqueueWrapper.close();
+ kqueueWrapper = null;
+ selectedKeys = null;
+
+ // Deregister channels
+ Iterator<SelectionKey> i = keys.iterator();
+ while (i.hasNext()) {
+ SelectionKeyImpl ski = (SelectionKeyImpl)i.next();
+ deregister(ski);
+ SelectableChannel selch = ski.channel();
+ if (!selch.isOpen() && !selch.isRegistered())
+ ((SelChImpl)selch).kill();
+ i.remove();
+ }
+ totalChannels = 0;
+ }
+ fd0 = -1;
+ fd1 = -1;
+ }
+ }
+
+
+ protected void implRegister(SelectionKeyImpl ski) {
+ if (closed)
+ throw new ClosedSelectorException();
+ int fd = IOUtil.fdVal(ski.channel.getFD());
+ fdMap.put(Integer.valueOf(fd), new MapEntry(ski));
+ totalChannels++;
+ keys.add(ski);
+ }
+
+
+ protected void implDereg(SelectionKeyImpl ski) throws IOException {
+ int fd = ski.channel.getFDVal();
+ fdMap.remove(Integer.valueOf(fd));
+ kqueueWrapper.release(ski.channel);
+ totalChannels--;
+ keys.remove(ski);
+ selectedKeys.remove(ski);
+ deregister((AbstractSelectionKey)ski);
+ SelectableChannel selch = ski.channel();
+ if (!selch.isOpen() && !selch.isRegistered())
+ ((SelChImpl)selch).kill();
+ }
+
+
+ public void putEventOps(SelectionKeyImpl ski, int ops) {
+ if (closed)
+ throw new ClosedSelectorException();
+ kqueueWrapper.setInterest(ski.channel, ops);
+ }
+
+
+ public Selector wakeup() {
+ synchronized (interruptLock) {
+ if (!interruptTriggered) {
+ kqueueWrapper.interrupt();
+ interruptTriggered = true;
+ }
+ }
+ return this;
+ }
+}
--- ./jdk/src/bsd/classes/sun/nio/ch/KQueueSelectorProvider.java 1969-12-31 16:00:00.000000000 -0800
+++ ./jdk/src/bsd/classes/sun/nio/ch/KQueueSelectorProvider.java 2015-10-24 06:21:20.000000000 -0700
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2011, 2012, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * KQueueSelectorProvider.java
+ * Implementation of Selector using FreeBSD / Mac OS X kqueues
+ * Derived from Sun's DevPollSelectorProvider
+ */
+
+package sun.nio.ch;
+
+import java.io.IOException;
+import java.nio.channels.*;
+import java.nio.channels.spi.*;
+
+public class KQueueSelectorProvider
+extends SelectorProviderImpl
+{
+ public AbstractSelector openSelector() throws IOException {
+ return new KQueueSelectorImpl(this);
+ }
+}
--- ./jdk/src/bsd/doc/man/javah.1 2015-12-12 10:53:29.565324000 -0800
+++ ./jdk/src/bsd/doc/man/javah.1 2015-10-24 06:34:48.000000000 -0700
@@ -109,7 +109,7 @@
\&.:\fIyour-path\fR
-Example: \f3\&.:/home/avh/classes:/usr/local/java/classes\fR
+Example: \f3\&.:/home/avh/classes:/usr/local/share/java/classes\fR
\fIWindows\fR:
--- ./jdk/src/bsd/doc/man/rmic.1 2015-12-12 10:53:29.574296000 -0800
+++ ./jdk/src/bsd/doc/man/rmic.1 2015-10-24 06:35:21.000000000 -0700
@@ -92,7 +92,7 @@
.TP
-classpath path
.br
-Specifies the path the \f3rmic\fR command uses to look up classes\&. This option overrides the default or the \f3CLASSPATH\fR environment variable when it is set\&. Directories are separated by colons\&. The general format for path is: \f3\&.:<your_path>\fR, for example: \f3\&.:/usr/local/java/classes\fR\&.
+Specifies the path the \f3rmic\fR command uses to look up classes\&. This option overrides the default or the \f3CLASSPATH\fR environment variable when it is set\&. Directories are separated by colons\&. The general format for path is: \f3\&.:<your_path>\fR, for example: \f3\&.:/usr/local/share/java/classes\fR\&.
.TP
-d \fIdirectory\fR
.br
@@ -206,7 +206,7 @@
.SH ENVIRONMENT\ VARIABLES
.TP
CLASSPATH
-Used to provide the system a path to user-defined classes\&. Directories are separated by colons, for example: \f3\&.:/usr/local/java/classes\fR\&.
+Used to provide the system a path to user-defined classes\&. Directories are separated by colons, for example: \f3\&.:/usr/local/share/java/classes\fR\&.
.SH SEE\ ALSO
.TP 0.2i
\(bu
--- ./jdk/src/bsd/doc/man/rmid.1 2015-12-12 10:53:29.574807000 -0800
+++ ./jdk/src/bsd/doc/man/rmid.1 2015-10-24 06:35:59.000000000 -0700
@@ -300,7 +300,7 @@
.SH ENVIRONMENT\ VARIABLES
.TP
CLASSPATH
-Used to provide the system a path to user-defined classes\&. Directories are separated by colons, for example: \f3\&.:/usr/local/java/classes\fR\&.
+Used to provide the system a path to user-defined classes\&. Directories are separated by colons, for example: \f3\&.:/usr/local/share/java/classes\fR\&.
.SH SEE\ ALSO
.TP 0.2i
\(bu
--- ./jdk/src/bsd/native/sun/nio/ch/KQueueArrayWrapper.c 1969-12-31 16:00:00.000000000 -0800
+++ ./jdk/src/bsd/native/sun/nio/ch/KQueueArrayWrapper.c 2015-10-24 06:21:20.000000000 -0700
@@ -0,0 +1,171 @@
+/*
+ * Copyright (c) 2011, 2012, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * KQueueArrayWrapper.c
+ * Implementation of Selector using FreeBSD / Mac OS X kqueues
+ * Derived from Sun's DevPollArrayWrapper
+ */
+
+
+#include "jni.h"
+#include "jni_util.h"
+#include "jvm.h"
+#include "jlong.h"
+
+#include <sys/types.h>
+#include <sys/event.h>
+#include <sys/time.h>
+
+JNIEXPORT void JNICALL
+Java_sun_nio_ch_KQueueArrayWrapper_initStructSizes(JNIEnv *env, jclass clazz)
+{
+#define CHECK_EXCEPTION() { \
+ if ((*env)->ExceptionCheck(env)) { \
+ goto exceptionOccurred; \
+ } \
+}
+
+#define CHECK_ERROR_AND_EXCEPTION(_field) { \
+ if (_field == NULL) { \
+ goto badField; \
+ } \
+ CHECK_EXCEPTION(); \
+}
+
+
+ jfieldID field;
+
+ field = (*env)->GetStaticFieldID(env, clazz, "EVFILT_READ", "S");
+ CHECK_ERROR_AND_EXCEPTION(field);
+ (*env)->SetStaticShortField(env, clazz, field, EVFILT_READ);
+ CHECK_EXCEPTION();
+
+ field = (*env)->GetStaticFieldID(env, clazz, "EVFILT_WRITE", "S");
+ CHECK_ERROR_AND_EXCEPTION(field);
+ (*env)->SetStaticShortField(env, clazz, field, EVFILT_WRITE);
+ CHECK_EXCEPTION();
+
+ field = (*env)->GetStaticFieldID(env, clazz, "SIZEOF_KEVENT", "S");
+ CHECK_ERROR_AND_EXCEPTION(field);
+ (*env)->SetStaticShortField(env, clazz, field, (short) sizeof(struct kevent));
+ CHECK_EXCEPTION();
+
+ field = (*env)->GetStaticFieldID(env, clazz, "FD_OFFSET", "S");
+ CHECK_ERROR_AND_EXCEPTION(field);
+ (*env)->SetStaticShortField(env, clazz, field, (short) offsetof(struct kevent, ident));
+ CHECK_EXCEPTION();
+
+ field = (*env)->GetStaticFieldID(env, clazz, "FILTER_OFFSET", "S");
+ CHECK_ERROR_AND_EXCEPTION(field);
+ (*env)->SetStaticShortField(env, clazz, field, (short) offsetof(struct kevent, filter));
+ CHECK_EXCEPTION();
+ return;
+
+badField:
+ return;
+
+exceptionOccurred:
+ return;
+
+#undef CHECK_EXCEPTION
+#undef CHECK_ERROR_AND_EXCEPTION
+}
+
+JNIEXPORT jint JNICALL
+Java_sun_nio_ch_KQueueArrayWrapper_init(JNIEnv *env, jobject this)
+{
+ int kq = kqueue();
+ if (kq < 0) {
+ JNU_ThrowIOExceptionWithLastError(env, "KQueueArrayWrapper: kqueue() failed");
+ }
+ return kq;
+}
+
+
+JNIEXPORT void JNICALL
+Java_sun_nio_ch_KQueueArrayWrapper_register0(JNIEnv *env, jobject this,
+ jint kq, jint fd, jint r, jint w)
+{
+ struct kevent changes[2];
+ struct kevent errors[2];
+ struct timespec dontBlock = {0, 0};
+
+ // if (r) then { register for read } else { unregister for read }
+ // if (w) then { register for write } else { unregister for write }
+ // Ignore errors - they're probably complaints about deleting non-
+ // added filters - but provide an error array anyway because
+ // kqueue behaves erratically if some of its registrations fail.
+ EV_SET(&changes[0], fd, EVFILT_READ, r ? EV_ADD : EV_DELETE, 0, 0, 0);
+ EV_SET(&changes[1], fd, EVFILT_WRITE, w ? EV_ADD : EV_DELETE, 0, 0, 0);
+ kevent(kq, changes, 2, errors, 2, &dontBlock);
+}
+
+
+JNIEXPORT jint JNICALL
+Java_sun_nio_ch_KQueueArrayWrapper_kevent0(JNIEnv *env, jobject this, jint kq,
+ jlong kevAddr, jint kevCount,
+ jlong timeout)
+{
+ struct kevent *kevs = (struct kevent *)jlong_to_ptr(kevAddr);
+ struct timespec ts;
+ struct timespec *tsp;
+ int result;
+
+ // Java timeout is in milliseconds. Convert to struct timespec.
+ // Java timeout == -1 : wait forever : timespec timeout of NULL
+ // Java timeout == 0 : return immediately : timespec timeout of zero
+ if (timeout >= 0) {
+ ts.tv_sec = timeout / 1000;
+ ts.tv_nsec = (timeout % 1000) * 1000000; //nanosec = 1 million millisec
+ tsp = &ts;
+ } else {
+ tsp = NULL;
+ }
+
+ result = kevent(kq, NULL, 0, kevs, kevCount, tsp);
+
+ if (result < 0) {
+ if (errno == EINTR) {
+ // ignore EINTR, pretend nothing was selected
+ result = 0;
+ } else {
+ JNU_ThrowIOExceptionWithLastError(env, "KQueueArrayWrapper: kqueue failed");
+ }
+ }
+
+ return result;
+}
+
+
+JNIEXPORT void JNICALL
+Java_sun_nio_ch_KQueueArrayWrapper_interrupt(JNIEnv *env, jclass cls, jint fd)
+{
+ char c = 1;
+ if (1 != write(fd, &c, 1)) {
+ JNU_ThrowIOExceptionWithLastError(env, "KQueueArrayWrapper: interrupt failed");
+ }
+}
+
--- ./jdk/src/linux/doc/man/java.1 2015-12-12 10:53:29.596528000 -0800
+++ ./jdk/src/linux/doc/man/java.1 2015-10-24 06:21:19.000000000 -0700
@@ -1,5 +1,6 @@
'\" t
-.\" Copyright (c) 1994, 2015, Oracle and/or its affiliates. All rights reserved. DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+.\" Copyright (c) 1994, 2015, 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
.\" under the terms of the GNU General Public License version 2 only, as
--- ./jdk/src/macosx/bin/java_md_macosx.c 2015-12-12 10:53:29.615465000 -0800
+++ ./jdk/src/macosx/bin/java_md_macosx.c 2015-07-18 13:32:30.000000000 -0700
@@ -616,7 +616,11 @@
if (access(libjava, F_OK) == 0) {
return JNI_TRUE;
}
-
+ /* ensure storage for path + /jre + NULL */
+ if ((JLI_StrLen(path) + 4 + 1) > pathsize) {
+ JLI_TraceLauncher("Insufficient space to store JRE path\n");
+ return JNI_FALSE;
+ }
/* Does the app ship a private JRE in <apphome>/jre directory? */
JLI_Snprintf(libjava, sizeof(libjava), "%s/jre/lib/" JAVA_DLL, path);
if (access(libjava, F_OK) == 0) {
--- ./jdk/src/macosx/classes/com/apple/laf/resources/aqua_de.properties 2014-03-03 18:57:20.000000000 -0800
+++ ./jdk/src/macosx/classes/com/apple/laf/resources/aqua_de.properties 2015-10-24 06:21:16.000000000 -0700
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2015, 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
@@ -124,9 +124,9 @@
# The following string will be formatted by a MessageFormat
# and {0} will be replaced by page number being printed
-PrintingDialog.contentProgress.textAndMnemonic=Seite {0} wurde gedruckt ...
+PrintingDialog.contentProgress.textAndMnemonic=Seite {0} wurde gedruckt...
-PrintingDialog.contentAborting.textAndMnemonic=Druckvorgang wird abgebrochen ...
+PrintingDialog.contentAborting.textAndMnemonic=Druckvorgang wird abgebrochen...
PrintingDialog.abortButton.textAndMnemonic=&Abbruch
PrintingDialog.abortButtonToolTip.textAndMnemonic=Druckvorgang abbrechen
@@ -149,7 +149,7 @@
# Used for html forms
FormView.submitButton.textAndMnemonic=Abfrage weiterleiten
FormView.resetButton.textAndMnemonic=Zur\u00FCcksetzen
-FormView.browseFileButton.textAndMnemonic=Durchsuchen ...
+FormView.browseFileButton.textAndMnemonic=Durchsuchen...
############ Abstract Document Strings ############
AbstractDocument.styleChange.textAndMnemonic=Formatvorlagen\u00E4nderung
@@ -169,7 +169,7 @@
ComboBox.togglePopup.textAndMnemonic=togglePopup
############ Progress Monitor Strings ############
-ProgressMonitor.progress.textAndMnemonic=Fortschritt ...
+ProgressMonitor.progress.textAndMnemonic=Fortschritt...
############ Split Pane Strings ############
SplitPane.leftButton.textAndMnemonic=linke Schaltfl\u00E4che
--- ./jdk/src/macosx/classes/com/apple/laf/resources/aqua_sv.properties 2015-12-12 10:53:29.619621000 -0800
+++ ./jdk/src/macosx/classes/com/apple/laf/resources/aqua_sv.properties 2015-10-24 06:21:16.000000000 -0700
@@ -173,7 +173,7 @@
############ Split Pane Strings ############
SplitPane.leftButton.textAndMnemonic=v\u00E4nsterknapp
-SplitPane.rightButton.textAndMnemonic=h\u00F6ger knapp
+SplitPane.rightButton.textAndMnemonic=h\u00F6gerknapp
# Used for Isindex
IsindexView.prompt=Detta \u00E4r ett s\u00F6kbart index. Ange s\u00F6kord:
--- ./jdk/src/macosx/classes/java/net/DefaultInterface.java 2014-03-03 18:57:20.000000000 -0800
+++ ./jdk/src/macosx/classes/java/net/DefaultInterface.java 1969-12-31 16:00:00.000000000 -0800
@@ -1,97 +0,0 @@
-/*
- * Copyright (c) 2011, 2013, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package java.net;
-
-/**
- * Choose a network interface to be the default for
- * outgoing IPv6 traffic that does not specify a scope_id (and which needs one).
- * We choose the first interface that is up and is (in order of preference):
- * 1. neither loopback nor point to point
- * 2. point to point
- * 3. loopback
- * 4. none.
- * Platforms that do not require a default interface implement a dummy
- * that returns null.
- */
-
-import java.util.Enumeration;
-import java.io.IOException;
-
-class DefaultInterface {
-
- private final static NetworkInterface defaultInterface =
- chooseDefaultInterface();
-
- static NetworkInterface getDefault() {
- return defaultInterface;
- }
-
- /**
- * Choose a default interface. This method returns an interface that is
- * both "up" and supports multicast. This method choses an interface in
- * order of preference:
- * 1. neither loopback nor point to point
- * 2. point to point
- * 3. loopback
- *
- * @return the chosen interface or {@code null} if there isn't a suitable
- * default
- */
- private static NetworkInterface chooseDefaultInterface() {
- Enumeration<NetworkInterface> nifs;
-
- try {
- nifs = NetworkInterface.getNetworkInterfaces();
- } catch (IOException ignore) {
- // unable to enumate network interfaces
- return null;
- }
-
- NetworkInterface ppp = null;
- NetworkInterface loopback = null;
-
- while (nifs.hasMoreElements()) {
- NetworkInterface ni = nifs.nextElement();
- try {
- if (ni.isUp() && ni.supportsMulticast()) {
- boolean isLoopback = ni.isLoopback();
- boolean isPPP = ni.isPointToPoint();
- if (!isLoopback && !isPPP) {
- // found an interface that is not the loopback or a
- // point-to-point interface
- return ni;
- }
- if (ppp == null && isPPP)
- ppp = ni;
- if (loopback == null && isLoopback)
- loopback = ni;
- }
- } catch (IOException skip) { }
- }
-
- return (ppp != null) ? ppp : loopback;
- }
-}
--- ./jdk/src/macosx/classes/sun/lwawt/macosx/CDataTransferer.java 2015-12-12 10:53:21.921291000 -0800
+++ ./jdk/src/macosx/classes/sun/lwawt/macosx/CDataTransferer.java 2015-10-24 06:21:16.000000000 -0700
@@ -52,7 +52,9 @@
"RICH_TEXT",
"HTML",
"PDF",
- "URL"
+ "URL",
+ "PNG",
+ "JFIF"
};
static {
@@ -74,8 +76,8 @@
public static final int CF_HTML = 5;
public static final int CF_PDF = 6;
public static final int CF_URL = 7;
- public static final int CF_PNG = 10;
- public static final int CF_JPEG = 11;
+ public static final int CF_PNG = 8;
+ public static final int CF_JPEG = 9;
private CDataTransferer() {}
@@ -204,20 +206,9 @@
return handler;
}
- private native byte[] imageDataToPlatformImageBytes(int[] rData, int nW, int nH);
@Override
protected byte[] imageToPlatformBytes(Image image, long format) {
- int w = image.getWidth(null);
- int h = image.getHeight(null);
- BufferedImage bimage = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB_PRE);
- Graphics g = bimage.getGraphics();
- g.drawImage(image, 0, 0, w, h, null);
- g.dispose();
- Raster raster = bimage.getRaster();
- DataBuffer buffer = raster.getDataBuffer();
- return imageDataToPlatformImageBytes(((DataBufferInt)buffer).getData(),
- raster.getWidth(),
- raster.getHeight());
+ return CImage.getCreator().getPlatformImageBytes(image);
}
private static native String[] nativeDragQueryFile(final byte[] bytes);
@@ -228,14 +219,9 @@
return nativeDragQueryFile(bytes);
}
- private native Image getImageForByteStream(byte[] bytes);
- /**
- * Translates a byte array which contains
- * platform-specific image data in the given format into an Image.
- */
@Override
protected Image platformImageBytesToImage(byte[] bytes, long format) throws IOException {
- return getImageForByteStream(bytes);
+ return CImage.getCreator().createImageFromPlatformImageBytes(bytes);
}
@Override
--- ./jdk/src/macosx/classes/sun/lwawt/macosx/CImage.java 2015-12-12 10:53:29.622720000 -0800
+++ ./jdk/src/macosx/classes/sun/lwawt/macosx/CImage.java 2015-10-24 06:21:16.000000000 -0700
@@ -38,11 +38,13 @@
public class CImage extends CFRetainedResource {
private static native long nativeCreateNSImageFromArray(int[] buffer, int w, int h);
+ private static native long nativeCreateNSImageFromBytes(byte[] buffer);
private static native long nativeCreateNSImageFromArrays(int[][] buffers, int w[], int h[]);
private static native long nativeCreateNSImageFromFileContents(String file);
private static native long nativeCreateNSImageOfFileFromLaunchServices(String file);
private static native long nativeCreateNSImageFromImageName(String name);
private static native long nativeCreateNSImageFromIconSelector(int selector);
+ private static native byte[] nativeGetPlatformImageBytes(int[] buffer, int w, int h);
private static native void nativeCopyNSImageIntoArray(long image, int[] buffer, int sw, int sh, int dw, int dh);
private static native Dimension2D nativeGetNSImageSize(long image);
private static native void nativeSetNSImageSize(long image, double w, double h);
@@ -50,7 +52,7 @@
private static native Dimension2D[] nativeGetNSImageRepresentationSizes(long image, double w, double h);
static Creator creator = new Creator();
- static Creator getCreator() {
+ public static Creator getCreator() {
return creator;
}
@@ -136,6 +138,23 @@
return ((DataBufferInt)bimg.getRaster().getDataBuffer()).getData();
}
+ public byte[] getPlatformImageBytes(final Image image) {
+ int[] buffer = imageToArray(image, false);
+
+ if (buffer == null) {
+ return null;
+ }
+
+ return nativeGetPlatformImageBytes(buffer, image.getWidth(null), image.getHeight(null));
+ }
+
+ /**
+ * Translates a byte array which contains platform-specific image data in the given format into an Image.
+ */
+ public Image createImageFromPlatformImageBytes(final byte[] buffer) {
+ return createImageUsingNativeSize(nativeCreateNSImageFromBytes(buffer));
+ }
+
// This is used to create a CImage from a Image
public CImage createFromImage(final Image image) {
return createFromImage(image, true);
--- ./jdk/src/macosx/classes/sun/nio/ch/DefaultSelectorProvider.java 2014-03-03 18:57:21.000000000 -0800
+++ ./jdk/src/macosx/classes/sun/nio/ch/DefaultSelectorProvider.java 1969-12-31 16:00:00.000000000 -0800
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 2011, 2012, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package sun.nio.ch;
-
-import java.nio.channels.spi.SelectorProvider;
-
-/**
- * Creates this platform's default SelectorProvider
- */
-
-public class DefaultSelectorProvider {
-
- /**
- * Prevent instantiation.
- */
- private DefaultSelectorProvider() { }
-
- /**
- * Returns the default SelectorProvider.
- */
- public static SelectorProvider create() {
- return new sun.nio.ch.KQueueSelectorProvider();
- }
-
-}
--- ./jdk/src/macosx/classes/sun/nio/ch/KQueueArrayWrapper.java 2015-12-12 10:53:21.929443000 -0800
+++ ./jdk/src/macosx/classes/sun/nio/ch/KQueueArrayWrapper.java 1969-12-31 16:00:00.000000000 -0800
@@ -1,213 +0,0 @@
-/*
- * Copyright (c) 2011, 2013, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * KQueueArrayWrapper.java
- * Implementation of Selector using FreeBSD / Mac OS X kqueues
- * Derived from Sun's DevPollArrayWrapper
- */
-
-package sun.nio.ch;
-
-import sun.misc.*;
-import java.io.IOException;
-import java.io.FileDescriptor;
-import java.util.Iterator;
-import java.util.LinkedList;
-
-/*
- * struct kevent { // 32-bit 64-bit
- * uintptr_t ident; // 4 8
- * short filter; // 2 2
- * u_short flags; // 2 2
- * u_int fflags; // 4 4
- * intptr_t data; // 4 8
- * void *udata; // 4 8
- * } // Total: 20 32
- *
- * The implementation works in 32-bit and 64-bit world. We do this by calling a
- * native function that actually sets the sizes and offsets of the fields based
- * on which mode we're in.
- */
-
-class KQueueArrayWrapper {
- // kevent filters
- static short EVFILT_READ;
- static short EVFILT_WRITE;
-
- // kevent struct
- // These fields are now set by initStructSizes in the static initializer.
- static short SIZEOF_KEVENT;
- static short FD_OFFSET;
- static short FILTER_OFFSET;
-
- // kevent array size
- static final int NUM_KEVENTS = 128;
-
- // Are we in a 64-bit VM?
- static boolean is64bit = false;
-
- // The kevent array (used for outcoming events only)
- private AllocatedNativeObject keventArray = null;
- private long keventArrayAddress;
-
- // The kqueue fd
- private int kq = -1;
-
- // The fd of the interrupt line going out
- private int outgoingInterruptFD;
-
- // The fd of the interrupt line coming in
- private int incomingInterruptFD;
-
- static {
- IOUtil.load();
- initStructSizes();
- String datamodel = java.security.AccessController.doPrivileged(
- new sun.security.action.GetPropertyAction("sun.arch.data.model")
- );
- is64bit = datamodel.equals("64");
- }
-
- KQueueArrayWrapper() {
- int allocationSize = SIZEOF_KEVENT * NUM_KEVENTS;
- keventArray = new AllocatedNativeObject(allocationSize, true);
- keventArrayAddress = keventArray.address();
- kq = init();
- }
-
- // Used to update file description registrations
- private static class Update {
- SelChImpl channel;
- int events;
- Update(SelChImpl channel, int events) {
- this.channel = channel;
- this.events = events;
- }
- }
-
- private LinkedList<Update> updateList = new LinkedList<Update>();
-
- void initInterrupt(int fd0, int fd1) {
- outgoingInterruptFD = fd1;
- incomingInterruptFD = fd0;
- register0(kq, fd0, 1, 0);
- }
-
- int getReventOps(int index) {
- int result = 0;
- int offset = SIZEOF_KEVENT*index + FILTER_OFFSET;
- short filter = keventArray.getShort(offset);
-
- // This is all that's necessary based on inspection of usage:
- // SinkChannelImpl, SourceChannelImpl, DatagramChannelImpl,
- // ServerSocketChannelImpl, SocketChannelImpl
- if (filter == EVFILT_READ) {
- result |= Net.POLLIN;
- } else if (filter == EVFILT_WRITE) {
- result |= Net.POLLOUT;
- }
-
- return result;
- }
-
- int getDescriptor(int index) {
- int offset = SIZEOF_KEVENT*index + FD_OFFSET;
- /* The ident field is 8 bytes in 64-bit world, however the API wants us
- * to return an int. Hence read the 8 bytes but return as an int.
- */
- if (is64bit) {
- long fd = keventArray.getLong(offset);
- assert fd <= Integer.MAX_VALUE;
- return (int) fd;
- } else {
- return keventArray.getInt(offset);
- }
- }
-
- void setInterest(SelChImpl channel, int events) {
- synchronized (updateList) {
- // update existing registration
- updateList.add(new Update(channel, events));
- }
- }
-
- void release(SelChImpl channel) {
- synchronized (updateList) {
- // flush any pending updates
- for (Iterator<Update> it = updateList.iterator(); it.hasNext();) {
- if (it.next().channel == channel) {
- it.remove();
- }
- }
-
- // remove
- register0(kq, channel.getFDVal(), 0, 0);
- }
- }
-
- void updateRegistrations() {
- synchronized (updateList) {
- Update u = null;
- while ((u = updateList.poll()) != null) {
- SelChImpl ch = u.channel;
- if (!ch.isOpen())
- continue;
-
- register0(kq, ch.getFDVal(), u.events & Net.POLLIN, u.events & Net.POLLOUT);
- }
- }
- }
-
-
- void close() throws IOException {
- if (keventArray != null) {
- keventArray.free();
- keventArray = null;
- }
- if (kq >= 0) {
- FileDispatcherImpl.closeIntFD(kq);
- kq = -1;
- }
- }
-
- int poll(long timeout) {
- updateRegistrations();
- int updated = kevent0(kq, keventArrayAddress, NUM_KEVENTS, timeout);
- return updated;
- }
-
- void interrupt() {
- interrupt(outgoingInterruptFD);
- }
-
- private native int init();
- private static native void initStructSizes();
-
- private native void register0(int kq, int fd, int read, int write);
- private native int kevent0(int kq, long keventAddress, int keventCount,
- long timeout);
- private static native void interrupt(int fd);
-}
--- ./jdk/src/macosx/classes/sun/nio/ch/KQueueSelectorImpl.java 2014-03-03 18:57:21.000000000 -0800
+++ ./jdk/src/macosx/classes/sun/nio/ch/KQueueSelectorImpl.java 1969-12-31 16:00:00.000000000 -0800
@@ -1,249 +0,0 @@
-/*
- * Copyright (c) 2011, 2013, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * KQueueSelectorImpl.java
- * Implementation of Selector using FreeBSD / Mac OS X kqueues
- * Derived from Sun's DevPollSelectorImpl
- */
-
-package sun.nio.ch;
-
-import java.io.IOException;
-import java.io.FileDescriptor;
-import java.nio.channels.*;
-import java.nio.channels.spi.*;
-import java.util.*;
-import sun.misc.*;
-
-class KQueueSelectorImpl
- extends SelectorImpl
-{
- // File descriptors used for interrupt
- protected int fd0;
- protected int fd1;
-
- // The kqueue manipulator
- KQueueArrayWrapper kqueueWrapper;
-
- // Count of registered descriptors (including interrupt)
- private int totalChannels;
-
- // Map from a file descriptor to an entry containing the selection key
- private HashMap<Integer,MapEntry> fdMap;
-
- // True if this Selector has been closed
- private boolean closed = false;
-
- // Lock for interrupt triggering and clearing
- private Object interruptLock = new Object();
- private boolean interruptTriggered = false;
-
- // used by updateSelectedKeys to handle cases where the same file
- // descriptor is polled by more than one filter
- private long updateCount;
-
- // Used to map file descriptors to a selection key and "update count"
- // (see updateSelectedKeys for usage).
- private static class MapEntry {
- SelectionKeyImpl ski;
- long updateCount;
- MapEntry(SelectionKeyImpl ski) {
- this.ski = ski;
- }
- }
-
- /**
- * Package private constructor called by factory method in
- * the abstract superclass Selector.
- */
- KQueueSelectorImpl(SelectorProvider sp) {
- super(sp);
- long fds = IOUtil.makePipe(false);
- fd0 = (int)(fds >>> 32);
- fd1 = (int)fds;
- kqueueWrapper = new KQueueArrayWrapper();
- kqueueWrapper.initInterrupt(fd0, fd1);
- fdMap = new HashMap<>();
- totalChannels = 1;
- }
-
-
- protected int doSelect(long timeout)
- throws IOException
- {
- int entries = 0;
- if (closed)
- throw new ClosedSelectorException();
- processDeregisterQueue();
- try {
- begin();
- entries = kqueueWrapper.poll(timeout);
- } finally {
- end();
- }
- processDeregisterQueue();
- return updateSelectedKeys(entries);
- }
-
- /**
- * Update the keys whose fd's have been selected by kqueue.
- * Add the ready keys to the selected key set.
- * If the interrupt fd has been selected, drain it and clear the interrupt.
- */
- private int updateSelectedKeys(int entries)
- throws IOException
- {
- int numKeysUpdated = 0;
- boolean interrupted = false;
-
- // A file descriptor may be registered with kqueue with more than one
- // filter and so there may be more than one event for a fd. The update
- // count in the MapEntry tracks when the fd was last updated and this
- // ensures that the ready ops are updated rather than replaced by a
- // second or subsequent event.
- updateCount++;
-
- for (int i = 0; i < entries; i++) {
- int nextFD = kqueueWrapper.getDescriptor(i);
- if (nextFD == fd0) {
- interrupted = true;
- } else {
- MapEntry me = fdMap.get(Integer.valueOf(nextFD));
-
- // entry is null in the case of an interrupt
- if (me != null) {
- int rOps = kqueueWrapper.getReventOps(i);
- SelectionKeyImpl ski = me.ski;
- if (selectedKeys.contains(ski)) {
- // first time this file descriptor has been encountered on this
- // update?
- if (me.updateCount != updateCount) {
- if (ski.channel.translateAndSetReadyOps(rOps, ski)) {
- numKeysUpdated++;
- me.updateCount = updateCount;
- }
- } else {
- // ready ops have already been set on this update
- ski.channel.translateAndUpdateReadyOps(rOps, ski);
- }
- } else {
- ski.channel.translateAndSetReadyOps(rOps, ski);
- if ((ski.nioReadyOps() & ski.nioInterestOps()) != 0) {
- selectedKeys.add(ski);
- numKeysUpdated++;
- me.updateCount = updateCount;
- }
- }
- }
- }
- }
-
- if (interrupted) {
- // Clear the wakeup pipe
- synchronized (interruptLock) {
- IOUtil.drain(fd0);
- interruptTriggered = false;
- }
- }
- return numKeysUpdated;
- }
-
-
- protected void implClose() throws IOException {
- if (!closed) {
- closed = true;
-
- // prevent further wakeup
- synchronized (interruptLock) {
- interruptTriggered = true;
- }
-
- FileDispatcherImpl.closeIntFD(fd0);
- FileDispatcherImpl.closeIntFD(fd1);
- if (kqueueWrapper != null) {
- kqueueWrapper.close();
- kqueueWrapper = null;
- selectedKeys = null;
-
- // Deregister channels
- Iterator<SelectionKey> i = keys.iterator();
- while (i.hasNext()) {
- SelectionKeyImpl ski = (SelectionKeyImpl)i.next();
- deregister(ski);
- SelectableChannel selch = ski.channel();
- if (!selch.isOpen() && !selch.isRegistered())
- ((SelChImpl)selch).kill();
- i.remove();
- }
- totalChannels = 0;
- }
- fd0 = -1;
- fd1 = -1;
- }
- }
-
-
- protected void implRegister(SelectionKeyImpl ski) {
- if (closed)
- throw new ClosedSelectorException();
- int fd = IOUtil.fdVal(ski.channel.getFD());
- fdMap.put(Integer.valueOf(fd), new MapEntry(ski));
- totalChannels++;
- keys.add(ski);
- }
-
-
- protected void implDereg(SelectionKeyImpl ski) throws IOException {
- int fd = ski.channel.getFDVal();
- fdMap.remove(Integer.valueOf(fd));
- kqueueWrapper.release(ski.channel);
- totalChannels--;
- keys.remove(ski);
- selectedKeys.remove(ski);
- deregister((AbstractSelectionKey)ski);
- SelectableChannel selch = ski.channel();
- if (!selch.isOpen() && !selch.isRegistered())
- ((SelChImpl)selch).kill();
- }
-
-
- public void putEventOps(SelectionKeyImpl ski, int ops) {
- if (closed)
- throw new ClosedSelectorException();
- kqueueWrapper.setInterest(ski.channel, ops);
- }
-
-
- public Selector wakeup() {
- synchronized (interruptLock) {
- if (!interruptTriggered) {
- kqueueWrapper.interrupt();
- interruptTriggered = true;
- }
- }
- return this;
- }
-}
--- ./jdk/src/macosx/classes/sun/nio/ch/KQueueSelectorProvider.java 2014-03-03 18:57:21.000000000 -0800
+++ ./jdk/src/macosx/classes/sun/nio/ch/KQueueSelectorProvider.java 1969-12-31 16:00:00.000000000 -0800
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 2011, 2012, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * KQueueSelectorProvider.java
- * Implementation of Selector using FreeBSD / Mac OS X kqueues
- * Derived from Sun's DevPollSelectorProvider
- */
-
-package sun.nio.ch;
-
-import java.io.IOException;
-import java.nio.channels.*;
-import java.nio.channels.spi.*;
-
-public class KQueueSelectorProvider
-extends SelectorProviderImpl
-{
- public AbstractSelector openSelector() throws IOException {
- return new KQueueSelectorImpl(this);
- }
-}
--- ./jdk/src/macosx/native/sun/awt/CDataTransferer.m 2015-12-12 10:53:21.933117000 -0800
+++ ./jdk/src/macosx/native/sun/awt/CDataTransferer.m 2015-10-24 06:21:16.000000000 -0700
@@ -54,6 +54,10 @@
forKey:[NSNumber numberWithLong:sun_lwawt_macosx_CDataTransferer_CF_PDF]];
[sStandardMappings setObject:NSURLPboardType
forKey:[NSNumber numberWithLong:sun_lwawt_macosx_CDataTransferer_CF_URL]];
+ [sStandardMappings setObject:NSPasteboardTypePNG
+ forKey:[NSNumber numberWithLong:sun_lwawt_macosx_CDataTransferer_CF_PNG]];
+ [sStandardMappings setObject:(NSString*)kUTTypeJPEG
+ forKey:[NSNumber numberWithLong:sun_lwawt_macosx_CDataTransferer_CF_JPEG]];
}
return sStandardMappings;
}
@@ -126,108 +130,6 @@
return returnValue;
}
-/*
- * Class: sun_lwawt_macosx_CDataTransferer
- * Method: imageDataToPlatformImageBytes
- * Signature: ([III)[B
- */
-JNIEXPORT jbyteArray JNICALL Java_sun_lwawt_macosx_CDataTransferer_imageDataToPlatformImageBytes
-(JNIEnv *env, jobject obj, jintArray inPixelData, jint inWidth, jint inHeight)
-{
- jbyteArray returnValue = nil;
-JNF_COCOA_ENTER(env);
- UInt32 *rawImageData = (UInt32 *)(*env)->GetPrimitiveArrayCritical(env, inPixelData, 0);
-
- // The pixel data is in premultiplied ARGB format. That's exactly what
- // we need for the bitmap image rep.
- if (rawImageData != NULL) {
- NSBitmapImageRep *imageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL
- pixelsWide:inWidth
- pixelsHigh:inHeight
- bitsPerSample:8
- samplesPerPixel:4
- hasAlpha:YES
- isPlanar:NO
- colorSpaceName:NSCalibratedRGBColorSpace
- bytesPerRow:(inWidth*4)
- bitsPerPixel:32];
-
- // Conver the ARGB data into RGBA data that the bitmap can draw.
- unsigned char *destData = [imageRep bitmapData];
- unsigned char *currentRowBase;
- jint x, y;
-
- for (y = 0; y < inHeight; y++) {
- currentRowBase = destData + y * (inWidth * 4);
- unsigned char *currElement = currentRowBase;
- for (x = 0; x < inWidth; x++) {
- UInt32 currPixel = rawImageData[y * inWidth + x];
- *currElement++ = ((currPixel & 0xFF0000) >> 16);
- *currElement++ = ((currPixel & 0xFF00) >> 8);
- *currElement++ = (currPixel & 0xFF);
- *currElement++ = ((currPixel & 0xFF000000) >> 24);
- }
- }
-
- (*env)->ReleasePrimitiveArrayCritical(env, inPixelData, rawImageData, JNI_ABORT);
- NSData *tiffImage = [imageRep TIFFRepresentation];
- jsize tiffSize = (jsize)[tiffImage length]; // #warning 64-bit: -length returns NSUInteger, but NewByteArray takes jsize
- returnValue = (*env)->NewByteArray(env, tiffSize);
- CHECK_NULL_RETURN(returnValue, nil);
- jbyte *tiffData = (jbyte *)(*env)->GetPrimitiveArrayCritical(env, returnValue, 0);
- CHECK_NULL_RETURN(tiffData, nil);
- [tiffImage getBytes:tiffData];
- (*env)->ReleasePrimitiveArrayCritical(env, returnValue, tiffData, 0); // Do not use JNI_COMMIT, as that will not free the buffer copy when +ProtectJavaHeap is on.
- [imageRep release];
- }
-JNF_COCOA_EXIT(env);
- return returnValue;
-
-}
-
-static jobject getImageForByteStream(JNIEnv *env, jbyteArray sourceData)
-{
- CHECK_NULL_RETURN(sourceData, NULL);
-
- jsize sourceSize = (*env)->GetArrayLength(env, sourceData);
- if (sourceSize == 0) return NULL;
-
- jbyte *sourceBytes = (*env)->GetPrimitiveArrayCritical(env, sourceData, NULL);
- CHECK_NULL_RETURN(sourceBytes, NULL);
- NSData *rawData = [NSData dataWithBytes:sourceBytes length:sourceSize];
-
- NSImage *newImage = [[NSImage alloc] initWithData:rawData];
- if (newImage) CFRetain(newImage); // GC
- [newImage release];
-
- (*env)->ReleasePrimitiveArrayCritical(env, sourceData, sourceBytes, JNI_ABORT);
- CHECK_NULL_RETURN(newImage, NULL);
-
- // The ownership of the NSImage is passed to the new CImage jobject. No need to release it.
- static JNF_CLASS_CACHE(jc_CImage, "sun/lwawt/macosx/CImage");
- static JNF_STATIC_MEMBER_CACHE(jm_CImage_getCreator, jc_CImage, "getCreator", "()Lsun/lwawt/macosx/CImage$Creator;");
- jobject creator = JNFCallStaticObjectMethod(env, jm_CImage_getCreator);
-
- static JNF_CLASS_CACHE(jc_CImage_Generator, "sun/lwawt/macosx/CImage$Creator");
- static JNF_MEMBER_CACHE(jm_CImage_Generator_createImageUsingNativeSize, jc_CImage_Generator, "createImageUsingNativeSize", "(J)Ljava/awt/image/BufferedImage;");
- return JNFCallObjectMethod(env, creator, jm_CImage_Generator_createImageUsingNativeSize, ptr_to_jlong(newImage)); // AWT_THREADING Safe (known object)
-}
-
-/*
- * Class: sun_lwawt_macosx_CDataTransferer
- * Method: getImageForByteStream
- * Signature: ([B)Ljava/awt/Image;
- */
-JNIEXPORT jobject JNICALL Java_sun_lwawt_macosx_CDataTransferer_getImageForByteStream
- (JNIEnv *env, jobject obj, jbyteArray sourceData)
-{
- jobject img = NULL;
-JNF_COCOA_ENTER(env);
- img = getImageForByteStream(env, sourceData);
-JNF_COCOA_EXIT(env);
- return img;
-}
-
static jobjectArray CreateJavaFilenameArray(JNIEnv *env, NSArray *filenameArray)
{
NSUInteger filenameCount = [filenameArray count];
--- ./jdk/src/macosx/native/sun/awt/CDragSource.m 2015-12-12 10:53:21.933797000 -0800
+++ ./jdk/src/macosx/native/sun/awt/CDragSource.m 2015-10-24 06:21:16.000000000 -0700
@@ -318,8 +318,7 @@
// This is a good approximation if not perfect. A conclusive search would
// have to be done matching all defined strings in AppKit's commonStrings.h.
- if ([type hasPrefix:@"NS"] || [type hasPrefix:@"NeXT"])
- hasNSTypeData = true;
+ hasNSTypeData = [type hasPrefix:@"NS"] || [type hasPrefix:@"NeXT"] || [type hasPrefix:@"public."];
}
}
}
--- ./jdk/src/macosx/native/sun/awt/CDropTarget.m 2014-03-03 18:57:24.000000000 -0800
+++ ./jdk/src/macosx/native/sun/awt/CDropTarget.m 2015-10-24 06:21:16.000000000 -0700
@@ -106,6 +106,7 @@
NSFilenamesPboardType,
NSPostScriptPboardType,
NSTIFFPboardType,
+ NSPasteboardTypePNG,
NSRTFPboardType,
NSTabularTextPboardType,
NSFontPboardType,
@@ -119,6 +120,7 @@
NSVCardPboardType,
NSFilesPromisePboardType,
[DnDUtilities javaPboardType],
+ (NSString*)kUTTypeJPEG,
nil];
// Enable dragging events over this object:
--- ./jdk/src/macosx/native/sun/awt/CFRetainedResource.m 2015-12-12 10:53:29.625267000 -0800
+++ ./jdk/src/macosx/native/sun/awt/CFRetainedResource.m 2015-10-24 06:21:16.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2015, 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
@@ -41,10 +41,17 @@
// Releasing resources on the main AppKit message loop only
// Releasing resources on the nested loops may cause dangling
// pointers after the nested loop is exited
- [NSApp postRunnableEvent:^(){
+ if ([NSApp respondsToSelector:@selector(postRunnableEvent:)]) {
+ [NSApp postRunnableEvent:^() {
CFRelease(jlong_to_ptr(ptr));
}];
} else {
+ // could happen if we are embedded inside SWT/FX application,
+ [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^() {
+ CFRelease(jlong_to_ptr(ptr));
+ }];
+ }
+ } else {
JNF_COCOA_ENTER(env);
--- ./jdk/src/macosx/native/sun/awt/CImage.m 2015-12-12 10:53:21.935824000 -0800
+++ ./jdk/src/macosx/native/sun/awt/CImage.m 2015-10-24 06:21:16.000000000 -0700
@@ -436,3 +436,63 @@
return jreturnArray;
}
\ No newline at end of file
+
+/*
+ * Class: sun_lwawt_macosx_CImage
+ * Method: nativeGetPlatformImageBytes
+ * Signature: ([III)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_sun_lwawt_macosx_CImage_nativeGetPlatformImageBytes
+(JNIEnv *env, jclass klass, jintArray buffer, jint width, jint height)
+{
+ jbyteArray result = 0L;
+
+ JNF_COCOA_ENTER(env);
+
+ NSBitmapImageRep* imageRep = [CImage_CreateImageRep(env, buffer, width, height) autorelease];
+ if (imageRep) {
+ NSData *tiffImage = [imageRep TIFFRepresentation];
+ jsize tiffSize = (jsize)[tiffImage length];
+ result = (*env)->NewByteArray(env, tiffSize);
+ CHECK_NULL_RETURN(result, nil);
+ jbyte *tiffData = (jbyte *)(*env)->GetPrimitiveArrayCritical(env, result, 0);
+ CHECK_NULL_RETURN(tiffData, nil);
+ [tiffImage getBytes:tiffData];
+ (*env)->ReleasePrimitiveArrayCritical(env, result, tiffData, 0);
+ }
+
+ JNF_COCOA_EXIT(env);
+
+ return result;
+}
+
+/*
+ * Class: sun_lwawt_macosx_CImage
+ * Method: nativeCreateNSImageFromBytes
+ * Signature: ([B)J
+ */
+JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CImage_nativeCreateNSImageFromBytes
+(JNIEnv *env, jclass klass, jbyteArray sourceData)
+{
+ jlong result = 0L;
+ CHECK_NULL_RETURN(sourceData, 0L);
+
+ JNF_COCOA_ENTER(env);
+
+ jsize sourceSize = (*env)->GetArrayLength(env, sourceData);
+ if (sourceSize == 0) return 0L;
+
+ jbyte *sourceBytes = (*env)->GetPrimitiveArrayCritical(env, sourceData, NULL);
+ CHECK_NULL_RETURN(sourceBytes, 0L);
+ NSData *rawData = [NSData dataWithBytes:sourceBytes length:sourceSize];
+ NSImage *newImage = [[NSImage alloc] initWithData:rawData];
+
+ (*env)->ReleasePrimitiveArrayCritical(env, sourceData, sourceBytes, JNI_ABORT);
+ CHECK_NULL_RETURN(newImage, 0L);
+
+ result = ptr_to_jlong(newImage);
+ JNF_COCOA_EXIT(env);
+
+ return result;
+}
+
--- ./jdk/src/macosx/native/sun/nio/ch/KQueueArrayWrapper.c 2014-03-03 18:57:25.000000000 -0800
+++ ./jdk/src/macosx/native/sun/nio/ch/KQueueArrayWrapper.c 1969-12-31 16:00:00.000000000 -0800
@@ -1,171 +0,0 @@
-/*
- * Copyright (c) 2011, 2012, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * KQueueArrayWrapper.c
- * Implementation of Selector using FreeBSD / Mac OS X kqueues
- * Derived from Sun's DevPollArrayWrapper
- */
-
-
-#include "jni.h"
-#include "jni_util.h"
-#include "jvm.h"
-#include "jlong.h"
-
-#include <sys/types.h>
-#include <sys/event.h>
-#include <sys/time.h>
-
-JNIEXPORT void JNICALL
-Java_sun_nio_ch_KQueueArrayWrapper_initStructSizes(JNIEnv *env, jclass clazz)
-{
-#define CHECK_EXCEPTION() { \
- if ((*env)->ExceptionCheck(env)) { \
- goto exceptionOccurred; \
- } \
-}
-
-#define CHECK_ERROR_AND_EXCEPTION(_field) { \
- if (_field == NULL) { \
- goto badField; \
- } \
- CHECK_EXCEPTION(); \
-}
-
-
- jfieldID field;
-
- field = (*env)->GetStaticFieldID(env, clazz, "EVFILT_READ", "S");
- CHECK_ERROR_AND_EXCEPTION(field);
- (*env)->SetStaticShortField(env, clazz, field, EVFILT_READ);
- CHECK_EXCEPTION();
-
- field = (*env)->GetStaticFieldID(env, clazz, "EVFILT_WRITE", "S");
- CHECK_ERROR_AND_EXCEPTION(field);
- (*env)->SetStaticShortField(env, clazz, field, EVFILT_WRITE);
- CHECK_EXCEPTION();
-
- field = (*env)->GetStaticFieldID(env, clazz, "SIZEOF_KEVENT", "S");
- CHECK_ERROR_AND_EXCEPTION(field);
- (*env)->SetStaticShortField(env, clazz, field, (short) sizeof(struct kevent));
- CHECK_EXCEPTION();
-
- field = (*env)->GetStaticFieldID(env, clazz, "FD_OFFSET", "S");
- CHECK_ERROR_AND_EXCEPTION(field);
- (*env)->SetStaticShortField(env, clazz, field, (short) offsetof(struct kevent, ident));
- CHECK_EXCEPTION();
-
- field = (*env)->GetStaticFieldID(env, clazz, "FILTER_OFFSET", "S");
- CHECK_ERROR_AND_EXCEPTION(field);
- (*env)->SetStaticShortField(env, clazz, field, (short) offsetof(struct kevent, filter));
- CHECK_EXCEPTION();
- return;
-
-badField:
- return;
-
-exceptionOccurred:
- return;
-
-#undef CHECK_EXCEPTION
-#undef CHECK_ERROR_AND_EXCEPTION
-}
-
-JNIEXPORT jint JNICALL
-Java_sun_nio_ch_KQueueArrayWrapper_init(JNIEnv *env, jobject this)
-{
- int kq = kqueue();
- if (kq < 0) {
- JNU_ThrowIOExceptionWithLastError(env, "KQueueArrayWrapper: kqueue() failed");
- }
- return kq;
-}
-
-
-JNIEXPORT void JNICALL
-Java_sun_nio_ch_KQueueArrayWrapper_register0(JNIEnv *env, jobject this,
- jint kq, jint fd, jint r, jint w)
-{
- struct kevent changes[2];
- struct kevent errors[2];
- struct timespec dontBlock = {0, 0};
-
- // if (r) then { register for read } else { unregister for read }
- // if (w) then { register for write } else { unregister for write }
- // Ignore errors - they're probably complaints about deleting non-
- // added filters - but provide an error array anyway because
- // kqueue behaves erratically if some of its registrations fail.
- EV_SET(&changes[0], fd, EVFILT_READ, r ? EV_ADD : EV_DELETE, 0, 0, 0);
- EV_SET(&changes[1], fd, EVFILT_WRITE, w ? EV_ADD : EV_DELETE, 0, 0, 0);
- kevent(kq, changes, 2, errors, 2, &dontBlock);
-}
-
-
-JNIEXPORT jint JNICALL
-Java_sun_nio_ch_KQueueArrayWrapper_kevent0(JNIEnv *env, jobject this, jint kq,
- jlong kevAddr, jint kevCount,
- jlong timeout)
-{
- struct kevent *kevs = (struct kevent *)jlong_to_ptr(kevAddr);
- struct timespec ts;
- struct timespec *tsp;
- int result;
-
- // Java timeout is in milliseconds. Convert to struct timespec.
- // Java timeout == -1 : wait forever : timespec timeout of NULL
- // Java timeout == 0 : return immediately : timespec timeout of zero
- if (timeout >= 0) {
- ts.tv_sec = timeout / 1000;
- ts.tv_nsec = (timeout % 1000) * 1000000; //nanosec = 1 million millisec
- tsp = &ts;
- } else {
- tsp = NULL;
- }
-
- result = kevent(kq, NULL, 0, kevs, kevCount, tsp);
-
- if (result < 0) {
- if (errno == EINTR) {
- // ignore EINTR, pretend nothing was selected
- result = 0;
- } else {
- JNU_ThrowIOExceptionWithLastError(env, "KQueueArrayWrapper: kqueue failed");
- }
- }
-
- return result;
-}
-
-
-JNIEXPORT void JNICALL
-Java_sun_nio_ch_KQueueArrayWrapper_interrupt(JNIEnv *env, jclass cls, jint fd)
-{
- char c = 1;
- if (1 != write(fd, &c, 1)) {
- JNU_ThrowIOExceptionWithLastError(env, "KQueueArrayWrapper: interrupt failed");
- }
-}
-
--- ./jdk/src/share/bin/jli_util.h 2015-12-12 10:53:27.356994000 -0800
+++ ./jdk/src/share/bin/jli_util.h 2015-10-24 06:21:20.000000000 -0700
@@ -87,7 +87,7 @@
#define _LARGFILE64_SOURCE
#define JLI_Lseek lseek64
#endif
-#ifdef MACOSX
+#ifdef _ALLBSD_SOURCE
#define JLI_Lseek lseek
#endif
#ifdef _AIX
--- ./jdk/src/share/classes/com/sun/crypto/provider/AESCrypt.java 2015-12-12 10:53:29.629308000 -0800
+++ ./jdk/src/share/classes/com/sun/crypto/provider/AESCrypt.java 2015-07-18 13:32:31.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2015, 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
@@ -37,7 +37,7 @@
package com.sun.crypto.provider;
import java.security.InvalidKeyException;
-import java.util.Arrays;
+import java.security.MessageDigest;
/**
* Rijndael --pronounced Reindaal-- is a symmetric cipher with a 128-bit
@@ -88,7 +88,7 @@
key.length + " bytes");
}
- if (!Arrays.equals(key, lastKey)) {
+ if (!MessageDigest.isEqual(key, lastKey)) {
// re-generate session key 'sessionK' when cipher key changes
makeSessionKey(key);
lastKey = key.clone(); // save cipher key
--- ./jdk/src/share/classes/com/sun/crypto/provider/CipherCore.java 2015-12-12 10:53:29.629842000 -0800
+++ ./jdk/src/share/classes/com/sun/crypto/provider/CipherCore.java 2015-07-18 13:32:31.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2015, 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
@@ -568,7 +568,7 @@
// check key+iv for encryption in GCM mode
requireReinit =
Arrays.equals(ivBytes, lastEncIv) &&
- Arrays.equals(keyBytes, lastEncKey);
+ MessageDigest.isEqual(keyBytes, lastEncKey);
if (requireReinit) {
throw new InvalidAlgorithmParameterException
("Cannot reuse iv for GCM encryption");
--- ./jdk/src/share/classes/com/sun/crypto/provider/DESKey.java 2015-12-12 10:53:29.630165000 -0800
+++ ./jdk/src/share/classes/com/sun/crypto/provider/DESKey.java 2015-07-18 13:32:31.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, 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
@@ -25,6 +25,7 @@
package com.sun.crypto.provider;
+import java.security.MessageDigest;
import java.security.KeyRep;
import java.security.InvalidKeyException;
import javax.crypto.SecretKey;
@@ -113,7 +114,7 @@
return false;
byte[] thatKey = ((SecretKey)obj).getEncoded();
- boolean ret = java.util.Arrays.equals(this.key, thatKey);
+ boolean ret = MessageDigest.isEqual(this.key, thatKey);
java.util.Arrays.fill(thatKey, (byte)0x00);
return ret;
}
--- ./jdk/src/share/classes/com/sun/crypto/provider/DESedeKey.java 2015-12-12 10:53:29.630454000 -0800
+++ ./jdk/src/share/classes/com/sun/crypto/provider/DESedeKey.java 2015-07-18 13:32:31.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, 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
@@ -25,6 +25,7 @@
package com.sun.crypto.provider;
+import java.security.MessageDigest;
import java.security.KeyRep;
import java.security.InvalidKeyException;
import javax.crypto.SecretKey;
@@ -114,7 +115,7 @@
return false;
byte[] thatKey = ((SecretKey)obj).getEncoded();
- boolean ret = java.util.Arrays.equals(this.key, thatKey);
+ boolean ret = MessageDigest.isEqual(this.key, thatKey);
java.util.Arrays.fill(thatKey, (byte)0x00);
return ret;
}
--- ./jdk/src/share/classes/com/sun/crypto/provider/PBEKey.java 2015-12-12 10:53:29.631716000 -0800
+++ ./jdk/src/share/classes/com/sun/crypto/provider/PBEKey.java 2015-08-29 06:20:53.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, 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
@@ -25,6 +25,7 @@
package com.sun.crypto.provider;
+import java.security.MessageDigest;
import java.security.KeyRep;
import java.security.spec.InvalidKeySpecException;
import java.util.Locale;
@@ -108,7 +109,7 @@
return false;
byte[] thatEncoded = that.getEncoded();
- boolean ret = java.util.Arrays.equals(this.key, thatEncoded);
+ boolean ret = MessageDigest.isEqual(this.key, thatEncoded);
java.util.Arrays.fill(thatEncoded, (byte)0x00);
return ret;
}
--- ./jdk/src/share/classes/com/sun/crypto/provider/PBKDF2KeyImpl.java 2015-12-12 10:53:29.632402000 -0800
+++ ./jdk/src/share/classes/com/sun/crypto/provider/PBKDF2KeyImpl.java 2015-08-29 06:20:53.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2015, 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
@@ -30,6 +30,7 @@
import java.nio.CharBuffer;
import java.nio.charset.Charset;
import java.util.Arrays;
+import java.security.MessageDigest;
import java.util.Locale;
import java.security.KeyRep;
import java.security.GeneralSecurityException;
@@ -153,7 +154,7 @@
SecretKey sk = (SecretKey)obj;
return prf.getAlgorithm().equalsIgnoreCase(
sk.getAlgorithm()) &&
- Arrays.equals(password, sk.getEncoded());
+ MessageDigest.isEqual(password, sk.getEncoded());
}
};
prf.init(macKey);
@@ -239,7 +240,7 @@
if (!(that.getFormat().equalsIgnoreCase("RAW")))
return false;
byte[] thatEncoded = that.getEncoded();
- boolean ret = Arrays.equals(key, that.getEncoded());
+ boolean ret = MessageDigest.isEqual(key, that.getEncoded());
java.util.Arrays.fill(thatEncoded, (byte)0x00);
return ret;
}
--- ./jdk/src/share/classes/com/sun/jndi/dns/DnsClient.java 2015-12-12 10:53:29.681027000 -0800
+++ ./jdk/src/share/classes/com/sun/jndi/dns/DnsClient.java 2015-07-18 13:32:31.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2015, 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
@@ -184,6 +184,7 @@
Exception caughtException = null;
boolean[] doNotRetry = new boolean[servers.length];
+ try {
//
// The UDP retry strategy is to try the 1st server, and then
// each server in order. If no answer, double the timeout
@@ -282,6 +283,7 @@
doNotRetry[i] = true;
}
} catch (NameNotFoundException e) {
+ // This is authoritative, so return immediately
throw e;
} catch (CommunicationException e) {
if (caughtException == null) {
@@ -296,7 +298,10 @@
} // servers
} // retries
- reqs.remove(xid);
+ } finally {
+ reqs.remove(xid); // cleanup
+ }
+
if (caughtException instanceof NamingException) {
throw (NamingException) caughtException;
}
--- ./jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_sv.properties 2015-12-12 10:53:29.684848000 -0800
+++ ./jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_sv.properties 2015-10-24 06:21:17.000000000 -0700
@@ -33,7 +33,7 @@
############ FILE CHOOSER STRINGS #############
FileChooser.fileDescription.textAndMnemonic=Generisk fil
FileChooser.directoryDescription.textAndMnemonic=Katalog
-FileChooser.newFolderError.textAndMnemonic=Fel uppstod n\u00E4r ny mapp skapades
+FileChooser.newFolderError.textAndMnemonic=Kan inte skapa ny mapp
FileChooser.newFolderErrorSeparator= :
FileChooser.newFolderParentDoesntExistTitle.textAndMnemonic=Kan inte skapa mappen
FileChooser.newFolderParentDoesntExist.textAndMnemonic=Kan inte skapa mappen.\n\nSystemet kan inte hitta angiven s\u00F6kv\u00E4g.
@@ -59,15 +59,15 @@
FileChooser.win32.newFolder=Ny mapp
FileChooser.win32.newFolder.subsequent=Ny mapp ({0})
FileChooser.other.newFolder=Ny mapp
-FileChooser.other.newFolder.subsequent=Ny mapp.{0}
+FileChooser.other.newFolder.subsequent=Ny mapp {0}
## file chooser tooltips ###
-FileChooser.cancelButtonToolTip.textAndMnemonic=Avbryt filvalsdialogruta
+FileChooser.cancelButtonToolTip.textAndMnemonic=Avbryt dialogrutan f\u00F6r filval
FileChooser.saveButtonToolTip.textAndMnemonic=Spara vald fil
FileChooser.openButtonToolTip.textAndMnemonic=\u00D6ppna vald fil
FileChooser.updateButtonToolTip.textAndMnemonic=Uppdatera kataloglistan
-FileChooser.helpButtonToolTip.textAndMnemonic=Hj\u00E4lp - Filv\u00E4ljare
+FileChooser.helpButtonToolTip.textAndMnemonic=Hj\u00E4lp f\u00F6r val av fil
FileChooser.directoryOpenButtonToolTip.textAndMnemonic=\u00D6ppna vald katalog
FileChooser.filesListAccessibleName=Fillista
@@ -129,7 +129,7 @@
# The following string will be formatted by a MessageFormat
# and {0} will be replaced by page number being printed
-PrintingDialog.contentProgress.textAndMnemonic=Utskriven sida {0}...
+PrintingDialog.contentProgress.textAndMnemonic=Skriver ut sida {0}...
PrintingDialog.contentAborting.textAndMnemonic=Utskriften avbryts...
@@ -177,8 +177,8 @@
ProgressMonitor.progress.textAndMnemonic=P\u00E5g\u00E5r...
############ Split Pane Strings ############
-SplitPane.leftButton.textAndMnemonic=v\u00E4nster knapp
-SplitPane.rightButton.textAndMnemonic=h\u00F6ger knapp
+SplitPane.leftButton.textAndMnemonic=v\u00E4nsterknapp
+SplitPane.rightButton.textAndMnemonic=h\u00F6gerknapp
# Used for Isindex
IsindexView.prompt=Detta \u00E4r ett s\u00F6kbart index. Ange s\u00F6kord:
--- ./jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_sv.properties 2015-12-12 10:53:29.687579000 -0800
+++ ./jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_sv.properties 2015-10-24 06:21:17.000000000 -0700
@@ -20,7 +20,7 @@
FileChooser.lookInLabel.textAndMnemonic=Leta &i:
FileChooser.saveInLabel.textAndMnemonic=Spara i:
-FileChooser.fileNameLabel.textAndMnemonic=&Fil:
+FileChooser.fileNameLabel.textAndMnemonic=Fil&namn:
FileChooser.folderNameLabel.textAndMnemonic=&Mapp:
FileChooser.filesOfTypeLabel.textAndMnemonic=Filer av &typen:
FileChooser.upFolderToolTip.textAndMnemonic=Upp en niv\u00E5
--- ./jdk/src/share/classes/java/beans/PropertyDescriptor.java 2014-03-03 18:57:57.000000000 -0800
+++ ./jdk/src/share/classes/java/beans/PropertyDescriptor.java 2015-10-24 06:21:17.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2015, 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
@@ -28,6 +28,7 @@
import java.lang.ref.Reference;
import java.lang.reflect.Method;
import java.lang.reflect.Constructor;
+import sun.reflect.misc.ReflectUtil;
/**
* A PropertyDescriptor describes one property that a Java Bean
@@ -426,8 +427,9 @@
public PropertyEditor createPropertyEditor(Object bean) {
Object editor = null;
- Class<?> cls = getPropertyEditorClass();
- if (cls != null) {
+ final Class<?> cls = getPropertyEditorClass();
+ if (cls != null && PropertyEditor.class.isAssignableFrom(cls)
+ && ReflectUtil.isPackageAccessible(cls)) {
Constructor<?> ctor = null;
if (bean != null) {
try {
--- ./jdk/src/share/classes/java/io/ObjectInputStream.java 2015-12-12 10:53:29.698282000 -0800
+++ ./jdk/src/share/classes/java/io/ObjectInputStream.java 2015-10-24 06:21:17.000000000 -0700
@@ -1829,6 +1829,8 @@
throws IOException
{
SerialCallbackContext oldContext = curContext;
+ if (oldContext != null)
+ oldContext.check();
curContext = null;
try {
boolean blocked = desc.hasBlockExternalData();
@@ -1853,6 +1855,8 @@
skipCustomData();
}
} finally {
+ if (oldContext != null)
+ oldContext.check();
curContext = oldContext;
}
/*
@@ -1883,12 +1887,12 @@
ObjectStreamClass slotDesc = slots[i].desc;
if (slots[i].hasData) {
- if (obj != null &&
- slotDesc.hasReadObjectMethod() &&
- handles.lookupException(passHandle) == null)
- {
+ if (obj == null || handles.lookupException(passHandle) != null) {
+ defaultReadFields(null, slotDesc); // skip field values
+ } else if (slotDesc.hasReadObjectMethod()) {
SerialCallbackContext oldContext = curContext;
-
+ if (oldContext != null)
+ oldContext.check();
try {
curContext = new SerialCallbackContext(obj, slotDesc);
@@ -1905,6 +1909,8 @@
handles.markException(passHandle, ex);
} finally {
curContext.setUsed();
+ if (oldContext!= null)
+ oldContext.check();
curContext = oldContext;
}
@@ -1917,6 +1923,7 @@
} else {
defaultReadFields(obj, slotDesc);
}
+
if (slotDesc.hasWriteObjectData()) {
skipCustomData();
} else {
--- ./jdk/src/share/classes/java/io/ObjectStreamClass.java 2014-03-03 18:57:58.000000000 -0800
+++ ./jdk/src/share/classes/java/io/ObjectStreamClass.java 2015-10-24 06:21:17.000000000 -0700
@@ -189,6 +189,9 @@
/** superclass descriptor appearing in stream */
private ObjectStreamClass superDesc;
+ /** true if, and only if, the object has been correctly initialized */
+ private boolean initialized;
+
/**
* Initializes native code.
*/
@@ -266,6 +269,7 @@
if (cl == null) {
return null;
}
+ requireInitialized();
if (System.getSecurityManager() != null) {
Class<?> caller = Reflection.getCallerClass();
if (ReflectUtil.needsPackageAccessCheck(caller.getClassLoader(), cl.getClassLoader())) {
@@ -533,6 +537,7 @@
name, "unmatched serializable field(s) declared");
}
}
+ initialized = true;
}
/**
@@ -550,6 +555,14 @@
ObjectStreamClass superDesc)
throws InvalidClassException
{
+ ObjectStreamClass osc = null;
+ if (cl != null) {
+ osc = lookup(cl, true);
+ if (!osc.isProxy) {
+ throw new InvalidClassException(
+ "cannot bind proxy descriptor to a non-proxy class");
+ }
+ }
this.cl = cl;
this.resolveEx = resolveEx;
this.superDesc = superDesc;
@@ -557,21 +570,17 @@
serializable = true;
suid = Long.valueOf(0);
fields = NO_FIELDS;
-
- if (cl != null) {
- localDesc = lookup(cl, true);
- if (!localDesc.isProxy) {
- throw new InvalidClassException(
- "cannot bind proxy descriptor to a non-proxy class");
- }
+ if (osc != null) {
+ localDesc = osc;
name = localDesc.name;
externalizable = localDesc.externalizable;
- cons = localDesc.cons;
writeReplaceMethod = localDesc.writeReplaceMethod;
readResolveMethod = localDesc.readResolveMethod;
deserializeEx = localDesc.deserializeEx;
+ cons = localDesc.cons;
}
fieldRefl = getReflector(fields, localDesc);
+ initialized = true;
}
/**
@@ -583,68 +592,69 @@
ObjectStreamClass superDesc)
throws InvalidClassException
{
- this.cl = cl;
- this.resolveEx = resolveEx;
- this.superDesc = superDesc;
- name = model.name;
- suid = Long.valueOf(model.getSerialVersionUID());
- isProxy = false;
- isEnum = model.isEnum;
- serializable = model.serializable;
- externalizable = model.externalizable;
- hasBlockExternalData = model.hasBlockExternalData;
- hasWriteObjectData = model.hasWriteObjectData;
- fields = model.fields;
- primDataSize = model.primDataSize;
- numObjFields = model.numObjFields;
-
+ long suid = Long.valueOf(model.getSerialVersionUID());
+ ObjectStreamClass osc = null;
if (cl != null) {
- localDesc = lookup(cl, true);
- if (localDesc.isProxy) {
+ osc = lookup(cl, true);
+ if (osc.isProxy) {
throw new InvalidClassException(
"cannot bind non-proxy descriptor to a proxy class");
}
- if (isEnum != localDesc.isEnum) {
- throw new InvalidClassException(isEnum ?
+ if (model.isEnum != osc.isEnum) {
+ throw new InvalidClassException(model.isEnum ?
"cannot bind enum descriptor to a non-enum class" :
"cannot bind non-enum descriptor to an enum class");
}
- if (serializable == localDesc.serializable &&
+ if (model.serializable == osc.serializable &&
!cl.isArray() &&
- suid.longValue() != localDesc.getSerialVersionUID())
- {
- throw new InvalidClassException(localDesc.name,
+ suid != osc.getSerialVersionUID()) {
+ throw new InvalidClassException(osc.name,
"local class incompatible: " +
"stream classdesc serialVersionUID = " + suid +
", local class serialVersionUID = " +
- localDesc.getSerialVersionUID());
+ osc.getSerialVersionUID());
}
- if (!classNamesEqual(name, localDesc.name)) {
- throw new InvalidClassException(localDesc.name,
+ if (!classNamesEqual(model.name, osc.name)) {
+ throw new InvalidClassException(osc.name,
"local class name incompatible with stream class " +
- "name \"" + name + "\"");
+ "name \"" + model.name + "\"");
}
- if (!isEnum) {
- if ((serializable == localDesc.serializable) &&
- (externalizable != localDesc.externalizable))
- {
- throw new InvalidClassException(localDesc.name,
+ if (!model.isEnum) {
+ if ((model.serializable == osc.serializable) &&
+ (model.externalizable != osc.externalizable)) {
+ throw new InvalidClassException(osc.name,
"Serializable incompatible with Externalizable");
}
- if ((serializable != localDesc.serializable) ||
- (externalizable != localDesc.externalizable) ||
- !(serializable || externalizable))
- {
+ if ((model.serializable != osc.serializable) ||
+ (model.externalizable != osc.externalizable) ||
+ !(model.serializable || model.externalizable)) {
deserializeEx = new ExceptionInfo(
- localDesc.name, "class invalid for deserialization");
+ osc.name, "class invalid for deserialization");
+ }
}
}
- cons = localDesc.cons;
+ this.cl = cl;
+ this.resolveEx = resolveEx;
+ this.superDesc = superDesc;
+ name = model.name;
+ this.suid = suid;
+ isProxy = false;
+ isEnum = model.isEnum;
+ serializable = model.serializable;
+ externalizable = model.externalizable;
+ hasBlockExternalData = model.hasBlockExternalData;
+ hasWriteObjectData = model.hasWriteObjectData;
+ fields = model.fields;
+ primDataSize = model.primDataSize;
+ numObjFields = model.numObjFields;
+
+ if (osc != null) {
+ localDesc = osc;
writeObjectMethod = localDesc.writeObjectMethod;
readObjectMethod = localDesc.readObjectMethod;
readObjectNoDataMethod = localDesc.readObjectNoDataMethod;
@@ -653,10 +663,13 @@
if (deserializeEx == null) {
deserializeEx = localDesc.deserializeEx;
}
+ cons = localDesc.cons;
}
+
fieldRefl = getReflector(fields, localDesc);
// reassign to matched fields so as to reflect local unshared settings
fields = fieldRefl.getFields();
+ initialized = true;
}
/**
@@ -759,11 +772,20 @@
}
/**
+ * Throws InternalError if not initialized.
+ */
+ private final void requireInitialized() {
+ if (!initialized)
+ throw new InternalError("Unexpected call when not initialized");
+ }
+
+ /**
* Throws an InvalidClassException if object instances referencing this
* class descriptor should not be allowed to deserialize. This method does
* not apply to deserialization of enum constants.
*/
void checkDeserialize() throws InvalidClassException {
+ requireInitialized();
if (deserializeEx != null) {
throw deserializeEx.newInvalidClassException();
}
@@ -775,6 +797,7 @@
* not apply to serialization of enum constants.
*/
void checkSerialize() throws InvalidClassException {
+ requireInitialized();
if (serializeEx != null) {
throw serializeEx.newInvalidClassException();
}
@@ -788,6 +811,7 @@
* does not apply to deserialization of enum constants.
*/
void checkDefaultSerialize() throws InvalidClassException {
+ requireInitialized();
if (defaultSerializeEx != null) {
throw defaultSerializeEx.newInvalidClassException();
}
@@ -799,6 +823,7 @@
* of the subclass descriptor's bound class.
*/
ObjectStreamClass getSuperDesc() {
+ requireInitialized();
return superDesc;
}
@@ -809,6 +834,7 @@
* associated with this descriptor.
*/
ObjectStreamClass getLocalDesc() {
+ requireInitialized();
return localDesc;
}
@@ -851,6 +877,7 @@
* otherwise.
*/
boolean isProxy() {
+ requireInitialized();
return isProxy;
}
@@ -859,6 +886,7 @@
* otherwise.
*/
boolean isEnum() {
+ requireInitialized();
return isEnum;
}
@@ -867,6 +895,7 @@
* otherwise.
*/
boolean isExternalizable() {
+ requireInitialized();
return externalizable;
}
@@ -875,6 +904,7 @@
* otherwise.
*/
boolean isSerializable() {
+ requireInitialized();
return serializable;
}
@@ -883,6 +913,7 @@
* has written its data in 1.2 (block data) format, false otherwise.
*/
boolean hasBlockExternalData() {
+ requireInitialized();
return hasBlockExternalData;
}
@@ -892,6 +923,7 @@
* writeObject() method, false otherwise.
*/
boolean hasWriteObjectData() {
+ requireInitialized();
return hasWriteObjectData;
}
@@ -903,6 +935,7 @@
* accessible no-arg constructor. Otherwise, returns false.
*/
boolean isInstantiable() {
+ requireInitialized();
return (cons != null);
}
@@ -912,6 +945,7 @@
* returns false.
*/
boolean hasWriteObjectMethod() {
+ requireInitialized();
return (writeObjectMethod != null);
}
@@ -921,6 +955,7 @@
* returns false.
*/
boolean hasReadObjectMethod() {
+ requireInitialized();
return (readObjectMethod != null);
}
@@ -930,6 +965,7 @@
* Otherwise, returns false.
*/
boolean hasReadObjectNoDataMethod() {
+ requireInitialized();
return (readObjectNoDataMethod != null);
}
@@ -938,6 +974,7 @@
* defines a conformant writeReplace method. Otherwise, returns false.
*/
boolean hasWriteReplaceMethod() {
+ requireInitialized();
return (writeReplaceMethod != null);
}
@@ -946,6 +983,7 @@
* defines a conformant readResolve method. Otherwise, returns false.
*/
boolean hasReadResolveMethod() {
+ requireInitialized();
return (readResolveMethod != null);
}
@@ -962,6 +1000,7 @@
throws InstantiationException, InvocationTargetException,
UnsupportedOperationException
{
+ requireInitialized();
if (cons != null) {
try {
return cons.newInstance();
@@ -983,6 +1022,7 @@
void invokeWriteObject(Object obj, ObjectOutputStream out)
throws IOException, UnsupportedOperationException
{
+ requireInitialized();
if (writeObjectMethod != null) {
try {
writeObjectMethod.invoke(obj, new Object[]{ out });
@@ -1012,6 +1052,7 @@
throws ClassNotFoundException, IOException,
UnsupportedOperationException
{
+ requireInitialized();
if (readObjectMethod != null) {
try {
readObjectMethod.invoke(obj, new Object[]{ in });
@@ -1042,6 +1083,7 @@
void invokeReadObjectNoData(Object obj)
throws IOException, UnsupportedOperationException
{
+ requireInitialized();
if (readObjectNoDataMethod != null) {
try {
readObjectNoDataMethod.invoke(obj, (Object[]) null);
@@ -1070,6 +1112,7 @@
Object invokeWriteReplace(Object obj)
throws IOException, UnsupportedOperationException
{
+ requireInitialized();
if (writeReplaceMethod != null) {
try {
return writeReplaceMethod.invoke(obj, (Object[]) null);
@@ -1099,6 +1142,7 @@
Object invokeReadResolve(Object obj)
throws IOException, UnsupportedOperationException
{
+ requireInitialized();
if (readResolveMethod != null) {
try {
return readResolveMethod.invoke(obj, (Object[]) null);
--- ./jdk/src/share/classes/java/io/SerialCallbackContext.java 2015-12-12 10:53:29.698584000 -0800
+++ ./jdk/src/share/classes/java/io/SerialCallbackContext.java 2015-07-18 13:32:32.000000000 -0700
@@ -60,6 +60,13 @@
return desc;
}
+ public void check() throws NotActiveException {
+ if (thread != null && thread != Thread.currentThread()) {
+ throw new NotActiveException(
+ "expected thread: " + thread + ", but got: " + Thread.currentThread());
+ }
+ }
+
private void checkAndSetUsed() throws NotActiveException {
if (thread != Thread.currentThread()) {
throw new NotActiveException(
--- ./jdk/src/share/classes/java/net/Inet4Address.java 2014-03-03 18:58:02.000000000 -0800
+++ ./jdk/src/share/classes/java/net/Inet4Address.java 2015-10-24 06:21:17.000000000 -0700
@@ -117,11 +117,13 @@
holder().address = address;
}
}
+ holder().originalHostName = hostName;
}
Inet4Address(String hostName, int address) {
holder().hostName = hostName;
holder().family = IPv4;
holder().address = address;
+ holder().originalHostName = hostName;
}
/**
--- ./jdk/src/share/classes/java/net/InetAddress.java 2015-12-12 10:53:29.709713000 -0800
+++ ./jdk/src/share/classes/java/net/InetAddress.java 2015-10-24 06:21:17.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2015, 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
@@ -203,16 +203,33 @@
static transient boolean preferIPv6Address = false;
static class InetAddressHolder {
+ /**
+ * Reserve the original application specified hostname.
+ *
+ * The original hostname is useful for domain-based endpoint
+ * identification (see RFC 2818 and RFC 6125). If an address
+ * was created with a raw IP address, a reverse name lookup
+ * may introduce endpoint identification security issue via
+ * DNS forging.
+ *
+ * Oracle JSSE provider is using this original hostname, via
+ * sun.misc.JavaNetAccess, for SSL/TLS endpoint identification.
+ *
+ * Note: May define a new public method in the future if necessary.
+ */
+ String originalHostName;
InetAddressHolder() {}
InetAddressHolder(String hostName, int address, int family) {
+ this.originalHostName = hostName;
this.hostName = hostName;
this.address = address;
this.family = family;
}
void init(String hostName, int family) {
+ this.originalHostName = hostName;
this.hostName = hostName;
if (family != -1) {
this.family = family;
@@ -225,6 +242,10 @@
return hostName;
}
+ String getOriginalHostName() {
+ return originalHostName;
+ }
+
/**
* Holds a 32-bit IPv4 address.
*/
--- ./jdk/src/share/classes/java/net/URLClassLoader.java 2015-12-12 10:53:29.710832000 -0800
+++ ./jdk/src/share/classes/java/net/URLClassLoader.java 2015-07-18 13:32:32.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, 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
@@ -774,6 +774,10 @@
public URLClassPath getURLClassPath (URLClassLoader u) {
return u.ucp;
}
+
+ public String getOriginalHostName(InetAddress ia) {
+ return ia.holder.getOriginalHostName();
+ }
}
);
ClassLoader.registerAsParallelCapable();
--- ./jdk/src/share/classes/java/nio/Direct-X-Buffer.java.template 2014-03-03 18:58:03.000000000 -0800
+++ ./jdk/src/share/classes/java/nio/Direct-X-Buffer.java.template 2015-10-24 06:21:17.000000000 -0700
@@ -242,7 +242,7 @@
}
private long ix(int i) {
- return address + (i << $LG_BYTES_PER_VALUE$);
+ return address + ((long)i << $LG_BYTES_PER_VALUE$);
}
public $type$ get() {
@@ -261,7 +261,7 @@
public $Type$Buffer get($type$[] dst, int offset, int length) {
#if[rw]
- if ((length << $LG_BYTES_PER_VALUE$) > Bits.JNI_COPY_TO_ARRAY_THRESHOLD) {
+ if (((long)length << $LG_BYTES_PER_VALUE$) > Bits.JNI_COPY_TO_ARRAY_THRESHOLD) {
checkBounds(offset, length, dst.length);
int pos = position();
int lim = limit();
@@ -273,13 +273,13 @@
#if[!byte]
if (order() != ByteOrder.nativeOrder())
Bits.copyTo$Memtype$Array(ix(pos), dst,
- offset << $LG_BYTES_PER_VALUE$,
- length << $LG_BYTES_PER_VALUE$);
+ (long)offset << $LG_BYTES_PER_VALUE$,
+ (long)length << $LG_BYTES_PER_VALUE$);
else
#end[!byte]
Bits.copyToArray(ix(pos), dst, arrayBaseOffset,
- offset << $LG_BYTES_PER_VALUE$,
- length << $LG_BYTES_PER_VALUE$);
+ (long)offset << $LG_BYTES_PER_VALUE$,
+ (long)length << $LG_BYTES_PER_VALUE$);
position(pos + length);
} else {
super.get(dst, offset, length);
@@ -329,7 +329,7 @@
if (srem > rem)
throw new BufferOverflowException();
- unsafe.copyMemory(sb.ix(spos), ix(pos), srem << $LG_BYTES_PER_VALUE$);
+ unsafe.copyMemory(sb.ix(spos), ix(pos), (long)srem << $LG_BYTES_PER_VALUE$);
sb.position(spos + srem);
position(pos + srem);
} else if (src.hb != null) {
@@ -353,7 +353,7 @@
public $Type$Buffer put($type$[] src, int offset, int length) {
#if[rw]
- if ((length << $LG_BYTES_PER_VALUE$) > Bits.JNI_COPY_FROM_ARRAY_THRESHOLD) {
+ if (((long)length << $LG_BYTES_PER_VALUE$) > Bits.JNI_COPY_FROM_ARRAY_THRESHOLD) {
checkBounds(offset, length, src.length);
int pos = position();
int lim = limit();
@@ -364,12 +364,16 @@
#if[!byte]
if (order() != ByteOrder.nativeOrder())
- Bits.copyFrom$Memtype$Array(src, offset << $LG_BYTES_PER_VALUE$,
- ix(pos), length << $LG_BYTES_PER_VALUE$);
+ Bits.copyFrom$Memtype$Array(src,
+ (long)offset << $LG_BYTES_PER_VALUE$,
+ ix(pos),
+ (long)length << $LG_BYTES_PER_VALUE$);
else
#end[!byte]
- Bits.copyFromArray(src, arrayBaseOffset, offset << $LG_BYTES_PER_VALUE$,
- ix(pos), length << $LG_BYTES_PER_VALUE$);
+ Bits.copyFromArray(src, arrayBaseOffset,
+ (long)offset << $LG_BYTES_PER_VALUE$,
+ ix(pos),
+ (long)length << $LG_BYTES_PER_VALUE$);
position(pos + length);
} else {
super.put(src, offset, length);
@@ -387,7 +391,7 @@
assert (pos <= lim);
int rem = (pos <= lim ? lim - pos : 0);
- unsafe.copyMemory(ix(pos), ix(0), rem << $LG_BYTES_PER_VALUE$);
+ unsafe.copyMemory(ix(pos), ix(0), (long)rem << $LG_BYTES_PER_VALUE$);
position(rem);
limit(capacity());
discardMark();
--- ./jdk/src/share/classes/java/rmi/server/RemoteObjectInvocationHandler.java 2015-12-12 10:53:29.711200000 -0800
+++ ./jdk/src/share/classes/java/rmi/server/RemoteObjectInvocationHandler.java 2015-10-24 06:21:17.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2015, 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
@@ -31,6 +31,7 @@
import java.rmi.Remote;
import java.rmi.UnexpectedException;
import java.rmi.activation.Activatable;
+import java.security.PrivilegedAction;
import java.util.Map;
import java.util.WeakHashMap;
import sun.rmi.server.Util;
@@ -56,6 +57,25 @@
{
private static final long serialVersionUID = 2L;
+ // set to true if invocation handler allows finalize method (legacy behavior)
+ private static final boolean allowFinalizeInvocation;
+
+ static {
+ String propName = "sun.rmi.server.invocationhandler.allowFinalizeInvocation";
+ String allowProp = java.security.AccessController.doPrivileged(
+ new PrivilegedAction<String>() {
+ @Override
+ public String run() {
+ return System.getProperty(propName);
+ }
+ });
+ if ("".equals(allowProp)) {
+ allowFinalizeInvocation = true;
+ } else {
+ allowFinalizeInvocation = Boolean.parseBoolean(allowProp);
+ }
+ }
+
/**
* A weak hash map, mapping classes to weak hash maps that map
* method objects to method hashes.
@@ -142,8 +162,19 @@
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable
{
+ if (! Proxy.isProxyClass(proxy.getClass())) {
+ throw new IllegalArgumentException("not a proxy");
+ }
+
+ if (Proxy.getInvocationHandler(proxy) != this) {
+ throw new IllegalArgumentException("handler mismatch");
+ }
+
if (method.getDeclaringClass() == Object.class) {
return invokeObjectMethod(proxy, method, args);
+ } else if ("finalize".equals(method.getName()) && method.getParameterCount() == 0 &&
+ !allowFinalizeInvocation) {
+ return null; // ignore
} else {
return invokeRemoteMethod(proxy, method, args);
}
@@ -163,11 +194,13 @@
} else if (name.equals("equals")) {
Object obj = args[0];
+ InvocationHandler hdlr;
return
proxy == obj ||
(obj != null &&
Proxy.isProxyClass(obj.getClass()) &&
- equals(Proxy.getInvocationHandler(obj)));
+ (hdlr = Proxy.getInvocationHandler(obj)) instanceof RemoteObjectInvocationHandler &&
+ this.equals(hdlr));
} else if (name.equals("toString")) {
return proxyToString(proxy);
--- ./jdk/src/share/classes/java/security/Identity.java 2015-12-12 10:53:29.711989000 -0800
+++ ./jdk/src/share/classes/java/security/Identity.java 2015-07-18 13:32:32.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2015, 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
@@ -261,7 +261,7 @@
certificates.addElement(certificate);
}
- private boolean keyEquals(Key aKey, Key anotherKey) {
+ private boolean keyEquals(PublicKey aKey, PublicKey anotherKey) {
String aKeyFormat = aKey.getFormat();
String anotherKeyFormat = anotherKey.getFormat();
if ((aKeyFormat == null) ^ (anotherKeyFormat == null))
--- ./jdk/src/share/classes/java/security/MessageDigest.java 2015-12-12 10:53:29.712352000 -0800
+++ ./jdk/src/share/classes/java/security/MessageDigest.java 2015-07-18 13:32:32.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2015, 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
@@ -440,6 +440,10 @@
* @return true if the digests are equal, false otherwise.
*/
public static boolean isEqual(byte[] digesta, byte[] digestb) {
+ if (digesta == digestb) return true;
+ if (digesta == null || digestb == null) {
+ return false;
+ }
if (digesta.length != digestb.length) {
return false;
}
--- ./jdk/src/share/classes/java/security/Signature.java 2015-12-12 10:53:29.713266000 -0800
+++ ./jdk/src/share/classes/java/security/Signature.java 2015-07-18 13:32:32.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2015, 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
@@ -1316,7 +1316,7 @@
byte[] out = cipher.doFinal(sigBytes);
byte[] dataBytes = data.toByteArray();
data.reset();
- return Arrays.equals(out, dataBytes);
+ return MessageDigest.isEqual(out, dataBytes);
} catch (BadPaddingException e) {
// e.g. wrong public key used
// return false rather than throwing exception
--- ./jdk/src/share/classes/java/security/cert/X509CRLSelector.java 2015-12-12 10:53:29.713699000 -0800
+++ ./jdk/src/share/classes/java/security/cert/X509CRLSelector.java 2015-07-18 13:32:32.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2015, 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
@@ -679,10 +679,14 @@
nowPlusSkew = new Date(dateAndTime.getTime() + skew);
nowMinusSkew = new Date(dateAndTime.getTime() - skew);
}
+
+ // Check that the test date is within the validity interval:
+ // [ thisUpdate - MAX_CLOCK_SKEW,
+ // nextUpdate + MAX_CLOCK_SKEW ]
if (nowMinusSkew.after(nextUpdate)
|| nowPlusSkew.before(crlThisUpdate)) {
if (debug != null) {
- debug.println("X509CRLSelector.match: update out of range");
+ debug.println("X509CRLSelector.match: update out-of-range");
}
return false;
}
--- ./jdk/src/share/classes/javax/crypto/spec/SecretKeySpec.java 2015-12-12 10:53:29.745346000 -0800
+++ ./jdk/src/share/classes/javax/crypto/spec/SecretKeySpec.java 2015-08-29 06:20:49.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2015, 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
@@ -25,6 +25,7 @@
package javax.crypto.spec;
+import java.security.MessageDigest;
import java.security.spec.KeySpec;
import java.util.Locale;
import javax.crypto.SecretKey;
@@ -228,6 +229,6 @@
byte[] thatKey = ((SecretKey)obj).getEncoded();
- return java.util.Arrays.equals(this.key, thatKey);
+ return MessageDigest.isEqual(this.key, thatKey);
}
}
--- ./jdk/src/share/classes/javax/management/MBeanServerInvocationHandler.java 2015-12-12 10:53:29.746123000 -0800
+++ ./jdk/src/share/classes/javax/management/MBeanServerInvocationHandler.java 2015-07-18 13:32:33.000000000 -0700
@@ -141,6 +141,12 @@
if (connection == null) {
throw new IllegalArgumentException("Null connection");
}
+ if (Proxy.isProxyClass(connection.getClass())) {
+ if (MBeanServerInvocationHandler.class.isAssignableFrom(
+ Proxy.getInvocationHandler(connection).getClass())) {
+ throw new IllegalArgumentException("Wrapping MBeanServerInvocationHandler");
+ }
+ }
if (objectName == null) {
throw new IllegalArgumentException("Null object name");
}
@@ -418,6 +424,10 @@
new Class<?>[] {Object.class})
&& isLocal(proxy, method))
return true;
+ if (methodName.equals("finalize")
+ && method.getParameterTypes().length == 0) {
+ return true;
+ }
return false;
}
@@ -453,6 +463,9 @@
connection + "[" + objectName + "])";
} else if (methodName.equals("hashCode")) {
return objectName.hashCode()+connection.hashCode();
+ } else if (methodName.equals("finalize")) {
+ // ignore the finalizer invocation via proxy
+ return null;
}
throw new RuntimeException("Unexpected method name: " + methodName);
--- ./jdk/src/share/classes/javax/management/openmbean/OpenMBeanAttributeInfoSupport.java 2014-03-03 18:58:20.000000000 -0800
+++ ./jdk/src/share/classes/javax/management/openmbean/OpenMBeanAttributeInfoSupport.java 2015-10-24 06:21:17.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2015, 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
@@ -45,7 +45,6 @@
import javax.management.ImmutableDescriptor;
import javax.management.MBeanAttributeInfo;
import com.sun.jmx.remote.util.EnvHelp;
-import sun.reflect.misc.ConstructorUtil;
import sun.reflect.misc.MethodUtil;
import sun.reflect.misc.ReflectUtil;
@@ -692,8 +691,9 @@
private static <T> T convertFromString(String s, OpenType<T> openType) {
Class<T> c;
try {
- ReflectUtil.checkPackageAccess(openType.safeGetClassName());
- c = cast(Class.forName(openType.safeGetClassName()));
+ String className = openType.safeGetClassName();
+ ReflectUtil.checkPackageAccess(className);
+ c = cast(Class.forName(className));
} catch (ClassNotFoundException e) {
throw new NoClassDefFoundError(e.toString()); // can't happen
}
@@ -761,11 +761,15 @@
Class<?> stringArrayClass;
Class<?> targetArrayClass;
try {
+ String baseClassName = baseType.safeGetClassName();
+
+ // check access to the provided base type class name and bail out early
+ ReflectUtil.checkPackageAccess(baseClassName);
+
stringArrayClass =
Class.forName(squareBrackets + "Ljava.lang.String;");
targetArrayClass =
- Class.forName(squareBrackets + "L" + baseType.safeGetClassName() +
- ";");
+ Class.forName(squareBrackets + "L" + baseClassName + ";");
} catch (ClassNotFoundException e) {
throw new NoClassDefFoundError(e.toString()); // can't happen
}
--- ./jdk/src/share/classes/javax/management/remote/rmi/RMIConnectionImpl.java 2015-12-12 10:53:29.746854000 -0800
+++ ./jdk/src/share/classes/javax/management/remote/rmi/RMIConnectionImpl.java 2015-08-29 06:20:49.000000000 -0700
@@ -32,7 +32,6 @@
import java.security.AccessControlContext;
import java.security.AccessController;
import java.security.Permission;
-import java.security.PermissionCollection;
import java.security.Permissions;
import java.security.PrivilegedAction;
import java.security.PrivilegedActionException;
@@ -59,6 +58,7 @@
import com.sun.jmx.remote.util.ClassLogger;
import com.sun.jmx.remote.util.EnvHelp;
import com.sun.jmx.remote.util.OrderClassLoaders;
+import javax.management.loading.ClassLoaderRepository;
/**
* <p>Implementation of the {@link RMIConnection} interface. User
@@ -131,21 +131,25 @@
final ClassLoader dcl = defaultClassLoader;
- this.classLoaderWithRepository =
- AccessController.doPrivileged(
+ ClassLoaderRepository repository = AccessController.doPrivileged(
+ new PrivilegedAction<ClassLoaderRepository>() {
+ public ClassLoaderRepository run() {
+ return mbeanServer.getClassLoaderRepository();
+ }
+ },
+ withPermissions(new MBeanPermission("*", "getClassLoaderRepository"))
+ );
+ this.classLoaderWithRepository = AccessController.doPrivileged(
new PrivilegedAction<ClassLoaderWithRepository>() {
public ClassLoaderWithRepository run() {
return new ClassLoaderWithRepository(
- mbeanServer.getClassLoaderRepository(),
+ repository,
dcl);
}
},
-
- withPermissions( new MBeanPermission("*", "getClassLoaderRepository"),
- new RuntimePermission("createClassLoader"))
+ withPermissions(new RuntimePermission("createClassLoader"))
);
-
this.defaultContextClassLoader =
AccessController.doPrivileged(
new PrivilegedAction<ClassLoader>() {
--- ./jdk/src/share/classes/javax/security/auth/kerberos/KerberosPrincipal.java 2014-03-03 18:58:25.000000000 -0800
+++ ./jdk/src/share/classes/javax/security/auth/kerberos/KerberosPrincipal.java 2015-10-24 06:21:17.000000000 -0700
@@ -112,18 +112,7 @@
* java.security.krb5.realm system property.
*/
public KerberosPrincipal(String name) {
-
- PrincipalName krb5Principal = null;
-
- try {
- // Appends the default realm if it is missing
- krb5Principal = new PrincipalName(name, KRB_NT_PRINCIPAL);
- } catch (KrbException e) {
- throw new IllegalArgumentException(e.getMessage());
- }
- nameType = KRB_NT_PRINCIPAL; // default name type
- fullName = krb5Principal.toString();
- realm = krb5Principal.getRealmString();
+ this(name, KRB_NT_PRINCIPAL);
}
/**
@@ -165,6 +154,20 @@
throw new IllegalArgumentException(e.getMessage());
}
+ // A ServicePermission with a principal in the deduced realm and
+ // any action must be granted if no realm is provided by caller.
+ if (krb5Principal.isRealmDeduced() && !Realm.AUTODEDUCEREALM) {
+ SecurityManager sm = System.getSecurityManager();
+ if (sm != null) {
+ try {
+ sm.checkPermission(new ServicePermission(
+ "@" + krb5Principal.getRealmAsString(), "-"));
+ } catch (SecurityException se) {
+ // Swallow the actual exception to hide info
+ throw new SecurityException("Cannot read realm info");
+ }
+ }
+ }
this.nameType = nameType;
fullName = krb5Principal.toString();
realm = krb5Principal.getRealmString();
--- ./jdk/src/share/classes/javax/security/auth/kerberos/ServicePermission.java 2014-03-03 18:58:25.000000000 -0800
+++ ./jdk/src/share/classes/javax/security/auth/kerberos/ServicePermission.java 2015-10-24 06:21:17.000000000 -0700
@@ -50,7 +50,7 @@
* used within.
* <p>
* The service principal name is the canonical name of the
- * {@code KereberosPrincipal} supplying the service, that is
+ * {@code KerberosPrincipal} supplying the service, that is
* the KerberosPrincipal represents a Kerberos service
* principal. This name is treated in a case sensitive manner.
* An asterisk may appear by itself, to signify any service principal.
@@ -145,6 +145,9 @@
* @param action the action string
*/
public ServicePermission(String servicePrincipal, String action) {
+ // Note: servicePrincipal can be "@REALM" which means any principal in
+ // this realm implies it. action can be "-" which means any
+ // action implies it.
super(servicePrincipal);
init(servicePrincipal, getMask(action));
}
@@ -188,7 +191,9 @@
boolean impliesIgnoreMask(ServicePermission p) {
return ((this.getName().equals("*")) ||
- this.getName().equals(p.getName()));
+ this.getName().equals(p.getName()) ||
+ (p.getName().startsWith("@") &&
+ this.getName().endsWith(p.getName())));
}
/**
@@ -295,7 +300,10 @@
/**
* Convert an action string to an integer actions mask.
*
- * @param action the action string
+ * Note: if action is "-", action will be NONE, which means any
+ * action implies it.
+ *
+ * @param action the action string.
* @return the action mask
*/
private static int getMask(String action) {
@@ -312,9 +320,11 @@
char[] a = action.toCharArray();
- int i = a.length - 1;
- if (i < 0)
+ if (a.length == 1 && a[0] == '-') {
return mask;
+ }
+
+ int i = a.length - 1;
while (i != -1) {
char c;
@@ -475,6 +485,17 @@
ServicePermission np = (ServicePermission) permission;
int desired = np.getMask();
+
+ if (desired == 0) {
+ for (Permission p: perms) {
+ ServicePermission sp = (ServicePermission)p;
+ if (sp.impliesIgnoreMask(np)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
int effective = 0;
int needed = desired;
--- ./jdk/src/share/classes/sun/awt/FontConfiguration.java 2015-12-12 10:53:20.071946000 -0800
+++ ./jdk/src/share/classes/sun/awt/FontConfiguration.java 2015-10-24 06:21:20.000000000 -0700
@@ -1146,7 +1146,7 @@
*/
HashMap<String, Boolean> existsMap;
public boolean needToSearchForFile(String fileName) {
- if (!FontUtilities.isLinux) {
+ if (!FontUtilities.isLinux && !FontUtilities.isBSD) {
return false;
} else if (existsMap == null) {
existsMap = new HashMap<String, Boolean>();
--- ./jdk/src/share/classes/sun/awt/OSInfo.java 2014-03-03 18:58:41.000000000 -0800
+++ ./jdk/src/share/classes/sun/awt/OSInfo.java 2015-10-24 06:21:20.000000000 -0700
@@ -39,6 +39,7 @@
WINDOWS,
LINUX,
SOLARIS,
+ BSD,
MACOSX,
UNKNOWN
}
@@ -101,6 +102,10 @@
return SOLARIS;
}
+ if (osName.endsWith("BSD")) {
+ return BSD;
+ }
+
if (osName.contains("OS X")) {
return MACOSX;
}
--- ./jdk/src/share/classes/sun/awt/datatransfer/DataTransferer.java 2015-12-12 10:53:29.769287000 -0800
+++ ./jdk/src/share/classes/sun/awt/datatransfer/DataTransferer.java 2015-10-24 06:21:17.000000000 -0700
@@ -2905,13 +2905,13 @@
return comp;
}
-// if (flavor1.isFlavorTextType()) {
-// return 1;
-// }
-//
-// if (flavor2.isFlavorTextType()) {
-// return -1;
-// }
+ if (flavor1.isFlavorTextType()) {
+ return 1;
+ }
+
+ if (flavor2.isFlavorTextType()) {
+ return -1;
+ }
// Next, look for application/x-java-* types. Prefer unknown
// MIME types because if the user provides his own data flavor,
--- ./jdk/src/share/classes/sun/awt/resources/awt_sv.properties 2015-12-12 10:53:29.770049000 -0800
+++ ./jdk/src/share/classes/sun/awt/resources/awt_sv.properties 2015-10-24 06:21:17.000000000 -0700
@@ -19,14 +19,14 @@
AWT.pause=Paus
AWT.capsLock=Caps Lock
AWT.escape=Esc
-AWT.space=Mellanslag
+AWT.space=Blanksteg
AWT.pgup=Sida upp
AWT.pgdn=Sida ned
AWT.end=End
AWT.home=Hem
AWT.left=V\u00E4nster
AWT.up=Upp
-AWT.right=H\u00F6gerpil
+AWT.right=H\u00F6ger
AWT.down=Nedpil
AWT.begin=Begin
AWT.comma=Kommatecken
--- ./jdk/src/share/classes/sun/font/FontUtilities.java 2014-03-03 18:58:43.000000000 -0800
+++ ./jdk/src/share/classes/sun/font/FontUtilities.java 2015-10-24 06:21:20.000000000 -0700
@@ -48,6 +48,8 @@
public static boolean isLinux;
+ public static boolean isBSD;
+
public static boolean isMacOSX;
public static boolean isSolaris8;
@@ -78,6 +80,8 @@
isLinux = osName.startsWith("Linux");
+ isBSD = osName.endsWith("BSD");
+
isMacOSX = osName.contains("OS X"); // TODO: MacOSX
String t2kStr = System.getProperty("sun.java2d.font.scaler");
--- ./jdk/src/share/classes/sun/font/SunFontManager.java 2015-12-12 10:53:27.521479000 -0800
+++ ./jdk/src/share/classes/sun/font/SunFontManager.java 2015-10-24 06:21:20.000000000 -0700
@@ -418,7 +418,7 @@
* registerFonts method as on-screen these JRE fonts
* always go through the T2K rasteriser.
*/
- if (FontUtilities.isLinux) {
+ if (FontUtilities.isLinux || FontUtilities.isBSD) {
/* Linux font configuration uses these fonts */
registerFontDir(jreFontDirName);
}
--- ./jdk/src/share/classes/sun/java2d/opengl/OGLContext.java 2014-03-03 18:58:45.000000000 -0800
+++ ./jdk/src/share/classes/sun/java2d/opengl/OGLContext.java 2015-10-24 06:21:17.000000000 -0700
@@ -194,6 +194,10 @@
/** Indicates the presence of the GL_ARB_texture_rectangle extension. */
@Native
static final int CAPS_EXT_TEXRECT = (FIRST_PRIVATE_CAP << 4);
+ /** Indicates the presence of the GL_NV_texture_barrier extension. */
+ @Native
+ static final int CAPS_EXT_TEXBARRIER = (FIRST_PRIVATE_CAP << 5);
+
OGLContextCaps(int caps, String adapterId) {
super(caps, adapterId);
@@ -223,6 +227,9 @@
if ((caps & CAPS_EXT_TEXRECT) != 0) {
buf.append("CAPS_EXT_TEXRECT|");
}
+ if ((caps & CAPS_EXT_TEXBARRIER) != 0) {
+ buf.append("CAPS_EXT_TEXBARRIER|");
+ }
return buf.toString();
}
}
--- ./jdk/src/share/classes/sun/launcher/resources/launcher_pt_BR.properties 2015-12-12 10:53:29.775468000 -0800
+++ ./jdk/src/share/classes/sun/launcher/resources/launcher_pt_BR.properties 2015-10-24 06:21:17.000000000 -0700
@@ -40,13 +40,13 @@
java.launcher.X.usage=\ -Xmixed execu\u00E7\u00E3o no modo misto (padr\u00E3o)\n -Xint execu\u00E7\u00E3o somente no modo interpretado\n -Xbootclasspath:<diret\u00F3rios e arquivos zip/jar separados por {0}>\n define o caminho de pesquisa para classes e recursos de inicializa\u00E7\u00E3o\n -Xbootclasspath/a:<diret\u00F3rios e arquivos zip/jar separados por {0}>\n anexa no final do caminho da classe de inicializa\u00E7\u00E3o\n -Xbootclasspath/p:<diret\u00F3rios e arquivos zip/jar separados por {0}>\n anexa no in\u00EDcio do caminho da classe de inicializa\u00E7\u00E3o\n -Xdiag mostra mensagens de diagn\u00F3stico adicionais\n -Xnoclassgc desativa a coleta de lixo da classe\n -Xincgc ativa a coleta de lixo incremental\n -Xloggc:<arquivo> registra o status do GC status em um arquivo com marca\u00E7\u00F5es de data e hor\u00E1rio\n -Xbatch desativa a compila\u00E7\u00E3o em segundo plano\n -Xms<tamanho> define o tamanho inicial do heap Java\n -Xmx<tamanho> define o tamanho m\u00E1ximo do heap Java\n -Xss<tamanho> define o tamanho da pilha de threads java\n -Xprof produz dados de perfil da cpu\n -Xfuture ativa verifica\u00E7\u00F5es de n\u00EDvel m\u00E1ximo de exig\u00EAncia, prevendo o valor padr\u00E3o futuro\n -Xrs reduz o uso de sinais do SO pelo(a) Java/VM (consulte a documenta\u00E7\u00E3o)\n -Xcheck:jni executa verifica\u00E7\u00F5es adicionais de fun\u00E7\u00F5es da JNI\n -Xshare:off n\u00E3o tenta usar dados da classe compartilhada\n -Xshare:auto se poss\u00EDvel, usa dados da classe compartilhada (padr\u00E3o)\n -Xshare:on requer o uso de dados da classe compartilhada, caso contr\u00E1rio haver\u00E1 falha.\n -XshowSettings mostra todas as defini\u00E7\u00F5es e continua\n -XshowSettings:all\n mostra todas as defini\u00E7\u00F5es e continua\n -XshowSettings:vm mostra todas as defini\u00E7\u00F5es relacionadas \u00E0 vm e continua\n -XshowSettings:properties\n mostra todas as defini\u00E7\u00F5es da propriedade e continua\n -XshowSettings:locale\n mostra todas as defini\u00E7\u00F5es relativas \u00E0s configura\u00E7\u00F5es regionais e continua\n\nAs -X options n\u00E3o s\u00E3o padronizadas e est\u00E3o sujeitas a altera\u00E7\u00F5es sem aviso.\n
# Translators please note do not translate the options themselves
-java.launcher.X.macosx.usage=\nAs op\u00E7\u00F5es a seguir s\u00E3o espec\u00EDficas para o Mac OS X:\n -XstartOnFirstThread\n executa o m\u00E9todo main() no primeiro thread (AppKit)\n -Xdock:name=<nome da aplica\u00E7\u00E3o>"\n substitui o nome da aplica\u00E7\u00E3o padr\u00E3o exibido no encaixe\n -Xdock:icon=<caminho para o arquivo do \u00EDcone>\n substitui o \u00EDcone exibido no encaixe\n\n
+java.launcher.X.macosx.usage=\nAs op\u00E7\u00F5es a seguir s\u00E3o espec\u00EDficas para o Mac OS X:\n -XstartOnFirstThread\n executa o m\u00E9todo main() no primeiro thread (AppKit)\n -Xdock:name=<nome do aplicativo>"\n substitui o nome do aplicativo padr\u00E3o exibido no encaixe\n -Xdock:icon=<caminho para o arquivo do \u00EDcone>\n substitui o \u00EDcone exibido no encaixe\n\n
java.launcher.cls.error1=Erro: N\u00E3o foi poss\u00EDvel localizar nem carregar a classe principal {0}
java.launcher.cls.error2=Erro: o m\u00E9todo main n\u00E3o \u00E9 {0} na classe {1}; defina o m\u00E9todo main como:\n public static void main(String[] args)
java.launcher.cls.error3=Erro: o m\u00E9todo main deve retornar um valor do tipo void na classe {0}; \ndefina o m\u00E9todo main como:\n public static void main(String[] args)
-java.launcher.cls.error4=Erro: o m\u00E9todo main n\u00E3o foi encontrado na classe {0}; defina o m\u00E9todo main como:\\n public static void main(String[] args)\\nou uma classe da aplica\u00E7\u00E3o JavaFX deve expandir {1}
-java.launcher.cls.error5=Erro: os componentes de runtime do JavaFX n\u00E3o foram encontrados. Eles s\u00E3o obrigat\u00F3rios para executar esta aplica\u00E7\u00E3o
+java.launcher.cls.error4=Erro: o m\u00E9todo main n\u00E3o foi encontrado na classe {0}; defina o m\u00E9todo main como:\n public static void main(String[] args)\nou uma classe de aplicativo JavaFX deve expandir {1}
+java.launcher.cls.error5=Erro: os componentes de runtime do JavaFX n\u00E3o foram encontrados. Eles s\u00E3o obrigat\u00F3rios para executar este aplicativo
java.launcher.jar.error1=Erro: ocorreu um erro inesperado ao tentar abrir o arquivo {0}
java.launcher.jar.error2=manifesto n\u00E3o encontrado em {0}
java.launcher.jar.error3=nenhum atributo de manifesto principal em {0}
--- ./jdk/src/share/classes/sun/launcher/resources/launcher_sv.properties 2015-12-12 10:53:29.775781000 -0800
+++ ./jdk/src/share/classes/sun/launcher/resources/launcher_sv.properties 2015-10-24 06:21:17.000000000 -0700
@@ -46,7 +46,7 @@
java.launcher.cls.error2=Fel: Huvudmetoden \u00E4r inte {0} i klassen {1}, definiera huvudmetoden som:\n public static void main(String[] args)
java.launcher.cls.error3=Fel: Huvudmetoden m\u00E5ste returnera ett v\u00E4rde av typen void i klassen {0}, \ndefiniera huvudmetoden som:\n public static void main(String[] args)
java.launcher.cls.error4=Fel: Huvudmetoden finns inte i klassen {0}, definiera huvudmetoden som:\n public static void main(String[] args)\neller s\u00E5 m\u00E5ste en JavaFX-applikationsklass ut\u00F6ka {1}
-java.launcher.cls.error5=Fel: JavaFX-k\u00F6rningskomponenter saknas, och de kr\u00E4vs f\u00F6r att kunna k\u00F6ra den h\u00E4r applikationen
+java.launcher.cls.error5=Fel: JavaFX-exekveringskomponenter saknas, och de kr\u00E4vs f\u00F6r att kunna k\u00F6ra den h\u00E4r applikationen
java.launcher.jar.error1=Fel: Ett ov\u00E4ntat fel intr\u00E4ffade n\u00E4r filen {0} skulle \u00F6ppnas
java.launcher.jar.error2=manifest finns inte i {0}
java.launcher.jar.error3=inget huvudmanifestattribut i {0}
--- ./jdk/src/share/classes/sun/misc/JavaNetAccess.java 2015-12-12 10:53:29.777296000 -0800
+++ ./jdk/src/share/classes/sun/misc/JavaNetAccess.java 2015-07-18 13:32:33.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2015, 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
@@ -26,10 +26,17 @@
package sun.misc;
import java.net.URLClassLoader;
+import java.net.InetAddress;
public interface JavaNetAccess {
/**
* return the URLClassPath belonging to the given loader
*/
URLClassPath getURLClassPath (URLClassLoader u);
+
+ /**
+ * Return the original application specified hostname of
+ * the given InetAddress object.
+ */
+ String getOriginalHostName(InetAddress ia);
}
--- ./jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java 2015-12-12 10:53:29.779263000 -0800
+++ ./jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java 2015-10-24 06:21:17.000000000 -0700
@@ -484,7 +484,8 @@
private void checkMessageHeader(String key, String value) {
char LF = '\n';
int index = key.indexOf(LF);
- if (index != -1) {
+ int index1 = key.indexOf(':');
+ if (index != -1 || index1 != -1) {
throw new IllegalArgumentException(
"Illegal character(s) in message header field: " + key);
}
--- ./jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java 2015-12-12 10:53:29.781937000 -0800
+++ ./jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java 2015-10-24 06:21:20.000000000 -0700
@@ -1306,7 +1306,7 @@
String osName = AccessController.doPrivileged(
new GetPropertyAction("os.name"));
if ("SunOS".equals(osName) || "Linux".equals(osName) || "AIX".equals(osName)
- || osName.contains("OS X")) {
+ || osName.endsWith("BSD") || osName.contains("OS X")) {
charset("x-COMPOUND_TEXT", "COMPOUND_TEXT",
new String[] {
"COMPOUND_TEXT", // JDK historical
--- ./jdk/src/share/classes/sun/print/PSPrinterJob.java 2014-03-03 18:58:54.000000000 -0800
+++ ./jdk/src/share/classes/sun/print/PSPrinterJob.java 2015-10-24 06:21:20.000000000 -0700
@@ -1587,9 +1587,31 @@
}
String osname = System.getProperty("os.name");
- if (osname.equals("Linux") || osname.contains("OS X")) {
+ if (osname.equals("Linux") || osname.endsWith("BSD") || osname.contains("OS X")) {
+ String lprPath = "/usr/bin/lpr";
+ if (osname.equals("FreeBSD")) {
+ final PrintService pservice = getPrintService();
+ Boolean isIPPPrinter =
+ (Boolean)java.security.AccessController.doPrivileged(
+ new java.security.PrivilegedAction() {
+ public Object run() {
+ try {
+ Class psClass =
+ Class.forName("sun.print.IPPPrintService");
+ if (psClass.isInstance(pservice)) {
+ return Boolean.TRUE;
+ }
+ } catch (Throwable t) {
+ }
+ return Boolean.FALSE;
+ }
+ });
+ if (isIPPPrinter) {
+ lprPath = "/usr/local/bin/lpr";
+ }
+ }
execCmd = new String[ncomps];
- execCmd[n++] = "/usr/bin/lpr";
+ execCmd[n++] = lprPath;
if ((pFlags & PRINTER) != 0) {
execCmd[n++] = "-P" + printer;
}
--- ./jdk/src/share/classes/sun/rmi/transport/DGCClient.java 2014-03-03 18:58:57.000000000 -0800
+++ ./jdk/src/share/classes/sun/rmi/transport/DGCClient.java 2015-10-24 06:21:17.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2015, 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
@@ -26,6 +26,7 @@
import java.lang.ref.PhantomReference;
import java.lang.ref.ReferenceQueue;
+import java.net.SocketPermission;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.HashMap;
@@ -46,6 +47,10 @@
import sun.rmi.server.Util;
import sun.security.action.GetLongAction;
+import java.security.AccessControlContext;
+import java.security.Permissions;
+import java.security.ProtectionDomain;
+
/**
* DGCClient implements the client-side of the RMI distributed garbage
* collection system.
@@ -113,6 +118,18 @@
/** ObjID for server-side DGC object */
private static final ObjID dgcID = new ObjID(ObjID.DGC_ID);
+ /**
+ * An AccessControlContext with only socket permissions,
+ * suitable for an RMIClientSocketFactory.
+ */
+ private static final AccessControlContext SOCKET_ACC;
+ static {
+ Permissions perms = new Permissions();
+ perms.add(new SocketPermission("*", "connect,resolve"));
+ ProtectionDomain[] pd = { new ProtectionDomain(null, perms) };
+ SOCKET_ACC = new AccessControlContext(pd);
+ }
+
/*
* Disallow anyone from creating one of these.
*/
@@ -570,13 +587,20 @@
}
}
- if (needRenewal) {
- makeDirtyCall(refsToDirty, sequenceNum);
+ boolean needRenewal_ = needRenewal;
+ Set<RefEntry> refsToDirty_ = refsToDirty;
+ long sequenceNum_ = sequenceNum;
+ AccessController.doPrivileged(new PrivilegedAction<Void>() {
+ public Void run() {
+ if (needRenewal_) {
+ makeDirtyCall(refsToDirty_, sequenceNum_);
}
if (!pendingCleans.isEmpty()) {
makeCleanCalls();
}
+ return null;
+ }}, SOCKET_ACC);
} while (!removed || !pendingCleans.isEmpty());
}
}
--- ./jdk/src/share/classes/sun/rmi/transport/DGCImpl.java 2014-03-03 18:58:57.000000000 -0800
+++ ./jdk/src/share/classes/sun/rmi/transport/DGCImpl.java 2015-10-24 06:21:17.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2015, 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
@@ -24,6 +24,7 @@
*/
package sun.rmi.transport;
+import java.net.SocketPermission;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.rmi.dgc.DGC;
@@ -33,8 +34,11 @@
import java.rmi.server.ObjID;
import java.rmi.server.RemoteServer;
import java.rmi.server.ServerNotActiveException;
+import java.security.AccessControlContext;
import java.security.AccessController;
+import java.security.Permissions;
import java.security.PrivilegedAction;
+import java.security.ProtectionDomain;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.HashMap;
@@ -296,8 +300,19 @@
Util.createProxy(DGCImpl.class,
new UnicastRef(ref), true);
disp.setSkeleton(dgc);
- Target target =
- new Target(dgc, disp, stub, dgcID, true);
+
+ Permissions perms = new Permissions();
+ perms.add(new SocketPermission("*", "accept,resolve"));
+ ProtectionDomain[] pd = { new ProtectionDomain(null, perms) };
+ AccessControlContext acceptAcc = new AccessControlContext(pd);
+
+ Target target = AccessController.doPrivileged(
+ new PrivilegedAction<Target>() {
+ public Target run() {
+ return new Target(dgc, disp, stub, dgcID, true);
+ }
+ }, acceptAcc);
+
ObjectTable.putTarget(target);
} catch (RemoteException e) {
throw new Error(
--- ./jdk/src/share/classes/sun/security/jgss/GSSManagerImpl.java 2014-03-03 18:58:58.000000000 -0800
+++ ./jdk/src/share/classes/sun/security/jgss/GSSManagerImpl.java 2015-10-24 06:21:20.000000000 -0700
@@ -48,6 +48,7 @@
public Boolean run() {
String osname = System.getProperty("os.name");
if (osname.startsWith("SunOS") ||
+ osname.endsWith("BSD") ||
osname.contains("OS X") ||
osname.startsWith("Linux")) {
return new Boolean(System.getProperty
--- ./jdk/src/share/classes/sun/security/jgss/krb5/Krb5NameElement.java 2014-03-03 18:58:58.000000000 -0800
+++ ./jdk/src/share/classes/sun/security/jgss/krb5/Krb5NameElement.java 2015-10-24 06:21:17.000000000 -0700
@@ -28,7 +28,10 @@
import org.ietf.jgss.*;
import sun.security.jgss.spi.*;
import sun.security.krb5.PrincipalName;
+import sun.security.krb5.Realm;
import sun.security.krb5.KrbException;
+
+import javax.security.auth.kerberos.ServicePermission;
import java.io.UnsupportedEncodingException;
import java.net.InetAddress;
import java.net.UnknownHostException;
@@ -126,6 +129,18 @@
throw new GSSException(GSSException.BAD_NAME, -1, e.getMessage());
}
+ if (principalName.isRealmDeduced() && !Realm.AUTODEDUCEREALM) {
+ SecurityManager sm = System.getSecurityManager();
+ if (sm != null) {
+ try {
+ sm.checkPermission(new ServicePermission(
+ "@" + principalName.getRealmAsString(), "-"));
+ } catch (SecurityException se) {
+ // Do not chain the actual exception to hide info
+ throw new GSSException(GSSException.FAILURE);
+ }
+ }
+ }
return new Krb5NameElement(principalName, gssNameStr, gssNameType);
}
@@ -198,7 +213,7 @@
* If either name denotes an anonymous principal, the call should
* return false.
*
- * @param name to be compared with
+ * @param other to be compared with
* @returns true if they both refer to the same entity, else false
* @exception GSSException with major codes of BAD_NAMETYPE,
* BAD_NAME, FAILURE
--- ./jdk/src/share/classes/sun/security/jgss/wrapper/GSSNameElement.java 2015-12-12 10:53:26.314950000 -0800
+++ ./jdk/src/share/classes/sun/security/jgss/wrapper/GSSNameElement.java 2015-10-24 06:21:17.000000000 -0700
@@ -30,6 +30,7 @@
import java.security.Security;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
+import sun.security.krb5.Realm;
import sun.security.jgss.GSSUtil;
import sun.security.util.ObjectIdentifier;
import sun.security.util.DerInputStream;
@@ -38,6 +39,8 @@
import sun.security.jgss.GSSExceptionImpl;
import sun.security.jgss.spi.GSSNameSpi;
+import javax.security.auth.kerberos.ServicePermission;
+
/**
* This class is essentially a wrapper class for the gss_name_t
* structure of the native GSS library.
@@ -150,6 +153,26 @@
pName = cStub.importName(name, nameType);
setPrintables();
+ SecurityManager sm = System.getSecurityManager();
+ if (sm != null && !Realm.AUTODEDUCEREALM) {
+ String krbName = getKrbName();
+ int atPos = krbName.lastIndexOf('@');
+ if (atPos != -1) {
+ String atRealm = krbName.substring(atPos);
+ if (nameType.equals(GSSUtil.NT_GSS_KRB5_PRINCIPAL)
+ && new String(nameBytes).endsWith(atRealm)) {
+ // Created from Kerberos name with realm, no need to check
+ } else {
+ try {
+ sm.checkPermission(new ServicePermission(atRealm, "-"));
+ } catch (SecurityException se) {
+ // Do not chain the actual exception to hide info
+ throw new GSSException(GSSException.FAILURE);
+ }
+ }
+ }
+ }
+
SunNativeProvider.debug("Imported " + printableName + " w/ type " +
printableType);
}
--- ./jdk/src/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java 2015-12-12 10:53:27.541965000 -0800
+++ ./jdk/src/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java 2015-10-24 06:21:20.000000000 -0700
@@ -90,6 +90,12 @@
"libgssapi_krb5.so",
"libgssapi_krb5.so.2",
};
+ } else if (osname.endsWith("BSD")) {
+ gssLibs = new String[]{
+ "libgssapi.so",
+ "libgssapi_krb5.so",
+ "libgssapi_krb5.so.10",
+ };
} else if (osname.contains("OS X")) {
gssLibs = new String[]{
"libgssapi_krb5.dylib",
--- ./jdk/src/share/classes/sun/security/krb5/KrbServiceLocator.java 2014-03-03 18:58:59.000000000 -0800
+++ ./jdk/src/share/classes/sun/security/krb5/KrbServiceLocator.java 2015-10-24 06:21:17.000000000 -0700
@@ -25,6 +25,11 @@
package sun.security.krb5;
+import sun.security.krb5.internal.Krb5;
+
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
import java.util.Arrays;
import java.util.Hashtable;
import java.util.Random;
@@ -52,6 +57,8 @@
private static final Random random = new Random();
+ private static final boolean DEBUG = Krb5.DEBUG;
+
private KrbServiceLocator() {
}
@@ -62,8 +69,7 @@
* Information on the mapping of DNS hostnames and domain names
* to Kerberos realms is stored using DNS TXT records
*
- * @param domainName A string domain name.
- * @param environment The possibly null environment of the context.
+ * @param realmName A string realm name.
* @return An ordered list of hostports for the Kerberos service or null if
* the service has not been located.
*/
@@ -81,8 +87,18 @@
if (!(ctx instanceof DirContext)) {
return null; // cannot create a DNS context
}
- Attributes attrs =
- ((DirContext)ctx).getAttributes(dnsUrl, SRV_TXT_ATTR);
+ Attributes attrs = null;
+ try {
+ // both connect and accept are needed since DNS is thru UDP
+ attrs = AccessController.doPrivileged(
+ (PrivilegedExceptionAction<Attributes>)
+ () -> ((DirContext)ctx).getAttributes(
+ dnsUrl, SRV_TXT_ATTR),
+ null,
+ new java.net.SocketPermission("*", "connect,accept"));
+ } catch (PrivilegedActionException e) {
+ throw (NamingException)e.getCause();
+ }
Attribute attr;
if (attrs != null && ((attr = attrs.get(SRV_TXT)) != null)) {
@@ -124,7 +140,8 @@
* Queries DNS for a list of KERBEROS Service Location Records (SRV) for a
* given domain name.
*
- * @param domainName A string domain name.
+ * @param realmName A string realm name.
+ * @param protocol the protocol string, can be "_udp" or "_tcp"
* @return An ordered list of hostports for the Kerberos service or null if
* the service has not been located.
*/
@@ -142,8 +159,20 @@
if (!(ctx instanceof DirContext)) {
return null; // cannot create a DNS context
}
- Attributes attrs =
- ((DirContext)ctx).getAttributes(dnsUrl, SRV_RR_ATTR);
+
+ Attributes attrs = null;
+ try {
+ // both connect and accept are needed since DNS is thru UDP
+ attrs = AccessController.doPrivileged(
+ (PrivilegedExceptionAction<Attributes>)
+ () -> ((DirContext)ctx).getAttributes(
+ dnsUrl, SRV_RR_ATTR),
+ null,
+ new java.net.SocketPermission("*", "connect,accept"));
+ } catch (PrivilegedActionException e) {
+ throw (NamingException)e.getCause();
+ }
+
Attribute attr;
if (attrs != null && ((attr = attrs.get(SRV_RR)) != null)) {
--- ./jdk/src/share/classes/sun/security/krb5/PrincipalName.java 2014-03-03 18:58:59.000000000 -0800
+++ ./jdk/src/share/classes/sun/security/krb5/PrincipalName.java 2015-10-24 06:21:17.000000000 -0700
@@ -123,6 +123,13 @@
*/
private final Realm nameRealm; // not null
+
+ /**
+ * When constructing a PrincipalName, whether the realm is included in
+ * the input, or deduced from default realm or domain-realm mapping.
+ */
+ private final boolean realmDeduced;
+
// cached default salt, not used in clone
private transient String salt = null;
@@ -143,6 +150,7 @@
this.nameType = nameType;
this.nameStrings = nameStrings.clone();
this.nameRealm = nameRealm;
+ this.realmDeduced = false;
}
// This method is called by Windows NativeCred.c
@@ -150,11 +158,6 @@
this(KRB_NT_UNKNOWN, nameParts, new Realm(realm));
}
- public PrincipalName(String[] nameParts, int type)
- throws IllegalArgumentException, RealmException {
- this(type, nameParts, Realm.getDefault());
- }
-
// Validate a nameStrings argument
private static void validateNameStrings(String[] ns) {
if (ns == null) {
@@ -226,7 +229,7 @@
* <a href="http://www.ietf.org/rfc/rfc4120.txt">
* http://www.ietf.org/rfc/rfc4120.txt</a>.
*
- * @param encoding a Der-encoded data.
+ * @param encoding DER-encoded PrincipalName (without Realm)
* @param realm the realm for this name
* @exception Asn1Exception if an error occurs while decoding
* an ASN1 encoded data.
@@ -240,6 +243,7 @@
if (realm == null) {
throw new IllegalArgumentException("Null realm not allowed");
}
+ realmDeduced = false;
nameRealm = realm;
DerValue der;
if (encoding == null) {
@@ -394,6 +398,10 @@
if (realm == null) {
realm = Realm.parseRealmAtSeparator(name);
}
+
+ // No realm info from parameter and string, must deduce later
+ realmDeduced = realm == null;
+
switch (type) {
case KRB_NT_SRV_HST:
if (nameParts.length >= 2) {
@@ -413,8 +421,8 @@
hostName.toLowerCase(Locale.ENGLISH)+".")) {
hostName = canonicalized;
}
- } catch (UnknownHostException e) {
- // no canonicalization, use old
+ } catch (UnknownHostException | SecurityException e) {
+ // not canonicalized or no permission to do so, use old
}
nameParts[1] = hostName.toLowerCase(Locale.ENGLISH);
}
@@ -680,4 +688,7 @@
return result;
}
+ public boolean isRealmDeduced() {
+ return realmDeduced;
+ }
}
--- ./jdk/src/share/classes/sun/security/krb5/Realm.java 2014-03-03 18:58:59.000000000 -0800
+++ ./jdk/src/share/classes/sun/security/krb5/Realm.java 2015-10-24 06:21:17.000000000 -0700
@@ -47,6 +47,12 @@
* This class is immutable.
*/
public class Realm implements Cloneable {
+
+ public static final boolean AUTODEDUCEREALM =
+ java.security.AccessController.doPrivileged(
+ new sun.security.action.GetBooleanAction(
+ "sun.security.krb5.autodeducerealm"));
+
private final String realm; // not null nor empty
public Realm(String name) throws RealmException {
--- ./jdk/src/share/classes/sun/security/krb5/internal/ccache/CCacheInputStream.java 2015-12-12 10:53:27.542427000 -0800
+++ ./jdk/src/share/classes/sun/security/krb5/internal/ccache/CCacheInputStream.java 2015-10-24 06:21:17.000000000 -0700
@@ -146,8 +146,9 @@
}
try {
return new PrincipalName(
+ type,
result.toArray(new String[result.size()]),
- type);
+ Realm.getDefault());
} catch (RealmException re) {
return null;
}
--- ./jdk/src/share/classes/sun/security/pkcs11/P11Key.java 2015-12-12 10:53:29.788373000 -0800
+++ ./jdk/src/share/classes/sun/security/pkcs11/P11Key.java 2015-08-29 06:20:51.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2015, 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
@@ -164,7 +164,7 @@
} else {
otherEnc = other.getEncoded();
}
- return Arrays.equals(thisEnc, otherEnc);
+ return MessageDigest.isEqual(thisEnc, otherEnc);
}
public int hashCode() {
--- ./jdk/src/share/classes/sun/security/pkcs11/wrapper/Functions.java 2015-12-12 10:53:29.789237000 -0800
+++ ./jdk/src/share/classes/sun/security/pkcs11/wrapper/Functions.java 2015-07-18 13:32:33.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
*/
/* Copyright (c) 2002 Graz University of Technology. All rights reserved.
@@ -447,22 +447,6 @@
/**
* Check the given arrays for equalitiy. This method considers both arrays as
* equal, if both are <code>null</code> or both have the same length and
- * contain exactly the same byte values.
- *
- * @param array1 The first array.
- * @param array2 The second array.
- * @return True, if both arrays are <code>null</code> or both have the same
- * length and contain exactly the same byte values. False, otherwise.
- * @preconditions
- * @postconditions
- */
- public static boolean equals(byte[] array1, byte[] array2) {
- return Arrays.equals(array1, array2);
- }
-
- /**
- * Check the given arrays for equalitiy. This method considers both arrays as
- * equal, if both are <code>null</code> or both have the same length and
* contain exactly the same char values.
*
* @param array1 The first array.
@@ -472,7 +456,7 @@
* @preconditions
* @postconditions
*/
- public static boolean equals(char[] array1, char[] array2) {
+ private static boolean equals(char[] array1, char[] array2) {
return Arrays.equals(array1, array2);
}
--- ./jdk/src/share/classes/sun/security/pkcs12/PKCS12KeyStore.java 2015-12-12 10:53:29.790250000 -0800
+++ ./jdk/src/share/classes/sun/security/pkcs12/PKCS12KeyStore.java 2015-08-29 06:20:51.000000000 -0700
@@ -2050,7 +2050,7 @@
"(MAC algorithm: " + m.getAlgorithm() + ")");
}
- if (!Arrays.equals(macData.getDigest(), macResult)) {
+ if (!MessageDigest.isEqual(macData.getDigest(), macResult)) {
throw new SecurityException("Failed PKCS12" +
" integrity checking");
}
--- ./jdk/src/share/classes/sun/security/provider/certpath/AlgorithmChecker.java 2015-12-12 10:53:19.971996000 -0800
+++ ./jdk/src/share/classes/sun/security/provider/certpath/AlgorithmChecker.java 2015-10-24 06:21:17.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2015, 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
@@ -77,6 +77,13 @@
private final static Set<CryptoPrimitive> SIGNATURE_PRIMITIVE_SET =
Collections.unmodifiableSet(EnumSet.of(CryptoPrimitive.SIGNATURE));
+ private final static Set<CryptoPrimitive> KU_PRIMITIVE_SET =
+ Collections.unmodifiableSet(EnumSet.of(
+ CryptoPrimitive.SIGNATURE,
+ CryptoPrimitive.KEY_ENCAPSULATION,
+ CryptoPrimitive.PUBLIC_KEY_ENCRYPTION,
+ CryptoPrimitive.KEY_AGREEMENT));
+
private final static DisabledAlgorithmConstraints
certPathDefaultConstraints = new DisabledAlgorithmConstraints(
DisabledAlgorithmConstraints.PROPERTY_CERTPATH_DISABLED_ALGS);
@@ -210,9 +217,11 @@
null, null, -1, PKIXReason.INVALID_KEY_USAGE);
}
+ // Assume all key usage bits are set if key usage is not present
+ Set<CryptoPrimitive> primitives = KU_PRIMITIVE_SET;
+
if (keyUsage != null) {
- Set<CryptoPrimitive> primitives =
- EnumSet.noneOf(CryptoPrimitive.class);
+ primitives = EnumSet.noneOf(CryptoPrimitive.class);
if (keyUsage[0] || keyUsage[1] || keyUsage[5] || keyUsage[6]) {
// keyUsage[0]: KeyUsage.digitalSignature
@@ -237,14 +246,18 @@
// KeyUsage.encipherOnly and KeyUsage.decipherOnly are
// undefined in the absence of the keyAgreement bit.
- if (!primitives.isEmpty()) {
+ if (primitives.isEmpty()) {
+ throw new CertPathValidatorException(
+ "incorrect KeyUsage extension",
+ null, null, -1, PKIXReason.INVALID_KEY_USAGE);
+ }
+ }
+
if (!constraints.permits(primitives, currPubKey)) {
throw new CertPathValidatorException(
"algorithm constraints check failed",
null, null, -1, BasicReason.ALGORITHM_CONSTRAINED);
}
- }
- }
// Check with previous cert for signature algorithm and public key
if (prevPubKey != null) {
--- ./jdk/src/share/classes/sun/security/provider/certpath/OCSPResponse.java 2015-12-12 10:53:29.796575000 -0800
+++ ./jdk/src/share/classes/sun/security/provider/certpath/OCSPResponse.java 2015-07-18 13:32:33.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2015, 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
@@ -151,8 +151,8 @@
private static final int DEFAULT_MAX_CLOCK_SKEW = 900000;
/**
- * Integer value indicating the maximum allowable clock skew, in seconds,
- * to be used for the OCSP check.
+ * Integer value indicating the maximum allowable clock skew,
+ * in milliseconds, to be used for the OCSP check.
*/
private static final int MAX_CLOCK_SKEW = initializeClockSkew();
@@ -586,13 +586,14 @@
"Unable to verify OCSP Response's signature");
}
- // Check freshness of OCSPResponse
if (nonce != null) {
if (responseNonce != null && !Arrays.equals(nonce, responseNonce)) {
throw new CertPathValidatorException("Nonces don't match");
}
}
+ // Check freshness of OCSPResponse
+
long now = (date == null) ? System.currentTimeMillis() : date.getTime();
Date nowPlusSkew = new Date(now + MAX_CLOCK_SKEW);
Date nowMinusSkew = new Date(now - MAX_CLOCK_SKEW);
@@ -602,13 +603,18 @@
if (sr.nextUpdate != null) {
until = " until " + sr.nextUpdate;
}
- debug.println("Response's validity interval is from " +
+ debug.println("OCSP response validity interval is from " +
sr.thisUpdate + until);
+ debug.println("Checking validity of OCSP response on: " +
+ new Date(now));
}
- // Check that the test date is within the validity interval
- if ((sr.thisUpdate != null && nowPlusSkew.before(sr.thisUpdate)) ||
- (sr.nextUpdate != null && nowMinusSkew.after(sr.nextUpdate)))
+ // Check that the test date is within the validity interval:
+ // [ thisUpdate - MAX_CLOCK_SKEW,
+ // MAX(thisUpdate, nextUpdate) + MAX_CLOCK_SKEW ]
+ if (nowPlusSkew.before(sr.thisUpdate) ||
+ nowMinusSkew.after(
+ sr.nextUpdate != null ? sr.nextUpdate : sr.thisUpdate))
{
throw new CertPathValidatorException(
"Response is unreliable: its validity " +
--- ./jdk/src/share/classes/sun/security/provider/certpath/PKIXCertPathValidator.java 2015-12-12 10:53:29.796887000 -0800
+++ ./jdk/src/share/classes/sun/security/provider/certpath/PKIXCertPathValidator.java 2015-07-18 13:32:33.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2015, 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
@@ -159,12 +159,19 @@
ValidatorParams params)
throws CertPathValidatorException
{
+ // check if anchor is untrusted
+ UntrustedChecker untrustedChecker = new UntrustedChecker();
+ X509Certificate anchorCert = anchor.getTrustedCert();
+ if (anchorCert != null) {
+ untrustedChecker.check(anchorCert);
+ }
+
int certPathLen = params.certificates().size();
// create PKIXCertPathCheckers
List<PKIXCertPathChecker> certPathCheckers = new ArrayList<>();
// add standard checkers that we will be using
- certPathCheckers.add(new UntrustedChecker());
+ certPathCheckers.add(untrustedChecker);
certPathCheckers.add(new AlgorithmChecker(anchor));
certPathCheckers.add(new KeyChecker(certPathLen,
params.targetCertConstraints()));
--- ./jdk/src/share/classes/sun/security/provider/certpath/RevocationChecker.java 2015-12-12 10:53:29.797788000 -0800
+++ ./jdk/src/share/classes/sun/security/provider/certpath/RevocationChecker.java 2015-10-24 06:21:17.000000000 -0700
@@ -1041,12 +1041,9 @@
boolean signFlag = true;
List<? extends Certificate> cpList =
cpbr.getCertPath().getCertificates();
- if (cpList.isEmpty()) {
- return;
- }
try {
- for (int i = cpList.size()-1; i >= 0; i-- ) {
- X509Certificate cert = (X509Certificate)cpList.get(i);
+ for (int i = cpList.size() - 1; i >= 0; i--) {
+ X509Certificate cert = (X509Certificate) cpList.get(i);
if (debug != null) {
debug.println("RevocationChecker.buildToNewKey()"
@@ -1073,8 +1070,10 @@
// If it doesn't check out, try to find a different key.
// And if we can't find a key, then return false.
PublicKey newKey = cpbr.getPublicKey();
+ X509Certificate newCert = cpList.isEmpty() ?
+ null : (X509Certificate) cpList.get(0);
try {
- checkCRLs(currCert, newKey, (X509Certificate) cpList.get(0),
+ checkCRLs(currCert, newKey, newCert,
true, false, null, params.trustAnchors());
// If that passed, the cert is OK!
return;
--- ./jdk/src/share/classes/sun/security/rsa/RSASignature.java 2015-12-12 10:53:29.798587000 -0800
+++ ./jdk/src/share/classes/sun/security/rsa/RSASignature.java 2015-07-18 13:32:33.000000000 -0700
@@ -27,7 +27,6 @@
import java.io.IOException;
import java.nio.ByteBuffer;
-import java.util.Arrays;
import java.security.*;
import java.security.interfaces.*;
@@ -194,7 +193,7 @@
byte[] decrypted = RSACore.rsa(sigBytes, publicKey);
byte[] unpadded = padding.unpad(decrypted);
byte[] decodedDigest = decodeSignature(digestOID, unpadded);
- return Arrays.equals(digest, decodedDigest);
+ return MessageDigest.isEqual(digest, decodedDigest);
} catch (javax.crypto.BadPaddingException e) {
// occurs if the app has used the wrong RSA public key
// or if sigBytes is invalid
--- ./jdk/src/share/classes/sun/security/ssl/CipherSuite.java 2015-12-12 10:53:29.799298000 -0800
+++ ./jdk/src/share/classes/sun/security/ssl/CipherSuite.java 2015-07-18 13:32:33.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2015, 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
@@ -968,7 +968,7 @@
* 1. Prefer Suite B compliant cipher suites, see RFC6460 (To be
* changed later, see below).
* 2. Prefer the stronger bulk cipher, in the order of AES_256(GCM),
- * AES_128(GCM), AES_256, AES_128, 3DES-EDE, RC-4.
+ * AES_128(GCM), AES_256, AES_128, 3DES-EDE.
* 3. Prefer the stronger MAC algorithm, in the order of SHA384,
* SHA256, SHA, MD5.
* 4. Prefer the better performance of key exchange and digital
@@ -1115,20 +1115,6 @@
add("SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA",
0x0013, --p, K_DHE_DSS, B_3DES, N);
- // RC-4
- add("TLS_ECDHE_ECDSA_WITH_RC4_128_SHA",
- 0xC007, --p, K_ECDHE_ECDSA, B_RC4_128, N);
- add("TLS_ECDHE_RSA_WITH_RC4_128_SHA",
- 0xC011, --p, K_ECDHE_RSA, B_RC4_128, N);
- add("SSL_RSA_WITH_RC4_128_SHA",
- 0x0005, --p, K_RSA, B_RC4_128, N);
- add("TLS_ECDH_ECDSA_WITH_RC4_128_SHA",
- 0xC002, --p, K_ECDH_ECDSA, B_RC4_128, N);
- add("TLS_ECDH_RSA_WITH_RC4_128_SHA",
- 0xC00C, --p, K_ECDH_RSA, B_RC4_128, N);
- add("SSL_RSA_WITH_RC4_128_MD5",
- 0x0004, --p, K_RSA, B_RC4_128, N);
-
// Renegotiation protection request Signalling Cipher Suite Value (SCSV)
add("TLS_EMPTY_RENEGOTIATION_INFO_SCSV",
0x00ff, --p, K_SCSV, B_NULL, T);
@@ -1178,6 +1164,20 @@
add("SSL_DH_anon_WITH_3DES_EDE_CBC_SHA",
0x001b, --p, K_DH_ANON, B_3DES, N);
+ // RC-4
+ add("TLS_ECDHE_ECDSA_WITH_RC4_128_SHA",
+ 0xC007, --p, K_ECDHE_ECDSA, B_RC4_128, N);
+ add("TLS_ECDHE_RSA_WITH_RC4_128_SHA",
+ 0xC011, --p, K_ECDHE_RSA, B_RC4_128, N);
+ add("SSL_RSA_WITH_RC4_128_SHA",
+ 0x0005, --p, K_RSA, B_RC4_128, N);
+ add("TLS_ECDH_ECDSA_WITH_RC4_128_SHA",
+ 0xC002, --p, K_ECDH_ECDSA, B_RC4_128, N);
+ add("TLS_ECDH_RSA_WITH_RC4_128_SHA",
+ 0xC00C, --p, K_ECDH_RSA, B_RC4_128, N);
+ add("SSL_RSA_WITH_RC4_128_MD5",
+ 0x0004, --p, K_RSA, B_RC4_128, N);
+
add("TLS_ECDH_anon_WITH_RC4_128_SHA",
0xC016, --p, K_ECDH_ANON, B_RC4_128, N);
add("SSL_DH_anon_WITH_RC4_128_MD5",
--- ./jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java 2015-12-12 10:53:29.800119000 -0800
+++ ./jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java 2015-10-24 06:21:17.000000000 -0700
@@ -489,7 +489,7 @@
0, clientVerifyData.length);
System.arraycopy(serverVerifyData, 0, verifyData,
clientVerifyData.length, serverVerifyData.length);
- if (!Arrays.equals(verifyData,
+ if (!MessageDigest.isEqual(verifyData,
serverHelloRI.getRenegotiatedConnection())) {
fatalSE(Alerts.alert_handshake_failure,
"Incorrect verify data in ServerHello " +
@@ -620,6 +620,9 @@
}
} else {
// we wanted to resume, but the server refused
+ //
+ // Invalidate the session in case of reusing next time.
+ session.invalidate();
session = null;
if (!enableNewSession) {
throw new SSLException("New session creation is disabled");
@@ -679,6 +682,14 @@
// NOTREACHED
}
ephemeralServerKey = mesg.getPublicKey();
+
+ // check constraints of RSA PublicKey
+ if (!algorithmConstraints.permits(
+ EnumSet.of(CryptoPrimitive.KEY_AGREEMENT), ephemeralServerKey)) {
+
+ throw new SSLHandshakeException("RSA ServerKeyExchange " +
+ "does not comply to algorithm constraints");
+ }
}
@@ -696,6 +707,9 @@
dh = new DHCrypt(mesg.getModulus(), mesg.getBase(),
sslContext.getSecureRandom());
serverDH = mesg.getServerPublicKey();
+
+ // check algorithm constraints
+ dh.checkConstraints(algorithmConstraints, serverDH);
}
private void serverKeyExchange(ECDH_ServerKeyExchange mesg)
@@ -706,6 +720,14 @@
ECPublicKey key = mesg.getPublicKey();
ecdh = new ECDHCrypt(key.getParams(), sslContext.getSecureRandom());
ephemeralServerKey = key;
+
+ // check constraints of EC PublicKey
+ if (!algorithmConstraints.permits(
+ EnumSet.of(CryptoPrimitive.KEY_AGREEMENT), ephemeralServerKey)) {
+
+ throw new SSLHandshakeException("ECDH ServerKeyExchange " +
+ "does not comply to algorithm constraints");
+ }
}
/*
--- ./jdk/src/share/classes/sun/security/ssl/DHCrypt.java 2015-12-12 10:53:29.800490000 -0800
+++ ./jdk/src/share/classes/sun/security/ssl/DHCrypt.java 2015-10-24 06:21:17.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2015, 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
@@ -26,6 +26,11 @@
package sun.security.ssl;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.Collections;
+import java.util.regex.Pattern;
+import java.util.regex.Matcher;
import java.math.BigInteger;
import java.security.*;
import java.io.IOException;
@@ -34,6 +39,7 @@
import javax.crypto.KeyAgreement;
import javax.crypto.interfaces.DHPublicKey;
import javax.crypto.spec.*;
+import java.util.EnumSet;
import sun.security.util.KeyUtil;
@@ -94,24 +100,10 @@
* Generate a Diffie-Hellman keypair of the specified size.
*/
DHCrypt(int keyLength, SecureRandom random) {
- try {
- KeyPairGenerator kpg = JsseJce.getKeyPairGenerator("DiffieHellman");
- kpg.initialize(keyLength, random);
-
- DHPublicKeySpec spec = generateDHPublicKeySpec(kpg);
- if (spec == null) {
- throw new RuntimeException("Could not generate DH keypair");
- }
-
- publicValue = spec.getY();
- modulus = spec.getP();
- base = spec.getG();
- } catch (GeneralSecurityException e) {
- throw new RuntimeException("Could not generate DH keypair", e);
- }
+ this(keyLength,
+ ParametersHolder.definedParams.get(keyLength), random);
}
-
/**
* Generate a Diffie-Hellman keypair using the specified parameters.
*
@@ -119,12 +111,24 @@
* @param base the Diffie-Hellman base G
*/
DHCrypt(BigInteger modulus, BigInteger base, SecureRandom random) {
- this.modulus = modulus;
- this.base = base;
+ this(modulus.bitLength(),
+ new DHParameterSpec(modulus, base), random);
+ }
+
+ /**
+ * Generate a Diffie-Hellman keypair using the specified size and
+ * parameters.
+ */
+ private DHCrypt(int keyLength,
+ DHParameterSpec params, SecureRandom random) {
+
try {
KeyPairGenerator kpg = JsseJce.getKeyPairGenerator("DiffieHellman");
- DHParameterSpec params = new DHParameterSpec(modulus, base);
+ if (params != null) {
kpg.initialize(params, random);
+ } else {
+ kpg.initialize(keyLength, random);
+ }
DHPublicKeySpec spec = generateDHPublicKeySpec(kpg);
if (spec == null) {
@@ -132,12 +136,13 @@
}
publicValue = spec.getY();
+ modulus = spec.getP();
+ base = spec.getG();
} catch (GeneralSecurityException e) {
throw new RuntimeException("Could not generate DH keypair", e);
}
}
-
static DHPublicKeySpec getDHPublicKeySpec(PublicKey key) {
if (key instanceof DHPublicKey) {
DHPublicKey dhKey = (DHPublicKey)key;
@@ -216,6 +221,28 @@
}
}
+ // Check constraints of the specified DH public key.
+ void checkConstraints(AlgorithmConstraints constraints,
+ BigInteger peerPublicValue) throws SSLHandshakeException {
+
+ try {
+ KeyFactory kf = JsseJce.getKeyFactory("DiffieHellman");
+ DHPublicKeySpec spec =
+ new DHPublicKeySpec(peerPublicValue, modulus, base);
+ DHPublicKey publicKey = (DHPublicKey)kf.generatePublic(spec);
+
+ // check constraints of DHPublicKey
+ if (!constraints.permits(
+ EnumSet.of(CryptoPrimitive.KEY_AGREEMENT), publicKey)) {
+ throw new SSLHandshakeException(
+ "DHPublicKey does not comply to algorithm constraints");
+ }
+ } catch (GeneralSecurityException gse) {
+ throw (SSLHandshakeException) new SSLHandshakeException(
+ "Could not generate DHPublicKey").initCause(gse);
+ }
+ }
+
// Generate and validate DHPublicKeySpec
private DHPublicKeySpec generateDHPublicKeySpec(KeyPairGenerator kpg)
throws GeneralSecurityException {
@@ -245,4 +272,141 @@
return null;
}
+
+ // lazy initialization holder class idiom for static default parameters
+ //
+ // See Effective Java Second Edition: Item 71.
+ private static class ParametersHolder {
+ private final static boolean debugIsOn =
+ (Debug.getInstance("ssl") != null) && Debug.isOn("sslctx");
+
+ //
+ // Default DH ephemeral parameters
+ //
+ private static final BigInteger g2 = BigInteger.valueOf(2);
+
+ private static final BigInteger p512 = new BigInteger( // generated
+ "D87780E15FF50B4ABBE89870188B049406B5BEA98AB23A02" +
+ "41D88EA75B7755E669C08093D3F0CA7FC3A5A25CF067DCB9" +
+ "A43DD89D1D90921C6328884461E0B6D3", 16);
+ private static final BigInteger p768 = new BigInteger( // RFC 2409
+ "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" +
+ "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" +
+ "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" +
+ "E485B576625E7EC6F44C42E9A63A3620FFFFFFFFFFFFFFFF", 16);
+
+ private static final BigInteger p1024 = new BigInteger( // RFC 2409
+ "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" +
+ "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" +
+ "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" +
+ "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" +
+ "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381" +
+ "FFFFFFFFFFFFFFFF", 16);
+ private static final BigInteger p2048 = new BigInteger( // TLS FEDHE
+ "FFFFFFFFFFFFFFFFADF85458A2BB4A9AAFDC5620273D3CF1" +
+ "D8B9C583CE2D3695A9E13641146433FBCC939DCE249B3EF9" +
+ "7D2FE363630C75D8F681B202AEC4617AD3DF1ED5D5FD6561" +
+ "2433F51F5F066ED0856365553DED1AF3B557135E7F57C935" +
+ "984F0C70E0E68B77E2A689DAF3EFE8721DF158A136ADE735" +
+ "30ACCA4F483A797ABC0AB182B324FB61D108A94BB2C8E3FB" +
+ "B96ADAB760D7F4681D4F42A3DE394DF4AE56EDE76372BB19" +
+ "0B07A7C8EE0A6D709E02FCE1CDF7E2ECC03404CD28342F61" +
+ "9172FE9CE98583FF8E4F1232EEF28183C3FE3B1B4C6FAD73" +
+ "3BB5FCBC2EC22005C58EF1837D1683B2C6F34A26C1B2EFFA" +
+ "886B423861285C97FFFFFFFFFFFFFFFF", 16);
+
+ private static final BigInteger[] supportedPrimes = {
+ p512, p768, p1024, p2048};
+
+ // a measure of the uncertainty that prime modulus p is not a prime
+ //
+ // see BigInteger.isProbablePrime(int certainty)
+ private final static int PRIME_CERTAINTY = 120;
+
+ // the known security property, jdk.tls.server.defaultDHEParameters
+ private final static String PROPERTY_NAME =
+ "jdk.tls.server.defaultDHEParameters";
+
+ private static final Pattern spacesPattern = Pattern.compile("\\s+");
+
+ private final static Pattern syntaxPattern = Pattern.compile(
+ "(\\{[0-9A-Fa-f]+,[0-9A-Fa-f]+\\})" +
+ "(,\\{[0-9A-Fa-f]+,[0-9A-Fa-f]+\\})*");
+
+ private static final Pattern paramsPattern = Pattern.compile(
+ "\\{([0-9A-Fa-f]+),([0-9A-Fa-f]+)\\}");
+
+ // cache of predefined default DH ephemeral parameters
+ private final static Map<Integer,DHParameterSpec> definedParams;
+
+ static {
+ String property = AccessController.doPrivileged(
+ new PrivilegedAction<String>() {
+ public String run() {
+ return Security.getProperty(PROPERTY_NAME);
+ }
+ });
+
+ if (property != null && !property.isEmpty()) {
+ // remove double quote marks from beginning/end of the property
+ if (property.length() >= 2 && property.charAt(0) == '"' &&
+ property.charAt(property.length() - 1) == '"') {
+ property = property.substring(1, property.length() - 1);
+ }
+
+ property = property.trim();
+ }
+
+ if (property != null && !property.isEmpty()) {
+ Matcher spacesMatcher = spacesPattern.matcher(property);
+ property = spacesMatcher.replaceAll("");
+
+ if (debugIsOn) {
+ System.out.println("The Security Property " +
+ PROPERTY_NAME + ": " + property);
+ }
+ }
+
+ Map<Integer,DHParameterSpec> defaultParams = new HashMap<>();
+ if (property != null && !property.isEmpty()) {
+ Matcher syntaxMatcher = syntaxPattern.matcher(property);
+ if (syntaxMatcher.matches()) {
+ Matcher paramsFinder = paramsPattern.matcher(property);
+ while(paramsFinder.find()) {
+ String primeModulus = paramsFinder.group(1);
+ BigInteger p = new BigInteger(primeModulus, 16);
+ if (!p.isProbablePrime(PRIME_CERTAINTY)) {
+ if (debugIsOn) {
+ System.out.println(
+ "Prime modulus p in Security Property, " +
+ PROPERTY_NAME + ", is not a prime: " +
+ primeModulus);
+ }
+
+ continue;
+ }
+
+ String baseGenerator = paramsFinder.group(2);
+ BigInteger g = new BigInteger(baseGenerator, 16);
+
+ DHParameterSpec spec = new DHParameterSpec(p, g);
+ int primeLen = p.bitLength();
+ defaultParams.put(primeLen, spec);
+ }
+ } else if (debugIsOn) {
+ System.out.println("Invalid Security Property, " +
+ PROPERTY_NAME + ", definition");
+ }
+ }
+
+ for (BigInteger p : supportedPrimes) {
+ int primeLen = p.bitLength();
+ defaultParams.putIfAbsent(primeLen, new DHParameterSpec(p, g2));
+ }
+
+ definedParams =
+ Collections.<Integer,DHParameterSpec>unmodifiableMap(
+ defaultParams);
+ }
+ }
}
--- ./jdk/src/share/classes/sun/security/ssl/ECDHCrypt.java 2015-12-12 10:53:29.800848000 -0800
+++ ./jdk/src/share/classes/sun/security/ssl/ECDHCrypt.java 2015-07-18 13:32:34.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2015, 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
@@ -29,6 +29,7 @@
import java.security.interfaces.ECPublicKey;
import java.security.spec.*;
+import java.util.EnumSet;
import javax.crypto.SecretKey;
import javax.crypto.KeyAgreement;
import javax.net.ssl.SSLHandshakeException;
@@ -88,8 +89,11 @@
return publicKey;
}
- // called by ClientHandshaker with either the server's static or ephemeral public key
- SecretKey getAgreedSecret(PublicKey peerPublicKey) throws SSLHandshakeException {
+ // called by ClientHandshaker with either the server's static or
+ // ephemeral public key
+ SecretKey getAgreedSecret(
+ PublicKey peerPublicKey) throws SSLHandshakeException {
+
try {
KeyAgreement ka = JsseJce.getKeyAgreement("ECDH");
ka.init(privateKey);
@@ -102,10 +106,13 @@
}
// called by ServerHandshaker
- SecretKey getAgreedSecret(byte[] encodedPoint) throws SSLHandshakeException {
+ SecretKey getAgreedSecret(
+ byte[] encodedPoint) throws SSLHandshakeException {
+
try {
ECParameterSpec params = publicKey.getParams();
- ECPoint point = JsseJce.decodePoint(encodedPoint, params.getCurve());
+ ECPoint point =
+ JsseJce.decodePoint(encodedPoint, params.getCurve());
KeyFactory kf = JsseJce.getKeyFactory("EC");
ECPublicKeySpec spec = new ECPublicKeySpec(point, params);
PublicKey peerPublicKey = kf.generatePublic(spec);
@@ -116,4 +123,30 @@
}
}
+ // Check constraints of the specified EC public key.
+ void checkConstraints(AlgorithmConstraints constraints,
+ byte[] encodedPoint) throws SSLHandshakeException {
+
+ try {
+
+ ECParameterSpec params = publicKey.getParams();
+ ECPoint point =
+ JsseJce.decodePoint(encodedPoint, params.getCurve());
+ ECPublicKeySpec spec = new ECPublicKeySpec(point, params);
+
+ KeyFactory kf = JsseJce.getKeyFactory("EC");
+ ECPublicKey publicKey = (ECPublicKey)kf.generatePublic(spec);
+
+ // check constraints of ECPublicKey
+ if (!constraints.permits(
+ EnumSet.of(CryptoPrimitive.KEY_AGREEMENT), publicKey)) {
+ throw new SSLHandshakeException(
+ "ECPublicKey does not comply to algorithm constraints");
+ }
+ } catch (GeneralSecurityException | java.io.IOException e) {
+ throw (SSLHandshakeException) new SSLHandshakeException(
+ "Could not generate ECPublicKey").initCause(e);
+ }
+ }
+
}
--- ./jdk/src/share/classes/sun/security/ssl/HandshakeMessage.java 2015-12-12 10:53:29.802253000 -0800
+++ ./jdk/src/share/classes/sun/security/ssl/HandshakeMessage.java 2015-08-29 06:20:51.000000000 -0700
@@ -1912,7 +1912,7 @@
*/
boolean verify(HandshakeHash handshakeHash, int sender, SecretKey master) {
byte[] myFinished = getFinished(handshakeHash, sender, master);
- return Arrays.equals(myFinished, verifyData);
+ return MessageDigest.isEqual(myFinished, verifyData);
}
/*
--- ./jdk/src/share/classes/sun/security/ssl/Handshaker.java 2015-12-12 10:53:29.803313000 -0800
+++ ./jdk/src/share/classes/sun/security/ssl/Handshaker.java 2015-07-18 13:32:34.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2015, 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
@@ -86,7 +86,7 @@
String identificationProtocol;
// The cryptographic algorithm constraints
- private AlgorithmConstraints algorithmConstraints = null;
+ AlgorithmConstraints algorithmConstraints = null;
// Local supported signature and algorithms
Collection<SignatureAndHashAlgorithm> localSupportedSignAlgs;
--- ./jdk/src/share/classes/sun/security/ssl/SSLAlgorithmConstraints.java 2015-12-12 10:53:29.803803000 -0800
+++ ./jdk/src/share/classes/sun/security/ssl/SSLAlgorithmConstraints.java 2015-07-18 13:32:34.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2015, 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
@@ -34,9 +34,9 @@
import java.security.Key;
import java.util.Set;
-import java.util.HashSet;
import sun.security.util.DisabledAlgorithmConstraints;
+import static sun.security.util.DisabledAlgorithmConstraints.*;
import sun.security.ssl.CipherSuite.*;
/**
@@ -46,10 +46,15 @@
* for the syntax of the disabled algorithm string.
*/
final class SSLAlgorithmConstraints implements AlgorithmConstraints {
+
private final static AlgorithmConstraints tlsDisabledAlgConstraints =
- new TLSDisabledAlgConstraints();
+ new DisabledAlgorithmConstraints(PROPERTY_TLS_DISABLED_ALGS,
+ new SSLAlgorithmDecomposer());
+
private final static AlgorithmConstraints x509DisabledAlgConstraints =
- new X509DisabledAlgConstraints();
+ new DisabledAlgorithmConstraints(PROPERTY_CERTPATH_DISABLED_ALGS,
+ new SSLAlgorithmDecomposer(true));
+
private AlgorithmConstraints userAlgConstraints = null;
private AlgorithmConstraints peerAlgConstraints = null;
@@ -267,217 +272,4 @@
}
}
- static private class BasicDisabledAlgConstraints
- extends DisabledAlgorithmConstraints {
- BasicDisabledAlgConstraints(String propertyName) {
- super(propertyName);
- }
-
- protected Set<String> decomposes(KeyExchange keyExchange,
- boolean forCertPathOnly) {
- Set<String> components = new HashSet<>();
- switch (keyExchange) {
- case K_NULL:
- if (!forCertPathOnly) {
- components.add("NULL");
- }
- break;
- case K_RSA:
- components.add("RSA");
- break;
- case K_RSA_EXPORT:
- components.add("RSA");
- components.add("RSA_EXPORT");
- break;
- case K_DH_RSA:
- components.add("RSA");
- components.add("DH");
- components.add("DiffieHellman");
- components.add("DH_RSA");
- break;
- case K_DH_DSS:
- components.add("DSA");
- components.add("DSS");
- components.add("DH");
- components.add("DiffieHellman");
- components.add("DH_DSS");
- break;
- case K_DHE_DSS:
- components.add("DSA");
- components.add("DSS");
- components.add("DH");
- components.add("DHE");
- components.add("DiffieHellman");
- components.add("DHE_DSS");
- break;
- case K_DHE_RSA:
- components.add("RSA");
- components.add("DH");
- components.add("DHE");
- components.add("DiffieHellman");
- components.add("DHE_RSA");
- break;
- case K_DH_ANON:
- if (!forCertPathOnly) {
- components.add("ANON");
- components.add("DH");
- components.add("DiffieHellman");
- components.add("DH_ANON");
- }
- break;
- case K_ECDH_ECDSA:
- components.add("ECDH");
- components.add("ECDSA");
- components.add("ECDH_ECDSA");
- break;
- case K_ECDH_RSA:
- components.add("ECDH");
- components.add("RSA");
- components.add("ECDH_RSA");
- break;
- case K_ECDHE_ECDSA:
- components.add("ECDHE");
- components.add("ECDSA");
- components.add("ECDHE_ECDSA");
- break;
- case K_ECDHE_RSA:
- components.add("ECDHE");
- components.add("RSA");
- components.add("ECDHE_RSA");
- break;
- case K_ECDH_ANON:
- if (!forCertPathOnly) {
- components.add("ECDH");
- components.add("ANON");
- components.add("ECDH_ANON");
- }
- break;
- case K_KRB5:
- if (!forCertPathOnly) {
- components.add("KRB5");
- }
- break;
- case K_KRB5_EXPORT:
- if (!forCertPathOnly) {
- components.add("KRB5_EXPORT");
- }
- break;
- default:
- // ignore
- }
-
- return components;
- }
-
- protected Set<String> decomposes(BulkCipher bulkCipher) {
- Set<String> components = new HashSet<>();
-
- if (bulkCipher.transformation != null) {
- components.addAll(super.decomposes(bulkCipher.transformation));
- }
-
- return components;
- }
-
- protected Set<String> decomposes(MacAlg macAlg) {
- Set<String> components = new HashSet<>();
-
- if (macAlg == CipherSuite.M_MD5) {
- components.add("MD5");
- components.add("HmacMD5");
- } else if (macAlg == CipherSuite.M_SHA) {
- components.add("SHA1");
- components.add("SHA-1");
- components.add("HmacSHA1");
- } else if (macAlg == CipherSuite.M_SHA256) {
- components.add("SHA256");
- components.add("SHA-256");
- components.add("HmacSHA256");
- } else if (macAlg == CipherSuite.M_SHA384) {
- components.add("SHA384");
- components.add("SHA-384");
- components.add("HmacSHA384");
- }
-
- return components;
- }
- }
-
- static private class TLSDisabledAlgConstraints
- extends BasicDisabledAlgConstraints {
-
- TLSDisabledAlgConstraints() {
- super(DisabledAlgorithmConstraints.PROPERTY_TLS_DISABLED_ALGS);
- }
-
- @Override
- protected Set<String> decomposes(String algorithm) {
- if (algorithm.startsWith("SSL_") || algorithm.startsWith("TLS_")) {
- CipherSuite cipherSuite = null;
- try {
- cipherSuite = CipherSuite.valueOf(algorithm);
- } catch (IllegalArgumentException iae) {
- // ignore: unknown or unsupported ciphersuite
- }
-
- if (cipherSuite != null) {
- Set<String> components = new HashSet<>();
-
- if(cipherSuite.keyExchange != null) {
- components.addAll(
- decomposes(cipherSuite.keyExchange, false));
- }
-
- if (cipherSuite.cipher != null) {
- components.addAll(decomposes(cipherSuite.cipher));
- }
-
- if (cipherSuite.macAlg != null) {
- components.addAll(decomposes(cipherSuite.macAlg));
- }
-
- return components;
- }
- }
-
- return super.decomposes(algorithm);
- }
- }
-
- static private class X509DisabledAlgConstraints
- extends BasicDisabledAlgConstraints {
-
- X509DisabledAlgConstraints() {
- super(DisabledAlgorithmConstraints.PROPERTY_CERTPATH_DISABLED_ALGS);
- }
-
- @Override
- protected Set<String> decomposes(String algorithm) {
- if (algorithm.startsWith("SSL_") || algorithm.startsWith("TLS_")) {
- CipherSuite cipherSuite = null;
- try {
- cipherSuite = CipherSuite.valueOf(algorithm);
- } catch (IllegalArgumentException iae) {
- // ignore: unknown or unsupported ciphersuite
- }
-
- if (cipherSuite != null) {
- Set<String> components = new HashSet<>();
-
- if(cipherSuite.keyExchange != null) {
- components.addAll(
- decomposes(cipherSuite.keyExchange, true));
- }
-
- // Certification path algorithm constraints do not apply
- // to cipherSuite.cipher and cipherSuite.macAlg.
-
- return components;
- }
- }
-
- return super.decomposes(algorithm);
- }
- }
}
-
--- ./jdk/src/share/classes/sun/security/ssl/SSLAlgorithmDecomposer.java 1969-12-31 16:00:00.000000000 -0800
+++ ./jdk/src/share/classes/sun/security/ssl/SSLAlgorithmDecomposer.java 2015-07-18 13:32:34.000000000 -0700
@@ -0,0 +1,251 @@
+/*
+ * Copyright (c) 2015, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package sun.security.ssl;
+
+import java.util.HashSet;
+import java.util.Set;
+import sun.security.util.AlgorithmDecomposer;
+import static sun.security.ssl.CipherSuite.*;
+import static sun.security.ssl.CipherSuite.KeyExchange.*;
+
+/**
+ * The class decomposes standard SSL/TLS cipher suites into sub-elements.
+ */
+class SSLAlgorithmDecomposer extends AlgorithmDecomposer {
+
+ // indicates that only certification path algorithms need to be used
+ private final boolean onlyX509;
+
+ SSLAlgorithmDecomposer(boolean onlyX509) {
+ this.onlyX509 = onlyX509;
+ }
+
+ SSLAlgorithmDecomposer() {
+ this(false);
+ }
+
+ private Set<String> decomposes(CipherSuite.KeyExchange keyExchange) {
+ Set<String> components = new HashSet<>();
+ switch (keyExchange) {
+ case K_NULL:
+ if (!onlyX509) {
+ components.add("K_NULL");
+ }
+ break;
+ case K_RSA:
+ components.add("RSA");
+ break;
+ case K_RSA_EXPORT:
+ components.add("RSA");
+ components.add("RSA_EXPORT");
+ break;
+ case K_DH_RSA:
+ components.add("RSA");
+ components.add("DH");
+ components.add("DiffieHellman");
+ components.add("DH_RSA");
+ break;
+ case K_DH_DSS:
+ components.add("DSA");
+ components.add("DSS");
+ components.add("DH");
+ components.add("DiffieHellman");
+ components.add("DH_DSS");
+ break;
+ case K_DHE_DSS:
+ components.add("DSA");
+ components.add("DSS");
+ components.add("DH");
+ components.add("DHE");
+ components.add("DiffieHellman");
+ components.add("DHE_DSS");
+ break;
+ case K_DHE_RSA:
+ components.add("RSA");
+ components.add("DH");
+ components.add("DHE");
+ components.add("DiffieHellman");
+ components.add("DHE_RSA");
+ break;
+ case K_DH_ANON:
+ if (!onlyX509) {
+ components.add("ANON");
+ components.add("DH");
+ components.add("DiffieHellman");
+ components.add("DH_ANON");
+ }
+ break;
+ case K_ECDH_ECDSA:
+ components.add("ECDH");
+ components.add("ECDSA");
+ components.add("ECDH_ECDSA");
+ break;
+ case K_ECDH_RSA:
+ components.add("ECDH");
+ components.add("RSA");
+ components.add("ECDH_RSA");
+ break;
+ case K_ECDHE_ECDSA:
+ components.add("ECDHE");
+ components.add("ECDSA");
+ components.add("ECDHE_ECDSA");
+ break;
+ case K_ECDHE_RSA:
+ components.add("ECDHE");
+ components.add("RSA");
+ components.add("ECDHE_RSA");
+ break;
+ case K_ECDH_ANON:
+ if (!onlyX509) {
+ components.add("ECDH");
+ components.add("ANON");
+ components.add("ECDH_ANON");
+ }
+ break;
+ case K_KRB5:
+ if (!onlyX509) {
+ components.add("KRB5");
+ }
+ break;
+ case K_KRB5_EXPORT:
+ if (!onlyX509) {
+ components.add("KRB5_EXPORT");
+ }
+ break;
+ default:
+ // ignore
+ }
+
+ return components;
+ }
+
+ private Set<String> decomposes(CipherSuite.BulkCipher bulkCipher) {
+ Set<String> components = new HashSet<>();
+
+ if (bulkCipher.transformation != null) {
+ components.addAll(super.decompose(bulkCipher.transformation));
+ }
+
+ if (bulkCipher == B_NULL) {
+ components.add("C_NULL");
+ } else if (bulkCipher == B_RC2_40) {
+ components.add("RC2_CBC_40");
+ } else if (bulkCipher == B_RC4_40) {
+ components.add("RC4_40");
+ } else if (bulkCipher == B_RC4_128) {
+ components.add("RC4_128");
+ } else if (bulkCipher == B_DES_40) {
+ components.add("DES40_CBC");
+ components.add("DES_CBC_40");
+ } else if (bulkCipher == B_DES) {
+ components.add("DES_CBC");
+ } else if (bulkCipher == B_3DES) {
+ components.add("3DES_EDE_CBC");
+ } else if (bulkCipher == B_AES_128) {
+ components.add("AES_128_CBC");
+ } else if (bulkCipher == B_AES_256) {
+ components.add("AES_256_CBC");
+ } else if (bulkCipher == B_AES_128_GCM) {
+ components.add("AES_128_GCM");
+ } else if (bulkCipher == B_AES_256_GCM) {
+ components.add("AES_256_GCM");
+ }
+
+ return components;
+ }
+
+ private Set<String> decomposes(CipherSuite.MacAlg macAlg,
+ BulkCipher cipher) {
+ Set<String> components = new HashSet<>();
+
+ if (macAlg == M_NULL
+ && cipher.cipherType != CipherType.AEAD_CIPHER) {
+ components.add("M_NULL");
+ } else if (macAlg == M_MD5) {
+ components.add("MD5");
+ components.add("HmacMD5");
+ } else if (macAlg == M_SHA) {
+ components.add("SHA1");
+ components.add("SHA-1");
+ components.add("HmacSHA1");
+ } else if (macAlg == M_SHA256) {
+ components.add("SHA256");
+ components.add("SHA-256");
+ components.add("HmacSHA256");
+ } else if (macAlg == M_SHA384) {
+ components.add("SHA384");
+ components.add("SHA-384");
+ components.add("HmacSHA384");
+ }
+
+ return components;
+ }
+
+ private Set<String> decompose(KeyExchange keyExchange, BulkCipher cipher,
+ MacAlg macAlg) {
+ Set<String> components = new HashSet<>();
+
+ if (keyExchange != null) {
+ components.addAll(decomposes(keyExchange));
+ }
+
+ if (onlyX509) {
+ // Certification path algorithm constraints do not apply
+ // to cipher and macAlg.
+ return components;
+ }
+
+ if (cipher != null) {
+ components.addAll(decomposes(cipher));
+ }
+
+ if (macAlg != null) {
+ components.addAll(decomposes(macAlg, cipher));
+ }
+
+ return components;
+ }
+
+ @Override
+ public Set<String> decompose(String algorithm) {
+ if (algorithm.startsWith("SSL_") || algorithm.startsWith("TLS_")) {
+ CipherSuite cipherSuite = null;
+ try {
+ cipherSuite = CipherSuite.valueOf(algorithm);
+ } catch (IllegalArgumentException iae) {
+ // ignore: unknown or unsupported ciphersuite
+ }
+
+ if (cipherSuite != null) {
+ return decompose(cipherSuite.keyExchange, cipherSuite.cipher,
+ cipherSuite.macAlg);
+ }
+ }
+
+ return super.decompose(algorithm);
+ }
+
+}
--- ./jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java 2015-12-12 10:53:29.805124000 -0800
+++ ./jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java 2015-07-18 13:32:30.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2015, 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
@@ -40,6 +40,9 @@
import javax.crypto.BadPaddingException;
import javax.net.ssl.*;
+import sun.misc.JavaNetAccess;
+import sun.misc.SharedSecrets;
+
/**
* Implementation of an SSL socket. This is a normal connection type
* socket, implementing SSL over some lower level socket, such as TCP.
@@ -389,6 +392,15 @@
*/
private boolean preferLocalCipherSuites = false;
+ /*
+ * Is the local name service trustworthy?
+ *
+ * If the local name service is not trustworthy, reverse host name
+ * resolution should not be performed for endpoint identification.
+ */
+ static final boolean trustNameService =
+ Debug.getBooleanProperty("jdk.tls.trustNameService", false);
+
//
// CONSTRUCTORS AND INITIALIZATION CODE
//
@@ -2149,11 +2161,41 @@
synchronized String getHost() {
// Note that the host may be null or empty for localhost.
if (host == null || host.length() == 0) {
+ if (!trustNameService) {
+ // If the local name service is not trustworthy, reverse host
+ // name resolution should not be performed for endpoint
+ // identification. Use the application original specified
+ // hostname or IP address instead.
+ host = getOriginalHostname(getInetAddress());
+ } else {
host = getInetAddress().getHostName();
}
+ }
+
return host;
}
+ /*
+ * Get the original application specified hostname.
+ */
+ private static String getOriginalHostname(InetAddress inetAddress) {
+ /*
+ * Get the original hostname via sun.misc.SharedSecrets.
+ */
+ JavaNetAccess jna = SharedSecrets.getJavaNetAccess();
+ String originalHostname = jna.getOriginalHostName(inetAddress);
+
+ /*
+ * If no application specified hostname, use the IP address.
+ */
+ if (originalHostname == null || originalHostname.length() == 0) {
+ originalHostname = inetAddress.getHostAddress();
+ }
+
+ return originalHostname;
+ }
+
+
// ONLY used by HttpsClient to setup the URI specified hostname
//
// Please NOTE that this method MUST be called before calling to
--- ./jdk/src/share/classes/sun/security/ssl/ServerHandshaker.java 2015-12-12 10:53:29.806041000 -0800
+++ ./jdk/src/share/classes/sun/security/ssl/ServerHandshaker.java 2015-07-18 13:32:30.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2015, 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
@@ -32,6 +32,7 @@
import java.security.cert.*;
import java.security.interfaces.*;
import java.security.spec.ECParameterSpec;
+import java.math.BigInteger;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
@@ -41,6 +42,7 @@
import javax.security.auth.Subject;
import sun.security.util.KeyUtil;
+import sun.security.util.LegacyAlgorithmConstraints;
import sun.security.action.GetPropertyAction;
import sun.security.ssl.HandshakeMessage.*;
import sun.security.ssl.CipherSuite.*;
@@ -106,6 +108,12 @@
// The customized ephemeral DH key size for non-exportable cipher suites.
private static final int customizedDHKeySize;
+ // legacy algorithm constraints
+ private static final AlgorithmConstraints legacyAlgorithmConstraints =
+ new LegacyAlgorithmConstraints(
+ LegacyAlgorithmConstraints.PROPERTY_TLS_LEGACY_ALGS,
+ new SSLAlgorithmDecomposer());
+
static {
String property = AccessController.doPrivileged(
new GetPropertyAction("jdk.tls.ephemeralDHKeySize"));
@@ -406,7 +414,7 @@
}
// verify the client_verify_data value
- if (!Arrays.equals(clientVerifyData,
+ if (!MessageDigest.isEqual(clientVerifyData,
clientHelloRI.getRenegotiatedConnection())) {
fatalSE(Alerts.alert_handshake_failure,
"Incorrect verify data in ClientHello " +
@@ -995,6 +1003,7 @@
proposed = getActiveCipherSuites();
}
+ List<CipherSuite> legacySuites = new ArrayList<>();
for (CipherSuite suite : prefered.collection()) {
if (isNegotiable(proposed, suite) == false) {
continue;
@@ -1006,11 +1015,24 @@
continue;
}
}
+
+ if (!legacyAlgorithmConstraints.permits(null, suite.name, null)) {
+ legacySuites.add(suite);
+ continue;
+ }
+
if (trySetCipherSuite(suite) == false) {
continue;
}
return;
}
+
+ for (CipherSuite suite : legacySuites) {
+ if (trySetCipherSuite(suite)) {
+ return;
+ }
+ }
+
fatalSE(Alerts.alert_handshake_failure, "no cipher suites in common");
}
@@ -1543,7 +1565,13 @@
if (debug != null && Debug.isOn("handshake")) {
mesg.print(System.out);
}
- return dh.getAgreedSecret(mesg.getClientPublicKey(), false);
+
+ BigInteger publicKeyValue = mesg.getClientPublicKey();
+
+ // check algorithm constraints
+ dh.checkConstraints(algorithmConstraints, publicKeyValue);
+
+ return dh.getAgreedSecret(publicKeyValue, false);
}
private SecretKey clientKeyExchange(ECDHClientKeyExchange mesg)
@@ -1552,7 +1580,13 @@
if (debug != null && Debug.isOn("handshake")) {
mesg.print(System.out);
}
- return ecdh.getAgreedSecret(mesg.getEncodedPoint());
+
+ byte[] publicPoint = mesg.getEncodedPoint();
+
+ // check algorithm constraints
+ ecdh.checkConstraints(algorithmConstraints, publicPoint);
+
+ return ecdh.getAgreedSecret(publicPoint);
}
/*
--- ./jdk/src/share/classes/sun/security/tools/keytool/Resources_sv.java 2015-12-12 10:53:27.550443000 -0800
+++ ./jdk/src/share/classes/sun/security/tools/keytool/Resources_sv.java 2015-10-24 06:21:17.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2015, 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
@@ -175,7 +175,7 @@
{"validity.number.of.days",
"antal dagar f\u00F6r giltighet"}, //-validity
{"Serial.ID.of.cert.to.revoke",
- "Seriellt ID f\u00F6r certifikat som ska \u00E5terkallas"}, //-id
+ "Seriellt id f\u00F6r certifikat som ska \u00E5terkallas"}, //-id
// keytool: Running part
{"keytool.error.", "nyckelverktygsfel: "},
{"Illegal.option.", "Otill\u00E5tet alternativ: "},
@@ -373,7 +373,7 @@
"***************** WARNING WARNING WARNING *****************"},
{"Signer.d.", "Signerare #%d:"},
{"Timestamp.", "Tidsst\u00E4mpel:"},
- {"Signature.", "Underskrift:"},
+ {"Signature.", "Signatur:"},
{"CRLs.", "CRL:er:"},
{"Certificate.owner.", "Certifikat\u00E4gare: "},
{"Not.a.signed.jar.file", "Ingen signerad jar-fil"},
--- ./jdk/src/share/classes/sun/security/util/AbstractAlgorithmConstraints.java 1969-12-31 16:00:00.000000000 -0800
+++ ./jdk/src/share/classes/sun/security/util/AbstractAlgorithmConstraints.java 2015-10-24 06:21:17.000000000 -0700
@@ -0,0 +1,118 @@
+/*
+ * Copyright (c) 2015, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package sun.security.util;
+
+import java.security.AccessController;
+import java.security.AlgorithmConstraints;
+import java.security.PrivilegedAction;
+import java.security.Security;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * The class contains common functionality for algorithm constraints classes.
+ */
+public abstract class AbstractAlgorithmConstraints
+ implements AlgorithmConstraints {
+
+ protected final AlgorithmDecomposer decomposer;
+
+ protected AbstractAlgorithmConstraints(AlgorithmDecomposer decomposer) {
+ this.decomposer = decomposer;
+ }
+
+ // Get algorithm constraints from the specified security property.
+ private static void loadAlgorithmsMap(Map<String, String[]> algorithmsMap,
+ String propertyName) {
+ String property = AccessController.doPrivileged(
+ (PrivilegedAction<String>) () -> Security.getProperty(
+ propertyName));
+
+ String[] algorithmsInProperty = null;
+ if (property != null && !property.isEmpty()) {
+ // remove double quote marks from beginning/end of the property
+ if (property.length() >= 2 && property.charAt(0) == '"' &&
+ property.charAt(property.length() - 1) == '"') {
+ property = property.substring(1, property.length() - 1);
+ }
+ algorithmsInProperty = property.split(",");
+ for (int i = 0; i < algorithmsInProperty.length; i++) {
+ algorithmsInProperty[i] = algorithmsInProperty[i].trim();
+ }
+ }
+
+ // map the disabled algorithms
+ if (algorithmsInProperty == null) {
+ algorithmsInProperty = new String[0];
+ }
+ algorithmsMap.put(propertyName, algorithmsInProperty);
+ }
+
+ static String[] getAlgorithms(Map<String, String[]> algorithmsMap,
+ String propertyName) {
+ synchronized (algorithmsMap) {
+ if (!algorithmsMap.containsKey(propertyName)) {
+ loadAlgorithmsMap(algorithmsMap, propertyName);
+ }
+
+ return algorithmsMap.get(propertyName);
+ }
+ }
+
+ static boolean checkAlgorithm(String[] algorithms, String algorithm,
+ AlgorithmDecomposer decomposer) {
+ if (algorithm == null || algorithm.length() == 0) {
+ throw new IllegalArgumentException("No algorithm name specified");
+ }
+
+ Set<String> elements = null;
+ for (String item : algorithms) {
+ if (item == null || item.isEmpty()) {
+ continue;
+ }
+
+ // check the full name
+ if (item.equalsIgnoreCase(algorithm)) {
+ return false;
+ }
+
+ // decompose the algorithm into sub-elements
+ if (elements == null) {
+ elements = decomposer.decompose(algorithm);
+ }
+
+ // check the items of the algorithm
+ for (String element : elements) {
+ if (item.equalsIgnoreCase(element)) {
+ return false;
+ }
+ }
+ }
+
+ return true;
+ }
+
+}
--- ./jdk/src/share/classes/sun/security/util/AlgorithmDecomposer.java 1969-12-31 16:00:00.000000000 -0800
+++ ./jdk/src/share/classes/sun/security/util/AlgorithmDecomposer.java 2015-07-18 13:32:30.000000000 -0700
@@ -0,0 +1,130 @@
+/*
+ * Copyright (c) 2015, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package sun.security.util;
+
+import java.util.HashSet;
+import java.util.Set;
+import java.util.regex.Pattern;
+
+/**
+ * The class decomposes standard algorithms into sub-elements.
+ */
+public class AlgorithmDecomposer {
+
+ private static final Pattern transPattern = Pattern.compile("/");
+ private static final Pattern pattern =
+ Pattern.compile("with|and", Pattern.CASE_INSENSITIVE);
+
+ /**
+ * Decompose the standard algorithm name into sub-elements.
+ * <p>
+ * For example, we need to decompose "SHA1WithRSA" into "SHA1" and "RSA"
+ * so that we can check the "SHA1" and "RSA" algorithm constraints
+ * separately.
+ * <p>
+ * Please override the method if need to support more name pattern.
+ */
+ public Set<String> decompose(String algorithm) {
+ if (algorithm == null || algorithm.length() == 0) {
+ return new HashSet<>();
+ }
+
+ // algorithm/mode/padding
+ String[] transTockens = transPattern.split(algorithm);
+
+ Set<String> elements = new HashSet<>();
+ for (String transTocken : transTockens) {
+ if (transTocken == null || transTocken.length() == 0) {
+ continue;
+ }
+
+ // PBEWith<digest>And<encryption>
+ // PBEWith<prf>And<encryption>
+ // OAEPWith<digest>And<mgf>Padding
+ // <digest>with<encryption>
+ // <digest>with<encryption>and<mgf>
+ String[] tokens = pattern.split(transTocken);
+
+ for (String token : tokens) {
+ if (token == null || token.length() == 0) {
+ continue;
+ }
+
+ elements.add(token);
+ }
+ }
+
+ // In Java standard algorithm name specification, for different
+ // purpose, the SHA-1 and SHA-2 algorithm names are different. For
+ // example, for MessageDigest, the standard name is "SHA-256", while
+ // for Signature, the digest algorithm component is "SHA256" for
+ // signature algorithm "SHA256withRSA". So we need to check both
+ // "SHA-256" and "SHA256" to make the right constraint checking.
+
+ // handle special name: SHA-1 and SHA1
+ if (elements.contains("SHA1") && !elements.contains("SHA-1")) {
+ elements.add("SHA-1");
+ }
+ if (elements.contains("SHA-1") && !elements.contains("SHA1")) {
+ elements.add("SHA1");
+ }
+
+ // handle special name: SHA-224 and SHA224
+ if (elements.contains("SHA224") && !elements.contains("SHA-224")) {
+ elements.add("SHA-224");
+ }
+ if (elements.contains("SHA-224") && !elements.contains("SHA224")) {
+ elements.add("SHA224");
+ }
+
+ // handle special name: SHA-256 and SHA256
+ if (elements.contains("SHA256") && !elements.contains("SHA-256")) {
+ elements.add("SHA-256");
+ }
+ if (elements.contains("SHA-256") && !elements.contains("SHA256")) {
+ elements.add("SHA256");
+ }
+
+ // handle special name: SHA-384 and SHA384
+ if (elements.contains("SHA384") && !elements.contains("SHA-384")) {
+ elements.add("SHA-384");
+ }
+ if (elements.contains("SHA-384") && !elements.contains("SHA384")) {
+ elements.add("SHA384");
+ }
+
+ // handle special name: SHA-512 and SHA512
+ if (elements.contains("SHA512") && !elements.contains("SHA-512")) {
+ elements.add("SHA-512");
+ }
+ if (elements.contains("SHA-512") && !elements.contains("SHA512")) {
+ elements.add("SHA512");
+ }
+
+ return elements;
+ }
+
+}
--- ./jdk/src/share/classes/sun/security/util/DisabledAlgorithmConstraints.java 2015-12-12 10:53:29.809334000 -0800
+++ ./jdk/src/share/classes/sun/security/util/DisabledAlgorithmConstraints.java 2015-07-18 13:32:30.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2015, 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
@@ -25,15 +25,9 @@
package sun.security.util;
-import java.security.AlgorithmConstraints;
import java.security.CryptoPrimitive;
import java.security.AlgorithmParameters;
-
import java.security.Key;
-import java.security.Security;
-import java.security.PrivilegedAction;
-import java.security.AccessController;
-
import java.util.Locale;
import java.util.Set;
import java.util.Collections;
@@ -49,7 +43,7 @@
* See the "jdk.certpath.disabledAlgorithms" specification in java.security
* for the syntax of the disabled algorithm string.
*/
-public class DisabledAlgorithmConstraints implements AlgorithmConstraints {
+public class DisabledAlgorithmConstraints extends AbstractAlgorithmConstraints {
// the known security property, jdk.certpath.disabledAlgorithms
public final static String PROPERTY_CERTPATH_DISABLED_ALGS =
@@ -64,8 +58,8 @@
private final static Map<String, KeySizeConstraints> keySizeConstraintsMap =
new HashMap<>();
- private String[] disabledAlgorithms;
- private KeySizeConstraints keySizeConstraints;
+ private final String[] disabledAlgorithms;
+ private final KeySizeConstraints keySizeConstraints;
/**
* Initialize algorithm constraints with the specified security property.
@@ -74,56 +68,27 @@
* algorithm constraints
*/
public DisabledAlgorithmConstraints(String propertyName) {
- // Both disabledAlgorithmsMap and keySizeConstraintsMap are
- // synchronized with the lock of disabledAlgorithmsMap.
- synchronized (disabledAlgorithmsMap) {
- if(!disabledAlgorithmsMap.containsKey(propertyName)) {
- loadDisabledAlgorithmsMap(propertyName);
+ this(propertyName, new AlgorithmDecomposer());
}
- disabledAlgorithms = disabledAlgorithmsMap.get(propertyName);
- keySizeConstraints = keySizeConstraintsMap.get(propertyName);
- }
+ public DisabledAlgorithmConstraints(String propertyName,
+ AlgorithmDecomposer decomposer) {
+ super(decomposer);
+ disabledAlgorithms = getAlgorithms(disabledAlgorithmsMap, propertyName);
+ keySizeConstraints = getKeySizeConstraints(disabledAlgorithms,
+ propertyName);
}
@Override
final public boolean permits(Set<CryptoPrimitive> primitives,
String algorithm, AlgorithmParameters parameters) {
- if (algorithm == null || algorithm.length() == 0) {
- throw new IllegalArgumentException("No algorithm name specified");
- }
-
if (primitives == null || primitives.isEmpty()) {
throw new IllegalArgumentException(
"No cryptographic primitive specified");
}
- Set<String> elements = null;
- for (String disabled : disabledAlgorithms) {
- if (disabled == null || disabled.isEmpty()) {
- continue;
- }
-
- // check the full name
- if (disabled.equalsIgnoreCase(algorithm)) {
- return false;
- }
-
- // decompose the algorithm into sub-elements
- if (elements == null) {
- elements = decomposes(algorithm);
- }
-
- // check the items of the algorithm
- for (String element : elements) {
- if (disabled.equalsIgnoreCase(element)) {
- return false;
- }
- }
- }
-
- return true;
+ return checkAlgorithm(disabledAlgorithms, algorithm, decomposer);
}
@Override
@@ -142,98 +107,6 @@
return checkConstraints(primitives, algorithm, key, parameters);
}
- /**
- * Decompose the standard algorithm name into sub-elements.
- * <p>
- * For example, we need to decompose "SHA1WithRSA" into "SHA1" and "RSA"
- * so that we can check the "SHA1" and "RSA" algorithm constraints
- * separately.
- * <p>
- * Please override the method if need to support more name pattern.
- */
- protected Set<String> decomposes(String algorithm) {
- if (algorithm == null || algorithm.length() == 0) {
- return new HashSet<String>();
- }
-
- // algorithm/mode/padding
- Pattern transPattern = Pattern.compile("/");
- String[] transTockens = transPattern.split(algorithm);
-
- Set<String> elements = new HashSet<String>();
- for (String transTocken : transTockens) {
- if (transTocken == null || transTocken.length() == 0) {
- continue;
- }
-
- // PBEWith<digest>And<encryption>
- // PBEWith<prf>And<encryption>
- // OAEPWith<digest>And<mgf>Padding
- // <digest>with<encryption>
- // <digest>with<encryption>and<mgf>
- Pattern pattern =
- Pattern.compile("with|and", Pattern.CASE_INSENSITIVE);
- String[] tokens = pattern.split(transTocken);
-
- for (String token : tokens) {
- if (token == null || token.length() == 0) {
- continue;
- }
-
- elements.add(token);
- }
- }
-
- // In Java standard algorithm name specification, for different
- // purpose, the SHA-1 and SHA-2 algorithm names are different. For
- // example, for MessageDigest, the standard name is "SHA-256", while
- // for Signature, the digest algorithm component is "SHA256" for
- // signature algorithm "SHA256withRSA". So we need to check both
- // "SHA-256" and "SHA256" to make the right constraint checking.
-
- // handle special name: SHA-1 and SHA1
- if (elements.contains("SHA1") && !elements.contains("SHA-1")) {
- elements.add("SHA-1");
- }
- if (elements.contains("SHA-1") && !elements.contains("SHA1")) {
- elements.add("SHA1");
- }
-
- // handle special name: SHA-224 and SHA224
- if (elements.contains("SHA224") && !elements.contains("SHA-224")) {
- elements.add("SHA-224");
- }
- if (elements.contains("SHA-224") && !elements.contains("SHA224")) {
- elements.add("SHA224");
- }
-
- // handle special name: SHA-256 and SHA256
- if (elements.contains("SHA256") && !elements.contains("SHA-256")) {
- elements.add("SHA-256");
- }
- if (elements.contains("SHA-256") && !elements.contains("SHA256")) {
- elements.add("SHA256");
- }
-
- // handle special name: SHA-384 and SHA384
- if (elements.contains("SHA384") && !elements.contains("SHA-384")) {
- elements.add("SHA-384");
- }
- if (elements.contains("SHA-384") && !elements.contains("SHA384")) {
- elements.add("SHA384");
- }
-
- // handle special name: SHA-512 and SHA512
- if (elements.contains("SHA512") && !elements.contains("SHA-512")) {
- elements.add("SHA-512");
- }
- if (elements.contains("SHA-512") && !elements.contains("SHA512")) {
- elements.add("SHA512");
- }
-
- return elements;
- }
-
// Check algorithm constraints
private boolean checkConstraints(Set<CryptoPrimitive> primitives,
String algorithm, Key key, AlgorithmParameters parameters) {
@@ -263,45 +136,20 @@
return true;
}
- // Get disabled algorithm constraints from the specified security property.
- private static void loadDisabledAlgorithmsMap(
- final String propertyName) {
-
- String property = AccessController.doPrivileged(
- new PrivilegedAction<String>() {
- public String run() {
- return Security.getProperty(propertyName);
- }
- });
-
- String[] algorithmsInProperty = null;
-
- if (property != null && !property.isEmpty()) {
-
- // remove double quote marks from beginning/end of the property
- if (property.charAt(0) == '"' &&
- property.charAt(property.length() - 1) == '"') {
- property = property.substring(1, property.length() - 1);
- }
-
- algorithmsInProperty = property.split(",");
- for (int i = 0; i < algorithmsInProperty.length; i++) {
- algorithmsInProperty[i] = algorithmsInProperty[i].trim();
- }
- }
-
- // map the disabled algorithms
- if (algorithmsInProperty == null) {
- algorithmsInProperty = new String[0];
- }
- disabledAlgorithmsMap.put(propertyName, algorithmsInProperty);
-
+ private static KeySizeConstraints getKeySizeConstraints(
+ String[] disabledAlgorithms, String propertyName) {
+ synchronized (keySizeConstraintsMap) {
+ if(!keySizeConstraintsMap.containsKey(propertyName)) {
// map the key constraints
KeySizeConstraints keySizeConstraints =
- new KeySizeConstraints(algorithmsInProperty);
+ new KeySizeConstraints(disabledAlgorithms);
keySizeConstraintsMap.put(propertyName, keySizeConstraints);
}
+ return keySizeConstraintsMap.get(propertyName);
+ }
+ }
+
/**
* key constraints
*/
--- ./jdk/src/share/classes/sun/security/util/LegacyAlgorithmConstraints.java 1969-12-31 16:00:00.000000000 -0800
+++ ./jdk/src/share/classes/sun/security/util/LegacyAlgorithmConstraints.java 2015-07-18 13:32:30.000000000 -0700
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2015, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package sun.security.util;
+
+import java.security.AlgorithmParameters;
+import java.security.CryptoPrimitive;
+import java.security.Key;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+import static sun.security.util.AbstractAlgorithmConstraints.getAlgorithms;
+
+/**
+ * Algorithm constraints for legacy algorithms.
+ */
+public class LegacyAlgorithmConstraints extends AbstractAlgorithmConstraints {
+
+ // the known security property, jdk.tls.legacyAlgorithms
+ public final static String PROPERTY_TLS_LEGACY_ALGS =
+ "jdk.tls.legacyAlgorithms";
+
+ private final static Map<String, String[]> legacyAlgorithmsMap =
+ new HashMap<>();
+
+ private final String[] legacyAlgorithms;
+
+ public LegacyAlgorithmConstraints(String propertyName,
+ AlgorithmDecomposer decomposer) {
+ super(decomposer);
+ legacyAlgorithms = getAlgorithms(legacyAlgorithmsMap, propertyName);
+ }
+
+ @Override
+ final public boolean permits(Set<CryptoPrimitive> primitives,
+ String algorithm, AlgorithmParameters parameters) {
+ return checkAlgorithm(legacyAlgorithms, algorithm, decomposer);
+ }
+
+ @Override
+ final public boolean permits(Set<CryptoPrimitive> primitives, Key key) {
+ return true;
+ }
+
+ @Override
+ final public boolean permits(Set<CryptoPrimitive> primitives,
+ String algorithm, Key key, AlgorithmParameters parameters) {
+ return checkAlgorithm(legacyAlgorithms, algorithm, decomposer);
+ }
+
+}
--- ./jdk/src/share/classes/sun/security/validator/SimpleValidator.java 2015-12-12 10:53:29.810514000 -0800
+++ ./jdk/src/share/classes/sun/security/validator/SimpleValidator.java 2015-07-18 13:32:30.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2015, 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
@@ -141,8 +141,18 @@
// create distrusted certificates checker
UntrustedChecker untrustedChecker = new UntrustedChecker();
+ // check if anchor is untrusted
+ X509Certificate anchorCert = chain[chain.length - 1];
+ try {
+ untrustedChecker.check(anchorCert);
+ } catch (CertPathValidatorException cpve) {
+ throw new ValidatorException(
+ "Untrusted certificate: "+ anchorCert.getSubjectX500Principal(),
+ ValidatorException.T_UNTRUSTED_CERT, anchorCert, cpve);
+ }
+
// create default algorithm constraints checker
- TrustAnchor anchor = new TrustAnchor(chain[chain.length - 1], null);
+ TrustAnchor anchor = new TrustAnchor(anchorCert, null);
AlgorithmChecker defaultAlgChecker = new AlgorithmChecker(anchor);
// create application level algorithm constraints checker
--- ./jdk/src/share/classes/sun/tools/attach/META-INF/services/com.sun.tools.attach.spi.AttachProvider 2015-12-12 10:53:22.122216000 -0800
+++ ./jdk/src/share/classes/sun/tools/attach/META-INF/services/com.sun.tools.attach.spi.AttachProvider 2015-10-24 06:21:20.000000000 -0700
@@ -31,4 +31,5 @@
#[windows]sun.tools.attach.WindowsAttachProvider
#[linux]sun.tools.attach.LinuxAttachProvider
#[macosx]sun.tools.attach.BsdAttachProvider
+#[bsd]sun.tools.attach.BsdAttachProvider
#[aix]sun.tools.attach.AixAttachProvider
--- ./jdk/src/share/classes/sun/tools/jar/resources/jar_de.properties 2015-12-12 10:53:28.947518000 -0800
+++ ./jdk/src/share/classes/sun/tools/jar/resources/jar_de.properties 2015-10-24 06:21:17.000000000 -0700
@@ -45,4 +45,4 @@
out.inflated=\ vergr\u00F6\u00DFert: {0}
out.size=(ein = {0}) (aus = {1})
-usage=Verwendung: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] Dateien ...\nOptionen:\n -c Neues Archiv erstellen\n -t Inhaltsverzeichnis f\u00FCr Archiv anzeigen\n -x Benannte (oder alle) Dateien aus dem Archiv extrahieren\n -u Vorhandenes Archiv aktualisieren\n -v Ausgabe im Verbose-Modus aus Standard-Ausgabe generieren\n -f Dateinamen f\u00FCr Archiv angeben\n -m Manifestinformationen aus angegebener Manifestdatei einschlie\u00DFen\n -n Pack200-Normalisierung nach Erstellung eines neuen Archivs ausf\u00FChren\n -e Anwendungseinstiegspunkt f\u00FCr Standalone-Anwendung angeben \n in einer ausf\u00FChrbaren JAR-Datei geb\u00FCndelt\n -0 Nur speichern; keine ZIP-Komprimierung verwenden\n -P Komponenten mit vorangestelltem "/" (absoluter Pfad) und ".." (\u00FCbergeordnetes Verzeichnis) aus Dateinamen beibehalten\n -M Keine Manifest-Datei f\u00FCr die Eintr\u00E4ge erstellen\n -i Indexinformationen f\u00FCr die angegebenen JAR-Dateien erstellen\n -C Zum angegebenen Verzeichnis wechseln und folgende Datei einschlie\u00DFen\nFalls eine Datei ein Verzeichnis ist, wird dieses rekursiv verarbeitet.\nDer Name der Manifestdatei, der Name der Archivdatei und der Name des Einstiegspunkts werden\nin derselben Reihenfolge wie die Kennzeichen "m", "f" und "e" angegeben.\n\nBeispiel 1: Archivieren Sie zwei Klassendateien in ein Archiv mit Namen "classes.jar": \n jar cvf classes.jar Foo.class Bar.class \nBeispiel 2: Verwenden Sie die vorhandenen Manifestdatei "mymanifest", und archivieren Sie alle\n Dateien im Verzeichnis foo/ directory in "classes.jar": \n jar cvfm classes.jar mymanifest -C foo/ .\n
+usage=Verwendung: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] Dateien...\nOptionen:\n -c Neues Archiv erstellen\n -t Inhaltsverzeichnis f\u00FCr Archiv anzeigen\n -x Benannte (oder alle) Dateien aus dem Archiv extrahieren\n -u Vorhandenes Archiv aktualisieren\n -v Ausgabe im Verbose-Modus aus Standard-Ausgabe generieren\n -f Dateinamen f\u00FCr Archiv angeben\n -m Manifestinformationen aus angegebener Manifestdatei einschlie\u00DFen\n -n Pack200-Normalisierung nach Erstellung eines neuen Archivs ausf\u00FChren\n -e Anwendungseinstiegspunkt f\u00FCr Standalone-Anwendung angeben \n in einer ausf\u00FChrbaren JAR-Datei geb\u00FCndelt\n -0 Nur speichern; keine ZIP-Komprimierung verwenden\n -P Komponenten mit vorangestelltem "/" (absoluter Pfad) und ".." (\u00FCbergeordnetes Verzeichnis) aus Dateinamen beibehalten\n -M Keine Manifest-Datei f\u00FCr die Eintr\u00E4ge erstellen\n -i Indexinformationen f\u00FCr die angegebenen JAR-Dateien erstellen\n -C Zum angegebenen Verzeichnis wechseln und folgende Datei einschlie\u00DFen\nFalls eine Datei ein Verzeichnis ist, wird dieses rekursiv verarbeitet.\nDer Name der Manifestdatei, der Name der Archivdatei und der Name des Einstiegspunkts werden\nin derselben Reihenfolge wie die Kennzeichen "m", "f" und "e" angegeben.\n\nBeispiel 1: Archivieren Sie zwei Klassendateien in ein Archiv mit Namen "classes.jar": \n jar cvf classes.jar Foo.class Bar.class \nBeispiel 2: Verwenden Sie die vorhandenen Manifestdatei "mymanifest", und archivieren Sie alle\n Dateien im Verzeichnis foo/ directory in "classes.jar": \n jar cvfm classes.jar mymanifest -C foo/ .\n
--- ./jdk/src/share/classes/sun/tools/jar/resources/jar_pt_BR.properties 2015-12-12 10:53:28.949197000 -0800
+++ ./jdk/src/share/classes/sun/tools/jar/resources/jar_pt_BR.properties 2015-10-24 06:21:17.000000000 -0700
@@ -45,4 +45,4 @@
out.inflated=\ inflado: {0}
out.size=(entrada = {0}) (sa\u00EDda= {1})
-usage=Uso: jar {ctxui}[vfmn0Me] [jar-file] [manifest-file] [entry-point] [-C dir] arquivos ...\nOp\u00E7\u00F5es:\n -c cria novo arquivo compactado\n -t lista o sum\u00E1rio do arquivo compactado\n -x extrai arquivos com o nome (ou todos) do arquivo compactado\n -u atualiza o arquivo compactado existente\n -v gera sa\u00EDda detalhada na sa\u00EDda padr\u00E3o\n -f especifica o nome do arquivo do arquivo compactado\n -m inclui as informa\u00E7\u00F5es do manifesto do arquivo de manifesto especificado\n -n executa a normaliza\u00E7\u00E3o Pack200 ap\u00F3s a cria\u00E7\u00E3o de um novo arquivo compactado\n -e especifica o ponto de entrada da aplica\u00E7\u00E3o para aplica\u00E7\u00E3o stand-alone \n empacotada em um arquivo jar execut\u00E1vel\n -0 armazena somente; n\u00E3o usa compacta\u00E7\u00E3o ZIP\n -P preserva os componentes '/' inicial (caminho absoluto) e ".." (diret\u00F3rio pai) nos nomes dos arquivos\n -M n\u00E3o cria um arquivo de manifesto para as entradas\n -i gera informa\u00E7\u00F5es de \u00EDndice para os arquivos especificados\n -C passa para o diret\u00F3rio especificado e inclui o arquivo a seguir\nSe um arquivo tamb\u00E9m for um diret\u00F3rio, ele ser\u00E1 processado repetidamente.\nO nome do arquivo de manifesto, o nome do arquivo compactado e o nome do ponto de entrada s\u00E3o\nespecificados na mesma ordem dos flags 'm', 'f' e 'e'.\n\nExemplo 1: para arquivar dois arquivos de classe em um arquivo compactado denominado classes.jar: \n jar cvf classes.jar Foo.class Bar.class \nExemplo 2: use um arquivo de manifesto existente 'mymanifest' e arquive todos os\n arquivos no diret\u00F3rio foo/ na 'classes.jar': \n jar cvfm classes.jar mymanifest -C foo/ .\n
+usage=Uso: jar {ctxui}[vfmn0Me] [jar-file] [manifest-file] [entry-point] [-C dir] arquivos ...\nOp\u00E7\u00F5es:\n -c cria novo arquivo compactado\n -t lista o sum\u00E1rio do arquivo compactado\n -x extrai arquivos com o nome (ou todos) do arquivo compactado\n -u atualiza o arquivo compactado existente\n -v gera sa\u00EDda detalhada na sa\u00EDda padr\u00E3o\n -f especifica o nome do arquivo do arquivo compactado\n -m inclui as informa\u00E7\u00F5es do manifesto do arquivo de manifesto especificado\n -n executa a normaliza\u00E7\u00E3o Pack200 ap\u00F3s a cria\u00E7\u00E3o de um novo arquivo compactado\n -e especifica o ponto de entrada da aplicativo para aplicativo stand-alone \n empacotada em um arquivo jar execut\u00E1vel\n -0 armazena somente; n\u00E3o usa compacta\u00E7\u00E3o ZIP\n -P preserva os componentes '/' inicial (caminho absoluto) e ".." (diret\u00F3rio pai) nos nomes dos arquivos\n -M n\u00E3o cria um arquivo de manifesto para as entradas\n -i gera informa\u00E7\u00F5es de \u00EDndice para os arquivos especificados\n -C passa para o diret\u00F3rio especificado e inclui o arquivo a seguir\nSe um arquivo tamb\u00E9m for um diret\u00F3rio, ele ser\u00E1 processado repetidamente.\nO nome do arquivo de manifesto, o nome do arquivo compactado e o nome do ponto de entrada s\u00E3o\nespecificados na mesma ordem dos flags 'm', 'f' e 'e'.\n\nExemplo 1: para arquivar dois arquivos de classe em um arquivo compactado denominado classes.jar: \n jar cvf classes.jar Foo.class Bar.class \nExemplo 2: use um arquivo de manifesto existente 'mymanifest' e arquive todos os\n arquivos no diret\u00F3rio foo/ na 'classes.jar': \n jar cvfm classes.jar mymanifest -C foo/ .\n
--- ./jdk/src/share/lib/security/java.security-aix 2015-12-12 10:53:29.817035000 -0800
+++ ./jdk/src/share/lib/security/java.security-aix 2015-10-24 06:21:17.000000000 -0700
@@ -509,4 +509,118 @@
#
# Example:
# jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048
-jdk.tls.disabledAlgorithms=SSLv3, RC4
+jdk.tls.disabledAlgorithms=SSLv3, RC4, DH keySize < 768
+
+# Legacy algorithms for Secure Socket Layer/Transport Layer Security (SSL/TLS)
+# processing in JSSE implementation.
+#
+# In some environments, a certain algorithm may be undesirable but it
+# cannot be disabled because of its use in legacy applications. Legacy
+# algorithms may still be supported, but applications should not use them
+# as the security strength of legacy algorithms are usually not strong enough
+# in practice.
+#
+# During SSL/TLS security parameters negotiation, legacy algorithms will
+# not be negotiated unless there are no other candidates.
+#
+# The syntax of the disabled algorithm string is described as this Java
+# BNF-style:
+# LegacyAlgorithms:
+# " LegacyAlgorithm { , LegacyAlgorithm } "
+#
+# LegacyAlgorithm:
+# AlgorithmName (standard JSSE algorithm name)
+#
+# See the specification of security property "jdk.certpath.disabledAlgorithms"
+# for the syntax and description of the "AlgorithmName" notation.
+#
+# Per SSL/TLS specifications, cipher suites have the form:
+# SSL_KeyExchangeAlg_WITH_CipherAlg_MacAlg
+# or
+# TLS_KeyExchangeAlg_WITH_CipherAlg_MacAlg
+#
+# For example, the cipher suite TLS_RSA_WITH_AES_128_CBC_SHA uses RSA as the
+# key exchange algorithm, AES_128_CBC (128 bits AES cipher algorithm in CBC
+# mode) as the cipher (encryption) algorithm, and SHA-1 as the message digest
+# algorithm for HMAC.
+#
+# The LegacyAlgorithm can be one of the following standard algorithm names:
+# 1. JSSE cipher suite name, e.g., TLS_RSA_WITH_AES_128_CBC_SHA
+# 2. JSSE key exchange algorithm name, e.g., RSA
+# 3. JSSE cipher (encryption) algorithm name, e.g., AES_128_CBC
+# 4. JSSE message digest algorithm name, e.g., SHA
+#
+# See SSL/TLS specifications and "Java Cryptography Architecture Standard
+# Algorithm Name Documentation" for information about the algorithm names.
+#
+# Note: This property is currently used by Oracle's JSSE implementation.
+# It is not guaranteed to be examined and used by other implementations.
+# There is no guarantee the property will continue to exist or be of the
+# same syntax in future releases.
+#
+# Example:
+# jdk.tls.legacyAlgorithms=DH_anon, DES_CBC, SSL_RSA_WITH_RC4_128_MD5
+#
+jdk.tls.legacyAlgorithms= \
+ K_NULL, C_NULL, M_NULL, \
+ DHE_DSS_EXPORT, DHE_RSA_EXPORT, DH_anon_EXPORT, DH_DSS_EXPORT, \
+ DH_RSA_EXPORT, RSA_EXPORT, \
+ DH_anon, ECDH_anon, \
+ RC4_128, RC4_40, DES_CBC, DES40_CBC
+
+# The pre-defined default finite field Diffie-Hellman ephemeral (DHE)
+# parameters for Transport Layer Security (SSL/TLS/DTLS) processing.
+#
+# In traditional SSL/TLS/DTLS connections where finite field DHE parameters
+# negotiation mechanism is not used, the server offers the client group
+# parameters, base generator g and prime modulus p, for DHE key exchange.
+# It is recommended to use dynamic group parameters. This property defines
+# a mechanism that allows you to specify custom group parameters.
+#
+# The syntax of this property string is described as this Java BNF-style:
+# DefaultDHEParameters:
+# DefinedDHEParameters { , DefinedDHEParameters }
+#
+# DefinedDHEParameters:
+# "{" DHEPrimeModulus , DHEBaseGenerator "}"
+#
+# DHEPrimeModulus:
+# HexadecimalDigits
+#
+# DHEBaseGenerator:
+# HexadecimalDigits
+#
+# HexadecimalDigits:
+# HexadecimalDigit { HexadecimalDigit }
+#
+# HexadecimalDigit: one of
+# 0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f
+#
+# Whitespace characters are ignored.
+#
+# The "DefinedDHEParameters" defines the custom group parameters, prime
+# modulus p and base generator g, for a particular size of prime modulus p.
+# The "DHEPrimeModulus" defines the hexadecimal prime modulus p, and the
+# "DHEBaseGenerator" defines the hexadecimal base generator g of a group
+# parameter. It is recommended to use safe primes for the custom group
+# parameters.
+#
+# If this property is not defined or the value is empty, the underlying JSSE
+# provider's default group parameter is used for each connection.
+#
+# If the property value does not follow the grammar, or a particular group
+# parameter is not valid, the connection will fall back and use the
+# underlying JSSE provider's default group parameter.
+#
+# Note: This property is currently used by OpenJDK's JSSE implementation. It
+# is not guaranteed to be examined and used by other implementations.
+#
+# Example:
+# jdk.tls.server.defaultDHEParameters=
+# { \
+# FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 \
+# 29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD \
+# EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245 \
+# E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED \
+# EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE65381 \
+# FFFFFFFF FFFFFFFF, 2}
--- ./jdk/src/share/lib/security/java.security-bsd 1969-12-31 16:00:00.000000000 -0800
+++ ./jdk/src/share/lib/security/java.security-bsd 2015-10-24 09:31:31.000000000 -0700
@@ -0,0 +1,626 @@
+#
+# This is the "master security properties file".
+#
+# An alternate java.security properties file may be specified
+# from the command line via the system property
+#
+# -Djava.security.properties=<URL>
+#
+# This properties file appends to the master security properties file.
+# If both properties files specify values for the same key, the value
+# from the command-line properties file is selected, as it is the last
+# one loaded.
+#
+# Also, if you specify
+#
+# -Djava.security.properties==<URL> (2 equals),
+#
+# then that properties file completely overrides the master security
+# properties file.
+#
+# To disable the ability to specify an additional properties file from
+# the command line, set the key security.overridePropertiesFile
+# to false in the master security properties file. It is set to true
+# by default.
+
+# In this file, various security properties are set for use by
+# java.security classes. This is where users can statically register
+# Cryptography Package Providers ("providers" for short). The term
+# "provider" refers to a package or set of packages that supply a
+# concrete implementation of a subset of the cryptography aspects of
+# the Java Security API. A provider may, for example, implement one or
+# more digital signature algorithms or message digest algorithms.
+#
+# Each provider must implement a subclass of the Provider class.
+# To register a provider in this master security properties file,
+# specify the Provider subclass name and priority in the format
+#
+# security.provider.<n>=<className>
+#
+# This declares a provider, and specifies its preference
+# order n. The preference order is the order in which providers are
+# searched for requested algorithms (when no specific provider is
+# requested). The order is 1-based; 1 is the most preferred, followed
+# by 2, and so on.
+#
+# <className> must specify the subclass of the Provider class whose
+# constructor sets the values of various properties that are required
+# for the Java Security API to look up the algorithms or other
+# facilities implemented by the provider.
+#
+# There must be at least one provider specification in java.security.
+# There is a default provider that comes standard with the JDK. It
+# is called the "SUN" provider, and its Provider subclass
+# named Sun appears in the sun.security.provider package. Thus, the
+# "SUN" provider is registered via the following:
+#
+# security.provider.1=sun.security.provider.Sun
+#
+# (The number 1 is used for the default provider.)
+#
+# Note: Providers can be dynamically registered instead by calls to
+# either the addProvider or insertProviderAt method in the Security
+# class.
+
+#
+# List of providers and their preference orders (see above):
+#
+security.provider.1=sun.security.provider.Sun
+security.provider.2=sun.security.rsa.SunRsaSign
+security.provider.3=sun.security.ec.SunEC
+security.provider.4=com.sun.net.ssl.internal.ssl.Provider
+security.provider.5=com.sun.crypto.provider.SunJCE
+security.provider.6=sun.security.jgss.SunProvider
+security.provider.7=com.sun.security.sasl.Provider
+security.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRI
+security.provider.9=sun.security.smartcardio.SunPCSC
+
+#
+# Sun Provider SecureRandom seed source.
+#
+# Select the primary source of seed data for the "SHA1PRNG" and
+# "NativePRNG" SecureRandom implementations in the "Sun" provider.
+# (Other SecureRandom implementations might also use this property.)
+#
+# On Unix-like systems (for example, Solaris/Linux/MacOS), the
+# "NativePRNG" and "SHA1PRNG" implementations obtains seed data from
+# special device files such as file:/dev/random.
+#
+# On Windows systems, specifying the URLs "file:/dev/random" or
+# "file:/dev/urandom" will enable the native Microsoft CryptoAPI seeding
+# mechanism for SHA1PRNG.
+#
+# By default, an attempt is made to use the entropy gathering device
+# specified by the "securerandom.source" Security property. If an
+# exception occurs while accessing the specified URL:
+#
+# SHA1PRNG:
+# the traditional system/thread activity algorithm will be used.
+#
+# NativePRNG:
+# a default value of /dev/random will be used. If neither
+# are available, the implementation will be disabled.
+# "file" is the only currently supported protocol type.
+#
+# The entropy gathering device can also be specified with the System
+# property "java.security.egd". For example:
+#
+# % java -Djava.security.egd=file:/dev/random MainClass
+#
+# Specifying this System property will override the
+# "securerandom.source" Security property.
+#
+# In addition, if "file:/dev/random" or "file:/dev/urandom" is
+# specified, the "NativePRNG" implementation will be more preferred than
+# SHA1PRNG in the Sun provider.
+#
+securerandom.source=file:/dev/random
+
+#
+# A list of known strong SecureRandom implementations.
+#
+# To help guide applications in selecting a suitable strong
+# java.security.SecureRandom implementation, Java distributions should
+# indicate a list of known strong implementations using the property.
+#
+# This is a comma-separated list of algorithm and/or algorithm:provider
+# entries.
+#
+securerandom.strongAlgorithms=NativePRNGBlocking:SUN
+
+#
+# Class to instantiate as the javax.security.auth.login.Configuration
+# provider.
+#
+login.configuration.provider=sun.security.provider.ConfigFile
+
+#
+# Default login configuration file
+#
+#login.config.url.1=file:${user.home}/.java.login.config
+
+#
+# Class to instantiate as the system Policy. This is the name of the class
+# that will be used as the Policy object.
+#
+policy.provider=sun.security.provider.PolicyFile
+
+# The default is to have a single system-wide policy file,
+# and a policy file in the user's home directory.
+policy.url.1=file:${java.home}/lib/security/java.policy
+policy.url.2=file:${user.home}/.java.policy
+
+# whether or not we expand properties in the policy file
+# if this is set to false, properties (${...}) will not be expanded in policy
+# files.
+policy.expandProperties=true
+
+# whether or not we allow an extra policy to be passed on the command line
+# with -Djava.security.policy=somefile. Comment out this line to disable
+# this feature.
+policy.allowSystemProperty=true
+
+# whether or not we look into the IdentityScope for trusted Identities
+# when encountering a 1.1 signed JAR file. If the identity is found
+# and is trusted, we grant it AllPermission.
+policy.ignoreIdentityScope=false
+
+#
+# Default keystore type.
+#
+keystore.type=jks
+
+#
+# Controls compatibility mode for the JKS keystore type.
+#
+# When set to 'true', the JKS keystore type supports loading
+# keystore files in either JKS or PKCS12 format. When set to 'false'
+# it supports loading only JKS keystore files.
+#
+keystore.type.compat=true
+
+#
+# List of comma-separated packages that start with or equal this string
+# will cause a security exception to be thrown when
+# passed to checkPackageAccess unless the
+# corresponding RuntimePermission ("accessClassInPackage."+package) has
+# been granted.
+package.access=sun.,\
+ com.sun.xml.internal.,\
+ com.sun.imageio.,\
+ com.sun.istack.internal.,\
+ com.sun.jmx.,\
+ com.sun.media.sound.,\
+ com.sun.naming.internal.,\
+ com.sun.proxy.,\
+ com.sun.corba.se.,\
+ com.sun.org.apache.bcel.internal.,\
+ com.sun.org.apache.regexp.internal.,\
+ com.sun.org.apache.xerces.internal.,\
+ com.sun.org.apache.xpath.internal.,\
+ com.sun.org.apache.xalan.internal.extensions.,\
+ com.sun.org.apache.xalan.internal.lib.,\
+ com.sun.org.apache.xalan.internal.res.,\
+ com.sun.org.apache.xalan.internal.templates.,\
+ com.sun.org.apache.xalan.internal.utils.,\
+ com.sun.org.apache.xalan.internal.xslt.,\
+ com.sun.org.apache.xalan.internal.xsltc.cmdline.,\
+ com.sun.org.apache.xalan.internal.xsltc.compiler.,\
+ com.sun.org.apache.xalan.internal.xsltc.trax.,\
+ com.sun.org.apache.xalan.internal.xsltc.util.,\
+ com.sun.org.apache.xml.internal.res.,\
+ com.sun.org.apache.xml.internal.security.,\
+ com.sun.org.apache.xml.internal.serializer.utils.,\
+ com.sun.org.apache.xml.internal.utils.,\
+ com.sun.org.glassfish.,\
+ com.oracle.xmlns.internal.,\
+ com.oracle.webservices.internal.,\
+ oracle.jrockit.jfr.,\
+ org.jcp.xml.dsig.internal.,\
+ jdk.internal.,\
+ jdk.nashorn.internal.,\
+ jdk.nashorn.tools.,\
+ com.sun.activation.registries.
+
+#
+# List of comma-separated packages that start with or equal this string
+# will cause a security exception to be thrown when
+# passed to checkPackageDefinition unless the
+# corresponding RuntimePermission ("defineClassInPackage."+package) has
+# been granted.
+#
+# by default, none of the class loaders supplied with the JDK call
+# checkPackageDefinition.
+#
+package.definition=sun.,\
+ com.sun.xml.internal.,\
+ com.sun.imageio.,\
+ com.sun.istack.internal.,\
+ com.sun.jmx.,\
+ com.sun.media.sound.,\
+ com.sun.naming.internal.,\
+ com.sun.proxy.,\
+ com.sun.corba.se.,\
+ com.sun.org.apache.bcel.internal.,\
+ com.sun.org.apache.regexp.internal.,\
+ com.sun.org.apache.xerces.internal.,\
+ com.sun.org.apache.xpath.internal.,\
+ com.sun.org.apache.xalan.internal.extensions.,\
+ com.sun.org.apache.xalan.internal.lib.,\
+ com.sun.org.apache.xalan.internal.res.,\
+ com.sun.org.apache.xalan.internal.templates.,\
+ com.sun.org.apache.xalan.internal.utils.,\
+ com.sun.org.apache.xalan.internal.xslt.,\
+ com.sun.org.apache.xalan.internal.xsltc.cmdline.,\
+ com.sun.org.apache.xalan.internal.xsltc.compiler.,\
+ com.sun.org.apache.xalan.internal.xsltc.trax.,\
+ com.sun.org.apache.xalan.internal.xsltc.util.,\
+ com.sun.org.apache.xml.internal.res.,\
+ com.sun.org.apache.xml.internal.security.,\
+ com.sun.org.apache.xml.internal.serializer.utils.,\
+ com.sun.org.apache.xml.internal.utils.,\
+ com.sun.org.glassfish.,\
+ com.oracle.xmlns.internal.,\
+ com.oracle.webservices.internal.,\
+ oracle.jrockit.jfr.,\
+ org.jcp.xml.dsig.internal.,\
+ jdk.internal.,\
+ jdk.nashorn.internal.,\
+ jdk.nashorn.tools.,\
+ com.sun.activation.registries.
+
+#
+# Determines whether this properties file can be appended to
+# or overridden on the command line via -Djava.security.properties
+#
+security.overridePropertiesFile=true
+
+#
+# Determines the default key and trust manager factory algorithms for
+# the javax.net.ssl package.
+#
+ssl.KeyManagerFactory.algorithm=SunX509
+ssl.TrustManagerFactory.algorithm=PKIX
+
+#
+# The Java-level namelookup cache policy for successful lookups:
+#
+# any negative value: caching forever
+# any positive value: the number of seconds to cache an address for
+# zero: do not cache
+#
+# default value is forever (FOREVER). For security reasons, this
+# caching is made forever when a security manager is set. When a security
+# manager is not set, the default behavior in this implementation
+# is to cache for 30 seconds.
+#
+# NOTE: setting this to anything other than the default value can have
+# serious security implications. Do not set it unless
+# you are sure you are not exposed to DNS spoofing attack.
+#
+#networkaddress.cache.ttl=-1
+
+# The Java-level namelookup cache policy for failed lookups:
+#
+# any negative value: cache forever
+# any positive value: the number of seconds to cache negative lookup results
+# zero: do not cache
+#
+# In some Microsoft Windows networking environments that employ
+# the WINS name service in addition to DNS, name service lookups
+# that fail may take a noticeably long time to return (approx. 5 seconds).
+# For this reason the default caching policy is to maintain these
+# results for 10 seconds.
+#
+#
+networkaddress.cache.negative.ttl=10
+
+#
+# Properties to configure OCSP for certificate revocation checking
+#
+
+# Enable OCSP
+#
+# By default, OCSP is not used for certificate revocation checking.
+# This property enables the use of OCSP when set to the value "true".
+#
+# NOTE: SocketPermission is required to connect to an OCSP responder.
+#
+# Example,
+# ocsp.enable=true
+
+#
+# Location of the OCSP responder
+#
+# By default, the location of the OCSP responder is determined implicitly
+# from the certificate being validated. This property explicitly specifies
+# the location of the OCSP responder. The property is used when the
+# Authority Information Access extension (defined in RFC 3280) is absent
+# from the certificate or when it requires overriding.
+#
+# Example,
+# ocsp.responderURL=http://ocsp.example.net:80
+
+#
+# Subject name of the OCSP responder's certificate
+#
+# By default, the certificate of the OCSP responder is that of the issuer
+# of the certificate being validated. This property identifies the certificate
+# of the OCSP responder when the default does not apply. Its value is a string
+# distinguished name (defined in RFC 2253) which identifies a certificate in
+# the set of certificates supplied during cert path validation. In cases where
+# the subject name alone is not sufficient to uniquely identify the certificate
+# then both the "ocsp.responderCertIssuerName" and
+# "ocsp.responderCertSerialNumber" properties must be used instead. When this
+# property is set then those two properties are ignored.
+#
+# Example,
+# ocsp.responderCertSubjectName="CN=OCSP Responder, O=XYZ Corp"
+
+#
+# Issuer name of the OCSP responder's certificate
+#
+# By default, the certificate of the OCSP responder is that of the issuer
+# of the certificate being validated. This property identifies the certificate
+# of the OCSP responder when the default does not apply. Its value is a string
+# distinguished name (defined in RFC 2253) which identifies a certificate in
+# the set of certificates supplied during cert path validation. When this
+# property is set then the "ocsp.responderCertSerialNumber" property must also
+# be set. When the "ocsp.responderCertSubjectName" property is set then this
+# property is ignored.
+#
+# Example,
+# ocsp.responderCertIssuerName="CN=Enterprise CA, O=XYZ Corp"
+
+#
+# Serial number of the OCSP responder's certificate
+#
+# By default, the certificate of the OCSP responder is that of the issuer
+# of the certificate being validated. This property identifies the certificate
+# of the OCSP responder when the default does not apply. Its value is a string
+# of hexadecimal digits (colon or space separators may be present) which
+# identifies a certificate in the set of certificates supplied during cert path
+# validation. When this property is set then the "ocsp.responderCertIssuerName"
+# property must also be set. When the "ocsp.responderCertSubjectName" property
+# is set then this property is ignored.
+#
+# Example,
+# ocsp.responderCertSerialNumber=2A:FF:00
+
+#
+# Policy for failed Kerberos KDC lookups:
+#
+# When a KDC is unavailable (network error, service failure, etc), it is
+# put inside a blacklist and accessed less often for future requests. The
+# value (case-insensitive) for this policy can be:
+#
+# tryLast
+# KDCs in the blacklist are always tried after those not on the list.
+#
+# tryLess[:max_retries,timeout]
+# KDCs in the blacklist are still tried by their order in the configuration,
+# but with smaller max_retries and timeout values. max_retries and timeout
+# are optional numerical parameters (default 1 and 5000, which means once
+# and 5 seconds). Please notes that if any of the values defined here is
+# more than what is defined in krb5.conf, it will be ignored.
+#
+# Whenever a KDC is detected as available, it is removed from the blacklist.
+# The blacklist is reset when krb5.conf is reloaded. You can add
+# refreshKrb5Config=true to a JAAS configuration file so that krb5.conf is
+# reloaded whenever a JAAS authentication is attempted.
+#
+# Example,
+# krb5.kdc.bad.policy = tryLast
+# krb5.kdc.bad.policy = tryLess:2,2000
+krb5.kdc.bad.policy = tryLast
+
+# Algorithm restrictions for certification path (CertPath) processing
+#
+# In some environments, certain algorithms or key lengths may be undesirable
+# for certification path building and validation. For example, "MD2" is
+# generally no longer considered to be a secure hash algorithm. This section
+# describes the mechanism for disabling algorithms based on algorithm name
+# and/or key length. This includes algorithms used in certificates, as well
+# as revocation information such as CRLs and signed OCSP Responses.
+#
+# The syntax of the disabled algorithm string is described as this Java
+# BNF-style:
+# DisabledAlgorithms:
+# " DisabledAlgorithm { , DisabledAlgorithm } "
+#
+# DisabledAlgorithm:
+# AlgorithmName [Constraint]
+#
+# AlgorithmName:
+# (see below)
+#
+# Constraint:
+# KeySizeConstraint
+#
+# KeySizeConstraint:
+# keySize Operator DecimalInteger
+#
+# Operator:
+# <= | < | == | != | >= | >
+#
+# DecimalInteger:
+# DecimalDigits
+#
+# DecimalDigits:
+# DecimalDigit {DecimalDigit}
+#
+# DecimalDigit: one of
+# 1 2 3 4 5 6 7 8 9 0
+#
+# The "AlgorithmName" is the standard algorithm name of the disabled
+# algorithm. See "Java Cryptography Architecture Standard Algorithm Name
+# Documentation" for information about Standard Algorithm Names. Matching
+# is performed using a case-insensitive sub-element matching rule. (For
+# example, in "SHA1withECDSA" the sub-elements are "SHA1" for hashing and
+# "ECDSA" for signatures.) If the assertion "AlgorithmName" is a
+# sub-element of the certificate algorithm name, the algorithm will be
+# rejected during certification path building and validation. For example,
+# the assertion algorithm name "DSA" will disable all certificate algorithms
+# that rely on DSA, such as NONEwithDSA, SHA1withDSA. However, the assertion
+# will not disable algorithms related to "ECDSA".
+#
+# A "Constraint" provides further guidance for the algorithm being specified.
+# The "KeySizeConstraint" requires a key of a valid size range if the
+# "AlgorithmName" is of a key algorithm. The "DecimalInteger" indicates the
+# key size specified in number of bits. For example, "RSA keySize <= 1024"
+# indicates that any RSA key with key size less than or equal to 1024 bits
+# should be disabled, and "RSA keySize < 1024, RSA keySize > 2048" indicates
+# that any RSA key with key size less than 1024 or greater than 2048 should
+# be disabled. Note that the "KeySizeConstraint" only makes sense to key
+# algorithms.
+#
+# Note: This property is currently used by Oracle's PKIX implementation. It
+# is not guaranteed to be examined and used by other implementations.
+#
+# Example:
+# jdk.certpath.disabledAlgorithms=MD2, DSA, RSA keySize < 2048
+#
+#
+jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024
+
+# Algorithm restrictions for Secure Socket Layer/Transport Layer Security
+# (SSL/TLS) processing
+#
+# In some environments, certain algorithms or key lengths may be undesirable
+# when using SSL/TLS. This section describes the mechanism for disabling
+# algorithms during SSL/TLS security parameters negotiation, including
+# protocol version negotiation, cipher suites selection, peer authentication
+# and key exchange mechanisms.
+#
+# Disabled algorithms will not be negotiated for SSL/TLS connections, even
+# if they are enabled explicitly in an application.
+#
+# For PKI-based peer authentication and key exchange mechanisms, this list
+# of disabled algorithms will also be checked during certification path
+# building and validation, including algorithms used in certificates, as
+# well as revocation information such as CRLs and signed OCSP Responses.
+# This is in addition to the jdk.certpath.disabledAlgorithms property above.
+#
+# See the specification of "jdk.certpath.disabledAlgorithms" for the
+# syntax of the disabled algorithm string.
+#
+# Note: This property is currently used by Oracle's JSSE implementation.
+# It is not guaranteed to be examined and used by other implementations.
+#
+# Example:
+# jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048
+jdk.tls.disabledAlgorithms=SSLv3, RC4, DH keySize < 768
+
+# Legacy algorithms for Secure Socket Layer/Transport Layer Security (SSL/TLS)
+# processing in JSSE implementation.
+#
+# In some environments, a certain algorithm may be undesirable but it
+# cannot be disabled because of its use in legacy applications. Legacy
+# algorithms may still be supported, but applications should not use them
+# as the security strength of legacy algorithms are usually not strong enough
+# in practice.
+#
+# During SSL/TLS security parameters negotiation, legacy algorithms will
+# not be negotiated unless there are no other candidates.
+#
+# The syntax of the disabled algorithm string is described as this Java
+# BNF-style:
+# LegacyAlgorithms:
+# " LegacyAlgorithm { , LegacyAlgorithm } "
+#
+# LegacyAlgorithm:
+# AlgorithmName (standard JSSE algorithm name)
+#
+# See the specification of security property "jdk.certpath.disabledAlgorithms"
+# for the syntax and description of the "AlgorithmName" notation.
+#
+# Per SSL/TLS specifications, cipher suites have the form:
+# SSL_KeyExchangeAlg_WITH_CipherAlg_MacAlg
+# or
+# TLS_KeyExchangeAlg_WITH_CipherAlg_MacAlg
+#
+# For example, the cipher suite TLS_RSA_WITH_AES_128_CBC_SHA uses RSA as the
+# key exchange algorithm, AES_128_CBC (128 bits AES cipher algorithm in CBC
+# mode) as the cipher (encryption) algorithm, and SHA-1 as the message digest
+# algorithm for HMAC.
+#
+# The LegacyAlgorithm can be one of the following standard algorithm names:
+# 1. JSSE cipher suite name, e.g., TLS_RSA_WITH_AES_128_CBC_SHA
+# 2. JSSE key exchange algorithm name, e.g., RSA
+# 3. JSSE cipher (encryption) algorithm name, e.g., AES_128_CBC
+# 4. JSSE message digest algorithm name, e.g., SHA
+#
+# See SSL/TLS specifications and "Java Cryptography Architecture Standard
+# Algorithm Name Documentation" for information about the algorithm names.
+#
+# Note: This property is currently used by Oracle's JSSE implementation.
+# It is not guaranteed to be examined and used by other implementations.
+# There is no guarantee the property will continue to exist or be of the
+# same syntax in future releases.
+#
+# Example:
+# jdk.tls.legacyAlgorithms=DH_anon, DES_CBC, SSL_RSA_WITH_RC4_128_MD5
+#
+jdk.tls.legacyAlgorithms= \
+ K_NULL, C_NULL, M_NULL, \
+ DHE_DSS_EXPORT, DHE_RSA_EXPORT, DH_anon_EXPORT, DH_DSS_EXPORT, \
+ DH_RSA_EXPORT, RSA_EXPORT, \
+ DH_anon, ECDH_anon, \
+ RC4_128, RC4_40, DES_CBC, DES40_CBC
+
+# The pre-defined default finite field Diffie-Hellman ephemeral (DHE)
+# parameters for Transport Layer Security (SSL/TLS/DTLS) processing.
+#
+# In traditional SSL/TLS/DTLS connections where finite field DHE parameters
+# negotiation mechanism is not used, the server offers the client group
+# parameters, base generator g and prime modulus p, for DHE key exchange.
+# It is recommended to use dynamic group parameters. This property defines
+# a mechanism that allows you to specify custom group parameters.
+#
+# The syntax of this property string is described as this Java BNF-style:
+# DefaultDHEParameters:
+# DefinedDHEParameters { , DefinedDHEParameters }
+#
+# DefinedDHEParameters:
+# "{" DHEPrimeModulus , DHEBaseGenerator "}"
+#
+# DHEPrimeModulus:
+# HexadecimalDigits
+#
+# DHEBaseGenerator:
+# HexadecimalDigits
+#
+# HexadecimalDigits:
+# HexadecimalDigit { HexadecimalDigit }
+#
+# HexadecimalDigit: one of
+# 0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f
+#
+# Whitespace characters are ignored.
+#
+# The "DefinedDHEParameters" defines the custom group parameters, prime
+# modulus p and base generator g, for a particular size of prime modulus p.
+# The "DHEPrimeModulus" defines the hexadecimal prime modulus p, and the
+# "DHEBaseGenerator" defines the hexadecimal base generator g of a group
+# parameter. It is recommended to use safe primes for the custom group
+# parameters.
+#
+# If this property is not defined or the value is empty, the underlying JSSE
+# provider's default group parameter is used for each connection.
+#
+# If the property value does not follow the grammar, or a particular group
+# parameter is not valid, the connection will fall back and use the
+# underlying JSSE provider's default group parameter.
+#
+# Note: This property is currently used by OpenJDK's JSSE implementation. It
+# is not guaranteed to be examined and used by other implementations.
+#
+# Example:
+# jdk.tls.server.defaultDHEParameters=
+# { \
+# FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 \
+# 29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD \
+# EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245 \
+# E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED \
+# EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE65381 \
+# FFFFFFFF FFFFFFFF, 2}
--- ./jdk/src/share/lib/security/java.security-linux 2015-12-12 10:53:29.817428000 -0800
+++ ./jdk/src/share/lib/security/java.security-linux 2015-10-24 06:21:17.000000000 -0700
@@ -509,4 +509,118 @@
#
# Example:
# jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048
-jdk.tls.disabledAlgorithms=SSLv3, RC4
+jdk.tls.disabledAlgorithms=SSLv3, RC4, DH keySize < 768
+
+# Legacy algorithms for Secure Socket Layer/Transport Layer Security (SSL/TLS)
+# processing in JSSE implementation.
+#
+# In some environments, a certain algorithm may be undesirable but it
+# cannot be disabled because of its use in legacy applications. Legacy
+# algorithms may still be supported, but applications should not use them
+# as the security strength of legacy algorithms are usually not strong enough
+# in practice.
+#
+# During SSL/TLS security parameters negotiation, legacy algorithms will
+# not be negotiated unless there are no other candidates.
+#
+# The syntax of the disabled algorithm string is described as this Java
+# BNF-style:
+# LegacyAlgorithms:
+# " LegacyAlgorithm { , LegacyAlgorithm } "
+#
+# LegacyAlgorithm:
+# AlgorithmName (standard JSSE algorithm name)
+#
+# See the specification of security property "jdk.certpath.disabledAlgorithms"
+# for the syntax and description of the "AlgorithmName" notation.
+#
+# Per SSL/TLS specifications, cipher suites have the form:
+# SSL_KeyExchangeAlg_WITH_CipherAlg_MacAlg
+# or
+# TLS_KeyExchangeAlg_WITH_CipherAlg_MacAlg
+#
+# For example, the cipher suite TLS_RSA_WITH_AES_128_CBC_SHA uses RSA as the
+# key exchange algorithm, AES_128_CBC (128 bits AES cipher algorithm in CBC
+# mode) as the cipher (encryption) algorithm, and SHA-1 as the message digest
+# algorithm for HMAC.
+#
+# The LegacyAlgorithm can be one of the following standard algorithm names:
+# 1. JSSE cipher suite name, e.g., TLS_RSA_WITH_AES_128_CBC_SHA
+# 2. JSSE key exchange algorithm name, e.g., RSA
+# 3. JSSE cipher (encryption) algorithm name, e.g., AES_128_CBC
+# 4. JSSE message digest algorithm name, e.g., SHA
+#
+# See SSL/TLS specifications and "Java Cryptography Architecture Standard
+# Algorithm Name Documentation" for information about the algorithm names.
+#
+# Note: This property is currently used by Oracle's JSSE implementation.
+# It is not guaranteed to be examined and used by other implementations.
+# There is no guarantee the property will continue to exist or be of the
+# same syntax in future releases.
+#
+# Example:
+# jdk.tls.legacyAlgorithms=DH_anon, DES_CBC, SSL_RSA_WITH_RC4_128_MD5
+#
+jdk.tls.legacyAlgorithms= \
+ K_NULL, C_NULL, M_NULL, \
+ DHE_DSS_EXPORT, DHE_RSA_EXPORT, DH_anon_EXPORT, DH_DSS_EXPORT, \
+ DH_RSA_EXPORT, RSA_EXPORT, \
+ DH_anon, ECDH_anon, \
+ RC4_128, RC4_40, DES_CBC, DES40_CBC
+
+# The pre-defined default finite field Diffie-Hellman ephemeral (DHE)
+# parameters for Transport Layer Security (SSL/TLS/DTLS) processing.
+#
+# In traditional SSL/TLS/DTLS connections where finite field DHE parameters
+# negotiation mechanism is not used, the server offers the client group
+# parameters, base generator g and prime modulus p, for DHE key exchange.
+# It is recommended to use dynamic group parameters. This property defines
+# a mechanism that allows you to specify custom group parameters.
+#
+# The syntax of this property string is described as this Java BNF-style:
+# DefaultDHEParameters:
+# DefinedDHEParameters { , DefinedDHEParameters }
+#
+# DefinedDHEParameters:
+# "{" DHEPrimeModulus , DHEBaseGenerator "}"
+#
+# DHEPrimeModulus:
+# HexadecimalDigits
+#
+# DHEBaseGenerator:
+# HexadecimalDigits
+#
+# HexadecimalDigits:
+# HexadecimalDigit { HexadecimalDigit }
+#
+# HexadecimalDigit: one of
+# 0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f
+#
+# Whitespace characters are ignored.
+#
+# The "DefinedDHEParameters" defines the custom group parameters, prime
+# modulus p and base generator g, for a particular size of prime modulus p.
+# The "DHEPrimeModulus" defines the hexadecimal prime modulus p, and the
+# "DHEBaseGenerator" defines the hexadecimal base generator g of a group
+# parameter. It is recommended to use safe primes for the custom group
+# parameters.
+#
+# If this property is not defined or the value is empty, the underlying JSSE
+# provider's default group parameter is used for each connection.
+#
+# If the property value does not follow the grammar, or a particular group
+# parameter is not valid, the connection will fall back and use the
+# underlying JSSE provider's default group parameter.
+#
+# Note: This property is currently used by OpenJDK's JSSE implementation. It
+# is not guaranteed to be examined and used by other implementations.
+#
+# Example:
+# jdk.tls.server.defaultDHEParameters=
+# { \
+# FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 \
+# 29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD \
+# EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245 \
+# E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED \
+# EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE65381 \
+# FFFFFFFF FFFFFFFF, 2}
--- ./jdk/src/share/lib/security/java.security-macosx 2015-12-12 10:53:29.817806000 -0800
+++ ./jdk/src/share/lib/security/java.security-macosx 2015-10-24 06:21:17.000000000 -0700
@@ -512,4 +512,118 @@
#
# Example:
# jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048
-jdk.tls.disabledAlgorithms=SSLv3, RC4
+jdk.tls.disabledAlgorithms=SSLv3, RC4, DH keySize < 768
+
+# Legacy algorithms for Secure Socket Layer/Transport Layer Security (SSL/TLS)
+# processing in JSSE implementation.
+#
+# In some environments, a certain algorithm may be undesirable but it
+# cannot be disabled because of its use in legacy applications. Legacy
+# algorithms may still be supported, but applications should not use them
+# as the security strength of legacy algorithms are usually not strong enough
+# in practice.
+#
+# During SSL/TLS security parameters negotiation, legacy algorithms will
+# not be negotiated unless there are no other candidates.
+#
+# The syntax of the disabled algorithm string is described as this Java
+# BNF-style:
+# LegacyAlgorithms:
+# " LegacyAlgorithm { , LegacyAlgorithm } "
+#
+# LegacyAlgorithm:
+# AlgorithmName (standard JSSE algorithm name)
+#
+# See the specification of security property "jdk.certpath.disabledAlgorithms"
+# for the syntax and description of the "AlgorithmName" notation.
+#
+# Per SSL/TLS specifications, cipher suites have the form:
+# SSL_KeyExchangeAlg_WITH_CipherAlg_MacAlg
+# or
+# TLS_KeyExchangeAlg_WITH_CipherAlg_MacAlg
+#
+# For example, the cipher suite TLS_RSA_WITH_AES_128_CBC_SHA uses RSA as the
+# key exchange algorithm, AES_128_CBC (128 bits AES cipher algorithm in CBC
+# mode) as the cipher (encryption) algorithm, and SHA-1 as the message digest
+# algorithm for HMAC.
+#
+# The LegacyAlgorithm can be one of the following standard algorithm names:
+# 1. JSSE cipher suite name, e.g., TLS_RSA_WITH_AES_128_CBC_SHA
+# 2. JSSE key exchange algorithm name, e.g., RSA
+# 3. JSSE cipher (encryption) algorithm name, e.g., AES_128_CBC
+# 4. JSSE message digest algorithm name, e.g., SHA
+#
+# See SSL/TLS specifications and "Java Cryptography Architecture Standard
+# Algorithm Name Documentation" for information about the algorithm names.
+#
+# Note: This property is currently used by Oracle's JSSE implementation.
+# It is not guaranteed to be examined and used by other implementations.
+# There is no guarantee the property will continue to exist or be of the
+# same syntax in future releases.
+#
+# Example:
+# jdk.tls.legacyAlgorithms=DH_anon, DES_CBC, SSL_RSA_WITH_RC4_128_MD5
+#
+jdk.tls.legacyAlgorithms= \
+ K_NULL, C_NULL, M_NULL, \
+ DHE_DSS_EXPORT, DHE_RSA_EXPORT, DH_anon_EXPORT, DH_DSS_EXPORT, \
+ DH_RSA_EXPORT, RSA_EXPORT, \
+ DH_anon, ECDH_anon, \
+ RC4_128, RC4_40, DES_CBC, DES40_CBC
+
+# The pre-defined default finite field Diffie-Hellman ephemeral (DHE)
+# parameters for Transport Layer Security (SSL/TLS/DTLS) processing.
+#
+# In traditional SSL/TLS/DTLS connections where finite field DHE parameters
+# negotiation mechanism is not used, the server offers the client group
+# parameters, base generator g and prime modulus p, for DHE key exchange.
+# It is recommended to use dynamic group parameters. This property defines
+# a mechanism that allows you to specify custom group parameters.
+#
+# The syntax of this property string is described as this Java BNF-style:
+# DefaultDHEParameters:
+# DefinedDHEParameters { , DefinedDHEParameters }
+#
+# DefinedDHEParameters:
+# "{" DHEPrimeModulus , DHEBaseGenerator "}"
+#
+# DHEPrimeModulus:
+# HexadecimalDigits
+#
+# DHEBaseGenerator:
+# HexadecimalDigits
+#
+# HexadecimalDigits:
+# HexadecimalDigit { HexadecimalDigit }
+#
+# HexadecimalDigit: one of
+# 0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f
+#
+# Whitespace characters are ignored.
+#
+# The "DefinedDHEParameters" defines the custom group parameters, prime
+# modulus p and base generator g, for a particular size of prime modulus p.
+# The "DHEPrimeModulus" defines the hexadecimal prime modulus p, and the
+# "DHEBaseGenerator" defines the hexadecimal base generator g of a group
+# parameter. It is recommended to use safe primes for the custom group
+# parameters.
+#
+# If this property is not defined or the value is empty, the underlying JSSE
+# provider's default group parameter is used for each connection.
+#
+# If the property value does not follow the grammar, or a particular group
+# parameter is not valid, the connection will fall back and use the
+# underlying JSSE provider's default group parameter.
+#
+# Note: This property is currently used by OpenJDK's JSSE implementation. It
+# is not guaranteed to be examined and used by other implementations.
+#
+# Example:
+# jdk.tls.server.defaultDHEParameters=
+# { \
+# FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 \
+# 29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD \
+# EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245 \
+# E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED \
+# EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE65381 \
+# FFFFFFFF FFFFFFFF, 2}
--- ./jdk/src/share/lib/security/java.security-solaris 2015-12-12 10:53:29.818188000 -0800
+++ ./jdk/src/share/lib/security/java.security-solaris 2015-10-24 06:21:17.000000000 -0700
@@ -511,4 +511,118 @@
#
# Example:
# jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048
-jdk.tls.disabledAlgorithms=SSLv3, RC4
+jdk.tls.disabledAlgorithms=SSLv3, RC4, DH keySize < 768
+
+# Legacy algorithms for Secure Socket Layer/Transport Layer Security (SSL/TLS)
+# processing in JSSE implementation.
+#
+# In some environments, a certain algorithm may be undesirable but it
+# cannot be disabled because of its use in legacy applications. Legacy
+# algorithms may still be supported, but applications should not use them
+# as the security strength of legacy algorithms are usually not strong enough
+# in practice.
+#
+# During SSL/TLS security parameters negotiation, legacy algorithms will
+# not be negotiated unless there are no other candidates.
+#
+# The syntax of the disabled algorithm string is described as this Java
+# BNF-style:
+# LegacyAlgorithms:
+# " LegacyAlgorithm { , LegacyAlgorithm } "
+#
+# LegacyAlgorithm:
+# AlgorithmName (standard JSSE algorithm name)
+#
+# See the specification of security property "jdk.certpath.disabledAlgorithms"
+# for the syntax and description of the "AlgorithmName" notation.
+#
+# Per SSL/TLS specifications, cipher suites have the form:
+# SSL_KeyExchangeAlg_WITH_CipherAlg_MacAlg
+# or
+# TLS_KeyExchangeAlg_WITH_CipherAlg_MacAlg
+#
+# For example, the cipher suite TLS_RSA_WITH_AES_128_CBC_SHA uses RSA as the
+# key exchange algorithm, AES_128_CBC (128 bits AES cipher algorithm in CBC
+# mode) as the cipher (encryption) algorithm, and SHA-1 as the message digest
+# algorithm for HMAC.
+#
+# The LegacyAlgorithm can be one of the following standard algorithm names:
+# 1. JSSE cipher suite name, e.g., TLS_RSA_WITH_AES_128_CBC_SHA
+# 2. JSSE key exchange algorithm name, e.g., RSA
+# 3. JSSE cipher (encryption) algorithm name, e.g., AES_128_CBC
+# 4. JSSE message digest algorithm name, e.g., SHA
+#
+# See SSL/TLS specifications and "Java Cryptography Architecture Standard
+# Algorithm Name Documentation" for information about the algorithm names.
+#
+# Note: This property is currently used by Oracle's JSSE implementation.
+# It is not guaranteed to be examined and used by other implementations.
+# There is no guarantee the property will continue to exist or be of the
+# same syntax in future releases.
+#
+# Example:
+# jdk.tls.legacyAlgorithms=DH_anon, DES_CBC, SSL_RSA_WITH_RC4_128_MD5
+#
+jdk.tls.legacyAlgorithms= \
+ K_NULL, C_NULL, M_NULL, \
+ DHE_DSS_EXPORT, DHE_RSA_EXPORT, DH_anon_EXPORT, DH_DSS_EXPORT, \
+ DH_RSA_EXPORT, RSA_EXPORT, \
+ DH_anon, ECDH_anon, \
+ RC4_128, RC4_40, DES_CBC, DES40_CBC
+
+# The pre-defined default finite field Diffie-Hellman ephemeral (DHE)
+# parameters for Transport Layer Security (SSL/TLS/DTLS) processing.
+#
+# In traditional SSL/TLS/DTLS connections where finite field DHE parameters
+# negotiation mechanism is not used, the server offers the client group
+# parameters, base generator g and prime modulus p, for DHE key exchange.
+# It is recommended to use dynamic group parameters. This property defines
+# a mechanism that allows you to specify custom group parameters.
+#
+# The syntax of this property string is described as this Java BNF-style:
+# DefaultDHEParameters:
+# DefinedDHEParameters { , DefinedDHEParameters }
+#
+# DefinedDHEParameters:
+# "{" DHEPrimeModulus , DHEBaseGenerator "}"
+#
+# DHEPrimeModulus:
+# HexadecimalDigits
+#
+# DHEBaseGenerator:
+# HexadecimalDigits
+#
+# HexadecimalDigits:
+# HexadecimalDigit { HexadecimalDigit }
+#
+# HexadecimalDigit: one of
+# 0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f
+#
+# Whitespace characters are ignored.
+#
+# The "DefinedDHEParameters" defines the custom group parameters, prime
+# modulus p and base generator g, for a particular size of prime modulus p.
+# The "DHEPrimeModulus" defines the hexadecimal prime modulus p, and the
+# "DHEBaseGenerator" defines the hexadecimal base generator g of a group
+# parameter. It is recommended to use safe primes for the custom group
+# parameters.
+#
+# If this property is not defined or the value is empty, the underlying JSSE
+# provider's default group parameter is used for each connection.
+#
+# If the property value does not follow the grammar, or a particular group
+# parameter is not valid, the connection will fall back and use the
+# underlying JSSE provider's default group parameter.
+#
+# Note: This property is currently used by OpenJDK's JSSE implementation. It
+# is not guaranteed to be examined and used by other implementations.
+#
+# Example:
+# jdk.tls.server.defaultDHEParameters=
+# { \
+# FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 \
+# 29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD \
+# EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245 \
+# E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED \
+# EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE65381 \
+# FFFFFFFF FFFFFFFF, 2}
--- ./jdk/src/share/lib/security/java.security-windows 2015-12-12 10:53:29.818592000 -0800
+++ ./jdk/src/share/lib/security/java.security-windows 2015-10-24 06:21:17.000000000 -0700
@@ -512,4 +512,118 @@
#
# Example:
# jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048
-jdk.tls.disabledAlgorithms=SSLv3, RC4
+jdk.tls.disabledAlgorithms=SSLv3, RC4, DH keySize < 768
+
+# Legacy algorithms for Secure Socket Layer/Transport Layer Security (SSL/TLS)
+# processing in JSSE implementation.
+#
+# In some environments, a certain algorithm may be undesirable but it
+# cannot be disabled because of its use in legacy applications. Legacy
+# algorithms may still be supported, but applications should not use them
+# as the security strength of legacy algorithms are usually not strong enough
+# in practice.
+#
+# During SSL/TLS security parameters negotiation, legacy algorithms will
+# not be negotiated unless there are no other candidates.
+#
+# The syntax of the disabled algorithm string is described as this Java
+# BNF-style:
+# LegacyAlgorithms:
+# " LegacyAlgorithm { , LegacyAlgorithm } "
+#
+# LegacyAlgorithm:
+# AlgorithmName (standard JSSE algorithm name)
+#
+# See the specification of security property "jdk.certpath.disabledAlgorithms"
+# for the syntax and description of the "AlgorithmName" notation.
+#
+# Per SSL/TLS specifications, cipher suites have the form:
+# SSL_KeyExchangeAlg_WITH_CipherAlg_MacAlg
+# or
+# TLS_KeyExchangeAlg_WITH_CipherAlg_MacAlg
+#
+# For example, the cipher suite TLS_RSA_WITH_AES_128_CBC_SHA uses RSA as the
+# key exchange algorithm, AES_128_CBC (128 bits AES cipher algorithm in CBC
+# mode) as the cipher (encryption) algorithm, and SHA-1 as the message digest
+# algorithm for HMAC.
+#
+# The LegacyAlgorithm can be one of the following standard algorithm names:
+# 1. JSSE cipher suite name, e.g., TLS_RSA_WITH_AES_128_CBC_SHA
+# 2. JSSE key exchange algorithm name, e.g., RSA
+# 3. JSSE cipher (encryption) algorithm name, e.g., AES_128_CBC
+# 4. JSSE message digest algorithm name, e.g., SHA
+#
+# See SSL/TLS specifications and "Java Cryptography Architecture Standard
+# Algorithm Name Documentation" for information about the algorithm names.
+#
+# Note: This property is currently used by Oracle's JSSE implementation.
+# It is not guaranteed to be examined and used by other implementations.
+# There is no guarantee the property will continue to exist or be of the
+# same syntax in future releases.
+#
+# Example:
+# jdk.tls.legacyAlgorithms=DH_anon, DES_CBC, SSL_RSA_WITH_RC4_128_MD5
+#
+jdk.tls.legacyAlgorithms= \
+ K_NULL, C_NULL, M_NULL, \
+ DHE_DSS_EXPORT, DHE_RSA_EXPORT, DH_anon_EXPORT, DH_DSS_EXPORT, \
+ DH_RSA_EXPORT, RSA_EXPORT, \
+ DH_anon, ECDH_anon, \
+ RC4_128, RC4_40, DES_CBC, DES40_CBC
+
+# The pre-defined default finite field Diffie-Hellman ephemeral (DHE)
+# parameters for Transport Layer Security (SSL/TLS/DTLS) processing.
+#
+# In traditional SSL/TLS/DTLS connections where finite field DHE parameters
+# negotiation mechanism is not used, the server offers the client group
+# parameters, base generator g and prime modulus p, for DHE key exchange.
+# It is recommended to use dynamic group parameters. This property defines
+# a mechanism that allows you to specify custom group parameters.
+#
+# The syntax of this property string is described as this Java BNF-style:
+# DefaultDHEParameters:
+# DefinedDHEParameters { , DefinedDHEParameters }
+#
+# DefinedDHEParameters:
+# "{" DHEPrimeModulus , DHEBaseGenerator "}"
+#
+# DHEPrimeModulus:
+# HexadecimalDigits
+#
+# DHEBaseGenerator:
+# HexadecimalDigits
+#
+# HexadecimalDigits:
+# HexadecimalDigit { HexadecimalDigit }
+#
+# HexadecimalDigit: one of
+# 0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f
+#
+# Whitespace characters are ignored.
+#
+# The "DefinedDHEParameters" defines the custom group parameters, prime
+# modulus p and base generator g, for a particular size of prime modulus p.
+# The "DHEPrimeModulus" defines the hexadecimal prime modulus p, and the
+# "DHEBaseGenerator" defines the hexadecimal base generator g of a group
+# parameter. It is recommended to use safe primes for the custom group
+# parameters.
+#
+# If this property is not defined or the value is empty, the underlying JSSE
+# provider's default group parameter is used for each connection.
+#
+# If the property value does not follow the grammar, or a particular group
+# parameter is not valid, the connection will fall back and use the
+# underlying JSSE provider's default group parameter.
+#
+# Note: This property is currently used by OpenJDK's JSSE implementation. It
+# is not guaranteed to be examined and used by other implementations.
+#
+# Example:
+# jdk.tls.server.defaultDHEParameters=
+# { \
+# FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 \
+# 29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD \
+# EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245 \
+# E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED \
+# EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE65381 \
+# FFFFFFFF FFFFFFFF, 2}
--- ./jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp 2015-12-12 10:53:22.129769000 -0800
+++ ./jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp 2015-10-24 06:21:20.000000000 -0700
@@ -62,7 +62,7 @@
#endif // End of ZLIB
-#ifdef _BIG_ENDIAN
+#ifdef VM_BIG_ENDIAN
#define SWAP_BYTES(a) \
((((a) << 8) & 0xff00) | 0x00ff) & (((a) >> 8) | 0xff00)
#else
--- ./jdk/src/share/native/com/sun/media/sound/DirectAudioDevice.c 2015-12-12 10:53:22.130522000 -0800
+++ ./jdk/src/share/native/com/sun/media/sound/DirectAudioDevice.c 2015-10-24 06:21:20.000000000 -0700
@@ -121,7 +121,7 @@
}
/* conversion from/to 16 bit signed little endian to native endian samples */
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
#define MAP_LE_SHORT2SAMPLE(sh) ((MAP_Sample) (sh))
#define MAP_SAMPLE2LE_SHORT(sample) (sample)
#define MAP_SAMPLE2LE_SHORT_CLIP(sample) MAP_ClipAndConvertToShort(sample)
@@ -132,7 +132,7 @@
#endif
/* conversion from/to 16 bit signed big endian to native endian samples */
-#ifndef _LITTLE_ENDIAN
+#ifndef VM_LITTLE_ENDIAN
#define MAP_BE_SHORT2SAMPLE(sh) ((MAP_Sample) (sh))
#define MAP_SAMPLE2BE_SHORT(sample) (sample)
#define MAP_SAMPLE2BE_SHORT_CLIP(sample) MAP_ClipAndConvertToShort(sample)
@@ -151,7 +151,7 @@
#define MAP_SAMPLE2INT8_CLIP(sample) MAP_ClipAndConvertToByte(sample)
/* macros for endian conversion */
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
#define MAP_NATIVE2LE16(a) (a)
#define MAP_NATIVE2BE16(a) MAP_SWAP16_impl(a)
#define MAP_NATIVE2LE32(a) (a)
--- ./jdk/src/share/native/com/sun/media/sound/Utilities.c 2014-03-03 18:59:33.000000000 -0800
+++ ./jdk/src/share/native/com/sun/media/sound/Utilities.c 2015-10-24 06:21:20.000000000 -0700
@@ -28,7 +28,7 @@
int UTIL_IsBigEndianPlatform() {
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
return 0;
#else
return 1;
--- ./jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h 2014-03-03 18:59:34.000000000 -0800
+++ ./jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h 2015-10-24 06:21:20.000000000 -0700
@@ -40,7 +40,7 @@
#endif
#endif
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
#define __HI(x) *(1+(int*)&x)
#define __LO(x) *(int*)&x
#define __HIp(x) *(1+(int*)x)
--- ./jdk/src/share/native/java/net/InetAddress.c 2014-03-03 18:59:35.000000000 -0800
+++ ./jdk/src/share/native/java/net/InetAddress.c 2015-10-24 06:21:18.000000000 -0700
@@ -38,6 +38,7 @@
jfieldID iac_addressID;
jfieldID iac_familyID;
jfieldID iac_hostNameID;
+jfieldID iac_origHostNameID;
jfieldID ia_preferIPv6AddressID;
/*
@@ -64,4 +65,6 @@
iac_familyID = (*env)->GetFieldID(env, iac_class, "family", "I");
CHECK_NULL(iac_familyID);
iac_hostNameID = (*env)->GetFieldID(env, iac_class, "hostName", "Ljava/lang/String;");
+ CHECK_NULL(iac_hostNameID);
+ iac_origHostNameID = (*env)->GetFieldID(env, iac_class, "originalHostName", "Ljava/lang/String;");
}
--- ./jdk/src/share/native/java/net/net_util.c 2015-12-12 10:53:22.134059000 -0800
+++ ./jdk/src/share/native/java/net/net_util.c 2015-10-24 06:21:18.000000000 -0700
@@ -199,6 +199,7 @@
initInetAddrs(env);
holder = (*env)->GetObjectField(env, iaObj, ia_holderID);
(*env)->SetObjectField(env, holder, iac_hostNameID, host);
+ (*env)->SetObjectField(env, holder, iac_origHostNameID, host);
}
int getInetAddress_addr(JNIEnv *env, jobject iaObj) {
--- ./jdk/src/share/native/java/net/net_util.h 2015-12-12 10:53:29.819237000 -0800
+++ ./jdk/src/share/native/java/net/net_util.h 2015-10-24 06:21:18.000000000 -0700
@@ -53,6 +53,7 @@
extern jfieldID iac_addressID;
extern jfieldID iac_familyID;
extern jfieldID iac_hostNameID;
+extern jfieldID iac_origHostNameID;
extern jfieldID ia_preferIPv6AddressID;
/** (Inet6Address accessors)
--- ./jdk/src/share/native/sun/awt/image/awt_parseImage.c 2015-12-12 10:53:27.562370000 -0800
+++ ./jdk/src/share/native/sun/awt/image/awt_parseImage.c 2015-10-24 06:21:20.000000000 -0700
@@ -624,7 +624,7 @@
switch(type) {
case java_awt_image_BufferedImage_TYPE_INT_ARGB:
case java_awt_image_BufferedImage_TYPE_INT_ARGB_PRE:
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
colorOrder[0] = 2;
colorOrder[1] = 1;
colorOrder[2] = 0;
@@ -637,7 +637,7 @@
#endif
break;
case java_awt_image_BufferedImage_TYPE_INT_BGR:
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
colorOrder[0] = 0;
colorOrder[1] = 1;
colorOrder[2] = 2;
@@ -648,7 +648,7 @@
#endif
break;
case java_awt_image_BufferedImage_TYPE_INT_RGB:
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
colorOrder[0] = 2;
colorOrder[1] = 1;
colorOrder[2] = 0;
--- ./jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c 2015-12-12 10:53:22.241091000 -0800
+++ ./jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c 2015-10-24 06:21:20.000000000 -0700
@@ -1176,7 +1176,7 @@
#define NLUT 8
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
#define INDEXES { 3, 2, 1, 0, 7, 6, 5, 4 }
#else
#define INDEXES { 0, 1, 2, 3, 4, 5, 6, 7 }
--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv2x2_f.c 2014-03-03 18:59:37.000000000 -0800
+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv2x2_f.c 2015-10-24 06:21:20.000000000 -0700
@@ -86,7 +86,7 @@
#endif /* MLIB_USE_FTOI_CLAMPING */
/***************************************************************/
-#if defined(_LITTLE_ENDIAN) && !defined(_NO_LONGLONG)
+#if defined(VM_LITTLE_ENDIAN) && !defined(_NO_LONGLONG)
/* NB: Explicit cast to DTYPE is necessary to avoid warning from Microsoft VC compiler.
And we need to explicitly define cast behavior if source exceeds destination range.
@@ -103,7 +103,7 @@
dp[0 ] = (DTYPE) ((res0) & DTYPE_MASK); \
dp[chan1] = (DTYPE) ((res1) & DTYPE_MASK)
-#endif /* defined(_LITTLE_ENDIAN) && !defined(_NO_LONGLONG) */
+#endif /* defined(VM_LITTLE_ENDIAN) && !defined(_NO_LONGLONG) */
/***************************************************************/
#ifdef _NO_LONGLONG
@@ -114,17 +114,17 @@
#else /* _NO_LONGLONG */
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
#define LOAD_BUFF(buff) \
*(mlib_s64*)(buff + i) = (((mlib_s64)sp[chan1]) << 32) | ((mlib_s64)sp[0] & 0xffffffff)
-#else /* _LITTLE_ENDIAN */
+#else /* VM_LITTLE_ENDIAN */
#define LOAD_BUFF(buff) \
*(mlib_s64*)(buff + i) = (((mlib_s64)sp[0]) << 32) | ((mlib_s64)sp[chan1] & 0xffffffff)
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
#endif /* _NO_LONGLONG */
--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16ext.c 2014-03-03 18:59:37.000000000 -0800
+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16ext.c 2015-10-24 06:21:20.000000000 -0700
@@ -126,7 +126,7 @@
#define D2I(x) CLAMP_S32((x) SAT_OFF)
/***************************************************************/
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
#define STORE2(res0, res1) \
dp[0 ] = res1; \
@@ -138,7 +138,7 @@
dp[0 ] = res0; \
dp[chan1] = res1
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
/***************************************************************/
#ifdef _NO_LONGLONG
@@ -149,17 +149,17 @@
#else /* _NO_LONGLONG */
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
#define LOAD_BUFF(buff) \
*(mlib_s64*)(buff + i) = (((mlib_s64)sp[chan1]) << 32) | S64TOS32((mlib_s64)sp[0])
-#else /* _LITTLE_ENDIAN */
+#else /* VM_LITTLE_ENDIAN */
#define LOAD_BUFF(buff) \
*(mlib_s64*)(buff + i) = (((mlib_s64)sp[0]) << 32) | S64TOS32((mlib_s64)sp[chan1])
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
#endif /* _NO_LONGLONG */
/***************************************************************/
--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16nw.c 2014-03-03 18:59:37.000000000 -0800
+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16nw.c 2015-10-24 06:21:20.000000000 -0700
@@ -94,7 +94,7 @@
#define D2I(x) CLAMP_S32((x) SAT_OFF)
/***************************************************************/
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
#define STORE2(res0, res1) \
dp[0 ] = res1; \
@@ -106,7 +106,7 @@
dp[0 ] = res0; \
dp[chan1] = res1
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
/***************************************************************/
#ifdef _NO_LONGLONG
@@ -117,17 +117,17 @@
#else /* _NO_LONGLONG */
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
#define LOAD_BUFF(buff) \
*(mlib_s64*)(buff + i) = (((mlib_s64)sp[chan1]) << 32) | S64TOS32((mlib_s64)sp[0])
-#else /* _LITTLE_ENDIAN */
+#else /* VM_LITTLE_ENDIAN */
#define LOAD_BUFF(buff) \
*(mlib_s64*)(buff + i) = (((mlib_s64)sp[0]) << 32) | S64TOS32((mlib_s64)sp[chan1])
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
#endif /* _NO_LONGLONG */
/***************************************************************/
--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8ext.c 2014-03-03 18:59:38.000000000 -0800
+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8ext.c 2015-10-24 06:21:20.000000000 -0700
@@ -126,7 +126,7 @@
#define D2I(x) CLAMP_S32((x) SAT_OFF)
/***************************************************************/
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
#define STORE2(res0, res1) \
dp[0 ] = res1; \
@@ -138,7 +138,7 @@
dp[0 ] = res0; \
dp[chan1] = res1
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
/***************************************************************/
#ifdef _NO_LONGLONG
@@ -149,17 +149,17 @@
#else /* _NO_LONGLONG */
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
#define LOAD_BUFF(buff) \
*(mlib_s64*)(buff + i) = (((mlib_s64)sp[chan1]) << 32) | S64TOS32((mlib_s64)sp[0])
-#else /* _LITTLE_ENDIAN */
+#else /* VM_LITTLE_ENDIAN */
#define LOAD_BUFF(buff) \
*(mlib_s64*)(buff + i) = (((mlib_s64)sp[0]) << 32) | S64TOS32((mlib_s64)sp[chan1])
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
#endif /* _NO_LONGLONG */
/***************************************************************/
--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8nw.c 2014-03-03 18:59:38.000000000 -0800
+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8nw.c 2015-10-24 06:21:20.000000000 -0700
@@ -95,7 +95,7 @@
#define D2I(x) CLAMP_S32((x) SAT_OFF)
/***************************************************************/
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
#define STORE2(res0, res1) \
dp[0 ] = res1; \
@@ -107,7 +107,7 @@
dp[0 ] = res0; \
dp[chan1] = res1
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
/***************************************************************/
#ifdef _NO_LONGLONG
@@ -118,17 +118,17 @@
#else /* _NO_LONGLONG */
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
#define LOAD_BUFF(buff) \
*(mlib_s64*)(buff + i) = (((mlib_s64)sp[chan1]) << 32) | S64TOS32((mlib_s64)sp[0])
-#else /* _LITTLE_ENDIAN */
+#else /* VM_LITTLE_ENDIAN */
#define LOAD_BUFF(buff) \
*(mlib_s64*)(buff + i) = (((mlib_s64)sp[0]) << 32) | S64TOS32((mlib_s64)sp[chan1])
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
#endif /* _NO_LONGLONG */
/***************************************************************/
--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16ext.c 2014-03-03 18:59:38.000000000 -0800
+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16ext.c 2015-10-24 06:21:20.000000000 -0700
@@ -126,7 +126,7 @@
#define D2I(x) CLAMP_S32((x) SAT_OFF)
/***************************************************************/
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
#define STORE2(res0, res1) \
dp[0 ] = res1; \
@@ -138,7 +138,7 @@
dp[0 ] = res0; \
dp[chan1] = res1
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
/***************************************************************/
#ifdef _NO_LONGLONG
@@ -149,17 +149,17 @@
#else /* _NO_LONGLONG */
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
#define LOAD_BUFF(buff) \
*(mlib_s64*)(buff + i) = (((mlib_s64)sp[chan1]) << 32) | S64TOS32((mlib_s64)sp[0])
-#else /* _LITTLE_ENDIAN */
+#else /* VM_LITTLE_ENDIAN */
#define LOAD_BUFF(buff) \
*(mlib_s64*)(buff + i) = (((mlib_s64)sp[0]) << 32) | S64TOS32((mlib_s64)sp[chan1])
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
#endif /* _NO_LONGLONG */
/***************************************************************/
--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16nw.c 2014-03-03 18:59:38.000000000 -0800
+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16nw.c 2015-10-24 06:21:20.000000000 -0700
@@ -94,7 +94,7 @@
#define D2I(x) CLAMP_S32((x) SAT_OFF)
/***************************************************************/
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
#define STORE2(res0, res1) \
dp[0 ] = res1; \
@@ -106,7 +106,7 @@
dp[0 ] = res0; \
dp[chan1] = res1
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
/***************************************************************/
#ifdef _NO_LONGLONG
@@ -117,17 +117,17 @@
#else /* _NO_LONGLONG */
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
#define LOAD_BUFF(buff) \
*(mlib_s64*)(buff + i) = (((mlib_s64)sp[chan1]) << 32) | S64TOS32((mlib_s64)sp[0])
-#else /* _LITTLE_ENDIAN */
+#else /* VM_LITTLE_ENDIAN */
#define LOAD_BUFF(buff) \
*(mlib_s64*)(buff + i) = (((mlib_s64)sp[0]) << 32) | S64TOS32((mlib_s64)sp[chan1])
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
#endif /* _NO_LONGLONG */
/***************************************************************/
--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageCopy_Bit.c 2014-03-03 18:59:38.000000000 -0800
+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageCopy_Bit.c 2015-10-24 06:21:20.000000000 -0700
@@ -95,7 +95,7 @@
dst = dp[0];
if (ld_offset + size < 32) {
dmask = (mask0 << (32 - size)) >> ld_offset;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
src0 = (src0 << 24) | ((src0 & 0xFF00) << 8) | ((src0 >> 8) & 0xFF00) | (src0 >> 24);
src = (src0 >> (ld_offset - ls_offset));
dst = (dst << 24) | ((dst & 0xFF00) << 8) | ((dst >> 8) & 0xFF00) | (dst >> 24);
@@ -104,12 +104,12 @@
#else
src = (src0 >> (ld_offset - ls_offset));
dp[0] = (dst & (~dmask)) | (src & dmask);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
return;
}
dmask = mask0 >> ld_offset;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
src0 = (src0 << 24) | ((src0 & 0xFF00) << 8) | ((src0 >> 8) & 0xFF00) | (src0 >> 24);
src = (src0 >> (ld_offset - ls_offset));
dst = (dst << 24) | ((dst & 0xFF00) << 8) | ((dst >> 8) & 0xFF00) | (dst >> 24);
@@ -118,7 +118,7 @@
#else
src = (src0 >> (ld_offset - ls_offset));
dp[0] = (dst & ~dmask) | (src & dmask);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
j = 32 - ld_offset;
dp++;
ls_offset += j;
@@ -131,7 +131,7 @@
if (ld_offset + size < 32) {
dmask = (mask0 << (32 - size)) >> ld_offset;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
src0 = (src0 << 24) | ((src0 & 0xFF00) << 8) | ((src0 >> 8) & 0xFF00) | (src0 >> 24);
src1 = (src1 << 24) | ((src1 & 0xFF00) << 8) | ((src1 >> 8) & 0xFF00) | (src1 >> 24);
src = (src0 << shift) | (src1 >> (32 - shift));
@@ -141,12 +141,12 @@
#else
src = (src0 << shift) | (src1 >> (32 - shift));
dp[0] = (dst & ~dmask) | (src & dmask);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
return;
}
dmask = mask0 >> ld_offset;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
src0 = (src0 << 24) | ((src0 & 0xFF00) << 8) | ((src0 >> 8) & 0xFF00) | (src0 >> 24);
src1 = (src1 << 24) | ((src1 & 0xFF00) << 8) | ((src1 >> 8) & 0xFF00) | (src1 >> 24);
src = (src0 << shift) | (src1 >> (32 - shift));
@@ -156,7 +156,7 @@
#else
src = (src0 << shift) | (src1 >> (32 - shift));
dp[0] = (dst & ~dmask) | (src & dmask);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
j = 32 - ld_offset;
dp++;
sp++;
@@ -164,19 +164,19 @@
}
if (j < size) src1 = sp[0];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
src1 = (src1 << 24) | ((src1 & 0xFF00) << 8) | ((src1 >> 8) & 0xFF00) | (src1 >> 24);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
for (; j <= size - 32; j += 32) {
src0 = src1;
src1 = sp[1];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
src1 = (src1 << 24) | ((src1 & 0xFF00) << 8) | ((src1 >> 8) & 0xFF00) | (src1 >> 24);
src = (src0 << ls_offset) | (src1 >> (32 - ls_offset));
dp[0] = (src << 24) | ((src & 0xFF00) << 8) | ((src >> 8) & 0xFF00) | (src >> 24);
#else
dp[0] = (src0 << ls_offset) | (src1 >> (32 - ls_offset));
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
sp++;
dp++;
}
@@ -187,7 +187,7 @@
if (ls_offset + j > 32) src1 = sp[1];
dst = dp[0];
dmask = mask0 << (32 - j);
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
src1 = (src1 << 24) | ((src1 & 0xFF00) << 8) | ((src1 >> 8) & 0xFF00) | (src1 >> 24);
src = (src0 << ls_offset) | (src1 >> (32 - ls_offset));
dst = (dst << 24) | ((dst & 0xFF00) << 8) | ((dst >> 8) & 0xFF00) | (dst >> 24);
@@ -196,7 +196,7 @@
#else
src = (src0 << ls_offset) | (src1 >> (32 - ls_offset));
dp[0] = (dst & ~dmask) | (src & dmask);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
}
#else /* _LONGLONG */
@@ -315,7 +315,7 @@
dst = dp[0];
if (ld_offset >= size) {
dmask = (lmask0 << (32 - size)) >> (ld_offset - size);
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
src0 = (src0 << 24) | ((src0 & 0xFF00) << 8) | ((src0 >> 8) & 0xFF00) | (src0 >> 24);
src = (src0 << (ls_offset - ld_offset));
dst = (dst << 24) | ((dst & 0xFF00) << 8) | ((dst >> 8) & 0xFF00) | (dst >> 24);
@@ -324,12 +324,12 @@
#else
src = (src0 << (ls_offset - ld_offset));
dp[0] = (dst & (~dmask)) | (src & dmask);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
return;
}
dmask = lmask0 << (32 - ld_offset);
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
src0 = (src0 << 24) | ((src0 & 0xFF00) << 8) | ((src0 >> 8) & 0xFF00) | (src0 >> 24);
src = (src0 << (ls_offset - ld_offset));
dst = (dst << 24) | ((dst & 0xFF00) << 8) | ((dst >> 8) & 0xFF00) | (dst >> 24);
@@ -338,7 +338,7 @@
#else
src = (src0 << (ls_offset - ld_offset));
dp[0] = (dst & ~dmask) | (src & dmask);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
j = ld_offset;
dp--;
ls_offset -= j;
@@ -351,7 +351,7 @@
if (ld_offset >= size) {
dmask = (lmask0 << (32 - size)) >> (ld_offset - size);
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
src0 = (src0 << 24) | ((src0 & 0xFF00) << 8) | ((src0 >> 8) & 0xFF00) | (src0 >> 24);
src1 = (src1 << 24) | ((src1 & 0xFF00) << 8) | ((src1 >> 8) & 0xFF00) | (src1 >> 24);
src = (src0 >> shift) | (src1 << (32 - shift));
@@ -361,12 +361,12 @@
#else
src = (src0 >> shift) | (src1 << (32 - shift));
dp[0] = (dst & ~dmask) | (src & dmask);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
return;
}
dmask = lmask0 << (32 - ld_offset);
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
src0 = (src0 << 24) | ((src0 & 0xFF00) << 8) | ((src0 >> 8) & 0xFF00) | (src0 >> 24);
src1 = (src1 << 24) | ((src1 & 0xFF00) << 8) | ((src1 >> 8) & 0xFF00) | (src1 >> 24);
src = (src0 >> shift) | (src1 << (32 - shift));
@@ -376,7 +376,7 @@
#else
src = (src0 >> shift) | (src1 << (32 - shift));
dp[0] = (dst & ~dmask) | (src & dmask);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
j = ld_offset;
dp--;
sp--;
@@ -384,22 +384,22 @@
}
if (j < size) src1 = sp[0];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
src1 = (src1 << 24) | ((src1 & 0xFF00) << 8) | ((src1 >> 8) & 0xFF00) | (src1 >> 24);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
#ifdef __SUNPRO_C
#pragma pipeloop(0)
#endif /* __SUNPRO_C */
for (; j <= size - 32; j += 32) {
src0 = src1;
src1 = sp[-1];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
src1 = (src1 << 24) | ((src1 & 0xFF00) << 8) | ((src1 >> 8) & 0xFF00) | (src1 >> 24);
src = (src0 >> (32 - ls_offset)) | (src1 << ls_offset);
dp[0] = (src << 24) | ((src & 0xFF00) << 8) | ((src >> 8) & 0xFF00) | (src >> 24);
#else
dp[0] = (src0 >> (32 - ls_offset)) | (src1 << ls_offset);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
sp--;
dp--;
}
@@ -410,7 +410,7 @@
if (ls_offset < j) src1 = sp[-1];
dst = dp[0];
dmask = lmask0 >> (32 - j);
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
src1 = (src1 << 24) | ((src1 & 0xFF00) << 8) | ((src1 >> 8) & 0xFF00) | (src1 >> 24);
src = (src0 >> (32 - ls_offset)) | (src1 << ls_offset);
dst = (dst << 24) | ((dst & 0xFF00) << 8) | ((dst >> 8) & 0xFF00) | (dst >> 24);
@@ -419,7 +419,7 @@
#else
src = (src0 >> (32 - ls_offset)) | (src1 << ls_offset);
dp[0] = (dst & ~dmask) | (src & dmask);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
}
#else /* _LONGLONG */
--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_64.c 2014-03-03 18:59:38.000000000 -0800
+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_64.c 2015-10-24 06:21:20.000000000 -0700
@@ -168,7 +168,7 @@
}
/***************************************************************/
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
#define READ_U8_D64(table0, table1, table2, table3) \
t0 = *(mlib_d64*)((mlib_u8*)table0 + ((s0 << 3) & 0x7F8)); \
@@ -184,7 +184,7 @@
t2 = *(mlib_d64*)((mlib_u8*)table2 + ((s0 >> 5) & 0x7F8)); \
t3 = *(mlib_d64*)((mlib_u8*)table3 + ((s0 << 3) & 0x7F8))
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
/***************************************************************/
void mlib_ImageLookUp_U8_D64(const mlib_u8 *src,
@@ -613,7 +613,7 @@
#pragma pipeloop(0)
#endif /* __SUNPRO_C */
for (i = 0; i < size - 7; i += 4, dp += 8, sa++) {
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 << 3) & 0x7F8));
t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 << 3) & 0x7F8));
t2 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 5) & 0x7F8));
@@ -623,12 +623,12 @@
t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 21) & 0x7F8));
t2 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 13) & 0x7F8));
t3 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 13) & 0x7F8));
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
dp[0] = t0;
dp[1] = t1;
dp[2] = t2;
dp[3] = t3;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 13) & 0x7F8));
t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 13) & 0x7F8));
t2 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 21) & 0x7F8));
@@ -638,7 +638,7 @@
t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 5) & 0x7F8));
t2 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 << 3) & 0x7F8));
t3 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 << 3) & 0x7F8));
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
s0 = sa[0];
dp[4] = t0;
dp[5] = t1;
@@ -646,7 +646,7 @@
dp[7] = t3;
}
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 << 3) & 0x7F8));
t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 << 3) & 0x7F8));
t2 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 5) & 0x7F8));
@@ -656,12 +656,12 @@
t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 21) & 0x7F8));
t2 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 13) & 0x7F8));
t3 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 13) & 0x7F8));
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
dp[0] = t0;
dp[1] = t1;
dp[2] = t2;
dp[3] = t3;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 13) & 0x7F8));
t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 13) & 0x7F8));
t2 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 21) & 0x7F8));
@@ -671,7 +671,7 @@
t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 5) & 0x7F8));
t2 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 << 3) & 0x7F8));
t3 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 << 3) & 0x7F8));
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
dp[4] = t0;
dp[5] = t1;
dp[6] = t2;
@@ -719,7 +719,7 @@
#pragma pipeloop(0)
#endif /* __SUNPRO_C */
for (i = 0; i < size - 7; i += 4, dp += 12, sa++) {
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 << 3) & 0x7F8));
t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 << 3) & 0x7F8));
t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 << 3) & 0x7F8));
@@ -733,14 +733,14 @@
t3 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 13) & 0x7F8));
t4 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 13) & 0x7F8));
t5 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 13) & 0x7F8));
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
dp[0] = t0;
dp[1] = t1;
dp[2] = t2;
dp[3] = t3;
dp[4] = t4;
dp[5] = t5;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 13) & 0x7F8));
t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 13) & 0x7F8));
t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 13) & 0x7F8));
@@ -754,7 +754,7 @@
t3 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 << 3) & 0x7F8));
t4 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 << 3) & 0x7F8));
t5 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 << 3) & 0x7F8));
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
s0 = sa[0];
dp[6] = t0;
dp[7] = t1;
@@ -764,7 +764,7 @@
dp[11] = t5;
}
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 << 3) & 0x7F8));
t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 << 3) & 0x7F8));
t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 << 3) & 0x7F8));
@@ -778,14 +778,14 @@
t3 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 13) & 0x7F8));
t4 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 13) & 0x7F8));
t5 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 13) & 0x7F8));
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
dp[0] = t0;
dp[1] = t1;
dp[2] = t2;
dp[3] = t3;
dp[4] = t4;
dp[5] = t5;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 13) & 0x7F8));
t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 13) & 0x7F8));
t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 13) & 0x7F8));
@@ -799,7 +799,7 @@
t3 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 << 3) & 0x7F8));
t4 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 << 3) & 0x7F8));
t5 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 << 3) & 0x7F8));
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
dp[6] = t0;
dp[7] = t1;
dp[8] = t2;
@@ -852,7 +852,7 @@
#pragma pipeloop(0)
#endif /* __SUNPRO_C */
for (i = 0; i < size - 7; i += 4, dp += 16, sa++) {
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 << 3) & 0x7F8));
t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 << 3) & 0x7F8));
t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 << 3) & 0x7F8));
@@ -862,12 +862,12 @@
t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 21) & 0x7F8));
t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 21) & 0x7F8));
t3 = *(mlib_d64 *) ((mlib_u8 *) tab3 + ((s0 >> 21) & 0x7F8));
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
dp[0] = t0;
dp[1] = t1;
dp[2] = t2;
dp[3] = t3;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 5) & 0x7F8));
t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 5) & 0x7F8));
t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 5) & 0x7F8));
@@ -877,12 +877,12 @@
t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 13) & 0x7F8));
t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 13) & 0x7F8));
t3 = *(mlib_d64 *) ((mlib_u8 *) tab3 + ((s0 >> 13) & 0x7F8));
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
dp[4] = t0;
dp[5] = t1;
dp[6] = t2;
dp[7] = t3;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 13) & 0x7F8));
t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 13) & 0x7F8));
t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 13) & 0x7F8));
@@ -892,12 +892,12 @@
t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 5) & 0x7F8));
t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 5) & 0x7F8));
t3 = *(mlib_d64 *) ((mlib_u8 *) tab3 + ((s0 >> 5) & 0x7F8));
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
dp[8] = t0;
dp[9] = t1;
dp[10] = t2;
dp[11] = t3;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 21) & 0x7F8));
t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 21) & 0x7F8));
t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 21) & 0x7F8));
@@ -907,7 +907,7 @@
t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 << 3) & 0x7F8));
t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 << 3) & 0x7F8));
t3 = *(mlib_d64 *) ((mlib_u8 *) tab3 + ((s0 << 3) & 0x7F8));
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
s0 = sa[0];
dp[12] = t0;
dp[13] = t1;
@@ -915,7 +915,7 @@
dp[15] = t3;
}
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 << 3) & 0x7F8));
t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 << 3) & 0x7F8));
t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 << 3) & 0x7F8));
@@ -925,12 +925,12 @@
t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 21) & 0x7F8));
t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 21) & 0x7F8));
t3 = *(mlib_d64 *) ((mlib_u8 *) tab3 + ((s0 >> 21) & 0x7F8));
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
dp[0] = t0;
dp[1] = t1;
dp[2] = t2;
dp[3] = t3;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 5) & 0x7F8));
t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 5) & 0x7F8));
t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 5) & 0x7F8));
@@ -940,12 +940,12 @@
t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 13) & 0x7F8));
t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 13) & 0x7F8));
t3 = *(mlib_d64 *) ((mlib_u8 *) tab3 + ((s0 >> 13) & 0x7F8));
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
dp[4] = t0;
dp[5] = t1;
dp[6] = t2;
dp[7] = t3;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 13) & 0x7F8));
t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 13) & 0x7F8));
t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 13) & 0x7F8));
@@ -955,12 +955,12 @@
t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 5) & 0x7F8));
t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 5) & 0x7F8));
t3 = *(mlib_d64 *) ((mlib_u8 *) tab3 + ((s0 >> 5) & 0x7F8));
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
dp[8] = t0;
dp[9] = t1;
dp[10] = t2;
dp[11] = t3;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 21) & 0x7F8));
t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 21) & 0x7F8));
t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 21) & 0x7F8));
@@ -970,7 +970,7 @@
t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 << 3) & 0x7F8));
t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 << 3) & 0x7F8));
t3 = *(mlib_d64 *) ((mlib_u8 *) tab3 + ((s0 << 3) & 0x7F8));
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
dp[12] = t0;
dp[13] = t1;
dp[14] = t2;
--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_Bit.c 2014-03-03 18:59:38.000000000 -0800
+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_Bit.c 2015-10-24 06:21:20.000000000 -0700
@@ -88,7 +88,7 @@
} d64_2_f32;
/***************************************************************/
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
static const mlib_u32 mlib_bit_mask[16] = {
0x00000000u, 0xFF000000u, 0x00FF0000u, 0xFFFF0000u,
@@ -126,7 +126,7 @@
0x00000000u, 0x00FFFFFFu, 0xFF000000u, 0xFFFFFFFFu
};
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
/***************************************************************/
mlib_status mlib_ImageLookUp_Bit_U8_1(const mlib_u8 *src,
@@ -228,13 +228,13 @@
#endif /* __SUNPRO_C */
for (; i <= (size - 16); i += 16) {
s0 = *(mlib_u16*)sa;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
*da++ = dd_array[s0 & 0xFF];
*da++ = dd_array[s0 >> 8];
#else
*da++ = dd_array[s0 >> 8];
*da++ = dd_array[s0 & 0xFF];
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
sa += 2;
}
@@ -258,20 +258,20 @@
val1 = p_dd[2*val0+1];
}
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
emask = (mlib_u32)((mlib_s32)(-1)) >> ((4 - (size - i)) * 8);
#else
emask = (mlib_s32)(-1) << ((4 - (size - i)) * 8);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
((mlib_u32*)da)[0] = (val1 & emask) | (((mlib_u32*)da)[0] &~ emask);
#else /* _NO_LONGLONG */
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
mlib_u64 emask = (mlib_u64)((mlib_s64)(-1)) >> ((8 - (size - i)) * 8);
#else
mlib_u64 emask = (mlib_s64)(-1) << ((8 - (size - i)) * 8);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
((mlib_u64*)da)[0] = (((mlib_u64*)dd_array)[sa[0]] & emask) | (((mlib_u64*)da)[0] &~ emask);
@@ -323,13 +323,13 @@
val0 = table[0][0];
val1 = table[0][1];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
val0 = val0 | (table[1][0] << 8);
val1 = val1 | (table[1][1] << 8);
#else
val0 = (val0 << 8) | table[1][0];
val1 = (val1 << 8) | table[1][1];
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
val0 |= (val0 << 16);
val1 |= (val1 << 16);
@@ -394,11 +394,11 @@
dd1 = dd2;
}
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
emask = (mlib_u32)((mlib_s32)(-1)) >> ((4 - (size - i)) * 8);
#else
emask = (mlib_s32)(-1) << ((4 - (size - i)) * 8);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
((mlib_u32*)da)[0] = (dd1 & emask) | (((mlib_u32*)da)[0] &~ emask);
#else /* _NO_LONGLONG */
@@ -412,11 +412,11 @@
dd = ((mlib_u64*)dd_array)[s0 & 0xf];
}
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
emask = (mlib_u64)((mlib_s64)(-1)) >> ((8 - (size - i)) * 8);
#else
emask = (mlib_s64)(-1) << ((8 - (size - i)) * 8);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
((mlib_u64*)da)[0] = (dd & emask) | (((mlib_u64*)da)[0] &~ emask);
#endif /* _NO_LONGLONG */
@@ -462,7 +462,7 @@
buffs = buff + size;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
l0 = (table[0][0] << 24) | (table[2][0] << 16) | (table[1][0] << 8) | (table[0][0]);
h0 = (table[0][1] << 24) | (table[2][1] << 16) | (table[1][1] << 8) | (table[0][1]);
l1 = (l0 >> 8); l1 |= (l1 << 24);
@@ -476,7 +476,7 @@
h1 = (h0 << 8); h1 |= (h1 >> 24);
l2 = (l1 << 8); l2 |= (l2 >> 24);
h2 = (h1 << 8); h2 |= (h2 >> 24);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
/* calculate lookup table */
#ifdef __SUNPRO_C
@@ -564,11 +564,11 @@
dd = ((mlib_u32*)(d_array12 + (s0 & 0xF)))[1];
}
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
emask = (mlib_u32)((mlib_s32)(-1)) >> ((4 - (size - i)) * 8);
#else
emask = (mlib_s32)(-1) << ((4 - (size - i)) * 8);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
da[0] = (dd & emask) | (da[0] &~ emask);
}
@@ -611,13 +611,13 @@
buffs = buff + size;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
l = (table[3][0] << 24) | (table[2][0] << 16) | (table[1][0] << 8) | (table[0][0]);
h = (table[3][1] << 24) | (table[2][1] << 16) | (table[1][1] << 8) | (table[0][1]);
#else
l = (table[0][0] << 24) | (table[1][0] << 16) | (table[2][0] << 8) | (table[3][0]);
h = (table[0][1] << 24) | (table[1][1] << 16) | (table[2][1] << 8) | (table[3][1]);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
((mlib_u32*)lh)[0] = l; ((mlib_u32*)lh)[1] = l;
((mlib_u32*)lh)[2] = l; ((mlib_u32*)lh)[3] = h;
--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageUtils.c 2014-03-03 18:59:38.000000000 -0800
+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageUtils.c 2015-10-24 06:21:21.000000000 -0700
@@ -30,7 +30,7 @@
typedef union {
mlib_d64 db;
struct {
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
mlib_s32 int1, int0;
#else
mlib_s32 int0, int1;
--- ./jdk/src/share/native/sun/awt/medialib/mlib_c_ImageCopy.c 2014-03-03 18:59:38.000000000 -0800
+++ ./jdk/src/share/native/sun/awt/medialib/mlib_c_ImageCopy.c 2015-10-24 06:21:21.000000000 -0700
@@ -275,11 +275,11 @@
for (i = 0; j <= (b_size - 4); j += 4, i++) {
src0 = src1;
src1 = pws[i + 1];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
pwd[i] = (src0 >> lshift) | (src1 << rshift);
#else
pwd[i] = (src0 << lshift) | (src1 >> rshift);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
}
sa += i << 2;
@@ -381,11 +381,11 @@
for (; j <= (src_width - 4); j += 4) {
src0 = src1;
src1 = ps[1];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
*((mlib_s32 *) (pdst_row + j)) = (src0 >> shl) | (src1 << shr);
#else
*((mlib_s32 *) (pdst_row + j)) = (src0 << shl) | (src1 >> shr);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
ps++;
}
}
@@ -414,11 +414,11 @@
for (; j <= (src_width - 8); j += 8) {
src0 = src1;
src1 = ps[1];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
*((mlib_s64 *) (pdst_row + j)) = (src0 >> shl) | (src1 << shr);
#else
*((mlib_s64 *) (pdst_row + j)) = (src0 << shl) | (src1 >> shr);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
ps++;
}
}
@@ -484,11 +484,11 @@
for (; j <= (src_width - 2); j += 2) {
src0 = src1;
src1 = ps[1];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
*((mlib_s32 *) (pdst_row + j)) = (src0 >> 16) | (src1 << 16);
#else
*((mlib_s32 *) (pdst_row + j)) = (src0 << 16) | (src1 >> 16);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
ps++;
}
}
@@ -516,11 +516,11 @@
for (; j <= (src_width - 4); j += 4) {
src0 = src1;
src1 = ps[1];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
*((mlib_s64 *) (pdst_row + j)) = (src0 >> shl) | (src1 << shr);
#else
*((mlib_s64 *) (pdst_row + j)) = (src0 << shl) | (src1 >> shr);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
ps++;
}
}
@@ -585,11 +585,11 @@
for (; j <= (src_width - 2); j += 2) {
src0 = src1;
src1 = ps[1];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
*((mlib_s64 *) (pdst_row + j)) = (src0 >> 32) | (src1 << 32);
#else
*((mlib_s64 *) (pdst_row + j)) = (src0 << 32) | (src1 >> 32);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
ps++;
}
}
@@ -687,11 +687,11 @@
#endif /* __SUNPRO_C */
for (; n > SIZE; n -= SIZE) {
s1 = *tmp++;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
*(TYPE *) dp = (s0 >> shl) | (s1 << shr);
#else
*(TYPE *) dp = (s0 << shl) | (s1 >> shr);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
s0 = s1;
dp += SIZE;
sp += SIZE;
--- ./jdk/src/share/native/sun/awt/medialib/mlib_c_ImageLookUp_f.c 2014-03-03 18:59:38.000000000 -0800
+++ ./jdk/src/share/native/sun/awt/medialib/mlib_c_ImageLookUp_f.c 2015-10-24 06:21:21.000000000 -0700
@@ -120,7 +120,7 @@
} \
}
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
/***************************************************************/
#define READ_U8_U8_ALIGN(table0, table1, table2, table3) \
@@ -163,7 +163,7 @@
t2 = *(mlib_u32*)((mlib_u8*)table2 + ((s0 >> 14) & 0x3FC)); \
t3 = *(mlib_u32*)((mlib_u8*)table3 + ((s0 >> 22) & 0x3FC))
-#else /* _LITTLE_ENDIAN */
+#else /* VM_LITTLE_ENDIAN */
/***********/
#define READ_U8_U8_ALIGN(table0, table1, table2, table3) \
@@ -206,7 +206,7 @@
t2 = *(mlib_u32*)((mlib_u8*)table2 + ((s0 >> 6) & 0x3FC)); \
t3 = *(mlib_u32*)((mlib_u8*)table3 + ((s0 << 2) & 0x3FC))
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
/***************************************************************/
void mlib_c_ImageLookUp_U8_U8(const mlib_u8 *src,
@@ -297,11 +297,11 @@
da[0] = t;
da++;
dp = (mlib_u8 *) da;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
*dp++ = tab[s2 >> 8];
#else
*dp++ = tab[s2 & 0xFF];
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
sp = (mlib_u8 *) sa;
i += 5;
for (; i < size; i++, dp++, sp++)
@@ -403,11 +403,11 @@
da[0] = t;
da++;
dp = (mlib_u8 *) da;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
*dp++ = tab0[s2 >> 8];
#else
*dp++ = tab0[s2 & 0xFF];
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
sp = (mlib_u8 *) sa;
i += 5;
@@ -544,11 +544,11 @@
da[0] = t;
da++;
dp = (mlib_u8 *) da;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
*dp++ = tab1[s2 >> 8];
#else
*dp++ = tab1[s2 & 0xFF];
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
sp = (mlib_u8 *) sa;
i += 5;
@@ -694,11 +694,11 @@
da[0] = t;
da++;
dp = (mlib_u8 *) da;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
*dp++ = tab0[s2 >> 8];
#else
*dp++ = tab0[s2 & 0xFF];
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
sp = (mlib_u8 *) sa;
i += 5;
@@ -1852,21 +1852,21 @@
s0 = tab0[0];
s1 = tab1[0];
for (i = 1; i < 256; i++) {
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
s2 = (s1 << 8) + s0;
#else
s2 = (s0 << 8) + s1;
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
s0 = tab0[i];
s1 = tab1[i];
tab[i - 1] = (mlib_u16) s2;
}
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
s2 = (s1 << 8) + s0;
#else
s2 = (s0 << 8) + s1;
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
tab[255] = (mlib_u16) s2;
for (j = 0; j < ysize; j++, dst += dlb, src += slb) {
@@ -1897,11 +1897,11 @@
for (i = 0; i < size - 3; i += 2, da++, sa += 2) {
t0 = tab[s0];
t1 = tab[s1];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
t = (t1 << 16) + t0;
#else
t = (t0 << 16) + t1;
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
s0 = sa[0];
s1 = sa[1];
da[0] = t;
@@ -1909,11 +1909,11 @@
t0 = tab[s0];
t1 = tab[s1];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
t = (t1 << 16) + t0;
#else
t = (t0 << 16) + t1;
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
da[0] = t;
da++;
@@ -1927,13 +1927,13 @@
if (off > 1) {
t0 = tab[sa[0]];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
dp[1] = (t0 >> 8);
dp[0] = t0;
#else
dp[0] = (t0 >> 8);
dp[1] = t0;
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
sa++;
size--;
dp += 2;
@@ -1941,11 +1941,11 @@
t0 = tab[sa[0]];
sa++;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
*dp++ = t0;
#else
*dp++ = (t0 >> 8);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
da = (mlib_s32 *) dp;
@@ -1959,11 +1959,11 @@
for (i = 0; i < size - 4; i += 2, da++, sa += 2) {
t1 = tab[s0];
t2 = tab[s1];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
t = (t0 >> 8) + (t1 << 8) + (t2 << 24);
#else
t = (t0 << 24) + (t1 << 8) + (t2 >> 8);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
t0 = t2;
s0 = sa[0];
s1 = sa[1];
@@ -1972,29 +1972,29 @@
t1 = tab[s0];
t2 = tab[s1];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
t = (t0 >> 8) + (t1 << 8) + (t2 << 24);
#else
t = (t0 << 24) + (t1 << 8) + (t2 >> 8);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
da[0] = t;
da++;
dp = (mlib_u8 *) da;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
dp[0] = (t2 >> 8);
#else
dp[0] = t2;
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
if ((size & 1) == 0) {
t0 = tab[sa[0]];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
dp[2] = (t0 >> 8);
dp[1] = t0;
#else
dp[1] = (t0 >> 8);
dp[2] = t0;
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
}
}
}
@@ -2012,22 +2012,22 @@
s1 = tab1[0];
s2 = tab2[0];
for (i = 1; i < 256; i++) {
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
s3 = (s2 << 24) + (s1 << 16) + (s0 << 8);
#else
s3 = (s0 << 16) + (s1 << 8) + s2;
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
s0 = tab0[i];
s1 = tab1[i];
s2 = tab2[i];
tab[i - 1] = s3;
}
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
s3 = (s2 << 24) + (s1 << 16) + (s0 << 8);
#else
s3 = (s0 << 16) + (s1 << 8) + s2;
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
tab[255] = s3;
for (j = 0; j < ysize; j++, dst += dlb, src += slb) {
@@ -2064,24 +2064,24 @@
for (i = 0; i < size - 7; i += 4, da += 3, sa += 4) {
t0 = tab[s0];
t1 = tab[s1];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
da[0] = (t0 >> 8) + (t1 << 16);
res2 = (t1 >> 16);
#else
da[0] = (t0 << 8) + (t1 >> 16);
res2 = (t1 << 16);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
s0 = sa[0];
s1 = sa[1];
t0 = tab[s0];
t1 = tab[s1];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
res2 += (t0 << 8);
res1 = (t0 >> 24) + t1;
#else
res2 += (t0 >> 8);
res1 = (t0 << 24) + t1;
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
s0 = sa[2];
s1 = sa[3];
da[1] = res2;
@@ -2090,24 +2090,24 @@
t0 = tab[s0];
t1 = tab[s1];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
da[0] = (t0 >> 8) + (t1 << 16);
res2 = (t1 >> 16);
#else
da[0] = (t0 << 8) + (t1 >> 16);
res2 = (t1 << 16);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
s0 = sa[0];
s1 = sa[1];
t0 = tab[s0];
t1 = tab[s1];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
res2 += (t0 << 8);
res1 = (t0 >> 24) + t1;
#else
res2 += (t0 >> 8);
res1 = (t0 << 24) + t1;
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
da[1] = res2;
da[2] = res1;
da += 3;
@@ -2143,11 +2143,11 @@
s2 = tab2[0];
s3 = tab3[0];
for (i = 1; i < 256; i++) {
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
s4 = (s3 << 24) + (s2 << 16) + (s1 << 8) + s0;
#else
s4 = (s0 << 24) + (s1 << 16) + (s2 << 8) + s3;
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
s0 = tab0[i];
s1 = tab1[i];
s2 = tab2[i];
@@ -2155,11 +2155,11 @@
tab[i - 1] = s4;
}
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
s4 = (s3 << 24) + (s2 << 16) + (s1 << 8) + s0;
#else
s4 = (s0 << 24) + (s1 << 16) + (s2 << 8) + s3;
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
tab[255] = s4;
for (j = 0; j < ysize; j++, dst += dlb, src += slb) {
@@ -2225,13 +2225,13 @@
for (i = 0; i < size - 4; i += 2, da += 2, sa += 2) {
t1 = tab[s0];
t2 = tab[s1];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
res1 = (t0 >> shift) + (t1 << shift1);
res2 = (t1 >> shift) + (t2 << shift1);
#else
res1 = (t0 << shift) + (t1 >> shift1);
res2 = (t1 << shift) + (t2 >> shift1);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
t0 = t2;
s0 = sa[0];
s1 = sa[1];
@@ -2241,28 +2241,28 @@
t1 = tab[s0];
t2 = tab[s1];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
res1 = (t0 >> shift) + (t1 << shift1);
res2 = (t1 >> shift) + (t2 << shift1);
#else
res1 = (t0 << shift) + (t1 >> shift1);
res2 = (t1 << shift) + (t2 >> shift1);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
da[0] = res1;
da[1] = res2;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
t0 = (da[2] >> shift1);
da[2] = (t2 >> shift) + (t0 << shift1);
#else
t0 = (da[2] << shift1);
da[2] = (t2 << shift) + (t0 >> shift1);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
da += 2;
dp = (mlib_u8 *) da + (4 - off);
if ((size & 1) == 0) {
t0 = tab[sa[0]];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
dp[3] = (mlib_u8) (t0 >> 24);
dp[2] = (mlib_u8) (t0 >> 16);
dp[1] = (mlib_u8) (t0 >> 8);
@@ -2272,7 +2272,7 @@
dp[1] = (mlib_u8) (t0 >> 16);
dp[2] = (mlib_u8) (t0 >> 8);
dp[3] = (mlib_u8) t0;
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
}
}
}
@@ -2348,13 +2348,13 @@
t3 = tab0[s1];
t4 = tab1[s1];
t5 = tab2[s1];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
da[0] = (t3 << 24) + (t2 << 16) + (t1 << 8) + t0;
res2 = (t5 << 8) + t4;
#else
da[0] = (t0 << 24) + (t1 << 16) + (t2 << 8) + t3;
res2 = (t4 << 24) + (t5 << 16);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
s0 = sa[0];
s1 = sa[1];
t0 = tab0[s0];
@@ -2363,13 +2363,13 @@
t3 = tab0[s1];
t4 = tab1[s1];
t5 = tab2[s1];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
res2 += ((t1 << 24) + (t0 << 16));
res1 = (t5 << 24) + (t4 << 16) + (t3 << 8) + t2;
#else
res2 += ((t0 << 8) + t1);
res1 = (t2 << 24) + (t3 << 16) + (t4 << 8) + t5;
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
s0 = sa[2];
s1 = sa[3];
da[1] = res2;
@@ -2382,13 +2382,13 @@
t3 = tab0[s1];
t4 = tab1[s1];
t5 = tab2[s1];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
da[0] = (t3 << 24) + (t2 << 16) + (t1 << 8) + t0;
res2 = (t5 << 8) + t4;
#else
da[0] = (t0 << 24) + (t1 << 16) + (t2 << 8) + t3;
res2 = (t4 << 24) + (t5 << 16);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
s0 = sa[0];
s1 = sa[1];
t0 = tab0[s0];
@@ -2397,13 +2397,13 @@
t3 = tab0[s1];
t4 = tab1[s1];
t5 = tab2[s1];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
res2 += ((t1 << 24) + (t0 << 16));
res1 = (t5 << 24) + (t4 << 16) + (t3 << 8) + t2;
#else
res2 += ((t0 << 8) + t1);
res1 = (t2 << 24) + (t3 << 16) + (t4 << 8) + t5;
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
da[1] = res2;
da[2] = res1;
da += 3;
@@ -2455,11 +2455,11 @@
t1 = tab1[s0];
t2 = tab2[s0];
t3 = tab3[s0];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
res = (t3 << 24) + (t2 << 16) + (t1 << 8) + t0;
#else
res = (t0 << 24) + (t1 << 16) + (t2 << 8) + t3;
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
s0 = sa[0];
da[0] = res;
}
@@ -2468,11 +2468,11 @@
t1 = tab1[s0];
t2 = tab2[s0];
t3 = tab3[s0];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
res = (t3 << 24) + (t2 << 16) + (t1 << 8) + t0;
#else
res = (t0 << 24) + (t1 << 16) + (t2 << 8) + t3;
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
da[0] = res;
}
@@ -2496,11 +2496,11 @@
t2 = tab2[s0];
t3 = tab3[s0];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
res1 = (t3 << 24) + (t2 << 16) + (t1 << 8) + t0;
#else
res1 = (t0 << 24) + (t1 << 16) + (t2 << 8) + t3;
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
s0 = sa[0];
sa++;
@@ -2513,13 +2513,13 @@
t1 = tab1[s0];
t2 = tab2[s0];
t3 = tab3[s0];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
res2 = (t3 << 24) + (t2 << 16) + (t1 << 8) + t0;
res = (res1 >> shift) + (res2 << shift1);
#else
res2 = (t0 << 24) + (t1 << 16) + (t2 << 8) + t3;
res = (res1 << shift) + (res2 >> shift1);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
res1 = res2;
s0 = sa[0];
da[0] = res;
@@ -2529,21 +2529,21 @@
t1 = tab1[s0];
t2 = tab2[s0];
t3 = tab3[s0];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
res2 = (t3 << 24) + (t2 << 16) + (t1 << 8) + t0;
res = (res1 >> shift) + (res2 << shift1);
#else
res2 = (t0 << 24) + (t1 << 16) + (t2 << 8) + t3;
res = (res1 << shift) + (res2 >> shift1);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
da[0] = res;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
res1 = (da[1] >> shift1);
da[1] = (res2 >> shift) + (res1 << shift1);
#else
res1 = (da[1] << shift1);
da[1] = (res2 << shift) + (res1 >> shift1);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
}
}
}
@@ -2617,13 +2617,13 @@
t3 = tab0[s1];
t4 = tab1[s1];
t5 = tab2[s1];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
da[0] = (t3 << 24) + (t2 << 16) + (t1 << 8) + t0;
res2 = (t5 << 8) + t4;
#else
da[0] = (t0 << 24) + (t1 << 16) + (t2 << 8) + t3;
res2 = (t4 << 24) + (t5 << 16);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
s0 = sa[0];
s1 = sa[1];
t0 = tab0[s0];
@@ -2632,13 +2632,13 @@
t3 = tab0[s1];
t4 = tab1[s1];
t5 = tab2[s1];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
res2 += ((t1 << 24) + (t0 << 16));
res1 = (t5 << 24) + (t4 << 16) + (t3 << 8) + t2;
#else
res2 += ((t0 << 8) + t1);
res1 = (t2 << 24) + (t3 << 16) + (t4 << 8) + t5;
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
s0 = sa[2];
s1 = sa[3];
da[1] = res2;
@@ -2651,13 +2651,13 @@
t3 = tab0[s1];
t4 = tab1[s1];
t5 = tab2[s1];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
da[0] = (t3 << 24) + (t2 << 16) + (t1 << 8) + t0;
res2 = (t5 << 8) + t4;
#else
da[0] = (t0 << 24) + (t1 << 16) + (t2 << 8) + t3;
res2 = (t4 << 24) + (t5 << 16);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
s0 = sa[0];
s1 = sa[1];
t0 = tab0[s0];
@@ -2666,13 +2666,13 @@
t3 = tab0[s1];
t4 = tab1[s1];
t5 = tab2[s1];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
res2 += ((t1 << 24) + (t0 << 16));
res1 = (t5 << 24) + (t4 << 16) + (t3 << 8) + t2;
#else
res2 += ((t0 << 8) + t1);
res1 = (t2 << 24) + (t3 << 16) + (t4 << 8) + t5;
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
da[1] = res2;
da[2] = res1;
da += 3;
@@ -2724,11 +2724,11 @@
t1 = tab1[s0];
t2 = tab2[s0];
t3 = tab3[s0];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
res = (t3 << 24) + (t2 << 16) + (t1 << 8) + t0;
#else
res = (t0 << 24) + (t1 << 16) + (t2 << 8) + t3;
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
s0 = sa[0];
da[0] = res;
}
@@ -2737,11 +2737,11 @@
t1 = tab1[s0];
t2 = tab2[s0];
t3 = tab3[s0];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
res = (t3 << 24) + (t2 << 16) + (t1 << 8) + t0;
#else
res = (t0 << 24) + (t1 << 16) + (t2 << 8) + t3;
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
da[0] = res;
}
@@ -2765,11 +2765,11 @@
t2 = tab2[s0];
t3 = tab3[s0];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
res1 = (t3 << 24) + (t2 << 16) + (t1 << 8) + t0;
#else
res1 = (t0 << 24) + (t1 << 16) + (t2 << 8) + t3;
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
s0 = sa[0];
sa++;
@@ -2782,13 +2782,13 @@
t1 = tab1[s0];
t2 = tab2[s0];
t3 = tab3[s0];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
res2 = (t3 << 24) + (t2 << 16) + (t1 << 8) + t0;
res = (res1 >> shift) + (res2 << shift1);
#else
res2 = (t0 << 24) + (t1 << 16) + (t2 << 8) + t3;
res = (res1 << shift) + (res2 >> shift1);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
res1 = res2;
s0 = sa[0];
da[0] = res;
@@ -2798,21 +2798,21 @@
t1 = tab1[s0];
t2 = tab2[s0];
t3 = tab3[s0];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
res2 = (t3 << 24) + (t2 << 16) + (t1 << 8) + t0;
res = (res1 >> shift) + (res2 << shift1);
#else
res2 = (t0 << 24) + (t1 << 16) + (t2 << 8) + t3;
res = (res1 << shift) + (res2 >> shift1);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
da[0] = res;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
res1 = (da[1] >> shift1);
da[1] = (res2 >> shift) + (res1 << shift1);
#else
res1 = (da[1] << shift1);
da[1] = (res2 << shift) + (res1 >> shift1);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
}
}
}
@@ -2863,21 +2863,21 @@
s0 = tab0[0];
s1 = tab1[0];
for (i = 1; i < 256; i++) {
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
s2 = (s1 << 16) + s0;
#else
s2 = (s0 << 16) + s1;
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
s0 = tab0[i];
s1 = tab1[i];
tab[i - 1] = s2;
}
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
s2 = (s1 << 16) + s0;
#else
s2 = (s0 << 16) + s1;
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
tab[255] = s2;
for (j = 0; j < ysize; j++, dst += dlb, src += slb) {
@@ -2919,11 +2919,11 @@
else {
t0 = tab[*sa++];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
*dp++ = (mlib_u16) (t0);
#else
*dp++ = (mlib_u16) (t0 >> 16);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
da = (mlib_u32 *) dp;
s0 = sa[0];
s1 = sa[1];
@@ -2935,13 +2935,13 @@
for (i = 0; i < size - 4; i += 2, da += 2, sa += 2) {
t1 = tab[s0];
t2 = tab[s1];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
res1 = (t0 >> 16) + (t1 << 16);
res2 = (t1 >> 16) + (t2 << 16);
#else
res1 = (t0 << 16) + (t1 >> 16);
res2 = (t1 << 16) + (t2 >> 16);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
t0 = t2;
s0 = sa[0];
s1 = sa[1];
@@ -2951,32 +2951,32 @@
t1 = tab[s0];
t2 = tab[s1];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
res1 = (t0 >> 16) + (t1 << 16);
res2 = (t1 >> 16) + (t2 << 16);
#else
res1 = (t0 << 16) + (t1 >> 16);
res2 = (t1 << 16) + (t2 >> 16);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
da[0] = res1;
da[1] = res2;
da += 2;
dp = (mlib_u16 *) da;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
dp[0] = (mlib_u16) (t2 >> 16);
#else
dp[0] = (mlib_u16) t2;
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
if ((size & 1) == 0) {
t0 = tab[sa[0]];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
dp[2] = (mlib_u16) (t0 >> 16);
dp[1] = (mlib_u16) t0;
#else
dp[1] = (mlib_u16) (t0 >> 16);
dp[2] = (mlib_u16) t0;
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
}
}
}
@@ -2994,13 +2994,13 @@
s1 = tab1[0];
s2 = tab2[0];
for (i = 1; i < 256; i++) {
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
s3 = (s0 << 16);
s4 = (s2 << 16) + s1;
#else
s3 = s0;
s4 = (s1 << 16) + s2;
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
s0 = tab0[i];
s1 = tab1[i];
s2 = tab2[i];
@@ -3008,13 +3008,13 @@
tab[2 * i - 1] = s4;
}
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
s4 = (s2 << 16) + s1;
tab[510] = s0 << 16;
#else
s4 = (s1 << 16) + s2;
tab[510] = s0;
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
tab[511] = s4;
for (j = 0; j < ysize; j++, dst += dlb, src += slb) {
@@ -3050,13 +3050,13 @@
t1 = *(mlib_u32 *) ((mlib_u8 *) tab + s0 + 4);
t2 = *(mlib_u32 *) ((mlib_u8 *) tab + s1);
t3 = *(mlib_u32 *) ((mlib_u8 *) tab + s1 + 4);
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
res1 = (t0 >> 16) + (t1 << 16);
res2 = (t1 >> 16) + t2;
#else
res1 = (t0 << 16) + (t1 >> 16);
res2 = (t1 << 16) + t2;
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
s0 = sa[0] << 3;
s1 = sa[1] << 3;
da[0] = res1;
@@ -3068,13 +3068,13 @@
t1 = *(mlib_u32 *) ((mlib_u8 *) tab + s0 + 4);
t2 = *(mlib_u32 *) ((mlib_u8 *) tab + s1);
t3 = *(mlib_u32 *) ((mlib_u8 *) tab + s1 + 4);
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
res1 = (t0 >> 16) + (t1 << 16);
res2 = (t1 >> 16) + t2;
#else
res1 = (t0 << 16) + (t1 >> 16);
res2 = (t1 << 16) + t2;
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
da[0] = res1;
da[1] = res2;
da[2] = t3;
@@ -3105,13 +3105,13 @@
s2 = tab2[0];
s3 = tab3[0];
for (i = 1; i < 256; i++) {
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
s4 = (s1 << 16) + s0;
s5 = (s3 << 16) + s2;
#else
s4 = (s0 << 16) + s1;
s5 = (s2 << 16) + s3;
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
s0 = tab0[i];
s1 = tab1[i];
s2 = tab2[i];
@@ -3120,13 +3120,13 @@
tab[2 * i - 1] = s5;
}
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
s4 = (s1 << 16) + s0;
s5 = (s3 << 16) + s2;
#else
s4 = (s0 << 16) + s1;
s5 = (s2 << 16) + s3;
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
tab[510] = s4;
tab[511] = s5;
@@ -3181,18 +3181,18 @@
t4 = tab[2 * sa[0]];
t5 = tab[2 * sa[0] + 1];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
*dp++ = (mlib_u16) (t4);
#else
*dp++ = (mlib_u16) (t4 >> 16);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
sa++;
da = (mlib_u32 *) dp;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
*da++ = (t4 >> 16) + (t5 << 16);
#else
*da++ = (t4 << 16) + (t5 >> 16);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
s0 = sa[0] << 3;
s1 = sa[1] << 3;
sa += 2;
@@ -3205,7 +3205,7 @@
t1 = *(mlib_u32 *) ((mlib_u8 *) tab + s0 + 4);
t2 = *(mlib_u32 *) ((mlib_u8 *) tab + s1);
t3 = *(mlib_u32 *) ((mlib_u8 *) tab + s1 + 4);
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
res1 = (t5 >> 16) + (t0 << 16);
res2 = (t0 >> 16) + (t1 << 16);
res3 = (t1 >> 16) + (t2 << 16);
@@ -3215,7 +3215,7 @@
res2 = (t0 << 16) + (t1 >> 16);
res3 = (t1 << 16) + (t2 >> 16);
res4 = (t2 << 16) + (t3 >> 16);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
s0 = sa[0] << 3;
s1 = sa[1] << 3;
da[0] = res1;
@@ -3229,7 +3229,7 @@
t1 = *(mlib_u32 *) ((mlib_u8 *) tab + s0 + 4);
t2 = *(mlib_u32 *) ((mlib_u8 *) tab + s1);
t3 = *(mlib_u32 *) ((mlib_u8 *) tab + s1 + 4);
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
res1 = (t5 >> 16) + (t0 << 16);
res2 = (t0 >> 16) + (t1 << 16);
res3 = (t1 >> 16) + (t2 << 16);
@@ -3239,36 +3239,36 @@
res2 = (t0 << 16) + (t1 >> 16);
res3 = (t1 << 16) + (t2 >> 16);
res4 = (t2 << 16) + (t3 >> 16);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
da[0] = res1;
da[1] = res2;
da[2] = res3;
da[3] = res4;
da += 4;
dp = (mlib_u16 *) da;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
dp[0] = (mlib_u16) (t3 >> 16);
#else
dp[0] = (mlib_u16) t3;
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
if ((size & 1) == 0) {
t0 = tab[2 * sa[0]];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
dp[2] = (mlib_u16) (t0 >> 16);
dp[1] = (mlib_u16) t0;
#else
dp[1] = (mlib_u16) (t0 >> 16);
dp[2] = (mlib_u16) t0;
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
t0 = tab[2 * sa[0] + 1];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
dp[4] = (mlib_u16) (t0 >> 16);
dp[3] = (mlib_u16) t0;
#else
dp[3] = (mlib_u16) (t0 >> 16);
dp[4] = (mlib_u16) t0;
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
}
}
}
@@ -3439,7 +3439,7 @@
#pragma pipeloop(0)
#endif /* __SUNPRO_C */
for (i = 0; i < size - 7; i += 4, dp += 8, sa++) {
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
t0 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 << 2) & 0x3FC));
t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 << 2) & 0x3FC));
t2 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 >> 6) & 0x3FC));
@@ -3449,12 +3449,12 @@
t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 22) & 0x3FC));
t2 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 >> 14) & 0x3FC));
t3 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 14) & 0x3FC));
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
dp[0] = t0;
dp[1] = t1;
dp[2] = t2;
dp[3] = t3;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
t0 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 >> 14) & 0x3FC));
t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 14) & 0x3FC));
t2 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 >> 22) & 0x3FC));
@@ -3464,7 +3464,7 @@
t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 6) & 0x3FC));
t2 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 << 2) & 0x3FC));
t3 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 << 2) & 0x3FC));
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
s0 = sa[0];
dp[4] = t0;
dp[5] = t1;
@@ -3472,7 +3472,7 @@
dp[7] = t3;
}
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
t0 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 << 2) & 0x3FC));
t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 << 2) & 0x3FC));
t2 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 >> 6) & 0x3FC));
@@ -3482,12 +3482,12 @@
t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 22) & 0x3FC));
t2 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 >> 14) & 0x3FC));
t3 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 14) & 0x3FC));
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
dp[0] = t0;
dp[1] = t1;
dp[2] = t2;
dp[3] = t3;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
t0 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 >> 14) & 0x3FC));
t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 14) & 0x3FC));
t2 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 >> 22) & 0x3FC));
@@ -3497,7 +3497,7 @@
t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 6) & 0x3FC));
t2 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 << 2) & 0x3FC));
t3 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 << 2) & 0x3FC));
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
dp[4] = t0;
dp[5] = t1;
dp[6] = t2;
@@ -3545,7 +3545,7 @@
#pragma pipeloop(0)
#endif /* __SUNPRO_C */
for (i = 0; i < size - 7; i += 4, dp += 12, sa++) {
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
t0 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 << 2) & 0x3FC));
t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 << 2) & 0x3FC));
t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 << 2) & 0x3FC));
@@ -3559,14 +3559,14 @@
t3 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 >> 14) & 0x3FC));
t4 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 14) & 0x3FC));
t5 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 >> 14) & 0x3FC));
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
dp[0] = t0;
dp[1] = t1;
dp[2] = t2;
dp[3] = t3;
dp[4] = t4;
dp[5] = t5;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
t0 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 >> 14) & 0x3FC));
t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 14) & 0x3FC));
t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 >> 14) & 0x3FC));
@@ -3580,7 +3580,7 @@
t3 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 << 2) & 0x3FC));
t4 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 << 2) & 0x3FC));
t5 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 << 2) & 0x3FC));
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
s0 = sa[0];
dp[6] = t0;
dp[7] = t1;
@@ -3590,7 +3590,7 @@
dp[11] = t5;
}
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
t0 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 << 2) & 0x3FC));
t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 << 2) & 0x3FC));
t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 << 2) & 0x3FC));
@@ -3604,14 +3604,14 @@
t3 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 >> 14) & 0x3FC));
t4 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 14) & 0x3FC));
t5 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 >> 14) & 0x3FC));
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
dp[0] = t0;
dp[1] = t1;
dp[2] = t2;
dp[3] = t3;
dp[4] = t4;
dp[5] = t5;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
t0 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 >> 14) & 0x3FC));
t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 14) & 0x3FC));
t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 >> 14) & 0x3FC));
@@ -3625,7 +3625,7 @@
t3 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 << 2) & 0x3FC));
t4 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 << 2) & 0x3FC));
t5 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 << 2) & 0x3FC));
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
dp[6] = t0;
dp[7] = t1;
dp[8] = t2;
@@ -3678,7 +3678,7 @@
#pragma pipeloop(0)
#endif /* __SUNPRO_C */
for (i = 0; i < size - 7; i += 4, dp += 16, sa++) {
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
t0 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 << 2) & 0x3FC));
t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 << 2) & 0x3FC));
t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 << 2) & 0x3FC));
@@ -3688,12 +3688,12 @@
t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 22) & 0x3FC));
t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 >> 22) & 0x3FC));
t3 = *(mlib_u32 *) ((mlib_u8 *) tab3 + ((s0 >> 22) & 0x3FC));
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
dp[0] = t0;
dp[1] = t1;
dp[2] = t2;
dp[3] = t3;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
t0 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 >> 6) & 0x3FC));
t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 6) & 0x3FC));
t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 >> 6) & 0x3FC));
@@ -3703,12 +3703,12 @@
t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 14) & 0x3FC));
t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 >> 14) & 0x3FC));
t3 = *(mlib_u32 *) ((mlib_u8 *) tab3 + ((s0 >> 14) & 0x3FC));
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
dp[4] = t0;
dp[5] = t1;
dp[6] = t2;
dp[7] = t3;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
t0 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 >> 14) & 0x3FC));
t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 14) & 0x3FC));
t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 >> 14) & 0x3FC));
@@ -3718,12 +3718,12 @@
t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 6) & 0x3FC));
t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 >> 6) & 0x3FC));
t3 = *(mlib_u32 *) ((mlib_u8 *) tab3 + ((s0 >> 6) & 0x3FC));
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
dp[8] = t0;
dp[9] = t1;
dp[10] = t2;
dp[11] = t3;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
t0 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 >> 22) & 0x3FC));
t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 22) & 0x3FC));
t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 >> 22) & 0x3FC));
@@ -3733,7 +3733,7 @@
t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 << 2) & 0x3FC));
t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 << 2) & 0x3FC));
t3 = *(mlib_u32 *) ((mlib_u8 *) tab3 + ((s0 << 2) & 0x3FC));
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
s0 = sa[0];
dp[12] = t0;
dp[13] = t1;
@@ -3741,7 +3741,7 @@
dp[15] = t3;
}
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
t0 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 << 2) & 0x3FC));
t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 << 2) & 0x3FC));
t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 << 2) & 0x3FC));
@@ -3751,12 +3751,12 @@
t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 22) & 0x3FC));
t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 >> 22) & 0x3FC));
t3 = *(mlib_u32 *) ((mlib_u8 *) tab3 + ((s0 >> 22) & 0x3FC));
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
dp[0] = t0;
dp[1] = t1;
dp[2] = t2;
dp[3] = t3;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
t0 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 >> 6) & 0x3FC));
t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 6) & 0x3FC));
t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 >> 6) & 0x3FC));
@@ -3766,12 +3766,12 @@
t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 14) & 0x3FC));
t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 >> 14) & 0x3FC));
t3 = *(mlib_u32 *) ((mlib_u8 *) tab3 + ((s0 >> 14) & 0x3FC));
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
dp[4] = t0;
dp[5] = t1;
dp[6] = t2;
dp[7] = t3;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
t0 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 >> 14) & 0x3FC));
t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 14) & 0x3FC));
t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 >> 14) & 0x3FC));
@@ -3781,12 +3781,12 @@
t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 6) & 0x3FC));
t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 >> 6) & 0x3FC));
t3 = *(mlib_u32 *) ((mlib_u8 *) tab3 + ((s0 >> 6) & 0x3FC));
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
dp[8] = t0;
dp[9] = t1;
dp[10] = t2;
dp[11] = t3;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
t0 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 >> 22) & 0x3FC));
t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 22) & 0x3FC));
t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 >> 22) & 0x3FC));
@@ -3796,7 +3796,7 @@
t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 << 2) & 0x3FC));
t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 << 2) & 0x3FC));
t3 = *(mlib_u32 *) ((mlib_u8 *) tab3 + ((s0 << 2) & 0x3FC));
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
dp[12] = t0;
dp[13] = t1;
dp[14] = t2;
--- ./jdk/src/share/native/sun/awt/medialib/mlib_image.h 2014-03-03 18:59:38.000000000 -0800
+++ ./jdk/src/share/native/sun/awt/medialib/mlib_image.h 2015-10-24 06:21:21.000000000 -0700
@@ -27,9 +27,6 @@
#ifndef MLIB_IMAGE_H
#define MLIB_IMAGE_H
-#ifdef MACOSX
-#include <machine/endian.h>
-#endif
#include <mlib_types.h>
#include <mlib_status.h>
#include <mlib_sys.h>
--- ./jdk/src/share/native/sun/awt/medialib/mlib_sys.c 2015-12-12 10:53:22.241478000 -0800
+++ ./jdk/src/share/native/sun/awt/medialib/mlib_sys.c 2015-10-24 06:21:21.000000000 -0700
@@ -29,7 +29,7 @@
#ifdef MACOSX
#include <unistd.h>
#include <sys/param.h>
-#else
+#elif !defined(_ALLBSD_SOURCE)
#include <malloc.h>
#endif
#include <mlib_types.h>
@@ -97,6 +97,9 @@
return (void *) malloc(size);
#elif defined(MACOSX)
return valloc(size);
+#elif defined(_ALLBSD_SOURCE)
+ void *ret;
+ return posix_memalign(&ret, 8, size) ? NULL : ret;
#else
return (void *) memalign(8, size);
#endif /* _MSC_VER */
--- ./jdk/src/share/native/sun/font/layout/AlternateSubstSubtables.cpp 2015-12-12 10:53:29.826255000 -0800
+++ ./jdk/src/share/native/sun/font/layout/AlternateSubstSubtables.cpp 2015-07-18 13:32:31.000000000 -0700
@@ -53,6 +53,7 @@
Offset alternateSetTableOffset = SWAPW(alternateSetTableOffsetArray[coverageIndex]);
const LEReferenceTo<AlternateSetTable> alternateSetTable(base, success,
(const AlternateSetTable *) ((char *) this + alternateSetTableOffset));
+ if (!LE_SUCCESS(success)) return 0;
TTGlyphID alternate = SWAPW(alternateSetTable->alternateArray[0]);
if (filter == NULL || filter->accept(LE_SET_GLYPH(glyph, alternate), success)) {
--- ./jdk/src/share/native/sun/font/layout/AnchorTables.cpp 2015-12-12 10:53:29.826572000 -0800
+++ ./jdk/src/share/native/sun/font/layout/AnchorTables.cpp 2015-07-18 13:32:32.000000000 -0700
@@ -44,21 +44,27 @@
case 1:
{
LEReferenceTo<Format1AnchorTable> f1(base, success);
+ if (LE_SUCCESS(success)) {
f1->getAnchor(f1, fontInstance, anchor, success);
+ }
break;
}
case 2:
{
LEReferenceTo<Format2AnchorTable> f2(base, success);
+ if (LE_SUCCESS(success)) {
f2->getAnchor(f2, glyphID, fontInstance, anchor, success);
+ }
break;
}
case 3:
{
LEReferenceTo<Format3AnchorTable> f3(base, success);
+ if (LE_SUCCESS(success)) {
f3->getAnchor(f3, fontInstance, anchor, success);
+ }
break;
}
@@ -66,7 +72,9 @@
{
// unknown format: just use x, y coordinate, like format 1...
LEReferenceTo<Format1AnchorTable> f1(base, success);
+ if (LE_SUCCESS(success)) {
f1->getAnchor(f1, fontInstance, anchor, success);
+ }
break;
}
}
@@ -112,17 +120,19 @@
if (dtxOffset != 0) {
LEReferenceTo<DeviceTable> dt(base, success, dtxOffset);
+ if (LE_SUCCESS(success)) {
le_int16 adjx = dt->getAdjustment(dt, (le_int16) fontInstance->getXPixelsPerEm(), success);
-
pixels.fX += adjx;
}
+ }
if (dtyOffset != 0) {
LEReferenceTo<DeviceTable> dt(base, success, dtyOffset);
+ if (LE_SUCCESS(success)) {
le_int16 adjy = dt->getAdjustment(dt, (le_int16) fontInstance->getYPixelsPerEm(), success);
-
pixels.fY += adjy;
}
+ }
fontInstance->pixelsToUnits(pixels, anchor);
}
--- ./jdk/src/share/native/sun/font/layout/ContextualGlyphInsertionProc2.cpp 2015-12-12 10:53:29.826855000 -0800
+++ ./jdk/src/share/native/sun/font/layout/ContextualGlyphInsertionProc2.cpp 2015-07-18 13:32:32.000000000 -0700
@@ -107,6 +107,10 @@
le_int16 markIndex = SWAPW(entry->markedInsertionListIndex);
if (markIndex > 0) {
+ if (markGlyph < 0 || markGlyph >= glyphStorage.getGlyphCount()) {
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ return 0;
+ }
le_int16 count = (flags & cgiMarkedInsertCountMask) >> 5;
le_bool isKashidaLike = (flags & cgiMarkedIsKashidaLike);
le_bool isBefore = (flags & cgiMarkInsertBefore);
@@ -115,6 +119,10 @@
le_int16 currIndex = SWAPW(entry->currentInsertionListIndex);
if (currIndex > 0) {
+ if (currGlyph < 0 || currGlyph >= glyphStorage.getGlyphCount()) {
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ return 0;
+ }
le_int16 count = flags & cgiCurrentInsertCountMask;
le_bool isKashidaLike = (flags & cgiCurrentIsKashidaLike);
le_bool isBefore = (flags & cgiCurrentInsertBefore);
--- ./jdk/src/share/native/sun/font/layout/ContextualGlyphSubstProc.cpp 2015-12-12 10:53:29.827170000 -0800
+++ ./jdk/src/share/native/sun/font/layout/ContextualGlyphSubstProc.cpp 2015-07-18 13:32:32.000000000 -0700
@@ -76,6 +76,10 @@
WordOffset currOffset = SWAPW(entry->currOffset);
if (markOffset != 0 && LE_SUCCESS(success)) {
+ if (markGlyph < 0 || markGlyph >= glyphStorage.getGlyphCount()) {
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ return 0;
+ }
LEGlyphID mGlyph = glyphStorage[markGlyph];
TTGlyphID newGlyph = SWAPW(int16Table.getObject(markOffset + LE_GET_GLYPH(mGlyph), success)); // whew.
@@ -83,6 +87,10 @@
}
if (currOffset != 0) {
+ if (currGlyph < 0 || currGlyph >= glyphStorage.getGlyphCount()) {
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ return 0;
+ }
LEGlyphID thisGlyph = glyphStorage[currGlyph];
TTGlyphID newGlyph = SWAPW(int16Table.getObject(currOffset + LE_GET_GLYPH(thisGlyph), success)); // whew.
--- ./jdk/src/share/native/sun/font/layout/ContextualGlyphSubstProc2.cpp 2015-12-12 10:53:29.827466000 -0800
+++ ./jdk/src/share/native/sun/font/layout/ContextualGlyphSubstProc2.cpp 2015-07-18 13:32:32.000000000 -0700
@@ -70,17 +70,25 @@
if(LE_FAILURE(success)) return 0;
le_uint16 newState = SWAPW(entry->newStateIndex);
le_uint16 flags = SWAPW(entry->flags);
- le_int16 markIndex = SWAPW(entry->markIndex);
- le_int16 currIndex = SWAPW(entry->currIndex);
+ le_uint16 markIndex = SWAPW(entry->markIndex);
+ le_uint16 currIndex = SWAPW(entry->currIndex);
- if (markIndex != -1) {
+ if (markIndex != 0x0FFFF) {
+ if (markGlyph < 0 || markGlyph >= glyphStorage.getGlyphCount()) {
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ return 0;
+ }
le_uint32 offset = SWAPL(perGlyphTable(markIndex, success));
LEGlyphID mGlyph = glyphStorage[markGlyph];
TTGlyphID newGlyph = lookup(offset, mGlyph, success);
glyphStorage[markGlyph] = LE_SET_GLYPH(mGlyph, newGlyph);
}
- if (currIndex != -1) {
+ if (currIndex != 0x0FFFF) {
+ if (currGlyph < 0 || currGlyph >= glyphStorage.getGlyphCount()) {
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ return 0;
+ }
le_uint32 offset = SWAPL(perGlyphTable(currIndex, success));
LEGlyphID thisGlyph = glyphStorage[currGlyph];
TTGlyphID newGlyph = lookup(offset, thisGlyph, success);
--- ./jdk/src/share/native/sun/font/layout/Features.cpp 2015-12-12 10:53:29.827762000 -0800
+++ ./jdk/src/share/native/sun/font/layout/Features.cpp 2015-07-18 13:32:32.000000000 -0700
@@ -41,7 +41,7 @@
LEReferenceTo<FeatureTable> FeatureListTable::getFeatureTable(const LETableReference &base, le_uint16 featureIndex, LETag *featureTag, LEErrorCode &success) const
{
LEReferenceToArrayOf<FeatureRecord>
- featureRecordArrayRef(base, success, featureRecordArray, featureIndex);
+ featureRecordArrayRef(base, success, featureRecordArray, featureIndex+1);
if (featureIndex >= SWAPW(featureCount) || LE_FAILURE(success)) {
return LEReferenceTo<FeatureTable>();
--- ./jdk/src/share/native/sun/font/layout/GXLayoutEngine.cpp 2015-12-12 10:53:29.828035000 -0800
+++ ./jdk/src/share/native/sun/font/layout/GXLayoutEngine.cpp 2015-07-18 13:32:32.000000000 -0700
@@ -73,7 +73,7 @@
fMorphTable->process(fMorphTable, glyphStorage, success);
- return count;
+ return glyphStorage.getGlyphCount();
}
// apply positional tables
--- ./jdk/src/share/native/sun/font/layout/GXLayoutEngine2.cpp 2015-12-12 10:53:29.828286000 -0800
+++ ./jdk/src/share/native/sun/font/layout/GXLayoutEngine2.cpp 2015-07-18 13:32:32.000000000 -0700
@@ -69,7 +69,7 @@
}
fMorphTable->process(fMorphTable, glyphStorage, fTypoFlags, success);
- return count;
+ return glyphStorage.getGlyphCount();
}
// apply positional tables
--- ./jdk/src/share/native/sun/font/layout/IndicRearrangementProcessor.cpp 2015-12-12 10:53:29.828623000 -0800
+++ ./jdk/src/share/native/sun/font/layout/IndicRearrangementProcessor.cpp 2015-10-24 06:21:18.000000000 -0700
@@ -70,15 +70,20 @@
ByteOffset newState = SWAPW(entry->newStateOffset);
IndicRearrangementFlags flags = (IndicRearrangementFlags) SWAPW(entry->flags);
+ if (currGlyph < 0 || currGlyph >= glyphStorage.getGlyphCount()) {
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ return 0;
+ }
+
if (flags & irfMarkFirst) {
- firstGlyph = currGlyph;
+ firstGlyph = (le_uint32)currGlyph;
}
if (flags & irfMarkLast) {
- lastGlyph = currGlyph;
+ lastGlyph = (le_uint32)currGlyph;
}
- doRearrangementAction(glyphStorage, (IndicRearrangementVerb) (flags & irfVerbMask));
+ doRearrangementAction(glyphStorage, (IndicRearrangementVerb) (flags & irfVerbMask), success);
if (!(flags & irfDontAdvance)) {
// XXX: Should handle reverse too...
@@ -92,18 +97,29 @@
{
}
-void IndicRearrangementProcessor::doRearrangementAction(LEGlyphStorage &glyphStorage, IndicRearrangementVerb verb) const
+void IndicRearrangementProcessor::doRearrangementAction(LEGlyphStorage &glyphStorage, IndicRearrangementVerb verb, LEErrorCode &success) const
{
LEGlyphID a, b, c, d;
le_int32 ia, ib, ic, id, ix, x;
- LEErrorCode success = LE_NO_ERROR;
+
+ if (LE_FAILURE(success)) return;
+
+ if (verb == irvNoAction) {
+ return;
+ }
+ if (firstGlyph > lastGlyph) {
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ return;
+ }
switch(verb)
{
- case irvNoAction:
- break;
-
case irvxA:
+ if (firstGlyph == lastGlyph) break;
+ if (firstGlyph + 1 < firstGlyph) {
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ break;
+ }
a = glyphStorage[firstGlyph];
ia = glyphStorage.getCharIndex(firstGlyph, success);
x = firstGlyph + 1;
@@ -120,6 +136,11 @@
break;
case irvDx:
+ if (firstGlyph == lastGlyph) break;
+ if (lastGlyph - 1 > lastGlyph) {
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ break;
+ }
d = glyphStorage[lastGlyph];
id = glyphStorage.getCharIndex(lastGlyph, success);
x = lastGlyph - 1;
@@ -148,6 +169,11 @@
break;
case irvxAB:
+ if ((firstGlyph + 2 < firstGlyph) ||
+ (lastGlyph - firstGlyph < 1)) { // difference == 1 is a no-op, < 1 is an error.
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ break;
+ }
a = glyphStorage[firstGlyph];
b = glyphStorage[firstGlyph + 1];
ia = glyphStorage.getCharIndex(firstGlyph, success);
@@ -169,6 +195,11 @@
break;
case irvxBA:
+ if ((firstGlyph + 2 < firstGlyph) ||
+ (lastGlyph - firstGlyph < 1)) {
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ break;
+ }
a = glyphStorage[firstGlyph];
b = glyphStorage[firstGlyph + 1];
ia = glyphStorage.getCharIndex(firstGlyph, success);
@@ -190,6 +221,11 @@
break;
case irvCDx:
+ if ((lastGlyph - 2 > lastGlyph) ||
+ (lastGlyph - firstGlyph < 1)) {
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ break;
+ }
c = glyphStorage[lastGlyph - 1];
d = glyphStorage[lastGlyph];
ic = glyphStorage.getCharIndex(lastGlyph - 1, success);
@@ -211,6 +247,11 @@
break;
case irvDCx:
+ if ((lastGlyph - 2 > lastGlyph) ||
+ (lastGlyph - firstGlyph < 1)) {
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ break;
+ }
c = glyphStorage[lastGlyph - 1];
d = glyphStorage[lastGlyph];
ic = glyphStorage.getCharIndex(lastGlyph - 1, success);
@@ -232,6 +273,11 @@
break;
case irvCDxA:
+ if ((lastGlyph - 2 > lastGlyph) ||
+ (lastGlyph - firstGlyph < 2)) {
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ break;
+ }
a = glyphStorage[firstGlyph];
c = glyphStorage[lastGlyph - 1];
d = glyphStorage[lastGlyph];
@@ -257,6 +303,11 @@
break;
case irvDCxA:
+ if ((lastGlyph - 2 > lastGlyph) ||
+ (lastGlyph - firstGlyph < 2)) {
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ break;
+ }
a = glyphStorage[firstGlyph];
c = glyphStorage[lastGlyph - 1];
d = glyphStorage[lastGlyph];
@@ -282,6 +333,11 @@
break;
case irvDxAB:
+ if ((firstGlyph + 2 < firstGlyph) ||
+ (lastGlyph - firstGlyph < 2)) {
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ break;
+ }
a = glyphStorage[firstGlyph];
b = glyphStorage[firstGlyph + 1];
d = glyphStorage[lastGlyph];
@@ -307,6 +363,11 @@
break;
case irvDxBA:
+ if ((firstGlyph + 2 < firstGlyph) ||
+ (lastGlyph - firstGlyph < 2)) {
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ break;
+ }
a = glyphStorage[firstGlyph];
b = glyphStorage[firstGlyph + 1];
d = glyphStorage[lastGlyph];
@@ -332,6 +393,10 @@
break;
case irvCDxAB:
+ if (lastGlyph - firstGlyph < 3) {
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ break;
+ }
a = glyphStorage[firstGlyph];
b = glyphStorage[firstGlyph + 1];
@@ -354,6 +419,10 @@
break;
case irvCDxBA:
+ if (lastGlyph - firstGlyph < 3) {
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ break;
+ }
a = glyphStorage[firstGlyph];
b = glyphStorage[firstGlyph + 1];
@@ -376,6 +445,10 @@
break;
case irvDCxAB:
+ if (lastGlyph - firstGlyph < 3) {
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ break;
+ }
a = glyphStorage[firstGlyph];
b = glyphStorage[firstGlyph + 1];
@@ -398,6 +471,10 @@
break;
case irvDCxBA:
+ if (lastGlyph - firstGlyph < 3) {
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ break;
+ }
a = glyphStorage[firstGlyph];
b = glyphStorage[firstGlyph + 1];
--- ./jdk/src/share/native/sun/font/layout/IndicRearrangementProcessor.h 2014-03-03 18:59:39.000000000 -0800
+++ ./jdk/src/share/native/sun/font/layout/IndicRearrangementProcessor.h 2015-10-24 06:21:18.000000000 -0700
@@ -56,7 +56,7 @@
virtual void endStateTable();
- void doRearrangementAction(LEGlyphStorage &glyphStorage, IndicRearrangementVerb verb) const;
+ void doRearrangementAction(LEGlyphStorage &glyphStorage, IndicRearrangementVerb verb, LEErrorCode &success) const;
IndicRearrangementProcessor(const LEReferenceTo<MorphSubtableHeader> &morphSubtableHeader, LEErrorCode &success);
virtual ~IndicRearrangementProcessor();
@@ -76,8 +76,8 @@
static UClassID getStaticClassID();
protected:
- le_int32 firstGlyph;
- le_int32 lastGlyph;
+ le_uint32 firstGlyph;
+ le_uint32 lastGlyph;
LEReferenceTo<IndicRearrangementSubtableHeader> indicRearrangementSubtableHeader;
LEReferenceToArrayOf<IndicRearrangementStateEntry> entryTable;
--- ./jdk/src/share/native/sun/font/layout/IndicRearrangementProcessor2.cpp 2015-12-12 10:53:29.828965000 -0800
+++ ./jdk/src/share/native/sun/font/layout/IndicRearrangementProcessor2.cpp 2015-10-24 06:21:19.000000000 -0700
@@ -68,15 +68,20 @@
le_uint16 newState = SWAPW(entry->newStateIndex); // index to the new state
IndicRearrangementFlags flags = (IndicRearrangementFlags) SWAPW(entry->flags);
+ if (currGlyph < 0 || currGlyph >= glyphStorage.getGlyphCount()) {
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ return 0;
+ }
+
if (flags & irfMarkFirst) {
- firstGlyph = currGlyph;
+ firstGlyph = (le_uint32)currGlyph;
}
if (flags & irfMarkLast) {
- lastGlyph = currGlyph;
+ lastGlyph = (le_uint32)currGlyph;
}
- doRearrangementAction(glyphStorage, (IndicRearrangementVerb) (flags & irfVerbMask));
+ doRearrangementAction(glyphStorage, (IndicRearrangementVerb) (flags & irfVerbMask), success);
if (!(flags & irfDontAdvance)) {
currGlyph += dir;
@@ -89,18 +94,29 @@
{
}
-void IndicRearrangementProcessor2::doRearrangementAction(LEGlyphStorage &glyphStorage, IndicRearrangementVerb verb) const
+void IndicRearrangementProcessor2::doRearrangementAction(LEGlyphStorage &glyphStorage, IndicRearrangementVerb verb, LEErrorCode &success) const
{
LEGlyphID a, b, c, d;
le_int32 ia, ib, ic, id, ix, x;
- LEErrorCode success = LE_NO_ERROR;
+
+ if (LE_FAILURE(success)) return;
+
+ if (verb == irvNoAction) {
+ return;
+ }
+ if (firstGlyph > lastGlyph) {
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ return;
+ }
switch(verb)
{
- case irvNoAction:
- break;
-
case irvxA:
+ if (firstGlyph == lastGlyph) break;
+ if (firstGlyph + 1 < firstGlyph) {
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ break;
+ }
a = glyphStorage[firstGlyph];
ia = glyphStorage.getCharIndex(firstGlyph, success);
x = firstGlyph + 1;
@@ -117,6 +133,11 @@
break;
case irvDx:
+ if (firstGlyph == lastGlyph) break;
+ if (lastGlyph - 1 > lastGlyph) {
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ break;
+ }
d = glyphStorage[lastGlyph];
id = glyphStorage.getCharIndex(lastGlyph, success);
x = lastGlyph - 1;
@@ -145,6 +166,11 @@
break;
case irvxAB:
+ if ((firstGlyph + 2 < firstGlyph) ||
+ (lastGlyph - firstGlyph < 1)) { // difference == 1 is a no-op, < 1 is an error.
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ break;
+ }
a = glyphStorage[firstGlyph];
b = glyphStorage[firstGlyph + 1];
ia = glyphStorage.getCharIndex(firstGlyph, success);
@@ -166,6 +192,11 @@
break;
case irvxBA:
+ if ((firstGlyph + 2 < firstGlyph) ||
+ (lastGlyph - firstGlyph < 1)) {
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ break;
+ }
a = glyphStorage[firstGlyph];
b = glyphStorage[firstGlyph + 1];
ia = glyphStorage.getCharIndex(firstGlyph, success);
@@ -187,6 +218,11 @@
break;
case irvCDx:
+ if ((lastGlyph - 2 > lastGlyph) ||
+ (lastGlyph - firstGlyph < 1)) {
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ break;
+ }
c = glyphStorage[lastGlyph - 1];
d = glyphStorage[lastGlyph];
ic = glyphStorage.getCharIndex(lastGlyph - 1, success);
@@ -208,6 +244,11 @@
break;
case irvDCx:
+ if ((lastGlyph - 2 > lastGlyph) ||
+ (lastGlyph - firstGlyph < 1)) {
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ break;
+ }
c = glyphStorage[lastGlyph - 1];
d = glyphStorage[lastGlyph];
ic = glyphStorage.getCharIndex(lastGlyph - 1, success);
@@ -229,6 +270,11 @@
break;
case irvCDxA:
+ if ((lastGlyph - 2 > lastGlyph) ||
+ (lastGlyph - firstGlyph < 2)) {
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ break;
+ }
a = glyphStorage[firstGlyph];
c = glyphStorage[lastGlyph - 1];
d = glyphStorage[lastGlyph];
@@ -254,6 +300,11 @@
break;
case irvDCxA:
+ if ((lastGlyph - 2 > lastGlyph) ||
+ (lastGlyph - firstGlyph < 2)) {
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ break;
+ }
a = glyphStorage[firstGlyph];
c = glyphStorage[lastGlyph - 1];
d = glyphStorage[lastGlyph];
@@ -279,6 +330,11 @@
break;
case irvDxAB:
+ if ((firstGlyph + 2 < firstGlyph) ||
+ (lastGlyph - firstGlyph < 2)) {
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ break;
+ }
a = glyphStorage[firstGlyph];
b = glyphStorage[firstGlyph + 1];
d = glyphStorage[lastGlyph];
@@ -304,6 +360,11 @@
break;
case irvDxBA:
+ if ((firstGlyph + 2 < firstGlyph) ||
+ (lastGlyph - firstGlyph < 2)) {
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ break;
+ }
a = glyphStorage[firstGlyph];
b = glyphStorage[firstGlyph + 1];
d = glyphStorage[lastGlyph];
@@ -329,6 +390,10 @@
break;
case irvCDxAB:
+ if (lastGlyph - firstGlyph < 3) {
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ break;
+ }
a = glyphStorage[firstGlyph];
b = glyphStorage[firstGlyph + 1];
@@ -351,6 +416,10 @@
break;
case irvCDxBA:
+ if (lastGlyph - firstGlyph < 3) {
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ break;
+ }
a = glyphStorage[firstGlyph];
b = glyphStorage[firstGlyph + 1];
@@ -373,6 +442,10 @@
break;
case irvDCxAB:
+ if (lastGlyph - firstGlyph < 3) {
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ break;
+ }
a = glyphStorage[firstGlyph];
b = glyphStorage[firstGlyph + 1];
@@ -395,6 +468,10 @@
break;
case irvDCxBA:
+ if (lastGlyph - firstGlyph < 3) {
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ break;
+ }
a = glyphStorage[firstGlyph];
b = glyphStorage[firstGlyph + 1];
--- ./jdk/src/share/native/sun/font/layout/IndicRearrangementProcessor2.h 2014-03-03 18:59:39.000000000 -0800
+++ ./jdk/src/share/native/sun/font/layout/IndicRearrangementProcessor2.h 2015-10-24 06:21:19.000000000 -0700
@@ -56,7 +56,7 @@
virtual void endStateTable();
- void doRearrangementAction(LEGlyphStorage &glyphStorage, IndicRearrangementVerb verb) const;
+ void doRearrangementAction(LEGlyphStorage &glyphStorage, IndicRearrangementVerb verb, LEErrorCode &success) const;
IndicRearrangementProcessor2(const LEReferenceTo<MorphSubtableHeader2> &morphSubtableHeader, LEErrorCode &success);
virtual ~IndicRearrangementProcessor2();
@@ -76,8 +76,8 @@
static UClassID getStaticClassID();
protected:
- le_int32 firstGlyph;
- le_int32 lastGlyph;
+ le_uint32 firstGlyph;
+ le_uint32 lastGlyph;
LEReferenceToArrayOf<IndicRearrangementStateEntry2> entryTable;
LEReferenceTo<IndicRearrangementSubtableHeader2> indicRearrangementSubtableHeader;
--- ./jdk/src/share/native/sun/font/layout/LEStandalone.h 2014-03-03 18:59:40.000000000 -0800
+++ ./jdk/src/share/native/sun/font/layout/LEStandalone.h 2015-10-24 06:21:21.000000000 -0700
@@ -136,7 +136,7 @@
#define U_CAPI extern "C"
#if !defined(U_IS_BIG_ENDIAN)
- #ifdef _LITTLE_ENDIAN
+ #ifdef VM_LITTLE_ENDIAN
#define U_IS_BIG_ENDIAN 0
#endif
#endif
--- ./jdk/src/share/native/sun/font/layout/LETableReference.h 2015-12-12 10:53:29.829386000 -0800
+++ ./jdk/src/share/native/sun/font/layout/LETableReference.h 2015-07-18 13:32:33.000000000 -0700
@@ -188,7 +188,7 @@
void addOffset(size_t offset, LEErrorCode &success) {
if(hasBounds()) {
- if(offset > fLength) {
+ if(offset >= fLength) {
LE_DEBUG_TR("addOffset off end");
success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
return;
@@ -203,7 +203,7 @@
if(atPtr==NULL) return 0;
if(LE_FAILURE(success)) return LE_UINTPTR_MAX;
if((atPtr < fStart) ||
- (hasBounds() && (atPtr > fStart+fLength))) {
+ (hasBounds() && (atPtr >= fStart+fLength))) {
LE_DEBUG_TR3("ptrToOffset args out of range: %p", atPtr, 0);
success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
return LE_UINTPTR_MAX;
@@ -240,6 +240,18 @@
}
/**
+ * Throw an error if size*count overflows
+ */
+ size_t verifyLength(size_t offset, size_t size, le_uint32 count, LEErrorCode &success) {
+ if(count!=0 && size>LE_UINT32_MAX/count) {
+ LE_DEBUG_TR3("verifyLength failed size=%u, count=%u", size, count);
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ return 0;
+ }
+ return verifyLength(offset, size*count, success);
+ }
+
+ /**
* Change parent link to another
*/
LETableReference &reparent(const LETableReference &base) {
@@ -424,7 +436,7 @@
if(fCount == LE_UNBOUNDED_ARRAY) { // not a known length
fCount = getLength()/LETableVarSizer<T>::getSize(); // fit to max size
}
- LETableReference::verifyLength(0, LETableVarSizer<T>::getSize()*fCount, success);
+ LETableReference::verifyLength(0, LETableVarSizer<T>::getSize(), fCount, success);
}
if(LE_FAILURE(success)) {
fCount=0;
@@ -439,7 +451,7 @@
if(fCount == LE_UNBOUNDED_ARRAY) { // not a known length
fCount = getLength()/LETableVarSizer<T>::getSize(); // fit to max size
}
- LETableReference::verifyLength(0, LETableVarSizer<T>::getSize()*fCount, success);
+ LETableReference::verifyLength(0, LETableVarSizer<T>::getSize(), fCount, success);
}
if(LE_FAILURE(success)) clear();
}
@@ -450,7 +462,7 @@
if(fCount == LE_UNBOUNDED_ARRAY) { // not a known length
fCount = getLength()/LETableVarSizer<T>::getSize(); // fit to max size
}
- LETableReference::verifyLength(0, LETableVarSizer<T>::getSize()*fCount, success);
+ LETableReference::verifyLength(0, LETableVarSizer<T>::getSize(), fCount, success);
}
if(LE_FAILURE(success)) clear();
}
--- ./jdk/src/share/native/sun/font/layout/LigatureSubstProc.cpp 2015-12-12 10:53:29.829712000 -0800
+++ ./jdk/src/share/native/sun/font/layout/LigatureSubstProc.cpp 2015-07-18 13:32:33.000000000 -0700
@@ -73,7 +73,7 @@
const LigatureSubstitutionStateEntry *entry = entryTable.getAlias(index, success);
ByteOffset newState = SWAPW(entry->newStateOffset);
- le_int16 flags = SWAPW(entry->flags);
+ le_uint16 flags = SWAPW(entry->flags);
if (flags & lsfSetComponent) {
if (++m >= nComponents) {
@@ -92,15 +92,18 @@
if (actionOffset != 0) {
LEReferenceTo<LigatureActionEntry> ap(stHeader, success, actionOffset);
LigatureActionEntry action;
- le_int32 offset, i = 0;
+ le_int32 offset, i = 0, j = 0;
le_int32 stack[nComponents];
le_int16 mm = -1;
do {
le_uint32 componentGlyph = componentStack[m--];
+ if (j++ > 0) {
+ ap.addObject(success);
+ }
+
action = SWAPL(*ap.getAlias());
- ap.addObject(success); // ap++
if (m < 0) {
m = nComponents - 1;
--- ./jdk/src/share/native/sun/font/layout/LigatureSubstProc2.cpp 2015-12-12 10:53:29.830029000 -0800
+++ ./jdk/src/share/native/sun/font/layout/LigatureSubstProc2.cpp 2015-07-18 13:32:33.000000000 -0700
@@ -98,7 +98,7 @@
ap.addObject(ligActionIndex, success);
LEReferenceToArrayOf<TTGlyphID> ligatureTable(stHeader, success, ligatureOffset, LE_UNBOUNDED_ARRAY);
LigatureActionEntry action;
- le_int32 offset, i = 0;
+ le_int32 offset, i = 0, j = 0;
le_int32 stack[nComponents];
le_int16 mm = -1;
@@ -111,6 +111,10 @@
do {
le_uint32 componentGlyph = componentStack[m--]; // pop off
+ if (j++ > 0) {
+ ap.addObject(success);
+ }
+
action = SWAPL(*ap.getAlias());
if (m < 0) {
@@ -144,7 +148,6 @@
LE_DEBUG_BAD_FONT("m<0")
}
#endif
- ap.addObject(success);
} while (LE_SUCCESS(success) && !(action & lafLast) && (m>=0) ); // stop if last bit is set, or if run out of items
while (mm >= 0) {
--- ./jdk/src/share/native/sun/font/layout/LookupTables.cpp 2014-03-03 18:59:40.000000000 -0800
+++ ./jdk/src/share/native/sun/font/layout/LookupTables.cpp 2015-10-24 06:21:19.000000000 -0700
@@ -91,6 +91,10 @@
LEReferenceTo<LookupSingle> entry(base, success, entries);
LEReferenceTo<LookupSingle> trial(entry, success, extra);
+ if (!LE_SUCCESS(success)) {
+ return NULL;
+ }
+
if (SWAPW(trial->glyph) <= ttGlyph) {
entry = trial;
}
--- ./jdk/src/share/native/sun/font/layout/MarkToBasePosnSubtables.cpp 2015-12-12 10:53:29.830672000 -0800
+++ ./jdk/src/share/native/sun/font/layout/MarkToBasePosnSubtables.cpp 2015-07-18 13:32:33.000000000 -0700
@@ -97,13 +97,9 @@
if( LE_FAILURE(success) ) { return 0; }
Offset anchorTableOffset = SWAPW(baseRecord->baseAnchorTableOffsetArray[markClass]);
- if (anchorTableOffset <= 0) {
- // this means the table is mal-formed...
- glyphIterator->setCurrGlyphBaseOffset(baseIterator.getCurrStreamPosition());
- return 0;
- }
-
LEReferenceTo<AnchorTable> anchorTable(baseArray, success, anchorTableOffset);
+ if( LE_FAILURE(success) ) { return 0; }
+
LEPoint baseAnchor, markAdvance, pixels;
--- ./jdk/src/share/native/sun/font/layout/MorphTables.cpp 2015-12-12 10:53:29.831000000 -0800
+++ ./jdk/src/share/native/sun/font/layout/MorphTables.cpp 2015-10-24 06:21:19.000000000 -0700
@@ -52,8 +52,15 @@
le_uint32 chain;
for (chain = 0; LE_SUCCESS(success) && (chain < chainCount); chain += 1) {
- FeatureFlags defaultFlags = SWAPL(chainHeader->defaultFlags);
+ if (chain > 0) {
le_uint32 chainLength = SWAPL(chainHeader->chainLength);
+ if (chainLength & 0x03) { // incorrect alignment for 32 bit tables
+ success = LE_MEMORY_ALLOCATION_ERROR; // as good a choice as any
+ return;
+ }
+ chainHeader.addOffset(chainLength, success);
+ }
+ FeatureFlags defaultFlags = SWAPL(chainHeader->defaultFlags);
le_int16 nFeatureEntries = SWAPW(chainHeader->nFeatureEntries);
le_int16 nSubtables = SWAPW(chainHeader->nSubtables);
LEReferenceTo<MorphSubtableHeader> subtableHeader =
@@ -61,7 +68,15 @@
le_int16 subtable;
for (subtable = 0; LE_SUCCESS(success) && (subtable < nSubtables); subtable += 1) {
+ if (subtable > 0) {
le_int16 length = SWAPW(subtableHeader->length);
+ if (length & 0x03) { // incorrect alignment for 32 bit tables
+ success = LE_MEMORY_ALLOCATION_ERROR; // as good a choice as any
+ return;
+ }
+ subtableHeader.addOffset(length, success);
+ if (LE_FAILURE(success)) break;
+ }
SubtableCoverage coverage = SWAPW(subtableHeader->coverage);
FeatureFlags subtableFeatures = SWAPL(subtableHeader->subtableFeatures);
@@ -69,10 +84,7 @@
if ((coverage & scfVertical) == 0 && (subtableFeatures & defaultFlags) != 0 && LE_SUCCESS(success)) {
subtableHeader->process(subtableHeader, glyphStorage, success);
}
-
- subtableHeader.addOffset(length, success);
}
- chainHeader.addOffset(chainLength, success);
}
}
@@ -80,6 +92,8 @@
{
SubtableProcessor *processor = NULL;
+ if (LE_FAILURE(success)) return;
+
switch (SWAPW(coverage) & scfTypeMask)
{
case mstIndicRearrangement:
--- ./jdk/src/share/native/sun/font/layout/MorphTables2.cpp 2015-12-12 10:53:29.831324000 -0800
+++ ./jdk/src/share/native/sun/font/layout/MorphTables2.cpp 2015-10-24 06:21:19.000000000 -0700
@@ -59,6 +59,10 @@
for (chain = 0; LE_SUCCESS(success) && (chain < chainCount); chain++) {
if (chain>0) {
le_uint32 chainLength = SWAPL(chainHeader->chainLength);
+ if (chainLength & 0x03) { // incorrect alignment for 32 bit tables
+ success = LE_MEMORY_ALLOCATION_ERROR; // as good a choice as any
+ return;
+ }
chainHeader.addOffset(chainLength, success); // Don't increment the first time
}
FeatureFlags flag = SWAPL(chainHeader->defaultFlags);
@@ -188,7 +192,12 @@
for (subtable = 0; LE_SUCCESS(success) && subtable < nSubtables; subtable++) {
if(subtable>0) {
le_uint32 length = SWAPL(subtableHeader->length);
+ if (length & 0x03) { // incorrect alignment for 32 bit tables
+ success = LE_MEMORY_ALLOCATION_ERROR; // as good a choice as any
+ return;
+ }
subtableHeader.addOffset(length, success); // Don't addOffset for the last entry.
+ if (LE_FAILURE(success)) break;
}
le_uint32 coverage = SWAPL(subtableHeader->coverage);
FeatureFlags subtableFeatures = SWAPL(subtableHeader->subtableFeatures);
@@ -204,6 +213,8 @@
{
SubtableProcessor2 *processor = NULL;
+ if (LE_FAILURE(success)) return;
+
switch (SWAPL(coverage) & scfTypeMask2)
{
case mstIndicRearrangement:
--- ./jdk/src/share/native/sun/font/layout/PairPositioningSubtables.cpp 2015-12-12 10:53:29.831624000 -0800
+++ ./jdk/src/share/native/sun/font/layout/PairPositioningSubtables.cpp 2015-07-18 13:32:33.000000000 -0700
@@ -179,12 +179,13 @@
LEReferenceTo<PairValueRecord> record(records);
for(le_int32 r = 0; r < recordCount; r += 1) {
+ if (r > 0) {
+ record.addOffset(recordSize, success);
+ }
if(LE_FAILURE(success)) return LEReferenceTo<PairValueRecord>();
if (SWAPW(record->secondGlyph) == glyphID) {
return record;
}
-
- record.addOffset(recordSize, success);
}
#else
#error dead code - not updated.
--- ./jdk/src/share/native/sun/font/layout/SegmentArrayProcessor.cpp 2015-12-12 10:53:19.989749000 -0800
+++ ./jdk/src/share/native/sun/font/layout/SegmentArrayProcessor.cpp 2015-10-24 06:21:19.000000000 -0700
@@ -63,6 +63,8 @@
le_int32 glyphCount = glyphStorage.getGlyphCount();
le_int32 glyph;
+ if (LE_FAILURE(success)) return;
+
for (glyph = 0; glyph < glyphCount; glyph += 1) {
LEGlyphID thisGlyph = glyphStorage[glyph];
const LookupSegment *lookupSegment = segmentArrayLookupTable->lookupSegment(segmentArrayLookupTable, segments, thisGlyph, success);
--- ./jdk/src/share/native/sun/font/layout/SegmentArrayProcessor2.cpp 2014-03-03 18:59:40.000000000 -0800
+++ ./jdk/src/share/native/sun/font/layout/SegmentArrayProcessor2.cpp 2015-10-24 06:21:19.000000000 -0700
@@ -63,6 +63,8 @@
le_int32 glyphCount = glyphStorage.getGlyphCount();
le_int32 glyph;
+ if (LE_FAILURE(success)) return;
+
for (glyph = 0; glyph < glyphCount; glyph += 1) {
LEGlyphID thisGlyph = glyphStorage[glyph];
// lookupSegment already range checked by lookupSegment() function.
--- ./jdk/src/share/native/sun/font/layout/SegmentSingleProcessor2.cpp 2014-03-03 18:59:40.000000000 -0800
+++ ./jdk/src/share/native/sun/font/layout/SegmentSingleProcessor2.cpp 2015-10-24 06:21:19.000000000 -0700
@@ -64,6 +64,8 @@
le_int32 glyphCount = glyphStorage.getGlyphCount();
le_int32 glyph;
+ if (LE_FAILURE(success)) return;
+
for (glyph = 0; glyph < glyphCount; glyph += 1) {
LEGlyphID thisGlyph = glyphStorage[glyph];
const LookupSegment *lookupSegment = segmentSingleLookupTable->lookupSegment(segmentSingleLookupTable, segments, thisGlyph, success);
--- ./jdk/src/share/native/sun/font/layout/SimpleArrayProcessor2.cpp 2014-03-03 18:59:40.000000000 -0800
+++ ./jdk/src/share/native/sun/font/layout/SimpleArrayProcessor2.cpp 2015-10-24 06:21:19.000000000 -0700
@@ -61,10 +61,11 @@
void SimpleArrayProcessor2::process(LEGlyphStorage &glyphStorage, LEErrorCode &success)
{
- if (LE_FAILURE(success)) return;
le_int32 glyphCount = glyphStorage.getGlyphCount();
le_int32 glyph;
+ if (LE_FAILURE(success)) return;
+
for (glyph = 0; glyph < glyphCount; glyph += 1) {
LEGlyphID thisGlyph = glyphStorage[glyph];
if (LE_GET_GLYPH(thisGlyph) < 0xFFFF) {
--- ./jdk/src/share/native/sun/font/layout/SingleSubstitutionSubtables.cpp 2015-12-12 10:53:29.831907000 -0800
+++ ./jdk/src/share/native/sun/font/layout/SingleSubstitutionSubtables.cpp 2015-07-18 13:32:33.000000000 -0700
@@ -94,7 +94,9 @@
return 0;
}
- if (coverageIndex >= 0) {
+ LEReferenceToArrayOf<TTGlyphID> substituteArrayRef(base, success, substituteArray, SWAPW(glyphCount));
+
+ if (coverageIndex >= 0 && LE_SUCCESS(success) && coverageIndex < substituteArrayRef.getCount()) {
TTGlyphID substitute = SWAPW(substituteArray[coverageIndex]);
if (filter == NULL || filter->accept(LE_SET_GLYPH(glyph, substitute), success)) {
--- ./jdk/src/share/native/sun/font/layout/SingleTableProcessor.cpp 2014-03-03 18:59:40.000000000 -0800
+++ ./jdk/src/share/native/sun/font/layout/SingleTableProcessor.cpp 2015-10-24 06:21:19.000000000 -0700
@@ -63,6 +63,8 @@
le_int32 glyph;
le_int32 glyphCount = glyphStorage.getGlyphCount();
+ if (LE_FAILURE(success)) return;
+
for (glyph = 0; glyph < glyphCount; glyph += 1) {
const LookupSingle *lookupSingle = singleTableLookupTable->lookupSingle(singleTableLookupTable, entries, glyphStorage[glyph], success);
--- ./jdk/src/share/native/sun/font/layout/StateTableProcessor.cpp 2015-12-12 10:53:29.832189000 -0800
+++ ./jdk/src/share/native/sun/font/layout/StateTableProcessor.cpp 2015-07-18 13:32:33.000000000 -0700
@@ -85,6 +85,7 @@
if (currGlyph == glyphCount) {
// XXX: How do we handle EOT vs. EOL?
classCode = classCodeEOT;
+ break;
} else {
TTGlyphID glyphCode = (TTGlyphID) LE_GET_GLYPH(glyphStorage[currGlyph]);
--- ./jdk/src/share/native/sun/font/layout/StateTableProcessor2.cpp 2015-12-12 10:53:29.832523000 -0800
+++ ./jdk/src/share/native/sun/font/layout/StateTableProcessor2.cpp 2015-07-18 13:32:33.000000000 -0700
@@ -103,6 +103,7 @@
if (currGlyph == glyphCount || currGlyph == -1) {
// XXX: How do we handle EOT vs. EOL?
classCode = classCodeEOT;
+ break;
} else {
LEGlyphID gid = glyphStorage[currGlyph];
TTGlyphID glyphCode = (TTGlyphID) LE_GET_GLYPH(gid);
@@ -134,6 +135,7 @@
if (currGlyph == glyphCount || currGlyph == -1) {
// XXX: How do we handle EOT vs. EOL?
classCode = classCodeEOT;
+ break;
} else {
LEGlyphID gid = glyphStorage[currGlyph];
TTGlyphID glyphCode = (TTGlyphID) LE_GET_GLYPH(gid);
@@ -171,6 +173,7 @@
if (currGlyph == glyphCount || currGlyph == -1) {
// XXX: How do we handle EOT vs. EOL?
classCode = classCodeEOT;
+ break;
} else if(currGlyph > glyphCount) {
// note if > glyphCount, we've run off the end (bad font)
currGlyph = glyphCount;
@@ -211,6 +214,7 @@
if (currGlyph == glyphCount || currGlyph == -1) {
// XXX: How do we handle EOT vs. EOL?
classCode = classCodeEOT;
+ break;
} else {
TTGlyphID glyphCode = (TTGlyphID) LE_GET_GLYPH(glyphStorage[currGlyph]);
if (glyphCode == 0xFFFF) {
--- ./jdk/src/share/native/sun/font/layout/StateTables.h 2015-12-12 10:53:29.832810000 -0800
+++ ./jdk/src/share/native/sun/font/layout/StateTables.h 2015-07-18 13:32:33.000000000 -0700
@@ -126,7 +126,7 @@
struct StateEntry
{
ByteOffset newStateOffset;
- le_int16 flags;
+ le_uint16 flags;
};
typedef le_uint16 EntryTableIndex2;
--- ./jdk/src/share/native/sun/java2d/cmm/lcms/LCMS.c 2014-03-03 18:59:41.000000000 -0800
+++ ./jdk/src/share/native/sun/java2d/cmm/lcms/LCMS.c 2015-10-24 06:21:21.000000000 -0700
@@ -182,7 +182,7 @@
return 0L;
}
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
/* Reversing data packed into int for LE archs */
if (isInIntPacked) {
inFormatter ^= DOSWAP_SH(1);
--- ./jdk/src/share/native/sun/java2d/opengl/J2D_GL/glext.h 2014-03-03 18:59:42.000000000 -0800
+++ ./jdk/src/share/native/sun/java2d/opengl/J2D_GL/glext.h 2015-10-24 06:21:19.000000000 -0700
@@ -6506,6 +6506,13 @@
typedef void (APIENTRYP PFNGLSTRINGMARKERGREMEDYPROC) (GLsizei len, const GLvoid *string);
#endif
+#ifndef GL_NV_texture_barrier
+#define GL_NV_texture_barrier 1
+#ifdef GL_EXT_PROTOTYPES
+GLAPI void APIENTRY glTextureBarrierNV (void);
+#endif /* GL_EXT_PROTOTYPES */
+typedef void (APIENTRYP PNFGLTEXTUREBARRIERNVPROC) (void);
+#endif
#ifdef __cplusplus
}
--- ./jdk/src/share/native/sun/java2d/opengl/OGLContext.c 2015-12-12 10:53:29.845820000 -0800
+++ ./jdk/src/share/native/sun/java2d/opengl/OGLContext.c 2015-10-24 06:21:19.000000000 -0700
@@ -911,6 +911,10 @@
}
}
}
+ if (OGLContext_IsExtensionAvailable(e, "GL_NV_texture_barrier")) {
+ *caps |= CAPS_EXT_TEXBARRIER;
+ }
+
// stuff vendor descriptor in the upper bits of the caps
if (vendor != NULL) {
if (strncmp(vendor, "ATI", 3) == 0) {
--- ./jdk/src/share/native/sun/java2d/opengl/OGLContext.h 2015-12-12 10:53:27.583297000 -0800
+++ ./jdk/src/share/native/sun/java2d/opengl/OGLContext.h 2015-10-24 06:21:19.000000000 -0700
@@ -134,6 +134,8 @@
sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EXT_GRAD_SHADER
#define CAPS_EXT_TEXRECT \
sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EXT_TEXRECT
+#define CAPS_EXT_TEXBARRIER \
+ sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EXT_TEXBARRIER
/**
* Evaluates to true if the given capability bitmask is present for the
--- ./jdk/src/share/native/sun/java2d/opengl/OGLFuncs.h 2014-03-03 18:59:43.000000000 -0800
+++ ./jdk/src/share/native/sun/java2d/opengl/OGLFuncs.h 2015-10-24 06:21:19.000000000 -0700
@@ -173,6 +173,11 @@
typedef void (GLAPIENTRY *glDeleteObjectARBType)(GLhandleARB);
/**
+ * GL_NV_texture_barrier extension function typedef's
+ */
+typedef void (GLAPIENTRY *glTextureBarrierNVType) (void);
+
+/**
* REMIND: this caused an internal error in the MS compiler!?!?
*
*#define OGL_CHECK_FUNC_ERR(f) \
@@ -316,7 +321,8 @@
OGL_##action##_EXT_FUNC(glGetProgramivARB); \
OGL_##action##_EXT_FUNC(glGetInfoLogARB); \
OGL_##action##_EXT_FUNC(glGetObjectParameterivARB); \
- OGL_##action##_EXT_FUNC(glDeleteObjectARB);
+ OGL_##action##_EXT_FUNC(glDeleteObjectARB); \
+ OGL_##action##_EXT_FUNC(glTextureBarrierNV);
#define OGL_EXPRESS_ALL_FUNCS(action) \
OGL_EXPRESS_BASE_FUNCS(action) \
--- ./jdk/src/share/native/sun/java2d/opengl/OGLTextRenderer.c 2015-12-12 10:53:29.846484000 -0800
+++ ./jdk/src/share/native/sun/java2d/opengl/OGLTextRenderer.c 2015-10-24 06:21:19.000000000 -0700
@@ -46,8 +46,8 @@
*/
#define OGLTR_CACHE_WIDTH 512
#define OGLTR_CACHE_HEIGHT 512
-#define OGLTR_CACHE_CELL_WIDTH 16
-#define OGLTR_CACHE_CELL_HEIGHT 16
+#define OGLTR_CACHE_CELL_WIDTH 32
+#define OGLTR_CACHE_CELL_HEIGHT 32
/**
* The current "glyph mode" state. This variable is used to track the
@@ -68,26 +68,17 @@
static GlyphMode glyphMode = MODE_NOT_INITED;
/**
- * This enum indicates the current state of the hardware glyph cache.
- * Initially the CacheStatus is set to CACHE_NOT_INITED, and then it is
- * set to either GRAY or LCD when the glyph cache is initialized.
- */
-typedef enum {
- CACHE_NOT_INITED,
- CACHE_GRAY,
- CACHE_LCD
-} CacheStatus;
-static CacheStatus cacheStatus = CACHE_NOT_INITED;
-
-/**
- * This is the one glyph cache. Once it is initialized as either GRAY or
- * LCD, it stays in that mode for the duration of the application. It should
+ * There are two separate glyph caches: for AA and for LCD.
+ * Once one of them is initialized as either GRAY or LCD, it
+ * stays in that mode for the duration of the application. It should
* be safe to use this one glyph cache for all screens in a multimon
* environment, since the glyph cache texture is shared between all contexts,
* and (in theory) OpenGL drivers should be smart enough to manage that
* texture across all screens.
*/
-static GlyphCacheInfo *glyphCache = NULL;
+
+static GlyphCacheInfo *glyphCacheLCD = NULL;
+static GlyphCacheInfo *glyphCacheAA = NULL;
/**
* The handle to the LCD text fragment program object.
@@ -138,7 +129,7 @@
* (OGLTR_CACHED_DEST_HEIGHT >= OGLTR_NOCACHE_TILE_SIZE)
*/
#define OGLTR_CACHED_DEST_WIDTH 512
-#define OGLTR_CACHED_DEST_HEIGHT 32
+#define OGLTR_CACHED_DEST_HEIGHT (OGLTR_CACHE_CELL_HEIGHT * 2)
/**
* The handle to the "cached destination" texture object.
@@ -212,8 +203,11 @@
OGLTR_CACHE_WIDTH, OGLTR_CACHE_HEIGHT, 0,
pixelFormat, GL_UNSIGNED_BYTE, NULL);
- cacheStatus = (lcdCache ? CACHE_LCD : CACHE_GRAY);
- glyphCache = gcinfo;
+ if (lcdCache) {
+ glyphCacheLCD = gcinfo;
+ } else {
+ glyphCacheAA = gcinfo;
+ }
return JNI_TRUE;
}
@@ -223,24 +217,24 @@
* associated with the given OGLContext.
*/
static void
-OGLTR_AddToGlyphCache(GlyphInfo *glyph, jboolean rgbOrder)
+OGLTR_AddToGlyphCache(GlyphInfo *glyph, GLenum pixelFormat)
{
- GLenum pixelFormat;
CacheCellInfo *ccinfo;
+ GlyphCacheInfo *gcinfo;
J2dTraceLn(J2D_TRACE_INFO, "OGLTR_AddToGlyphCache");
- if ((glyphCache == NULL) || (glyph->image == NULL)) {
- return;
+ if (pixelFormat == GL_LUMINANCE) {
+ gcinfo = glyphCacheAA;
+ } else {
+ gcinfo = glyphCacheLCD;
}
- if (cacheStatus == CACHE_LCD) {
- pixelFormat = rgbOrder ? GL_RGB : GL_BGR;
- } else {
- pixelFormat = GL_LUMINANCE;
+ if ((gcinfo == NULL) || (glyph->image == NULL)) {
+ return;
}
- AccelGlyphCache_AddGlyph(glyphCache, glyph);
+ AccelGlyphCache_AddGlyph(gcinfo, glyph);
ccinfo = (CacheCellInfo *) glyph->cellInfo;
if (ccinfo != NULL) {
@@ -413,14 +407,20 @@
* gamma lookup table textures.
*/
static jboolean
-OGLTR_EnableLCDGlyphModeState(GLuint glyphTextureID, jint contrast)
+OGLTR_EnableLCDGlyphModeState(GLuint glyphTextureID,
+ GLuint dstTextureID,
+ jint contrast)
{
// bind the texture containing glyph data to texture unit 0
j2d_glActiveTextureARB(GL_TEXTURE0_ARB);
j2d_glBindTexture(GL_TEXTURE_2D, glyphTextureID);
+ j2d_glEnable(GL_TEXTURE_2D);
// bind the texture tile containing destination data to texture unit 1
j2d_glActiveTextureARB(GL_TEXTURE1_ARB);
+ if (dstTextureID != 0) {
+ j2d_glBindTexture(GL_TEXTURE_2D, dstTextureID);
+ } else {
if (cachedDestTextureID == 0) {
cachedDestTextureID =
OGLContext_CreateBlitTexture(GL_RGB8, GL_RGB,
@@ -431,6 +431,7 @@
}
}
j2d_glBindTexture(GL_TEXTURE_2D, cachedDestTextureID);
+ }
// note that GL_TEXTURE_2D was already enabled for texture unit 0,
// but we need to explicitly enable it for texture unit 1
@@ -472,14 +473,14 @@
return;
}
- if (glyphCache == NULL) {
+ if (glyphCacheAA == NULL) {
if (!OGLTR_InitGlyphCache(JNI_FALSE)) {
return;
}
}
j2d_glEnable(GL_TEXTURE_2D);
- j2d_glBindTexture(GL_TEXTURE_2D, glyphCache->cacheID);
+ j2d_glBindTexture(GL_TEXTURE_2D, glyphCacheAA->cacheID);
j2d_glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
// for grayscale/monochrome text, the current OpenGL source color
@@ -522,6 +523,7 @@
j2d_glActiveTextureARB(GL_TEXTURE1_ARB);
j2d_glDisable(GL_TEXTURE_2D);
j2d_glActiveTextureARB(GL_TEXTURE0_ARB);
+ j2d_glDisable(GL_TEXTURE_2D);
break;
case MODE_NO_CACHE_GRAY:
@@ -547,7 +549,7 @@
if (ginfo->cellInfo == NULL) {
// attempt to add glyph to accelerated glyph cache
- OGLTR_AddToGlyphCache(ginfo, JNI_FALSE);
+ OGLTR_AddToGlyphCache(ginfo, GL_LUMINANCE);
if (ginfo->cellInfo == NULL) {
// we'll just no-op in the rare case that the cell is NULL
@@ -707,7 +709,8 @@
OGLTR_DrawLCDGlyphViaCache(OGLContext *oglc, OGLSDOps *dstOps,
GlyphInfo *ginfo, jint x, jint y,
jint glyphIndex, jint totalGlyphs,
- jboolean rgbOrder, jint contrast)
+ jboolean rgbOrder, jint contrast,
+ GLuint dstTextureID)
{
CacheCellInfo *cell;
jint dx1, dy1, dx2, dy2;
@@ -718,7 +721,7 @@
CHECK_PREVIOUS_OP(GL_TEXTURE_2D);
j2d_glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
- if (glyphCache == NULL) {
+ if (glyphCacheLCD == NULL) {
if (!OGLTR_InitGlyphCache(JNI_TRUE)) {
return JNI_FALSE;
}
@@ -727,11 +730,13 @@
if (rgbOrder != lastRGBOrder) {
// need to invalidate the cache in this case; see comments
// for lastRGBOrder above
- AccelGlyphCache_Invalidate(glyphCache);
+ AccelGlyphCache_Invalidate(glyphCacheLCD);
lastRGBOrder = rgbOrder;
}
- if (!OGLTR_EnableLCDGlyphModeState(glyphCache->cacheID, contrast)) {
+ if (!OGLTR_EnableLCDGlyphModeState(glyphCacheLCD->cacheID,
+ dstTextureID, contrast))
+ {
return JNI_FALSE;
}
@@ -750,7 +755,7 @@
j2d_glActiveTextureARB(GL_TEXTURE0_ARB);
// attempt to add glyph to accelerated glyph cache
- OGLTR_AddToGlyphCache(ginfo, rgbOrder);
+ OGLTR_AddToGlyphCache(ginfo, rgbOrder ? GL_RGB : GL_BGR);
if (ginfo->cellInfo == NULL) {
// we'll just no-op in the rare case that the cell is NULL
@@ -767,6 +772,7 @@
dx2 = dx1 + ginfo->width;
dy2 = dy1 + ginfo->height;
+ if (dstTextureID == 0) {
// copy destination into second cached texture, if necessary
OGLTR_UpdateCachedDestination(dstOps, ginfo,
dx1, dy1, dx2, dy2,
@@ -777,6 +783,23 @@
dty1 = ((jfloat)(cachedDestBounds.y2 - dy1)) / OGLTR_CACHED_DEST_HEIGHT;
dtx2 = ((jfloat)(dx2 - cachedDestBounds.x1)) / OGLTR_CACHED_DEST_WIDTH;
dty2 = ((jfloat)(cachedDestBounds.y2 - dy2)) / OGLTR_CACHED_DEST_HEIGHT;
+ } else {
+ jint gw = ginfo->width;
+ jint gh = ginfo->height;
+
+ // this accounts for lower-left origin of the destination region
+ jint dxadj = dstOps->xOffset + x;
+ jint dyadj = dstOps->yOffset + dstOps->height - (y + gh);
+
+ // update the remaining destination texture coordinates
+ dtx1 =((GLfloat)dxadj) / dstOps->textureWidth;
+ dtx2 = ((GLfloat)dxadj + gw) / dstOps->textureWidth;
+
+ dty1 = ((GLfloat)dyadj + gh) / dstOps->textureHeight;
+ dty2 = ((GLfloat)dyadj) / dstOps->textureHeight;
+
+ j2d_glTextureBarrierNV();
+ }
// render composed texture to the destination surface
j2d_glBegin(GL_QUADS);
@@ -837,7 +860,8 @@
OGLTR_DrawLCDGlyphNoCache(OGLContext *oglc, OGLSDOps *dstOps,
GlyphInfo *ginfo, jint x, jint y,
jint rowBytesOffset,
- jboolean rgbOrder, jint contrast)
+ jboolean rgbOrder, jint contrast,
+ GLuint dstTextureID)
{
GLfloat tx1, ty1, tx2, ty2;
GLfloat dtx1, dty1, dtx2, dty2;
@@ -859,7 +883,9 @@
}
}
- if (!OGLTR_EnableLCDGlyphModeState(oglc->blitTextureID, contrast)) {
+ if (!OGLTR_EnableLCDGlyphModeState(oglc->blitTextureID,
+ dstTextureID, contrast))
+ {
return JNI_FALSE;
}
@@ -907,6 +933,7 @@
dxadj = dstOps->xOffset + x;
dyadj = dstOps->yOffset + dstOps->height - (y + sh);
+ if (dstTextureID == 0) {
// copy destination into cached texture tile (the lower-left
// corner of the destination region will be positioned at the
// lower-left corner (0,0) of the texture)
@@ -915,10 +942,20 @@
0, 0,
dxadj, dyadj,
sw, sh);
-
// update the remaining destination texture coordinates
dtx2 = ((GLfloat)sw) / OGLTR_CACHED_DEST_WIDTH;
dty1 = ((GLfloat)sh) / OGLTR_CACHED_DEST_HEIGHT;
+ } else {
+ // use the destination texture directly
+ // update the remaining destination texture coordinates
+ dtx1 =((GLfloat)dxadj) / dstOps->textureWidth;
+ dtx2 = ((GLfloat)dxadj + sw) / dstOps->textureWidth;
+
+ dty1 = ((GLfloat)dyadj + sh) / dstOps->textureHeight;
+ dty2 = ((GLfloat)dyadj) / dstOps->textureHeight;
+
+ j2d_glTextureBarrierNV();
+ }
// render composed texture to the destination surface
j2d_glBegin(GL_QUADS);
@@ -953,6 +990,7 @@
unsigned char *images, unsigned char *positions)
{
int glyphCounter;
+ GLuint dstTextureID = 0;
J2dTraceLn(J2D_TRACE_INFO, "OGLTR_DrawGlyphList");
@@ -966,6 +1004,29 @@
glyphMode = MODE_NOT_INITED;
isCachedDestValid = JNI_FALSE;
+ // We have to obtain an information about destination content
+ // in order to render lcd glyphs. It could be done by copying
+ // a part of desitination buffer into an intermediate texture
+ // using glCopyTexSubImage2D(). However, on macosx this path is
+ // slow, and it dramatically reduces the overall speed of lcd
+ // text rendering.
+ //
+ // In some cases, we can use a texture from the destination
+ // surface data in oredr to avoid this slow reading routine.
+ // It requires:
+ // * An appropriate textureTarget for the destination SD.
+ // In particular, we need GL_TEXTURE_2D
+ // * Means to prevent read-after-write problem.
+ // At the moment, a GL_NV_texture_barrier extension is used
+ // to achieve this.
+#ifdef MACOSX
+ if (OGLC_IS_CAP_PRESENT(oglc, CAPS_EXT_TEXBARRIER) &&
+ dstOps->textureTarget == GL_TEXTURE_2D)
+ {
+ dstTextureID = dstOps->textureID;
+ }
+#endif
+
for (glyphCounter = 0; glyphCounter < totalGlyphs; glyphCounter++) {
jint x, y;
jfloat glyphx, glyphy;
@@ -1003,8 +1064,7 @@
if (grayscale) {
// grayscale or monochrome glyph data
- if (cacheStatus != CACHE_LCD &&
- ginfo->width <= OGLTR_CACHE_CELL_WIDTH &&
+ if (ginfo->width <= OGLTR_CACHE_CELL_WIDTH &&
ginfo->height <= OGLTR_CACHE_CELL_HEIGHT)
{
ok = OGLTR_DrawGrayscaleGlyphViaCache(oglc, ginfo, x, y);
@@ -1024,19 +1084,20 @@
}
if (rowBytesOffset == 0 &&
- cacheStatus != CACHE_GRAY &&
ginfo->width <= OGLTR_CACHE_CELL_WIDTH &&
ginfo->height <= OGLTR_CACHE_CELL_HEIGHT)
{
ok = OGLTR_DrawLCDGlyphViaCache(oglc, dstOps,
ginfo, x, y,
glyphCounter, totalGlyphs,
- rgbOrder, lcdContrast);
+ rgbOrder, lcdContrast,
+ dstTextureID);
} else {
ok = OGLTR_DrawLCDGlyphNoCache(oglc, dstOps,
ginfo, x, y,
rowBytesOffset,
- rgbOrder, lcdContrast);
+ rgbOrder, lcdContrast,
+ dstTextureID);
}
}
--- ./jdk/src/share/native/sun/management/DiagnosticCommandImpl.c 2015-12-12 10:53:22.246499000 -0800
+++ ./jdk/src/share/native/sun/management/DiagnosticCommandImpl.c 2015-10-24 06:21:21.000000000 -0700
@@ -27,6 +27,7 @@
#include <jni.h>
#include "management.h"
#include "sun_management_DiagnosticCommandImpl.h"
+#include <stdlib.h>
JNIEXPORT void JNICALL Java_sun_management_DiagnosticCommandImpl_setNotificationEnabled
(JNIEnv *env, jobject dummy, jboolean enabled) {
--- ./jdk/src/share/native/sun/nio/ch/genSocketOptionRegistry.c 2015-12-12 10:53:27.584337000 -0800
+++ ./jdk/src/share/native/sun/nio/ch/genSocketOptionRegistry.c 1969-12-31 16:00:00.000000000 -0800
@@ -1,131 +0,0 @@
-/*
- * Copyright (c) 2008, 2012, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-#include <stdio.h>
-#ifdef _WIN32
-#include <winsock2.h>
-#include <ws2tcpip.h>
-#else
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <netinet/tcp.h>
-#endif
-
-/**
- * Generates sun.nio.ch.SocketOptionRegistry, a class that maps Java-level
- * socket options to the platform specific level and option.
- */
-
-static void out(char* s) {
- printf("%s\n", s);
-}
-
-static void emit(const char *name, char * family, int level, int optname) {
- printf(" map.put(new RegistryKey(%s, %s),", name, family);
- printf(" new OptionKey(%d, %d));\n", level, optname);
-}
-
-static void emit_unspec(const char *name, int level, int optname) {
- emit(name, "Net.UNSPEC", level, optname);
-}
-
-static void emit_inet(const char *name, int level, int optname) {
- emit(name, "StandardProtocolFamily.INET", level, optname);
-}
-
-static void emit_inet6(const char *name, int level, int optname) {
- emit(name, "StandardProtocolFamily.INET6", level, optname);
-}
-
-int main(int argc, const char* argv[]) {
- out("// AUTOMATICALLY GENERATED FILE - DO NOT EDIT ");
- out("package sun.nio.ch; ");
- out("import java.net.SocketOption; ");
- out("import java.net.StandardSocketOptions; ");
- out("import java.net.ProtocolFamily; ");
- out("import java.net.StandardProtocolFamily; ");
- out("import java.util.Map; ");
- out("import java.util.HashMap; ");
- out("class SocketOptionRegistry { ");
- out(" private SocketOptionRegistry() { } ");
- out(" private static class RegistryKey { ");
- out(" private final SocketOption<?> name; ");
- out(" private final ProtocolFamily family; ");
- out(" RegistryKey(SocketOption<?> name, ProtocolFamily family) { ");
- out(" this.name = name; ");
- out(" this.family = family; ");
- out(" } ");
- out(" public int hashCode() { ");
- out(" return name.hashCode() + family.hashCode(); ");
- out(" } ");
- out(" public boolean equals(Object ob) { ");
- out(" if (ob == null) return false; ");
- out(" if (!(ob instanceof RegistryKey)) return false; ");
- out(" RegistryKey other = (RegistryKey)ob; ");
- out(" if (this.name != other.name) return false; ");
- out(" if (this.family != other.family) return false; ");
- out(" return true; ");
- out(" } ");
- out(" } ");
- out(" private static class LazyInitialization { ");
- out(" static final Map<RegistryKey,OptionKey> options = options(); ");
- out(" private static Map<RegistryKey,OptionKey> options() { ");
- out(" Map<RegistryKey,OptionKey> map = ");
- out(" new HashMap<RegistryKey,OptionKey>(); ");
-
- emit_unspec("StandardSocketOptions.SO_BROADCAST", SOL_SOCKET, SO_BROADCAST);
- emit_unspec("StandardSocketOptions.SO_KEEPALIVE", SOL_SOCKET, SO_KEEPALIVE);
- emit_unspec("StandardSocketOptions.SO_LINGER", SOL_SOCKET, SO_LINGER);
- emit_unspec("StandardSocketOptions.SO_SNDBUF", SOL_SOCKET, SO_SNDBUF);
- emit_unspec("StandardSocketOptions.SO_RCVBUF", SOL_SOCKET, SO_RCVBUF);
- emit_unspec("StandardSocketOptions.SO_REUSEADDR", SOL_SOCKET, SO_REUSEADDR);
- emit_unspec("StandardSocketOptions.TCP_NODELAY", IPPROTO_TCP, TCP_NODELAY);
-
- emit_inet("StandardSocketOptions.IP_TOS", IPPROTO_IP, IP_TOS);
- emit_inet("StandardSocketOptions.IP_MULTICAST_IF", IPPROTO_IP, IP_MULTICAST_IF);
- emit_inet("StandardSocketOptions.IP_MULTICAST_TTL", IPPROTO_IP, IP_MULTICAST_TTL);
- emit_inet("StandardSocketOptions.IP_MULTICAST_LOOP", IPPROTO_IP, IP_MULTICAST_LOOP);
-
-#ifdef AF_INET6
- emit_inet6("StandardSocketOptions.IP_TOS", IPPROTO_IPV6, IPV6_TCLASS);
- emit_inet6("StandardSocketOptions.IP_MULTICAST_IF", IPPROTO_IPV6, IPV6_MULTICAST_IF);
- emit_inet6("StandardSocketOptions.IP_MULTICAST_TTL", IPPROTO_IPV6, IPV6_MULTICAST_HOPS);
- emit_inet6("StandardSocketOptions.IP_MULTICAST_LOOP", IPPROTO_IPV6, IPV6_MULTICAST_LOOP);
-#endif
-
- emit_unspec("ExtendedSocketOption.SO_OOBINLINE", SOL_SOCKET, SO_OOBINLINE);
-
- out(" return map; ");
- out(" } ");
- out(" } ");
- out(" public static OptionKey findOption(SocketOption<?> name, ProtocolFamily family) { ");
- out(" RegistryKey key = new RegistryKey(name, family); ");
- out(" return LazyInitialization.options.get(key); ");
- out(" } ");
- out("} ");
-
- return 0;
-}
--- ./jdk/src/share/native/sun/security/ec/impl/ec.c 2015-12-12 10:53:29.846969000 -0800
+++ ./jdk/src/share/native/sun/security/ec/impl/ec.c 2015-07-18 13:32:33.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2015, Oracle and/or its affiliates. All rights reserved.
* Use is subject to license terms.
*
* This library is free software; you can redistribute it and/or
@@ -34,6 +34,7 @@
* Dr Vipul Gupta <vipul.gupta@sun.com> and
* Douglas Stebila <douglas@stebila.ca>, Sun Microsystems Laboratories
*
+ * Last Modified Date from the Original Code: April 2015
*********************************************************************** */
#include "mplogic.h"
@@ -585,6 +586,10 @@
return SECFailure;
}
+ if (EC_ValidatePublicKey(ecParams, publicValue, kmflag) != SECSuccess) {
+ return SECFailure;
+ }
+
memset(derivedSecret, 0, sizeof *derivedSecret);
len = (ecParams->fieldID.size + 7) >> 3;
pointQ.len = 2*len + 1;
--- ./jdk/src/share/native/sun/security/ec/impl/ecc_impl.h 2015-12-12 10:53:29.847295000 -0800
+++ ./jdk/src/share/native/sun/security/ec/impl/ecc_impl.h 2015-07-18 13:32:33.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
* Use is subject to license terms.
*
* This library is free software; you can redistribute it and/or
@@ -34,6 +34,7 @@
* Dr Vipul Gupta <vipul.gupta@sun.com> and
* Douglas Stebila <douglas@stebila.ca>, Sun Microsystems Laboratories
*
+ * Last Modified Date from the Original Code: November 2013
*********************************************************************** */
#ifndef _ECC_IMPL_H
--- ./jdk/src/share/native/sun/security/ec/impl/ecdecode.c 2015-12-12 10:53:29.847665000 -0800
+++ ./jdk/src/share/native/sun/security/ec/impl/ecdecode.c 2015-07-18 13:32:33.000000000 -0700
@@ -34,6 +34,7 @@
* Dr Vipul Gupta <vipul.gupta@sun.com> and
* Douglas Stebila <douglas@stebila.ca>, Sun Microsystems Laboratories
*
+ * Last Modified Date from the Original Code: March 2012
*********************************************************************** */
#include <sys/types.h>
--- ./jdk/src/share/native/sun/security/ec/impl/mpi.c 2015-12-12 10:53:29.848605000 -0800
+++ ./jdk/src/share/native/sun/security/ec/impl/mpi.c 2015-07-18 13:32:33.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2014, Oracle and/or its affiliates. All rights reserved.
* Use is subject to license terms.
*
* This library is free software; you can redistribute it and/or
@@ -34,6 +34,7 @@
* Netscape Communications Corporation
* Douglas Stebila <douglas@stebila.ca> of Sun Laboratories.
*
+ * Last Modified Date from the Original Code: June 2014
*********************************************************************** */
/* Arbitrary precision integer arithmetic library */
--- ./jdk/src/share/native/sun/security/ec/impl/oid.c 2015-12-12 10:53:29.848993000 -0800
+++ ./jdk/src/share/native/sun/security/ec/impl/oid.c 2015-07-18 13:32:33.000000000 -0700
@@ -33,6 +33,7 @@
* Contributor(s):
* Dr Vipul Gupta <vipul.gupta@sun.com>, Sun Microsystems Laboratories
*
+ * Last Modified Date from the Original Code: March 2012
*********************************************************************** */
#include <sys/types.h>
--- ./jdk/src/share/native/sun/security/ec/impl/secitem.c 2015-12-12 10:53:29.849270000 -0800
+++ ./jdk/src/share/native/sun/security/ec/impl/secitem.c 2015-07-18 13:32:33.000000000 -0700
@@ -32,6 +32,7 @@
*
* Contributor(s):
*
+ * Last Modified Date from the Original Code: March 2012
*********************************************************************** */
/*
--- ./jdk/src/solaris/back/util_md.h 2014-03-03 18:59:47.000000000 -0800
+++ ./jdk/src/solaris/back/util_md.h 2015-10-24 06:21:21.000000000 -0700
@@ -51,7 +51,7 @@
/* On little endian machines, convert java big endian numbers. */
-#if defined(_LITTLE_ENDIAN)
+#if defined(VM_LITTLE_ENDIAN)
#define HOST_TO_JAVA_CHAR(x) (((x & 0xff) << 8) | ((x >> 8) & (0xff)))
#define HOST_TO_JAVA_SHORT(x) (((x & 0xff) << 8) | ((x >> 8) & (0xff)))
--- ./jdk/src/solaris/bin/ergo_i586.c 2014-03-03 18:59:47.000000000 -0800
+++ ./jdk/src/solaris/bin/ergo_i586.c 2015-10-24 06:21:21.000000000 -0700
@@ -106,7 +106,7 @@
#endif /* __solaris__ */
-#ifdef __linux__
+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
/*
* A utility method for asking the CPU about itself.
@@ -197,7 +197,7 @@
(result == JNI_TRUE ? "true" : "false"));
return result;
}
-#endif /* __linux__ */
+#endif /* __linux__ || _ALLBSD_SOURCE */
/*
* Routines shared by solaris-i586 and linux-i586.
--- ./jdk/src/solaris/bin/java_md_solinux.c 2015-12-12 10:53:29.850313000 -0800
+++ ./jdk/src/solaris/bin/java_md_solinux.c 2015-10-24 06:21:21.000000000 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2015, 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
@@ -35,6 +35,9 @@
#include <sys/stat.h>
#include <unistd.h>
#include <sys/types.h>
+#ifdef __FreeBSD__
+#include <sys/sysctl.h>
+#endif
#include "manifest_info.h"
#include "version_comp.h"
@@ -306,9 +309,9 @@
if (llp == NULL && dmllp == NULL) {
return JNI_FALSE;
}
-#ifdef __linux
+#ifndef __solaris__
/*
- * On linux, if a binary is running as sgid or suid, glibc sets
+ * On linux and BSD, if a binary is running as sgid or suid, glibc/libc sets
* LD_LIBRARY_PATH to the empty string for security purposes. (In contrast,
* on Solaris the LD_LIBRARY_PATH variable for a privileged binary does not
* lose its settings; but the dynamic linker does apply more scrutiny to the
@@ -319,12 +322,18 @@
* libraries will be handled by the RPATH. In reality, this check is
* redundant, as the previous check for a non-null LD_LIBRARY_PATH will
* return back to the calling function forthwith, it is left here to safe
- * guard against any changes, in the glibc's existing security policy.
+ * guard against any changes, in the glibc/libc's existing security policy.
*/
+#ifndef _ALLBSD_SOURCE
if ((getgid() != getegid()) || (getuid() != geteuid())) {
return JNI_FALSE;
}
-#endif /* __linux */
+#else
+ if (issetugid()) {
+ return JNI_FALSE;
+ }
+#endif /* ! _ALLBSD_SOURCE */
+#endif /* ! __solaris__ */
/*
* Prevent recursions. Since LD_LIBRARY_PATH is the one which will be set by
@@ -613,13 +622,14 @@
/* runpath contains current effective LD_LIBRARY_PATH setting */
jvmpath = JLI_StringDup(jvmpath);
- new_runpath = JLI_MemAlloc(((runpath != NULL) ? JLI_StrLen(runpath) : 0) +
+ size_t new_runpath_size = ((runpath != NULL) ? JLI_StrLen(runpath) : 0) +
2 * JLI_StrLen(jrepath) + 2 * JLI_StrLen(arch) +
#ifdef AIX
/* On AIX we additionally need 'jli' in the path because ld doesn't support $ORIGIN. */
JLI_StrLen(jrepath) + JLI_StrLen(arch) + JLI_StrLen("/lib//jli:") +
#endif
- JLI_StrLen(jvmpath) + 52);
+ JLI_StrLen(jvmpath) + 52;
+ new_runpath = JLI_MemAlloc(new_runpath_size);
newpath = new_runpath + JLI_StrLen(LD_LIBRARY_PATH "=");
@@ -679,6 +689,11 @@
* loop of execv() because we test for the prefix, above.
*/
if (runpath != 0) {
+ /* ensure storage for runpath + colon + NULL */
+ if ((JLI_StrLen(runpath) + 1 + 1) > new_runpath_size) {
+ JLI_ReportErrorMessageSys(JRE_ERROR11);
+ exit(1);
+ }
JLI_StrCat(new_runpath, ":");
JLI_StrCat(new_runpath, runpath);
}
@@ -811,7 +826,11 @@
JLI_TraceLauncher("JRE path is %s\n", path);
return JNI_TRUE;
}
-
+ /* ensure storage for path + /jre + NULL */
+ if ((JLI_StrLen(path) + 4 + 1) > pathsize) {
+ JLI_TraceLauncher("Insufficient space to store JRE path\n");
+ return JNI_FALSE;
+ }
/* Does the app ship a private JRE in <apphome>/jre directory? */
JLI_Snprintf(libjava, sizeof(libjava), "%s/jre/lib/%s/" JAVA_DLL, path, arch);
if (access(libjava, F_OK) == 0) {
@@ -919,8 +938,9 @@
* onwards the filename returned in DL_info structure from dladdr is
* an absolute pathname so technically realpath isn't required.
* On Linux we read the executable name from /proc/self/exe.
- * As a fallback, and for platforms other than Solaris and Linux,
- * we use FindExecName to compute the executable name.
+ * On FreeBSD, we get the executable name via sysctl(3).
+ * As a fallback, and for platforms other than Solaris, Linux, and
+ * FreeBSD, we use FindExecName to compute the executable name.
*/
const char*
SetExecname(char **argv)
@@ -957,7 +977,17 @@
exec_path = JLI_StringDup(buf);
}
}
-#else /* !__solaris__ && !__linux__ */
+#elif defined(__FreeBSD__)
+ {
+ char buf[PATH_MAX+1];
+ int name[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1 };
+ size_t len = sizeof(buf);
+ if (sysctl(name, 4, buf, &len, NULL, 0) == 0 && len > 0) {
+ buf[len] = '\0';
+ exec_path = JLI_StringDup(buf);
+ }
+ }
+#else /* !__solaris__ && !__linux__ && !__FreeBSD__ */
{
/* Not implemented */
}
@@ -1063,13 +1093,13 @@
#define MAX_PID_STR_SZ 20
void SetJavaLauncherPlatformProps() {
- /* Linux only */
-#ifdef __linux__
+ /* Linux and BSD only */
+#ifndef __solaris__
const char *substr = "-Dsun.java.launcher.pid=";
char *pid_prop_str = (char *)JLI_MemAlloc(JLI_StrLen(substr) + MAX_PID_STR_SZ + 1);
sprintf(pid_prop_str, "%s%d", substr, getpid());
AddOption(pid_prop_str, NULL);
-#endif /* __linux__ */
+#endif /* ! __solaris__ */
}
int
--- ./jdk/src/solaris/bin/java_md_solinux.h 2015-12-12 10:53:22.249973000 -0800
+++ ./jdk/src/solaris/bin/java_md_solinux.h 2015-10-24 06:21:21.000000000 -0700
@@ -26,17 +26,26 @@
#ifndef JAVA_MD_SOLINUX_H
#define JAVA_MD_SOLINUX_H
-#ifdef HAVE_GETHRTIME
+#if defined(HAVE_GETHRTIME) || defined(__FreeBSD__)
/*
* Support for doing cheap, accurate interval timing.
*/
+#ifdef HAVE_GETHRTIME
#include <sys/time.h>
+#else /* __FreeBSD__ */
+#include <time.h>
+#define gethrtime() __extension__ ({ \
+ struct timespec tp; \
+ clock_gettime(CLOCK_MONOTONIC, &tp); \
+ (uint64_t)tp.tv_sec*1000000 + tp.tv_nsec/1000; \
+})
+#endif /* HAVE_GETHRTIME */
#define CounterGet() (gethrtime()/1000)
#define Counter2Micros(counts) (counts)
-#else /* ! HAVE_GETHRTIME */
+#else /* ! HAVE_GETHRTIME && ! __FreeBSD__ */
#define CounterGet() (0)
#define Counter2Micros(counts) (1)
-#endif /* HAVE_GETHRTIME */
+#endif /* HAVE_GETHRTIME || __FreeBSD__ */
/* pointer to environment */
extern char **environ;
@@ -48,6 +57,9 @@
#ifdef __solaris__
static const char *system_dir = "/usr/jdk";
static const char *user_dir = "/jdk";
+#elif defined(__FreeBSD__)
+static const char *system_dir = PACKAGE_PATH "/openjdk8";
+static const char *user_dir = "/java";
#else /* !__solaris__, i.e. Linux, AIX,.. */
static const char *system_dir = "/usr/java";
static const char *user_dir = "/java";
--- ./jdk/src/solaris/classes/java/lang/UNIXProcess.java 2015-12-12 10:53:29.850939000 -0800
+++ ./jdk/src/solaris/classes/java/lang/UNIXProcess.java 2015-10-24 06:21:21.000000000 -0700
@@ -82,6 +82,8 @@
LINUX(LaunchMechanism.VFORK, LaunchMechanism.FORK),
+ MACOS(LaunchMechanism.POSIX_SPAWN, LaunchMechanism.FORK),
+
BSD(LaunchMechanism.POSIX_SPAWN, LaunchMechanism.FORK),
SOLARIS(LaunchMechanism.POSIX_SPAWN, LaunchMechanism.FORK),
@@ -105,9 +107,10 @@
// fall through...
case LINUX:
case AIX:
+ case BSD:
return javahome + "/lib/" + osArch + "/jspawnhelper";
- case BSD:
+ case MACOS:
return javahome + "/lib/jspawnhelper";
default:
@@ -157,7 +160,8 @@
);
if (osName.equals("Linux")) { return LINUX; }
- if (osName.contains("OS X")) { return BSD; }
+ if (osName.contains("OS X")) { return MACOS; }
+ if (osName.endsWith("BSD")) { return BSD; }
if (osName.equals("SunOS")) { return SOLARIS; }
if (osName.equals("AIX")) { return AIX; }
@@ -273,6 +277,7 @@
void initStreams(int[] fds) throws IOException {
switch (platform) {
case LINUX:
+ case MACOS:
case BSD:
stdin = (fds[0] == -1) ?
ProcessBuilder.NullOutputStream.INSTANCE :
@@ -431,6 +436,7 @@
private void destroy(boolean force) {
switch (platform) {
case LINUX:
+ case MACOS:
case BSD:
case AIX:
// There is a risk that pid will be recycled, causing us to
--- ./jdk/src/solaris/classes/sun/awt/X11FontManager.java 2015-12-12 10:53:27.600468000 -0800
+++ ./jdk/src/solaris/classes/sun/awt/X11FontManager.java 2015-10-24 06:21:21.000000000 -0700
@@ -236,7 +236,7 @@
if (fontID != null) {
fileName = (String)fontNameMap.get(fontID);
/* On Linux check for the Lucida Oblique fonts */
- if (fileName == null && FontUtilities.isLinux && !isOpenJDK()) {
+ if (fileName == null && (FontUtilities.isLinux || FontUtilities.isBSD) && !isOpenJDK()) {
if (oblmap == null) {
initObliqueLucidaFontMap();
}
@@ -735,7 +735,7 @@
if (fontConfigDirs == null) {
return;
}
- if (FontUtilities.isLinux) {
+ if (FontUtilities.isLinux || FontUtilities.isBSD) {
fontConfigDirs.add(jreLibDirName+File.separator+"oblique-fonts");
}
fontdirs = (String[])fontConfigDirs.toArray(new String[0]);
@@ -763,7 +763,7 @@
*/
FontConfiguration mFontConfig = new MFontConfiguration(this);
if (FontUtilities.isOpenSolaris ||
- (FontUtilities.isLinux &&
+ ((FontUtilities.isLinux || FontUtilities.isBSD) &&
(!mFontConfig.foundOsSpecificFile() ||
!mFontConfig.fontFilesArePresent()) ||
(FontUtilities.isSolaris && !mFontConfig.fontFilesArePresent()))) {
--- ./jdk/src/solaris/classes/sun/awt/X11GraphicsDevice.java 2015-12-12 10:53:29.855676000 -0800
+++ ./jdk/src/solaris/classes/sun/awt/X11GraphicsDevice.java 2015-10-24 06:21:19.000000000 -0700
@@ -318,6 +318,7 @@
@Override
public boolean isDisplayChangeSupported() {
return (isFullScreenSupported()
+ && (getFullScreenWindow() != null)
&& !((X11GraphicsEnvironment) GraphicsEnvironment
.getLocalGraphicsEnvironment()).runningXinerama());
}
--- ./jdk/src/solaris/classes/sun/awt/fontconfigs/bsd.fontconfig.properties 2014-03-03 18:59:49.000000000 -0800
+++ ./jdk/src/solaris/classes/sun/awt/fontconfigs/bsd.fontconfig.properties 2015-10-24 06:21:21.000000000 -0700
@@ -26,134 +26,134 @@
# Version
-# Uses Fedora Core 6 fonts and file paths.
+# Uses FreeBSD ports Tree fonts and file paths.
version=1
# Component Font Mappings
-dialog.plain.latin-1=DejaVu LGC Sans
+dialog.plain.latin-1=DejaVu Sans
dialog.plain.japanese-x0208=Sazanami Gothic
-dialog.plain.korean=Baekmuk Gulim
-dialog.plain.chinese-big5=AR PL ShanHeiSun Uni
-dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni
+dialog.plain.korean=NanumGothic
+dialog.plain.chinese-big5=AR PL UMing
+dialog.plain.chinese-gb18030=AR PL UMing
-dialog.bold.latin-1=DejaVu LGC Sans Bold
+dialog.bold.latin-1=DejaVu Sans Bold
dialog.bold.japanese-x0208=Sazanami Gothic
-dialog.bold.korean=Baekmuk Gulim
-dialog.bold.chinese-big5=AR PL ShanHeiSun Uni
-dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni
+dialog.bold.korean=NanumGothic Bold
+dialog.bold.chinese-big5=AR PL UMing
+dialog.bold.chinese-gb18030=AR PL UMing
-dialog.italic.latin-1=DejaVu LGC Sans Oblique
+dialog.italic.latin-1=DejaVu Sans Oblique
dialog.italic.japanese-x0208=Sazanami Gothic
-dialog.italic.korean=Baekmuk Gulim
-dialog.italic.chinese-big5=AR PL ShanHeiSun Uni
-dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni
+dialog.italic.korean=NanumGothic
+dialog.italic.chinese-big5=AR PL UMing
+dialog.italic.chinese-gb18030=AR PL UMing
-dialog.bolditalic.latin-1=DejaVu LGC Sans Bold Oblique
+dialog.bolditalic.latin-1=DejaVu Sans Bold Oblique
dialog.bolditalic.japanese-x0208=Sazanami Gothic
-dialog.bolditalic.korean=Baekmuk Gulim
-dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni
-dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni
+dialog.bolditalic.korean=NanumGothic Bold
+dialog.bolditalic.chinese-big5=AR PL UMing
+dialog.bolditalic.chinese-gb18030=AR PL UMing
-sansserif.plain.latin-1=DejaVu LGC Sans
+sansserif.plain.latin-1=DejaVu Sans
sansserif.plain.japanese-x0208=Sazanami Gothic
-sansserif.plain.korean=Baekmuk Gulim
-sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni
-sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni
+sansserif.plain.korean=NanumGothic
+sansserif.plain.chinese-big5=AR PL UMing
+sansserif.plain.chinese-gb18030=AR PL UMing
-sansserif.bold.latin-1=DejaVu LGC Sans Bold
+sansserif.bold.latin-1=DejaVu Sans Bold
sansserif.bold.japanese-x0208=Sazanami Gothic
-sansserif.bold.korean=Baekmuk Gulim
-sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni
-sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni
+sansserif.bold.korean=NanumGothic Bold
+sansserif.bold.chinese-big5=AR PL UMing
+sansserif.bold.chinese-gb18030=AR PL UMing
-sansserif.italic.latin-1=DejaVu LGC Sans Oblique
+sansserif.italic.latin-1=DejaVu Sans Oblique
sansserif.italic.japanese-x0208=Sazanami Gothic
-sansserif.italic.korean=Baekmuk Gulim
-sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni
-sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni
+sansserif.italic.korean=NanumGothic
+sansserif.italic.chinese-big5=AR PL UMing
+sansserif.italic.chinese-gb18030=AR PL UMing
-sansserif.bolditalic.latin-1=DejaVu LGC Sans Bold Oblique
+sansserif.bolditalic.latin-1=DejaVu Sans Bold Oblique
sansserif.bolditalic.japanese-x0208=Sazanami Gothic
-sansserif.bolditalic.korean=Baekmuk Gulim
-sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni
-sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni
+sansserif.bolditalic.korean=NanumGothic Bold
+sansserif.bolditalic.chinese-big5=AR PL UMing
+sansserif.bolditalic.chinese-gb18030=AR PL UMing
-serif.plain.latin-1=DejaVu LGC Serif
+serif.plain.latin-1=DejaVu Serif
serif.plain.japanese-x0208=Sazanami Mincho
-serif.plain.korean=Baekmuk Batang
-serif.plain.chinese-big5=AR PL ZenKai Uni
-serif.plain.chinese-gb18030=AR PL ZenKai Uni
+serif.plain.korean=NanumMyeongjo
+serif.plain.chinese-big5=AR PL UKai
+serif.plain.chinese-gb18030=AR PL UKai
-serif.bold.latin-1=DejaVu LGC Serif Bold
+serif.bold.latin-1=DejaVu Serif Bold
serif.bold.japanese-x0208=Sazanami Mincho
-serif.bold.korean=Baekmuk Batang
-serif.bold.chinese-big5=AR PL ZenKai Uni
-serif.bold.chinese-gb18030=AR PL ZenKai Uni
+serif.bold.korean=NanumMyeongjo Bold
+serif.bold.chinese-big5=AR PL UKai
+serif.bold.chinese-gb18030=AR PL UKai
-serif.italic.latin-1=DejaVu LGC Serif Oblique
+serif.italic.latin-1=DejaVu Serif Italic
serif.italic.japanese-x0208=Sazanami Mincho
-serif.italic.korean=Baekmuk Batang
-serif.italic.chinese-big5=AR PL ZenKai Uni
-serif.italic.chinese-gb18030=AR PL ZenKai Uni
+serif.italic.korean=NanumMyeongjo
+serif.italic.chinese-big5=AR PL UKai
+serif.italic.chinese-gb18030=AR PL UKai
-serif.bolditalic.latin-1=DejaVu LGC Serif Bold Oblique
+serif.bolditalic.latin-1=DejaVu Serif Bold Italic
serif.bolditalic.japanese-x0208=Sazanami Mincho
-serif.bolditalic.korean=Baekmuk Batang
-serif.bolditalic.chinese-big5=AR PL ZenKai Uni
-serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni
+serif.bolditalic.korean=NanumMyeongjo Bold
+serif.bolditalic.chinese-big5=AR PL UKai
+serif.bolditalic.chinese-gb18030=AR PL UKai
-monospaced.plain.latin-1=DejaVu LGC Sans Mono
+monospaced.plain.latin-1=DejaVu Sans Mono
monospaced.plain.japanese-x0208=Sazanami Gothic
-monospaced.plain.korean=Baekmuk Gulim
-monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni
-monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni
+monospaced.plain.korean=NanumGothic
+monospaced.plain.chinese-big5=AR PL UMing
+monospaced.plain.chinese-gb18030=AR PL UMing
-monospaced.bold.latin-1=DejaVu LGC Sans Mono Bold
+monospaced.bold.latin-1=DejaVu Sans Mono Bold
monospaced.bold.japanese-x0208=Sazanami Gothic
-monospaced.bold.korean=Baekmuk Gulim
-monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni
-monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni
+monospaced.bold.korean=NanumGothic Bold
+monospaced.bold.chinese-big5=AR PL UMing
+monospaced.bold.chinese-gb18030=AR PL UMing
-monospaced.italic.latin-1=DejaVu LGC Sans Mono Oblique
+monospaced.italic.latin-1=DejaVu Sans Mono Oblique
monospaced.italic.japanese-x0208=Sazanami Gothic
-monospaced.italic.korean=Baekmuk Gulim
-monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni
-monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni
+monospaced.italic.korean=NanumGothic
+monospaced.italic.chinese-big5=AR PL UMing
+monospaced.italic.chinese-gb18030=AR PL UMing
-monospaced.bolditalic.latin-1=DejaVu LGC Sans Mono Bold Oblique
+monospaced.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique
monospaced.bolditalic.japanese-x0208=Sazanami Gothic
-monospaced.bolditalic.korean=Baekmuk Gulim
-monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni
-monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni
+monospaced.bolditalic.korean=NanumGothic Bold
+monospaced.bolditalic.chinese-big5=AR PL UMing
+monospaced.bolditalic.chinese-gb18030=AR PL UMing
-dialoginput.plain.latin-1=DejaVu LGC Sans Mono
+dialoginput.plain.latin-1=DejaVu Sans Mono
dialoginput.plain.japanese-x0208=Sazanami Gothic
-dialoginput.plain.korean=Baekmuk Gulim
-dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni
-dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni
+dialoginput.plain.korean=NanumGothic
+dialoginput.plain.chinese-big5=AR PL UMing
+dialoginput.plain.chinese-gb18030=AR PL UMing
-dialoginput.bold.latin-1=DejaVu LGC Sans Mono Bold
+dialoginput.bold.latin-1=DejaVu Sans Mono Bold
dialoginput.bold.japanese-x0208=Sazanami Gothic
-dialoginput.bold.korean=Baekmuk Gulim
-dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni
-dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni
+dialoginput.bold.korean=NanumGothic Bold
+dialoginput.bold.chinese-big5=AR PL UMing
+dialoginput.bold.chinese-gb18030=AR PL UMing
-dialoginput.italic.latin-1=DejaVu LGC Sans Mono Oblique
+dialoginput.italic.latin-1=DejaVu Sans Mono Oblique
dialoginput.italic.japanese-x0208=Sazanami Gothic
-dialoginput.italic.korean=Baekmuk Gulim
-dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni
-dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni
+dialoginput.italic.korean=NanumGothic
+dialoginput.italic.chinese-big5=AR PL UMing
+dialoginput.italic.chinese-gb18030=AR PL UMing
-dialoginput.bolditalic.latin-1=DejaVu LGC Sans Mono Bold Oblique
+dialoginput.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique
dialoginput.bolditalic.japanese-x0208=Sazanami Gothic
-dialoginput.bolditalic.korean=Baekmuk Gulim
-dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni
-dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni
+dialoginput.bolditalic.korean=NanumGothic Bold
+dialoginput.bolditalic.chinese-big5=AR PL UMing
+dialoginput.bolditalic.chinese-gb18030=AR PL UMing
# Search Sequences
@@ -166,24 +166,27 @@
# Font File Names
-filename.DejaVu_LGC_Sans=/usr/share/fonts/dejavu-lgc/DejaVuLGCSans.ttf
-filename.DejaVu_LGC_Sans_Bold=/usr/share/fonts/dejavu-lgc/DejaVuLGCSans-Bold.ttf
-filename.DejaVu_LGC_Sans_Oblique=/usr/share/fonts/dejavu-lgc/DejaVuLGCSans-Oblique.ttf
-filename.DejaVu_LGC_Sans_Bold_Oblique=/usr/share/fonts/dejavu-lgc/DejaVuLGCSans-BoldOblique.ttf
-
-filename.DejaVu_LGC_Sans_Mono=/usr/share/fonts/dejavu-lgc/DejaVuLGCSansMono.ttf
-filename.DejaVu_LGC_Sans_Mono_Bold=/usr/share/fonts/dejavu-lgc/DejaVuLGCSansMono-Bold.ttf
-filename.DejaVu_LGC_Sans_Mono_Oblique=/usr/share/fonts/dejavu-lgc/DejaVuLGCSansMono-Oblique.ttf
-filename.DejaVu_LGC_Sans_Mono_Bold_Oblique=/usr/share/fonts/dejavu-lgc/DejaVuLGCSansMono-BoldOblique.ttf
-
-filename.DejaVu_LGC_Serif=/usr/share/fonts/dejavu-lgc/DejaVuLGCSerif.ttf
-filename.DejaVu_LGC_Serif_Bold=/usr/share/fonts/dejavu-lgc/DejaVuLGCSerif-Bold.ttf
-filename.DejaVu_LGC_Serif_Oblique=/usr/share/fonts/dejavu-lgc/DejaVuLGCSerif-Oblique.ttf
-filename.DejaVu_LGC_Serif_Bold_Oblique=/usr/share/fonts/dejavu-lgc/DejaVuLGCSerif-BoldOblique.ttf
-
-filename.Sazanami_Gothic=/usr/share/fonts/japanese/TrueType/sazanami-gothic.ttf
-filename.Sazanami_Mincho=/usr/share/fonts/japanese/TrueType/sazanami-mincho.ttf
-filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/chinese/TrueType/uming.ttf
-filename.AR_PL_ZenKai_Uni=/usr/share/fonts/chinese/TrueType/ukai.ttf
-filename.Baekmuk_Gulim=/usr/share/fonts/korean/TrueType/gulim.ttf
-filename.Baekmuk_Batang=/usr/share/fonts/korean/TrueType/batang.ttf
+## FIXME: Should not hardcode /usr/local
+filename.DejaVu_Sans=/usr/local/lib/X11/fonts/dejavu/DejaVuSans.ttf
+filename.DejaVu_Sans_Bold=/usr/local/lib/X11/fonts/dejavu/DejaVuSans-Bold.ttf
+filename.DejaVu_Sans_Oblique=/usr/local/lib/X11/fonts/dejavu/DejaVuSans-Oblique.ttf
+filename.DejaVu_Sans_Bold_Oblique=/usr/local/lib/X11/fonts/dejavu/DejaVuSans-BoldOblique.ttf
+
+filename.DejaVu_Sans_Mono=/usr/local/lib/X11/fonts/dejavu/DejaVuSansMono.ttf
+filename.DejaVu_Sans_Mono_Bold=/usr/local/lib/X11/fonts/dejavu/DejaVuSansMono-Bold.ttf
+filename.DejaVu_Sans_Mono_Oblique=/usr/local/lib/X11/fonts/dejavu/DejaVuSansMono-Oblique.ttf
+filename.DejaVu_Sans_Mono_Bold_Oblique=/usr/local/lib/X11/fonts/dejavu/DejaVuSansMono-BoldOblique.ttf
+
+filename.DejaVu_Serif=/usr/local/lib/X11/fonts/dejavu/DejaVuSerif.ttf
+filename.DejaVu_Serif_Bold=/usr/local/lib/X11/fonts/dejavu/DejaVuSerif-Bold.ttf
+filename.DejaVu_Serif_Italic=/usr/local/lib/X11/fonts/dejavu/DejaVuSerif-Italic.ttf
+filename.DejaVu_Serif_Bold_Italic=/usr/local/lib/X11/fonts/dejavu/DejaVuSerif-BoldItalic.ttf
+
+filename.Sazanami_Gothic=/usr/local/share/font-sazanami/sazanami-gothic.ttf
+filename.Sazanami_Mincho=/usr/local/share/font-sazanami/sazanami-mincho.ttf
+filename.AR_PL_ShanHeiSun_Uni=/usr/local/share/fonts/TrueType/uming.ttc
+filename.AR_PL_ZenKai_Uni=/usr/local/share/fonts/TrueType/ukai.ttc
+filename.NanumGothic=/usr/local/lib/X11/fonts/nanum-ttf/NanumGothic.ttf
+filename.NanumGothic_Bold=/usr/local/lib/X11/fonts/nanum-ttf/NanumGothicBold.ttf
+filename.NanumMyeongjo=/usr/local/lib/X11/fonts/nanum-ttf/NanumMyeongjo.ttf
+filename.NanumMyeongjo_Bold=/usr/local/lib/X11/fonts/nanum-ttf/NanumMyeongjoBold.ttf
--- ./jdk/src/solaris/classes/sun/net/PortConfig.java 2015-12-12 10:53:22.258458000 -0800
+++ ./jdk/src/solaris/classes/sun/net/PortConfig.java 2015-10-24 06:21:21.000000000 -0700
@@ -52,7 +52,7 @@
} else if (os.startsWith("SunOS")) {
defaultLower = 32768;
defaultUpper = 65535;
- } else if (os.contains("OS X")) {
+ } else if (os.endsWith("BSD") || os.contains("OS X")) {
defaultLower = 49152;
defaultUpper = 65535;
} else if (os.startsWith("AIX")) {
--- ./jdk/src/solaris/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java 2015-12-12 10:53:22.258684000 -0800
+++ ./jdk/src/solaris/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java 2015-10-24 06:21:21.000000000 -0700
@@ -66,7 +66,7 @@
return createProvider("sun.nio.ch.SolarisAsynchronousChannelProvider");
if (osname.equals("Linux"))
return createProvider("sun.nio.ch.LinuxAsynchronousChannelProvider");
- if (osname.contains("OS X"))
+ if (osname.endsWith("BSD") || osname.contains("OS X"))
return createProvider("sun.nio.ch.BsdAsynchronousChannelProvider");
if (osname.equals("AIX"))
return createProvider("sun.nio.ch.AixAsynchronousChannelProvider");
--- ./jdk/src/solaris/classes/sun/nio/fs/BsdFileSystemProvider.java 2014-03-03 18:59:51.000000000 -0800
+++ ./jdk/src/solaris/classes/sun/nio/fs/BsdFileSystemProvider.java 2015-10-24 06:21:21.000000000 -0700
@@ -25,10 +25,14 @@
package sun.nio.fs;
+import java.nio.file.*;
+import java.nio.file.spi.FileTypeDetector;
import java.io.IOException;
+import java.security.AccessController;
+import sun.security.action.GetPropertyAction;
/**
- * Bsd implementation of FileSystemProvider
+ * BSD implementation of FileSystemProvider
*/
public class BsdFileSystemProvider extends UnixFileSystemProvider {
@@ -45,4 +49,16 @@
BsdFileStore getFileStore(UnixPath path) throws IOException {
return new BsdFileStore(path);
}
+
+ @Override
+ FileTypeDetector getFileTypeDetector() {
+ Path userMimeTypes = Paths.get(AccessController.doPrivileged(
+ new GetPropertyAction("user.home")), ".mime.types");
+ Path etcMimeTypes = Paths.get("/etc/mime.types");
+
+ return chain(new GnomeFileTypeDetector(),
+ new MimeTypesFileTypeDetector(userMimeTypes),
+ new MimeTypesFileTypeDetector(etcMimeTypes),
+ new MagicFileTypeDetector());
+ }
}
--- ./jdk/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java 2015-12-12 10:53:22.262778000 -0800
+++ ./jdk/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java 2015-10-24 06:21:21.000000000 -0700
@@ -61,6 +61,8 @@
return createProvider("sun.nio.fs.SolarisFileSystemProvider");
if (osname.equals("Linux"))
return createProvider("sun.nio.fs.LinuxFileSystemProvider");
+ if (osname.endsWith("BSD"))
+ return createProvider("sun.nio.fs.BsdFileSystemProvider");
if (osname.contains("OS X"))
return createProvider("sun.nio.fs.MacOSXFileSystemProvider");
if (osname.equals("AIX"))
--- ./jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java 2015-12-12 10:53:22.266397000 -0800
+++ ./jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java 2015-10-24 06:21:21.000000000 -0700
@@ -161,6 +161,7 @@
static boolean isBSD() {
return (osname.equals("Linux") ||
+ osname.endsWith("BSD") ||
osname.contains("OS X"));
}
@@ -175,12 +176,12 @@
static int cmdIndex = UNINITIALIZED;
String[] lpcFirstCom = {
- "/usr/sbin/lpc status | grep : | sed -ne '1,1 s/://p'",
+ "/usr/sbin/lpc status all | grep ':$' | sed -ne '1,1 s/://p'",
"/usr/sbin/lpc status | grep -E '^[ 0-9a-zA-Z_-]*@' | awk -F'@' '{print $1}'"
};
String[] lpcAllCom = {
- "/usr/sbin/lpc status all | grep : | sed -e 's/://'",
+ "/usr/sbin/lpc status all | grep ':$' | sed -e 's/://'",
"/usr/sbin/lpc status all | grep -E '^[ 0-9a-zA-Z_-]*@' | awk -F'@' '{print $1}' | sort"
};
--- ./jdk/src/solaris/classes/sun/tools/attach/BsdVirtualMachine.java 2015-12-12 10:53:27.602992000 -0800
+++ ./jdk/src/solaris/classes/sun/tools/attach/BsdVirtualMachine.java 2015-10-24 06:21:21.000000000 -0700
@@ -273,7 +273,7 @@
try {
b = s.getBytes("UTF-8");
} catch (java.io.UnsupportedEncodingException x) {
- throw new InternalError();
+ throw new InternalError(x);
}
BsdVirtualMachine.write(fd, b, 0, b.length);
}
--- ./jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_SolarisOS_PCM.c 2014-03-03 18:59:54.000000000 -0800
+++ ./jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_SolarisOS_PCM.c 2015-10-24 06:21:21.000000000 -0700
@@ -140,7 +140,7 @@
(float) ((int) sr->samp_rates[s]),
DAUDIO_PCM, /* encoding - let's only do PCM */
(bits[b] > 8)?TRUE:TRUE, /* isSigned */
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
FALSE /* little endian */
#else
(bits[b] > 8)?TRUE:FALSE /* big endian */
--- ./jdk/src/solaris/native/common/jni_util_md.c 2014-03-03 18:59:55.000000000 -0800
+++ ./jdk/src/solaris/native/common/jni_util_md.c 2015-10-24 06:21:21.000000000 -0700
@@ -28,6 +28,7 @@
#include "jni.h"
#include "jni_util.h"
#include "dlfcn.h"
+#include <string.h>
jstring nativeNewStringPlatform(JNIEnv *env, const char *str) {
return NULL;
--- ./jdk/src/solaris/native/java/lang/java_props_md.c 2014-03-03 18:59:55.000000000 -0800
+++ ./jdk/src/solaris/native/java/lang/java_props_md.c 2015-10-24 06:21:21.000000000 -0700
@@ -151,7 +151,7 @@
lc = setlocale(cat, NULL);
#endif
-#ifndef __linux__
+#if !defined(__linux__) && !defined(__FreeBSD__)
if (lc == NULL) {
return 0;
}
@@ -552,23 +552,11 @@
sprops.sun_jnu_encoding = sprops.encoding;
#endif
-#ifdef _ALLBSD_SOURCE
-#if BYTE_ORDER == _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
sprops.unicode_encoding = "UnicodeLittle";
- #else
- sprops.unicode_encoding = "UnicodeBig";
- #endif
-#else /* !_ALLBSD_SOURCE */
-#ifdef __linux__
-#if __BYTE_ORDER == __LITTLE_ENDIAN
- sprops.unicode_encoding = "UnicodeLittle";
-#else
- sprops.unicode_encoding = "UnicodeBig";
-#endif
#else
sprops.unicode_encoding = "UnicodeBig";
#endif
-#endif /* _ALLBSD_SOURCE */
/* user properties */
{
--- ./jdk/src/solaris/native/java/net/Inet4AddressImpl.c 2015-12-12 10:53:29.898927000 -0800
+++ ./jdk/src/solaris/native/java/net/Inet4AddressImpl.c 2015-10-24 06:21:21.000000000 -0700
@@ -36,20 +36,13 @@
#include <stdlib.h>
#include <ctype.h>
-#ifdef _ALLBSD_SOURCE
-#include <unistd.h>
-#include <sys/param.h>
-#endif
-
#include "jvm.h"
#include "jni_util.h"
#include "net_util.h"
#include "java_net_Inet4AddressImpl.h"
-#if defined(__GLIBC__) || (defined(__FreeBSD__) && (__FreeBSD_version >= 601104))
-#define HAS_GLIBC_GETHOSTBY_R 1
-#endif
+extern jobjectArray lookupIfLocalhost(JNIEnv *env, const char *hostname, jboolean includeV6);
static jclass ni_iacls;
static jclass ni_ia4cls;
@@ -436,6 +429,17 @@
}
#endif
+#ifdef _ALLBSD_SOURCE
+ /* If we're looking up the local machine, bypass DNS lookups and get
+ * address from getifaddrs.
+ */
+ ret = lookupIfLocalhost(env, hostname, JNI_FALSE);
+ if (ret != NULL || (*env)->ExceptionCheck(env)) {
+ JNU_ReleaseStringPlatformChars(env, host, hostname);
+ return ret;
+ }
+#endif
+
error = getaddrinfo(hostname, NULL, &hints, &res);
if (error) {
--- ./jdk/src/solaris/native/java/net/Inet6AddressImpl.c 2015-12-12 10:53:29.899348000 -0800
+++ ./jdk/src/solaris/native/java/net/Inet6AddressImpl.c 2015-10-24 06:21:21.000000000 -0700
@@ -33,7 +33,7 @@
#include <strings.h>
#include <stdlib.h>
#include <ctype.h>
-#ifdef MACOSX
+#ifdef _ALLBSD_SOURCE
#include <ifaddrs.h>
#include <net/if.h>
#include <unistd.h> /* gethostname */
@@ -155,9 +155,9 @@
return JNI_TRUE;
}
-#ifdef MACOSX
+#ifdef _ALLBSD_SOURCE
/* also called from Inet4AddressImpl.c */
-__private_extern__ jobjectArray
+jobjectArray
lookupIfLocalhost(JNIEnv *env, const char *hostname, jboolean includeV6)
{
jobjectArray result = NULL;
@@ -311,6 +311,19 @@
hostname = JNU_GetStringPlatformChars(env, host, JNI_FALSE);
CHECK_NULL_RETURN(hostname, NULL);
+#ifdef _ALLBSD_SOURCE
+ /*
+ * If we're looking up the local machine, attempt to get the address
+ * from getifaddrs. This ensures we get an IPv6 address for the local
+ * machine.
+ */
+ ret = lookupIfLocalhost(env, hostname, JNI_TRUE);
+ if (ret != NULL || (*env)->ExceptionCheck(env)) {
+ JNU_ReleaseStringPlatformChars(env, host, hostname);
+ return ret;
+ }
+#endif
+
#ifdef AF_INET6
/* Try once, with our static buffer. */
memset(&hints, 0, sizeof(hints));
--- ./jdk/src/solaris/native/java/net/NetworkInterface.c 2015-12-12 10:53:29.899957000 -0800
+++ ./jdk/src/solaris/native/java/net/NetworkInterface.c 2015-10-24 06:21:21.000000000 -0700
@@ -67,14 +67,19 @@
#include <sys/param.h>
#include <sys/ioctl.h>
#include <sys/sockio.h>
-#if defined(__APPLE__)
+#if defined(__APPLE__) || defined(__FreeBSD__)
#include <net/ethernet.h>
#include <net/if_var.h>
+#elif defined(__OpenBSD__)
+#include <netinet/if_ether.h>
+#include <netinet6/in6_var.h>
+#elif defined(__NetBSD__)
+#include <net/if_ether.h>
+#endif
#include <net/if_dl.h>
#include <netinet/in_var.h>
#include <ifaddrs.h>
#endif
-#endif
#include "jvm.h"
#include "jni_util.h"
--- ./jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c 2015-12-12 10:53:29.900716000 -0800
+++ ./jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c 2015-10-24 06:21:21.000000000 -0700
@@ -2200,7 +2200,7 @@
}
}
#endif
-#ifdef MACOSX
+#ifdef _ALLBSD_SOURCE
if (family == AF_INET6 && index == 0) {
index = getDefaultScopeID(env);
}
--- ./jdk/src/solaris/native/java/net/bsd_close.c 2015-12-12 10:53:20.087762000 -0800
+++ ./jdk/src/solaris/native/java/net/bsd_close.c 2015-10-24 06:21:21.000000000 -0700
@@ -316,11 +316,8 @@
}
int NET_Accept(int s, struct sockaddr *addr, int *addrlen) {
- socklen_t len = *addrlen;
- int error = accept(s, addr, &len);
- if (error != -1)
- *addrlen = (int)len;
- BLOCKING_IO_RETURN_INT( s, error );
+ /* See NET_RecvFrom() */
+ BLOCKING_IO_RETURN_INT( s, accept(s, addr, (socklen_t *)addrlen) );
}
int NET_Connect(int s, struct sockaddr *addr, int addrlen) {
--- ./jdk/src/solaris/native/java/net/net_util_md.c 2015-12-12 10:53:31.079229000 -0800
+++ ./jdk/src/solaris/native/java/net/net_util_md.c 2015-10-24 06:21:22.000000000 -0700
@@ -45,6 +45,10 @@
#endif
#endif
+#ifdef __OpenBSD__
+#include <sys/socketvar.h>
+#endif
+
#ifdef __solaris__
#include <sys/sockio.h>
#include <stropts.h>
@@ -87,7 +91,7 @@
void setDefaultScopeID(JNIEnv *env, struct sockaddr *him)
{
-#ifdef MACOSX
+#ifdef _ALLBSD_SOURCE
static jclass ni_class = NULL;
static jfieldID ni_defaultIndexID;
if (ni_class == NULL) {
--- ./jdk/src/solaris/native/java/net/net_util_md.h 2015-12-12 10:53:22.306909000 -0800
+++ ./jdk/src/solaris/native/java/net/net_util_md.h 2015-10-24 06:21:21.000000000 -0700
@@ -47,7 +47,7 @@
close subroutine does not return until the select call returns.
...
*/
-#if defined(__linux__) || defined(MACOSX) || defined (_AIX)
+#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined (_AIX)
extern int NET_Timeout(int s, long timeout);
extern int NET_Read(int s, void* buf, size_t len);
extern int NET_RecvFrom(int s, void *buf, int len, unsigned int flags,
--- ./jdk/src/solaris/native/java/util/TimeZone_md.c 2015-12-12 10:53:27.630963000 -0800
+++ ./jdk/src/solaris/native/java/util/TimeZone_md.c 2015-10-24 06:21:21.000000000 -0700
@@ -52,7 +52,11 @@
#if defined(__linux__) || defined(_ALLBSD_SOURCE)
+#ifdef __FreeBSD__
+static const char *ETC_TIMEZONE_FILE = "/var/db/zoneinfo";
+#else
static const char *ETC_TIMEZONE_FILE = "/etc/timezone";
+#endif
static const char *ZONEINFO_DIR = "/usr/share/zoneinfo";
static const char *DEFAULT_ZONEINFO_FILE = "/etc/localtime";
#else
@@ -126,7 +130,7 @@
return NULL;
}
-#if defined(_AIX) || defined(__linux__) || defined(MACOSX) || (defined(__solaris__) \
+#if defined(_AIX) || defined(__linux__) || defined(_ALLBSD_SOURCE) || (defined(__solaris__) \
&& (defined(_POSIX_PTHREAD_SEMANTICS) || defined(_LP64)))
while (readdir_r(dirp, entry, &dp) == 0 && dp != NULL) {
#else
@@ -214,7 +218,7 @@
return tz;
}
-#if defined(__linux__) || defined(MACOSX)
+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
/*
* Performs Linux specific mapping and returns a zone ID
@@ -230,7 +234,7 @@
char *buf;
size_t size;
-#ifdef __linux__
+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
/*
* Try reading the /etc/timezone file for Debian distros. There's
* no spec of the file format available. This parsing assumes that
@@ -254,7 +258,7 @@
return tz;
}
}
-#endif /* __linux__ */
+#endif /* __linux__ || __FreeBSD__ */
/*
* Next, try /etc/localtime to find the zone ID.
@@ -719,7 +723,7 @@
* Returns a GMT-offset-based zone ID. (e.g., "GMT-08:00")
*/
-#ifdef MACOSX
+#ifdef _ALLBSD_SOURCE
char *
getGMTOffsetID()
@@ -735,10 +739,10 @@
local_tm = localtime(&clock);
if (local_tm->tm_gmtoff >= 0) {
offset = (time_t) local_tm->tm_gmtoff;
- sign = "+";
+ sign = '+';
} else {
offset = (time_t) -local_tm->tm_gmtoff;
- sign = "-";
+ sign = '-';
}
sprintf(buf, (const char *)"GMT%c%02d:%02d",
sign, (int)(offset/3600), (int)((offset%3600)/60));
@@ -780,7 +784,7 @@
sign, (int)(offset/3600), (int)((offset%3600)/60));
return strdup(buf);
}
-#endif /* MACOSX */
+#endif /* _ALLBSD_SOURCE */
#ifdef _AIX
static char *
@@ -878,4 +882,3 @@
return javatz;
}
#endif
-
--- ./jdk/src/solaris/native/sun/awt/awt_Font.c 2015-12-12 10:53:29.902615000 -0800
+++ ./jdk/src/solaris/native/sun/awt/awt_Font.c 2015-10-24 06:21:21.000000000 -0700
@@ -255,7 +255,7 @@
if (strcmp(style, "regular") == 0) {
altstyle = "roman";
}
-#if defined(__linux__) || defined(MACOSX)
+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
if (!strcmp(family, "lucidasans")) {
family = "lucida";
}
--- ./jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c 2015-12-12 10:53:29.903360000 -0800
+++ ./jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c 2015-10-24 06:21:21.000000000 -0700
@@ -121,7 +121,7 @@
*/
#define MAXFRAMEBUFFERS 16
-#if defined(__linux__) || defined(MACOSX)
+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
typedef struct {
int screen_number;
short x_org;
@@ -427,20 +427,15 @@
if (XQueryExtension(awt_display, "RENDER",
&major_opcode, &first_event, &first_error))
{
- xrenderLibHandle = dlopen("libXrender.so.1", RTLD_LAZY | RTLD_GLOBAL);
-
-#ifdef MACOSX
-#define XRENDER_LIB "/usr/X11/lib/libXrender.dylib"
-#else
-#define XRENDER_LIB "libXrender.so"
-#endif
+ xrenderLibHandle = dlopen(VERSIONED_JNI_LIB_NAME("Xrender", "1"),
+ RTLD_LAZY | RTLD_GLOBAL);
if (xrenderLibHandle == NULL) {
- xrenderLibHandle = dlopen(XRENDER_LIB,
+ xrenderLibHandle = dlopen(JNI_LIB_NAME("Xrender"),
RTLD_LAZY | RTLD_GLOBAL);
}
-#ifndef __linux__ /* SOLARIS */
+#if !defined(__linux__) && !defined(_ALLBSD_SOURCE) /* SOLARIS */
if (xrenderLibHandle == NULL) {
xrenderLibHandle = dlopen("/usr/sfw/lib/libXrender.so.1",
RTLD_LAZY | RTLD_GLOBAL);
@@ -584,7 +579,7 @@
}
#ifndef HEADLESS
-#if defined(__linux__) || defined(MACOSX)
+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
static void xinerama_init_linux()
{
void* libHandle = NULL;
@@ -635,7 +630,7 @@
}
}
#endif
-#if !defined(__linux__) && !defined(MACOSX) /* Solaris */
+#if !defined(__linux__) && !defined(_ALLBSD_SOURCE) /* Solaris */
static void xinerama_init_solaris()
{
void* libHandle = NULL;
@@ -695,11 +690,11 @@
}
DTRACE_PRINTLN("Xinerama extension is available");
-#if defined(__linux__) || defined(MACOSX)
+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
xinerama_init_linux();
#else /* Solaris */
xinerama_init_solaris();
-#endif /* __linux__ || MACOSX */
+#endif /* __linux__ || _ALLBSD_SOURCE */
}
#endif /* HEADLESS */
@@ -1597,7 +1592,7 @@
{
jobject point = NULL;
#ifndef HEADLESS /* return NULL in HEADLESS, Linux */
-#if !defined(__linux__) && !defined(MACOSX)
+#if !defined(__linux__) && !defined(_ALLBSD_SOURCE)
int x,y;
AWT_LOCK();
@@ -1610,7 +1605,7 @@
DTRACE_PRINTLN("unable to call XineramaSolarisCenterFunc: symbol is null");
}
AWT_FLUSH_UNLOCK();
-#endif /* __linux __ || MACOSX */
+#endif /* __linux __ || _ALLBSD_SOURCE */
#endif /* HEADLESS */
return point;
}
--- ./jdk/src/solaris/native/sun/awt/awt_InputMethod.c 2015-12-12 10:53:29.904002000 -0800
+++ ./jdk/src/solaris/native/sun/awt/awt_InputMethod.c 2015-10-24 06:21:21.000000000 -0700
@@ -52,7 +52,7 @@
XIMPreeditDrawCallbackStruct *);
static void PreeditCaretCallback(XIC, XPointer,
XIMPreeditCaretCallbackStruct *);
-#if defined(__linux__) || defined(MACOSX)
+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
static void StatusStartCallback(XIC, XPointer, XPointer);
static void StatusDoneCallback(XIC, XPointer, XPointer);
static void StatusDrawCallback(XIC, XPointer,
@@ -66,7 +66,7 @@
#define PreeditDoneIndex 1
#define PreeditDrawIndex 2
#define PreeditCaretIndex 3
-#if defined(__linux__) || defined(MACOSX)
+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
#define StatusStartIndex 4
#define StatusDoneIndex 5
#define StatusDrawIndex 6
@@ -84,14 +84,14 @@
(XIMProc)PreeditDoneCallback,
(XIMProc)PreeditDrawCallback,
(XIMProc)PreeditCaretCallback,
-#if defined(__linux__) || defined(MACOSX)
+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
(XIMProc)StatusStartCallback,
(XIMProc)StatusDoneCallback,
(XIMProc)StatusDrawCallback,
#endif
};
-#if defined(__linux__) || defined(MACOSX)
+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
#define MAX_STATUS_LEN 100
typedef struct {
Window w; /*status window id */
@@ -124,7 +124,7 @@
XIMCallback *callbacks; /* callback parameters */
jobject x11inputmethod; /* global ref to X11InputMethod instance */
/* associated with the XIC */
-#if defined(__linux__) || defined(MACOSX)
+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
StatusWindow *statusWindow; /* our own status window */
#endif
char *lookup_buf; /* buffer used for XmbLookupString */
@@ -370,7 +370,7 @@
static void
freeX11InputMethodData(JNIEnv *env, X11InputMethodData *pX11IMData)
{
-#if defined(__linux__) || defined(MACOSX)
+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
if (pX11IMData->statusWindow != NULL){
StatusWindow *sw = pX11IMData->statusWindow;
XFreeGC(awt_display, sw->lightGC);
@@ -473,7 +473,7 @@
pX11IMData = getX11InputMethodData(env, currentX11InputMethodInstance);
if (pX11IMData == NULL) {
-#if defined(__linux__) || defined(MACOSX)
+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
return False;
#else
return result;
@@ -481,7 +481,7 @@
}
if ((ic = pX11IMData->current_ic) == (XIC)0){
-#if defined(__linux__) || defined(MACOSX)
+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
return False;
#else
return result;
@@ -573,7 +573,7 @@
return result;
}
-#if defined(__linux__) || defined(MACOSX)
+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
static StatusWindow *createStatusWindow(
Window parent) {
StatusWindow *statusWindow;
@@ -886,7 +886,7 @@
}
}
}
-#endif /* __linux__ || MACOSX */
+#endif /* __linux__ || _ALLBSD_SOURCE */
/*
* Creates two XICs, one for active clients and the other for passive
* clients. All information on those XICs are stored in the
@@ -929,7 +929,7 @@
return FALSE ;
}
-#if defined(__linux__) || defined(MACOSX)
+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
on_the_spot_styles |= XIMStatusNothing;
/*kinput does not support XIMPreeditCallbacks and XIMStatusArea
@@ -942,9 +942,9 @@
break;
}
}
-#else /*! __linux__ && !MACOSX */
+#else /*! __linux__ && !_ALLBSD_SOURCE */
on_the_spot_styles |= XIMStatusNothing;
-#endif /* __linux__ || MACOSX */
+#endif /* __linux__ || _ALLBSD_SOURCE */
for (i = 0; i < im_styles->count_styles; i++) {
active_styles |= im_styles->supported_styles[i] & on_the_spot_styles;
@@ -998,7 +998,7 @@
NULL);
if (preedit == (XVaNestedList)NULL)
goto err;
-#if defined(__linux__) || defined(MACOSX)
+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
/*always try XIMStatusCallbacks for active client...*/
{
status = (XVaNestedList)XVaCreateNestedList(0,
@@ -1020,7 +1020,7 @@
XFree((void *)status);
XFree((void *)preedit);
}
-#else /* !__linux__ && !MACOSX */
+#else /* !__linux__ && !_ALLBSD_SOURCE */
pX11IMData->ic_active = XCreateIC(X11im,
XNClientWindow, w,
XNFocusWindow, w,
@@ -1028,7 +1028,7 @@
XNPreeditAttributes, preedit,
NULL);
XFree((void *)preedit);
-#endif /* __linux__ || MACOSX */
+#endif /* __linux__ || _ALLBSD_SOURCE */
} else {
pX11IMData->ic_active = XCreateIC(X11im,
XNClientWindow, w,
@@ -1188,7 +1188,7 @@
}
-#if defined(__linux__) || defined(MACOSX)
+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
static void
StatusStartCallback(XIC ic, XPointer client_data, XPointer call_data)
{
@@ -1256,7 +1256,7 @@
finally:
AWT_UNLOCK();
}
-#endif /* __linux__ || MACOSX */
+#endif /* __linux__ || _ALLBSD_SOURCE */
static void CommitStringCallback(XIC ic, XPointer client_data, XPointer call_data) {
JNIEnv *env = GetJNIEnv();
@@ -1353,14 +1353,14 @@
/* Use IMInstantiate call back only on Linux, as there is a bug in Solaris
(4768335)
*/
-#if defined(__linux__) || defined(MACOSX)
+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
registered = XRegisterIMInstantiateCallback(dpy, NULL, NULL,
NULL, (XIDProc)OpenXIMCallback, NULL);
if (!registered) {
/* directly call openXIM callback */
#endif
OpenXIMCallback(dpy, NULL, NULL);
-#if defined(__linux__) || defined(MACOSX)
+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
}
#endif
@@ -1395,9 +1395,9 @@
globalRef = (*env)->NewGlobalRef(env, this);
pX11IMData->x11inputmethod = globalRef;
-#if defined(__linux__) || defined(MACOSX)
+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
pX11IMData->statusWindow = NULL;
-#endif /* __linux__ || MACOSX */
+#endif /* __linux__ || _ALLBSD_SOURCE */
pX11IMData->lookup_buf = 0;
pX11IMData->lookup_buf_len = 0;
@@ -1447,14 +1447,14 @@
setXICFocus(pX11IMData->current_ic, req);
currentX11InputMethodInstance = pX11IMData->x11inputmethod;
currentFocusWindow = w;
-#if defined(__linux__) || defined(MACOSX)
+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
if (active && pX11IMData->statusWindow && pX11IMData->statusWindow->on)
onoffStatusWindow(pX11IMData, w, True);
#endif
} else {
currentX11InputMethodInstance = NULL;
currentFocusWindow = 0;
-#if defined(__linux__) || defined(MACOSX)
+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
onoffStatusWindow(pX11IMData, 0, False);
if (pX11IMData->current_ic != NULL)
#endif
@@ -1471,7 +1471,7 @@
Java_sun_awt_X11InputMethod_turnoffStatusWindow(JNIEnv *env,
jobject this)
{
-#if defined(__linux__) || defined(MACOSX)
+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
X11InputMethodData *pX11IMData;
StatusWindow *statusWindow;
@@ -1639,7 +1639,7 @@
JNIEXPORT void JNICALL Java_sun_awt_X11_XInputMethod_adjustStatusWindow
(JNIEnv *env, jobject this, jlong window)
{
-#if defined(__linux__) || defined(MACOSX)
+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
AWT_LOCK();
adjustStatusWindow(window);
AWT_UNLOCK();
--- ./jdk/src/solaris/native/sun/awt/awt_Robot.c 2015-12-12 10:53:22.312921000 -0800
+++ ./jdk/src/solaris/native/sun/awt/awt_Robot.c 2015-10-24 06:21:21.000000000 -0700
@@ -45,7 +45,7 @@
#include "wsutils.h"
#include "list.h"
#include "multiVis.h"
-#if defined(__linux__) || defined(MACOSX)
+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
#include <sys/socket.h>
#endif
--- ./jdk/src/solaris/native/sun/awt/extutil.h 2014-03-03 18:59:55.000000000 -0800
+++ ./jdk/src/solaris/native/sun/awt/extutil.h 2015-10-24 06:21:21.000000000 -0700
@@ -58,7 +58,7 @@
*/
/* $XFree86: xc/include/extensions/extutil.h,v 1.5 2001/01/17 17:53:20 dawes Exp $ */
-#if defined(__linux__) || defined(MACOSX)
+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
#ifndef _EXTUTIL_H_
#define _EXTUTIL_H_
@@ -248,4 +248,4 @@
char *proc(Display *dpy, int code, XExtCodes *codes, char *buf, int n)
#endif
-#endif /* __linux__ || MACOSX */
+#endif /* __linux__ || _ALLBSD_SOURCE */
--- ./jdk/src/solaris/native/sun/awt/fontpath.c 2015-12-12 10:53:22.314468000 -0800
+++ ./jdk/src/solaris/native/sun/awt/fontpath.c 2015-10-24 06:21:21.000000000 -0700
@@ -23,9 +23,9 @@
* questions.
*/
-#if defined(__linux__)
+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
#include <string.h>
-#endif /* __linux__ */
+#endif /* __linux__ || _ALLBSD_SOURCE */
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
@@ -113,7 +113,6 @@
OPENWINHOMELIB "locale/ar/X11/fonts/Type1",
NULL, /* terminates the list */
};
-
#elif defined( __linux__)
/* All the known interesting locations we have discovered on
* various flavors of Linux
@@ -140,6 +139,20 @@
"/usr/lpp/X11/lib/X11/fonts/TrueType", /* from X11.fnt.ucs.ttf */
NULL, /* terminates the list */
};
+#elif defined(_ALLBSD_SOURCE)
+static char *fullBSDFontPath[] = {
+ PACKAGE_PATH "/lib/X11/fonts/TrueType",
+ PACKAGE_PATH "/lib/X11/fonts/truetype",
+ PACKAGE_PATH "/lib/X11/fonts/TTF",
+ PACKAGE_PATH "/lib/X11/fonts/OTF",
+ PACKAGE_PATH "/share/fonts/TrueType",
+ PACKAGE_PATH "/share/fonts/truetype",
+ PACKAGE_PATH "/share/fonts/TTF",
+ PACKAGE_PATH "/share/fonts/OTF",
+ PACKAGE_PATH "/lib/X11/fonts/Type1",
+ PACKAGE_PATH "/share/fonts/Type1",
+ NULL, /* terminates the list */
+};
#endif
static char **getFontConfigLocations();
@@ -381,7 +394,7 @@
#endif /* !HEADLESS */
-#if defined(__linux__)
+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
/* from awt_LoadLibrary.c */
JNIEXPORT jboolean JNICALL AWTIsHeadless();
#endif
@@ -512,6 +525,8 @@
knowndirs = fullSolarisFontPath;
#elif defined(_AIX)
knowndirs = fullAixFontPath;
+#elif defined(_ALLBSD_SOURCE)
+ knowndirs = fullBSDFontPath;
#endif
/* REMIND: this code requires to be executed when the GraphicsEnvironment
* is already initialised. That is always true, but if it were not so,
@@ -519,8 +534,8 @@
* be initialised.
*/
#ifndef HEADLESS
-#if defined(__linux__)
- /* There's no headless build on linux ... */
+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
+ /* There's no headless build on linux and BSD ... */
if (!AWTIsHeadless()) { /* .. so need to call a function to check */
#endif
/* Using the X11 font path to locate font files is now a fallback
@@ -535,7 +550,7 @@
x11dirs = getX11FontPath();
}
AWT_UNLOCK();
-#if defined(__linux__)
+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
}
#endif
#endif /* !HEADLESS */
@@ -1230,7 +1245,7 @@
*/
if (fontformat != NULL
&& (strcmp((char*)fontformat, "TrueType") != 0)
-#if defined(__linux__) || defined(_AIX)
+#if defined(__linux__) || defined(_AIX) || defined(_ALLBSD_SOURCE)
&& (strcmp((char*)fontformat, "Type 1") != 0)
#endif
) {
--- ./jdk/src/solaris/native/sun/java2d/j2d_md.h 2014-03-03 18:59:57.000000000 -0800
+++ ./jdk/src/solaris/native/sun/java2d/j2d_md.h 2015-10-24 06:21:21.000000000 -0700
@@ -28,11 +28,11 @@
#include <sys/types.h>
/*
- * Linux and MACOSX's version of <sys/types.h> does not define intptr_t
+ * Linux and BSD's version of <sys/types.h> does not define intptr_t
*/
-#if defined(__linux__) || defined(MACOSX)
+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
#include <stdint.h>
-#endif /* __linux__ || MACOSX */
+#endif /* __linux__ || _ALLBSD_SOURCE */
typedef unsigned char jubyte;
typedef unsigned short jushort;
--- ./jdk/src/solaris/native/sun/java2d/loops/mlib_ImageZoom_NN.c 2014-03-03 18:59:57.000000000 -0800
+++ ./jdk/src/solaris/native/sun/java2d/loops/mlib_ImageZoom_NN.c 2015-10-24 06:21:21.000000000 -0700
@@ -63,9 +63,6 @@
* MLIB_EDGE_SRC_PADDED
*/
-#ifdef MACOSX
-#include <machine/endian.h>
-#endif
#include <mlib_image.h>
#include <mlib_ImageZoom.h>
@@ -102,7 +99,7 @@
/***************************************************************/
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
static const mlib_u32 mlib_bit_mask4[16] = {
0x00000000u, 0xFF000000u, 0x00FF0000u, 0xFFFF0000u,
@@ -111,7 +108,7 @@
0x0000FFFFu, 0xFF00FFFFu, 0x00FFFFFFu, 0xFFFFFFFFu
};
-#else /* _LITTLE_ENDIAN */
+#else /* VM_LITTLE_ENDIAN */
static const mlib_u32 mlib_bit_mask4[16] = {
0x00000000u, 0x000000FFu, 0x0000FF00u, 0x0000FFFFu,
@@ -120,7 +117,7 @@
0xFFFF0000u, 0xFFFF00FFu, 0xFFFFFF00u, 0xFFFFFFFFu
};
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
/***************************************************************/
@@ -344,11 +341,11 @@
#ifdef _NO_LONGLONG
typedef struct {
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
mlib_u32 uint1, uint0;
-#else /* _LITTLE_ENDIAN */
+#else /* VM_LITTLE_ENDIAN */
mlib_u32 uint0, uint1;
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
} two_uint;
/***************************************************************/
@@ -511,11 +508,11 @@
DTYPE mask;
MASK(mask);
off *= 8;
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
LSHIFT(dd_old, da[0], 64 - off);
-#else /* _LITTLE_ENDIAN */
+#else /* VM_LITTLE_ENDIAN */
RSHIFT(dd_old, da[0], 64 - off);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
#ifdef __SUNPRO_C
#pragma pipeloop(0)
@@ -540,30 +537,30 @@
res = (res & 0xff) | (res >> 8);
dd = gray_mask[res];
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
/* *da++ = (dd_old >> (64 - off)) | (dd << off);*/
RSHIFT(dd_old, dd_old, 64 - off);
LSHIFT(dtmp, dd, off);
-#else /* _LITTLE_ENDIAN */
+#else /* VM_LITTLE_ENDIAN */
/* *da++ = (dd_old << (64 - off)) | (dd >> off);*/
LSHIFT(dd_old, dd_old, 64 - off);
RSHIFT(dtmp, dd, off);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
LOGIC(*da++, dd_old, dtmp, |);
dd_old = dd;
}
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
/* da[0] = (dd_old >> (64 - off)) | (da[0] & ((mlib_u64)((mlib_s64) -1) << off));*/
LSHIFT(dtmp, mask, off);
LOGIC(dtmp, da[0], dtmp, &);
RSHIFT(dtmp1, dd_old, 64 - off);
-#else /* _LITTLE_ENDIAN */
+#else /* VM_LITTLE_ENDIAN */
/* da[0] = (dd_old << (64 - off)) | (da[0] & ((mlib_u64)((mlib_s64) -1) >> off));*/
RSHIFT(dtmp, mask, off);
LOGIC(dtmp, da[0], dtmp, &);
LSHIFT(dtmp1, dd_old, 64 - off);
-#endif /* _LITTLE_ENDIAN */
+#endif /* VM_LITTLE_ENDIAN */
LOGIC(da[0], dtmp, dtmp1, |);
}
else { /* aligned */
--- ./jdk/src/solaris/native/sun/java2d/loops/vis_FuncArray.c 2014-03-03 18:59:57.000000000 -0800
+++ ./jdk/src/solaris/native/sun/java2d/loops/vis_FuncArray.c 2015-10-24 06:21:21.000000000 -0700
@@ -804,7 +804,7 @@
static int initialized;
static int usevis = JNI_TRUE;
-#if defined(__linux__) || defined(MACOSX)
+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
# define ULTRA_CHIP "sparc64"
#else
# define ULTRA_CHIP "sun4u"
--- ./jdk/src/solaris/native/sun/management/OperatingSystemImpl.c 2015-12-12 10:53:22.318168000 -0800
+++ ./jdk/src/solaris/native/sun/management/OperatingSystemImpl.c 2015-10-24 06:21:21.000000000 -0700
@@ -56,6 +56,9 @@
#include <limits.h>
#include <stdlib.h>
#include <unistd.h>
+#ifdef __FreeBSD__
+#include <vm/vm_param.h>
+#endif
#if defined(_AIX)
#include <libperfstat.h>
@@ -168,6 +171,25 @@
throw_internal_error(env, "sysctlbyname failed");
}
return available ? (jlong)vmusage.xsu_avail : (jlong)vmusage.xsu_total;
+#elif defined(__FreeBSD__)
+ struct xswdev xsw;
+ size_t mibsize, size;
+ jlong npages;
+ int mib[16], n;
+
+ mibsize = sizeof(mib) / sizeof(mib[0]);
+ if (sysctlnametomib("vm.swap_info", mib, &mibsize) == -1)
+ return (0);
+ for (n = 0, npages = 0; ; n++) {
+ mib[mibsize] = n;
+ size = sizeof(xsw);
+ if (sysctl(mib, mibsize + 1, &xsw, &size, NULL, 0) == -1)
+ break;
+ npages += xsw.xsw_nblks;
+ if (available)
+ npages -= xsw.xsw_used;
+ }
+ return (npages * page_size);
#else /* _ALLBSD_SOURCE */
/*
* XXXBSD: there's no way available to get swap info in
@@ -243,11 +265,30 @@
throw_internal_error(env, "task_info failed");
}
return t_info.virtual_size;
+#elif defined(__FreeBSD__)
+ FILE *fp;
+ unsigned long end, start;
+ jlong total = 0;
+
+ if ((fp = fopen("/proc/curproc/map", "r")) == NULL) {
+ throw_internal_error(env, "Unable to open /proc/curproc/map");
+ return -1;
+ }
+
+ for (;;) {
+ // Ignore everything except start and end entries
+ if (fscanf(fp, "0x%lx 0x%lx %*[^\n]\n", &start, &end) != 2 || start > end)
+ break;
+ total += end - start;
+ }
+
+ fclose(fp);
+ return total;
#else /* _ALLBSD_SOURCE */
/*
- * XXXBSD: there's no way available to do it in FreeBSD, AFAIK.
+ * XXXBSD: there's no way available to do it in BSD, AFAIK.
*/
- // throw_internal_error(env, "Unimplemented in FreeBSD");
+ // throw_internal_error(env, "Unimplemented in BSD");
return (64 * MB);
#endif
}
@@ -324,11 +365,27 @@
return -1;
}
return (jlong)vm_stats.free_count * page_size;
+#elif defined(__FreeBSD__)
+ static const char *vm_stats[] = {
+ "vm.stats.vm.v_free_count",
+ "vm.stats.vm.v_cache_count",
+ /* "vm.stats.vm.v_inactive_count", */
+ NULL
+ };
+ size_t size;
+ jlong free_pages;
+ u_int i, npages;
+ for (i = 0, free_pages = 0, size = sizeof(npages); vm_stats[i] != NULL; i++) {
+ if (sysctlbyname(vm_stats[i], &npages, &size, NULL, 0) == -1)
+ return 0;
+ free_pages += npages;
+ }
+ return (free_pages * page_size);
#elif defined(_ALLBSD_SOURCE)
/*
- * XXBSDL no way to do it in FreeBSD
+ * XXBSDL no way to do it in BSD
*/
- // throw_internal_error(env, "unimplemented in FreeBSD")
+ // throw_internal_error(env, "unimplemented in BSD")
return (128 * MB);
#elif defined(_AIX)
perfstat_memory_total_t memory_info;
@@ -346,13 +403,19 @@
Java_sun_management_OperatingSystemImpl_getTotalPhysicalMemorySize
(JNIEnv *env, jobject mbean)
{
-#ifdef _ALLBSD_SOURCE
+#if defined(_ALLBSD_SOURCE) && !defined(_SC_PHYS_PAGES)
jlong result = 0;
int mib[2];
size_t rlen;
mib[0] = CTL_HW;
+#if defined (HW_MEMSIZE) // Apple
mib[1] = HW_MEMSIZE;
+#elif defined(HW_PHYSMEM) // Most of BSD
+ mib[1] = HW_PHYSMEM;
+#else
+ #error No ways to get physmem
+#endif
rlen = sizeof(result);
if (sysctl(mib, 2, &result, &rlen, NULL, 0) != 0) {
throw_internal_error(env, "sysctl failed");
@@ -372,6 +435,11 @@
}
+#ifdef _ALLBSD_SOURCE
+#define FD_DIR "/dev/fd"
+#else
+#define FD_DIR "/proc/self/fd"
+#endif
JNIEXPORT jlong JNICALL
Java_sun_management_OperatingSystemImpl_getOpenFileDescriptorCount
@@ -421,12 +489,6 @@
free(fds);
return nfiles;
-#elif defined(_ALLBSD_SOURCE)
- /*
- * XXXBSD: there's no way available to do it in FreeBSD, AFAIK.
- */
- // throw_internal_error(env, "Unimplemented in FreeBSD");
- return (100);
#else /* solaris/linux */
DIR *dirp;
struct dirent dbuf;
@@ -444,7 +506,7 @@
dirp = opendir(FD_DIR);
if (dirp == NULL) {
- throw_internal_error(env, "Unable to open directory /proc/self/fd");
+ throw_internal_error(env, "Unable to open directory " FD_DIR);
return -1;
}
--- ./jdk/src/solaris/native/sun/net/portconfig.c 2014-03-03 18:59:58.000000000 -0800
+++ ./jdk/src/solaris/native/sun/net/portconfig.c 2015-10-24 06:21:21.000000000 -0700
@@ -67,6 +67,24 @@
range->lower = net_getParam("/dev/tcp", "tcp_smallest_anon_port");
return 0;
}
+#elif defined(__OpenBSD__)
+ {
+ int mib[3];
+ mib[0] = CTL_NET;
+ mib[1] = PF_INET;
+
+ mib[2] = IPCTL_IPPORT_HIFIRSTAUTO;
+ size_t rlen = sizeof(range->lower);
+ if (sysctl(mib, 3, &range->lower, &rlen, NULL, 0) == -1)
+ return -1;
+
+ mib[2] = IPCTL_IPPORT_HILASTAUTO;
+ rlen = sizeof(range->higher);
+ if (sysctl(mib, 3, &range->higher, &rlen, NULL, 0) == -1)
+ return -1;
+
+ return 0;
+ }
#elif defined(_ALLBSD_SOURCE)
{
int ret;
--- ./jdk/src/solaris/native/sun/nio/ch/sctp/Sctp.h 2014-03-03 18:59:58.000000000 -0800
+++ ./jdk/src/solaris/native/sun/nio/ch/sctp/Sctp.h 2015-10-24 06:21:21.000000000 -0700
@@ -67,7 +67,7 @@
-#else /* __linux__ */
+#elif defined(__linux__)
#include <stdint.h>
#include <linux/types.h>
#include <sys/socket.h>
@@ -319,9 +319,20 @@
typedef int sctp_bindx_func(int sd, struct sockaddr *addrs, int addrcnt, int flags);
typedef int sctp_peeloff_func(int sock, sctp_assoc_t id);
+#elif defined(__FreeBSD__)
+
+#include <stdint.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/sctp.h>
+#include <netinet/sctp_peeloff.h>
+#include <netinet/sctp_uio.h>
+#include "jni.h"
#endif /* __linux__ */
+#ifndef __FreeBSD__
+
sctp_getladdrs_func* nio_sctp_getladdrs;
sctp_freeladdrs_func* nio_sctp_freeladdrs;
sctp_getpaddrs_func* nio_sctp_getpaddrs;
@@ -329,6 +340,17 @@
sctp_bindx_func* nio_sctp_bindx;
sctp_peeloff_func* nio_sctp_peeloff;
+#else
+
+#define nio_sctp_getladdrs sctp_getladdrs
+#define nio_sctp_freeladdrs sctp_freeladdrs
+#define nio_sctp_getpaddrs sctp_getpaddrs
+#define nio_sctp_freepaddrs sctp_freepaddrs
+#define nio_sctp_bindx sctp_bindx
+#define nio_sctp_peeloff sctp_peeloff
+
+#endif
+
jboolean loadSocketExtensionFuncs(JNIEnv* env);
#endif /* !SUN_NIO_CH_SCTP_H */
--- ./jdk/src/solaris/native/sun/nio/ch/sctp/SctpNet.c 2015-12-12 10:53:29.908334000 -0800
+++ ./jdk/src/solaris/native/sun/nio/ch/sctp/SctpNet.c 2015-10-24 06:21:21.000000000 -0700
@@ -58,6 +58,7 @@
*/
jboolean loadSocketExtensionFuncs
(JNIEnv* env) {
+#ifndef __FreeBSD__
if (dlopen(nativeSctpLib, RTLD_GLOBAL | RTLD_LAZY) == NULL) {
JNU_ThrowByName(env, "java/lang/UnsupportedOperationException",
dlerror());
@@ -105,6 +106,7 @@
dlerror());
return JNI_FALSE;
}
+#endif
funcsLoaded = JNI_TRUE;
return JNI_TRUE;
--- ./jdk/src/solaris/native/sun/nio/fs/MagicFileTypeDetector.c 2014-03-03 18:59:58.000000000 -0800
+++ ./jdk/src/solaris/native/sun/nio/fs/MagicFileTypeDetector.c 2015-10-24 06:21:21.000000000 -0700
@@ -31,6 +31,12 @@
#include <dlfcn.h>
#include <string.h>
+#ifdef __FreeBSD__
+#define MAGIC_MAJOR_VERSION "4"
+#else
+#define MAGIC_MAJOR_VERSION "1"
+#endif
+
#define MAGIC_MIME_TYPE 0x000010 /* Return the MIME type */
typedef struct magic_set magic_t;
@@ -54,7 +60,7 @@
{
magic_handle = dlopen("libmagic.so", RTLD_LAZY);
if (magic_handle == NULL) {
- magic_handle = dlopen("libmagic.so.1", RTLD_LAZY);
+ magic_handle = dlopen("libmagic.so." MAGIC_MAJOR_VERSION, RTLD_LAZY);
if (magic_handle == NULL) {
return JNI_FALSE;
}
--- ./jdk/src/solaris/native/sun/security/pkcs11/j2secmod_md.c 2015-12-12 10:53:22.321284000 -0800
+++ ./jdk/src/solaris/native/sun/security/pkcs11/j2secmod_md.c 2015-10-24 06:21:21.000000000 -0700
@@ -54,7 +54,7 @@
}
// look up existing handle only, do not load
-#if defined(AIX)
+#if defined(AIX) || !defined(RTLD_NOLOAD)
void *hModule = dlopen(libName, RTLD_LAZY);
#else
void *hModule = dlopen(libName, RTLD_NOLOAD);
--- ./jdk/src/solaris/native/sun/tools/attach/BsdVirtualMachine.c 2015-12-12 10:53:27.639188000 -0800
+++ ./jdk/src/solaris/native/sun/tools/attach/BsdVirtualMachine.c 2015-10-24 06:21:21.000000000 -0700
@@ -37,7 +37,9 @@
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/stat.h>
+#ifndef __FreeBSD__
#include <sys/syslimits.h>
+#endif
#include <sys/un.h>
#include <fcntl.h>
--- ./jdk/src/solaris/native/sun/xawt/XWindow.c 2015-12-12 10:53:22.323453000 -0800
+++ ./jdk/src/solaris/native/sun/xawt/XWindow.c 2015-10-24 06:21:21.000000000 -0700
@@ -886,7 +886,7 @@
{
KeySym originalKeysym = *keysym;
-#if !defined(__linux__) && !defined(MACOSX)
+#if !defined(__linux__) && !defined(_ALLBSD_SOURCE)
/* The following code on Linux will cause the keypad keys
* not to echo on JTextField when the NumLock is on. The
* keysyms will be 0, because the last parameter 2 is not defined.
--- ./jdk/src/windows/native/com/sun/media/sound/PLATFORM_API_WinOS_DirectSound.cpp 2014-03-03 19:00:02.000000000 -0800
+++ ./jdk/src/windows/native/com/sun/media/sound/PLATFORM_API_WinOS_DirectSound.cpp 2015-10-24 06:21:21.000000000 -0700
@@ -308,7 +308,7 @@
DAUDIO_PCM,
(bitsArray[bitIndex]==8)?FALSE:TRUE, /* signed */
(bitsArray[bitIndex]==8)?FALSE:
-#ifndef _LITTLE_ENDIAN
+#ifndef VM_LITTLE_ENDIAN
TRUE /* big endian */
#else
FALSE /* little endian */
@@ -860,7 +860,7 @@
return NULL;
}
if (sampleSizeInBits > 8 &&
-#ifdef _LITTLE_ENDIAN
+#ifdef VM_LITTLE_ENDIAN
isBigEndian
#else
!isBigEndian
--- ./langtools/.hgtags 2015-12-12 10:53:31.105737000 -0800
+++ ./langtools/.hgtags 2015-10-24 06:21:02.000000000 -0700
@@ -489,4 +489,3 @@
70489ab07527a3ef65e2a30f23b164220466775a jdk8u66-b14
8063e4ac4caabe1756f8393859ab56da3bb29122 jdk8u66-b15
01e7f91d993b341986f574d0eb3fbfe3d7cae68e jdk8u66-b16
-c5d4ffa220f3824c2ea5d39dc99d41a9df9e5ae5 jdk8u40-b24
--- ./make/Javadoc.gmk 2015-12-12 10:53:29.277538000 -0800
+++ ./make/Javadoc.gmk 2015-10-24 06:20:55.000000000 -0700
@@ -46,8 +46,18 @@
BUILD_NUMBER=$(JDK_BUILD_NUMBER)
+ifeq ($(OPENJDK_TARGET_OS_VENDOR), openbsd)
+ ifeq ($(OPENJDK_TARGET_CPU_BITS), 32)
+ JAVADOC_CMD_MEM = "-Xmx768m"
+ else
+ JAVADOC_CMD_MEM = "-Xmx1024m"
+ endif
+else
+ JAVADOC_CMD_MEM = "-Xmx1024m"
+endif
+
JAVADOC_CMD = $(JAVA) \
- -Xmx1024m \
+ $(JAVADOC_CMD_MEM) \
-Djava.awt.headless=true \
$(NEW_JAVADOC) \
-bootclasspath $(JDK_OUTPUTDIR)/classes
--- ./make/Main.gmk 2015-12-12 10:53:29.277828000 -0800
+++ ./make/Main.gmk 2015-10-24 06:20:55.000000000 -0700
@@ -58,7 +58,11 @@
# Setup number of jobs to use. -jN is unfortunately not available for us to parse from the command line,
# hence this workaround.
+ifdef JOBS
+ifneq ($(JOBS),0)
MAKE_ARGS:=$(MAKE_ARGS) -j$(JOBS)
+endif
+endif
### Main targets
--- ./make/common/MakeBase.gmk 2014-03-03 18:49:57.000000000 -0800
+++ ./make/common/MakeBase.gmk 2015-10-24 06:20:55.000000000 -0700
@@ -338,7 +338,7 @@
# (and causing a crash on Cygwin).
# Default shell seems to always be /bin/sh. Must override with bash to get this to work on Solaris.
# Only use time if it's GNU time which supports format and output file.
- WRAPPER_SHELL:=/bin/bash $$(SRC_ROOT)/common/bin/shell-tracer.sh $$(if $$(findstring yes,$$(IS_GNU_TIME)),$$(TIME),-) $$(OUTPUT_ROOT)/build-trace-time.log /bin/bash
+ WRAPPER_SHELL:=bash $$(SRC_ROOT)/common/bin/shell-tracer.sh $$(if $$(findstring yes,$$(IS_GNU_TIME)),$$(TIME),-) $$(OUTPUT_ROOT)/build-trace-time.log bash
SHELL=$$(warning $$(if $$@,Building $$@,Running shell command) $$(if $$<, (from $$<))$$(if $$?, ($$(wordlist 1, 20, $$?) $$(if $$(wordlist 21, 22, $$?), ... [in total $$(words $$?) files]) newer)))$$(WRAPPER_SHELL)
endif
# Never remove warning messages; this is just for completeness
@@ -365,8 +365,8 @@
# This is to be called by all SetupFoo macros
define LogSetupMacroEntry
- $(if $(27),$(error Internal makefile error: Too many arguments to LogSetupMacroEntry, please update MakeBase.gmk))
- $(if $(findstring $(LOG_LEVEL),debug trace), $(info $1 $(foreach i,2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26,$(if $($i),$(NEWLINE) $(strip [$i] $($i))))))
+ $(if $(30),$(error Internal makefile error: Too many arguments to LogSetupMacroEntry, please update MakeBase.gmk))
+ $(if $(findstring $(LOG_LEVEL),debug trace), $(info $1 $(foreach i,2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29,$(if $($i),$(NEWLINE) $(strip [$i] $($i))))))
endef
# Make directory without forking mkdir if not needed
--- ./make/common/NativeCompilation.gmk 2015-12-12 10:53:29.278425000 -0800
+++ ./make/common/NativeCompilation.gmk 2015-10-24 06:20:55.000000000 -0700
@@ -151,9 +151,9 @@
# CC the compiler to use, default is $(CC)
# LDEXE the linker to use for linking executables, default is $(LDEXE)
# OPTIMIZATION sets optimization level to NONE, LOW, HIGH, HIGHEST
- $(foreach i,2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26, $(if $($i),$1_$(strip $($i)))$(NEWLINE))
- $(call LogSetupMacroEntry,SetupNativeCompilation($1),$2,$3,$4,$5,$6,$7,$8,$9,$(10),$(11),$(12),$(13),$(14),$(15),$(16),$(17),$(18),$(19),$(20),$(21),$(22),$(23),$(24),$(25),$(26))
- $(if $(27),$(error Internal makefile error: Too many arguments to SetupNativeCompilation, please update NativeCompilation.gmk))
+ $(foreach i,2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29, $(if $($i),$1_$(strip $($i)))$(NEWLINE))
+ $(call LogSetupMacroEntry,SetupNativeCompilation($1),$2,$3,$4,$5,$6,$7,$8,$9,$(10),$(11),$(12),$(13),$(14),$(15),$(16),$(17),$(18),$(19),$(20),$(21),$(22),$(23),$(24),$(25),$(26),$(27),$(28),$(29))
+ $(if $(30),$(error Internal makefile error: Too many arguments to SetupNativeCompilation, please update NativeCompilation.gmk))
ifneq (,$$($1_BIN))
$$(error BIN has been replaced with OBJECT_DIR)
--- ./nashorn/.hgtags 2015-12-12 10:53:31.107727000 -0800
+++ ./nashorn/.hgtags 2015-10-24 06:21:04.000000000 -0700
@@ -473,4 +473,3 @@
165ed6982da8dc7dc5562d5b4a8f07dba55c7448 jdk8u66-b14
9a3b86240761e602469c41bd720c7791997253e6 jdk8u66-b15
c0ce5c308f5e2c42ac0d2e7367355663312a3128 jdk8u66-b16
-b2ce5df33715583c898530560d4202853b9ff9bc jdk8u40-b24