diff options
Diffstat (limited to 'java/openjdk8')
-rw-r--r-- | java/openjdk8/files/patch-bsd | 2632 |
1 files changed, 2430 insertions, 202 deletions
diff --git a/java/openjdk8/files/patch-bsd b/java/openjdk8/files/patch-bsd index b1abea678bac..3a225dc7f23b 100644 --- a/java/openjdk8/files/patch-bsd +++ b/java/openjdk8/files/patch-bsd @@ -1,5 +1,5 @@ --- ./common/autoconf/build-performance.m4 Thu Sep 22 12:29:25 2016 -0700 -+++ ./common/autoconf/build-performance.m4 Mon Oct 24 19:45:12 2016 -0700 ++++ ./common/autoconf/build-performance.m4 Wed Dec 28 10:29:21 2016 -0800 @@ -41,6 +41,10 @@ # Looks like a MacOSX system NUM_CORES=`/usr/sbin/system_profiler -detailLevel full SPHardwareDataType | grep 'Cores' | awk '{print [$]5}'` @@ -39,7 +39,7 @@ CCACHE= else --- ./common/autoconf/generated-configure.sh Thu Sep 22 12:29:25 2016 -0700 -+++ ./common/autoconf/generated-configure.sh Mon Oct 24 19:45:12 2016 -0700 ++++ ./common/autoconf/generated-configure.sh Wed Dec 28 10:29:21 2016 -0800 @@ -646,6 +646,8 @@ LIBM LIBZIP_CAN_USE_MMAP @@ -98,12 +98,21 @@ --with-x use the X Window System --with-cups specify prefix directory for the cups package (expecting the headers under PATH/include) +@@ -3672,7 +3681,7 @@ + + + # +-# 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 @@ -3880,7 +3889,7 @@ #CUSTOM_AUTOCONF_INCLUDE # Do not change or remove the following line, it is needed for consistency checks: -DATE_WHEN_GENERATED=1449096260 -+DATE_WHEN_GENERATED=1460430898 ++DATE_WHEN_GENERATED=1482096439 ############################################################################### # @@ -192,6 +201,15 @@ 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. +@@ -7985,7 +8028,7 @@ + INCLUDE_SA=false + fi + if test "x$VAR_CPU" = xppc64 ; then +- INCLUDE_SA=false ++ INCLUDE_SA=true + fi + if test "x$OPENJDK_TARGET_CPU" = xaarch64; then + INCLUDE_SA=false @@ -11174,6 +11217,24 @@ ############################################################################### @@ -325,7 +343,46 @@ fi if test "x$OPENJDK_TARGET_OS" = xlinux; then CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DLINUX" -@@ -30261,11 +30341,18 @@ +@@ -29794,6 +29874,38 @@ + fi + if test "x$OPENJDK_TARGET_OS" = xbsd; then + CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DBSD -D_ALLBSD_SOURCE" ++ if test "`uname -s`" = "OpenBSD"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if ld requires -z wxneeded" >&5 ++$as_echo_n "checking if ld requires -z wxneeded... " >&6; } ++ if test "$cross_compiling" = yes; then : ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++ ++ ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include <sys/mman.h> ++int main() { return mmap(0, 4096, PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, -1, 0) != MAP_FAILED; } ++_ACEOF ++if ac_fn_cxx_try_run "$LINENO"; then : ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; } ++ LDFLAGS_JDK="$LDFLAGS_JDK -Wl,-z,wxneeded" ++ ++else ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++ ++fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ ++ conftest.$ac_objext conftest.beam conftest.$ac_ext ++fi ++ ++ fi + fi + if test "x$DEBUG_LEVEL" = xrelease; then + CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DNDEBUG" +@@ -30261,11 +30373,18 @@ fi if test "x$OPENJDK_TARGET_OS" = xbsd; then @@ -349,7 +406,7 @@ fi if test "x$OPENJDK" = "xfalse"; then -@@ -30301,14 +30388,18 @@ +@@ -30301,14 +30420,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 @@ -370,7 +427,7 @@ 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" -@@ -31355,6 +31446,10 @@ +@@ -31355,6 +31478,10 @@ # A CSW package seems to be installed! CUPS_FOUND=yes CUPS_CFLAGS="-I/opt/csw/include" @@ -381,7 +438,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CUPS_FOUND" >&5 $as_echo "$CUPS_FOUND" >&6; } -@@ -34520,7 +34615,7 @@ +@@ -34520,7 +34647,7 @@ ############################################################################### # @@ -390,7 +447,7 @@ # # Check whether --with-alsa was given. -@@ -34928,15 +35023,66 @@ +@@ -34928,15 +35055,66 @@ if test "x${with_giflib}" = "xbundled"; then USE_EXTERNAL_LIBGIF=false @@ -462,7 +519,7 @@ { $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 : -@@ -34974,16 +35120,96 @@ +@@ -34974,16 +35152,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 : @@ -569,7 +626,7 @@ USE_EXTERNAL_LIBGIF=true else -@@ -34991,6 +35217,8 @@ +@@ -34991,6 +35249,8 @@ fi @@ -578,7 +635,7 @@ ############################################################################### # # Check for the zlib library -@@ -35558,6 +35786,11 @@ +@@ -35558,6 +35818,11 @@ LIBCXX="-lstdc++" fi @@ -590,7 +647,7 @@ -@@ -35631,6 +35864,10 @@ +@@ -35631,6 +35896,10 @@ # Looks like a MacOSX system NUM_CORES=`/usr/sbin/system_profiler -detailLevel full SPHardwareDataType | grep 'Cores' | awk '{print $5}'` FOUND_CORES=yes @@ -601,7 +658,7 @@ elif test "x$OPENJDK_BUILD_OS" = xaix ; then NUM_CORES=`/usr/sbin/prtconf | grep "^Number Of Processors" | awk '{ print $4 }'` FOUND_CORES=yes -@@ -35686,6 +35923,15 @@ +@@ -35686,6 +35955,15 @@ MEMORY_SIZE=`/usr/sbin/system_profiler -detailLevel full SPHardwareDataType | grep 'Memory' | awk '{print $2}'` MEMORY_SIZE=`expr $MEMORY_SIZE \* 1024` FOUND_MEM=yes @@ -617,7 +674,7 @@ elif test "x$OPENJDK_BUILD_OS" = xwindows; then # Windows, but without cygwin MEMORY_SIZE=`wmic computersystem get totalphysicalmemory -value | grep = | cut -d "=" -f 2-` -@@ -36093,8 +36339,8 @@ +@@ -36093,8 +36371,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; } @@ -629,7 +686,16 @@ $as_echo "no, disabling ccache" >&6; } CCACHE= --- ./common/autoconf/jdk-options.m4 Thu Sep 22 12:29:25 2016 -0700 -+++ ./common/autoconf/jdk-options.m4 Mon Oct 24 19:45:12 2016 -0700 ++++ ./common/autoconf/jdk-options.m4 Wed Dec 28 10:29:21 2016 -0800 +@@ -159,7 +159,7 @@ + INCLUDE_SA=false + fi + if test "x$VAR_CPU" = xppc64 ; then +- INCLUDE_SA=false ++ INCLUDE_SA=true + fi + if test "x$OPENJDK_TARGET_CPU" = xaarch64; then + INCLUDE_SA=false @@ -410,6 +410,20 @@ ############################################################################### @@ -652,7 +718,7 @@ # AC_DEFUN_ONCE([JDKOPT_DETECT_INTREE_EC], --- ./common/autoconf/libraries.m4 Thu Sep 22 12:29:25 2016 -0700 -+++ ./common/autoconf/libraries.m4 Mon Oct 24 19:45:12 2016 -0700 ++++ ./common/autoconf/libraries.m4 Wed Dec 28 10:29:21 2016 -0800 @@ -69,9 +69,15 @@ fi @@ -791,7 +857,7 @@ AC_SUBST(LIBCXX) ]) --- ./common/autoconf/platform.m4 Thu Sep 22 12:29:25 2016 -0700 -+++ ./common/autoconf/platform.m4 Mon Oct 24 19:45:12 2016 -0700 ++++ ./common/autoconf/platform.m4 Wed Dec 28 10:29:21 2016 -0800 @@ -30,7 +30,7 @@ [ # First argument is the cpu name from the trip/quad @@ -852,7 +918,7 @@ 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 Thu Sep 22 12:29:25 2016 -0700 -+++ ./common/autoconf/spec.gmk.in Mon Oct 24 19:45:12 2016 -0700 ++++ ./common/autoconf/spec.gmk.in Wed Dec 28 10:29:21 2016 -0800 @@ -76,6 +76,7 @@ OPENJDK_TARGET_OS:=@OPENJDK_TARGET_OS@ OPENJDK_TARGET_OS_API:=@OPENJDK_TARGET_OS_API@ @@ -890,7 +956,7 @@ LIBZIP_CAN_USE_MMAP:=@LIBZIP_CAN_USE_MMAP@ MSVCR_DLL:=@MSVCR_DLL@ --- ./common/autoconf/toolchain.m4 Thu Sep 22 12:29:25 2016 -0700 -+++ ./common/autoconf/toolchain.m4 Mon Oct 24 19:45:12 2016 -0700 ++++ ./common/autoconf/toolchain.m4 Wed Dec 28 10:29:21 2016 -0800 @@ -72,7 +72,7 @@ else COMPILER_VERSION_TEST=`$COMPILER --version 2>&1 | $HEAD -n 1` @@ -985,8 +1051,31 @@ fi if test "x$OPENJDK_TARGET_OS" = xlinux; then CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DLINUX" +@@ -1084,6 +1099,22 @@ + fi + if test "x$OPENJDK_TARGET_OS" = xbsd; then + CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DBSD -D_ALLBSD_SOURCE" ++ if test "`uname -s`" = "OpenBSD"; then ++ AC_MSG_CHECKING([if ld requires -z wxneeded]) ++ AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <sys/mman.h> ++int main() { return mmap(0, 4096, PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, -1, 0) != MAP_FAILED; }]])], ++ [ ++ AC_MSG_RESULT([yes]) ++ LDFLAGS_JDK="$LDFLAGS_JDK -Wl,-z,wxneeded" ++ ], ++ [ ++ AC_MSG_RESULT([no]) ++ ], ++ [ ++ AC_MSG_RESULT([no]) ++ ] ++ ) ++ fi + fi + if test "x$DEBUG_LEVEL" = xrelease; then + CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DNDEBUG" --- ./configure Thu Sep 22 12:29:25 2016 -0700 -+++ ./configure Mon Oct 24 19:45:12 2016 -0700 ++++ ./configure Wed Dec 28 10:29:21 2016 -0800 @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh @@ -994,7 +1083,7 @@ # Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. --- ./make/Javadoc.gmk Thu Sep 22 12:29:25 2016 -0700 -+++ ./make/Javadoc.gmk Mon Oct 24 19:45:12 2016 -0700 ++++ ./make/Javadoc.gmk Wed Dec 28 10:29:21 2016 -0800 @@ -46,8 +46,18 @@ BUILD_NUMBER=$(JDK_BUILD_NUMBER) @@ -1016,7 +1105,7 @@ $(NEW_JAVADOC) \ -bootclasspath $(JDK_OUTPUTDIR)/classes --- ./make/Main.gmk Thu Sep 22 12:29:25 2016 -0700 -+++ ./make/Main.gmk Mon Oct 24 19:45:12 2016 -0700 ++++ ./make/Main.gmk Wed Dec 28 10:29:21 2016 -0800 @@ -58,7 +58,11 @@ # Setup number of jobs to use. -jN is unfortunately not available for us to parse from the command line, @@ -1030,7 +1119,7 @@ ### Main targets --- ./make/common/MakeBase.gmk Thu Sep 22 12:29:25 2016 -0700 -+++ ./make/common/MakeBase.gmk Mon Oct 24 19:45:12 2016 -0700 ++++ ./make/common/MakeBase.gmk Wed Dec 28 10:29:21 2016 -0800 @@ -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. @@ -1052,7 +1141,7 @@ # Make directory without forking mkdir if not needed --- ./make/common/NativeCompilation.gmk Thu Sep 22 12:29:25 2016 -0700 -+++ ./make/common/NativeCompilation.gmk Mon Oct 24 19:45:12 2016 -0700 ++++ ./make/common/NativeCompilation.gmk Wed Dec 28 10:29:21 2016 -0800 @@ -151,9 +151,9 @@ # CC the compiler to use, default is $(CC) # LDEXE the linker to use for linking executables, default is $(LDEXE) @@ -1066,8 +1155,1909 @@ ifneq (,$$($1_BIN)) $$(error BIN has been replaced with OBJECT_DIR) +--- ./hotspot/agent/make/Makefile Thu Sep 22 12:50:50 2016 -0700 ++++ ./hotspot/agent/make/Makefile Wed Dec 28 10:28:45 2016 -0800 +@@ -50,6 +50,7 @@ + sun.jvm.hotspot.debugger.amd64 \ + sun.jvm.hotspot.debugger.bsd \ + sun.jvm.hotspot.debugger.bsd.amd64 \ ++sun.jvm.hotspot.debugger.bsd.ppc64 \ + sun.jvm.hotspot.debugger.bsd.x86 \ + sun.jvm.hotspot.debugger.cdbg \ + sun.jvm.hotspot.debugger.cdbg.basic \ +@@ -61,12 +62,15 @@ + sun.jvm.hotspot.debugger.linux.x86 \ + sun.jvm.hotspot.debugger.posix \ + sun.jvm.hotspot.debugger.posix.elf \ ++sun.jvm.hotspot.debugger.ppc64 \ + sun.jvm.hotspot.debugger.proc \ + sun.jvm.hotspot.debugger.proc.amd64 \ ++sun.jvm.hotspot.debugger.proc.ppc64 \ + sun.jvm.hotspot.debugger.proc.sparc \ + sun.jvm.hotspot.debugger.proc.x86 \ + sun.jvm.hotspot.debugger.remote \ + sun.jvm.hotspot.debugger.remote.amd64 \ ++sun.jvm.hotspot.debugger.remote.ppc64 \ + sun.jvm.hotspot.debugger.remote.sparc \ + sun.jvm.hotspot.debugger.remote.x86 \ + sun.jvm.hotspot.debugger.sparc \ +@@ -90,12 +94,14 @@ + sun.jvm.hotspot.runtime.amd64 \ + sun.jvm.hotspot.runtime.bsd \ + sun.jvm.hotspot.runtime.bsd_amd64 \ ++sun.jvm.hotspot.runtime.bsd_ppc64 \ + sun.jvm.hotspot.runtime.bsd_x86 \ + sun.jvm.hotspot.runtime.linux \ + sun.jvm.hotspot.runtime.linux_amd64 \ + sun.jvm.hotspot.runtime.linux_sparc \ + sun.jvm.hotspot.runtime.linux_x86 \ + sun.jvm.hotspot.runtime.posix \ ++sun.jvm.hotspot.runtime.ppc64 \ + sun.jvm.hotspot.runtime.solaris_amd64 \ + sun.jvm.hotspot.runtime.solaris_sparc \ + sun.jvm.hotspot.runtime.solaris_x86 \ +@@ -135,6 +141,7 @@ + sun/jvm/hotspot/debugger/amd64/*.java \ + sun/jvm/hotspot/debugger/bsd/*.java \ + sun/jvm/hotspot/debugger/bsd/amd64/*.java \ ++sun/jvm/hotspot/debugger/bsd/ppc64/*.java \ + sun/jvm/hotspot/debugger/bsd/x86/*.java \ + sun/jvm/hotspot/debugger/cdbg/*.java \ + sun/jvm/hotspot/debugger/cdbg/basic/*.java \ +@@ -145,12 +152,15 @@ + sun/jvm/hotspot/debugger/linux/x86/*.java \ + sun/jvm/hotspot/debugger/posix/*.java \ + sun/jvm/hotspot/debugger/posix/elf/*.java \ ++sun/jvm/hotspot/debugger/ppc64/*.java \ + sun/jvm/hotspot/debugger/proc/*.java \ + sun/jvm/hotspot/debugger/proc/amd64/*.java \ ++sun/jvm/hotspot/debugger/proc/ppc64/*.java \ + sun/jvm/hotspot/debugger/proc/sparc/*.java \ + sun/jvm/hotspot/debugger/proc/x86/*.java \ + sun/jvm/hotspot/debugger/remote/*.java \ + sun/jvm/hotspot/debugger/remote/amd64/*.java \ ++sun/jvm/hotspot/debugger/remote/ppc64/*.java \ + sun/jvm/hotspot/debugger/remote/sparc/*.java \ + sun/jvm/hotspot/debugger/remote/x86/*.java \ + sun/jvm/hotspot/debugger/sparc/*.java \ +@@ -171,12 +181,14 @@ + sun/jvm/hotspot/runtime/amd64/*.java \ + sun/jvm/hotspot/runtime/bsd/*.java \ + sun/jvm/hotspot/runtime/bsd_amd64/*.java \ ++sun/jvm/hotspot/runtime/bsd_ppc64/*.java \ + sun/jvm/hotspot/runtime/bsd_x86/*.java \ + sun/jvm/hotspot/runtime/linux/*.java \ + sun/jvm/hotspot/runtime/linux_amd64/*.java \ + sun/jvm/hotspot/runtime/linux_sparc/*.java \ + sun/jvm/hotspot/runtime/linux_x86/*.java \ + sun/jvm/hotspot/runtime/posix/*.java \ ++sun/jvm/hotspot/runtime/ppc64/*.java \ + sun/jvm/hotspot/runtime/solaris_amd64/*.java \ + sun/jvm/hotspot/runtime/solaris_sparc/*.java \ + sun/jvm/hotspot/runtime/solaris_x86/*.java \ +--- ./hotspot/agent/src/os/bsd/BsdDebuggerLocal.c Thu Sep 22 12:50:50 2016 -0700 ++++ ./hotspot/agent/src/os/bsd/BsdDebuggerLocal.c Wed Dec 28 10:28:45 2016 -0800 +@@ -42,6 +42,10 @@ + #include "sun_jvm_hotspot_debugger_sparc_SPARCThreadContext.h" + #endif + ++#ifdef ppc64 ++#include "sun_jvm_hotspot_debugger_ppc64_PPC64ThreadContext.h" ++#endif ++ + static jfieldID p_ps_prochandle_ID = 0; + static jfieldID threadList_ID = 0; + static jfieldID loadObjectList_ID = 0; +@@ -307,6 +311,9 @@ + #if defined(sparc) || defined(sparcv9) + #define NPRGREG sun_jvm_hotspot_debugger_sparc_SPARCThreadContext_NPRGREG + #endif ++#ifdef ppc64 ++#define NPRGREG sun_jvm_hotspot_debugger_ppc64_PPC64ThreadContext_NPRGREG ++#endif + + array = (*env)->NewLongArray(env, NPRGREG); + CHECK_EXCEPTION_(0); +@@ -407,6 +414,46 @@ + regs[REG_INDEX(R_O7)] = gregs.u_regs[14]; + #endif /* sparc */ + ++#if defined(ppc64) || defined(ppc64le) ++#define REG_INDEX(reg) sun_jvm_hotspot_debugger_ppc64_PPC64ThreadContext_##reg ++ ++ regs[REG_INDEX(LR)] = gregs.lr; ++ regs[REG_INDEX(PC)] = gregs.pc; ++ regs[REG_INDEX(R0)] = gregs.fixreg[0]; ++ regs[REG_INDEX(R1)] = gregs.fixreg[1]; ++ regs[REG_INDEX(R2)] = gregs.fixreg[2]; ++ regs[REG_INDEX(R3)] = gregs.fixreg[3]; ++ regs[REG_INDEX(R4)] = gregs.fixreg[4]; ++ regs[REG_INDEX(R5)] = gregs.fixreg[5]; ++ regs[REG_INDEX(R6)] = gregs.fixreg[6]; ++ regs[REG_INDEX(R7)] = gregs.fixreg[7]; ++ regs[REG_INDEX(R8)] = gregs.fixreg[8]; ++ regs[REG_INDEX(R9)] = gregs.fixreg[9]; ++ regs[REG_INDEX(R10)] = gregs.fixreg[10]; ++ regs[REG_INDEX(R11)] = gregs.fixreg[11]; ++ regs[REG_INDEX(R12)] = gregs.fixreg[12]; ++ regs[REG_INDEX(R13)] = gregs.fixreg[13]; ++ regs[REG_INDEX(R14)] = gregs.fixreg[14]; ++ regs[REG_INDEX(R15)] = gregs.fixreg[15]; ++ regs[REG_INDEX(R16)] = gregs.fixreg[16]; ++ regs[REG_INDEX(R17)] = gregs.fixreg[17]; ++ regs[REG_INDEX(R18)] = gregs.fixreg[18]; ++ regs[REG_INDEX(R19)] = gregs.fixreg[19]; ++ regs[REG_INDEX(R20)] = gregs.fixreg[20]; ++ regs[REG_INDEX(R21)] = gregs.fixreg[21]; ++ regs[REG_INDEX(R22)] = gregs.fixreg[22]; ++ regs[REG_INDEX(R23)] = gregs.fixreg[23]; ++ regs[REG_INDEX(R24)] = gregs.fixreg[24]; ++ regs[REG_INDEX(R25)] = gregs.fixreg[25]; ++ regs[REG_INDEX(R26)] = gregs.fixreg[26]; ++ regs[REG_INDEX(R27)] = gregs.fixreg[27]; ++ regs[REG_INDEX(R28)] = gregs.fixreg[28]; ++ regs[REG_INDEX(R29)] = gregs.fixreg[29]; ++ regs[REG_INDEX(R30)] = gregs.fixreg[30]; ++ regs[REG_INDEX(R31)] = gregs.fixreg[31]; ++ ++#endif ++ + + (*env)->ReleaseLongArrayElements(env, array, regs, JNI_COMMIT); + return array; +--- ./hotspot/agent/src/os/bsd/symtab.c Thu Sep 22 12:50:50 2016 -0700 ++++ ./hotspot/agent/src/os/bsd/symtab.c Wed Dec 28 10:28:45 2016 -0800 +@@ -211,6 +211,10 @@ + + // Reading of elf header + struct elf_section *scn_cache = NULL; ++#if defined(ppc64) ++ struct elf_section *opd_sect = NULL; ++ ELF_SHDR *opd = NULL; ++#endif + int cnt = 0; + ELF_SHDR* shbuf = NULL; + ELF_SHDR* cursct = NULL; +@@ -258,6 +262,14 @@ + cursct++; + } + ++#if defined(ppc64) ++ opd_sect = find_section_by_name(".opd", fd, &ehdr, scn_cache); ++ if (opd_sect != NULL && opd_sect->c_data != NULL && opd_sect->c_shdr != NULL) { ++ // plausibility check ++ opd = opd_sect->c_shdr; ++ } ++#endif ++ + if (!symtab_found && dynsym_found) + symsection = SHT_DYNSYM; + +@@ -322,6 +334,13 @@ + symtab->symbols[j].name = sym_name; + symtab->symbols[j].offset = syms->st_value - baseaddr; + symtab->symbols[j].size = syms->st_size; ++#if defined(ppc64) ++ if (opd != NULL && *sym_name != '.' && ++ (opd->sh_addr <= syms->st_value && syms->st_value <= opd->sh_addr + opd->sh_size)) ++ symtab->symbols[j].offset = ++ ((ELF_ADDR*)opd_sect->c_data)[(syms->st_value - opd->sh_addr) / sizeof(ELF_ADDR*)] - baseaddr; ++ else ++#endif + + key.data = sym_name; + key.size = strlen(sym_name) + 1; +--- ./hotspot/agent/src/share/classes/sun/jvm/hotspot/HotSpotAgent.java Thu Sep 22 12:50:50 2016 -0700 ++++ ./hotspot/agent/src/share/classes/sun/jvm/hotspot/HotSpotAgent.java Wed Dec 28 10:28:45 2016 -0800 +@@ -33,6 +33,7 @@ + import sun.jvm.hotspot.debugger.JVMDebugger; + import sun.jvm.hotspot.debugger.MachineDescription; + import sun.jvm.hotspot.debugger.MachineDescriptionAMD64; ++import sun.jvm.hotspot.debugger.MachineDescriptionPPC64; + import sun.jvm.hotspot.debugger.MachineDescriptionIA64; + import sun.jvm.hotspot.debugger.MachineDescriptionIntelX86; + import sun.jvm.hotspot.debugger.MachineDescriptionSPARC32Bit; +@@ -588,6 +589,8 @@ + machDesc = new MachineDescriptionIA64(); + } else if (cpu.equals("amd64")) { + machDesc = new MachineDescriptionAMD64(); ++ } else if (cpu.equals("ppc64")) { ++ machDesc = new MachineDescriptionPPC64(); + } else if (cpu.equals("sparc")) { + if (LinuxDebuggerLocal.getAddressSize()==8) { + machDesc = new MachineDescriptionSPARC64Bit(); +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ ./hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/MachineDescriptionPPC64.java Wed Dec 28 10:28:45 2016 -0800 +@@ -0,0 +1,43 @@ ++/* ++ * Copyright (c) 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. ++ * ++ */ ++ ++package sun.jvm.hotspot.debugger; ++ ++public class MachineDescriptionPPC64 extends MachineDescriptionTwosComplement implements MachineDescription { ++ public long getAddressSize() { ++ return 8; ++ } ++ ++ public boolean isLP64() { ++ return true; ++ } ++ ++ public boolean isBigEndian() { ++ String endian = System.getProperty("sun.cpu.endian"); ++ if (endian.equals("big")) ++ return true; ++ else ++ return false; ++ } ++} +--- ./hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/bsd/BsdCDebugger.java Thu Sep 22 12:50:50 2016 -0700 ++++ ./hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/bsd/BsdCDebugger.java Wed Dec 28 10:28:45 2016 -0800 +@@ -30,8 +30,10 @@ + import sun.jvm.hotspot.debugger.cdbg.*; + import sun.jvm.hotspot.debugger.x86.*; + import sun.jvm.hotspot.debugger.amd64.*; ++import sun.jvm.hotspot.debugger.ppc64.*; + import sun.jvm.hotspot.debugger.bsd.x86.*; + import sun.jvm.hotspot.debugger.bsd.amd64.*; ++import sun.jvm.hotspot.debugger.bsd.ppc64.*; + import sun.jvm.hotspot.utilities.*; + + class BsdCDebugger implements CDebugger { +@@ -97,6 +99,13 @@ + Address pc = context.getRegisterAsAddress(AMD64ThreadContext.RIP); + if (pc == null) return null; + return new BsdAMD64CFrame(dbg, rbp, pc); ++ } else if (cpu.equals("ppc64")) { ++ PPC64ThreadContext context = (PPC64ThreadContext) thread.getContext(); ++ Address sp = context.getRegisterAsAddress(PPC64ThreadContext.SP); ++ if (sp == null) return null; ++ Address pc = context.getRegisterAsAddress(PPC64ThreadContext.PC); ++ if (pc == null) return null; ++ return new BsdPPC64CFrame(dbg, sp, pc, BsdDebuggerLocal.getAddressSize()); + } else { + throw new DebuggerException(cpu + " is not yet supported"); + } +--- ./hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/bsd/BsdThreadContextFactory.java Thu Sep 22 12:50:50 2016 -0700 ++++ ./hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/bsd/BsdThreadContextFactory.java Wed Dec 28 10:28:45 2016 -0800 +@@ -27,6 +27,7 @@ + import sun.jvm.hotspot.debugger.*; + import sun.jvm.hotspot.debugger.bsd.amd64.*; + import sun.jvm.hotspot.debugger.bsd.x86.*; ++import sun.jvm.hotspot.debugger.bsd.ppc64.*; + + class BsdThreadContextFactory { + static ThreadContext createThreadContext(BsdDebugger dbg) { +@@ -35,6 +36,8 @@ + return new BsdX86ThreadContext(dbg); + } else if (cpu.equals("amd64") || cpu.equals("x86_64")) { + return new BsdAMD64ThreadContext(dbg); ++ } else if (cpu.equals("ppc64")) { ++ return new BsdPPC64ThreadContext(dbg); + } else { + throw new RuntimeException("cpu " + cpu + " is not yet supported"); + } +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ ./hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/bsd/ppc64/BsdPPC64CFrame.java Wed Dec 28 10:28:45 2016 -0800 +@@ -0,0 +1,79 @@ ++/* ++ * Copyright (c) 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. ++ * ++ */ ++ ++package sun.jvm.hotspot.debugger.bsd.ppc64; ++ ++import sun.jvm.hotspot.debugger.*; ++import sun.jvm.hotspot.debugger.ppc64.*; ++import sun.jvm.hotspot.debugger.bsd.*; ++import sun.jvm.hotspot.debugger.cdbg.*; ++import sun.jvm.hotspot.debugger.cdbg.basic.*; ++ ++final public class BsdPPC64CFrame extends BasicCFrame { ++ // package/class internals only ++ ++ public BsdPPC64CFrame(BsdDebugger dbg, Address sp, Address pc, int address_size) { ++ super(dbg.getCDebugger()); ++ this.sp = sp; ++ this.pc = pc; ++ this.dbg = dbg; ++ this.address_size=address_size; ++ } ++ ++ // override base class impl to avoid ELF parsing ++ public ClosestSymbol closestSymbolToPC() { ++ // try native lookup in debugger. ++ return dbg.lookup(dbg.getAddressValue(pc())); ++ } ++ ++ public Address pc() { ++ return pc; ++ } ++ ++ public Address localVariableBase() { ++ return sp; ++ } ++ ++ public CFrame sender(ThreadProxy thread) { ++ if (sp == null) { ++ return null; ++ } ++ ++ Address nextSP = sp.getAddressAt(0); ++ if (nextSP == null) { ++ return null; ++ } ++ Address nextPC = sp.getAddressAt(2 * address_size); ++ if (nextPC == null) { ++ return null; ++ } ++ return new BsdPPC64CFrame(dbg, nextSP, nextPC, address_size); ++ } ++ ++ public static int PPC64_STACK_BIAS = 0; ++ private static int address_size; ++ private Address pc; ++ private Address sp; ++ private BsdDebugger dbg; ++} +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ ./hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/bsd/ppc64/BsdPPC64ThreadContext.java Wed Dec 28 10:28:45 2016 -0800 +@@ -0,0 +1,46 @@ ++/* ++ * Copyright (c) 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. ++ * ++ */ ++ ++package sun.jvm.hotspot.debugger.bsd.ppc64; ++ ++import sun.jvm.hotspot.debugger.*; ++import sun.jvm.hotspot.debugger.ppc64.*; ++import sun.jvm.hotspot.debugger.bsd.*; ++ ++public class BsdPPC64ThreadContext extends PPC64ThreadContext { ++ private BsdDebugger debugger; ++ ++ public BsdPPC64ThreadContext(BsdDebugger debugger) { ++ super(); ++ this.debugger = debugger; ++ } ++ ++ public void setRegisterAsAddress(int index, Address value) { ++ setRegister(index, debugger.getAddressValue(value)); ++ } ++ ++ public Address getRegisterAsAddress(int index) { ++ return debugger.newAddress(getRegister(index)); ++ } ++} +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ ./hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/ppc64/PPC64ThreadContext.java Wed Dec 28 10:28:45 2016 -0800 +@@ -0,0 +1,123 @@ ++/* ++ * Copyright (c) 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. ++ * ++ */ ++ ++package sun.jvm.hotspot.debugger.ppc64; ++ ++import sun.jvm.hotspot.debugger.*; ++import sun.jvm.hotspot.debugger.cdbg.*; ++ ++/** Specifies the thread context on ppc64 platforms; only a sub-portion ++ * of the context is guaranteed to be present on all operating ++ * systems. */ ++ ++public abstract class PPC64ThreadContext implements ThreadContext { ++ ++ // NOTE: The indices for the various registers must be maintained as ++ // listed across various operating systems. However, only a small ++ // subset of the registers' values are guaranteed to be present (and ++ // must be present for the SA's stack walking to work). ++ ++ public static final int R31 = 0; ++ public static final int R30 = 1; ++ public static final int R29 = 2; ++ public static final int R28 = 3; ++ public static final int R27 = 4; ++ public static final int R26 = 5; ++ public static final int R25 = 6; ++ public static final int R24 = 7; ++ public static final int R23 = 8; ++ public static final int R22 = 9; ++ public static final int R21 = 10; ++ public static final int R20 = 11; ++ public static final int R19 = 12; ++ public static final int R18 = 13; ++ public static final int R17 = 14; ++ public static final int R16 = 15; ++ public static final int R15 = 16; ++ public static final int R14 = 17; ++ public static final int R13 = 18; ++ public static final int R12 = 19; ++ public static final int R11 = 20; ++ public static final int R10 = 21; ++ public static final int R9 = 22; ++ public static final int R8 = 23; ++ public static final int R7 = 24; ++ public static final int R6 = 25; ++ public static final int R5 = 26; ++ public static final int R4 = 27; ++ public static final int R3 = 28; ++ public static final int R2 = 29; ++ public static final int R1 = 30; ++ public static final int R0 = 31; ++ public static final int NIP = 32; ++ public static final int LR = 33; ++ ++ public static final int NPRGREG = 34; ++ ++ private static final String[] regNames = { ++ "r31", "r30", "r29", "r28", "r27", "r26", "r25", "r24", ++ "r23", "r22", "r21", "r20", "r19", "r18", "r17", "r16", ++ "r15", "r14", "r13", "r12", "r11", "r10", "r9", "r8", ++ "r7", "r6", "r5", "r4", "r3", "r2", "r1", "r0", ++ "nip", "link" ++ }; ++ ++ public static final int PC = NIP; ++ public static final int SP = R1; ++ ++ private long[] data; ++ ++ public PPC64ThreadContext() { ++ data = new long[NPRGREG]; ++ } ++ ++ public int getNumRegisters() { ++ return NPRGREG; ++ } ++ ++ public String getRegisterName(int index) { ++ return regNames[index]; ++ } ++ ++ public void setRegister(int index, long value) { ++ data[index] = value; ++ } ++ ++ public long getRegister(int index) { ++ return data[index]; ++ } ++ ++ public CFrame getTopFrame(Debugger dbg) { ++ return null; ++ } ++ ++ /** This can't be implemented in this class since we would have to ++ * tie the implementation to, for example, the debugging system */ ++ public abstract void setRegisterAsAddress(int index, Address value); ++ ++ /** This can't be implemented in this class since we would have to ++ * tie the implementation to, for example, the debugging system */ ++ public abstract Address getRegisterAsAddress(int index); ++ ++} +--- ./hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/proc/ProcDebuggerLocal.java Thu Sep 22 12:50:50 2016 -0700 ++++ ./hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/proc/ProcDebuggerLocal.java Wed Dec 28 10:28:45 2016 -0800 +@@ -32,7 +32,9 @@ + import sun.jvm.hotspot.debugger.cdbg.*; + import sun.jvm.hotspot.debugger.proc.amd64.*; + import sun.jvm.hotspot.debugger.proc.sparc.*; ++import sun.jvm.hotspot.debugger.proc.ppc64.*; + import sun.jvm.hotspot.debugger.proc.x86.*; ++import sun.jvm.hotspot.debugger.ppc64.*; + import sun.jvm.hotspot.debugger.amd64.*; + import sun.jvm.hotspot.debugger.sparc.*; + import sun.jvm.hotspot.debugger.x86.*; +@@ -86,6 +88,10 @@ + threadFactory = new ProcAMD64ThreadFactory(this); + pcRegIndex = AMD64ThreadContext.RIP; + fpRegIndex = AMD64ThreadContext.RBP; ++ } else if (cpu.equals("ppc64")) { ++ threadFactory = new ProcPPC64ThreadFactory(this); ++ pcRegIndex = PPC64ThreadContext.PC; ++ fpRegIndex = PPC64ThreadContext.SP; + } else { + try { + Class tfc = Class.forName("sun.jvm.hotspot.debugger.proc." + +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ ./hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/proc/ppc64/ProcPPC64Thread.java Wed Dec 28 10:28:45 2016 -0800 +@@ -0,0 +1,86 @@ ++/* ++ * Copyright (c) 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. ++ * ++ */ ++ ++package sun.jvm.hotspot.debugger.proc.ppc64; ++ ++import sun.jvm.hotspot.debugger.*; ++import sun.jvm.hotspot.debugger.ppc64.*; ++import sun.jvm.hotspot.debugger.proc.*; ++import sun.jvm.hotspot.utilities.*; ++ ++public class ProcPPC64Thread implements ThreadProxy { ++ private ProcDebugger debugger; ++ private int id; ++ ++ public ProcPPC64Thread(ProcDebugger debugger, Address addr) { ++ this.debugger = debugger; ++ ++ // FIXME: the size here should be configurable. However, making it ++ // so would produce a dependency on the "types" package from the ++ // debugger package, which is not desired. ++ this.id = (int) addr.getCIntegerAt(0, 4, true); ++ } ++ ++ public ProcPPC64Thread(ProcDebugger debugger, long id) { ++ this.debugger = debugger; ++ this.id = (int) id; ++ } ++ ++ public ThreadContext getContext() throws IllegalThreadStateException { ++ ProcPPC64ThreadContext context = new ProcPPC64ThreadContext(debugger); ++ long[] regs = debugger.getThreadIntegerRegisterSet(id); ++ if (Assert.ASSERTS_ENABLED) { ++ Assert.that(regs.length <= PPC64ThreadContext.NPRGREG, "size of register set is greater than " + PPC64ThreadContext.NPRGREG); ++ } ++ for (int i = 0; i < regs.length; i++) { ++ context.setRegister(i, regs[i]); ++ } ++ return context; ++ } ++ ++ public boolean canSetContext() throws DebuggerException { ++ return false; ++ } ++ ++ public void setContext(ThreadContext context) ++ throws IllegalThreadStateException, DebuggerException { ++ throw new DebuggerException("Unimplemented"); ++ } ++ ++ public String toString() { ++ return "t@" + id; ++ } ++ ++ public boolean equals(Object obj) { ++ if ((obj == null) || !(obj instanceof ProcPPC64Thread)) { ++ return false; ++ } ++ ++ return (((ProcPPC64Thread) obj).id == id); ++ } ++ ++ public int hashCode() { ++ return id; ++ } ++} +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ ./hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/proc/ppc64/ProcPPC64ThreadContext.java Wed Dec 28 10:28:45 2016 -0800 +@@ -0,0 +1,46 @@ ++/* ++ * Copyright (c) 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. ++ * ++ */ ++ ++package sun.jvm.hotspot.debugger.proc.ppc64; ++ ++import sun.jvm.hotspot.debugger.*; ++import sun.jvm.hotspot.debugger.ppc64.*; ++import sun.jvm.hotspot.debugger.proc.*; ++ ++public class ProcPPC64ThreadContext extends PPC64ThreadContext { ++ private ProcDebugger debugger; ++ ++ public ProcPPC64ThreadContext(ProcDebugger debugger) { ++ super(); ++ this.debugger = debugger; ++ } ++ ++ public void setRegisterAsAddress(int index, Address value) { ++ setRegister(index, debugger.getAddressValue(value)); ++ } ++ ++ public Address getRegisterAsAddress(int index) { ++ return debugger.newAddress(getRegister(index)); ++ } ++} +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ ./hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/proc/ppc64/ProcPPC64ThreadFactory.java Wed Dec 28 10:28:45 2016 -0800 +@@ -0,0 +1,44 @@ ++/* ++ * Copyright (c) 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. ++ * ++ */ ++ ++package sun.jvm.hotspot.debugger.proc.ppc64; ++ ++import sun.jvm.hotspot.debugger.*; ++import sun.jvm.hotspot.debugger.proc.*; ++ ++public class ProcPPC64ThreadFactory implements ProcThreadFactory { ++ private ProcDebugger debugger; ++ ++ public ProcPPC64ThreadFactory(ProcDebugger debugger) { ++ this.debugger = debugger; ++ } ++ ++ public ThreadProxy createThreadWrapper(Address threadIdentifierAddr) { ++ return new ProcPPC64Thread(debugger, threadIdentifierAddr); ++ } ++ ++ public ThreadProxy createThreadWrapper(long id) { ++ return new ProcPPC64Thread(debugger, id); ++ } ++} +--- ./hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/remote/RemoteDebuggerClient.java Thu Sep 22 12:50:50 2016 -0700 ++++ ./hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/remote/RemoteDebuggerClient.java Wed Dec 28 10:28:45 2016 -0800 +@@ -33,6 +33,7 @@ + import sun.jvm.hotspot.debugger.remote.sparc.*; + import sun.jvm.hotspot.debugger.remote.x86.*; + import sun.jvm.hotspot.debugger.remote.amd64.*; ++import sun.jvm.hotspot.debugger.remote.ppc64.*; + + /** An implementation of Debugger which wraps a + RemoteDebugger, providing remote debugging via RMI. +@@ -70,6 +71,11 @@ + cachePageSize = 4096; + cacheNumPages = parseCacheNumPagesProperty(cacheSize / cachePageSize); + unalignedAccessesOkay = true; ++ } else if (cpu.equals("ppc64")) { ++ threadFactory = new RemotePPC64ThreadFactory(this); ++ cachePageSize = 4096; ++ cacheNumPages = parseCacheNumPagesProperty(cacheSize / cachePageSize); ++ unalignedAccessesOkay = true; + } else { + try { + Class tf = Class.forName("sun.jvm.hotspot.debugger.remote." + +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ ./hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/remote/ppc64/RemotePPC64Thread.java Wed Dec 28 10:28:45 2016 -0800 +@@ -0,0 +1,53 @@ ++/* ++ * Copyright (c) 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. ++ * ++ */ ++ ++package sun.jvm.hotspot.debugger.remote.ppc64; ++ ++import sun.jvm.hotspot.debugger.*; ++import sun.jvm.hotspot.debugger.ppc64.*; ++import sun.jvm.hotspot.debugger.remote.*; ++import sun.jvm.hotspot.utilities.*; ++ ++public class RemotePPC64Thread extends RemoteThread { ++ public RemotePPC64Thread(RemoteDebuggerClient debugger, Address addr) { ++ super(debugger, addr); ++ } ++ ++ public RemotePPC64Thread(RemoteDebuggerClient debugger, long id) { ++ super(debugger, id); ++ } ++ ++ public ThreadContext getContext() throws IllegalThreadStateException { ++ RemotePPC64ThreadContext context = new RemotePPC64ThreadContext(debugger); ++ long[] regs = (addr != null)? debugger.getThreadIntegerRegisterSet(addr) : ++ debugger.getThreadIntegerRegisterSet(id); ++ if (Assert.ASSERTS_ENABLED) { ++ Assert.that(regs.length == PPC64ThreadContext.NPRGREG, "size of register set must match"); ++ } ++ for (int i = 0; i < regs.length; i++) { ++ context.setRegister(i, regs[i]); ++ } ++ return context; ++ } ++} +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ ./hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/remote/ppc64/RemotePPC64ThreadContext.java Wed Dec 28 10:28:45 2016 -0800 +@@ -0,0 +1,50 @@ ++/* ++ * Copyright (c) 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. ++ * ++ */ ++ ++package sun.jvm.hotspot.debugger.remote.ppc64; ++ ++import sun.jvm.hotspot.debugger.*; ++import sun.jvm.hotspot.debugger.ppc64.*; ++import sun.jvm.hotspot.debugger.remote.*; ++ ++public class RemotePPC64ThreadContext extends PPC64ThreadContext { ++ private RemoteDebuggerClient debugger; ++ ++ public RemotePPC64ThreadContext(RemoteDebuggerClient debugger) { ++ super(); ++ this.debugger = debugger; ++ } ++ ++ /** This can't be implemented in this class since we would have to ++ tie the implementation to, for example, the debugging system */ ++ public void setRegisterAsAddress(int index, Address value) { ++ setRegister(index, debugger.getAddressValue(value)); ++ } ++ ++ /** This can't be implemented in this class since we would have to ++ tie the implementation to, for example, the debugging system */ ++ public Address getRegisterAsAddress(int index) { ++ return debugger.newAddress(getRegister(index)); ++ } ++} +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ ./hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/remote/ppc64/RemotePPC64ThreadFactory.java Wed Dec 28 10:28:45 2016 -0800 +@@ -0,0 +1,44 @@ ++/* ++ * Copyright (c) 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. ++ * ++ */ ++ ++package sun.jvm.hotspot.debugger.remote.ppc64; ++ ++import sun.jvm.hotspot.debugger.*; ++import sun.jvm.hotspot.debugger.remote.*; ++ ++public class RemotePPC64ThreadFactory implements RemoteThreadFactory { ++ private RemoteDebuggerClient debugger; ++ ++ public RemotePPC64ThreadFactory(RemoteDebuggerClient debugger) { ++ this.debugger = debugger; ++ } ++ ++ public ThreadProxy createThreadWrapper(Address threadIdentifierAddr) { ++ return new RemotePPC64Thread(debugger, threadIdentifierAddr); ++ } ++ ++ public ThreadProxy createThreadWrapper(long id) { ++ return new RemotePPC64Thread(debugger, id); ++ } ++} +--- ./hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/Threads.java Thu Sep 22 12:50:50 2016 -0700 ++++ ./hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/Threads.java Wed Dec 28 10:28:45 2016 -0800 +@@ -37,6 +37,7 @@ + import sun.jvm.hotspot.runtime.linux_sparc.LinuxSPARCJavaThreadPDAccess; + import sun.jvm.hotspot.runtime.bsd_x86.BsdX86JavaThreadPDAccess; + import sun.jvm.hotspot.runtime.bsd_amd64.BsdAMD64JavaThreadPDAccess; ++import sun.jvm.hotspot.runtime.bsd_ppc64.BsdPPC64JavaThreadPDAccess; + import sun.jvm.hotspot.utilities.*; + + public class Threads { +@@ -103,6 +104,8 @@ + access = new BsdX86JavaThreadPDAccess(); + } else if (cpu.equals("amd64") || cpu.equals("x86_64")) { + access = new BsdAMD64JavaThreadPDAccess(); ++ } else if (cpu.equals("ppc64")) { ++ access = new BsdPPC64JavaThreadPDAccess(); + } + } else if (os.equals("darwin")) { + if (cpu.equals("amd64") || cpu.equals("x86_64")) { +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ ./hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/bsd_ppc64/BsdPPC64JavaThreadPDAccess.java Wed Dec 28 10:28:45 2016 -0800 +@@ -0,0 +1,132 @@ ++/* ++ * Copyright (c) 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. ++ * ++ */ ++ ++package sun.jvm.hotspot.runtime.bsd_ppc64; ++ ++import java.io.*; ++import java.util.*; ++ ++import sun.jvm.hotspot.debugger.*; ++import sun.jvm.hotspot.debugger.ppc64.*; ++import sun.jvm.hotspot.runtime.*; ++import sun.jvm.hotspot.runtime.ppc64.*; ++import sun.jvm.hotspot.types.*; ++import sun.jvm.hotspot.utilities.*; ++ ++public class BsdPPC64JavaThreadPDAccess implements JavaThreadPDAccess { ++ private static AddressField osThreadField; ++ ++ // Field from OSThread ++ private static CIntegerField osThreadThreadIDField; ++ ++ // This is currently unneeded but is being kept in case we change ++ // the currentFrameGuess algorithm ++ private static final long GUESS_SCAN_RANGE = 128 * 1024; ++ ++ static { ++ VM.registerVMInitializedObserver(new Observer() { ++ public void update(Observable o, Object data) { ++ initialize(VM.getVM().getTypeDataBase()); ++ } ++ }); ++ } ++ ++ private static synchronized void initialize(TypeDataBase db) { ++ Type type = db.lookupType("JavaThread"); ++ osThreadField = type.getAddressField("_osthread"); ++ ++ Type osThreadType = db.lookupType("OSThread"); ++ osThreadThreadIDField = osThreadType.getCIntegerField("_thread_id"); ++ } ++ ++ public Address getLastJavaFP(Address addr) { ++ return null; ++ } ++ ++ public Address getLastJavaPC(Address addr) { ++ return null; ++ } ++ ++ public Address getBaseOfStackPointer(Address addr) { ++ return null; ++ } ++ ++ public Frame getLastFramePD(JavaThread thread, Address addr) { ++ Address fp = thread.getLastJavaFP(); ++ if (fp == null) { ++ return null; // no information ++ } ++ return new PPC64Frame(thread.getLastJavaSP(), fp); ++ } ++ ++ public RegisterMap newRegisterMap(JavaThread thread, boolean updateMap) { ++ return new PPC64RegisterMap(thread, updateMap); ++ } ++ ++ public Frame getCurrentFrameGuess(JavaThread thread, Address addr) { ++ ThreadProxy t = getThreadProxy(addr); ++ PPC64ThreadContext context = (PPC64ThreadContext) t.getContext(); ++ PPC64CurrentFrameGuess guesser = new PPC64CurrentFrameGuess(context, thread); ++ if (!guesser.run(GUESS_SCAN_RANGE)) { ++ return null; ++ } ++ if (guesser.getPC() == null) { ++ return new PPC64Frame(guesser.getSP(), guesser.getFP()); ++ } else { ++ return new PPC64Frame(guesser.getSP(), guesser.getFP(), guesser.getPC()); ++ } ++ } ++ ++ public void printThreadIDOn(Address addr, PrintStream tty) { ++ tty.print(getThreadProxy(addr)); ++ } ++ ++ public void printInfoOn(Address threadAddr, PrintStream tty) { ++ tty.print("Thread id: "); ++ printThreadIDOn(threadAddr, tty); ++// tty.println("\nPostJavaState: " + getPostJavaState(threadAddr)); ++ } ++ ++ public Address getLastSP(Address addr) { ++ ThreadProxy t = getThreadProxy(addr); ++ PPC64ThreadContext context = (PPC64ThreadContext) t.getContext(); ++ return context.getRegisterAsAddress(PPC64ThreadContext.SP); ++ } ++ ++ public Address getLastFP(Address addr) { ++ return getLastSP(addr).getAddressAt(0); ++ } ++ ++ public ThreadProxy getThreadProxy(Address addr) { ++ // Addr is the address of the JavaThread. ++ // Fetch the OSThread (for now and for simplicity, not making a ++ // separate "OSThread" class in this package) ++ Address osThreadAddr = osThreadField.getValue(addr); ++ // Get the address of the _thread_id from the OSThread ++ Address threadIdAddr = osThreadAddr.addOffsetTo(osThreadThreadIDField.getOffset()); ++ ++ JVMDebugger debugger = VM.getVM().getDebugger(); ++ return debugger.getThreadForIdentifierAddress(threadIdAddr); ++ } ++} +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ ./hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/ppc64/PPC64CurrentFrameGuess.java Wed Dec 28 10:28:45 2016 -0800 +@@ -0,0 +1,176 @@ ++/* ++ * Copyright (c) 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. ++ * ++ */ ++ ++package sun.jvm.hotspot.runtime.ppc64; ++ ++import sun.jvm.hotspot.debugger.*; ++import sun.jvm.hotspot.debugger.ppc64.*; ++import sun.jvm.hotspot.code.*; ++import sun.jvm.hotspot.interpreter.*; ++import sun.jvm.hotspot.runtime.*; ++import sun.jvm.hotspot.runtime.ppc64.*; ++ ++/** <P> Should be able to be used on all ppc64 platforms we support ++ (Linux/ppc64) to implement JavaThread's "currentFrameGuess()" ++ functionality. Input is a PPC64ThreadContext; output is SP, FP, ++ and PC for an PPC64Frame. Instantiation of the PPC64Frame is left ++ to the caller, since we may need to subclass PPC64Frame to support ++ signal handler frames on Unix platforms. </P> ++ */ ++ ++public class PPC64CurrentFrameGuess { ++ private PPC64ThreadContext context; ++ private JavaThread thread; ++ private Address spFound; ++ private Address fpFound; ++ private Address pcFound; ++ ++ private static final boolean DEBUG = System.getProperty("sun.jvm.hotspot.runtime.ppc64.PPC64Frame.DEBUG") ++ != null; ++ ++ public PPC64CurrentFrameGuess(PPC64ThreadContext context, ++ JavaThread thread) { ++ this.context = context; ++ this.thread = thread; ++ } ++ ++ /** Returns false if not able to find a frame within a reasonable range. */ ++ public boolean run(long regionInBytesToSearch) { ++ Address sp = context.getRegisterAsAddress(PPC64ThreadContext.SP); ++ Address pc = context.getRegisterAsAddress(PPC64ThreadContext.PC); ++ if (sp == null) { ++ // Bail out if no last java frame either ++ if (thread.getLastJavaSP() != null) { ++ Address javaSP = thread.getLastJavaSP(); ++ Address javaFP = javaSP.getAddressAt(0); ++ setValues(javaSP, javaFP, null); ++ return true; ++ } ++ return false; ++ } ++ /* There is no frame pointer per se for the ppc64 architecture. To mirror ++ * the behavior of the VM frame manager, we set fp to be the caller's (i.e., "sender's") ++ * stack pointer, which is the back chain value contained in our sp. ++ */ ++ Address fp = sp.getAddressAt(0); ++ setValues(null, null, null); // Assume we're not going to find anything ++ ++ VM vm = VM.getVM(); ++ if (vm.isJavaPCDbg(pc)) { ++ if (vm.isClientCompiler()) { ++ // Topmost frame is a Java frame. ++ if (DEBUG) { ++ System.out.println("CurrentFrameGuess: choosing compiler frame: sp = " + ++ sp + ", fp = " + fp + ", pc = " + pc); ++ } ++ setValues(sp, fp, pc); ++ return true; ++ } else { ++ if (vm.getInterpreter().contains(pc)) { ++ if (DEBUG) { ++ System.out.println("CurrentFrameGuess: choosing interpreter frame: sp = " + ++ sp + ", fp = " + fp + ", pc = " + pc); ++ } ++ setValues(sp, fp, pc); ++ return true; ++ } ++ ++ // This algorithm takes the current PC as a given and tries to ++ // find the correct corresponding SP by walking up the stack ++ // and repeatedly performing stackwalks (very inefficient). ++ for (long offset = 0; ++ offset < regionInBytesToSearch; ++ offset += vm.getAddressSize()) { ++ try { ++ Address curSP = sp.addOffsetTo(offset); ++ fp = curSP.getAddressAt(0); ++ Frame frame = new PPC64Frame(curSP, fp, pc); ++ RegisterMap map = thread.newRegisterMap(false); ++ while (frame != null) { ++ if (frame.isEntryFrame() && frame.entryFrameIsFirst()) { ++ // We were able to traverse all the way to the ++ // bottommost Java frame. ++ // This sp looks good. Keep it. ++ if (DEBUG) { ++ System.out.println("CurrentFrameGuess: Choosing sp = " + curSP + ", pc = " + pc); ++ } ++ setValues(curSP, fp, pc); ++ return true; ++ } ++ frame = frame.sender(map); ++ } ++ } catch (Exception e) { ++ if (DEBUG) { ++ System.out.println("CurrentFrameGuess: Exception " + e + " at offset " + offset); ++ } ++ // Bad SP. Try another. ++ } ++ } ++ ++ // Were not able to find a plausible SP to go with this PC. ++ // Bail out. ++ return false; ++ ++ } ++ } else { ++ // If the current program counter was not known to us as a Java ++ // PC, we currently assume that we are in the run-time system ++ // and attempt to look to thread-local storage for saved java SP. ++ // Note that if this is null (because we were, in fact, ++ // in Java code, i.e., vtable stubs or similar, and the SA ++ // didn't have enough insight into the target VM to understand ++ // that) then we are going to lose the entire stack trace for ++ // the thread, which is sub-optimal. FIXME. ++ ++ if (thread.getLastJavaSP() == null) { ++ if (DEBUG) ++ System.out.println("CurrentFrameGuess: last java sp is null"); ++ return false; // No known Java frames on stack ++ } ++ ++ Address javaSP = thread.getLastJavaSP(); ++ Address javaFP = javaSP.getAddressAt(0); ++ Address javaPC = thread.getLastJavaPC(); ++ if (DEBUG) { ++ System.out.println("CurrentFrameGuess: choosing last Java frame: sp = " + ++ javaSP + ", fp = " + javaFP + ", pc = " + javaPC); ++ } ++ setValues(javaSP, javaFP, javaPC); ++ return true; ++ } ++ } ++ ++ public Address getSP() { return spFound; } ++ public Address getFP() { return fpFound; } ++ /** May be null if getting values from thread-local storage; take ++ care to call the correct PPC64Frame constructor to recover this if ++ necessary */ ++ public Address getPC() { return pcFound; } ++ ++ private void setValues(Address sp, Address fp, Address pc) { ++ spFound = sp; ++ fpFound = fp; ++ pcFound = pc; ++ } ++} +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ ./hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/ppc64/PPC64Frame.java Wed Dec 28 10:28:45 2016 -0800 +@@ -0,0 +1,508 @@ ++/* ++ * Copyright (c) 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. ++ * ++ */ ++ ++package sun.jvm.hotspot.runtime.ppc64; ++ ++import java.util.*; ++import sun.jvm.hotspot.code.*; ++import sun.jvm.hotspot.compiler.*; ++import sun.jvm.hotspot.debugger.*; ++import sun.jvm.hotspot.oops.*; ++import sun.jvm.hotspot.runtime.*; ++import sun.jvm.hotspot.types.*; ++import sun.jvm.hotspot.utilities.*; ++ ++/** Specialization of and implementation of abstract methods of the ++ Frame class for the ppc64 family of CPUs. */ ++ ++public class PPC64Frame extends Frame { ++ private static final boolean DEBUG; ++ static { ++ DEBUG = System.getProperty("sun.jvm.hotspot.runtime.ppc64.PPC64Frame.DEBUG") != null; ++ } ++ ++ // All frames ++ private static final int SENDER_SP_OFFSET = 0; ++ ++ // Interpreter frames ++ private static final int INTERPRETER_FRAME_MIRROR_OFFSET = -3; // for native calls only ++ private static final int INTERPRETER_FRAME_SENDER_SP_OFFSET = -4; ++ private static final int INTERPRETER_FRAME_LAST_SP_OFFSET = INTERPRETER_FRAME_SENDER_SP_OFFSET - 1; ++ private static final int INTERPRETER_FRAME_MDX_OFFSET = INTERPRETER_FRAME_LAST_SP_OFFSET -1; ++ private static final int INTERPRETER_FRAME_ESP_OFFSET = INTERPRETER_FRAME_MDX_OFFSET - 1; ++ private static final int INTERPRETER_FRAME_BCX_OFFSET = INTERPRETER_FRAME_ESP_OFFSET - 1; ++ private static final int INTERPRETER_FRAME_CACHE_OFFSET =INTERPRETER_FRAME_BCX_OFFSET - 1; ++ private static final int INTERPRETER_FRAME_MONITORS_OFFSET = INTERPRETER_FRAME_CACHE_OFFSET - 1; ++ private static final int INTERPRETER_FRAME_LOCALS_OFFSET = INTERPRETER_FRAME_MONITORS_OFFSET - 1; ++ private static final int INTERPRETER_FRAME_METHOD_OFFSET = INTERPRETER_FRAME_LOCALS_OFFSET - 1; ++ private static final int INTERPRETER_FRAME_INITIAL_SP_OFFSET = INTERPRETER_FRAME_BCX_OFFSET - 1; // FIXME: probably wrong, but unused anyway ++ private static final int INTERPRETER_FRAME_MONITOR_BLOCK_TOP_OFFSET = INTERPRETER_FRAME_INITIAL_SP_OFFSET; ++ private static final int INTERPRETER_FRAME_MONITOR_BLOCK_BOTTOM_OFFSET = INTERPRETER_FRAME_INITIAL_SP_OFFSET; ++ ++ // Entry frames ++ private static int ENTRY_FRAME_CALL_WRAPPER_OFFSET; ++ ++ // Native frames ++ private static int NATIVE_FRAME_INITIAL_PARAM_OFFSET; ++ ++ ++ static { ++ VM.registerVMInitializedObserver(new Observer() { ++ public void update(Observable o, Object data) { ++ initialize(VM.getVM().getTypeDataBase()); ++ } ++ }); ++ } ++ ++ private static synchronized void initialize(TypeDataBase db) { ++ int abi_minframe_size = db.lookupIntConstant("frame::abi_minframe_size").intValue(); ++ int entry_frame_locals_size = db.lookupIntConstant("frame::entry_frame_locals_size").intValue(); ++ int wordLength = (int)VM.getVM().getAddressSize(); ++ NATIVE_FRAME_INITIAL_PARAM_OFFSET = -abi_minframe_size/wordLength; ++ ENTRY_FRAME_CALL_WRAPPER_OFFSET = -entry_frame_locals_size/wordLength; ++ } ++ ++ ++ // an additional field beyond sp and pc: ++ Address raw_fp; // frame pointer ++ private Address raw_unextendedSP; ++ ++ private PPC64Frame() { ++ } ++ ++ private void adjustForDeopt() { ++ if ( pc != null) { ++ // Look for a deopt pc and if it is deopted convert to original pc ++ CodeBlob cb = VM.getVM().getCodeCache().findBlob(pc); ++ if (cb != null && cb.isJavaMethod()) { ++ NMethod nm = (NMethod) cb; ++ if (pc.equals(nm.deoptHandlerBegin())) { ++ if (Assert.ASSERTS_ENABLED) { ++ Assert.that(this.getUnextendedSP() != null, "null SP in Java frame"); ++ } ++ // adjust pc if frame is deoptimized. ++ pc = this.getUnextendedSP().getAddressAt(nm.origPCOffset()); ++ deoptimized = true; ++ } ++ } ++ } ++ } ++ ++ public PPC64Frame(Address raw_sp, Address raw_fp, Address pc) { ++ this.raw_sp = raw_sp; ++ this.raw_unextendedSP = raw_sp; ++ if (raw_fp == null) ++ this.raw_fp = raw_sp.getAddressAt(0); ++ else ++ this.raw_fp = raw_fp; ++ if (pc == null) ++ this.pc = raw_sp.getAddressAt(2 * VM.getVM().getAddressSize()); ++ else ++ this.pc = pc; ++ adjustUnextendedSP(); ++ ++ // Frame must be fully constructed before this call ++ adjustForDeopt(); ++ ++ if (DEBUG) { ++ System.out.println("PPC64Frame(sp, fp, pc): " + this); ++ dumpStack(); ++ } ++ } ++ ++ public PPC64Frame(Address raw_sp, Address raw_fp) { ++ this.raw_sp = raw_sp; ++ this.raw_unextendedSP = raw_sp; ++ if (raw_fp == null) ++ this.raw_fp = raw_sp.getAddressAt(0); ++ else ++ this.raw_fp = raw_fp; ++ this.pc = raw_sp.getAddressAt(2 * VM.getVM().getAddressSize()); ++ adjustUnextendedSP(); ++ ++ // Frame must be fully constructed before this call ++ adjustForDeopt(); ++ ++ if (DEBUG) { ++ System.out.println("PPC64Frame(sp, fp): " + this); ++ dumpStack(); ++ } ++ } ++ ++ public PPC64Frame(Address raw_sp, Address raw_unextendedSp, Address raw_fp, Address pc) { ++ this.raw_sp = raw_sp; ++ this.raw_unextendedSP = raw_unextendedSp; ++ if (raw_fp == null) ++ this.raw_fp = raw_sp.getAddressAt(0); ++ else ++ this.raw_fp = raw_fp; ++ if (pc == null) ++ this.pc = raw_sp.getAddressAt(2 * VM.getVM().getAddressSize()); ++ else ++ this.pc = pc; ++ adjustUnextendedSP(); ++ ++ // Frame must be fully constructed before this call ++ adjustForDeopt(); ++ ++ if (DEBUG) { ++ System.out.println("PPC64Frame(sp, unextendedSP, fp, pc): " + this); ++ dumpStack(); ++ } ++ ++ } ++ ++ public Object clone() { ++ PPC64Frame frame = new PPC64Frame(); ++ frame.raw_sp = raw_sp; ++ frame.raw_unextendedSP = raw_unextendedSP; ++ frame.raw_fp = raw_fp; ++ frame.pc = pc; ++ frame.deoptimized = deoptimized; ++ return frame; ++ } ++ ++ public boolean equals(Object arg) { ++ if (arg == null) { ++ return false; ++ } ++ ++ if (!(arg instanceof PPC64Frame)) { ++ return false; ++ } ++ ++ PPC64Frame other = (PPC64Frame) arg; ++ ++ return (AddressOps.equal(getSP(), other.getSP()) && ++ AddressOps.equal(getUnextendedSP(), other.getUnextendedSP()) && ++ AddressOps.equal(getFP(), other.getFP()) && ++ AddressOps.equal(getPC(), other.getPC())); ++ } ++ ++ public int hashCode() { ++ if (raw_sp == null) { ++ return 0; ++ } ++ ++ return raw_sp.hashCode(); ++ } ++ ++ public String toString() { ++ return "sp: " + (getSP() == null? "null" : getSP().toString()) + ++ ", unextendedSP: " + (getUnextendedSP() == null? "null" : getUnextendedSP().toString()) + ++ ", fp: " + (getFP() == null? "null" : getFP().toString()) + ++ ", pc: " + (pc == null? "null" : pc.toString()); ++ } ++ ++ // accessors for the instance variables ++ public Address getFP() { return raw_fp; } ++ public Address getSP() { return raw_sp; } ++ public Address getID() { return raw_sp; } ++ ++ // FIXME: not implemented yet (should be done for Solaris/PPC64) ++ public boolean isSignalHandlerFrameDbg() { return false; } ++ public int getSignalNumberDbg() { return 0; } ++ public String getSignalNameDbg() { return null; } ++ ++ public boolean isInterpretedFrameValid() { ++ if (Assert.ASSERTS_ENABLED) { ++ Assert.that(isInterpretedFrame(), "Not an interpreted frame"); ++ } ++ ++ // These are reasonable sanity checks ++ if (getFP() == null || getFP().andWithMask(0x3) != null) { ++ return false; ++ } ++ ++ if (getSP() == null || getSP().andWithMask(0x3) != null) { ++ return false; ++ } ++ ++ // These are hacks to keep us out of trouble. ++ // The problem with these is that they mask other problems ++ if (getFP().lessThanOrEqual(getSP())) { ++ // this attempts to deal with unsigned comparison above ++ return false; ++ } ++ ++ if (getFP().minus(getSP()) > 4096 * VM.getVM().getAddressSize()) { ++ // stack frames shouldn't be large. ++ return false; ++ } ++ ++ return true; ++ } ++ ++ // FIXME: not applicable in current system ++ // void patch_pc(Thread* thread, address pc); ++ ++ public Frame sender(RegisterMap regMap, CodeBlob cb) { ++ PPC64RegisterMap map = (PPC64RegisterMap) regMap; ++ ++ if (Assert.ASSERTS_ENABLED) { ++ Assert.that(map != null, "map must be set"); ++ } ++ ++ // Default is we done have to follow them. The sender_for_xxx will ++ // update it accordingly ++ map.setIncludeArgumentOops(false); ++ ++ if (isEntryFrame()) return senderForEntryFrame(map); ++ if (isInterpretedFrame()) return senderForInterpreterFrame(map); ++ ++ if(cb == null) { ++ cb = VM.getVM().getCodeCache().findBlob(getPC()); ++ } else { ++ if (Assert.ASSERTS_ENABLED) { ++ Assert.that(cb.equals(VM.getVM().getCodeCache().findBlob(getPC())), "Must be the same"); ++ } ++ } ++ ++ if (cb != null) { ++ return senderForCompiledFrame(map, cb); ++ } ++ ++ // Must be native-compiled frame, i.e. the marshaling code for native ++ // methods that exists in the core system. ++ return new PPC64Frame(getSenderSP(), getLink(), getSenderPC()); ++ } ++ ++ private Frame senderForEntryFrame(PPC64RegisterMap map) { ++ if (DEBUG) { ++ System.out.println("senderForEntryFrame"); ++ } ++ if (Assert.ASSERTS_ENABLED) { ++ Assert.that(map != null, "map must be set"); ++ } ++ // Java frame called from C; skip all C frames and return top C ++ // frame of that chunk as the sender ++ PPC64JavaCallWrapper jcw = (PPC64JavaCallWrapper) getEntryFrameCallWrapper(); ++ if (Assert.ASSERTS_ENABLED) { ++ Assert.that(!entryFrameIsFirst(), "next Java fp must be non zero"); ++ Assert.that(jcw.getLastJavaSP().greaterThan(getSP()), "must be above this frame on stack"); ++ } ++ PPC64Frame fr; ++ if (jcw.getLastJavaPC() != null) { ++ fr = new PPC64Frame(jcw.getLastJavaSP(), jcw.getLastJavaFP(), jcw.getLastJavaPC()); ++ } else { ++ fr = new PPC64Frame(jcw.getLastJavaSP(), jcw.getLastJavaFP()); ++ } ++ map.clear(); ++ if (Assert.ASSERTS_ENABLED) { ++ Assert.that(map.getIncludeArgumentOops(), "should be set by clear"); ++ } ++ return fr; ++ } ++ ++ //------------------------------------------------------------------------------ ++ // frame::adjust_unextended_sp ++ private void adjustUnextendedSP() { ++ raw_unextendedSP = getFP(); ++ } ++ private Frame senderForInterpreterFrame(PPC64RegisterMap map) { ++ if (DEBUG) { ++ System.out.println("senderForInterpreterFrame"); ++ } ++ Address unextendedSP = addressOfStackSlot(INTERPRETER_FRAME_SENDER_SP_OFFSET).getAddressAt(0); ++ Address sp = getSenderSP(); ++ ++ return new PPC64Frame(sp, unextendedSP, getLink(), getSenderPC()); ++ } ++ ++ ++ private Frame senderForCompiledFrame(PPC64RegisterMap map, CodeBlob cb) { ++ if (DEBUG) { ++ System.out.println("senderForCompiledFrame"); ++ } ++ ++ // ++ // NOTE: some of this code is (unfortunately) duplicated in PPC64CurrentFrameGuess ++ // ++ ++ if (Assert.ASSERTS_ENABLED) { ++ Assert.that(map != null, "map must be set"); ++ } ++ ++ // frame owned by optimizing compiler ++ if (Assert.ASSERTS_ENABLED) { ++ Assert.that(cb.getFrameSize() >= 0, "must have non-zero frame size"); ++ } ++ Address senderSP = getSenderSP(); ++ ++ Address senderPC = getSenderPC(); ++ ++ if (map.getUpdateMap()) { ++ // Tell GC to use argument oopmaps for some runtime stubs that need it. ++ // For C1, the runtime stub might not have oop maps, so set this flag ++ // outside of update_register_map. ++ map.setIncludeArgumentOops(cb.callerMustGCArguments()); ++ ++ if (cb.getOopMaps() != null) { ++ OopMapSet.updateRegisterMap(this, cb, map, true); ++ } ++ } ++ ++ return new PPC64Frame(senderSP, getLink(), senderPC); ++ } ++ ++ protected boolean hasSenderPD() { ++ // FIXME ++ return true; ++ } ++ ++ public long frameSize() { ++ return (getSenderSP().minus(getSP()) / VM.getVM().getAddressSize()); ++ } ++ ++ public Address getLink() { ++ return getSenderSP().getAddressAt(0); ++ } ++ ++ public Address getUnextendedSP() { return raw_unextendedSP; } ++ ++ // Return address: ++ public Address getSenderPC() { return getSenderSP().getAddressAt(2 * VM.getVM().getAddressSize()); } ++ ++ // return address of param, zero origin index. ++ // MPJ note: Appears to be unused. ++ public Address getNativeParamAddr(int idx) { ++ return null; ++ // return addressOfStackSlot(NATIVE_FRAME_INITIAL_PARAM_OFFSET + idx); ++ } ++ ++ public Address getSenderSP() { return getFP(); } ++ public Address addressOfInterpreterFrameLocals() { ++ return addressOfStackSlot(INTERPRETER_FRAME_LOCALS_OFFSET); ++ } ++ ++ private Address addressOfInterpreterFrameBCX() { ++ return addressOfStackSlot(INTERPRETER_FRAME_BCX_OFFSET); ++ } ++ ++ public int getInterpreterFrameBCI() { ++ // FIXME: this is not atomic with respect to GC and is unsuitable ++ // for use in a non-debugging, or reflective, system. Need to ++ // figure out how to express this. ++ Address bcp = addressOfInterpreterFrameBCX().getAddressAt(0); ++ Address methodHandle = addressOfInterpreterFrameMethod().getAddressAt(0); ++ Method method = (Method)Metadata.instantiateWrapperFor(methodHandle); ++ return bcpToBci(bcp, method); ++ } ++ ++ public Address addressOfInterpreterFrameMDX() { ++ return addressOfStackSlot(INTERPRETER_FRAME_MDX_OFFSET); ++ } ++ ++ // FIXME ++ //inline int frame::interpreter_frame_monitor_size() { ++ // return BasicObjectLock::size(); ++ //} ++ ++ // expression stack ++ // (the max_stack arguments are used by the GC; see class FrameClosure) ++ ++ public Address addressOfInterpreterFrameExpressionStack() { ++ Address monitorEnd = interpreterFrameMonitorEnd().address(); ++ return monitorEnd.addOffsetTo(-1 * VM.getVM().getAddressSize()); ++ } ++ ++ public int getInterpreterFrameExpressionStackDirection() { return -1; } ++ ++ // top of expression stack ++ public Address addressOfInterpreterFrameTOS() { ++ return getSP(); ++ } ++ ++ /** Expression stack from top down */ ++ public Address addressOfInterpreterFrameTOSAt(int slot) { ++ return addressOfInterpreterFrameTOS().addOffsetTo(slot * VM.getVM().getAddressSize()); ++ } ++ ++ public Address getInterpreterFrameSenderSP() { ++ if (Assert.ASSERTS_ENABLED) { ++ Assert.that(isInterpretedFrame(), "interpreted frame expected"); ++ } ++ return addressOfStackSlot(INTERPRETER_FRAME_SENDER_SP_OFFSET).getAddressAt(0); ++ } ++ ++ // Monitors ++ public BasicObjectLock interpreterFrameMonitorBegin() { ++ return new BasicObjectLock(addressOfStackSlot(INTERPRETER_FRAME_MONITOR_BLOCK_BOTTOM_OFFSET)); ++ } ++ ++ public BasicObjectLock interpreterFrameMonitorEnd() { ++ Address result = addressOfStackSlot(INTERPRETER_FRAME_MONITOR_BLOCK_TOP_OFFSET).getAddressAt(0); ++ if (Assert.ASSERTS_ENABLED) { ++ // make sure the pointer points inside the frame ++ Assert.that(AddressOps.gt(getFP(), result), "result must < than frame pointer"); ++ Assert.that(AddressOps.lte(getSP(), result), "result must >= than stack pointer"); ++ } ++ return new BasicObjectLock(result); ++ } ++ ++ public int interpreterFrameMonitorSize() { ++ return BasicObjectLock.size(); ++ } ++ ++ // Method ++ public Address addressOfInterpreterFrameMethod() { ++ return addressOfStackSlot(INTERPRETER_FRAME_METHOD_OFFSET); ++ } ++ ++ // Constant pool cache ++ public Address addressOfInterpreterFrameCPCache() { ++ return addressOfStackSlot(INTERPRETER_FRAME_CACHE_OFFSET); ++ } ++ ++ // Entry frames ++ public JavaCallWrapper getEntryFrameCallWrapper() { ++ return new PPC64JavaCallWrapper(addressOfStackSlot(ENTRY_FRAME_CALL_WRAPPER_OFFSET).getAddressAt(0)); ++ } ++ ++ protected Address addressOfSavedOopResult() { ++ // offset is 2 for compiler2 and 3 for compiler1 ++ return getSP().addOffsetTo((VM.getVM().isClientCompiler() ? 2 : 3) * ++ VM.getVM().getAddressSize()); ++ } ++ ++ protected Address addressOfSavedReceiver() { ++ return getSP().addOffsetTo(-4 * VM.getVM().getAddressSize()); ++ } ++ ++ private void dumpStack() { ++ if (getFP() != null) { ++ for (Address addr = getSP().addOffsetTo(-5 * VM.getVM().getAddressSize()); ++ AddressOps.lte(addr, getFP().addOffsetTo(5 * VM.getVM().getAddressSize())); ++ addr = addr.addOffsetTo(VM.getVM().getAddressSize())) { ++ System.out.println(addr + ": " + addr.getAddressAt(0)); ++ } ++ } else { ++ for (Address addr = getSP().addOffsetTo(-5 * VM.getVM().getAddressSize()); ++ AddressOps.lte(addr, getSP().addOffsetTo(20 * VM.getVM().getAddressSize())); ++ addr = addr.addOffsetTo(VM.getVM().getAddressSize())) { ++ System.out.println(addr + ": " + addr.getAddressAt(0)); ++ } ++ } ++ } ++} +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ ./hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/ppc64/PPC64JavaCallWrapper.java Wed Dec 28 10:28:45 2016 -0800 +@@ -0,0 +1,43 @@ ++/* ++ * Copyright (c) 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. ++ * ++ */ ++ ++package sun.jvm.hotspot.runtime.ppc64; ++ ++import java.util.*; ++ ++import sun.jvm.hotspot.debugger.*; ++import sun.jvm.hotspot.types.*; ++import sun.jvm.hotspot.runtime.*; ++ ++public class PPC64JavaCallWrapper extends JavaCallWrapper { ++ ++ public PPC64JavaCallWrapper(Address addr) { ++ super(addr); ++ } ++ ++ public Address getLastJavaFP() { ++ return null; ++ } ++ ++} +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ ./hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/ppc64/PPC64RegisterMap.java Wed Dec 28 10:28:45 2016 -0800 +@@ -0,0 +1,51 @@ ++/* ++ * Copyright (c) 20014, 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. ++ * ++ */ ++ ++package sun.jvm.hotspot.runtime.ppc64; ++ ++import sun.jvm.hotspot.debugger.*; ++import sun.jvm.hotspot.runtime.*; ++ ++public class PPC64RegisterMap extends RegisterMap { ++ ++ /** This is the only public constructor */ ++ public PPC64RegisterMap(JavaThread thread, boolean updateMap) { ++ super(thread, updateMap); ++ } ++ ++ protected PPC64RegisterMap(RegisterMap map) { ++ super(map); ++ } ++ ++ public Object clone() { ++ PPC64RegisterMap retval = new PPC64RegisterMap(this); ++ return retval; ++ } ++ ++ // no PD state to clear or copy: ++ protected void clearPD() {} ++ protected void initializePD() {} ++ protected void initializeFromPD(RegisterMap map) {} ++ protected Address getLocationPD(VMReg reg) { return null; } ++} +--- ./hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/PlatformInfo.java Thu Sep 22 12:50:50 2016 -0700 ++++ ./hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/PlatformInfo.java Wed Dec 28 10:28:45 2016 -0800 +@@ -61,7 +61,7 @@ + return "x86"; + } else if (cpu.equals("sparc") || cpu.equals("sparcv9")) { + return "sparc"; +- } else if (cpu.equals("ia64") || cpu.equals("amd64") || cpu.equals("x86_64")) { ++ } else if (cpu.equals("ia64") || cpu.equals("amd64") || cpu.equals("x86_64") || cpu.equals("ppc64")) { + return cpu; + } else { + try { --- ./hotspot/make/bsd/Makefile Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/make/bsd/Makefile Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/make/bsd/Makefile Wed Dec 28 10:28:45 2016 -0800 @@ -66,6 +66,10 @@ FORCE_TIERED=1 endif @@ -1080,7 +3070,7 @@ ifdef LP64 ifeq ("$(filter $(LP64_ARCH),$(BUILDARCH))","") --- ./hotspot/make/bsd/makefiles/build_vm_def.sh Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/make/bsd/makefiles/build_vm_def.sh Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/make/bsd/makefiles/build_vm_def.sh Wed Dec 28 10:28:45 2016 -0800 @@ -1,12 +1,28 @@ #!/bin/sh @@ -1117,7 +3107,7 @@ + }' | sort -u ;; +esac --- ./hotspot/make/bsd/makefiles/debug.make Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/make/bsd/makefiles/debug.make Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/make/bsd/makefiles/debug.make Wed Dec 28 10:28:45 2016 -0800 @@ -35,7 +35,10 @@ # to inhibit the effect of the previous line on CFLAGS. @@ -1131,7 +3121,7 @@ VERSION = debug SYSDEFS += -DASSERT --- ./hotspot/make/bsd/makefiles/defs.make Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/make/bsd/makefiles/defs.make Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/make/bsd/makefiles/defs.make Wed Dec 28 10:28:45 2016 -0800 @@ -29,7 +29,15 @@ SLASH_JAVA ?= /java @@ -1174,7 +3164,7 @@ endif # On 32 bit bsd we build server and client, on 64 bit just server. -@@ -321,6 +337,18 @@ +@@ -321,10 +337,22 @@ ifeq ($(JVM_VARIANT_MINIMAL1),true) EXPORT_LIST += $(EXPORT_MINIMAL_DIR)/Xusage.txt EXPORT_LIST += $(EXPORT_MINIMAL_DIR)/libjvm.$(LIBRARY_SUFFIX) @@ -1193,8 +3183,45 @@ endif # Serviceability Binaries +-# No SA Support for PPC, IA64, ARM or zero ++# No SA Support for IA64, ARM or zero + ADD_SA_BINARIES/x86 = $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.$(LIBRARY_SUFFIX) \ + $(EXPORT_LIB_DIR)/sa-jdi.jar + +@@ -340,6 +368,23 @@ + endif + endif + ++ADD_SA_BINARIES/ppc = $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.$(LIBRARY_SUFFIX) \ ++ $(EXPORT_LIB_DIR)/sa-jdi.jar ++ADD_SA_BINARIES/universal = $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.$(LIBRARY_SUFFIX) \ ++ $(EXPORT_LIB_DIR)/sa-jdi.jar ++ ++ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) ++ ifeq ($(ZIP_DEBUGINFO_FILES),1) ++ ADD_SA_BINARIES/ppc += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.diz ++ else ++ ifeq ($(OS_VENDOR), Darwin) ++ ADD_SA_BINARIES/ppc += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.$(LIBRARY_SUFFIX).dSYM ++ else ++ ADD_SA_BINARIES/ppc += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.debuginfo ++ endif ++ endif ++endif ++ + ADD_SA_BINARIES/sparc = $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.$(LIBRARY_SUFFIX) \ + $(EXPORT_LIB_DIR)/sa-jdi.jar + ADD_SA_BINARIES/universal = $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.$(LIBRARY_SUFFIX) \ +@@ -357,7 +402,6 @@ + endif + endif + +-ADD_SA_BINARIES/ppc = + ADD_SA_BINARIES/ia64 = + ADD_SA_BINARIES/arm = + ADD_SA_BINARIES/zero = --- ./hotspot/make/bsd/makefiles/fastdebug.make Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/make/bsd/makefiles/fastdebug.make Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/make/bsd/makefiles/fastdebug.make Wed Dec 28 10:28:45 2016 -0800 @@ -56,7 +56,10 @@ # to inhibit the effect of the previous line on CFLAGS. @@ -1208,7 +3235,7 @@ VERSION = fastdebug SYSDEFS += -DASSERT -DCHECK_UNHANDLED_OOPS --- ./hotspot/make/bsd/makefiles/gcc.make Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/make/bsd/makefiles/gcc.make Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/make/bsd/makefiles/gcc.make Wed Dec 28 10:28:45 2016 -0800 @@ -168,6 +168,9 @@ CFLAGS += -DDONT_USE_PRECOMPILED_HEADER endif @@ -1335,7 +3362,7 @@ endif --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./hotspot/make/bsd/makefiles/launcher.make Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/make/bsd/makefiles/launcher.make Wed Dec 28 10:28:45 2016 -0800 @@ -0,0 +1,117 @@ +# +# Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. @@ -1455,7 +3482,7 @@ + $(QUIETLY) chmod +x $@ + --- ./hotspot/make/bsd/makefiles/mapfile-vers-debug Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/make/bsd/makefiles/mapfile-vers-debug Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/make/bsd/makefiles/mapfile-vers-debug Wed Dec 28 10:28:45 2016 -0800 @@ -21,246 +21,254 @@ # questions. # @@ -1944,7 +3971,7 @@ + *; +}; --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./hotspot/make/bsd/makefiles/mapfile-vers-debug.macosx Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/make/bsd/makefiles/mapfile-vers-debug.macosx Wed Dec 28 10:28:45 2016 -0800 @@ -0,0 +1,266 @@ +# +# Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. @@ -2213,7 +4240,7 @@ + # INSERT VTABLE SYMBOLS HERE + --- ./hotspot/make/bsd/makefiles/mapfile-vers-product Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/make/bsd/makefiles/mapfile-vers-product Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/make/bsd/makefiles/mapfile-vers-product Wed Dec 28 10:28:45 2016 -0800 @@ -21,241 +21,249 @@ # questions. # @@ -2693,7 +4720,7 @@ + *; +}; --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./hotspot/make/bsd/makefiles/mapfile-vers-product.macosx Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/make/bsd/makefiles/mapfile-vers-product.macosx Wed Dec 28 10:28:45 2016 -0800 @@ -0,0 +1,261 @@ +# +# Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. @@ -2957,7 +4984,7 @@ + # INSERT VTABLE SYMBOLS HERE + --- ./hotspot/make/bsd/makefiles/optimized.make Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/make/bsd/makefiles/optimized.make Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/make/bsd/makefiles/optimized.make Wed Dec 28 10:28:45 2016 -0800 @@ -38,6 +38,9 @@ # to inhibit the effect of the previous line on CFLAGS. @@ -2970,7 +4997,7 @@ VERSION = optimized --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./hotspot/make/bsd/makefiles/ppc64.make Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/make/bsd/makefiles/ppc64.make Wed Dec 28 10:28:45 2016 -0800 @@ -0,0 +1,51 @@ +# +# Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. @@ -3024,7 +5051,7 @@ + CFLAGS += -mcpu=power7 -mtune=power8 -minsert-sched-nops=regroup_exact -mno-multiple -mno-string +endif --- ./hotspot/make/bsd/makefiles/product.make Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/make/bsd/makefiles/product.make Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/make/bsd/makefiles/product.make Wed Dec 28 10:28:45 2016 -0800 @@ -38,7 +38,10 @@ # to inhibit the effect of the previous line on CFLAGS. @@ -3038,7 +5065,7 @@ SYSDEFS += -DPRODUCT VERSION = optimized --- ./hotspot/make/bsd/makefiles/rules.make Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/make/bsd/makefiles/rules.make Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/make/bsd/makefiles/rules.make Wed Dec 28 10:28:45 2016 -0800 @@ -34,7 +34,7 @@ CC_COMPILE = $(CC) $(CXXFLAGS) $(CFLAGS) CXX_COMPILE = $(CXX) $(CXXFLAGS) $(CFLAGS) @@ -3048,8 +5075,165 @@ COMPILE.CC = $(CC_COMPILE) -c GENASM.CC = $(CC_COMPILE) -S +--- ./hotspot/make/bsd/makefiles/sa.make Thu Sep 22 12:50:50 2016 -0700 ++++ ./hotspot/make/bsd/makefiles/sa.make Wed Dec 28 10:28:45 2016 -0800 +@@ -1,5 +1,5 @@ + # +-# Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. + # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + # + # This code is free software; you can redistribute it and/or modify it +@@ -19,7 +19,7 @@ + # 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. +-# ++# + # + + # This makefile (sa.make) is included from the sa.make in the +@@ -30,34 +30,21 @@ + + include $(GAMMADIR)/make/bsd/makefiles/rules.make + ++include $(GAMMADIR)/make/defs.make ++include $(GAMMADIR)/make/altsrc.make ++ + AGENT_DIR = $(GAMMADIR)/agent + + include $(GAMMADIR)/make/sa.files + + -include $(HS_ALT_MAKE)/bsd/makefiles/sa.make + ++ + TOPDIR = $(shell echo `pwd`) + GENERATED = $(TOPDIR)/../generated + +-# SA-JDI depends on the standard JDI classes. +-# Default SA_CLASSPATH location: +-DEF_SA_CLASSPATH=$(BOOT_JAVA_HOME)/lib/tools.jar +-ifeq ($(ALT_SA_CLASSPATH),) +- # no alternate specified; see if default exists +- SA_CLASSPATH=$(shell test -f $(DEF_SA_CLASSPATH) && echo $(DEF_SA_CLASSPATH)) +- ifeq ($(SA_CLASSPATH),) +- # the default doesn't exist +- ifeq ($(OS_VENDOR), Darwin) +- # A JDK from Apple doesn't have tools.jar; the JDI classes are +- # are in the regular classes.jar file. +- APPLE_JAR=$(BOOT_JAVA_HOME)/bundle/Classes/classes.jar +- SA_CLASSPATH=$(shell test -f $(APPLE_JAR) && echo $(APPLE_JAR)) +- endif +- endif +-else +- _JUNK_ := $(shell echo >&2 "INFO: ALT_SA_CLASSPATH=$(ALT_SA_CLASSPATH)") +- SA_CLASSPATH=$(shell test -f $(ALT_SA_CLASSPATH) && echo $(ALT_SA_CLASSPATH)) +-endif ++# tools.jar is needed by the JDI - SA binding ++SA_CLASSPATH = $(BOOT_JAVA_HOME)/lib/tools.jar + + # TODO: if it's a modules image, check if SA module is installed. + MODULELIB_PATH= $(BOOT_JAVA_HOME)/lib/modules +@@ -71,24 +58,22 @@ + SA_PROPERTIES = $(SA_CLASSDIR)/sa.properties + + # if $(AGENT_DIR) does not exist, we don't build SA +-# also, we don't build SA on Itanium, PowerPC, ARM or zero. ++# also, we don't build SA on Itanium or zero. + +-all: ++all: + if [ -d $(AGENT_DIR) -a "$(SRCARCH)" != "ia64" \ +- -a "$(SRCARCH)" != "arm" \ +- -a "$(SRCARCH)" != "ppc" \ + -a "$(SRCARCH)" != "zero" ] ; then \ + $(MAKE) -f sa.make $(GENERATED)/sa-jdi.jar; \ + fi + +-$(GENERATED)/sa-jdi.jar: $(AGENT_FILES) +- $(QUIETLY) echo "Making $@" ++$(GENERATED)/sa-jdi.jar:: $(AGENT_FILES) ++ $(QUIETLY) echo $(LOG_INFO) "Making $@" + $(QUIETLY) if [ "$(BOOT_JAVA_HOME)" = "" ]; then \ + echo "ALT_BOOTDIR, BOOTDIR or JAVA_HOME needs to be defined to build SA"; \ + exit 1; \ + fi +- $(QUIETLY) if [ ! -f "$(SA_CLASSPATH)" -a ! -d $(MODULELIB_PATH) ] ; then \ +- echo "Cannot find JDI classes. Use 1.6.0 or later version of JDK."; \ ++ $(QUIETLY) if [ ! -f $(SA_CLASSPATH) -a ! -d $(MODULELIB_PATH) ] ; then \ ++ echo "Missing $(SA_CLASSPATH) file. Use 1.6.0 or later version of JDK";\ + echo ""; \ + exit 1; \ + fi +@@ -114,19 +99,22 @@ + $(QUIETLY) $(REMOTE) $(COMPILE.RMIC) -classpath $(SA_CLASSDIR) -d $(SA_CLASSDIR) sun.jvm.hotspot.debugger.remote.RemoteDebuggerServer + $(QUIETLY) echo "$(SA_BUILD_VERSION_PROP)" > $(SA_PROPERTIES) + $(QUIETLY) rm -f $(SA_CLASSDIR)/sun/jvm/hotspot/utilities/soql/sa.js +- $(QUIETLY) cp $(AGENT_SRC_DIR)/sun/jvm/hotspot/utilities/soql/sa.js $(SA_CLASSDIR)/sun/jvm/hotspot/utilities/soql ++ $(QUIETLY) $(CP) $(AGENT_SRC_DIR)/sun/jvm/hotspot/utilities/soql/sa.js $(SA_CLASSDIR)/sun/jvm/hotspot/utilities/soql + $(QUIETLY) mkdir -p $(SA_CLASSDIR)/sun/jvm/hotspot/ui/resources + $(QUIETLY) rm -f $(SA_CLASSDIR)/sun/jvm/hotspot/ui/resources/* +- $(QUIETLY) cp $(AGENT_SRC_DIR)/sun/jvm/hotspot/ui/resources/*.png $(SA_CLASSDIR)/sun/jvm/hotspot/ui/resources/ +- $(QUIETLY) cp -r $(AGENT_SRC_DIR)/images/* $(SA_CLASSDIR)/ ++ $(QUIETLY) $(CP) $(AGENT_SRC_DIR)/sun/jvm/hotspot/ui/resources/*.png $(SA_CLASSDIR)/sun/jvm/hotspot/ui/resources/ ++ $(QUIETLY) $(CP) -r $(AGENT_SRC_DIR)/images/* $(SA_CLASSDIR)/ + $(QUIETLY) $(REMOTE) $(RUN.JAR) cf $@ -C $(SA_CLASSDIR)/ . + $(QUIETLY) $(REMOTE) $(RUN.JAR) uf $@ -C $(AGENT_SRC_DIR) META-INF/services/com.sun.jdi.connect.Connector + $(QUIETLY) $(REMOTE) $(RUN.JAVAH) -classpath $(SA_CLASSDIR) -d $(GENERATED) -jni sun.jvm.hotspot.debugger.x86.X86ThreadContext + $(QUIETLY) $(REMOTE) $(RUN.JAVAH) -classpath $(SA_CLASSDIR) -d $(GENERATED) -jni sun.jvm.hotspot.debugger.amd64.AMD64ThreadContext + $(QUIETLY) $(REMOTE) $(RUN.JAVAH) -classpath $(SA_CLASSDIR) -d $(GENERATED) -jni sun.jvm.hotspot.debugger.sparc.SPARCThreadContext ++ $(QUIETLY) $(REMOTE) $(RUN.JAVAH) -classpath $(SA_CLASSDIR) -d $(GENERATED) -jni sun.jvm.hotspot.debugger.ppc64.PPC64ThreadContext + $(QUIETLY) $(REMOTE) $(RUN.JAVAH) -classpath $(SA_CLASSDIR) -d $(GENERATED) -jni sun.jvm.hotspot.asm.Disassembler + + clean: + rm -rf $(SA_CLASSDIR) + rm -rf $(GENERATED)/sa-jdi.jar + rm -rf $(AGENT_FILES_LIST) ++ ++-include $(HS_ALT_MAKE)/bsd/makefiles/sa-rules.make +--- ./hotspot/make/bsd/makefiles/saproc.make Thu Sep 22 12:50:50 2016 -0700 ++++ ./hotspot/make/bsd/makefiles/saproc.make Wed Dec 28 10:28:45 2016 -0800 +@@ -99,10 +99,10 @@ + endif + + # if $(AGENT_DIR) does not exist, we don't build SA +-# also, we don't build SA on Itanium, PPC, ARM or zero. ++# also, we don't build SA on Itanium, ARM or zero. + + ifneq ($(wildcard $(AGENT_DIR)),) +-ifneq ($(filter-out ia64 arm ppc zero,$(SRCARCH)),) ++ifneq ($(filter-out ia64 arm zero,$(SRCARCH)),) + BUILDLIBSAPROC = $(LIBSAPROC) + endif + endif +@@ -162,16 +162,17 @@ + endif + + install_saproc: $(BUILDLIBSAPROC) +- @echo "Copying $(LIBSAPROC) to $(DEST_SAPROC)" ++ $(QUIETLY) if [ -e $(LIBSAPROC) ] ; then \ ++ echo "Copying $(LIBSAPROC) to $(DEST_SAPROC)"; \ + ifeq ($(OS_VENDOR), Darwin) +- $(QUIETLY) test -d $(LIBSAPROC_DEBUGINFO) && \ +- cp -f -r $(LIBSAPROC_DEBUGINFO) $(DEST_SAPROC_DEBUGINFO) ++ $test -d $(LIBSAPROC_DEBUGINFO) && \ ++ cp -f -r $(LIBSAPROC_DEBUGINFO) $(DEST_SAPROC_DEBUGINFO); \ + else +- $(QUIETLY) test -f $(LIBSAPROC_DEBUGINFO) && \ +- cp -f $(LIBSAPROC_DEBUGINFO) $(DEST_SAPROC_DEBUGINFO) ++ test -f $(LIBSAPROC_DEBUGINFO) && \ ++ cp -f $(LIBSAPROC_DEBUGINFO) $(DEST_SAPROC_DEBUGINFO); \ + endif +- $(QUIETLY) test -f $(LIBSAPROC_DIZ) && \ +- cp -f $(LIBSAPROC_DIZ) $(DEST_SAPROC_DIZ) +- $(QUIETLY) cp -f $(LIBSAPROC) $(DEST_SAPROC) && echo "Done" ++ test -f $(LIBSAPROC_DIZ) && \ ++ cp -f $(LIBSAPROC_DIZ) $(DEST_SAPROC_DIZ); \ ++ cp -f $(LIBSAPROC) $(DEST_SAPROC) && echo "Done" + + .PHONY: install_saproc --- ./hotspot/make/bsd/makefiles/vm.make Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/make/bsd/makefiles/vm.make Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/make/bsd/makefiles/vm.make Wed Dec 28 10:28:45 2016 -0800 @@ -107,7 +107,7 @@ # File specific flags CXXFLAGS += $(CXXFLAGS/BYFILE) @@ -3060,7 +5244,7 @@ endif --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./hotspot/make/bsd/platform_ppc64 Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/make/bsd/platform_ppc64 Wed Dec 28 10:28:45 2016 -0800 @@ -0,0 +1,17 @@ +os_family = bsd + @@ -3079,8 +5263,50 @@ +gnu_dis_arch = ppc64 + +sysdefs = -DBSD -D_ALLBSD_SOURCE -D_GNU_SOURCE -DPPC64 +--- ./hotspot/make/sa.files Thu Sep 22 12:50:50 2016 -0700 ++++ ./hotspot/make/sa.files Wed Dec 28 10:28:45 2016 -0800 +@@ -45,6 +45,7 @@ + $(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/amd64/*.java \ + $(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/bsd/*.java \ + $(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/bsd/amd64/*.java \ ++$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/bsd/ppc64/*.java \ + $(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/bsd/x86/*.java \ + $(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/cdbg/*.java \ + $(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/cdbg/basic/*.java \ +@@ -55,12 +56,15 @@ + $(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/linux/sparc/*.java \ + $(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/posix/*.java \ + $(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/posix/elf/*.java \ ++$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/ppc64/*.java \ + $(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/proc/*.java \ + $(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/proc/amd64/*.java \ ++$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/proc/ppc64/*.java \ + $(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/proc/sparc/*.java \ + $(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/proc/x86/*.java \ + $(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/remote/*.java \ + $(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/remote/amd64/*.java \ ++$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/remote/ppc64/*.java \ + $(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/remote/sparc/*.java \ + $(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/remote/x86/*.java \ + $(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/sparc/*.java \ +@@ -85,6 +89,7 @@ + $(AGENT_SRC_DIR)/sun/jvm/hotspot/runtime/amd64/*.java \ + $(AGENT_SRC_DIR)/sun/jvm/hotspot/runtime/bsd/*.java \ + $(AGENT_SRC_DIR)/sun/jvm/hotspot/runtime/bsd_amd64/*.java \ ++$(AGENT_SRC_DIR)/sun/jvm/hotspot/runtime/bsd_ppc64/*.java \ + $(AGENT_SRC_DIR)/sun/jvm/hotspot/runtime/bsd_x86/*.java \ + $(AGENT_SRC_DIR)/sun/jvm/hotspot/runtime/linux/*.java \ + $(AGENT_SRC_DIR)/sun/jvm/hotspot/runtime/linux_amd64/*.java \ +@@ -96,6 +101,7 @@ + $(AGENT_SRC_DIR)/sun/jvm/hotspot/runtime/solaris_x86/*.java \ + $(AGENT_SRC_DIR)/sun/jvm/hotspot/runtime/sparc/*.java \ + $(AGENT_SRC_DIR)/sun/jvm/hotspot/runtime/x86/*.java \ ++$(AGENT_SRC_DIR)/sun/jvm/hotspot/runtime/ppc64/*.java \ + $(AGENT_SRC_DIR)/sun/jvm/hotspot/tools/*.java \ + $(AGENT_SRC_DIR)/sun/jvm/hotspot/tools/jcore/*.java \ + $(AGENT_SRC_DIR)/sun/jvm/hotspot/tools/soql/*.java \ --- ./hotspot/src/cpu/ppc/vm/bytes_ppc.hpp Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/src/cpu/ppc/vm/bytes_ppc.hpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/cpu/ppc/vm/bytes_ppc.hpp Wed Dec 28 10:28:45 2016 -0800 @@ -277,5 +277,9 @@ #if defined(TARGET_OS_ARCH_linux_ppc) #include "bytes_linux_ppc.inline.hpp" @@ -3092,7 +5318,7 @@ #endif // CPU_PPC_VM_BYTES_PPC_HPP --- ./hotspot/src/cpu/ppc/vm/interpreter_ppc.cpp Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/src/cpu/ppc/vm/interpreter_ppc.cpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/cpu/ppc/vm/interpreter_ppc.cpp Wed Dec 28 10:28:45 2016 -0800 @@ -307,6 +307,8 @@ // Although AIX runs on big endian CPU, float is in most significant // word of an argument slot. @@ -3103,7 +5329,7 @@ #error "unknown OS" #endif --- ./hotspot/src/cpu/ppc/vm/sharedRuntime_ppc.cpp Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/src/cpu/ppc/vm/sharedRuntime_ppc.cpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/cpu/ppc/vm/sharedRuntime_ppc.cpp Wed Dec 28 10:28:45 2016 -0800 @@ -778,6 +778,8 @@ // Although AIX runs on big endian CPU, float is in the most // significant word of an argument slot. @@ -3114,7 +5340,7 @@ #error "unknown OS" #endif --- ./hotspot/src/cpu/x86/vm/jni_x86.h Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/src/cpu/x86/vm/jni_x86.h Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/cpu/x86/vm/jni_x86.h Wed Dec 28 10:28:45 2016 -0800 @@ -34,7 +34,7 @@ #ifndef __has_attribute #define __has_attribute(x) 0 @@ -3125,7 +5351,7 @@ #define JNIIMPORT __attribute__((visibility("default"))) #else --- ./hotspot/src/cpu/x86/vm/sharedRuntime_x86_32.cpp Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/src/cpu/x86/vm/sharedRuntime_x86_32.cpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/cpu/x86/vm/sharedRuntime_x86_32.cpp Wed Dec 28 10:28:45 2016 -0800 @@ -2266,7 +2266,7 @@ if (!is_critical_native) { // reset handle block @@ -3136,7 +5362,7 @@ // Any exception pending? __ cmpptr(Address(thread, in_bytes(Thread::pending_exception_offset())), (int32_t)NULL_WORD); --- ./hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp Wed Dec 28 10:28:45 2016 -0800 @@ -23,9 +23,12 @@ */ @@ -3152,7 +5378,7 @@ #include "asm/macroAssembler.inline.hpp" #include "code/debugInfoRec.hpp" --- ./hotspot/src/cpu/x86/vm/templateInterpreter_x86_32.cpp Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/src/cpu/x86/vm/templateInterpreter_x86_32.cpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/cpu/x86/vm/templateInterpreter_x86_32.cpp Wed Dec 28 10:28:45 2016 -0800 @@ -1293,7 +1293,7 @@ // reset handle block @@ -3163,7 +5389,7 @@ // If result was an oop then unbox and save it in the frame { Label L; --- ./hotspot/src/cpu/x86/vm/x86_32.ad Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/src/cpu/x86/vm/x86_32.ad Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/cpu/x86/vm/x86_32.ad Wed Dec 28 10:28:45 2016 -0800 @@ -1250,6 +1250,7 @@ @@ -3173,7 +5399,7 @@ #ifndef PRODUCT --- ./hotspot/src/os/aix/vm/os_aix.cpp Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/src/os/aix/vm/os_aix.cpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/os/aix/vm/os_aix.cpp Wed Dec 28 10:28:45 2016 -0800 @@ -5236,6 +5236,10 @@ return 0; } @@ -3186,7 +5412,7 @@ } --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./hotspot/src/os/bsd/vm/decoder_bsd.cpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/os/bsd/vm/decoder_bsd.cpp Wed Dec 28 10:28:45 2016 -0800 @@ -0,0 +1,53 @@ +/* + * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. @@ -3242,7 +5468,7 @@ +} +#endif --- ./hotspot/src/os/bsd/vm/jsig.c Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/src/os/bsd/vm/jsig.c Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/os/bsd/vm/jsig.c Wed Dec 28 10:28:45 2016 -0800 @@ -165,9 +165,8 @@ } @@ -3256,7 +5482,7 @@ static int call_os_sigaction(int sig, const struct sigaction *act, struct sigaction *oact) { --- ./hotspot/src/os/bsd/vm/jvm_bsd.cpp Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/src/os/bsd/vm/jvm_bsd.cpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/os/bsd/vm/jvm_bsd.cpp Wed Dec 28 10:28:45 2016 -0800 @@ -50,6 +50,7 @@ case INTERRUPT_SIGNAL: case SIGFPE: @@ -3367,7 +5593,7 @@ + return true; } --- ./hotspot/src/os/bsd/vm/jvm_bsd.h Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/src/os/bsd/vm/jvm_bsd.h Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/os/bsd/vm/jvm_bsd.h Wed Dec 28 10:28:45 2016 -0800 @@ -112,20 +112,6 @@ #define SHUTDOWN2_SIGNAL SIGINT #define SHUTDOWN3_SIGNAL SIGTERM @@ -3390,7 +5616,7 @@ #endif // OS_BSD_VM_JVM_BSD_H --- ./hotspot/src/os/bsd/vm/osThread_bsd.cpp Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/src/os/bsd/vm/osThread_bsd.cpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/os/bsd/vm/osThread_bsd.cpp Wed Dec 28 10:28:45 2016 -0800 @@ -30,7 +30,7 @@ void OSThread::pd_initialize() { @@ -3401,7 +5627,7 @@ #else _thread_id = NULL; --- ./hotspot/src/os/bsd/vm/os_bsd.cpp Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/src/os/bsd/vm/os_bsd.cpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/os/bsd/vm/os_bsd.cpp Wed Dec 28 10:28:45 2016 -0800 @@ -97,16 +97,31 @@ # include <sys/shm.h> #ifndef __APPLE__ @@ -3964,7 +6190,7 @@ #ifndef PRODUCT --- ./hotspot/src/os/bsd/vm/os_bsd.hpp Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/src/os/bsd/vm/os_bsd.hpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/os/bsd/vm/os_bsd.hpp Wed Dec 28 10:28:45 2016 -0800 @@ -58,12 +58,16 @@ // For signal flags diagnostics static int sigflags[MAXSIGNUM]; @@ -3993,7 +6219,7 @@ static void set_page_size(int val) { _page_size = val; } --- ./hotspot/src/os/bsd/vm/vmError_bsd.cpp Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/src/os/bsd/vm/vmError_bsd.cpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/os/bsd/vm/vmError_bsd.cpp Wed Dec 28 10:28:45 2016 -0800 @@ -33,30 +33,50 @@ #include <sys/syscall.h> #include <unistd.h> @@ -4056,7 +6282,7 @@ yes = false; } --- ./hotspot/src/os/linux/vm/os_linux.cpp Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/src/os/linux/vm/os_linux.cpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/os/linux/vm/os_linux.cpp Wed Dec 28 10:28:45 2016 -0800 @@ -6156,6 +6156,10 @@ return 0; } @@ -4069,7 +6295,7 @@ } --- ./hotspot/src/os/posix/vm/os_posix.cpp Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/src/os/posix/vm/os_posix.cpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/os/posix/vm/os_posix.cpp Wed Dec 28 10:28:45 2016 -0800 @@ -53,12 +53,11 @@ n = get_core_path(buffer, bufferSize); @@ -4133,7 +6359,7 @@ #ifdef SI_TKILL { SI_TKILL, "SI_TKILL", "Signal sent by tkill (pthread_kill)" }, --- ./hotspot/src/os/solaris/vm/os_solaris.cpp Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/src/os/solaris/vm/os_solaris.cpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/os/solaris/vm/os_solaris.cpp Wed Dec 28 10:28:45 2016 -0800 @@ -6375,6 +6375,10 @@ return 0; } @@ -4146,7 +6372,7 @@ } --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./hotspot/src/os_cpu/bsd_ppc/vm/atomic_bsd_ppc.inline.hpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/os_cpu/bsd_ppc/vm/atomic_bsd_ppc.inline.hpp Wed Dec 28 10:28:45 2016 -0800 @@ -0,0 +1,400 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. @@ -4549,7 +6775,7 @@ + +#endif // OS_CPU_BSD_PPC_VM_ATOMIC_BSD_PPC_INLINE_HPP --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./hotspot/src/os_cpu/bsd_ppc/vm/bytes_bsd_ppc.inline.hpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/os_cpu/bsd_ppc/vm/bytes_bsd_ppc.inline.hpp Wed Dec 28 10:28:45 2016 -0800 @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. @@ -4591,7 +6817,7 @@ + +#endif // OS_CPU_BSD_PPC_VM_BYTES_BSD_PPC_INLINE_HPP --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./hotspot/src/os_cpu/bsd_ppc/vm/globals_bsd_ppc.hpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/os_cpu/bsd_ppc/vm/globals_bsd_ppc.hpp Wed Dec 28 10:28:45 2016 -0800 @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. @@ -4648,7 +6874,7 @@ + +#endif // OS_CPU_BSD_PPC_VM_GLOBALS_BSD_PPC_HPP --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./hotspot/src/os_cpu/bsd_ppc/vm/orderAccess_bsd_ppc.inline.hpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/os_cpu/bsd_ppc/vm/orderAccess_bsd_ppc.inline.hpp Wed Dec 28 10:28:45 2016 -0800 @@ -0,0 +1,149 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. @@ -4800,7 +7026,7 @@ + +#endif // OS_CPU_BSD_PPC_VM_ORDERACCESS_BSD_PPC_INLINE_HPP --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./hotspot/src/os_cpu/bsd_ppc/vm/os_bsd_ppc.cpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/os_cpu/bsd_ppc/vm/os_bsd_ppc.cpp Wed Dec 28 10:28:45 2016 -0800 @@ -0,0 +1,666 @@ +/* + * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. @@ -5469,7 +7695,7 @@ +} +#endif --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./hotspot/src/os_cpu/bsd_ppc/vm/os_bsd_ppc.hpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/os_cpu/bsd_ppc/vm/os_bsd_ppc.hpp Wed Dec 28 10:28:45 2016 -0800 @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. @@ -5507,7 +7733,7 @@ + +#endif // OS_CPU_BSD_PPC_VM_OS_BSD_PPC_HPP --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./hotspot/src/os_cpu/bsd_ppc/vm/prefetch_bsd_ppc.inline.hpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/os_cpu/bsd_ppc/vm/prefetch_bsd_ppc.inline.hpp Wed Dec 28 10:28:45 2016 -0800 @@ -0,0 +1,50 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. @@ -5560,7 +7786,7 @@ + +#endif // OS_CPU_BSD_PPC_VM_PREFETCH_BSD_PPC_INLINE_HPP --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./hotspot/src/os_cpu/bsd_ppc/vm/threadLS_bsd_ppc.cpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/os_cpu/bsd_ppc/vm/threadLS_bsd_ppc.cpp Wed Dec 28 10:28:45 2016 -0800 @@ -0,0 +1,39 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. @@ -5602,7 +7828,7 @@ + os::thread_local_storage_at_put(ThreadLocalStorage::thread_index(), thread); +} --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./hotspot/src/os_cpu/bsd_ppc/vm/threadLS_bsd_ppc.hpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/os_cpu/bsd_ppc/vm/threadLS_bsd_ppc.hpp Wed Dec 28 10:28:45 2016 -0800 @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. @@ -5641,7 +7867,7 @@ + +#endif // OS_CPU_BSD_PPC_VM_THREADLS_BSD_PPC_HPP --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./hotspot/src/os_cpu/bsd_ppc/vm/thread_bsd_ppc.cpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/os_cpu/bsd_ppc/vm/thread_bsd_ppc.cpp Wed Dec 28 10:28:45 2016 -0800 @@ -0,0 +1,36 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. @@ -5680,7 +7906,7 @@ + +void JavaThread::cache_global_variables() { } --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./hotspot/src/os_cpu/bsd_ppc/vm/thread_bsd_ppc.hpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/os_cpu/bsd_ppc/vm/thread_bsd_ppc.hpp Wed Dec 28 10:28:45 2016 -0800 @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. @@ -5766,7 +7992,7 @@ + +#endif // OS_CPU_BSD_PPC_VM_THREAD_BSD_PPC_HPP --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./hotspot/src/os_cpu/bsd_ppc/vm/vmStructs_bsd_ppc.hpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/os_cpu/bsd_ppc/vm/vmStructs_bsd_ppc.hpp Wed Dec 28 10:28:45 2016 -0800 @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. @@ -5824,7 +8050,7 @@ + +#endif // OS_CPU_BSD_PPC_VM_VMSTRUCTS_BSD_PPC_HPP --- ./hotspot/src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp Wed Dec 28 10:28:45 2016 -0800 @@ -594,7 +594,11 @@ stub = SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_NULL); } @@ -5838,7 +8064,7 @@ stub = StubRoutines::handler_for_unsafe_access(); } --- ./hotspot/src/share/vm/opto/node.cpp Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/src/share/vm/opto/node.cpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/share/vm/opto/node.cpp Wed Dec 28 10:28:45 2016 -0800 @@ -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 @@ -5862,7 +8088,7 @@ //------------------------------clone------------------------------------------ // Clone a Node. --- ./hotspot/src/share/vm/runtime/atomic.inline.hpp Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/src/share/vm/runtime/atomic.inline.hpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/share/vm/runtime/atomic.inline.hpp Wed Dec 28 10:28:45 2016 -0800 @@ -63,6 +63,9 @@ #endif @@ -5874,7 +8100,7 @@ # include "atomic_bsd_x86.inline.hpp" #endif --- ./hotspot/src/share/vm/runtime/globals.hpp Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/src/share/vm/runtime/globals.hpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/share/vm/runtime/globals.hpp Wed Dec 28 10:28:45 2016 -0800 @@ -94,6 +94,9 @@ #ifdef TARGET_OS_ARCH_aix_ppc # include "globals_aix_ppc.hpp" @@ -5886,7 +8112,7 @@ # include "globals_bsd_x86.hpp" #endif --- ./hotspot/src/share/vm/runtime/orderAccess.inline.hpp Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/src/share/vm/runtime/orderAccess.inline.hpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/share/vm/runtime/orderAccess.inline.hpp Wed Dec 28 10:28:45 2016 -0800 @@ -64,6 +64,9 @@ #endif @@ -5898,7 +8124,7 @@ # include "orderAccess_bsd_x86.inline.hpp" #endif --- ./hotspot/src/share/vm/runtime/os.cpp Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/src/share/vm/runtime/os.cpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/share/vm/runtime/os.cpp Wed Dec 28 10:28:45 2016 -0800 @@ -424,15 +424,6 @@ if (_native_java_library == NULL) { vm_exit_during_initialization("Unable to load native library", ebuf); @@ -5916,7 +8142,7 @@ static jboolean onLoaded = JNI_FALSE; if (onLoaded) { --- ./hotspot/src/share/vm/runtime/os.hpp Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/src/share/vm/runtime/os.hpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/share/vm/runtime/os.hpp Wed Dec 28 10:28:45 2016 -0800 @@ -835,6 +835,9 @@ #ifdef TARGET_OS_ARCH_aix_ppc # include "os_aix_ppc.hpp" @@ -5928,7 +8154,7 @@ # include "os_bsd_x86.hpp" #endif --- ./hotspot/src/share/vm/runtime/prefetch.inline.hpp Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/src/share/vm/runtime/prefetch.inline.hpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/share/vm/runtime/prefetch.inline.hpp Wed Dec 28 10:28:45 2016 -0800 @@ -63,6 +63,9 @@ #endif @@ -5940,7 +8166,7 @@ # include "prefetch_bsd_x86.inline.hpp" #endif --- ./hotspot/src/share/vm/runtime/thread.hpp Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/src/share/vm/runtime/thread.hpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/share/vm/runtime/thread.hpp Wed Dec 28 10:28:45 2016 -0800 @@ -1732,6 +1732,9 @@ #ifdef TARGET_OS_ARCH_aix_ppc # include "thread_aix_ppc.hpp" @@ -5952,7 +8178,7 @@ # include "thread_bsd_x86.hpp" #endif --- ./hotspot/src/share/vm/runtime/threadLocalStorage.hpp Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/src/share/vm/runtime/threadLocalStorage.hpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/share/vm/runtime/threadLocalStorage.hpp Wed Dec 28 10:28:45 2016 -0800 @@ -75,6 +75,9 @@ #ifdef TARGET_OS_ARCH_aix_ppc # include "threadLS_aix_ppc.hpp" @@ -5964,7 +8190,7 @@ # include "threadLS_bsd_x86.hpp" #endif --- ./hotspot/src/share/vm/runtime/vmStructs.cpp Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/src/share/vm/runtime/vmStructs.cpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/share/vm/runtime/vmStructs.cpp Wed Dec 28 10:28:45 2016 -0800 @@ -146,6 +146,9 @@ #ifdef TARGET_OS_ARCH_aix_ppc # include "vmStructs_aix_ppc.hpp" @@ -5985,7 +8211,7 @@ NOT_ZERO(X86_ONLY(declare_constant(frame::entry_frame_call_wrapper_offset))) \ declare_constant(frame::pc_return_offset) \ --- ./hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp Wed Dec 28 10:28:45 2016 -0800 @@ -30,6 +30,11 @@ // This file holds compiler-dependent includes, // globally used constants & types, class (forward) @@ -6018,7 +8244,7 @@ #endif --- ./hotspot/src/share/vm/utilities/vmError.cpp Thu Sep 22 12:50:50 2016 -0700 -+++ ./hotspot/src/share/vm/utilities/vmError.cpp Mon Oct 24 19:45:24 2016 -0700 ++++ ./hotspot/src/share/vm/utilities/vmError.cpp Wed Dec 28 10:28:45 2016 -0800 @@ -22,7 +22,6 @@ * */ @@ -6028,7 +8254,7 @@ #include "compiler/compileBroker.hpp" #include "gc_interface/collectedHeap.hpp" --- ./jdk/make/CompileDemos.gmk Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/make/CompileDemos.gmk Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/make/CompileDemos.gmk Mon Dec 19 15:56:12 2016 -0500 @@ -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 \ @@ -6039,7 +8265,7 @@ $(eval $(call SetupJVMTIDemo,minst, agent_util java_crw_demo)) $(eval $(call SetupJVMTIDemo,mtrace, agent_util java_crw_demo)) --- ./jdk/make/CompileJavaClasses.gmk Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/make/CompileJavaClasses.gmk Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/make/CompileJavaClasses.gmk Mon Dec 19 15:56:12 2016 -0500 @@ -128,23 +128,32 @@ sun/nio/fs/LinuxFileStore.java \ sun/nio/fs/LinuxFileSystem.java \ @@ -6142,7 +8368,7 @@ INCLUDES := $(SECURITY_PKGS), \ EXCLUDES := $(EXCLUDES), \ --- ./jdk/make/CompileLaunchers.gmk Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/make/CompileLaunchers.gmk Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/make/CompileLaunchers.gmk Mon Dec 19 15:56:12 2016 -0500 @@ -49,7 +49,7 @@ ORIGIN_ROOT := /.. endif @@ -6248,7 +8474,7 @@ endif --- ./jdk/make/CopyFiles.gmk Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/make/CopyFiles.gmk Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/make/CopyFiles.gmk Mon Dec 19 15:56:12 2016 -0500 @@ -29,6 +29,8 @@ ifeq ($(OPENJDK_TARGET_OS), windows) @@ -6292,7 +8518,7 @@ endif endif --- ./jdk/make/Images.gmk Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/make/Images.gmk Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/make/Images.gmk Mon Dec 19 15:56:12 2016 -0500 @@ -236,11 +236,11 @@ endif @@ -6363,7 +8589,7 @@ ################################################################################ --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./jdk/make/data/classlist/classlist.bsd Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/make/data/classlist/classlist.bsd Mon Dec 19 15:56:12 2016 -0500 @@ -0,0 +1,2559 @@ +java/lang/Object +java/lang/String @@ -8925,7 +11151,7 @@ +sun/awt/X11/XErrorEvent +# eea35d9d56e0006e --- ./jdk/make/gendata/GendataFontConfig.gmk Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/make/gendata/GendataFontConfig.gmk Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/make/gendata/GendataFontConfig.gmk Mon Dec 19 15:56:12 2016 -0500 @@ -73,6 +73,13 @@ GENDATA_FONT_CONFIG_SRC_PREFIX := aix. endif @@ -8941,7 +11167,7 @@ $(GENDATA_FONT_CONFIG_DST)/%.src: \ --- ./jdk/make/lib/Awt2dLibraries.gmk Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/make/lib/Awt2dLibraries.gmk Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/make/lib/Awt2dLibraries.gmk Mon Dec 19 15:56:12 2016 -0500 @@ -309,7 +309,7 @@ debug_trace.c \ debug_util.c @@ -9067,7 +11293,7 @@ LIBSPLASHSCREEN_LDFLAGS_SUFFIX += $(X_LIBS) -lX11 -lXext $(LIBM) -lpthread endif --- ./jdk/make/lib/CoreLibraries.gmk Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/make/lib/CoreLibraries.gmk Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/make/lib/CoreLibraries.gmk Mon Dec 19 15:56:12 2016 -0500 @@ -82,7 +82,7 @@ endif @@ -9155,7 +11381,7 @@ LDFLAGS_SUFFIX_windows := -export:nptInitialize -export:nptTerminate, \ LDFLAGS_SUFFIX_solaris := -lc, \ --- ./jdk/make/lib/NetworkingLibraries.gmk Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/make/lib/NetworkingLibraries.gmk Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/make/lib/NetworkingLibraries.gmk Mon Dec 19 15:56:12 2016 -0500 @@ -42,7 +42,7 @@ LIBNET_EXCLUDE_FILES += linux_close.c endif @@ -9185,7 +11411,7 @@ delayimp.lib $(WIN_JAVA_LIB) advapi32.lib \ -DELAYLOAD:secur32.dll -DELAYLOAD:iphlpapi.dll, \ --- ./jdk/make/lib/NioLibraries.gmk Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/make/lib/NioLibraries.gmk Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/make/lib/NioLibraries.gmk Mon Dec 19 15:56:12 2016 -0500 @@ -77,9 +77,28 @@ UnixNativeDispatcher.c endif @@ -9247,7 +11473,7 @@ + endif endif --- ./jdk/make/lib/ServiceabilityLibraries.gmk Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/make/lib/ServiceabilityLibraries.gmk Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/make/lib/ServiceabilityLibraries.gmk Mon Dec 19 15:56:12 2016 -0500 @@ -34,7 +34,7 @@ ifneq ($(OPENJDK_TARGET_OS), linux) LIBATTACH_EXCLUDE_FILES += LinuxVirtualMachine.c @@ -9338,7 +11564,7 @@ LIBHPROF_OPTIMIZATION := LOW endif --- ./jdk/make/lib/SoundLibraries.gmk Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/make/lib/SoundLibraries.gmk Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/make/lib/SoundLibraries.gmk Mon Dec 19 15:56:12 2016 -0500 @@ -75,6 +75,13 @@ LIBJSOUND_CFLAGS += -DX_PLATFORM=X_AIX endif # OPENJDK_TARGET_OS aix @@ -9371,7 +11597,7 @@ OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libjsoundalsa, \ DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES))) --- ./jdk/make/mapfiles/launchers/mapfile-ppc64 Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/make/mapfiles/launchers/mapfile-ppc64 Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/make/mapfiles/launchers/mapfile-ppc64 Mon Dec 19 15:56:12 2016 -0500 @@ -33,6 +33,7 @@ environ; # Public symbols and required by Java run time _environ; @@ -9381,7 +11607,7 @@ local: *; --- ./jdk/make/mapfiles/launchers/mapfile-x86 Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/make/mapfiles/launchers/mapfile-x86 Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/make/mapfiles/launchers/mapfile-x86 Mon Dec 19 15:56:12 2016 -0500 @@ -33,6 +33,7 @@ environ; # Public symbols and required by Java run time _environ; @@ -9391,7 +11617,7 @@ _start; # exported from ctr1/crtn, the clever hacker _init; # might know about them. However note, that --- ./jdk/make/mapfiles/launchers/mapfile-x86_64 Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/make/mapfiles/launchers/mapfile-x86_64 Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/make/mapfiles/launchers/mapfile-x86_64 Mon Dec 19 15:56:12 2016 -0500 @@ -33,6 +33,7 @@ environ; # Public symbols and required by Java run time _environ; @@ -9401,7 +11627,7 @@ local: *; --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./jdk/make/mapfiles/libattach/mapfile-bsd Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/make/mapfiles/libattach/mapfile-bsd Mon Dec 19 15:56:12 2016 -0500 @@ -0,0 +1,42 @@ +# +# Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. @@ -9446,7 +11672,7 @@ + *; +}; --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./jdk/make/mapfiles/libnio/mapfile-bsd Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/make/mapfiles/libnio/mapfile-bsd Mon Dec 19 15:56:12 2016 -0500 @@ -0,0 +1,195 @@ +# +# Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved. @@ -9644,7 +11870,7 @@ + *; +}; --- ./jdk/make/mapfiles/libunpack/mapfile-vers-unpack200 Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/make/mapfiles/libunpack/mapfile-vers-unpack200 Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/make/mapfiles/libunpack/mapfile-vers-unpack200 Mon Dec 19 15:56:12 2016 -0500 @@ -26,6 +26,9 @@ # Define library interface. @@ -9656,7 +11882,7 @@ *; }; --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./jdk/make/netbeans/common/bsd-sources.ent Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/make/netbeans/common/bsd-sources.ent Mon Dec 19 15:56:12 2016 -0500 @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="UTF-8"?> + @@ -9704,7 +11930,7 @@ + <location>${root}/src/bsd/classes</location> +</source-folder> --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./jdk/make/netbeans/common/bsd-view.ent Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/make/netbeans/common/bsd-view.ent Mon Dec 19 15:56:12 2016 -0500 @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="UTF-8"?> + @@ -9746,7 +11972,7 @@ + <excludes>${excludes}</excludes> +</source-folder> --- ./jdk/make/netbeans/common/java-data-native.ent Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/make/netbeans/common/java-data-native.ent Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/make/netbeans/common/java-data-native.ent Mon Dec 19 15:56:12 2016 -0500 @@ -34,6 +34,7 @@ <java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/4"> <compilation-unit> @@ -9756,7 +11982,7 @@ <package-root>${root}/src/solaris/classes</package-root> <package-root>${root}/src/windows/classes</package-root> --- ./jdk/make/netbeans/common/make.xml Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/make/netbeans/common/make.xml Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/make/netbeans/common/make.xml Mon Dec 19 15:56:12 2016 -0500 @@ -32,16 +32,21 @@ --> @@ -9792,7 +12018,7 @@ <attribute name="target"/> <attribute name="dir"/> --- ./jdk/make/netbeans/j2se/nbproject/project.xml Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/make/netbeans/j2se/nbproject/project.xml Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/make/netbeans/j2se/nbproject/project.xml Mon Dec 19 15:56:12 2016 -0500 @@ -34,6 +34,7 @@ <!DOCTYPE project [ <!ENTITY properties SYSTEM "../../common/properties.ent"> @@ -9826,7 +12052,7 @@ &unix-view; &windows-view; --- ./jdk/make/netbeans/world/nbproject/project.xml Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/make/netbeans/world/nbproject/project.xml Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/make/netbeans/world/nbproject/project.xml Mon Dec 19 15:56:12 2016 -0500 @@ -34,12 +34,14 @@ <!DOCTYPE project [ <!ENTITY properties SYSTEM "../../common/properties.ent"> @@ -9859,7 +12085,7 @@ &unix-view; &windows-view; --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./jdk/src/bsd/classes/java/net/DefaultInterface.java Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/bsd/classes/java/net/DefaultInterface.java Mon Dec 19 15:56:12 2016 -0500 @@ -0,0 +1,97 @@ +/* + * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. @@ -9959,7 +12185,7 @@ + } +} --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./jdk/src/bsd/classes/sun/nio/ch/DefaultSelectorProvider.java Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/bsd/classes/sun/nio/ch/DefaultSelectorProvider.java Mon Dec 19 15:56:12 2016 -0500 @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. @@ -10010,7 +12236,7 @@ + +} --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./jdk/src/bsd/classes/sun/nio/ch/KQueueArrayWrapper.java Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/bsd/classes/sun/nio/ch/KQueueArrayWrapper.java Mon Dec 19 15:56:12 2016 -0500 @@ -0,0 +1,213 @@ +/* + * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. @@ -10226,7 +12452,7 @@ + private static native void interrupt(int fd); +} --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./jdk/src/bsd/classes/sun/nio/ch/KQueueSelectorImpl.java Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/bsd/classes/sun/nio/ch/KQueueSelectorImpl.java Mon Dec 19 15:56:12 2016 -0500 @@ -0,0 +1,263 @@ +/* + * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. @@ -10492,7 +12718,7 @@ + } +} --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./jdk/src/bsd/classes/sun/nio/ch/KQueueSelectorProvider.java Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/bsd/classes/sun/nio/ch/KQueueSelectorProvider.java Mon Dec 19 15:56:12 2016 -0500 @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. @@ -10539,7 +12765,7 @@ + } +} --- ./jdk/src/bsd/doc/man/javah.1 Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/bsd/doc/man/javah.1 Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/bsd/doc/man/javah.1 Mon Dec 19 15:56:12 2016 -0500 @@ -8,7 +8,7 @@ .\" .\" This code is distributed in the hope that it will be useful, but WITHOUT @@ -10559,7 +12785,7 @@ \fIWindows\fR: --- ./jdk/src/bsd/doc/man/rmic.1 Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/bsd/doc/man/rmic.1 Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/bsd/doc/man/rmic.1 Mon Dec 19 15:56:12 2016 -0500 @@ -8,7 +8,7 @@ .\" .\" This code is distributed in the hope that it will be useful, but WITHOUT @@ -10588,7 +12814,7 @@ .TP 0.2i \(bu --- ./jdk/src/bsd/doc/man/rmid.1 Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/bsd/doc/man/rmid.1 Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/bsd/doc/man/rmid.1 Mon Dec 19 15:56:12 2016 -0500 @@ -8,7 +8,7 @@ .\" .\" This code is distributed in the hope that it will be useful, but WITHOUT @@ -10608,7 +12834,7 @@ .TP 0.2i \(bu --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./jdk/src/bsd/native/sun/nio/ch/KQueueArrayWrapper.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/bsd/native/sun/nio/ch/KQueueArrayWrapper.c Mon Dec 19 15:56:12 2016 -0500 @@ -0,0 +1,171 @@ +/* + * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. @@ -11636,7 +13862,7 @@ -} - --- ./jdk/src/share/bin/jli_util.h Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/share/bin/jli_util.h Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/share/bin/jli_util.h Mon Dec 19 15:56:12 2016 -0500 @@ -87,7 +87,7 @@ #define _LARGFILE64_SOURCE #define JLI_Lseek lseek64 @@ -11647,7 +13873,7 @@ #endif #ifdef _AIX --- ./jdk/src/share/classes/sun/awt/FontConfiguration.java Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/share/classes/sun/awt/FontConfiguration.java Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/share/classes/sun/awt/FontConfiguration.java Mon Dec 19 15:56:12 2016 -0500 @@ -1146,7 +1146,7 @@ */ HashMap<String, Boolean> existsMap; @@ -11658,7 +13884,7 @@ } else if (existsMap == null) { existsMap = new HashMap<String, Boolean>(); --- ./jdk/src/share/classes/sun/awt/OSInfo.java Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/share/classes/sun/awt/OSInfo.java Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/share/classes/sun/awt/OSInfo.java Mon Dec 19 15:56:12 2016 -0500 @@ -39,6 +39,7 @@ WINDOWS, LINUX, @@ -11679,7 +13905,7 @@ return MACOSX; } --- ./jdk/src/share/classes/sun/font/FontUtilities.java Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/share/classes/sun/font/FontUtilities.java Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/share/classes/sun/font/FontUtilities.java Mon Dec 19 15:56:12 2016 -0500 @@ -48,6 +48,8 @@ public static boolean isLinux; @@ -11699,7 +13925,7 @@ String t2kStr = System.getProperty("sun.java2d.font.scaler"); --- ./jdk/src/share/classes/sun/font/SunFontManager.java Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/share/classes/sun/font/SunFontManager.java Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/share/classes/sun/font/SunFontManager.java Mon Dec 19 15:56:12 2016 -0500 @@ -418,7 +418,7 @@ * registerFonts method as on-screen these JRE fonts * always go through the T2K rasteriser. @@ -11710,7 +13936,7 @@ registerFontDir(jreFontDirName); } --- ./jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java Mon Dec 19 15:56:12 2016 -0500 @@ -1306,7 +1306,7 @@ String osName = AccessController.doPrivileged( new GetPropertyAction("os.name")); @@ -11721,7 +13947,7 @@ new String[] { "COMPOUND_TEXT", // JDK historical --- ./jdk/src/share/classes/sun/print/PSPrinterJob.java Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/share/classes/sun/print/PSPrinterJob.java Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/share/classes/sun/print/PSPrinterJob.java Mon Dec 19 15:56:12 2016 -0500 @@ -1587,9 +1587,31 @@ } @@ -11757,7 +13983,7 @@ execCmd[n++] = "-P" + printer; } --- ./jdk/src/share/classes/sun/security/jgss/GSSManagerImpl.java Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/share/classes/sun/security/jgss/GSSManagerImpl.java Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/share/classes/sun/security/jgss/GSSManagerImpl.java Mon Dec 19 15:56:12 2016 -0500 @@ -48,6 +48,7 @@ public Boolean run() { String osname = System.getProperty("os.name"); @@ -11767,7 +13993,7 @@ osname.startsWith("Linux")) { return new Boolean(System.getProperty --- ./jdk/src/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java Mon Dec 19 15:56:12 2016 -0500 @@ -90,6 +90,12 @@ "libgssapi_krb5.so", "libgssapi_krb5.so.2", @@ -11782,7 +14008,7 @@ gssLibs = new String[]{ "libgssapi_krb5.dylib", --- ./jdk/src/share/classes/sun/tools/attach/META-INF/services/com.sun.tools.attach.spi.AttachProvider Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/share/classes/sun/tools/attach/META-INF/services/com.sun.tools.attach.spi.AttachProvider Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/share/classes/sun/tools/attach/META-INF/services/com.sun.tools.attach.spi.AttachProvider Mon Dec 19 15:56:12 2016 -0500 @@ -31,4 +31,5 @@ #[windows]sun.tools.attach.WindowsAttachProvider #[linux]sun.tools.attach.LinuxAttachProvider @@ -11790,7 +14016,7 @@ +#[bsd]sun.tools.attach.BsdAttachProvider #[aix]sun.tools.attach.AixAttachProvider --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./jdk/src/share/lib/security/java.security-bsd Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/share/lib/security/java.security-bsd Mon Dec 19 15:56:12 2016 -0500 @@ -0,0 +1,626 @@ +# +# This is the "master security properties file". @@ -12419,7 +14645,7 @@ +# EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE65381 \ +# FFFFFFFF FFFFFFFF, 2} --- ./jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp Mon Dec 19 15:56:12 2016 -0500 @@ -62,7 +62,7 @@ #endif // End of ZLIB @@ -12430,7 +14656,7 @@ ((((a) << 8) & 0xff00) | 0x00ff) & (((a) >> 8) | 0xff00) #else --- ./jdk/src/share/native/com/sun/media/sound/DirectAudioDevice.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/share/native/com/sun/media/sound/DirectAudioDevice.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/share/native/com/sun/media/sound/DirectAudioDevice.c Mon Dec 19 15:56:12 2016 -0500 @@ -121,7 +121,7 @@ } @@ -12459,7 +14685,7 @@ #define MAP_NATIVE2BE16(a) MAP_SWAP16_impl(a) #define MAP_NATIVE2LE32(a) (a) --- ./jdk/src/share/native/com/sun/media/sound/Utilities.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/share/native/com/sun/media/sound/Utilities.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/share/native/com/sun/media/sound/Utilities.c Mon Dec 19 15:56:12 2016 -0500 @@ -28,7 +28,7 @@ @@ -12470,7 +14696,7 @@ #else return 1; --- ./jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h Mon Dec 19 15:56:12 2016 -0500 @@ -40,7 +40,7 @@ #endif #endif @@ -12481,7 +14707,7 @@ #define __LO(x) *(int*)&x #define __HIp(x) *(1+(int*)x) --- ./jdk/src/share/native/sun/awt/image/awt_parseImage.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/share/native/sun/awt/image/awt_parseImage.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/share/native/sun/awt/image/awt_parseImage.c Mon Dec 19 15:56:12 2016 -0500 @@ -624,7 +624,7 @@ switch(type) { case java_awt_image_BufferedImage_TYPE_INT_ARGB: @@ -12510,7 +14736,7 @@ colorOrder[1] = 1; colorOrder[2] = 0; --- ./jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c Mon Dec 19 15:56:12 2016 -0500 @@ -1176,7 +1176,7 @@ #define NLUT 8 @@ -12521,7 +14747,7 @@ #else #define INDEXES { 0, 1, 2, 3, 4, 5, 6, 7 } --- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv2x2_f.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv2x2_f.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv2x2_f.c Mon Dec 19 15:56:12 2016 -0500 @@ -86,7 +86,7 @@ #endif /* MLIB_USE_FTOI_CLAMPING */ @@ -12562,7 +14788,7 @@ #endif /* _NO_LONGLONG */ --- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16ext.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16ext.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16ext.c Mon Dec 19 15:56:12 2016 -0500 @@ -126,7 +126,7 @@ #define D2I(x) CLAMP_S32((x) SAT_OFF) @@ -12603,7 +14829,7 @@ /***************************************************************/ --- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16nw.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16nw.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16nw.c Mon Dec 19 15:56:12 2016 -0500 @@ -94,7 +94,7 @@ #define D2I(x) CLAMP_S32((x) SAT_OFF) @@ -12644,7 +14870,7 @@ /***************************************************************/ --- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8ext.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8ext.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8ext.c Mon Dec 19 15:56:12 2016 -0500 @@ -126,7 +126,7 @@ #define D2I(x) CLAMP_S32((x) SAT_OFF) @@ -12685,7 +14911,7 @@ /***************************************************************/ --- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8nw.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8nw.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8nw.c Mon Dec 19 15:56:12 2016 -0500 @@ -95,7 +95,7 @@ #define D2I(x) CLAMP_S32((x) SAT_OFF) @@ -12726,7 +14952,7 @@ /***************************************************************/ --- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16ext.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16ext.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16ext.c Mon Dec 19 15:56:12 2016 -0500 @@ -126,7 +126,7 @@ #define D2I(x) CLAMP_S32((x) SAT_OFF) @@ -12767,7 +14993,7 @@ /***************************************************************/ --- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16nw.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16nw.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16nw.c Mon Dec 19 15:56:12 2016 -0500 @@ -94,7 +94,7 @@ #define D2I(x) CLAMP_S32((x) SAT_OFF) @@ -12808,7 +15034,7 @@ /***************************************************************/ --- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageCopy_Bit.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageCopy_Bit.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageCopy_Bit.c Mon Dec 19 15:56:12 2016 -0500 @@ -95,7 +95,7 @@ dst = dp[0]; if (ld_offset + size < 32) { @@ -13029,7 +15255,7 @@ #else /* _LONGLONG */ --- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_64.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_64.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_64.c Mon Dec 19 15:56:12 2016 -0500 @@ -168,7 +168,7 @@ } @@ -13311,7 +15537,7 @@ dp[13] = t1; dp[14] = t2; --- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_Bit.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_Bit.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_Bit.c Mon Dec 19 15:56:12 2016 -0500 @@ -88,7 +88,7 @@ } d64_2_f32; @@ -13464,7 +15690,7 @@ ((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 Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageUtils.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageUtils.c Mon Dec 19 15:56:12 2016 -0500 @@ -30,7 +30,7 @@ typedef union { mlib_d64 db; @@ -13475,7 +15701,7 @@ #else mlib_s32 int0, int1; --- ./jdk/src/share/native/sun/awt/medialib/mlib_c_ImageCopy.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/share/native/sun/awt/medialib/mlib_c_ImageCopy.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/share/native/sun/awt/medialib/mlib_c_ImageCopy.c Mon Dec 19 15:56:12 2016 -0500 @@ -275,11 +275,11 @@ for (i = 0; j <= (b_size - 4); j += 4, i++) { src0 = src1; @@ -13575,7 +15801,7 @@ dp += SIZE; sp += SIZE; --- ./jdk/src/share/native/sun/awt/medialib/mlib_c_ImageLookUp_f.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/share/native/sun/awt/medialib/mlib_c_ImageLookUp_f.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/share/native/sun/awt/medialib/mlib_c_ImageLookUp_f.c Mon Dec 19 15:56:12 2016 -0500 @@ -120,7 +120,7 @@ } \ } @@ -14809,7 +17035,7 @@ dp[13] = t1; dp[14] = t2; --- ./jdk/src/share/native/sun/awt/medialib/mlib_image.h Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/share/native/sun/awt/medialib/mlib_image.h Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/share/native/sun/awt/medialib/mlib_image.h Mon Dec 19 15:56:12 2016 -0500 @@ -27,9 +27,6 @@ #ifndef MLIB_IMAGE_H #define MLIB_IMAGE_H @@ -14821,7 +17047,7 @@ #include <mlib_status.h> #include <mlib_sys.h> --- ./jdk/src/share/native/sun/awt/medialib/mlib_sys.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/share/native/sun/awt/medialib/mlib_sys.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/share/native/sun/awt/medialib/mlib_sys.c Mon Dec 19 15:56:12 2016 -0500 @@ -29,7 +29,7 @@ #ifdef MACOSX #include <unistd.h> @@ -14842,7 +17068,7 @@ return (void *) memalign(8, size); #endif /* _MSC_VER */ --- ./jdk/src/share/native/sun/font/layout/LEStandalone.h Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/share/native/sun/font/layout/LEStandalone.h Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/share/native/sun/font/layout/LEStandalone.h Mon Dec 19 15:56:12 2016 -0500 @@ -136,7 +136,7 @@ #define U_CAPI extern "C" @@ -14853,7 +17079,7 @@ #endif #endif --- ./jdk/src/share/native/sun/java2d/cmm/lcms/LCMS.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/share/native/sun/java2d/cmm/lcms/LCMS.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/share/native/sun/java2d/cmm/lcms/LCMS.c Mon Dec 19 15:56:12 2016 -0500 @@ -182,7 +182,7 @@ return 0L; } @@ -14864,7 +17090,7 @@ if (isInIntPacked) { inFormatter ^= DOSWAP_SH(1); --- ./jdk/src/share/native/sun/management/DiagnosticCommandImpl.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/share/native/sun/management/DiagnosticCommandImpl.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/share/native/sun/management/DiagnosticCommandImpl.c Mon Dec 19 15:56:12 2016 -0500 @@ -27,6 +27,7 @@ #include <jni.h> #include "management.h" @@ -14874,7 +17100,7 @@ JNIEXPORT void JNICALL Java_sun_management_DiagnosticCommandImpl_setNotificationEnabled (JNIEnv *env, jobject dummy, jboolean enabled) { --- ./jdk/src/solaris/back/util_md.h Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/back/util_md.h Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/back/util_md.h Mon Dec 19 15:56:12 2016 -0500 @@ -51,7 +51,7 @@ /* On little endian machines, convert java big endian numbers. */ @@ -14885,7 +17111,7 @@ #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 Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/bin/ergo_i586.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/bin/ergo_i586.c Mon Dec 19 15:56:12 2016 -0500 @@ -106,7 +106,7 @@ #endif /* __solaris__ */ @@ -14905,7 +17131,7 @@ /* * Routines shared by solaris-i586 and linux-i586. --- ./jdk/src/solaris/bin/java_md_solinux.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/bin/java_md_solinux.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/bin/java_md_solinux.c Mon Dec 19 15:56:12 2016 -0500 @@ -35,6 +35,9 @@ #include <sys/stat.h> #include <unistd.h> @@ -14998,7 +17224,7 @@ int --- ./jdk/src/solaris/bin/java_md_solinux.h Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/bin/java_md_solinux.h Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/bin/java_md_solinux.h Mon Dec 19 15:56:12 2016 -0500 @@ -26,17 +26,26 @@ #ifndef JAVA_MD_SOLINUX_H #define JAVA_MD_SOLINUX_H @@ -15040,7 +17266,7 @@ static const char *system_dir = "/usr/java"; static const char *user_dir = "/java"; --- ./jdk/src/solaris/classes/java/lang/UNIXProcess.java Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/classes/java/lang/UNIXProcess.java Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/classes/java/lang/UNIXProcess.java Mon Dec 19 15:56:12 2016 -0500 @@ -82,6 +82,8 @@ LINUX(LaunchMechanism.VFORK, LaunchMechanism.FORK), @@ -15089,7 +17315,7 @@ case AIX: // There is a risk that pid will be recycled, causing us to --- ./jdk/src/solaris/classes/sun/awt/X11FontManager.java Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/classes/sun/awt/X11FontManager.java Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/classes/sun/awt/X11FontManager.java Mon Dec 19 15:56:12 2016 -0500 @@ -234,7 +234,7 @@ if (fontID != null) { fileName = (String)fontNameMap.get(fontID); @@ -15118,7 +17344,7 @@ !mFontConfig.fontFilesArePresent()) || (FontUtilities.isSolaris && !mFontConfig.fontFilesArePresent()))) { --- ./jdk/src/solaris/classes/sun/awt/fontconfigs/bsd.fontconfig.properties Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/classes/sun/awt/fontconfigs/bsd.fontconfig.properties Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/classes/sun/awt/fontconfigs/bsd.fontconfig.properties Mon Dec 19 15:56:12 2016 -0500 @@ -26,134 +26,134 @@ # Version @@ -15403,7 +17629,7 @@ +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 Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/classes/sun/net/PortConfig.java Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/classes/sun/net/PortConfig.java Mon Dec 19 15:56:12 2016 -0500 @@ -52,7 +52,7 @@ } else if (os.startsWith("SunOS")) { defaultLower = 32768; @@ -15414,7 +17640,7 @@ defaultUpper = 65535; } else if (os.startsWith("AIX")) { --- ./jdk/src/solaris/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java Mon Dec 19 15:56:12 2016 -0500 @@ -66,7 +66,7 @@ return createProvider("sun.nio.ch.SolarisAsynchronousChannelProvider"); if (osname.equals("Linux")) @@ -15425,7 +17651,7 @@ if (osname.equals("AIX")) return createProvider("sun.nio.ch.AixAsynchronousChannelProvider"); --- ./jdk/src/solaris/classes/sun/nio/fs/BsdFileSystemProvider.java Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/classes/sun/nio/fs/BsdFileSystemProvider.java Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/classes/sun/nio/fs/BsdFileSystemProvider.java Mon Dec 19 15:56:12 2016 -0500 @@ -25,10 +25,14 @@ package sun.nio.fs; @@ -15460,7 +17686,7 @@ + } } --- ./jdk/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java Mon Dec 19 15:56:12 2016 -0500 @@ -61,6 +61,8 @@ return createProvider("sun.nio.fs.SolarisFileSystemProvider"); if (osname.equals("Linux")) @@ -15471,7 +17697,7 @@ return createProvider("sun.nio.fs.MacOSXFileSystemProvider"); if (osname.equals("AIX")) --- ./jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java Mon Dec 19 15:56:12 2016 -0500 @@ -161,6 +161,7 @@ static boolean isBSD() { @@ -15496,7 +17722,7 @@ }; --- ./jdk/src/solaris/classes/sun/tools/attach/BsdVirtualMachine.java Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/classes/sun/tools/attach/BsdVirtualMachine.java Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/classes/sun/tools/attach/BsdVirtualMachine.java Mon Dec 19 15:56:12 2016 -0500 @@ -273,7 +273,7 @@ try { b = s.getBytes("UTF-8"); @@ -15507,7 +17733,7 @@ BsdVirtualMachine.write(fd, b, 0, b.length); } --- ./jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_PCM.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_PCM.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_PCM.c Mon Dec 19 15:56:12 2016 -0500 @@ -675,6 +675,7 @@ return -1; } @@ -15525,7 +17751,7 @@ TRACE0("xrun_recovery: EAGAIN try again flag.\n"); return 0; --- ./jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_SolarisOS_PCM.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_SolarisOS_PCM.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_SolarisOS_PCM.c Mon Dec 19 15:56:12 2016 -0500 @@ -140,7 +140,7 @@ (float) ((int) sr->samp_rates[s]), DAUDIO_PCM, /* encoding - let's only do PCM */ @@ -15536,7 +17762,7 @@ #else (bits[b] > 8)?TRUE:FALSE /* big endian */ --- ./jdk/src/solaris/native/common/jni_util_md.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/native/common/jni_util_md.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/native/common/jni_util_md.c Mon Dec 19 15:56:12 2016 -0500 @@ -28,6 +28,7 @@ #include "jni.h" #include "jni_util.h" @@ -15546,7 +17772,7 @@ jstring nativeNewStringPlatform(JNIEnv *env, const char *str) { return NULL; --- ./jdk/src/solaris/native/java/lang/java_props_md.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/native/java/lang/java_props_md.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/native/java/lang/java_props_md.c Mon Dec 19 15:56:12 2016 -0500 @@ -151,7 +151,7 @@ lc = setlocale(cat, NULL); #endif @@ -15582,7 +17808,7 @@ /* user properties */ { --- ./jdk/src/solaris/native/java/net/Inet4AddressImpl.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/native/java/net/Inet4AddressImpl.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/native/java/net/Inet4AddressImpl.c Mon Dec 19 15:56:12 2016 -0500 @@ -36,20 +36,13 @@ #include <stdlib.h> #include <ctype.h> @@ -15624,7 +17850,7 @@ if (error) { --- ./jdk/src/solaris/native/java/net/Inet6AddressImpl.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/native/java/net/Inet6AddressImpl.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/native/java/net/Inet6AddressImpl.c Mon Dec 19 15:56:12 2016 -0500 @@ -33,7 +33,7 @@ #include <strings.h> #include <stdlib.h> @@ -15667,7 +17893,7 @@ /* Try once, with our static buffer. */ memset(&hints, 0, sizeof(hints)); --- ./jdk/src/solaris/native/java/net/NetworkInterface.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/native/java/net/NetworkInterface.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/native/java/net/NetworkInterface.c Mon Dec 19 15:56:12 2016 -0500 @@ -62,14 +62,19 @@ #include <sys/param.h> #include <sys/ioctl.h> @@ -15691,7 +17917,7 @@ #include "jvm.h" #include "jni_util.h" --- ./jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c Mon Dec 19 15:56:12 2016 -0500 @@ -2222,7 +2222,7 @@ } } @@ -15702,7 +17928,7 @@ index = getDefaultScopeID(env); } --- ./jdk/src/solaris/native/java/net/bsd_close.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/native/java/net/bsd_close.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/native/java/net/bsd_close.c Mon Dec 19 15:56:12 2016 -0500 @@ -316,11 +316,8 @@ } @@ -15801,7 +18027,7 @@ +#endif } --- ./jdk/src/solaris/native/java/net/net_util_md.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/native/java/net/net_util_md.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/native/java/net/net_util_md.c Mon Dec 19 15:56:12 2016 -0500 @@ -45,6 +45,10 @@ #endif #endif @@ -15823,7 +18049,7 @@ static jfieldID ni_defaultIndexID; if (ni_class == NULL) { --- ./jdk/src/solaris/native/java/net/net_util_md.h Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/native/java/net/net_util_md.h Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/native/java/net/net_util_md.h Mon Dec 19 15:56:12 2016 -0500 @@ -47,7 +47,7 @@ close subroutine does not return until the select call returns. ... @@ -15834,7 +18060,7 @@ 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 Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/native/java/util/TimeZone_md.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/native/java/util/TimeZone_md.c Mon Dec 19 15:56:12 2016 -0500 @@ -56,7 +56,11 @@ #endif @@ -15899,7 +18125,7 @@ -#endif /* MACOSX */ +#endif /* _ALLBSD_SOURCE */ --- ./jdk/src/solaris/native/sun/awt/awt_Font.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/native/sun/awt/awt_Font.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/native/sun/awt/awt_Font.c Mon Dec 19 15:56:12 2016 -0500 @@ -255,7 +255,7 @@ if (strcmp(style, "regular") == 0) { altstyle = "roman"; @@ -15910,7 +18136,7 @@ family = "lucida"; } --- ./jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c Mon Dec 19 15:56:12 2016 -0500 @@ -121,7 +121,7 @@ */ @@ -15996,7 +18222,7 @@ return point; } --- ./jdk/src/solaris/native/sun/awt/awt_InputMethod.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/native/sun/awt/awt_InputMethod.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/native/sun/awt/awt_InputMethod.c Mon Dec 19 15:56:12 2016 -0500 @@ -52,7 +52,7 @@ XIMPreeditDrawCallbackStruct *); static void PreeditCaretCallback(XIC, XPointer, @@ -16217,7 +18443,7 @@ adjustStatusWindow(window); AWT_UNLOCK(); --- ./jdk/src/solaris/native/sun/awt/awt_Robot.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/native/sun/awt/awt_Robot.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/native/sun/awt/awt_Robot.c Mon Dec 19 15:56:12 2016 -0500 @@ -45,7 +45,7 @@ #include "wsutils.h" #include "list.h" @@ -16228,7 +18454,7 @@ #endif --- ./jdk/src/solaris/native/sun/awt/extutil.h Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/native/sun/awt/extutil.h Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/native/sun/awt/extutil.h Mon Dec 19 15:56:12 2016 -0500 @@ -58,7 +58,7 @@ */ /* $XFree86: xc/include/extensions/extutil.h,v 1.5 2001/01/17 17:53:20 dawes Exp $ */ @@ -16245,7 +18471,7 @@ -#endif /* __linux__ || MACOSX */ +#endif /* __linux__ || _ALLBSD_SOURCE */ --- ./jdk/src/solaris/native/sun/awt/fontpath.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/native/sun/awt/fontpath.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/native/sun/awt/fontpath.c Mon Dec 19 15:56:12 2016 -0500 @@ -23,9 +23,9 @@ * questions. */ @@ -16335,7 +18561,7 @@ #endif ) { --- ./jdk/src/solaris/native/sun/java2d/j2d_md.h Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/native/sun/java2d/j2d_md.h Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/native/sun/java2d/j2d_md.h Mon Dec 19 15:56:12 2016 -0500 @@ -28,11 +28,11 @@ #include <sys/types.h> @@ -16352,7 +18578,7 @@ typedef unsigned char jubyte; typedef unsigned short jushort; --- ./jdk/src/solaris/native/sun/java2d/loops/mlib_ImageZoom_NN.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/native/sun/java2d/loops/mlib_ImageZoom_NN.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/native/sun/java2d/loops/mlib_ImageZoom_NN.c Mon Dec 19 15:56:12 2016 -0500 @@ -63,9 +63,6 @@ * MLIB_EDGE_SRC_PADDED */ @@ -16458,7 +18684,7 @@ } else { /* aligned */ --- ./jdk/src/solaris/native/sun/java2d/loops/vis_FuncArray.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/native/sun/java2d/loops/vis_FuncArray.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/native/sun/java2d/loops/vis_FuncArray.c Mon Dec 19 15:56:12 2016 -0500 @@ -804,7 +804,7 @@ static int initialized; static int usevis = JNI_TRUE; @@ -16469,7 +18695,7 @@ #else # define ULTRA_CHIP "sun4u" --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./jdk/src/solaris/native/sun/management/BsdOperatingSystem.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/native/sun/management/BsdOperatingSystem.c Mon Dec 19 15:56:12 2016 -0500 @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. @@ -16514,7 +18740,7 @@ + return (jdouble) -1; +} --- ./jdk/src/solaris/native/sun/management/OperatingSystemImpl.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/native/sun/management/OperatingSystemImpl.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/native/sun/management/OperatingSystemImpl.c Mon Dec 19 15:56:12 2016 -0500 @@ -56,6 +56,9 @@ #include <limits.h> #include <stdlib.h> @@ -16647,7 +18873,7 @@ JNIEXPORT jlong JNICALL Java_sun_management_OperatingSystemImpl_getOpenFileDescriptorCount -@@ -421,12 +489,6 @@ +@@ -421,12 +489,8 @@ free(fds); return nfiles; @@ -16657,10 +18883,12 @@ - */ - // throw_internal_error(env, "Unimplemented in FreeBSD"); - return (100); ++#elif defined(__OpenBSD__) ++ return getdtablecount(); #else /* solaris/linux */ DIR *dirp; struct dirent dbuf; -@@ -444,7 +506,7 @@ +@@ -444,7 +508,7 @@ dirp = opendir(FD_DIR); if (dirp == NULL) { @@ -16670,7 +18898,7 @@ } --- ./jdk/src/solaris/native/sun/net/portconfig.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/native/sun/net/portconfig.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/native/sun/net/portconfig.c Mon Dec 19 15:56:12 2016 -0500 @@ -67,6 +67,24 @@ range->lower = net_getParam("/dev/tcp", "tcp_smallest_anon_port"); return 0; @@ -16697,7 +18925,7 @@ { int ret; --- ./jdk/src/solaris/native/sun/nio/ch/sctp/Sctp.h Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/native/sun/nio/ch/sctp/Sctp.h Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/native/sun/nio/ch/sctp/Sctp.h Mon Dec 19 15:56:12 2016 -0500 @@ -67,7 +67,7 @@ @@ -16747,7 +18975,7 @@ #endif /* !SUN_NIO_CH_SCTP_H */ --- ./jdk/src/solaris/native/sun/nio/ch/sctp/SctpNet.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/native/sun/nio/ch/sctp/SctpNet.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/native/sun/nio/ch/sctp/SctpNet.c Mon Dec 19 15:56:12 2016 -0500 @@ -58,6 +58,7 @@ */ jboolean loadSocketExtensionFuncs @@ -16765,7 +18993,7 @@ funcsLoaded = JNI_TRUE; return JNI_TRUE; --- ./jdk/src/solaris/native/sun/nio/fs/MagicFileTypeDetector.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/native/sun/nio/fs/MagicFileTypeDetector.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/native/sun/nio/fs/MagicFileTypeDetector.c Mon Dec 19 15:56:12 2016 -0500 @@ -31,6 +31,12 @@ #include <dlfcn.h> #include <string.h> @@ -16789,7 +19017,7 @@ return JNI_FALSE; } --- ./jdk/src/solaris/native/sun/security/pkcs11/j2secmod_md.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/native/sun/security/pkcs11/j2secmod_md.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/native/sun/security/pkcs11/j2secmod_md.c Mon Dec 19 15:56:12 2016 -0500 @@ -54,7 +54,7 @@ } @@ -16800,7 +19028,7 @@ #else void *hModule = dlopen(libName, RTLD_NOLOAD); --- ./jdk/src/solaris/native/sun/tools/attach/BsdVirtualMachine.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/native/sun/tools/attach/BsdVirtualMachine.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/native/sun/tools/attach/BsdVirtualMachine.c Mon Dec 19 15:56:12 2016 -0500 @@ -37,7 +37,9 @@ #include <sys/types.h> #include <sys/socket.h> @@ -16812,7 +19040,7 @@ #include <fcntl.h> --- ./jdk/src/solaris/native/sun/xawt/XWindow.c Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/solaris/native/sun/xawt/XWindow.c Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/solaris/native/sun/xawt/XWindow.c Mon Dec 19 15:56:12 2016 -0500 @@ -886,7 +886,7 @@ { KeySym originalKeysym = *keysym; @@ -16823,7 +19051,7 @@ * 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 Thu Sep 22 13:05:53 2016 -0700 -+++ ./jdk/src/windows/native/com/sun/media/sound/PLATFORM_API_WinOS_DirectSound.cpp Mon Oct 24 19:45:36 2016 -0700 ++++ ./jdk/src/windows/native/com/sun/media/sound/PLATFORM_API_WinOS_DirectSound.cpp Mon Dec 19 15:56:12 2016 -0500 @@ -308,7 +308,7 @@ DAUDIO_PCM, (bitsArray[bitIndex]==8)?FALSE:TRUE, /* signed */ |