diff options
author | glewis <glewis@FreeBSD.org> | 2019-04-20 00:31:33 +0800 |
---|---|---|
committer | glewis <glewis@FreeBSD.org> | 2019-04-20 00:31:33 +0800 |
commit | 0d434c47d596afdd30efdab270009da9aa6ba70a (patch) | |
tree | ad7cd58e88b6dc5102193a7f120363558831d2a2 | |
parent | f7fcea3935d67840ecea500b7e7d9ac036f859a4 (diff) | |
download | freebsd-ports-gnome-0d434c47d596afdd30efdab270009da9aa6ba70a.tar.gz freebsd-ports-gnome-0d434c47d596afdd30efdab270009da9aa6ba70a.tar.zst freebsd-ports-gnome-0d434c47d596afdd30efdab270009da9aa6ba70a.zip |
* Update to 8u212.
* Change master site to Github
* Remove patches and Makefile fixes that have been upstreamed to Github
30 files changed, 28 insertions, 23012 deletions
diff --git a/java/openjdk8/Makefile b/java/openjdk8/Makefile index 256c9f4b5e7e..f3d593ae3d1c 100644 --- a/java/openjdk8/Makefile +++ b/java/openjdk8/Makefile @@ -1,49 +1,20 @@ # $FreeBSD$ PORTNAME= openjdk -PORTVERSION= ${JDK_MAJOR_VERSION}.${JDK_UPDATE_VERSION}.${JDK_BUILD_NUMBER:S/^0//} +PORTVERSION= ${JDK_MAJOR_VERSION}.${JDK_UPDATE_VERSION}.${JDK_BUILD_NUMBER:S/^0//}.${BSD_JDK_VERSION} CATEGORIES= java devel -MASTER_SITES= http://download.java.net/openjdk/jdk${JDK_MAJOR_VERSION}/promoted/b${DIST_BUILD_NUMBER}/:jdk \ - https://adopt-openjdk.ci.cloudbees.com/job/jtreg/${JTREG_JENKINS_BUILD}/artifact/:jtreg \ - LOCAL/jkim:jdk,jtreg +MASTER_SITES= https://github.com/battleblow/openjdk-jdk8u/archive/:jdk \ + LOCAL/jkim:jtreg PKGNAMESUFFIX?= ${JDK_MAJOR_VERSION} -DISTNAME= ${PORTNAME}-${JDK_MAJOR_VERSION}-src-b${DIST_BUILD_NUMBER}-03_mar_2014 -DISTFILES= ${DISTNAME}.zip:jdk - -PATCH_SITES= LOCAL/glewis/openjdk8 -PATCHFILES= patch-8u05-b13.xz \ - patch-8u11-b13.xz \ - patch-8u20-b26.xz \ - patch-8u25-b17.xz \ - patch-8u31-b13.xz \ - patch-8u40-b25.xz \ - patch-8u45-b14.xz \ - patch-8u51-b16.xz \ - patch-8u60-b23.xz \ - patch-8u66-b17-1.xz \ - patch-8u72-b15.xz \ - patch-8u74-b02.xz \ - patch-8u77-b03.xz \ - patch-8u92-b14.xz \ - patch-8u102-b14.xz \ - patch-8u112-b16.xz \ - patch-8u121-b13.xz \ - patch-8u131-b11.xz \ - patch-8u144-b01.xz \ - patch-8u152-b16.xz \ - patch-8u162-b12.xz \ - patch-8u172-b11.xz \ - patch-8u181-b13.xz \ - patch-8u192-b26.xz \ - patch-8u202-b08.xz +DISTNAME= jdk${JDK_MAJOR_VERSION}u${JDK_UPDATE_VERSION}-b${JDK_BUILD_NUMBER}.${BSD_JDK_VERSION} +DISTFILES= ${DISTNAME}.tar.gz:jdk MAINTAINER= java@FreeBSD.org COMMENT?= Java Development Kit ${JDK_MAJOR_VERSION} LICENSE= GPLv2 -BUILD_DEPENDS= zip:archivers/zip \ - autoconf>0:devel/autoconf \ +BUILD_DEPENDS= autoconf>0:devel/autoconf \ ${LOCALBASE}/include/cups/cups.h:print/cups \ bash:shells/bash LIB_DEPENDS= libfreetype.so:print/freetype2 \ @@ -51,140 +22,11 @@ LIB_DEPENDS= libfreetype.so:print/freetype2 \ RUN_DEPENDS= javavm:java/javavmwrapper \ dejavu>0:x11-fonts/dejavu -USES= compiler:features dos2unix gmake iconv pkgconfig \ - shebangfix - -.if !exists(/usr/bin/unzip) -BUILD_DEPENDS+= ${UNZIP_CMD}:archivers/unzip -.endif +USES= compiler:features gmake iconv pkgconfig shebangfix ONLY_FOR_ARCHS= aarch64 amd64 armv6 armv7 i386 powerpc powerpc64 -WRKSRC= ${WRKDIR}/${PORTNAME} - -DOS2UNIX_FILES= jdk/src/bsd/doc/man/appletviewer.1 \ - jdk/src/bsd/doc/man/extcheck.1 \ - jdk/src/bsd/doc/man/idlj.1 \ - jdk/src/bsd/doc/man/jar.1 \ - jdk/src/bsd/doc/man/jarsigner.1 \ - jdk/src/bsd/doc/man/java.1 \ - jdk/src/bsd/doc/man/javac.1 \ - jdk/src/bsd/doc/man/javadoc.1 \ - jdk/src/bsd/doc/man/javah.1 \ - jdk/src/bsd/doc/man/javap.1 \ - jdk/src/bsd/doc/man/jcmd.1 \ - jdk/src/bsd/doc/man/jconsole.1 \ - jdk/src/bsd/doc/man/jdb.1 \ - jdk/src/bsd/doc/man/jdeps.1 \ - jdk/src/bsd/doc/man/jhat.1 \ - jdk/src/bsd/doc/man/jinfo.1 \ - jdk/src/bsd/doc/man/jjs.1 \ - jdk/src/bsd/doc/man/jmap.1 \ - jdk/src/bsd/doc/man/jps.1 \ - jdk/src/bsd/doc/man/jrunscript.1 \ - jdk/src/bsd/doc/man/jsadebugd.1 \ - jdk/src/bsd/doc/man/jstack.1 \ - jdk/src/bsd/doc/man/jstat.1 \ - jdk/src/bsd/doc/man/jstatd.1 \ - jdk/src/bsd/doc/man/keytool.1 \ - jdk/src/bsd/doc/man/native2ascii.1 \ - jdk/src/bsd/doc/man/orbd.1 \ - jdk/src/bsd/doc/man/pack200.1 \ - jdk/src/bsd/doc/man/policytool.1 \ - jdk/src/bsd/doc/man/rmic.1 \ - jdk/src/bsd/doc/man/rmid.1 \ - jdk/src/bsd/doc/man/rmiregistry.1 \ - jdk/src/bsd/doc/man/schemagen.1 \ - jdk/src/bsd/doc/man/serialver.1 \ - jdk/src/bsd/doc/man/servertool.1 \ - jdk/src/bsd/doc/man/tnameserv.1 \ - jdk/src/bsd/doc/man/unpack200.1 \ - jdk/src/bsd/doc/man/wsgen.1 \ - jdk/src/bsd/doc/man/wsimport.1 \ - jdk/src/bsd/doc/man/xjc.1 \ - jdk/src/linux/doc/man/appletviewer.1 \ - jdk/src/linux/doc/man/extcheck.1 \ - jdk/src/linux/doc/man/idlj.1 \ - jdk/src/linux/doc/man/jar.1 \ - jdk/src/linux/doc/man/jarsigner.1 \ - jdk/src/linux/doc/man/java.1 \ - jdk/src/linux/doc/man/javac.1 \ - jdk/src/linux/doc/man/javadoc.1 \ - jdk/src/linux/doc/man/javah.1 \ - jdk/src/linux/doc/man/javap.1 \ - jdk/src/linux/doc/man/jcmd.1 \ - jdk/src/linux/doc/man/jconsole.1 \ - jdk/src/linux/doc/man/jdb.1 \ - jdk/src/linux/doc/man/jdeps.1 \ - jdk/src/linux/doc/man/jhat.1 \ - jdk/src/linux/doc/man/jinfo.1 \ - jdk/src/linux/doc/man/jjs.1 \ - jdk/src/linux/doc/man/jmap.1 \ - jdk/src/linux/doc/man/jps.1 \ - jdk/src/linux/doc/man/jrunscript.1 \ - jdk/src/linux/doc/man/jsadebugd.1 \ - jdk/src/linux/doc/man/jstack.1 \ - jdk/src/linux/doc/man/jstat.1 \ - jdk/src/linux/doc/man/jstatd.1 \ - jdk/src/linux/doc/man/keytool.1 \ - jdk/src/linux/doc/man/native2ascii.1 \ - jdk/src/linux/doc/man/orbd.1 \ - jdk/src/linux/doc/man/pack200.1 \ - jdk/src/linux/doc/man/policytool.1 \ - jdk/src/linux/doc/man/rmic.1 \ - jdk/src/linux/doc/man/rmid.1 \ - jdk/src/linux/doc/man/rmiregistry.1 \ - jdk/src/linux/doc/man/schemagen.1 \ - jdk/src/linux/doc/man/serialver.1 \ - jdk/src/linux/doc/man/servertool.1 \ - jdk/src/linux/doc/man/tnameserv.1 \ - jdk/src/linux/doc/man/unpack200.1 \ - jdk/src/linux/doc/man/wsgen.1 \ - jdk/src/linux/doc/man/wsimport.1 \ - jdk/src/linux/doc/man/xjc.1 \ - jdk/src/share/classes/com/sun/org/apache/xml/internal/security/resource/xmlsecurity_en.properties \ - jdk/src/solaris/doc/sun/man/man1/appletviewer.1 \ - jdk/src/solaris/doc/sun/man/man1/extcheck.1 \ - jdk/src/solaris/doc/sun/man/man1/idlj.1 \ - jdk/src/solaris/doc/sun/man/man1/jar.1 \ - jdk/src/solaris/doc/sun/man/man1/jarsigner.1 \ - jdk/src/solaris/doc/sun/man/man1/java.1 \ - jdk/src/solaris/doc/sun/man/man1/javac.1 \ - jdk/src/solaris/doc/sun/man/man1/javadoc.1 \ - jdk/src/solaris/doc/sun/man/man1/javah.1 \ - jdk/src/solaris/doc/sun/man/man1/javap.1 \ - jdk/src/solaris/doc/sun/man/man1/jcmd.1 \ - jdk/src/solaris/doc/sun/man/man1/jconsole.1 \ - jdk/src/solaris/doc/sun/man/man1/jdb.1 \ - jdk/src/solaris/doc/sun/man/man1/jdeps.1 \ - jdk/src/solaris/doc/sun/man/man1/jhat.1 \ - jdk/src/solaris/doc/sun/man/man1/jinfo.1 \ - jdk/src/solaris/doc/sun/man/man1/jjs.1 \ - jdk/src/solaris/doc/sun/man/man1/jmap.1 \ - jdk/src/solaris/doc/sun/man/man1/jps.1 \ - jdk/src/solaris/doc/sun/man/man1/jrunscript.1 \ - jdk/src/solaris/doc/sun/man/man1/jsadebugd.1 \ - jdk/src/solaris/doc/sun/man/man1/jstack.1 \ - jdk/src/solaris/doc/sun/man/man1/jstat.1 \ - jdk/src/solaris/doc/sun/man/man1/jstatd.1 \ - jdk/src/solaris/doc/sun/man/man1/keytool.1 \ - jdk/src/solaris/doc/sun/man/man1/native2ascii.1 \ - jdk/src/solaris/doc/sun/man/man1/orbd.1 \ - jdk/src/solaris/doc/sun/man/man1/pack200.1 \ - jdk/src/solaris/doc/sun/man/man1/policytool.1 \ - jdk/src/solaris/doc/sun/man/man1/rmic.1 \ - jdk/src/solaris/doc/sun/man/man1/rmid.1 \ - jdk/src/solaris/doc/sun/man/man1/rmiregistry.1 \ - jdk/src/solaris/doc/sun/man/man1/schemagen.1 \ - jdk/src/solaris/doc/sun/man/man1/serialver.1 \ - jdk/src/solaris/doc/sun/man/man1/servertool.1 \ - jdk/src/solaris/doc/sun/man/man1/tnameserv.1 \ - jdk/src/solaris/doc/sun/man/man1/unpack200.1 \ - jdk/src/solaris/doc/sun/man/man1/wsgen.1 \ - jdk/src/solaris/doc/sun/man/man1/wsimport.1 \ - jdk/src/solaris/doc/sun/man/man1/xjc.1 \ - nashorn/test/script/jfx.js \ - nashorn/test/script/jfx/kaleidoscope.js \ - nashorn/test/script/jfx/spread.js +WRKSRC= ${WRKDIR}/${PORTNAME}-jdk${JDK_MAJOR_VERSION}u-${DISTNAME} + SHEBANG_FILES= configure _MAKE_JOBS= # @@ -208,12 +50,11 @@ INSTALLDIR= ${PREFIX}/${PKGBASE} NOPRECIOUSMAKEVARS= yes JDK_MAJOR_VERSION= 8 -JDK_UPDATE_VERSION= 202 -JDK_BUILD_NUMBER= 08 -DIST_BUILD_NUMBER= 132 +JDK_UPDATE_VERSION= 212 +JDK_BUILD_NUMBER= 04 +BSD_JDK_VERSION= 1 JTREG_VERSION= 4.1 JTREG_BUILD_NUMBER= b08 -JTREG_JENKINS_BUILD= 77 GNU_CONFIGURE= yes CONFIGURE_ARGS= --with-boot-jdk=${BOOTSTRAPJDKDIR} @@ -378,16 +219,6 @@ ICONV_CPPFLAGS= -I${LOCALBASE}/include ICONV_LDFLAGS= -L${LOCALBASE}/lib ${ICONV_LIB} .endif -post-extract: - @${CP} ${FILESDIR}/jdk-test-javax-imageio-plugins-jpeg-truncated.jpg \ - ${WRKSRC}/jdk/test/javax/imageio/plugins/jpeg/truncated.jpg - @${CP} ${FILESDIR}/nashorn-test-script-jfx-flyingimage-golden-bsd.png \ - ${WRKSRC}/nashorn/test/script/jfx/flyingimage/golden/bsd.png - @${CP} ${FILESDIR}/nashorn-test-script-jfx-kaleidoscope-golden-bsd.png \ - ${WRKSRC}/nashorn/test/script/jfx/kaleidoscope/golden/bsd.png - @${CP} ${FILESDIR}/nashorn-test-script-jfx-spread-golden-bsd.png \ - ${WRKSRC}/nashorn/test/script/jfx/spread/golden/bsd.png - post-extract-TEST-on: @${LN} -sf ${WRKDIR}/jtreg/linux/bin ${WRKDIR}/jtreg/ @@ -396,9 +227,6 @@ do-patch-FONTCONFIG-on: post-patch: @${FIND} ${WRKSRC} -name '*.orig' -delete - @${RMDIR} ${WRKSRC}/jdk/src/macosx/classes/java/net \ - ${WRKSRC}/jdk/src/macosx/native/sun/nio/ch \ - ${WRKSRC}/jdk/src/macosx/native/sun/nio @${SED} -e 's|%%LOCALBASE%%|${LOCALBASE}|' \ ${FILESDIR}/bsd.fontconfig.properties.in > \ ${WRKSRC}/jdk/src/solaris/classes/sun/awt/fontconfigs/bsd.fontconfig.properties diff --git a/java/openjdk8/distinfo b/java/openjdk8/distinfo index 6c7be77046c2..6b6032bd40aa 100644 --- a/java/openjdk8/distinfo +++ b/java/openjdk8/distinfo @@ -1,55 +1,5 @@ -TIMESTAMP = 1549756797 -SHA256 (openjdk-8-src-b132-03_mar_2014.zip) = ba651f9aa68fdc823b2ef55510710a013ab9f78fff291d5dc1c4d166f3e1e589 -SIZE (openjdk-8-src-b132-03_mar_2014.zip) = 124099402 +TIMESTAMP = 1555604894 +SHA256 (jdk8u212-b04.1.tar.gz) = b69b2601bd1ddb68700df801b0ad5c8351ca8c937573130603910614e7d478d6 +SIZE (jdk8u212-b04.1.tar.gz) = 85191465 SHA256 (jtreg4.1-b08.tar.gz) = a9fbfac903313c12687e60978c4688c20189cdf873560125917d6ad53d55b30c SIZE (jtreg4.1-b08.tar.gz) = 6834252 -SHA256 (patch-8u05-b13.xz) = 0fd6dfa17769a92d94a710e330d411fcbd49a8142d4cb8826b96b42d3c007a63 -SIZE (patch-8u05-b13.xz) = 88636 -SHA256 (patch-8u11-b13.xz) = 68ead09e1841fc43a4fec2c386acc70e3edab99e116923befa0d83960c4a1f85 -SIZE (patch-8u11-b13.xz) = 48852 -SHA256 (patch-8u20-b26.xz) = 23c704ed10f0e081e956755e22049b3ef7897b3bc5a7a6450a4d1856351f55a8 -SIZE (patch-8u20-b26.xz) = 1898392 -SHA256 (patch-8u25-b17.xz) = beb9ef5ca12660da57f5a8409de4576aef4a55dd9de7bdc14a3d64f706cee6e8 -SIZE (patch-8u25-b17.xz) = 45968 -SHA256 (patch-8u31-b13.xz) = c77ca4137a95e45a377c31f2c7a2d0280b64f5d411089cda7380c04c7a70685a -SIZE (patch-8u31-b13.xz) = 204032 -SHA256 (patch-8u40-b25.xz) = 178fd0737235ebef61e39cc06e6d1fdd5079b727b0d23f9326cd39b97036c0d1 -SIZE (patch-8u40-b25.xz) = 1662812 -SHA256 (patch-8u45-b14.xz) = 4a2e7c5e3275db6a7aebe15c7dcc9abe9125b25e490c015367ca8ebcf8c65bac -SIZE (patch-8u45-b14.xz) = 285564 -SHA256 (patch-8u51-b16.xz) = 146e8ffa75911a2bc53099ea07625db259f88cbac2e678f965f55c483a01050f -SIZE (patch-8u51-b16.xz) = 71144 -SHA256 (patch-8u60-b23.xz) = 8ebe80e8add9e61dcb43e9be756ccc6d566a39748e7726f265df73af2d082798 -SIZE (patch-8u60-b23.xz) = 1043720 -SHA256 (patch-8u66-b17-1.xz) = 8d11cf62d9b70857d1008dea0cdcf9d5b4ba30320696cb2568a8bc13f202bb2e -SIZE (patch-8u66-b17-1.xz) = 351328 -SHA256 (patch-8u72-b15.xz) = 42f774b72f3dbdbfadc63d0b8fb7d94c51c3062d80aedec86f59d295823136d1 -SIZE (patch-8u72-b15.xz) = 282984 -SHA256 (patch-8u74-b02.xz) = c21a08d00d8417369837fe82d68bb4f30bcf8c1c93aef85581761e328c58fccd -SIZE (patch-8u74-b02.xz) = 2056 -SHA256 (patch-8u77-b03.xz) = d6469852d556ff9e379852e5a64cc104faf0545804c7f18f65b9840a8cb3a1c1 -SIZE (patch-8u77-b03.xz) = 4404 -SHA256 (patch-8u92-b14.xz) = c3c8e607048c61c8b425849c6bb73add59ba9887e4a9d4f6147ab51ad11c8d17 -SIZE (patch-8u92-b14.xz) = 172836 -SHA256 (patch-8u102-b14.xz) = 02ae897c1bfbb137339fe00f0672af268b94beee88f44c818a6060dc207d72c3 -SIZE (patch-8u102-b14.xz) = 411024 -SHA256 (patch-8u112-b16.xz) = adbca9b317d599a3ee2e8ac6efb47b0576bdb1ebf0a8b9a0d0d7742db499b921 -SIZE (patch-8u112-b16.xz) = 217492 -SHA256 (patch-8u121-b13.xz) = ef48cad21bb0ccadb3968147ab4d4d0b9ae024bf42a0fccf5714584f43df9ed4 -SIZE (patch-8u121-b13.xz) = 135520 -SHA256 (patch-8u131-b11.xz) = c0953d79f7e1b02ed75e6757ff170a144527af9b44f44cb36f2ddb484437d4d6 -SIZE (patch-8u131-b11.xz) = 88068 -SHA256 (patch-8u144-b01.xz) = 4b4b73a345bc69085b712213ff55831e739cf43c9d0b87e77da91283e7c3520f -SIZE (patch-8u144-b01.xz) = 239460 -SHA256 (patch-8u152-b16.xz) = 51c57b8d60b8f71758fe03c45c70ab60d0423bf4699e71b21ba4148f80497852 -SIZE (patch-8u152-b16.xz) = 454236 -SHA256 (patch-8u162-b12.xz) = 9f083cde406ead14e38f5423a6dcc0f0b0a3f7ef69fdc4c83a32b8fea4c3ddcb -SIZE (patch-8u162-b12.xz) = 337248 -SHA256 (patch-8u172-b11.xz) = e338a1dc63cc08f9227d685e350e60609e43612f18773213b882d78c7c559934 -SIZE (patch-8u172-b11.xz) = 146716 -SHA256 (patch-8u181-b13.xz) = 4cd0f5a04b72ad6c4ef73807d6a42e141394f5c38cee8ce11c0159a080073839 -SIZE (patch-8u181-b13.xz) = 69096 -SHA256 (patch-8u192-b26.xz) = 5bfa782ec2af8ddc6aed3e8de81cc37c7f375ebad650341d1ce74956c82a411e -SIZE (patch-8u192-b26.xz) = 284164 -SHA256 (patch-8u202-b08.xz) = 16195793d00b1fbe18e4d3a4cab2db1e5a28722e43d3466d03283ab01d9524d0 -SIZE (patch-8u202-b08.xz) = 202660 diff --git a/java/openjdk8/files/cacerts b/java/openjdk8/files/cacerts Binary files differindex 9691005ff8b4..d7a1a5326346 100644 --- a/java/openjdk8/files/cacerts +++ b/java/openjdk8/files/cacerts diff --git a/java/openjdk8/files/jdk-test-javax-imageio-plugins-jpeg-truncated.jpg b/java/openjdk8/files/jdk-test-javax-imageio-plugins-jpeg-truncated.jpg Binary files differdeleted file mode 100644 index db3fca890c85..000000000000 --- a/java/openjdk8/files/jdk-test-javax-imageio-plugins-jpeg-truncated.jpg +++ /dev/null diff --git a/java/openjdk8/files/nashorn-test-script-jfx-flyingimage-golden-bsd.png b/java/openjdk8/files/nashorn-test-script-jfx-flyingimage-golden-bsd.png Binary files differdeleted file mode 100644 index ba72fe68406b..000000000000 --- a/java/openjdk8/files/nashorn-test-script-jfx-flyingimage-golden-bsd.png +++ /dev/null diff --git a/java/openjdk8/files/nashorn-test-script-jfx-kaleidoscope-golden-bsd.png b/java/openjdk8/files/nashorn-test-script-jfx-kaleidoscope-golden-bsd.png Binary files differdeleted file mode 100644 index 64d9499b0ff6..000000000000 --- a/java/openjdk8/files/nashorn-test-script-jfx-kaleidoscope-golden-bsd.png +++ /dev/null diff --git a/java/openjdk8/files/nashorn-test-script-jfx-spread-golden-bsd.png b/java/openjdk8/files/nashorn-test-script-jfx-spread-golden-bsd.png Binary files differdeleted file mode 100644 index c288162329ae..000000000000 --- a/java/openjdk8/files/nashorn-test-script-jfx-spread-golden-bsd.png +++ /dev/null diff --git a/java/openjdk8/files/patch-bsd b/java/openjdk8/files/patch-bsd deleted file mode 100644 index 77fa9b6f44b0..000000000000 --- a/java/openjdk8/files/patch-bsd +++ /dev/null @@ -1,20572 +0,0 @@ ---- ./common/autoconf/build-performance.m4 Sat Dec 08 11:48:10 2018 +0000 -+++ ./common/autoconf/build-performance.m4 Sat Feb 09 10:03:01 2019 -0800 -@@ -41,6 +41,10 @@ - # Looks like a MacOSX system - NUM_CORES=`/usr/sbin/system_profiler -detailLevel full SPHardwareDataType | grep 'Cores' | awk '{print [$]5}'` - FOUND_CORES=yes -+ elif test "x$OPENJDK_BUILD_OS" = xbsd && test "x$(uname -s | grep -o BSD)" = xBSD; then -+ # Looks like a BSD system -+ NUM_CORES=`/sbin/sysctl -n hw.ncpu` -+ FOUND_CORES=yes - elif test "x$OPENJDK_BUILD_OS" = xaix ; then - NUM_CORES=`/usr/sbin/prtconf | grep "^Number Of Processors" | awk '{ print [$]4 }'` - FOUND_CORES=yes -@@ -79,6 +83,15 @@ - MEMORY_SIZE=`/usr/sbin/system_profiler -detailLevel full SPHardwareDataType | grep 'Memory' | awk '{print [$]2}'` - MEMORY_SIZE=`expr $MEMORY_SIZE \* 1024` - FOUND_MEM=yes -+ elif test "x$OPENJDK_BUILD_OS" = xbsd && test "x$(uname -s | grep -o OpenBSD)" = xOpenBSD; then -+ # Looks like an OpenBSD system -+ MEMORY_SIZE=`/sbin/sysctl -n hw.physmem | awk '{print int($NF / 1048576); }'` -+ FOUND_MEM=yes -+ elif test "x$OPENJDK_BUILD_OS" = xbsd && test "x$(uname -s | grep -o BSD)" = xBSD; then -+ # Looks like a BSD system -+ MEMORY_SIZE=`/sbin/sysctl -n hw.physmem` -+ MEMORY_SIZE=`expr $MEMORY_SIZE / 1024 / 1024` -+ FOUND_MEM=yes - elif test "x$OPENJDK_BUILD_OS" = xwindows; then - # Windows, but without cygwin - MEMORY_SIZE=`wmic computersystem get totalphysicalmemory -value | grep = | cut -d "=" -f 2-` -@@ -209,8 +222,8 @@ - # Only use ccache if it is 3.1.4 or later, which supports - # precompiled headers. - AC_MSG_CHECKING([if ccache supports precompiled headers]) -- HAS_GOOD_CCACHE=`($CCACHE --version | head -n 1 | grep -E 3.1.@<:@456789@:>@) 2> /dev/null` -- if test "x$HAS_GOOD_CCACHE" = x; then -+ HAS_GOOD_CCACHE=`($CCACHE --version | head -n 1 | awk '{ split(@S|@3, a, "."); if (a@<:@1@:>@ >= 3 && (a@<:@2@:>@ > 1 || (a@<:@2@:>@ == 1 && a@<:@3@:>@ >= 4))) print "yes"; else print "no"; }') 2> /dev/null` -+ if test "x$HAS_GOOD_CCACHE" = xyes; then - AC_MSG_RESULT([no, disabling ccache]) - CCACHE= - CCACHE_STATUS="disabled" ---- ./common/autoconf/flags.m4 Sat Dec 08 11:48:10 2018 +0000 -+++ ./common/autoconf/flags.m4 Sat Feb 09 10:03:01 2019 -0800 -@@ -154,7 +154,7 @@ - # How to compile shared libraries. - # - -- if test "x$TOOLCHAIN_TYPE" = xgcc; then -+ if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then - PICFLAG="-fPIC" - C_FLAG_REORDER='' - CXX_FLAG_REORDER='' -@@ -266,7 +266,7 @@ - # fi - - # Generate make dependency files -- if test "x$TOOLCHAIN_TYPE" = xgcc; then -+ if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then - C_FLAG_DEPS="-MMD -MF" - elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then - C_FLAG_DEPS="-xMMD -xMF" -@@ -283,7 +283,7 @@ - # info flags for toolchains unless we know they work. - # See JDK-8207057. - ASFLAGS_DEBUG_SYMBOLS="" -- if test "x$TOOLCHAIN_TYPE" = xgcc; then -+ if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then - if test "x$OPENJDK_TARGET_CPU_BITS" = "x64" && test "x$DEBUG_LEVEL" = "xfastdebug"; then - CFLAGS_DEBUG_SYMBOLS="-g1" - CXXFLAGS_DEBUG_SYMBOLS="-g1" -@@ -334,7 +334,7 @@ - else - # The remaining toolchains share opt flags between CC and CXX; - # setup for C and duplicate afterwards. -- if test "x$TOOLCHAIN_TYPE" = xgcc; then -+ if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then - if test "x$OPENJDK_TARGET_OS" = xmacosx; then - # On MacOSX we optimize for size, something - # we should do for all platforms? -@@ -452,7 +452,7 @@ - - # Setup compiler/platform specific flags to CFLAGS_JDK, - # CXXFLAGS_JDK and CCXXFLAGS_JDK (common to C and CXX?) -- if test "x$TOOLCHAIN_TYPE" = xgcc; then -+ if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then - # these options are used for both C and C++ compiles - CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -Wall -Wno-parentheses -Wextra -Wno-unused -Wno-unused-parameter -Wformat=2 \ - -pipe -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE" -@@ -548,6 +548,9 @@ - else - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_LITTLE_ENDIAN" - fi -+ if test "x$OPENJDK_TARGET_OS" = xbsd; then -+ CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DVM_LITTLE_ENDIAN" -+ fi - else - # Same goes for _BIG_ENDIAN. Do we really need to set *ENDIAN on Solaris if they - # are defined in the system? -@@ -556,6 +559,9 @@ - else - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_BIG_ENDIAN" - fi -+ if test "x$OPENJDK_TARGET_OS" = xbsd; then -+ CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DVM_BIG_ENDIAN" -+ fi - fi - if test "x$OPENJDK_TARGET_CPU" = xppc64le; then - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DABI_ELFv2" -@@ -661,7 +667,7 @@ - fi - LDFLAGS_JDKEXE="${LDFLAGS_JDK} /STACK:$LDFLAGS_STACK_SIZE" - else -- if test "x$TOOLCHAIN_TYPE" = xgcc; then -+ if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then - # If this is a --hash-style=gnu system, use --hash-style=both, why? - # We have previously set HAS_GNU_HASH if this is the case - if test -n "$HAS_GNU_HASH"; then ---- ./common/autoconf/generated-configure.sh Sat Dec 08 11:48:10 2018 +0000 -+++ ./common/autoconf/generated-configure.sh Sat Feb 09 10:03:01 2019 -0800 -@@ -655,6 +655,8 @@ - LIBM - LIBZIP_CAN_USE_MMAP - USE_EXTERNAL_LIBZ -+GIFLIB_LDFLAGS -+GIFLIB_CFLAGS - USE_EXTERNAL_LIBGIF - USE_EXTERNAL_LIBJPEG - ALSA_LIBS -@@ -839,6 +841,7 @@ - JDK_MAJOR_VERSION - USER_RELEASE_SUFFIX - COMPRESS_JARS -+BSD_STATIC_LIBJLI - UNLIMITED_CRYPTO - CACERTS_FILE - TEST_IN_BUILD -@@ -916,6 +919,7 @@ - OPENJDK_TARGET_CPU - OPENJDK_TARGET_OS_ENV - OPENJDK_TARGET_OS_API -+OPENJDK_TARGET_OS_VENDOR - OPENJDK_TARGET_OS - OPENJDK_BUILD_CPU_ENDIAN - OPENJDK_BUILD_CPU_BITS -@@ -1052,6 +1056,7 @@ - enable_hotspot_test_in_build - with_cacerts_file - enable_unlimited_crypto -+enable_static_libjli - with_milestone - with_update_version - with_user_release_suffix -@@ -1072,6 +1077,7 @@ - with_import_hotspot - with_toolchain_type - with_toolchain_version -+with_package_path - with_jtreg - with_extra_cflags - with_extra_cxxflags -@@ -1830,6 +1836,7 @@ - run the Queens test after Hotspot build [disabled] - --enable-unlimited-crypto - Enable unlimited crypto policy [disabled] -+ --enable-static-libjli Enable staticly linking libjli on bsd [disabled] - --disable-debug-symbols disable generation of debug symbols [enabled] - --disable-zip-debug-info - disable zipping of debug-info files [enabled] -@@ -1922,6 +1929,8 @@ - the version of the toolchain to look for, use - '--help' to show possible values [platform - dependent] -+ --with-package-path package path to be used for location of third party -+ packages - --with-jtreg Regression Test Harness [probed] - --with-extra-cflags extra flags to be used when compiling jdk c-files - --with-extra-cxxflags extra flags to be used when compiling jdk c++-files -@@ -2342,6 +2351,52 @@ - - } # ac_fn_objc_try_compile - -+# ac_fn_cxx_try_link LINENO -+# ------------------------- -+# Try to link conftest.$ac_ext, and return whether this succeeded. -+ac_fn_cxx_try_link () -+{ -+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack -+ rm -f conftest.$ac_objext conftest$ac_exeext -+ if { { ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -+$as_echo "$ac_try_echo"; } >&5 -+ (eval "$ac_link") 2>conftest.err -+ ac_status=$? -+ if test -s conftest.err; then -+ grep -v '^ *+' conftest.err >conftest.er1 -+ cat conftest.er1 >&5 -+ mv -f conftest.er1 conftest.err -+ fi -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && { -+ test "$cross_compiling" = yes || -+ test -x conftest$ac_exeext -+ }; then : -+ ac_retval=0 -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_retval=1 -+fi -+ # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information -+ # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would -+ # interfere with the next link command; also delete a directory that is -+ # left behind by Apple's compiler. We do this before executing the actions. -+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo -+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno -+ as_fn_set_status $ac_retval -+ -+} # ac_fn_cxx_try_link -+ - # ac_fn_cxx_check_header_mongrel LINENO HEADER VAR INCLUDES - # --------------------------------------------------------- - # Tests whether HEADER exists, giving a warning if it cannot be compiled using -@@ -2689,52 +2744,6 @@ - - } # ac_fn_cxx_compute_int - --# ac_fn_cxx_try_link LINENO --# ------------------------- --# Try to link conftest.$ac_ext, and return whether this succeeded. --ac_fn_cxx_try_link () --{ -- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack -- rm -f conftest.$ac_objext conftest$ac_exeext -- if { { ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" --$as_echo "$ac_try_echo"; } >&5 -- (eval "$ac_link") 2>conftest.err -- ac_status=$? -- if test -s conftest.err; then -- grep -v '^ *+' conftest.err >conftest.er1 -- cat conftest.er1 >&5 -- mv -f conftest.er1 conftest.err -- fi -- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -- test $ac_status = 0; } && { -- test -z "$ac_cxx_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- test -x conftest$ac_exeext -- }; then : -- ac_retval=0 --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_retval=1 --fi -- # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information -- # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would -- # interfere with the next link command; also delete a directory that is -- # left behind by Apple's compiler. We do this before executing the actions. -- rm -rf conftest.dSYM conftest_ipa8_conftest.oo -- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno -- as_fn_set_status $ac_retval -- --} # ac_fn_cxx_try_link -- - # ac_fn_cxx_check_func LINENO FUNC VAR - # ------------------------------------ - # Tests whether FUNC exists, setting the cache variable VAR accordingly -@@ -4126,6 +4135,7 @@ - VALID_TOOLCHAINS_all="gcc clang solstudio xlc microsoft" - - # These toolchains are valid on different platforms -+VALID_TOOLCHAINS_bsd="clang gcc" - VALID_TOOLCHAINS_linux="gcc clang" - VALID_TOOLCHAINS_solaris="solstudio" - VALID_TOOLCHAINS_macosx="gcc clang" -@@ -4342,7 +4352,7 @@ - #CUSTOM_AUTOCONF_INCLUDE - - # Do not change or remove the following line, it is needed for consistency checks: --DATE_WHEN_GENERATED=1544009140 -+DATE_WHEN_GENERATED=1549694164 - - ############################################################################### - # -@@ -13576,11 +13586,27 @@ - as_fn_error $? "unsupported operating system $build_os" "$LINENO" 5 - ;; - esac -+ # The BSD's have slight differences so determine which one we are building on. -+ # For the rest set VAR_OS_VENDOR to VAR_OS -+ case "$build_os" in -+ *openbsd*) -+ VAR_OS_VENDOR=openbsd -+ ;; -+ *netbsd*) -+ VAR_OS_VENDOR=netbsd -+ ;; -+ *freebsd*) -+ VAR_OS_VENDOR=freebsd -+ ;; -+ *) -+ VAR_OS_VENDOR="$VAR_OS" -+ ;; -+ esac - - - # First argument is the cpu name from the trip/quad - case "$build_cpu" in -- x86_64) -+ amd64|x86_64) - VAR_CPU=x86_64 - VAR_CPU_ARCH=x86 - VAR_CPU_BITS=64 -@@ -13714,11 +13740,27 @@ - as_fn_error $? "unsupported operating system $host_os" "$LINENO" 5 - ;; - esac -+ # The BSD's have slight differences so determine which one we are building on. -+ # For the rest set VAR_OS_VENDOR to VAR_OS -+ case "$host_os" in -+ *openbsd*) -+ VAR_OS_VENDOR=openbsd -+ ;; -+ *netbsd*) -+ VAR_OS_VENDOR=netbsd -+ ;; -+ *freebsd*) -+ VAR_OS_VENDOR=freebsd -+ ;; -+ *) -+ VAR_OS_VENDOR="$VAR_OS" -+ ;; -+ esac - - - # First argument is the cpu name from the trip/quad - case "$host_cpu" in -- x86_64) -+ amd64|x86_64) - VAR_CPU=x86_64 - VAR_CPU_ARCH=x86 - VAR_CPU_BITS=64 -@@ -13791,6 +13833,7 @@ - - # ... and setup our own variables. (Do this explicitely to facilitate searching) - OPENJDK_TARGET_OS="$VAR_OS" -+ OPENJDK_TARGET_OS_VENDOR="$VAR_OS_VENDOR" - OPENJDK_TARGET_OS_API="$VAR_OS_API" - OPENJDK_TARGET_OS_ENV="$VAR_OS_ENV" - OPENJDK_TARGET_CPU="$VAR_CPU" -@@ -13805,6 +13848,7 @@ - - - -+ - { $as_echo "$as_me:${as_lineno-$LINENO}: checking openjdk-target os-cpu" >&5 - $as_echo_n "checking openjdk-target os-cpu... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OPENJDK_TARGET_OS-$OPENJDK_TARGET_CPU" >&5 -@@ -13933,8 +13977,8 @@ - - # Setup OPENJDK_TARGET_CPU_OSARCH, which is used to set the os.arch Java system property - OPENJDK_TARGET_CPU_OSARCH="$OPENJDK_TARGET_CPU" -- if test "x$OPENJDK_TARGET_OS" = xlinux && test "x$OPENJDK_TARGET_CPU" = xx86; then -- # On linux only, we replace x86 with i386. -+ if test "x$OPENJDK_TARGET_OS" = xbsd -o "x$OPENJDK_TARGET_OS" = xlinux && test "x$OPENJDK_TARGET_CPU" = xx86; then -+ # On Linux and BSD, we replace x86 with i386. - OPENJDK_TARGET_CPU_OSARCH="i386" - elif test "x$OPENJDK_TARGET_OS" != xmacosx && test "x$OPENJDK_TARGET_CPU" = xx86_64; then - # On all platforms except macosx, we replace x86_64 with amd64. -@@ -14576,7 +14620,7 @@ - INCLUDE_SA=false - fi - if test "x$VAR_CPU" = xppc64 -o "x$VAR_CPU" = xppc64le ; then -- INCLUDE_SA=false -+ INCLUDE_SA=true - fi - if test "x$OPENJDK_TARGET_CPU" = xaarch64; then - INCLUDE_SA=false -@@ -19756,6 +19800,24 @@ - - ############################################################################### - # -+ # Enable or disable static linking of libjli on bsd only -+ # -+ # Check whether --enable-static-libjli was given. -+if test "${enable_static_libjli+set}" = set; then : -+ enableval=$enable_static_libjli; -+else -+ enable_static_libjli=no -+fi -+ -+ if test "x$OPENJDK_TARGET_OS" = "xbsd" && test "x$enable_static_libjli" = "xyes"; then -+ BSD_STATIC_LIBJLI=bsd -+ else -+ BSD_STATIC_LIBJLI= -+ fi -+ -+ -+ ############################################################################### -+ # - # Enable or disable the elliptic curve crypto implementation - # - -@@ -37349,7 +37411,7 @@ - - # objcopy is used for moving debug symbols to separate files when - # full debug symbols are enabled. -- if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xlinux; then -+ if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xlinux || test "x$OPENJDK_TARGET_OS" = xbsd ; then - - - # Publish this variable in the help. -@@ -40025,10 +40087,66 @@ - - - -+ - # The package path is used only on macosx? -- # FIXME: clean this up, and/or move it elsewhere. -- PACKAGE_PATH=/opt/local -- -+ -+# Check whether --with-package-path was given. -+if test "${with_package_path+set}" = set; then : -+ withval=$with_package_path; -+fi -+ -+ PACKAGE_PATH="$with_package_path" -+ if test "x$PACKAGE_PATH" = x; then -+ if test "`uname -s`" = "Darwin"; then -+ PACKAGE_PATH=/opt/local -+ fi -+ -+ if test "`uname -s`" = "FreeBSD"; then -+ PACKAGE_PATH=/usr/local -+ fi -+ -+ if test "`uname -s`" = "NetBSD"; then -+ PACKAGE_PATH=/usr/pkg -+ fi -+ -+ if test "`uname -s`" = "OpenBSD"; then -+ PACKAGE_PATH=/usr/local -+ fi -+ fi -+ -+ -+ -+ # On OpenBSD check to see if ld requires -z wxneeded -+ 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; } -+ PUSHED_LDFLAGS="$LDFLAGS" -+ LDFLAGS="$LDFLAGS -Wl,-z,wxneeded" -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+int main() { } -+_ACEOF -+if ac_fn_cxx_try_link "$LINENO"; then : -+ -+ if $READELF -l conftest$ac_exeext | $GREP OPENBSD_WXNEED > /dev/null; 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: yes" >&5 -+$as_echo "yes" >&6; } -+ fi -+ -+else -+ -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+ -+fi -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+ LDFLAGS="$PUSHED_LDFLAGS" -+ fi - - # Check for extra potential brokenness. - if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then -@@ -40564,7 +40682,6 @@ - - # Now we can test some aspects on the target using configure macros. - -- - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 - $as_echo_n "checking for ANSI C header files... " >&6; } - if ${ac_cv_header_stdc+:} false; then : -@@ -41134,7 +41251,7 @@ - # How to compile shared libraries. - # - -- if test "x$TOOLCHAIN_TYPE" = xgcc; then -+ if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then - PICFLAG="-fPIC" - C_FLAG_REORDER='' - CXX_FLAG_REORDER='' -@@ -41213,7 +41330,7 @@ - # fi - - # Generate make dependency files -- if test "x$TOOLCHAIN_TYPE" = xgcc; then -+ if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then - C_FLAG_DEPS="-MMD -MF" - elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then - C_FLAG_DEPS="-xMMD -xMF" -@@ -41230,7 +41347,7 @@ - # info flags for toolchains unless we know they work. - # See JDK-8207057. - ASFLAGS_DEBUG_SYMBOLS="" -- if test "x$TOOLCHAIN_TYPE" = xgcc; then -+ if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then - if test "x$OPENJDK_TARGET_CPU_BITS" = "x64" && test "x$DEBUG_LEVEL" = "xfastdebug"; then - CFLAGS_DEBUG_SYMBOLS="-g1" - CXXFLAGS_DEBUG_SYMBOLS="-g1" -@@ -41281,7 +41398,7 @@ - else - # The remaining toolchains share opt flags between CC and CXX; - # setup for C and duplicate afterwards. -- if test "x$TOOLCHAIN_TYPE" = xgcc; then -+ if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then - if test "x$OPENJDK_TARGET_OS" = xmacosx; then - # On MacOSX we optimize for size, something - # we should do for all platforms? -@@ -41449,7 +41566,7 @@ - - # Setup compiler/platform specific flags to CFLAGS_JDK, - # CXXFLAGS_JDK and CCXXFLAGS_JDK (common to C and CXX?) -- if test "x$TOOLCHAIN_TYPE" = xgcc; then -+ if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then - # these options are used for both C and C++ compiles - CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -Wall -Wno-parentheses -Wextra -Wno-unused -Wno-unused-parameter -Wformat=2 \ - -pipe -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE" -@@ -41762,6 +41879,9 @@ - else - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_LITTLE_ENDIAN" - fi -+ if test "x$OPENJDK_TARGET_OS" = xbsd; then -+ CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DVM_LITTLE_ENDIAN" -+ fi - else - # Same goes for _BIG_ENDIAN. Do we really need to set *ENDIAN on Solaris if they - # are defined in the system? -@@ -41770,6 +41890,9 @@ - else - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_BIG_ENDIAN" - fi -+ if test "x$OPENJDK_TARGET_OS" = xbsd; then -+ CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DVM_BIG_ENDIAN" -+ fi - fi - if test "x$OPENJDK_TARGET_CPU" = xppc64le; then - CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DABI_ELFv2" -@@ -41875,7 +41998,7 @@ - fi - LDFLAGS_JDKEXE="${LDFLAGS_JDK} /STACK:$LDFLAGS_STACK_SIZE" - else -- if test "x$TOOLCHAIN_TYPE" = xgcc; then -+ if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then - # If this is a --hash-style=gnu system, use --hash-style=both, why? - # We have previously set HAS_GNU_HASH if this is the case - if test -n "$HAS_GNU_HASH"; then -@@ -42411,11 +42534,18 @@ - fi - - if test "x$OPENJDK_TARGET_OS" = xbsd; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking what is not needed on bsd?" >&5 --$as_echo_n "checking what is not needed on bsd?... " >&6; } -- ALSA_NOT_NEEDED=yes -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: alsa" >&5 --$as_echo "alsa" >&6; } -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking what is not needed on BSD?" >&5 -+$as_echo_n "checking what is not needed on BSD?... " >&6; } -+ if test "x$OPENJDK_TARGET_OS_VENDOR" = xopenbsd; then -+ ALSA_NOT_NEEDED=yes -+ PULSE_NOT_NEEDED=yes -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: alsa pulse" >&5 -+$as_echo "alsa pulse" >&6; } -+ else -+ PULSE_NOT_NEEDED=yes -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: pulse" >&5 -+$as_echo "pulse" >&6; } -+ fi - fi - - if test "x$OPENJDK" = "xfalse"; then -@@ -42450,21 +42580,25 @@ - # Make a simple check for the libraries at the sysroot, and setup --x-includes and - # --x-libraries for the sysroot, if that seems to be correct. - if test "x$OPENJDK_TARGET_OS" = "xlinux"; then -- if test "x$SYSROOT" != "x"; then -+ if test "x$SYS_ROOT" != "x/"; then - if test "x$x_includes" = xNONE; then -- if test -f "$SYSROOT/usr/X11R6/include/X11/Xlib.h"; then -- x_includes="$SYSROOT/usr/X11R6/include" -- elif test -f "$SYSROOT/usr/include/X11/Xlib.h"; then -- x_includes="$SYSROOT/usr/include" -+ if test -f "$SYS_ROOT/usr/X11R7/include/X11/Xlib.h"; then -+ x_includes="$SYS_ROOT/usr/X11R7/include" -+ elif test -f "$SYS_ROOT/usr/X11R6/include/X11/Xlib.h"; then -+ x_includes="$SYS_ROOT/usr/X11R6/include" -+ elif test -f "$SYS_ROOT/usr/include/X11/Xlib.h"; then -+ x_includes="$SYS_ROOT/usr/include" - fi - fi - if test "x$x_libraries" = xNONE; then -- if test -f "$SYSROOT/usr/X11R6/lib/libX11.so"; then -- x_libraries="$SYSROOT/usr/X11R6/lib" -- elif test "$SYSROOT/usr/lib64/libX11.so" && test "x$OPENJDK_TARGET_CPU_BITS" = x64; then -- x_libraries="$SYSROOT/usr/lib64" -- elif test -f "$SYSROOT/usr/lib/libX11.so"; then -- x_libraries="$SYSROOT/usr/lib" -+ if test -f "$SYS_ROOT/usr/X11R7/lib/libX11.so"; then -+ x_libraries="$SYS_ROOT/usr/X11R7/lib" -+ elif test -f "$SYS_ROOT/usr/X11R6/lib/libX11.so"; then -+ x_libraries="$SYS_ROOT/usr/X11R6/lib" -+ elif test "$SYS_ROOT/usr/lib64/libX11.so" && test "x$OPENJDK_TARGET_CPU_BITS" = x64; then -+ x_libraries="$SYS_ROOT/usr/lib64" -+ elif test -f "$SYS_ROOT/usr/lib/libX11.so"; then -+ x_libraries="$SYS_ROOT/usr/lib" - fi - fi - fi -@@ -43511,6 +43645,10 @@ - # A CSW package seems to be installed! - CUPS_FOUND=yes - CUPS_CFLAGS="-I$SYSROOT/opt/csw/include" -+ elif test -s ${PACKAGE_PATH}/include/cups/cups.h; then -+ # Standard package location for BSD -+ CUPS_FOUND=yes -+ CUPS_CFLAGS="-I${PACKAGE_PATH}/include" - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CUPS_FOUND" >&5 - $as_echo "$CUPS_FOUND" >&6; } -@@ -47396,7 +47534,7 @@ - - ############################################################################### - # -- # Check for alsa headers and libraries. Used on Linux/GNU systems. -+ # Check for alsa headers and libraries. Used on Linux/GNU and BSD systems. - # - - # Check whether --with-alsa was given. -@@ -47807,15 +47945,66 @@ - - if test "x${with_giflib}" = "xbundled"; then - USE_EXTERNAL_LIBGIF=false -+ GIFLIB_CFLAGS= -+ GIFLIB_LDFLAGS= - elif test "x${with_giflib}" = "xsystem"; then -+ GIFLIB_H_FOUND=no - ac_fn_cxx_check_header_mongrel "$LINENO" "gif_lib.h" "ac_cv_header_gif_lib_h" "$ac_includes_default" - if test "x$ac_cv_header_gif_lib_h" = xyes; then : - --else -- as_fn_error $? "--with-giflib=system specified, but gif_lib.h not found!" "$LINENO" 5 --fi -- -- -+ GIFLIB_H_FOUND=yes -+ GIFLIB_CFLAGS= -+ -+ -+fi -+ -+ -+ if test "x$GIFLIB_H_FOUND" = xno; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for giflib headers" >&5 -+$as_echo_n "checking for giflib headers... " >&6; } -+ if test -s ${PACKAGE_PATH}/include/gif_lib.h; then -+ # Standard package location for BSD -+ GIFLIB_H_FOUND=yes -+ GIFLIB_CFLAGS="-I${PACKAGE_PATH}/include" -+ fi -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GIFLIB_H_FOUND" >&5 -+$as_echo "$GIFLIB_H_FOUND" >&6; } -+ fi -+ if test "x$GIFLIB_H_FOUND" = xno; then -+ -+ # Print a helpful message on how to acquire the necessary build dependency. -+ # giflib is the help tag: freetype, cups, pulse, alsa etc -+ MISSING_DEPENDENCY=giflib -+ -+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then -+ cygwin_help $MISSING_DEPENDENCY -+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then -+ msys_help $MISSING_DEPENDENCY -+ else -+ PKGHANDLER_COMMAND= -+ -+ case $PKGHANDLER in -+ apt-get) -+ apt_help $MISSING_DEPENDENCY ;; -+ yum) -+ yum_help $MISSING_DEPENDENCY ;; -+ port) -+ port_help $MISSING_DEPENDENCY ;; -+ pkgutil) -+ pkgutil_help $MISSING_DEPENDENCY ;; -+ pkgadd) -+ pkgadd_help $MISSING_DEPENDENCY ;; -+ esac -+ -+ if test "x$PKGHANDLER_COMMAND" != x; then -+ HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'." -+ fi -+ fi -+ -+ as_fn_error $? "Could not find giflib headers! $HELP_MSG " "$LINENO" 5 -+ fi -+ -+ GIFLIB_LIB_FOUND=no - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DGifGetCode in -lgif" >&5 - $as_echo_n "checking for DGifGetCode in -lgif... " >&6; } - if ${ac_cv_lib_gif_DGifGetCode+:} false; then : -@@ -47853,16 +48042,96 @@ - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gif_DGifGetCode" >&5 - $as_echo "$ac_cv_lib_gif_DGifGetCode" >&6; } - if test "x$ac_cv_lib_gif_DGifGetCode" = xyes; then : -- cat >>confdefs.h <<_ACEOF --#define HAVE_LIBGIF 1 --_ACEOF -- -- LIBS="-lgif $LIBS" -- --else -- as_fn_error $? "--with-giflib=system specified, but no giflib found!" "$LINENO" 5 --fi -- -+ -+ GIFLIB_LIB_FOUND=yes -+ GIFLIB_LDFLAGS= -+ -+ -+fi -+ -+ if test "x$GIFLIB_LIB_FOUND" = xno; then -+ save_LDFLAGS="$LDFLAGS" -+ LDFLAGS="$LDFLAGS -L${PACKAGE_PATH}/lib" -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DGifOpen in -lgif" >&5 -+$as_echo_n "checking for DGifOpen in -lgif... " >&6; } -+if ${ac_cv_lib_gif_DGifOpen+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ ac_check_lib_save_LIBS=$LIBS -+LIBS="-lgif $LIBS" -+cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+ -+/* Override any GCC internal prototype to avoid an error. -+ Use char because int might match the return type of a GCC -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+char DGifOpen (); -+int -+main () -+{ -+return DGifOpen (); -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_cxx_try_link "$LINENO"; then : -+ ac_cv_lib_gif_DGifOpen=yes -+else -+ ac_cv_lib_gif_DGifOpen=no -+fi -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+LIBS=$ac_check_lib_save_LIBS -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gif_DGifOpen" >&5 -+$as_echo "$ac_cv_lib_gif_DGifOpen" >&6; } -+if test "x$ac_cv_lib_gif_DGifOpen" = xyes; then : -+ -+ GIFLIB_LIB_FOUND=yes -+ GIFLIB_LDFLAGS="-L${PACKAGE_PATH}/lib" -+ -+ -+fi -+ -+ LDFLAGS="$save_LDFLAGS" -+ fi -+ -+ if test "x$GIFLIB_LIB_FOUND" = xno; then -+ -+ # Print a helpful message on how to acquire the necessary build dependency. -+ # giflib is the help tag: freetype, cups, pulse, alsa etc -+ MISSING_DEPENDENCY=giflib -+ -+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then -+ cygwin_help $MISSING_DEPENDENCY -+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then -+ msys_help $MISSING_DEPENDENCY -+ else -+ PKGHANDLER_COMMAND= -+ -+ case $PKGHANDLER in -+ apt-get) -+ apt_help $MISSING_DEPENDENCY ;; -+ yum) -+ yum_help $MISSING_DEPENDENCY ;; -+ port) -+ port_help $MISSING_DEPENDENCY ;; -+ pkgutil) -+ pkgutil_help $MISSING_DEPENDENCY ;; -+ pkgadd) -+ pkgadd_help $MISSING_DEPENDENCY ;; -+ esac -+ -+ if test "x$PKGHANDLER_COMMAND" != x; then -+ HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'." -+ fi -+ fi -+ -+ as_fn_error $? "Could not find giflib library! $HELP_MSG " "$LINENO" 5 -+ fi - - USE_EXTERNAL_LIBGIF=true - else -@@ -47870,6 +48139,8 @@ - fi - - -+ -+ - ############################################################################### - # - # Check for the zlib library -@@ -48437,6 +48708,11 @@ - LIBCXX="-lstdc++" - fi - -+ # TODO better (platform agnostic) test -+ if test "x$OPENJDK_TARGET_OS" = xbsd && test "x$LIBCXX" = x && test "x$GCC" = xyes; then -+ LIBCXX="-lstdc++" -+ fi -+ - - - -@@ -51636,6 +51912,10 @@ - # Looks like a MacOSX system - NUM_CORES=`/usr/sbin/system_profiler -detailLevel full SPHardwareDataType | grep 'Cores' | awk '{print $5}'` - FOUND_CORES=yes -+ elif test "x$OPENJDK_BUILD_OS" = xbsd && test "x$(uname -s | grep -o BSD)" = xBSD; then -+ # Looks like a BSD system -+ NUM_CORES=`/sbin/sysctl -n hw.ncpu` -+ FOUND_CORES=yes - elif test "x$OPENJDK_BUILD_OS" = xaix ; then - NUM_CORES=`/usr/sbin/prtconf | grep "^Number Of Processors" | awk '{ print $4 }'` - FOUND_CORES=yes -@@ -51691,6 +51971,15 @@ - MEMORY_SIZE=`/usr/sbin/system_profiler -detailLevel full SPHardwareDataType | grep 'Memory' | awk '{print $2}'` - MEMORY_SIZE=`expr $MEMORY_SIZE \* 1024` - FOUND_MEM=yes -+ elif test "x$OPENJDK_BUILD_OS" = xbsd && test "x$(uname -s | grep -o OpenBSD)" = xOpenBSD; then -+ # Looks like an OpenBSD system -+ MEMORY_SIZE=`/sbin/sysctl -n hw.physmem | awk '{print int($NF / 1048576); }'` -+ FOUND_MEM=yes -+ elif test "x$OPENJDK_BUILD_OS" = xbsd && test "x$(uname -s | grep -o BSD)" = xBSD; then -+ # Looks like a BSD system -+ MEMORY_SIZE=`/sbin/sysctl -n hw.physmem` -+ MEMORY_SIZE=`expr $MEMORY_SIZE / 1024 / 1024` -+ FOUND_MEM=yes - elif test "x$OPENJDK_BUILD_OS" = xwindows; then - # Windows, but without cygwin - MEMORY_SIZE=`wmic computersystem get totalphysicalmemory -value | grep = | cut -d "=" -f 2-` -@@ -52264,8 +52553,8 @@ - # precompiled headers. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if ccache supports precompiled headers" >&5 - $as_echo_n "checking if ccache supports precompiled headers... " >&6; } -- HAS_GOOD_CCACHE=`($CCACHE --version | head -n 1 | grep -E 3.1.[456789]) 2> /dev/null` -- if test "x$HAS_GOOD_CCACHE" = x; then -+ HAS_GOOD_CCACHE=`($CCACHE --version | head -n 1 | awk '{ split($3, a, "."); if (a[1] >= 3 && (a[2] > 1 || (a[2] == 1 && a[3] >= 4))) print "yes"; else print "no"; }') 2> /dev/null` -+ if test "x$HAS_GOOD_CCACHE" = xyes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, disabling ccache" >&5 - $as_echo "no, disabling ccache" >&6; } - CCACHE= ---- ./common/autoconf/jdk-options.m4 Sat Dec 08 11:48:10 2018 +0000 -+++ ./common/autoconf/jdk-options.m4 Sat Feb 09 10:03:01 2019 -0800 -@@ -159,7 +159,7 @@ - INCLUDE_SA=false - fi - if test "x$VAR_CPU" = xppc64 -o "x$VAR_CPU" = xppc64le ; then -- INCLUDE_SA=false -+ INCLUDE_SA=true - fi - if test "x$OPENJDK_TARGET_CPU" = xaarch64; then - INCLUDE_SA=false -@@ -410,6 +410,20 @@ - - ############################################################################### - # -+ # Enable or disable static linking of libjli on bsd only -+ # -+ AC_ARG_ENABLE(static-libjli, [AS_HELP_STRING([--enable-static-libjli], -+ [Enable staticly linking libjli on bsd @<:@disabled@:>@])],, -+ [enable_static_libjli=no]) -+ if test "x$OPENJDK_TARGET_OS" = "xbsd" && test "x$enable_static_libjli" = "xyes"; then -+ BSD_STATIC_LIBJLI=bsd -+ else -+ BSD_STATIC_LIBJLI= -+ fi -+ AC_SUBST(BSD_STATIC_LIBJLI) -+ -+ ############################################################################### -+ # - # Enable or disable the elliptic curve crypto implementation - # - AC_DEFUN_ONCE([JDKOPT_DETECT_INTREE_EC], ---- ./common/autoconf/libraries.m4 Sat Dec 08 11:48:10 2018 +0000 -+++ ./common/autoconf/libraries.m4 Sat Feb 09 10:03:01 2019 -0800 -@@ -69,9 +69,15 @@ - fi - - if test "x$OPENJDK_TARGET_OS" = xbsd; then -- AC_MSG_CHECKING([what is not needed on bsd?]) -- ALSA_NOT_NEEDED=yes -- AC_MSG_RESULT([alsa]) -+ AC_MSG_CHECKING([what is not needed on BSD?]) -+ if test "x$OPENJDK_TARGET_OS_VENDOR" = xopenbsd; then -+ ALSA_NOT_NEEDED=yes -+ PULSE_NOT_NEEDED=yes -+ AC_MSG_RESULT([alsa pulse]) -+ else -+ PULSE_NOT_NEEDED=yes -+ AC_MSG_RESULT([pulse]) -+ fi - fi - - if test "x$OPENJDK" = "xfalse"; then -@@ -98,21 +104,25 @@ - # Make a simple check for the libraries at the sysroot, and setup --x-includes and - # --x-libraries for the sysroot, if that seems to be correct. - if test "x$OPENJDK_TARGET_OS" = "xlinux"; then -- if test "x$SYSROOT" != "x"; then -+ if test "x$SYS_ROOT" != "x/"; then - if test "x$x_includes" = xNONE; then -- if test -f "$SYSROOT/usr/X11R6/include/X11/Xlib.h"; then -- x_includes="$SYSROOT/usr/X11R6/include" -- elif test -f "$SYSROOT/usr/include/X11/Xlib.h"; then -- x_includes="$SYSROOT/usr/include" -+ if test -f "$SYS_ROOT/usr/X11R7/include/X11/Xlib.h"; then -+ x_includes="$SYS_ROOT/usr/X11R7/include" -+ elif test -f "$SYS_ROOT/usr/X11R6/include/X11/Xlib.h"; then -+ x_includes="$SYS_ROOT/usr/X11R6/include" -+ elif test -f "$SYS_ROOT/usr/include/X11/Xlib.h"; then -+ x_includes="$SYS_ROOT/usr/include" - fi - fi - if test "x$x_libraries" = xNONE; then -- if test -f "$SYSROOT/usr/X11R6/lib/libX11.so"; then -- x_libraries="$SYSROOT/usr/X11R6/lib" -- elif test "$SYSROOT/usr/lib64/libX11.so" && test "x$OPENJDK_TARGET_CPU_BITS" = x64; then -- x_libraries="$SYSROOT/usr/lib64" -- elif test -f "$SYSROOT/usr/lib/libX11.so"; then -- x_libraries="$SYSROOT/usr/lib" -+ if test -f "$SYS_ROOT/usr/X11R7/lib/libX11.so"; then -+ x_libraries="$SYS_ROOT/usr/X11R7/lib" -+ elif test -f "$SYS_ROOT/usr/X11R6/lib/libX11.so"; then -+ x_libraries="$SYS_ROOT/usr/X11R6/lib" -+ elif test "$SYS_ROOT/usr/lib64/libX11.so" && test "x$OPENJDK_TARGET_CPU_BITS" = x64; then -+ x_libraries="$SYS_ROOT/usr/lib64" -+ elif test -f "$SYS_ROOT/usr/lib/libX11.so"; then -+ x_libraries="$SYS_ROOT/usr/lib" - fi - fi - fi -@@ -238,6 +248,10 @@ - # A CSW package seems to be installed! - CUPS_FOUND=yes - CUPS_CFLAGS="-I$SYSROOT/opt/csw/include" -+ elif test -s ${PACKAGE_PATH}/include/cups/cups.h; then -+ # Standard package location for BSD -+ CUPS_FOUND=yes -+ CUPS_CFLAGS="-I${PACKAGE_PATH}/include" - fi - AC_MSG_RESULT([$CUPS_FOUND]) - fi -@@ -638,7 +652,7 @@ - - ############################################################################### - # -- # Check for alsa headers and libraries. Used on Linux/GNU systems. -+ # Check for alsa headers and libraries. Used on Linux/GNU and BSD systems. - # - AC_ARG_WITH(alsa, [AS_HELP_STRING([--with-alsa], - [specify prefix directory for the alsa package -@@ -743,17 +757,61 @@ - - if test "x${with_giflib}" = "xbundled"; then - USE_EXTERNAL_LIBGIF=false -+ GIFLIB_CFLAGS= -+ GIFLIB_LDFLAGS= - elif test "x${with_giflib}" = "xsystem"; then -- AC_CHECK_HEADER(gif_lib.h, [], -- [ AC_MSG_ERROR([--with-giflib=system specified, but gif_lib.h not found!])]) -- AC_CHECK_LIB(gif, DGifGetCode, [], -- [ AC_MSG_ERROR([--with-giflib=system specified, but no giflib found!])]) -+ GIFLIB_H_FOUND=no -+ AC_CHECK_HEADER(gif_lib.h, -+ [ -+ GIFLIB_H_FOUND=yes -+ GIFLIB_CFLAGS= -+ ] -+ ) -+ if test "x$GIFLIB_H_FOUND" = xno; then -+ AC_MSG_CHECKING([for giflib headers]) -+ if test -s ${PACKAGE_PATH}/include/gif_lib.h; then -+ # Standard package location for BSD -+ GIFLIB_H_FOUND=yes -+ GIFLIB_CFLAGS="-I${PACKAGE_PATH}/include" -+ fi -+ AC_MSG_RESULT([$GIFLIB_H_FOUND]) -+ fi -+ if test "x$GIFLIB_H_FOUND" = xno; then -+ HELP_MSG_MISSING_DEPENDENCY([giflib]) -+ AC_MSG_ERROR([Could not find giflib headers! $HELP_MSG ]) -+ fi -+ -+ GIFLIB_LIB_FOUND=no -+ AC_CHECK_LIB(gif, DGifGetCode, -+ [ -+ GIFLIB_LIB_FOUND=yes -+ GIFLIB_LDFLAGS= -+ ] -+ ) -+ if test "x$GIFLIB_LIB_FOUND" = xno; then -+ save_LDFLAGS="$LDFLAGS" -+ LDFLAGS="$LDFLAGS -L${PACKAGE_PATH}/lib" -+ AC_CHECK_LIB(gif, DGifOpen, -+ [ -+ GIFLIB_LIB_FOUND=yes -+ GIFLIB_LDFLAGS="-L${PACKAGE_PATH}/lib" -+ ] -+ ) -+ LDFLAGS="$save_LDFLAGS" -+ fi -+ -+ if test "x$GIFLIB_LIB_FOUND" = xno; then -+ HELP_MSG_MISSING_DEPENDENCY([giflib]) -+ AC_MSG_ERROR([Could not find giflib library! $HELP_MSG ]) -+ fi - - USE_EXTERNAL_LIBGIF=true - else - AC_MSG_ERROR([Invalid value of --with-giflib: ${with_giflib}, use 'system' or 'bundled']) - fi - AC_SUBST(USE_EXTERNAL_LIBGIF) -+ AC_SUBST(GIFLIB_CFLAGS) -+ AC_SUBST(GIFLIB_LDFLAGS) - - ############################################################################### - # -@@ -988,6 +1046,11 @@ - LIBCXX="-lstdc++" - fi - -+ # TODO better (platform agnostic) test -+ if test "x$OPENJDK_TARGET_OS" = xbsd && test "x$LIBCXX" = x && test "x$GCC" = xyes; then -+ LIBCXX="-lstdc++" -+ fi -+ - AC_SUBST(LIBCXX) - ]) - ---- ./common/autoconf/platform.m4 Sat Dec 08 11:48:10 2018 +0000 -+++ ./common/autoconf/platform.m4 Sat Feb 09 10:03:01 2019 -0800 -@@ -30,7 +30,7 @@ - [ - # First argument is the cpu name from the trip/quad - case "$1" in -- x86_64) -+ amd64|x86_64) - VAR_CPU=x86_64 - VAR_CPU_ARCH=x86 - VAR_CPU_BITS=64 -@@ -147,6 +147,22 @@ - AC_MSG_ERROR([unsupported operating system $1]) - ;; - esac -+ # The BSD's have slight differences so determine which one we are building on. -+ # For the rest set VAR_OS_VENDOR to VAR_OS -+ case "$1" in -+ *openbsd*) -+ VAR_OS_VENDOR=openbsd -+ ;; -+ *netbsd*) -+ VAR_OS_VENDOR=netbsd -+ ;; -+ *freebsd*) -+ VAR_OS_VENDOR=freebsd -+ ;; -+ *) -+ VAR_OS_VENDOR="$VAR_OS" -+ ;; -+ esac - ]) - - # Expects $host_os $host_cpu $build_os and $build_cpu -@@ -193,6 +209,7 @@ - PLATFORM_EXTRACT_VARS_FROM_CPU($host_cpu) - # ... and setup our own variables. (Do this explicitely to facilitate searching) - OPENJDK_TARGET_OS="$VAR_OS" -+ OPENJDK_TARGET_OS_VENDOR="$VAR_OS_VENDOR" - OPENJDK_TARGET_OS_API="$VAR_OS_API" - OPENJDK_TARGET_OS_ENV="$VAR_OS_ENV" - OPENJDK_TARGET_CPU="$VAR_CPU" -@@ -200,6 +217,7 @@ - OPENJDK_TARGET_CPU_BITS="$VAR_CPU_BITS" - OPENJDK_TARGET_CPU_ENDIAN="$VAR_CPU_ENDIAN" - AC_SUBST(OPENJDK_TARGET_OS) -+ AC_SUBST(OPENJDK_TARGET_OS_VENDOR) - AC_SUBST(OPENJDK_TARGET_OS_API) - AC_SUBST(OPENJDK_TARGET_OS_ENV) - AC_SUBST(OPENJDK_TARGET_CPU) -@@ -310,8 +328,8 @@ - - # Setup OPENJDK_TARGET_CPU_OSARCH, which is used to set the os.arch Java system property - OPENJDK_TARGET_CPU_OSARCH="$OPENJDK_TARGET_CPU" -- if test "x$OPENJDK_TARGET_OS" = xlinux && test "x$OPENJDK_TARGET_CPU" = xx86; then -- # On linux only, we replace x86 with i386. -+ if test "x$OPENJDK_TARGET_OS" = xbsd -o "x$OPENJDK_TARGET_OS" = xlinux && test "x$OPENJDK_TARGET_CPU" = xx86; then -+ # On Linux and BSD, we replace x86 with i386. - OPENJDK_TARGET_CPU_OSARCH="i386" - elif test "x$OPENJDK_TARGET_OS" != xmacosx && test "x$OPENJDK_TARGET_CPU" = xx86_64; then - # On all platforms except macosx, we replace x86_64 with amd64. ---- ./common/autoconf/spec.gmk.in Sat Dec 08 11:48:10 2018 +0000 -+++ ./common/autoconf/spec.gmk.in Sat Feb 09 10:03:01 2019 -0800 -@@ -79,6 +79,7 @@ - OPENJDK_TARGET_OS:=@OPENJDK_TARGET_OS@ - OPENJDK_TARGET_OS_API:=@OPENJDK_TARGET_OS_API@ - OPENJDK_TARGET_OS_ENV:=@OPENJDK_TARGET_OS_ENV@ -+OPENJDK_TARGET_OS_VENDOR:=@OPENJDK_TARGET_OS_VENDOR@ - - OPENJDK_TARGET_CPU:=@OPENJDK_TARGET_CPU@ - OPENJDK_TARGET_CPU_ARCH:=@OPENJDK_TARGET_CPU_ARCH@ -@@ -281,7 +282,7 @@ - ALSA_LIBS:=@ALSA_LIBS@ - ALSA_CFLAGS:=@ALSA_CFLAGS@ - --PACKAGE_PATH=@PACKAGE_PATH@ -+PACKAGE_PATH:=@PACKAGE_PATH@ - - # Source file for cacerts - CACERTS_FILE=@CACERTS_FILE@ -@@ -289,6 +290,9 @@ - # Enable unlimited crypto policy - UNLIMITED_CRYPTO=@UNLIMITED_CRYPTO@ - -+# Build static libjli on bsd -+BSD_STATIC_LIBJLI=@BSD_STATIC_LIBJLI@ -+ - # Necessary additional compiler flags to compile X11 - X_CFLAGS:=@X_CFLAGS@ - X_LIBS:=@X_LIBS@ -@@ -572,6 +576,8 @@ - ENABLE_INTREE_EC=@ENABLE_INTREE_EC@ - USE_EXTERNAL_LIBJPEG:=@USE_EXTERNAL_LIBJPEG@ - USE_EXTERNAL_LIBGIF:=@USE_EXTERNAL_LIBGIF@ -+GIFLIB_CFLAGS:=@GIFLIB_CFLAGS@ -+GIFLIB_LDFLAGS:=@GIFLIB_LDFLAGS@ - USE_EXTERNAL_LIBZ:=@USE_EXTERNAL_LIBZ@ - LIBZIP_CAN_USE_MMAP:=@LIBZIP_CAN_USE_MMAP@ - MSVCR_DLL:=@MSVCR_DLL@ ---- ./common/autoconf/toolchain.m4 Sat Dec 08 11:48:10 2018 +0000 -+++ ./common/autoconf/toolchain.m4 Sat Feb 09 10:03:01 2019 -0800 -@@ -37,6 +37,7 @@ - VALID_TOOLCHAINS_all="gcc clang solstudio xlc microsoft" - - # These toolchains are valid on different platforms -+VALID_TOOLCHAINS_bsd="clang gcc" - VALID_TOOLCHAINS_linux="gcc clang" - VALID_TOOLCHAINS_solaris="solstudio" - VALID_TOOLCHAINS_macosx="gcc clang" -@@ -713,7 +714,7 @@ - - # objcopy is used for moving debug symbols to separate files when - # full debug symbols are enabled. -- if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xlinux; then -+ if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xlinux || test "x$OPENJDK_TARGET_OS" = xbsd ; then - BASIC_CHECK_TOOLS(OBJCOPY, [gobjcopy objcopy]) - # Only call fixup if objcopy was found. - if test -n "$OBJCOPY"; then -@@ -801,10 +802,53 @@ - AC_DEFUN_ONCE([TOOLCHAIN_MISC_CHECKS], - [ - # The package path is used only on macosx? -- # FIXME: clean this up, and/or move it elsewhere. -- PACKAGE_PATH=/opt/local -+ AC_ARG_WITH(package-path, [AS_HELP_STRING([--with-package-path], -+ [package path to be used for location of third party packages])]) -+ PACKAGE_PATH="$with_package_path" -+ if test "x$PACKAGE_PATH" = x; then -+ if test "`uname -s`" = "Darwin"; then -+ PACKAGE_PATH=/opt/local -+ fi -+ -+ if test "`uname -s`" = "FreeBSD"; then -+ PACKAGE_PATH=/usr/local -+ fi -+ -+ if test "`uname -s`" = "NetBSD"; then -+ PACKAGE_PATH=/usr/pkg -+ fi -+ -+ if test "`uname -s`" = "OpenBSD"; then -+ PACKAGE_PATH=/usr/local -+ fi -+ fi -+ - AC_SUBST(PACKAGE_PATH) - -+ # On OpenBSD check to see if ld requires -z wxneeded -+ if test "`uname -s`" = "OpenBSD"; then -+ AC_MSG_CHECKING([if ld requires -z wxneeded]) -+ PUSHED_LDFLAGS="$LDFLAGS" -+ LDFLAGS="$LDFLAGS -Wl,-z,wxneeded" -+ AC_LINK_IFELSE([AC_LANG_SOURCE([[int main() { }]])], -+ [ -+ if $READELF -l conftest$ac_exeext | $GREP OPENBSD_WXNEED > /dev/null; then -+ AC_MSG_RESULT([yes]) -+ LDFLAGS_JDK="${LDFLAGS_JDK} -Wl,-z,wxneeded" -+ else -+ AC_MSG_RESULT([yes]) -+ fi -+ ], -+ [ -+ AC_MSG_RESULT([no]) -+ ], -+ [ -+ AC_MSG_RESULT([no]) -+ ] -+ ) -+ LDFLAGS="$PUSHED_LDFLAGS" -+ fi -+ - # Check for extra potential brokenness. - if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then - # On Windows, double-check that we got the right compiler. ---- ./configure Sat Dec 08 11:48:10 2018 +0000 -+++ ./configure Sat Feb 09 10:03:01 2019 -0800 -@@ -1,4 +1,4 @@ --#!/bin/bash -+#!/bin/sh - # - # Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. - # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ---- ./make/Javadoc.gmk Sat Dec 08 11:48:10 2018 +0000 -+++ ./make/Javadoc.gmk Sat Feb 09 10:03:01 2019 -0800 -@@ -46,8 +46,18 @@ - - BUILD_NUMBER=$(JDK_BUILD_NUMBER) - -+ifeq ($(OPENJDK_TARGET_OS_VENDOR), openbsd) -+ ifeq ($(OPENJDK_TARGET_CPU_BITS), 32) -+ JAVADOC_CMD_MEM = "-Xmx768m" -+ else -+ JAVADOC_CMD_MEM = "-Xmx1024m" -+ endif -+else -+ JAVADOC_CMD_MEM = "-Xmx1024m" -+endif -+ - JAVADOC_CMD = $(JAVA) \ -- -Xmx1024m \ -+ $(JAVADOC_CMD_MEM) \ - -Djava.awt.headless=true \ - $(NEW_JAVADOC) \ - -bootclasspath $(JDK_OUTPUTDIR)/classes ---- ./make/Main.gmk Sat Dec 08 11:48:10 2018 +0000 -+++ ./make/Main.gmk Sat Feb 09 10:03:01 2019 -0800 -@@ -58,7 +58,11 @@ - - # Setup number of jobs to use. -jN is unfortunately not available for us to parse from the command line, - # hence this workaround. -+ifdef JOBS -+ifneq ($(JOBS),0) - MAKE_ARGS:=$(MAKE_ARGS) -j$(JOBS) -+endif -+endif - - ### Main targets - ---- ./make/common/MakeBase.gmk Sat Dec 08 11:48:10 2018 +0000 -+++ ./make/common/MakeBase.gmk Sat Feb 09 10:03:01 2019 -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. - # Only use time if it's GNU time which supports format and output file. -- WRAPPER_SHELL:=/bin/bash $$(SRC_ROOT)/common/bin/shell-tracer.sh $$(if $$(findstring yes,$$(IS_GNU_TIME)),$$(TIME),-) $$(OUTPUT_ROOT)/build-trace-time.log /bin/bash -+ WRAPPER_SHELL:=bash $$(SRC_ROOT)/common/bin/shell-tracer.sh $$(if $$(findstring yes,$$(IS_GNU_TIME)),$$(TIME),-) $$(OUTPUT_ROOT)/build-trace-time.log bash - SHELL=$$(warning $$(if $$@,Building $$@,Running shell command) $$(if $$<, (from $$<))$$(if $$?, ($$(wordlist 1, 20, $$?) $$(if $$(wordlist 21, 22, $$?), ... [in total $$(words $$?) files]) newer)))$$(WRAPPER_SHELL) - endif - # Never remove warning messages; this is just for completeness -@@ -365,8 +365,8 @@ - - # This is to be called by all SetupFoo macros - define LogSetupMacroEntry -- $(if $(27),$(error Internal makefile error: Too many arguments to LogSetupMacroEntry, please update MakeBase.gmk)) -- $(if $(findstring $(LOG_LEVEL),debug trace), $(info $1 $(foreach i,2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26,$(if $($i),$(NEWLINE) $(strip [$i] $($i)))))) -+ $(if $(30),$(error Internal makefile error: Too many arguments to LogSetupMacroEntry, please update MakeBase.gmk)) -+ $(if $(findstring $(LOG_LEVEL),debug trace), $(info $1 $(foreach i,2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29,$(if $($i),$(NEWLINE) $(strip [$i] $($i)))))) - endef - - # Make directory without forking mkdir if not needed ---- ./make/common/NativeCompilation.gmk Sat Dec 08 11:48:10 2018 +0000 -+++ ./make/common/NativeCompilation.gmk Sat Feb 09 10:03:01 2019 -0800 -@@ -158,9 +158,9 @@ - # CC the compiler to use, default is $(CC) - # LDEXE the linker to use for linking executables, default is $(LDEXE) - # OPTIMIZATION sets optimization level to NONE, LOW, HIGH, HIGHEST -- $(foreach i,2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26, $(if $($i),$1_$(strip $($i)))$(NEWLINE)) -- $(call LogSetupMacroEntry,SetupNativeCompilation($1),$2,$3,$4,$5,$6,$7,$8,$9,$(10),$(11),$(12),$(13),$(14),$(15),$(16),$(17),$(18),$(19),$(20),$(21),$(22),$(23),$(24),$(25),$(26)) -- $(if $(27),$(error Internal makefile error: Too many arguments to SetupNativeCompilation, please update NativeCompilation.gmk)) -+ $(foreach i,2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29, $(if $($i),$1_$(strip $($i)))$(NEWLINE)) -+ $(call LogSetupMacroEntry,SetupNativeCompilation($1),$2,$3,$4,$5,$6,$7,$8,$9,$(10),$(11),$(12),$(13),$(14),$(15),$(16),$(17),$(18),$(19),$(20),$(21),$(22),$(23),$(24),$(25),$(26),$(27),$(28),$(29)) -+ $(if $(30),$(error Internal makefile error: Too many arguments to SetupNativeCompilation, please update NativeCompilation.gmk)) - - ifneq (,$$($1_BIN)) - $$(error BIN has been replaced with OBJECT_DIR) ---- ./hotspot/agent/make/Makefile Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/agent/make/Makefile Sun Feb 10 09:26:05 2019 -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 Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/agent/src/os/bsd/BsdDebuggerLocal.c Sun Feb 10 09:26:05 2019 -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/Makefile Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/agent/src/os/bsd/Makefile Sun Feb 10 09:26:05 2019 -0800 -@@ -85,6 +85,9 @@ - LFLAGS_LIBSA = -Xlinker --version-script=mapfile - endif - -+LDFLAGS_NO_EXEC_STACK="-Wl,-z,noexecstack" -+LFLAGS_LIBSA += $(LDFLAGS_NO_EXEC_STACK) -+ - $(LIBSA): $(OBJSPLUS) mapfile - if [ ! -d $(ARCH) ] ; then mkdir $(ARCH) ; fi - $(GCC) -shared $(LFLAGS_LIBSA) -o $(LIBSA) $(FOUNDATIONFLAGS) $(OBJSPLUS) $(LIBS) $(SALIBS) ---- ./hotspot/agent/src/os/bsd/elfmacros.h Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/agent/src/os/bsd/elfmacros.h Sun Feb 10 09:26:05 2019 -0800 -@@ -34,6 +34,7 @@ - #define ELF_SYM Elf64_Sym - #define ELF_DYN Elf64_Dyn - #define ELF_ADDR Elf64_Addr -+#define ELF_AUXV Elf64_Auxinfo - - #ifndef ELF_ST_TYPE - #define ELF_ST_TYPE ELF64_ST_TYPE -@@ -47,6 +48,7 @@ - #define ELF_SYM Elf32_Sym - #define ELF_DYN Elf32_Dyn - #define ELF_ADDR Elf32_Addr -+#define ELF_AUXV Elf32_Auxinfo - - #ifndef ELF_ST_TYPE - #define ELF_ST_TYPE ELF32_ST_TYPE ---- ./hotspot/agent/src/os/bsd/ps_core.c Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/agent/src/os/bsd/ps_core.c Sun Feb 10 09:26:05 2019 -0800 -@@ -1091,6 +1091,18 @@ - if (core_handle_prstatus(ph, descdata, notep->n_descsz) != true) { - return false; - } -+ } else if (notep->n_type == NT_PROCSTAT_AUXV) { -+ // Get first segment from entry point -+ ELF_AUXV *auxv = (ELF_AUXV *)descdata; -+ while (auxv->a_type != AT_NULL) { -+ if (auxv->a_type == AT_ENTRY) { -+ // Set entry point address to address of dynamic section. -+ // We will adjust it in read_exec_segments(). -+ ph->core->dynamic_addr = auxv->a_un.a_val; -+ break; -+ } -+ auxv++; -+ } - } - p = descdata + ROUNDUP(notep->n_descsz, 4); - } -@@ -1272,7 +1284,13 @@ - - // from PT_DYNAMIC we want to read address of first link_map addr - case PT_DYNAMIC: { -- ph->core->dynamic_addr = exec_php->p_vaddr; -+ if (exec_ehdr->e_type == ET_EXEC) { -+ ph->core->dynamic_addr = exec_php->p_vaddr; -+ } else { // ET_DYN -+ // dynamic_addr has entry point of executable. -+ // Thus we should substract it. -+ ph->core->dynamic_addr += exec_php->p_vaddr - exec_ehdr->e_entry; -+ } - print_debug("address of _DYNAMIC is 0x%lx\n", ph->core->dynamic_addr); - break; - } -@@ -1472,8 +1490,9 @@ - goto err; - } - -- if (read_elf_header(ph->core->exec_fd, &exec_ehdr) != true || exec_ehdr.e_type != ET_EXEC) { -- print_debug("executable file is not a valid ELF ET_EXEC file\n"); -+ if (read_elf_header(ph->core->exec_fd, &exec_ehdr) != true || -+ ((exec_ehdr.e_type != ET_EXEC) && (exec_ehdr.e_type != ET_DYN))) { -+ print_debug("executable file is not a valid ELF file\n"); - goto err; - } - ---- ./hotspot/agent/src/os/bsd/symtab.c Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/agent/src/os/bsd/symtab.c Sun Feb 10 09:26:05 2019 -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 Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/agent/src/share/classes/sun/jvm/hotspot/HotSpotAgent.java Sun Feb 10 09:26:05 2019 -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 Sun Feb 10 09:26:05 2019 -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 Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/bsd/BsdCDebugger.java Sun Feb 10 09:26:05 2019 -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 Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/bsd/BsdThreadContextFactory.java Sun Feb 10 09:26:05 2019 -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 Sun Feb 10 09:26:05 2019 -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 Sun Feb 10 09:26:05 2019 -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)); -+ } -+} ---- ./hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/bsd/x86/BsdX86CFrame.java Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/bsd/x86/BsdX86CFrame.java Sun Feb 10 09:26:05 2019 -0800 -@@ -55,7 +55,15 @@ - - public CFrame sender(ThreadProxy thread) { - X86ThreadContext context = (X86ThreadContext) thread.getContext(); -- Address esp = context.getRegisterAsAddress(X86ThreadContext.ESP); -+ /* -+ * Native code fills in the stack pointer register value using index -+ * X86ThreadContext.SP. -+ * See file BsdDebuggerLocal.c macro REG_INDEX(reg). -+ * -+ * Be sure to use SP, or UESP which is aliased to SP in Java code, -+ * for the frame pointer validity check. -+ */ -+ Address esp = context.getRegisterAsAddress(X86ThreadContext.SP); - - if ( (ebp == null) || ebp.lessThan(esp) ) { - return null; ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/ppc64/PPC64ThreadContext.java Sun Feb 10 09:26:05 2019 -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 Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/proc/ProcDebuggerLocal.java Sun Feb 10 09:26:05 2019 -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 Sun Feb 10 09:26:05 2019 -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 Sun Feb 10 09:26:05 2019 -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 Sun Feb 10 09:26:05 2019 -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 Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/remote/RemoteDebuggerClient.java Sun Feb 10 09:26:05 2019 -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 Sun Feb 10 09:26:05 2019 -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 Sun Feb 10 09:26:05 2019 -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 Sun Feb 10 09:26:05 2019 -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 Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/Threads.java Sun Feb 10 09:26:05 2019 -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 Sun Feb 10 09:26:05 2019 -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 Sun Feb 10 09:26:05 2019 -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 Sun Feb 10 09:26:05 2019 -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 Sun Feb 10 09:26:05 2019 -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 Sun Feb 10 09:26:05 2019 -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 Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/PlatformInfo.java Sun Feb 10 09:26:05 2019 -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 Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/make/bsd/Makefile Sun Feb 10 09:26:05 2019 -0800 -@@ -66,6 +66,10 @@ - FORCE_TIERED=1 - endif - endif -+# C1 is not ported on ppc64, so we cannot build a tiered VM: -+ifneq (,$(findstring $(ARCH), ppc ppc64)) -+ FORCE_TIERED=0 -+endif - - ifdef LP64 - ifeq ("$(filter $(LP64_ARCH),$(BUILDARCH))","") ---- ./hotspot/make/bsd/makefiles/adlc.make Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/make/bsd/makefiles/adlc.make Sun Feb 10 09:26:05 2019 -0800 -@@ -107,6 +107,11 @@ - - all: $(EXEC) - -+ADLC_LD_FLAGS= -+ifeq ($(STATIC_CXX), true) -+ ADLC_LD_FLAGS = $(STATIC_LIBGCC) $(ADLC_STATIC_STDCXX) -+endif -+ - $(EXEC) : $(OBJECTS) - @echo Making adlc - $(QUIETLY) $(HOST.LINK_NOPROF.CXX) -o $(EXEC) $(OBJECTS) ---- ./hotspot/make/bsd/makefiles/build_vm_def.sh Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/make/bsd/makefiles/build_vm_def.sh Sun Feb 10 09:26:05 2019 -0800 -@@ -1,12 +1,28 @@ - #!/bin/sh - - # If we're cross compiling use that path for nm --if [ "$CROSS_COMPILE_ARCH" != "" ]; then --NM=$ALT_COMPILER_PATH/nm -+if [ "$CROSS_COMPILE_ARCH" != "" ]; then -+ NM=$ALT_COMPILER_PATH/nm - else --NM=nm -+ NM=nm - fi - --$NM -Uj $* | awk ' -- { if ($3 ~ /^_ZTV/ || $3 ~ /^gHotSpotVM/) print "\t" $3 } -- ' -+case "$(uname -s)" in -+Darwin ) -+ $NM -Uj $@ | awk '{ -+ if ($3 ~ /^_ZTV/ || $3 ~ /^gHotSpotVM/) print "\t" $3 -+ }' ;; -+OpenBSD ) -+ $NM $@ | awk '{ -+ if ($2 == "U") next -+ if ($3 ~ /^_ZTV/ || $3 ~ /^gHotSpotVM/) print "\t" $3 ";" -+ if ($3 ~ /^UseSharedSpaces$/) print "\t" $3 ";" -+ if ($3 ~ /^_ZN9Arguments17SharedArchivePathE$/) print "\t" $3 ";" -+ }' | sort -u ;; -+* ) -+ $NM --defined-only $@ | awk '{ -+ if ($3 ~ /^_ZTV/ || $3 ~ /^gHotSpotVM/) print "\t" $3 ";" -+ if ($3 ~ /^UseSharedSpaces$/) print "\t" $3 ";" -+ if ($3 ~ /^_ZN9Arguments17SharedArchivePathE$/) print "\t" $3 ";" -+ }' | sort -u ;; -+esac ---- ./hotspot/make/bsd/makefiles/debug.make Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/make/bsd/makefiles/debug.make Sun Feb 10 09:26:05 2019 -0800 -@@ -35,7 +35,10 @@ - # to inhibit the effect of the previous line on CFLAGS. - - # Linker mapfile --MAPFILE = $(GAMMADIR)/make/bsd/makefiles/mapfile-vers-debug -+ifeq ($(OS_VENDOR), Darwin) -+MAPSUFX = .macosx -+endif -+MAPFILE = $(GAMMADIR)/make/bsd/makefiles/mapfile-vers-debug$(MAPSUFX) - - VERSION = debug - SYSDEFS += -DASSERT ---- ./hotspot/make/bsd/makefiles/defs.make Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/make/bsd/makefiles/defs.make Sun Feb 10 09:26:05 2019 -0800 -@@ -29,7 +29,15 @@ - SLASH_JAVA ?= /java - - # Need PLATFORM (os-arch combo names) for jdk and hotspot, plus libarch name --ARCH:=$(shell uname -m) -+# ARCH can be set explicitly in spec.gmk -+ifndef ARCH -+ ARCH := $(shell uname -m) -+ # Fold little endian PowerPC64 into big-endian (if ARCH is set in -+ # hotspot-spec.gmk, this will be done by the configure script). -+ ifeq ($(ARCH),ppc64le) -+ ARCH := ppc64 -+ endif -+endif - PATH_SEP = : - ifeq ($(LP64), 1) - ARCH_DATA_MODEL ?= 64 -@@ -117,11 +125,19 @@ - endif - - # PPC --ifeq ($(ARCH), ppc) -- ARCH_DATA_MODEL = 32 -- PLATFORM = bsd-ppc -- VM_PLATFORM = bsd_ppc -- HS_ARCH = ppc -+# Notice: after 8046471 ARCH will be 'ppc' for top-level ppc64 builds but -+# 'ppc64' for HotSpot-only ppc64 builds. Need to detect both variants here! -+ifneq (,$(findstring $(ARCH), ppc ppc64)) -+ ifeq ($(ARCH_DATA_MODEL), 64) -+ MAKE_ARGS += LP64=1 -+ PLATFORM = bsd-ppc64 -+ VM_PLATFORM = bsd_ppc64 -+ else -+ ARCH_DATA_MODEL = 32 -+ PLATFORM = bsd-ppc -+ VM_PLATFORM = bsd_ppc -+ endif -+ HS_ARCH = ppc - endif - - # On 32 bit bsd we build server and client, on 64 bit just server. -@@ -321,10 +337,22 @@ - ifeq ($(JVM_VARIANT_MINIMAL1),true) - EXPORT_LIST += $(EXPORT_MINIMAL_DIR)/Xusage.txt - EXPORT_LIST += $(EXPORT_MINIMAL_DIR)/libjvm.$(LIBRARY_SUFFIX) -+ -+ ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) -+ ifeq ($(ZIP_DEBUGINFO_FILES),1) -+ EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.diz -+ else -+ ifeq ($(OS_VENDOR), Darwin) -+ EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.$(LIBRARY_SUFFIX).dSYM -+ else -+ EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.debuginfo -+ endif -+ endif -+ endif - 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 Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/make/bsd/makefiles/fastdebug.make Sun Feb 10 09:26:05 2019 -0800 -@@ -56,7 +56,10 @@ - # to inhibit the effect of the previous line on CFLAGS. - - # Linker mapfile --MAPFILE = $(GAMMADIR)/make/bsd/makefiles/mapfile-vers-debug -+ifeq ($(OS_VENDOR), Darwin) -+MAPSUFX = .macosx -+endif -+MAPFILE = $(GAMMADIR)/make/bsd/makefiles/mapfile-vers-debug$(MAPSUFX) - - VERSION = fastdebug - SYSDEFS += -DASSERT -DCHECK_UNHANDLED_OOPS ---- ./hotspot/make/bsd/makefiles/gcc.make Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/make/bsd/makefiles/gcc.make Sun Feb 10 09:26:05 2019 -0800 -@@ -168,6 +168,9 @@ - CFLAGS += -DDONT_USE_PRECOMPILED_HEADER - endif - -+# Allow for where third party packages are located -+CFLAGS+= -DPACKAGE_PATH=\"$(PACKAGE_PATH)\" -+ - #------------------------------------------------------------------------ - # Compiler flags - -@@ -201,12 +204,15 @@ - endif - - ifeq ($(USE_CLANG), true) -- # Before Clang 3.1, we had to pass the stack alignment specification directly to llvm with the help of '-mllvm' -- # Starting with version 3.1, Clang understands the '-mstack-alignment' (and rejects '-mllvm -stack-alignment') -- ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 3 \) \| \( \( $(CC_VER_MAJOR) = 3 \) \& \( $(CC_VER_MINOR) \>= 1 \) \))" "0" -- STACK_ALIGNMENT_OPT = -mno-omit-leaf-frame-pointer -mstack-alignment=16 -- else -- STACK_ALIGNMENT_OPT = -mno-omit-leaf-frame-pointer -mllvm -stack-alignment=16 -+ STACK_ALIGNMENT_OPT = -mno-omit-leaf-frame-pointer -+ ifeq ($(OS_VENDOR), Darwin) -+ # Before Clang 3.1, we had to pass the stack alignment specification directly to llvm with the help of '-mllvm' -+ # Starting with version 3.1, Clang understands the '-mstack-alignment' (and rejects '-mllvm -stack-alignment') -+ ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 3 \) \| \( \( $(CC_VER_MAJOR) = 3 \) \& \( $(CC_VER_MINOR) \>= 1 \) \))" "0" -+ STACK_ALIGNMENT_OPT += -mstack-alignment=16 -+ else -+ STACK_ALIGNMENT_OPT += -mllvm -stack-alignment=16 -+ endif - endif - endif - -@@ -229,6 +235,10 @@ - LFLAGS += $(ARCHFLAG) - ASFLAGS += $(ARCHFLAG) - -+ifeq ($(DEBUG_BINARIES), true) -+ ASFLAGS += $(ASFLAGS_DEBUG_SYMBOLS) -+endif -+ - ifdef E500V2 - CFLAGS += -DE500V2 - endif -@@ -258,6 +268,10 @@ - # WARNINGS_ARE_ERRORS += -Wno-tautological-constant-out-of-range-compare - WARNINGS_ARE_ERRORS += -Wno-delete-non-virtual-dtor -Wno-deprecated -Wno-format -Wno-dynamic-class-memaccess - WARNINGS_ARE_ERRORS += -Wno-empty-body -+ ifneq "$(shell expr \( $(CC_VER_MAJOR) \>= 6 \))" "0" -+ WARNINGS_ARE_ERRORS += -Wno-undefined-bool-conversion -Wno-expansion-to-defined -+ WARNINGS_ARE_ERRORS += -Wno-undefined-var-template -+ endif - endif - - WARNING_FLAGS = -Wpointer-arith -Wsign-compare -Wundef -@@ -265,7 +279,7 @@ - ifeq "$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0" - # Since GCC 4.3, -Wconversion has changed its meanings to warn these implicit - # conversions which might affect the values. Only enable it in earlier versions. -- WARNING_FLAGS = -Wunused-function -+# WARNING_FLAGS = -Wunused-function - ifeq ($(USE_CLANG),) - WARNING_FLAGS += -Wconversion - endif -@@ -318,6 +332,9 @@ - OPT_CFLAGS/loopTransform.o += $(OPT_CFLAGS/NOOPT) - OPT_CFLAGS/unsafe.o += -O1 - endif -+ ifeq ($(shell expr $(CC_VER_MAJOR) = 6 \& $(CC_VER_MINOR) = 0), 1) -+ OPT_CFLAGS/unsafe.o += -O1 -+ endif - else - # 6835796. Problem in GCC 4.3.0 with mulnode.o optimized compilation. - ifeq ($(shell expr $(CC_VER_MAJOR) = 4 \& $(CC_VER_MINOR) = 3), 1) -@@ -379,6 +396,8 @@ - # Use $(MAPFLAG:FILENAME=real_file_name) to specify a map file. - MAPFLAG = -Xlinker --version-script=FILENAME - -+LDFLAGS_NO_EXEC_STACK="-Wl,-z,noexecstack" -+ - # - # Shared Library - # -@@ -421,53 +440,44 @@ - CFLAGS += -flimit-debug-info - endif - -+# Use the stabs format for debugging information (this is the default -+# on gcc-2.91). It's good enough, has all the information about line -+# numbers and local variables, and libjvm.so is only about 16M. -+# Change this back to "-g" if you want the most expressive format. -+# (warning: that could easily inflate libjvm.so to 150M!) -+# Note: The Itanium gcc compiler crashes when using -gstabs. -+# Don't use stabs on gcc>=4.8 because it is incompatible with -+# pre-compiled-headers -+ifeq ($(USE_CLANG), true) -+ # Clang doesn't understand -gstabs -+ STABS_CFLAGS += -g -+else -+ ifeq "$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 8 \) \))" "1" -+ # GCC >= 4.8 -+ STABS_CFLAGS += -g -+ else -+ STABS_CFLAGS/ia64 = -g -+ STABS_CFLAGS/arm = -g -+ STABS_CFLAGS/ppc = -g -+ STABS_CFLAGS/amd64 = -g -+ ifeq ($(STABS_CFLAGS/$(BUILDARCH)),) -+ STABS_CFLAGS += -gstabs -+ else -+ STABS_CFLAGS += $(STABS_CFLAGS/$(BUILDARCH)) -+ endif -+ endif -+endif -+ - # DEBUG_BINARIES uses full -g debug information for all configs - ifeq ($(DEBUG_BINARIES), true) - CFLAGS += -g - else -- # Use the stabs format for debugging information (this is the default -- # on gcc-2.91). It's good enough, has all the information about line -- # numbers and local variables, and libjvm.so is only about 16M. -- # Change this back to "-g" if you want the most expressive format. -- # (warning: that could easily inflate libjvm.so to 150M!) -- # Note: The Itanium gcc compiler crashes when using -gstabs. -- DEBUG_CFLAGS/ia64 = -g -- DEBUG_CFLAGS/amd64 = -g -- DEBUG_CFLAGS/arm = -g -- DEBUG_CFLAGS/ppc = -g -- DEBUG_CFLAGS += $(DEBUG_CFLAGS/$(BUILDARCH)) -- ifeq ($(DEBUG_CFLAGS/$(BUILDARCH)),) -- DEBUG_CFLAGS += -gstabs -- endif -+ DEBUG_CFLAGS += ${STABS_CFLAGS} - - ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) -- FASTDEBUG_CFLAGS/ia64 = -g -- FASTDEBUG_CFLAGS/amd64 = -g -- FASTDEBUG_CFLAGS/arm = -g -- FASTDEBUG_CFLAGS/ppc = -g -- FASTDEBUG_CFLAGS += $(FASTDEBUG_CFLAGS/$(BUILDARCH)) -- ifeq ($(FASTDEBUG_CFLAGS/$(BUILDARCH)),) -- ifeq ($(USE_CLANG), true) -- # Clang doesn't understand -gstabs -- FASTDEBUG_CFLAGS += -g -- else -- FASTDEBUG_CFLAGS += -gstabs -- endif -- endif -+ FASTDEBUG_CFLAGS += ${STABS_CFLAGS} - -- OPT_CFLAGS/ia64 = -g -- OPT_CFLAGS/amd64 = -g -- OPT_CFLAGS/arm = -g -- OPT_CFLAGS/ppc = -g -- OPT_CFLAGS += $(OPT_CFLAGS/$(BUILDARCH)) -- ifeq ($(OPT_CFLAGS/$(BUILDARCH)),) -- ifeq ($(USE_CLANG), true) -- # Clang doesn't understand -gstabs -- OPT_CFLAGS += -g -- else -- OPT_CFLAGS += -gstabs -- endif -- endif -+ OPT_CFLAGS += ${STABS_CFLAGS} - endif - endif - ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./hotspot/make/bsd/makefiles/launcher.make Sun Feb 10 09:26:05 2019 -0800 -@@ -0,0 +1,117 @@ -+# -+# Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. -+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -+# -+# This code is free software; you can redistribute it and/or modify it -+# under the terms of the GNU General Public License version 2 only, as -+# published by the Free Software Foundation. -+# -+# This code is distributed in the hope that it will be useful, but WITHOUT -+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+# version 2 for more details (a copy is included in the LICENSE file that -+# accompanied this code). -+# -+# You should have received a copy of the GNU General Public License version -+# 2 along with this work; if not, write to the Free Software Foundation, -+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+# -+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -+# or visit www.oracle.com if you need additional information or have any -+# questions. -+# -+# -+ -+# Rules to build gamma launcher, used by vm.make -+ -+ -+LAUNCHER_SCRIPT = hotspot -+LAUNCHER = gamma -+ -+LAUNCHERDIR := $(GAMMADIR)/src/os/posix/launcher -+LAUNCHERDIR_SHARE := $(GAMMADIR)/src/share/tools/launcher -+LAUNCHERFLAGS := $(ARCHFLAG) \ -+ -I$(LAUNCHERDIR) -I$(GAMMADIR)/src/share/vm/prims \ -+ -I$(LAUNCHERDIR_SHARE) \ -+ -DFULL_VERSION=\"$(HOTSPOT_RELEASE_VERSION)\" \ -+ -DJDK_MAJOR_VERSION=\"$(JDK_MAJOR_VERSION)\" \ -+ -DJDK_MINOR_VERSION=\"$(JDK_MINOR_VERSION)\" \ -+ -DARCH=\"$(LIBARCH)\" \ -+ -DGAMMA \ -+ -DLAUNCHER_TYPE=\"gamma\" \ -+ -DLINK_INTO_$(LINK_INTO) \ -+ $(TARGET_DEFINES) -+# Give the launcher task_for_pid() privileges so that it can be used to run JStack, JInfo, et al. -+ifeq ($(OS_VENDOR), Darwin) -+LFLAGS_LAUNCHER += -sectcreate __TEXT __info_plist $(GAMMADIR)/src/os/bsd/launcher/Info-privileged.plist -+endif -+ -+ifeq ($(LINK_INTO),AOUT) -+ LAUNCHER.o = launcher.o $(JVM_OBJ_FILES) -+ LAUNCHER_MAPFILE = mapfile_reorder -+ LFLAGS_LAUNCHER$(LDNOMAP) += $(MAPFLAG:FILENAME=$(LAUNCHER_MAPFILE)) -+ LFLAGS_LAUNCHER += $(SONAMEFLAG:SONAME=$(LIBJVM)) $(STATIC_LIBGCC) -+ LIBS_LAUNCHER += $(STATIC_STDCXX) $(LIBS) -+else -+ LAUNCHER.o = launcher.o -+ LFLAGS_LAUNCHER += -L`pwd` -+ -+ # The gamma launcher runs the JDK from $JAVA_HOME, overriding the JVM with a -+ # freshly built JVM at ./libjvm.{so|dylib}. This is accomplished by setting -+ # the library searchpath using ({DY}LD_LIBRARY_PATH) to find the local JVM -+ # first. Gamma dlopen()s libjava from $JAVA_HOME/jre/lib{/$arch}, which is -+ # statically linked with CoreFoundation framework libs. Unfortunately, gamma's -+ # unique searchpath results in some unresolved symbols in the framework -+ # libraries, because JDK libraries are inadvertently discovered first on the -+ # searchpath, e.g. libjpeg. On Mac OS X, filenames are case *insensitive*. -+ # So, the actual filename collision is libjpeg.dylib and libJPEG.dylib. -+ # To resolve this, gamma needs to also statically link with the CoreFoundation -+ # framework libraries. -+ -+ ifeq ($(OS_VENDOR),Darwin) -+ LFLAGS_LAUNCHER += -framework CoreFoundation -+ endif -+ -+ LIBS_LAUNCHER += -l$(JVM) $(LIBS) -+endif -+ -+LINK_LAUNCHER = $(LINK.CC) -+ -+LINK_LAUNCHER/PRE_HOOK = $(LINK_LIB.CXX/PRE_HOOK) -+LINK_LAUNCHER/POST_HOOK = $(LINK_LIB.CXX/POST_HOOK) -+ -+LAUNCHER_OUT = launcher -+ -+SUFFIXES += .d -+ -+SOURCES := $(shell find $(LAUNCHERDIR) -name "*.c") -+SOURCES_SHARE := $(shell find $(LAUNCHERDIR_SHARE) -name "*.c") -+ -+OBJS := $(patsubst $(LAUNCHERDIR)/%.c,$(LAUNCHER_OUT)/%.o,$(SOURCES)) $(patsubst $(LAUNCHERDIR_SHARE)/%.c,$(LAUNCHER_OUT)/%.o,$(SOURCES_SHARE)) -+ -+DEPFILES := $(patsubst %.o,%.d,$(OBJS)) -+-include $(DEPFILES) -+ -+$(LAUNCHER_OUT)/%.o: $(LAUNCHERDIR_SHARE)/%.c -+ $(QUIETLY) [ -d $(LAUNCHER_OUT) ] || { mkdir -p $(LAUNCHER_OUT); } -+ $(QUIETLY) $(CC) -g -o $@ -c $< -MMD $(LAUNCHERFLAGS) $(CXXFLAGS) -+ -+$(LAUNCHER_OUT)/%.o: $(LAUNCHERDIR)/%.c -+ $(QUIETLY) [ -d $(LAUNCHER_OUT) ] || { mkdir -p $(LAUNCHER_OUT); } -+ $(QUIETLY) $(CC) -g -o $@ -c $< -MMD $(LAUNCHERFLAGS) $(CXXFLAGS) -+ -+$(LAUNCHER): $(OBJS) $(LIBJVM) $(LAUNCHER_MAPFILE) -+ $(QUIETLY) echo Linking launcher... -+ $(QUIETLY) $(LINK_LAUNCHER/PRE_HOOK) -+ $(QUIETLY) $(LINK_LAUNCHER) $(LFLAGS_LAUNCHER) -o $@ $(sort $(OBJS)) $(LIBS_LAUNCHER) -+ $(QUIETLY) $(LINK_LAUNCHER/POST_HOOK) -+ # Sign the launcher with the development certificate (if present) so that it can be used -+ # to run JStack, JInfo, et al. -+ $(QUIETLY) -codesign -s openjdk_codesign $@ -+ -+$(LAUNCHER): $(LAUNCHER_SCRIPT) -+ -+$(LAUNCHER_SCRIPT): $(LAUNCHERDIR)/launcher.script -+ $(QUIETLY) sed -e 's/@@LIBARCH@@/$(LIBARCH)/g' $< > $@ -+ $(QUIETLY) chmod +x $@ -+ ---- ./hotspot/make/bsd/makefiles/mapfile-vers-debug Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/make/bsd/makefiles/mapfile-vers-debug Sun Feb 10 09:26:05 2019 -0800 -@@ -21,247 +21,255 @@ - # questions. - # - # --# Only used for OSX/Darwin builds - - # Define public interface. -+ -+SUNWprivate_1.1 { -+ global: - # _JNI -- _JNI_CreateJavaVM -- _JNI_GetCreatedJavaVMs -- _JNI_GetDefaultJavaVMInitArgs -+ JNI_CreateJavaVM; -+ JNI_GetCreatedJavaVMs; -+ JNI_GetDefaultJavaVMInitArgs; - - # _JVM -- _JVM_Accept -- _JVM_ActiveProcessorCount -- _JVM_AllocateNewArray -- _JVM_AllocateNewObject -- _JVM_ArrayCopy -- _JVM_AssertionStatusDirectives -- _JVM_Available -- _JVM_Bind -- _JVM_ClassDepth -- _JVM_ClassLoaderDepth -- _JVM_Clone -- _JVM_Close -- _JVM_CX8Field -- _JVM_CompileClass -- _JVM_CompileClasses -- _JVM_CompilerCommand -- _JVM_Connect -- _JVM_ConstantPoolGetClassAt -- _JVM_ConstantPoolGetClassAtIfLoaded -- _JVM_ConstantPoolGetDoubleAt -- _JVM_ConstantPoolGetFieldAt -- _JVM_ConstantPoolGetFieldAtIfLoaded -- _JVM_ConstantPoolGetFloatAt -- _JVM_ConstantPoolGetIntAt -- _JVM_ConstantPoolGetLongAt -- _JVM_ConstantPoolGetMethodAt -- _JVM_ConstantPoolGetMethodAtIfLoaded -- _JVM_ConstantPoolGetMemberRefInfoAt -- _JVM_ConstantPoolGetSize -- _JVM_ConstantPoolGetStringAt -- _JVM_ConstantPoolGetUTF8At -- _JVM_CopySwapMemory -- _JVM_CountStackFrames -- _JVM_CurrentClassLoader -- _JVM_CurrentLoadedClass -- _JVM_CurrentThread -- _JVM_CurrentTimeMillis -- _JVM_DefineClass -- _JVM_DefineClassWithSource -- _JVM_DefineClassWithSourceCond -- _JVM_DesiredAssertionStatus -- _JVM_DisableCompiler -- _JVM_DoPrivileged -- _JVM_DTraceGetVersion -- _JVM_DTraceActivate -- _JVM_DTraceIsProbeEnabled -- _JVM_DTraceIsSupported -- _JVM_DTraceDispose -- _JVM_DumpAllStacks -- _JVM_DumpThreads -- _JVM_EnableCompiler -- _JVM_Exit -- _JVM_FillInStackTrace -- _JVM_FindClassFromCaller -- _JVM_FindClassFromClass -- _JVM_FindClassFromClassLoader -- _JVM_FindClassFromBootLoader -- _JVM_FindLibraryEntry -- _JVM_FindLoadedClass -- _JVM_FindPrimitiveClass -- _JVM_FindSignal -- _JVM_FreeMemory -- _JVM_GC -- _JVM_GetAllThreads -- _JVM_GetArrayElement -- _JVM_GetArrayLength -- _JVM_GetCPClassNameUTF -- _JVM_GetCPFieldClassNameUTF -- _JVM_GetCPFieldModifiers -- _JVM_GetCPFieldNameUTF -- _JVM_GetCPFieldSignatureUTF -- _JVM_GetCPMethodClassNameUTF -- _JVM_GetCPMethodModifiers -- _JVM_GetCPMethodNameUTF -- _JVM_GetCPMethodSignatureUTF -- _JVM_GetCallerClass -- _JVM_GetClassAccessFlags -- _JVM_GetClassAnnotations -- _JVM_GetClassCPEntriesCount -- _JVM_GetClassCPTypes -- _JVM_GetClassConstantPool -- _JVM_GetClassContext -- _JVM_GetClassDeclaredConstructors -- _JVM_GetClassDeclaredFields -- _JVM_GetClassDeclaredMethods -- _JVM_GetClassFieldsCount -- _JVM_GetClassInterfaces -- _JVM_GetClassLoader -- _JVM_GetClassMethodsCount -- _JVM_GetClassModifiers -- _JVM_GetClassName -- _JVM_GetClassNameUTF -- _JVM_GetClassSignature -- _JVM_GetClassSigners -- _JVM_GetClassTypeAnnotations -- _JVM_GetComponentType -- _JVM_GetDeclaredClasses -- _JVM_GetDeclaringClass -- _JVM_GetEnclosingMethodInfo -- _JVM_GetFieldAnnotations -- _JVM_GetFieldIxModifiers -- _JVM_GetFieldTypeAnnotations -- _JVM_GetHostName -- _JVM_GetInheritedAccessControlContext -- _JVM_GetInterfaceVersion -- _JVM_GetLastErrorString -- _JVM_GetManagement -- _JVM_GetMethodAnnotations -- _JVM_GetMethodDefaultAnnotationValue -- _JVM_GetMethodIxArgsSize -- _JVM_GetMethodIxByteCode -- _JVM_GetMethodIxByteCodeLength -- _JVM_GetMethodIxExceptionIndexes -- _JVM_GetMethodIxExceptionTableEntry -- _JVM_GetMethodIxExceptionTableLength -- _JVM_GetMethodIxExceptionsCount -- _JVM_GetMethodIxLocalsCount -- _JVM_GetMethodIxMaxStack -- _JVM_GetMethodIxModifiers -- _JVM_GetMethodIxNameUTF -- _JVM_GetMethodIxSignatureUTF -- _JVM_GetMethodParameterAnnotations -- _JVM_GetMethodParameters -- _JVM_GetMethodTypeAnnotations -- _JVM_GetPrimitiveArrayElement -- _JVM_GetProtectionDomain -- _JVM_GetSockName -- _JVM_GetSockOpt -- _JVM_GetStackAccessControlContext -- _JVM_GetStackTraceDepth -- _JVM_GetStackTraceElement -- _JVM_GetSystemPackage -- _JVM_GetSystemPackages -- _JVM_GetTemporaryDirectory -- _JVM_GetThreadStateNames -- _JVM_GetThreadStateValues -- _JVM_GetVersionInfo -- _JVM_Halt -- _JVM_HoldsLock -- _JVM_IHashCode -- _JVM_InitAgentProperties -- _JVM_InitProperties -- _JVM_InitializeCompiler -- _JVM_InitializeSocketLibrary -- _JVM_InternString -- _JVM_Interrupt -- _JVM_InvokeMethod -- _JVM_IsArrayClass -- _JVM_IsConstructorIx -- _JVM_IsInterface -- _JVM_IsInterrupted -- _JVM_IsNaN -- _JVM_IsPrimitiveClass -- _JVM_IsSameClassPackage -- _JVM_IsSilentCompiler -- _JVM_IsSupportedJNIVersion -- _JVM_IsThreadAlive -- _JVM_IsVMGeneratedMethodIx -- _JVM_KnownToNotExist -- _JVM_GetResourceLookupCacheURLs -- _JVM_GetResourceLookupCache -- _JVM_LatestUserDefinedLoader -- _JVM_Listen -- _JVM_LoadClass0 -- _JVM_LoadLibrary -- _JVM_Lseek -- _JVM_MaxObjectInspectionAge -- _JVM_MaxMemory -- _JVM_MonitorNotify -- _JVM_MonitorNotifyAll -- _JVM_MonitorWait -- _JVM_NanoTime -- _JVM_NativePath -- _JVM_NewArray -- _JVM_NewInstanceFromConstructor -- _JVM_NewMultiArray -- _JVM_OnExit -- _JVM_Open -- _JVM_RaiseSignal -- _JVM_RawMonitorCreate -- _JVM_RawMonitorDestroy -- _JVM_RawMonitorEnter -- _JVM_RawMonitorExit -- _JVM_Read -- _JVM_Recv -- _JVM_RecvFrom -- _JVM_RegisterSignal -- _JVM_ReleaseUTF -- _JVM_ResolveClass -- _JVM_ResumeThread -- _JVM_Send -- _JVM_SendTo -- _JVM_SetArrayElement -- _JVM_SetClassSigners -- _JVM_SetLength -- _JVM_SetNativeThreadName -- _JVM_SetPrimitiveArrayElement -- _JVM_SetSockOpt -- _JVM_SetThreadPriority -- _JVM_Sleep -- _JVM_Socket -- _JVM_SocketAvailable -- _JVM_SocketClose -- _JVM_SocketShutdown -- _JVM_StartThread -- _JVM_StopThread -- _JVM_SuspendThread -- _JVM_SupportsCX8 -- _JVM_Sync -- _JVM_Timeout -- _JVM_TotalMemory -- _JVM_TraceInstructions -- _JVM_TraceMethodCalls -- _JVM_UnloadLibrary -- _JVM_Write -- _JVM_Yield -- _JVM_handle_bsd_signal -+ JVM_Accept; -+ JVM_ActiveProcessorCount; -+ JVM_AllocateNewArray; -+ JVM_AllocateNewObject; -+ JVM_ArrayCopy; -+ JVM_AssertionStatusDirectives; -+ JVM_Available; -+ JVM_Bind; -+ JVM_CX8Field; -+ JVM_ClassDepth; -+ JVM_ClassLoaderDepth; -+ JVM_Clone; -+ JVM_Close; -+ JVM_CompileClass; -+ JVM_CompileClasses; -+ JVM_CompilerCommand; -+ JVM_Connect; -+ JVM_ConstantPoolGetClassAt; -+ JVM_ConstantPoolGetClassAtIfLoaded; -+ JVM_ConstantPoolGetDoubleAt; -+ JVM_ConstantPoolGetFieldAt; -+ JVM_ConstantPoolGetFieldAtIfLoaded; -+ JVM_ConstantPoolGetFloatAt; -+ JVM_ConstantPoolGetIntAt; -+ JVM_ConstantPoolGetLongAt; -+ JVM_ConstantPoolGetMemberRefInfoAt; -+ JVM_ConstantPoolGetMethodAt; -+ JVM_ConstantPoolGetMethodAtIfLoaded; -+ JVM_ConstantPoolGetSize; -+ JVM_ConstantPoolGetStringAt; -+ JVM_ConstantPoolGetUTF8At; -+ JVM_CopySwapMemory; -+ JVM_CountStackFrames; -+ JVM_CurrentClassLoader; -+ JVM_CurrentLoadedClass; -+ JVM_CurrentThread; -+ JVM_CurrentTimeMillis; -+ JVM_DTraceActivate; -+ JVM_DTraceDispose; -+ JVM_DTraceGetVersion; -+ JVM_DTraceIsProbeEnabled; -+ JVM_DTraceIsSupported; -+ JVM_DefineClass; -+ JVM_DefineClassWithSource; -+ JVM_DefineClassWithSourceCond; -+ JVM_DesiredAssertionStatus; -+ JVM_DisableCompiler; -+ JVM_DoPrivileged; -+ JVM_DumpAllStacks; -+ JVM_DumpThreads; -+ JVM_EnableCompiler; -+ JVM_Exit; -+ JVM_FillInStackTrace; -+ JVM_FindClassFromBootLoader; -+ JVM_FindClassFromCaller; -+ JVM_FindClassFromClass; -+ JVM_FindClassFromClassLoader; -+ JVM_FindLibraryEntry; -+ JVM_FindLoadedClass; -+ JVM_FindPrimitiveClass; -+ JVM_FindSignal; -+ JVM_FreeMemory; -+ JVM_GC; -+ JVM_GetAllThreads; -+ JVM_GetArrayElement; -+ JVM_GetArrayLength; -+ JVM_GetCPClassNameUTF; -+ JVM_GetCPFieldClassNameUTF; -+ JVM_GetCPFieldModifiers; -+ JVM_GetCPFieldNameUTF; -+ JVM_GetCPFieldSignatureUTF; -+ JVM_GetCPMethodClassNameUTF; -+ JVM_GetCPMethodModifiers; -+ JVM_GetCPMethodNameUTF; -+ JVM_GetCPMethodSignatureUTF; -+ JVM_GetCallerClass; -+ JVM_GetClassAccessFlags; -+ JVM_GetClassAnnotations; -+ JVM_GetClassCPEntriesCount; -+ JVM_GetClassCPTypes; -+ JVM_GetClassConstantPool; -+ JVM_GetClassContext; -+ JVM_GetClassDeclaredConstructors; -+ JVM_GetClassDeclaredFields; -+ JVM_GetClassDeclaredMethods; -+ JVM_GetClassFieldsCount; -+ JVM_GetClassInterfaces; -+ JVM_GetClassLoader; -+ JVM_GetClassMethodsCount; -+ JVM_GetClassModifiers; -+ JVM_GetClassName; -+ JVM_GetClassNameUTF; -+ JVM_GetClassSignature; -+ JVM_GetClassSigners; -+ JVM_GetClassTypeAnnotations; -+ JVM_GetComponentType; -+ JVM_GetDeclaredClasses; -+ JVM_GetDeclaringClass; -+ JVM_GetEnclosingMethodInfo; -+ JVM_GetFieldAnnotations; -+ JVM_GetFieldIxModifiers; -+ JVM_GetFieldTypeAnnotations; -+ JVM_GetHostName; -+ JVM_GetInheritedAccessControlContext; -+ JVM_GetInterfaceVersion; -+ JVM_GetLastErrorString; -+ JVM_GetManagement; -+ JVM_GetMethodAnnotations; -+ JVM_GetMethodDefaultAnnotationValue; -+ JVM_GetMethodIxArgsSize; -+ JVM_GetMethodIxByteCode; -+ JVM_GetMethodIxByteCodeLength; -+ JVM_GetMethodIxExceptionIndexes; -+ JVM_GetMethodIxExceptionTableEntry; -+ JVM_GetMethodIxExceptionTableLength; -+ JVM_GetMethodIxExceptionsCount; -+ JVM_GetMethodIxLocalsCount; -+ JVM_GetMethodIxMaxStack; -+ JVM_GetMethodIxModifiers; -+ JVM_GetMethodIxNameUTF; -+ JVM_GetMethodIxSignatureUTF; -+ JVM_GetMethodParameterAnnotations; -+ JVM_GetMethodParameters; -+ JVM_GetMethodTypeAnnotations; -+ JVM_GetPrimitiveArrayElement; -+ JVM_GetProtectionDomain; -+ JVM_GetResourceLookupCache; -+ JVM_GetResourceLookupCacheURLs; -+ JVM_GetSockName; -+ JVM_GetSockOpt; -+ JVM_GetStackAccessControlContext; -+ JVM_GetStackTraceDepth; -+ JVM_GetStackTraceElement; -+ JVM_GetSystemPackage; -+ JVM_GetSystemPackages; -+ JVM_GetTemporaryDirectory; -+ JVM_GetThreadStateNames; -+ JVM_GetThreadStateValues; -+ JVM_GetVersionInfo; -+ JVM_Halt; -+ JVM_HoldsLock; -+ JVM_IHashCode; -+ JVM_InitAgentProperties; -+ JVM_InitProperties; -+ JVM_InitializeCompiler; -+ JVM_InitializeSocketLibrary; -+ JVM_InternString; -+ JVM_Interrupt; -+ JVM_InvokeMethod; -+ JVM_IsArrayClass; -+ JVM_IsConstructorIx; -+ JVM_IsInterface; -+ JVM_IsInterrupted; -+ JVM_IsNaN; -+ JVM_IsPrimitiveClass; -+ JVM_IsSameClassPackage; -+ JVM_IsSilentCompiler; -+ JVM_IsSupportedJNIVersion; -+ JVM_IsThreadAlive; -+ JVM_IsVMGeneratedMethodIx; -+ JVM_KnownToNotExist; -+ JVM_LatestUserDefinedLoader; -+ JVM_Listen; -+ JVM_LoadClass0; -+ JVM_LoadLibrary; -+ JVM_Lseek; -+ JVM_MaxMemory; -+ JVM_MaxObjectInspectionAge; -+ JVM_MonitorNotify; -+ JVM_MonitorNotifyAll; -+ JVM_MonitorWait; -+ JVM_NanoTime; -+ JVM_NativePath; -+ JVM_NewArray; -+ JVM_NewInstanceFromConstructor; -+ JVM_NewMultiArray; -+ JVM_OnExit; -+ JVM_Open; -+ JVM_RaiseSignal; -+ JVM_RawMonitorCreate; -+ JVM_RawMonitorDestroy; -+ JVM_RawMonitorEnter; -+ JVM_RawMonitorExit; -+ JVM_Read; -+ JVM_Recv; -+ JVM_RecvFrom; -+ JVM_RegisterSignal; -+ JVM_ReleaseUTF; -+ JVM_ResolveClass; -+ JVM_ResumeThread; -+ JVM_Send; -+ JVM_SendTo; -+ JVM_SetArrayElement; -+ JVM_SetClassSigners; -+ JVM_SetLength; -+ JVM_SetNativeThreadName; -+ JVM_SetPrimitiveArrayElement; -+ JVM_SetSockOpt; -+ JVM_SetThreadPriority; -+ JVM_Sleep; -+ JVM_Socket; -+ JVM_SocketAvailable; -+ JVM_SocketClose; -+ JVM_SocketShutdown; -+ JVM_StartThread; -+ JVM_StopThread; -+ JVM_SupportsCX8; -+ JVM_SuspendThread; -+ JVM_Sync; -+ JVM_Timeout; -+ JVM_TotalMemory; -+ JVM_TraceInstructions; -+ JVM_TraceMethodCalls; -+ JVM_UnloadLibrary; -+ JVM_Write; -+ JVM_Yield; -+ JVM_handle_bsd_signal; - -- # debug _JVM -- _JVM_AccessVMBooleanFlag -- _JVM_AccessVMIntFlag -- _JVM_VMBreakPoint -+ # debug JVM -+ JVM_AccessVMBooleanFlag; -+ JVM_AccessVMIntFlag; -+ JVM_VMBreakPoint; - - # miscellaneous functions -- _jio_fprintf -- _jio_printf -- _jio_snprintf -- _jio_vfprintf -- _jio_vsnprintf -+ jio_fprintf; -+ jio_printf; -+ jio_snprintf; -+ jio_vfprintf; -+ jio_vsnprintf; -+ fork1; -+ numa_warn; -+ numa_error; - - # This is for Forte Analyzer profiling support. -- _AsyncGetCallTrace -+ AsyncGetCallTrace; - - # INSERT VTABLE SYMBOLS HERE - -+ local: -+ *; -+}; ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./hotspot/make/bsd/makefiles/mapfile-vers-debug.macosx Sun Feb 10 09:26:05 2019 -0800 -@@ -0,0 +1,266 @@ -+# -+# Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. -+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -+# -+# This code is free software; you can redistribute it and/or modify it -+# under the terms of the GNU General Public License version 2 only, as -+# published by the Free Software Foundation. -+# -+# This code is distributed in the hope that it will be useful, but WITHOUT -+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+# version 2 for more details (a copy is included in the LICENSE file that -+# accompanied this code). -+# -+# You should have received a copy of the GNU General Public License version -+# 2 along with this work; if not, write to the Free Software Foundation, -+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+# -+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -+# or visit www.oracle.com if you need additional information or have any -+# questions. -+# -+# -+# Only used for OSX/Darwin builds -+ -+# Define public interface. -+ # _JNI -+ _JNI_CreateJavaVM -+ _JNI_GetCreatedJavaVMs -+ _JNI_GetDefaultJavaVMInitArgs -+ -+ # _JVM -+ _JVM_Accept -+ _JVM_ActiveProcessorCount -+ _JVM_AllocateNewArray -+ _JVM_AllocateNewObject -+ _JVM_ArrayCopy -+ _JVM_AssertionStatusDirectives -+ _JVM_Available -+ _JVM_Bind -+ _JVM_ClassDepth -+ _JVM_ClassLoaderDepth -+ _JVM_Clone -+ _JVM_Close -+ _JVM_CX8Field -+ _JVM_CompileClass -+ _JVM_CompileClasses -+ _JVM_CompilerCommand -+ _JVM_Connect -+ _JVM_ConstantPoolGetClassAt -+ _JVM_ConstantPoolGetClassAtIfLoaded -+ _JVM_ConstantPoolGetDoubleAt -+ _JVM_ConstantPoolGetFieldAt -+ _JVM_ConstantPoolGetFieldAtIfLoaded -+ _JVM_ConstantPoolGetFloatAt -+ _JVM_ConstantPoolGetIntAt -+ _JVM_ConstantPoolGetLongAt -+ _JVM_ConstantPoolGetMethodAt -+ _JVM_ConstantPoolGetMethodAtIfLoaded -+ _JVM_ConstantPoolGetMemberRefInfoAt -+ _JVM_ConstantPoolGetSize -+ _JVM_ConstantPoolGetStringAt -+ _JVM_ConstantPoolGetUTF8At -+ _JVM_CountStackFrames -+ _JVM_CurrentClassLoader -+ _JVM_CurrentLoadedClass -+ _JVM_CurrentThread -+ _JVM_CurrentTimeMillis -+ _JVM_DefineClass -+ _JVM_DefineClassWithSource -+ _JVM_DefineClassWithSourceCond -+ _JVM_DesiredAssertionStatus -+ _JVM_DisableCompiler -+ _JVM_DoPrivileged -+ _JVM_DTraceGetVersion -+ _JVM_DTraceActivate -+ _JVM_DTraceIsProbeEnabled -+ _JVM_DTraceIsSupported -+ _JVM_DTraceDispose -+ _JVM_DumpAllStacks -+ _JVM_DumpThreads -+ _JVM_EnableCompiler -+ _JVM_Exit -+ _JVM_FillInStackTrace -+ _JVM_FindClassFromCaller -+ _JVM_FindClassFromClass -+ _JVM_FindClassFromClassLoader -+ _JVM_FindClassFromBootLoader -+ _JVM_FindLibraryEntry -+ _JVM_FindLoadedClass -+ _JVM_FindPrimitiveClass -+ _JVM_FindSignal -+ _JVM_FreeMemory -+ _JVM_GC -+ _JVM_GetAllThreads -+ _JVM_GetArrayElement -+ _JVM_GetArrayLength -+ _JVM_GetCPClassNameUTF -+ _JVM_GetCPFieldClassNameUTF -+ _JVM_GetCPFieldModifiers -+ _JVM_GetCPFieldNameUTF -+ _JVM_GetCPFieldSignatureUTF -+ _JVM_GetCPMethodClassNameUTF -+ _JVM_GetCPMethodModifiers -+ _JVM_GetCPMethodNameUTF -+ _JVM_GetCPMethodSignatureUTF -+ _JVM_GetCallerClass -+ _JVM_GetClassAccessFlags -+ _JVM_GetClassAnnotations -+ _JVM_GetClassCPEntriesCount -+ _JVM_GetClassCPTypes -+ _JVM_GetClassConstantPool -+ _JVM_GetClassContext -+ _JVM_GetClassDeclaredConstructors -+ _JVM_GetClassDeclaredFields -+ _JVM_GetClassDeclaredMethods -+ _JVM_GetClassFieldsCount -+ _JVM_GetClassInterfaces -+ _JVM_GetClassLoader -+ _JVM_GetClassMethodsCount -+ _JVM_GetClassModifiers -+ _JVM_GetClassName -+ _JVM_GetClassNameUTF -+ _JVM_GetClassSignature -+ _JVM_GetClassSigners -+ _JVM_GetClassTypeAnnotations -+ _JVM_GetComponentType -+ _JVM_GetDeclaredClasses -+ _JVM_GetDeclaringClass -+ _JVM_GetEnclosingMethodInfo -+ _JVM_GetFieldAnnotations -+ _JVM_GetFieldIxModifiers -+ _JVM_GetFieldTypeAnnotations -+ _JVM_GetHostName -+ _JVM_GetInheritedAccessControlContext -+ _JVM_GetInterfaceVersion -+ _JVM_GetLastErrorString -+ _JVM_GetManagement -+ _JVM_GetMethodAnnotations -+ _JVM_GetMethodDefaultAnnotationValue -+ _JVM_GetMethodIxArgsSize -+ _JVM_GetMethodIxByteCode -+ _JVM_GetMethodIxByteCodeLength -+ _JVM_GetMethodIxExceptionIndexes -+ _JVM_GetMethodIxExceptionTableEntry -+ _JVM_GetMethodIxExceptionTableLength -+ _JVM_GetMethodIxExceptionsCount -+ _JVM_GetMethodIxLocalsCount -+ _JVM_GetMethodIxMaxStack -+ _JVM_GetMethodIxModifiers -+ _JVM_GetMethodIxNameUTF -+ _JVM_GetMethodIxSignatureUTF -+ _JVM_GetMethodParameterAnnotations -+ _JVM_GetMethodParameters -+ _JVM_GetMethodTypeAnnotations -+ _JVM_GetPrimitiveArrayElement -+ _JVM_GetProtectionDomain -+ _JVM_GetSockName -+ _JVM_GetSockOpt -+ _JVM_GetStackAccessControlContext -+ _JVM_GetStackTraceDepth -+ _JVM_GetStackTraceElement -+ _JVM_GetSystemPackage -+ _JVM_GetSystemPackages -+ _JVM_GetTemporaryDirectory -+ _JVM_GetThreadStateNames -+ _JVM_GetThreadStateValues -+ _JVM_GetVersionInfo -+ _JVM_Halt -+ _JVM_HoldsLock -+ _JVM_IHashCode -+ _JVM_InitAgentProperties -+ _JVM_InitProperties -+ _JVM_InitializeCompiler -+ _JVM_InitializeSocketLibrary -+ _JVM_InternString -+ _JVM_Interrupt -+ _JVM_InvokeMethod -+ _JVM_IsArrayClass -+ _JVM_IsConstructorIx -+ _JVM_IsInterface -+ _JVM_IsInterrupted -+ _JVM_IsNaN -+ _JVM_IsPrimitiveClass -+ _JVM_IsSameClassPackage -+ _JVM_IsSilentCompiler -+ _JVM_IsSupportedJNIVersion -+ _JVM_IsThreadAlive -+ _JVM_IsVMGeneratedMethodIx -+ _JVM_KnownToNotExist -+ _JVM_GetResourceLookupCacheURLs -+ _JVM_GetResourceLookupCache -+ _JVM_LatestUserDefinedLoader -+ _JVM_Listen -+ _JVM_LoadClass0 -+ _JVM_LoadLibrary -+ _JVM_Lseek -+ _JVM_MaxObjectInspectionAge -+ _JVM_MaxMemory -+ _JVM_MonitorNotify -+ _JVM_MonitorNotifyAll -+ _JVM_MonitorWait -+ _JVM_NanoTime -+ _JVM_NativePath -+ _JVM_NewArray -+ _JVM_NewInstanceFromConstructor -+ _JVM_NewMultiArray -+ _JVM_OnExit -+ _JVM_Open -+ _JVM_RaiseSignal -+ _JVM_RawMonitorCreate -+ _JVM_RawMonitorDestroy -+ _JVM_RawMonitorEnter -+ _JVM_RawMonitorExit -+ _JVM_Read -+ _JVM_Recv -+ _JVM_RecvFrom -+ _JVM_RegisterSignal -+ _JVM_ReleaseUTF -+ _JVM_ResolveClass -+ _JVM_ResumeThread -+ _JVM_Send -+ _JVM_SendTo -+ _JVM_SetArrayElement -+ _JVM_SetClassSigners -+ _JVM_SetLength -+ _JVM_SetNativeThreadName -+ _JVM_SetPrimitiveArrayElement -+ _JVM_SetSockOpt -+ _JVM_SetThreadPriority -+ _JVM_Sleep -+ _JVM_Socket -+ _JVM_SocketAvailable -+ _JVM_SocketClose -+ _JVM_SocketShutdown -+ _JVM_StartThread -+ _JVM_StopThread -+ _JVM_SuspendThread -+ _JVM_SupportsCX8 -+ _JVM_Sync -+ _JVM_Timeout -+ _JVM_TotalMemory -+ _JVM_TraceInstructions -+ _JVM_TraceMethodCalls -+ _JVM_UnloadLibrary -+ _JVM_Write -+ _JVM_Yield -+ _JVM_handle_bsd_signal -+ -+ # debug _JVM -+ _JVM_AccessVMBooleanFlag -+ _JVM_AccessVMIntFlag -+ _JVM_VMBreakPoint -+ -+ # miscellaneous functions -+ _jio_fprintf -+ _jio_printf -+ _jio_snprintf -+ _jio_vfprintf -+ _jio_vsnprintf -+ -+ # This is for Forte Analyzer profiling support. -+ _AsyncGetCallTrace -+ -+ # INSERT VTABLE SYMBOLS HERE -+ ---- ./hotspot/make/bsd/makefiles/mapfile-vers-product Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/make/bsd/makefiles/mapfile-vers-product Sun Feb 10 09:26:05 2019 -0800 -@@ -21,242 +21,250 @@ - # questions. - # - # --# Only used for OSX/Darwin builds - - # Define public interface. -+ -+SUNWprivate_1.1 { -+ global: - # _JNI -- _JNI_CreateJavaVM -- _JNI_GetCreatedJavaVMs -- _JNI_GetDefaultJavaVMInitArgs -+ JNI_CreateJavaVM; -+ JNI_GetCreatedJavaVMs; -+ JNI_GetDefaultJavaVMInitArgs; - - # _JVM -- _JVM_Accept -- _JVM_ActiveProcessorCount -- _JVM_AllocateNewArray -- _JVM_AllocateNewObject -- _JVM_ArrayCopy -- _JVM_AssertionStatusDirectives -- _JVM_Available -- _JVM_Bind -- _JVM_ClassDepth -- _JVM_ClassLoaderDepth -- _JVM_Clone -- _JVM_Close -- _JVM_CX8Field -- _JVM_CompileClass -- _JVM_CompileClasses -- _JVM_CompilerCommand -- _JVM_Connect -- _JVM_ConstantPoolGetClassAt -- _JVM_ConstantPoolGetClassAtIfLoaded -- _JVM_ConstantPoolGetDoubleAt -- _JVM_ConstantPoolGetFieldAt -- _JVM_ConstantPoolGetFieldAtIfLoaded -- _JVM_ConstantPoolGetFloatAt -- _JVM_ConstantPoolGetIntAt -- _JVM_ConstantPoolGetLongAt -- _JVM_ConstantPoolGetMethodAt -- _JVM_ConstantPoolGetMethodAtIfLoaded -- _JVM_ConstantPoolGetMemberRefInfoAt -- _JVM_ConstantPoolGetSize -- _JVM_ConstantPoolGetStringAt -- _JVM_ConstantPoolGetUTF8At -- _JVM_CopySwapMemory -- _JVM_CountStackFrames -- _JVM_CurrentClassLoader -- _JVM_CurrentLoadedClass -- _JVM_CurrentThread -- _JVM_CurrentTimeMillis -- _JVM_DefineClass -- _JVM_DefineClassWithSource -- _JVM_DefineClassWithSourceCond -- _JVM_DesiredAssertionStatus -- _JVM_DisableCompiler -- _JVM_DoPrivileged -- _JVM_DTraceGetVersion -- _JVM_DTraceActivate -- _JVM_DTraceIsProbeEnabled -- _JVM_DTraceIsSupported -- _JVM_DTraceDispose -- _JVM_DumpAllStacks -- _JVM_DumpThreads -- _JVM_EnableCompiler -- _JVM_Exit -- _JVM_FillInStackTrace -- _JVM_FindClassFromCaller -- _JVM_FindClassFromClass -- _JVM_FindClassFromClassLoader -- _JVM_FindClassFromBootLoader -- _JVM_FindLibraryEntry -- _JVM_FindLoadedClass -- _JVM_FindPrimitiveClass -- _JVM_FindSignal -- _JVM_FreeMemory -- _JVM_GC -- _JVM_GetAllThreads -- _JVM_GetArrayElement -- _JVM_GetArrayLength -- _JVM_GetCPClassNameUTF -- _JVM_GetCPFieldClassNameUTF -- _JVM_GetCPFieldModifiers -- _JVM_GetCPFieldNameUTF -- _JVM_GetCPFieldSignatureUTF -- _JVM_GetCPMethodClassNameUTF -- _JVM_GetCPMethodModifiers -- _JVM_GetCPMethodNameUTF -- _JVM_GetCPMethodSignatureUTF -- _JVM_GetCallerClass -- _JVM_GetClassAccessFlags -- _JVM_GetClassAnnotations -- _JVM_GetClassCPEntriesCount -- _JVM_GetClassCPTypes -- _JVM_GetClassConstantPool -- _JVM_GetClassContext -- _JVM_GetClassDeclaredConstructors -- _JVM_GetClassDeclaredFields -- _JVM_GetClassDeclaredMethods -- _JVM_GetClassFieldsCount -- _JVM_GetClassInterfaces -- _JVM_GetClassLoader -- _JVM_GetClassMethodsCount -- _JVM_GetClassModifiers -- _JVM_GetClassName -- _JVM_GetClassNameUTF -- _JVM_GetClassSignature -- _JVM_GetClassSigners -- _JVM_GetClassTypeAnnotations -- _JVM_GetComponentType -- _JVM_GetDeclaredClasses -- _JVM_GetDeclaringClass -- _JVM_GetEnclosingMethodInfo -- _JVM_GetFieldAnnotations -- _JVM_GetFieldIxModifiers -- _JVM_GetFieldTypeAnnotations -- _JVM_GetHostName -- _JVM_GetInheritedAccessControlContext -- _JVM_GetInterfaceVersion -- _JVM_GetLastErrorString -- _JVM_GetManagement -- _JVM_GetMethodAnnotations -- _JVM_GetMethodDefaultAnnotationValue -- _JVM_GetMethodIxArgsSize -- _JVM_GetMethodIxByteCode -- _JVM_GetMethodIxByteCodeLength -- _JVM_GetMethodIxExceptionIndexes -- _JVM_GetMethodIxExceptionTableEntry -- _JVM_GetMethodIxExceptionTableLength -- _JVM_GetMethodIxExceptionsCount -- _JVM_GetMethodIxLocalsCount -- _JVM_GetMethodIxMaxStack -- _JVM_GetMethodIxModifiers -- _JVM_GetMethodIxNameUTF -- _JVM_GetMethodIxSignatureUTF -- _JVM_GetMethodParameterAnnotations -- _JVM_GetMethodParameters -- _JVM_GetMethodTypeAnnotations -- _JVM_GetPrimitiveArrayElement -- _JVM_GetProtectionDomain -- _JVM_GetSockName -- _JVM_GetSockOpt -- _JVM_GetStackAccessControlContext -- _JVM_GetStackTraceDepth -- _JVM_GetStackTraceElement -- _JVM_GetSystemPackage -- _JVM_GetSystemPackages -- _JVM_GetTemporaryDirectory -- _JVM_GetThreadStateNames -- _JVM_GetThreadStateValues -- _JVM_GetVersionInfo -- _JVM_Halt -- _JVM_HoldsLock -- _JVM_IHashCode -- _JVM_InitAgentProperties -- _JVM_InitProperties -- _JVM_InitializeCompiler -- _JVM_InitializeSocketLibrary -- _JVM_InternString -- _JVM_Interrupt -- _JVM_InvokeMethod -- _JVM_IsArrayClass -- _JVM_IsConstructorIx -- _JVM_IsInterface -- _JVM_IsInterrupted -- _JVM_IsNaN -- _JVM_IsPrimitiveClass -- _JVM_IsSameClassPackage -- _JVM_IsSilentCompiler -- _JVM_IsSupportedJNIVersion -- _JVM_IsThreadAlive -- _JVM_IsVMGeneratedMethodIx -- _JVM_KnownToNotExist -- _JVM_GetResourceLookupCacheURLs -- _JVM_GetResourceLookupCache -- _JVM_LatestUserDefinedLoader -- _JVM_Listen -- _JVM_LoadClass0 -- _JVM_LoadLibrary -- _JVM_Lseek -- _JVM_MaxObjectInspectionAge -- _JVM_MaxMemory -- _JVM_MonitorNotify -- _JVM_MonitorNotifyAll -- _JVM_MonitorWait -- _JVM_NanoTime -- _JVM_NativePath -- _JVM_NewArray -- _JVM_NewInstanceFromConstructor -- _JVM_NewMultiArray -- _JVM_OnExit -- _JVM_Open -- _JVM_RaiseSignal -- _JVM_RawMonitorCreate -- _JVM_RawMonitorDestroy -- _JVM_RawMonitorEnter -- _JVM_RawMonitorExit -- _JVM_Read -- _JVM_Recv -- _JVM_RecvFrom -- _JVM_RegisterSignal -- _JVM_ReleaseUTF -- _JVM_ResolveClass -- _JVM_ResumeThread -- _JVM_Send -- _JVM_SendTo -- _JVM_SetArrayElement -- _JVM_SetClassSigners -- _JVM_SetLength -- _JVM_SetNativeThreadName -- _JVM_SetPrimitiveArrayElement -- _JVM_SetSockOpt -- _JVM_SetThreadPriority -- _JVM_Sleep -- _JVM_Socket -- _JVM_SocketAvailable -- _JVM_SocketClose -- _JVM_SocketShutdown -- _JVM_StartThread -- _JVM_StopThread -- _JVM_SuspendThread -- _JVM_SupportsCX8 -- _JVM_Sync -- _JVM_Timeout -- _JVM_TotalMemory -- _JVM_TraceInstructions -- _JVM_TraceMethodCalls -- _JVM_UnloadLibrary -- _JVM_Write -- _JVM_Yield -- _JVM_handle_bsd_signal -+ JVM_Accept; -+ JVM_ActiveProcessorCount; -+ JVM_AllocateNewArray; -+ JVM_AllocateNewObject; -+ JVM_ArrayCopy; -+ JVM_AssertionStatusDirectives; -+ JVM_Available; -+ JVM_Bind; -+ JVM_CX8Field; -+ JVM_ClassDepth; -+ JVM_ClassLoaderDepth; -+ JVM_Clone; -+ JVM_Close; -+ JVM_CompileClass; -+ JVM_CompileClasses; -+ JVM_CompilerCommand; -+ JVM_Connect; -+ JVM_ConstantPoolGetClassAt; -+ JVM_ConstantPoolGetClassAtIfLoaded; -+ JVM_ConstantPoolGetDoubleAt; -+ JVM_ConstantPoolGetFieldAt; -+ JVM_ConstantPoolGetFieldAtIfLoaded; -+ JVM_ConstantPoolGetFloatAt; -+ JVM_ConstantPoolGetIntAt; -+ JVM_ConstantPoolGetLongAt; -+ JVM_ConstantPoolGetMemberRefInfoAt; -+ JVM_ConstantPoolGetMethodAt; -+ JVM_ConstantPoolGetMethodAtIfLoaded; -+ JVM_ConstantPoolGetSize; -+ JVM_ConstantPoolGetStringAt; -+ JVM_ConstantPoolGetUTF8At; -+ JVM_CopySwapMemory; -+ JVM_CountStackFrames; -+ JVM_CurrentClassLoader; -+ JVM_CurrentLoadedClass; -+ JVM_CurrentThread; -+ JVM_CurrentTimeMillis; -+ JVM_DTraceActivate; -+ JVM_DTraceDispose; -+ JVM_DTraceGetVersion; -+ JVM_DTraceIsProbeEnabled; -+ JVM_DTraceIsSupported; -+ JVM_DefineClass; -+ JVM_DefineClassWithSource; -+ JVM_DefineClassWithSourceCond; -+ JVM_DesiredAssertionStatus; -+ JVM_DisableCompiler; -+ JVM_DoPrivileged; -+ JVM_DumpAllStacks; -+ JVM_DumpThreads; -+ JVM_EnableCompiler; -+ JVM_Exit; -+ JVM_FillInStackTrace; -+ JVM_FindClassFromBootLoader; -+ JVM_FindClassFromCaller; -+ JVM_FindClassFromClass; -+ JVM_FindClassFromClassLoader; -+ JVM_FindLibraryEntry; -+ JVM_FindLoadedClass; -+ JVM_FindPrimitiveClass; -+ JVM_FindSignal; -+ JVM_FreeMemory; -+ JVM_GC; -+ JVM_GetAllThreads; -+ JVM_GetArrayElement; -+ JVM_GetArrayLength; -+ JVM_GetCPClassNameUTF; -+ JVM_GetCPFieldClassNameUTF; -+ JVM_GetCPFieldModifiers; -+ JVM_GetCPFieldNameUTF; -+ JVM_GetCPFieldSignatureUTF; -+ JVM_GetCPMethodClassNameUTF; -+ JVM_GetCPMethodModifiers; -+ JVM_GetCPMethodNameUTF; -+ JVM_GetCPMethodSignatureUTF; -+ JVM_GetCallerClass; -+ JVM_GetClassAccessFlags; -+ JVM_GetClassAnnotations; -+ JVM_GetClassCPEntriesCount; -+ JVM_GetClassCPTypes; -+ JVM_GetClassConstantPool; -+ JVM_GetClassContext; -+ JVM_GetClassDeclaredConstructors; -+ JVM_GetClassDeclaredFields; -+ JVM_GetClassDeclaredMethods; -+ JVM_GetClassFieldsCount; -+ JVM_GetClassInterfaces; -+ JVM_GetClassLoader; -+ JVM_GetClassMethodsCount; -+ JVM_GetClassModifiers; -+ JVM_GetClassName; -+ JVM_GetClassNameUTF; -+ JVM_GetClassSignature; -+ JVM_GetClassSigners; -+ JVM_GetClassTypeAnnotations; -+ JVM_GetComponentType; -+ JVM_GetDeclaredClasses; -+ JVM_GetDeclaringClass; -+ JVM_GetEnclosingMethodInfo; -+ JVM_GetFieldAnnotations; -+ JVM_GetFieldIxModifiers; -+ JVM_GetFieldTypeAnnotations; -+ JVM_GetHostName; -+ JVM_GetInheritedAccessControlContext; -+ JVM_GetInterfaceVersion; -+ JVM_GetLastErrorString; -+ JVM_GetManagement; -+ JVM_GetMethodAnnotations; -+ JVM_GetMethodDefaultAnnotationValue; -+ JVM_GetMethodIxArgsSize; -+ JVM_GetMethodIxByteCode; -+ JVM_GetMethodIxByteCodeLength; -+ JVM_GetMethodIxExceptionIndexes; -+ JVM_GetMethodIxExceptionTableEntry; -+ JVM_GetMethodIxExceptionTableLength; -+ JVM_GetMethodIxExceptionsCount; -+ JVM_GetMethodIxLocalsCount; -+ JVM_GetMethodIxMaxStack; -+ JVM_GetMethodIxModifiers; -+ JVM_GetMethodIxNameUTF; -+ JVM_GetMethodIxSignatureUTF; -+ JVM_GetMethodParameterAnnotations; -+ JVM_GetMethodParameters; -+ JVM_GetMethodTypeAnnotations; -+ JVM_GetPrimitiveArrayElement; -+ JVM_GetProtectionDomain; -+ JVM_GetResourceLookupCache; -+ JVM_GetResourceLookupCacheURLs; -+ JVM_GetSockName; -+ JVM_GetSockOpt; -+ JVM_GetStackAccessControlContext; -+ JVM_GetStackTraceDepth; -+ JVM_GetStackTraceElement; -+ JVM_GetSystemPackage; -+ JVM_GetSystemPackages; -+ JVM_GetTemporaryDirectory; -+ JVM_GetThreadStateNames; -+ JVM_GetThreadStateValues; -+ JVM_GetVersionInfo; -+ JVM_Halt; -+ JVM_HoldsLock; -+ JVM_IHashCode; -+ JVM_InitAgentProperties; -+ JVM_InitProperties; -+ JVM_InitializeCompiler; -+ JVM_InitializeSocketLibrary; -+ JVM_InternString; -+ JVM_Interrupt; -+ JVM_InvokeMethod; -+ JVM_IsArrayClass; -+ JVM_IsConstructorIx; -+ JVM_IsInterface; -+ JVM_IsInterrupted; -+ JVM_IsNaN; -+ JVM_IsPrimitiveClass; -+ JVM_IsSameClassPackage; -+ JVM_IsSilentCompiler; -+ JVM_IsSupportedJNIVersion; -+ JVM_IsThreadAlive; -+ JVM_IsVMGeneratedMethodIx; -+ JVM_KnownToNotExist; -+ JVM_LatestUserDefinedLoader; -+ JVM_Listen; -+ JVM_LoadClass0; -+ JVM_LoadLibrary; -+ JVM_Lseek; -+ JVM_MaxMemory; -+ JVM_MaxObjectInspectionAge; -+ JVM_MonitorNotify; -+ JVM_MonitorNotifyAll; -+ JVM_MonitorWait; -+ JVM_NanoTime; -+ JVM_NativePath; -+ JVM_NewArray; -+ JVM_NewInstanceFromConstructor; -+ JVM_NewMultiArray; -+ JVM_OnExit; -+ JVM_Open; -+ JVM_RaiseSignal; -+ JVM_RawMonitorCreate; -+ JVM_RawMonitorDestroy; -+ JVM_RawMonitorEnter; -+ JVM_RawMonitorExit; -+ JVM_Read; -+ JVM_Recv; -+ JVM_RecvFrom; -+ JVM_RegisterSignal; -+ JVM_ReleaseUTF; -+ JVM_ResolveClass; -+ JVM_ResumeThread; -+ JVM_Send; -+ JVM_SendTo; -+ JVM_SetArrayElement; -+ JVM_SetClassSigners; -+ JVM_SetLength; -+ JVM_SetNativeThreadName; -+ JVM_SetPrimitiveArrayElement; -+ JVM_SetSockOpt; -+ JVM_SetThreadPriority; -+ JVM_Sleep; -+ JVM_Socket; -+ JVM_SocketAvailable; -+ JVM_SocketClose; -+ JVM_SocketShutdown; -+ JVM_StartThread; -+ JVM_StopThread; -+ JVM_SupportsCX8; -+ JVM_SuspendThread; -+ JVM_Sync; -+ JVM_Timeout; -+ JVM_TotalMemory; -+ JVM_TraceInstructions; -+ JVM_TraceMethodCalls; -+ JVM_UnloadLibrary; -+ JVM_Write; -+ JVM_Yield; -+ JVM_handle_bsd_signal; - - # miscellaneous functions -- _jio_fprintf -- _jio_printf -- _jio_snprintf -- _jio_vfprintf -- _jio_vsnprintf -+ jio_fprintf; -+ jio_printf; -+ jio_snprintf; -+ jio_vfprintf; -+ jio_vsnprintf; -+ fork1; -+ numa_warn; -+ numa_error; - - # This is for Forte Analyzer profiling support. -- _AsyncGetCallTrace -+ AsyncGetCallTrace; - - # INSERT VTABLE SYMBOLS HERE - -+ local: -+ *; -+}; ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./hotspot/make/bsd/makefiles/mapfile-vers-product.macosx Sun Feb 10 09:26:05 2019 -0800 -@@ -0,0 +1,261 @@ -+# -+# Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. -+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -+# -+# This code is free software; you can redistribute it and/or modify it -+# under the terms of the GNU General Public License version 2 only, as -+# published by the Free Software Foundation. -+# -+# This code is distributed in the hope that it will be useful, but WITHOUT -+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+# version 2 for more details (a copy is included in the LICENSE file that -+# accompanied this code). -+# -+# You should have received a copy of the GNU General Public License version -+# 2 along with this work; if not, write to the Free Software Foundation, -+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+# -+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -+# or visit www.oracle.com if you need additional information or have any -+# questions. -+# -+# -+# Only used for OSX/Darwin builds -+ -+# Define public interface. -+ # _JNI -+ _JNI_CreateJavaVM -+ _JNI_GetCreatedJavaVMs -+ _JNI_GetDefaultJavaVMInitArgs -+ -+ # _JVM -+ _JVM_Accept -+ _JVM_ActiveProcessorCount -+ _JVM_AllocateNewArray -+ _JVM_AllocateNewObject -+ _JVM_ArrayCopy -+ _JVM_AssertionStatusDirectives -+ _JVM_Available -+ _JVM_Bind -+ _JVM_ClassDepth -+ _JVM_ClassLoaderDepth -+ _JVM_Clone -+ _JVM_Close -+ _JVM_CX8Field -+ _JVM_CompileClass -+ _JVM_CompileClasses -+ _JVM_CompilerCommand -+ _JVM_Connect -+ _JVM_ConstantPoolGetClassAt -+ _JVM_ConstantPoolGetClassAtIfLoaded -+ _JVM_ConstantPoolGetDoubleAt -+ _JVM_ConstantPoolGetFieldAt -+ _JVM_ConstantPoolGetFieldAtIfLoaded -+ _JVM_ConstantPoolGetFloatAt -+ _JVM_ConstantPoolGetIntAt -+ _JVM_ConstantPoolGetLongAt -+ _JVM_ConstantPoolGetMethodAt -+ _JVM_ConstantPoolGetMethodAtIfLoaded -+ _JVM_ConstantPoolGetMemberRefInfoAt -+ _JVM_ConstantPoolGetSize -+ _JVM_ConstantPoolGetStringAt -+ _JVM_ConstantPoolGetUTF8At -+ _JVM_CountStackFrames -+ _JVM_CurrentClassLoader -+ _JVM_CurrentLoadedClass -+ _JVM_CurrentThread -+ _JVM_CurrentTimeMillis -+ _JVM_DefineClass -+ _JVM_DefineClassWithSource -+ _JVM_DefineClassWithSourceCond -+ _JVM_DesiredAssertionStatus -+ _JVM_DisableCompiler -+ _JVM_DoPrivileged -+ _JVM_DTraceGetVersion -+ _JVM_DTraceActivate -+ _JVM_DTraceIsProbeEnabled -+ _JVM_DTraceIsSupported -+ _JVM_DTraceDispose -+ _JVM_DumpAllStacks -+ _JVM_DumpThreads -+ _JVM_EnableCompiler -+ _JVM_Exit -+ _JVM_FillInStackTrace -+ _JVM_FindClassFromCaller -+ _JVM_FindClassFromClass -+ _JVM_FindClassFromClassLoader -+ _JVM_FindClassFromBootLoader -+ _JVM_FindLibraryEntry -+ _JVM_FindLoadedClass -+ _JVM_FindPrimitiveClass -+ _JVM_FindSignal -+ _JVM_FreeMemory -+ _JVM_GC -+ _JVM_GetAllThreads -+ _JVM_GetArrayElement -+ _JVM_GetArrayLength -+ _JVM_GetCPClassNameUTF -+ _JVM_GetCPFieldClassNameUTF -+ _JVM_GetCPFieldModifiers -+ _JVM_GetCPFieldNameUTF -+ _JVM_GetCPFieldSignatureUTF -+ _JVM_GetCPMethodClassNameUTF -+ _JVM_GetCPMethodModifiers -+ _JVM_GetCPMethodNameUTF -+ _JVM_GetCPMethodSignatureUTF -+ _JVM_GetCallerClass -+ _JVM_GetClassAccessFlags -+ _JVM_GetClassAnnotations -+ _JVM_GetClassCPEntriesCount -+ _JVM_GetClassCPTypes -+ _JVM_GetClassConstantPool -+ _JVM_GetClassContext -+ _JVM_GetClassDeclaredConstructors -+ _JVM_GetClassDeclaredFields -+ _JVM_GetClassDeclaredMethods -+ _JVM_GetClassFieldsCount -+ _JVM_GetClassInterfaces -+ _JVM_GetClassLoader -+ _JVM_GetClassMethodsCount -+ _JVM_GetClassModifiers -+ _JVM_GetClassName -+ _JVM_GetClassNameUTF -+ _JVM_GetClassSignature -+ _JVM_GetClassSigners -+ _JVM_GetClassTypeAnnotations -+ _JVM_GetComponentType -+ _JVM_GetDeclaredClasses -+ _JVM_GetDeclaringClass -+ _JVM_GetEnclosingMethodInfo -+ _JVM_GetFieldAnnotations -+ _JVM_GetFieldIxModifiers -+ _JVM_GetFieldTypeAnnotations -+ _JVM_GetHostName -+ _JVM_GetInheritedAccessControlContext -+ _JVM_GetInterfaceVersion -+ _JVM_GetLastErrorString -+ _JVM_GetManagement -+ _JVM_GetMethodAnnotations -+ _JVM_GetMethodDefaultAnnotationValue -+ _JVM_GetMethodIxArgsSize -+ _JVM_GetMethodIxByteCode -+ _JVM_GetMethodIxByteCodeLength -+ _JVM_GetMethodIxExceptionIndexes -+ _JVM_GetMethodIxExceptionTableEntry -+ _JVM_GetMethodIxExceptionTableLength -+ _JVM_GetMethodIxExceptionsCount -+ _JVM_GetMethodIxLocalsCount -+ _JVM_GetMethodIxMaxStack -+ _JVM_GetMethodIxModifiers -+ _JVM_GetMethodIxNameUTF -+ _JVM_GetMethodIxSignatureUTF -+ _JVM_GetMethodParameterAnnotations -+ _JVM_GetMethodParameters -+ _JVM_GetMethodTypeAnnotations -+ _JVM_GetPrimitiveArrayElement -+ _JVM_GetProtectionDomain -+ _JVM_GetSockName -+ _JVM_GetSockOpt -+ _JVM_GetStackAccessControlContext -+ _JVM_GetStackTraceDepth -+ _JVM_GetStackTraceElement -+ _JVM_GetSystemPackage -+ _JVM_GetSystemPackages -+ _JVM_GetTemporaryDirectory -+ _JVM_GetThreadStateNames -+ _JVM_GetThreadStateValues -+ _JVM_GetVersionInfo -+ _JVM_Halt -+ _JVM_HoldsLock -+ _JVM_IHashCode -+ _JVM_InitAgentProperties -+ _JVM_InitProperties -+ _JVM_InitializeCompiler -+ _JVM_InitializeSocketLibrary -+ _JVM_InternString -+ _JVM_Interrupt -+ _JVM_InvokeMethod -+ _JVM_IsArrayClass -+ _JVM_IsConstructorIx -+ _JVM_IsInterface -+ _JVM_IsInterrupted -+ _JVM_IsNaN -+ _JVM_IsPrimitiveClass -+ _JVM_IsSameClassPackage -+ _JVM_IsSilentCompiler -+ _JVM_IsSupportedJNIVersion -+ _JVM_IsThreadAlive -+ _JVM_IsVMGeneratedMethodIx -+ _JVM_KnownToNotExist -+ _JVM_GetResourceLookupCacheURLs -+ _JVM_GetResourceLookupCache -+ _JVM_LatestUserDefinedLoader -+ _JVM_Listen -+ _JVM_LoadClass0 -+ _JVM_LoadLibrary -+ _JVM_Lseek -+ _JVM_MaxObjectInspectionAge -+ _JVM_MaxMemory -+ _JVM_MonitorNotify -+ _JVM_MonitorNotifyAll -+ _JVM_MonitorWait -+ _JVM_NanoTime -+ _JVM_NativePath -+ _JVM_NewArray -+ _JVM_NewInstanceFromConstructor -+ _JVM_NewMultiArray -+ _JVM_OnExit -+ _JVM_Open -+ _JVM_RaiseSignal -+ _JVM_RawMonitorCreate -+ _JVM_RawMonitorDestroy -+ _JVM_RawMonitorEnter -+ _JVM_RawMonitorExit -+ _JVM_Read -+ _JVM_Recv -+ _JVM_RecvFrom -+ _JVM_RegisterSignal -+ _JVM_ReleaseUTF -+ _JVM_ResolveClass -+ _JVM_ResumeThread -+ _JVM_Send -+ _JVM_SendTo -+ _JVM_SetArrayElement -+ _JVM_SetClassSigners -+ _JVM_SetLength -+ _JVM_SetNativeThreadName -+ _JVM_SetPrimitiveArrayElement -+ _JVM_SetSockOpt -+ _JVM_SetThreadPriority -+ _JVM_Sleep -+ _JVM_Socket -+ _JVM_SocketAvailable -+ _JVM_SocketClose -+ _JVM_SocketShutdown -+ _JVM_StartThread -+ _JVM_StopThread -+ _JVM_SuspendThread -+ _JVM_SupportsCX8 -+ _JVM_Sync -+ _JVM_Timeout -+ _JVM_TotalMemory -+ _JVM_TraceInstructions -+ _JVM_TraceMethodCalls -+ _JVM_UnloadLibrary -+ _JVM_Write -+ _JVM_Yield -+ _JVM_handle_bsd_signal -+ -+ # miscellaneous functions -+ _jio_fprintf -+ _jio_printf -+ _jio_snprintf -+ _jio_vfprintf -+ _jio_vsnprintf -+ -+ # This is for Forte Analyzer profiling support. -+ _AsyncGetCallTrace -+ -+ # INSERT VTABLE SYMBOLS HERE -+ ---- ./hotspot/make/bsd/makefiles/optimized.make Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/make/bsd/makefiles/optimized.make Sun Feb 10 09:26:05 2019 -0800 -@@ -38,6 +38,9 @@ - # to inhibit the effect of the previous line on CFLAGS. - - # Linker mapfile --MAPFILE = $(GAMMADIR)/make/bsd/makefiles/mapfile-vers-debug -+ifeq ($(OS_VENDOR), Darwin) -+MAPSUFX = .macosx -+endif -+MAPFILE = $(GAMMADIR)/make/bsd/makefiles/mapfile-vers-debug$(MAPSUFX) - - VERSION = optimized ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./hotspot/make/bsd/makefiles/ppc64.make Sun Feb 10 09:26:05 2019 -0800 -@@ -0,0 +1,51 @@ -+# -+# Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. -+# Copyright 2012, 2013 SAP AG. 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. -+# -+# -+ -+# make c code know it is on a 64 bit platform. -+CFLAGS += -D_LP64=1 -+ -+ifeq ($(origin OPENJDK_TARGET_CPU_ENDIAN),undefined) -+ # This can happen during hotspot standalone build. Set endianness from -+ # uname. We assume build and target machines are the same. -+ OPENJDK_TARGET_CPU_ENDIAN:=$(if $(filter ppc64le,$(shell uname -m)),little,big) -+endif -+ -+ifeq ($(filter $(OPENJDK_TARGET_CPU_ENDIAN),big little),) -+ $(error OPENJDK_TARGET_CPU_ENDIAN value should be 'big' or 'little') -+endif -+ -+ifeq ($(OPENJDK_TARGET_CPU_ENDIAN),big) -+ # fixes `relocation truncated to fit' error for gcc 4.1. -+ CFLAGS += -mminimal-toc -+ -+ # finds use ppc64 instructions, but schedule for power5 -+ CFLAGS += -mcpu=powerpc64 -mtune=power5 -minsert-sched-nops=regroup_exact -mno-multiple -mno-string -+else -+ # Little endian machine uses ELFv2 ABI. -+ CFLAGS += -DVM_LITTLE_ENDIAN -DABI_ELFv2 -+ -+ # Use Power8, this is the first CPU to support PPC64 LE with ELFv2 ABI. -+ CFLAGS += -mcpu=power7 -mtune=power8 -minsert-sched-nops=regroup_exact -mno-multiple -mno-string -+endif ---- ./hotspot/make/bsd/makefiles/product.make Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/make/bsd/makefiles/product.make Sun Feb 10 09:26:05 2019 -0800 -@@ -38,7 +38,10 @@ - # to inhibit the effect of the previous line on CFLAGS. - - # Linker mapfile --MAPFILE = $(GAMMADIR)/make/bsd/makefiles/mapfile-vers-product -+ifeq ($(OS_VENDOR), Darwin) -+ MAPSUFX = .macosx -+endif -+MAPFILE = $(GAMMADIR)/make/bsd/makefiles/mapfile-vers-product$(MAPSUFX) - - SYSDEFS += -DPRODUCT - VERSION = optimized ---- ./hotspot/make/bsd/makefiles/rules.make Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/make/bsd/makefiles/rules.make Sun Feb 10 09:26:05 2019 -0800 -@@ -34,7 +34,7 @@ - CC_COMPILE = $(CC) $(CXXFLAGS) $(CFLAGS) - CXX_COMPILE = $(CXX) $(CXXFLAGS) $(CFLAGS) - --AS.S = $(AS) $(ASFLAGS) -+AS.S = $(AS) -x assembler-with-cpp $(ASFLAGS) - - COMPILE.CC = $(CC_COMPILE) -c - GENASM.CC = $(CC_COMPILE) -S ---- ./hotspot/make/bsd/makefiles/sa.make Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/make/bsd/makefiles/sa.make Sun Feb 10 09:26:05 2019 -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 Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/make/bsd/makefiles/saproc.make Sun Feb 10 09:26:05 2019 -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 Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/make/bsd/makefiles/vm.make Sun Feb 10 09:26:05 2019 -0800 -@@ -107,7 +107,7 @@ - # File specific flags - CXXFLAGS += $(CXXFLAGS/BYFILE) - --ifdef DEFAULT_LIBPATH -+ifneq ($(DEFAULT_LIBPATH),) - CXXFLAGS += -DDEFAULT_LIBPATH="\"$(DEFAULT_LIBPATH)\"" - endif - -@@ -130,9 +130,7 @@ - - LIBS += -lm - --ifeq ($(USE_CLANG),) -- LIBS += -pthread --endif -+LIBS += -pthread - - # By default, link the *.o into the library, not the executable. - LINK_INTO$(LINK_INTO) = LIBJVM ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./hotspot/make/bsd/platform_ppc64 Sun Feb 10 09:26:05 2019 -0800 -@@ -0,0 +1,17 @@ -+os_family = bsd -+ -+arch = ppc -+ -+arch_model = ppc_64 -+ -+os_arch = bsd_ppc -+ -+os_arch_model = bsd_ppc_64 -+ -+lib_arch = ppc64 -+ -+compiler = gcc -+ -+gnu_dis_arch = ppc64 -+ -+sysdefs = -DBSD -D_ALLBSD_SOURCE -D_GNU_SOURCE -DPPC64 ---- ./hotspot/make/sa.files Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/make/sa.files Sun Feb 10 09:26:05 2019 -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 Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/cpu/ppc/vm/bytes_ppc.hpp Sun Feb 10 09:26:05 2019 -0800 -@@ -277,5 +277,9 @@ - #if defined(TARGET_OS_ARCH_linux_ppc) - #include "bytes_linux_ppc.inline.hpp" - #endif -+#if defined(TARGET_OS_ARCH_bsd_ppc) -+#include "bytes_bsd_ppc.inline.hpp" -+#endif -+ - - #endif // CPU_PPC_VM_BYTES_PPC_HPP ---- ./hotspot/src/cpu/ppc/vm/interpreter_ppc.cpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/cpu/ppc/vm/interpreter_ppc.cpp Sun Feb 10 09:26:05 2019 -0800 -@@ -307,6 +307,8 @@ - // Although AIX runs on big endian CPU, float is in most significant - // word of an argument slot. - __ stfs(floatSlot, 0, arg_c); -+#elif defined(BSD) -+ __ stfs(floatSlot, 4, arg_c); - #else - #error "unknown OS" - #endif ---- ./hotspot/src/cpu/ppc/vm/sharedRuntime_ppc.cpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/cpu/ppc/vm/sharedRuntime_ppc.cpp Sun Feb 10 09:26:05 2019 -0800 -@@ -780,6 +780,8 @@ - // Although AIX runs on big endian CPU, float is in the most - // significant word of an argument slot. - #define FLOAT_WORD_OFFSET_IN_SLOT 0 -+#elif defined(BSD) -+#define FLOAT_WORD_OFFSET_IN_SLOT 1 - #else - #error "unknown OS" - #endif ---- ./hotspot/src/cpu/x86/vm/interp_masm_x86_64.cpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/cpu/x86/vm/interp_masm_x86_64.cpp Sun Feb 10 09:26:05 2019 -0800 -@@ -650,7 +650,7 @@ - - bind(loop); - // check if current entry is used -- cmpptr(Address(c_rarg1, BasicObjectLock::obj_offset_in_bytes()), (int32_t) NULL); -+ cmpptr(Address(c_rarg1, BasicObjectLock::obj_offset_in_bytes()), 0); - jcc(Assembler::notEqual, exception); - - addptr(c_rarg1, entry_size); // otherwise advance to next entry ---- ./hotspot/src/cpu/x86/vm/interpreterRT_x86_64.cpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/cpu/x86/vm/interpreterRT_x86_64.cpp Sun Feb 10 09:26:05 2019 -0800 -@@ -428,10 +428,10 @@ - _from -= Interpreter::stackElementSize; - - if (_num_int_args < Argument::n_int_register_parameters_c-1) { -- *_int_args++ = (*from_addr == 0) ? NULL : (intptr_t)from_addr; -+ *_int_args++ = (*from_addr == 0) ? 0L : (intptr_t) from_addr; - _num_int_args++; - } else { -- *_to++ = (*from_addr == 0) ? NULL : (intptr_t) from_addr; -+ *_to++ = (*from_addr == 0) ? 0L : (intptr_t) from_addr; - } - } - ---- ./hotspot/src/cpu/x86/vm/jni_x86.h Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/cpu/x86/vm/jni_x86.h Sun Feb 10 09:26:05 2019 -0800 -@@ -34,7 +34,7 @@ - #ifndef __has_attribute - #define __has_attribute(x) 0 - #endif --#if (defined(__GNUC__) && ((__GNUC__ > 4) || (__GNUC__ == 4) && (__GNUC_MINOR__ > 2))) || __has_attribute(visibility) -+#if (defined(__clang__) || (defined(__GNUC__) && ((__GNUC__ > 4) || (__GNUC__ == 4) && (__GNUC_MINOR__ > 2)))) || __has_attribute(visibility) - #define JNIEXPORT __attribute__((visibility("default"))) - #define JNIIMPORT __attribute__((visibility("default"))) - #else ---- ./hotspot/src/cpu/x86/vm/sharedRuntime_x86_32.cpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/cpu/x86/vm/sharedRuntime_x86_32.cpp Sun Feb 10 09:26:05 2019 -0800 -@@ -2266,7 +2266,7 @@ - if (!is_critical_native) { - // reset handle block - __ movptr(rcx, Address(thread, JavaThread::active_handles_offset())); -- __ movl(Address(rcx, JNIHandleBlock::top_offset_in_bytes()), NULL_WORD); -+ __ movl(Address(rcx, JNIHandleBlock::top_offset_in_bytes()), (int32_t)NULL_WORD); - - // Any exception pending? - __ cmpptr(Address(thread, in_bytes(Thread::pending_exception_offset())), (int32_t)NULL_WORD); ---- ./hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp Sun Feb 10 09:26:05 2019 -0800 -@@ -23,9 +23,12 @@ - */ - - #include "precompiled.hpp" --#ifndef _WINDOWS -+#if !defined(_WINDOWS) && !defined(_ALLBSD_SOURCE) - #include "alloca.h" - #endif -+#ifdef _ALLBSD_SOURCE -+#include <stdlib.h> -+#endif - #include "asm/macroAssembler.hpp" - #include "asm/macroAssembler.inline.hpp" - #include "code/debugInfoRec.hpp" ---- ./hotspot/src/cpu/x86/vm/stubGenerator_x86_64.cpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/cpu/x86/vm/stubGenerator_x86_64.cpp Sun Feb 10 09:26:05 2019 -0800 -@@ -489,7 +489,7 @@ - // make sure this code is only executed if there is a pending exception - { - Label L; -- __ cmpptr(Address(r15_thread, Thread::pending_exception_offset()), (int32_t) NULL); -+ __ cmpptr(Address(r15_thread, Thread::pending_exception_offset()), 0); - __ jcc(Assembler::notEqual, L); - __ stop("StubRoutines::forward exception: no pending exception (1)"); - __ bind(L); ---- ./hotspot/src/cpu/x86/vm/templateInterpreter_x86_32.cpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/cpu/x86/vm/templateInterpreter_x86_32.cpp Sun Feb 10 09:26:05 2019 -0800 -@@ -1293,7 +1293,7 @@ - - // reset handle block - __ movptr(t, Address(thread, JavaThread::active_handles_offset())); -- __ movl(Address(t, JNIHandleBlock::top_offset_in_bytes()), NULL_WORD); -+ __ movl(Address(t, JNIHandleBlock::top_offset_in_bytes()), (int32_t)NULL_WORD); - - // If result was an oop then unbox and save it in the frame - { Label L; ---- ./hotspot/src/cpu/x86/vm/x86_32.ad Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/cpu/x86/vm/x86_32.ad Sun Feb 10 09:26:05 2019 -0800 -@@ -1250,6 +1250,7 @@ - - - Unimplemented(); -+ return 0; - } - - #ifndef PRODUCT ---- ./hotspot/src/os/aix/vm/os_aix.cpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/os/aix/vm/os_aix.cpp Sun Feb 10 09:26:05 2019 -0800 -@@ -5246,6 +5246,10 @@ - return 0; - } - -+ const int n = strlen(buffer); -+ -+ jio_snprintf(buffer + n, bufferSize - n, "/core or core.%d", current_process_id()); -+ - return strlen(buffer); - } - ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./hotspot/src/os/bsd/vm/decoder_bsd.cpp Sun Feb 10 09:26:05 2019 -0800 -@@ -0,0 +1,53 @@ -+/* -+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. -+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -+ * -+ * This code is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 only, as -+ * published by the Free Software Foundation. -+ * -+ * This code is distributed in the hope that it will be useful, but WITHOUT -+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+ * version 2 for more details (a copy is included in the LICENSE file that -+ * accompanied this code). -+ * -+ * You should have received a copy of the GNU General Public License version -+ * 2 along with this work; if not, write to the Free Software Foundation, -+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -+ * or visit www.oracle.com if you need additional information or have any -+ * questions. -+ * -+ */ -+ -+#ifndef __APPLE__ -+#include "prims/jvm.h" -+#include "utilities/decoder_elf.hpp" -+ -+#include <cxxabi.h> -+ -+bool ElfDecoder::demangle(const char* symbol, char *buf, int buflen) { -+ int status; -+ char* result; -+ size_t size = (size_t)buflen; -+ -+#ifdef PPC64 -+ // On PPC64 ElfDecoder::decode() may return a dot (.) prefixed name -+ // (see elfFuncDescTable.hpp for details) -+ if (symbol && *symbol == '.') symbol += 1; -+#endif -+ -+ // Don't pass buf to __cxa_demangle. In case of the 'buf' is too small, -+ // __cxa_demangle will call system "realloc" for additional memory, which -+ // may use different malloc/realloc mechanism that allocates 'buf'. -+ if ((result = abi::__cxa_demangle(symbol, NULL, NULL, &status)) != NULL) { -+ jio_snprintf(buf, buflen, "%s", result); -+ // call c library's free -+ ::free(result); -+ return true; -+ } -+ return false; -+} -+#endif ---- ./hotspot/src/os/bsd/vm/jsig.c Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/os/bsd/vm/jsig.c Sun Feb 10 09:26:05 2019 -0800 -@@ -165,9 +165,8 @@ - } - - sa_handler_t sigset(int sig, sa_handler_t disp) { -- printf("sigset() is not supported by BSD"); -- exit(0); -- } -+ return set_signal(sig, disp, true); -+} - - static int call_os_sigaction(int sig, const struct sigaction *act, - struct sigaction *oact) { ---- ./hotspot/src/os/bsd/vm/jvm_bsd.cpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/os/bsd/vm/jvm_bsd.cpp Sun Feb 10 09:26:05 2019 -0800 -@@ -50,6 +50,7 @@ - case INTERRUPT_SIGNAL: - case SIGFPE: - case SIGILL: -+ case SIGBUS: - case SIGSEGV: - - /* The following signal is used by the VM to dump thread stacks unless -@@ -110,71 +111,29 @@ - JVM_END - - /* -- All the defined signal names for Bsd. -+ All the defined signal names for BSD are defined by sys_signame[]. - - NOTE that not all of these names are accepted by our Java implementation - - Via an existing claim by the VM, sigaction restrictions, or - the "rules of Unix" some of these names will be rejected at runtime. - For example the VM sets up to handle USR1, sigaction returns EINVAL for -- STOP, and Bsd simply doesn't allow catching of KILL. -+ STOP, and BSD simply doesn't allow catching of KILL. - - Here are the names currently accepted by a user of sun.misc.Signal with - 1.4.1 (ignoring potential interaction with use of chaining, etc): - -- HUP, INT, TRAP, ABRT, IOT, BUS, USR2, PIPE, ALRM, TERM, STKFLT, -- CLD, CHLD, CONT, TSTP, TTIN, TTOU, URG, XCPU, XFSZ, VTALRM, PROF, -- WINCH, POLL, IO, PWR, SYS -- -+ HUP, INT, TRAP, ABRT, EMT, SYS, PIPE, ALRM, TERM, URG, TSTP, CONT, -+ CHLD, TTIN, TTOU, IO, XCPU, XFSZ, VTALRM, PROF, WINCH, INFO, USR2 - */ - --struct siglabel { -- const char *name; -- int number; --}; -- --struct siglabel siglabels[] = { -- /* derived from /usr/include/bits/signum.h on RH7.2 */ -- "HUP", SIGHUP, /* Hangup (POSIX). */ -- "INT", SIGINT, /* Interrupt (ANSI). */ -- "QUIT", SIGQUIT, /* Quit (POSIX). */ -- "ILL", SIGILL, /* Illegal instruction (ANSI). */ -- "TRAP", SIGTRAP, /* Trace trap (POSIX). */ -- "ABRT", SIGABRT, /* Abort (ANSI). */ -- "EMT", SIGEMT, /* EMT trap */ -- "FPE", SIGFPE, /* Floating-point exception (ANSI). */ -- "KILL", SIGKILL, /* Kill, unblockable (POSIX). */ -- "BUS", SIGBUS, /* BUS error (4.2 BSD). */ -- "SEGV", SIGSEGV, /* Segmentation violation (ANSI). */ -- "SYS", SIGSYS, /* Bad system call. Only on some Bsden! */ -- "PIPE", SIGPIPE, /* Broken pipe (POSIX). */ -- "ALRM", SIGALRM, /* Alarm clock (POSIX). */ -- "TERM", SIGTERM, /* Termination (ANSI). */ -- "URG", SIGURG, /* Urgent condition on socket (4.2 BSD). */ -- "STOP", SIGSTOP, /* Stop, unblockable (POSIX). */ -- "TSTP", SIGTSTP, /* Keyboard stop (POSIX). */ -- "CONT", SIGCONT, /* Continue (POSIX). */ -- "CHLD", SIGCHLD, /* Child status has changed (POSIX). */ -- "TTIN", SIGTTIN, /* Background read from tty (POSIX). */ -- "TTOU", SIGTTOU, /* Background write to tty (POSIX). */ -- "IO", SIGIO, /* I/O now possible (4.2 BSD). */ -- "XCPU", SIGXCPU, /* CPU limit exceeded (4.2 BSD). */ -- "XFSZ", SIGXFSZ, /* File size limit exceeded (4.2 BSD). */ -- "VTALRM", SIGVTALRM, /* Virtual alarm clock (4.2 BSD). */ -- "PROF", SIGPROF, /* Profiling alarm clock (4.2 BSD). */ -- "WINCH", SIGWINCH, /* Window size change (4.3 BSD, Sun). */ -- "INFO", SIGINFO, /* Information request. */ -- "USR1", SIGUSR1, /* User-defined signal 1 (POSIX). */ -- "USR2", SIGUSR2 /* User-defined signal 2 (POSIX). */ -- }; -- - JVM_ENTRY_NO_ENV(jint, JVM_FindSignal(const char *name)) - - /* find and return the named signal's number */ - -- for(uint i=0; i<ARRAY_SIZE(siglabels); i++) -- if(!strcmp(name, siglabels[i].name)) -- return siglabels[i].number; -+ for (int i = 1; i < NSIG; i++) -+ if (strcasecmp(name, sys_signame[i]) == 0) -+ return i; - - return -1; - -@@ -182,11 +141,14 @@ - - // used by os::exception_name() - extern bool signal_name(int signo, char* buf, size_t len) { -- for(uint i = 0; i < ARRAY_SIZE(siglabels); i++) { -- if (signo == siglabels[i].number) { -- jio_snprintf(buf, len, "SIG%s", siglabels[i].name); -- return true; -- } -- } -- return false; -+ if (signo <= 0 || signo >= NSIG) -+ return false; -+ char signame[8]; -+ const char *s = sys_signame[signo]; -+ uint i; -+ for (i = 0; i < sizeof(signame) - 1 && s[i] != '\0'; i++) -+ signame[i] = toupper(s[i]); -+ signame[i] = '\0'; -+ jio_snprintf(buf, len, "SIG%s", signame); -+ return true; - } ---- ./hotspot/src/os/bsd/vm/jvm_bsd.h Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/os/bsd/vm/jvm_bsd.h Sun Feb 10 09:26:05 2019 -0800 -@@ -112,20 +112,6 @@ - #define SHUTDOWN2_SIGNAL SIGINT - #define SHUTDOWN3_SIGNAL SIGTERM - --#ifndef SIGRTMIN --#ifdef __OpenBSD__ --#define SIGRTMIN 1 --#else --#define SIGRTMIN 33 --#endif --#endif --#ifndef SIGRTMAX --#ifdef __OpenBSD__ --#define SIGRTMAX 31 --#else --#define SIGRTMAX 63 --#endif --#endif - #endif /* JVM_MD_H */ - - #endif // OS_BSD_VM_JVM_BSD_H ---- ./hotspot/src/os/bsd/vm/osThread_bsd.cpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/os/bsd/vm/osThread_bsd.cpp Sun Feb 10 09:26:05 2019 -0800 -@@ -30,7 +30,7 @@ - - void OSThread::pd_initialize() { - assert(this != NULL, "check"); --#ifdef __APPLE__ -+#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) - _thread_id = 0; - #else - _thread_id = NULL; ---- ./hotspot/src/os/bsd/vm/os_bsd.cpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/os/bsd/vm/os_bsd.cpp Sun Feb 10 09:26:05 2019 -0800 -@@ -97,16 +97,31 @@ - # include <sys/shm.h> - #ifndef __APPLE__ - # include <link.h> -+# include <stdlib.h> - #endif - # include <stdint.h> - # include <inttypes.h> - # include <sys/ioctl.h> - # include <sys/syscall.h> - -+#ifdef __FreeBSD__ -+# if __FreeBSD_version > 900030 -+# include <pthread_np.h> -+# else -+# include <sys/thr.h> -+# endif -+# include <sys/cpuset.h> -+# include <vm/vm_param.h> -+#endif -+ - #if defined(__FreeBSD__) || defined(__NetBSD__) - # include <elf.h> - #endif - -+#ifdef __NetBSD__ -+#include <lwp.h> -+#endif -+ - #ifdef __APPLE__ - # include <mach/mach.h> // semaphore_* API - # include <mach-o/dyld.h> -@@ -136,9 +151,11 @@ - volatile uint64_t os::Bsd::_max_abstime = 0; - #else - int (*os::Bsd::_clock_gettime)(clockid_t, struct timespec *) = NULL; -+int (*os::Bsd::_getcpuclockid)(pthread_t, clockid_t *) = NULL; - #endif - pthread_t os::Bsd::_main_thread; - int os::Bsd::_page_size = -1; -+pthread_condattr_t os::Bsd::_condattr[1]; - - static jlong initial_time_count=0; - -@@ -169,6 +186,27 @@ - - // available here means free - julong os::Bsd::available_memory() { -+#ifdef __FreeBSD__ -+ static const char *vm_stats[] = { -+ "vm.stats.vm.v_free_count", -+ "vm.stats.vm.v_cache_count", -+ "vm.stats.vm.v_inactive_count" -+ }; -+ size_t size; -+ julong free_pages; -+ u_int i, npages; -+ -+ for (i = 0, free_pages = 0; i < sizeof(vm_stats) / sizeof(vm_stats[0]); i++) { -+ size = sizeof(npages); -+ if (sysctlbyname(vm_stats[i], &npages, &size, NULL, 0) == -1) { -+ free_pages = 0; -+ break; -+ } -+ free_pages += npages; -+ } -+ if (free_pages > 0) -+ return free_pages * os::vm_page_size(); -+#endif - uint64_t available = physical_memory() >> 2; - #ifdef __APPLE__ - mach_msg_type_number_t count = HOST_VM_INFO64_COUNT; -@@ -208,7 +246,7 @@ - static bool init = false; - static bool privileges = false; - if (!init) { -- privileges = (getuid() != geteuid()) || (getgid() != getegid()); -+ privileges = issetugid(); - init = true; - } - return privileges; -@@ -229,6 +267,8 @@ - static char cpu_arch[] = "arm"; - #elif defined(PPC32) - static char cpu_arch[] = "ppc"; -+#elif defined(PPC64) -+static char cpu_arch[] = "ppc64"; - #elif defined(SPARC) - # ifdef _LP64 - static char cpu_arch[] = "sparcv9"; -@@ -272,6 +312,8 @@ - - #if defined (HW_MEMSIZE) // Apple - mib[1] = HW_MEMSIZE; -+#elif defined(HW_PHYSMEM64) // OpenBSD & NetBSD -+ mib[1] = HW_PHYSMEM64; - #elif defined(HW_PHYSMEM) // Most of BSD - mib[1] = HW_PHYSMEM; - #elif defined(HW_REALMEM) // Old FreeBSD -@@ -411,12 +453,21 @@ - const char *v = ::getenv("LD_LIBRARY_PATH"); - const char *v_colon = ":"; - if (v == NULL) { v = ""; v_colon = ""; } -+#ifdef __APPLE__ - // That's +1 for the colon and +1 for the trailing '\0'. - char *ld_library_path = (char *)NEW_C_HEAP_ARRAY(char, - strlen(v) + 1 + - sizeof(SYS_EXT_DIR) + sizeof("/lib/") + strlen(cpu_arch) + sizeof(DEFAULT_LIBPATH) + 1, - mtInternal); - sprintf(ld_library_path, "%s%s" SYS_EXT_DIR "/lib/%s:" DEFAULT_LIBPATH, v, v_colon, cpu_arch); -+#else -+ // That's +1 for the colon and +1 for the trailing '\0'. -+ char *ld_library_path = (char *)NEW_C_HEAP_ARRAY(char, -+ strlen(v) + 1 + -+ sizeof(PACKAGE_PATH) + sizeof("/lib") + 1, -+ mtInternal); -+ sprintf(ld_library_path, "%s%s" PACKAGE_PATH "/lib", v, v_colon); -+#endif - Arguments::set_library_path(ld_library_path); - FREE_C_HEAP_ARRAY(char, ld_library_path, mtInternal); - } -@@ -591,6 +642,9 @@ - sigaddset(&unblocked_sigs, SIGSEGV); - sigaddset(&unblocked_sigs, SIGBUS); - sigaddset(&unblocked_sigs, SIGFPE); -+#if defined(PPC64) -+ sigaddset(&unblocked_sigs, SIGTRAP); -+#endif - sigaddset(&unblocked_sigs, SR_signum); - - if (!ReduceSignalUsage) { -@@ -983,6 +1037,13 @@ - bool os::vtime_enabled() { return false; } - - double os::elapsedVTime() { -+#ifdef RUSAGE_THREAD -+ struct rusage usage; -+ int retval = getrusage(RUSAGE_THREAD, &usage); -+ if (retval == 0) { -+ return (double) (usage.ru_utime.tv_sec + usage.ru_stime.tv_sec) + (double) (usage.ru_utime.tv_usec + usage.ru_stime.tv_usec) / (1000 * 1000); -+ } -+#endif - // better than nothing, but not much - return elapsedTime(); - } -@@ -1008,11 +1069,15 @@ - void os::Bsd::clock_init() { - struct timespec res; - struct timespec tp; -+ _getcpuclockid = (int (*)(pthread_t, clockid_t *))dlsym(RTLD_DEFAULT, "pthread_getcpuclockid"); - if (::clock_getres(CLOCK_MONOTONIC, &res) == 0 && - ::clock_gettime(CLOCK_MONOTONIC, &tp) == 0) { - // yes, monotonic clock is supported - _clock_gettime = ::clock_gettime; -+ return; - } -+ warning("No monotonic clock was available - timed services may " \ -+ "be adversely affected if the time-of-day clock changes"); - } - #endif - -@@ -1048,7 +1113,7 @@ - jlong os::javaTimeNanos() { - if (Bsd::supports_monotonic_clock()) { - struct timespec tp; -- int status = Bsd::_clock_gettime(CLOCK_MONOTONIC, &tp); -+ int status = ::clock_gettime(CLOCK_MONOTONIC, &tp); - assert(status == 0, "gettime error"); - jlong result = jlong(tp.tv_sec) * (1000 * 1000 * 1000) + jlong(tp.tv_nsec); - return result; -@@ -1190,35 +1255,38 @@ - pid_t os::Bsd::gettid() { - int retval = -1; - --#ifdef __APPLE__ //XNU kernel -+#if defined(__APPLE__) //XNU kernel - // despite the fact mach port is actually not a thread id use it - // instead of syscall(SYS_thread_selfid) as it certainly fits to u4 - retval = ::pthread_mach_thread_np(::pthread_self()); - guarantee(retval != 0, "just checking"); - return retval; - -+#elif defined(__FreeBSD__) -+#if __FreeBSD_version > 900030 -+ return ::pthread_getthreadid_np(); - #else -- #ifdef __FreeBSD__ -- retval = syscall(SYS_thr_self); -- #else -- #ifdef __OpenBSD__ -+ long tid; -+ thr_self(&tid); -+ return (pid_t)tid; -+#endif -+#elif defined(__OpenBSD__) - retval = syscall(SYS_getthrid); -- #else -- #ifdef __NetBSD__ -- retval = (pid_t) syscall(SYS__lwp_self); -- #endif -- #endif -- #endif -+#elif defined(__NetBSD__) -+ retval = (pid_t) _lwp_self(); - #endif - - if (retval == -1) { - return getpid(); - } -+ return retval; - } - - intx os::current_thread_id() { --#ifdef __APPLE__ -+#if defined(__APPLE__) - return (intx)::pthread_mach_thread_np(::pthread_self()); -+#elif defined(__FreeBSD__) -+ return os::Bsd::gettid(); - #else - return (intx)::pthread_self(); - #endif -@@ -1563,7 +1631,7 @@ - // Identify compatability class for VM's architecture and library's architecture - // Obtain string descriptions for architectures - -- arch_t lib_arch={elf_head.e_machine,0,elf_head.e_ident[EI_CLASS], elf_head.e_ident[EI_DATA], NULL}; -+ arch_t lib_arch={ elf_head.e_machine, 0, (char) elf_head.e_ident[EI_CLASS], (char) elf_head.e_ident[EI_DATA], NULL}; - int running_arch_index=-1; - - for (unsigned int i=0 ; i < ARRAY_SIZE(arch_array) ; i++ ) { -@@ -1691,14 +1759,14 @@ - } - - void os::print_os_info_brief(outputStream* st) { -- st->print("Bsd"); -+ st->print_cr("BSD"); - - os::Posix::print_uname_info(st); - } - - void os::print_os_info(outputStream* st) { - st->print("OS:"); -- st->print("Bsd"); -+ st->print_cr("BSD"); - - os::Posix::print_uname_info(st); - -@@ -1711,6 +1779,29 @@ - // Nothing to do for now. - } - -+#ifdef __FreeBSD__ -+static void get_swap_info(int *total_pages, int *used_pages) { -+ struct xswdev xsw; -+ size_t mibsize, size; -+ int mib[16]; -+ int n, total = 0, used = 0; -+ -+ mibsize = sizeof(mib) / sizeof(mib[0]); -+ if (sysctlnametomib("vm.swap_info", mib, &mibsize) != -1) { -+ for (n = 0; ; n++) { -+ mib[mibsize] = n; -+ size = sizeof(xsw); -+ if (sysctl(mib, mibsize + 1, &xsw, &size, NULL, 0) == -1) -+ break; -+ total += xsw.xsw_nblks; -+ used += xsw.xsw_used; -+ } -+ } -+ *total_pages = total; -+ *used_pages = used; -+} -+#endif -+ - void os::print_memory_info(outputStream* st) { - - st->print("Memory:"); -@@ -1720,11 +1811,14 @@ - os::physical_memory() >> 10); - st->print("(" UINT64_FORMAT "k free)", - os::available_memory() >> 10); -- st->cr(); -- -- // meminfo -- st->print("\n/proc/meminfo:\n"); -- _print_ascii_file("/proc/meminfo", st); -+#ifdef __FreeBSD__ -+ int total, used; -+ get_swap_info(&total, &used); -+ st->print(", swap " UINT64_FORMAT "k", -+ (total * os::vm_page_size()) >> 10); -+ st->print("(" UINT64_FORMAT "k free)", -+ ((total - used) * os::vm_page_size()) >> 10); -+#endif - st->cr(); - } - -@@ -1763,6 +1857,9 @@ - print_signal_handler(st, SHUTDOWN2_SIGNAL , buf, buflen); - print_signal_handler(st, SHUTDOWN3_SIGNAL , buf, buflen); - print_signal_handler(st, BREAK_SIGNAL, buf, buflen); -+#if defined(PPC64) -+ print_signal_handler(st, SIGTRAP, buf, buflen); -+#endif - } - - static char saved_jvm_path[MAXPATHLEN] = {0}; -@@ -1960,7 +2057,7 @@ - os_semaphore_t _semaphore; - }; - --Semaphore::Semaphore() : _semaphore(0) { -+Semaphore::Semaphore() { - SEM_INIT(_semaphore, 0); - } - -@@ -2148,7 +2245,7 @@ - if (::write(fd, "", 1) == 1) { - mmap(base, size, - PROT_READ|PROT_WRITE|PROT_EXEC, -- MAP_PRIVATE|MAP_FIXED|MAP_NORESERVE, fd, 0); -+ MAP_PRIVATE|MAP_FIXED, fd, 0); - } - } - ::close(fd); -@@ -2258,7 +2355,7 @@ - return ::mprotect(addr, size, PROT_NONE) == 0; - #else - uintptr_t res = (uintptr_t) ::mmap(addr, size, PROT_NONE, -- MAP_PRIVATE|MAP_FIXED|MAP_NORESERVE|MAP_ANONYMOUS, -1, 0); -+ MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0); - return res != (uintptr_t) MAP_FAILED; - #endif - } -@@ -2285,7 +2382,7 @@ - char * addr; - int flags; - -- flags = MAP_PRIVATE | MAP_NORESERVE | MAP_ANONYMOUS; -+ flags = MAP_PRIVATE | MAP_ANONYMOUS; - if (fixed) { - assert((uintptr_t)requested_addr % os::Bsd::page_size() == 0, "unaligned address"); - flags |= MAP_FIXED; -@@ -2774,6 +2871,7 @@ - return OS_OK; - #elif defined(__FreeBSD__) - int ret = pthread_setprio(thread->osthread()->pthread_id(), newpri); -+ return (ret == 0) ? OS_OK : OS_ERR; - #elif defined(__APPLE__) || defined(__NetBSD__) - struct sched_param sp; - int policy; -@@ -3320,6 +3418,9 @@ - set_signal_handler(SIGBUS, true); - set_signal_handler(SIGILL, true); - set_signal_handler(SIGFPE, true); -+#if defined(PPC64) -+ set_signal_handler(SIGTRAP, true); -+#endif - set_signal_handler(SIGXFSZ, true); - - #if defined(__APPLE__) -@@ -3368,18 +3469,6 @@ - } - } - -- --///// --// glibc on Bsd platform uses non-documented flag --// to indicate, that some special sort of signal --// trampoline is used. --// We will never set this flag, and we should --// ignore this flag in our diagnostic --#ifdef SIGNIFICANT_SIGNAL_MASK --#undef SIGNIFICANT_SIGNAL_MASK --#endif --#define SIGNIFICANT_SIGNAL_MASK (~0x04000000) -- - static const char* get_signal_handler_name(address handler, - char* buf, int buflen) { - int offset; -@@ -3403,9 +3492,6 @@ - - sigaction(sig, NULL, &sa); - -- // See comment for SIGNIFICANT_SIGNAL_MASK define -- sa.sa_flags &= SIGNIFICANT_SIGNAL_MASK; -- - st->print("%s: ", os::exception_name(sig, buf, buflen)); - - address handler = (sa.sa_flags & SA_SIGINFO) -@@ -3427,7 +3513,7 @@ - // May be, handler was resetted by VMError? - if(rh != NULL) { - handler = rh; -- sa.sa_flags = VMError::get_resetted_sigflags(sig) & SIGNIFICANT_SIGNAL_MASK; -+ sa.sa_flags = VMError::get_resetted_sigflags(sig); - } - - st->print(", sa_flags="); -@@ -3469,6 +3555,9 @@ - DO_SIGNAL_CHECK(SIGBUS); - DO_SIGNAL_CHECK(SIGPIPE); - DO_SIGNAL_CHECK(SIGXFSZ); -+#if defined(PPC64) -+ DO_SIGNAL_CHECK(SIGTRAP); -+#endif - - - // ReduceSignalUsage allows the user to override these handlers -@@ -3503,8 +3592,6 @@ - os_sigaction(sig, (struct sigaction*)NULL, &act); - - -- act.sa_flags &= SIGNIFICANT_SIGNAL_MASK; -- - address thisHandler = (act.sa_flags & SA_SIGINFO) - ? CAST_FROM_FN_PTR(address, act.sa_sigaction) - : CAST_FROM_FN_PTR(address, act.sa_handler) ; -@@ -3569,6 +3656,14 @@ - - extern bool signal_name(int signo, char* buf, size_t len); - -+#ifndef SIGRTMAX -+#ifdef __OpenBSD__ -+#define SIGRTMAX 31 -+#else -+#define SIGRTMAX 63 -+#endif -+#endif -+ - const char* os::exception_name(int exception_code, char* buf, size_t size) { - if (0 < exception_code && exception_code <= SIGRTMAX) { - // signal -@@ -3617,6 +3712,25 @@ - Bsd::clock_init(); - initial_time_count = javaTimeNanos(); - -+ // pthread_condattr initialization for monotonic clock -+ int status; -+ pthread_condattr_t* _condattr = os::Bsd::condAttr(); -+ if ((status = pthread_condattr_init(_condattr)) != 0) { -+ fatal(err_msg("pthread_condattr_init: %s", strerror(status))); -+ } -+ // Only set the clock if CLOCK_MONOTONIC is available -+ if (Bsd::supports_monotonic_clock()) { -+ if ((status = pthread_condattr_setclock(_condattr, CLOCK_MONOTONIC)) != 0) { -+ if (status == EINVAL) { -+ warning("Unable to use monotonic clock with relative timed-waits" \ -+ " - changes to the time-of-day clock may have adverse affects"); -+ } else { -+ fatal(err_msg("pthread_condattr_setclock: %s", strerror(status))); -+ } -+ } -+ } -+ // else it defaults to CLOCK_REALTIME -+ - #ifdef __APPLE__ - // XXXDARWIN - // Work around the unaligned VM callbacks in hotspot's -@@ -3775,6 +3889,20 @@ - return ActiveProcessorCount; - } - -+#ifdef __FreeBSD__ -+ int online_cpus = 0; -+ cpuset_t mask; -+ if (cpuset_getaffinity(CPU_LEVEL_WHICH, CPU_WHICH_PID, -1, sizeof(mask), -+ &mask) == 0) -+ for (u_int i = 0; i < sizeof(mask) / sizeof(long); i++) -+ online_cpus += __builtin_popcountl(((long *)&mask)[i]); -+ if (online_cpus > 0 && online_cpus <= _processor_count) -+ return online_cpus; -+ online_cpus = sysconf(_SC_NPROCESSORS_ONLN); -+ if (online_cpus >= 1) -+ return online_cpus; -+#endif -+ - return _processor_count; - } - -@@ -3986,7 +4114,10 @@ - } - int fd; - int o_delete = (oflag & O_DELETE); -- oflag = oflag & ~O_DELETE; -+ oflag &= ~O_DELETE; -+#ifdef O_CLOEXEC -+ oflag |= O_CLOEXEC; -+#endif - - fd = ::open(path, oflag, mode); - if (fd == -1) return -1; -@@ -4031,7 +4162,7 @@ - * 4843136: (process) pipe file descriptor from Runtime.exec not being closed - * 6339493: (process) Runtime.exec does not close all file descriptors on Solaris 9 - */ --#ifdef FD_CLOEXEC -+#if !defined(O_CLOEXEC) && defined(FD_CLOEXEC) - { - int flags = ::fcntl(fd, F_GETFD); - if (flags != -1) -@@ -4171,8 +4302,9 @@ - #ifdef __APPLE__ - return os::thread_cpu_time(Thread::current(), true /* user + sys */); - #else -- Unimplemented(); -- return 0; -+ if (Bsd::_getcpuclockid != NULL) -+ return os::thread_cpu_time(Thread::current(), true /* user + sys */); -+ return -1; - #endif - } - -@@ -4180,8 +4312,9 @@ - #ifdef __APPLE__ - return os::thread_cpu_time(thread, true /* user + sys */); - #else -- Unimplemented(); -- return 0; -+ if (Bsd::_getcpuclockid != NULL) -+ return os::thread_cpu_time(thread, true /* user + sys */); -+ return -1; - #endif - } - -@@ -4189,8 +4322,9 @@ - #ifdef __APPLE__ - return os::thread_cpu_time(Thread::current(), user_sys_cpu_time); - #else -- Unimplemented(); -- return 0; -+ if (Bsd::_getcpuclockid != NULL) -+ return os::thread_cpu_time(Thread::current(), user_sys_cpu_time); -+ return -1; - #endif - } - -@@ -4215,8 +4349,41 @@ - return ((jlong)tinfo.user_time.seconds * 1000000000) + ((jlong)tinfo.user_time.microseconds * (jlong)1000); - } - #else -- Unimplemented(); -- return 0; -+ if (user_sys_cpu_time && Bsd::_getcpuclockid != NULL) { -+ struct timespec tp; -+ clockid_t clockid; -+ int ret; -+ -+ /* -+ * XXX This is essentially a copy of the Linux implementation, -+ * but with fewer indirections. -+ */ -+ ret = Bsd::_getcpuclockid(thread->osthread()->pthread_id(), &clockid); -+ if (ret != 0) -+ return -1; -+ /* NB: _clock_gettime only needs to be valid for CLOCK_MONOTONIC. */ -+ ret = ::clock_gettime(clockid, &tp); -+ if (ret != 0) -+ return -1; -+ return (tp.tv_sec * NANOSECS_PER_SEC) + tp.tv_nsec; -+ } -+#ifdef RUSAGE_THREAD -+ if (thread == Thread::current()) { -+ struct rusage usage; -+ jlong nanos; -+ -+ if (getrusage(RUSAGE_THREAD, &usage) != 0) -+ return -1; -+ nanos = (jlong)usage.ru_utime.tv_sec * NANOSECS_PER_SEC; -+ nanos += (jlong)usage.ru_utime.tv_usec * 1000; -+ if (user_sys_cpu_time) { -+ nanos += (jlong)usage.ru_stime.tv_sec * NANOSECS_PER_SEC; -+ nanos += (jlong)usage.ru_stime.tv_usec * 1000; -+ } -+ return nanos; -+ } -+#endif -+ return -1; - #endif - } - -@@ -4239,7 +4406,7 @@ - #ifdef __APPLE__ - return true; - #else -- return false; -+ return (Bsd::_getcpuclockid != NULL); - #endif - } - -@@ -4337,21 +4504,36 @@ - - static struct timespec* compute_abstime(struct timespec* abstime, jlong millis) { - if (millis < 0) millis = 0; -- struct timeval now; -- int status = gettimeofday(&now, NULL); -- assert(status == 0, "gettimeofday"); -+ - jlong seconds = millis / 1000; - millis %= 1000; - if (seconds > 50000000) { // see man cond_timedwait(3T) - seconds = 50000000; - } -- abstime->tv_sec = now.tv_sec + seconds; -- long usec = now.tv_usec + millis * 1000; -- if (usec >= 1000000) { -- abstime->tv_sec += 1; -- usec -= 1000000; -+ -+ if (os::Bsd::supports_monotonic_clock()) { -+ struct timespec now; -+ int status = ::clock_gettime(CLOCK_MONOTONIC, &now); -+ assert_status(status == 0, status, "clock_gettime"); -+ abstime->tv_sec = now.tv_sec + seconds; -+ long nanos = now.tv_nsec + millis * NANOSECS_PER_MILLISEC; -+ if (nanos >= NANOSECS_PER_SEC) { -+ abstime->tv_sec += 1; -+ nanos -= NANOSECS_PER_SEC; -+ } -+ abstime->tv_nsec = nanos; -+ } else { -+ struct timeval now; -+ int status = gettimeofday(&now, NULL); -+ assert(status == 0, "gettimeofday"); -+ abstime->tv_sec = now.tv_sec + seconds; -+ long usec = now.tv_usec + millis * 1000; -+ if (usec >= 1000000) { -+ abstime->tv_sec += 1; -+ usec -= 1000000; -+ } -+ abstime->tv_nsec = usec * 1000; - } -- abstime->tv_nsec = usec * 1000; - return abstime; - } - -@@ -4443,7 +4625,7 @@ - status = os::Bsd::safe_cond_timedwait(_cond, _mutex, &abst); - if (status != 0 && WorkAroundNPTLTimedWaitHang) { - pthread_cond_destroy (_cond); -- pthread_cond_init (_cond, NULL) ; -+ pthread_cond_init (_cond, os::Bsd::condAttr()) ; - } - assert_status(status == 0 || status == EINTR || - status == ETIMEDOUT, -@@ -4544,32 +4726,50 @@ - - static void unpackTime(struct timespec* absTime, bool isAbsolute, jlong time) { - assert (time > 0, "convertTime"); -- -- struct timeval now; -- int status = gettimeofday(&now, NULL); -- assert(status == 0, "gettimeofday"); -- -- time_t max_secs = now.tv_sec + MAX_SECS; -- -- if (isAbsolute) { -- jlong secs = time / 1000; -- if (secs > max_secs) { -- absTime->tv_sec = max_secs; -+ time_t max_secs = 0; -+ -+ if (!os::Bsd::supports_monotonic_clock() || isAbsolute) { -+ struct timeval now; -+ int status = gettimeofday(&now, NULL); -+ assert(status == 0, "gettimeofday"); -+ -+ max_secs = now.tv_sec + MAX_SECS; -+ -+ if (isAbsolute) { -+ jlong secs = time / 1000; -+ if (secs > max_secs) { -+ absTime->tv_sec = max_secs; -+ } else { -+ absTime->tv_sec = secs; -+ } -+ absTime->tv_nsec = (time % 1000) * NANOSECS_PER_MILLISEC; -+ } else { -+ jlong secs = time / NANOSECS_PER_SEC; -+ if (secs >= MAX_SECS) { -+ absTime->tv_sec = max_secs; -+ absTime->tv_nsec = 0; -+ } else { -+ absTime->tv_sec = now.tv_sec + secs; -+ absTime->tv_nsec = (time % NANOSECS_PER_SEC) + now.tv_usec*1000; -+ if (absTime->tv_nsec >= NANOSECS_PER_SEC) { -+ absTime->tv_nsec -= NANOSECS_PER_SEC; -+ ++absTime->tv_sec; // note: this must be <= max_secs -+ } -+ } - } -- else { -- absTime->tv_sec = secs; -- } -- absTime->tv_nsec = (time % 1000) * NANOSECS_PER_MILLISEC; -- } -- else { -+ } else { -+ // must be relative using monotonic clock -+ struct timespec now; -+ int status = ::clock_gettime(CLOCK_MONOTONIC, &now); -+ assert_status(status == 0, status, "clock_gettime"); -+ max_secs = now.tv_sec + MAX_SECS; - jlong secs = time / NANOSECS_PER_SEC; - if (secs >= MAX_SECS) { - absTime->tv_sec = max_secs; - absTime->tv_nsec = 0; -- } -- else { -+ } else { - absTime->tv_sec = now.tv_sec + secs; -- absTime->tv_nsec = (time % NANOSECS_PER_SEC) + now.tv_usec*1000; -+ absTime->tv_nsec = (time % NANOSECS_PER_SEC) + now.tv_nsec; - if (absTime->tv_nsec >= NANOSECS_PER_SEC) { - absTime->tv_nsec -= NANOSECS_PER_SEC; - ++absTime->tv_sec; // note: this must be <= max_secs -@@ -4649,15 +4849,19 @@ - jt->set_suspend_equivalent(); - // cleared by handle_special_suspend_equivalent_condition() or java_suspend_self() - -+ assert(_cur_index == -1, "invariant"); - if (time == 0) { -- status = pthread_cond_wait (_cond, _mutex) ; -+ _cur_index = REL_INDEX; // arbitrary choice when not timed -+ status = pthread_cond_wait (&_cond[_cur_index], _mutex) ; - } else { -- status = os::Bsd::safe_cond_timedwait (_cond, _mutex, &absTime) ; -+ _cur_index = isAbsolute ? ABS_INDEX : REL_INDEX; -+ status = os::Bsd::safe_cond_timedwait (&_cond[_cur_index], _mutex, &absTime) ; - if (status != 0 && WorkAroundNPTLTimedWaitHang) { -- pthread_cond_destroy (_cond) ; -- pthread_cond_init (_cond, NULL); -+ pthread_cond_destroy (&_cond[_cur_index]) ; -+ pthread_cond_init (&_cond[_cur_index], isAbsolute ? NULL : os::Bsd::condAttr()); - } - } -+ _cur_index = -1; - assert_status(status == 0 || status == EINTR || - status == ETIMEDOUT, - status, "cond_timedwait"); -@@ -4686,17 +4890,26 @@ - s = _counter; - _counter = 1; - if (s < 1) { -- if (WorkAroundNPTLTimedWaitHang) { -- status = pthread_cond_signal (_cond) ; -- assert (status == 0, "invariant") ; -+ // thread might be parked -+ if (_cur_index != -1) { -+ // thread is definitely parked -+ if (WorkAroundNPTLTimedWaitHang) { -+ status = pthread_cond_signal (&_cond[_cur_index]); -+ assert (status == 0, "invariant"); - status = pthread_mutex_unlock(_mutex); -- assert (status == 0, "invariant") ; -- } else { -+ assert (status == 0, "invariant"); -+ } else { -+ // must capture correct index before unlocking -+ int index = _cur_index; - status = pthread_mutex_unlock(_mutex); -- assert (status == 0, "invariant") ; -- status = pthread_cond_signal (_cond) ; -- assert (status == 0, "invariant") ; -- } -+ assert (status == 0, "invariant"); -+ status = pthread_cond_signal (&_cond[index]); -+ assert (status == 0, "invariant"); -+ } -+ } else { -+ pthread_mutex_unlock(_mutex); -+ assert (status == 0, "invariant") ; -+ } - } else { - pthread_mutex_unlock(_mutex); - assert (status == 0, "invariant") ; -@@ -4827,13 +5040,29 @@ - - // Get the default path to the core file - // Returns the length of the string --int os::get_core_path(char* buffer, size_t bufferSize) { -- int n = jio_snprintf(buffer, bufferSize, "/cores"); -- -- // Truncate if theoretical string was longer than bufferSize -- n = MIN2(n, (int)bufferSize); -- -- return n; -+int os::get_core_path(char *buffer, size_t bufferSize) { -+#ifdef __APPLE__ -+ jio_snprintf(buffer, bufferSize, "/cores/core.%d", current_process_id()); -+#else -+ const char *p = get_current_directory(buffer, bufferSize); -+ -+ if (p == NULL) { -+ assert(p != NULL, "failed to get current directory"); -+ return 0; -+ } -+ -+ const char *q = getprogname(); -+ -+ if (q == NULL) { -+ assert(q != NULL, "failed to get progname"); -+ return 0; -+ } -+ -+ const int n = strlen(buffer); -+ -+ jio_snprintf(buffer + n, bufferSize - n, "/%s.core", q); -+#endif -+ return strlen(buffer); - } - - #ifndef PRODUCT ---- ./hotspot/src/os/bsd/vm/os_bsd.hpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/os/bsd/vm/os_bsd.hpp Sun Feb 10 09:26:05 2019 -0800 -@@ -58,12 +58,16 @@ - // For signal flags diagnostics - static int sigflags[MAXSIGNUM]; - -+ static address _initial_thread_stack_bottom; -+ static uintptr_t _initial_thread_stack_size; -+ - #ifdef __APPLE__ - // mach_absolute_time - static mach_timebase_info_data_t _timebase_info; - static volatile uint64_t _max_abstime; - #else - static int (*_clock_gettime)(clockid_t, struct timespec *); -+ static int (*_getcpuclockid)(pthread_t, clockid_t *); - #endif - - static GrowableArray<int>* _cpu_to_node; -@@ -94,6 +98,9 @@ - - static pid_t gettid(); - -+ static address initial_thread_stack_bottom(void) { return _initial_thread_stack_bottom; } -+ static uintptr_t initial_thread_stack_size(void) { return _initial_thread_stack_size; } -+ - static int page_size(void) { return _page_size; } - static void set_page_size(int val) { _page_size = val; } - -@@ -147,6 +154,13 @@ - #endif - } - -+ // pthread_cond clock suppport -+ private: -+ static pthread_condattr_t _condattr[1]; -+ -+ public: -+ static pthread_condattr_t* condAttr() { return _condattr; } -+ - // Stack repair handling - - // none present -@@ -212,7 +226,7 @@ - public: - PlatformEvent() { - int status; -- status = pthread_cond_init (_cond, NULL); -+ status = pthread_cond_init (_cond, os::Bsd::condAttr()); - assert_status(status == 0, status, "cond_init"); - status = pthread_mutex_init (_mutex, NULL); - assert_status(status == 0, status, "mutex_init"); -@@ -227,14 +241,19 @@ - void park () ; - void unpark () ; - int TryPark () ; -- int park (jlong millis) ; -+ int park (jlong millis) ; // relative timed-wait only - void SetAssociation (Thread * a) { _Assoc = a ; } - }; - - class PlatformParker : public CHeapObj<mtInternal> { - protected: -+ enum { -+ REL_INDEX = 0, -+ ABS_INDEX = 1 -+ }; -+ int _cur_index; // which cond is in use: -1, 0, 1 - pthread_mutex_t _mutex [1] ; -- pthread_cond_t _cond [1] ; -+ pthread_cond_t _cond [2] ; // one for relative times and one for abs. - - public: // TODO-FIXME: make dtor private - ~PlatformParker() { guarantee (0, "invariant") ; } -@@ -242,10 +261,13 @@ - public: - PlatformParker() { - int status; -- status = pthread_cond_init (_cond, NULL); -- assert_status(status == 0, status, "cond_init"); -+ status = pthread_cond_init (&_cond[REL_INDEX], os::Bsd::condAttr()); -+ assert_status(status == 0, status, "cond_init rel"); -+ status = pthread_cond_init (&_cond[ABS_INDEX], NULL); -+ assert_status(status == 0, status, "cond_init abs"); - status = pthread_mutex_init (_mutex, NULL); - assert_status(status == 0, status, "mutex_init"); -+ _cur_index = -1; // mark as unused - } - }; - ---- ./hotspot/src/os/bsd/vm/vmError_bsd.cpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/os/bsd/vm/vmError_bsd.cpp Sun Feb 10 09:26:05 2019 -0800 -@@ -33,30 +33,50 @@ - #include <sys/syscall.h> - #include <unistd.h> - #include <signal.h> -+#ifdef __FreeBSD__ -+#include <limits.h> -+#include <sys/sysctl.h> -+#endif -+ -+#define GDB_CMD "gdb" -+ -+static void set_debugger(char *buf, int buflen) { -+ int pid = os::current_process_id(); -+#ifdef __FreeBSD__ -+ char cmd[PATH_MAX+1]; -+ int name[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, pid }; -+ size_t len = sizeof(cmd); -+ if (sysctl(name, 4, cmd, &len, NULL, 0) == 0 && len > 0) { -+ cmd[len] = '\0'; -+ jio_snprintf(buf, buflen, "%s %s %d", GDB_CMD, cmd, pid); -+ } else -+#endif -+ jio_snprintf(buf, buflen, "%s /proc/%d/file %d", GDB_CMD, pid, pid); -+} - - void VMError::show_message_box(char *buf, int buflen) { - bool yes; - do { -- error_string(buf, buflen); -- int len = (int)strlen(buf); -+ intx tid = os::current_thread_id(); -+ set_debugger(buf, buflen); -+ int len = (int)strlen(buf) + 1; -+ char *msg = &buf[len]; -+ error_string(msg, buflen - len); -+ len += (int)strlen(msg); - char *p = &buf[len]; - - jio_snprintf(p, buflen - len, - "\n\n" - "Do you want to debug the problem?\n\n" -- "To debug, run 'gdb /proc/%d/exe %d'; then switch to thread " INTX_FORMAT " (" INTPTR_FORMAT ")\n" -- "Enter 'yes' to launch gdb automatically (PATH must include gdb)\n" -+ "To debug, run '%s'; then switch to thread " INTX_FORMAT " (" INTPTR_FORMAT ")\n" -+ "Enter 'yes' to launch " GDB_CMD " automatically (PATH must include " GDB_CMD ")\n" - "Otherwise, press RETURN to abort...", -- os::current_process_id(), os::current_process_id(), -- os::current_thread_id(), os::current_thread_id()); -+ buf, tid, tid); - -- yes = os::message_box("Unexpected Error", buf); -+ yes = os::message_box("Unexpected Error", msg); - - if (yes) { - // yes, user asked VM to launch debugger -- jio_snprintf(buf, buflen, "gdb /proc/%d/exe %d", -- os::current_process_id(), os::current_process_id()); -- - os::fork_and_exec(buf); - yes = false; - } ---- ./hotspot/src/os/linux/vm/os_linux.cpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/os/linux/vm/os_linux.cpp Sun Feb 10 09:26:05 2019 -0800 -@@ -6435,6 +6435,10 @@ - return 0; - } - -+ const int n = strlen(buffer); -+ -+ jio_snprintf(buffer + n, bufferSize - n, "/core or core.%d", current_process_id()); -+ - return strlen(buffer); - } - ---- ./hotspot/src/os/posix/vm/os_posix.cpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/os/posix/vm/os_posix.cpp Sun Feb 10 09:26:05 2019 -0800 -@@ -53,12 +53,11 @@ - n = get_core_path(buffer, bufferSize); - - if (getrlimit(RLIMIT_CORE, &rlim) != 0) { -- jio_snprintf(buffer + n, bufferSize - n, "/core or core.%d (may not exist)", current_process_id()); -+ jio_snprintf(buffer + n, bufferSize - n, " (may not exist)"); - success = true; - } else { - switch(rlim.rlim_cur) { - case RLIM_INFINITY: -- jio_snprintf(buffer + n, bufferSize - n, "/core or core.%d", current_process_id()); - success = true; - break; - case 0: -@@ -66,7 +65,7 @@ - success = false; - break; - default: -- jio_snprintf(buffer + n, bufferSize - n, "/core or core.%d (max size %lu kB). To ensure a full core dump, try \"ulimit -c unlimited\" before starting Java again", current_process_id(), (unsigned long)(rlim.rlim_cur >> 10)); -+ jio_snprintf(buffer + n, bufferSize - n, " (max size %lu kB). To ensure a full core dump, try \"ulimit -c unlimited\" before starting Java again", (unsigned long)(rlim.rlim_cur >> 10)); - success = true; - break; - } -@@ -211,8 +210,13 @@ - if (rlim.rlim_cur == RLIM_INFINITY) st->print("infinity"); - else st->print("%d", rlim.rlim_cur); - -+#ifdef __OpenBSD__ -+ st->print(", DATA "); -+ getrlimit(RLIMIT_DATA, &rlim); -+#else - st->print(", AS "); - getrlimit(RLIMIT_AS, &rlim); -+#endif - if (rlim.rlim_cur == RLIM_INFINITY) st->print("infinity"); - else st->print("%uk", rlim.rlim_cur >> 10); - st->cr(); -@@ -232,7 +236,11 @@ - - bool os::has_allocatable_memory_limit(julong* limit) { - struct rlimit rlim; -+#ifdef __OpenBSD__ -+ int getrlimit_res = getrlimit(RLIMIT_DATA, &rlim); -+#else - int getrlimit_res = getrlimit(RLIMIT_AS, &rlim); -+#endif - // if there was an error when calling getrlimit, assume that there is no limitation - // on virtual memory. - bool result; -@@ -731,8 +739,12 @@ - { SI_USER, "SI_USER", "Signal sent by kill()." }, - { SI_QUEUE, "SI_QUEUE", "Signal sent by the sigqueue()." }, - { SI_TIMER, "SI_TIMER", "Signal generated by expiration of a timer set by timer_settime()." }, -+#ifdef SI_ASYNCIO - { SI_ASYNCIO, "SI_ASYNCIO", "Signal generated by completion of an asynchronous I/O request." }, -+#endif -+#ifdef SI_MESGQ - { SI_MESGQ, "SI_MESGQ", "Signal generated by arrival of a message on an empty message queue." }, -+#endif - // Linux specific - #ifdef SI_TKILL - { SI_TKILL, "SI_TKILL", "Signal sent by tkill (pthread_kill)" }, ---- ./hotspot/src/os/solaris/vm/os_solaris.cpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/os/solaris/vm/os_solaris.cpp Sun Feb 10 09:26:05 2019 -0800 -@@ -6386,6 +6386,10 @@ - return 0; - } - -+ const int n = strlen(buffer); -+ -+ jio_snprintf(buffer + n, bufferSize - n, "/core or core.%d", current_process_id()); -+ - return strlen(buffer); - } - ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./hotspot/src/os_cpu/bsd_ppc/vm/atomic_bsd_ppc.inline.hpp Sun Feb 10 09:26:05 2019 -0800 -@@ -0,0 +1,400 @@ -+/* -+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -+ * Copyright 2012, 2013 SAP AG. All rights reserved. -+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -+ * -+ * This code is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 only, as -+ * published by the Free Software Foundation. -+ * -+ * This code is distributed in the hope that it will be useful, but WITHOUT -+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+ * version 2 for more details (a copy is included in the LICENSE file that -+ * accompanied this code). -+ * -+ * You should have received a copy of the GNU General Public License version -+ * 2 along with this work; if not, write to the Free Software Foundation, -+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -+ * or visit www.oracle.com if you need additional information or have any -+ * questions. -+ * -+ */ -+ -+#ifndef OS_CPU_BSD_PPC_VM_ATOMIC_BSD_PPC_INLINE_HPP -+#define OS_CPU_BSD_PPC_VM_ATOMIC_BSD_PPC_INLINE_HPP -+ -+#include "runtime/atomic.hpp" -+#include "runtime/os.hpp" -+#include "vm_version_ppc.hpp" -+ -+#ifndef PPC64 -+#error "Atomic currently only implemented for PPC64" -+#endif -+ -+// Implementation of class atomic -+ -+inline void Atomic::store (jbyte store_value, jbyte* dest) { *dest = store_value; } -+inline void Atomic::store (jshort store_value, jshort* dest) { *dest = store_value; } -+inline void Atomic::store (jint store_value, jint* dest) { *dest = store_value; } -+inline void Atomic::store (jlong store_value, jlong* dest) { *dest = store_value; } -+inline void Atomic::store_ptr(intptr_t store_value, intptr_t* dest) { *dest = store_value; } -+inline void Atomic::store_ptr(void* store_value, void* dest) { *(void**)dest = store_value; } -+ -+inline void Atomic::store (jbyte store_value, volatile jbyte* dest) { *dest = store_value; } -+inline void Atomic::store (jshort store_value, volatile jshort* dest) { *dest = store_value; } -+inline void Atomic::store (jint store_value, volatile jint* dest) { *dest = store_value; } -+inline void Atomic::store (jlong store_value, volatile jlong* dest) { *dest = store_value; } -+inline void Atomic::store_ptr(intptr_t store_value, volatile intptr_t* dest) { *dest = store_value; } -+inline void Atomic::store_ptr(void* store_value, volatile void* dest) { *(void* volatile *)dest = store_value; } -+ -+inline jlong Atomic::load(volatile jlong* src) { return *src; } -+ -+// -+// machine barrier instructions: -+// -+// - sync two-way memory barrier, aka fence -+// - lwsync orders Store|Store, -+// Load|Store, -+// Load|Load, -+// but not Store|Load -+// - eieio orders memory accesses for device memory (only) -+// - isync invalidates speculatively executed instructions -+// From the POWER ISA 2.06 documentation: -+// "[...] an isync instruction prevents the execution of -+// instructions following the isync until instructions -+// preceding the isync have completed, [...]" -+// From IBM's AIX assembler reference: -+// "The isync [...] instructions causes the processor to -+// refetch any instructions that might have been fetched -+// prior to the isync instruction. The instruction isync -+// causes the processor to wait for all previous instructions -+// to complete. Then any instructions already fetched are -+// discarded and instruction processing continues in the -+// environment established by the previous instructions." -+// -+// semantic barrier instructions: -+// (as defined in orderAccess.hpp) -+// -+// - release orders Store|Store, (maps to lwsync) -+// Load|Store -+// - acquire orders Load|Store, (maps to lwsync) -+// Load|Load -+// - fence orders Store|Store, (maps to sync) -+// Load|Store, -+// Load|Load, -+// Store|Load -+// -+ -+#define strasm_sync "\n sync \n" -+#define strasm_lwsync "\n lwsync \n" -+#define strasm_isync "\n isync \n" -+#define strasm_release strasm_lwsync -+#define strasm_acquire strasm_lwsync -+#define strasm_fence strasm_sync -+#define strasm_nobarrier "" -+#define strasm_nobarrier_clobber_memory "" -+ -+inline jint Atomic::add (jint add_value, volatile jint* dest) { -+ -+ unsigned int result; -+ -+ __asm__ __volatile__ ( -+ strasm_lwsync -+ "1: lwarx %0, 0, %2 \n" -+ " add %0, %0, %1 \n" -+ " stwcx. %0, 0, %2 \n" -+ " bne- 1b \n" -+ strasm_isync -+ : /*%0*/"=&r" (result) -+ : /*%1*/"r" (add_value), /*%2*/"r" (dest) -+ : "cc", "memory" ); -+ -+ return (jint) result; -+} -+ -+ -+inline intptr_t Atomic::add_ptr(intptr_t add_value, volatile intptr_t* dest) { -+ -+ long result; -+ -+ __asm__ __volatile__ ( -+ strasm_lwsync -+ "1: ldarx %0, 0, %2 \n" -+ " add %0, %0, %1 \n" -+ " stdcx. %0, 0, %2 \n" -+ " bne- 1b \n" -+ strasm_isync -+ : /*%0*/"=&r" (result) -+ : /*%1*/"r" (add_value), /*%2*/"r" (dest) -+ : "cc", "memory" ); -+ -+ return (intptr_t) result; -+} -+ -+inline void* Atomic::add_ptr(intptr_t add_value, volatile void* dest) { -+ return (void*)add_ptr(add_value, (volatile intptr_t*)dest); -+} -+ -+ -+inline void Atomic::inc (volatile jint* dest) { -+ -+ unsigned int temp; -+ -+ __asm__ __volatile__ ( -+ strasm_nobarrier -+ "1: lwarx %0, 0, %2 \n" -+ " addic %0, %0, 1 \n" -+ " stwcx. %0, 0, %2 \n" -+ " bne- 1b \n" -+ strasm_nobarrier -+ : /*%0*/"=&r" (temp), "=m" (*dest) -+ : /*%2*/"r" (dest), "m" (*dest) -+ : "cc" strasm_nobarrier_clobber_memory); -+ -+} -+ -+inline void Atomic::inc_ptr(volatile intptr_t* dest) { -+ -+ long temp; -+ -+ __asm__ __volatile__ ( -+ strasm_nobarrier -+ "1: ldarx %0, 0, %2 \n" -+ " addic %0, %0, 1 \n" -+ " stdcx. %0, 0, %2 \n" -+ " bne- 1b \n" -+ strasm_nobarrier -+ : /*%0*/"=&r" (temp), "=m" (*dest) -+ : /*%2*/"r" (dest), "m" (*dest) -+ : "cc" strasm_nobarrier_clobber_memory); -+ -+} -+ -+inline void Atomic::inc_ptr(volatile void* dest) { -+ inc_ptr((volatile intptr_t*)dest); -+} -+ -+ -+inline void Atomic::dec (volatile jint* dest) { -+ -+ unsigned int temp; -+ -+ __asm__ __volatile__ ( -+ strasm_nobarrier -+ "1: lwarx %0, 0, %2 \n" -+ " addic %0, %0, -1 \n" -+ " stwcx. %0, 0, %2 \n" -+ " bne- 1b \n" -+ strasm_nobarrier -+ : /*%0*/"=&r" (temp), "=m" (*dest) -+ : /*%2*/"r" (dest), "m" (*dest) -+ : "cc" strasm_nobarrier_clobber_memory); -+ -+} -+ -+inline void Atomic::dec_ptr(volatile intptr_t* dest) { -+ -+ long temp; -+ -+ __asm__ __volatile__ ( -+ strasm_nobarrier -+ "1: ldarx %0, 0, %2 \n" -+ " addic %0, %0, -1 \n" -+ " stdcx. %0, 0, %2 \n" -+ " bne- 1b \n" -+ strasm_nobarrier -+ : /*%0*/"=&r" (temp), "=m" (*dest) -+ : /*%2*/"r" (dest), "m" (*dest) -+ : "cc" strasm_nobarrier_clobber_memory); -+ -+} -+ -+inline void Atomic::dec_ptr(volatile void* dest) { -+ dec_ptr((volatile intptr_t*)dest); -+} -+ -+inline jint Atomic::xchg(jint exchange_value, volatile jint* dest) { -+ -+ // Note that xchg_ptr doesn't necessarily do an acquire -+ // (see synchronizer.cpp). -+ -+ unsigned int old_value; -+ const uint64_t zero = 0; -+ -+ __asm__ __volatile__ ( -+ /* lwsync */ -+ strasm_lwsync -+ /* atomic loop */ -+ "1: \n" -+ " lwarx %[old_value], %[dest], %[zero] \n" -+ " stwcx. %[exchange_value], %[dest], %[zero] \n" -+ " bne- 1b \n" -+ /* isync */ -+ strasm_sync -+ /* exit */ -+ "2: \n" -+ /* out */ -+ : [old_value] "=&r" (old_value), -+ "=m" (*dest) -+ /* in */ -+ : [dest] "b" (dest), -+ [zero] "r" (zero), -+ [exchange_value] "r" (exchange_value), -+ "m" (*dest) -+ /* clobber */ -+ : "cc", -+ "memory" -+ ); -+ -+ return (jint) old_value; -+} -+ -+inline intptr_t Atomic::xchg_ptr(intptr_t exchange_value, volatile intptr_t* dest) { -+ -+ // Note that xchg_ptr doesn't necessarily do an acquire -+ // (see synchronizer.cpp). -+ -+ long old_value; -+ const uint64_t zero = 0; -+ -+ __asm__ __volatile__ ( -+ /* lwsync */ -+ strasm_lwsync -+ /* atomic loop */ -+ "1: \n" -+ " ldarx %[old_value], %[dest], %[zero] \n" -+ " stdcx. %[exchange_value], %[dest], %[zero] \n" -+ " bne- 1b \n" -+ /* isync */ -+ strasm_sync -+ /* exit */ -+ "2: \n" -+ /* out */ -+ : [old_value] "=&r" (old_value), -+ "=m" (*dest) -+ /* in */ -+ : [dest] "b" (dest), -+ [zero] "r" (zero), -+ [exchange_value] "r" (exchange_value), -+ "m" (*dest) -+ /* clobber */ -+ : "cc", -+ "memory" -+ ); -+ -+ return (intptr_t) old_value; -+} -+ -+inline void* Atomic::xchg_ptr(void* exchange_value, volatile void* dest) { -+ return (void*)xchg_ptr((intptr_t)exchange_value, (volatile intptr_t*)dest); -+} -+ -+inline jint Atomic::cmpxchg(jint exchange_value, volatile jint* dest, jint compare_value) { -+ -+ // Note that cmpxchg guarantees a two-way memory barrier across -+ // the cmpxchg, so it's really a a 'fence_cmpxchg_acquire' -+ // (see atomic.hpp). -+ -+ unsigned int old_value; -+ const uint64_t zero = 0; -+ -+ __asm__ __volatile__ ( -+ /* fence */ -+ strasm_sync -+ /* simple guard */ -+ " lwz %[old_value], 0(%[dest]) \n" -+ " cmpw %[compare_value], %[old_value] \n" -+ " bne- 2f \n" -+ /* atomic loop */ -+ "1: \n" -+ " lwarx %[old_value], %[dest], %[zero] \n" -+ " cmpw %[compare_value], %[old_value] \n" -+ " bne- 2f \n" -+ " stwcx. %[exchange_value], %[dest], %[zero] \n" -+ " bne- 1b \n" -+ /* acquire */ -+ strasm_sync -+ /* exit */ -+ "2: \n" -+ /* out */ -+ : [old_value] "=&r" (old_value), -+ "=m" (*dest) -+ /* in */ -+ : [dest] "b" (dest), -+ [zero] "r" (zero), -+ [compare_value] "r" (compare_value), -+ [exchange_value] "r" (exchange_value), -+ "m" (*dest) -+ /* clobber */ -+ : "cc", -+ "memory" -+ ); -+ -+ return (jint) old_value; -+} -+ -+inline jlong Atomic::cmpxchg(jlong exchange_value, volatile jlong* dest, jlong compare_value) { -+ -+ // Note that cmpxchg guarantees a two-way memory barrier across -+ // the cmpxchg, so it's really a a 'fence_cmpxchg_acquire' -+ // (see atomic.hpp). -+ -+ long old_value; -+ const uint64_t zero = 0; -+ -+ __asm__ __volatile__ ( -+ /* fence */ -+ strasm_sync -+ /* simple guard */ -+ " ld %[old_value], 0(%[dest]) \n" -+ " cmpd %[compare_value], %[old_value] \n" -+ " bne- 2f \n" -+ /* atomic loop */ -+ "1: \n" -+ " ldarx %[old_value], %[dest], %[zero] \n" -+ " cmpd %[compare_value], %[old_value] \n" -+ " bne- 2f \n" -+ " stdcx. %[exchange_value], %[dest], %[zero] \n" -+ " bne- 1b \n" -+ /* acquire */ -+ strasm_sync -+ /* exit */ -+ "2: \n" -+ /* out */ -+ : [old_value] "=&r" (old_value), -+ "=m" (*dest) -+ /* in */ -+ : [dest] "b" (dest), -+ [zero] "r" (zero), -+ [compare_value] "r" (compare_value), -+ [exchange_value] "r" (exchange_value), -+ "m" (*dest) -+ /* clobber */ -+ : "cc", -+ "memory" -+ ); -+ -+ return (jlong) old_value; -+} -+ -+inline intptr_t Atomic::cmpxchg_ptr(intptr_t exchange_value, volatile intptr_t* dest, intptr_t compare_value) { -+ return (intptr_t)cmpxchg((jlong)exchange_value, (volatile jlong*)dest, (jlong)compare_value); -+} -+ -+inline void* Atomic::cmpxchg_ptr(void* exchange_value, volatile void* dest, void* compare_value) { -+ return (void*)cmpxchg((jlong)exchange_value, (volatile jlong*)dest, (jlong)compare_value); -+} -+ -+#undef strasm_sync -+#undef strasm_lwsync -+#undef strasm_isync -+#undef strasm_release -+#undef strasm_acquire -+#undef strasm_fence -+#undef strasm_nobarrier -+#undef strasm_nobarrier_clobber_memory -+ -+#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 Sun Feb 10 09:26:05 2019 -0800 -@@ -0,0 +1,39 @@ -+/* -+ * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. -+ * Copyright 2014 Google Inc. All rights reserved. -+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -+ * -+ * This code is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 only, as -+ * published by the Free Software Foundation. -+ * -+ * This code is distributed in the hope that it will be useful, but WITHOUT -+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+ * version 2 for more details (a copy is included in the LICENSE file that -+ * accompanied this code). -+ * -+ * You should have received a copy of the GNU General Public License version -+ * 2 along with this work; if not, write to the Free Software Foundation, -+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -+ * or visit www.oracle.com if you need additional information or have any -+ * questions. -+ * -+ */ -+ -+#ifndef OS_CPU_BSD_PPC_VM_BYTES_BSD_PPC_INLINE_HPP -+#define OS_CPU_BSD_PPC_VM_BYTES_BSD_PPC_INLINE_HPP -+ -+#if defined(VM_LITTLE_ENDIAN) -+#include <byteswap.h> -+ -+// Efficient swapping of data bytes from Java byte -+// ordering to native byte ordering and vice versa. -+inline u2 Bytes::swap_u2(u2 x) { return bswap_16(x); } -+inline u4 Bytes::swap_u4(u4 x) { return bswap_32(x); } -+inline u8 Bytes::swap_u8(u8 x) { return bswap_64(x); } -+#endif // VM_LITTLE_ENDIAN -+ -+#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 Sun Feb 10 09:26:05 2019 -0800 -@@ -0,0 +1,54 @@ -+/* -+ * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. -+ * Copyright 2012, 2013 SAP AG. All rights reserved. -+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -+ * -+ * This code is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 only, as -+ * published by the Free Software Foundation. -+ * -+ * This code is distributed in the hope that it will be useful, but WITHOUT -+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+ * version 2 for more details (a copy is included in the LICENSE file that -+ * accompanied this code). -+ * -+ * You should have received a copy of the GNU General Public License version -+ * 2 along with this work; if not, write to the Free Software Foundation, -+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -+ * or visit www.oracle.com if you need additional information or have any -+ * questions. -+ * -+ */ -+ -+#ifndef OS_CPU_BSD_PPC_VM_GLOBALS_BSD_PPC_HPP -+#define OS_CPU_BSD_PPC_VM_GLOBALS_BSD_PPC_HPP -+ -+// Sets the default values for platform dependent flags used by the runtime system. -+// (see globals.hpp) -+ -+define_pd_global(bool, DontYieldALot, false); -+define_pd_global(intx, ThreadStackSize, 2048); // 0 => use system default -+define_pd_global(intx, VMThreadStackSize, 2048); -+ -+// if we set CompilerThreadStackSize to a value different than 0, it will -+// be used in os::create_thread(). Otherwise, due the strange logic in os::create_thread(), -+// the stack size for compiler threads will default to VMThreadStackSize, although it -+// is defined to 4M in os::Bsd::default_stack_size()! -+define_pd_global(intx, CompilerThreadStackSize, 4096); -+ -+// Allow extra space in DEBUG builds for asserts. -+define_pd_global(uintx,JVMInvokeMethodSlack, 8192); -+ -+define_pd_global(intx, StackYellowPages, 6); -+define_pd_global(intx, StackRedPages, 1); -+define_pd_global(intx, StackShadowPages, 6 DEBUG_ONLY(+2)); -+ -+// Only used on 64 bit platforms -+define_pd_global(uintx,HeapBaseMinAddress, 2*G); -+// Only used on 64 bit Windows platforms -+define_pd_global(bool, UseVectoredExceptions, false); -+ -+#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 Sun Feb 10 09:26:05 2019 -0800 -@@ -0,0 +1,149 @@ -+/* -+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -+ * Copyright 2012, 2013 SAP AG. All rights reserved. -+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -+ * -+ * This code is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 only, as -+ * published by the Free Software Foundation. -+ * -+ * This code is distributed in the hope that it will be useful, but WITHOUT -+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+ * version 2 for more details (a copy is included in the LICENSE file that -+ * accompanied this code). -+ * -+ * You should have received a copy of the GNU General Public License version -+ * 2 along with this work; if not, write to the Free Software Foundation, -+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -+ * or visit www.oracle.com if you need additional information or have any -+ * questions. -+ * -+ */ -+ -+#ifndef OS_CPU_BSD_PPC_VM_ORDERACCESS_BSD_PPC_INLINE_HPP -+#define OS_CPU_BSD_PPC_VM_ORDERACCESS_BSD_PPC_INLINE_HPP -+ -+#include "runtime/orderAccess.hpp" -+#include "vm_version_ppc.hpp" -+ -+#ifndef PPC64 -+#error "OrderAccess currently only implemented for PPC64" -+#endif -+ -+// Implementation of class OrderAccess. -+ -+// -+// Machine barrier instructions: -+// -+// - sync Two-way memory barrier, aka fence. -+// - lwsync orders Store|Store, -+// Load|Store, -+// Load|Load, -+// but not Store|Load -+// - eieio orders Store|Store -+// - isync Invalidates speculatively executed instructions, -+// but isync may complete before storage accesses -+// associated with instructions preceding isync have -+// been performed. -+// -+// Semantic barrier instructions: -+// (as defined in orderAccess.hpp) -+// -+// - release orders Store|Store, (maps to lwsync) -+// Load|Store -+// - acquire orders Load|Store, (maps to lwsync) -+// Load|Load -+// - fence orders Store|Store, (maps to sync) -+// Load|Store, -+// Load|Load, -+// Store|Load -+// -+ -+#define inlasm_sync() __asm__ __volatile__ ("sync" : : : "memory"); -+#define inlasm_lwsync() __asm__ __volatile__ ("lwsync" : : : "memory"); -+#define inlasm_eieio() __asm__ __volatile__ ("eieio" : : : "memory"); -+#define inlasm_isync() __asm__ __volatile__ ("isync" : : : "memory"); -+#define inlasm_release() inlasm_lwsync(); -+#define inlasm_acquire() inlasm_lwsync(); -+// Use twi-isync for load_acquire (faster than lwsync). -+#define inlasm_acquire_reg(X) __asm__ __volatile__ ("twi 0,%0,0\n isync\n" : : "r" (X) : "memory"); -+#define inlasm_fence() inlasm_sync(); -+ -+inline void OrderAccess::loadload() { inlasm_lwsync(); } -+inline void OrderAccess::storestore() { inlasm_lwsync(); } -+inline void OrderAccess::loadstore() { inlasm_lwsync(); } -+inline void OrderAccess::storeload() { inlasm_fence(); } -+ -+inline void OrderAccess::acquire() { inlasm_acquire(); } -+inline void OrderAccess::release() { inlasm_release(); } -+inline void OrderAccess::fence() { inlasm_fence(); } -+ -+inline jbyte OrderAccess::load_acquire(volatile jbyte* p) { register jbyte t = *p; inlasm_acquire_reg(t); return t; } -+inline jshort OrderAccess::load_acquire(volatile jshort* p) { register jshort t = *p; inlasm_acquire_reg(t); return t; } -+inline jint OrderAccess::load_acquire(volatile jint* p) { register jint t = *p; inlasm_acquire_reg(t); return t; } -+inline jlong OrderAccess::load_acquire(volatile jlong* p) { register jlong t = *p; inlasm_acquire_reg(t); return t; } -+inline jubyte OrderAccess::load_acquire(volatile jubyte* p) { register jubyte t = *p; inlasm_acquire_reg(t); return t; } -+inline jushort OrderAccess::load_acquire(volatile jushort* p) { register jushort t = *p; inlasm_acquire_reg(t); return t; } -+inline juint OrderAccess::load_acquire(volatile juint* p) { register juint t = *p; inlasm_acquire_reg(t); return t; } -+inline julong OrderAccess::load_acquire(volatile julong* p) { return (julong)load_acquire((volatile jlong*)p); } -+inline jfloat OrderAccess::load_acquire(volatile jfloat* p) { register jfloat t = *p; inlasm_acquire(); return t; } -+inline jdouble OrderAccess::load_acquire(volatile jdouble* p) { register jdouble t = *p; inlasm_acquire(); return t; } -+ -+inline intptr_t OrderAccess::load_ptr_acquire(volatile intptr_t* p) { return (intptr_t)load_acquire((volatile jlong*)p); } -+inline void* OrderAccess::load_ptr_acquire(volatile void* p) { return (void*) load_acquire((volatile jlong*)p); } -+inline void* OrderAccess::load_ptr_acquire(const volatile void* p) { return (void*) load_acquire((volatile jlong*)p); } -+ -+inline void OrderAccess::release_store(volatile jbyte* p, jbyte v) { inlasm_release(); *p = v; } -+inline void OrderAccess::release_store(volatile jshort* p, jshort v) { inlasm_release(); *p = v; } -+inline void OrderAccess::release_store(volatile jint* p, jint v) { inlasm_release(); *p = v; } -+inline void OrderAccess::release_store(volatile jlong* p, jlong v) { inlasm_release(); *p = v; } -+inline void OrderAccess::release_store(volatile jubyte* p, jubyte v) { inlasm_release(); *p = v; } -+inline void OrderAccess::release_store(volatile jushort* p, jushort v) { inlasm_release(); *p = v; } -+inline void OrderAccess::release_store(volatile juint* p, juint v) { inlasm_release(); *p = v; } -+inline void OrderAccess::release_store(volatile julong* p, julong v) { inlasm_release(); *p = v; } -+inline void OrderAccess::release_store(volatile jfloat* p, jfloat v) { inlasm_release(); *p = v; } -+inline void OrderAccess::release_store(volatile jdouble* p, jdouble v) { inlasm_release(); *p = v; } -+ -+inline void OrderAccess::release_store_ptr(volatile intptr_t* p, intptr_t v) { inlasm_release(); *p = v; } -+inline void OrderAccess::release_store_ptr(volatile void* p, void* v) { inlasm_release(); *(void* volatile *)p = v; } -+ -+inline void OrderAccess::store_fence(jbyte* p, jbyte v) { *p = v; inlasm_fence(); } -+inline void OrderAccess::store_fence(jshort* p, jshort v) { *p = v; inlasm_fence(); } -+inline void OrderAccess::store_fence(jint* p, jint v) { *p = v; inlasm_fence(); } -+inline void OrderAccess::store_fence(jlong* p, jlong v) { *p = v; inlasm_fence(); } -+inline void OrderAccess::store_fence(jubyte* p, jubyte v) { *p = v; inlasm_fence(); } -+inline void OrderAccess::store_fence(jushort* p, jushort v) { *p = v; inlasm_fence(); } -+inline void OrderAccess::store_fence(juint* p, juint v) { *p = v; inlasm_fence(); } -+inline void OrderAccess::store_fence(julong* p, julong v) { *p = v; inlasm_fence(); } -+inline void OrderAccess::store_fence(jfloat* p, jfloat v) { *p = v; inlasm_fence(); } -+inline void OrderAccess::store_fence(jdouble* p, jdouble v) { *p = v; inlasm_fence(); } -+ -+inline void OrderAccess::store_ptr_fence(intptr_t* p, intptr_t v) { *p = v; inlasm_fence(); } -+inline void OrderAccess::store_ptr_fence(void** p, void* v) { *p = v; inlasm_fence(); } -+ -+inline void OrderAccess::release_store_fence(volatile jbyte* p, jbyte v) { inlasm_release(); *p = v; inlasm_fence(); } -+inline void OrderAccess::release_store_fence(volatile jshort* p, jshort v) { inlasm_release(); *p = v; inlasm_fence(); } -+inline void OrderAccess::release_store_fence(volatile jint* p, jint v) { inlasm_release(); *p = v; inlasm_fence(); } -+inline void OrderAccess::release_store_fence(volatile jlong* p, jlong v) { inlasm_release(); *p = v; inlasm_fence(); } -+inline void OrderAccess::release_store_fence(volatile jubyte* p, jubyte v) { inlasm_release(); *p = v; inlasm_fence(); } -+inline void OrderAccess::release_store_fence(volatile jushort* p, jushort v) { inlasm_release(); *p = v; inlasm_fence(); } -+inline void OrderAccess::release_store_fence(volatile juint* p, juint v) { inlasm_release(); *p = v; inlasm_fence(); } -+inline void OrderAccess::release_store_fence(volatile julong* p, julong v) { inlasm_release(); *p = v; inlasm_fence(); } -+inline void OrderAccess::release_store_fence(volatile jfloat* p, jfloat v) { inlasm_release(); *p = v; inlasm_fence(); } -+inline void OrderAccess::release_store_fence(volatile jdouble* p, jdouble v) { inlasm_release(); *p = v; inlasm_fence(); } -+ -+inline void OrderAccess::release_store_ptr_fence(volatile intptr_t* p, intptr_t v) { inlasm_release(); *p = v; inlasm_fence(); } -+inline void OrderAccess::release_store_ptr_fence(volatile void* p, void* v) { inlasm_release(); *(void* volatile *)p = v; inlasm_fence(); } -+ -+#undef inlasm_sync -+#undef inlasm_lwsync -+#undef inlasm_eieio -+#undef inlasm_isync -+#undef inlasm_release -+#undef inlasm_acquire -+#undef inlasm_fence -+ -+#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 Sun Feb 10 09:26:05 2019 -0800 -@@ -0,0 +1,666 @@ -+/* -+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. -+ * Copyright 2007, 2008, 2009, 2010 Red Hat, Inc. -+ * 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. -+ * -+ */ -+ -+// no precompiled headers -+#include "assembler_ppc.inline.hpp" -+#include "classfile/classLoader.hpp" -+#include "classfile/systemDictionary.hpp" -+#include "classfile/vmSymbols.hpp" -+#include "code/icBuffer.hpp" -+#include "code/vtableStubs.hpp" -+#include "interpreter/interpreter.hpp" -+#include "jvm_bsd.h" -+#include "memory/allocation.inline.hpp" -+#include "mutex_bsd.inline.hpp" -+#include "nativeInst_ppc.hpp" -+#include "os_share_bsd.hpp" -+#include "prims/jniFastGetField.hpp" -+#include "prims/jvm.h" -+#include "prims/jvm_misc.hpp" -+#include "runtime/arguments.hpp" -+#include "runtime/extendedPC.hpp" -+#include "runtime/frame.inline.hpp" -+#include "runtime/interfaceSupport.hpp" -+#include "runtime/java.hpp" -+#include "runtime/javaCalls.hpp" -+#include "runtime/mutexLocker.hpp" -+#include "runtime/osThread.hpp" -+#include "runtime/sharedRuntime.hpp" -+#include "runtime/stubRoutines.hpp" -+#include "runtime/thread.inline.hpp" -+#include "runtime/timer.hpp" -+#include "utilities/events.hpp" -+#include "utilities/vmError.hpp" -+#ifdef COMPILER1 -+#include "c1/c1_Runtime1.hpp" -+#endif -+#ifdef COMPILER2 -+#include "opto/runtime.hpp" -+#endif -+ -+// put OS-includes here -+# include <sys/types.h> -+# include <sys/mman.h> -+# include <pthread.h> -+# include <signal.h> -+# include <errno.h> -+# include <dlfcn.h> -+# include <stdlib.h> -+# include <stdio.h> -+# include <unistd.h> -+# include <sys/resource.h> -+# include <pthread_np.h> -+# include <sys/stat.h> -+# include <sys/time.h> -+# include <sys/utsname.h> -+# include <sys/socket.h> -+# include <sys/wait.h> -+# include <pwd.h> -+# include <poll.h> -+# include <ucontext.h> -+ -+ -+address os::current_stack_pointer() { -+ intptr_t* csp; -+ -+ // inline assembly `mr regno(csp), R1_SP': -+ __asm__ __volatile__ ("mr %0, 1":"=r"(csp):); -+ -+ return (address) csp; -+} -+ -+char* os::non_memory_address_word() { -+ // Must never look like an address returned by reserve_memory, -+ // even in its subfields (as defined by the CPU immediate fields, -+ // if the CPU splits constants across multiple instructions). -+ -+ return (char*) -1; -+} -+ -+void os::initialize_thread(Thread *thread) { } -+ -+address os::Bsd::ucontext_get_pc(ucontext_t * uc) { -+ guarantee(uc->uc_mcontext.mc_gpr != NULL, "only use ucontext_get_pc in sigaction context"); -+ return (address)uc->uc_mcontext.mc_srr0; -+} -+ -+intptr_t* os::Bsd::ucontext_get_sp(ucontext_t * uc) { -+ return (intptr_t*)uc->uc_mcontext.mc_gpr[1/*REG_SP*/]; -+} -+ -+intptr_t* os::Bsd::ucontext_get_fp(ucontext_t * uc) { -+ return NULL; -+} -+ -+ExtendedPC os::fetch_frame_from_context(void* ucVoid, -+ intptr_t** ret_sp, intptr_t** ret_fp) { -+ -+ ExtendedPC epc; -+ ucontext_t* uc = (ucontext_t*)ucVoid; -+ -+ if (uc != NULL) { -+ epc = ExtendedPC(os::Bsd::ucontext_get_pc(uc)); -+ if (ret_sp) *ret_sp = os::Bsd::ucontext_get_sp(uc); -+ if (ret_fp) *ret_fp = os::Bsd::ucontext_get_fp(uc); -+ } else { -+ // construct empty ExtendedPC for return value checking -+ epc = ExtendedPC(NULL); -+ if (ret_sp) *ret_sp = (intptr_t *)NULL; -+ if (ret_fp) *ret_fp = (intptr_t *)NULL; -+ } -+ -+ return epc; -+} -+ -+frame os::fetch_frame_from_context(void* ucVoid) { -+ intptr_t* sp; -+ intptr_t* fp; -+ ExtendedPC epc = fetch_frame_from_context(ucVoid, &sp, &fp); -+ return frame(sp, epc.pc()); -+} -+ -+frame os::get_sender_for_C_frame(frame* fr) { -+ if (*fr->sp() == 0) { -+ // fr is the last C frame -+ return frame(NULL, NULL); -+ } -+ return frame(fr->sender_sp(), fr->sender_pc()); -+} -+ -+ -+frame os::current_frame() { -+ intptr_t* csp = (intptr_t*) *((intptr_t*) os::current_stack_pointer()); -+ // hack. -+ frame topframe(csp, (address)0x8); -+ // return sender of current topframe which hopefully has pc != NULL. -+ return os::get_sender_for_C_frame(&topframe); -+} -+ -+// Utility functions -+ -+extern "C" JNIEXPORT int -+JVM_handle_bsd_signal(int sig, siginfo_t* info, void* ucVoid, int abort_if_unrecognized) { -+ -+ ucontext_t* uc = (ucontext_t*) ucVoid; -+ -+ Thread* t = ThreadLocalStorage::get_thread_slow(); // slow & steady -+ -+ SignalHandlerMark shm(t); -+ -+ // Note: it's not uncommon that JNI code uses signal/sigset to install -+ // then restore certain signal handler (e.g. to temporarily block SIGPIPE, -+ // or have a SIGILL handler when detecting CPU type). When that happens, -+ // JVM_handle_bsd_signal() might be invoked with junk info/ucVoid. To -+ // avoid unnecessary crash when libjsig is not preloaded, try handle signals -+ // that do not require siginfo/ucontext first. -+ -+ if (sig == SIGPIPE) { -+ if (os::Bsd::chained_handler(sig, info, ucVoid)) { -+ return 1; -+ } else { -+ if (PrintMiscellaneous && (WizardMode || Verbose)) { -+ warning("Ignoring SIGPIPE - see bug 4229104"); -+ } -+ return 1; -+ } -+ } -+ -+ JavaThread* thread = NULL; -+ VMThread* vmthread = NULL; -+ if (os::Bsd::signal_handlers_are_installed) { -+ if (t != NULL) { -+ if(t->is_Java_thread()) { -+ thread = (JavaThread*)t; -+ } -+ else if(t->is_VM_thread()) { -+ vmthread = (VMThread *)t; -+ } -+ } -+ } -+ -+ // Decide if this trap can be handled by a stub. -+ address stub = NULL; -+ -+ // retrieve program counter -+ address const pc = uc ? os::Bsd::ucontext_get_pc(uc) : NULL; -+ -+ // retrieve crash address -+ address const addr = info ? (const address) info->si_addr : NULL; -+ -+ // SafeFetch 32 handling: -+ // - make it work if _thread is null -+ // - make it use the standard os::...::ucontext_get/set_pc APIs -+ if (uc) { -+ address const pc = os::Bsd::ucontext_get_pc(uc); -+ if (pc && StubRoutines::is_safefetch_fault(pc)) { -+ uc->uc_mcontext.mc_srr0 = (unsigned long)StubRoutines::continuation_for_safefetch_fault(pc); -+ return true; -+ } -+ } -+ -+ // Handle SIGDANGER right away. AIX would raise SIGDANGER whenever available swap -+ // space falls below 30%. This is only a chance for the process to gracefully abort. -+ // We can't hope to proceed after SIGDANGER since SIGKILL tailgates. -+ // if (sig == SIGDANGER) { -+ // goto report_and_die; -+ // } -+ -+ if (info == NULL || uc == NULL || thread == NULL && vmthread == NULL) { -+ goto run_chained_handler; -+ } -+ -+ // If we are a java thread... -+ if (thread != NULL) { -+ -+ // Handle ALL stack overflow variations here -+ if (sig == SIGSEGV && (addr < thread->stack_base() && -+ addr >= thread->stack_base() - thread->stack_size())) { -+ // stack overflow -+ // -+ // If we are in a yellow zone and we are inside java, we disable the yellow zone and -+ // throw a stack overflow exception. -+ // If we are in native code or VM C code, we report-and-die. The original coding tried -+ // to continue with yellow zone disabled, but that doesn't buy us much and prevents -+ // hs_err_pid files. -+ if (thread->in_stack_yellow_zone(addr)) { -+ thread->disable_stack_yellow_zone(); -+ if (thread->thread_state() == _thread_in_Java) { -+ // Throw a stack overflow exception. -+ // Guard pages will be reenabled while unwinding the stack. -+ stub = SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::STACK_OVERFLOW); -+ goto run_stub; -+ } else { -+ // Thread was in the vm or native code. Return and try to finish. -+ return 1; -+ } -+ } else if (thread->in_stack_red_zone(addr)) { -+ // Fatal red zone violation. Disable the guard pages and fall through -+ // to handle_unexpected_exception way down below. -+ thread->disable_stack_red_zone(); -+ tty->print_raw_cr("An irrecoverable stack overflow has occurred."); -+ goto report_and_die; -+ } else { -+ // This means a segv happened inside our stack, but not in -+ // the guarded zone. I'd like to know when this happens, -+ tty->print_raw_cr("SIGSEGV happened inside stack but outside yellow and red zone."); -+ goto report_and_die; -+ } -+ -+ } // end handle SIGSEGV inside stack boundaries -+ -+ if (thread->thread_state() == _thread_in_Java) { -+ // Java thread running in Java code -+ -+ // The following signals are used for communicating VM events: -+ // -+ // SIGILL: the compiler generates illegal opcodes -+ // at places where it wishes to interrupt the VM: -+ // Safepoints, Unreachable Code, Entry points of Zombie methods, -+ // This results in a SIGILL with (*pc) == inserted illegal instruction. -+ // -+ // (so, SIGILLs with a pc inside the zero page are real errors) -+ // -+ // SIGTRAP: -+ // The ppc trap instruction raises a SIGTRAP and is very efficient if it -+ // does not trap. It is used for conditional branches that are expected -+ // to be never taken. These are: -+ // - zombie methods -+ // - IC (inline cache) misses. -+ // - null checks leading to UncommonTraps. -+ // - range checks leading to Uncommon Traps. -+ // On Bsd, these are especially null checks, as the ImplicitNullCheck -+ // optimization works only in rare cases, as the page at address 0 is only -+ // write protected. // -+ // Note: !UseSIGTRAP is used to prevent SIGTRAPS altogether, to facilitate debugging. -+ // -+ // SIGSEGV: -+ // used for safe point polling: -+ // To notify all threads that they have to reach a safe point, safe point polling is used: -+ // All threads poll a certain mapped memory page. Normally, this page has read access. -+ // If the VM wants to inform the threads about impending safe points, it puts this -+ // page to read only ("poisens" the page), and the threads then reach a safe point. -+ // used for null checks: -+ // If the compiler finds a store it uses it for a null check. Unfortunately this -+ // happens rarely. In heap based and disjoint base compressd oop modes also loads -+ // are used for null checks. -+ -+ // A VM-related SIGILL may only occur if we are not in the zero page. -+ // On AIX, we get a SIGILL if we jump to 0x0 or to somewhere else -+ // in the zero page, because it is filled with 0x0. We ignore -+ // explicit SIGILLs in the zero page. -+ if (sig == SIGILL && (pc < (address) 0x200)) { -+ if (TraceTraps) { -+ tty->print_raw_cr("SIGILL happened inside zero page."); -+ } -+ goto report_and_die; -+ } -+ -+ // Handle signal from NativeJump::patch_verified_entry(). -+ if (( TrapBasedNotEntrantChecks && sig == SIGTRAP && nativeInstruction_at(pc)->is_sigtrap_zombie_not_entrant()) || -+ (!TrapBasedNotEntrantChecks && sig == SIGILL && nativeInstruction_at(pc)->is_sigill_zombie_not_entrant())) { -+ if (TraceTraps) { -+ tty->print_cr("trap: zombie_not_entrant (%s)", (sig == SIGTRAP) ? "SIGTRAP" : "SIGILL"); -+ } -+ stub = SharedRuntime::get_handle_wrong_method_stub(); -+ goto run_stub; -+ } -+ -+ else if (sig == SIGSEGV && os::is_poll_address(addr)) { -+ if (TraceTraps) { -+ tty->print_cr("trap: safepoint_poll at " INTPTR_FORMAT " (SIGSEGV)", pc); -+ } -+ stub = SharedRuntime::get_poll_stub(pc); -+ goto run_stub; -+ } -+ -+ // SIGTRAP-based ic miss check in compiled code. -+ else if (sig == SIGTRAP && TrapBasedICMissChecks && -+ nativeInstruction_at(pc)->is_sigtrap_ic_miss_check()) { -+ if (TraceTraps) { -+ tty->print_cr("trap: ic_miss_check at " INTPTR_FORMAT " (SIGTRAP)", pc); -+ } -+ stub = SharedRuntime::get_ic_miss_stub(); -+ goto run_stub; -+ } -+ -+ // SIGTRAP-based implicit null check in compiled code. -+ else if (sig == SIGTRAP && TrapBasedNullChecks && -+ nativeInstruction_at(pc)->is_sigtrap_null_check()) { -+ if (TraceTraps) { -+ tty->print_cr("trap: null_check at " INTPTR_FORMAT " (SIGTRAP)", pc); -+ } -+ stub = SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_NULL); -+ goto run_stub; -+ } -+ -+ // SIGSEGV-based implicit null check in compiled code. -+ else if (sig == SIGSEGV && ImplicitNullChecks && -+ CodeCache::contains((void*) pc) && -+ !MacroAssembler::needs_explicit_null_check((intptr_t) info->si_addr)) { -+ if (TraceTraps) { -+ tty->print_cr("trap: null_check at " INTPTR_FORMAT " (SIGSEGV)", pc); -+ } -+ stub = SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_NULL); -+ } -+ -+#ifdef COMPILER2 -+ // SIGTRAP-based implicit range check in compiled code. -+ else if (sig == SIGTRAP && TrapBasedRangeChecks && -+ nativeInstruction_at(pc)->is_sigtrap_range_check()) { -+ if (TraceTraps) { -+ tty->print_cr("trap: range_check at " INTPTR_FORMAT " (SIGTRAP)", pc); -+ } -+ stub = SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_NULL); -+ goto run_stub; -+ } -+#endif -+ -+ else if (sig == SIGFPE /* && info->si_code == FPE_INTDIV */) { -+ if (TraceTraps) { -+ tty->print_raw_cr("Fix SIGFPE handler, trying divide by zero handler."); -+ } -+ stub = SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_DIVIDE_BY_ZERO); -+ goto run_stub; -+ } -+ -+ else if (sig == SIGBUS) { -+ // BugId 4454115: A read from a MappedByteBuffer can fault here if the -+ // underlying file has been truncated. Do not crash the VM in such a case. -+ CodeBlob* cb = CodeCache::find_blob_unsafe(pc); -+ nmethod* nm = cb->is_nmethod() ? (nmethod*)cb : NULL; -+ if (nm != NULL && nm->has_unsafe_access()) { -+ // We don't really need a stub here! Just set the pending exeption and -+ // continue at the next instruction after the faulting read. Returning -+ // garbage from this read is ok. -+ thread->set_pending_unsafe_access_error(); -+ uc->uc_mcontext.mc_srr0 = ((unsigned long)pc) + 4; -+ return 1; -+ } -+ } -+ } -+ -+ else { // thread->thread_state() != _thread_in_Java -+ // Detect CPU features. This is only done at the very start of the VM. Later, the -+ // VM_Version::is_determine_features_test_running() flag should be false. -+ -+ if (sig == SIGILL && VM_Version::is_determine_features_test_running()) { -+ // SIGILL must be caused by VM_Version::determine_features(). -+ *(int *)pc = 0; // patch instruction to 0 to indicate that it causes a SIGILL, -+ // flushing of icache is not necessary. -+ stub = pc + 4; // continue with next instruction. -+ goto run_stub; -+ } -+ else if (thread->thread_state() == _thread_in_vm && -+ sig == SIGBUS && thread->doing_unsafe_access()) { -+ // We don't really need a stub here! Just set the pending exeption and -+ // continue at the next instruction after the faulting read. Returning -+ // garbage from this read is ok. -+ thread->set_pending_unsafe_access_error(); -+ uc->uc_mcontext.mc_srr0 = ((unsigned long)pc) + 4; -+ return 1; -+ } -+ } -+ -+ // Check to see if we caught the safepoint code in the -+ // process of write protecting the memory serialization page. -+ // It write enables the page immediately after protecting it -+ // so we can just return to retry the write. -+ if ((sig == SIGSEGV) && -+ os::is_memory_serialize_page(thread, addr)) { -+ // Synchronization problem in the pseudo memory barrier code (bug id 6546278) -+ // Block current thread until the memory serialize page permission restored. -+ os::block_on_serialize_page_trap(); -+ return true; -+ } -+ } -+ -+run_stub: -+ -+ // One of the above code blocks ininitalized the stub, so we want to -+ // delegate control to that stub. -+ if (stub != NULL) { -+ // Save all thread context in case we need to restore it. -+ if (thread != NULL) thread->set_saved_exception_pc(pc); -+ uc->uc_mcontext.mc_srr0 = (unsigned long)stub; -+ return 1; -+ } -+ -+run_chained_handler: -+ -+ // signal-chaining -+ if (os::Bsd::chained_handler(sig, info, ucVoid)) { -+ return 1; -+ } -+ if (!abort_if_unrecognized) { -+ // caller wants another chance, so give it to him -+ return 0; -+ } -+ -+report_and_die: -+ -+ // Use sigthreadmask instead of sigprocmask on AIX and unmask current signal. -+ sigset_t newset; -+ sigemptyset(&newset); -+ sigaddset(&newset, sig); -+ sigprocmask(SIG_UNBLOCK, &newset, NULL); -+ -+ VMError err(t, sig, pc, info, ucVoid); -+ err.report_and_die(); -+ -+ ShouldNotReachHere(); -+ return 0; -+} -+ -+void os::Bsd::init_thread_fpu_state(void) { -+ // Disable FP exceptions. -+ __asm__ __volatile__ ("mtfsfi 6,0"); -+} -+ -+/////////////////////////////////////////////////////////////////////////////// -+// thread stack -+ -+size_t os::Bsd::min_stack_allowed = 128*K; -+ -+bool os::Bsd::supports_variable_stack_size() { return true; } -+ -+// return default stack size for thr_type -+size_t os::Bsd::default_stack_size(os::ThreadType thr_type) { -+ // default stack size (compiler thread needs larger stack) -+ // Notice that the setting for compiler threads here have no impact -+ // because of the strange 'fallback logic' in os::create_thread(). -+ // Better set CompilerThreadStackSize in globals_<os_cpu>.hpp if you want to -+ // specify a different stack size for compiler threads! -+ size_t s = (thr_type == os::compiler_thread ? 4 * M : 1024 * K); -+ return s; -+} -+ -+size_t os::Bsd::default_guard_size(os::ThreadType thr_type) { -+ return 2 * page_size(); -+} -+ -+// Java thread: -+// -+// Low memory addresses -+// +------------------------+ -+// | |\ JavaThread created by VM does not have glibc -+// | glibc guard page | - guard, attached Java thread usually has -+// | |/ 1 page glibc guard. -+// P1 +------------------------+ Thread::stack_base() - Thread::stack_size() -+// | |\ -+// | HotSpot Guard Pages | - red and yellow pages -+// | |/ -+// +------------------------+ JavaThread::stack_yellow_zone_base() -+// | |\ -+// | Normal Stack | - -+// | |/ -+// P2 +------------------------+ Thread::stack_base() -+// -+// Non-Java thread: -+// -+// Low memory addresses -+// +------------------------+ -+// | |\ -+// | glibc guard page | - usually 1 page -+// | |/ -+// P1 +------------------------+ Thread::stack_base() - Thread::stack_size() -+// | |\ -+// | Normal Stack | - -+// | |/ -+// P2 +------------------------+ Thread::stack_base() -+// -+// ** P1 (aka bottom) and size ( P2 = P1 - size) are the address and stack size returned from -+// pthread_attr_getstack() -+ -+static void current_stack_region(address * bottom, size_t * size) { -+#ifdef __APPLE__ -+ pthread_t self = pthread_self(); -+ void *stacktop = pthread_get_stackaddr_np(self); -+ *size = pthread_get_stacksize_np(self); -+ // workaround for OS X 10.9.0 (Mavericks) -+ // pthread_get_stacksize_np returns 128 pages even though the actual size is 2048 pages -+ if (pthread_main_np() == 1) { -+ if ((*size) < (DEFAULT_MAIN_THREAD_STACK_PAGES * (size_t)getpagesize())) { -+ char kern_osrelease[256]; -+ size_t kern_osrelease_size = sizeof(kern_osrelease); -+ int ret = sysctlbyname("kern.osrelease", kern_osrelease, &kern_osrelease_size, NULL, 0); -+ if (ret == 0) { -+ // get the major number, atoi will ignore the minor amd micro portions of the version string -+ if (atoi(kern_osrelease) >= OS_X_10_9_0_KERNEL_MAJOR_VERSION) { -+ *size = (DEFAULT_MAIN_THREAD_STACK_PAGES*getpagesize()); -+ } -+ } -+ } -+ } -+ *bottom = (address) stacktop - *size; -+#elif defined(__OpenBSD__) -+ stack_t ss; -+ int rslt = pthread_stackseg_np(pthread_self(), &ss); -+ -+ if (rslt != 0) -+ fatal(err_msg("pthread_stackseg_np failed with err = %d", rslt)); -+ -+ *bottom = (address)((char *)ss.ss_sp - ss.ss_size); -+ *size = ss.ss_size; -+#else -+ pthread_attr_t attr; -+ -+ int rslt = pthread_attr_init(&attr); -+ -+ // JVM needs to know exact stack location, abort if it fails -+ if (rslt != 0) -+ fatal(err_msg("pthread_attr_init failed with err = %d", rslt)); -+ -+ rslt = pthread_attr_get_np(pthread_self(), &attr); -+ -+ if (rslt != 0) -+ fatal(err_msg("pthread_attr_get_np failed with err = %d", rslt)); -+ -+ if (pthread_attr_getstackaddr(&attr, (void **)bottom) != 0 || -+ pthread_attr_getstacksize(&attr, size) != 0) { -+ fatal("Can not locate current stack attributes!"); -+ } -+ -+ pthread_attr_destroy(&attr); -+#endif -+ assert(os::current_stack_pointer() >= *bottom && -+ os::current_stack_pointer() < *bottom + *size, "just checking"); -+} -+ -+address os::current_stack_base() { -+ address bottom; -+ size_t size; -+ current_stack_region(&bottom, &size); -+ return (bottom + size); -+} -+ -+size_t os::current_stack_size() { -+ // stack size includes normal stack and HotSpot guard pages -+ address bottom; -+ size_t size; -+ current_stack_region(&bottom, &size); -+ return size; -+} -+ -+///////////////////////////////////////////////////////////////////////////// -+// helper functions for fatal error handler -+ -+void os::print_context(outputStream *st, void *context) { -+ if (context == NULL) return; -+ -+ ucontext_t* uc = (ucontext_t*)context; -+ -+ st->print_cr("Registers:"); -+ st->print("pc =" INTPTR_FORMAT " ", uc->uc_mcontext.mc_srr0); -+ st->print("lr =" INTPTR_FORMAT " ", uc->uc_mcontext.mc_lr); -+ st->print("ctr=" INTPTR_FORMAT " ", uc->uc_mcontext.mc_ctr); -+ st->cr(); -+ for (int i = 0; i < 32; i++) { -+ st->print("r%-2d=" INTPTR_FORMAT " ", i, uc->uc_mcontext.mc_gpr[i]); -+ if (i % 3 == 2) st->cr(); -+ } -+ st->cr(); -+ st->cr(); -+ -+ intptr_t *sp = (intptr_t *)os::Bsd::ucontext_get_sp(uc); -+ st->print_cr("Top of Stack: (sp=" PTR_FORMAT ")", p2i(sp)); -+ print_hex_dump(st, (address)sp, (address)(sp + 128), sizeof(intptr_t)); -+ st->cr(); -+ -+ // Note: it may be unsafe to inspect memory near pc. For example, pc may -+ // point to garbage if entry point in an nmethod is corrupted. Leave -+ // this at the end, and hope for the best. -+ address pc = os::Bsd::ucontext_get_pc(uc); -+ st->print_cr("Instructions: (pc=" PTR_FORMAT ")", p2i(pc)); -+ print_hex_dump(st, pc - 64, pc + 64, /*instrsize=*/4); -+ st->cr(); -+} -+ -+void os::print_register_info(outputStream *st, void *context) { -+ if (context == NULL) return; -+ -+ ucontext_t *uc = (ucontext_t*)context; -+ -+ st->print_cr("Register to memory mapping:"); -+ st->cr(); -+ -+ // this is only for the "general purpose" registers -+ for (int i = 0; i < 32; i++) { -+ st->print("r%-2d=", i); -+ print_location(st, uc->uc_mcontext.mc_gpr[i]); -+ } -+ st->cr(); -+} -+ -+extern "C" { -+ int SpinPause() { -+ return 0; -+ } -+} -+ -+#ifndef PRODUCT -+void os::verify_stack_alignment() { -+ assert(((intptr_t)os::current_stack_pointer() & (StackAlignmentInBytes-1)) == 0, "incorrect stack alignment"); -+} -+#endif ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./hotspot/src/os_cpu/bsd_ppc/vm/os_bsd_ppc.hpp Sun Feb 10 09:26:05 2019 -0800 -@@ -0,0 +1,35 @@ -+/* -+ * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. -+ * Copyright 2012, 2013 SAP AG. All rights reserved. -+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -+ * -+ * This code is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 only, as -+ * published by the Free Software Foundation. -+ * -+ * This code is distributed in the hope that it will be useful, but WITHOUT -+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+ * version 2 for more details (a copy is included in the LICENSE file that -+ * accompanied this code). -+ * -+ * You should have received a copy of the GNU General Public License version -+ * 2 along with this work; if not, write to the Free Software Foundation, -+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -+ * or visit www.oracle.com if you need additional information or have any -+ * questions. -+ * -+ */ -+ -+#ifndef OS_CPU_BSD_PPC_VM_OS_BSD_PPC_HPP -+#define OS_CPU_BSD_PPC_VM_OS_BSD_PPC_HPP -+ -+ static void setup_fpu() {} -+ -+ // Used to register dynamic code cache area with the OS -+ // Note: Currently only used in 64 bit Windows implementations -+ static bool register_code_area(char *low, char *high) { return true; } -+ -+#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 Sun Feb 10 09:26:05 2019 -0800 -@@ -0,0 +1,50 @@ -+/* -+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -+ * Copyright 2012, 2013 SAP AG. All rights reserved. -+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -+ * -+ * This code is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 only, as -+ * published by the Free Software Foundation. -+ * -+ * This code is distributed in the hope that it will be useful, but WITHOUT -+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+ * version 2 for more details (a copy is included in the LICENSE file that -+ * accompanied this code). -+ * -+ * You should have received a copy of the GNU General Public License version -+ * 2 along with this work; if not, write to the Free Software Foundation, -+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -+ * or visit www.oracle.com if you need additional information or have any -+ * questions. -+ * -+ */ -+ -+#ifndef OS_CPU_BSD_PPC_VM_PREFETCH_BSD_PPC_INLINE_HPP -+#define OS_CPU_BSD_PPC_VM_PREFETCH_BSD_PPC_INLINE_HPP -+ -+#include "runtime/prefetch.hpp" -+ -+ -+inline void Prefetch::read(void *loc, intx interval) { -+ __asm__ __volatile__ ( -+ " dcbt 0, %0 \n" -+ : -+ : /*%0*/"r" ( ((address)loc) +((long)interval) ) -+ //: -+ ); -+} -+ -+inline void Prefetch::write(void *loc, intx interval) { -+ __asm__ __volatile__ ( -+ " dcbtst 0, %0 \n" -+ : -+ : /*%0*/"r" ( ((address)loc) +((long)interval) ) -+ //: -+ ); -+} -+ -+#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 Sun Feb 10 09:26:05 2019 -0800 -@@ -0,0 +1,39 @@ -+/* -+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -+ * Copyright 2012, 2013 SAP AG. 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. -+ * -+ */ -+ -+#include "precompiled.hpp" -+#include "runtime/threadLocalStorage.hpp" -+ -+void ThreadLocalStorage::generate_code_for_get_thread() { -+ // nothing we can do here for user-level thread -+} -+ -+void ThreadLocalStorage::pd_init() { -+ // Nothing to do -+} -+ -+void ThreadLocalStorage::pd_set_thread(Thread* thread) { -+ 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 Sun Feb 10 09:26:05 2019 -0800 -@@ -0,0 +1,36 @@ -+/* -+ * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. -+ * Copyright 2012, 2013 SAP AG. All rights reserved. -+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -+ * -+ * This code is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 only, as -+ * published by the Free Software Foundation. -+ * -+ * This code is distributed in the hope that it will be useful, but WITHOUT -+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+ * version 2 for more details (a copy is included in the LICENSE file that -+ * accompanied this code). -+ * -+ * You should have received a copy of the GNU General Public License version -+ * 2 along with this work; if not, write to the Free Software Foundation, -+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -+ * or visit www.oracle.com if you need additional information or have any -+ * questions. -+ * -+ */ -+ -+#ifndef OS_CPU_BSD_PPC_VM_THREADLS_BSD_PPC_HPP -+#define OS_CPU_BSD_PPC_VM_THREADLS_BSD_PPC_HPP -+ -+ // Processor dependent parts of ThreadLocalStorage -+ -+public: -+ static Thread* thread() { -+ return (Thread *) os::thread_local_storage_at(thread_index()); -+ } -+ -+#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 Sun Feb 10 09:26:05 2019 -0800 -@@ -0,0 +1,36 @@ -+/* -+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -+ * Copyright 2012, 2014 SAP AG. 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. -+ * -+ */ -+ -+#include "precompiled.hpp" -+#include "runtime/frame.hpp" -+#include "runtime/thread.hpp" -+ -+// Forte Analyzer AsyncGetCallTrace profiling support is not implemented on Bsd/PPC. -+bool JavaThread::pd_get_top_frame_for_signal_handler(frame* fr_addr, void* ucontext, bool isInJava) { -+ Unimplemented(); -+ return false; -+} -+ -+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 Sun Feb 10 09:26:05 2019 -0800 -@@ -0,0 +1,83 @@ -+/* -+ * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. -+ * Copyright 2012, 2013 SAP AG. All rights reserved. -+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -+ * -+ * This code is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 only, as -+ * published by the Free Software Foundation. -+ * -+ * This code is distributed in the hope that it will be useful, but WITHOUT -+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+ * version 2 for more details (a copy is included in the LICENSE file that -+ * accompanied this code). -+ * -+ * You should have received a copy of the GNU General Public License version -+ * 2 along with this work; if not, write to the Free Software Foundation, -+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -+ * or visit www.oracle.com if you need additional information or have any -+ * questions. -+ * -+ */ -+ -+#ifndef OS_CPU_BSD_PPC_VM_THREAD_BSD_PPC_HPP -+#define OS_CPU_BSD_PPC_VM_THREAD_BSD_PPC_HPP -+ -+ private: -+ -+ void pd_initialize() { -+ _anchor.clear(); -+ _last_interpreter_fp = NULL; -+ } -+ -+ // The `last' frame is the youngest Java frame on the thread's stack. -+ frame pd_last_frame() { -+ assert(has_last_Java_frame(), "must have last_Java_sp() when suspended"); -+ -+ intptr_t* sp = last_Java_sp(); -+ address pc = _anchor.last_Java_pc(); -+ -+ // Last_Java_pc ist not set, if we come here from compiled code. -+ if (pc == NULL) { -+ pc = (address) *(sp + 2); -+ } -+ -+ return frame(sp, pc); -+ } -+ -+ public: -+ -+ void set_base_of_stack_pointer(intptr_t* base_sp) {} -+ intptr_t* base_of_stack_pointer() { return NULL; } -+ void record_base_of_stack_pointer() {} -+ -+ // These routines are only used on cpu architectures that -+ // have separate register stacks (Itanium). -+ static bool register_stack_overflow() { return false; } -+ static void enable_register_stack_guard() {} -+ static void disable_register_stack_guard() {} -+ -+ bool pd_get_top_frame_for_signal_handler(frame* fr_addr, void* ucontext, bool isInJava); -+ -+ protected: -+ -+ // -Xprof support -+ // -+ // In order to find the last Java fp from an async profile -+ // tick, we store the current interpreter fp in the thread. -+ // This value is only valid while we are in the C++ interpreter -+ // and profiling. -+ intptr_t *_last_interpreter_fp; -+ -+ public: -+ -+ static ByteSize last_interpreter_fp_offset() { -+ return byte_offset_of(JavaThread, _last_interpreter_fp); -+ } -+ -+ intptr_t* last_interpreter_fp() { return _last_interpreter_fp; } -+ -+#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 Sun Feb 10 09:26:05 2019 -0800 -@@ -0,0 +1,55 @@ -+/* -+ * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. -+ * Copyright 2012, 2013 SAP AG. All rights reserved. -+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -+ * -+ * This code is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 only, as -+ * published by the Free Software Foundation. -+ * -+ * This code is distributed in the hope that it will be useful, but WITHOUT -+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+ * version 2 for more details (a copy is included in the LICENSE file that -+ * accompanied this code). -+ * -+ * You should have received a copy of the GNU General Public License version -+ * 2 along with this work; if not, write to the Free Software Foundation, -+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -+ * or visit www.oracle.com if you need additional information or have any -+ * questions. -+ * -+ */ -+ -+#ifndef OS_CPU_BSD_PPC_VM_VMSTRUCTS_BSD_PPC_HPP -+#define OS_CPU_BSD_PPC_VM_VMSTRUCTS_BSD_PPC_HPP -+ -+// These are the OS and CPU-specific fields, types and integer -+// constants required by the Serviceability Agent. This file is -+// referenced by vmStructs.cpp. -+ -+#define VM_STRUCTS_OS_CPU(nonstatic_field, static_field, unchecked_nonstatic_field, volatile_nonstatic_field, nonproduct_nonstatic_field, c2_nonstatic_field, unchecked_c1_static_field, unchecked_c2_static_field) \ -+ \ -+ /******************************/ \ -+ /* Threads (NOTE: incomplete) */ \ -+ /******************************/ \ -+ nonstatic_field(OSThread, _thread_id, pid_t) \ -+ nonstatic_field(OSThread, _pthread_id, pthread_t) -+ -+ -+#define VM_TYPES_OS_CPU(declare_type, declare_toplevel_type, declare_oop_type, declare_integer_type, declare_unsigned_integer_type, declare_c1_toplevel_type, declare_c2_type, declare_c2_toplevel_type) \ -+ \ -+ /**********************/ \ -+ /* Posix Thread IDs */ \ -+ /**********************/ \ -+ \ -+ declare_integer_type(pid_t) \ -+ declare_unsigned_integer_type(pthread_t) -+ -+#define VM_INT_CONSTANTS_OS_CPU(declare_constant, declare_preprocessor_constant, declare_c1_constant, declare_c2_constant, declare_c2_preprocessor_constant) -+ -+#define VM_LONG_CONSTANTS_OS_CPU(declare_constant, declare_preprocessor_constant, declare_c1_constant, declare_c2_constant, declare_c2_preprocessor_constant) -+ -+#endif // OS_CPU_BSD_PPC_VM_VMSTRUCTS_BSD_PPC_HPP ---- ./hotspot/src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp Sun Feb 10 09:26:05 2019 -0800 -@@ -281,11 +281,11 @@ - address os::current_stack_pointer() { - #if defined(__clang__) || defined(__llvm__) - register void *esp; -- __asm__("mov %%"SPELL_REG_SP", %0":"=r"(esp)); -+ __asm__("mov %%" SPELL_REG_SP ", %0" : "=r" (esp)); - return (address) esp; - #elif defined(SPARC_WORKS) - register void *esp; -- __asm__("mov %%"SPELL_REG_SP", %0":"=r"(esp)); -+ __asm__("mov %%" SPELL_REG_SP ", %0" : "=r" (esp)); - return (address) ((char*)esp + sizeof(long)*2); - #else - register void *esp __asm__ (SPELL_REG_SP); -@@ -368,7 +368,7 @@ - intptr_t* _get_previous_fp() { - #if defined(SPARC_WORKS) || defined(__clang__) || defined(__llvm__) - register intptr_t **ebp; -- __asm__("mov %%"SPELL_REG_FP", %0":"=r"(ebp)); -+ __asm__("mov %%" SPELL_REG_FP ", %0" : "=r" (ebp)); - #else - register intptr_t **ebp __asm__ (SPELL_REG_FP); - #endif -@@ -594,7 +594,11 @@ - stub = SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_NULL); - } - } else if (thread->thread_state() == _thread_in_vm && -+#ifdef __FreeBSD__ -+ (sig == SIGBUS || sig == SIGSEGV) && -+#else - sig == SIGBUS && /* info->si_code == BUS_OBJERR && */ -+#endif - thread->doing_unsafe_access()) { - stub = StubRoutines::handler_for_unsafe_access(); - } ---- ./hotspot/src/share/vm/code/compiledIC.cpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/share/vm/code/compiledIC.cpp Sun Feb 10 09:26:05 2019 -0800 -@@ -222,7 +222,7 @@ - assert(bytecode == Bytecodes::_invokeinterface, ""); - int itable_index = call_info->itable_index(); - entry = VtableStubs::find_itable_stub(itable_index); -- if (entry == false) { -+ if (entry == NULL) { - return false; - } - #ifdef ASSERT ---- ./hotspot/src/share/vm/gc_implementation/g1/g1BlockOffsetTable.inline.hpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/share/vm/gc_implementation/g1/g1BlockOffsetTable.inline.hpp Sun Feb 10 09:26:05 2019 -0800 -@@ -49,10 +49,11 @@ - - #define check_index(index, msg) \ - assert((index) < (_reserved.word_size() >> LogN_words), \ -- err_msg("%s - index: "SIZE_FORMAT", _vs.committed_size: "SIZE_FORMAT, \ -+ err_msg("%s - index: " SIZE_FORMAT \ -+ ", _vs.committed_size: " SIZE_FORMAT, \ - msg, (index), (_reserved.word_size() >> LogN_words))); \ - assert(G1CollectedHeap::heap()->is_in_exact(address_for_index_raw(index)), \ -- err_msg("Index "SIZE_FORMAT" corresponding to "PTR_FORMAT \ -+ err_msg("Index " SIZE_FORMAT " corresponding to " PTR_FORMAT \ - " (%u) is not in committed area.", \ - (index), \ - p2i(address_for_index_raw(index)), \ ---- ./hotspot/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp Sun Feb 10 09:26:05 2019 -0800 -@@ -668,7 +668,7 @@ - jlong ret_val = now - _time_of_last_gc; - // XXX See note in genCollectedHeap::millis_since_last_gc(). - if (ret_val < 0) { -- NOT_PRODUCT(warning("time warp: "INT64_FORMAT, ret_val);) -+ NOT_PRODUCT(warning("time warp: " INT64_FORMAT, ret_val);) - return 0; - } - return ret_val; ---- ./hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp Sun Feb 10 09:26:05 2019 -0800 -@@ -3291,7 +3291,7 @@ - jlong ret_val = now - _time_of_last_gc; - // XXX See note in genCollectedHeap::millis_since_last_gc(). - if (ret_val < 0) { -- NOT_PRODUCT(warning("time warp: "INT64_FORMAT, ret_val);) -+ NOT_PRODUCT(warning("time warp: " INT64_FORMAT, ret_val);) - return 0; - } - return ret_val; ---- ./hotspot/src/share/vm/gc_implementation/shared/parGCAllocBuffer.cpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/share/vm/gc_implementation/shared/parGCAllocBuffer.cpp Sun Feb 10 09:26:05 2019 -0800 -@@ -98,10 +98,10 @@ - if (_allocated == 0) { - assert(_unused == 0, - err_msg("Inconsistency in PLAB stats: " -- "_allocated: "SIZE_FORMAT", " -- "_wasted: "SIZE_FORMAT", " -- "_unused: "SIZE_FORMAT", " -- "_used : "SIZE_FORMAT, -+ "_allocated: " SIZE_FORMAT ", " -+ "_wasted: " SIZE_FORMAT ", " -+ "_unused: " SIZE_FORMAT ", " -+ "_used : " SIZE_FORMAT, - _allocated, _wasted, _unused, _used)); - - _allocated = 1; ---- ./hotspot/src/share/vm/memory/genCollectedHeap.cpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/share/vm/memory/genCollectedHeap.cpp Sun Feb 10 09:26:05 2019 -0800 -@@ -1403,7 +1403,7 @@ - // back a time later than 'now'. - jlong retVal = now - tolgc_cl.time(); - if (retVal < 0) { -- NOT_PRODUCT(warning("time warp: "INT64_FORMAT, (int64_t) retVal);) -+ NOT_PRODUCT(warning("time warp: " INT64_FORMAT, (int64_t) retVal);) - return 0; - } - return retVal; ---- ./hotspot/src/share/vm/memory/generation.hpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/share/vm/memory/generation.hpp Sun Feb 10 09:26:05 2019 -0800 -@@ -422,7 +422,7 @@ - // have to guard against non-monotonicity. - NOT_PRODUCT( - if (now < _time_of_last_gc) { -- warning("time warp: "INT64_FORMAT" to "INT64_FORMAT, (int64_t)_time_of_last_gc, (int64_t)now); -+ warning("time warp: " INT64_FORMAT " to " INT64_FORMAT, (int64_t)_time_of_last_gc, (int64_t)now); - } - ) - return _time_of_last_gc; ---- ./hotspot/src/share/vm/memory/referenceProcessor.cpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/share/vm/memory/referenceProcessor.cpp Sun Feb 10 09:26:05 2019 -0800 -@@ -161,7 +161,7 @@ - - NOT_PRODUCT( - if (now < _soft_ref_timestamp_clock) { -- warning("time warp: "INT64_FORMAT" to "INT64_FORMAT, -+ warning("time warp: " INT64_FORMAT " to " INT64_FORMAT, - _soft_ref_timestamp_clock, now); - } - ) ---- ./hotspot/src/share/vm/opto/node.cpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/share/vm/opto/node.cpp Sun Feb 10 09:26:05 2019 -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 - #endif -+#ifdef __clang__ -+#pragma clang diagnostic push -+#pragma GCC diagnostic ignored "-Wuninitialized" -+#endif - - // Out-of-line code from node constructors. - // Executed only when extra debug info. is being passed around. -@@ -493,6 +497,10 @@ - _in[6] = n6; if (n6 != NULL) n6->add_out((Node *)this); - } - -+#ifdef __clang__ -+#pragma clang diagnostic pop -+#endif -+ - - //------------------------------clone------------------------------------------ - // Clone a Node. ---- ./hotspot/src/share/vm/prims/unsafe.cpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/share/vm/prims/unsafe.cpp Sun Feb 10 09:26:05 2019 -0800 -@@ -985,7 +985,7 @@ - UNSAFE_END - - --#define DAC_Args CLS"[B["OBJ -+#define DAC_Args CLS "[B[" OBJ - // define a class but do not make it known to the class loader or system dictionary - // - host_class: supplies context for linkage, access control, protection domain, and class loader - // - data: bytes of a class file, a raw memory address (length gives the number of bytes) ---- ./hotspot/src/share/vm/prims/whitebox.cpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/share/vm/prims/whitebox.cpp Sun Feb 10 09:26:05 2019 -0800 -@@ -158,8 +158,10 @@ - } - WB_END - --#ifdef LINUX -+#if defined(LINUX) || defined(_ALLBSD_SOURCE) - #include "utilities/elfFile.hpp" -+#endif -+#if defined(LINUX) - #include "osContainer_linux.hpp" - #endif - -@@ -1017,7 +1019,7 @@ - // Checks that the library libfile has the noexecstack bit set. - WB_ENTRY(jboolean, WB_CheckLibSpecifiesNoexecstack(JNIEnv* env, jobject o, jstring libfile)) - jboolean ret = false; --#ifdef LINUX -+#if defined(LINUX) || defined(_ALLBSD_SOURCE) - // Can't be in VM when we call JNI. - ThreadToNativeFromVM ttnfv(thread); - const char* lf = env->GetStringUTFChars(libfile, NULL); ---- ./hotspot/src/share/vm/runtime/atomic.inline.hpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/share/vm/runtime/atomic.inline.hpp Sun Feb 10 09:26:05 2019 -0800 -@@ -63,6 +63,9 @@ - #endif - - // BSD -+#ifdef TARGET_OS_ARCH_bsd_ppc -+# include "atomic_bsd_ppc.inline.hpp" -+#endif - #ifdef TARGET_OS_ARCH_bsd_x86 - # include "atomic_bsd_x86.inline.hpp" - #endif ---- ./hotspot/src/share/vm/runtime/globals.hpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/share/vm/runtime/globals.hpp Sun Feb 10 09:26:05 2019 -0800 -@@ -94,6 +94,9 @@ - #ifdef TARGET_OS_ARCH_aix_ppc - # include "globals_aix_ppc.hpp" - #endif -+#ifdef TARGET_OS_ARCH_bsd_ppc -+# include "globals_bsd_ppc.hpp" -+#endif - #ifdef TARGET_OS_ARCH_bsd_x86 - # include "globals_bsd_x86.hpp" - #endif ---- ./hotspot/src/share/vm/runtime/orderAccess.inline.hpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/share/vm/runtime/orderAccess.inline.hpp Sun Feb 10 09:26:05 2019 -0800 -@@ -64,6 +64,9 @@ - #endif - - // BSD -+#ifdef TARGET_OS_ARCH_bsd_ppc -+# include "orderAccess_bsd_ppc.inline.hpp" -+#endif - #ifdef TARGET_OS_ARCH_bsd_x86 - # include "orderAccess_bsd_x86.inline.hpp" - #endif ---- ./hotspot/src/share/vm/runtime/os.cpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/share/vm/runtime/os.cpp Sun Feb 10 09:26:05 2019 -0800 -@@ -442,15 +442,6 @@ - if (_native_java_library == NULL) { - vm_exit_during_initialization("Unable to load native library", ebuf); - } -- --#if defined(__OpenBSD__) -- // Work-around OpenBSD's lack of $ORIGIN support by pre-loading libnet.so -- // ignore errors -- if (dll_build_name(buffer, sizeof(buffer), Arguments::get_dll_dir(), -- "net")) { -- dll_load(buffer, ebuf, sizeof(ebuf)); -- } --#endif - } - static jboolean onLoaded = JNI_FALSE; - if (onLoaded) { ---- ./hotspot/src/share/vm/runtime/os.hpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/share/vm/runtime/os.hpp Sun Feb 10 09:26:05 2019 -0800 -@@ -871,6 +871,9 @@ - #ifdef TARGET_OS_ARCH_aix_ppc - # include "os_aix_ppc.hpp" - #endif -+#ifdef TARGET_OS_ARCH_bsd_ppc -+# include "os_bsd_ppc.hpp" -+#endif - #ifdef TARGET_OS_ARCH_bsd_x86 - # include "os_bsd_x86.hpp" - #endif ---- ./hotspot/src/share/vm/runtime/prefetch.inline.hpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/share/vm/runtime/prefetch.inline.hpp Sun Feb 10 09:26:05 2019 -0800 -@@ -63,6 +63,9 @@ - #endif - - // BSD -+#ifdef TARGET_OS_ARCH_bsd_ppc -+# include "prefetch_bsd_ppc.inline.hpp" -+#endif - #ifdef TARGET_OS_ARCH_bsd_x86 - # include "prefetch_bsd_x86.inline.hpp" - #endif ---- ./hotspot/src/share/vm/runtime/thread.hpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/share/vm/runtime/thread.hpp Sun Feb 10 09:26:05 2019 -0800 -@@ -1730,6 +1730,9 @@ - #ifdef TARGET_OS_ARCH_aix_ppc - # include "thread_aix_ppc.hpp" - #endif -+#ifdef TARGET_OS_ARCH_bsd_ppc -+# include "thread_bsd_ppc.hpp" -+#endif - #ifdef TARGET_OS_ARCH_bsd_x86 - # include "thread_bsd_x86.hpp" - #endif ---- ./hotspot/src/share/vm/runtime/threadLocalStorage.hpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/share/vm/runtime/threadLocalStorage.hpp Sun Feb 10 09:26:05 2019 -0800 -@@ -75,6 +75,9 @@ - #ifdef TARGET_OS_ARCH_aix_ppc - # include "threadLS_aix_ppc.hpp" - #endif -+#ifdef TARGET_OS_ARCH_bsd_ppc -+# include "threadLS_bsd_ppc.hpp" -+#endif - #ifdef TARGET_OS_ARCH_bsd_x86 - # include "threadLS_bsd_x86.hpp" - #endif ---- ./hotspot/src/share/vm/runtime/vmStructs.cpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/share/vm/runtime/vmStructs.cpp Sun Feb 10 09:26:05 2019 -0800 -@@ -146,6 +146,9 @@ - #ifdef TARGET_OS_ARCH_aix_ppc - # include "vmStructs_aix_ppc.hpp" - #endif -+#ifdef TARGET_OS_ARCH_bsd_ppc -+# include "vmStructs_bsd_ppc.hpp" -+#endif - #ifdef TARGET_OS_ARCH_bsd_x86 - # include "vmStructs_bsd_x86.hpp" - #endif -@@ -2556,6 +2559,8 @@ - /**********************/ \ - /* frame */ \ - /**********************/ \ -+ NOT_ZERO(PPC64_ONLY(declare_constant(frame::abi_minframe_size))) \ -+ NOT_ZERO(PPC64_ONLY(declare_constant(frame::entry_frame_locals_size))) \ - \ - NOT_ZERO(X86_ONLY(declare_constant(frame::entry_frame_call_wrapper_offset))) \ - declare_constant(frame::pc_return_offset) \ ---- ./hotspot/src/share/vm/services/memTracker.cpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/share/vm/services/memTracker.cpp Sun Feb 10 09:26:05 2019 -0800 -@@ -67,10 +67,6 @@ - os::unsetenv(buf); - } - -- // Construct NativeCallStack::EMPTY_STACK. It may get constructed twice, -- // but it is benign, the results are the same. -- ::new ((void*)&NativeCallStack::EMPTY_STACK) NativeCallStack(0, false); -- - if (!MallocTracker::initialize(level) || - !VirtualMemoryTracker::initialize(level)) { - level = NMT_off; ---- ./hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp Sun Feb 10 09:26:05 2019 -0800 -@@ -30,6 +30,11 @@ - // This file holds compiler-dependent includes, - // globally used constants & types, class (forward) - // declarations and a few frequently used utility functions. -+#if defined(LINUX) || defined(_ALLBSD_SOURCE) -+#ifndef __STDC_LIMIT_MACROS -+#define __STDC_LIMIT_MACROS -+#endif // __STDC_LIMIT_MACROS -+#endif - - #include <ctype.h> - #include <string.h> -@@ -69,9 +74,6 @@ - # endif - - #if defined(LINUX) || defined(_ALLBSD_SOURCE) --#ifndef __STDC_LIMIT_MACROS --#define __STDC_LIMIT_MACROS --#endif // __STDC_LIMIT_MACROS - #include <inttypes.h> - #include <signal.h> - #ifndef __OpenBSD__ -@@ -242,7 +244,7 @@ - #endif - - // GCC 4.3 does not allow 0.0/0.0 to produce a NAN value --#if (__GNUC__ == 4) && (__GNUC_MINOR__ > 2) -+#if defined(__clang__) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 2)) - #define CAN_USE_NAN_DEFINE 1 - #endif - ---- ./hotspot/src/share/vm/utilities/vmError.cpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/share/vm/utilities/vmError.cpp Sun Feb 10 09:26:05 2019 -0800 -@@ -22,7 +22,6 @@ - * - */ - --#include <fcntl.h> - #include "precompiled.hpp" - #include "compiler/compileBroker.hpp" - #include "gc_interface/collectedHeap.hpp" -@@ -399,7 +398,7 @@ - case OOM_MMAP_ERROR: - if (_size) { - st->print("# Native memory allocation "); -- st->print((_id == (int)OOM_MALLOC_ERROR) ? "(malloc) failed to allocate " : -+ st->print((_id == (unsigned int)OOM_MALLOC_ERROR) ? "(malloc) failed to allocate " : - "(mmap) failed to map "); - jio_snprintf(buf, sizeof(buf), SIZE_FORMAT, _size); - st->print("%s", buf); ---- ./hotspot/src/share/vm/utilities/vmError.hpp Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/src/share/vm/utilities/vmError.hpp Sun Feb 10 09:26:05 2019 -0800 -@@ -34,7 +34,7 @@ - friend class VM_ReportJavaOutOfMemory; - friend class Decoder; - -- int _id; // Solaris/Linux signals: 0 - SIGRTMAX -+ unsigned int _id; // Solaris/Linux signals: 0 - SIGRTMAX - // Windows exceptions: 0xCxxxxxxx system errors - // 0x8xxxxxxx system warnings - ---- ./jdk/make/CompileDemos.gmk Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/make/CompileDemos.gmk Sun Feb 10 09:27:00 2019 -0800 -@@ -323,7 +323,7 @@ - $(eval $(call SetupJVMTIDemo,hprof, java_crw_demo, \ - -I$(JDK_TOPDIR)/src/share/npt -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/npt \ - $(BUILD_LIBHPROF_AIX_EXTRA_CFLAGS), C, \ -- -ldl, ws2_32.lib winmm.lib, -lsocket -lnsl, -lpthread, $(BUILD_LIBHPROF_AIX_EXTRA_SRC))) -+ $(LIBDL), ws2_32.lib winmm.lib, -lsocket -lnsl, -lpthread, $(BUILD_LIBHPROF_AIX_EXTRA_SRC))) - - $(eval $(call SetupJVMTIDemo,minst, agent_util java_crw_demo)) - $(eval $(call SetupJVMTIDemo,mtrace, agent_util java_crw_demo)) ---- ./jdk/make/CompileJavaClasses.gmk Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/make/CompileJavaClasses.gmk Sun Feb 10 09:27:00 2019 -0800 -@@ -128,23 +128,32 @@ - sun/nio/fs/LinuxFileStore.java \ - sun/nio/fs/LinuxFileSystem.java \ - sun/nio/fs/LinuxFileSystemProvider.java \ -- sun/nio/fs/MagicFileTypeDetector.java \ - sun/nio/fs/LinuxNativeDispatcher.java \ - sun/nio/fs/LinuxUserDefinedFileAttributeView.java \ - sun/nio/fs/LinuxWatchService.java - endif - -+ifeq (, $(filter $(OPENJDK_TARGET_OS), linux bsd)) -+ EXFILES += sun/nio/fs/MagicFileTypeDetector.java -+endif -+ - ifneq ($(OPENJDK_TARGET_OS), macosx) -+ EXFILES += sun/nio/fs/MacOSXFileSystemProvider.java \ -+ sun/nio/fs/MacOSXFileSystem.java \ -+ sun/nio/fs/MacOSXNativeDispatcher.java -+endif -+ -+ifeq (, $(filter $(OPENJDK_TARGET_OS), bsd macosx)) - EXFILES += sun/nio/ch/BsdAsynchronousChannelProvider.java \ - sun/nio/ch/KQueue.java \ -+ sun/nio/ch/KQueueArrayWrapper.java \ - sun/nio/ch/KQueuePort.java \ -+ sun/nio/ch/KQueueSelectorImpl.java \ -+ sun/nio/ch/KQueueSelectorProvider.java \ - sun/nio/fs/BsdFileStore.java \ - sun/nio/fs/BsdFileSystem.java \ - sun/nio/fs/BsdFileSystemProvider.java \ - sun/nio/fs/BsdNativeDispatcher.java \ -- sun/nio/fs/MacOSXFileSystemProvider.java \ -- sun/nio/fs/MacOSXFileSystem.java \ -- sun/nio/fs/MacOSXNativeDispatcher.java \ - sun/tools/attach/BsdAttachProvider.java \ - sun/tools/attach/BsdVirtualMachine.java - endif -@@ -227,9 +236,9 @@ - # Exclude another implicitly not included file. - EXFILES += sun/util/locale/AsciiUtil.java - --ifeq (, $(filter $(OPENJDK_TARGET_OS), solaris macosx aix)) -+ifeq (, $(filter $(OPENJDK_TARGET_OS), solaris bsd macosx aix)) - # -- # only solaris, macosx and aix -+ # only solaris, BSD, macosx and aix - # - EXFILES += sun/nio/fs/PollingWatchService.java - endif -@@ -264,21 +273,26 @@ - $(wildcard $(JDK_TOPDIR)/src/closed/$(OPENJDK_TARGET_OS_API_DIR)/classes) - endif - --MACOSX_SRC_DIRS := --ifeq ($(OPENJDK_TARGET_OS), macosx) -- MACOSX_SRC_DIRS += $(JDK_TOPDIR)/src/macosx/classes -+BSD_SRC_DIRS := -+ifneq (, $(filter $(OPENJDK_TARGET_OS), bsd macosx)) -+ BSD_SRC_DIRS += $(JDK_TOPDIR)/src/bsd/classes - -- # this files are duplicated in MACOSX_SRC_DIRS -- EXFILES += $(JDK_TOPDIR)/src/solaris/classes/sun/nio/ch/DefaultSelectorProvider.java \ -- $(JDK_TOPDIR)/src/solaris/classes/sun/java2d/BackBufferCapsProvider.java \ -- $(JDK_TOPDIR)/src/solaris/classes/java/net/DefaultInterface.java \ -+ # these files are duplicated in BSD_SRC_DIRS -+ EXFILES += $(JDK_TOPDIR)/src/solaris/classes/java/net/DefaultInterface.java \ -+ $(JDK_TOPDIR)/src/solaris/classes/sun/nio/ch/DefaultSelectorProvider.java -+endif -+ -+ifeq ($(OPENJDK_TARGET_OS), macosx) -+ BSD_SRC_DIRS += $(JDK_TOPDIR)/src/macosx/classes -+ -+ # these files are duplicated in BSD_SRC_DIRS -+ EXFILES += $(JDK_TOPDIR)/src/solaris/classes/sun/java2d/BackBufferCapsProvider.java \ - $(JDK_TOPDIR)/src/solaris/classes/java/lang/ClassLoaderHelper.java \ - $(JDK_TOPDIR)/src/solaris/classes/sun/util/locale/provider/HostLocaleProviderAdapterImpl.java \ - $(JDK_TOPDIR)/src/solaris/classes/sun/nio/fs/GnomeFileTypeDetector.java \ - $(JDK_TOPDIR)/src/solaris/classes/sun/nio/ch/sctp/SctpChannelImpl.java \ - $(JDK_TOPDIR)/src/solaris/classes/sun/nio/ch/sctp/SctpMultiChannelImpl.java \ - $(JDK_TOPDIR)/src/solaris/classes/sun/nio/ch/sctp/SctpServerChannelImpl.java -- - endif - - # The security classes should not end up in the classes directory as that will prevent them -@@ -328,6 +342,7 @@ - SRC:=$(JDK_TOPDIR)/src/share/classes \ - $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/classes \ - $(MACOSX_SRC_DIRS) \ -+ $(BSD_SRC_DIRS) \ - $(AIX_SRC_DIRS) \ - $(JDK_OUTPUTDIR)/gensrc \ - $(JDK_OUTPUTDIR)/gensrc_no_srczip \ -@@ -347,7 +362,7 @@ - SETUP := GENERATE_JDKBYTECODE, \ - SRC := $(JDK_TOPDIR)/src/share/classes \ - $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/classes \ -- $(MACOSX_SRC_DIRS) \ -+ $(BSD_SRC_DIRS) \ - $(CLOSED_SRC_DIRS), \ - INCLUDES := $(SECURITY_PKGS), \ - EXCLUDES := $(EXCLUDES), \ ---- ./jdk/make/CompileLaunchers.gmk Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/make/CompileLaunchers.gmk Sun Feb 10 09:27:00 2019 -0800 -@@ -49,7 +49,7 @@ - ORIGIN_ROOT := /.. - endif - --ifeq ($(OPENJDK_TARGET_OS), macosx) -+ifneq ($(findstring $(OPENJDK_TARGET_OS), $(BSD_STATIC_LIBJLI) macosx), ) - ORIGIN_ARG := $(call SET_EXECUTABLE_ORIGIN) - else - ORIGIN_ARG := $(call SET_EXECUTABLE_ORIGIN,$(ORIGIN_ROOT)/lib$(OPENJDK_TARGET_CPU_LIBDIR)/jli) -@@ -60,7 +60,7 @@ - # System.loadLibrary("jawt") first. This was the behaviour described in the - # devloper documentation of JAWT and what worked with OpenJDK6. - # --ifneq ($(findstring $(OPENJDK_TARGET_OS), linux solaris), ) -+ifneq ($(findstring $(OPENJDK_TARGET_OS), linux solaris bsd), ) - ORIGIN_ARG += $(call SET_EXECUTABLE_ORIGIN,$(ORIGIN_ROOT)/lib$(OPENJDK_TARGET_CPU_LIBDIR)) - endif - -@@ -89,6 +89,18 @@ - - $1_LDFLAGS := $3 - $1_LDFLAGS_SUFFIX := -+ ifeq ($(OPENJDK_TARGET_OS), bsd) -+ ifeq ($(BSD_STATIC_LIBJLI), bsd) -+ $1_LDFLAGS += -Wl,--whole-archive $(JDK_OUTPUTDIR)/objs/libjli_static.a \ -+ -Wl,--no-whole-archive -+ $1_LDFLAGS_SUFFIX += -pthread -+ else -+ $1_LDFLAGS += \ -+ $(call SET_SHARED_LIBRARY_NAME,$(LIBRARY_PREFIX)$(SHARED_LIBRARY_SUFFIX)) -+ $1_LDFLAGS_SUFFIX += -L$(JDK_OUTPUTDIR)/lib$(OPENJDK_TARGET_CPU_LIBDIR)/jli -ljli -pthread -+ endif -+ endif -+ - ifeq ($(OPENJDK_TARGET_OS), macosx) - $1_PLIST_FILE := Info-cmdline.plist - ifneq ($(11), ) -@@ -162,9 +174,11 @@ - -DLIBARCHNAME='"$(OPENJDK_TARGET_CPU_LEGACY)"' \ - -DLAUNCHER_NAME='"$(LAUNCHER_NAME)"' \ - -DPROGNAME='"$1"' $(DPACKAGEPATH) \ -+ -DPACKAGE_PATH='"$(PACKAGE_PATH)"' \ - $2, \ - CFLAGS_linux := -fPIC, \ - CFLAGS_solaris := -KPIC -DHAVE_GETHRTIME, \ -+ CFLAGS_bsd := -fPIC, \ - LDFLAGS := $(LDFLAGS_JDKEXE) \ - $(ORIGIN_ARG) \ - $$($1_LDFLAGS), \ -@@ -195,7 +209,7 @@ - - BUILD_LAUNCHERS += $$(BUILD_LAUNCHER_$1) - -- ifneq (,$(filter $(OPENJDK_TARGET_OS), macosx aix)) -+ ifneq (,$(filter $(OPENJDK_TARGET_OS), $(BSD_STATIC_LIBJLI) macosx aix)) - $$(BUILD_LAUNCHER_$1): $(JDK_OUTPUTDIR)/objs/libjli_static.a - endif - -@@ -476,6 +490,7 @@ - CFLAGS_release := -DPRODUCT, \ - CFLAGS_linux := -fPIC, \ - CFLAGS_solaris := -KPIC, \ -+ CFLAGS_bsd := -fPIC, \ - CFLAGS_macosx := -fPIC, \ - MAPFILE := $(UNPACK_MAPFILE),\ - LDFLAGS := $(UNPACKEXE_ZIPOBJS), \ -@@ -538,7 +553,7 @@ - endif - endif - --ifeq ($(OPENJDK_TARGET_OS), linux) -+ifneq ($(findstring $(OPENJDK_TARGET_OS), linux bsd), ) - BUILD_JEXEC := 1 - endif # OPENJDK_TARGET_OS - -@@ -574,6 +589,7 @@ - $(BUILD_JEXEC_INC), \ - CFLAGS_linux := -fPIC, \ - CFLAGS_solaris := -KPIC, \ -+ CFLAGS_bsd := -fPIC, \ - LDFLAGS := $(LDFLAGS_JDKEXE) \ - $(call SET_SHARED_LIBRARY_NAME,$(LIBRARY_PREFIX)$(SHARED_LIBRARY_SUFFIX)), \ - OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/jexec_obj, \ -@@ -590,10 +606,7 @@ - # The java-rmi.cgi script in bin/ only gets delivered in certain situations - # - JAVA_RMI_CGI := $(JDK_OUTPUTDIR)/bin$(OUTPUT_SUBDIR)/java-rmi.cgi --ifeq ($(OPENJDK_TARGET_OS), linux) -- BUILD_LAUNCHERS += $(JAVA_RMI_CGI) --endif --ifeq ($(OPENJDK_TARGET_OS), solaris) -+ifneq ($(findstring $(OPENJDK_TARGET_OS), linux solaris bsd), ) - BUILD_LAUNCHERS += $(JAVA_RMI_CGI) - endif - -@@ -621,7 +634,7 @@ - LINK_JSPAWNHELPER_OBJECTS := $(JDK_OUTPUTDIR)/objs/libjava/childproc.o - LINK_JSPAWNHELPER_FLAGS := - --ifneq ($(findstring $(OPENJDK_TARGET_OS), macosx solaris aix), ) -+ifneq ($(findstring $(OPENJDK_TARGET_OS), bsd macosx solaris aix), ) - BUILD_JSPAWNHELPER := 1 - endif - ---- ./jdk/make/CopyFiles.gmk Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/make/CopyFiles.gmk Sun Feb 10 09:27:00 2019 -0800 -@@ -29,6 +29,8 @@ - - ifeq ($(OPENJDK_TARGET_OS), windows) - OPENJDK_TARGET_OS_INCLUDE = $(INCLUDEDIR)/win32 -+else ifeq ($(OPENJDK_TARGET_OS), bsd) -+ OPENJDK_TARGET_OS_INCLUDE = $(INCLUDEDIR)/$(shell uname -s | ${TR} "[:upper:]" "[:lower:]") - else ifeq ($(OPENJDK_TARGET_OS), macosx) - OPENJDK_TARGET_OS_INCLUDE = $(INCLUDEDIR)/darwin - endif -@@ -344,23 +346,23 @@ - $(RM) $(@) - # Now check for other permutations - ifeq ($(JVM_VARIANT_SERVER), true) -- $(PRINTF) "-server KNOWN\n">>$(@) -- $(PRINTF) "-client ALIASED_TO -server\n">>$(@) -+ $(PRINTF) -- "-server KNOWN\n">>$(@) -+ $(PRINTF) -- "-client ALIASED_TO -server\n">>$(@) - ifeq ($(JVM_VARIANT_MINIMAL1), true) -- $(PRINTF) "-minimal KNOWN\n">>$(@) -+ $(PRINTF) -- "-minimal KNOWN\n">>$(@) - endif - else - ifeq ($(JVM_VARIANT_CLIENT), true) -- $(PRINTF) "-client KNOWN\n">>$(@) -- $(PRINTF) "-server ALIASED_TO -client\n">>$(@) -+ $(PRINTF) -- "-client KNOWN\n">>$(@) -+ $(PRINTF) -- "-server ALIASED_TO -client\n">>$(@) - ifeq ($(JVM_VARIANT_MINIMAL1), true) -- $(PRINTF) "-minimal KNOWN\n">>$(@) -+ $(PRINTF) -- "-minimal KNOWN\n">>$(@) - endif - else - ifeq ($(JVM_VARIANT_MINIMAL1), true) -- $(PRINTF) "-minimal KNOWN\n">>$(@) -- $(PRINTF) "-server ALIASED_TO -minimal\n">>$(@) -- $(PRINTF) "-client ALIASED_TO -minimal\n">>$(@) -+ $(PRINTF) -- "-minimal KNOWN\n">>$(@) -+ $(PRINTF) -- "-server ALIASED_TO -minimal\n">>$(@) -+ $(PRINTF) -- "-client ALIASED_TO -minimal\n">>$(@) - endif - endif - endif ---- ./jdk/make/Images.gmk Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/make/Images.gmk Sun Feb 10 09:27:00 2019 -0800 -@@ -236,11 +236,11 @@ - endif - - JDK_LIB_FILES := $(NOT_JRE_LIB_FILES) --ifeq ($(OPENJDK_TARGET_OS), linux) -+ifneq ($(findstring $(OPENJDK_TARGET_OS), linux bsd),) - JDK_LIB_FILES += jexec - endif - --ifneq ($(findstring $(OPENJDK_TARGET_OS), linux solaris),) # If Linux or Solaris -+ifneq ($(findstring $(OPENJDK_TARGET_OS), linux solaris bsd),) # If Linux, Solaris, or BSD - JDK_LIB_FILES += $(LIBRARY_PREFIX)jli$(SHARED_LIBRARY_SUFFIX) \ - $(LIBRARY_PREFIX)jawt$(SHARED_LIBRARY_SUFFIX) - endif -@@ -391,7 +391,7 @@ - MAN_SRC_DIR = $(MAN_SRC_BASEDIR)/solaris/doc - MAN1_SUBDIR = sun/man/man1 - endif -- ifeq ($(OPENJDK_TARGET_OS), macosx) -+ ifneq ($(findstring $(OPENJDK_TARGET_OS), bsd macosx),) - MAN_SRC_DIR = $(MAN_SRC_BASEDIR)/bsd/doc - MAN1_SUBDIR = man - endif -@@ -447,7 +447,7 @@ - $(install-file) - endif - -- ifeq ($(OPENJDK_TARGET_OS), linux) -+ ifneq ($(findstring $(OPENJDK_TARGET_OS), linux bsd macosx),) - $(JRE_IMAGE_DIR)/man/ja: - $(ECHO) $(LOG_INFO) Creating $(patsubst $(OUTPUT_ROOT)/%,%,$@) - $(CD) $(@D) && $(RM) ja && $(LN) -s ja_JP.UTF-8 ja -@@ -455,19 +455,7 @@ - $(JDK_IMAGE_DIR)/man/ja: - $(ECHO) $(LOG_INFO) Creating $(patsubst $(OUTPUT_ROOT)/%,%,$@) - $(CD) $(@D) && $(RM) ja && $(LN) -s ja_JP.UTF-8 ja -- endif - -- ifeq ($(OPENJDK_TARGET_OS), macosx) -- $(JRE_IMAGE_DIR)/man/ja: -- $(ECHO) $(LOG_INFO) Creating $(patsubst $(OUTPUT_ROOT)/%,%,$@) -- $(CD) $(@D) && $(RM) ja && $(LN) -s ja_JP.UTF-8 ja -- -- $(JDK_IMAGE_DIR)/man/ja: -- $(ECHO) $(LOG_INFO) Creating $(patsubst $(OUTPUT_ROOT)/%,%,$@) -- $(CD) $(@D) && $(RM) ja && $(LN) -s ja_JP.UTF-8 ja -- endif -- -- ifeq ($(OPENJDK_TARGET_OS), linux) - JRE_MAN_PAGE_LIST = $(addprefix $(JRE_IMAGE_DIR)/man/man1/, $(JRE_MAN_PAGES)) \ - $(addprefix $(JRE_IMAGE_DIR)/man/ja_JP.UTF-8/man1/, $(JRE_MAN_PAGES)) \ - $(JRE_IMAGE_DIR)/man/ja -@@ -489,16 +477,6 @@ - $(addprefix $(JDK_IMAGE_DIR)/man/ja_JP.PCK/man1/, $(JDK_MAN_PAGES)) - endif - -- ifeq ($(OPENJDK_TARGET_OS), macosx) -- JRE_MAN_PAGE_LIST = $(addprefix $(JRE_IMAGE_DIR)/man/man1/, $(JRE_MAN_PAGES)) \ -- $(addprefix $(JRE_IMAGE_DIR)/man/ja_JP.UTF-8/man1/, $(JRE_MAN_PAGES)) \ -- $(JRE_IMAGE_DIR)/man/ja -- -- JDK_MAN_PAGE_LIST = $(addprefix $(JDK_IMAGE_DIR)/man/man1/, $(JDK_MAN_PAGES)) \ -- $(addprefix $(JDK_IMAGE_DIR)/man/ja_JP.UTF-8/man1/, $(JDK_MAN_PAGES)) \ -- $(JDK_IMAGE_DIR)/man/ja -- endif -- - endif # Windows - - ################################################################################ ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./jdk/make/data/classlist/classlist.bsd Sun Feb 10 09:27:00 2019 -0800 -@@ -0,0 +1,2559 @@ -+java/lang/Object -+java/lang/String -+java/io/Serializable -+java/lang/Comparable -+java/lang/CharSequence -+java/lang/Class -+java/lang/reflect/GenericDeclaration -+java/lang/reflect/AnnotatedElement -+java/lang/reflect/Type -+java/lang/Cloneable -+java/lang/ClassLoader -+java/lang/System -+java/lang/Throwable -+java/lang/Error -+java/lang/ThreadDeath -+java/lang/Exception -+java/lang/RuntimeException -+java/lang/SecurityManager -+java/security/ProtectionDomain -+java/security/AccessControlContext -+java/security/SecureClassLoader -+java/lang/ClassNotFoundException -+java/lang/ReflectiveOperationException -+java/lang/NoClassDefFoundError -+java/lang/LinkageError -+java/lang/ClassCastException -+java/lang/ArrayStoreException -+java/lang/VirtualMachineError -+java/lang/OutOfMemoryError -+java/lang/StackOverflowError -+java/lang/IllegalMonitorStateException -+java/lang/ref/Reference -+java/lang/ref/SoftReference -+java/lang/ref/WeakReference -+java/lang/ref/FinalReference -+java/lang/ref/PhantomReference -+sun/misc/Cleaner -+java/lang/ref/Finalizer -+java/lang/Thread -+java/lang/Runnable -+java/lang/ThreadGroup -+java/lang/Thread$UncaughtExceptionHandler -+java/util/Properties -+java/util/Hashtable -+java/util/Map -+java/util/Dictionary -+java/lang/reflect/AccessibleObject -+java/lang/reflect/Field -+java/lang/reflect/Member -+java/lang/reflect/Parameter -+java/lang/reflect/Method -+java/lang/reflect/Executable -+java/lang/reflect/Constructor -+sun/reflect/MagicAccessorImpl -+sun/reflect/MethodAccessorImpl -+sun/reflect/MethodAccessor -+sun/reflect/ConstructorAccessorImpl -+sun/reflect/ConstructorAccessor -+sun/reflect/DelegatingClassLoader -+sun/reflect/ConstantPool -+sun/reflect/UnsafeStaticFieldAccessorImpl -+sun/reflect/UnsafeFieldAccessorImpl -+sun/reflect/FieldAccessorImpl -+sun/reflect/FieldAccessor -+sun/reflect/CallerSensitive -+java/lang/annotation/Annotation -+java/lang/invoke/DirectMethodHandle -+java/lang/invoke/MethodHandle -+java/lang/invoke/MemberName -+java/lang/invoke/MethodHandleNatives -+java/lang/invoke/LambdaForm -+java/lang/invoke/MethodType -+java/lang/BootstrapMethodError -+java/lang/invoke/CallSite -+java/lang/invoke/ConstantCallSite -+java/lang/invoke/MutableCallSite -+java/lang/invoke/VolatileCallSite -+java/lang/StringBuffer -+java/lang/AbstractStringBuilder -+java/lang/Appendable -+java/lang/StringBuilder -+sun/misc/Unsafe -+java/io/ByteArrayInputStream -+java/io/InputStream -+java/io/Closeable -+java/lang/AutoCloseable -+java/io/File -+java/net/URLClassLoader -+java/net/URL -+java/util/jar/Manifest -+sun/misc/Launcher -+sun/misc/Launcher$AppClassLoader -+sun/misc/Launcher$ExtClassLoader -+java/security/CodeSource -+java/lang/StackTraceElement -+java/nio/Buffer -+java/lang/Boolean -+java/lang/Character -+java/lang/Float -+java/lang/Number -+java/lang/Double -+java/lang/Byte -+java/lang/Short -+java/lang/Integer -+java/lang/Long -+java/lang/NullPointerException -+java/lang/ArithmeticException -+java/io/ObjectStreamField -+java/lang/String$CaseInsensitiveComparator -+java/util/Comparator -+java/lang/RuntimePermission -+java/security/BasicPermission -+java/security/Permission -+java/security/Guard -+java/security/AccessController -+java/lang/reflect/ReflectPermission -+sun/reflect/ReflectionFactory$GetReflectionFactoryAction -+java/security/PrivilegedAction -+java/security/cert/Certificate -+java/util/Vector -+java/util/List -+java/util/Collection -+java/lang/Iterable -+java/util/RandomAccess -+java/util/AbstractList -+java/util/AbstractCollection -+java/util/Stack -+sun/reflect/ReflectionFactory -+java/lang/ref/Reference$Lock -+java/lang/ref/Reference$ReferenceHandler -+java/lang/ref/ReferenceQueue -+java/lang/ref/ReferenceQueue$Null -+java/lang/ref/ReferenceQueue$Lock -+java/lang/ref/Finalizer$FinalizerThread -+sun/misc/VM -+java/util/Hashtable$Entry -+java/util/Map$Entry -+java/lang/Math -+java/nio/charset/Charset -+sun/nio/cs/StandardCharsets -+sun/nio/cs/FastCharsetProvider -+java/nio/charset/spi/CharsetProvider -+sun/nio/cs/StandardCharsets$Aliases -+sun/util/PreHashedMap -+java/util/AbstractMap -+sun/nio/cs/StandardCharsets$Classes -+sun/nio/cs/StandardCharsets$Cache -+java/lang/ThreadLocal -+java/util/concurrent/atomic/AtomicInteger -+java/lang/NoSuchMethodError -+java/lang/IncompatibleClassChangeError -+java/util/ArrayList -+java/util/Collections -+java/util/Collections$EmptySet -+java/util/AbstractSet -+java/util/Set -+java/util/Collections$EmptyList -+java/util/Collections$EmptyMap -+java/util/Collections$UnmodifiableRandomAccessList -+java/util/Collections$UnmodifiableList -+java/util/Collections$UnmodifiableCollection -+sun/reflect/Reflection -+java/util/HashMap -+java/util/HashMap$Node -+java/lang/Class$3 -+java/lang/Class$ReflectionData -+java/lang/Class$Atomic -+sun/reflect/generics/repository/ClassRepository -+sun/reflect/generics/repository/GenericDeclRepository -+sun/reflect/generics/repository/AbstractRepository -+java/lang/Class$AnnotationData -+sun/reflect/annotation/AnnotationType -+java/lang/ClassValue$ClassValueMap -+java/util/WeakHashMap -+java/lang/reflect/Modifier -+java/lang/reflect/ReflectAccess -+sun/reflect/LangReflectAccess -+java/util/Arrays -+sun/nio/cs/UTF_8 -+sun/nio/cs/Unicode -+sun/nio/cs/HistoricallyNamedCharset -+java/lang/Class$1 -+sun/reflect/ReflectionFactory$1 -+sun/reflect/NativeConstructorAccessorImpl -+sun/reflect/DelegatingConstructorAccessorImpl -+java/lang/StringCoding -+java/lang/ThreadLocal$ThreadLocalMap -+java/lang/ThreadLocal$ThreadLocalMap$Entry -+java/lang/StringCoding$StringDecoder -+sun/nio/cs/UTF_8$Decoder -+sun/nio/cs/ArrayDecoder -+java/nio/charset/CharsetDecoder -+java/nio/charset/CodingErrorAction -+java/util/Hashtable$EntrySet -+java/util/Collections$SynchronizedSet -+java/util/Collections$SynchronizedCollection -+java/util/Objects -+java/util/Hashtable$Enumerator -+java/util/Enumeration -+java/util/Iterator -+java/lang/Runtime -+sun/misc/Version -+java/io/FileInputStream -+java/io/FileDescriptor -+java/io/FileDescriptor$1 -+sun/misc/JavaIOFileDescriptorAccess -+sun/misc/SharedSecrets -+java/io/FileOutputStream -+java/io/OutputStream -+java/io/Flushable -+java/io/BufferedInputStream -+java/io/FilterInputStream -+java/util/concurrent/atomic/AtomicReferenceFieldUpdater -+java/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl -+java/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl$1 -+java/security/PrivilegedExceptionAction -+sun/reflect/misc/ReflectUtil -+java/io/PrintStream -+java/io/FilterOutputStream -+java/io/BufferedOutputStream -+java/io/OutputStreamWriter -+java/io/Writer -+sun/nio/cs/StreamEncoder -+sun/security/action/GetPropertyAction -+sun/nio/cs/UTF_8$Encoder -+sun/nio/cs/ArrayEncoder -+java/nio/charset/CharsetEncoder -+java/nio/ByteBuffer -+java/nio/HeapByteBuffer -+java/nio/Bits -+java/nio/ByteOrder -+java/nio/Bits$1 -+sun/misc/JavaNioAccess -+java/io/BufferedWriter -+java/io/DefaultFileSystem -+java/io/UnixFileSystem -+java/io/FileSystem -+java/io/ExpiringCache -+java/io/ExpiringCache$1 -+java/util/LinkedHashMap -+java/io/File$PathStatus -+java/lang/Enum -+java/nio/file/Path -+java/nio/file/Watchable -+java/lang/StringCoding$StringEncoder -+java/lang/ClassLoader$3 -+java/io/ExpiringCache$Entry -+java/util/LinkedHashMap$Entry -+java/lang/ClassLoader$NativeLibrary -+java/lang/Terminator -+java/lang/Terminator$1 -+sun/misc/SignalHandler -+sun/misc/Signal -+sun/misc/NativeSignalHandler -+java/lang/Integer$IntegerCache -+sun/misc/OSEnvironment -+java/lang/System$2 -+sun/misc/JavaLangAccess -+java/lang/IllegalArgumentException -+java/lang/Compiler -+java/lang/Compiler$1 -+sun/misc/Launcher$Factory -+java/net/URLStreamHandlerFactory -+sun/security/util/Debug -+java/lang/ClassLoader$ParallelLoaders -+java/util/WeakHashMap$Entry -+java/util/Collections$SetFromMap -+java/util/WeakHashMap$KeySet -+java/net/URLClassLoader$7 -+sun/misc/JavaNetAccess -+java/util/StringTokenizer -+sun/misc/Launcher$ExtClassLoader$1 -+sun/misc/MetaIndex -+java/io/BufferedReader -+java/io/Reader -+java/lang/Readable -+java/io/FileReader -+java/io/InputStreamReader -+sun/nio/cs/StreamDecoder -+java/nio/CharBuffer -+java/nio/HeapCharBuffer -+java/nio/charset/CoderResult -+java/nio/charset/CoderResult$1 -+java/nio/charset/CoderResult$Cache -+java/nio/charset/CoderResult$2 -+java/lang/reflect/Array -+java/io/FileInputStream$1 -+sun/net/www/ParseUtil -+java/util/BitSet -+java/util/Locale -+java/util/Locale$Cache -+sun/util/locale/LocaleObjectCache -+java/util/concurrent/ConcurrentHashMap -+java/util/concurrent/ConcurrentMap -+java/util/concurrent/ConcurrentHashMap$Segment -+java/util/concurrent/locks/ReentrantLock -+java/util/concurrent/locks/Lock -+java/util/concurrent/ConcurrentHashMap$Node -+java/util/concurrent/ConcurrentHashMap$CounterCell -+java/util/concurrent/ConcurrentHashMap$KeySetView -+java/util/concurrent/ConcurrentHashMap$CollectionView -+java/util/concurrent/ConcurrentHashMap$ValuesView -+java/util/concurrent/ConcurrentHashMap$EntrySetView -+sun/util/locale/BaseLocale -+sun/util/locale/BaseLocale$Cache -+sun/util/locale/BaseLocale$Key -+sun/util/locale/LocaleObjectCache$CacheEntry -+java/util/Locale$LocaleKey -+sun/util/locale/LocaleUtils -+java/lang/CharacterData -+java/lang/CharacterDataLatin1 -+java/net/Parts -+sun/net/www/protocol/file/Handler -+java/net/URLStreamHandler -+java/util/HashMap$TreeNode -+java/security/ProtectionDomain$JavaSecurityAccessImpl -+sun/misc/JavaSecurityAccess -+java/security/ProtectionDomain$2 -+sun/misc/JavaSecurityProtectionDomainAccess -+java/security/ProtectionDomain$Key -+java/security/Principal -+java/util/HashSet -+sun/misc/URLClassPath -+sun/net/www/protocol/jar/Handler -+sun/misc/Launcher$AppClassLoader$1 -+java/lang/SystemClassLoaderAction -+java/lang/invoke/MethodHandleImpl -+java/lang/invoke/MethodHandleImpl$1 -+java/lang/invoke/MethodHandleImpl$2 -+java/util/function/Function -+java/lang/invoke/MethodHandleImpl$3 -+java/lang/invoke/MethodHandleImpl$4 -+java/lang/ClassValue -+java/lang/ClassValue$Entry -+java/lang/ClassValue$Identity -+java/lang/ClassValue$Version -+java/lang/invoke/MemberName$Factory -+java/lang/invoke/MethodHandleStatics -+java/lang/invoke/MethodHandleStatics$1 -+sun/misc/PostVMInitHook -+sun/usagetracker/UsageTrackerClient -+java/util/concurrent/atomic/AtomicBoolean -+sun/usagetracker/UsageTrackerClient$1 -+sun/usagetracker/UsageTrackerClient$4 -+sun/usagetracker/UsageTrackerClient$3 -+java/io/FileOutputStream$1 -+sun/launcher/LauncherHelper -+java/net/URLClassLoader$1 -+sun/net/util/URLUtil -+sun/misc/URLClassPath$3 -+sun/misc/URLClassPath$JarLoader -+sun/misc/URLClassPath$Loader -+java/util/zip/ZipFile -+java/util/zip/ZipConstants -+java/util/zip/ZipFile$1 -+sun/misc/JavaUtilZipFileAccess -+sun/misc/URLClassPath$JarLoader$1 -+sun/misc/FileURLMapper -+java/util/jar/JarFile -+java/util/jar/JavaUtilJarAccessImpl -+sun/misc/JavaUtilJarAccess -+java/nio/charset/StandardCharsets -+sun/nio/cs/US_ASCII -+sun/nio/cs/ISO_8859_1 -+sun/nio/cs/UTF_16BE -+sun/nio/cs/UTF_16LE -+sun/nio/cs/UTF_16 -+java/util/ArrayDeque -+java/util/Deque -+java/util/Queue -+java/util/zip/ZipCoder -+sun/misc/PerfCounter -+sun/misc/Perf$GetPerfAction -+sun/misc/Perf -+sun/misc/PerfCounter$CoreCounters -+sun/nio/ch/DirectBuffer -+java/nio/DirectByteBuffer -+java/nio/MappedByteBuffer -+java/nio/DirectLongBufferU -+java/nio/LongBuffer -+sun/misc/JarIndex -+sun/misc/ExtensionDependency -+java/util/zip/ZipEntry -+java/util/jar/JarFile$JarFileEntry -+java/util/jar/JarEntry -+java/util/zip/ZipFile$ZipFileInputStream -+java/util/zip/Inflater -+java/util/zip/ZStreamRef -+java/util/zip/ZipFile$ZipFileInflaterInputStream -+java/util/zip/InflaterInputStream -+sun/misc/IOUtils -+sun/misc/URLClassPath$JarLoader$2 -+sun/misc/Resource -+sun/nio/ByteBuffered -+java/security/Permissions -+java/security/PermissionCollection -+sun/net/www/protocol/file/FileURLConnection -+sun/net/www/URLConnection -+java/net/URLConnection -+sun/net/www/MessageHeader -+java/io/FilePermission -+java/io/FilePermission$1 -+java/io/FilePermissionCollection -+java/security/AllPermission -+java/security/UnresolvedPermission -+java/security/BasicPermissionCollection -+javax/swing/JLabel -+javax/swing/SwingConstants -+javax/accessibility/Accessible -+javax/swing/JComponent -+javax/swing/TransferHandler$HasGetTransferHandler -+java/awt/Container -+java/awt/Component -+java/awt/image/ImageObserver -+java/awt/MenuContainer -+sun/launcher/LauncherHelper$FXHelper -+java/lang/Class$MethodArray -+java/lang/InterruptedException -+javax/swing/JFrame -+javax/swing/WindowConstants -+javax/swing/RootPaneContainer -+java/awt/Frame -+java/awt/Window -+java/util/concurrent/ConcurrentHashMap$ForwardingNode -+java/awt/Graphics -+java/lang/Void -+sun/util/logging/PlatformLogger -+sun/util/logging/PlatformLogger$Level -+sun/util/logging/PlatformLogger$1 -+sun/util/logging/PlatformLogger$DefaultLoggerProxy -+sun/util/logging/PlatformLogger$LoggerProxy -+sun/util/logging/PlatformLogger$JavaLoggerProxy -+sun/util/logging/LoggingSupport -+sun/util/logging/LoggingSupport$1 -+java/util/logging/LoggingProxyImpl -+sun/util/logging/LoggingProxy -+sun/reflect/UnsafeFieldAccessorFactory -+sun/reflect/UnsafeQualifiedStaticObjectFieldAccessorImpl -+sun/reflect/UnsafeQualifiedStaticFieldAccessorImpl -+java/util/HashMap$EntrySet -+java/util/HashMap$EntryIterator -+java/util/HashMap$HashIterator -+sun/util/logging/LoggingSupport$2 -+java/util/Date -+sun/util/calendar/CalendarSystem -+sun/util/calendar/Gregorian -+sun/util/calendar/BaseCalendar -+sun/util/calendar/AbstractCalendar -+java/awt/Component$AWTTreeLock -+java/awt/Toolkit -+java/awt/Toolkit$4 -+sun/awt/AWTAccessor$ToolkitAccessor -+sun/awt/AWTAccessor -+java/awt/Toolkit$5 -+sun/util/CoreResourceBundleControl -+java/util/ResourceBundle$Control -+java/util/Arrays$ArrayList -+java/util/ResourceBundle$Control$CandidateListCache -+java/util/ResourceBundle -+java/util/ResourceBundle$1 -+java/util/spi/ResourceBundleControlProvider -+java/util/ServiceLoader -+java/util/ServiceLoader$LazyIterator -+java/util/ServiceLoader$1 -+java/util/LinkedHashMap$LinkedEntrySet -+java/util/LinkedHashMap$LinkedEntryIterator -+java/util/LinkedHashMap$LinkedHashIterator -+sun/misc/Launcher$BootClassPathHolder -+sun/misc/Launcher$BootClassPathHolder$1 -+sun/misc/URLClassPath$2 -+java/lang/ClassLoader$2 -+sun/misc/URLClassPath$1 -+java/net/URLClassLoader$3 -+sun/misc/CompoundEnumeration -+java/io/FileNotFoundException -+java/io/IOException -+java/security/PrivilegedActionException -+java/net/URLClassLoader$3$1 -+java/util/ResourceBundle$RBClassLoader -+java/util/ResourceBundle$RBClassLoader$1 -+java/util/ResourceBundle$CacheKey -+java/util/ResourceBundle$LoaderReference -+java/util/ResourceBundle$CacheKeyReference -+java/util/ResourceBundle$SingleFormatControl -+java/util/LinkedList -+java/util/AbstractSequentialList -+java/util/LinkedList$Node -+sun/awt/resources/awt -+java/util/ListResourceBundle -+java/awt/Toolkit$3 -+java/awt/GraphicsEnvironment -+java/lang/invoke/LambdaMetafactory -+java/lang/invoke/MethodHandles$Lookup -+java/lang/invoke/MethodType$ConcurrentWeakInternSet -+java/lang/invoke/MethodTypeForm -+java/lang/invoke/Invokers -+java/lang/invoke/MethodType$ConcurrentWeakInternSet$WeakEntry -+java/lang/invoke/MethodHandles -+sun/invoke/util/Wrapper -+sun/invoke/util/Wrapper$Format -+java/lang/Byte$ByteCache -+java/lang/Short$ShortCache -+java/lang/Character$CharacterCache -+java/lang/Long$LongCache -+sun/invoke/util/VerifyAccess -+sun/invoke/util/ValueConversions -+java/lang/NoSuchMethodException -+java/lang/invoke/LambdaForm$BasicType -+java/lang/invoke/LambdaForm$Name -+java/lang/invoke/LambdaForm$NamedFunction -+java/lang/invoke/SimpleMethodHandle -+java/lang/invoke/BoundMethodHandle -+java/lang/invoke/BoundMethodHandle$SpeciesData -+java/lang/invoke/BoundMethodHandle$Factory -+java/lang/invoke/BoundMethodHandle$Species_L -+java/util/HashMap$Values -+java/util/HashMap$ValueIterator -+sun/invoke/util/BytecodeDescriptor -+java/lang/invoke/DirectMethodHandle$Lazy -+java/lang/InstantiationException -+java/util/Collections$UnmodifiableCollection$1 -+java/util/AbstractList$Itr -+java/lang/invoke/InvokerBytecodeGenerator -+jdk/internal/org/objectweb/asm/ClassWriter -+jdk/internal/org/objectweb/asm/ClassVisitor -+jdk/internal/org/objectweb/asm/ByteVector -+jdk/internal/org/objectweb/asm/Item -+jdk/internal/org/objectweb/asm/MethodWriter -+jdk/internal/org/objectweb/asm/MethodVisitor -+jdk/internal/org/objectweb/asm/Type -+jdk/internal/org/objectweb/asm/Label -+jdk/internal/org/objectweb/asm/Frame -+jdk/internal/org/objectweb/asm/AnnotationWriter -+jdk/internal/org/objectweb/asm/AnnotationVisitor -+java/lang/invoke/MethodHandleImpl$Intrinsic -+java/lang/invoke/InvokerBytecodeGenerator$2 -+sun/invoke/util/VerifyType -+sun/invoke/empty/Empty -+java/lang/NoSuchFieldException -+java/lang/invoke/InvokerBytecodeGenerator$CpPatch -+java/lang/invoke/DirectMethodHandle$Accessor -+java/util/ArrayList$Itr -+java/util/RandomAccessSubList -+java/util/SubList -+java/util/SubList$1 -+java/util/ListIterator -+java/util/AbstractList$ListItr -+java/lang/invoke/MethodHandleImpl$AsVarargsCollector -+java/lang/invoke/DelegatingMethodHandle -+java/lang/invoke/WrongMethodTypeException -+java/lang/invoke/MethodHandleImpl$Lazy -+java/lang/invoke/MethodHandleImpl$IntrinsicMethodHandle -+java/lang/NoSuchFieldError -+java/lang/IllegalAccessException -+java/lang/invoke/LambdaFormEditor -+java/lang/invoke/LambdaFormEditor$Transform$Kind -+java/lang/invoke/LambdaFormEditor$Transform -+java/lang/invoke/LambdaFormBuffer -+jdk/internal/org/objectweb/asm/FieldWriter -+jdk/internal/org/objectweb/asm/FieldVisitor -+java/lang/invoke/InnerClassLambdaMetafactory -+java/lang/invoke/AbstractValidatingLambdaMetafactory -+java/util/PropertyPermission -+java/security/AccessController$1 -+sun/security/util/SecurityConstants -+java/net/NetPermission -+java/security/SecurityPermission -+java/net/SocketPermission -+sun/security/action/GetBooleanAction -+java/security/AllPermissionCollection -+java/lang/invoke/InfoFromMemberName -+java/lang/invoke/MethodHandleInfo -+java/lang/invoke/InnerClassLambdaMetafactory$ForwardingMethodGenerator -+java/lang/invoke/TypeConvertingMethodAdapter -+java/lang/invoke/InnerClassLambdaMetafactory$1 -+java/lang/ProcessEnvironment -+java/lang/ProcessEnvironment$Variable -+java/lang/ProcessEnvironment$ExternalData -+java/lang/ProcessEnvironment$Value -+java/lang/ProcessEnvironment$StringEnvironment -+java/util/Collections$UnmodifiableMap -+java/awt/Toolkit$1 -+java/awt/event/KeyEvent -+java/awt/event/InputEvent -+java/awt/event/ComponentEvent -+java/awt/AWTEvent -+java/util/EventObject -+java/awt/AWTEvent$1 -+sun/awt/AWTAccessor$AWTEventAccessor -+java/awt/event/NativeLibLoader -+java/awt/event/NativeLibLoader$1 -+java/awt/event/InputEvent$1 -+sun/awt/AWTAccessor$InputEventAccessor -+java/awt/event/KeyEvent$1 -+sun/awt/AWTAccessor$KeyEventAccessor -+java/awt/Component$1 -+sun/awt/AWTAccessor$ComponentAccessor -+java/awt/Component$DummyRequestFocusController -+sun/awt/RequestFocusController -+java/awt/LayoutManager -+java/awt/LightweightDispatcher -+java/awt/event/AWTEventListener -+java/util/EventListener -+java/awt/Dimension -+java/awt/geom/Dimension2D -+java/awt/Container$1 -+sun/awt/AWTAccessor$ContainerAccessor -+javax/swing/JComponent$1 -+java/awt/ComponentOrientation -+java/awt/Component$3 -+sun/awt/AppContext -+java/util/IdentityHashMap -+java/util/Collections$SynchronizedMap -+sun/awt/AppContext$GetAppContextLock -+sun/awt/AppContext$6 -+sun/misc/JavaAWTAccess -+sun/awt/AppContext$3 -+sun/awt/AppContext$2 -+sun/awt/SunToolkit -+sun/awt/WindowClosingSupport -+sun/awt/WindowClosingListener -+sun/awt/ComponentFactory -+sun/awt/InputMethodSupport -+sun/awt/KeyboardFocusManagerPeerProvider -+java/util/concurrent/locks/ReentrantLock$NonfairSync -+java/util/concurrent/locks/ReentrantLock$Sync -+java/util/concurrent/locks/AbstractQueuedSynchronizer -+java/util/concurrent/locks/AbstractOwnableSynchronizer -+java/util/concurrent/locks/AbstractQueuedSynchronizer$Node -+java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject -+java/util/concurrent/locks/Condition -+sun/misc/SoftCache -+sun/awt/AppContext$State -+sun/awt/AppContext$1 -+java/awt/EventQueue -+java/awt/EventQueue$1 -+java/awt/EventQueue$2 -+sun/awt/AWTAccessor$EventQueueAccessor -+java/awt/Queue -+sun/awt/MostRecentKeyValue -+sun/awt/PostEventQueue -+javax/swing/event/EventListenerList -+javax/swing/SwingUtilities -+javax/swing/RepaintManager -+javax/swing/RepaintManager$DisplayChangedHandler -+sun/awt/DisplayChangedListener -+javax/swing/RepaintManager$1 -+sun/swing/SwingAccessor$RepaintManagerAccessor -+sun/swing/SwingAccessor -+sun/awt/X11GraphicsEnvironment -+sun/java2d/SunGraphicsEnvironment -+sun/awt/X11GraphicsEnvironment$1 -+sun/awt/X11/XErrorHandlerUtil -+sun/awt/X11/XlibWrapper -+sun/java2d/UnixSurfaceManagerFactory -+sun/java2d/SurfaceManagerFactory -+sun/awt/SunDisplayChanger -+sun/java2d/SunGraphicsEnvironment$1 -+sun/misc/FloatingDecimal -+sun/misc/FloatingDecimal$ExceptionalBinaryToASCIIBuffer -+sun/misc/FloatingDecimal$BinaryToASCIIConverter -+sun/misc/FloatingDecimal$BinaryToASCIIBuffer -+sun/misc/FloatingDecimal$1 -+sun/misc/FloatingDecimal$PreparedASCIIToBinaryBuffer -+sun/misc/FloatingDecimal$ASCIIToBinaryConverter -+java/lang/NumberFormatException -+java/lang/StringIndexOutOfBoundsException -+java/lang/IndexOutOfBoundsException -+java/awt/Font -+java/awt/Font$FontAccessImpl -+sun/font/FontAccess -+java/awt/geom/AffineTransform -+sun/font/AttributeValues -+sun/font/EAttribute -+java/text/AttributedCharacterIterator$Attribute -+java/lang/Class$4 -+sun/reflect/NativeMethodAccessorImpl -+sun/reflect/DelegatingMethodAccessorImpl -+java/awt/font/TextAttribute -+java/awt/Toolkit$2 -+sun/awt/X11/XToolkit -+sun/awt/UNIXToolkit -+java/util/TreeMap -+java/util/NavigableMap -+java/util/SortedMap -+java/awt/GraphicsDevice -+sun/awt/X11GraphicsDevice -+sun/awt/X11GraphicsConfig -+sun/awt/image/SurfaceManager$ProxiedGraphicsConfig -+java/awt/GraphicsConfiguration -+java/awt/ImageCapabilities -+sun/java2d/x11/X11SurfaceData -+sun/java2d/x11/XSurfaceData -+sun/java2d/SurfaceData -+java/awt/Transparency -+sun/java2d/DisposerTarget -+sun/java2d/StateTrackable -+sun/java2d/Surface -+sun/java2d/InvalidPipeException -+java/lang/IllegalStateException -+sun/java2d/NullSurfaceData -+sun/java2d/StateTrackable$State -+sun/java2d/loops/SurfaceType -+sun/awt/image/PixelConverter -+sun/awt/image/PixelConverter$Xrgb -+sun/awt/image/PixelConverter$Argb -+sun/awt/image/PixelConverter$ArgbPre -+sun/awt/image/PixelConverter$Xbgr -+sun/awt/image/PixelConverter$Rgba -+sun/awt/image/PixelConverter$RgbaPre -+sun/awt/image/PixelConverter$Ushort565Rgb -+sun/awt/image/PixelConverter$Ushort555Rgb -+sun/awt/image/PixelConverter$Ushort555Rgbx -+sun/awt/image/PixelConverter$Ushort4444Argb -+sun/awt/image/PixelConverter$ByteGray -+sun/awt/image/PixelConverter$UshortGray -+sun/awt/image/PixelConverter$Rgbx -+sun/awt/image/PixelConverter$Bgrx -+sun/awt/image/PixelConverter$ArgbBm -+java/awt/image/ColorModel -+java/awt/image/ColorModel$1 -+java/awt/image/DirectColorModel -+java/awt/image/PackedColorModel -+java/awt/color/ColorSpace -+java/awt/color/ICC_Profile -+sun/java2d/cmm/ProfileDeferralInfo -+sun/java2d/cmm/ProfileDeferralMgr -+java/awt/color/ICC_ProfileRGB -+java/awt/color/ICC_Profile$1 -+sun/java2d/cmm/ProfileActivator -+java/awt/color/ICC_ColorSpace -+sun/java2d/StateTrackableDelegate -+sun/java2d/StateTrackableDelegate$2 -+sun/java2d/pipe/NullPipe -+sun/java2d/pipe/PixelDrawPipe -+sun/java2d/pipe/PixelFillPipe -+sun/java2d/pipe/ShapeDrawPipe -+sun/java2d/pipe/TextPipe -+sun/java2d/pipe/DrawImagePipe -+java/awt/image/IndexColorModel -+sun/java2d/pipe/LoopPipe -+sun/java2d/pipe/ParallelogramPipe -+sun/java2d/pipe/LoopBasedPipe -+sun/java2d/pipe/RenderingEngine -+sun/java2d/pipe/RenderingEngine$1 -+sun/dc/DuctusRenderingEngine -+sun/java2d/pipe/OutlineTextRenderer -+sun/java2d/pipe/SolidTextRenderer -+sun/java2d/pipe/GlyphListLoopPipe -+sun/java2d/pipe/GlyphListPipe -+sun/java2d/pipe/AATextRenderer -+sun/java2d/pipe/LCDTextRenderer -+sun/java2d/pipe/AlphaColorPipe -+sun/java2d/pipe/CompositePipe -+sun/java2d/SurfaceData$PixelToShapeLoopConverter -+sun/java2d/pipe/PixelToShapeConverter -+sun/java2d/SurfaceData$PixelToPgramLoopConverter -+sun/java2d/pipe/PixelToParallelogramConverter -+sun/java2d/pipe/TextRenderer -+sun/java2d/pipe/SpanClipRenderer -+sun/java2d/pipe/Region -+sun/java2d/pipe/RegionIterator -+sun/java2d/pipe/Region$ImmutableRegion -+sun/java2d/pipe/AAShapePipe -+sun/java2d/pipe/AlphaPaintPipe -+sun/java2d/pipe/SpanShapeRenderer$Composite -+sun/java2d/pipe/SpanShapeRenderer -+sun/java2d/pipe/GeneralCompositePipe -+sun/java2d/pipe/DrawImage -+sun/java2d/loops/RenderCache -+sun/java2d/loops/RenderCache$Entry -+sun/java2d/loops/XORComposite -+java/awt/Composite -+sun/font/X11TextRenderer -+sun/java2d/loops/GraphicsPrimitive -+sun/java2d/x11/X11PMBlitLoops -+sun/java2d/loops/Blit -+sun/java2d/loops/GraphicsPrimitiveMgr -+sun/java2d/loops/CompositeType -+sun/java2d/SunGraphics2D -+sun/awt/ConstrainableGraphics -+sun/java2d/DestSurfaceProvider -+java/awt/Graphics2D -+java/awt/Color -+java/awt/Paint -+java/awt/AlphaComposite -+java/awt/geom/Path2D -+java/awt/Shape -+java/awt/geom/Path2D$Float -+sun/awt/SunHints -+sun/java2d/loops/BlitBg -+sun/java2d/loops/ScaledBlit -+sun/java2d/loops/FillRect -+sun/java2d/loops/FillSpans -+sun/java2d/loops/FillParallelogram -+sun/java2d/loops/DrawParallelogram -+sun/java2d/loops/DrawLine -+sun/java2d/loops/DrawRect -+sun/java2d/loops/DrawPolygons -+sun/java2d/loops/DrawPath -+sun/java2d/loops/FillPath -+sun/java2d/loops/MaskBlit -+sun/java2d/loops/MaskFill -+sun/java2d/loops/DrawGlyphList -+sun/java2d/loops/DrawGlyphListAA -+sun/java2d/loops/DrawGlyphListLCD -+sun/java2d/loops/TransformHelper -+java/awt/BasicStroke -+java/awt/Stroke -+sun/misc/PerformanceLogger -+sun/misc/PerformanceLogger$TimeData -+sun/java2d/pipe/ValidatePipe -+sun/awt/SunHints$Key -+java/awt/RenderingHints$Key -+sun/awt/SunHints$Value -+sun/awt/SunHints$LCDContrastKey -+sun/java2d/loops/CustomComponent -+sun/java2d/loops/GraphicsPrimitiveProxy -+sun/java2d/loops/GeneralRenderer -+sun/java2d/loops/GraphicsPrimitiveMgr$1 -+sun/java2d/loops/GraphicsPrimitiveMgr$2 -+sun/java2d/x11/X11PMBlitLoops$DelegateBlitLoop -+sun/java2d/x11/X11PMBlitBgLoops -+sun/java2d/x11/X11SurfaceData$LazyPipe -+sun/awt/X11GraphicsConfig$X11GCDisposerRecord -+sun/java2d/DisposerRecord -+sun/java2d/Disposer -+sun/java2d/Disposer$1 -+sun/misc/ThreadGroupUtils -+sun/awt/X11/XModifierKeymap -+sun/awt/X11/XWrapperBase -+sun/awt/X11/Native -+sun/awt/X11/Native$1 -+sun/awt/X11/XToolkit$3 -+sun/awt/X11/XToolkit$4 -+sun/awt/X11/XEventDispatcher -+java/awt/Toolkit$DesktopPropertyChangeSupport -+java/beans/PropertyChangeSupport -+java/beans/PropertyChangeSupport$PropertyChangeListenerMap -+java/beans/ChangeListenerMap -+java/beans/PropertyChangeListener -+sun/awt/SunToolkit$ModalityListenerList -+sun/awt/ModalityListener -+sun/font/FontConfigManager -+sun/font/FontConfigManager$FontConfigInfo -+sun/awt/X11/AwtScreenData -+sun/awt/X11/XToolkit$1 -+java/lang/invoke/DirectMethodHandle$Special -+sun/awt/X11/XToolkit$2 -+java/lang/ApplicationShutdownHooks -+java/lang/ApplicationShutdownHooks$1 -+java/lang/Shutdown -+java/lang/Shutdown$Lock -+sun/awt/X11/XWM -+sun/awt/X11/XAtom -+java/awt/Insets -+sun/awt/X11/XWM$1 -+sun/awt/X11/XErrorHandler$XBaseErrorHandler -+sun/awt/X11/XErrorHandler -+sun/awt/X11/XSetWindowAttributes -+sun/awt/X11/XNETProtocol -+sun/awt/X11/XStateProtocol -+sun/awt/X11/XLayerProtocol -+sun/awt/X11/XProtocol -+sun/awt/X11/WindowPropertyGetter -+sun/awt/X11/UnsafeXDisposerRecord -+sun/awt/X11/XPropertyCache -+sun/awt/X11/XWINProtocol -+sun/awt/X11/XAtomList -+java/awt/Rectangle -+java/awt/geom/Rectangle2D -+sun/awt/X11/XEvent -+java/awt/geom/RectangularShape -+javax/swing/RepaintManager$ProcessingRunnable -+com/sun/java/swing/SwingUtilities3 -+javax/swing/UIManager -+javax/swing/UIManager$LookAndFeelInfo -+sun/awt/OSInfo -+sun/awt/OSInfo$WindowsVersion -+sun/awt/OSInfo$1 -+sun/awt/OSInfo$OSType -+sun/swing/SwingUtilities2 -+java/awt/font/FontRenderContext -+java/awt/RenderingHints -+sun/swing/StringUIClientPropertyKey -+sun/swing/UIClientPropertyKey -+sun/swing/SwingUtilities2$LSBCacheEntry -+javax/swing/UIManager$LAFState -+javax/swing/UIDefaults -+javax/swing/MultiUIDefaults -+javax/swing/UIManager$1 -+javax/swing/plaf/metal/MetalLookAndFeel -+javax/swing/plaf/basic/BasicLookAndFeel -+javax/swing/LookAndFeel -+sun/swing/DefaultLookup -+javax/swing/plaf/metal/OceanTheme -+javax/swing/plaf/metal/DefaultMetalTheme -+javax/swing/plaf/metal/MetalTheme -+javax/swing/plaf/ColorUIResource -+javax/swing/plaf/UIResource -+sun/swing/PrintColorUIResource -+javax/swing/plaf/metal/DefaultMetalTheme$FontDelegate -+javax/swing/plaf/FontUIResource -+sun/swing/SwingLazyValue -+javax/swing/UIDefaults$LazyValue -+javax/swing/UIDefaults$ActiveValue -+javax/swing/plaf/InsetsUIResource -+javax/swing/plaf/BorderUIResource$EmptyBorderUIResource -+javax/swing/border/EmptyBorder -+javax/swing/border/AbstractBorder -+javax/swing/border/Border -+sun/swing/SwingUtilities2$2 -+javax/swing/plaf/basic/BasicLookAndFeel$2 -+javax/swing/plaf/DimensionUIResource -+javax/swing/UIDefaults$LazyInputMap -+javax/swing/plaf/metal/MetalLookAndFeel$FontActiveValue -+sun/swing/SwingUtilities2$AATextInfo -+sun/awt/HeadlessToolkit -+sun/awt/X11/XAWTXSettings -+sun/awt/X11/XMSelectionListener -+sun/awt/XSettings -+sun/awt/X11/XMSelection -+sun/awt/X11/XMSelection$1 -+sun/awt/X11/XMSelection$3 -+sun/awt/X11/XErrorHandler$IgnoreBadWindowHandler -+sun/awt/XSettings$Update -+java/beans/PropertyChangeEvent -+java/awt/Toolkit$DesktopPropertyChangeSupport$1 -+java/util/IdentityHashMap$Values -+java/util/IdentityHashMap$ValueIterator -+java/util/IdentityHashMap$IdentityHashMapIterator -+java/util/HashMap$KeySet -+java/util/HashMap$KeyIterator -+javax/swing/plaf/metal/MetalLookAndFeel$AATextListener -+java/beans/PropertyChangeListenerProxy -+java/util/EventListenerProxy -+javax/swing/plaf/metal/OceanTheme$1 -+javax/swing/plaf/metal/OceanTheme$2 -+javax/swing/plaf/metal/OceanTheme$3 -+javax/swing/plaf/metal/OceanTheme$4 -+javax/swing/plaf/metal/OceanTheme$5 -+javax/swing/plaf/metal/OceanTheme$6 -+javax/swing/SwingPaintEventDispatcher -+sun/awt/PaintEventDispatcher -+java/awt/KeyboardFocusManager -+java/awt/KeyEventDispatcher -+java/awt/KeyEventPostProcessor -+java/awt/KeyboardFocusManager$1 -+sun/awt/AWTAccessor$KeyboardFocusManagerAccessor -+java/awt/AWTKeyStroke -+java/awt/AWTKeyStroke$1 -+java/awt/DefaultKeyboardFocusManager -+java/awt/DefaultKeyboardFocusManager$1 -+sun/awt/AWTAccessor$DefaultKeyboardFocusManagerAccessor -+java/awt/DefaultFocusTraversalPolicy -+java/awt/ContainerOrderFocusTraversalPolicy -+java/awt/FocusTraversalPolicy -+java/util/Collections$UnmodifiableSet -+sun/awt/X11/XKeyboardFocusManagerPeer -+sun/awt/KeyboardFocusManagerPeerImpl -+java/awt/peer/KeyboardFocusManagerPeer -+javax/swing/UIManager$2 -+javax/swing/JRootPane -+javax/swing/UIDefaults$TextAndMnemonicHashMap -+com/sun/swing/internal/plaf/metal/resources/metal -+sun/util/ResourceBundleEnumeration -+com/sun/swing/internal/plaf/basic/resources/basic -+javax/swing/plaf/metal/MetalLabelUI -+javax/swing/plaf/basic/BasicLabelUI -+javax/swing/plaf/LabelUI -+javax/swing/plaf/ComponentUI -+sun/reflect/misc/MethodUtil -+sun/reflect/misc/MethodUtil$1 -+sun/net/www/protocol/jar/JarURLConnection -+java/net/JarURLConnection -+sun/net/www/protocol/jar/JarFileFactory -+sun/net/www/protocol/jar/URLJarFile$URLJarFileCloseController -+java/net/HttpURLConnection -+sun/net/www/protocol/jar/URLJarFile -+sun/net/www/protocol/jar/URLJarFile$URLJarFileEntry -+sun/net/www/protocol/jar/JarURLConnection$JarURLInputStream -+java/lang/UnsupportedOperationException -+java/lang/reflect/InvocationTargetException -+javax/swing/plaf/metal/DefaultMetalTheme$FontDelegate$1 -+javax/swing/plaf/basic/BasicHTML -+sun/awt/util/IdentityArrayList -+java/awt/Window$1 -+sun/awt/AWTAccessor$WindowAccessor -+java/awt/Frame$1 -+sun/awt/AWTAccessor$FrameAccessor -+java/awt/Window$Type -+java/awt/Cursor -+java/awt/Cursor$1 -+sun/awt/AWTAccessor$CursorAccessor -+java/awt/BorderLayout -+java/awt/LayoutManager2 -+sun/awt/X11/XlibUtil -+java/util/concurrent/locks/LockSupport -+sun/nio/ch/Interruptible -+java/awt/Dialog$ModalExclusionType -+java/awt/Window$WindowDisposerRecord -+javax/swing/JPanel -+java/awt/FlowLayout -+javax/swing/plaf/basic/BasicPanelUI -+javax/swing/plaf/PanelUI -+java/awt/Component$BaselineResizeBehavior -+sun/swing/SwingLazyValue$1 -+javax/swing/JLayeredPane -+javax/swing/JRootPane$1 -+javax/swing/ArrayTable -+javax/swing/JRootPane$RootLayout -+javax/swing/BufferStrategyPaintManager -+javax/swing/RepaintManager$PaintManager -+javax/swing/FocusManager -+javax/swing/LayoutFocusTraversalPolicy -+javax/swing/SortingFocusTraversalPolicy -+javax/swing/InternalFrameFocusTraversalPolicy -+javax/swing/SwingContainerOrderFocusTraversalPolicy -+javax/swing/SortingFocusTraversalPolicy$1 -+java/util/Spliterator$OfLong -+java/util/Spliterator$OfPrimitive -+java/util/Spliterator -+java/util/Spliterator$OfInt -+java/util/Spliterator$OfDouble -+java/util/stream/IntStream -+java/util/stream/BaseStream -+java/util/stream/Stream -+java/util/stream/DoubleStream -+java/util/stream/LongStream -+java/util/function/DoubleBinaryOperator -+java/util/function/IntBinaryOperator -+java/util/function/LongBinaryOperator -+java/util/function/BinaryOperator -+java/util/function/BiFunction -+java/util/function/IntToDoubleFunction -+java/util/function/IntFunction -+java/util/function/IntToLongFunction -+java/util/function/IntUnaryOperator -+javax/swing/SwingDefaultFocusTraversalPolicy -+javax/swing/LayoutComparator -+javax/swing/plaf/metal/MetalRootPaneUI -+javax/swing/plaf/basic/BasicRootPaneUI -+javax/swing/plaf/RootPaneUI -+javax/swing/plaf/basic/BasicRootPaneUI$RootPaneInputMap -+javax/swing/plaf/ComponentInputMapUIResource -+javax/swing/ComponentInputMap -+javax/swing/InputMap -+javax/swing/plaf/InputMapUIResource -+javax/swing/KeyStroke -+java/awt/VKCollection -+sun/reflect/UnsafeQualifiedStaticIntegerFieldAccessorImpl -+javax/swing/plaf/basic/LazyActionMap -+javax/swing/plaf/ActionMapUIResource -+javax/swing/ActionMap -+sun/awt/X11/XFramePeer -+java/awt/peer/FramePeer -+java/awt/peer/WindowPeer -+java/awt/peer/ContainerPeer -+java/awt/peer/ComponentPeer -+sun/awt/X11/XDecoratedPeer -+sun/awt/X11/XWindowPeer -+sun/awt/X11/XPanelPeer -+java/awt/peer/PanelPeer -+sun/awt/X11/XCanvasPeer -+java/awt/peer/CanvasPeer -+sun/awt/X11/XComponentPeer -+java/awt/dnd/peer/DropTargetPeer -+sun/java2d/BackBufferCapsProvider -+sun/awt/X11/XWindow -+sun/awt/X11ComponentPeer -+sun/awt/X11/XBaseWindow -+sun/awt/X11/XCreateWindowParams -+sun/awt/X11/XBaseWindow$InitialiseState -+sun/awt/X11/XBaseWindow$StateLock -+sun/awt/X11/AwtGraphicsConfigData -+sun/awt/X11/XVisualInfo -+java/awt/SystemColor -+sun/awt/AWTAccessor$SystemColorAccessor -+sun/awt/X11/MotifColorUtilities -+sun/awt/X11/XRepaintArea -+sun/awt/RepaintArea -+sun/awt/X11/XWindowAttributesData -+sun/awt/X11/WindowDimensions -+java/awt/Point -+java/awt/geom/Point2D -+java/util/TreeMap$Entry -+sun/awt/X11/XSizeHints -+sun/awt/X11/XRootWindow -+sun/awt/X11/XRootWindow$LazyHolder -+sun/nio/cs/ISO_8859_1$Encoder -+sun/nio/cs/Surrogate$Parser -+sun/nio/cs/Surrogate -+sun/java2d/x11/X11SurfaceData$X11WindowSurfaceData -+sun/awt/X11/XDropTargetEventProcessor -+sun/java2d/loops/RenderLoops -+sun/awt/X11/XDragSourceContextPeer -+sun/java2d/loops/GraphicsPrimitiveMgr$PrimitiveSpec -+sun/awt/X11/XDragSourceProtocolListener -+java/util/Arrays$LegacyMergeSort -+sun/awt/dnd/SunDragSourceContextPeer -+java/awt/dnd/peer/DragSourceContextPeer -+java/util/TimSort -+sun/awt/X11/XAnyEvent -+sun/awt/X11/XAwtState -+sun/awt/X11/XBaseWindow$1 -+sun/awt/X11/XPropertyEvent -+sun/java2d/DefaultDisposerRecord -+sun/java2d/SurfaceDataProxy -+sun/awt/image/SurfaceManager$FlushableCacheData -+sun/java2d/SurfaceDataProxy$1 -+sun/java2d/StateTracker -+sun/java2d/StateTracker$1 -+sun/java2d/StateTracker$2 -+sun/java2d/x11/X11Renderer -+sun/awt/X11/XGlobalCursorManager -+sun/awt/GlobalCursorManager -+sun/awt/IconInfo -+sun/awt/AWTIcon32_java_icon16_png -+sun/awt/AWTIcon32_java_icon24_png -+sun/awt/AWTIcon32_java_icon32_png -+sun/awt/AWTIcon32_java_icon48_png -+sun/awt/X11/XClientMessageEvent -+sun/awt/X11/XContentWindow -+sun/awt/X11/XFocusProxyWindow -+sun/awt/X11/XWMHints -+java/util/LinkedList$ListItr -+sun/awt/AWTAutoShutdown -+java/awt/peer/LightweightPeer -+sun/awt/NullComponentPeer -+java/awt/SplashScreen -+java/awt/Dialog -+java/awt/Dialog$ModalityType -+sun/awt/X11/PropMwmHints -+sun/awt/X11/XWindowPeer$4 -+sun/awt/GlobalCursorManager$NativeUpdater -+java/awt/event/WindowEvent -+java/awt/EventQueue$5 -+java/awt/EventDispatchThread -+sun/awt/PeerEvent -+java/awt/EventDispatchThread$1 -+java/awt/Conditional -+java/awt/event/InvocationEvent -+java/awt/ActiveEvent -+java/awt/EventDispatchThread$HierarchyEventFilter -+java/awt/EventFilter -+java/awt/event/PaintEvent -+sun/awt/X11/XReparentEvent -+java/awt/event/MouseEvent -+java/awt/ModalEventFilter -+sun/awt/EventQueueItem -+sun/awt/EventQueueDelegate -+java/awt/EventFilter$FilterAction -+java/awt/EventQueue$3 -+java/awt/EventQueue$4 -+sun/awt/dnd/SunDropTargetEvent -+sun/awt/X11/XConfigureEvent -+java/awt/event/InputMethodEvent -+java/awt/event/ActionEvent -+java/awt/event/FocusEvent -+java/util/Vector$Itr -+java/awt/event/InvocationEvent$1 -+sun/awt/X11/XWindowPeer$2 -+sun/awt/AWTAccessor$InvocationEventAccessor -+java/applet/Applet -+java/awt/Panel -+sun/awt/X11/XVisibilityEvent -+sun/awt/X11/XExposeEvent -+sun/awt/event/IgnorePaintEvent -+sun/awt/X11/XTranslateCoordinates -+sun/awt/X11/XFocusChangeEvent -+java/awt/SequencedEvent -+java/awt/SequencedEvent$1 -+sun/awt/AWTAccessor$SequencedEventAccessor -+sun/awt/X11/XComponentPeer$1 -+java/awt/MenuComponent -+java/awt/TrayIcon -+java/util/IdentityHashMap$KeySet -+java/util/IdentityHashMap$KeyIterator -+javax/swing/RepaintManager$4 -+java/awt/GraphicsCallback$PaintCallback -+java/awt/GraphicsCallback -+sun/awt/SunGraphicsCallback -+javax/swing/BufferStrategyPaintManager$BufferInfo -+java/awt/event/WindowListener -+java/awt/event/ComponentAdapter -+java/awt/event/ComponentListener -+java/awt/AWTEventMulticaster -+java/awt/event/ContainerListener -+java/awt/event/FocusListener -+java/awt/event/KeyListener -+java/awt/event/MouseListener -+java/awt/event/MouseMotionListener -+java/awt/event/WindowFocusListener -+java/awt/event/WindowStateListener -+java/awt/event/ActionListener -+java/awt/event/ItemListener -+java/awt/event/AdjustmentListener -+java/awt/event/TextListener -+java/awt/event/InputMethodListener -+java/awt/event/HierarchyListener -+java/awt/event/HierarchyBoundsListener -+java/awt/event/MouseWheelListener -+java/awt/BufferCapabilities -+java/awt/Component$BltSubRegionBufferStrategy -+sun/awt/SubRegionShowable -+java/awt/Component$BltBufferStrategy -+java/awt/image/BufferStrategy -+java/awt/image/VolatileImage -+java/awt/Image -+sun/awt/image/SunVolatileImage -+java/awt/Image$1 -+sun/awt/image/SurfaceManager$ImageAccessor -+sun/awt/image/SurfaceManager -+sun/awt/image/BufferedImageGraphicsConfig -+sun/print/PrinterGraphicsConfig -+sun/java2d/opengl/GLXGraphicsConfig -+sun/java2d/opengl/OGLGraphicsConfig -+sun/java2d/pipe/hw/AccelGraphicsConfig -+sun/java2d/pipe/hw/BufferedContextProvider -+sun/java2d/xr/XRGraphicsConfig -+sun/java2d/x11/X11VolatileSurfaceManager -+sun/awt/image/VolatileSurfaceManager -+sun/java2d/x11/X11SurfaceData$X11PixmapSurfaceData -+sun/font/FontDesignMetrics -+java/awt/FontMetrics -+sun/font/SunFontManager -+sun/java2d/FontSupport -+sun/font/FontManagerForSGE -+sun/font/FontManager -+sun/font/SunFontManager$TTFilter -+java/io/FilenameFilter -+sun/font/SunFontManager$T1Filter -+sun/font/SunFontManager$1 -+sun/font/FontManagerNativeLibrary -+sun/font/FontManagerNativeLibrary$1 -+sun/font/FontUtilities -+sun/font/FontUtilities$1 -+sun/font/TrueTypeFont -+sun/font/FileFont -+sun/font/PhysicalFont -+sun/font/Font2D -+sun/font/Type1Font -+java/awt/geom/Point2D$Float -+sun/font/StrikeMetrics -+java/awt/geom/Rectangle2D$Float -+java/awt/geom/GeneralPath -+sun/font/CharToGlyphMapper -+sun/font/PhysicalStrike -+sun/font/FontStrike -+sun/font/StrikeCache -+sun/font/StrikeCache$1 -+sun/font/GlyphList -+sun/font/FontManagerFactory -+sun/font/FontManagerFactory$1 -+sun/awt/X11FontManager -+sun/font/CompositeFont -+sun/font/SunFontManager$2 -+java/io/StreamTokenizer -+sun/font/SunFontManager$FontRegistrationInfo -+sun/awt/motif/MFontConfiguration -+sun/awt/FontConfiguration -+sun/awt/FontDescriptor -+java/util/Properties$LineReader -+sun/font/FcFontConfiguration -+java/net/InetAddress -+java/net/InetAddress$1 -+java/net/InetAddress$InetAddressHolder -+java/net/InetAddress$Cache -+java/net/InetAddress$Cache$Type -+java/net/InetAddressImplFactory -+java/net/Inet4AddressImpl -+java/net/InetAddressImpl -+java/net/InetAddress$2 -+sun/net/spi/nameservice/NameService -+java/net/Inet4Address -+java/net/Inet6Address -+java/net/Inet6Address$Inet6AddressHolder -+sun/net/InetAddressCachePolicy -+sun/net/InetAddressCachePolicy$1 -+java/security/Security -+java/security/Security$1 -+sun/net/InetAddressCachePolicy$2 -+java/util/LinkedHashMap$LinkedKeySet -+java/util/LinkedHashMap$LinkedKeyIterator -+java/net/InetAddress$CacheEntry -+sun/font/FontConfigManager$FcCompFont -+sun/font/FontConfigManager$FontConfigFont -+sun/font/CompositeFontDescriptor -+sun/font/Font2DHandle -+sun/font/FontFamily -+sun/font/SunFontManager$3 -+sun/font/FontDesignMetrics$MetricsKey -+sun/font/FontStrikeDesc -+sun/font/CompositeStrike -+sun/font/FontStrikeDisposer -+sun/java2d/Disposer$PollDisposable -+sun/font/StrikeCache$SoftDisposerRef -+sun/font/StrikeCache$DisposableStrike -+sun/font/TrueTypeFont$TTDisposerRecord -+sun/font/TrueTypeFont$1 -+java/io/RandomAccessFile -+java/io/DataOutput -+java/io/DataInput -+sun/nio/ch/FileChannelImpl -+java/nio/channels/FileChannel -+java/nio/channels/SeekableByteChannel -+java/nio/channels/ByteChannel -+java/nio/channels/ReadableByteChannel -+java/nio/channels/Channel -+java/nio/channels/WritableByteChannel -+java/nio/channels/GatheringByteChannel -+java/nio/channels/ScatteringByteChannel -+java/nio/channels/spi/AbstractInterruptibleChannel -+java/nio/channels/InterruptibleChannel -+java/nio/file/attribute/FileAttribute -+sun/nio/ch/IOUtil -+sun/nio/ch/IOUtil$1 -+sun/nio/ch/NativeThreadSet -+sun/nio/ch/FileDispatcherImpl -+sun/nio/ch/FileDispatcher -+sun/nio/ch/NativeDispatcher -+java/nio/channels/spi/AbstractInterruptibleChannel$1 -+sun/nio/ch/NativeThread -+sun/nio/ch/IOStatus -+sun/nio/ch/Util -+sun/nio/ch/Util$1 -+sun/nio/ch/Util$BufferCache -+java/nio/DirectByteBuffer$Deallocator -+java/nio/ByteBufferAsIntBufferB -+java/nio/IntBuffer -+sun/font/TrueTypeFont$DirectoryEntry -+java/nio/ByteBufferAsShortBufferB -+java/nio/ShortBuffer -+sun/nio/cs/UTF_16$Decoder -+sun/nio/cs/UnicodeDecoder -+sun/font/FileFontStrike -+sun/font/FontScaler -+sun/font/T2KFontScaler -+sun/font/T2KFontScaler$1 -+sun/font/TrueTypeGlyphMapper -+sun/font/CMap -+sun/font/CMap$NullCMapClass -+sun/font/CMap$CMapFormat12 -+sun/font/FontDesignMetrics$KeyReference -+sun/font/CompositeGlyphMapper -+java/awt/print/PrinterGraphics -+java/awt/PrintGraphics -+sun/java2d/loops/FontInfo -+sun/awt/X11/XSystemTrayPeer -+java/awt/peer/SystemTrayPeer -+java/util/jar/Attributes -+java/util/jar/Manifest$FastInputStream -+java/util/jar/Attributes$Name -+sun/misc/ASCIICaseInsensitiveComparator -+java/util/jar/JarVerifier -+java/security/CodeSigner -+java/util/jar/JarVerifier$3 -+java/io/ByteArrayOutputStream -+java/lang/Package -+sun/security/util/SignatureFileVerifier -+sun/security/util/ManifestEntryVerifier -+java/util/MissingResourceException -+javax/swing/JDialog -+javax/swing/text/JTextComponent -+javax/swing/Scrollable -+javax/swing/JTextArea -+javax/swing/JScrollPane -+javax/swing/ScrollPaneConstants -+javax/swing/AbstractButton -+java/awt/ItemSelectable -+javax/swing/JButton -+java/io/StringWriter -+java/lang/SecurityException -+javax/swing/JWindow -+java/io/UnsupportedEncodingException -+sun/misc/URLClassPath$FileLoader -+java/lang/CloneNotSupportedException -+java/lang/InternalError -+java/net/UnknownHostException -+java/net/Socket -+java/net/SocketAddress -+java/nio/channels/SocketChannel -+java/nio/channels/NetworkChannel -+java/nio/channels/spi/AbstractSelectableChannel -+java/nio/channels/SelectableChannel -+java/net/SocketException -+java/net/SocketImplFactory -+java/net/InetSocketAddress -+java/net/InetSocketAddress$InetSocketAddressHolder -+java/net/Proxy -+java/net/SocketImpl -+java/net/SocketOptions -+java/net/SocksSocketImpl -+java/net/SocksConsts -+java/net/PlainSocketImpl -+java/net/AbstractPlainSocketImpl -+java/net/AbstractPlainSocketImpl$1 -+sun/net/util/IPAddressUtil -+java/net/SocksSocketImpl$3 -+java/net/ProxySelector -+sun/net/spi/DefaultProxySelector -+sun/net/spi/DefaultProxySelector$1 -+sun/net/NetProperties -+sun/net/NetProperties$1 -+java/net/URI -+java/net/URI$Parser -+sun/net/spi/DefaultProxySelector$NonProxyInfo -+sun/net/spi/DefaultProxySelector$3 -+java/net/Proxy$Type -+sun/net/NetHooks -+sun/net/sdp/SdpProvider -+sun/net/NetHooks$Provider -+java/net/ConnectException -+java/net/MalformedURLException -+java/lang/UnsatisfiedLinkError -+javax/swing/UnsupportedLookAndFeelException -+sun/misc/FloatingDecimal$ASCIIToBinaryBuffer -+sun/misc/FDBigInteger -+java/util/ResourceBundle$Control$1 -+java/net/URLClassLoader$2 -+java/util/PropertyResourceBundle -+java/util/ResourceBundle$BundleReference -+java/util/logging/Level -+java/util/logging/Level$KnownLevel -+java/util/logging/Logger -+java/util/logging/Handler -+java/util/logging/Logger$LoggerBundle -+java/util/concurrent/CopyOnWriteArrayList -+java/util/logging/LogManager -+java/util/logging/LogManager$1 -+java/util/logging/LogManager$SystemLoggerContext -+java/util/logging/LogManager$LoggerContext -+java/util/logging/LogManager$LogNode -+java/util/logging/LoggingPermission -+java/util/logging/LogManager$Cleaner -+java/util/logging/LogManager$2 -+java/util/logging/LogManager$3 -+java/util/logging/LogManager$LoggerWeakRef -+java/util/logging/LogManager$LoggerContext$1 -+java/util/logging/LogManager$RootLogger -+java/util/logging/LogManager$5 -+java/util/logging/Logger$1 -+sun/util/logging/resources/logging -+javax/swing/Box -+javax/swing/Box$Filler -+javax/swing/Icon -+javax/swing/BoxLayout -+javax/swing/plaf/basic/BasicPopupMenuUI -+javax/swing/plaf/PopupMenuUI -+javax/swing/ImageIcon -+javax/swing/ImageIcon$1 -+javax/swing/ImageIcon$2 -+javax/swing/ImageIcon$2$1 -+java/awt/dnd/DropTarget -+java/awt/dnd/DropTargetListener -+javax/accessibility/AccessibleContext -+sun/reflect/UnsafeObjectFieldAccessorImpl -+java/awt/MediaTracker -+sun/misc/SoftCache$ValueCell -+sun/awt/image/URLImageSource -+sun/awt/image/InputStreamImageSource -+java/awt/image/ImageProducer -+sun/awt/image/ImageFetchable -+sun/awt/image/ToolkitImage -+sun/awt/image/NativeLibLoader -+sun/awt/image/NativeLibLoader$1 -+javax/swing/ImageIcon$3 -+java/awt/ImageMediaEntry -+java/awt/MediaEntry -+sun/awt/image/MultiResolutionToolkitImage -+sun/awt/image/MultiResolutionImage -+sun/awt/image/ImageRepresentation -+java/awt/image/ImageConsumer -+sun/awt/image/ImageWatched -+sun/awt/image/ImageWatched$Link -+sun/awt/image/ImageWatched$WeakLink -+sun/awt/image/ImageConsumerQueue -+sun/awt/image/ImageFetcher -+sun/awt/image/FetcherInfo -+sun/awt/image/ImageFetcher$1 -+sun/net/ProgressMonitor -+sun/net/DefaultProgressMeteringPolicy -+sun/net/ProgressMeteringPolicy -+sun/net/www/MimeTable -+java/net/FileNameMap -+sun/net/www/MimeTable$1 -+sun/net/www/MimeTable$DefaultInstanceHolder -+sun/net/www/MimeTable$DefaultInstanceHolder$1 -+sun/net/www/MimeEntry -+java/net/URLConnection$1 -+java/text/SimpleDateFormat -+java/text/DateFormat -+java/text/Format -+java/text/DateFormat$Field -+java/text/Format$Field -+java/util/TimeZone -+sun/util/calendar/ZoneInfo -+sun/util/calendar/ZoneInfoFile -+sun/util/calendar/ZoneInfoFile$1 -+java/io/DataInputStream -+sun/util/calendar/ZoneInfoFile$ZoneOffsetTransitionRule -+sun/util/calendar/ZoneInfoFile$Checksum -+java/util/zip/CRC32 -+java/util/zip/Checksum -+java/util/TimeZone$1 -+java/util/Calendar -+sun/util/spi/CalendarProvider -+java/util/spi/LocaleServiceProvider -+sun/util/locale/provider/LocaleProviderAdapter -+sun/util/locale/provider/JRELocaleProviderAdapter -+sun/util/locale/provider/ResourceBundleBasedAdapter -+sun/util/locale/provider/SPILocaleProviderAdapter -+sun/util/locale/provider/AuxLocaleProviderAdapter -+sun/util/locale/provider/AuxLocaleProviderAdapter$NullProvider -+sun/util/locale/provider/LocaleProviderAdapter$Type -+sun/util/locale/provider/LocaleProviderAdapter$1 -+sun/util/locale/provider/CalendarProviderImpl -+sun/util/locale/provider/AvailableLanguageTags -+sun/util/locale/provider/LocaleDataMetaInfo -+sun/util/locale/provider/JRELocaleProviderAdapter$1 -+java/util/Calendar$Builder -+java/util/GregorianCalendar -+sun/util/locale/provider/CalendarDataUtility -+java/util/spi/CalendarDataProvider -+sun/util/locale/provider/LocaleServiceProviderPool -+java/text/spi/BreakIteratorProvider -+java/text/spi/CollatorProvider -+java/text/spi/DateFormatProvider -+java/text/spi/DateFormatSymbolsProvider -+java/text/spi/DecimalFormatSymbolsProvider -+java/text/spi/NumberFormatProvider -+java/util/spi/CurrencyNameProvider -+java/util/spi/LocaleNameProvider -+java/util/spi/TimeZoneNameProvider -+sun/util/locale/provider/CalendarDataProviderImpl -+sun/util/locale/provider/SPILocaleProviderAdapter$1 -+sun/util/locale/provider/CalendarDataUtility$CalendarWeekParameterGetter -+sun/util/locale/provider/LocaleServiceProviderPool$LocalizedObjectGetter -+sun/util/locale/provider/LocaleResources -+sun/util/resources/LocaleData -+sun/util/resources/LocaleData$1 -+sun/util/resources/LocaleData$LocaleDataResourceBundleControl -+sun/util/locale/LanguageTag -+java/util/Collections$EmptyIterator -+sun/util/resources/CalendarData -+sun/util/resources/LocaleNamesBundle -+sun/util/resources/OpenListResourceBundle -+sun/util/resources/en/CalendarData_en -+sun/util/locale/provider/LocaleResources$ResourceReference -+sun/util/calendar/Gregorian$Date -+sun/util/calendar/BaseCalendar$Date -+sun/util/calendar/CalendarDate -+sun/util/calendar/CalendarUtils -+java/text/DateFormatSymbols -+sun/util/locale/provider/DateFormatSymbolsProviderImpl -+sun/text/resources/FormatData -+sun/util/resources/ParallelListResourceBundle -+java/util/concurrent/atomic/AtomicMarkableReference -+java/util/concurrent/atomic/AtomicMarkableReference$Pair -+sun/text/resources/en/FormatData_en -+sun/text/resources/en/FormatData_en_US -+sun/util/resources/ParallelListResourceBundle$KeySet -+java/text/NumberFormat -+sun/util/locale/provider/NumberFormatProviderImpl -+java/text/DecimalFormatSymbols -+sun/util/locale/provider/DecimalFormatSymbolsProviderImpl -+java/util/Currency -+java/util/Currency$1 -+sun/util/locale/provider/CurrencyNameProviderImpl -+java/util/Currency$CurrencyNameGetter -+sun/util/resources/CurrencyNames -+sun/util/resources/en/CurrencyNames_en_US -+java/text/DecimalFormat -+java/text/FieldPosition -+java/text/DigitList -+java/math/RoundingMode -+java/text/DontCareFieldPosition -+java/text/DontCareFieldPosition$1 -+java/text/Format$FieldDelegate -+sun/awt/image/GifImageDecoder -+sun/awt/image/ImageDecoder -+sun/awt/image/GifFrame -+java/awt/image/Raster -+java/awt/image/DataBufferByte -+java/awt/image/DataBuffer -+java/awt/image/DataBuffer$1 -+sun/awt/image/SunWritableRaster$DataStealer -+sun/awt/image/SunWritableRaster -+java/awt/image/WritableRaster -+java/awt/image/PixelInterleavedSampleModel -+java/awt/image/ComponentSampleModel -+java/awt/image/SampleModel -+sun/awt/image/ByteInterleavedRaster -+sun/awt/image/ByteComponentRaster -+java/awt/image/BufferedImage -+java/awt/image/WritableRenderedImage -+java/awt/image/RenderedImage -+java/awt/image/BufferedImage$1 -+sun/awt/image/IntegerComponentRaster -+sun/awt/image/BytePackedRaster -+javax/swing/plaf/BorderUIResource -+javax/swing/BorderFactory -+javax/swing/border/BevelBorder -+javax/swing/border/EtchedBorder -+javax/swing/plaf/metal/MetalIconFactory -+javax/swing/plaf/metal/MetalIconFactory$TreeFolderIcon -+javax/swing/plaf/metal/MetalIconFactory$FolderIcon16 -+java/util/zip/ZipInputStream -+java/io/PushbackInputStream -+java/util/zip/ZipUtils -+java/io/RandomAccessFile$1 -+java/lang/Thread$State -+javax/swing/SwingUtilities$SharedOwnerFrame -+sun/awt/X11/XWindowAttributes -+javax/swing/border/LineBorder -+javax/swing/SizeRequirements -+java/util/ArrayList$ListItr -+javax/swing/CellRendererPane -+javax/swing/RepaintManager$3 -+javax/swing/JRadioButton -+javax/swing/JToggleButton -+java/lang/ClassFormatError -+java/io/ObjectInputStream -+java/io/ObjectInput -+java/io/ObjectStreamConstants -+sun/awt/image/BufImgSurfaceManager -+sun/awt/image/BufImgSurfaceData -+sun/awt/image/BufImgSurfaceData$ICMColorData -+sun/java2d/x11/X11SurfaceDataProxy -+sun/java2d/x11/X11SurfaceDataProxy$Bitmask -+sun/java2d/StateTrackableDelegate$1 -+javax/swing/JTabbedPane -+java/awt/geom/RectIterator -+java/awt/geom/PathIterator -+javax/swing/event/ChangeListener -+java/awt/Polygon -+javax/swing/event/MenuListener -+javax/swing/DefaultSingleSelectionModel -+javax/swing/SingleSelectionModel -+javax/swing/JTabbedPane$ModelListener -+javax/swing/plaf/metal/MetalTabbedPaneUI -+javax/swing/plaf/basic/BasicTabbedPaneUI -+javax/swing/plaf/TabbedPaneUI -+javax/swing/plaf/metal/MetalTabbedPaneUI$TabbedPaneLayout -+javax/swing/plaf/basic/BasicTabbedPaneUI$TabbedPaneLayout -+javax/swing/plaf/basic/BasicTabbedPaneUI$TabbedPaneScrollLayout -+javax/swing/plaf/basic/BasicTabbedPaneUI$Handler -+sun/reflect/MethodAccessorGenerator -+sun/reflect/AccessorGenerator -+sun/reflect/ClassFileConstants -+sun/reflect/ByteVectorFactory -+sun/reflect/ByteVectorImpl -+sun/reflect/ByteVector -+sun/reflect/ClassFileAssembler -+sun/reflect/UTF8 -+sun/reflect/Label -+sun/reflect/Label$PatchInfo -+sun/reflect/MethodAccessorGenerator$1 -+sun/reflect/ClassDefiner -+sun/reflect/ClassDefiner$1 -+sun/reflect/BootstrapConstructorAccessorImpl -+javax/swing/JTextField -+javax/swing/JViewport -+java/awt/CardLayout -+javax/swing/text/Document -+javax/swing/text/JTextComponent$1 -+sun/swing/SwingAccessor$JTextComponentAccessor -+javax/swing/text/JTextComponent$4 -+com/sun/beans/util/Cache -+com/sun/beans/util/Cache$Kind -+com/sun/beans/util/Cache$Kind$1 -+com/sun/beans/util/Cache$Kind$2 -+com/sun/beans/util/Cache$Kind$3 -+com/sun/beans/util/Cache$CacheEntry -+javax/swing/Action -+javax/swing/JTextField$NotifyAction -+javax/swing/text/TextAction -+javax/swing/AbstractAction -+java/lang/ArrayIndexOutOfBoundsException -+javax/swing/DropMode -+javax/swing/text/JTextComponent$MutableCaretEvent -+javax/swing/event/CaretEvent -+javax/swing/plaf/metal/MetalTextFieldUI -+javax/swing/plaf/basic/BasicTextFieldUI -+javax/swing/plaf/basic/BasicTextUI -+javax/swing/text/ViewFactory -+javax/swing/plaf/TextUI -+javax/swing/plaf/basic/BasicTextUI$BasicCursor -+javax/swing/text/DefaultEditorKit -+javax/swing/text/EditorKit -+javax/swing/text/DefaultEditorKit$InsertContentAction -+javax/swing/text/DefaultEditorKit$DeletePrevCharAction -+javax/swing/text/DefaultEditorKit$DeleteNextCharAction -+javax/swing/text/DefaultEditorKit$ReadOnlyAction -+javax/swing/text/DefaultEditorKit$DeleteWordAction -+javax/swing/text/DefaultEditorKit$WritableAction -+javax/swing/text/DefaultEditorKit$CutAction -+javax/swing/text/DefaultEditorKit$CopyAction -+javax/swing/text/DefaultEditorKit$PasteAction -+javax/swing/text/DefaultEditorKit$VerticalPageAction -+javax/swing/text/DefaultEditorKit$PageAction -+javax/swing/text/DefaultEditorKit$InsertBreakAction -+javax/swing/text/DefaultEditorKit$BeepAction -+javax/swing/text/DefaultEditorKit$NextVisualPositionAction -+javax/swing/text/DefaultEditorKit$BeginWordAction -+javax/swing/text/DefaultEditorKit$EndWordAction -+javax/swing/text/DefaultEditorKit$PreviousWordAction -+javax/swing/text/DefaultEditorKit$NextWordAction -+javax/swing/text/DefaultEditorKit$BeginLineAction -+javax/swing/text/DefaultEditorKit$EndLineAction -+javax/swing/text/DefaultEditorKit$BeginParagraphAction -+javax/swing/text/DefaultEditorKit$EndParagraphAction -+javax/swing/text/DefaultEditorKit$BeginAction -+javax/swing/text/DefaultEditorKit$EndAction -+javax/swing/text/DefaultEditorKit$DefaultKeyTypedAction -+javax/swing/text/DefaultEditorKit$InsertTabAction -+javax/swing/text/DefaultEditorKit$SelectWordAction -+javax/swing/text/DefaultEditorKit$SelectLineAction -+javax/swing/text/DefaultEditorKit$SelectParagraphAction -+javax/swing/text/DefaultEditorKit$SelectAllAction -+javax/swing/text/DefaultEditorKit$UnselectAction -+javax/swing/text/DefaultEditorKit$ToggleComponentOrientationAction -+javax/swing/text/DefaultEditorKit$DumpModelAction -+javax/swing/plaf/basic/BasicTextUI$TextTransferHandler -+javax/swing/TransferHandler -+javax/swing/TransferHandler$TransferAction -+sun/swing/UIAction -+javax/swing/text/Position$Bias -+javax/swing/plaf/basic/BasicTextUI$RootView -+javax/swing/text/View -+javax/swing/plaf/basic/BasicTextUI$UpdateHandler -+javax/swing/event/DocumentListener -+javax/swing/plaf/basic/BasicTextUI$DragListener -+javax/swing/plaf/basic/DragRecognitionSupport$BeforeDrag -+javax/swing/event/MouseInputAdapter -+javax/swing/event/MouseInputListener -+java/awt/event/MouseAdapter -+javax/swing/plaf/metal/MetalBorders -+javax/swing/plaf/BorderUIResource$CompoundBorderUIResource -+javax/swing/border/CompoundBorder -+javax/swing/plaf/metal/MetalBorders$TextFieldBorder -+javax/swing/plaf/metal/MetalBorders$Flush3DBorder -+javax/swing/plaf/basic/BasicBorders$MarginBorder -+javax/swing/plaf/basic/BasicTextUI$BasicCaret -+javax/swing/text/DefaultCaret -+javax/swing/text/Caret -+javax/swing/text/DefaultCaret$Handler -+java/awt/datatransfer/ClipboardOwner -+javax/swing/Timer -+javax/swing/Timer$DoPostEvent -+javax/swing/plaf/basic/BasicTextUI$BasicHighlighter -+javax/swing/text/DefaultHighlighter -+javax/swing/text/LayeredHighlighter -+javax/swing/text/Highlighter -+javax/swing/text/Highlighter$Highlight -+javax/swing/text/DefaultHighlighter$DefaultHighlightPainter -+javax/swing/text/LayeredHighlighter$LayerPainter -+javax/swing/text/Highlighter$HighlightPainter -+javax/swing/text/DefaultHighlighter$SafeDamager -+javax/swing/ClientPropertyKey -+javax/swing/ClientPropertyKey$1 -+sun/awt/AWTAccessor$ClientPropertyKeyAccessor -+javax/swing/TransferHandler$SwingDropTarget -+java/awt/dnd/DropTargetContext -+java/awt/datatransfer/SystemFlavorMap -+java/awt/datatransfer/FlavorMap -+java/awt/datatransfer/FlavorTable -+java/awt/datatransfer/SystemFlavorMap$SoftCache -+javax/swing/TransferHandler$DropHandler -+javax/swing/TransferHandler$TransferSupport -+javax/swing/text/PlainDocument -+javax/swing/text/AbstractDocument -+javax/swing/text/GapContent -+javax/swing/text/AbstractDocument$Content -+javax/swing/text/GapVector -+javax/swing/text/GapContent$MarkVector -+javax/swing/text/GapContent$MarkData -+javax/swing/text/StyleContext -+javax/swing/text/AbstractDocument$AttributeContext -+javax/swing/text/StyleConstants -+javax/swing/text/StyleConstants$CharacterConstants -+javax/swing/text/AttributeSet$CharacterAttribute -+javax/swing/text/StyleConstants$FontConstants -+javax/swing/text/AttributeSet$FontAttribute -+javax/swing/text/StyleConstants$ColorConstants -+javax/swing/text/AttributeSet$ColorAttribute -+javax/swing/text/StyleConstants$ParagraphConstants -+javax/swing/text/AttributeSet$ParagraphAttribute -+javax/swing/text/StyleContext$FontKey -+javax/swing/text/SimpleAttributeSet -+javax/swing/text/MutableAttributeSet -+javax/swing/text/AttributeSet -+javax/swing/text/SimpleAttributeSet$EmptyAttributeSet -+javax/swing/text/StyleContext$NamedStyle -+javax/swing/text/Style -+java/util/Collections$EmptyEnumeration -+javax/swing/text/StyleContext$SmallAttributeSet -+java/util/Collections$3 -+javax/swing/text/AbstractDocument$BidiRootElement -+javax/swing/text/AbstractDocument$BranchElement -+javax/swing/text/AbstractDocument$AbstractElement -+javax/swing/text/Element -+javax/swing/tree/TreeNode -+javax/swing/text/AbstractDocument$1 -+javax/swing/text/AbstractDocument$BidiElement -+javax/swing/text/AbstractDocument$LeafElement -+javax/swing/text/GapContent$StickyPosition -+javax/swing/text/Position -+javax/swing/text/StyleContext$KeyEnumeration -+javax/swing/text/FieldView -+javax/swing/text/PlainView -+javax/swing/text/TabExpander -+javax/swing/text/JTextComponent$DefaultKeymap -+javax/swing/text/Keymap -+javax/swing/text/JTextComponent$KeymapWrapper -+javax/swing/text/JTextComponent$KeymapActionMap -+javax/swing/plaf/basic/BasicTextUI$FocusAction -+javax/swing/plaf/basic/BasicTextUI$TextActionWrapper -+javax/swing/plaf/synth/SynthUI -+javax/swing/plaf/synth/SynthConstants -+javax/swing/JEditorPane -+javax/swing/DefaultBoundedRangeModel -+javax/swing/BoundedRangeModel -+javax/swing/JTextField$ScrollRepainter -+javax/swing/DefaultButtonModel -+javax/swing/ButtonModel -+javax/swing/AbstractButton$Handler -+javax/swing/plaf/basic/BasicButtonUI -+javax/swing/plaf/ButtonUI -+javax/swing/plaf/metal/MetalBorders$ButtonBorder -+javax/swing/plaf/basic/BasicButtonListener -+javax/swing/event/AncestorListener -+java/beans/VetoableChangeListener -+javax/swing/plaf/metal/MetalComboBoxButton -+javax/swing/plaf/basic/BasicArrowButton -+javax/swing/plaf/metal/MetalScrollButton -+sun/swing/ImageIconUIResource -+javax/swing/GrayFilter -+java/awt/image/RGBImageFilter -+java/awt/image/ImageFilter -+java/awt/image/FilteredImageSource -+javax/swing/plaf/basic/BasicGraphicsUtils -+javax/swing/ButtonGroup -+org/w3c/dom/Node -+org/xml/sax/SAXException -+javax/xml/parsers/ParserConfigurationException -+org/xml/sax/EntityResolver -+java/security/NoSuchAlgorithmException -+java/security/GeneralSecurityException -+java/util/zip/GZIPInputStream -+java/util/zip/DeflaterOutputStream -+java/io/StringReader -+org/xml/sax/InputSource -+javax/xml/parsers/DocumentBuilderFactory -+javax/xml/parsers/FactoryFinder -+javax/xml/parsers/SecuritySupport -+javax/xml/parsers/SecuritySupport$2 -+javax/xml/parsers/SecuritySupport$5 -+javax/xml/parsers/FactoryFinder$1 -+javax/xml/parsers/DocumentBuilder -+org/xml/sax/ErrorHandler -+org/w3c/dom/Document -+org/xml/sax/helpers/DefaultHandler -+org/xml/sax/DTDHandler -+org/xml/sax/ContentHandler -+org/xml/sax/SAXNotRecognizedException -+org/xml/sax/SAXNotSupportedException -+org/xml/sax/Locator -+org/xml/sax/SAXParseException -+org/w3c/dom/NodeList -+org/w3c/dom/events/EventTarget -+org/w3c/dom/traversal/DocumentTraversal -+org/w3c/dom/events/DocumentEvent -+org/w3c/dom/ranges/DocumentRange -+org/w3c/dom/Element -+org/w3c/dom/CharacterData -+org/w3c/dom/CDATASection -+org/w3c/dom/Text -+org/w3c/dom/Entity -+org/xml/sax/AttributeList -+org/w3c/dom/DOMException -+org/w3c/dom/DocumentType -+org/w3c/dom/Attr -+org/w3c/dom/EntityReference -+org/w3c/dom/DocumentFragment -+org/w3c/dom/ProcessingInstruction -+org/w3c/dom/Notation -+org/w3c/dom/Comment -+org/w3c/dom/events/EventException -+org/w3c/dom/events/Event -+org/w3c/dom/events/MutationEvent -+org/w3c/dom/traversal/TreeWalker -+org/w3c/dom/ranges/Range -+org/w3c/dom/traversal/NodeIterator -+org/w3c/dom/NamedNodeMap -+java/awt/GridLayout -+javax/swing/JToggleButton$ToggleButtonModel -+javax/swing/plaf/metal/MetalRadioButtonUI -+javax/swing/plaf/basic/BasicRadioButtonUI -+javax/swing/plaf/basic/BasicToggleButtonUI -+javax/swing/plaf/basic/BasicBorders -+javax/swing/plaf/basic/BasicBorders$RadioButtonBorder -+javax/swing/plaf/basic/BasicBorders$ButtonBorder -+javax/swing/plaf/metal/MetalIconFactory$RadioButtonIcon -+javax/swing/plaf/basic/BasicRadioButtonUI$KeyHandler -+javax/swing/plaf/basic/BasicRadioButtonUI$SelectPreviousBtn -+javax/swing/plaf/basic/BasicRadioButtonUI$SelectNextBtn -+javax/swing/event/ChangeEvent -+java/awt/event/ItemEvent -+javax/swing/ToolTipManager -+javax/swing/ToolTipManager$insideTimerAction -+javax/swing/ToolTipManager$outsideTimerAction -+javax/swing/ToolTipManager$stillInsideTimerAction -+javax/swing/ToolTipManager$MoveBeforeEnterListener -+java/awt/event/MouseMotionAdapter -+javax/swing/ToolTipManager$AccessibilityKeyListener -+java/awt/event/KeyAdapter -+java/awt/CardLayout$Card -+javax/swing/JComboBox -+javax/swing/event/ListDataListener -+javax/swing/JCheckBox -+javax/swing/JPopupMenu -+javax/swing/MenuElement -+javax/swing/DefaultComboBoxModel -+javax/swing/MutableComboBoxModel -+javax/swing/ComboBoxModel -+javax/swing/ListModel -+javax/swing/AbstractListModel -+javax/swing/JComboBox$1 -+javax/swing/AncestorNotifier -+javax/swing/plaf/metal/MetalComboBoxUI -+javax/swing/plaf/basic/BasicComboBoxUI -+javax/swing/plaf/ComboBoxUI -+javax/swing/plaf/metal/MetalComboBoxUI$MetalComboBoxLayoutManager -+javax/swing/plaf/basic/BasicComboBoxUI$ComboBoxLayoutManager -+javax/swing/plaf/basic/BasicComboPopup -+javax/swing/plaf/basic/ComboPopup -+javax/swing/plaf/basic/BasicComboPopup$EmptyListModelClass -+javax/swing/plaf/basic/BasicLookAndFeel$AWTEventHelper -+java/awt/event/AWTEventListenerProxy -+java/awt/Toolkit$SelectiveAWTEventListener -+java/awt/Toolkit$ToolkitEventMulticaster -+javax/swing/plaf/basic/BasicLookAndFeel$1 -+javax/swing/plaf/basic/DefaultMenuLayout -+javax/swing/plaf/metal/MetalBorders$PopupMenuBorder -+javax/swing/plaf/basic/BasicPopupMenuUI$BasicPopupMenuListener -+javax/swing/event/PopupMenuListener -+javax/swing/plaf/basic/BasicPopupMenuUI$BasicMenuKeyListener -+javax/swing/event/MenuKeyListener -+javax/swing/plaf/basic/BasicPopupMenuUI$MouseGrabber -+javax/swing/MenuSelectionManager -+javax/swing/plaf/basic/BasicPopupMenuUI$MenuKeyboardHelper -+javax/swing/plaf/basic/BasicPopupMenuUI$MenuKeyboardHelper$1 -+java/awt/event/FocusAdapter -+javax/swing/plaf/basic/BasicComboPopup$1 -+javax/swing/JList -+javax/swing/DefaultListSelectionModel -+javax/swing/ListSelectionModel -+javax/swing/plaf/basic/BasicListUI -+javax/swing/plaf/ListUI -+javax/swing/plaf/basic/BasicListUI$ListTransferHandler -+javax/swing/DefaultListCellRenderer$UIResource -+javax/swing/DefaultListCellRenderer -+javax/swing/ListCellRenderer -+javax/swing/plaf/basic/BasicListUI$Handler -+javax/swing/event/ListSelectionListener -+javax/swing/JMenu -+javax/swing/JMenuItem -+javax/swing/event/ListSelectionEvent -+javax/swing/plaf/basic/BasicComboPopup$Handler -+javax/swing/ScrollPaneLayout$UIResource -+javax/swing/ScrollPaneLayout -+javax/swing/ViewportLayout -+javax/swing/plaf/basic/BasicViewportUI -+javax/swing/plaf/ViewportUI -+javax/swing/JScrollPane$ScrollBar -+javax/swing/JScrollBar -+java/awt/Adjustable -+javax/swing/JScrollBar$ModelListener -+javax/swing/plaf/metal/MetalScrollBarUI -+javax/swing/plaf/basic/BasicScrollBarUI -+javax/swing/plaf/ScrollBarUI -+javax/swing/plaf/metal/MetalBumps -+javax/swing/plaf/basic/BasicScrollBarUI$TrackListener -+javax/swing/plaf/basic/BasicScrollBarUI$ArrowButtonListener -+javax/swing/plaf/basic/BasicScrollBarUI$ModelListener -+javax/swing/plaf/metal/MetalScrollBarUI$ScrollBarListener -+javax/swing/plaf/basic/BasicScrollBarUI$PropertyChangeHandler -+javax/swing/plaf/basic/BasicScrollBarUI$Handler -+javax/swing/plaf/basic/BasicScrollBarUI$ScrollListener -+javax/swing/JViewport$ViewListener -+javax/swing/plaf/metal/MetalScrollPaneUI -+javax/swing/plaf/basic/BasicScrollPaneUI -+javax/swing/plaf/ScrollPaneUI -+javax/swing/plaf/metal/MetalBorders$ScrollPaneBorder -+javax/swing/plaf/basic/BasicScrollPaneUI$Handler -+javax/swing/plaf/metal/MetalScrollPaneUI$1 -+javax/swing/plaf/basic/BasicComboBoxRenderer$UIResource -+javax/swing/plaf/basic/BasicComboBoxRenderer -+javax/swing/plaf/metal/MetalComboBoxEditor$UIResource -+javax/swing/plaf/metal/MetalComboBoxEditor -+javax/swing/plaf/basic/BasicComboBoxEditor -+javax/swing/ComboBoxEditor -+javax/swing/plaf/basic/BasicComboBoxEditor$BorderlessTextField -+javax/swing/plaf/basic/BasicComboBoxEditor$UIResource -+javax/swing/text/Segment -+java/text/CharacterIterator -+javax/swing/plaf/metal/MetalComboBoxEditor$1 -+javax/swing/plaf/metal/MetalComboBoxEditor$EditorBorder -+javax/swing/JToolBar -+javax/swing/plaf/metal/MetalComboBoxUI$MetalPropertyChangeListener -+javax/swing/plaf/basic/BasicComboBoxUI$PropertyChangeHandler -+javax/swing/plaf/basic/BasicComboBoxUI$Handler -+javax/swing/plaf/metal/MetalComboBoxIcon -+javax/swing/plaf/metal/MetalComboBoxButton$1 -+javax/swing/plaf/basic/BasicComboBoxUI$DefaultKeySelectionManager -+javax/swing/JComboBox$KeySelectionManager -+javax/swing/plaf/metal/MetalCheckBoxUI -+javax/swing/plaf/metal/MetalIconFactory$CheckBoxIcon -+java/lang/ExceptionInInitializerError -+com/sun/java/swing/plaf/windows/WindowsTabbedPaneUI -+javax/swing/JProgressBar -+javax/swing/JProgressBar$ModelListener -+javax/swing/plaf/metal/MetalProgressBarUI -+javax/swing/plaf/basic/BasicProgressBarUI -+javax/swing/plaf/ProgressBarUI -+javax/swing/plaf/BorderUIResource$LineBorderUIResource -+javax/swing/plaf/basic/BasicProgressBarUI$Handler -+javax/swing/JTable -+javax/swing/event/TableModelListener -+javax/swing/event/TableColumnModelListener -+javax/swing/event/CellEditorListener -+javax/swing/event/RowSorterListener -+javax/swing/tree/TreeModel -+javax/swing/table/JTableHeader -+javax/swing/table/AbstractTableModel -+javax/swing/table/TableModel -+javax/swing/table/TableCellRenderer -+javax/swing/event/TreeExpansionListener -+javax/swing/table/DefaultTableCellRenderer -+javax/swing/JCheckBoxMenuItem -+javax/swing/JTree -+javax/swing/tree/TreeSelectionModel -+javax/swing/tree/DefaultTreeCellRenderer -+javax/swing/tree/TreeCellRenderer -+javax/swing/table/TableCellEditor -+javax/swing/CellEditor -+javax/swing/JToolTip -+javax/swing/table/TableColumn -+javax/swing/table/DefaultTableColumnModel -+javax/swing/table/TableColumnModel -+javax/swing/table/DefaultTableModel -+javax/swing/event/TableModelEvent -+sun/swing/table/DefaultTableCellHeaderRenderer -+sun/swing/table/DefaultTableCellHeaderRenderer$EmptyIcon -+javax/swing/plaf/basic/BasicTableHeaderUI -+javax/swing/plaf/TableHeaderUI -+javax/swing/plaf/basic/BasicTableHeaderUI$1 -+javax/swing/plaf/basic/BasicTableHeaderUI$MouseInputHandler -+javax/swing/DefaultCellEditor -+javax/swing/tree/TreeCellEditor -+javax/swing/AbstractCellEditor -+javax/swing/plaf/basic/BasicTableUI -+javax/swing/plaf/TableUI -+javax/swing/plaf/basic/BasicTableUI$TableTransferHandler -+javax/swing/plaf/basic/BasicTableUI$Handler -+javax/swing/tree/DefaultTreeSelectionModel -+javax/swing/tree/TreePath -+javax/swing/plaf/metal/MetalTreeUI -+javax/swing/plaf/basic/BasicTreeUI -+javax/swing/plaf/TreeUI -+javax/swing/plaf/basic/BasicTreeUI$Actions -+javax/swing/plaf/basic/BasicTreeUI$TreeTransferHandler -+javax/swing/plaf/metal/MetalTreeUI$LineListener -+javax/swing/plaf/basic/BasicTreeUI$Handler -+javax/swing/event/TreeModelListener -+javax/swing/event/TreeSelectionListener -+javax/swing/event/SwingPropertyChangeSupport -+javax/swing/tree/VariableHeightLayoutCache -+javax/swing/tree/AbstractLayoutCache -+javax/swing/tree/RowMapper -+javax/swing/plaf/basic/BasicTreeUI$NodeDimensionsHandler -+javax/swing/tree/AbstractLayoutCache$NodeDimensions -+javax/swing/JTree$TreeModelHandler -+javax/swing/tree/VariableHeightLayoutCache$TreeStateNode -+javax/swing/tree/DefaultMutableTreeNode -+javax/swing/tree/MutableTreeNode -+javax/swing/tree/DefaultMutableTreeNode$PreorderEnumeration -+java/util/Vector$1 -+javax/swing/event/TableColumnModelEvent -+javax/swing/JPopupMenu$Separator -+javax/swing/JSeparator -+java/text/ParseException -+java/text/NumberFormat$Field -+javax/swing/text/GapContent$InsertUndo -+javax/swing/undo/AbstractUndoableEdit -+javax/swing/undo/UndoableEdit -+javax/swing/text/AbstractDocument$DefaultDocumentEvent -+javax/swing/event/DocumentEvent -+javax/swing/undo/CompoundEdit -+javax/swing/event/DocumentEvent$EventType -+javax/swing/text/Utilities -+javax/swing/text/SegmentCache -+javax/swing/text/SegmentCache$CachedSegment -+javax/swing/event/DocumentEvent$ElementChange -+javax/swing/event/UndoableEditEvent -+javax/swing/event/UndoableEditListener -+java/awt/Canvas -+java/util/Locale$Category -+java/util/Locale$1 -+javax/swing/filechooser/FileFilter -+java/io/FileWriter -+javax/swing/tree/DefaultTreeModel -+javax/swing/tree/DefaultTreeCellEditor -+javax/swing/tree/DefaultTreeCellEditor$1 -+javax/swing/tree/DefaultTreeCellEditor$DefaultTextField -+javax/swing/DefaultCellEditor$1 -+javax/swing/DefaultCellEditor$EditorDelegate -+javax/swing/tree/DefaultTreeCellEditor$EditorContainer -+javax/swing/JTree$TreeSelectionRedirector -+javax/swing/JMenuItem$MenuItemFocusListener -+javax/swing/plaf/basic/BasicMenuItemUI -+javax/swing/plaf/MenuItemUI -+javax/swing/plaf/metal/MetalBorders$MenuItemBorder -+javax/swing/plaf/metal/MetalIconFactory$MenuItemArrowIcon -+sun/swing/MenuItemLayoutHelper -+javax/swing/plaf/basic/BasicMenuItemUI$Handler -+javax/swing/event/MenuDragMouseListener -+javax/swing/event/TreeModelEvent -+javax/swing/JSplitPane -+javax/swing/plaf/metal/MetalSplitPaneUI -+javax/swing/plaf/basic/BasicSplitPaneUI -+javax/swing/plaf/SplitPaneUI -+javax/swing/plaf/basic/BasicSplitPaneDivider -+javax/swing/plaf/basic/BasicBorders$SplitPaneBorder -+javax/swing/plaf/metal/MetalSplitPaneDivider -+javax/swing/plaf/basic/BasicSplitPaneDivider$DividerLayout -+javax/swing/plaf/basic/BasicSplitPaneDivider$MouseHandler -+javax/swing/plaf/basic/BasicBorders$SplitPaneDividerBorder -+javax/swing/plaf/basic/BasicSplitPaneUI$BasicHorizontalLayoutManager -+javax/swing/plaf/basic/BasicSplitPaneUI$1 -+javax/swing/plaf/basic/BasicSplitPaneUI$Handler -+javax/swing/plaf/metal/MetalSplitPaneDivider$1 -+javax/swing/plaf/basic/BasicSplitPaneDivider$OneTouchActionHandler -+javax/swing/plaf/metal/MetalSplitPaneDivider$2 -+javax/swing/border/TitledBorder -+javax/swing/plaf/basic/BasicTextAreaUI -+javax/swing/text/AbstractDocument$ElementEdit -+java/util/Random -+java/util/concurrent/atomic/AtomicLong -+java/io/InterruptedIOException -+java/net/NoRouteToHostException -+java/net/BindException -+javax/swing/tree/PathPlaceHolder -+javax/swing/event/TreeSelectionEvent -+javax/swing/JList$3 -+javax/swing/JList$ListSelectionHandler -+javax/swing/JSlider -+javax/swing/JSlider$ModelListener -+javax/swing/plaf/metal/MetalSliderUI -+javax/swing/plaf/basic/BasicSliderUI -+javax/swing/plaf/SliderUI -+javax/swing/plaf/basic/BasicSliderUI$Actions -+javax/swing/plaf/metal/MetalIconFactory$HorizontalSliderThumbIcon -+javax/swing/plaf/metal/MetalIconFactory$VerticalSliderThumbIcon -+javax/swing/plaf/basic/BasicSliderUI$TrackListener -+javax/swing/plaf/basic/BasicSliderUI$Handler -+javax/swing/plaf/basic/BasicSliderUI$ScrollListener -+javax/swing/plaf/metal/MetalSliderUI$MetalPropertyListener -+javax/swing/plaf/basic/BasicSliderUI$PropertyChangeHandler -+java/util/concurrent/ConcurrentHashMap$KeyIterator -+java/util/concurrent/ConcurrentHashMap$BaseIterator -+java/util/concurrent/ConcurrentHashMap$Traverser -+sun/font/Type1Font$1 -+java/nio/channels/FileChannel$MapMode -+sun/nio/ch/FileChannelImpl$Unmapper -+sun/nio/ch/Util$4 -+java/nio/DirectByteBufferR -+sun/nio/cs/US_ASCII$Decoder -+sun/font/SunFontManager$10 -+java/util/concurrent/ConcurrentHashMap$ValueIterator -+javax/swing/DefaultListModel -+javax/swing/event/ListDataEvent -+javax/sound/sampled/DataLine -+javax/sound/sampled/Line -+javax/sound/sampled/LineUnavailableException -+javax/sound/sampled/UnsupportedAudioFileException -+javax/sound/sampled/Line$Info -+javax/sound/sampled/DataLine$Info -+javax/sound/sampled/Control$Type -+javax/sound/sampled/FloatControl$Type -+javax/swing/JMenuBar -+javax/swing/plaf/basic/BasicMenuBarUI -+javax/swing/plaf/MenuBarUI -+javax/swing/plaf/metal/MetalBorders$MenuBarBorder -+javax/swing/plaf/basic/BasicMenuBarUI$Handler -+javax/swing/KeyboardManager -+javax/swing/JRadioButtonMenuItem -+javax/swing/JMenu$MenuChangeListener -+javax/swing/plaf/basic/BasicMenuUI -+javax/swing/plaf/metal/MetalIconFactory$MenuArrowIcon -+javax/swing/plaf/basic/BasicMenuUI$Handler -+javax/swing/JMenuItem$AccessibleJMenuItem -+javax/swing/AbstractButton$AccessibleAbstractButton -+javax/accessibility/AccessibleAction -+javax/accessibility/AccessibleValue -+javax/accessibility/AccessibleText -+javax/accessibility/AccessibleExtendedComponent -+javax/accessibility/AccessibleComponent -+javax/swing/JComponent$AccessibleJComponent -+java/awt/Container$AccessibleAWTContainer -+java/awt/Component$AccessibleAWTComponent -+javax/accessibility/AccessibleContext$1 -+sun/awt/AWTAccessor$AccessibleContextAccessor -+javax/accessibility/AccessibleRelationSet -+javax/swing/JMenu$WinListener -+java/awt/event/WindowAdapter -+javax/swing/plaf/metal/MetalPopupMenuSeparatorUI -+javax/swing/plaf/metal/MetalSeparatorUI -+javax/swing/plaf/basic/BasicSeparatorUI -+javax/swing/plaf/SeparatorUI -+javax/accessibility/AccessibleState -+javax/accessibility/AccessibleBundle -+javax/swing/plaf/basic/BasicCheckBoxMenuItemUI -+javax/swing/plaf/metal/MetalIconFactory$CheckBoxMenuItemIcon -+javax/swing/JCheckBoxMenuItem$AccessibleJCheckBoxMenuItem -+javax/swing/plaf/basic/BasicRadioButtonMenuItemUI -+javax/swing/plaf/metal/MetalIconFactory$RadioButtonMenuItemIcon -+java/awt/event/ContainerEvent -+sun/awt/image/ImageDecoder$1 -+java/awt/im/InputContext -+sun/awt/im/InputMethodContext -+java/awt/im/spi/InputMethodContext -+java/awt/im/InputMethodRequests -+sun/awt/im/InputContext -+sun/awt/im/InputMethodManager -+sun/awt/im/ExecutableInputMethodManager -+sun/awt/X11/XInputMethodDescriptor -+sun/awt/X11InputMethodDescriptor -+java/awt/im/spi/InputMethodDescriptor -+sun/awt/im/InputMethodLocator -+sun/awt/im/ExecutableInputMethodManager$3 -+javax/swing/JTabbedPane$Page -+java/net/DatagramSocket -+java/net/MulticastSocket -+java/net/DatagramPacket -+java/net/DatagramPacket$1 -+java/net/DefaultDatagramSocketImplFactory -+java/net/PlainDatagramSocketImpl -+java/net/AbstractPlainDatagramSocketImpl -+java/net/DatagramSocketImpl -+java/net/AbstractPlainDatagramSocketImpl$1 -+java/net/NetworkInterface -+java/net/NetworkInterface$1 -+java/net/InterfaceAddress -+java/net/DefaultInterface -+java/net/DatagramSocket$1 -+java/net/SocketOption -+sun/net/ResourceManager -+java/text/Collator -+sun/util/locale/provider/CollatorProviderImpl -+java/util/Collections$UnmodifiableList$1 -+sun/text/resources/CollationData -+java/text/RuleBasedCollator -+java/text/RBCollationTables -+java/net/ServerSocket -+java/text/RBTableBuilder -+java/text/RBCollationTables$BuildAPI -+sun/text/IntHashtable -+sun/text/UCompactIntArray -+sun/text/normalizer/NormalizerImpl -+sun/text/normalizer/ICUData -+sun/text/normalizer/NormalizerDataReader -+sun/text/normalizer/ICUBinary$Authenticate -+sun/text/normalizer/ICUBinary -+sun/text/normalizer/NormalizerImpl$FCDTrieImpl -+sun/text/normalizer/Trie$DataManipulate -+sun/text/normalizer/NormalizerImpl$NormTrieImpl -+sun/text/normalizer/NormalizerImpl$AuxTrieImpl -+sun/text/normalizer/IntTrie -+sun/text/normalizer/Trie -+sun/text/normalizer/CharTrie -+sun/text/normalizer/CharTrie$FriendAgent -+sun/text/normalizer/UnicodeSet -+sun/text/normalizer/UnicodeMatcher -+sun/text/normalizer/NormalizerImpl$DecomposeArgs -+java/text/MergeCollation -+java/text/PatternEntry$Parser -+java/text/PatternEntry -+java/text/EntryPair -+sun/text/ComposedCharIter -+sun/text/normalizer/UTF16 -+sun/net/www/protocol/http/Handler -+java/security/SignatureException -+java/security/InvalidKeyException -+java/security/KeyException -+java/security/Signature -+java/security/SignatureSpi -+java/io/ObjectInputStream$BlockDataInputStream -+java/io/ObjectInputStream$PeekInputStream -+java/io/ObjectInputStream$HandleTable -+java/io/ObjectInputStream$HandleTable$HandleList -+java/io/ObjectInputStream$ValidationList -+java/io/Bits -+java/io/ObjectStreamClass -+java/io/ObjectOutputStream -+java/io/ObjectOutput -+sun/security/provider/DSAPublicKey -+java/security/interfaces/DSAPublicKey -+java/security/interfaces/DSAKey -+java/security/PublicKey -+java/security/Key -+sun/security/x509/X509Key -+java/io/ObjectStreamClass$Caches -+java/io/ObjectStreamClass$WeakClassKey -+java/io/ObjectStreamClass$EntryFuture -+java/lang/reflect/Proxy -+java/lang/reflect/InvocationHandler -+java/lang/reflect/WeakCache -+java/lang/reflect/Proxy$KeyFactory -+java/lang/reflect/Proxy$ProxyClassFactory -+java/io/Externalizable -+java/io/ObjectStreamClass$2 -+java/util/ComparableTimSort -+sun/security/x509/AlgorithmId -+sun/security/util/DerEncoder -+sun/reflect/SerializationConstructorAccessorImpl -+sun/security/util/BitArray -+sun/reflect/UnsafeQualifiedStaticLongFieldAccessorImpl -+java/io/ObjectStreamClass$FieldReflectorKey -+java/io/ObjectStreamClass$FieldReflector -+java/io/ObjectStreamClass$1 -+java/io/DataOutputStream -+java/io/ObjectStreamClass$MemberSignature -+java/io/ObjectStreamClass$3 -+sun/security/util/DerOutputStream -+java/io/ObjectStreamClass$4 -+java/io/ObjectStreamClass$5 -+sun/security/util/DerValue -+java/security/MessageDigest -+java/security/MessageDigestSpi -+sun/security/jca/GetInstance -+sun/security/jca/Providers -+java/lang/InheritableThreadLocal -+sun/security/jca/ProviderList -+sun/security/jca/ProviderConfig -+java/math/BigInteger -+java/security/Provider -+sun/security/jca/ProviderList$3 -+sun/security/jca/ProviderList$1 -+java/security/Provider$ServiceKey -+java/security/Provider$EngineDescription -+java/security/interfaces/DSAParams -+sun/security/jca/ProviderList$2 -+sun/security/jca/ProviderConfig$2 -+java/io/ObjectStreamClass$ClassDataSlot -+sun/security/provider/Sun -+java/io/SerialCallbackContext -+sun/security/provider/SunEntries -+sun/security/provider/SunEntries$1 -+sun/security/provider/NativePRNG -+java/security/SecureRandomSpi -+sun/security/provider/NativePRNG$Variant -+sun/security/util/DerInputStream -+sun/security/provider/NativePRNG$1 -+sun/security/provider/NativePRNG$2 -+sun/security/provider/NativePRNG$RandomIO -+sun/security/util/DerInputBuffer -+sun/security/provider/NativePRNG$Blocking -+sun/security/provider/NativePRNG$NonBlocking -+sun/security/util/ObjectIdentifier -+java/security/Provider$Service -+java/security/Provider$UString -+sun/security/provider/SHA -+sun/security/provider/DigestBase -+sun/security/jca/GetInstance$Instance -+java/security/MessageDigest$Delegate -+sun/security/provider/ByteArrayAccess -+java/io/ObjectOutputStream$BlockDataOutputStream -+java/security/AlgorithmParameters -+java/io/ObjectOutputStream$HandleTable -+java/io/ObjectOutputStream$ReplaceTable -+java/security/AlgorithmParametersSpi -+sun/security/provider/DSAParameters -+sun/security/util/ByteArrayLexOrder -+sun/security/util/ByteArrayTagOrder -+sun/security/util/DerIndefLenConverter -+java/io/ObjectStreamClass$ExceptionInfo -+java/io/ObjectInputStream$GetFieldImpl -+java/io/ObjectInputStream$GetField -+java/math/BigInteger$UnsafeHolder -+sun/security/jca/ServiceId -+sun/security/jca/ProviderList$ServiceList -+sun/security/jca/ProviderList$ServiceList$1 -+java/security/Signature$Delegate -+java/util/ArrayList$SubList -+java/util/ArrayList$SubList$1 -+java/security/interfaces/DSAPrivateKey -+java/security/PrivateKey -+javax/security/auth/Destroyable -+sun/security/provider/DSA$SHA1withDSA -+sun/security/provider/DSA$LegacyDSA -+sun/security/provider/DSA -+java/security/spec/DSAParameterSpec -+java/security/spec/AlgorithmParameterSpec -+java/math/MutableBigInteger -+java/math/SignedMutableBigInteger -+javax/swing/TimerQueue -+java/util/concurrent/DelayQueue -+java/util/concurrent/BlockingQueue -+java/util/AbstractQueue -+java/util/PriorityQueue -+javax/swing/TimerQueue$1 -+javax/swing/TimerQueue$DelayedTimer -+java/util/concurrent/Delayed -+java/util/concurrent/TimeUnit -+java/util/concurrent/TimeUnit$1 -+java/util/concurrent/TimeUnit$2 -+java/util/concurrent/TimeUnit$3 -+java/util/concurrent/TimeUnit$4 -+java/util/concurrent/TimeUnit$5 -+java/util/concurrent/TimeUnit$6 -+java/util/concurrent/TimeUnit$7 -+java/awt/Window$1DisposeAction -+java/awt/EventQueue$1AWTInvocationLock -+sun/awt/X11/XUnmapEvent -+java/awt/LightweightDispatcher$2 -+java/awt/Component$FlipBufferStrategy -+java/awt/SentEvent -+sun/java2d/cmm/CMSManager -+java/awt/image/DataBufferInt -+java/awt/image/SinglePixelPackedSampleModel -+sun/awt/image/IntegerInterleavedRaster -+sun/awt/X11/XDropTargetRegistry -+sun/awt/X11/XEmbeddedFramePeer -+sun/awt/X11/XDragAndDropProtocols -+sun/awt/X11/XDropTargetContextPeer -+sun/awt/dnd/SunDropTargetContextPeer -+java/awt/dnd/peer/DropTargetContextPeer -+java/awt/datatransfer/Transferable -+sun/awt/X11/XDropTargetContextPeer$XDropTargetProtocolListenerImpl -+sun/awt/X11/XDropTargetProtocolListener -+sun/awt/X11/XDnDDragSourceProtocol -+sun/awt/X11/XDragSourceProtocol -+sun/awt/X11/MotifDnDDragSourceProtocol -+sun/awt/X11/XDnDDropTargetProtocol -+sun/awt/X11/XDropTargetProtocol -+sun/awt/X11/MotifDnDDropTargetProtocol -+sun/awt/X11/XErrorHandler$VerifyChangePropertyHandler -+sun/awt/X11/XDnDConstants -+sun/awt/X11/XSelection -+sun/awt/X11/XSelection$IncrementalTransferHandler -+sun/awt/X11/XSelection$SelectionEventHandler -+sun/awt/X11/MotifDnDConstants -+javax/swing/JLayer -+javax/swing/JInternalFrame -+javax/swing/KeyboardManager$ComponentKeyStrokePair -+sun/awt/EmbeddedFrame -+sun/swing/MenuItemLayoutHelper$RectSize -+javax/swing/JTable$2 -+javax/swing/JTable$Resizable3 -+javax/swing/JTable$Resizable2 -+javax/swing/JTable$5 -+javax/swing/event/AncestorEvent -+java/awt/Label -+sun/awt/X11/XLabelPeer -+java/awt/peer/LabelPeer -+sun/awt/TimedWindowEvent -+java/awt/DefaultKeyboardFocusManager$DefaultKeyboardFocusManagerSentEvent -+sun/awt/CausedFocusEvent$Cause -+java/awt/KeyboardFocusManager$HeavyweightFocusRequest -+java/awt/DefaultKeyboardFocusManager$TypeAheadMarker -+java/awt/KeyboardFocusManager$LightweightFocusRequest -+sun/awt/CausedFocusEvent -+java/awt/KeyboardFocusManager$3 -+sun/awt/X11/XInputMethod -+sun/awt/X11InputMethod -+sun/awt/im/InputMethodAdapter -+java/awt/im/spi/InputMethod -+java/awt/Event -+java/net/Authenticator -+java/lang/Throwable$WrappedPrintStream -+java/lang/Throwable$PrintStreamOrWriter -+sun/awt/image/PNGImageDecoder -+sun/awt/image/PNGFilterInputStream -+sun/util/locale/provider/TimeZoneNameUtility -+sun/util/locale/provider/TimeZoneNameProviderImpl -+sun/util/locale/provider/TimeZoneNameUtility$TimeZoneNameGetter -+sun/util/resources/TimeZoneNames -+sun/util/resources/TimeZoneNamesBundle -+sun/util/resources/en/TimeZoneNames_en -+sun/awt/image/OffScreenImage -+java/lang/ProcessBuilder -+java/lang/ProcessImpl -+java/lang/UNIXProcess -+java/lang/Process -+java/lang/UNIXProcess$Platform -+java/lang/UNIXProcess$LaunchMechanism -+java/util/EnumSet -+java/util/RegularEnumSet -+sun/java2d/x11/X11SurfaceDataProxy$Opaque -+java/lang/UNIXProcess$1 -+java/util/concurrent/Executor -+java/util/concurrent/ThreadFactory -+java/util/concurrent/Executors -+java/util/concurrent/ThreadPoolExecutor -+java/util/concurrent/AbstractExecutorService -+java/util/concurrent/ExecutorService -+java/util/concurrent/ThreadPoolExecutor$AbortPolicy -+java/util/concurrent/RejectedExecutionHandler -+java/util/concurrent/SynchronousQueue -+java/util/concurrent/SynchronousQueue$TransferStack -+java/util/concurrent/SynchronousQueue$Transferer -+java/util/concurrent/SynchronousQueue$TransferStack$SNode -+java/lang/UNIXProcess$ProcessPipeOutputStream -+java/lang/UNIXProcess$ProcessPipeInputStream -+java/util/concurrent/ThreadPoolExecutor$Worker -+java/lang/ProcessBuilder$NullOutputStream -+java/io/FilterReader -+sun/awt/X11/XClipboard -+sun/awt/X11/OwnershipListener -+sun/awt/datatransfer/SunClipboard -+java/awt/datatransfer/Clipboard -+java/io/EOFException -+java/util/jar/JarFile$JarEntryIterator -+java/util/zip/ZipFile$ZipEntryIterator -+java/lang/IllegalAccessError -+java/text/MessageFormat -+java/text/MessageFormat$Field -+java/util/Hashtable$ValueCollection -+javax/swing/event/CaretListener -+javax/swing/plaf/metal/MetalButtonUI -+javax/swing/plaf/metal/MetalToggleButtonUI -+javax/swing/plaf/metal/MetalBorders$ToggleButtonBorder -+javax/swing/event/MenuEvent -+javax/swing/border/MatteBorder -+sun/font/StandardGlyphVector -+java/awt/font/GlyphVector -+sun/font/StandardGlyphVector$GlyphStrike -+sun/font/CoreMetrics -+sun/font/FontLineMetrics -+java/awt/font/LineMetrics -+javax/swing/JToolBar$DefaultToolBarLayout -+javax/swing/plaf/metal/MetalToolBarUI -+javax/swing/plaf/basic/BasicToolBarUI -+javax/swing/plaf/ToolBarUI -+javax/swing/plaf/metal/MetalBorders$ToolBarBorder -+javax/swing/plaf/metal/MetalBorders$RolloverButtonBorder -+javax/swing/plaf/metal/MetalBorders$RolloverMarginBorder -+javax/swing/plaf/basic/BasicBorders$RolloverMarginBorder -+javax/swing/plaf/metal/MetalToolBarUI$MetalDockingListener -+javax/swing/plaf/basic/BasicToolBarUI$DockingListener -+javax/swing/plaf/basic/BasicToolBarUI$Handler -+javax/swing/JToolBar$Separator -+javax/swing/plaf/basic/BasicToolBarSeparatorUI -+java/awt/event/AdjustmentEvent -+java/awt/MenuBar -+sun/awt/X11/XErrorEvent -+# eea35d9d56e0006e ---- ./jdk/make/gendata/GendataFontConfig.gmk Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/make/gendata/GendataFontConfig.gmk Sun Feb 10 09:27:00 2019 -0800 -@@ -73,6 +73,13 @@ - GENDATA_FONT_CONFIG_SRC_PREFIX := aix. - endif - -+ifeq ($(OPENJDK_TARGET_OS), bsd) -+ GENDATA_FONT_CONFIG_SRC_DIR := \ -+ $(JDK_TOPDIR)/src/solaris/classes/sun/awt/fontconfigs -+ GENDATA_FONT_CONFIG_SRC_FILES := fontconfig.properties -+ GENDATA_FONT_CONFIG_SRC_PREFIX := bsd. -+endif -+ - ### - - $(GENDATA_FONT_CONFIG_DST)/%.src: \ ---- ./jdk/make/lib/Awt2dLibraries.gmk Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/make/lib/Awt2dLibraries.gmk Sun Feb 10 09:27:00 2019 -0800 -@@ -306,7 +306,7 @@ - debug_trace.c \ - debug_util.c - --ifneq (, $(filter $(OPENJDK_TARGET_OS), solaris linux aix)) -+ifneq (, $(filter $(OPENJDK_TARGET_OS), bsd solaris linux aix)) - LIBAWT_FILES += awt_LoadLibrary.c initIDs.c img_colors.c - endif - -@@ -477,6 +477,7 @@ - LDFLAGS_SUFFIX_linux := -ljvm $(LIBM) $(LIBDL) -ljava, \ - LDFLAGS_SUFFIX_solaris := -ljvm $(LIBM) $(LIBDL) -ljava -lc, \ - LDFLAGS_SUFFIX_aix :=-ljvm $(LIBM) $(LIBDL) -ljava -lm,\ -+ LDFLAGS_SUFFIX_bsd := -ljvm $(LIBM) -ljava, \ - LDFLAGS_SUFFIX_macosx := -lmlib_image -ljvm $(LIBM) \ - -framework Cocoa \ - -framework OpenGL \ -@@ -553,6 +554,16 @@ - endif - endif - -+ ifeq ($(OPENJDK_TARGET_OS), bsd) -+ ifndef OPENJDK -+ include $(JDK_TOPDIR)/make/closed/xawt.gmk -+ endif -+ -+ ifeq ($(DISABLE_XRENDER), true) -+ LIBAWT_XAWT_CFLAGS += -DDISABLE_XRENDER_BY_DEFAULT=true -+ endif -+ endif -+ - ifeq ($(MILESTONE), internal) - LIBAWT_XAWT_CFLAGS += -DINTERNAL_BUILD - endif -@@ -623,6 +634,11 @@ - LIBAWT_XAWT_LDFLAGS += -lpthread - endif - -+ ifeq ($(OPENJDK_TARGET_OS), bsd) -+ # To match old build, add this to LDFLAGS instead of suffix. -+ LIBAWT_XAWT_LDFLAGS += -pthread -+ endif -+ - $(eval $(call SetupNativeCompilation,BUILD_LIBAWT_XAWT, \ - LIBRARY := awt_xawt, \ - OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ -@@ -637,6 +653,7 @@ - $(X_LIBS) $(LIBAWT_XAWT_LDFLAGS) \ - $(call SET_SHARED_LIBRARY_ORIGIN) \ - $(call SET_SHARED_LIBRARY_ORIGIN,/..), \ -+ LDFLAGS_bsd := $(call SET_SHARED_LIBRARY_ORIGIN), \ - LDFLAGS_SUFFIX := $(LIBAWT_XAWT_LDFLAGS_SUFFIX), \ - VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \ - RC_FLAGS := $(RC_FLAGS) \ -@@ -680,6 +697,7 @@ - LDFLAGS_SUFFIX_macosx := $(LIBM) -lawt -ljava -ljvm, \ - LDFLAGS_SUFFIX_linux := -lm -lawt -ljava -ljvm, \ - LDFLAGS_SUFFIX_aix := -lm -lawt -ljava -ljvm,\ -+ LDFLAGS_SUFFIX_bsd := -lm -lawt -ljava -ljvm, \ - VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \ - RC_FLAGS := $(RC_FLAGS) \ - -D "JDK_FNAME=lcms.dll" \ -@@ -836,6 +854,7 @@ - LDFLAGS_SUFFIX_linux := -ljvm -lawt -lm $(LIBDL) -ljava, \ - LDFLAGS_SUFFIX_aix := -ljvm -lawt -ljava,\ - LDFLAGS_SUFFIX_solaris := $(LIBDL) -ljvm -lawt -lm -ljava $(LIBCXX) -lc, \ -+ LDFLAGS_SUFFIX_bsd := -ljvm -lawt -lm -ljava, \ - OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libawt_headless, \ - DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES))) - -@@ -918,6 +937,7 @@ - LDFLAGS_SUFFIX_linux := -lawt $(LIBM) $(LIBCXX) -ljava -ljvm -lc, \ - LDFLAGS_SUFFIX_solaris := -lawt -lawt_headless -lc $(LIBM) $(LIBCXX) -ljava -ljvm, \ - LDFLAGS_SUFFIX_aix := -lawt -lawt_headless $(LIBM) $(LIBCXX) -ljava -ljvm,\ -+ LDFLAGS_SUFFIX_bsd := -lawt $(LIBM) $(LIBCXX) -ljava -ljvm -lc, \ - LDFLAGS_SUFFIX_macosx := -lawt $(LIBM) $(LIBCXX) -undefined dynamic_lookup \ - -ljava -ljvm, \ - LDFLAGS_SUFFIX_windows := $(WIN_JAVA_LIB) advapi32.lib user32.lib gdi32.lib \ -@@ -1061,6 +1081,7 @@ - OPTIMIZATION := LOW, \ - CFLAGS := $(CFLAGS_JDKLIB), \ - CFLAGS_linux := $(HEADLESS_CFLAG), \ -+ CFLAGS_bsd := $(HEADLESS_CFLAG), \ - CFLAGS_macosx := -I$(JDK_TOPDIR)/src/solaris/native/sun/awt, \ - MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjawt/mapfile-vers, \ - LDFLAGS := $(LDFLAGS_JDKLIB) \ -@@ -1069,6 +1090,7 @@ - LDFLAGS_SUFFIX_linux := $(JAWT_LIBS) $(LDFLAGS_JDKLIB_SUFFIX), \ - LDFLAGS_SUFFIX_aix := $(JAWT_LIBS) $(LDFLAGS_JDKLIB_SUFFIX),\ - LDFLAGS_SUFFIX_solaris := $(JAWT_LIBS) $(LDFLAGS_JDKLIB_SUFFIX) -lXrender, \ -+ LDFLAGS_SUFFIX_bsd := $(JAWT_LIBS) $(LDFLAGS_JDKLIB_SUFFIX), \ - LDFLAGS_SUFFIX_macosx := -Xlinker -rpath -Xlinker @loader_path $(JAWT_LIBS) \ - -framework Cocoa $(LDFLAGS_JDKLIB_SUFFIX), \ - OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libjawt, \ -@@ -1134,7 +1156,7 @@ - $(JDK_TOPDIR)/src/share/native/sun/awt/splashscreen - - ifeq ($(USE_EXTERNAL_LIBGIF), true) -- GIFLIB_LDFLAGS := -lgif -+ GIFLIB_LDFLAGS += -lgif - else - LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/share/native/sun/awt/giflib - GIFLIB_CFLAGS := -I$(JDK_TOPDIR)/src/share/native/sun/awt/giflib -@@ -1184,7 +1206,7 @@ - -framework JavaNativeFoundation - else ifeq ($(OPENJDK_TARGET_OS), windows) - LIBSPLASHSCREEN_LDFLAGS_SUFFIX += kernel32.lib user32.lib gdi32.lib delayimp.lib -DELAYLOAD:user32.dll -- else -+ else # .. all other Unixes can use X_LIBS - LIBSPLASHSCREEN_LDFLAGS_SUFFIX += $(X_LIBS) -lX11 -lXext $(LIBM) -lpthread - endif - ---- ./jdk/make/lib/CoreLibraries.gmk Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/make/lib/CoreLibraries.gmk Sun Feb 10 09:27:00 2019 -0800 -@@ -100,7 +100,7 @@ - endif - - LIBVERIFY_OPTIMIZATION := HIGH --ifneq ($(findstring $(OPENJDK_TARGET_OS), solaris linux), ) -+ifneq ($(findstring $(OPENJDK_TARGET_OS), solaris linux bsd), ) - ifeq ($(ENABLE_DEBUG_SYMBOLS), true) - LIBVERIFY_OPTIMIZATION := LOW - endif -@@ -222,6 +222,7 @@ - LDFLAGS_SUFFIX_solaris := -lsocket -lnsl -lscf $(LIBDL) $(BUILD_LIBFDLIBM) -lc, \ - LDFLAGS_SUFFIX_linux := $(LIBDL) $(BUILD_LIBFDLIBM), \ - LDFLAGS_SUFFIX_aix := $(LIBDL) $(BUILD_LIBFDLIBM) -lm,\ -+ LDFLAGS_SUFFIX_bsd := $(BUILD_LIBFDLIBM), \ - LDFLAGS_SUFFIX_macosx := -L$(JDK_OUTPUTDIR)/objs/ -lfdlibm \ - -framework CoreFoundation \ - -framework Foundation \ -@@ -292,6 +293,7 @@ - LDFLAGS_SUFFIX_linux := -ljvm -ljava $(LIBZ), \ - LDFLAGS_SUFFIX_solaris := -ljvm -ljava $(LIBZ) -lc, \ - LDFLAGS_SUFFIX_aix := -ljvm -ljava $(LIBZ),\ -+ LDFLAGS_SUFFIX_bsd := -ljvm -ljava $(LIBZ), \ - LDFLAGS_SUFFIX_macosx := $(LIBZ) -ljava -ljvm, \ - VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \ - RC_FLAGS := $(RC_FLAGS) \ -@@ -407,7 +409,7 @@ - # Append defines depending on target platform - LIBJLI_CFLAGS += $(OPENJDK_TARGET_CPU_JLI_CFLAGS) - --ifeq ($(OPENJDK_TARGET_OS), macosx) -+ifneq ($(findstring $(OPENJDK_TARGET_OS), bsd macosx), ) - LIBJLI_CFLAGS += -DPACKAGE_PATH=\"$(PACKAGE_PATH)\" - endif - -@@ -442,11 +444,13 @@ - $(call SET_SHARED_LIBRARY_ORIGIN), \ - LDFLAGS_linux := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \ - LDFLAGS_solaris := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \ -+ LDFLAGS_bsd := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \ - LDFLAGS_macosx := -framework Cocoa -framework Security -framework ApplicationServices, \ - LDFLAGS_SUFFIX_solaris := $(LIBZ) $(LIBDL) -lc, \ - LDFLAGS_SUFFIX_linux := $(LIBZ) $(LIBDL) -lc -lpthread, \ - LDFLAGS_SUFFIX_aix := $(LIBZ) $(LIBDL),\ - LDFLAGS_SUFFIX_macosx := $(LIBZ), \ -+ LDFLAGS_SUFFIX_bsd := $(LIBZ) -pthread, \ - LDFLAGS_SUFFIX_windows := \ - -export:JLI_Launch \ - -export:JLI_ManifestIterate \ -@@ -490,9 +494,9 @@ - - BUILD_LIBRARIES += $(BUILD_LIBJLI_STATIC) - --else ifeq ($(OPENJDK_TARGET_OS), macosx) -+else ifneq ($(findstring $(OPENJDK_TARGET_OS), $(BSD_STATIC_LIBJLI) macosx), ) - # -- # On macosx they do partial (incremental) linking of libjli_static.a -+ # On BSD they do partial (incremental) linking of libjli_static.a - # code it here...rather than add support to NativeCompilation - # as this is first time I see it - $(eval $(call SetupNativeCompilation,BUILD_LIBJLI_STATIC, \ -@@ -531,6 +535,13 @@ - - ########################################################################################## - -+ifeq ($(OPENJDK_TARGET_OS), bsd) -+ BSD_ICONV_CFLAGS:= -I$(PACKAGE_PATH)/include -+ ifneq ($(OPENJDK_TARGET_OS_VENDOR), openbsd) -+ BSD_ICONV_CFLAGS += -DLIBICONV_PLUG -+ endif -+endif -+ - $(eval $(call SetupNativeCompilation,BUILD_LIBNPT, \ - LIBRARY := npt, \ - OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ -@@ -540,9 +551,11 @@ - CFLAGS := $(CFLAGS_JDKLIB) \ - -I$(JDK_TOPDIR)/src/share/npt \ - -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/npt, \ -+ CFLAGS_bsd := $(BSD_ICONV_CFLAGS), \ - MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libnpt/mapfile-vers, \ - LDFLAGS := $(LDFLAGS_JDKLIB) \ - $(call SET_SHARED_LIBRARY_ORIGIN), \ -+ LDFLAGS_bsd := -L$(PACKAGE_PATH)/lib -liconv, \ - LDFLAGS_macosx := -liconv, \ - LDFLAGS_SUFFIX_windows := -export:nptInitialize -export:nptTerminate, \ - LDFLAGS_SUFFIX_solaris := -lc, \ ---- ./jdk/make/lib/NetworkingLibraries.gmk Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/make/lib/NetworkingLibraries.gmk Sun Feb 10 09:27:00 2019 -0800 -@@ -42,7 +42,7 @@ - LIBNET_EXCLUDE_FILES += linux_close.c - endif - --ifneq ($(OPENJDK_TARGET_OS), macosx) -+ifeq (,$(findstring $(OPENJDK_TARGET_OS), bsd macosx)) - LIBNET_EXCLUDE_FILES += bsd_close.c - endif - -@@ -58,6 +58,10 @@ - NTLMAuthSequence.c NetworkInterface_winXP.c - endif - -+ifneq ($(DONT_ENABLE_IPV6),) -+ LIBNET_CFLAGS += -DDONT_ENABLE_IPV6 -+endif -+ - $(eval $(call SetupNativeCompilation,BUILD_LIBNET, \ - LIBRARY := net, \ - OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ -@@ -74,6 +78,7 @@ - LDFLAGS_SUFFIX_solaris := -ljvm -ljava -lnsl -lsocket $(LIBDL) -lc, \ - LDFLAGS_SUFFIX_linux := $(LIBDL) -ljvm -lpthread -ljava, \ - LDFLAGS_SUFFIX_aix := $(LIBDL) -ljvm -ljava,\ -+ LDFLAGS_SUFFIX_bsd := -ljvm -pthread -ljava, \ - LDFLAGS_SUFFIX_windows := ws2_32.lib jvm.lib secur32.lib iphlpapi.lib \ - delayimp.lib urlmon.lib $(WIN_JAVA_LIB) advapi32.lib \ - -DELAYLOAD:secur32.dll -DELAYLOAD:iphlpapi.dll, \ ---- ./jdk/make/lib/NioLibraries.gmk Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/make/lib/NioLibraries.gmk Sun Feb 10 09:27:00 2019 -0800 -@@ -77,9 +77,28 @@ - UnixNativeDispatcher.c - endif - -+ifeq ($(OPENJDK_TARGET_OS), bsd) -+ BUILD_LIBNIO_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libnio/mapfile-$(OPENJDK_TARGET_OS) -+ BUILD_LIBNIO_SRC += $(JDK_TOPDIR)/src/bsd/native/sun/nio/ch -+ BUILD_LIBNIO_FILES += \ -+ BsdNativeDispatcher.c \ -+ GnomeFileTypeDetector.c \ -+ InheritedChannel.c \ -+ KQueue.c \ -+ KQueueArrayWrapper.c \ -+ KQueuePort.c \ -+ MagicFileTypeDetector.c \ -+ NativeThread.c \ -+ PollArrayWrapper.c \ -+ UnixAsynchronousServerSocketChannelImpl.c \ -+ UnixAsynchronousSocketChannelImpl.c \ -+ UnixCopyFile.c \ -+ UnixNativeDispatcher.c -+endif -+ - ifeq ($(OPENJDK_TARGET_OS), macosx) - BUILD_LIBNIO_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libnio/mapfile-$(OPENJDK_TARGET_OS) -- BUILD_LIBNIO_SRC += $(JDK_TOPDIR)/src/macosx/native/sun/nio/ch -+ BUILD_LIBNIO_SRC += $(JDK_TOPDIR)/src/bsd/native/sun/nio/ch - BUILD_LIBNIO_FILES += \ - InheritedChannel.c \ - NativeThread.c \ -@@ -149,6 +168,7 @@ - LDFLAGS_SUFFIX_windows := jvm.lib ws2_32.lib $(WIN_JAVA_LIB) \ - $(JDK_OUTPUTDIR)/objs/libnet/net.lib \ - advapi32.lib, \ -+ LDFLAGS_SUFFIX_bsd := -ljava -lnet -pthread, \ - LDFLAGS_SUFFIX_macosx := -ljava -lnet -pthread -framework CoreFoundation, \ - LDFLAGS_SUFFIX :=, \ - VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \ -@@ -168,6 +188,7 @@ - ifeq ($(OPENJDK_TARGET_OS_API), posix) - - ifeq (, $(filter $(OPENJDK_TARGET_OS), macosx aix)) -+ ifeq (, $(filter $(OPENJDK_TARGET_OS_VENDOR), netbsd openbsd)) - - # Suppress unused parameters required by exported JNI functions. - SCTP_WERROR := -Werror -Wno-error=unused-parameter -@@ -194,6 +215,7 @@ - LDFLAGS_SUFFIX_linux := -lpthread $(LIBDL) -ljava -ljvm, \ - LDFLAGS_SUFFIX_posix := -lnio -lnet, \ - LDFLAGS_SUFFIX_solaris := -lsocket -ljava -ljvm -lc, \ -+ LDFLAGS_SUFFIX_bsd := -pthread -ljava -ljvm, \ - LDFLAGS_SUFFIX_macosx := -ljava -ljvm, \ - OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libsctp, \ - DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES))) -@@ -202,4 +224,5 @@ - - $(BUILD_LIBSCTP): $(BUILD_LIBNIO) - endif -+ endif - endif ---- ./jdk/make/lib/ServiceabilityLibraries.gmk Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/make/lib/ServiceabilityLibraries.gmk Sun Feb 10 09:27:00 2019 -0800 -@@ -34,7 +34,7 @@ - ifneq ($(OPENJDK_TARGET_OS), linux) - LIBATTACH_EXCLUDE_FILES += LinuxVirtualMachine.c - endif --ifneq ($(OPENJDK_TARGET_OS), macosx) -+ifeq (,$(findstring $(OPENJDK_TARGET_OS), bsd macosx)) - LIBATTACH_EXCLUDE_FILES += BsdVirtualMachine.c - endif - ifneq ($(OPENJDK_TARGET_OS),aix) -@@ -94,6 +94,7 @@ - $(call SET_SHARED_LIBRARY_ORIGIN), \ - LDFLAGS_SUFFIX_linux := -lpthread, \ - LDFLAGS_SUFFIX_solaris := -lnsl -lsocket -lc, \ -+ LDFLAGS_SUFFIX_bsd := -pthread, \ - LDFLAGS_SUFFIX_windows := $(LDFLAGS_JDKLIB_SUFFIX) -export:jdwpTransport_OnLoad ws2_32.lib, \ - VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \ - RC_FLAGS := $(RC_FLAGS) \ -@@ -245,6 +246,21 @@ - LIBINSTRUMENT_CFLAGS += -Dstrcasecmp=stricmp - endif - -+ifeq ($(OPENJDK_TARGET_OS), bsd) -+ LIBINSTRUMENT_LDFLAGS_SUFFIX += -L$(PACKAGE_PATH)/lib -liconv $(LIBZ) -+ ifeq ($(BSD_STATIC_LIBJLI), bsd) -+ LIBINSTRUMENT_LDFLAGS += -Xlinker --whole-archive $(JDK_OUTPUTDIR)/objs/libjli_static.a \ -+ -Xlinker --no-whole-archive -+ else -+ LIBINSTRUMENT_LDFLAGS += $(call SET_SHARED_LIBRARY_ORIGIN,/jli) -+ LIBINSTRUMENT_LDFLAGS_SUFFIX += -L$(INSTALL_LIBRARIES_HERE)/jli -ljli -+ endif -+ BSD_ICONV_CFLAGS:= -I$(PACKAGE_PATH)/include -+ ifneq ($(OPENJDK_TARGET_OS_VENDOR), openbsd) -+ BSD_ICONV_CFLAGS += -DLIBICONV_PLUG -+ endif -+endif -+ - $(eval $(call SetupNativeCompilation,BUILD_LIBINSTRUMENT, \ - LIBRARY := instrument, \ - OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ -@@ -255,6 +271,7 @@ - CFLAGS := $(LIBINSTRUMENT_CFLAGS), \ - CFLAGS_debug := -DJPLIS_LOGGING, \ - CFLAGS_release := -DNO_JPLIS_LOGGING, \ -+ CFLAGS_bsd := $(BSD_ICONV_CFLAGS), \ - MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libinstrument/mapfile-vers, \ - LDFLAGS := $(LDFLAGS_JDKLIB) \ - $(call SET_SHARED_LIBRARY_ORIGIN) \ -@@ -276,7 +293,7 @@ - OBJECT_DIR := $(LIBINSTRUMENT_DIR), \ - DEBUG_SYMBOLS := true)) - --ifneq (, $(findstring $(OPENJDK_TARGET_OS), macosx windows aix)) -+ifneq (, $(findstring $(OPENJDK_TARGET_OS), $(BSD_STATIC_LIBJLI) macosx windows aix)) - $(BUILD_LIBINSTRUMENT): $(JDK_OUTPUTDIR)/objs/$(LIBRARY_PREFIX)jli_static$(STATIC_LIBRARY_SUFFIX) - else - $(BUILD_LIBINSTRUMENT): $(INSTALL_LIBRARIES_HERE)/jli/$(LIBRARY_PREFIX)jli$(SHARED_LIBRARY_SUFFIX) -@@ -306,12 +323,16 @@ - BUILD_LIBMANAGEMENT_EXCLUDES += LinuxOperatingSystem.c - endif - -+ifneq ($(OPENJDK_TARGET_OS), bsd) -+ BUILD_LIBMANAGEMENT_EXCLUDES += BsdOperatingSystem.c -+endif -+ - ifneq ($(OPENJDK_TARGET_OS), macosx) - BUILD_LIBMANAGEMENT_EXCLUDES += MacosxOperatingSystem.c - endif - - LIBMANAGEMENT_OPTIMIZATION := HIGH --ifneq ($(findstring $(OPENJDK_TARGET_OS), solaris linux), ) -+ifneq ($(findstring $(OPENJDK_TARGET_OS), solaris linux bsd), ) - ifeq ($(ENABLE_DEBUG_SYMBOLS), true) - LIBMANAGEMENT_OPTIMIZATION := LOW - endif -@@ -363,7 +384,7 @@ - BUILD_LIBHPROF_LDFLAGS := - - LIBHPROF_OPTIMIZATION := HIGHEST --ifneq ($(findstring $(OPENJDK_TARGET_OS), solaris linux), ) -+ifneq ($(findstring $(OPENJDK_TARGET_OS), solaris linux bsd), ) - ifeq ($(ENABLE_DEBUG_SYMBOLS), true) - LIBHPROF_OPTIMIZATION := LOW - endif ---- ./jdk/make/lib/SoundLibraries.gmk Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/make/lib/SoundLibraries.gmk Sun Feb 10 09:27:00 2019 -0800 -@@ -75,6 +75,13 @@ - LIBJSOUND_CFLAGS += -DX_PLATFORM=X_AIX - endif # OPENJDK_TARGET_OS aix - -+ifeq ($(OPENJDK_TARGET_OS), bsd) -+ ifneq ($(OPENJDK_TARGET_OS_VENDOR), openbsd) -+ EXTRA_SOUND_JNI_LIBS += jsoundalsa -+ endif # OPENJDK_TARGET_OS_VENDOR openbsd -+ LIBJSOUND_CFLAGS += -DX_PLATFORM=X_BSD -+endif # OPENJDK_TARGET_OS bsd -+ - ifeq ($(OPENJDK_TARGET_OS), macosx) - LIBJSOUND_LANG := C++ - LIBJSOUND_CFLAGS += -DX_PLATFORM=X_MACOSX \ -@@ -200,12 +207,14 @@ - CFLAGS := $(CFLAGS_JDKLIB) $(ALSA_CFLAGS) \ - $(LIBJSOUND_CFLAGS) \ - -DUSE_DAUDIO=TRUE \ -- -DUSE_PORTS=TRUE \ -- -DUSE_PLATFORM_MIDI_OUT=TRUE \ -+ -DUSE_PORTS=TRUE, \ -+ CFLAGS_linux := -DUSE_PLATFORM_MIDI_OUT=TRUE \ - -DUSE_PLATFORM_MIDI_IN=TRUE, \ -+ CFLAGS_bsd := -I$(PACKAGE_PATH)/include, \ - MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjsoundalsa/mapfile-vers, \ - LDFLAGS := $(LDFLAGS_JDKLIB) \ - $(call SET_SHARED_LIBRARY_ORIGIN), \ -+ LDFLAGS_bsd := -L$(PACKAGE_PATH)/lib, \ - LDFLAGS_SUFFIX := $(ALSA_LIBS) -ljava -ljvm, \ - OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libjsoundalsa, \ - DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES))) ---- ./jdk/make/mapfiles/launchers/mapfile-ppc64 Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/make/mapfiles/launchers/mapfile-ppc64 Sun Feb 10 09:27:00 2019 -0800 -@@ -33,6 +33,7 @@ - environ; # Public symbols and required by Java run time - _environ; - __environ_lock; -+ __progname; - - local: - *; ---- ./jdk/make/mapfiles/launchers/mapfile-x86 Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/make/mapfiles/launchers/mapfile-x86 Sun Feb 10 09:27:00 2019 -0800 -@@ -33,6 +33,7 @@ - environ; # Public symbols and required by Java run time - _environ; - __environ_lock; -+ __progname; - ___Argv; # The following are private, but as they are - _start; # exported from ctr1/crtn, the clever hacker - _init; # might know about them. However note, that ---- ./jdk/make/mapfiles/launchers/mapfile-x86_64 Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/make/mapfiles/launchers/mapfile-x86_64 Sun Feb 10 09:27:00 2019 -0800 -@@ -33,6 +33,7 @@ - environ; # Public symbols and required by Java run time - _environ; - __environ_lock; -+ __progname; - - local: - *; ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./jdk/make/mapfiles/libattach/mapfile-bsd Sun Feb 10 09:27:00 2019 -0800 -@@ -0,0 +1,42 @@ -+# -+# Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. -+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -+# -+# This code is free software; you can redistribute it and/or modify it -+# under the terms of the GNU General Public License version 2 only, as -+# published by the Free Software Foundation. Oracle designates this -+# particular file as subject to the "Classpath" exception as provided -+# by Oracle in the LICENSE file that accompanied this code. -+# -+# This code is distributed in the hope that it will be useful, but WITHOUT -+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+# version 2 for more details (a copy is included in the LICENSE file that -+# accompanied this code). -+# -+# You should have received a copy of the GNU General Public License version -+# 2 along with this work; if not, write to the Free Software Foundation, -+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+# -+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -+# or visit www.oracle.com if you need additional information or have any -+# questions. -+# -+ -+# Define public interface. -+ -+SUNWprivate_1.1 { -+ global: -+ Java_sun_tools_attach_BsdVirtualMachine_checkPermissions; -+ Java_sun_tools_attach_BsdVirtualMachine_close; -+ Java_sun_tools_attach_BsdVirtualMachine_connect; -+ Java_sun_tools_attach_BsdVirtualMachine_getTempDir; -+ Java_sun_tools_attach_BsdVirtualMachine_open; -+ Java_sun_tools_attach_BsdVirtualMachine_sendQuitTo; -+ Java_sun_tools_attach_BsdVirtualMachine_socket; -+ Java_sun_tools_attach_BsdVirtualMachine_read; -+ Java_sun_tools_attach_BsdVirtualMachine_write; -+ Java_sun_tools_attach_BsdVirtualMachine_createAttachFile; -+ local: -+ *; -+}; ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./jdk/make/mapfiles/libnio/mapfile-bsd Sun Feb 10 09:27:00 2019 -0800 -@@ -0,0 +1,195 @@ -+# -+# Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved. -+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -+# -+# This code is free software; you can redistribute it and/or modify it -+# under the terms of the GNU General Public License version 2 only, as -+# published by the Free Software Foundation. Oracle designates this -+# particular file as subject to the "Classpath" exception as provided -+# by Oracle in the LICENSE file that accompanied this code. -+# -+# This code is distributed in the hope that it will be useful, but WITHOUT -+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+# version 2 for more details (a copy is included in the LICENSE file that -+# accompanied this code). -+# -+# You should have received a copy of the GNU General Public License version -+# 2 along with this work; if not, write to the Free Software Foundation, -+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+# -+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -+# or visit www.oracle.com if you need additional information or have any -+# questions. -+# -+ -+SUNWprivate_1.1 { -+ global: -+ Java_java_nio_MappedByteBuffer_force0; -+ Java_java_nio_MappedByteBuffer_isLoaded0; -+ Java_java_nio_MappedByteBuffer_load0; -+ Java_sun_nio_ch_DatagramChannelImpl_disconnect0; -+ Java_sun_nio_ch_DatagramChannelImpl_initIDs; -+ Java_sun_nio_ch_DatagramChannelImpl_receive0; -+ Java_sun_nio_ch_DatagramChannelImpl_send0; -+ Java_sun_nio_ch_DatagramDispatcher_read0; -+ Java_sun_nio_ch_DatagramDispatcher_readv0; -+ Java_sun_nio_ch_DatagramDispatcher_write0; -+ Java_sun_nio_ch_DatagramDispatcher_writev0; -+ Java_sun_nio_ch_FileChannelImpl_close0; -+ Java_sun_nio_ch_FileChannelImpl_initIDs; -+ Java_sun_nio_ch_FileChannelImpl_map0; -+ Java_sun_nio_ch_FileChannelImpl_transferTo0; -+ Java_sun_nio_ch_FileChannelImpl_unmap0; -+ Java_sun_nio_ch_FileDispatcherImpl_close0; -+ Java_sun_nio_ch_FileDispatcherImpl_closeIntFD; -+ Java_sun_nio_ch_FileDispatcherImpl_seek0; -+ Java_sun_nio_ch_FileDispatcherImpl_force0; -+ Java_sun_nio_ch_FileDispatcherImpl_init; -+ Java_sun_nio_ch_FileDispatcherImpl_lock0; -+ Java_sun_nio_ch_FileDispatcherImpl_preClose0; -+ Java_sun_nio_ch_FileDispatcherImpl_pread0; -+ Java_sun_nio_ch_FileDispatcherImpl_pwrite0; -+ Java_sun_nio_ch_FileDispatcherImpl_read0; -+ Java_sun_nio_ch_FileDispatcherImpl_readv0; -+ Java_sun_nio_ch_FileDispatcherImpl_release0; -+ Java_sun_nio_ch_FileDispatcherImpl_size0; -+ Java_sun_nio_ch_FileDispatcherImpl_truncate0; -+ Java_sun_nio_ch_FileDispatcherImpl_write0; -+ Java_sun_nio_ch_FileDispatcherImpl_writev0; -+ Java_sun_nio_ch_FileKey_init; -+ Java_sun_nio_ch_FileKey_initIDs; -+ Java_sun_nio_ch_IOUtil_configureBlocking; -+ Java_sun_nio_ch_IOUtil_drain; -+ Java_sun_nio_ch_IOUtil_fdLimit; -+ Java_sun_nio_ch_IOUtil_fdVal; -+ Java_sun_nio_ch_IOUtil_initIDs; -+ Java_sun_nio_ch_IOUtil_iovMax; -+ Java_sun_nio_ch_IOUtil_makePipe; -+ Java_sun_nio_ch_IOUtil_randomBytes; -+ Java_sun_nio_ch_IOUtil_setfdVal; -+ Java_sun_nio_ch_InheritedChannel_close0; -+ Java_sun_nio_ch_InheritedChannel_dup2; -+ Java_sun_nio_ch_InheritedChannel_dup; -+ Java_sun_nio_ch_InheritedChannel_open0; -+ Java_sun_nio_ch_InheritedChannel_peerAddress0; -+ Java_sun_nio_ch_InheritedChannel_peerPort0; -+ Java_sun_nio_ch_InheritedChannel_soType0; -+ Java_sun_nio_ch_KQueueArrayWrapper_init; -+ Java_sun_nio_ch_KQueueArrayWrapper_initStructSizes; -+ Java_sun_nio_ch_KQueueArrayWrapper_interrupt; -+ Java_sun_nio_ch_KQueueArrayWrapper_kevent0; -+ Java_sun_nio_ch_KQueueArrayWrapper_register0; -+ Java_sun_nio_ch_KQueuePort_close0; -+ Java_sun_nio_ch_KQueuePort_drain1; -+ Java_sun_nio_ch_KQueuePort_interrupt; -+ Java_sun_nio_ch_KQueuePort_socketpair; -+ Java_sun_nio_ch_KQueue_filterOffset; -+ Java_sun_nio_ch_KQueue_flagsOffset; -+ Java_sun_nio_ch_KQueue_identOffset; -+ Java_sun_nio_ch_KQueue_keventPoll; -+ Java_sun_nio_ch_KQueue_keventRegister; -+ Java_sun_nio_ch_KQueue_keventSize; -+ Java_sun_nio_ch_KQueue_kqueue; -+ Java_sun_nio_ch_NativeThread_current; -+ Java_sun_nio_ch_NativeThread_init; -+ Java_sun_nio_ch_NativeThread_signal; -+ Java_sun_nio_ch_Net_bind0; -+ Java_sun_nio_ch_Net_blockOrUnblock4; -+ Java_sun_nio_ch_Net_blockOrUnblock6; -+ Java_sun_nio_ch_Net_canIPv6SocketJoinIPv4Group0; -+ Java_sun_nio_ch_Net_canJoin6WithIPv4Group0; -+ Java_sun_nio_ch_Net_connect0; -+ Java_sun_nio_ch_Net_getIntOption0; -+ Java_sun_nio_ch_Net_getInterface4; -+ Java_sun_nio_ch_Net_getInterface6; -+ Java_sun_nio_ch_Net_initIDs; -+ Java_sun_nio_ch_Net_isExclusiveBindAvailable; -+ Java_sun_nio_ch_Net_isIPv6Available0; -+ Java_sun_nio_ch_Net_joinOrDrop4; -+ Java_sun_nio_ch_Net_joinOrDrop6; -+ Java_sun_nio_ch_Net_listen; -+ Java_sun_nio_ch_Net_localInetAddress; -+ Java_sun_nio_ch_Net_localPort; -+ Java_sun_nio_ch_Net_poll; -+ Java_sun_nio_ch_Net_pollconnValue; -+ Java_sun_nio_ch_Net_pollerrValue; -+ Java_sun_nio_ch_Net_pollhupValue; -+ Java_sun_nio_ch_Net_pollinValue; -+ Java_sun_nio_ch_Net_pollnvalValue; -+ Java_sun_nio_ch_Net_polloutValue; -+ Java_sun_nio_ch_Net_setIntOption0; -+ Java_sun_nio_ch_Net_setInterface4; -+ Java_sun_nio_ch_Net_setInterface6; -+ Java_sun_nio_ch_Net_shutdown; -+ Java_sun_nio_ch_Net_socket0; -+ Java_sun_nio_ch_PollArrayWrapper_interrupt; -+ Java_sun_nio_ch_PollArrayWrapper_poll0; -+ Java_sun_nio_ch_ServerSocketChannelImpl_accept0; -+ Java_sun_nio_ch_ServerSocketChannelImpl_initIDs; -+ Java_sun_nio_ch_SocketChannelImpl_checkConnect; -+ Java_sun_nio_ch_SocketChannelImpl_sendOutOfBandData; -+ Java_sun_nio_ch_UnixAsynchronousServerSocketChannelImpl_accept0; -+ Java_sun_nio_ch_UnixAsynchronousServerSocketChannelImpl_initIDs; -+ Java_sun_nio_ch_UnixAsynchronousSocketChannelImpl_checkConnect; -+ Java_sun_nio_fs_BsdNativeDispatcher_endfsstat; -+ Java_sun_nio_fs_BsdNativeDispatcher_fsstatEntry; -+ Java_sun_nio_fs_BsdNativeDispatcher_getfsstat; -+ Java_sun_nio_fs_BsdNativeDispatcher_initIDs; -+ Java_sun_nio_fs_GnomeFileTypeDetector_initializeGio; -+ Java_sun_nio_fs_GnomeFileTypeDetector_initializeGnomeVfs; -+ Java_sun_nio_fs_GnomeFileTypeDetector_probeUsingGio; -+ Java_sun_nio_fs_GnomeFileTypeDetector_probeUsingGnomeVfs; -+ Java_sun_nio_fs_MagicFileTypeDetector_initialize0; -+ Java_sun_nio_fs_MagicFileTypeDetector_probe0; -+ Java_sun_nio_fs_UnixCopyFile_transfer; -+ Java_sun_nio_fs_UnixNativeDispatcher_access0; -+ Java_sun_nio_fs_UnixNativeDispatcher_chmod0; -+ Java_sun_nio_fs_UnixNativeDispatcher_chown0; -+ Java_sun_nio_fs_UnixNativeDispatcher_close; -+ Java_sun_nio_fs_UnixNativeDispatcher_closedir; -+ Java_sun_nio_fs_UnixNativeDispatcher_dup; -+ Java_sun_nio_fs_UnixNativeDispatcher_fchmod; -+ Java_sun_nio_fs_UnixNativeDispatcher_fchown; -+ Java_sun_nio_fs_UnixNativeDispatcher_fclose; -+ Java_sun_nio_fs_UnixNativeDispatcher_fdopendir; -+ Java_sun_nio_fs_UnixNativeDispatcher_fopen0; -+ Java_sun_nio_fs_UnixNativeDispatcher_fpathconf; -+ Java_sun_nio_fs_UnixNativeDispatcher_fstat; -+ Java_sun_nio_fs_UnixNativeDispatcher_fstatat0; -+ Java_sun_nio_fs_UnixNativeDispatcher_futimes; -+ Java_sun_nio_fs_UnixNativeDispatcher_getcwd; -+ Java_sun_nio_fs_UnixNativeDispatcher_getgrgid; -+ Java_sun_nio_fs_UnixNativeDispatcher_getgrnam0; -+ Java_sun_nio_fs_UnixNativeDispatcher_getpwnam0; -+ Java_sun_nio_fs_UnixNativeDispatcher_getpwuid; -+ Java_sun_nio_fs_UnixNativeDispatcher_init; -+ Java_sun_nio_fs_UnixNativeDispatcher_lchown0; -+ Java_sun_nio_fs_UnixNativeDispatcher_link0; -+ Java_sun_nio_fs_UnixNativeDispatcher_lstat0; -+ Java_sun_nio_fs_UnixNativeDispatcher_mkdir0; -+ Java_sun_nio_fs_UnixNativeDispatcher_mknod0; -+ Java_sun_nio_fs_UnixNativeDispatcher_open0; -+ Java_sun_nio_fs_UnixNativeDispatcher_openat0; -+ Java_sun_nio_fs_UnixNativeDispatcher_opendir0; -+ Java_sun_nio_fs_UnixNativeDispatcher_pathconf0; -+ Java_sun_nio_fs_UnixNativeDispatcher_read; -+ Java_sun_nio_fs_UnixNativeDispatcher_readdir; -+ Java_sun_nio_fs_UnixNativeDispatcher_readlink0; -+ Java_sun_nio_fs_UnixNativeDispatcher_realpath0; -+ Java_sun_nio_fs_UnixNativeDispatcher_rename0; -+ Java_sun_nio_fs_UnixNativeDispatcher_renameat0; -+ Java_sun_nio_fs_UnixNativeDispatcher_rmdir0; -+ Java_sun_nio_fs_UnixNativeDispatcher_stat0; -+ Java_sun_nio_fs_UnixNativeDispatcher_statvfs0; -+ Java_sun_nio_fs_UnixNativeDispatcher_strerror; -+ Java_sun_nio_fs_UnixNativeDispatcher_symlink0; -+ Java_sun_nio_fs_UnixNativeDispatcher_unlink0; -+ Java_sun_nio_fs_UnixNativeDispatcher_unlinkat0; -+ Java_sun_nio_fs_UnixNativeDispatcher_utimes0; -+ Java_sun_nio_fs_UnixNativeDispatcher_write; -+ handleSocketError; -+ -+ local: -+ *; -+}; ---- ./jdk/make/mapfiles/libunpack/mapfile-vers-unpack200 Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/make/mapfiles/libunpack/mapfile-vers-unpack200 Sun Feb 10 09:27:00 2019 -0800 -@@ -26,6 +26,9 @@ - # Define library interface. - - SUNWprivate_1.1 { -+ global: -+ environ; -+ __progname; - local: - *; - }; ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./jdk/make/netbeans/common/bsd-sources.ent Sun Feb 10 09:27:00 2019 -0800 -@@ -0,0 +1,45 @@ -+<?xml version="1.0" encoding="UTF-8"?> -+ -+<!-- -+ Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved. -+ -+ Redistribution and use in source and binary forms, with or without -+ modification, are permitted provided that the following conditions -+ are met: -+ -+ - Redistributions of source code must retain the above copyright -+ notice, this list of conditions and the following disclaimer. -+ -+ - Redistributions in binary form must reproduce the above copyright -+ notice, this list of conditions and the following disclaimer in the -+ documentation and/or other materials provided with the distribution. -+ -+ - Neither the name of Oracle nor the names of its -+ contributors may be used to endorse or promote products derived -+ from this software without specific prior written permission. -+ -+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+--> -+ -+<source-folder> -+ <label>Sources for BSD Platform</label> -+ <type>java</type> -+ <location>${root}/src/bsd/classes</location> -+ <includes>${includes}</includes> -+ <excludes>${excludes}</excludes> -+ <encoding>US-ASCII</encoding> -+</source-folder> -+<source-folder> -+ <label>Sources for BSD Platform</label> -+ <location>${root}/src/bsd/classes</location> -+</source-folder> ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./jdk/make/netbeans/common/bsd-view.ent Sun Feb 10 09:27:00 2019 -0800 -@@ -0,0 +1,39 @@ -+<?xml version="1.0" encoding="UTF-8"?> -+ -+<!-- -+ Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. -+ -+ Redistribution and use in source and binary forms, with or without -+ modification, are permitted provided that the following conditions -+ are met: -+ -+ - Redistributions of source code must retain the above copyright -+ notice, this list of conditions and the following disclaimer. -+ -+ - Redistributions in binary form must reproduce the above copyright -+ notice, this list of conditions and the following disclaimer in the -+ documentation and/or other materials provided with the distribution. -+ -+ - Neither the name of Oracle nor the names of its -+ contributors may be used to endorse or promote products derived -+ from this software without specific prior written permission. -+ -+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+--> -+ -+<source-folder style="tree"> -+ <label>Sources for BSD Platform</label> -+ <location>${root}/src/bsd/classes</location> -+ <includes>${includes}</includes> -+ <excludes>${excludes}</excludes> -+</source-folder> ---- ./jdk/make/netbeans/common/java-data-native.ent Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/make/netbeans/common/java-data-native.ent Sun Feb 10 09:27:00 2019 -0800 -@@ -34,6 +34,7 @@ - <java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/4"> - <compilation-unit> - <package-root>${root}/src/share/classes</package-root> -+ <package-root>${root}/src/bsd/classes</package-root> - <package-root>${root}/src/macosx/classes</package-root> - <package-root>${root}/src/solaris/classes</package-root> - <package-root>${root}/src/windows/classes</package-root> ---- ./jdk/make/netbeans/common/make.xml Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/make/netbeans/common/make.xml Sun Feb 10 09:27:00 2019 -0800 -@@ -32,16 +32,21 @@ - --> - - <project name="make" basedir=".."> -- -- <target name="-make.init" depends="-init,-pre-init.linux,-pre-init.macosx,-pre-init.solaris,-pre-init.windows,-pre-init.macosx"> -+ -+ <target name="-make.init" depends="-init,-pre-init.linux,-pre-init.bsd,-pre-init.macosx,-pre-init.solaris,-pre-init.windows"> - <property name="make.options" value=""/> <!-- default, can be overridden per user or per project --> - </target> -- -+ - <target name="-pre-init.linux" if="os.linux"> - <property name="platform" value="linux"/> - <property name="make" value="make"/> - </target> - -+ <target name="-pre-init.bsd" if="os.bsd"> -+ <property name="platform" value="bsd"/> -+ <property name="make" value="gmake"/> -+ </target> -+ - <target name="-pre-init.macosx" if="os.macosx"> - <property name="platform" value="macosx"/> - <property name="make" value="make"/> -@@ -56,7 +61,7 @@ - <property name="platform" value="windows"/> - <property name="make" value="c:/cygwin/bin/make"/> - </target> -- -+ - <macrodef name="make-run"> - <attribute name="target"/> - <attribute name="dir"/> ---- ./jdk/make/netbeans/j2se/nbproject/project.xml Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/make/netbeans/j2se/nbproject/project.xml Sun Feb 10 09:27:00 2019 -0800 -@@ -34,6 +34,7 @@ - <!DOCTYPE project [ - <!ENTITY properties SYSTEM "../../common/properties.ent"> - <!ENTITY share-sources SYSTEM "../../common/share-sources.ent"> -+ <!ENTITY bsd-sources SYSTEM "../../common/bsd-sources.ent"> - <!ENTITY macosx-sources SYSTEM "../../common/macosx-sources.ent"> - <!ENTITY unix-sources SYSTEM "../../common/unix-sources.ent"> - <!ENTITY windows-sources SYSTEM "../../common/windows-sources.ent"> -@@ -41,6 +42,7 @@ - <!ENTITY build-folder SYSTEM "../../common/build-folder.ent"> - <!ENTITY standard-bindings SYSTEM "../../common/standard-bindings.ent"> - <!ENTITY share-view SYSTEM "../../common/share-view.ent"> -+ <!ENTITY bsd-view SYSTEM "../../common/bsd-view.ent"> - <!ENTITY macosx-view SYSTEM "../../common/macosx-view.ent"> - <!ENTITY unix-view SYSTEM "../../common/unix-view.ent"> - <!ENTITY windows-view SYSTEM "../../common/windows-view.ent"> -@@ -60,6 +62,7 @@ - </properties> - <folders> - &share-sources; -+ &bsd-sources; - &macosx-sources; - &unix-sources; - &windows-sources; -@@ -86,6 +89,7 @@ - <view> - <items> - &share-view; -+ &bsd-view; - &macosx-view; - &unix-view; - &windows-view; ---- ./jdk/make/netbeans/world/nbproject/project.xml Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/make/netbeans/world/nbproject/project.xml Sun Feb 10 09:27:00 2019 -0800 -@@ -34,12 +34,14 @@ - <!DOCTYPE project [ - <!ENTITY properties SYSTEM "../../common/properties.ent"> - <!ENTITY share-sources SYSTEM "../../common/share-sources.ent"> -+ <!ENTITY bsd-sources SYSTEM "../../common/bsd-sources.ent"> - <!ENTITY macosx-sources SYSTEM "../../common/macosx-sources.ent"> - <!ENTITY unix-sources SYSTEM "../../common/unix-sources.ent"> - <!ENTITY windows-sources SYSTEM "../../common/windows-sources.ent"> - <!ENTITY build-folder SYSTEM "../../common/build-folder.ent"> - <!ENTITY standard-bindings SYSTEM "../../common/standard-bindings.ent"> - <!ENTITY share-view SYSTEM "../../common/share-view.ent"> -+ <!ENTITY bsd-view SYSTEM "../../common/bsd-view.ent"> - <!ENTITY macosx-view SYSTEM "../../common/macosx-view.ent"> - <!ENTITY unix-view SYSTEM "../../common/unix-view.ent"> - <!ENTITY windows-view SYSTEM "../../common/windows-view.ent"> -@@ -58,6 +60,7 @@ - </properties> - <folders> - &share-sources; -+ &bsd-sources; - &macosx-sources; - &unix-sources; - &windows-sources; -@@ -69,6 +72,7 @@ - <view> - <items> - &share-view; -+ &bsd-view; - &macosx-view; - &unix-view; - &windows-view; ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./jdk/src/bsd/classes/java/net/DefaultInterface.java Sun Feb 10 09:27:00 2019 -0800 -@@ -0,0 +1,97 @@ -+/* -+ * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. -+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -+ * -+ * This code is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 only, as -+ * published by the Free Software Foundation. Oracle designates this -+ * particular file as subject to the "Classpath" exception as provided -+ * by Oracle in the LICENSE file that accompanied this code. -+ * -+ * This code is distributed in the hope that it will be useful, but WITHOUT -+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+ * version 2 for more details (a copy is included in the LICENSE file that -+ * accompanied this code). -+ * -+ * You should have received a copy of the GNU General Public License version -+ * 2 along with this work; if not, write to the Free Software Foundation, -+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -+ * or visit www.oracle.com if you need additional information or have any -+ * questions. -+ */ -+ -+package java.net; -+ -+/** -+ * Choose a network interface to be the default for -+ * outgoing IPv6 traffic that does not specify a scope_id (and which needs one). -+ * We choose the first interface that is up and is (in order of preference): -+ * 1. neither loopback nor point to point -+ * 2. point to point -+ * 3. loopback -+ * 4. none. -+ * Platforms that do not require a default interface implement a dummy -+ * that returns null. -+ */ -+ -+import java.util.Enumeration; -+import java.io.IOException; -+ -+class DefaultInterface { -+ -+ private final static NetworkInterface defaultInterface = -+ chooseDefaultInterface(); -+ -+ static NetworkInterface getDefault() { -+ return defaultInterface; -+ } -+ -+ /** -+ * Choose a default interface. This method returns an interface that is -+ * both "up" and supports multicast. This method choses an interface in -+ * order of preference: -+ * 1. neither loopback nor point to point -+ * 2. point to point -+ * 3. loopback -+ * -+ * @return the chosen interface or {@code null} if there isn't a suitable -+ * default -+ */ -+ private static NetworkInterface chooseDefaultInterface() { -+ Enumeration<NetworkInterface> nifs; -+ -+ try { -+ nifs = NetworkInterface.getNetworkInterfaces(); -+ } catch (IOException ignore) { -+ // unable to enumate network interfaces -+ return null; -+ } -+ -+ NetworkInterface ppp = null; -+ NetworkInterface loopback = null; -+ -+ while (nifs.hasMoreElements()) { -+ NetworkInterface ni = nifs.nextElement(); -+ try { -+ if (ni.isUp() && ni.supportsMulticast()) { -+ boolean isLoopback = ni.isLoopback(); -+ boolean isPPP = ni.isPointToPoint(); -+ if (!isLoopback && !isPPP) { -+ // found an interface that is not the loopback or a -+ // point-to-point interface -+ return ni; -+ } -+ if (ppp == null && isPPP) -+ ppp = ni; -+ if (loopback == null && isLoopback) -+ loopback = ni; -+ } -+ } catch (IOException skip) { } -+ } -+ -+ return (ppp != null) ? ppp : loopback; -+ } -+} ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./jdk/src/bsd/classes/sun/nio/ch/DefaultSelectorProvider.java Sun Feb 10 09:27:00 2019 -0800 -@@ -0,0 +1,48 @@ -+/* -+ * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. -+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -+ * -+ * This code is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 only, as -+ * published by the Free Software Foundation. Oracle designates this -+ * particular file as subject to the "Classpath" exception as provided -+ * by Oracle in the LICENSE file that accompanied this code. -+ * -+ * This code is distributed in the hope that it will be useful, but WITHOUT -+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+ * version 2 for more details (a copy is included in the LICENSE file that -+ * accompanied this code). -+ * -+ * You should have received a copy of the GNU General Public License version -+ * 2 along with this work; if not, write to the Free Software Foundation, -+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -+ * or visit www.oracle.com if you need additional information or have any -+ * questions. -+ */ -+ -+package sun.nio.ch; -+ -+import java.nio.channels.spi.SelectorProvider; -+ -+/** -+ * Creates this platform's default SelectorProvider -+ */ -+ -+public class DefaultSelectorProvider { -+ -+ /** -+ * Prevent instantiation. -+ */ -+ private DefaultSelectorProvider() { } -+ -+ /** -+ * Returns the default SelectorProvider. -+ */ -+ public static SelectorProvider create() { -+ return new sun.nio.ch.KQueueSelectorProvider(); -+ } -+ -+} ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./jdk/src/bsd/classes/sun/nio/ch/KQueueArrayWrapper.java Sun Feb 10 09:27:00 2019 -0800 -@@ -0,0 +1,213 @@ -+/* -+ * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. -+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -+ * -+ * This code is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 only, as -+ * published by the Free Software Foundation. Oracle designates this -+ * particular file as subject to the "Classpath" exception as provided -+ * by Oracle in the LICENSE file that accompanied this code. -+ * -+ * This code is distributed in the hope that it will be useful, but WITHOUT -+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+ * version 2 for more details (a copy is included in the LICENSE file that -+ * accompanied this code). -+ * -+ * You should have received a copy of the GNU General Public License version -+ * 2 along with this work; if not, write to the Free Software Foundation, -+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -+ * or visit www.oracle.com if you need additional information or have any -+ * questions. -+ */ -+ -+/* -+ * KQueueArrayWrapper.java -+ * Implementation of Selector using FreeBSD / Mac OS X kqueues -+ * Derived from Sun's DevPollArrayWrapper -+ */ -+ -+package sun.nio.ch; -+ -+import sun.misc.*; -+import java.io.IOException; -+import java.io.FileDescriptor; -+import java.util.Iterator; -+import java.util.LinkedList; -+ -+/* -+ * struct kevent { // 32-bit 64-bit -+ * uintptr_t ident; // 4 8 -+ * short filter; // 2 2 -+ * u_short flags; // 2 2 -+ * u_int fflags; // 4 4 -+ * intptr_t data; // 4 8 -+ * void *udata; // 4 8 -+ * } // Total: 20 32 -+ * -+ * The implementation works in 32-bit and 64-bit world. We do this by calling a -+ * native function that actually sets the sizes and offsets of the fields based -+ * on which mode we're in. -+ */ -+ -+class KQueueArrayWrapper { -+ // kevent filters -+ static short EVFILT_READ; -+ static short EVFILT_WRITE; -+ -+ // kevent struct -+ // These fields are now set by initStructSizes in the static initializer. -+ static short SIZEOF_KEVENT; -+ static short FD_OFFSET; -+ static short FILTER_OFFSET; -+ -+ // kevent array size -+ static final int NUM_KEVENTS = 128; -+ -+ // Are we in a 64-bit VM? -+ static boolean is64bit = false; -+ -+ // The kevent array (used for outcoming events only) -+ private AllocatedNativeObject keventArray = null; -+ private long keventArrayAddress; -+ -+ // The kqueue fd -+ private int kq = -1; -+ -+ // The fd of the interrupt line going out -+ private int outgoingInterruptFD; -+ -+ // The fd of the interrupt line coming in -+ private int incomingInterruptFD; -+ -+ static { -+ IOUtil.load(); -+ initStructSizes(); -+ String datamodel = java.security.AccessController.doPrivileged( -+ new sun.security.action.GetPropertyAction("sun.arch.data.model") -+ ); -+ is64bit = datamodel.equals("64"); -+ } -+ -+ KQueueArrayWrapper() { -+ int allocationSize = SIZEOF_KEVENT * NUM_KEVENTS; -+ keventArray = new AllocatedNativeObject(allocationSize, true); -+ keventArrayAddress = keventArray.address(); -+ kq = init(); -+ } -+ -+ // Used to update file description registrations -+ private static class Update { -+ SelChImpl channel; -+ int events; -+ Update(SelChImpl channel, int events) { -+ this.channel = channel; -+ this.events = events; -+ } -+ } -+ -+ private LinkedList<Update> updateList = new LinkedList<Update>(); -+ -+ void initInterrupt(int fd0, int fd1) { -+ outgoingInterruptFD = fd1; -+ incomingInterruptFD = fd0; -+ register0(kq, fd0, 1, 0); -+ } -+ -+ int getReventOps(int index) { -+ int result = 0; -+ int offset = SIZEOF_KEVENT*index + FILTER_OFFSET; -+ short filter = keventArray.getShort(offset); -+ -+ // This is all that's necessary based on inspection of usage: -+ // SinkChannelImpl, SourceChannelImpl, DatagramChannelImpl, -+ // ServerSocketChannelImpl, SocketChannelImpl -+ if (filter == EVFILT_READ) { -+ result |= Net.POLLIN; -+ } else if (filter == EVFILT_WRITE) { -+ result |= Net.POLLOUT; -+ } -+ -+ return result; -+ } -+ -+ int getDescriptor(int index) { -+ int offset = SIZEOF_KEVENT*index + FD_OFFSET; -+ /* The ident field is 8 bytes in 64-bit world, however the API wants us -+ * to return an int. Hence read the 8 bytes but return as an int. -+ */ -+ if (is64bit) { -+ long fd = keventArray.getLong(offset); -+ assert fd <= Integer.MAX_VALUE; -+ return (int) fd; -+ } else { -+ return keventArray.getInt(offset); -+ } -+ } -+ -+ void setInterest(SelChImpl channel, int events) { -+ synchronized (updateList) { -+ // update existing registration -+ updateList.add(new Update(channel, events)); -+ } -+ } -+ -+ void release(SelChImpl channel) { -+ synchronized (updateList) { -+ // flush any pending updates -+ for (Iterator<Update> it = updateList.iterator(); it.hasNext();) { -+ if (it.next().channel == channel) { -+ it.remove(); -+ } -+ } -+ -+ // remove -+ register0(kq, channel.getFDVal(), 0, 0); -+ } -+ } -+ -+ void updateRegistrations() { -+ synchronized (updateList) { -+ Update u = null; -+ while ((u = updateList.poll()) != null) { -+ SelChImpl ch = u.channel; -+ if (!ch.isOpen()) -+ continue; -+ -+ register0(kq, ch.getFDVal(), u.events & Net.POLLIN, u.events & Net.POLLOUT); -+ } -+ } -+ } -+ -+ -+ void close() throws IOException { -+ if (keventArray != null) { -+ keventArray.free(); -+ keventArray = null; -+ } -+ if (kq >= 0) { -+ FileDispatcherImpl.closeIntFD(kq); -+ kq = -1; -+ } -+ } -+ -+ int poll(long timeout) { -+ updateRegistrations(); -+ int updated = kevent0(kq, keventArrayAddress, NUM_KEVENTS, timeout); -+ return updated; -+ } -+ -+ void interrupt() { -+ interrupt(outgoingInterruptFD); -+ } -+ -+ private native int init(); -+ private static native void initStructSizes(); -+ -+ private native void register0(int kq, int fd, int read, int write); -+ private native int kevent0(int kq, long keventAddress, int keventCount, -+ long timeout); -+ private static native void interrupt(int fd); -+} ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./jdk/src/bsd/classes/sun/nio/ch/KQueueSelectorImpl.java Sun Feb 10 09:27:00 2019 -0800 -@@ -0,0 +1,263 @@ -+/* -+ * 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 -+ * under the terms of the GNU General Public License version 2 only, as -+ * published by the Free Software Foundation. Oracle designates this -+ * particular file as subject to the "Classpath" exception as provided -+ * by Oracle in the LICENSE file that accompanied this code. -+ * -+ * This code is distributed in the hope that it will be useful, but WITHOUT -+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+ * version 2 for more details (a copy is included in the LICENSE file that -+ * accompanied this code). -+ * -+ * You should have received a copy of the GNU General Public License version -+ * 2 along with this work; if not, write to the Free Software Foundation, -+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -+ * or visit www.oracle.com if you need additional information or have any -+ * questions. -+ */ -+ -+/* -+ * KQueueSelectorImpl.java -+ * Implementation of Selector using FreeBSD / Mac OS X kqueues -+ * Derived from Sun's DevPollSelectorImpl -+ */ -+ -+package sun.nio.ch; -+ -+import java.io.IOException; -+import java.io.FileDescriptor; -+import java.nio.channels.*; -+import java.nio.channels.spi.*; -+import java.util.*; -+import sun.misc.*; -+ -+class KQueueSelectorImpl -+ extends SelectorImpl -+{ -+ // File descriptors used for interrupt -+ protected int fd0; -+ protected int fd1; -+ -+ // The kqueue manipulator -+ KQueueArrayWrapper kqueueWrapper; -+ -+ // Count of registered descriptors (including interrupt) -+ private int totalChannels; -+ -+ // Map from a file descriptor to an entry containing the selection key -+ private HashMap<Integer,MapEntry> fdMap; -+ -+ // True if this Selector has been closed -+ private boolean closed = false; -+ -+ // Lock for interrupt triggering and clearing -+ private Object interruptLock = new Object(); -+ private boolean interruptTriggered = false; -+ -+ // used by updateSelectedKeys to handle cases where the same file -+ // descriptor is polled by more than one filter -+ private long updateCount; -+ -+ // Used to map file descriptors to a selection key and "update count" -+ // (see updateSelectedKeys for usage). -+ private static class MapEntry { -+ SelectionKeyImpl ski; -+ long updateCount; -+ MapEntry(SelectionKeyImpl ski) { -+ this.ski = ski; -+ } -+ } -+ -+ /** -+ * Package private constructor called by factory method in -+ * the abstract superclass Selector. -+ */ -+ KQueueSelectorImpl(SelectorProvider sp) { -+ super(sp); -+ long fds = IOUtil.makePipe(false); -+ fd0 = (int)(fds >>> 32); -+ fd1 = (int)fds; -+ try { -+ kqueueWrapper = new KQueueArrayWrapper(); -+ kqueueWrapper.initInterrupt(fd0, fd1); -+ fdMap = new HashMap<>(); -+ totalChannels = 1; -+ } catch (Throwable t) { -+ try { -+ FileDispatcherImpl.closeIntFD(fd0); -+ } catch (IOException ioe0) { -+ t.addSuppressed(ioe0); -+ } -+ try { -+ FileDispatcherImpl.closeIntFD(fd1); -+ } catch (IOException ioe1) { -+ t.addSuppressed(ioe1); -+ } -+ throw t; -+ } -+ } -+ -+ -+ protected int doSelect(long timeout) -+ throws IOException -+ { -+ int entries = 0; -+ if (closed) -+ throw new ClosedSelectorException(); -+ processDeregisterQueue(); -+ try { -+ begin(); -+ entries = kqueueWrapper.poll(timeout); -+ } finally { -+ end(); -+ } -+ processDeregisterQueue(); -+ return updateSelectedKeys(entries); -+ } -+ -+ /** -+ * Update the keys whose fd's have been selected by kqueue. -+ * Add the ready keys to the selected key set. -+ * If the interrupt fd has been selected, drain it and clear the interrupt. -+ */ -+ private int updateSelectedKeys(int entries) -+ throws IOException -+ { -+ int numKeysUpdated = 0; -+ boolean interrupted = false; -+ -+ // A file descriptor may be registered with kqueue with more than one -+ // filter and so there may be more than one event for a fd. The update -+ // count in the MapEntry tracks when the fd was last updated and this -+ // ensures that the ready ops are updated rather than replaced by a -+ // second or subsequent event. -+ updateCount++; -+ -+ for (int i = 0; i < entries; i++) { -+ int nextFD = kqueueWrapper.getDescriptor(i); -+ if (nextFD == fd0) { -+ interrupted = true; -+ } else { -+ MapEntry me = fdMap.get(Integer.valueOf(nextFD)); -+ -+ // entry is null in the case of an interrupt -+ if (me != null) { -+ int rOps = kqueueWrapper.getReventOps(i); -+ SelectionKeyImpl ski = me.ski; -+ if (selectedKeys.contains(ski)) { -+ // first time this file descriptor has been encountered on this -+ // update? -+ if (me.updateCount != updateCount) { -+ if (ski.channel.translateAndSetReadyOps(rOps, ski)) { -+ numKeysUpdated++; -+ me.updateCount = updateCount; -+ } -+ } else { -+ // ready ops have already been set on this update -+ ski.channel.translateAndUpdateReadyOps(rOps, ski); -+ } -+ } else { -+ ski.channel.translateAndSetReadyOps(rOps, ski); -+ if ((ski.nioReadyOps() & ski.nioInterestOps()) != 0) { -+ selectedKeys.add(ski); -+ numKeysUpdated++; -+ me.updateCount = updateCount; -+ } -+ } -+ } -+ } -+ } -+ -+ if (interrupted) { -+ // Clear the wakeup pipe -+ synchronized (interruptLock) { -+ IOUtil.drain(fd0); -+ interruptTriggered = false; -+ } -+ } -+ return numKeysUpdated; -+ } -+ -+ -+ protected void implClose() throws IOException { -+ if (!closed) { -+ closed = true; -+ -+ // prevent further wakeup -+ synchronized (interruptLock) { -+ interruptTriggered = true; -+ } -+ -+ FileDispatcherImpl.closeIntFD(fd0); -+ FileDispatcherImpl.closeIntFD(fd1); -+ if (kqueueWrapper != null) { -+ kqueueWrapper.close(); -+ kqueueWrapper = null; -+ selectedKeys = null; -+ -+ // Deregister channels -+ Iterator<SelectionKey> i = keys.iterator(); -+ while (i.hasNext()) { -+ SelectionKeyImpl ski = (SelectionKeyImpl)i.next(); -+ deregister(ski); -+ SelectableChannel selch = ski.channel(); -+ if (!selch.isOpen() && !selch.isRegistered()) -+ ((SelChImpl)selch).kill(); -+ i.remove(); -+ } -+ totalChannels = 0; -+ } -+ fd0 = -1; -+ fd1 = -1; -+ } -+ } -+ -+ -+ protected void implRegister(SelectionKeyImpl ski) { -+ if (closed) -+ throw new ClosedSelectorException(); -+ int fd = IOUtil.fdVal(ski.channel.getFD()); -+ fdMap.put(Integer.valueOf(fd), new MapEntry(ski)); -+ totalChannels++; -+ keys.add(ski); -+ } -+ -+ -+ protected void implDereg(SelectionKeyImpl ski) throws IOException { -+ int fd = ski.channel.getFDVal(); -+ fdMap.remove(Integer.valueOf(fd)); -+ kqueueWrapper.release(ski.channel); -+ totalChannels--; -+ keys.remove(ski); -+ selectedKeys.remove(ski); -+ deregister((AbstractSelectionKey)ski); -+ SelectableChannel selch = ski.channel(); -+ if (!selch.isOpen() && !selch.isRegistered()) -+ ((SelChImpl)selch).kill(); -+ } -+ -+ -+ public void putEventOps(SelectionKeyImpl ski, int ops) { -+ if (closed) -+ throw new ClosedSelectorException(); -+ kqueueWrapper.setInterest(ski.channel, ops); -+ } -+ -+ -+ public Selector wakeup() { -+ synchronized (interruptLock) { -+ if (!interruptTriggered) { -+ kqueueWrapper.interrupt(); -+ interruptTriggered = true; -+ } -+ } -+ return this; -+ } -+} ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./jdk/src/bsd/classes/sun/nio/ch/KQueueSelectorProvider.java Sun Feb 10 09:27:00 2019 -0800 -@@ -0,0 +1,44 @@ -+/* -+ * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. -+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -+ * -+ * This code is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 only, as -+ * published by the Free Software Foundation. Oracle designates this -+ * particular file as subject to the "Classpath" exception as provided -+ * by Oracle in the LICENSE file that accompanied this code. -+ * -+ * This code is distributed in the hope that it will be useful, but WITHOUT -+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+ * version 2 for more details (a copy is included in the LICENSE file that -+ * accompanied this code). -+ * -+ * You should have received a copy of the GNU General Public License version -+ * 2 along with this work; if not, write to the Free Software Foundation, -+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -+ * or visit www.oracle.com if you need additional information or have any -+ * questions. -+ */ -+ -+/* -+ * KQueueSelectorProvider.java -+ * Implementation of Selector using FreeBSD / Mac OS X kqueues -+ * Derived from Sun's DevPollSelectorProvider -+ */ -+ -+package sun.nio.ch; -+ -+import java.io.IOException; -+import java.nio.channels.*; -+import java.nio.channels.spi.*; -+ -+public class KQueueSelectorProvider -+extends SelectorProviderImpl -+{ -+ public AbstractSelector openSelector() throws IOException { -+ return new KQueueSelectorImpl(this); -+ } -+} ---- ./jdk/src/bsd/doc/man/javah.1 Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/bsd/doc/man/javah.1 Sun Feb 10 09:27:00 2019 -0800 -@@ -8,7 +8,7 @@ - .\" - .\" 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 -+.\" 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). - .\" -@@ -109,7 +109,7 @@ - - \&.:\fIyour-path\fR - --Example: \f3\&.:/home/avh/classes:/usr/local/java/classes\fR -+Example: \f3\&.:/home/avh/classes:/usr/local/share/java/classes\fR - - \fIWindows\fR: - ---- ./jdk/src/bsd/doc/man/rmic.1 Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/bsd/doc/man/rmic.1 Sun Feb 10 09:27:00 2019 -0800 -@@ -8,7 +8,7 @@ - .\" - .\" 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 -+.\" 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). - .\" -@@ -92,7 +92,7 @@ - .TP - -classpath path - .br --Specifies the path the \f3rmic\fR command uses to look up classes\&. This option overrides the default or the \f3CLASSPATH\fR environment variable when it is set\&. Directories are separated by colons\&. The general format for path is: \f3\&.:<your_path>\fR, for example: \f3\&.:/usr/local/java/classes\fR\&. -+Specifies the path the \f3rmic\fR command uses to look up classes\&. This option overrides the default or the \f3CLASSPATH\fR environment variable when it is set\&. Directories are separated by colons\&. The general format for path is: \f3\&.:<your_path>\fR, for example: \f3\&.:/usr/local/share/java/classes\fR\&. - .TP - -d \fIdirectory\fR - .br -@@ -206,7 +206,7 @@ - .SH ENVIRONMENT\ VARIABLES - .TP - CLASSPATH --Used to provide the system a path to user-defined classes\&. Directories are separated by colons, for example: \f3\&.:/usr/local/java/classes\fR\&. -+Used to provide the system a path to user-defined classes\&. Directories are separated by colons, for example: \f3\&.:/usr/local/share/java/classes\fR\&. - .SH SEE\ ALSO - .TP 0.2i - \(bu ---- ./jdk/src/bsd/doc/man/rmid.1 Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/bsd/doc/man/rmid.1 Sun Feb 10 09:27:00 2019 -0800 -@@ -8,7 +8,7 @@ - .\" - .\" 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 -+.\" 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). - .\" -@@ -300,7 +300,7 @@ - .SH ENVIRONMENT\ VARIABLES - .TP - CLASSPATH --Used to provide the system a path to user-defined classes\&. Directories are separated by colons, for example: \f3\&.:/usr/local/java/classes\fR\&. -+Used to provide the system a path to user-defined classes\&. Directories are separated by colons, for example: \f3\&.:/usr/local/share/java/classes\fR\&. - .SH SEE\ ALSO - .TP 0.2i - \(bu ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./jdk/src/bsd/native/sun/nio/ch/KQueueArrayWrapper.c Sun Feb 10 09:27:00 2019 -0800 -@@ -0,0 +1,171 @@ -+/* -+ * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. -+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -+ * -+ * This code is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 only, as -+ * published by the Free Software Foundation. Oracle designates this -+ * particular file as subject to the "Classpath" exception as provided -+ * by Oracle in the LICENSE file that accompanied this code. -+ * -+ * This code is distributed in the hope that it will be useful, but WITHOUT -+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+ * version 2 for more details (a copy is included in the LICENSE file that -+ * accompanied this code). -+ * -+ * You should have received a copy of the GNU General Public License version -+ * 2 along with this work; if not, write to the Free Software Foundation, -+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -+ * or visit www.oracle.com if you need additional information or have any -+ * questions. -+ */ -+ -+/* -+ * KQueueArrayWrapper.c -+ * Implementation of Selector using FreeBSD / Mac OS X kqueues -+ * Derived from Sun's DevPollArrayWrapper -+ */ -+ -+ -+#include "jni.h" -+#include "jni_util.h" -+#include "jvm.h" -+#include "jlong.h" -+ -+#include <sys/types.h> -+#include <sys/event.h> -+#include <sys/time.h> -+ -+JNIEXPORT void JNICALL -+Java_sun_nio_ch_KQueueArrayWrapper_initStructSizes(JNIEnv *env, jclass clazz) -+{ -+#define CHECK_EXCEPTION() { \ -+ if ((*env)->ExceptionCheck(env)) { \ -+ goto exceptionOccurred; \ -+ } \ -+} -+ -+#define CHECK_ERROR_AND_EXCEPTION(_field) { \ -+ if (_field == NULL) { \ -+ goto badField; \ -+ } \ -+ CHECK_EXCEPTION(); \ -+} -+ -+ -+ jfieldID field; -+ -+ field = (*env)->GetStaticFieldID(env, clazz, "EVFILT_READ", "S"); -+ CHECK_ERROR_AND_EXCEPTION(field); -+ (*env)->SetStaticShortField(env, clazz, field, EVFILT_READ); -+ CHECK_EXCEPTION(); -+ -+ field = (*env)->GetStaticFieldID(env, clazz, "EVFILT_WRITE", "S"); -+ CHECK_ERROR_AND_EXCEPTION(field); -+ (*env)->SetStaticShortField(env, clazz, field, EVFILT_WRITE); -+ CHECK_EXCEPTION(); -+ -+ field = (*env)->GetStaticFieldID(env, clazz, "SIZEOF_KEVENT", "S"); -+ CHECK_ERROR_AND_EXCEPTION(field); -+ (*env)->SetStaticShortField(env, clazz, field, (short) sizeof(struct kevent)); -+ CHECK_EXCEPTION(); -+ -+ field = (*env)->GetStaticFieldID(env, clazz, "FD_OFFSET", "S"); -+ CHECK_ERROR_AND_EXCEPTION(field); -+ (*env)->SetStaticShortField(env, clazz, field, (short) offsetof(struct kevent, ident)); -+ CHECK_EXCEPTION(); -+ -+ field = (*env)->GetStaticFieldID(env, clazz, "FILTER_OFFSET", "S"); -+ CHECK_ERROR_AND_EXCEPTION(field); -+ (*env)->SetStaticShortField(env, clazz, field, (short) offsetof(struct kevent, filter)); -+ CHECK_EXCEPTION(); -+ return; -+ -+badField: -+ return; -+ -+exceptionOccurred: -+ return; -+ -+#undef CHECK_EXCEPTION -+#undef CHECK_ERROR_AND_EXCEPTION -+} -+ -+JNIEXPORT jint JNICALL -+Java_sun_nio_ch_KQueueArrayWrapper_init(JNIEnv *env, jobject this) -+{ -+ int kq = kqueue(); -+ if (kq < 0) { -+ JNU_ThrowIOExceptionWithLastError(env, "KQueueArrayWrapper: kqueue() failed"); -+ } -+ return kq; -+} -+ -+ -+JNIEXPORT void JNICALL -+Java_sun_nio_ch_KQueueArrayWrapper_register0(JNIEnv *env, jobject this, -+ jint kq, jint fd, jint r, jint w) -+{ -+ struct kevent changes[2]; -+ struct kevent errors[2]; -+ struct timespec dontBlock = {0, 0}; -+ -+ // if (r) then { register for read } else { unregister for read } -+ // if (w) then { register for write } else { unregister for write } -+ // Ignore errors - they're probably complaints about deleting non- -+ // added filters - but provide an error array anyway because -+ // kqueue behaves erratically if some of its registrations fail. -+ EV_SET(&changes[0], fd, EVFILT_READ, r ? EV_ADD : EV_DELETE, 0, 0, 0); -+ EV_SET(&changes[1], fd, EVFILT_WRITE, w ? EV_ADD : EV_DELETE, 0, 0, 0); -+ kevent(kq, changes, 2, errors, 2, &dontBlock); -+} -+ -+ -+JNIEXPORT jint JNICALL -+Java_sun_nio_ch_KQueueArrayWrapper_kevent0(JNIEnv *env, jobject this, jint kq, -+ jlong kevAddr, jint kevCount, -+ jlong timeout) -+{ -+ struct kevent *kevs = (struct kevent *)jlong_to_ptr(kevAddr); -+ struct timespec ts; -+ struct timespec *tsp; -+ int result; -+ -+ // Java timeout is in milliseconds. Convert to struct timespec. -+ // Java timeout == -1 : wait forever : timespec timeout of NULL -+ // Java timeout == 0 : return immediately : timespec timeout of zero -+ if (timeout >= 0) { -+ ts.tv_sec = timeout / 1000; -+ ts.tv_nsec = (timeout % 1000) * 1000000; //nanosec = 1 million millisec -+ tsp = &ts; -+ } else { -+ tsp = NULL; -+ } -+ -+ result = kevent(kq, NULL, 0, kevs, kevCount, tsp); -+ -+ if (result < 0) { -+ if (errno == EINTR) { -+ // ignore EINTR, pretend nothing was selected -+ result = 0; -+ } else { -+ JNU_ThrowIOExceptionWithLastError(env, "KQueueArrayWrapper: kqueue failed"); -+ } -+ } -+ -+ return result; -+} -+ -+ -+JNIEXPORT void JNICALL -+Java_sun_nio_ch_KQueueArrayWrapper_interrupt(JNIEnv *env, jclass cls, jint fd) -+{ -+ char c = 1; -+ if (1 != write(fd, &c, 1)) { -+ JNU_ThrowIOExceptionWithLastError(env, "KQueueArrayWrapper: interrupt failed"); -+ } -+} -+ ---- ./jdk/src/macosx/classes/java/net/DefaultInterface.java Sat Dec 08 11:51:25 2018 +0000 -+++ /dev/null Thu Jan 01 00:00:00 1970 +0000 -@@ -1,97 +0,0 @@ --/* -- * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. -- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -- * -- * This code is free software; you can redistribute it and/or modify it -- * under the terms of the GNU General Public License version 2 only, as -- * published by the Free Software Foundation. Oracle designates this -- * particular file as subject to the "Classpath" exception as provided -- * by Oracle in the LICENSE file that accompanied this code. -- * -- * This code is distributed in the hope that it will be useful, but WITHOUT -- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -- * version 2 for more details (a copy is included in the LICENSE file that -- * accompanied this code). -- * -- * You should have received a copy of the GNU General Public License version -- * 2 along with this work; if not, write to the Free Software Foundation, -- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -- * -- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -- * or visit www.oracle.com if you need additional information or have any -- * questions. -- */ -- --package java.net; -- --/** -- * Choose a network interface to be the default for -- * outgoing IPv6 traffic that does not specify a scope_id (and which needs one). -- * We choose the first interface that is up and is (in order of preference): -- * 1. neither loopback nor point to point -- * 2. point to point -- * 3. loopback -- * 4. none. -- * Platforms that do not require a default interface implement a dummy -- * that returns null. -- */ -- --import java.util.Enumeration; --import java.io.IOException; -- --class DefaultInterface { -- -- private final static NetworkInterface defaultInterface = -- chooseDefaultInterface(); -- -- static NetworkInterface getDefault() { -- return defaultInterface; -- } -- -- /** -- * Choose a default interface. This method returns an interface that is -- * both "up" and supports multicast. This method choses an interface in -- * order of preference: -- * 1. neither loopback nor point to point -- * 2. point to point -- * 3. loopback -- * -- * @return the chosen interface or {@code null} if there isn't a suitable -- * default -- */ -- private static NetworkInterface chooseDefaultInterface() { -- Enumeration<NetworkInterface> nifs; -- -- try { -- nifs = NetworkInterface.getNetworkInterfaces(); -- } catch (IOException ignore) { -- // unable to enumate network interfaces -- return null; -- } -- -- NetworkInterface ppp = null; -- NetworkInterface loopback = null; -- -- while (nifs.hasMoreElements()) { -- NetworkInterface ni = nifs.nextElement(); -- try { -- if (ni.isUp() && ni.supportsMulticast()) { -- boolean isLoopback = ni.isLoopback(); -- boolean isPPP = ni.isPointToPoint(); -- if (!isLoopback && !isPPP) { -- // found an interface that is not the loopback or a -- // point-to-point interface -- return ni; -- } -- if (ppp == null && isPPP) -- ppp = ni; -- if (loopback == null && isLoopback) -- loopback = ni; -- } -- } catch (IOException skip) { } -- } -- -- return (ppp != null) ? ppp : loopback; -- } --} ---- ./jdk/src/macosx/classes/sun/nio/ch/DefaultSelectorProvider.java Sat Dec 08 11:51:25 2018 +0000 -+++ /dev/null Thu Jan 01 00:00:00 1970 +0000 -@@ -1,48 +0,0 @@ --/* -- * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. -- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -- * -- * This code is free software; you can redistribute it and/or modify it -- * under the terms of the GNU General Public License version 2 only, as -- * published by the Free Software Foundation. Oracle designates this -- * particular file as subject to the "Classpath" exception as provided -- * by Oracle in the LICENSE file that accompanied this code. -- * -- * This code is distributed in the hope that it will be useful, but WITHOUT -- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -- * version 2 for more details (a copy is included in the LICENSE file that -- * accompanied this code). -- * -- * You should have received a copy of the GNU General Public License version -- * 2 along with this work; if not, write to the Free Software Foundation, -- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -- * -- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -- * or visit www.oracle.com if you need additional information or have any -- * questions. -- */ -- --package sun.nio.ch; -- --import java.nio.channels.spi.SelectorProvider; -- --/** -- * Creates this platform's default SelectorProvider -- */ -- --public class DefaultSelectorProvider { -- -- /** -- * Prevent instantiation. -- */ -- private DefaultSelectorProvider() { } -- -- /** -- * Returns the default SelectorProvider. -- */ -- public static SelectorProvider create() { -- return new sun.nio.ch.KQueueSelectorProvider(); -- } -- --} ---- ./jdk/src/macosx/classes/sun/nio/ch/KQueueArrayWrapper.java Sat Dec 08 11:51:25 2018 +0000 -+++ /dev/null Thu Jan 01 00:00:00 1970 +0000 -@@ -1,213 +0,0 @@ --/* -- * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. -- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -- * -- * This code is free software; you can redistribute it and/or modify it -- * under the terms of the GNU General Public License version 2 only, as -- * published by the Free Software Foundation. Oracle designates this -- * particular file as subject to the "Classpath" exception as provided -- * by Oracle in the LICENSE file that accompanied this code. -- * -- * This code is distributed in the hope that it will be useful, but WITHOUT -- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -- * version 2 for more details (a copy is included in the LICENSE file that -- * accompanied this code). -- * -- * You should have received a copy of the GNU General Public License version -- * 2 along with this work; if not, write to the Free Software Foundation, -- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -- * -- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -- * or visit www.oracle.com if you need additional information or have any -- * questions. -- */ -- --/* -- * KQueueArrayWrapper.java -- * Implementation of Selector using FreeBSD / Mac OS X kqueues -- * Derived from Sun's DevPollArrayWrapper -- */ -- --package sun.nio.ch; -- --import sun.misc.*; --import java.io.IOException; --import java.io.FileDescriptor; --import java.util.Iterator; --import java.util.LinkedList; -- --/* -- * struct kevent { // 32-bit 64-bit -- * uintptr_t ident; // 4 8 -- * short filter; // 2 2 -- * u_short flags; // 2 2 -- * u_int fflags; // 4 4 -- * intptr_t data; // 4 8 -- * void *udata; // 4 8 -- * } // Total: 20 32 -- * -- * The implementation works in 32-bit and 64-bit world. We do this by calling a -- * native function that actually sets the sizes and offsets of the fields based -- * on which mode we're in. -- */ -- --class KQueueArrayWrapper { -- // kevent filters -- static short EVFILT_READ; -- static short EVFILT_WRITE; -- -- // kevent struct -- // These fields are now set by initStructSizes in the static initializer. -- static short SIZEOF_KEVENT; -- static short FD_OFFSET; -- static short FILTER_OFFSET; -- -- // kevent array size -- static final int NUM_KEVENTS = 128; -- -- // Are we in a 64-bit VM? -- static boolean is64bit = false; -- -- // The kevent array (used for outcoming events only) -- private AllocatedNativeObject keventArray = null; -- private long keventArrayAddress; -- -- // The kqueue fd -- private int kq = -1; -- -- // The fd of the interrupt line going out -- private int outgoingInterruptFD; -- -- // The fd of the interrupt line coming in -- private int incomingInterruptFD; -- -- static { -- IOUtil.load(); -- initStructSizes(); -- String datamodel = java.security.AccessController.doPrivileged( -- new sun.security.action.GetPropertyAction("sun.arch.data.model") -- ); -- is64bit = datamodel.equals("64"); -- } -- -- KQueueArrayWrapper() { -- int allocationSize = SIZEOF_KEVENT * NUM_KEVENTS; -- keventArray = new AllocatedNativeObject(allocationSize, true); -- keventArrayAddress = keventArray.address(); -- kq = init(); -- } -- -- // Used to update file description registrations -- private static class Update { -- SelChImpl channel; -- int events; -- Update(SelChImpl channel, int events) { -- this.channel = channel; -- this.events = events; -- } -- } -- -- private LinkedList<Update> updateList = new LinkedList<Update>(); -- -- void initInterrupt(int fd0, int fd1) { -- outgoingInterruptFD = fd1; -- incomingInterruptFD = fd0; -- register0(kq, fd0, 1, 0); -- } -- -- int getReventOps(int index) { -- int result = 0; -- int offset = SIZEOF_KEVENT*index + FILTER_OFFSET; -- short filter = keventArray.getShort(offset); -- -- // This is all that's necessary based on inspection of usage: -- // SinkChannelImpl, SourceChannelImpl, DatagramChannelImpl, -- // ServerSocketChannelImpl, SocketChannelImpl -- if (filter == EVFILT_READ) { -- result |= Net.POLLIN; -- } else if (filter == EVFILT_WRITE) { -- result |= Net.POLLOUT; -- } -- -- return result; -- } -- -- int getDescriptor(int index) { -- int offset = SIZEOF_KEVENT*index + FD_OFFSET; -- /* The ident field is 8 bytes in 64-bit world, however the API wants us -- * to return an int. Hence read the 8 bytes but return as an int. -- */ -- if (is64bit) { -- long fd = keventArray.getLong(offset); -- assert fd <= Integer.MAX_VALUE; -- return (int) fd; -- } else { -- return keventArray.getInt(offset); -- } -- } -- -- void setInterest(SelChImpl channel, int events) { -- synchronized (updateList) { -- // update existing registration -- updateList.add(new Update(channel, events)); -- } -- } -- -- void release(SelChImpl channel) { -- synchronized (updateList) { -- // flush any pending updates -- for (Iterator<Update> it = updateList.iterator(); it.hasNext();) { -- if (it.next().channel == channel) { -- it.remove(); -- } -- } -- -- // remove -- register0(kq, channel.getFDVal(), 0, 0); -- } -- } -- -- void updateRegistrations() { -- synchronized (updateList) { -- Update u = null; -- while ((u = updateList.poll()) != null) { -- SelChImpl ch = u.channel; -- if (!ch.isOpen()) -- continue; -- -- register0(kq, ch.getFDVal(), u.events & Net.POLLIN, u.events & Net.POLLOUT); -- } -- } -- } -- -- -- void close() throws IOException { -- if (keventArray != null) { -- keventArray.free(); -- keventArray = null; -- } -- if (kq >= 0) { -- FileDispatcherImpl.closeIntFD(kq); -- kq = -1; -- } -- } -- -- int poll(long timeout) { -- updateRegistrations(); -- int updated = kevent0(kq, keventArrayAddress, NUM_KEVENTS, timeout); -- return updated; -- } -- -- void interrupt() { -- interrupt(outgoingInterruptFD); -- } -- -- private native int init(); -- private static native void initStructSizes(); -- -- private native void register0(int kq, int fd, int read, int write); -- private native int kevent0(int kq, long keventAddress, int keventCount, -- long timeout); -- private static native void interrupt(int fd); --} ---- ./jdk/src/macosx/classes/sun/nio/ch/KQueueSelectorImpl.java Sat Dec 08 11:51:25 2018 +0000 -+++ /dev/null Thu Jan 01 00:00:00 1970 +0000 -@@ -1,263 +0,0 @@ --/* -- * 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 -- * under the terms of the GNU General Public License version 2 only, as -- * published by the Free Software Foundation. Oracle designates this -- * particular file as subject to the "Classpath" exception as provided -- * by Oracle in the LICENSE file that accompanied this code. -- * -- * This code is distributed in the hope that it will be useful, but WITHOUT -- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -- * version 2 for more details (a copy is included in the LICENSE file that -- * accompanied this code). -- * -- * You should have received a copy of the GNU General Public License version -- * 2 along with this work; if not, write to the Free Software Foundation, -- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -- * -- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -- * or visit www.oracle.com if you need additional information or have any -- * questions. -- */ -- --/* -- * KQueueSelectorImpl.java -- * Implementation of Selector using FreeBSD / Mac OS X kqueues -- * Derived from Sun's DevPollSelectorImpl -- */ -- --package sun.nio.ch; -- --import java.io.IOException; --import java.io.FileDescriptor; --import java.nio.channels.*; --import java.nio.channels.spi.*; --import java.util.*; --import sun.misc.*; -- --class KQueueSelectorImpl -- extends SelectorImpl --{ -- // File descriptors used for interrupt -- protected int fd0; -- protected int fd1; -- -- // The kqueue manipulator -- KQueueArrayWrapper kqueueWrapper; -- -- // Count of registered descriptors (including interrupt) -- private int totalChannels; -- -- // Map from a file descriptor to an entry containing the selection key -- private HashMap<Integer,MapEntry> fdMap; -- -- // True if this Selector has been closed -- private boolean closed = false; -- -- // Lock for interrupt triggering and clearing -- private Object interruptLock = new Object(); -- private boolean interruptTriggered = false; -- -- // used by updateSelectedKeys to handle cases where the same file -- // descriptor is polled by more than one filter -- private long updateCount; -- -- // Used to map file descriptors to a selection key and "update count" -- // (see updateSelectedKeys for usage). -- private static class MapEntry { -- SelectionKeyImpl ski; -- long updateCount; -- MapEntry(SelectionKeyImpl ski) { -- this.ski = ski; -- } -- } -- -- /** -- * Package private constructor called by factory method in -- * the abstract superclass Selector. -- */ -- KQueueSelectorImpl(SelectorProvider sp) { -- super(sp); -- long fds = IOUtil.makePipe(false); -- fd0 = (int)(fds >>> 32); -- fd1 = (int)fds; -- try { -- kqueueWrapper = new KQueueArrayWrapper(); -- kqueueWrapper.initInterrupt(fd0, fd1); -- fdMap = new HashMap<>(); -- totalChannels = 1; -- } catch (Throwable t) { -- try { -- FileDispatcherImpl.closeIntFD(fd0); -- } catch (IOException ioe0) { -- t.addSuppressed(ioe0); -- } -- try { -- FileDispatcherImpl.closeIntFD(fd1); -- } catch (IOException ioe1) { -- t.addSuppressed(ioe1); -- } -- throw t; -- } -- } -- -- -- protected int doSelect(long timeout) -- throws IOException -- { -- int entries = 0; -- if (closed) -- throw new ClosedSelectorException(); -- processDeregisterQueue(); -- try { -- begin(); -- entries = kqueueWrapper.poll(timeout); -- } finally { -- end(); -- } -- processDeregisterQueue(); -- return updateSelectedKeys(entries); -- } -- -- /** -- * Update the keys whose fd's have been selected by kqueue. -- * Add the ready keys to the selected key set. -- * If the interrupt fd has been selected, drain it and clear the interrupt. -- */ -- private int updateSelectedKeys(int entries) -- throws IOException -- { -- int numKeysUpdated = 0; -- boolean interrupted = false; -- -- // A file descriptor may be registered with kqueue with more than one -- // filter and so there may be more than one event for a fd. The update -- // count in the MapEntry tracks when the fd was last updated and this -- // ensures that the ready ops are updated rather than replaced by a -- // second or subsequent event. -- updateCount++; -- -- for (int i = 0; i < entries; i++) { -- int nextFD = kqueueWrapper.getDescriptor(i); -- if (nextFD == fd0) { -- interrupted = true; -- } else { -- MapEntry me = fdMap.get(Integer.valueOf(nextFD)); -- -- // entry is null in the case of an interrupt -- if (me != null) { -- int rOps = kqueueWrapper.getReventOps(i); -- SelectionKeyImpl ski = me.ski; -- if (selectedKeys.contains(ski)) { -- // first time this file descriptor has been encountered on this -- // update? -- if (me.updateCount != updateCount) { -- if (ski.channel.translateAndSetReadyOps(rOps, ski)) { -- numKeysUpdated++; -- me.updateCount = updateCount; -- } -- } else { -- // ready ops have already been set on this update -- ski.channel.translateAndUpdateReadyOps(rOps, ski); -- } -- } else { -- ski.channel.translateAndSetReadyOps(rOps, ski); -- if ((ski.nioReadyOps() & ski.nioInterestOps()) != 0) { -- selectedKeys.add(ski); -- numKeysUpdated++; -- me.updateCount = updateCount; -- } -- } -- } -- } -- } -- -- if (interrupted) { -- // Clear the wakeup pipe -- synchronized (interruptLock) { -- IOUtil.drain(fd0); -- interruptTriggered = false; -- } -- } -- return numKeysUpdated; -- } -- -- -- protected void implClose() throws IOException { -- if (!closed) { -- closed = true; -- -- // prevent further wakeup -- synchronized (interruptLock) { -- interruptTriggered = true; -- } -- -- FileDispatcherImpl.closeIntFD(fd0); -- FileDispatcherImpl.closeIntFD(fd1); -- if (kqueueWrapper != null) { -- kqueueWrapper.close(); -- kqueueWrapper = null; -- selectedKeys = null; -- -- // Deregister channels -- Iterator<SelectionKey> i = keys.iterator(); -- while (i.hasNext()) { -- SelectionKeyImpl ski = (SelectionKeyImpl)i.next(); -- deregister(ski); -- SelectableChannel selch = ski.channel(); -- if (!selch.isOpen() && !selch.isRegistered()) -- ((SelChImpl)selch).kill(); -- i.remove(); -- } -- totalChannels = 0; -- } -- fd0 = -1; -- fd1 = -1; -- } -- } -- -- -- protected void implRegister(SelectionKeyImpl ski) { -- if (closed) -- throw new ClosedSelectorException(); -- int fd = IOUtil.fdVal(ski.channel.getFD()); -- fdMap.put(Integer.valueOf(fd), new MapEntry(ski)); -- totalChannels++; -- keys.add(ski); -- } -- -- -- protected void implDereg(SelectionKeyImpl ski) throws IOException { -- int fd = ski.channel.getFDVal(); -- fdMap.remove(Integer.valueOf(fd)); -- kqueueWrapper.release(ski.channel); -- totalChannels--; -- keys.remove(ski); -- selectedKeys.remove(ski); -- deregister((AbstractSelectionKey)ski); -- SelectableChannel selch = ski.channel(); -- if (!selch.isOpen() && !selch.isRegistered()) -- ((SelChImpl)selch).kill(); -- } -- -- -- public void putEventOps(SelectionKeyImpl ski, int ops) { -- if (closed) -- throw new ClosedSelectorException(); -- kqueueWrapper.setInterest(ski.channel, ops); -- } -- -- -- public Selector wakeup() { -- synchronized (interruptLock) { -- if (!interruptTriggered) { -- kqueueWrapper.interrupt(); -- interruptTriggered = true; -- } -- } -- return this; -- } --} ---- ./jdk/src/macosx/classes/sun/nio/ch/KQueueSelectorProvider.java Sat Dec 08 11:51:25 2018 +0000 -+++ /dev/null Thu Jan 01 00:00:00 1970 +0000 -@@ -1,44 +0,0 @@ --/* -- * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. -- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -- * -- * This code is free software; you can redistribute it and/or modify it -- * under the terms of the GNU General Public License version 2 only, as -- * published by the Free Software Foundation. Oracle designates this -- * particular file as subject to the "Classpath" exception as provided -- * by Oracle in the LICENSE file that accompanied this code. -- * -- * This code is distributed in the hope that it will be useful, but WITHOUT -- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -- * version 2 for more details (a copy is included in the LICENSE file that -- * accompanied this code). -- * -- * You should have received a copy of the GNU General Public License version -- * 2 along with this work; if not, write to the Free Software Foundation, -- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -- * -- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -- * or visit www.oracle.com if you need additional information or have any -- * questions. -- */ -- --/* -- * KQueueSelectorProvider.java -- * Implementation of Selector using FreeBSD / Mac OS X kqueues -- * Derived from Sun's DevPollSelectorProvider -- */ -- --package sun.nio.ch; -- --import java.io.IOException; --import java.nio.channels.*; --import java.nio.channels.spi.*; -- --public class KQueueSelectorProvider --extends SelectorProviderImpl --{ -- public AbstractSelector openSelector() throws IOException { -- return new KQueueSelectorImpl(this); -- } --} ---- ./jdk/src/macosx/native/sun/nio/ch/KQueueArrayWrapper.c Sat Dec 08 11:51:25 2018 +0000 -+++ /dev/null Thu Jan 01 00:00:00 1970 +0000 -@@ -1,171 +0,0 @@ --/* -- * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. -- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -- * -- * This code is free software; you can redistribute it and/or modify it -- * under the terms of the GNU General Public License version 2 only, as -- * published by the Free Software Foundation. Oracle designates this -- * particular file as subject to the "Classpath" exception as provided -- * by Oracle in the LICENSE file that accompanied this code. -- * -- * This code is distributed in the hope that it will be useful, but WITHOUT -- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -- * version 2 for more details (a copy is included in the LICENSE file that -- * accompanied this code). -- * -- * You should have received a copy of the GNU General Public License version -- * 2 along with this work; if not, write to the Free Software Foundation, -- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -- * -- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -- * or visit www.oracle.com if you need additional information or have any -- * questions. -- */ -- --/* -- * KQueueArrayWrapper.c -- * Implementation of Selector using FreeBSD / Mac OS X kqueues -- * Derived from Sun's DevPollArrayWrapper -- */ -- -- --#include "jni.h" --#include "jni_util.h" --#include "jvm.h" --#include "jlong.h" -- --#include <sys/types.h> --#include <sys/event.h> --#include <sys/time.h> -- --JNIEXPORT void JNICALL --Java_sun_nio_ch_KQueueArrayWrapper_initStructSizes(JNIEnv *env, jclass clazz) --{ --#define CHECK_EXCEPTION() { \ -- if ((*env)->ExceptionCheck(env)) { \ -- goto exceptionOccurred; \ -- } \ --} -- --#define CHECK_ERROR_AND_EXCEPTION(_field) { \ -- if (_field == NULL) { \ -- goto badField; \ -- } \ -- CHECK_EXCEPTION(); \ --} -- -- -- jfieldID field; -- -- field = (*env)->GetStaticFieldID(env, clazz, "EVFILT_READ", "S"); -- CHECK_ERROR_AND_EXCEPTION(field); -- (*env)->SetStaticShortField(env, clazz, field, EVFILT_READ); -- CHECK_EXCEPTION(); -- -- field = (*env)->GetStaticFieldID(env, clazz, "EVFILT_WRITE", "S"); -- CHECK_ERROR_AND_EXCEPTION(field); -- (*env)->SetStaticShortField(env, clazz, field, EVFILT_WRITE); -- CHECK_EXCEPTION(); -- -- field = (*env)->GetStaticFieldID(env, clazz, "SIZEOF_KEVENT", "S"); -- CHECK_ERROR_AND_EXCEPTION(field); -- (*env)->SetStaticShortField(env, clazz, field, (short) sizeof(struct kevent)); -- CHECK_EXCEPTION(); -- -- field = (*env)->GetStaticFieldID(env, clazz, "FD_OFFSET", "S"); -- CHECK_ERROR_AND_EXCEPTION(field); -- (*env)->SetStaticShortField(env, clazz, field, (short) offsetof(struct kevent, ident)); -- CHECK_EXCEPTION(); -- -- field = (*env)->GetStaticFieldID(env, clazz, "FILTER_OFFSET", "S"); -- CHECK_ERROR_AND_EXCEPTION(field); -- (*env)->SetStaticShortField(env, clazz, field, (short) offsetof(struct kevent, filter)); -- CHECK_EXCEPTION(); -- return; -- --badField: -- return; -- --exceptionOccurred: -- return; -- --#undef CHECK_EXCEPTION --#undef CHECK_ERROR_AND_EXCEPTION --} -- --JNIEXPORT jint JNICALL --Java_sun_nio_ch_KQueueArrayWrapper_init(JNIEnv *env, jobject this) --{ -- int kq = kqueue(); -- if (kq < 0) { -- JNU_ThrowIOExceptionWithLastError(env, "KQueueArrayWrapper: kqueue() failed"); -- } -- return kq; --} -- -- --JNIEXPORT void JNICALL --Java_sun_nio_ch_KQueueArrayWrapper_register0(JNIEnv *env, jobject this, -- jint kq, jint fd, jint r, jint w) --{ -- struct kevent changes[2]; -- struct kevent errors[2]; -- struct timespec dontBlock = {0, 0}; -- -- // if (r) then { register for read } else { unregister for read } -- // if (w) then { register for write } else { unregister for write } -- // Ignore errors - they're probably complaints about deleting non- -- // added filters - but provide an error array anyway because -- // kqueue behaves erratically if some of its registrations fail. -- EV_SET(&changes[0], fd, EVFILT_READ, r ? EV_ADD : EV_DELETE, 0, 0, 0); -- EV_SET(&changes[1], fd, EVFILT_WRITE, w ? EV_ADD : EV_DELETE, 0, 0, 0); -- kevent(kq, changes, 2, errors, 2, &dontBlock); --} -- -- --JNIEXPORT jint JNICALL --Java_sun_nio_ch_KQueueArrayWrapper_kevent0(JNIEnv *env, jobject this, jint kq, -- jlong kevAddr, jint kevCount, -- jlong timeout) --{ -- struct kevent *kevs = (struct kevent *)jlong_to_ptr(kevAddr); -- struct timespec ts; -- struct timespec *tsp; -- int result; -- -- // Java timeout is in milliseconds. Convert to struct timespec. -- // Java timeout == -1 : wait forever : timespec timeout of NULL -- // Java timeout == 0 : return immediately : timespec timeout of zero -- if (timeout >= 0) { -- ts.tv_sec = timeout / 1000; -- ts.tv_nsec = (timeout % 1000) * 1000000; //nanosec = 1 million millisec -- tsp = &ts; -- } else { -- tsp = NULL; -- } -- -- result = kevent(kq, NULL, 0, kevs, kevCount, tsp); -- -- if (result < 0) { -- if (errno == EINTR) { -- // ignore EINTR, pretend nothing was selected -- result = 0; -- } else { -- JNU_ThrowIOExceptionWithLastError(env, "KQueueArrayWrapper: kqueue failed"); -- } -- } -- -- return result; --} -- -- --JNIEXPORT void JNICALL --Java_sun_nio_ch_KQueueArrayWrapper_interrupt(JNIEnv *env, jclass cls, jint fd) --{ -- char c = 1; -- if (1 != write(fd, &c, 1)) { -- JNU_ThrowIOExceptionWithLastError(env, "KQueueArrayWrapper: interrupt failed"); -- } --} -- ---- ./jdk/src/share/bin/jli_util.h Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/share/bin/jli_util.h Sun Feb 10 09:27:00 2019 -0800 -@@ -87,7 +87,7 @@ - #define _LARGFILE64_SOURCE - #define JLI_Lseek lseek64 - #endif --#ifdef MACOSX -+#ifdef _ALLBSD_SOURCE - #define JLI_Lseek lseek - #endif - #ifdef _AIX ---- ./jdk/src/share/classes/sun/awt/FontConfiguration.java Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/share/classes/sun/awt/FontConfiguration.java Sun Feb 10 09:27:00 2019 -0800 -@@ -1146,7 +1146,7 @@ - */ - HashMap<String, Boolean> existsMap; - public boolean needToSearchForFile(String fileName) { -- if (!FontUtilities.isLinux) { -+ if (!FontUtilities.isLinux && !FontUtilities.isBSD) { - return false; - } else if (existsMap == null) { - existsMap = new HashMap<String, Boolean>(); ---- ./jdk/src/share/classes/sun/awt/OSInfo.java Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/share/classes/sun/awt/OSInfo.java Sun Feb 10 09:27:00 2019 -0800 -@@ -39,6 +39,7 @@ - WINDOWS, - LINUX, - SOLARIS, -+ BSD, - MACOSX, - UNKNOWN - } -@@ -101,6 +102,10 @@ - return SOLARIS; - } - -+ if (osName.endsWith("BSD")) { -+ return BSD; -+ } -+ - if (osName.contains("OS X")) { - return MACOSX; - } ---- ./jdk/src/share/classes/sun/font/FontUtilities.java Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/share/classes/sun/font/FontUtilities.java Sun Feb 10 09:27:00 2019 -0800 -@@ -48,6 +48,8 @@ - - public static boolean isLinux; - -+ public static boolean isBSD; -+ - public static boolean isMacOSX; - - public static boolean isSolaris8; -@@ -78,6 +80,8 @@ - - isLinux = osName.startsWith("Linux"); - -+ isBSD = osName.endsWith("BSD"); -+ - isMacOSX = osName.contains("OS X"); // TODO: MacOSX - - String t2kStr = System.getProperty("sun.java2d.font.scaler"); ---- ./jdk/src/share/classes/sun/font/SunFontManager.java Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/share/classes/sun/font/SunFontManager.java Sun Feb 10 09:27:00 2019 -0800 -@@ -418,7 +418,7 @@ - * registerFonts method as on-screen these JRE fonts - * always go through the T2K rasteriser. - */ -- if (FontUtilities.isLinux) { -+ if (FontUtilities.isLinux || FontUtilities.isBSD) { - /* Linux font configuration uses these fonts */ - registerFontDir(jreFontDirName); - } ---- ./jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java Sun Feb 10 09:27:00 2019 -0800 -@@ -1306,7 +1306,7 @@ - String osName = AccessController.doPrivileged( - new GetPropertyAction("os.name")); - if ("SunOS".equals(osName) || "Linux".equals(osName) || "AIX".equals(osName) -- || osName.contains("OS X")) { -+ || osName.endsWith("BSD") || osName.contains("OS X")) { - charset("x-COMPOUND_TEXT", "COMPOUND_TEXT", - new String[] { - "COMPOUND_TEXT", // JDK historical ---- ./jdk/src/share/classes/sun/print/PSPrinterJob.java Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/share/classes/sun/print/PSPrinterJob.java Sun Feb 10 09:27:00 2019 -0800 -@@ -1587,9 +1587,31 @@ - } - - String osname = System.getProperty("os.name"); -- if (osname.equals("Linux") || osname.contains("OS X")) { -+ if (osname.equals("Linux") || osname.endsWith("BSD") || osname.contains("OS X")) { -+ String lprPath = "/usr/bin/lpr"; -+ if (osname.equals("FreeBSD")) { -+ final PrintService pservice = getPrintService(); -+ Boolean isIPPPrinter = -+ (Boolean)java.security.AccessController.doPrivileged( -+ new java.security.PrivilegedAction() { -+ public Object run() { -+ try { -+ Class psClass = -+ Class.forName("sun.print.IPPPrintService"); -+ if (psClass.isInstance(pservice)) { -+ return Boolean.TRUE; -+ } -+ } catch (Throwable t) { -+ } -+ return Boolean.FALSE; -+ } -+ }); -+ if (isIPPPrinter) { -+ lprPath = "/usr/local/bin/lpr"; -+ } -+ } - execCmd = new String[ncomps]; -- execCmd[n++] = "/usr/bin/lpr"; -+ execCmd[n++] = lprPath; - if ((pFlags & PRINTER) != 0) { - execCmd[n++] = "-P" + printer; - } ---- ./jdk/src/share/classes/sun/security/jgss/GSSManagerImpl.java Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/share/classes/sun/security/jgss/GSSManagerImpl.java Sun Feb 10 09:27:00 2019 -0800 -@@ -48,6 +48,7 @@ - public Boolean run() { - String osname = System.getProperty("os.name"); - if (osname.startsWith("SunOS") || -+ osname.endsWith("BSD") || - osname.contains("OS X") || - osname.startsWith("Linux")) { - return new Boolean(System.getProperty ---- ./jdk/src/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java Sun Feb 10 09:27:00 2019 -0800 -@@ -90,6 +90,12 @@ - "libgssapi_krb5.so", - "libgssapi_krb5.so.2", - }; -+ } else if (osname.endsWith("BSD")) { -+ gssLibs = new String[]{ -+ "libgssapi.so", -+ "libgssapi_krb5.so", -+ "libgssapi_krb5.so.10", -+ }; - } else if (osname.contains("OS X")) { - gssLibs = new String[]{ - "libgssapi_krb5.dylib", ---- ./jdk/src/share/classes/sun/tools/attach/META-INF/services/com.sun.tools.attach.spi.AttachProvider Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/share/classes/sun/tools/attach/META-INF/services/com.sun.tools.attach.spi.AttachProvider Sun Feb 10 09:27:00 2019 -0800 -@@ -31,4 +31,5 @@ - #[windows]sun.tools.attach.WindowsAttachProvider - #[linux]sun.tools.attach.LinuxAttachProvider - #[macosx]sun.tools.attach.BsdAttachProvider -+#[bsd]sun.tools.attach.BsdAttachProvider - #[aix]sun.tools.attach.AixAttachProvider ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./jdk/src/share/lib/security/java.security-bsd Sun Feb 10 09:27:00 2019 -0800 -@@ -0,0 +1,983 @@ -+# -+# This is the "master security properties file". -+# -+# An alternate java.security properties file may be specified -+# from the command line via the system property -+# -+# -Djava.security.properties=<URL> -+# -+# This properties file appends to the master security properties file. -+# If both properties files specify values for the same key, the value -+# from the command-line properties file is selected, as it is the last -+# one loaded. -+# -+# Also, if you specify -+# -+# -Djava.security.properties==<URL> (2 equals), -+# -+# then that properties file completely overrides the master security -+# properties file. -+# -+# To disable the ability to specify an additional properties file from -+# the command line, set the key security.overridePropertiesFile -+# to false in the master security properties file. It is set to true -+# by default. -+ -+# In this file, various security properties are set for use by -+# java.security classes. This is where users can statically register -+# Cryptography Package Providers ("providers" for short). The term -+# "provider" refers to a package or set of packages that supply a -+# concrete implementation of a subset of the cryptography aspects of -+# the Java Security API. A provider may, for example, implement one or -+# more digital signature algorithms or message digest algorithms. -+# -+# Each provider must implement a subclass of the Provider class. -+# To register a provider in this master security properties file, -+# specify the Provider subclass name and priority in the format -+# -+# security.provider.<n>=<className> -+# -+# This declares a provider, and specifies its preference -+# order n. The preference order is the order in which providers are -+# searched for requested algorithms (when no specific provider is -+# requested). The order is 1-based; 1 is the most preferred, followed -+# by 2, and so on. -+# -+# <className> must specify the subclass of the Provider class whose -+# constructor sets the values of various properties that are required -+# for the Java Security API to look up the algorithms or other -+# facilities implemented by the provider. -+# -+# There must be at least one provider specification in java.security. -+# There is a default provider that comes standard with the JDK. It -+# is called the "SUN" provider, and its Provider subclass -+# named Sun appears in the sun.security.provider package. Thus, the -+# "SUN" provider is registered via the following: -+# -+# security.provider.1=sun.security.provider.Sun -+# -+# (The number 1 is used for the default provider.) -+# -+# Note: Providers can be dynamically registered instead by calls to -+# either the addProvider or insertProviderAt method in the Security -+# class. -+ -+# -+# List of providers and their preference orders (see above): -+# -+security.provider.1=sun.security.provider.Sun -+security.provider.2=sun.security.rsa.SunRsaSign -+security.provider.3=sun.security.ec.SunEC -+security.provider.4=com.sun.net.ssl.internal.ssl.Provider -+security.provider.5=com.sun.crypto.provider.SunJCE -+security.provider.6=sun.security.jgss.SunProvider -+security.provider.7=com.sun.security.sasl.Provider -+security.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRI -+security.provider.9=sun.security.smartcardio.SunPCSC -+ -+# -+# Sun Provider SecureRandom seed source. -+# -+# Select the primary source of seed data for the "SHA1PRNG" and -+# "NativePRNG" SecureRandom implementations in the "Sun" provider. -+# (Other SecureRandom implementations might also use this property.) -+# -+# On Unix-like systems (for example, Solaris/Linux/MacOS), the -+# "NativePRNG" and "SHA1PRNG" implementations obtains seed data from -+# special device files such as file:/dev/random. -+# -+# On Windows systems, specifying the URLs "file:/dev/random" or -+# "file:/dev/urandom" will enable the native Microsoft CryptoAPI seeding -+# mechanism for SHA1PRNG. -+# -+# By default, an attempt is made to use the entropy gathering device -+# specified by the "securerandom.source" Security property. If an -+# exception occurs while accessing the specified URL: -+# -+# SHA1PRNG: -+# the traditional system/thread activity algorithm will be used. -+# -+# NativePRNG: -+# a default value of /dev/random will be used. If neither -+# are available, the implementation will be disabled. -+# "file" is the only currently supported protocol type. -+# -+# The entropy gathering device can also be specified with the System -+# property "java.security.egd". For example: -+# -+# % java -Djava.security.egd=file:/dev/random MainClass -+# -+# Specifying this System property will override the -+# "securerandom.source" Security property. -+# -+# In addition, if "file:/dev/random" or "file:/dev/urandom" is -+# specified, the "NativePRNG" implementation will be more preferred than -+# SHA1PRNG in the Sun provider. -+# -+securerandom.source=file:/dev/random -+ -+# -+# A list of known strong SecureRandom implementations. -+# -+# To help guide applications in selecting a suitable strong -+# java.security.SecureRandom implementation, Java distributions should -+# indicate a list of known strong implementations using the property. -+# -+# This is a comma-separated list of algorithm and/or algorithm:provider -+# entries. -+# -+securerandom.strongAlgorithms=NativePRNGBlocking:SUN -+ -+# -+# Class to instantiate as the javax.security.auth.login.Configuration -+# provider. -+# -+login.configuration.provider=sun.security.provider.ConfigFile -+ -+# -+# Default login configuration file -+# -+#login.config.url.1=file:${user.home}/.java.login.config -+ -+# -+# Class to instantiate as the system Policy. This is the name of the class -+# that will be used as the Policy object. -+# -+policy.provider=sun.security.provider.PolicyFile -+ -+# The default is to have a single system-wide policy file, -+# and a policy file in the user's home directory. -+policy.url.1=file:${java.home}/lib/security/java.policy -+policy.url.2=file:${user.home}/.java.policy -+ -+# whether or not we expand properties in the policy file -+# if this is set to false, properties (${...}) will not be expanded in policy -+# files. -+policy.expandProperties=true -+ -+# whether or not we allow an extra policy to be passed on the command line -+# with -Djava.security.policy=somefile. Comment out this line to disable -+# this feature. -+policy.allowSystemProperty=true -+ -+# whether or not we look into the IdentityScope for trusted Identities -+# when encountering a 1.1 signed JAR file. If the identity is found -+# and is trusted, we grant it AllPermission. -+policy.ignoreIdentityScope=false -+ -+# -+# Default keystore type. -+# -+keystore.type=jks -+ -+# -+# Controls compatibility mode for the JKS keystore type. -+# -+# When set to 'true', the JKS keystore type supports loading -+# keystore files in either JKS or PKCS12 format. When set to 'false' -+# it supports loading only JKS keystore files. -+# -+keystore.type.compat=true -+ -+# -+# List of comma-separated packages that start with or equal this string -+# will cause a security exception to be thrown when -+# passed to checkPackageAccess unless the -+# corresponding RuntimePermission ("accessClassInPackage."+package) has -+# been granted. -+package.access=sun.,\ -+ com.sun.xml.internal.,\ -+ com.sun.imageio.,\ -+ com.sun.istack.internal.,\ -+ com.sun.jmx.,\ -+ com.sun.media.sound.,\ -+ com.sun.naming.internal.,\ -+ com.sun.proxy.,\ -+ com.sun.corba.se.,\ -+ com.sun.org.apache.bcel.internal.,\ -+ com.sun.org.apache.regexp.internal.,\ -+ com.sun.org.apache.xerces.internal.,\ -+ com.sun.org.apache.xpath.internal.,\ -+ com.sun.org.apache.xalan.internal.extensions.,\ -+ com.sun.org.apache.xalan.internal.lib.,\ -+ com.sun.org.apache.xalan.internal.res.,\ -+ com.sun.org.apache.xalan.internal.templates.,\ -+ com.sun.org.apache.xalan.internal.utils.,\ -+ com.sun.org.apache.xalan.internal.xslt.,\ -+ com.sun.org.apache.xalan.internal.xsltc.cmdline.,\ -+ com.sun.org.apache.xalan.internal.xsltc.compiler.,\ -+ com.sun.org.apache.xalan.internal.xsltc.trax.,\ -+ com.sun.org.apache.xalan.internal.xsltc.util.,\ -+ com.sun.org.apache.xml.internal.res.,\ -+ com.sun.org.apache.xml.internal.resolver.helpers.,\ -+ com.sun.org.apache.xml.internal.resolver.readers.,\ -+ com.sun.org.apache.xml.internal.security.,\ -+ com.sun.org.apache.xml.internal.serializer.utils.,\ -+ com.sun.org.apache.xml.internal.utils.,\ -+ com.sun.org.glassfish.,\ -+ com.oracle.xmlns.internal.,\ -+ com.oracle.webservices.internal.,\ -+ oracle.jrockit.jfr.,\ -+ org.jcp.xml.dsig.internal.,\ -+ jdk.internal.,\ -+ jdk.nashorn.internal.,\ -+ jdk.nashorn.tools.,\ -+ jdk.xml.internal.,\ -+ com.sun.activation.registries. -+ -+# -+# List of comma-separated packages that start with or equal this string -+# will cause a security exception to be thrown when -+# passed to checkPackageDefinition unless the -+# corresponding RuntimePermission ("defineClassInPackage."+package) has -+# been granted. -+# -+# by default, none of the class loaders supplied with the JDK call -+# checkPackageDefinition. -+# -+package.definition=sun.,\ -+ com.sun.xml.internal.,\ -+ com.sun.imageio.,\ -+ com.sun.istack.internal.,\ -+ com.sun.jmx.,\ -+ com.sun.media.sound.,\ -+ com.sun.naming.internal.,\ -+ com.sun.proxy.,\ -+ com.sun.corba.se.,\ -+ com.sun.org.apache.bcel.internal.,\ -+ com.sun.org.apache.regexp.internal.,\ -+ com.sun.org.apache.xerces.internal.,\ -+ com.sun.org.apache.xpath.internal.,\ -+ com.sun.org.apache.xalan.internal.extensions.,\ -+ com.sun.org.apache.xalan.internal.lib.,\ -+ com.sun.org.apache.xalan.internal.res.,\ -+ com.sun.org.apache.xalan.internal.templates.,\ -+ com.sun.org.apache.xalan.internal.utils.,\ -+ com.sun.org.apache.xalan.internal.xslt.,\ -+ com.sun.org.apache.xalan.internal.xsltc.cmdline.,\ -+ com.sun.org.apache.xalan.internal.xsltc.compiler.,\ -+ com.sun.org.apache.xalan.internal.xsltc.trax.,\ -+ com.sun.org.apache.xalan.internal.xsltc.util.,\ -+ com.sun.org.apache.xml.internal.res.,\ -+ com.sun.org.apache.xml.internal.resolver.helpers.,\ -+ com.sun.org.apache.xml.internal.resolver.readers.,\ -+ com.sun.org.apache.xml.internal.security.,\ -+ com.sun.org.apache.xml.internal.serializer.utils.,\ -+ com.sun.org.apache.xml.internal.utils.,\ -+ com.sun.org.glassfish.,\ -+ com.oracle.xmlns.internal.,\ -+ com.oracle.webservices.internal.,\ -+ oracle.jrockit.jfr.,\ -+ org.jcp.xml.dsig.internal.,\ -+ jdk.internal.,\ -+ jdk.nashorn.internal.,\ -+ jdk.nashorn.tools.,\ -+ jdk.xml.internal.,\ -+ com.sun.activation.registries. -+ -+# -+# Determines whether this properties file can be appended to -+# or overridden on the command line via -Djava.security.properties -+# -+security.overridePropertiesFile=true -+ -+# -+# Determines the default key and trust manager factory algorithms for -+# the javax.net.ssl package. -+# -+ssl.KeyManagerFactory.algorithm=SunX509 -+ssl.TrustManagerFactory.algorithm=PKIX -+ -+# -+# The Java-level namelookup cache policy for successful lookups: -+# -+# any negative value: caching forever -+# any positive value: the number of seconds to cache an address for -+# zero: do not cache -+# -+# default value is forever (FOREVER). For security reasons, this -+# caching is made forever when a security manager is set. When a security -+# manager is not set, the default behavior in this implementation -+# is to cache for 30 seconds. -+# -+# NOTE: setting this to anything other than the default value can have -+# serious security implications. Do not set it unless -+# you are sure you are not exposed to DNS spoofing attack. -+# -+#networkaddress.cache.ttl=-1 -+ -+# The Java-level namelookup cache policy for failed lookups: -+# -+# any negative value: cache forever -+# any positive value: the number of seconds to cache negative lookup results -+# zero: do not cache -+# -+# In some Microsoft Windows networking environments that employ -+# the WINS name service in addition to DNS, name service lookups -+# that fail may take a noticeably long time to return (approx. 5 seconds). -+# For this reason the default caching policy is to maintain these -+# results for 10 seconds. -+# -+# -+networkaddress.cache.negative.ttl=10 -+ -+# -+# Properties to configure OCSP for certificate revocation checking -+# -+ -+# Enable OCSP -+# -+# By default, OCSP is not used for certificate revocation checking. -+# This property enables the use of OCSP when set to the value "true". -+# -+# NOTE: SocketPermission is required to connect to an OCSP responder. -+# -+# Example, -+# ocsp.enable=true -+ -+# -+# Location of the OCSP responder -+# -+# By default, the location of the OCSP responder is determined implicitly -+# from the certificate being validated. This property explicitly specifies -+# the location of the OCSP responder. The property is used when the -+# Authority Information Access extension (defined in RFC 3280) is absent -+# from the certificate or when it requires overriding. -+# -+# Example, -+# ocsp.responderURL=http://ocsp.example.net:80 -+ -+# -+# Subject name of the OCSP responder's certificate -+# -+# By default, the certificate of the OCSP responder is that of the issuer -+# of the certificate being validated. This property identifies the certificate -+# of the OCSP responder when the default does not apply. Its value is a string -+# distinguished name (defined in RFC 2253) which identifies a certificate in -+# the set of certificates supplied during cert path validation. In cases where -+# the subject name alone is not sufficient to uniquely identify the certificate -+# then both the "ocsp.responderCertIssuerName" and -+# "ocsp.responderCertSerialNumber" properties must be used instead. When this -+# property is set then those two properties are ignored. -+# -+# Example, -+# ocsp.responderCertSubjectName="CN=OCSP Responder, O=XYZ Corp" -+ -+# -+# Issuer name of the OCSP responder's certificate -+# -+# By default, the certificate of the OCSP responder is that of the issuer -+# of the certificate being validated. This property identifies the certificate -+# of the OCSP responder when the default does not apply. Its value is a string -+# distinguished name (defined in RFC 2253) which identifies a certificate in -+# the set of certificates supplied during cert path validation. When this -+# property is set then the "ocsp.responderCertSerialNumber" property must also -+# be set. When the "ocsp.responderCertSubjectName" property is set then this -+# property is ignored. -+# -+# Example, -+# ocsp.responderCertIssuerName="CN=Enterprise CA, O=XYZ Corp" -+ -+# -+# Serial number of the OCSP responder's certificate -+# -+# By default, the certificate of the OCSP responder is that of the issuer -+# of the certificate being validated. This property identifies the certificate -+# of the OCSP responder when the default does not apply. Its value is a string -+# of hexadecimal digits (colon or space separators may be present) which -+# identifies a certificate in the set of certificates supplied during cert path -+# validation. When this property is set then the "ocsp.responderCertIssuerName" -+# property must also be set. When the "ocsp.responderCertSubjectName" property -+# is set then this property is ignored. -+# -+# Example, -+# ocsp.responderCertSerialNumber=2A:FF:00 -+ -+# -+# Policy for failed Kerberos KDC lookups: -+# -+# When a KDC is unavailable (network error, service failure, etc), it is -+# put inside a blacklist and accessed less often for future requests. The -+# value (case-insensitive) for this policy can be: -+# -+# tryLast -+# KDCs in the blacklist are always tried after those not on the list. -+# -+# tryLess[:max_retries,timeout] -+# KDCs in the blacklist are still tried by their order in the configuration, -+# but with smaller max_retries and timeout values. max_retries and timeout -+# are optional numerical parameters (default 1 and 5000, which means once -+# and 5 seconds). Please notes that if any of the values defined here is -+# more than what is defined in krb5.conf, it will be ignored. -+# -+# Whenever a KDC is detected as available, it is removed from the blacklist. -+# The blacklist is reset when krb5.conf is reloaded. You can add -+# refreshKrb5Config=true to a JAAS configuration file so that krb5.conf is -+# reloaded whenever a JAAS authentication is attempted. -+# -+# Example, -+# krb5.kdc.bad.policy = tryLast -+# krb5.kdc.bad.policy = tryLess:2,2000 -+krb5.kdc.bad.policy = tryLast -+ -+# Algorithm restrictions for certification path (CertPath) processing -+# -+# In some environments, certain algorithms or key lengths may be undesirable -+# for certification path building and validation. For example, "MD2" is -+# generally no longer considered to be a secure hash algorithm. This section -+# describes the mechanism for disabling algorithms based on algorithm name -+# and/or key length. This includes algorithms used in certificates, as well -+# as revocation information such as CRLs and signed OCSP Responses. -+# The syntax of the disabled algorithm string is described as follows: -+# DisabledAlgorithms: -+# " DisabledAlgorithm { , DisabledAlgorithm } " -+# -+# DisabledAlgorithm: -+# AlgorithmName [Constraint] { '&' Constraint } -+# -+# AlgorithmName: -+# (see below) -+# -+# Constraint: -+# KeySizeConstraint | CAConstraint | DenyAfterConstraint | -+# UsageConstraint -+# -+# KeySizeConstraint: -+# keySize Operator KeyLength -+# -+# Operator: -+# <= | < | == | != | >= | > -+# -+# KeyLength: -+# Integer value of the algorithm's key length in bits -+# -+# CAConstraint: -+# jdkCA -+# -+# DenyAfterConstraint: -+# denyAfter YYYY-MM-DD -+# -+# UsageConstraint: -+# usage [TLSServer] [TLSClient] [SignedJAR] -+# -+# The "AlgorithmName" is the standard algorithm name of the disabled -+# algorithm. See "Java Cryptography Architecture Standard Algorithm Name -+# Documentation" for information about Standard Algorithm Names. Matching -+# is performed using a case-insensitive sub-element matching rule. (For -+# example, in "SHA1withECDSA" the sub-elements are "SHA1" for hashing and -+# "ECDSA" for signatures.) If the assertion "AlgorithmName" is a -+# sub-element of the certificate algorithm name, the algorithm will be -+# rejected during certification path building and validation. For example, -+# the assertion algorithm name "DSA" will disable all certificate algorithms -+# that rely on DSA, such as NONEwithDSA, SHA1withDSA. However, the assertion -+# will not disable algorithms related to "ECDSA". -+# -+# A "Constraint" defines restrictions on the keys and/or certificates for -+# a specified AlgorithmName: -+# -+# KeySizeConstraint: -+# keySize Operator KeyLength -+# The constraint requires a key of a valid size range if the -+# "AlgorithmName" is of a key algorithm. The "KeyLength" indicates -+# the key size specified in number of bits. For example, -+# "RSA keySize <= 1024" indicates that any RSA key with key size less -+# than or equal to 1024 bits should be disabled, and -+# "RSA keySize < 1024, RSA keySize > 2048" indicates that any RSA key -+# with key size less than 1024 or greater than 2048 should be disabled. -+# This constraint is only used on algorithms that have a key size. -+# -+# CAConstraint: -+# jdkCA -+# This constraint prohibits the specified algorithm only if the -+# algorithm is used in a certificate chain that terminates at a marked -+# trust anchor in the lib/security/cacerts keystore. If the jdkCA -+# constraint is not set, then all chains using the specified algorithm -+# are restricted. jdkCA may only be used once in a DisabledAlgorithm -+# expression. -+# Example: To apply this constraint to SHA-1 certificates, include -+# the following: "SHA1 jdkCA" -+# -+# DenyAfterConstraint: -+# denyAfter YYYY-MM-DD -+# This constraint prohibits a certificate with the specified algorithm -+# from being used after the date regardless of the certificate's -+# validity. JAR files that are signed and timestamped before the -+# constraint date with certificates containing the disabled algorithm -+# will not be restricted. The date is processed in the UTC timezone. -+# This constraint can only be used once in a DisabledAlgorithm -+# expression. -+# Example: To deny usage of RSA 2048 bit certificates after Feb 3 2020, -+# use the following: "RSA keySize == 2048 & denyAfter 2020-02-03" -+# -+# UsageConstraint: -+# usage [TLSServer] [TLSClient] [SignedJAR] -+# This constraint prohibits the specified algorithm for -+# a specified usage. This should be used when disabling an algorithm -+# for all usages is not practical. 'TLSServer' restricts the algorithm -+# in TLS server certificate chains when server authentication is -+# performed. 'TLSClient' restricts the algorithm in TLS client -+# certificate chains when client authentication is performed. -+# 'SignedJAR' constrains use of certificates in signed jar files. -+# The usage type follows the keyword and more than one usage type can -+# be specified with a whitespace delimiter. -+# Example: "SHA1 usage TLSServer TLSClient" -+# -+# When an algorithm must satisfy more than one constraint, it must be -+# delimited by an ampersand '&'. For example, to restrict certificates in a -+# chain that terminate at a distribution provided trust anchor and contain -+# RSA keys that are less than or equal to 1024 bits, add the following -+# constraint: "RSA keySize <= 1024 & jdkCA". -+# -+# All DisabledAlgorithms expressions are processed in the order defined in the -+# property. This requires lower keysize constraints to be specified -+# before larger keysize constraints of the same algorithm. For example: -+# "RSA keySize < 1024 & jdkCA, RSA keySize < 2048". -+# -+# Note: The algorithm restrictions do not apply to trust anchors or -+# self-signed certificates. -+# -+# Note: This property is currently used by Oracle's PKIX implementation. It -+# is not guaranteed to be examined and used by other implementations. -+# -+# Example: -+# jdk.certpath.disabledAlgorithms=MD2, DSA, RSA keySize < 2048 -+# -+# -+jdk.certpath.disabledAlgorithms=MD2, MD5, SHA1 jdkCA & usage TLSServer, \ -+ RSA keySize < 1024, DSA keySize < 1024, EC keySize < 224 -+ -+# -+# Algorithm restrictions for signed JAR files -+# -+# In some environments, certain algorithms or key lengths may be undesirable -+# for signed JAR validation. For example, "MD2" is generally no longer -+# considered to be a secure hash algorithm. This section describes the -+# mechanism for disabling algorithms based on algorithm name and/or key length. -+# JARs signed with any of the disabled algorithms or key sizes will be treated -+# as unsigned. -+# -+# The syntax of the disabled algorithm string is described as follows: -+# DisabledAlgorithms: -+# " DisabledAlgorithm { , DisabledAlgorithm } " -+# -+# DisabledAlgorithm: -+# AlgorithmName [Constraint] { '&' Constraint } -+# -+# AlgorithmName: -+# (see below) -+# -+# Constraint: -+# KeySizeConstraint | DenyAfterConstraint -+# -+# KeySizeConstraint: -+# keySize Operator KeyLength -+# -+# DenyAfterConstraint: -+# denyAfter YYYY-MM-DD -+# -+# Operator: -+# <= | < | == | != | >= | > -+# -+# KeyLength: -+# Integer value of the algorithm's key length in bits -+# -+# Note: This property is currently used by the JDK Reference -+# implementation. It is not guaranteed to be examined and used by other -+# implementations. -+# -+# See "jdk.certpath.disabledAlgorithms" for syntax descriptions. -+# -+jdk.jar.disabledAlgorithms=MD2, MD5, RSA keySize < 1024, DSA keySize < 1024 -+ -+# -+# Algorithm restrictions for Secure Socket Layer/Transport Layer Security -+# (SSL/TLS) processing -+# -+# In some environments, certain algorithms or key lengths may be undesirable -+# when using SSL/TLS. This section describes the mechanism for disabling -+# algorithms during SSL/TLS security parameters negotiation, including -+# protocol version negotiation, cipher suites selection, peer authentication -+# and key exchange mechanisms. -+# -+# Disabled algorithms will not be negotiated for SSL/TLS connections, even -+# if they are enabled explicitly in an application. -+# -+# For PKI-based peer authentication and key exchange mechanisms, this list -+# of disabled algorithms will also be checked during certification path -+# building and validation, including algorithms used in certificates, as -+# well as revocation information such as CRLs and signed OCSP Responses. -+# This is in addition to the jdk.certpath.disabledAlgorithms property above. -+# -+# See the specification of "jdk.certpath.disabledAlgorithms" for the -+# syntax of the disabled algorithm string. -+# -+# Note: The algorithm restrictions do not apply to trust anchors or -+# self-signed certificates. -+# -+# Note: This property is currently used by the JDK Reference implementation. -+# It is not guaranteed to be examined and used by other implementations. -+# -+# Example: -+# jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048 -+jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, DH keySize < 1024, \ -+ EC keySize < 224, 3DES_EDE_CBC, anon, NULL -+ -+# Legacy algorithms for Secure Socket Layer/Transport Layer Security (SSL/TLS) -+# processing in JSSE implementation. -+# -+# In some environments, a certain algorithm may be undesirable but it -+# cannot be disabled because of its use in legacy applications. Legacy -+# algorithms may still be supported, but applications should not use them -+# as the security strength of legacy algorithms are usually not strong enough -+# in practice. -+# -+# During SSL/TLS security parameters negotiation, legacy algorithms will -+# not be negotiated unless there are no other candidates. -+# -+# The syntax of the legacy algorithms string is described as this Java -+# BNF-style: -+# LegacyAlgorithms: -+# " LegacyAlgorithm { , LegacyAlgorithm } " -+# -+# LegacyAlgorithm: -+# AlgorithmName (standard JSSE algorithm name) -+# -+# See the specification of security property "jdk.certpath.disabledAlgorithms" -+# for the syntax and description of the "AlgorithmName" notation. -+# -+# Per SSL/TLS specifications, cipher suites have the form: -+# SSL_KeyExchangeAlg_WITH_CipherAlg_MacAlg -+# or -+# TLS_KeyExchangeAlg_WITH_CipherAlg_MacAlg -+# -+# For example, the cipher suite TLS_RSA_WITH_AES_128_CBC_SHA uses RSA as the -+# key exchange algorithm, AES_128_CBC (128 bits AES cipher algorithm in CBC -+# mode) as the cipher (encryption) algorithm, and SHA-1 as the message digest -+# algorithm for HMAC. -+# -+# The LegacyAlgorithm can be one of the following standard algorithm names: -+# 1. JSSE cipher suite name, e.g., TLS_RSA_WITH_AES_128_CBC_SHA -+# 2. JSSE key exchange algorithm name, e.g., RSA -+# 3. JSSE cipher (encryption) algorithm name, e.g., AES_128_CBC -+# 4. JSSE message digest algorithm name, e.g., SHA -+# -+# See SSL/TLS specifications and "Java Cryptography Architecture Standard -+# Algorithm Name Documentation" for information about the algorithm names. -+# -+# Note: This property is currently used by the JDK Reference implementation. -+# It is not guaranteed to be examined and used by other implementations. -+# There is no guarantee the property will continue to exist or be of the -+# same syntax in future releases. -+# -+# Example: -+# jdk.tls.legacyAlgorithms=DH_anon, DES_CBC, SSL_RSA_WITH_RC4_128_MD5 -+# -+jdk.tls.legacyAlgorithms= \ -+ K_NULL, C_NULL, M_NULL, \ -+ DH_anon, ECDH_anon, \ -+ RC4_128, RC4_40, DES_CBC, DES40_CBC, \ -+ 3DES_EDE_CBC -+ -+# The pre-defined default finite field Diffie-Hellman ephemeral (DHE) -+# parameters for Transport Layer Security (SSL/TLS/DTLS) processing. -+# -+# In traditional SSL/TLS/DTLS connections where finite field DHE parameters -+# negotiation mechanism is not used, the server offers the client group -+# parameters, base generator g and prime modulus p, for DHE key exchange. -+# It is recommended to use dynamic group parameters. This property defines -+# a mechanism that allows you to specify custom group parameters. -+# -+# The syntax of this property string is described as this Java BNF-style: -+# DefaultDHEParameters: -+# DefinedDHEParameters { , DefinedDHEParameters } -+# -+# DefinedDHEParameters: -+# "{" DHEPrimeModulus , DHEBaseGenerator "}" -+# -+# DHEPrimeModulus: -+# HexadecimalDigits -+# -+# DHEBaseGenerator: -+# HexadecimalDigits -+# -+# HexadecimalDigits: -+# HexadecimalDigit { HexadecimalDigit } -+# -+# HexadecimalDigit: one of -+# 0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f -+# -+# Whitespace characters are ignored. -+# -+# The "DefinedDHEParameters" defines the custom group parameters, prime -+# modulus p and base generator g, for a particular size of prime modulus p. -+# The "DHEPrimeModulus" defines the hexadecimal prime modulus p, and the -+# "DHEBaseGenerator" defines the hexadecimal base generator g of a group -+# parameter. It is recommended to use safe primes for the custom group -+# parameters. -+# -+# If this property is not defined or the value is empty, the underlying JSSE -+# provider's default group parameter is used for each connection. -+# -+# If the property value does not follow the grammar, or a particular group -+# parameter is not valid, the connection will fall back and use the -+# underlying JSSE provider's default group parameter. -+# -+# Note: This property is currently used by OpenJDK's JSSE implementation. It -+# is not guaranteed to be examined and used by other implementations. -+# -+# Example: -+# jdk.tls.server.defaultDHEParameters= -+# { \ -+# FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 \ -+# 29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD \ -+# EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245 \ -+# E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED \ -+# EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE65381 \ -+# FFFFFFFF FFFFFFFF, 2} -+ -+# Cryptographic Jurisdiction Policy defaults -+# -+# Import and export control rules on cryptographic software vary from -+# country to country. By default, the JDK provides two different sets of -+# cryptographic policy files: -+# -+# unlimited: These policy files contain no restrictions on cryptographic -+# strengths or algorithms. -+# -+# limited: These policy files contain more restricted cryptographic -+# strengths, and are still available if your country or -+# usage requires the traditional restrictive policy. -+# -+# The JDK JCE framework uses the unlimited policy files by default. -+# However the user may explicitly choose a set either by defining the -+# "crypto.policy" Security property or by installing valid JCE policy -+# jar files into the traditional JDK installation location. To better -+# support older JDK Update releases, the "crypto.policy" property is not -+# defined by default. See below for more information. -+# -+# The following logic determines which policy files are used: -+# -+# <java-home> refers to the directory where the JRE was -+# installed and may be determined using the "java.home" -+# System property. -+# -+# 1. If the Security property "crypto.policy" has been defined, -+# then the following mechanism is used: -+# -+# The policy files are stored as jar files in subdirectories of -+# <java-home>/lib/security/policy. Each directory contains a complete -+# set of policy files. -+# -+# The "crypto.policy" Security property controls the directory -+# selection, and thus the effective cryptographic policy. -+# -+# The default set of directories is: -+# -+# limited | unlimited -+# -+# 2. If the "crypto.policy" property is not set and the traditional -+# US_export_policy.jar and local_policy.jar files -+# (e.g. limited/unlimited) are found in the legacy -+# <java-home>/lib/security directory, then the rules embedded within -+# those jar files will be used. This helps preserve compatibility -+# for users upgrading from an older installation. -+# -+# 3. If the jar files are not present in the legacy location -+# and the "crypto.policy" Security property is not defined, -+# then the JDK will use the unlimited settings (equivalent to -+# crypto.policy=unlimited) -+# -+# Please see the JCA documentation for additional information on these -+# files and formats. -+# -+# YOU ARE ADVISED TO CONSULT YOUR EXPORT/IMPORT CONTROL COUNSEL OR ATTORNEY -+# TO DETERMINE THE EXACT REQUIREMENTS. -+# -+# Please note that the JCE for Java SE, including the JCE framework, -+# cryptographic policy files, and standard JCE providers provided with -+# the Java SE, have been reviewed and approved for export as mass market -+# encryption item by the US Bureau of Industry and Security. -+# -+# Note: This property is currently used by the JDK Reference implementation. -+# It is not guaranteed to be examined and used by other implementations. -+# -+#crypto.policy=unlimited -+ -+# -+# The policy for the XML Signature secure validation mode. The mode is -+# enabled by setting the property "org.jcp.xml.dsig.secureValidation" to -+# true with the javax.xml.crypto.XMLCryptoContext.setProperty() method, -+# or by running the code with a SecurityManager. -+# -+# Policy: -+# Constraint {"," Constraint } -+# Constraint: -+# AlgConstraint | MaxTransformsConstraint | MaxReferencesConstraint | -+# ReferenceUriSchemeConstraint | KeySizeConstraint | OtherConstraint -+# AlgConstraint -+# "disallowAlg" Uri -+# MaxTransformsConstraint: -+# "maxTransforms" Integer -+# MaxReferencesConstraint: -+# "maxReferences" Integer -+# ReferenceUriSchemeConstraint: -+# "disallowReferenceUriSchemes" String { String } -+# KeySizeConstraint: -+# "minKeySize" KeyAlg Integer -+# OtherConstraint: -+# "noDuplicateIds" | "noRetrievalMethodLoops" -+# -+# For AlgConstraint, Uri is the algorithm URI String that is not allowed. -+# See the XML Signature Recommendation for more information on algorithm -+# URI Identifiers. For KeySizeConstraint, KeyAlg is the standard algorithm -+# name of the key type (ex: "RSA"). If the MaxTransformsConstraint, -+# MaxReferencesConstraint or KeySizeConstraint (for the same key type) is -+# specified more than once, only the last entry is enforced. -+# -+# Note: This property is currently used by the JDK Reference implementation. It -+# is not guaranteed to be examined and used by other implementations. -+# -+jdk.xml.dsig.secureValidationPolicy=\ -+ disallowAlg http://www.w3.org/TR/1999/REC-xslt-19991116,\ -+ disallowAlg http://www.w3.org/2001/04/xmldsig-more#rsa-md5,\ -+ disallowAlg http://www.w3.org/2001/04/xmldsig-more#hmac-md5,\ -+ disallowAlg http://www.w3.org/2001/04/xmldsig-more#md5,\ -+ maxTransforms 5,\ -+ maxReferences 30,\ -+ disallowReferenceUriSchemes file http https,\ -+ minKeySize RSA 1024,\ -+ minKeySize DSA 1024,\ -+ minKeySize EC 224,\ -+ noDuplicateIds,\ -+ noRetrievalMethodLoops -+ -+# -+# Serialization process-wide filter -+# -+# A filter, if configured, is used by java.io.ObjectInputStream during -+# deserialization to check the contents of the stream. -+# A filter is configured as a sequence of patterns, each pattern is either -+# matched against the name of a class in the stream or defines a limit. -+# Patterns are separated by ";" (semicolon). -+# Whitespace is significant and is considered part of the pattern. -+# -+# If the system property jdk.serialFilter is also specified, it supersedes -+# the security property value defined here. -+# -+# If a pattern includes a "=", it sets a limit. -+# If a limit appears more than once the last value is used. -+# Limits are checked before classes regardless of the order in the sequence of patterns. -+# If any of the limits are exceeded, the filter status is REJECTED. -+# -+# maxdepth=value - the maximum depth of a graph -+# maxrefs=value - the maximum number of internal references -+# maxbytes=value - the maximum number of bytes in the input stream -+# maxarray=value - the maximum array length allowed -+# -+# Other patterns, from left to right, match the class or package name as -+# returned from Class.getName. -+# If the class is an array type, the class or package to be matched is the element type. -+# Arrays of any number of dimensions are treated the same as the element type. -+# For example, a pattern of "!example.Foo", rejects creation of any instance or -+# array of example.Foo. -+# -+# If the pattern starts with "!", the status is REJECTED if the remaining pattern -+# is matched; otherwise the status is ALLOWED if the pattern matches. -+# If the pattern ends with ".**" it matches any class in the package and all subpackages. -+# If the pattern ends with ".*" it matches any class in the package. -+# If the pattern ends with "*", it matches any class with the pattern as a prefix. -+# If the pattern is equal to the class name, it matches. -+# Otherwise, the status is UNDECIDED. -+# -+# Primitive types are not configurable with this filter. -+# -+#jdk.serialFilter=pattern;pattern -+ -+# -+# RMI Registry Serial Filter -+# -+# The filter pattern uses the same format as jdk.serialFilter. -+# This filter can override the builtin filter if additional types need to be -+# allowed or rejected from the RMI Registry or to decrease limits but not -+# to increase limits. -+# If the limits (maxdepth, maxrefs, or maxbytes) are exceeded, the object is rejected. -+# -+# The maxdepth of any array passed to the RMI Registry is set to -+# 10000. The maximum depth of the graph is set to 20. -+# These limits can be reduced via the maxarray, maxdepth limits. -+# -+#sun.rmi.registry.registryFilter=pattern;pattern -+ -+# -+# Array construction of any component type, including subarrays and arrays of -+# primitives, are allowed unless the length is greater than the maxarray limit. -+# The filter is applied to each array element. -+# -+# The built-in filter allows subclasses of allowed classes and -+# can approximately be represented as the pattern: -+# -+#sun.rmi.registry.registryFilter=\ -+# maxarray=1000000;\ -+# maxdepth=20;\ -+# java.lang.String;\ -+# java.lang.Number;\ -+# java.lang.reflect.Proxy;\ -+# java.rmi.Remote;\ -+# sun.rmi.server.UnicastRef;\ -+# sun.rmi.server.RMIClientSocketFactory;\ -+# sun.rmi.server.RMIServerSocketFactory;\ -+# java.rmi.activation.ActivationID;\ -+# java.rmi.server.UID -+# -+# RMI Distributed Garbage Collector (DGC) Serial Filter -+# -+# The filter pattern uses the same format as jdk.serialFilter. -+# This filter can override the builtin filter if additional types need to be -+# allowed or rejected from the RMI DGC. -+# -+# The builtin DGC filter can approximately be represented as the filter pattern: -+# -+#sun.rmi.transport.dgcFilter=\ -+# java.rmi.server.ObjID;\ -+# java.rmi.server.UID;\ -+# java.rmi.dgc.VMID;\ -+# java.rmi.dgc.Lease;\ -+# maxdepth=5;maxarray=10000 -+ -+# CORBA ORBIorTypeCheckRegistryFilter -+# Type check enhancement for ORB::string_to_object processing -+# -+# An IOR type check filter, if configured, is used by an ORB during -+# an ORB::string_to_object invocation to check the veracity of the type encoded -+# in the ior string. -+# -+# The filter pattern consists of a semi-colon separated list of class names. -+# The configured list contains the binary class names of the IDL interface types -+# corresponding to the IDL stub class to be instantiated. -+# As such, a filter specifies a list of IDL stub classes that will be -+# allowed by an ORB when an ORB::string_to_object is invoked. -+# It is used to specify a white list configuration of acceptable -+# IDL stub types which may be contained in a stringified IOR -+# parameter passed as input to an ORB::string_to_object method. -+# -+# Note: This property is currently used by the JDK Reference implementation. -+# It is not guaranteed to be examined and used by other implementations. -+# -+#com.sun.CORBA.ORBIorTypeCheckRegistryFilter=binary_class_name;binary_class_name -+ -+# -+# JCEKS Encrypted Key Serial Filter -+# -+# This filter, if configured, is used by the JCEKS KeyStore during the -+# deserialization of the encrypted Key object stored inside a key entry. -+# If not configured or the filter result is UNDECIDED (i.e. none of the patterns -+# matches), the filter configured by jdk.serialFilter will be consulted. -+# -+# If the system property jceks.key.serialFilter is also specified, it supersedes -+# the security property value defined here. -+# -+# The filter pattern uses the same format as jdk.serialFilter. The default -+# pattern allows java.lang.Enum, java.security.KeyRep, java.security.KeyRep$Type, -+# and javax.crypto.spec.SecretKeySpec and rejects all the others. -+jceks.key.serialFilter = java.lang.Enum;java.security.KeyRep;\ -+ java.security.KeyRep$Type;javax.crypto.spec.SecretKeySpec;!* ---- ./jdk/src/share/native/com/sun/java/util/jar/pack/jni.cpp Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/share/native/com/sun/java/util/jar/pack/jni.cpp Sun Feb 10 09:27:00 2019 -0800 -@@ -292,7 +292,7 @@ - - if (uPtr->aborting()) { - THROW_IOE(uPtr->get_abort_message()); -- return false; -+ return null; - } - - // We have fetched all the files. -@@ -310,7 +310,7 @@ - JNIEXPORT jlong JNICALL - Java_com_sun_java_util_jar_pack_NativeUnpack_finish(JNIEnv *env, jobject pObj) { - unpacker* uPtr = get_unpacker(env, pObj, false); -- CHECK_EXCEPTION_RETURN_VALUE(uPtr, NULL); -+ CHECK_EXCEPTION_RETURN_VALUE(uPtr, 0L); - size_t consumed = uPtr->input_consumed(); - free_unpacker(env, pObj, uPtr); - return consumed; ---- ./jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp Sun Feb 10 09:27:00 2019 -0800 -@@ -62,7 +62,7 @@ - - #endif // End of ZLIB - --#ifdef _BIG_ENDIAN -+#ifdef VM_BIG_ENDIAN - #define SWAP_BYTES(a) \ - ((((a) << 8) & 0xff00) | 0x00ff) & (((a) >> 8) | 0xff00) - #else ---- ./jdk/src/share/native/com/sun/media/sound/DirectAudioDevice.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/share/native/com/sun/media/sound/DirectAudioDevice.c Sun Feb 10 09:27:00 2019 -0800 -@@ -121,7 +121,7 @@ - } - - /* conversion from/to 16 bit signed little endian to native endian samples */ --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - #define MAP_LE_SHORT2SAMPLE(sh) ((MAP_Sample) (sh)) - #define MAP_SAMPLE2LE_SHORT(sample) (sample) - #define MAP_SAMPLE2LE_SHORT_CLIP(sample) MAP_ClipAndConvertToShort(sample) -@@ -132,7 +132,7 @@ - #endif - - /* conversion from/to 16 bit signed big endian to native endian samples */ --#ifndef _LITTLE_ENDIAN -+#ifndef VM_LITTLE_ENDIAN - #define MAP_BE_SHORT2SAMPLE(sh) ((MAP_Sample) (sh)) - #define MAP_SAMPLE2BE_SHORT(sample) (sample) - #define MAP_SAMPLE2BE_SHORT_CLIP(sample) MAP_ClipAndConvertToShort(sample) -@@ -151,7 +151,7 @@ - #define MAP_SAMPLE2INT8_CLIP(sample) MAP_ClipAndConvertToByte(sample) - - /* macros for endian conversion */ --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - #define MAP_NATIVE2LE16(a) (a) - #define MAP_NATIVE2BE16(a) MAP_SWAP16_impl(a) - #define MAP_NATIVE2LE32(a) (a) ---- ./jdk/src/share/native/com/sun/media/sound/Utilities.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/share/native/com/sun/media/sound/Utilities.c Sun Feb 10 09:27:00 2019 -0800 -@@ -28,7 +28,7 @@ - - - int UTIL_IsBigEndianPlatform() { --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - return 0; - #else - return 1; ---- ./jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h Sun Feb 10 09:27:00 2019 -0800 -@@ -40,7 +40,7 @@ - #endif - #endif - --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - #define __HI(x) *(1+(int*)&x) - #define __LO(x) *(int*)&x - #define __HIp(x) *(1+(int*)x) ---- ./jdk/src/share/native/sun/awt/image/awt_parseImage.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/share/native/sun/awt/image/awt_parseImage.c Sun Feb 10 09:27:00 2019 -0800 -@@ -624,7 +624,7 @@ - switch(type) { - case java_awt_image_BufferedImage_TYPE_INT_ARGB: - case java_awt_image_BufferedImage_TYPE_INT_ARGB_PRE: --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - colorOrder[0] = 2; - colorOrder[1] = 1; - colorOrder[2] = 0; -@@ -637,7 +637,7 @@ - #endif - break; - case java_awt_image_BufferedImage_TYPE_INT_BGR: --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - colorOrder[0] = 0; - colorOrder[1] = 1; - colorOrder[2] = 2; -@@ -648,7 +648,7 @@ - #endif - break; - case java_awt_image_BufferedImage_TYPE_INT_RGB: --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - colorOrder[0] = 2; - colorOrder[1] = 1; - colorOrder[2] = 0; ---- ./jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c Sun Feb 10 09:27:00 2019 -0800 -@@ -1198,7 +1198,7 @@ - - #define NLUT 8 - --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - #define INDEXES { 3, 2, 1, 0, 7, 6, 5, 4 } - #else - #define INDEXES { 0, 1, 2, 3, 4, 5, 6, 7 } ---- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv2x2_f.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv2x2_f.c Sun Feb 10 09:27:00 2019 -0800 -@@ -86,7 +86,7 @@ - #endif /* MLIB_USE_FTOI_CLAMPING */ - - /***************************************************************/ --#if defined(_LITTLE_ENDIAN) && !defined(_NO_LONGLONG) -+#if defined(VM_LITTLE_ENDIAN) && !defined(_NO_LONGLONG) - - /* NB: Explicit cast to DTYPE is necessary to avoid warning from Microsoft VC compiler. - And we need to explicitly define cast behavior if source exceeds destination range. -@@ -103,7 +103,7 @@ - dp[0 ] = (DTYPE) ((res0) & DTYPE_MASK); \ - dp[chan1] = (DTYPE) ((res1) & DTYPE_MASK) - --#endif /* defined(_LITTLE_ENDIAN) && !defined(_NO_LONGLONG) */ -+#endif /* defined(VM_LITTLE_ENDIAN) && !defined(_NO_LONGLONG) */ - - /***************************************************************/ - #ifdef _NO_LONGLONG -@@ -114,17 +114,17 @@ - - #else /* _NO_LONGLONG */ - --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - - #define LOAD_BUFF(buff) \ - *(mlib_s64*)(buff + i) = (((mlib_s64)sp[chan1]) << 32) | ((mlib_s64)sp[0] & 0xffffffff) - --#else /* _LITTLE_ENDIAN */ -+#else /* VM_LITTLE_ENDIAN */ - - #define LOAD_BUFF(buff) \ - *(mlib_s64*)(buff + i) = (((mlib_s64)sp[0]) << 32) | ((mlib_s64)sp[chan1] & 0xffffffff) - --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - - #endif /* _NO_LONGLONG */ - ---- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16ext.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16ext.c Sun Feb 10 09:27:00 2019 -0800 -@@ -126,7 +126,7 @@ - #define D2I(x) CLAMP_S32((x) SAT_OFF) - - /***************************************************************/ --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - - #define STORE2(res0, res1) \ - dp[0 ] = res1; \ -@@ -138,7 +138,7 @@ - dp[0 ] = res0; \ - dp[chan1] = res1 - --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - - /***************************************************************/ - #ifdef _NO_LONGLONG -@@ -149,17 +149,17 @@ - - #else /* _NO_LONGLONG */ - --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - - #define LOAD_BUFF(buff) \ - *(mlib_s64*)(buff + i) = (((mlib_s64)sp[chan1]) << 32) | S64TOS32((mlib_s64)sp[0]) - --#else /* _LITTLE_ENDIAN */ -+#else /* VM_LITTLE_ENDIAN */ - - #define LOAD_BUFF(buff) \ - *(mlib_s64*)(buff + i) = (((mlib_s64)sp[0]) << 32) | S64TOS32((mlib_s64)sp[chan1]) - --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - #endif /* _NO_LONGLONG */ - - /***************************************************************/ ---- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16nw.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16nw.c Sun Feb 10 09:27:00 2019 -0800 -@@ -94,7 +94,7 @@ - #define D2I(x) CLAMP_S32((x) SAT_OFF) - - /***************************************************************/ --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - - #define STORE2(res0, res1) \ - dp[0 ] = res1; \ -@@ -106,7 +106,7 @@ - dp[0 ] = res0; \ - dp[chan1] = res1 - --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - - /***************************************************************/ - #ifdef _NO_LONGLONG -@@ -117,17 +117,17 @@ - - #else /* _NO_LONGLONG */ - --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - - #define LOAD_BUFF(buff) \ - *(mlib_s64*)(buff + i) = (((mlib_s64)sp[chan1]) << 32) | S64TOS32((mlib_s64)sp[0]) - --#else /* _LITTLE_ENDIAN */ -+#else /* VM_LITTLE_ENDIAN */ - - #define LOAD_BUFF(buff) \ - *(mlib_s64*)(buff + i) = (((mlib_s64)sp[0]) << 32) | S64TOS32((mlib_s64)sp[chan1]) - --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - #endif /* _NO_LONGLONG */ - - /***************************************************************/ ---- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8ext.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8ext.c Sun Feb 10 09:27:00 2019 -0800 -@@ -126,7 +126,7 @@ - #define D2I(x) CLAMP_S32((x) SAT_OFF) - - /***************************************************************/ --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - - #define STORE2(res0, res1) \ - dp[0 ] = res1; \ -@@ -138,7 +138,7 @@ - dp[0 ] = res0; \ - dp[chan1] = res1 - --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - - /***************************************************************/ - #ifdef _NO_LONGLONG -@@ -149,17 +149,17 @@ - - #else /* _NO_LONGLONG */ - --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - - #define LOAD_BUFF(buff) \ - *(mlib_s64*)(buff + i) = (((mlib_s64)sp[chan1]) << 32) | S64TOS32((mlib_s64)sp[0]) - --#else /* _LITTLE_ENDIAN */ -+#else /* VM_LITTLE_ENDIAN */ - - #define LOAD_BUFF(buff) \ - *(mlib_s64*)(buff + i) = (((mlib_s64)sp[0]) << 32) | S64TOS32((mlib_s64)sp[chan1]) - --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - #endif /* _NO_LONGLONG */ - - /***************************************************************/ ---- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8nw.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8nw.c Sun Feb 10 09:27:00 2019 -0800 -@@ -95,7 +95,7 @@ - #define D2I(x) CLAMP_S32((x) SAT_OFF) - - /***************************************************************/ --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - - #define STORE2(res0, res1) \ - dp[0 ] = res1; \ -@@ -107,7 +107,7 @@ - dp[0 ] = res0; \ - dp[chan1] = res1 - --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - - /***************************************************************/ - #ifdef _NO_LONGLONG -@@ -118,17 +118,17 @@ - - #else /* _NO_LONGLONG */ - --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - - #define LOAD_BUFF(buff) \ - *(mlib_s64*)(buff + i) = (((mlib_s64)sp[chan1]) << 32) | S64TOS32((mlib_s64)sp[0]) - --#else /* _LITTLE_ENDIAN */ -+#else /* VM_LITTLE_ENDIAN */ - - #define LOAD_BUFF(buff) \ - *(mlib_s64*)(buff + i) = (((mlib_s64)sp[0]) << 32) | S64TOS32((mlib_s64)sp[chan1]) - --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - #endif /* _NO_LONGLONG */ - - /***************************************************************/ ---- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16ext.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16ext.c Sun Feb 10 09:27:00 2019 -0800 -@@ -126,7 +126,7 @@ - #define D2I(x) CLAMP_S32((x) SAT_OFF) - - /***************************************************************/ --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - - #define STORE2(res0, res1) \ - dp[0 ] = res1; \ -@@ -138,7 +138,7 @@ - dp[0 ] = res0; \ - dp[chan1] = res1 - --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - - /***************************************************************/ - #ifdef _NO_LONGLONG -@@ -149,17 +149,17 @@ - - #else /* _NO_LONGLONG */ - --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - - #define LOAD_BUFF(buff) \ - *(mlib_s64*)(buff + i) = (((mlib_s64)sp[chan1]) << 32) | S64TOS32((mlib_s64)sp[0]) - --#else /* _LITTLE_ENDIAN */ -+#else /* VM_LITTLE_ENDIAN */ - - #define LOAD_BUFF(buff) \ - *(mlib_s64*)(buff + i) = (((mlib_s64)sp[0]) << 32) | S64TOS32((mlib_s64)sp[chan1]) - --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - #endif /* _NO_LONGLONG */ - - /***************************************************************/ ---- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16nw.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16nw.c Sun Feb 10 09:27:00 2019 -0800 -@@ -94,7 +94,7 @@ - #define D2I(x) CLAMP_S32((x) SAT_OFF) - - /***************************************************************/ --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - - #define STORE2(res0, res1) \ - dp[0 ] = res1; \ -@@ -106,7 +106,7 @@ - dp[0 ] = res0; \ - dp[chan1] = res1 - --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - - /***************************************************************/ - #ifdef _NO_LONGLONG -@@ -117,17 +117,17 @@ - - #else /* _NO_LONGLONG */ - --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - - #define LOAD_BUFF(buff) \ - *(mlib_s64*)(buff + i) = (((mlib_s64)sp[chan1]) << 32) | S64TOS32((mlib_s64)sp[0]) - --#else /* _LITTLE_ENDIAN */ -+#else /* VM_LITTLE_ENDIAN */ - - #define LOAD_BUFF(buff) \ - *(mlib_s64*)(buff + i) = (((mlib_s64)sp[0]) << 32) | S64TOS32((mlib_s64)sp[chan1]) - --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - #endif /* _NO_LONGLONG */ - - /***************************************************************/ ---- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageCopy_Bit.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageCopy_Bit.c Sun Feb 10 09:27:00 2019 -0800 -@@ -95,7 +95,7 @@ - dst = dp[0]; - if (ld_offset + size < 32) { - dmask = (mask0 << (32 - size)) >> ld_offset; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - src0 = (src0 << 24) | ((src0 & 0xFF00) << 8) | ((src0 >> 8) & 0xFF00) | (src0 >> 24); - src = (src0 >> (ld_offset - ls_offset)); - dst = (dst << 24) | ((dst & 0xFF00) << 8) | ((dst >> 8) & 0xFF00) | (dst >> 24); -@@ -104,12 +104,12 @@ - #else - src = (src0 >> (ld_offset - ls_offset)); - dp[0] = (dst & (~dmask)) | (src & dmask); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - return; - } - - dmask = mask0 >> ld_offset; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - src0 = (src0 << 24) | ((src0 & 0xFF00) << 8) | ((src0 >> 8) & 0xFF00) | (src0 >> 24); - src = (src0 >> (ld_offset - ls_offset)); - dst = (dst << 24) | ((dst & 0xFF00) << 8) | ((dst >> 8) & 0xFF00) | (dst >> 24); -@@ -118,7 +118,7 @@ - #else - src = (src0 >> (ld_offset - ls_offset)); - dp[0] = (dst & ~dmask) | (src & dmask); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - j = 32 - ld_offset; - dp++; - ls_offset += j; -@@ -131,7 +131,7 @@ - - if (ld_offset + size < 32) { - dmask = (mask0 << (32 - size)) >> ld_offset; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - src0 = (src0 << 24) | ((src0 & 0xFF00) << 8) | ((src0 >> 8) & 0xFF00) | (src0 >> 24); - src1 = (src1 << 24) | ((src1 & 0xFF00) << 8) | ((src1 >> 8) & 0xFF00) | (src1 >> 24); - src = (src0 << shift) | (src1 >> (32 - shift)); -@@ -141,12 +141,12 @@ - #else - src = (src0 << shift) | (src1 >> (32 - shift)); - dp[0] = (dst & ~dmask) | (src & dmask); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - return; - } - - dmask = mask0 >> ld_offset; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - src0 = (src0 << 24) | ((src0 & 0xFF00) << 8) | ((src0 >> 8) & 0xFF00) | (src0 >> 24); - src1 = (src1 << 24) | ((src1 & 0xFF00) << 8) | ((src1 >> 8) & 0xFF00) | (src1 >> 24); - src = (src0 << shift) | (src1 >> (32 - shift)); -@@ -156,7 +156,7 @@ - #else - src = (src0 << shift) | (src1 >> (32 - shift)); - dp[0] = (dst & ~dmask) | (src & dmask); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - j = 32 - ld_offset; - dp++; - sp++; -@@ -164,19 +164,19 @@ - } - - if (j < size) src1 = sp[0]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - src1 = (src1 << 24) | ((src1 & 0xFF00) << 8) | ((src1 >> 8) & 0xFF00) | (src1 >> 24); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - for (; j <= size - 32; j += 32) { - src0 = src1; - src1 = sp[1]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - src1 = (src1 << 24) | ((src1 & 0xFF00) << 8) | ((src1 >> 8) & 0xFF00) | (src1 >> 24); - src = (src0 << ls_offset) | (src1 >> (32 - ls_offset)); - dp[0] = (src << 24) | ((src & 0xFF00) << 8) | ((src >> 8) & 0xFF00) | (src >> 24); - #else - dp[0] = (src0 << ls_offset) | (src1 >> (32 - ls_offset)); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - sp++; - dp++; - } -@@ -187,7 +187,7 @@ - if (ls_offset + j > 32) src1 = sp[1]; - dst = dp[0]; - dmask = mask0 << (32 - j); --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - src1 = (src1 << 24) | ((src1 & 0xFF00) << 8) | ((src1 >> 8) & 0xFF00) | (src1 >> 24); - src = (src0 << ls_offset) | (src1 >> (32 - ls_offset)); - dst = (dst << 24) | ((dst & 0xFF00) << 8) | ((dst >> 8) & 0xFF00) | (dst >> 24); -@@ -196,7 +196,7 @@ - #else - src = (src0 << ls_offset) | (src1 >> (32 - ls_offset)); - dp[0] = (dst & ~dmask) | (src & dmask); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - } - - #else /* _LONGLONG */ -@@ -315,7 +315,7 @@ - dst = dp[0]; - if (ld_offset >= size) { - dmask = (lmask0 << (32 - size)) >> (ld_offset - size); --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - src0 = (src0 << 24) | ((src0 & 0xFF00) << 8) | ((src0 >> 8) & 0xFF00) | (src0 >> 24); - src = (src0 << (ls_offset - ld_offset)); - dst = (dst << 24) | ((dst & 0xFF00) << 8) | ((dst >> 8) & 0xFF00) | (dst >> 24); -@@ -324,12 +324,12 @@ - #else - src = (src0 << (ls_offset - ld_offset)); - dp[0] = (dst & (~dmask)) | (src & dmask); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - return; - } - - dmask = lmask0 << (32 - ld_offset); --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - src0 = (src0 << 24) | ((src0 & 0xFF00) << 8) | ((src0 >> 8) & 0xFF00) | (src0 >> 24); - src = (src0 << (ls_offset - ld_offset)); - dst = (dst << 24) | ((dst & 0xFF00) << 8) | ((dst >> 8) & 0xFF00) | (dst >> 24); -@@ -338,7 +338,7 @@ - #else - src = (src0 << (ls_offset - ld_offset)); - dp[0] = (dst & ~dmask) | (src & dmask); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - j = ld_offset; - dp--; - ls_offset -= j; -@@ -351,7 +351,7 @@ - - if (ld_offset >= size) { - dmask = (lmask0 << (32 - size)) >> (ld_offset - size); --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - src0 = (src0 << 24) | ((src0 & 0xFF00) << 8) | ((src0 >> 8) & 0xFF00) | (src0 >> 24); - src1 = (src1 << 24) | ((src1 & 0xFF00) << 8) | ((src1 >> 8) & 0xFF00) | (src1 >> 24); - src = (src0 >> shift) | (src1 << (32 - shift)); -@@ -361,12 +361,12 @@ - #else - src = (src0 >> shift) | (src1 << (32 - shift)); - dp[0] = (dst & ~dmask) | (src & dmask); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - return; - } - - dmask = lmask0 << (32 - ld_offset); --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - src0 = (src0 << 24) | ((src0 & 0xFF00) << 8) | ((src0 >> 8) & 0xFF00) | (src0 >> 24); - src1 = (src1 << 24) | ((src1 & 0xFF00) << 8) | ((src1 >> 8) & 0xFF00) | (src1 >> 24); - src = (src0 >> shift) | (src1 << (32 - shift)); -@@ -376,7 +376,7 @@ - #else - src = (src0 >> shift) | (src1 << (32 - shift)); - dp[0] = (dst & ~dmask) | (src & dmask); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - j = ld_offset; - dp--; - sp--; -@@ -384,22 +384,22 @@ - } - - if (j < size) src1 = sp[0]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - src1 = (src1 << 24) | ((src1 & 0xFF00) << 8) | ((src1 >> 8) & 0xFF00) | (src1 >> 24); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - #ifdef __SUNPRO_C - #pragma pipeloop(0) - #endif /* __SUNPRO_C */ - for (; j <= size - 32; j += 32) { - src0 = src1; - src1 = sp[-1]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - src1 = (src1 << 24) | ((src1 & 0xFF00) << 8) | ((src1 >> 8) & 0xFF00) | (src1 >> 24); - src = (src0 >> (32 - ls_offset)) | (src1 << ls_offset); - dp[0] = (src << 24) | ((src & 0xFF00) << 8) | ((src >> 8) & 0xFF00) | (src >> 24); - #else - dp[0] = (src0 >> (32 - ls_offset)) | (src1 << ls_offset); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - sp--; - dp--; - } -@@ -410,7 +410,7 @@ - if (ls_offset < j) src1 = sp[-1]; - dst = dp[0]; - dmask = lmask0 >> (32 - j); --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - src1 = (src1 << 24) | ((src1 & 0xFF00) << 8) | ((src1 >> 8) & 0xFF00) | (src1 >> 24); - src = (src0 >> (32 - ls_offset)) | (src1 << ls_offset); - dst = (dst << 24) | ((dst & 0xFF00) << 8) | ((dst >> 8) & 0xFF00) | (dst >> 24); -@@ -419,7 +419,7 @@ - #else - src = (src0 >> (32 - ls_offset)) | (src1 << ls_offset); - dp[0] = (dst & ~dmask) | (src & dmask); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - } - - #else /* _LONGLONG */ ---- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_64.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_64.c Sun Feb 10 09:27:00 2019 -0800 -@@ -168,7 +168,7 @@ - } - - /***************************************************************/ --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - - #define READ_U8_D64(table0, table1, table2, table3) \ - t0 = *(mlib_d64*)((mlib_u8*)table0 + ((s0 << 3) & 0x7F8)); \ -@@ -184,7 +184,7 @@ - t2 = *(mlib_d64*)((mlib_u8*)table2 + ((s0 >> 5) & 0x7F8)); \ - t3 = *(mlib_d64*)((mlib_u8*)table3 + ((s0 << 3) & 0x7F8)) - --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - - /***************************************************************/ - void mlib_ImageLookUp_U8_D64(const mlib_u8 *src, -@@ -613,7 +613,7 @@ - #pragma pipeloop(0) - #endif /* __SUNPRO_C */ - for (i = 0; i < size - 7; i += 4, dp += 8, sa++) { --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 << 3) & 0x7F8)); - t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 << 3) & 0x7F8)); - t2 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 5) & 0x7F8)); -@@ -623,12 +623,12 @@ - t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 21) & 0x7F8)); - t2 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 13) & 0x7F8)); - t3 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 13) & 0x7F8)); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - dp[0] = t0; - dp[1] = t1; - dp[2] = t2; - dp[3] = t3; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 13) & 0x7F8)); - t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 13) & 0x7F8)); - t2 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 21) & 0x7F8)); -@@ -638,7 +638,7 @@ - t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 5) & 0x7F8)); - t2 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 << 3) & 0x7F8)); - t3 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 << 3) & 0x7F8)); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - s0 = sa[0]; - dp[4] = t0; - dp[5] = t1; -@@ -646,7 +646,7 @@ - dp[7] = t3; - } - --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 << 3) & 0x7F8)); - t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 << 3) & 0x7F8)); - t2 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 5) & 0x7F8)); -@@ -656,12 +656,12 @@ - t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 21) & 0x7F8)); - t2 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 13) & 0x7F8)); - t3 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 13) & 0x7F8)); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - dp[0] = t0; - dp[1] = t1; - dp[2] = t2; - dp[3] = t3; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 13) & 0x7F8)); - t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 13) & 0x7F8)); - t2 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 21) & 0x7F8)); -@@ -671,7 +671,7 @@ - t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 5) & 0x7F8)); - t2 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 << 3) & 0x7F8)); - t3 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 << 3) & 0x7F8)); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - dp[4] = t0; - dp[5] = t1; - dp[6] = t2; -@@ -719,7 +719,7 @@ - #pragma pipeloop(0) - #endif /* __SUNPRO_C */ - for (i = 0; i < size - 7; i += 4, dp += 12, sa++) { --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 << 3) & 0x7F8)); - t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 << 3) & 0x7F8)); - t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 << 3) & 0x7F8)); -@@ -733,14 +733,14 @@ - t3 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 13) & 0x7F8)); - t4 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 13) & 0x7F8)); - t5 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 13) & 0x7F8)); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - dp[0] = t0; - dp[1] = t1; - dp[2] = t2; - dp[3] = t3; - dp[4] = t4; - dp[5] = t5; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 13) & 0x7F8)); - t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 13) & 0x7F8)); - t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 13) & 0x7F8)); -@@ -754,7 +754,7 @@ - t3 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 << 3) & 0x7F8)); - t4 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 << 3) & 0x7F8)); - t5 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 << 3) & 0x7F8)); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - s0 = sa[0]; - dp[6] = t0; - dp[7] = t1; -@@ -764,7 +764,7 @@ - dp[11] = t5; - } - --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 << 3) & 0x7F8)); - t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 << 3) & 0x7F8)); - t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 << 3) & 0x7F8)); -@@ -778,14 +778,14 @@ - t3 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 13) & 0x7F8)); - t4 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 13) & 0x7F8)); - t5 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 13) & 0x7F8)); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - dp[0] = t0; - dp[1] = t1; - dp[2] = t2; - dp[3] = t3; - dp[4] = t4; - dp[5] = t5; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 13) & 0x7F8)); - t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 13) & 0x7F8)); - t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 13) & 0x7F8)); -@@ -799,7 +799,7 @@ - t3 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 << 3) & 0x7F8)); - t4 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 << 3) & 0x7F8)); - t5 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 << 3) & 0x7F8)); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - dp[6] = t0; - dp[7] = t1; - dp[8] = t2; -@@ -852,7 +852,7 @@ - #pragma pipeloop(0) - #endif /* __SUNPRO_C */ - for (i = 0; i < size - 7; i += 4, dp += 16, sa++) { --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 << 3) & 0x7F8)); - t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 << 3) & 0x7F8)); - t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 << 3) & 0x7F8)); -@@ -862,12 +862,12 @@ - t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 21) & 0x7F8)); - t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 21) & 0x7F8)); - t3 = *(mlib_d64 *) ((mlib_u8 *) tab3 + ((s0 >> 21) & 0x7F8)); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - dp[0] = t0; - dp[1] = t1; - dp[2] = t2; - dp[3] = t3; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 5) & 0x7F8)); - t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 5) & 0x7F8)); - t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 5) & 0x7F8)); -@@ -877,12 +877,12 @@ - t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 13) & 0x7F8)); - t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 13) & 0x7F8)); - t3 = *(mlib_d64 *) ((mlib_u8 *) tab3 + ((s0 >> 13) & 0x7F8)); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - dp[4] = t0; - dp[5] = t1; - dp[6] = t2; - dp[7] = t3; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 13) & 0x7F8)); - t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 13) & 0x7F8)); - t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 13) & 0x7F8)); -@@ -892,12 +892,12 @@ - t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 5) & 0x7F8)); - t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 5) & 0x7F8)); - t3 = *(mlib_d64 *) ((mlib_u8 *) tab3 + ((s0 >> 5) & 0x7F8)); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - dp[8] = t0; - dp[9] = t1; - dp[10] = t2; - dp[11] = t3; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 21) & 0x7F8)); - t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 21) & 0x7F8)); - t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 21) & 0x7F8)); -@@ -907,7 +907,7 @@ - t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 << 3) & 0x7F8)); - t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 << 3) & 0x7F8)); - t3 = *(mlib_d64 *) ((mlib_u8 *) tab3 + ((s0 << 3) & 0x7F8)); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - s0 = sa[0]; - dp[12] = t0; - dp[13] = t1; -@@ -915,7 +915,7 @@ - dp[15] = t3; - } - --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 << 3) & 0x7F8)); - t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 << 3) & 0x7F8)); - t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 << 3) & 0x7F8)); -@@ -925,12 +925,12 @@ - t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 21) & 0x7F8)); - t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 21) & 0x7F8)); - t3 = *(mlib_d64 *) ((mlib_u8 *) tab3 + ((s0 >> 21) & 0x7F8)); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - dp[0] = t0; - dp[1] = t1; - dp[2] = t2; - dp[3] = t3; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 5) & 0x7F8)); - t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 5) & 0x7F8)); - t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 5) & 0x7F8)); -@@ -940,12 +940,12 @@ - t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 13) & 0x7F8)); - t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 13) & 0x7F8)); - t3 = *(mlib_d64 *) ((mlib_u8 *) tab3 + ((s0 >> 13) & 0x7F8)); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - dp[4] = t0; - dp[5] = t1; - dp[6] = t2; - dp[7] = t3; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 13) & 0x7F8)); - t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 13) & 0x7F8)); - t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 13) & 0x7F8)); -@@ -955,12 +955,12 @@ - t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 5) & 0x7F8)); - t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 5) & 0x7F8)); - t3 = *(mlib_d64 *) ((mlib_u8 *) tab3 + ((s0 >> 5) & 0x7F8)); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - dp[8] = t0; - dp[9] = t1; - dp[10] = t2; - dp[11] = t3; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 21) & 0x7F8)); - t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 21) & 0x7F8)); - t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 21) & 0x7F8)); -@@ -970,7 +970,7 @@ - t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 << 3) & 0x7F8)); - t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 << 3) & 0x7F8)); - t3 = *(mlib_d64 *) ((mlib_u8 *) tab3 + ((s0 << 3) & 0x7F8)); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - dp[12] = t0; - dp[13] = t1; - dp[14] = t2; ---- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_Bit.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_Bit.c Sun Feb 10 09:27:00 2019 -0800 -@@ -88,7 +88,7 @@ - } d64_2_f32; - - /***************************************************************/ --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - - static const mlib_u32 mlib_bit_mask[16] = { - 0x00000000u, 0xFF000000u, 0x00FF0000u, 0xFFFF0000u, -@@ -126,7 +126,7 @@ - 0x00000000u, 0x00FFFFFFu, 0xFF000000u, 0xFFFFFFFFu - }; - --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - - /***************************************************************/ - mlib_status mlib_ImageLookUp_Bit_U8_1(const mlib_u8 *src, -@@ -228,13 +228,13 @@ - #endif /* __SUNPRO_C */ - for (; i <= (size - 16); i += 16) { - s0 = *(mlib_u16*)sa; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - *da++ = dd_array[s0 & 0xFF]; - *da++ = dd_array[s0 >> 8]; - #else - *da++ = dd_array[s0 >> 8]; - *da++ = dd_array[s0 & 0xFF]; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - sa += 2; - } - -@@ -258,20 +258,20 @@ - val1 = p_dd[2*val0+1]; - } - --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - emask = (mlib_u32)((mlib_s32)(-1)) >> ((4 - (size - i)) * 8); - #else - emask = (mlib_s32)(-1) << ((4 - (size - i)) * 8); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - ((mlib_u32*)da)[0] = (val1 & emask) | (((mlib_u32*)da)[0] &~ emask); - - #else /* _NO_LONGLONG */ - --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - mlib_u64 emask = (mlib_u64)((mlib_s64)(-1)) >> ((8 - (size - i)) * 8); - #else - mlib_u64 emask = (mlib_s64)(-1) << ((8 - (size - i)) * 8); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - - ((mlib_u64*)da)[0] = (((mlib_u64*)dd_array)[sa[0]] & emask) | (((mlib_u64*)da)[0] &~ emask); - -@@ -323,13 +323,13 @@ - - val0 = table[0][0]; - val1 = table[0][1]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - val0 = val0 | (table[1][0] << 8); - val1 = val1 | (table[1][1] << 8); - #else - val0 = (val0 << 8) | table[1][0]; - val1 = (val1 << 8) | table[1][1]; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - val0 |= (val0 << 16); - val1 |= (val1 << 16); - -@@ -394,11 +394,11 @@ - dd1 = dd2; - } - --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - emask = (mlib_u32)((mlib_s32)(-1)) >> ((4 - (size - i)) * 8); - #else - emask = (mlib_s32)(-1) << ((4 - (size - i)) * 8); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - ((mlib_u32*)da)[0] = (dd1 & emask) | (((mlib_u32*)da)[0] &~ emask); - - #else /* _NO_LONGLONG */ -@@ -412,11 +412,11 @@ - dd = ((mlib_u64*)dd_array)[s0 & 0xf]; - } - --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - emask = (mlib_u64)((mlib_s64)(-1)) >> ((8 - (size - i)) * 8); - #else - emask = (mlib_s64)(-1) << ((8 - (size - i)) * 8); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - ((mlib_u64*)da)[0] = (dd & emask) | (((mlib_u64*)da)[0] &~ emask); - - #endif /* _NO_LONGLONG */ -@@ -462,7 +462,7 @@ - - buffs = buff + size; - --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - l0 = (table[0][0] << 24) | (table[2][0] << 16) | (table[1][0] << 8) | (table[0][0]); - h0 = (table[0][1] << 24) | (table[2][1] << 16) | (table[1][1] << 8) | (table[0][1]); - l1 = (l0 >> 8); l1 |= (l1 << 24); -@@ -476,7 +476,7 @@ - h1 = (h0 << 8); h1 |= (h1 >> 24); - l2 = (l1 << 8); l2 |= (l2 >> 24); - h2 = (h1 << 8); h2 |= (h2 >> 24); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - - /* calculate lookup table */ - #ifdef __SUNPRO_C -@@ -564,11 +564,11 @@ - dd = ((mlib_u32*)(d_array12 + (s0 & 0xF)))[1]; - } - --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - emask = (mlib_u32)((mlib_s32)(-1)) >> ((4 - (size - i)) * 8); - #else - emask = (mlib_s32)(-1) << ((4 - (size - i)) * 8); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - da[0] = (dd & emask) | (da[0] &~ emask); - } - -@@ -611,13 +611,13 @@ - - buffs = buff + size; - --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - l = (table[3][0] << 24) | (table[2][0] << 16) | (table[1][0] << 8) | (table[0][0]); - h = (table[3][1] << 24) | (table[2][1] << 16) | (table[1][1] << 8) | (table[0][1]); - #else - l = (table[0][0] << 24) | (table[1][0] << 16) | (table[2][0] << 8) | (table[3][0]); - h = (table[0][1] << 24) | (table[1][1] << 16) | (table[2][1] << 8) | (table[3][1]); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - - ((mlib_u32*)lh)[0] = l; ((mlib_u32*)lh)[1] = l; - ((mlib_u32*)lh)[2] = l; ((mlib_u32*)lh)[3] = h; ---- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageUtils.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageUtils.c Sun Feb 10 09:27:00 2019 -0800 -@@ -30,7 +30,7 @@ - typedef union { - mlib_d64 db; - struct { --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - mlib_s32 int1, int0; - #else - mlib_s32 int0, int1; ---- ./jdk/src/share/native/sun/awt/medialib/mlib_c_ImageCopy.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/share/native/sun/awt/medialib/mlib_c_ImageCopy.c Sun Feb 10 09:27:00 2019 -0800 -@@ -275,11 +275,11 @@ - for (i = 0; j <= (b_size - 4); j += 4, i++) { - src0 = src1; - src1 = pws[i + 1]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - pwd[i] = (src0 >> lshift) | (src1 << rshift); - #else - pwd[i] = (src0 << lshift) | (src1 >> rshift); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - } - - sa += i << 2; -@@ -381,11 +381,11 @@ - for (; j <= (src_width - 4); j += 4) { - src0 = src1; - src1 = ps[1]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - *((mlib_s32 *) (pdst_row + j)) = (src0 >> shl) | (src1 << shr); - #else - *((mlib_s32 *) (pdst_row + j)) = (src0 << shl) | (src1 >> shr); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - ps++; - } - } -@@ -414,11 +414,11 @@ - for (; j <= (src_width - 8); j += 8) { - src0 = src1; - src1 = ps[1]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - *((mlib_s64 *) (pdst_row + j)) = (src0 >> shl) | (src1 << shr); - #else - *((mlib_s64 *) (pdst_row + j)) = (src0 << shl) | (src1 >> shr); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - ps++; - } - } -@@ -484,11 +484,11 @@ - for (; j <= (src_width - 2); j += 2) { - src0 = src1; - src1 = ps[1]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - *((mlib_s32 *) (pdst_row + j)) = (src0 >> 16) | (src1 << 16); - #else - *((mlib_s32 *) (pdst_row + j)) = (src0 << 16) | (src1 >> 16); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - ps++; - } - } -@@ -516,11 +516,11 @@ - for (; j <= (src_width - 4); j += 4) { - src0 = src1; - src1 = ps[1]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - *((mlib_s64 *) (pdst_row + j)) = (src0 >> shl) | (src1 << shr); - #else - *((mlib_s64 *) (pdst_row + j)) = (src0 << shl) | (src1 >> shr); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - ps++; - } - } -@@ -585,11 +585,11 @@ - for (; j <= (src_width - 2); j += 2) { - src0 = src1; - src1 = ps[1]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - *((mlib_s64 *) (pdst_row + j)) = (src0 >> 32) | (src1 << 32); - #else - *((mlib_s64 *) (pdst_row + j)) = (src0 << 32) | (src1 >> 32); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - ps++; - } - } -@@ -687,11 +687,11 @@ - #endif /* __SUNPRO_C */ - for (; n > SIZE; n -= SIZE) { - s1 = *tmp++; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - *(TYPE *) dp = (s0 >> shl) | (s1 << shr); - #else - *(TYPE *) dp = (s0 << shl) | (s1 >> shr); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - s0 = s1; - dp += SIZE; - sp += SIZE; ---- ./jdk/src/share/native/sun/awt/medialib/mlib_c_ImageLookUp_f.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/share/native/sun/awt/medialib/mlib_c_ImageLookUp_f.c Sun Feb 10 09:27:00 2019 -0800 -@@ -120,7 +120,7 @@ - } \ - } - --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - - /***************************************************************/ - #define READ_U8_U8_ALIGN(table0, table1, table2, table3) \ -@@ -163,7 +163,7 @@ - t2 = *(mlib_u32*)((mlib_u8*)table2 + ((s0 >> 14) & 0x3FC)); \ - t3 = *(mlib_u32*)((mlib_u8*)table3 + ((s0 >> 22) & 0x3FC)) - --#else /* _LITTLE_ENDIAN */ -+#else /* VM_LITTLE_ENDIAN */ - - /***********/ - #define READ_U8_U8_ALIGN(table0, table1, table2, table3) \ -@@ -206,7 +206,7 @@ - t2 = *(mlib_u32*)((mlib_u8*)table2 + ((s0 >> 6) & 0x3FC)); \ - t3 = *(mlib_u32*)((mlib_u8*)table3 + ((s0 << 2) & 0x3FC)) - --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - - /***************************************************************/ - void mlib_c_ImageLookUp_U8_U8(const mlib_u8 *src, -@@ -297,11 +297,11 @@ - da[0] = t; - da++; - dp = (mlib_u8 *) da; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - *dp++ = tab[s2 >> 8]; - #else - *dp++ = tab[s2 & 0xFF]; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - sp = (mlib_u8 *) sa; - i += 5; - for (; i < size; i++, dp++, sp++) -@@ -403,11 +403,11 @@ - da[0] = t; - da++; - dp = (mlib_u8 *) da; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - *dp++ = tab0[s2 >> 8]; - #else - *dp++ = tab0[s2 & 0xFF]; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - sp = (mlib_u8 *) sa; - i += 5; - -@@ -544,11 +544,11 @@ - da[0] = t; - da++; - dp = (mlib_u8 *) da; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - *dp++ = tab1[s2 >> 8]; - #else - *dp++ = tab1[s2 & 0xFF]; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - sp = (mlib_u8 *) sa; - i += 5; - -@@ -694,11 +694,11 @@ - da[0] = t; - da++; - dp = (mlib_u8 *) da; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - *dp++ = tab0[s2 >> 8]; - #else - *dp++ = tab0[s2 & 0xFF]; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - sp = (mlib_u8 *) sa; - i += 5; - -@@ -1852,21 +1852,21 @@ - s0 = tab0[0]; - s1 = tab1[0]; - for (i = 1; i < 256; i++) { --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - s2 = (s1 << 8) + s0; - #else - s2 = (s0 << 8) + s1; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - s0 = tab0[i]; - s1 = tab1[i]; - tab[i - 1] = (mlib_u16) s2; - } - --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - s2 = (s1 << 8) + s0; - #else - s2 = (s0 << 8) + s1; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - tab[255] = (mlib_u16) s2; - - for (j = 0; j < ysize; j++, dst += dlb, src += slb) { -@@ -1897,11 +1897,11 @@ - for (i = 0; i < size - 3; i += 2, da++, sa += 2) { - t0 = tab[s0]; - t1 = tab[s1]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - t = (t1 << 16) + t0; - #else - t = (t0 << 16) + t1; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - s0 = sa[0]; - s1 = sa[1]; - da[0] = t; -@@ -1909,11 +1909,11 @@ - - t0 = tab[s0]; - t1 = tab[s1]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - t = (t1 << 16) + t0; - #else - t = (t0 << 16) + t1; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - da[0] = t; - da++; - -@@ -1927,13 +1927,13 @@ - - if (off > 1) { - t0 = tab[sa[0]]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - dp[1] = (t0 >> 8); - dp[0] = t0; - #else - dp[0] = (t0 >> 8); - dp[1] = t0; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - sa++; - size--; - dp += 2; -@@ -1941,11 +1941,11 @@ - - t0 = tab[sa[0]]; - sa++; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - *dp++ = t0; - #else - *dp++ = (t0 >> 8); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - - da = (mlib_s32 *) dp; - -@@ -1959,11 +1959,11 @@ - for (i = 0; i < size - 4; i += 2, da++, sa += 2) { - t1 = tab[s0]; - t2 = tab[s1]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - t = (t0 >> 8) + (t1 << 8) + (t2 << 24); - #else - t = (t0 << 24) + (t1 << 8) + (t2 >> 8); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - t0 = t2; - s0 = sa[0]; - s1 = sa[1]; -@@ -1972,29 +1972,29 @@ - - t1 = tab[s0]; - t2 = tab[s1]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - t = (t0 >> 8) + (t1 << 8) + (t2 << 24); - #else - t = (t0 << 24) + (t1 << 8) + (t2 >> 8); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - da[0] = t; - da++; - dp = (mlib_u8 *) da; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - dp[0] = (t2 >> 8); - #else - dp[0] = t2; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - - if ((size & 1) == 0) { - t0 = tab[sa[0]]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - dp[2] = (t0 >> 8); - dp[1] = t0; - #else - dp[1] = (t0 >> 8); - dp[2] = t0; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - } - } - } -@@ -2012,22 +2012,22 @@ - s1 = tab1[0]; - s2 = tab2[0]; - for (i = 1; i < 256; i++) { --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - s3 = (s2 << 24) + (s1 << 16) + (s0 << 8); - #else - s3 = (s0 << 16) + (s1 << 8) + s2; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - s0 = tab0[i]; - s1 = tab1[i]; - s2 = tab2[i]; - tab[i - 1] = s3; - } - --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - s3 = (s2 << 24) + (s1 << 16) + (s0 << 8); - #else - s3 = (s0 << 16) + (s1 << 8) + s2; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - tab[255] = s3; - - for (j = 0; j < ysize; j++, dst += dlb, src += slb) { -@@ -2064,24 +2064,24 @@ - for (i = 0; i < size - 7; i += 4, da += 3, sa += 4) { - t0 = tab[s0]; - t1 = tab[s1]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - da[0] = (t0 >> 8) + (t1 << 16); - res2 = (t1 >> 16); - #else - da[0] = (t0 << 8) + (t1 >> 16); - res2 = (t1 << 16); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - s0 = sa[0]; - s1 = sa[1]; - t0 = tab[s0]; - t1 = tab[s1]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - res2 += (t0 << 8); - res1 = (t0 >> 24) + t1; - #else - res2 += (t0 >> 8); - res1 = (t0 << 24) + t1; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - s0 = sa[2]; - s1 = sa[3]; - da[1] = res2; -@@ -2090,24 +2090,24 @@ - - t0 = tab[s0]; - t1 = tab[s1]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - da[0] = (t0 >> 8) + (t1 << 16); - res2 = (t1 >> 16); - #else - da[0] = (t0 << 8) + (t1 >> 16); - res2 = (t1 << 16); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - s0 = sa[0]; - s1 = sa[1]; - t0 = tab[s0]; - t1 = tab[s1]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - res2 += (t0 << 8); - res1 = (t0 >> 24) + t1; - #else - res2 += (t0 >> 8); - res1 = (t0 << 24) + t1; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - da[1] = res2; - da[2] = res1; - da += 3; -@@ -2143,11 +2143,11 @@ - s2 = tab2[0]; - s3 = tab3[0]; - for (i = 1; i < 256; i++) { --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - s4 = (s3 << 24) + (s2 << 16) + (s1 << 8) + s0; - #else - s4 = (s0 << 24) + (s1 << 16) + (s2 << 8) + s3; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - s0 = tab0[i]; - s1 = tab1[i]; - s2 = tab2[i]; -@@ -2155,11 +2155,11 @@ - tab[i - 1] = s4; - } - --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - s4 = (s3 << 24) + (s2 << 16) + (s1 << 8) + s0; - #else - s4 = (s0 << 24) + (s1 << 16) + (s2 << 8) + s3; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - tab[255] = s4; - - for (j = 0; j < ysize; j++, dst += dlb, src += slb) { -@@ -2225,13 +2225,13 @@ - for (i = 0; i < size - 4; i += 2, da += 2, sa += 2) { - t1 = tab[s0]; - t2 = tab[s1]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - res1 = (t0 >> shift) + (t1 << shift1); - res2 = (t1 >> shift) + (t2 << shift1); - #else - res1 = (t0 << shift) + (t1 >> shift1); - res2 = (t1 << shift) + (t2 >> shift1); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - t0 = t2; - s0 = sa[0]; - s1 = sa[1]; -@@ -2241,28 +2241,28 @@ - - t1 = tab[s0]; - t2 = tab[s1]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - res1 = (t0 >> shift) + (t1 << shift1); - res2 = (t1 >> shift) + (t2 << shift1); - #else - res1 = (t0 << shift) + (t1 >> shift1); - res2 = (t1 << shift) + (t2 >> shift1); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - da[0] = res1; - da[1] = res2; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - t0 = (da[2] >> shift1); - da[2] = (t2 >> shift) + (t0 << shift1); - #else - t0 = (da[2] << shift1); - da[2] = (t2 << shift) + (t0 >> shift1); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - da += 2; - dp = (mlib_u8 *) da + (4 - off); - - if ((size & 1) == 0) { - t0 = tab[sa[0]]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - dp[3] = (mlib_u8) (t0 >> 24); - dp[2] = (mlib_u8) (t0 >> 16); - dp[1] = (mlib_u8) (t0 >> 8); -@@ -2272,7 +2272,7 @@ - dp[1] = (mlib_u8) (t0 >> 16); - dp[2] = (mlib_u8) (t0 >> 8); - dp[3] = (mlib_u8) t0; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - } - } - } -@@ -2348,13 +2348,13 @@ - t3 = tab0[s1]; - t4 = tab1[s1]; - t5 = tab2[s1]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - da[0] = (t3 << 24) + (t2 << 16) + (t1 << 8) + t0; - res2 = (t5 << 8) + t4; - #else - da[0] = (t0 << 24) + (t1 << 16) + (t2 << 8) + t3; - res2 = (t4 << 24) + (t5 << 16); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - s0 = sa[0]; - s1 = sa[1]; - t0 = tab0[s0]; -@@ -2363,13 +2363,13 @@ - t3 = tab0[s1]; - t4 = tab1[s1]; - t5 = tab2[s1]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - res2 += ((t1 << 24) + (t0 << 16)); - res1 = (t5 << 24) + (t4 << 16) + (t3 << 8) + t2; - #else - res2 += ((t0 << 8) + t1); - res1 = (t2 << 24) + (t3 << 16) + (t4 << 8) + t5; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - s0 = sa[2]; - s1 = sa[3]; - da[1] = res2; -@@ -2382,13 +2382,13 @@ - t3 = tab0[s1]; - t4 = tab1[s1]; - t5 = tab2[s1]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - da[0] = (t3 << 24) + (t2 << 16) + (t1 << 8) + t0; - res2 = (t5 << 8) + t4; - #else - da[0] = (t0 << 24) + (t1 << 16) + (t2 << 8) + t3; - res2 = (t4 << 24) + (t5 << 16); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - s0 = sa[0]; - s1 = sa[1]; - t0 = tab0[s0]; -@@ -2397,13 +2397,13 @@ - t3 = tab0[s1]; - t4 = tab1[s1]; - t5 = tab2[s1]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - res2 += ((t1 << 24) + (t0 << 16)); - res1 = (t5 << 24) + (t4 << 16) + (t3 << 8) + t2; - #else - res2 += ((t0 << 8) + t1); - res1 = (t2 << 24) + (t3 << 16) + (t4 << 8) + t5; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - da[1] = res2; - da[2] = res1; - da += 3; -@@ -2455,11 +2455,11 @@ - t1 = tab1[s0]; - t2 = tab2[s0]; - t3 = tab3[s0]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - res = (t3 << 24) + (t2 << 16) + (t1 << 8) + t0; - #else - res = (t0 << 24) + (t1 << 16) + (t2 << 8) + t3; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - s0 = sa[0]; - da[0] = res; - } -@@ -2468,11 +2468,11 @@ - t1 = tab1[s0]; - t2 = tab2[s0]; - t3 = tab3[s0]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - res = (t3 << 24) + (t2 << 16) + (t1 << 8) + t0; - #else - res = (t0 << 24) + (t1 << 16) + (t2 << 8) + t3; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - da[0] = res; - - } -@@ -2496,11 +2496,11 @@ - t2 = tab2[s0]; - t3 = tab3[s0]; - --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - res1 = (t3 << 24) + (t2 << 16) + (t1 << 8) + t0; - #else - res1 = (t0 << 24) + (t1 << 16) + (t2 << 8) + t3; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - - s0 = sa[0]; - sa++; -@@ -2513,13 +2513,13 @@ - t1 = tab1[s0]; - t2 = tab2[s0]; - t3 = tab3[s0]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - res2 = (t3 << 24) + (t2 << 16) + (t1 << 8) + t0; - res = (res1 >> shift) + (res2 << shift1); - #else - res2 = (t0 << 24) + (t1 << 16) + (t2 << 8) + t3; - res = (res1 << shift) + (res2 >> shift1); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - res1 = res2; - s0 = sa[0]; - da[0] = res; -@@ -2529,21 +2529,21 @@ - t1 = tab1[s0]; - t2 = tab2[s0]; - t3 = tab3[s0]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - res2 = (t3 << 24) + (t2 << 16) + (t1 << 8) + t0; - res = (res1 >> shift) + (res2 << shift1); - #else - res2 = (t0 << 24) + (t1 << 16) + (t2 << 8) + t3; - res = (res1 << shift) + (res2 >> shift1); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - da[0] = res; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - res1 = (da[1] >> shift1); - da[1] = (res2 >> shift) + (res1 << shift1); - #else - res1 = (da[1] << shift1); - da[1] = (res2 << shift) + (res1 >> shift1); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - } - } - } -@@ -2617,13 +2617,13 @@ - t3 = tab0[s1]; - t4 = tab1[s1]; - t5 = tab2[s1]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - da[0] = (t3 << 24) + (t2 << 16) + (t1 << 8) + t0; - res2 = (t5 << 8) + t4; - #else - da[0] = (t0 << 24) + (t1 << 16) + (t2 << 8) + t3; - res2 = (t4 << 24) + (t5 << 16); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - s0 = sa[0]; - s1 = sa[1]; - t0 = tab0[s0]; -@@ -2632,13 +2632,13 @@ - t3 = tab0[s1]; - t4 = tab1[s1]; - t5 = tab2[s1]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - res2 += ((t1 << 24) + (t0 << 16)); - res1 = (t5 << 24) + (t4 << 16) + (t3 << 8) + t2; - #else - res2 += ((t0 << 8) + t1); - res1 = (t2 << 24) + (t3 << 16) + (t4 << 8) + t5; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - s0 = sa[2]; - s1 = sa[3]; - da[1] = res2; -@@ -2651,13 +2651,13 @@ - t3 = tab0[s1]; - t4 = tab1[s1]; - t5 = tab2[s1]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - da[0] = (t3 << 24) + (t2 << 16) + (t1 << 8) + t0; - res2 = (t5 << 8) + t4; - #else - da[0] = (t0 << 24) + (t1 << 16) + (t2 << 8) + t3; - res2 = (t4 << 24) + (t5 << 16); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - s0 = sa[0]; - s1 = sa[1]; - t0 = tab0[s0]; -@@ -2666,13 +2666,13 @@ - t3 = tab0[s1]; - t4 = tab1[s1]; - t5 = tab2[s1]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - res2 += ((t1 << 24) + (t0 << 16)); - res1 = (t5 << 24) + (t4 << 16) + (t3 << 8) + t2; - #else - res2 += ((t0 << 8) + t1); - res1 = (t2 << 24) + (t3 << 16) + (t4 << 8) + t5; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - da[1] = res2; - da[2] = res1; - da += 3; -@@ -2724,11 +2724,11 @@ - t1 = tab1[s0]; - t2 = tab2[s0]; - t3 = tab3[s0]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - res = (t3 << 24) + (t2 << 16) + (t1 << 8) + t0; - #else - res = (t0 << 24) + (t1 << 16) + (t2 << 8) + t3; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - s0 = sa[0]; - da[0] = res; - } -@@ -2737,11 +2737,11 @@ - t1 = tab1[s0]; - t2 = tab2[s0]; - t3 = tab3[s0]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - res = (t3 << 24) + (t2 << 16) + (t1 << 8) + t0; - #else - res = (t0 << 24) + (t1 << 16) + (t2 << 8) + t3; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - da[0] = res; - - } -@@ -2765,11 +2765,11 @@ - t2 = tab2[s0]; - t3 = tab3[s0]; - --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - res1 = (t3 << 24) + (t2 << 16) + (t1 << 8) + t0; - #else - res1 = (t0 << 24) + (t1 << 16) + (t2 << 8) + t3; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - - s0 = sa[0]; - sa++; -@@ -2782,13 +2782,13 @@ - t1 = tab1[s0]; - t2 = tab2[s0]; - t3 = tab3[s0]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - res2 = (t3 << 24) + (t2 << 16) + (t1 << 8) + t0; - res = (res1 >> shift) + (res2 << shift1); - #else - res2 = (t0 << 24) + (t1 << 16) + (t2 << 8) + t3; - res = (res1 << shift) + (res2 >> shift1); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - res1 = res2; - s0 = sa[0]; - da[0] = res; -@@ -2798,21 +2798,21 @@ - t1 = tab1[s0]; - t2 = tab2[s0]; - t3 = tab3[s0]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - res2 = (t3 << 24) + (t2 << 16) + (t1 << 8) + t0; - res = (res1 >> shift) + (res2 << shift1); - #else - res2 = (t0 << 24) + (t1 << 16) + (t2 << 8) + t3; - res = (res1 << shift) + (res2 >> shift1); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - da[0] = res; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - res1 = (da[1] >> shift1); - da[1] = (res2 >> shift) + (res1 << shift1); - #else - res1 = (da[1] << shift1); - da[1] = (res2 << shift) + (res1 >> shift1); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - } - } - } -@@ -2863,21 +2863,21 @@ - s0 = tab0[0]; - s1 = tab1[0]; - for (i = 1; i < 256; i++) { --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - s2 = (s1 << 16) + s0; - #else - s2 = (s0 << 16) + s1; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - s0 = tab0[i]; - s1 = tab1[i]; - tab[i - 1] = s2; - } - --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - s2 = (s1 << 16) + s0; - #else - s2 = (s0 << 16) + s1; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - tab[255] = s2; - - for (j = 0; j < ysize; j++, dst += dlb, src += slb) { -@@ -2919,11 +2919,11 @@ - else { - - t0 = tab[*sa++]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - *dp++ = (mlib_u16) (t0); - #else - *dp++ = (mlib_u16) (t0 >> 16); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - da = (mlib_u32 *) dp; - s0 = sa[0]; - s1 = sa[1]; -@@ -2935,13 +2935,13 @@ - for (i = 0; i < size - 4; i += 2, da += 2, sa += 2) { - t1 = tab[s0]; - t2 = tab[s1]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - res1 = (t0 >> 16) + (t1 << 16); - res2 = (t1 >> 16) + (t2 << 16); - #else - res1 = (t0 << 16) + (t1 >> 16); - res2 = (t1 << 16) + (t2 >> 16); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - t0 = t2; - s0 = sa[0]; - s1 = sa[1]; -@@ -2951,32 +2951,32 @@ - - t1 = tab[s0]; - t2 = tab[s1]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - res1 = (t0 >> 16) + (t1 << 16); - res2 = (t1 >> 16) + (t2 << 16); - #else - res1 = (t0 << 16) + (t1 >> 16); - res2 = (t1 << 16) + (t2 >> 16); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - da[0] = res1; - da[1] = res2; - da += 2; - dp = (mlib_u16 *) da; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - dp[0] = (mlib_u16) (t2 >> 16); - #else - dp[0] = (mlib_u16) t2; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - - if ((size & 1) == 0) { - t0 = tab[sa[0]]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - dp[2] = (mlib_u16) (t0 >> 16); - dp[1] = (mlib_u16) t0; - #else - dp[1] = (mlib_u16) (t0 >> 16); - dp[2] = (mlib_u16) t0; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - } - } - } -@@ -2994,13 +2994,13 @@ - s1 = tab1[0]; - s2 = tab2[0]; - for (i = 1; i < 256; i++) { --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - s3 = (s0 << 16); - s4 = (s2 << 16) + s1; - #else - s3 = s0; - s4 = (s1 << 16) + s2; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - s0 = tab0[i]; - s1 = tab1[i]; - s2 = tab2[i]; -@@ -3008,13 +3008,13 @@ - tab[2 * i - 1] = s4; - } - --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - s4 = (s2 << 16) + s1; - tab[510] = s0 << 16; - #else - s4 = (s1 << 16) + s2; - tab[510] = s0; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - tab[511] = s4; - - for (j = 0; j < ysize; j++, dst += dlb, src += slb) { -@@ -3050,13 +3050,13 @@ - t1 = *(mlib_u32 *) ((mlib_u8 *) tab + s0 + 4); - t2 = *(mlib_u32 *) ((mlib_u8 *) tab + s1); - t3 = *(mlib_u32 *) ((mlib_u8 *) tab + s1 + 4); --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - res1 = (t0 >> 16) + (t1 << 16); - res2 = (t1 >> 16) + t2; - #else - res1 = (t0 << 16) + (t1 >> 16); - res2 = (t1 << 16) + t2; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - s0 = sa[0] << 3; - s1 = sa[1] << 3; - da[0] = res1; -@@ -3068,13 +3068,13 @@ - t1 = *(mlib_u32 *) ((mlib_u8 *) tab + s0 + 4); - t2 = *(mlib_u32 *) ((mlib_u8 *) tab + s1); - t3 = *(mlib_u32 *) ((mlib_u8 *) tab + s1 + 4); --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - res1 = (t0 >> 16) + (t1 << 16); - res2 = (t1 >> 16) + t2; - #else - res1 = (t0 << 16) + (t1 >> 16); - res2 = (t1 << 16) + t2; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - da[0] = res1; - da[1] = res2; - da[2] = t3; -@@ -3105,13 +3105,13 @@ - s2 = tab2[0]; - s3 = tab3[0]; - for (i = 1; i < 256; i++) { --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - s4 = (s1 << 16) + s0; - s5 = (s3 << 16) + s2; - #else - s4 = (s0 << 16) + s1; - s5 = (s2 << 16) + s3; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - s0 = tab0[i]; - s1 = tab1[i]; - s2 = tab2[i]; -@@ -3120,13 +3120,13 @@ - tab[2 * i - 1] = s5; - } - --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - s4 = (s1 << 16) + s0; - s5 = (s3 << 16) + s2; - #else - s4 = (s0 << 16) + s1; - s5 = (s2 << 16) + s3; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - tab[510] = s4; - tab[511] = s5; - -@@ -3181,18 +3181,18 @@ - - t4 = tab[2 * sa[0]]; - t5 = tab[2 * sa[0] + 1]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - *dp++ = (mlib_u16) (t4); - #else - *dp++ = (mlib_u16) (t4 >> 16); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - sa++; - da = (mlib_u32 *) dp; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - *da++ = (t4 >> 16) + (t5 << 16); - #else - *da++ = (t4 << 16) + (t5 >> 16); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - s0 = sa[0] << 3; - s1 = sa[1] << 3; - sa += 2; -@@ -3205,7 +3205,7 @@ - t1 = *(mlib_u32 *) ((mlib_u8 *) tab + s0 + 4); - t2 = *(mlib_u32 *) ((mlib_u8 *) tab + s1); - t3 = *(mlib_u32 *) ((mlib_u8 *) tab + s1 + 4); --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - res1 = (t5 >> 16) + (t0 << 16); - res2 = (t0 >> 16) + (t1 << 16); - res3 = (t1 >> 16) + (t2 << 16); -@@ -3215,7 +3215,7 @@ - res2 = (t0 << 16) + (t1 >> 16); - res3 = (t1 << 16) + (t2 >> 16); - res4 = (t2 << 16) + (t3 >> 16); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - s0 = sa[0] << 3; - s1 = sa[1] << 3; - da[0] = res1; -@@ -3229,7 +3229,7 @@ - t1 = *(mlib_u32 *) ((mlib_u8 *) tab + s0 + 4); - t2 = *(mlib_u32 *) ((mlib_u8 *) tab + s1); - t3 = *(mlib_u32 *) ((mlib_u8 *) tab + s1 + 4); --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - res1 = (t5 >> 16) + (t0 << 16); - res2 = (t0 >> 16) + (t1 << 16); - res3 = (t1 >> 16) + (t2 << 16); -@@ -3239,36 +3239,36 @@ - res2 = (t0 << 16) + (t1 >> 16); - res3 = (t1 << 16) + (t2 >> 16); - res4 = (t2 << 16) + (t3 >> 16); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - da[0] = res1; - da[1] = res2; - da[2] = res3; - da[3] = res4; - da += 4; - dp = (mlib_u16 *) da; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - dp[0] = (mlib_u16) (t3 >> 16); - #else - dp[0] = (mlib_u16) t3; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - - if ((size & 1) == 0) { - t0 = tab[2 * sa[0]]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - dp[2] = (mlib_u16) (t0 >> 16); - dp[1] = (mlib_u16) t0; - #else - dp[1] = (mlib_u16) (t0 >> 16); - dp[2] = (mlib_u16) t0; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - t0 = tab[2 * sa[0] + 1]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - dp[4] = (mlib_u16) (t0 >> 16); - dp[3] = (mlib_u16) t0; - #else - dp[3] = (mlib_u16) (t0 >> 16); - dp[4] = (mlib_u16) t0; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - } - } - } -@@ -3439,7 +3439,7 @@ - #pragma pipeloop(0) - #endif /* __SUNPRO_C */ - for (i = 0; i < size - 7; i += 4, dp += 8, sa++) { --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - t0 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 << 2) & 0x3FC)); - t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 << 2) & 0x3FC)); - t2 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 >> 6) & 0x3FC)); -@@ -3449,12 +3449,12 @@ - t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 22) & 0x3FC)); - t2 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 >> 14) & 0x3FC)); - t3 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 14) & 0x3FC)); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - dp[0] = t0; - dp[1] = t1; - dp[2] = t2; - dp[3] = t3; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - t0 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 >> 14) & 0x3FC)); - t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 14) & 0x3FC)); - t2 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 >> 22) & 0x3FC)); -@@ -3464,7 +3464,7 @@ - t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 6) & 0x3FC)); - t2 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 << 2) & 0x3FC)); - t3 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 << 2) & 0x3FC)); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - s0 = sa[0]; - dp[4] = t0; - dp[5] = t1; -@@ -3472,7 +3472,7 @@ - dp[7] = t3; - } - --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - t0 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 << 2) & 0x3FC)); - t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 << 2) & 0x3FC)); - t2 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 >> 6) & 0x3FC)); -@@ -3482,12 +3482,12 @@ - t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 22) & 0x3FC)); - t2 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 >> 14) & 0x3FC)); - t3 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 14) & 0x3FC)); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - dp[0] = t0; - dp[1] = t1; - dp[2] = t2; - dp[3] = t3; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - t0 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 >> 14) & 0x3FC)); - t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 14) & 0x3FC)); - t2 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 >> 22) & 0x3FC)); -@@ -3497,7 +3497,7 @@ - t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 6) & 0x3FC)); - t2 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 << 2) & 0x3FC)); - t3 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 << 2) & 0x3FC)); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - dp[4] = t0; - dp[5] = t1; - dp[6] = t2; -@@ -3545,7 +3545,7 @@ - #pragma pipeloop(0) - #endif /* __SUNPRO_C */ - for (i = 0; i < size - 7; i += 4, dp += 12, sa++) { --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - t0 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 << 2) & 0x3FC)); - t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 << 2) & 0x3FC)); - t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 << 2) & 0x3FC)); -@@ -3559,14 +3559,14 @@ - t3 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 >> 14) & 0x3FC)); - t4 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 14) & 0x3FC)); - t5 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 >> 14) & 0x3FC)); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - dp[0] = t0; - dp[1] = t1; - dp[2] = t2; - dp[3] = t3; - dp[4] = t4; - dp[5] = t5; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - t0 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 >> 14) & 0x3FC)); - t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 14) & 0x3FC)); - t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 >> 14) & 0x3FC)); -@@ -3580,7 +3580,7 @@ - t3 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 << 2) & 0x3FC)); - t4 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 << 2) & 0x3FC)); - t5 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 << 2) & 0x3FC)); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - s0 = sa[0]; - dp[6] = t0; - dp[7] = t1; -@@ -3590,7 +3590,7 @@ - dp[11] = t5; - } - --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - t0 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 << 2) & 0x3FC)); - t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 << 2) & 0x3FC)); - t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 << 2) & 0x3FC)); -@@ -3604,14 +3604,14 @@ - t3 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 >> 14) & 0x3FC)); - t4 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 14) & 0x3FC)); - t5 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 >> 14) & 0x3FC)); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - dp[0] = t0; - dp[1] = t1; - dp[2] = t2; - dp[3] = t3; - dp[4] = t4; - dp[5] = t5; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - t0 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 >> 14) & 0x3FC)); - t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 14) & 0x3FC)); - t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 >> 14) & 0x3FC)); -@@ -3625,7 +3625,7 @@ - t3 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 << 2) & 0x3FC)); - t4 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 << 2) & 0x3FC)); - t5 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 << 2) & 0x3FC)); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - dp[6] = t0; - dp[7] = t1; - dp[8] = t2; -@@ -3678,7 +3678,7 @@ - #pragma pipeloop(0) - #endif /* __SUNPRO_C */ - for (i = 0; i < size - 7; i += 4, dp += 16, sa++) { --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - t0 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 << 2) & 0x3FC)); - t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 << 2) & 0x3FC)); - t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 << 2) & 0x3FC)); -@@ -3688,12 +3688,12 @@ - t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 22) & 0x3FC)); - t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 >> 22) & 0x3FC)); - t3 = *(mlib_u32 *) ((mlib_u8 *) tab3 + ((s0 >> 22) & 0x3FC)); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - dp[0] = t0; - dp[1] = t1; - dp[2] = t2; - dp[3] = t3; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - t0 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 >> 6) & 0x3FC)); - t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 6) & 0x3FC)); - t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 >> 6) & 0x3FC)); -@@ -3703,12 +3703,12 @@ - t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 14) & 0x3FC)); - t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 >> 14) & 0x3FC)); - t3 = *(mlib_u32 *) ((mlib_u8 *) tab3 + ((s0 >> 14) & 0x3FC)); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - dp[4] = t0; - dp[5] = t1; - dp[6] = t2; - dp[7] = t3; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - t0 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 >> 14) & 0x3FC)); - t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 14) & 0x3FC)); - t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 >> 14) & 0x3FC)); -@@ -3718,12 +3718,12 @@ - t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 6) & 0x3FC)); - t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 >> 6) & 0x3FC)); - t3 = *(mlib_u32 *) ((mlib_u8 *) tab3 + ((s0 >> 6) & 0x3FC)); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - dp[8] = t0; - dp[9] = t1; - dp[10] = t2; - dp[11] = t3; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - t0 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 >> 22) & 0x3FC)); - t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 22) & 0x3FC)); - t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 >> 22) & 0x3FC)); -@@ -3733,7 +3733,7 @@ - t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 << 2) & 0x3FC)); - t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 << 2) & 0x3FC)); - t3 = *(mlib_u32 *) ((mlib_u8 *) tab3 + ((s0 << 2) & 0x3FC)); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - s0 = sa[0]; - dp[12] = t0; - dp[13] = t1; -@@ -3741,7 +3741,7 @@ - dp[15] = t3; - } - --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - t0 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 << 2) & 0x3FC)); - t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 << 2) & 0x3FC)); - t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 << 2) & 0x3FC)); -@@ -3751,12 +3751,12 @@ - t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 22) & 0x3FC)); - t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 >> 22) & 0x3FC)); - t3 = *(mlib_u32 *) ((mlib_u8 *) tab3 + ((s0 >> 22) & 0x3FC)); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - dp[0] = t0; - dp[1] = t1; - dp[2] = t2; - dp[3] = t3; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - t0 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 >> 6) & 0x3FC)); - t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 6) & 0x3FC)); - t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 >> 6) & 0x3FC)); -@@ -3766,12 +3766,12 @@ - t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 14) & 0x3FC)); - t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 >> 14) & 0x3FC)); - t3 = *(mlib_u32 *) ((mlib_u8 *) tab3 + ((s0 >> 14) & 0x3FC)); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - dp[4] = t0; - dp[5] = t1; - dp[6] = t2; - dp[7] = t3; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - t0 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 >> 14) & 0x3FC)); - t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 14) & 0x3FC)); - t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 >> 14) & 0x3FC)); -@@ -3781,12 +3781,12 @@ - t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 6) & 0x3FC)); - t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 >> 6) & 0x3FC)); - t3 = *(mlib_u32 *) ((mlib_u8 *) tab3 + ((s0 >> 6) & 0x3FC)); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - dp[8] = t0; - dp[9] = t1; - dp[10] = t2; - dp[11] = t3; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - t0 = *(mlib_u32 *) ((mlib_u8 *) tab0 + ((s0 >> 22) & 0x3FC)); - t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 >> 22) & 0x3FC)); - t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 >> 22) & 0x3FC)); -@@ -3796,7 +3796,7 @@ - t1 = *(mlib_u32 *) ((mlib_u8 *) tab1 + ((s0 << 2) & 0x3FC)); - t2 = *(mlib_u32 *) ((mlib_u8 *) tab2 + ((s0 << 2) & 0x3FC)); - t3 = *(mlib_u32 *) ((mlib_u8 *) tab3 + ((s0 << 2) & 0x3FC)); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - dp[12] = t0; - dp[13] = t1; - dp[14] = t2; ---- ./jdk/src/share/native/sun/awt/medialib/mlib_image.h Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/share/native/sun/awt/medialib/mlib_image.h Sun Feb 10 09:27:00 2019 -0800 -@@ -27,9 +27,6 @@ - #ifndef MLIB_IMAGE_H - #define MLIB_IMAGE_H - --#ifdef MACOSX --#include <machine/endian.h> --#endif - #include <mlib_types.h> - #include <mlib_status.h> - #include <mlib_sys.h> ---- ./jdk/src/share/native/sun/awt/medialib/mlib_sys.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/share/native/sun/awt/medialib/mlib_sys.c Sun Feb 10 09:27:00 2019 -0800 -@@ -29,7 +29,7 @@ - #ifdef MACOSX - #include <unistd.h> - #include <sys/param.h> --#else -+#elif !defined(_ALLBSD_SOURCE) - #include <malloc.h> - #endif - #include <mlib_types.h> -@@ -97,6 +97,9 @@ - return (void *) malloc(size); - #elif defined(MACOSX) - return valloc(size); -+#elif defined(_ALLBSD_SOURCE) -+ void *ret; -+ return posix_memalign(&ret, 8, size) ? NULL : ret; - #else - return (void *) memalign(8, size); - #endif /* _MSC_VER */ ---- ./jdk/src/share/native/sun/font/layout/LEStandalone.h Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/share/native/sun/font/layout/LEStandalone.h Sun Feb 10 09:27:00 2019 -0800 -@@ -136,7 +136,7 @@ - #define U_CAPI extern "C" - - #if !defined(U_IS_BIG_ENDIAN) -- #ifdef _LITTLE_ENDIAN -+ #ifdef VM_LITTLE_ENDIAN - #define U_IS_BIG_ENDIAN 0 - #endif - #endif ---- ./jdk/src/share/native/sun/java2d/cmm/lcms/LCMS.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/share/native/sun/java2d/cmm/lcms/LCMS.c Sun Feb 10 09:27:00 2019 -0800 -@@ -182,7 +182,7 @@ - return 0L; - } - --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - /* Reversing data packed into int for LE archs */ - if (isInIntPacked) { - inFormatter ^= DOSWAP_SH(1); ---- ./jdk/src/share/native/sun/management/DiagnosticCommandImpl.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/share/native/sun/management/DiagnosticCommandImpl.c Sun Feb 10 09:27:00 2019 -0800 -@@ -27,6 +27,7 @@ - #include <jni.h> - #include "management.h" - #include "sun_management_DiagnosticCommandImpl.h" -+#include <stdlib.h> - - JNIEXPORT void JNICALL Java_sun_management_DiagnosticCommandImpl_setNotificationEnabled - (JNIEnv *env, jobject dummy, jboolean enabled) { ---- ./jdk/src/solaris/back/util_md.h Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/back/util_md.h Sun Feb 10 09:27:00 2019 -0800 -@@ -51,7 +51,7 @@ - - /* On little endian machines, convert java big endian numbers. */ - --#if defined(_LITTLE_ENDIAN) -+#if defined(VM_LITTLE_ENDIAN) - - #define HOST_TO_JAVA_CHAR(x) (((x & 0xff) << 8) | ((x >> 8) & (0xff))) - #define HOST_TO_JAVA_SHORT(x) (((x & 0xff) << 8) | ((x >> 8) & (0xff))) ---- ./jdk/src/solaris/bin/ergo_i586.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/bin/ergo_i586.c Sun Feb 10 09:27:00 2019 -0800 -@@ -106,7 +106,7 @@ - - #endif /* __solaris__ */ - --#ifdef __linux__ -+#if defined(__linux__) || defined(_ALLBSD_SOURCE) - - /* - * A utility method for asking the CPU about itself. -@@ -197,7 +197,7 @@ - (result == JNI_TRUE ? "true" : "false")); - return result; - } --#endif /* __linux__ */ -+#endif /* __linux__ || _ALLBSD_SOURCE */ - - /* - * Routines shared by solaris-i586 and linux-i586. ---- ./jdk/src/solaris/bin/java_md_solinux.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/bin/java_md_solinux.c Sun Feb 10 09:27:00 2019 -0800 -@@ -35,6 +35,9 @@ - #include <sys/stat.h> - #include <unistd.h> - #include <sys/types.h> -+#ifdef __FreeBSD__ -+#include <sys/sysctl.h> -+#endif - #include "manifest_info.h" - #include "version_comp.h" - -@@ -306,9 +309,9 @@ - if (llp == NULL && dmllp == NULL) { - return JNI_FALSE; - } --#ifdef __linux -+#ifndef __solaris__ - /* -- * On linux, if a binary is running as sgid or suid, glibc sets -+ * On linux and BSD, if a binary is running as sgid or suid, glibc/libc sets - * LD_LIBRARY_PATH to the empty string for security purposes. (In contrast, - * on Solaris the LD_LIBRARY_PATH variable for a privileged binary does not - * lose its settings; but the dynamic linker does apply more scrutiny to the -@@ -319,12 +322,18 @@ - * libraries will be handled by the RPATH. In reality, this check is - * redundant, as the previous check for a non-null LD_LIBRARY_PATH will - * return back to the calling function forthwith, it is left here to safe -- * guard against any changes, in the glibc's existing security policy. -+ * guard against any changes, in the glibc/libc's existing security policy. - */ -+#ifndef _ALLBSD_SOURCE - if ((getgid() != getegid()) || (getuid() != geteuid())) { - return JNI_FALSE; - } --#endif /* __linux */ -+#else -+ if (issetugid()) { -+ return JNI_FALSE; -+ } -+#endif /* ! _ALLBSD_SOURCE */ -+#endif /* ! __solaris__ */ - - /* - * Prevent recursions. Since LD_LIBRARY_PATH is the one which will be set by -@@ -929,8 +938,9 @@ - * onwards the filename returned in DL_info structure from dladdr is - * an absolute pathname so technically realpath isn't required. - * On Linux we read the executable name from /proc/self/exe. -- * As a fallback, and for platforms other than Solaris and Linux, -- * we use FindExecName to compute the executable name. -+ * On FreeBSD, we get the executable name via sysctl(3). -+ * As a fallback, and for platforms other than Solaris, Linux, and -+ * FreeBSD, we use FindExecName to compute the executable name. - */ - const char* - SetExecname(char **argv) -@@ -967,7 +977,17 @@ - exec_path = JLI_StringDup(buf); - } - } --#else /* !__solaris__ && !__linux__ */ -+#elif defined(__FreeBSD__) -+ { -+ char buf[PATH_MAX+1]; -+ int name[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1 }; -+ size_t len = sizeof(buf); -+ if (sysctl(name, 4, buf, &len, NULL, 0) == 0 && len > 0) { -+ buf[len] = '\0'; -+ exec_path = JLI_StringDup(buf); -+ } -+ } -+#else /* !__solaris__ && !__linux__ && !__FreeBSD__ */ - { - /* Not implemented */ - } -@@ -1073,13 +1093,13 @@ - #define MAX_PID_STR_SZ 20 - - void SetJavaLauncherPlatformProps() { -- /* Linux only */ --#ifdef __linux__ -+ /* Linux and BSD only */ -+#ifndef __solaris__ - const char *substr = "-Dsun.java.launcher.pid="; - char *pid_prop_str = (char *)JLI_MemAlloc(JLI_StrLen(substr) + MAX_PID_STR_SZ + 1); - sprintf(pid_prop_str, "%s%d", substr, getpid()); - AddOption(pid_prop_str, NULL); --#endif /* __linux__ */ -+#endif /* ! __solaris__ */ - } - - int ---- ./jdk/src/solaris/bin/java_md_solinux.h Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/bin/java_md_solinux.h Sun Feb 10 09:27:00 2019 -0800 -@@ -26,17 +26,26 @@ - #ifndef JAVA_MD_SOLINUX_H - #define JAVA_MD_SOLINUX_H - --#ifdef HAVE_GETHRTIME -+#if defined(HAVE_GETHRTIME) || defined(__FreeBSD__) - /* - * Support for doing cheap, accurate interval timing. - */ -+#ifdef HAVE_GETHRTIME - #include <sys/time.h> -+#else /* __FreeBSD__ */ -+#include <time.h> -+#define gethrtime() __extension__ ({ \ -+ struct timespec tp; \ -+ clock_gettime(CLOCK_MONOTONIC, &tp); \ -+ (uint64_t)tp.tv_sec*1000000 + tp.tv_nsec/1000; \ -+}) -+#endif /* HAVE_GETHRTIME */ - #define CounterGet() (gethrtime()/1000) - #define Counter2Micros(counts) (counts) --#else /* ! HAVE_GETHRTIME */ -+#else /* ! HAVE_GETHRTIME && ! __FreeBSD__ */ - #define CounterGet() (0) - #define Counter2Micros(counts) (1) --#endif /* HAVE_GETHRTIME */ -+#endif /* HAVE_GETHRTIME || __FreeBSD__ */ - - /* pointer to environment */ - extern char **environ; -@@ -48,6 +57,9 @@ - #ifdef __solaris__ - static const char *system_dir = "/usr/jdk"; - static const char *user_dir = "/jdk"; -+#elif defined(__FreeBSD__) -+static const char *system_dir = PACKAGE_PATH "/openjdk8"; -+static const char *user_dir = "/java"; - #else /* !__solaris__, i.e. Linux, AIX,.. */ - static const char *system_dir = "/usr/java"; - static const char *user_dir = "/java"; ---- ./jdk/src/solaris/classes/java/lang/UNIXProcess.java Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/classes/java/lang/UNIXProcess.java Sun Feb 10 09:27:00 2019 -0800 -@@ -82,6 +82,8 @@ - - LINUX(LaunchMechanism.VFORK, LaunchMechanism.FORK), - -+ MACOS(LaunchMechanism.POSIX_SPAWN, LaunchMechanism.FORK), -+ - BSD(LaunchMechanism.POSIX_SPAWN, LaunchMechanism.FORK), - - SOLARIS(LaunchMechanism.POSIX_SPAWN, LaunchMechanism.FORK), -@@ -105,9 +107,10 @@ - // fall through... - case LINUX: - case AIX: -+ case BSD: - return javahome + "/lib/" + osArch + "/jspawnhelper"; - -- case BSD: -+ case MACOS: - return javahome + "/lib/jspawnhelper"; - - default: -@@ -157,7 +160,8 @@ - ); - - if (osName.equals("Linux")) { return LINUX; } -- if (osName.contains("OS X")) { return BSD; } -+ if (osName.contains("OS X")) { return MACOS; } -+ if (osName.endsWith("BSD")) { return BSD; } - if (osName.equals("SunOS")) { return SOLARIS; } - if (osName.equals("AIX")) { return AIX; } - -@@ -272,6 +276,7 @@ - void initStreams(int[] fds) throws IOException { - switch (platform) { - case LINUX: -+ case MACOS: - case BSD: - stdin = (fds[0] == -1) ? - ProcessBuilder.NullOutputStream.INSTANCE : -@@ -430,6 +435,7 @@ - private void destroy(boolean force) { - switch (platform) { - case LINUX: -+ case MACOS: - case BSD: - case AIX: - // There is a risk that pid will be recycled, causing us to ---- ./jdk/src/solaris/classes/sun/awt/X11FontManager.java Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/classes/sun/awt/X11FontManager.java Sun Feb 10 09:27:00 2019 -0800 -@@ -234,7 +234,7 @@ - if (fontID != null) { - fileName = (String)fontNameMap.get(fontID); - /* On Linux check for the Lucida Oblique fonts */ -- if (fileName == null && FontUtilities.isLinux && !isOpenJDK()) { -+ if (fileName == null && (FontUtilities.isLinux || FontUtilities.isBSD) && !isOpenJDK()) { - if (oblmap == null) { - initObliqueLucidaFontMap(); - } -@@ -733,7 +733,7 @@ - if (fontConfigDirs == null) { - return; - } -- if (FontUtilities.isLinux) { -+ if (FontUtilities.isLinux || FontUtilities.isBSD) { - fontConfigDirs.add(jreLibDirName+File.separator+"oblique-fonts"); - } - fontdirs = (String[])fontConfigDirs.toArray(new String[0]); -@@ -761,7 +761,7 @@ - */ - FontConfiguration mFontConfig = new MFontConfiguration(this); - if (FontUtilities.isOpenSolaris || -- (FontUtilities.isLinux && -+ ((FontUtilities.isLinux || FontUtilities.isBSD) && - (!mFontConfig.foundOsSpecificFile() || - !mFontConfig.fontFilesArePresent()) || - (FontUtilities.isSolaris && !mFontConfig.fontFilesArePresent()))) { ---- ./jdk/src/solaris/classes/sun/awt/fontconfigs/bsd.fontconfig.properties Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/classes/sun/awt/fontconfigs/bsd.fontconfig.properties Sun Feb 10 09:27:00 2019 -0800 -@@ -26,134 +26,134 @@ - - # Version - --# Uses Fedora Core 6 fonts and file paths. -+# Uses FreeBSD ports Tree fonts and file paths. - version=1 - - # Component Font Mappings - --dialog.plain.latin-1=DejaVu LGC Sans -+dialog.plain.latin-1=DejaVu Sans - dialog.plain.japanese-x0208=Sazanami Gothic --dialog.plain.korean=Baekmuk Gulim --dialog.plain.chinese-big5=AR PL ShanHeiSun Uni --dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni -+dialog.plain.korean=NanumGothic -+dialog.plain.chinese-big5=AR PL UMing -+dialog.plain.chinese-gb18030=AR PL UMing - --dialog.bold.latin-1=DejaVu LGC Sans Bold -+dialog.bold.latin-1=DejaVu Sans Bold - dialog.bold.japanese-x0208=Sazanami Gothic --dialog.bold.korean=Baekmuk Gulim --dialog.bold.chinese-big5=AR PL ShanHeiSun Uni --dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni -+dialog.bold.korean=NanumGothic Bold -+dialog.bold.chinese-big5=AR PL UMing -+dialog.bold.chinese-gb18030=AR PL UMing - --dialog.italic.latin-1=DejaVu LGC Sans Oblique -+dialog.italic.latin-1=DejaVu Sans Oblique - dialog.italic.japanese-x0208=Sazanami Gothic --dialog.italic.korean=Baekmuk Gulim --dialog.italic.chinese-big5=AR PL ShanHeiSun Uni --dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni -+dialog.italic.korean=NanumGothic -+dialog.italic.chinese-big5=AR PL UMing -+dialog.italic.chinese-gb18030=AR PL UMing - --dialog.bolditalic.latin-1=DejaVu LGC Sans Bold Oblique -+dialog.bolditalic.latin-1=DejaVu Sans Bold Oblique - dialog.bolditalic.japanese-x0208=Sazanami Gothic --dialog.bolditalic.korean=Baekmuk Gulim --dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni --dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni -+dialog.bolditalic.korean=NanumGothic Bold -+dialog.bolditalic.chinese-big5=AR PL UMing -+dialog.bolditalic.chinese-gb18030=AR PL UMing - - --sansserif.plain.latin-1=DejaVu LGC Sans -+sansserif.plain.latin-1=DejaVu Sans - sansserif.plain.japanese-x0208=Sazanami Gothic --sansserif.plain.korean=Baekmuk Gulim --sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni --sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni -+sansserif.plain.korean=NanumGothic -+sansserif.plain.chinese-big5=AR PL UMing -+sansserif.plain.chinese-gb18030=AR PL UMing - --sansserif.bold.latin-1=DejaVu LGC Sans Bold -+sansserif.bold.latin-1=DejaVu Sans Bold - sansserif.bold.japanese-x0208=Sazanami Gothic --sansserif.bold.korean=Baekmuk Gulim --sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni --sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni -+sansserif.bold.korean=NanumGothic Bold -+sansserif.bold.chinese-big5=AR PL UMing -+sansserif.bold.chinese-gb18030=AR PL UMing - --sansserif.italic.latin-1=DejaVu LGC Sans Oblique -+sansserif.italic.latin-1=DejaVu Sans Oblique - sansserif.italic.japanese-x0208=Sazanami Gothic --sansserif.italic.korean=Baekmuk Gulim --sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni --sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni -+sansserif.italic.korean=NanumGothic -+sansserif.italic.chinese-big5=AR PL UMing -+sansserif.italic.chinese-gb18030=AR PL UMing - --sansserif.bolditalic.latin-1=DejaVu LGC Sans Bold Oblique -+sansserif.bolditalic.latin-1=DejaVu Sans Bold Oblique - sansserif.bolditalic.japanese-x0208=Sazanami Gothic --sansserif.bolditalic.korean=Baekmuk Gulim --sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni --sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni -+sansserif.bolditalic.korean=NanumGothic Bold -+sansserif.bolditalic.chinese-big5=AR PL UMing -+sansserif.bolditalic.chinese-gb18030=AR PL UMing - - --serif.plain.latin-1=DejaVu LGC Serif -+serif.plain.latin-1=DejaVu Serif - serif.plain.japanese-x0208=Sazanami Mincho --serif.plain.korean=Baekmuk Batang --serif.plain.chinese-big5=AR PL ZenKai Uni --serif.plain.chinese-gb18030=AR PL ZenKai Uni -+serif.plain.korean=NanumMyeongjo -+serif.plain.chinese-big5=AR PL UKai -+serif.plain.chinese-gb18030=AR PL UKai - --serif.bold.latin-1=DejaVu LGC Serif Bold -+serif.bold.latin-1=DejaVu Serif Bold - serif.bold.japanese-x0208=Sazanami Mincho --serif.bold.korean=Baekmuk Batang --serif.bold.chinese-big5=AR PL ZenKai Uni --serif.bold.chinese-gb18030=AR PL ZenKai Uni -+serif.bold.korean=NanumMyeongjo Bold -+serif.bold.chinese-big5=AR PL UKai -+serif.bold.chinese-gb18030=AR PL UKai - --serif.italic.latin-1=DejaVu LGC Serif Oblique -+serif.italic.latin-1=DejaVu Serif Italic - serif.italic.japanese-x0208=Sazanami Mincho --serif.italic.korean=Baekmuk Batang --serif.italic.chinese-big5=AR PL ZenKai Uni --serif.italic.chinese-gb18030=AR PL ZenKai Uni -+serif.italic.korean=NanumMyeongjo -+serif.italic.chinese-big5=AR PL UKai -+serif.italic.chinese-gb18030=AR PL UKai - --serif.bolditalic.latin-1=DejaVu LGC Serif Bold Oblique -+serif.bolditalic.latin-1=DejaVu Serif Bold Italic - serif.bolditalic.japanese-x0208=Sazanami Mincho --serif.bolditalic.korean=Baekmuk Batang --serif.bolditalic.chinese-big5=AR PL ZenKai Uni --serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni -+serif.bolditalic.korean=NanumMyeongjo Bold -+serif.bolditalic.chinese-big5=AR PL UKai -+serif.bolditalic.chinese-gb18030=AR PL UKai - - --monospaced.plain.latin-1=DejaVu LGC Sans Mono -+monospaced.plain.latin-1=DejaVu Sans Mono - monospaced.plain.japanese-x0208=Sazanami Gothic --monospaced.plain.korean=Baekmuk Gulim --monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni --monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni -+monospaced.plain.korean=NanumGothic -+monospaced.plain.chinese-big5=AR PL UMing -+monospaced.plain.chinese-gb18030=AR PL UMing - --monospaced.bold.latin-1=DejaVu LGC Sans Mono Bold -+monospaced.bold.latin-1=DejaVu Sans Mono Bold - monospaced.bold.japanese-x0208=Sazanami Gothic --monospaced.bold.korean=Baekmuk Gulim --monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni --monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni -+monospaced.bold.korean=NanumGothic Bold -+monospaced.bold.chinese-big5=AR PL UMing -+monospaced.bold.chinese-gb18030=AR PL UMing - --monospaced.italic.latin-1=DejaVu LGC Sans Mono Oblique -+monospaced.italic.latin-1=DejaVu Sans Mono Oblique - monospaced.italic.japanese-x0208=Sazanami Gothic --monospaced.italic.korean=Baekmuk Gulim --monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni --monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni -+monospaced.italic.korean=NanumGothic -+monospaced.italic.chinese-big5=AR PL UMing -+monospaced.italic.chinese-gb18030=AR PL UMing - --monospaced.bolditalic.latin-1=DejaVu LGC Sans Mono Bold Oblique -+monospaced.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique - monospaced.bolditalic.japanese-x0208=Sazanami Gothic --monospaced.bolditalic.korean=Baekmuk Gulim --monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni --monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni -+monospaced.bolditalic.korean=NanumGothic Bold -+monospaced.bolditalic.chinese-big5=AR PL UMing -+monospaced.bolditalic.chinese-gb18030=AR PL UMing - - --dialoginput.plain.latin-1=DejaVu LGC Sans Mono -+dialoginput.plain.latin-1=DejaVu Sans Mono - dialoginput.plain.japanese-x0208=Sazanami Gothic --dialoginput.plain.korean=Baekmuk Gulim --dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni --dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni -+dialoginput.plain.korean=NanumGothic -+dialoginput.plain.chinese-big5=AR PL UMing -+dialoginput.plain.chinese-gb18030=AR PL UMing - --dialoginput.bold.latin-1=DejaVu LGC Sans Mono Bold -+dialoginput.bold.latin-1=DejaVu Sans Mono Bold - dialoginput.bold.japanese-x0208=Sazanami Gothic --dialoginput.bold.korean=Baekmuk Gulim --dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni --dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni -+dialoginput.bold.korean=NanumGothic Bold -+dialoginput.bold.chinese-big5=AR PL UMing -+dialoginput.bold.chinese-gb18030=AR PL UMing - --dialoginput.italic.latin-1=DejaVu LGC Sans Mono Oblique -+dialoginput.italic.latin-1=DejaVu Sans Mono Oblique - dialoginput.italic.japanese-x0208=Sazanami Gothic --dialoginput.italic.korean=Baekmuk Gulim --dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni --dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni -+dialoginput.italic.korean=NanumGothic -+dialoginput.italic.chinese-big5=AR PL UMing -+dialoginput.italic.chinese-gb18030=AR PL UMing - --dialoginput.bolditalic.latin-1=DejaVu LGC Sans Mono Bold Oblique -+dialoginput.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique - dialoginput.bolditalic.japanese-x0208=Sazanami Gothic --dialoginput.bolditalic.korean=Baekmuk Gulim --dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni --dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni -+dialoginput.bolditalic.korean=NanumGothic Bold -+dialoginput.bolditalic.chinese-big5=AR PL UMing -+dialoginput.bolditalic.chinese-gb18030=AR PL UMing - - # Search Sequences - -@@ -166,24 +166,27 @@ - - # Font File Names - --filename.DejaVu_LGC_Sans=/usr/share/fonts/dejavu-lgc/DejaVuLGCSans.ttf --filename.DejaVu_LGC_Sans_Bold=/usr/share/fonts/dejavu-lgc/DejaVuLGCSans-Bold.ttf --filename.DejaVu_LGC_Sans_Oblique=/usr/share/fonts/dejavu-lgc/DejaVuLGCSans-Oblique.ttf --filename.DejaVu_LGC_Sans_Bold_Oblique=/usr/share/fonts/dejavu-lgc/DejaVuLGCSans-BoldOblique.ttf -+## FIXME: Should not hardcode /usr/local -+filename.DejaVu_Sans=/usr/local/lib/X11/fonts/dejavu/DejaVuSans.ttf -+filename.DejaVu_Sans_Bold=/usr/local/lib/X11/fonts/dejavu/DejaVuSans-Bold.ttf -+filename.DejaVu_Sans_Oblique=/usr/local/lib/X11/fonts/dejavu/DejaVuSans-Oblique.ttf -+filename.DejaVu_Sans_Bold_Oblique=/usr/local/lib/X11/fonts/dejavu/DejaVuSans-BoldOblique.ttf - --filename.DejaVu_LGC_Sans_Mono=/usr/share/fonts/dejavu-lgc/DejaVuLGCSansMono.ttf --filename.DejaVu_LGC_Sans_Mono_Bold=/usr/share/fonts/dejavu-lgc/DejaVuLGCSansMono-Bold.ttf --filename.DejaVu_LGC_Sans_Mono_Oblique=/usr/share/fonts/dejavu-lgc/DejaVuLGCSansMono-Oblique.ttf --filename.DejaVu_LGC_Sans_Mono_Bold_Oblique=/usr/share/fonts/dejavu-lgc/DejaVuLGCSansMono-BoldOblique.ttf -+filename.DejaVu_Sans_Mono=/usr/local/lib/X11/fonts/dejavu/DejaVuSansMono.ttf -+filename.DejaVu_Sans_Mono_Bold=/usr/local/lib/X11/fonts/dejavu/DejaVuSansMono-Bold.ttf -+filename.DejaVu_Sans_Mono_Oblique=/usr/local/lib/X11/fonts/dejavu/DejaVuSansMono-Oblique.ttf -+filename.DejaVu_Sans_Mono_Bold_Oblique=/usr/local/lib/X11/fonts/dejavu/DejaVuSansMono-BoldOblique.ttf - --filename.DejaVu_LGC_Serif=/usr/share/fonts/dejavu-lgc/DejaVuLGCSerif.ttf --filename.DejaVu_LGC_Serif_Bold=/usr/share/fonts/dejavu-lgc/DejaVuLGCSerif-Bold.ttf --filename.DejaVu_LGC_Serif_Oblique=/usr/share/fonts/dejavu-lgc/DejaVuLGCSerif-Oblique.ttf --filename.DejaVu_LGC_Serif_Bold_Oblique=/usr/share/fonts/dejavu-lgc/DejaVuLGCSerif-BoldOblique.ttf -+filename.DejaVu_Serif=/usr/local/lib/X11/fonts/dejavu/DejaVuSerif.ttf -+filename.DejaVu_Serif_Bold=/usr/local/lib/X11/fonts/dejavu/DejaVuSerif-Bold.ttf -+filename.DejaVu_Serif_Italic=/usr/local/lib/X11/fonts/dejavu/DejaVuSerif-Italic.ttf -+filename.DejaVu_Serif_Bold_Italic=/usr/local/lib/X11/fonts/dejavu/DejaVuSerif-BoldItalic.ttf - --filename.Sazanami_Gothic=/usr/share/fonts/japanese/TrueType/sazanami-gothic.ttf --filename.Sazanami_Mincho=/usr/share/fonts/japanese/TrueType/sazanami-mincho.ttf --filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/chinese/TrueType/uming.ttf --filename.AR_PL_ZenKai_Uni=/usr/share/fonts/chinese/TrueType/ukai.ttf --filename.Baekmuk_Gulim=/usr/share/fonts/korean/TrueType/gulim.ttf --filename.Baekmuk_Batang=/usr/share/fonts/korean/TrueType/batang.ttf -+filename.Sazanami_Gothic=/usr/local/share/font-sazanami/sazanami-gothic.ttf -+filename.Sazanami_Mincho=/usr/local/share/font-sazanami/sazanami-mincho.ttf -+filename.AR_PL_ShanHeiSun_Uni=/usr/local/share/fonts/TrueType/uming.ttc -+filename.AR_PL_ZenKai_Uni=/usr/local/share/fonts/TrueType/ukai.ttc -+filename.NanumGothic=/usr/local/lib/X11/fonts/nanum-ttf/NanumGothic.ttf -+filename.NanumGothic_Bold=/usr/local/lib/X11/fonts/nanum-ttf/NanumGothicBold.ttf -+filename.NanumMyeongjo=/usr/local/lib/X11/fonts/nanum-ttf/NanumMyeongjo.ttf -+filename.NanumMyeongjo_Bold=/usr/local/lib/X11/fonts/nanum-ttf/NanumMyeongjoBold.ttf ---- ./jdk/src/solaris/classes/sun/net/PortConfig.java Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/classes/sun/net/PortConfig.java Sun Feb 10 09:27:00 2019 -0800 -@@ -52,7 +52,7 @@ - } else if (os.startsWith("SunOS")) { - defaultLower = 32768; - defaultUpper = 65535; -- } else if (os.contains("OS X")) { -+ } else if (os.endsWith("BSD") || os.contains("OS X")) { - defaultLower = 49152; - defaultUpper = 65535; - } else if (os.startsWith("AIX")) { ---- ./jdk/src/solaris/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java Sun Feb 10 09:27:00 2019 -0800 -@@ -66,7 +66,7 @@ - return createProvider("sun.nio.ch.SolarisAsynchronousChannelProvider"); - if (osname.equals("Linux")) - return createProvider("sun.nio.ch.LinuxAsynchronousChannelProvider"); -- if (osname.contains("OS X")) -+ if (osname.endsWith("BSD") || osname.contains("OS X")) - return createProvider("sun.nio.ch.BsdAsynchronousChannelProvider"); - if (osname.equals("AIX")) - return createProvider("sun.nio.ch.AixAsynchronousChannelProvider"); ---- ./jdk/src/solaris/classes/sun/nio/fs/BsdFileSystem.java Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/classes/sun/nio/fs/BsdFileSystem.java Sun Feb 10 09:27:00 2019 -0800 -@@ -73,7 +73,7 @@ - * Returns object to iterate over mount entries - */ - @Override -- Iterable<UnixMountEntry> getMountEntries() { -+ List<UnixMountEntry> getMountEntries() { - ArrayList<UnixMountEntry> entries = new ArrayList<UnixMountEntry>(); - try { - long iter = BsdNativeDispatcher.getfsstat(); ---- ./jdk/src/solaris/classes/sun/nio/fs/BsdFileSystemProvider.java Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/classes/sun/nio/fs/BsdFileSystemProvider.java Sun Feb 10 09:27:00 2019 -0800 -@@ -25,10 +25,14 @@ - - package sun.nio.fs; - -+import java.nio.file.*; -+import java.nio.file.spi.FileTypeDetector; - import java.io.IOException; -+import java.security.AccessController; -+import sun.security.action.GetPropertyAction; - - /** -- * Bsd implementation of FileSystemProvider -+ * BSD implementation of FileSystemProvider - */ - - public class BsdFileSystemProvider extends UnixFileSystemProvider { -@@ -45,4 +49,16 @@ - BsdFileStore getFileStore(UnixPath path) throws IOException { - return new BsdFileStore(path); - } -+ -+ @Override -+ FileTypeDetector getFileTypeDetector() { -+ Path userMimeTypes = Paths.get(AccessController.doPrivileged( -+ new GetPropertyAction("user.home")), ".mime.types"); -+ Path etcMimeTypes = Paths.get("/etc/mime.types"); -+ -+ return chain(new GnomeFileTypeDetector(), -+ new MimeTypesFileTypeDetector(userMimeTypes), -+ new MimeTypesFileTypeDetector(etcMimeTypes), -+ new MagicFileTypeDetector()); -+ } - } ---- ./jdk/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java Sun Feb 10 09:27:00 2019 -0800 -@@ -61,6 +61,8 @@ - return createProvider("sun.nio.fs.SolarisFileSystemProvider"); - if (osname.equals("Linux")) - return createProvider("sun.nio.fs.LinuxFileSystemProvider"); -+ if (osname.endsWith("BSD")) -+ return createProvider("sun.nio.fs.BsdFileSystemProvider"); - if (osname.contains("OS X")) - return createProvider("sun.nio.fs.MacOSXFileSystemProvider"); - if (osname.equals("AIX")) ---- ./jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java Sun Feb 10 09:27:00 2019 -0800 -@@ -161,6 +161,7 @@ - - static boolean isBSD() { - return (osname.equals("Linux") || -+ osname.endsWith("BSD") || - osname.contains("OS X")); - } - -@@ -175,12 +176,12 @@ - static int cmdIndex = UNINITIALIZED; - - String[] lpcFirstCom = { -- "/usr/sbin/lpc status | grep : | sed -ne '1,1 s/://p'", -+ "/usr/sbin/lpc status all | grep ':$' | sed -ne '1,1 s/://p'", - "/usr/sbin/lpc status | grep -E '^[ 0-9a-zA-Z_-]*@' | awk -F'@' '{print $1}'" - }; - - String[] lpcAllCom = { -- "/usr/sbin/lpc status all | grep : | sed -e 's/://'", -+ "/usr/sbin/lpc status all | grep ':$' | sed -e 's/://'", - "/usr/sbin/lpc status all | grep -E '^[ 0-9a-zA-Z_-]*@' | awk -F'@' '{print $1}' | sort" - }; - ---- ./jdk/src/solaris/classes/sun/tools/attach/BsdVirtualMachine.java Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/classes/sun/tools/attach/BsdVirtualMachine.java Sun Feb 10 09:27:00 2019 -0800 -@@ -273,7 +273,7 @@ - try { - b = s.getBytes("UTF-8"); - } catch (java.io.UnsupportedEncodingException x) { -- throw new InternalError(); -+ throw new InternalError(x); - } - BsdVirtualMachine.write(fd, b, 0, b.length); - } ---- ./jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_PCM.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_PCM.c Sun Feb 10 09:27:00 2019 -0800 -@@ -675,6 +675,7 @@ - return -1; - } - return 1; -+#ifdef ESTRPIPE - } else if (err == -ESTRPIPE) { - TRACE0("xrun_recovery: suspended.\n"); - ret = snd_pcm_resume(info->handle); -@@ -690,6 +691,7 @@ - return -1; - } - return 1; -+#endif - } else if (err == -EAGAIN) { - TRACE0("xrun_recovery: EAGAIN try again flag.\n"); - return 0; ---- ./jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_SolarisOS_PCM.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_SolarisOS_PCM.c Sun Feb 10 09:27:00 2019 -0800 -@@ -140,7 +140,7 @@ - (float) ((int) sr->samp_rates[s]), - DAUDIO_PCM, /* encoding - let's only do PCM */ - (bits[b] > 8)?TRUE:TRUE, /* isSigned */ --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - FALSE /* little endian */ - #else - (bits[b] > 8)?TRUE:FALSE /* big endian */ ---- ./jdk/src/solaris/native/common/jni_util_md.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/native/common/jni_util_md.c Sun Feb 10 09:27:00 2019 -0800 -@@ -28,6 +28,7 @@ - #include "jni.h" - #include "jni_util.h" - #include "dlfcn.h" -+#include <string.h> - - jstring nativeNewStringPlatform(JNIEnv *env, const char *str) { - return NULL; ---- ./jdk/src/solaris/native/java/lang/java_props_md.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/native/java/lang/java_props_md.c Sun Feb 10 09:27:00 2019 -0800 -@@ -111,7 +111,7 @@ - lc = setlocale(cat, NULL); - #endif - --#ifndef __linux__ -+#if !defined(__linux__) && !defined(__FreeBSD__) - if (lc == NULL) { - return 0; - } -@@ -528,23 +528,11 @@ - sprops.sun_jnu_encoding = sprops.encoding; - #endif - --#ifdef _ALLBSD_SOURCE --#if BYTE_ORDER == _LITTLE_ENDIAN -- sprops.unicode_encoding = "UnicodeLittle"; -- #else -- sprops.unicode_encoding = "UnicodeBig"; -- #endif --#else /* !_ALLBSD_SOURCE */ --#ifdef __linux__ --#if __BYTE_ORDER == __LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - sprops.unicode_encoding = "UnicodeLittle"; - #else - sprops.unicode_encoding = "UnicodeBig"; - #endif --#else -- sprops.unicode_encoding = "UnicodeBig"; --#endif --#endif /* _ALLBSD_SOURCE */ - - /* user properties */ - { ---- ./jdk/src/solaris/native/java/net/Inet4AddressImpl.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/native/java/net/Inet4AddressImpl.c Sun Feb 10 09:27:00 2019 -0800 -@@ -36,20 +36,13 @@ - #include <stdlib.h> - #include <ctype.h> - --#ifdef _ALLBSD_SOURCE --#include <unistd.h> --#include <sys/param.h> --#endif -- - #include "jvm.h" - #include "jni_util.h" - #include "net_util.h" - - #include "java_net_Inet4AddressImpl.h" - --#if defined(__GLIBC__) || (defined(__FreeBSD__) && (__FreeBSD_version >= 601104)) --#define HAS_GLIBC_GETHOSTBY_R 1 --#endif -+extern jobjectArray lookupIfLocalhost(JNIEnv *env, const char *hostname, jboolean includeV6); - - - #if defined(_ALLBSD_SOURCE) && !defined(HAS_GLIBC_GETHOSTBY_R) -@@ -415,6 +408,17 @@ - } - #endif - -+#ifdef _ALLBSD_SOURCE -+ /* If we're looking up the local machine, bypass DNS lookups and get -+ * address from getifaddrs. -+ */ -+ ret = lookupIfLocalhost(env, hostname, JNI_FALSE); -+ if (ret != NULL || (*env)->ExceptionCheck(env)) { -+ JNU_ReleaseStringPlatformChars(env, host, hostname); -+ return ret; -+ } -+#endif -+ - error = getaddrinfo(hostname, NULL, &hints, &res); - - if (error) { ---- ./jdk/src/solaris/native/java/net/Inet6AddressImpl.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/native/java/net/Inet6AddressImpl.c Sun Feb 10 09:27:00 2019 -0800 -@@ -33,7 +33,7 @@ - #include <strings.h> - #include <stdlib.h> - #include <ctype.h> --#ifdef MACOSX -+#ifdef _ALLBSD_SOURCE - #include <ifaddrs.h> - #include <net/if.h> - #include <unistd.h> /* gethostname */ -@@ -99,9 +99,9 @@ - return (*env)->NewStringUTF(env, hostname); - } - --#ifdef MACOSX -+#ifdef _ALLBSD_SOURCE - /* also called from Inet4AddressImpl.c */ --__private_extern__ jobjectArray -+jobjectArray - lookupIfLocalhost(JNIEnv *env, const char *hostname, jboolean includeV6) - { - jobjectArray result = NULL; -@@ -256,6 +256,19 @@ - hostname = JNU_GetStringPlatformChars(env, host, JNI_FALSE); - CHECK_NULL_RETURN(hostname, NULL); - -+#ifdef _ALLBSD_SOURCE -+ /* -+ * If we're looking up the local machine, attempt to get the address -+ * from getifaddrs. This ensures we get an IPv6 address for the local -+ * machine. -+ */ -+ ret = lookupIfLocalhost(env, hostname, JNI_TRUE); -+ if (ret != NULL || (*env)->ExceptionCheck(env)) { -+ JNU_ReleaseStringPlatformChars(env, host, hostname); -+ return ret; -+ } -+#endif -+ - #ifdef AF_INET6 - /* Try once, with our static buffer. */ - memset(&hints, 0, sizeof(hints)); ---- ./jdk/src/solaris/native/java/net/NetworkInterface.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/native/java/net/NetworkInterface.c Sun Feb 10 09:27:00 2019 -0800 -@@ -58,14 +58,19 @@ - #include <sys/param.h> - #include <sys/ioctl.h> - #include <sys/sockio.h> --#if defined(__APPLE__) -+#if defined(__APPLE__) || defined(__FreeBSD__) - #include <net/ethernet.h> - #include <net/if_var.h> -+#elif defined(__OpenBSD__) -+#include <netinet/if_ether.h> -+#include <netinet6/in6_var.h> -+#elif defined(__NetBSD__) -+#include <net/if_ether.h> -+#endif - #include <net/if_dl.h> - #include <netinet/in_var.h> - #include <ifaddrs.h> - #endif --#endif - - #include "jvm.h" - #include "jni_util.h" ---- ./jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c Sun Feb 10 09:27:00 2019 -0800 -@@ -2243,7 +2243,7 @@ - } - } - #endif --#ifdef MACOSX -+#ifdef _ALLBSD_SOURCE - if (family == AF_INET6 && index == 0) { - index = getDefaultScopeID(env); - } ---- ./jdk/src/solaris/native/java/net/PlainSocketImpl.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/native/java/net/PlainSocketImpl.c Sun Feb 10 09:27:00 2019 -0800 -@@ -215,6 +215,7 @@ - } - - #ifdef AF_INET6 -+#ifndef __OpenBSD__ - /* Disable IPV6_V6ONLY to ensure dual-socket support */ - if (domain == AF_INET6) { - int arg = 0; -@@ -225,6 +226,7 @@ - return; - } - } -+#endif /* ! __OpenBSD__ */ - #endif /* AF_INET6 */ - - /* ---- ./jdk/src/solaris/native/java/net/bsd_close.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/native/java/net/bsd_close.c Sun Feb 10 09:27:00 2019 -0800 -@@ -320,11 +320,8 @@ - } - - int NET_Accept(int s, struct sockaddr *addr, int *addrlen) { -- socklen_t len = *addrlen; -- int error = accept(s, addr, &len); -- if (error != -1) -- *addrlen = (int)len; -- BLOCKING_IO_RETURN_INT( s, error ); -+ /* See NET_RecvFrom() */ -+ BLOCKING_IO_RETURN_INT( s, accept(s, addr, (socklen_t *)addrlen) ); - } - - int NET_Connect(int s, struct sockaddr *addr, int addrlen) { -@@ -349,6 +346,68 @@ - * signal other than our wakeup signal. - */ - int NET_Timeout0(int s, long timeout, long currentTime) { -+/* -+ * On MacOS X, poll(2) is not working correctly, so a select(2) based -+ * implementation is preferred. See -+ * -+ * http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7131399 -+ * -+ * However, on FreeBSD, the select(2) based implementation can cause -+ * crashes under load and poll(2) is preferred. See -+ * -+ * http://docs.freebsd.org/cgi/getmsg.cgi?fetch=215525+0+current/freebsd-java -+ * -+ * Other *BSD will use poll(2) for now, but please adjust as appropriate. -+ */ -+#ifndef __APPLE__ -+ long prevtime = currentTime, newtime; -+ struct timeval t; -+ fdEntry_t *fdEntry = getFdEntry(s); -+ -+ /* -+ * Check that fd hasn't been closed. -+ */ -+ if (fdEntry == NULL) { -+ errno = EBADF; -+ return -1; -+ } -+ -+ for(;;) { -+ struct pollfd pfd; -+ int rv; -+ threadEntry_t self; -+ -+ /* -+ * Poll the fd. If interrupted by our wakeup signal -+ * errno will be set to EBADF. -+ */ -+ pfd.fd = s; -+ pfd.events = POLLIN | POLLERR; -+ -+ startOp(fdEntry, &self); -+ rv = poll(&pfd, 1, timeout); -+ endOp(fdEntry, &self); -+ -+ /* -+ * If interrupted then adjust timeout. If timeout -+ * has expired return 0 (indicating timeout expired). -+ */ -+ if (rv < 0 && errno == EINTR) { -+ if (timeout > 0) { -+ gettimeofday(&t, NULL); -+ newtime = t.tv_sec * 1000 + t.tv_usec / 1000; -+ timeout -= newtime - prevtime; -+ if (timeout <= 0) { -+ return 0; -+ } -+ prevtime = newtime; -+ } -+ } else { -+ return rv; -+ } -+ -+ } -+#else - long prevtime = currentTime, newtime; - struct timeval t, *tp = &t; - fd_set fds; -@@ -432,4 +491,5 @@ - } - - } -+#endif - } ---- ./jdk/src/solaris/native/java/net/net_util_md.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/native/java/net/net_util_md.c Sun Feb 10 09:27:00 2019 -0800 -@@ -46,6 +46,10 @@ - #endif - #endif - -+#ifdef __OpenBSD__ -+#include <sys/socketvar.h> -+#endif -+ - #ifdef __solaris__ - #include <sys/sockio.h> - #include <stropts.h> -@@ -81,7 +85,7 @@ - - void setDefaultScopeID(JNIEnv *env, struct sockaddr *him) - { --#ifdef MACOSX -+#ifdef _ALLBSD_SOURCE - static jclass ni_class = NULL; - static jfieldID ni_defaultIndexID; - if (ni_class == NULL) { ---- ./jdk/src/solaris/native/java/nio/MappedByteBuffer.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/native/java/nio/MappedByteBuffer.c Sun Feb 10 09:27:00 2019 -0800 -@@ -36,6 +36,9 @@ - Java_java_nio_MappedByteBuffer_isLoaded0(JNIEnv *env, jobject obj, jlong address, - jlong len, jint numPages) - { -+#ifdef __OpenBSD__ -+ return JNI_FALSE; -+#else - jboolean loaded = JNI_TRUE; - int result = 0; - int i = 0; -@@ -66,6 +69,7 @@ - } - free(vec); - return loaded; -+#endif - } - - ---- ./jdk/src/solaris/native/java/util/TimeZone_md.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/native/java/util/TimeZone_md.c Sun Feb 10 09:27:00 2019 -0800 -@@ -56,7 +56,11 @@ - #endif - - #if defined(__linux__) || defined(_ALLBSD_SOURCE) -+#ifdef __FreeBSD__ -+static const char *ETC_TIMEZONE_FILE = "/var/db/zoneinfo"; -+#else - static const char *ETC_TIMEZONE_FILE = "/etc/timezone"; -+#endif - static const char *ZONEINFO_DIR = "/usr/share/zoneinfo"; - static const char *DEFAULT_ZONEINFO_FILE = "/etc/localtime"; - #else -@@ -69,7 +73,7 @@ - static const char *ETC_ENVIRONMENT_FILE = "/etc/environment"; - #endif - --#if defined(__linux__) || defined(MACOSX) || defined(__solaris__) -+#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined(__solaris__) - - /* - * Returns a pointer to the zone ID portion of the given zoneinfo file -@@ -215,7 +219,7 @@ - return tz; - } - --#if defined(__linux__) || defined(MACOSX) -+#if defined(__linux__) || defined(_ALLBSD_SOURCE) - - /* - * Performs Linux specific mapping and returns a zone ID -@@ -231,7 +235,7 @@ - char *buf; - size_t size; - --#if defined(__linux__) -+#if defined(__linux__) || defined(_ALLBSD_SOURCE) - /* - * Try reading the /etc/timezone file for Debian distros. There's - * no spec of the file format available. This parsing assumes that -@@ -255,7 +259,7 @@ - return tz; - } - } --#endif /* defined(__linux__) */ -+#endif /* __linux__ || _ALLBSD_SOURCE */ - - /* - * Next, try /etc/localtime to find the zone ID. -@@ -815,7 +819,7 @@ - * Returns a GMT-offset-based zone ID. (e.g., "GMT-08:00") - */ - --#if defined(MACOSX) -+#if defined(_ALLBSD_SOURCE) - - char * - getGMTOffsetID() -@@ -877,4 +881,4 @@ - sign, (int)(offset/3600), (int)((offset%3600)/60)); - return strdup(buf); - } --#endif /* MACOSX */ -+#endif /* _ALLBSD_SOURCE */ ---- ./jdk/src/solaris/native/sun/awt/awt_Font.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/native/sun/awt/awt_Font.c Sun Feb 10 09:27:00 2019 -0800 -@@ -255,7 +255,7 @@ - if (strcmp(style, "regular") == 0) { - altstyle = "roman"; - } --#if defined(__linux__) || defined(MACOSX) -+#if defined(__linux__) || defined(_ALLBSD_SOURCE) - if (!strcmp(family, "lucidasans")) { - family = "lucida"; - } ---- ./jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c Sun Feb 10 09:27:00 2019 -0800 -@@ -121,7 +121,7 @@ - */ - - #define MAXFRAMEBUFFERS 16 --#if defined(__linux__) || defined(MACOSX) -+#if defined(__linux__) || defined(_ALLBSD_SOURCE) - typedef struct { - int screen_number; - short x_org; -@@ -427,20 +427,15 @@ - if (XQueryExtension(awt_display, "RENDER", - &major_opcode, &first_event, &first_error)) - { -- xrenderLibHandle = dlopen("libXrender.so.1", RTLD_LAZY | RTLD_GLOBAL); -- --#ifdef MACOSX --#define XRENDER_LIB "/usr/X11/lib/libXrender.dylib" --#else --#define XRENDER_LIB "libXrender.so" --#endif -+ xrenderLibHandle = dlopen(VERSIONED_JNI_LIB_NAME("Xrender", "1"), -+ RTLD_LAZY | RTLD_GLOBAL); - - if (xrenderLibHandle == NULL) { -- xrenderLibHandle = dlopen(XRENDER_LIB, -+ xrenderLibHandle = dlopen(JNI_LIB_NAME("Xrender"), - RTLD_LAZY | RTLD_GLOBAL); - } - --#ifndef __linux__ /* SOLARIS */ -+#if !defined(__linux__) && !defined(_ALLBSD_SOURCE) /* SOLARIS */ - if (xrenderLibHandle == NULL) { - xrenderLibHandle = dlopen("/usr/sfw/lib/libXrender.so.1", - RTLD_LAZY | RTLD_GLOBAL); -@@ -584,7 +579,7 @@ - } - - #ifndef HEADLESS --#if defined(__linux__) || defined(MACOSX) -+#if defined(__linux__) || defined(_ALLBSD_SOURCE) - static void xinerama_init_linux() - { - void* libHandle = NULL; -@@ -635,7 +630,7 @@ - } - } - #endif --#if !defined(__linux__) && !defined(MACOSX) /* Solaris */ -+#if !defined(__linux__) && !defined(_ALLBSD_SOURCE) /* Solaris */ - static void xinerama_init_solaris() - { - void* libHandle = NULL; -@@ -695,11 +690,11 @@ - } - - DTRACE_PRINTLN("Xinerama extension is available"); --#if defined(__linux__) || defined(MACOSX) -+#if defined(__linux__) || defined(_ALLBSD_SOURCE) - xinerama_init_linux(); - #else /* Solaris */ - xinerama_init_solaris(); --#endif /* __linux__ || MACOSX */ -+#endif /* __linux__ || _ALLBSD_SOURCE */ - } - #endif /* HEADLESS */ - -@@ -1597,7 +1592,7 @@ - { - jobject point = NULL; - #ifndef HEADLESS /* return NULL in HEADLESS, Linux */ --#if !defined(__linux__) && !defined(MACOSX) -+#if !defined(__linux__) && !defined(_ALLBSD_SOURCE) - int x,y; - - AWT_LOCK(); -@@ -1610,7 +1605,7 @@ - DTRACE_PRINTLN("unable to call XineramaSolarisCenterFunc: symbol is null"); - } - AWT_FLUSH_UNLOCK(); --#endif /* __linux __ || MACOSX */ -+#endif /* __linux __ || _ALLBSD_SOURCE */ - #endif /* HEADLESS */ - return point; - } ---- ./jdk/src/solaris/native/sun/awt/awt_InputMethod.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/native/sun/awt/awt_InputMethod.c Sun Feb 10 09:27:00 2019 -0800 -@@ -53,7 +53,7 @@ - XIMPreeditDrawCallbackStruct *); - static void PreeditCaretCallback(XIC, XPointer, - XIMPreeditCaretCallbackStruct *); --#if defined(__linux__) || defined(MACOSX) -+#if defined(__linux__) || defined(_ALLBSD_SOURCE) - static void StatusStartCallback(XIC, XPointer, XPointer); - static void StatusDoneCallback(XIC, XPointer, XPointer); - static void StatusDrawCallback(XIC, XPointer, -@@ -67,7 +67,7 @@ - #define PreeditDoneIndex 1 - #define PreeditDrawIndex 2 - #define PreeditCaretIndex 3 --#if defined(__linux__) || defined(MACOSX) -+#if defined(__linux__) || defined(_ALLBSD_SOURCE) - #define StatusStartIndex 4 - #define StatusDoneIndex 5 - #define StatusDrawIndex 6 -@@ -85,14 +85,14 @@ - (XIMProc)PreeditDoneCallback, - (XIMProc)PreeditDrawCallback, - (XIMProc)PreeditCaretCallback, --#if defined(__linux__) || defined(MACOSX) -+#if defined(__linux__) || defined(_ALLBSD_SOURCE) - (XIMProc)StatusStartCallback, - (XIMProc)StatusDoneCallback, - (XIMProc)StatusDrawCallback, - #endif - }; - --#if defined(__linux__) || defined(MACOSX) -+#if defined(__linux__) || defined(_ALLBSD_SOURCE) - #define MAX_STATUS_LEN 100 - typedef struct { - Window w; /*status window id */ -@@ -125,7 +125,7 @@ - XIMCallback *callbacks; /* callback parameters */ - jobject x11inputmethod; /* global ref to X11InputMethod instance */ - /* associated with the XIC */ --#if defined(__linux__) || defined(MACOSX) -+#if defined(__linux__) || defined(_ALLBSD_SOURCE) - StatusWindow *statusWindow; /* our own status window */ - #endif - char *lookup_buf; /* buffer used for XmbLookupString */ -@@ -371,7 +371,7 @@ - static void - freeX11InputMethodData(JNIEnv *env, X11InputMethodData *pX11IMData) - { --#if defined(__linux__) || defined(MACOSX) -+#if defined(__linux__) || defined(_ALLBSD_SOURCE) - if (pX11IMData->statusWindow != NULL){ - StatusWindow *sw = pX11IMData->statusWindow; - XFreeGC(awt_display, sw->lightGC); -@@ -474,7 +474,7 @@ - pX11IMData = getX11InputMethodData(env, currentX11InputMethodInstance); - - if (pX11IMData == NULL) { --#if defined(__linux__) || defined(MACOSX) -+#if defined(__linux__) || defined(_ALLBSD_SOURCE) - return False; - #else - return result; -@@ -482,7 +482,7 @@ - } - - if ((ic = pX11IMData->current_ic) == (XIC)0){ --#if defined(__linux__) || defined(MACOSX) -+#if defined(__linux__) || defined(_ALLBSD_SOURCE) - return False; - #else - return result; -@@ -574,7 +574,7 @@ - return result; - } - --#if defined(__linux__) || defined(MACOSX) -+#if defined(__linux__) || defined(_ALLBSD_SOURCE) - static StatusWindow *createStatusWindow( - Window parent) { - StatusWindow *statusWindow; -@@ -887,7 +887,7 @@ - } - } - } --#endif /* __linux__ || MACOSX */ -+#endif /* __linux__ || _ALLBSD_SOURCE */ - /* - * Creates two XICs, one for active clients and the other for passive - * clients. All information on those XICs are stored in the -@@ -930,7 +930,7 @@ - return FALSE ; - } - --#if defined(__linux__) || defined(MACOSX) -+#if defined(__linux__) || defined(_ALLBSD_SOURCE) - on_the_spot_styles |= XIMStatusNothing; - - /*kinput does not support XIMPreeditCallbacks and XIMStatusArea -@@ -943,9 +943,9 @@ - break; - } - } --#else /*! __linux__ && !MACOSX */ -+#else /*! __linux__ && !_ALLBSD_SOURCE */ - on_the_spot_styles |= XIMStatusNothing; --#endif /* __linux__ || MACOSX */ -+#endif /* __linux__ || _ALLBSD_SOURCE */ - - for (i = 0; i < im_styles->count_styles; i++) { - active_styles |= im_styles->supported_styles[i] & on_the_spot_styles; -@@ -999,7 +999,7 @@ - NULL); - if (preedit == (XVaNestedList)NULL) - goto err; --#if defined(__linux__) || defined(MACOSX) -+#if defined(__linux__) || defined(_ALLBSD_SOURCE) - /*always try XIMStatusCallbacks for active client...*/ - { - status = (XVaNestedList)XVaCreateNestedList(0, -@@ -1021,7 +1021,7 @@ - XFree((void *)status); - XFree((void *)preedit); - } --#else /* !__linux__ && !MACOSX */ -+#else /* !__linux__ && !_ALLBSD_SOURCE */ - pX11IMData->ic_active = XCreateIC(X11im, - XNClientWindow, w, - XNFocusWindow, w, -@@ -1029,7 +1029,7 @@ - XNPreeditAttributes, preedit, - NULL); - XFree((void *)preedit); --#endif /* __linux__ || MACOSX */ -+#endif /* __linux__ || _ALLBSD_SOURCE */ - } else { - pX11IMData->ic_active = XCreateIC(X11im, - XNClientWindow, w, -@@ -1189,7 +1189,7 @@ - - } - --#if defined(__linux__) || defined(MACOSX) -+#if defined(__linux__) || defined(_ALLBSD_SOURCE) - static void - StatusStartCallback(XIC ic, XPointer client_data, XPointer call_data) - { -@@ -1257,7 +1257,7 @@ - finally: - AWT_UNLOCK(); - } --#endif /* __linux__ || MACOSX */ -+#endif /* __linux__ || _ALLBSD_SOURCE */ - - static void CommitStringCallback(XIC ic, XPointer client_data, XPointer call_data) { - JNIEnv *env = GetJNIEnv(); -@@ -1354,14 +1354,14 @@ - /* Use IMInstantiate call back only on Linux, as there is a bug in Solaris - (4768335) - */ --#if defined(__linux__) || defined(MACOSX) -+#if defined(__linux__) || defined(_ALLBSD_SOURCE) - registered = XRegisterIMInstantiateCallback(dpy, NULL, NULL, - NULL, (XIDProc)OpenXIMCallback, NULL); - if (!registered) { - /* directly call openXIM callback */ - #endif - OpenXIMCallback(dpy, NULL, NULL); --#if defined(__linux__) || defined(MACOSX) -+#if defined(__linux__) || defined(_ALLBSD_SOURCE) - } - #endif - -@@ -1396,9 +1396,9 @@ - - globalRef = (*env)->NewGlobalRef(env, this); - pX11IMData->x11inputmethod = globalRef; --#if defined(__linux__) || defined(MACOSX) -+#if defined(__linux__) || defined(_ALLBSD_SOURCE) - pX11IMData->statusWindow = NULL; --#endif /* __linux__ || MACOSX */ -+#endif /* __linux__ || _ALLBSD_SOURCE */ - - pX11IMData->lookup_buf = 0; - pX11IMData->lookup_buf_len = 0; -@@ -1448,14 +1448,14 @@ - setXICFocus(pX11IMData->current_ic, req); - currentX11InputMethodInstance = pX11IMData->x11inputmethod; - currentFocusWindow = w; --#if defined(__linux__) || defined(MACOSX) -+#if defined(__linux__) || defined(_ALLBSD_SOURCE) - if (active && pX11IMData->statusWindow && pX11IMData->statusWindow->on) - onoffStatusWindow(pX11IMData, w, True); - #endif - } else { - currentX11InputMethodInstance = NULL; - currentFocusWindow = 0; --#if defined(__linux__) || defined(MACOSX) -+#if defined(__linux__) || defined(_ALLBSD_SOURCE) - onoffStatusWindow(pX11IMData, 0, False); - if (pX11IMData->current_ic != NULL) - #endif -@@ -1472,7 +1472,7 @@ - Java_sun_awt_X11InputMethod_turnoffStatusWindow(JNIEnv *env, - jobject this) - { --#if defined(__linux__) || defined(MACOSX) -+#if defined(__linux__) || defined(_ALLBSD_SOURCE) - X11InputMethodData *pX11IMData; - StatusWindow *statusWindow; - -@@ -1640,7 +1640,7 @@ - JNIEXPORT void JNICALL Java_sun_awt_X11_XInputMethod_adjustStatusWindow - (JNIEnv *env, jobject this, jlong window) - { --#if defined(__linux__) || defined(MACOSX) -+#if defined(__linux__) || defined(_ALLBSD_SOURCE) - AWT_LOCK(); - adjustStatusWindow(window); - AWT_UNLOCK(); ---- ./jdk/src/solaris/native/sun/awt/awt_Robot.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/native/sun/awt/awt_Robot.c Sun Feb 10 09:27:00 2019 -0800 -@@ -48,7 +48,7 @@ - #include "wsutils.h" - #include "list.h" - #include "multiVis.h" --#if defined(__linux__) || defined(MACOSX) -+#if defined(__linux__) || defined(_ALLBSD_SOURCE) - #include <sys/socket.h> - #endif - ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./jdk/src/solaris/native/sun/awt/extutil.h Sun Feb 10 09:27:00 2019 -0800 -@@ -0,0 +1,251 @@ -+/* -+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -+ * -+ * This code is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 only, as -+ * published by the Free Software Foundation. Oracle designates this -+ * particular file as subject to the "Classpath" exception as provided -+ * by Oracle in the LICENSE file that accompanied this code. -+ * -+ * This code is distributed in the hope that it will be useful, but WITHOUT -+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+ * version 2 for more details (a copy is included in the LICENSE file that -+ * accompanied this code). -+ * -+ * You should have received a copy of the GNU General Public License version -+ * 2 along with this work; if not, write to the Free Software Foundation, -+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -+ * or visit www.oracle.com if you need additional information or have any -+ * questions. -+ */ -+ -+/* -+ * This file is available under and governed by the GNU General Public -+ * License version 2 only, as published by the Free Software Foundation. -+ * However, the following notice accompanied the original version of this -+ * file: -+ * -+ * $Xorg: extutil.h,v 1.3 2000/08/18 04:05:45 coskrey Exp $ -+ * -+Copyright 1989, 1998 The Open Group -+ -+All Rights Reserved. -+ -+The above copyright notice and this permission notice shall be included in -+all copies or substantial portions of the Software. -+ -+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+ -+Except as contained in this notice, the name of The Open Group shall not be -+used in advertising or otherwise to promote the sale, use or other dealings -+in this Software without prior written authorization from The Open Group. -+ * -+ * Author: Jim Fulton, MIT The Open Group -+ * -+ * Xlib Extension-Writing Utilities -+ * -+ * This package contains utilities for writing the client API for various -+ * protocol extensions. THESE INTERFACES ARE NOT PART OF THE X STANDARD AND -+ * ARE SUBJECT TO CHANGE! -+ */ -+/* $XFree86: xc/include/extensions/extutil.h,v 1.5 2001/01/17 17:53:20 dawes Exp $ */ -+ -+#if defined(__linux__) || defined(_ALLBSD_SOURCE) -+ -+#ifndef _EXTUTIL_H_ -+#define _EXTUTIL_H_ -+ -+/* -+ * We need to keep a list of open displays since the Xlib display list isn't -+ * public. We also have to per-display info in a separate block since it isn't -+ * stored directly in the Display structure. -+ */ -+typedef struct _XExtDisplayInfo { -+ struct _XExtDisplayInfo *next; /* keep a linked list */ -+ Display *display; /* which display this is */ -+ XExtCodes *codes; /* the extension protocol codes */ -+ XPointer data; /* extra data for extension to use */ -+} XExtDisplayInfo; -+ -+typedef struct _XExtensionInfo { -+ XExtDisplayInfo *head; /* start of list */ -+ XExtDisplayInfo *cur; /* most recently used */ -+ int ndisplays; /* number of displays */ -+} XExtensionInfo; -+ -+typedef struct _XExtensionHooks { -+ int (*create_gc)( -+#if NeedNestedPrototypes -+ Display* /* display */, -+ GC /* gc */, -+ XExtCodes* /* codes */ -+#endif -+); -+ int (*copy_gc)( -+#if NeedNestedPrototypes -+ Display* /* display */, -+ GC /* gc */, -+ XExtCodes* /* codes */ -+#endif -+); -+ int (*flush_gc)( -+#if NeedNestedPrototypes -+ Display* /* display */, -+ GC /* gc */, -+ XExtCodes* /* codes */ -+#endif -+); -+ int (*free_gc)( -+#if NeedNestedPrototypes -+ Display* /* display */, -+ GC /* gc */, -+ XExtCodes* /* codes */ -+#endif -+); -+ int (*create_font)( -+#if NeedNestedPrototypes -+ Display* /* display */, -+ XFontStruct* /* fs */, -+ XExtCodes* /* codes */ -+#endif -+); -+ int (*free_font)( -+#if NeedNestedPrototypes -+ Display* /* display */, -+ XFontStruct* /* fs */, -+ XExtCodes* /* codes */ -+#endif -+); -+ int (*close_display)( -+#if NeedNestedPrototypes -+ Display* /* display */, -+ XExtCodes* /* codes */ -+#endif -+); -+ Bool (*wire_to_event)( -+#if NeedNestedPrototypes -+ Display* /* display */, -+ XEvent* /* re */, -+ xEvent* /* event */ -+#endif -+); -+ Status (*event_to_wire)( -+#if NeedNestedPrototypes -+ Display* /* display */, -+ XEvent* /* re */, -+ xEvent* /* event */ -+#endif -+); -+ int (*error)( -+#if NeedNestedPrototypes -+ Display* /* display */, -+ xError* /* err */, -+ XExtCodes* /* codes */, -+ int* /* ret_code */ -+#endif -+); -+ char *(*error_string)( -+#if NeedNestedPrototypes -+ Display* /* display */, -+ int /* code */, -+ XExtCodes* /* codes */, -+ char* /* buffer */, -+ int /* nbytes */ -+#endif -+); -+} XExtensionHooks; -+ -+extern XExtensionInfo *XextCreateExtension( -+#if NeedFunctionPrototypes -+ void -+#endif -+); -+extern void XextDestroyExtension( -+#if NeedFunctionPrototypes -+ XExtensionInfo* /* info */ -+#endif -+); -+extern XExtDisplayInfo *XextAddDisplay( -+#if NeedFunctionPrototypes -+ XExtensionInfo* /* extinfo */, -+ Display* /* dpy */, -+ char* /* ext_name */, -+ XExtensionHooks* /* hooks */, -+ int /* nevents */, -+ XPointer /* data */ -+#endif -+); -+extern int XextRemoveDisplay( -+#if NeedFunctionPrototypes -+ XExtensionInfo* /* extinfo */, -+ Display* /* dpy */ -+#endif -+); -+extern XExtDisplayInfo *XextFindDisplay( -+#if NeedFunctionPrototypes -+ XExtensionInfo* /* extinfo */, -+ Display* /* dpy */ -+#endif -+); -+ -+#define XextHasExtension(i) ((i) && ((i)->codes)) -+#define XextCheckExtension(dpy,i,name,val) \ -+ if (!XextHasExtension(i)) { XMissingExtension (dpy, name); return val; } -+#define XextSimpleCheckExtension(dpy,i,name) \ -+ if (!XextHasExtension(i)) { XMissingExtension (dpy, name); return; } -+ -+ -+/* -+ * helper macros to generate code that is common to all extensions; caller -+ * should prefix it with static if extension source is in one file; this -+ * could be a utility function, but have to stack 6 unused arguments for -+ * something that is called many, many times would be bad. -+ */ -+#define XEXT_GENERATE_FIND_DISPLAY(proc,extinfo,extname,hooks,nev,data) \ -+XExtDisplayInfo *proc (Display *dpy) \ -+{ \ -+ XExtDisplayInfo *dpyinfo; \ -+ if (!extinfo) { if (!(extinfo = XextCreateExtension())) return NULL; } \ -+ if (!(dpyinfo = XextFindDisplay (extinfo, dpy))) \ -+ dpyinfo = XextAddDisplay (extinfo,dpy,extname,hooks,nev,data); \ -+ return dpyinfo; \ -+} -+ -+#define XEXT_FIND_DISPLAY_PROTO(proc) \ -+ XExtDisplayInfo *proc(Display *dpy) -+ -+#define XEXT_GENERATE_CLOSE_DISPLAY(proc,extinfo) \ -+int proc (Display *dpy, XExtCodes *codes) \ -+{ \ -+ return XextRemoveDisplay (extinfo, dpy); \ -+} -+ -+#define XEXT_CLOSE_DISPLAY_PROTO(proc) \ -+ int proc(Display *dpy, XExtCodes *codes) -+ -+#define XEXT_GENERATE_ERROR_STRING(proc,extname,nerr,errl) \ -+char *proc (Display *dpy, int code, XExtCodes *codes, char *buf, int n) \ -+{ \ -+ code -= codes->first_error; \ -+ if (code >= 0 && code < nerr) { \ -+ char tmp[256]; \ -+ sprintf (tmp, "%s.%d", extname, code); \ -+ XGetErrorDatabaseText (dpy, "XProtoError", tmp, errl[code], buf, n); \ -+ return buf; \ -+ } \ -+ return (char *)0; \ -+} -+ -+#define XEXT_ERROR_STRING_PROTO(proc) \ -+ char *proc(Display *dpy, int code, XExtCodes *codes, char *buf, int n) -+#endif -+ -+#endif /* __linux__ || _ALLBSD_SOURCE */ ---- ./jdk/src/solaris/native/sun/awt/fontpath.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/native/sun/awt/fontpath.c Sun Feb 10 09:27:00 2019 -0800 -@@ -23,9 +23,9 @@ - * questions. - */ - --#if defined(__linux__) -+#if defined(__linux__) || defined(_ALLBSD_SOURCE) - #include <string.h> --#endif /* __linux__ */ -+#endif /* __linux__ || _ALLBSD_SOURCE */ - #include <stdio.h> - #include <stdlib.h> - #include <strings.h> -@@ -113,7 +113,6 @@ - OPENWINHOMELIB "locale/ar/X11/fonts/Type1", - NULL, /* terminates the list */ - }; -- - #elif defined( __linux__) - /* All the known interesting locations we have discovered on - * various flavors of Linux -@@ -140,6 +139,20 @@ - "/usr/lpp/X11/lib/X11/fonts/TrueType", /* from X11.fnt.ucs.ttf */ - NULL, /* terminates the list */ - }; -+#elif defined(_ALLBSD_SOURCE) -+static char *fullBSDFontPath[] = { -+ PACKAGE_PATH "/lib/X11/fonts/TrueType", -+ PACKAGE_PATH "/lib/X11/fonts/truetype", -+ PACKAGE_PATH "/lib/X11/fonts/TTF", -+ PACKAGE_PATH "/lib/X11/fonts/OTF", -+ PACKAGE_PATH "/share/fonts/TrueType", -+ PACKAGE_PATH "/share/fonts/truetype", -+ PACKAGE_PATH "/share/fonts/TTF", -+ PACKAGE_PATH "/share/fonts/OTF", -+ PACKAGE_PATH "/lib/X11/fonts/Type1", -+ PACKAGE_PATH "/share/fonts/Type1", -+ NULL, /* terminates the list */ -+}; - #endif - - static char **getFontConfigLocations(); -@@ -381,7 +394,7 @@ - - #endif /* !HEADLESS */ - --#if defined(__linux__) -+#if defined(__linux__) || defined(_ALLBSD_SOURCE) - /* from awt_LoadLibrary.c */ - JNIEXPORT jboolean JNICALL AWTIsHeadless(); - #endif -@@ -512,6 +525,8 @@ - knowndirs = fullSolarisFontPath; - #elif defined(_AIX) - knowndirs = fullAixFontPath; -+#elif defined(_ALLBSD_SOURCE) -+ knowndirs = fullBSDFontPath; - #endif - /* REMIND: this code requires to be executed when the GraphicsEnvironment - * is already initialised. That is always true, but if it were not so, -@@ -520,8 +535,8 @@ - */ - #ifndef HEADLESS - if (isX11) { // The following only works in an x11 environment. --#if defined(__linux__) -- /* There's no headless build on linux ... */ -+#if defined(__linux__) || defined(_ALLBSD_SOURCE) -+ /* There's no headless build on linux and BSD ... */ - if (!AWTIsHeadless()) { /* .. so need to call a function to check */ - #endif - /* Using the X11 font path to locate font files is now a fallback -@@ -536,7 +551,7 @@ - x11dirs = getX11FontPath(); - } - AWT_UNLOCK(); --#if defined(__linux__) -+#if defined(__linux__) || defined(_ALLBSD_SOURCE) - } - #endif - } -@@ -1247,7 +1262,7 @@ - */ - if (fontformat != NULL - && (strcmp((char*)fontformat, "TrueType") != 0) --#if defined(__linux__) || defined(_AIX) -+#if defined(__linux__) || defined(_AIX) || defined(_ALLBSD_SOURCE) - && (strcmp((char*)fontformat, "Type 1") != 0) - && !(isOpenJDK && (strcmp((char*)fontformat, "CFF") == 0)) - #endif ---- ./jdk/src/solaris/native/sun/java2d/j2d_md.h Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/native/sun/java2d/j2d_md.h Sun Feb 10 09:27:00 2019 -0800 -@@ -28,11 +28,11 @@ - #include <sys/types.h> - - /* -- * Linux and MACOSX's version of <sys/types.h> does not define intptr_t -+ * Linux and BSD's version of <sys/types.h> does not define intptr_t - */ --#if defined(__linux__) || defined(MACOSX) -+#if defined(__linux__) || defined(_ALLBSD_SOURCE) - #include <stdint.h> --#endif /* __linux__ || MACOSX */ -+#endif /* __linux__ || _ALLBSD_SOURCE */ - - typedef unsigned char jubyte; - typedef unsigned short jushort; ---- ./jdk/src/solaris/native/sun/java2d/loops/mlib_ImageZoom_NN.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/native/sun/java2d/loops/mlib_ImageZoom_NN.c Sun Feb 10 09:27:00 2019 -0800 -@@ -63,9 +63,6 @@ - * MLIB_EDGE_SRC_PADDED - */ - --#ifdef MACOSX --#include <machine/endian.h> --#endif - #include <mlib_image.h> - #include <mlib_ImageZoom.h> - -@@ -102,7 +99,7 @@ - - /***************************************************************/ - --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - - static const mlib_u32 mlib_bit_mask4[16] = { - 0x00000000u, 0xFF000000u, 0x00FF0000u, 0xFFFF0000u, -@@ -111,7 +108,7 @@ - 0x0000FFFFu, 0xFF00FFFFu, 0x00FFFFFFu, 0xFFFFFFFFu - }; - --#else /* _LITTLE_ENDIAN */ -+#else /* VM_LITTLE_ENDIAN */ - - static const mlib_u32 mlib_bit_mask4[16] = { - 0x00000000u, 0x000000FFu, 0x0000FF00u, 0x0000FFFFu, -@@ -120,7 +117,7 @@ - 0xFFFF0000u, 0xFFFF00FFu, 0xFFFFFF00u, 0xFFFFFFFFu - }; - --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - - /***************************************************************/ - -@@ -344,11 +341,11 @@ - #ifdef _NO_LONGLONG - - typedef struct { --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - mlib_u32 uint1, uint0; --#else /* _LITTLE_ENDIAN */ -+#else /* VM_LITTLE_ENDIAN */ - mlib_u32 uint0, uint1; --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - } two_uint; - - /***************************************************************/ -@@ -511,11 +508,11 @@ - DTYPE mask; - MASK(mask); - off *= 8; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - LSHIFT(dd_old, da[0], 64 - off); --#else /* _LITTLE_ENDIAN */ -+#else /* VM_LITTLE_ENDIAN */ - RSHIFT(dd_old, da[0], 64 - off); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - - #ifdef __SUNPRO_C - #pragma pipeloop(0) -@@ -540,30 +537,30 @@ - - res = (res & 0xff) | (res >> 8); - dd = gray_mask[res]; --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - /* *da++ = (dd_old >> (64 - off)) | (dd << off);*/ - RSHIFT(dd_old, dd_old, 64 - off); - LSHIFT(dtmp, dd, off); --#else /* _LITTLE_ENDIAN */ -+#else /* VM_LITTLE_ENDIAN */ - /* *da++ = (dd_old << (64 - off)) | (dd >> off);*/ - LSHIFT(dd_old, dd_old, 64 - off); - RSHIFT(dtmp, dd, off); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - LOGIC(*da++, dd_old, dtmp, |); - dd_old = dd; - } - --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - /* da[0] = (dd_old >> (64 - off)) | (da[0] & ((mlib_u64)((mlib_s64) -1) << off));*/ - LSHIFT(dtmp, mask, off); - LOGIC(dtmp, da[0], dtmp, &); - RSHIFT(dtmp1, dd_old, 64 - off); --#else /* _LITTLE_ENDIAN */ -+#else /* VM_LITTLE_ENDIAN */ - /* da[0] = (dd_old << (64 - off)) | (da[0] & ((mlib_u64)((mlib_s64) -1) >> off));*/ - RSHIFT(dtmp, mask, off); - LOGIC(dtmp, da[0], dtmp, &); - LSHIFT(dtmp1, dd_old, 64 - off); --#endif /* _LITTLE_ENDIAN */ -+#endif /* VM_LITTLE_ENDIAN */ - LOGIC(da[0], dtmp, dtmp1, |); - } - else { /* aligned */ ---- ./jdk/src/solaris/native/sun/java2d/loops/vis_FuncArray.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/native/sun/java2d/loops/vis_FuncArray.c Sun Feb 10 09:27:00 2019 -0800 -@@ -804,7 +804,7 @@ - static int initialized; - static int usevis = JNI_TRUE; - --#if defined(__linux__) || defined(MACOSX) -+#if defined(__linux__) || defined(_ALLBSD_SOURCE) - # define ULTRA_CHIP "sparc64" - #else - # define ULTRA_CHIP "sun4u" ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./jdk/src/solaris/native/sun/management/BsdOperatingSystem.c Sun Feb 10 09:27:00 2019 -0800 -@@ -0,0 +1,42 @@ -+/* -+ * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. -+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -+ * -+ * This code is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 only, as -+ * published by the Free Software Foundation. Oracle designates this -+ * particular file as subject to the "Classpath" exception as provided -+ * by Oracle in the LICENSE file that accompanied this code. -+ * -+ * This code is distributed in the hope that it will be useful, but WITHOUT -+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+ * version 2 for more details (a copy is included in the LICENSE file that -+ * accompanied this code). -+ * -+ * You should have received a copy of the GNU General Public License version -+ * 2 along with this work; if not, write to the Free Software Foundation, -+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -+ * or visit www.oracle.com if you need additional information or have any -+ * questions. -+ */ -+ -+#include <jni.h> -+#include "jvm.h" -+#include "sun_management_OperatingSystemImpl.h" -+ -+JNIEXPORT jdouble JNICALL -+Java_sun_management_OperatingSystemImpl_getSystemCpuLoad -+(JNIEnv *env, jobject dummy) -+{ -+ return (jdouble) -1; -+} -+ -+JNIEXPORT jdouble JNICALL -+Java_sun_management_OperatingSystemImpl_getProcessCpuLoad -+(JNIEnv *env, jobject dummy) -+{ -+ return (jdouble) -1; -+} ---- ./jdk/src/solaris/native/sun/management/OperatingSystemImpl.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/native/sun/management/OperatingSystemImpl.c Sun Feb 10 09:27:00 2019 -0800 -@@ -56,6 +56,9 @@ - #include <limits.h> - #include <stdlib.h> - #include <unistd.h> -+#ifdef __FreeBSD__ -+#include <vm/vm_param.h> -+#endif - - #if defined(_AIX) - #include <libperfstat.h> -@@ -168,6 +171,25 @@ - throw_internal_error(env, "sysctlbyname failed"); - } - return available ? (jlong)vmusage.xsu_avail : (jlong)vmusage.xsu_total; -+#elif defined(__FreeBSD__) -+ struct xswdev xsw; -+ size_t mibsize, size; -+ jlong npages; -+ int mib[16], n; -+ -+ mibsize = sizeof(mib) / sizeof(mib[0]); -+ if (sysctlnametomib("vm.swap_info", mib, &mibsize) == -1) -+ return (0); -+ for (n = 0, npages = 0; ; n++) { -+ mib[mibsize] = n; -+ size = sizeof(xsw); -+ if (sysctl(mib, mibsize + 1, &xsw, &size, NULL, 0) == -1) -+ break; -+ npages += xsw.xsw_nblks; -+ if (available) -+ npages -= xsw.xsw_used; -+ } -+ return (npages * page_size); - #else /* _ALLBSD_SOURCE */ - /* - * XXXBSD: there's no way available to get swap info in -@@ -243,11 +265,30 @@ - throw_internal_error(env, "task_info failed"); - } - return t_info.virtual_size; -+#elif defined(__FreeBSD__) -+ FILE *fp; -+ unsigned long end, start; -+ jlong total = 0; -+ -+ if ((fp = fopen("/proc/curproc/map", "r")) == NULL) { -+ throw_internal_error(env, "Unable to open /proc/curproc/map"); -+ return -1; -+ } -+ -+ for (;;) { -+ // Ignore everything except start and end entries -+ if (fscanf(fp, "0x%lx 0x%lx %*[^\n]\n", &start, &end) != 2 || start > end) -+ break; -+ total += end - start; -+ } -+ -+ fclose(fp); -+ return total; - #else /* _ALLBSD_SOURCE */ - /* -- * XXXBSD: there's no way available to do it in FreeBSD, AFAIK. -+ * XXXBSD: there's no way available to do it in BSD, AFAIK. - */ -- // throw_internal_error(env, "Unimplemented in FreeBSD"); -+ // throw_internal_error(env, "Unimplemented in BSD"); - return (64 * MB); - #endif - } -@@ -324,11 +365,27 @@ - return -1; - } - return (jlong)vm_stats.free_count * page_size; -+#elif defined(__FreeBSD__) -+ static const char *vm_stats[] = { -+ "vm.stats.vm.v_free_count", -+ "vm.stats.vm.v_cache_count", -+ /* "vm.stats.vm.v_inactive_count", */ -+ NULL -+ }; -+ size_t size; -+ jlong free_pages; -+ u_int i, npages; -+ for (i = 0, free_pages = 0, size = sizeof(npages); vm_stats[i] != NULL; i++) { -+ if (sysctlbyname(vm_stats[i], &npages, &size, NULL, 0) == -1) -+ return 0; -+ free_pages += npages; -+ } -+ return (free_pages * page_size); - #elif defined(_ALLBSD_SOURCE) - /* -- * XXBSDL no way to do it in FreeBSD -+ * XXBSDL no way to do it in BSD - */ -- // throw_internal_error(env, "unimplemented in FreeBSD") -+ // throw_internal_error(env, "unimplemented in BSD") - return (128 * MB); - #elif defined(_AIX) - perfstat_memory_total_t memory_info; -@@ -346,13 +403,19 @@ - Java_sun_management_OperatingSystemImpl_getTotalPhysicalMemorySize - (JNIEnv *env, jobject mbean) - { --#ifdef _ALLBSD_SOURCE -+#if defined(_ALLBSD_SOURCE) && !defined(_SC_PHYS_PAGES) - jlong result = 0; - int mib[2]; - size_t rlen; - - mib[0] = CTL_HW; -+#if defined (HW_MEMSIZE) // Apple - mib[1] = HW_MEMSIZE; -+#elif defined(HW_PHYSMEM) // Most of BSD -+ mib[1] = HW_PHYSMEM; -+#else -+ #error No ways to get physmem -+#endif - rlen = sizeof(result); - if (sysctl(mib, 2, &result, &rlen, NULL, 0) != 0) { - throw_internal_error(env, "sysctl failed"); -@@ -372,6 +435,11 @@ - } - - -+#ifdef _ALLBSD_SOURCE -+#define FD_DIR "/dev/fd" -+#else -+#define FD_DIR "/proc/self/fd" -+#endif - - JNIEXPORT jlong JNICALL - Java_sun_management_OperatingSystemImpl_getOpenFileDescriptorCount -@@ -421,12 +489,8 @@ - free(fds); - - return nfiles; --#elif defined(_ALLBSD_SOURCE) -- /* -- * XXXBSD: there's no way available to do it in FreeBSD, AFAIK. -- */ -- // throw_internal_error(env, "Unimplemented in FreeBSD"); -- return (100); -+#elif defined(__OpenBSD__) -+ return getdtablecount(); - #else /* solaris/linux */ - DIR *dirp; - struct dirent dbuf; -@@ -438,13 +502,15 @@ - #define FD_DIR aix_fd_dir - char aix_fd_dir[32]; /* the pid has at most 19 digits */ - snprintf(aix_fd_dir, 32, "/proc/%d/fd", getpid()); -+#elif defined(_ALLBSD_SOURCE) -+#define FD_DIR "/dev/fd" - #else - #define FD_DIR "/proc/self/fd" - #endif - - dirp = opendir(FD_DIR); - if (dirp == NULL) { -- throw_internal_error(env, "Unable to open directory /proc/self/fd"); -+ throw_internal_error(env, "Unable to open directory " FD_DIR); - return -1; - } - ---- ./jdk/src/solaris/native/sun/net/portconfig.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/native/sun/net/portconfig.c Sun Feb 10 09:27:00 2019 -0800 -@@ -67,6 +67,24 @@ - range->lower = net_getParam("/dev/tcp", "tcp_smallest_anon_port"); - return 0; - } -+#elif defined(__OpenBSD__) -+ { -+ int mib[3]; -+ mib[0] = CTL_NET; -+ mib[1] = PF_INET; -+ -+ mib[2] = IPCTL_IPPORT_HIFIRSTAUTO; -+ size_t rlen = sizeof(range->lower); -+ if (sysctl(mib, 3, &range->lower, &rlen, NULL, 0) == -1) -+ return -1; -+ -+ mib[2] = IPCTL_IPPORT_HILASTAUTO; -+ rlen = sizeof(range->higher); -+ if (sysctl(mib, 3, &range->higher, &rlen, NULL, 0) == -1) -+ return -1; -+ -+ return 0; -+ } - #elif defined(_ALLBSD_SOURCE) - { - int ret; ---- ./jdk/src/solaris/native/sun/nio/ch/sctp/Sctp.h Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/native/sun/nio/ch/sctp/Sctp.h Sun Feb 10 09:27:00 2019 -0800 -@@ -67,7 +67,7 @@ - - - --#else /* __linux__ */ -+#elif defined(__linux__) - #include <stdint.h> - #include <linux/types.h> - #include <sys/socket.h> -@@ -319,9 +319,20 @@ - typedef int sctp_bindx_func(int sd, struct sockaddr *addrs, int addrcnt, int flags); - typedef int sctp_peeloff_func(int sock, sctp_assoc_t id); - -+#elif defined(__FreeBSD__) -+ -+#include <stdint.h> -+#include <sys/types.h> -+#include <sys/socket.h> -+#include <netinet/sctp.h> -+#include <netinet/sctp_peeloff.h> -+#include <netinet/sctp_uio.h> -+#include "jni.h" - - #endif /* __linux__ */ - -+#ifndef __FreeBSD__ -+ - sctp_getladdrs_func* nio_sctp_getladdrs; - sctp_freeladdrs_func* nio_sctp_freeladdrs; - sctp_getpaddrs_func* nio_sctp_getpaddrs; -@@ -329,6 +340,17 @@ - sctp_bindx_func* nio_sctp_bindx; - sctp_peeloff_func* nio_sctp_peeloff; - -+#else -+ -+#define nio_sctp_getladdrs sctp_getladdrs -+#define nio_sctp_freeladdrs sctp_freeladdrs -+#define nio_sctp_getpaddrs sctp_getpaddrs -+#define nio_sctp_freepaddrs sctp_freepaddrs -+#define nio_sctp_bindx sctp_bindx -+#define nio_sctp_peeloff sctp_peeloff -+ -+#endif -+ - jboolean loadSocketExtensionFuncs(JNIEnv* env); - - #endif /* !SUN_NIO_CH_SCTP_H */ ---- ./jdk/src/solaris/native/sun/nio/ch/sctp/SctpNet.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/native/sun/nio/ch/sctp/SctpNet.c Sun Feb 10 09:27:00 2019 -0800 -@@ -58,6 +58,7 @@ - */ - jboolean loadSocketExtensionFuncs - (JNIEnv* env) { -+#ifndef __FreeBSD__ - if (dlopen(nativeSctpLib, RTLD_GLOBAL | RTLD_LAZY) == NULL) { - JNU_ThrowByName(env, "java/lang/UnsupportedOperationException", - dlerror()); -@@ -105,6 +106,7 @@ - dlerror()); - return JNI_FALSE; - } -+#endif - - funcsLoaded = JNI_TRUE; - return JNI_TRUE; ---- ./jdk/src/solaris/native/sun/nio/fs/MagicFileTypeDetector.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/native/sun/nio/fs/MagicFileTypeDetector.c Sun Feb 10 09:27:00 2019 -0800 -@@ -31,6 +31,12 @@ - #include <dlfcn.h> - #include <string.h> - -+#ifdef __FreeBSD__ -+#define MAGIC_MAJOR_VERSION "4" -+#else -+#define MAGIC_MAJOR_VERSION "1" -+#endif -+ - #define MAGIC_MIME_TYPE 0x000010 /* Return the MIME type */ - - typedef struct magic_set magic_t; -@@ -54,7 +60,7 @@ - { - magic_handle = dlopen("libmagic.so", RTLD_LAZY); - if (magic_handle == NULL) { -- magic_handle = dlopen("libmagic.so.1", RTLD_LAZY); -+ magic_handle = dlopen("libmagic.so." MAGIC_MAJOR_VERSION, RTLD_LAZY); - if (magic_handle == NULL) { - return JNI_FALSE; - } ---- ./jdk/src/solaris/native/sun/security/pkcs11/j2secmod_md.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/native/sun/security/pkcs11/j2secmod_md.c Sun Feb 10 09:27:00 2019 -0800 -@@ -54,7 +54,7 @@ - } - - // look up existing handle only, do not load --#if defined(AIX) -+#if defined(AIX) || !defined(RTLD_NOLOAD) - void *hModule = dlopen(libName, RTLD_LAZY); - #else - void *hModule = dlopen(libName, RTLD_NOLOAD); ---- ./jdk/src/solaris/native/sun/tools/attach/BsdVirtualMachine.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/native/sun/tools/attach/BsdVirtualMachine.c Sun Feb 10 09:27:00 2019 -0800 -@@ -38,7 +38,9 @@ - #include <sys/types.h> - #include <sys/socket.h> - #include <sys/stat.h> -+#ifndef __FreeBSD__ - #include <sys/syslimits.h> -+#endif - #include <sys/un.h> - #include <fcntl.h> - ---- ./jdk/src/solaris/native/sun/xawt/XWindow.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/solaris/native/sun/xawt/XWindow.c Sun Feb 10 09:27:00 2019 -0800 -@@ -886,7 +886,7 @@ - { - KeySym originalKeysym = *keysym; - --#if !defined(__linux__) && !defined(MACOSX) -+#if !defined(__linux__) && !defined(_ALLBSD_SOURCE) - /* The following code on Linux will cause the keypad keys - * not to echo on JTextField when the NumLock is on. The - * keysyms will be 0, because the last parameter 2 is not defined. ---- ./jdk/src/windows/native/com/sun/media/sound/PLATFORM_API_WinOS_DirectSound.cpp Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/src/windows/native/com/sun/media/sound/PLATFORM_API_WinOS_DirectSound.cpp Sun Feb 10 09:27:00 2019 -0800 -@@ -308,7 +308,7 @@ - DAUDIO_PCM, - (bitsArray[bitIndex]==8)?FALSE:TRUE, /* signed */ - (bitsArray[bitIndex]==8)?FALSE: --#ifndef _LITTLE_ENDIAN -+#ifndef VM_LITTLE_ENDIAN - TRUE /* big endian */ - #else - FALSE /* little endian */ -@@ -864,7 +864,7 @@ - return NULL; - } - if (sampleSizeInBits > 8 && --#ifdef _LITTLE_ENDIAN -+#ifdef VM_LITTLE_ENDIAN - isBigEndian - #else - !isBigEndian diff --git a/java/openjdk8/files/patch-bsd-test b/java/openjdk8/files/patch-bsd-test deleted file mode 100644 index 607257e67fed..000000000000 --- a/java/openjdk8/files/patch-bsd-test +++ /dev/null @@ -1,1503 +0,0 @@ ---- ./hotspot/test/compiler/5091921/Test7005594.sh Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/test/compiler/5091921/Test7005594.sh Sun Feb 10 09:26:05 2019 -0800 -@@ -60,6 +60,15 @@ - # Windows/MKS - MEM=`"$ROOTDIR/mksnt/sysinf" memory -v | grep "Total Physical Memory: " | sed 's/Total Physical Memory: *//g'` - MEM="$(($machine_memory / 1024))" -+elif [ -x "/sbin/sysctl" ]; then -+ # BSD -+ MEM=`(/sbin/sysctl -n hw.physmem64 2> /dev/null || /sbin/sysctl -n hw.physmem)` -+ if [ -z "$MEM" ]; then -+ echo "Unable to determine amount of physical memory on the machine" -+ MEM=0 -+ else -+ MEM="$(($MEM / 1024 / 1024))" -+ fi - else - echo "Unable to determine amount of physical memory on the machine" - fi ---- ./hotspot/test/compiler/6894807/Test6894807.sh Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/test/compiler/6894807/Test6894807.sh Sun Feb 10 09:26:05 2019 -0800 -@@ -21,7 +21,7 @@ - # set platform-dependent variables - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin ) -+ SunOS | Linux | *BSD | Darwin ) - NULL=/dev/null - PS=":" - FS="/" ---- ./hotspot/test/runtime/7110720/Test7110720.sh Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/test/runtime/7110720/Test7110720.sh Sun Feb 10 09:26:05 2019 -0800 -@@ -28,7 +28,7 @@ - # set platform-dependent variables - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin ) -+ SunOS | Linux | *BSD | Darwin ) - FS="/" - RM=/bin/rm - CP=/bin/cp ---- ./hotspot/test/runtime/XCheckJniJsig/XCheckJSig.java Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/test/runtime/XCheckJniJsig/XCheckJSig.java Sun Feb 10 09:26:05 2019 -0800 -@@ -37,8 +37,8 @@ - public static void main(String args[]) throws Throwable { - - System.out.println("Regression test for bugs 7051189 and 8023393"); -- if (!Platform.isSolaris() && !Platform.isLinux() && !Platform.isOSX()) { -- System.out.println("Test only applicable on Solaris, Linux, and Mac OSX, skipping"); -+ if (!Platform.isSolaris() && !Platform.isLinux() && !Platform.isOSX() && !Platform.isBSD()) { -+ System.out.println("Test only applicable on Solaris, Linux, BSD, and Mac OSX, skipping"); - return; - } - ---- ./hotspot/test/serviceability/dcmd/DynLibDcmdTest.java Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/test/serviceability/dcmd/DynLibDcmdTest.java Sun Feb 10 09:26:05 2019 -0800 -@@ -47,6 +47,8 @@ - osDependentBaseString = "lib%s.dylib"; - } else if (Platform.isLinux()) { - osDependentBaseString = "lib%s.so"; -+ } else if (Platform.isBSD()) { -+ osDependentBaseString = "lib%s.so"; - } - - if (osDependentBaseString == null) { ---- ./hotspot/test/test_env.sh Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/test/test_env.sh Sun Feb 10 09:26:05 2019 -0800 -@@ -53,7 +53,7 @@ - # set platform-dependent variables - OS=`uname -s` - case "$OS" in -- AIX | Darwin | Linux | SunOS ) -+ AIX | *BSD | Darwin | Linux | SunOS ) - NULL=/dev/null - PS=":" - FS="/" ---- ./hotspot/test/testlibrary/com/oracle/java/testlibrary/Platform.java Sat Dec 08 11:48:29 2018 +0000 -+++ ./hotspot/test/testlibrary/com/oracle/java/testlibrary/Platform.java Sun Feb 10 09:26:05 2019 -0800 -@@ -67,6 +67,10 @@ - return isOs("aix"); - } - -+ public static boolean isBSD() { -+ return osName.toLowerCase().endsWith("bsd"); -+ } -+ - public static boolean isLinux() { - return isOs("linux"); - } ---- ./jdk/test/com/sun/corba/5036554/TestCorbaBug.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/com/sun/corba/5036554/TestCorbaBug.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -48,7 +48,7 @@ - # set platform-dependent variables - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - PS=":" - FS="/" - ;; ---- ./jdk/test/com/sun/corba/cachedSocket/7056731.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/com/sun/corba/cachedSocket/7056731.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -31,7 +31,7 @@ - - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - PS=":" - FS="/" - ;; ---- ./jdk/test/com/sun/jdi/ImmutableResourceTest.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/com/sun/jdi/ImmutableResourceTest.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -56,7 +56,7 @@ - - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - PATHSEP=":" - ;; - ---- ./jdk/test/com/sun/jdi/JITDebug.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/com/sun/jdi/JITDebug.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -63,7 +63,7 @@ - OS=`uname -s` - export TRANSPORT_METHOD - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - PATHSEP=":" - TRANSPORT_METHOD=dt_socket - ;; ---- ./jdk/test/com/sun/jdi/PrivateTransportTest.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/com/sun/jdi/PrivateTransportTest.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -106,7 +106,7 @@ - xx=`find ${jreloc}/lib -name libdt_socket.so` - libloc=`dirname ${xx}` - ;; -- Darwin) -+ *BSD | Darwin) - libloc=${jreloc}/lib - ;; - Windows*) ---- ./jdk/test/com/sun/jdi/ShellScaffold.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/com/sun/jdi/ShellScaffold.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -284,7 +284,7 @@ - psCmd=ps - jstack=jstack.exe - ;; -- SunOS | Linux | Darwin | AIX) -+ SunOS | Linux | *BSD | Darwin | AIX) - transport=dt_socket - address= - devnull=/dev/null ---- ./jdk/test/com/sun/jdi/connect/spi/JdiLoadedByCustomLoader.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/com/sun/jdi/connect/spi/JdiLoadedByCustomLoader.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -45,7 +45,7 @@ - - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - PS=":" - ;; - Windows* | CYGWIN*) ---- ./jdk/test/java/awt/Desktop/DesktopGtkLoadTest/DesktopGtkLoadTest.java Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/awt/Desktop/DesktopGtkLoadTest/DesktopGtkLoadTest.java Sun Feb 10 09:27:00 2019 -0800 -@@ -25,7 +25,7 @@ - * @bug 8157827 - * @summary AWT_Desktop/Automated/Exceptions/BasicTest loads incorrect GTK - * version when jdk.gtk.version=3 -- * @requires (os.family == "linux") -+ * @requires (os.family == "linux") | (os.family == "bsd") - * @run main DesktopGtkLoadTest - */ - ---- ./jdk/test/java/awt/Gtk/GtkVersionTest/GtkVersionTest.java Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/awt/Gtk/GtkVersionTest/GtkVersionTest.java Sun Feb 10 09:27:00 2019 -0800 -@@ -25,7 +25,7 @@ - * @bug 8156121 - * @summary "Fail forward" fails for GTK3 if no GTK2 available - * @modules java.desktop/sun.awt -- * @requires (os.family == "linux") -+ * @requires (os.family == "linux") | (os.family == "bsd") - * @run main GtkVersionTest - */ - ---- ./jdk/test/java/awt/JAWT/JAWT.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/awt/JAWT/JAWT.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -62,6 +62,23 @@ - MAKE="make" - LD_LIBRARY_PATH="." - ;; -+ *BSD ) -+ NULL=/dev/null -+ PS=":" -+ FS="/" -+ ${TESTJAVA}${FS}bin${FS}java -version 2>&1 | grep '64-Bit' > $NULL -+ if [ $? -eq '0' ] -+ then -+ ARCH="amd64" -+ else -+ ARCH="i386" -+ fi -+ SYST="bsd" -+ MAKEFILE="Makefile.unix" -+ CC="cc" -+ MAKE="make" -+ LD_LIBRARY_PATH="." -+ ;; - SunOS ) - NULL=/dev/null - PS=":" -@@ -111,7 +128,7 @@ - MAKE="make" - ;; - Darwin ) -- echo "Test passed. This test is not for MacOS." -+ echo "Test passed. This test is not for MacOS" - exit 0; - ;; - * ) ---- ./jdk/test/java/awt/Toolkit/AutoShutdown/ShowExitTest/ShowExitTest.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/awt/Toolkit/AutoShutdown/ShowExitTest/ShowExitTest.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -86,6 +86,14 @@ - TMP="/tmp" - ;; - -+ *BSD ) -+ VAR="A different value for BSD" -+ DEFAULT_JDK=/usr/local/openjdk8 -+ FILESEP="/" -+ PATHSEP=":" -+ TMP="/tmp" -+ ;; -+ - Windows* ) - VAR="A different value for Win32" - DEFAULT_JDK="C:/Program Files/Java/jdk1.8.0" ---- ./jdk/test/java/awt/Toolkit/Headless/WrappedToolkitTest/WrappedToolkitTest.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/awt/Toolkit/Headless/WrappedToolkitTest/WrappedToolkitTest.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -59,7 +59,7 @@ - # Checking for proper OS - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | CYGWIN* ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - FILESEP="/" - ;; - ---- ./jdk/test/java/awt/appletviewer/IOExceptionIfEncodedURLTest/IOExceptionIfEncodedURLTest.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/awt/appletviewer/IOExceptionIfEncodedURLTest/IOExceptionIfEncodedURLTest.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -119,6 +119,14 @@ - TMP="/tmp" - ;; - -+ *BSD ) -+ VAR="A different value for BSD" -+ DEFAULT_JDK=/usr/local/openjdk8 -+ FILESEP="/" -+ PATHSEP=":" -+ TMP="/tmp" -+ ;; -+ - Windows* ) - VAR="A different value for Win32" - DEFAULT_JDK="C:/Program Files/Java/jdk1.8.0" ---- ./jdk/test/java/io/File/GetXSpace.java Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/io/File/GetXSpace.java Sun Feb 10 09:27:00 2019 -0800 -@@ -51,7 +51,7 @@ - private static final String dfFormat; - static { - if (name.equals("SunOS") || name.equals("Linux") -- || name.contains("OS X")) { -+ || name.endsWith("BSD") || name.contains("OS X")) { - // FileSystem Total Used Available Use% MountedOn - dfFormat = "([^\\s]+)\\s+(\\d+)\\s+\\d+\\s+(\\d+)\\s+\\d+%\\s+([^\\s]+)"; - } else if (name.startsWith("Windows")) { ---- ./jdk/test/java/io/File/GetXSpace.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/io/File/GetXSpace.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -26,7 +26,7 @@ - # set platform-dependent variable - OS=`uname -s` - case "$OS" in -- SunOS | Linux ) TMP=/tmp ;; -+ SunOS | Linux | *BSD | Darwin ) TMP=/tmp ;; - Windows_98 ) return ;; - Windows* ) SID=`sid`; TMP="c:/temp" ;; - * ) ---- ./jdk/test/java/io/Serializable/evolution/RenamePackage/run.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/io/Serializable/evolution/RenamePackage/run.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -45,7 +45,7 @@ - # Need to determine the classpath separator and filepath separator based on the - # operating system. - case "$OS" in --SunOS | Linux | Darwin | AIX ) -+SunOS | Linux | *BSD | Darwin | AIX ) - PS=":" ;; - Windows* | CYGWIN* ) - PS=";" ;; ---- ./jdk/test/java/io/Serializable/serialver/classpath/run.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/io/Serializable/serialver/classpath/run.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -47,7 +47,7 @@ - # set platform-dependent variables - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - PS=":" ;; - Windows* | CYGWIN* ) - PS=";" ;; ---- ./jdk/test/java/io/Serializable/serialver/nested/run.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/io/Serializable/serialver/nested/run.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -47,7 +47,7 @@ - # set platform-dependent variables - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - PS=":" ;; - Windows* | CYGWIN* ) - PS=";" ;; ---- ./jdk/test/java/lang/ClassLoader/Assert.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/lang/ClassLoader/Assert.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -25,7 +25,7 @@ - - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin ) -+ SunOS | Linux | Darwin | *BSD ) - FS="/" - CHMOD="${FS}bin${FS}chmod" - ;; ---- ./jdk/test/java/lang/ClassLoader/deadlock/TestCrossDelegate.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/lang/ClassLoader/deadlock/TestCrossDelegate.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -55,7 +55,7 @@ - Linux ) - FS="/" - ;; -- Darwin ) -+ *BSD | Darwin ) - FS="/" - ;; - AIX ) ---- ./jdk/test/java/lang/ClassLoader/deadlock/TestOneWayDelegate.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/lang/ClassLoader/deadlock/TestOneWayDelegate.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -60,7 +60,7 @@ - Linux ) - FS="/" - ;; -- Darwin ) -+ *BSD | Darwin ) - FS="/" - ;; - AIX ) ---- ./jdk/test/java/lang/ProcessBuilder/DestroyTest.java Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/lang/ProcessBuilder/DestroyTest.java Sun Feb 10 09:27:00 2019 -0800 -@@ -148,6 +148,9 @@ - } else if (osName.startsWith("Linux") == true) { - return new UnixTest( - File.createTempFile("ProcessTrap-", ".sh",null)); -+ } else if (osName.endsWith("BSD")) { -+ return new UnixTest( -+ File.createTempFile("ProcessTrap-", ".sh",null)); - } else if (osName.startsWith("Mac OS")) { - return new MacTest( - File.createTempFile("ProcessTrap-", ".sh",null)); ---- ./jdk/test/java/lang/ProcessBuilder/Zombies.java Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/lang/ProcessBuilder/Zombies.java Sun Feb 10 09:27:00 2019 -0800 -@@ -34,7 +34,7 @@ - - static final String os = System.getProperty("os.name"); - -- static final String TrueCommand = os.contains("OS X")? -+ static final String TrueCommand = (os.endsWith("BSD") || os.contains("OS X")) ? - "/usr/bin/true" : "/bin/true"; - - public static void main(String[] args) throws Throwable { ---- ./jdk/test/java/lang/StringCoding/CheckEncodings.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/lang/StringCoding/CheckEncodings.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -30,7 +30,7 @@ - # set platform-dependent variables - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) ;; -+ SunOS | Linux | *BSD | Darwin | AIX ) ;; - Windows* | CYGWIN* ) - echo "Passed"; exit 0 ;; - * ) echo "Unrecognized system!" ; exit 1 ;; ---- ./jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -48,7 +48,7 @@ - # set platform-dependent variables - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - NULL=/dev/null - PS=":" - FS="/" ---- ./jdk/test/java/lang/instrument/MakeJAR2.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/lang/instrument/MakeJAR2.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -55,7 +55,7 @@ - - OS=`uname -s` - case "$OS" in -- SunOS | Linux ) -+ SunOS | Linux | *BSD | Darwin ) - PATHSEP=":" - ;; - ---- ./jdk/test/java/lang/instrument/appendToClassLoaderSearch/CommonSetup.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/lang/instrument/appendToClassLoaderSearch/CommonSetup.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -43,7 +43,7 @@ - PS=":" - FS="/" - ;; -- Darwin ) -+ *BSD | Darwin ) - PS=":" - FS="/" - ;; ---- ./jdk/test/java/lang/management/OperatingSystemMXBean/GetSystemLoadAverage.java Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/lang/management/OperatingSystemMXBean/GetSystemLoadAverage.java Sun Feb 10 09:27:00 2019 -0800 -@@ -79,8 +79,10 @@ - System.out.println("Test passed."); - } - -+ private static String osName = System.getProperty("os.name"); -+ - private static String LOAD_AVERAGE_TEXT -- = System.getProperty("os.name").contains("OS X") -+ = (osName.endsWith("BSD") || osName.contains("OS X")) - ? "load averages:" - : "load average:"; - -@@ -99,7 +101,7 @@ - System.out.println("Load average returned from uptime = " + output); - System.out.println("getSystemLoadAverage() returned " + loadavg); - -- String[] lavg = System.getProperty("os.name").contains("OS X") -+ String[] lavg = (osName.endsWith("BSD") || osName.contains("OS X")) - ? output.split(" ") - : output.split(","); - double expected = Double.parseDouble(lavg[0]); ---- ./jdk/test/java/lang/management/OperatingSystemMXBean/TestSystemLoadAvg.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/lang/management/OperatingSystemMXBean/TestSystemLoadAvg.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -61,7 +61,7 @@ - while true; do - echo "Run $i: TestSystemLoadAvg" - case `uname -s` in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - runOne GetSystemLoadAverage - ;; - * ) ---- ./jdk/test/java/net/Authenticator/B4933582.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/net/Authenticator/B4933582.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -26,7 +26,7 @@ - - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - PS=":" - FS="/" - ;; ---- ./jdk/test/java/net/DatagramSocket/Send12k.java Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/net/DatagramSocket/Send12k.java Sun Feb 10 09:27:00 2019 -0800 -@@ -36,9 +36,10 @@ - - public static void main(String args[]) throws Exception { - -- int SEND_SIZE=0; -+ String osName = System.getProperty("os.name"); -+ int SEND_SIZE; - -- if(System.getProperty("os.name").contains("Mac")) { -+ if(osName.endsWith("BSD") || osName.contains("Mac")) { - SEND_SIZE = 16 * 576; - } else { - SEND_SIZE = 16 * 1024; ---- ./jdk/test/java/net/DatagramSocket/SendDatagramToBadAddress.java Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/net/DatagramSocket/SendDatagramToBadAddress.java Sun Feb 10 09:27:00 2019 -0800 -@@ -45,6 +45,8 @@ - return (true); - if (p.getProperty ("os.name").equals ("Linux")) - return (true); -+ if (p.getProperty ("os.name").endsWith ("BSD")) -+ return (true); - if (p.getProperty ("os.name").startsWith ("Mac OS")) - return (true); - // Check for specific Solaris version from here ---- ./jdk/test/java/net/DatagramSocket/SetDatagramSocketImplFactory/ADatagramSocket.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/net/DatagramSocket/SetDatagramSocketImplFactory/ADatagramSocket.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -27,11 +27,7 @@ - # set platform-dependent variables - OS=`uname -s` - case "$OS" in -- SunOS | Darwin | AIX ) -- PATHSEP=":" -- FILESEP="/" -- ;; -- Linux ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - PATHSEP=":" - FILESEP="/" - ;; ---- ./jdk/test/java/net/Socket/OldSocketImpl.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/net/Socket/OldSocketImpl.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -28,7 +28,7 @@ - - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - PS=":" - FS="/" - ;; ---- ./jdk/test/java/net/URL/B5086147.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/net/URL/B5086147.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -26,7 +26,7 @@ - - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - exit 0 - ;; - CYGWIN* ) ---- ./jdk/test/java/net/URLClassLoader/B5077773.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/net/URLClassLoader/B5077773.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -34,11 +34,7 @@ - - OS=`uname -s` - case "$OS" in -- SunOS | Darwin | AIX ) -- PS=":" -- FS="/" -- ;; -- Linux ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - PS=":" - FS="/" - ;; ---- ./jdk/test/java/net/URLClassLoader/sealing/checksealed.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/net/URLClassLoader/sealing/checksealed.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -27,11 +27,7 @@ - - OS=`uname -s` - case "$OS" in -- SunOS | Darwin | AIX ) -- PS=":" -- FS="/" -- ;; -- Linux ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - PS=":" - FS="/" - ;; ---- ./jdk/test/java/net/URLConnection/6212146/test.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/net/URLConnection/6212146/test.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -33,11 +33,7 @@ - - OS=`uname -s` - case "$OS" in -- SunOS | Darwin | AIX ) -- PS=":" -- FS="/" -- ;; -- Linux ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - PS=":" - FS="/" - ;; ---- ./jdk/test/java/nio/channels/FileChannel/Transfer.java Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/nio/channels/FileChannel/Transfer.java Sun Feb 10 09:27:00 2019 -0800 -@@ -228,7 +228,7 @@ - // Windows and Linux can't handle the really large file sizes for a - // truncate or a positional write required by the test for 4563125 - String osName = System.getProperty("os.name"); -- if (!(osName.startsWith("SunOS") || osName.contains("OS X"))) -+ if (!(osName.startsWith("SunOS") || osName.endsWith("BSD") || osName.contains("OS X"))) - return; - File source = File.createTempFile("blah", null); - source.deleteOnExit(); ---- ./jdk/test/java/nio/channels/spi/SelectorProvider/inheritedChannel/Launcher.c Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/nio/channels/spi/SelectorProvider/inheritedChannel/Launcher.c Sun Feb 10 09:27:00 2019 -0800 -@@ -17,6 +17,12 @@ - - #include "Launcher.h" - -+#ifdef _ALLBSD_SOURCE -+#define FD_DIR "/dev/fd" -+#else -+#define FD_DIR "/proc/self/fd" -+#endif -+ - /* - * Throws the exception of the given class name and detail message - */ -@@ -135,7 +141,7 @@ - } - close(thisFd); - -- if ((dp = opendir("/proc/self/fd")) == NULL) { -+ if ((dp = opendir(FD_DIR)) == NULL) { - _exit(-1); - } - ---- ./jdk/test/java/nio/charset/coders/CheckSJISMappingProp.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/nio/charset/coders/CheckSJISMappingProp.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -34,7 +34,7 @@ - - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) ;; -+ SunOS | Linux | *BSD | Darwin | AIX ) ;; - # Skip locale test for Windows - Windows* | CYGWIN* ) - echo "Passed"; exit 0 ;; ---- ./jdk/test/java/nio/charset/spi/basic.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/nio/charset/spi/basic.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -48,7 +48,7 @@ - - DIR=`pwd` - case `uname` in -- SunOS | Linux | Darwin | AIX ) CPS=':' ;; -+ SunOS | Linux | *BSD | Darwin | AIX ) CPS=':' ;; - Windows* ) CPS=';' ;; - CYGWIN* ) - DIR=`/usr/bin/cygpath -a -s -m $DIR` ---- ./jdk/test/java/nio/file/FileSystem/Basic.java Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/nio/file/FileSystem/Basic.java Sun Feb 10 09:27:00 2019 -0800 -@@ -76,7 +76,7 @@ - checkSupported(fs, "posix", "unix", "owner", "acl", "user"); - if (os.equals("Linux")) - checkSupported(fs, "posix", "unix", "owner", "dos", "user"); -- if (os.contains("OS X")) -+ if (os.endsWith("BSD") || os.contains("OS X")) - checkSupported(fs, "posix", "unix", "owner"); - if (os.equals("Windows")) - checkSupported(fs, "owner", "dos", "acl", "user"); ---- ./jdk/test/java/nio/file/Files/CopyAndMove.java Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/nio/file/Files/CopyAndMove.java Sun Feb 10 09:27:00 2019 -0800 -@@ -651,7 +651,7 @@ - - // check POSIX attributes are copied - String os = System.getProperty("os.name"); -- if ((os.equals("SunOS") || os.equals("Linux")) && -+ if ((os.equals("SunOS") || os.equals("Linux") || os.endsWith("BSD")) && - testPosixAttributes) - { - checkPosixAttributes( -@@ -1155,7 +1155,7 @@ - static void randomizeAttributes(Path file) throws IOException { - String os = System.getProperty("os.name"); - boolean isWindows = os.startsWith("Windows"); -- boolean isUnix = os.equals("SunOS") || os.equals("Linux"); -+ boolean isUnix = os.equals("SunOS") || os.equals("Linux") || os.endsWith("BSD"); - boolean isDirectory = isDirectory(file, NOFOLLOW_LINKS); - - if (isUnix) { ---- ./jdk/test/java/nio/file/Files/probeContentType/ParallelProbes.java Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/nio/file/Files/probeContentType/ParallelProbes.java Sun Feb 10 09:27:00 2019 -0800 -@@ -28,7 +28,7 @@ - - /* @test - * @summary Test probing content type simultaneously from multiple threads. -- * @requires (os.family == "linux") | (os.family == "solaris") -+ * @requires (os.family == "linux") | (os.family == "solaris") | (os.family == "bsd") - * @run main ParallelProbes 10 - */ - public class ParallelProbes { ---- ./jdk/test/java/rmi/activation/Activatable/extLoadedImpl/ext.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/rmi/activation/Activatable/extLoadedImpl/ext.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -33,7 +33,7 @@ - - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - PS=":" - ;; - Windows* | CYGWIN* ) ---- ./jdk/test/java/rmi/registry/readTest/readTest.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/rmi/registry/readTest/readTest.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -34,7 +34,7 @@ - REGARGS="" - - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - PS=":" - FS="/" - CHMOD="${FS}bin${FS}chmod" ---- ./jdk/test/java/security/Security/ClassLoaderDeadlock/ClassLoaderDeadlock.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/security/Security/ClassLoaderDeadlock/ClassLoaderDeadlock.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -58,7 +58,7 @@ - PATHSEP=":" - FILESEP="/" - ;; -- Darwin ) -+ *BSD | Darwin ) - PATHSEP=":" - FILESEP="/" - ;; ---- ./jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -42,7 +42,7 @@ - PATHSEP=":" - FILESEP="/" - ;; -- Darwin ) -+ *BSD | Darwin ) - PATHSEP=":" - FILESEP="/" - ;; ---- ./jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock2.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock2.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -66,7 +66,7 @@ - PATHSEP=";" - FILESEP="/" - ;; -- Darwin ) -+ *BSD | Darwin ) - PATHSEP=":" - FILESEP="/" - ;; ---- ./jdk/test/java/security/Security/signedfirst/Dyn.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/security/Security/signedfirst/Dyn.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -58,7 +58,7 @@ - PATHSEP=":" - FILESEP="/" - ;; -- Darwin ) -+ *BSD | Darwin ) - PATHSEP=":" - FILESEP="/" - ;; ---- ./jdk/test/java/security/Security/signedfirst/Static.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/security/Security/signedfirst/Static.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -58,7 +58,7 @@ - PATHSEP=":" - FILESEP="/" - ;; -- Darwin ) -+ *BSD | Darwin ) - PATHSEP=":" - FILESEP="/" - ;; ---- ./jdk/test/java/util/Currency/PropertiesTest.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/util/Currency/PropertiesTest.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -52,7 +52,7 @@ - # set platform-dependent variables - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - PS=":" - FS="/" - ;; ---- ./jdk/test/java/util/PluggableLocale/ExecTest.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/util/PluggableLocale/ExecTest.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -62,7 +62,7 @@ - # set platform-dependent variables - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - PS=":" - FS="/" - ;; ---- ./jdk/test/java/util/ResourceBundle/Bug6299235Test.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/util/ResourceBundle/Bug6299235Test.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -31,7 +31,7 @@ - # set platform-dependent variables - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - PATHSEP=":" - FILESEP="/" - ;; ---- ./jdk/test/java/util/ServiceLoader/basic.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/util/ServiceLoader/basic.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -43,9 +43,7 @@ - - OS=`uname -s` - case "$OS" in -- SunOS | Darwin | AIX ) -- SEP=':' ;; -- Linux ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - SEP=':' ;; - * ) - SEP='\;' ;; ---- ./jdk/test/java/util/prefs/CheckUserPrefsStorage.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/java/util/prefs/CheckUserPrefsStorage.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -31,7 +31,7 @@ - - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - PS=":" - FS="/" - ;; ---- ./jdk/test/javax/crypto/SecretKeyFactory/FailOverTest.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/javax/crypto/SecretKeyFactory/FailOverTest.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -56,7 +56,7 @@ - # set platform-dependent variables - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - NULL=/dev/null - PS=":" - FS="/" ---- ./jdk/test/javax/imageio/metadata/IIOMetadataFormat/runMetadataFormatTest.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/javax/imageio/metadata/IIOMetadataFormat/runMetadataFormatTest.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -89,7 +89,7 @@ - FILESEP="/" - ;; - -- Linux | Darwin | AIX ) -+ Linux | *BSD | Darwin | AIX ) - VAR="A different value for Linux" - DEFAULT_JDK=/none - #DEFAULT_JDK=/usr/local/java/jdk1.4/linux-i386 ---- ./jdk/test/javax/imageio/metadata/IIOMetadataFormat/runMetadataFormatThreadTest.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/javax/imageio/metadata/IIOMetadataFormat/runMetadataFormatThreadTest.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -90,7 +90,7 @@ - FILESEP="/" - ;; - -- Linux | Darwin | AIX ) -+ Linux | *BSD | Darwin | AIX ) - VAR="A different value for Linux" - DEFAULT_JDK=/none - #DEFAULT_JDK=/usr/local/java/jdk1.4/linux-i386 ---- ./jdk/test/javax/imageio/stream/StreamCloserLeak/run_test.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/javax/imageio/stream/StreamCloserLeak/run_test.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -108,6 +108,14 @@ - TMP="/tmp" - ;; - -+ *BSD ) -+ VAR="A different value for BSD" -+ DEFAULT_JDK=/usr/local/openjdk8 -+ FILESEP="/" -+ PATHSEP=":" -+ TMP="/tmp" -+ ;; -+ - Windows* ) - VAR="A different value for Win32" - DEFAULT_JDK="C:/Program Files/Java/jdk1.8.0" ---- ./jdk/test/javax/script/CommonSetup.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/javax/script/CommonSetup.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -36,7 +36,7 @@ - - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - PS=":" - FS="/" - ;; ---- ./jdk/test/javax/security/auth/Subject/doAs/Test.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/javax/security/auth/Subject/doAs/Test.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -43,7 +43,7 @@ - FS="/" - RM="/bin/rm -f" - ;; -- Darwin ) -+ *BSD | Darwin ) - PS=":" - FS="/" - RM="/bin/rm -f" ---- ./jdk/test/javax/swing/LookAndFeel/8145547/DemandGTK.java Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/javax/swing/LookAndFeel/8145547/DemandGTK.java Sun Feb 10 09:27:00 2019 -0800 -@@ -26,7 +26,7 @@ - @summary Tests that GTK LaF is supported on solaris - regardless of jdk.gtk.version flag values. - @bug 8156121 -- @requires (os.name == "linux" | os.name == "solaris") -+ @requires (os.family == "linux" | os.family == "solaris" | os.family == "bsd") - @run main/othervm -Djdk.gtk.version=2 DemandGTK - @run main/othervm -Djdk.gtk.version=3 DemandGTK - */ ---- ./jdk/test/lib/security/java.policy/Ext_AllPolicy.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/lib/security/java.policy/Ext_AllPolicy.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -53,7 +53,7 @@ - # set platform-dependent variables - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - NULL=/dev/null - PS=":" - FS="/" ---- ./jdk/test/lib/testlibrary/jdk/testlibrary/Platform.java Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/lib/testlibrary/jdk/testlibrary/Platform.java Sun Feb 10 09:27:00 2019 -0800 -@@ -53,8 +53,13 @@ - return isOs("linux"); - } - -+ public static boolean isBSD() { -+ return isOs("bsd"); -+ } -+ - private static boolean isOs(String osname) { -- return osName.toLowerCase().startsWith(osname.toLowerCase()); -+ return (osName.toLowerCase().startsWith(osname.toLowerCase()) || -+ osName.toLowerCase().endsWith(osname.toLowerCase())); - } - - public static String getOsName() { ---- ./jdk/test/sun/awt/dnd/8024061/bug8024061.java Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/awt/dnd/8024061/bug8024061.java Sun Feb 10 09:27:00 2019 -0800 -@@ -107,8 +107,8 @@ - - public static void main(String[] args) throws AWTException, InvocationTargetException, InterruptedException { - OSType type = OSInfo.getOSType(); -- if (type != OSType.LINUX && type != OSType.SOLARIS) { -- System.out.println("This test is for Linux and Solaris only... " + -+ if (type != OSType.LINUX && type != OSType.SOLARIS && type != OSType.BSD) { -+ System.out.println("This test is for BSD, Linux and Solaris only... " + - "skipping!"); - return; - } ---- ./jdk/test/sun/management/jmxremote/bootstrap/GeneratePropertyPassword.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/management/jmxremote/bootstrap/GeneratePropertyPassword.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -42,7 +42,7 @@ - fi - - case $OS in --SunOS | Linux | Darwin | AIX ) -+SunOS | Linux | *BSD | Darwin | AIX ) - PATHSEP=":" - FILESEP="/" - DFILESEP=$FILESEP ---- ./jdk/test/sun/net/ftp/MarkResetTest.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/net/ftp/MarkResetTest.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -28,7 +28,7 @@ - - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - PS=":" - FS="/" - ;; ---- ./jdk/test/sun/net/www/http/HttpClient/RetryPost.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/net/www/http/HttpClient/RetryPost.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -28,7 +28,7 @@ - - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - PS=":" - FS="/" - ;; ---- ./jdk/test/sun/net/www/protocol/jar/B5105410.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/net/www/protocol/jar/B5105410.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -31,7 +31,7 @@ - - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - PS=":" - FS="/" - ;; ---- ./jdk/test/sun/net/www/protocol/jar/jarbug/run.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/net/www/protocol/jar/jarbug/run.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -31,7 +31,7 @@ - - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - PS=":" - FS="/" - CHMOD="${FS}bin${FS}chmod" ---- ./jdk/test/sun/nio/ch/SelProvider.java Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/nio/ch/SelProvider.java Sun Feb 10 09:27:00 2019 -0800 -@@ -39,7 +39,7 @@ - expected = "sun.nio.ch.DevPollSelectorProvider"; - } else if ("Linux".equals(osname)) { - expected = "sun.nio.ch.EPollSelectorProvider"; -- } else if (osname.contains("OS X")) { -+ } else if (osname.endsWith("BSD") || osname.contains("OS X")) { - expected = "sun.nio.ch.KQueueSelectorProvider"; - } else { - return; ---- ./jdk/test/sun/security/krb5/runNameEquals.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/security/krb5/runNameEquals.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -52,7 +52,7 @@ - # set platform-dependent variables - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin ) -+ SunOS | Linux | *BSD | Darwin ) - PATHSEP=":" - FILESEP="/" - NATIVE=true ---- ./jdk/test/sun/security/mscapi/ShortRSAKey1024.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/security/mscapi/ShortRSAKey1024.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -50,7 +50,7 @@ - - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | CYGWIN* ) -+ SunOS | Linux | *BSD | Darwin | CYGWIN* ) - FS="/" - ;; - Windows_* ) ---- ./jdk/test/sun/security/pkcs11/Provider/ConfigQuotedString.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/security/pkcs11/Provider/ConfigQuotedString.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -66,7 +66,7 @@ - CP="${FS}bin${FS}cp" - CHMOD="${FS}bin${FS}chmod" - ;; -- Darwin ) -+ *BSD | Darwin ) - FS="/" - PS=":" - CP="${FS}bin${FS}cp" ---- ./jdk/test/sun/security/pkcs11/Provider/Login.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/security/pkcs11/Provider/Login.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -67,7 +67,7 @@ - CP="${FS}bin${FS}cp" - CHMOD="${FS}bin${FS}chmod" - ;; -- Darwin ) -+ *BSD | Darwin ) - FS="/" - PS=":" - CP="${FS}bin${FS}cp" ---- ./jdk/test/sun/security/provider/KeyStore/DKSTest.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/security/provider/KeyStore/DKSTest.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -50,7 +50,7 @@ - # set platform-dependent variables - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX) -+ SunOS | Linux | *BSD | Darwin | AIX ) - PS=":" - FS="/" - ;; ---- ./jdk/test/sun/security/provider/PolicyFile/GrantAllPermToExtWhenNoPolicy.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/security/provider/PolicyFile/GrantAllPermToExtWhenNoPolicy.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -52,7 +52,7 @@ - PATHSEP=":" - FILESEP="/" - ;; -- Linux ) -+ Linux | *BSD | Darwin ) - PATHSEP=":" - FILESEP="/" - ;; ---- ./jdk/test/sun/security/provider/PolicyFile/getinstance/getinstance.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/security/provider/PolicyFile/getinstance/getinstance.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -59,7 +59,7 @@ - PS=":" - FS="/" - ;; -- Darwin ) -+ *BSD | Darwin ) - PS=":" - FS="/" - ;; ---- ./jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/EngineArgs/DebugReportsOneExtraByte.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/EngineArgs/DebugReportsOneExtraByte.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -33,7 +33,7 @@ - - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - PS=":" - FS="/" - ;; ---- ./jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/NotifyHandshakeTest.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/NotifyHandshakeTest.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -46,7 +46,7 @@ - - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - FILESEP="/" - PATHSEP=":" - ;; ---- ./jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/PostThruProxy.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/PostThruProxy.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -32,7 +32,7 @@ - HOSTNAME=`uname -n` - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - PS=":" - FS="/" - ;; ---- ./jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/PostThruProxyWithAuth.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/PostThruProxyWithAuth.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -32,7 +32,7 @@ - HOSTNAME=`uname -n` - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - PS=":" - FS="/" - ;; ---- ./jdk/test/sun/security/tools/jarsigner/AlgOptions.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/security/tools/jarsigner/AlgOptions.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -46,7 +46,7 @@ - # set platform-dependent variables - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - NULL=/dev/null - PS=":" - FS="/" ---- ./jdk/test/sun/security/tools/jarsigner/PercentSign.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/security/tools/jarsigner/PercentSign.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -46,7 +46,7 @@ - # set platform-dependent variables - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - NULL=/dev/null - PS=":" - FS="/" ---- ./jdk/test/sun/security/tools/jarsigner/diffend.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/security/tools/jarsigner/diffend.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -47,6 +47,13 @@ - FS="/" - CP="${FS}bin${FS}cp -f" - ;; -+ *BSD ) -+ NULL=/dev/null -+ PS=":" -+ FS="/" -+ PATH="${PATH}${PS}${FS}usr${FS}local${FS}bin" -+ CP="${FS}bin${FS}cp -f" -+ ;; - CYGWIN* ) - NULL=/dev/null - PS=";" ---- ./jdk/test/sun/security/tools/jarsigner/emptymanifest.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/security/tools/jarsigner/emptymanifest.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -39,6 +39,11 @@ - Windows_* ) - FS="\\" - ;; -+ *BSD ) -+ PS=":" -+ FS="/" -+ PATH="${PATH}${PS}${FS}usr${FS}local${FS}bin" -+ ;; - * ) - FS="/" - ;; ---- ./jdk/test/sun/security/tools/jarsigner/oldsig.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/security/tools/jarsigner/oldsig.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -42,7 +42,7 @@ - # set platform-dependent variables - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - NULL=/dev/null - PS=":" - FS="/" ---- ./jdk/test/sun/security/tools/keytool/AltProviderPath.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/security/tools/keytool/AltProviderPath.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -46,7 +46,7 @@ - # set platform-dependent variables - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - NULL=/dev/null - PS=":" - FS="/" ---- ./jdk/test/sun/security/tools/keytool/CloneKeyAskPassword.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/security/tools/keytool/CloneKeyAskPassword.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -55,7 +55,7 @@ - PATHSEP=":" - FILESEP="/" - ;; -- Darwin ) -+ *BSD | Darwin ) - PATHSEP=":" - FILESEP="/" - ;; ---- ./jdk/test/sun/security/tools/keytool/NoExtNPE.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/security/tools/keytool/NoExtNPE.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -48,7 +48,7 @@ - Linux ) - FILESEP="/" - ;; -- Darwin ) -+ *BSD | Darwin ) - FILESEP="/" - ;; - AIX ) ---- ./jdk/test/sun/security/tools/keytool/SecretKeyKS.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/security/tools/keytool/SecretKeyKS.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -45,7 +45,7 @@ - # set platform-dependent variables - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - NULL=/dev/null - PS=":" - FS="/" ---- ./jdk/test/sun/security/tools/keytool/StandardAlgName.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/security/tools/keytool/StandardAlgName.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -46,7 +46,7 @@ - # set platform-dependent variables - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - NULL=/dev/null - PS=":" - FS="/" ---- ./jdk/test/sun/security/tools/keytool/StorePasswordsByShell.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/security/tools/keytool/StorePasswordsByShell.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -46,7 +46,7 @@ - # set platform-dependent variables - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX) -+ SunOS | Linux | *BSD | Darwin | AIX ) - PATHSEP=":" - FILESEP="/" - ;; ---- ./jdk/test/sun/security/tools/keytool/i18n.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/security/tools/keytool/i18n.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -46,7 +46,7 @@ - # set platform-dependent variables - OS=`uname -s` - case "$OS" in -- SunOS | Linux ) -+ SunOS | Linux | *BSD ) - NULL=/dev/null - PS=":" - FS="/" ---- ./jdk/test/sun/security/tools/keytool/printssl.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/security/tools/keytool/printssl.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -40,7 +40,7 @@ - # set platform-dependent variables - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - FS="/" - ;; - CYGWIN* ) ---- ./jdk/test/sun/security/tools/keytool/resource.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/security/tools/keytool/resource.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -43,7 +43,7 @@ - # set platform-dependent variables - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - NULL=/dev/null - FS="/" - ;; ---- ./jdk/test/sun/security/tools/keytool/standard.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/security/tools/keytool/standard.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -45,7 +45,7 @@ - # set platform-dependent variables - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX | CYGWIN* ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - FS="/" - ;; - Windows_* ) ---- ./jdk/test/sun/security/tools/policytool/Alias.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/security/tools/policytool/Alias.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -47,7 +47,7 @@ - # set platform-dependent variables - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - NULL=/dev/null - PS=":" - FS="/" ---- ./jdk/test/sun/security/tools/policytool/ChangeUI.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/security/tools/policytool/ChangeUI.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -46,7 +46,7 @@ - # set platform-dependent variables - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - NULL=/dev/null - PS=":" - FS="/" ---- ./jdk/test/sun/security/tools/policytool/OpenPolicy.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/security/tools/policytool/OpenPolicy.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -46,7 +46,7 @@ - # set platform-dependent variables - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - NULL=/dev/null - PS=":" - FS="/" ---- ./jdk/test/sun/security/tools/policytool/SaveAs.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/security/tools/policytool/SaveAs.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -47,7 +47,7 @@ - # set platform-dependent variables - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - NULL=/dev/null - PS=":" - FS="/" ---- ./jdk/test/sun/security/tools/policytool/UpdatePermissions.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/security/tools/policytool/UpdatePermissions.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -47,7 +47,7 @@ - # set platform-dependent variables - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - NULL=/dev/null - PS=":" - FS="/" ---- ./jdk/test/sun/security/tools/policytool/UsePolicy.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/security/tools/policytool/UsePolicy.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -46,7 +46,7 @@ - # set platform-dependent variables - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - NULL=/dev/null - PS=":" - FS="/" ---- ./jdk/test/sun/security/tools/policytool/i18n.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/security/tools/policytool/i18n.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -49,7 +49,7 @@ - # set platform-dependent variables - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - NULL=/dev/null - PS=":" - FS="/" ---- ./jdk/test/sun/tools/common/CommonSetup.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/tools/common/CommonSetup.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -47,6 +47,7 @@ - # isLinux - true if OS is Linux - # isSolaris - true if OS is Solaris - # isWindows - true if OS is Windows -+# isBSD - true if OS is BSD - # isMacos - true if OS is Macos X - # isAIX - true if OS is AIX - -@@ -83,6 +84,7 @@ - isSolaris=false - isUnknownOS=false - isWindows=false -+isBSD=false - isMacos=false - isAIX=false - -@@ -107,6 +109,10 @@ - OS="Linux" - isLinux=true - ;; -+ *BSD ) -+ OS="BSD" -+ isBSD=true -+ ;; - Darwin ) - OS="Mac OS X" - isMacos=true ---- ./jdk/test/sun/tools/jconsole/ResourceCheckTest.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/tools/jconsole/ResourceCheckTest.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -54,7 +54,7 @@ - - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX) -+ SunOS | Linux | *BSD | Darwin | AIX) - PATHSEP=":" - ;; - ---- ./jdk/test/sun/tools/native2ascii/resources/ImmutableResourceTest.sh Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/sun/tools/native2ascii/resources/ImmutableResourceTest.sh Sun Feb 10 09:27:00 2019 -0800 -@@ -56,7 +56,7 @@ - - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | AIX ) -+ SunOS | Linux | *BSD | Darwin | AIX ) - PATHSEP=":" - ;; - ---- ./jdk/test/tools/launcher/ExecutionEnvironment.java Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/tools/launcher/ExecutionEnvironment.java Sun Feb 10 09:27:00 2019 -0800 -@@ -194,7 +194,7 @@ - - Map<String, String> env = new HashMap<>(); - -- if (TestHelper.isLinux || TestHelper.isMacOSX || TestHelper.isAIX) { -+ if (TestHelper.isLinux || TestHelper.isBSD || TestHelper.isMacOSX || TestHelper.isAIX) { - for (String x : LD_PATH_STRINGS) { - String pairs[] = x.split("="); - env.put(pairs[0], pairs[1]); ---- ./jdk/test/tools/launcher/RunpathTest.java Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/tools/launcher/RunpathTest.java Sun Feb 10 09:27:00 2019 -0800 -@@ -69,7 +69,7 @@ - } - - public static void main(String... args) throws Exception { -- if (isSolaris || isLinux) { -+ if (isSolaris || isLinux || isBSD) { - RunpathTest rp = new RunpathTest(); - rp.testRpath(); - } ---- ./jdk/test/tools/launcher/Test7029048.java Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/tools/launcher/Test7029048.java Sun Feb 10 09:27:00 2019 -0800 -@@ -223,7 +223,7 @@ - } else if (isSolaris && passes < 9) { - throw new Exception("Test7029048: FAIL: " + - "all tests did not run, expected " + 9 + " got " + passes); -- } else if (isLinux && passes < 6) { -+ } else if ((isLinux || isBSD) && passes < 6) { - throw new Exception("Test7029048: FAIL: " + - "all tests did not run, expected " + 6 + " got " + passes); - } else { ---- ./jdk/test/tools/launcher/TestHelper.java Sat Dec 08 11:51:25 2018 +0000 -+++ ./jdk/test/tools/launcher/TestHelper.java Sun Feb 10 09:27:00 2019 -0800 -@@ -94,6 +94,8 @@ - System.getProperty("os.name", "unknown").startsWith("Linux"); - static final boolean isAIX = - System.getProperty("os.name", "unknown").startsWith("AIX"); -+ static final boolean isBSD = -+ System.getProperty("os.name", "unknown").endsWith("BSD"); - static final String LIBJVM = isWindows - ? "jvm.dll" - : "libjvm" + (isMacOSX ? ".dylib" : ".so"); ---- ./langtools/test/Makefile Sat Dec 08 11:52:50 2018 +0000 -+++ ./langtools/test/Makefile Fri Feb 08 17:44:17 2019 -0800 -@@ -34,6 +34,14 @@ - ARCH=i586 - endif - endif -+ifneq ($(findstring BSD, $(OSNAME)), ) -+ PLATFORM = bsd -+ JT_PLATFORM = linux -+ ARCH = $(shell uname -p) -+ ifeq ($(ARCH), i386) -+ ARCH=i586 -+ endif -+endif - ifeq ($(OSNAME), Darwin) - PLATFORM = bsd - ARCH = $(shell uname -m) ---- ./langtools/test/tools/javah/ReadOldClass.sh Sat Dec 08 11:52:50 2018 +0000 -+++ ./langtools/test/tools/javah/ReadOldClass.sh Fri Feb 08 17:44:17 2019 -0800 -@@ -43,7 +43,7 @@ - # set platform-dependent variables - OS=`uname -s` - case "$OS" in -- SunOS | Linux | Darwin | CYGWIN* ) -+ SunOS | Linux | *BSD | Darwin | CYGWIN* ) - PS=":" - FS="/" - ;; ---- ./nashorn/test/script/jfx.js Sat Dec 08 11:53:10 2018 +0000 -+++ ./nashorn/test/script/jfx.js Fri Feb 08 17:44:19 2019 -0800 -@@ -93,6 +93,8 @@ - f2 = new File(sb.append(fsep + "linux.png").toString()); - } else if (OSInfo.getOSType() == OSType.MACOSX) { - f2 = new File(sb.append(fsep + "macosx.png").toString()); -+ } else if (OSInfo.getOSType() == OSType.BSD) { -+ f2 = new File(sb.append(fsep + "bsd.png").toString()); - } - if (f1.exists() && f2.exists()) { - var image1 = new AWTImage(PNGDecoder.decode(f1.getAbsolutePath())); diff --git a/java/openjdk8/files/patch-common_autoconf_build-performance.m4 b/java/openjdk8/files/patch-common_autoconf_build-performance.m4 deleted file mode 100644 index e54d13e29f53..000000000000 --- a/java/openjdk8/files/patch-common_autoconf_build-performance.m4 +++ /dev/null @@ -1,11 +0,0 @@ ---- common/autoconf/build-performance.m4.orig -+++ common/autoconf/build-performance.m4 -@@ -213,7 +213,7 @@ AC_DEFUN([BPERF_SETUP_CCACHE_USAGE], - # precompiled headers. - AC_MSG_CHECKING([if ccache supports precompiled headers]) - HAS_GOOD_CCACHE=`($CCACHE --version | head -n 1 | awk '{ split(@S|@3, a, "."); if (a@<:@1@:>@ >= 3 && (a@<:@2@:>@ > 1 || (a@<:@2@:>@ == 1 && a@<:@3@:>@ >= 4))) print "yes"; else print "no"; }') 2> /dev/null` -- if test "x$HAS_GOOD_CCACHE" = xyes; then -+ if test "x$HAS_GOOD_CCACHE" != xyes; then - AC_MSG_RESULT([no, disabling ccache]) - CCACHE= - else diff --git a/java/openjdk8/files/patch-common_autoconf_generated-configure.sh b/java/openjdk8/files/patch-common_autoconf_generated-configure.sh deleted file mode 100644 index 5d23acb86040..000000000000 --- a/java/openjdk8/files/patch-common_autoconf_generated-configure.sh +++ /dev/null @@ -1,11 +0,0 @@ ---- common/autoconf/generated-configure.sh.orig -+++ common/autoconf/generated-configure.sh -@@ -36760,7 +36760,7 @@ fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if ccache supports precompiled headers" >&5 - $as_echo_n "checking if ccache supports precompiled headers... " >&6; } - HAS_GOOD_CCACHE=`($CCACHE --version | head -n 1 | awk '{ split($3, a, "."); if (a[1] >= 3 && (a[2] > 1 || (a[2] == 1 && a[3] >= 4))) print "yes"; else print "no"; }') 2> /dev/null` -- if test "x$HAS_GOOD_CCACHE" = xyes; then -+ if test "x$HAS_GOOD_CCACHE" != xyes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, disabling ccache" >&5 - $as_echo "no, disabling ccache" >&6; } - CCACHE= diff --git a/java/openjdk8/files/patch-hotspot-agent-src-share-classes-sun-jvm-hotspot-debugger-bsd-BsdThread.java b/java/openjdk8/files/patch-hotspot-agent-src-share-classes-sun-jvm-hotspot-debugger-bsd-BsdThread.java deleted file mode 100644 index 2f42fcb3672a..000000000000 --- a/java/openjdk8/files/patch-hotspot-agent-src-share-classes-sun-jvm-hotspot-debugger-bsd-BsdThread.java +++ /dev/null @@ -1,11 +0,0 @@ ---- ./hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/bsd/BsdThread.java.orig 2016-05-14 19:57:37.394543000 +0000 -+++ ./hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/bsd/BsdThread.java 2016-05-14 20:47:09.600014000 +0000 -@@ -61,7 +62,7 @@ - } - - public String toString() { -- return Integer.toString(thread_id); -+ return Integer.toString(thread_id) + "/" + Long.toString(unique_thread_id); - } - - public ThreadContext getContext() throws IllegalThreadStateException { diff --git a/java/openjdk8/files/patch-hotspot-src-os-bsd-vm-os_bsd.cpp b/java/openjdk8/files/patch-hotspot-src-os-bsd-vm-os_bsd.cpp deleted file mode 100644 index 09594d524ca7..000000000000 --- a/java/openjdk8/files/patch-hotspot-src-os-bsd-vm-os_bsd.cpp +++ /dev/null @@ -1,36 +0,0 @@ ---- hotspot/src/os/bsd/vm/os_bsd.cpp.orig 2017-09-06 22:12:44 UTC -+++ hotspot/src/os/bsd/vm/os_bsd.cpp -@@ -189,7 +189,9 @@ julong os::Bsd::available_memory() { - #ifdef __FreeBSD__ - static const char *vm_stats[] = { - "vm.stats.vm.v_free_count", -+#if __FreeBSD_version < 1200016 - "vm.stats.vm.v_cache_count", -+#endif - "vm.stats.vm.v_inactive_count" - }; - size_t size; -@@ -775,6 +777,11 @@ static void *java_start(Thread *thread) - guarantee(unique_thread_id != 0, "unique thread id was not found"); - osthread->set_unique_thread_id(unique_thread_id); - #endif -+#ifdef __FreeBSD__ -+ uint64_t unique_thread_id = os::Bsd::gettid(); -+ guarantee(unique_thread_id != 0, "unique thread id was not found"); -+ osthread->set_unique_thread_id(unique_thread_id); -+#endif - // initialize signal mask for this thread - os::Bsd::hotspot_sigmask(thread); - -@@ -938,6 +945,11 @@ bool os::create_attached_thread(JavaThre - guarantee(unique_thread_id != 0, "just checking"); - osthread->set_unique_thread_id(unique_thread_id); - #endif -+#ifdef __FreeBSD__ -+ uint64_t unique_thread_id = os::Bsd::gettid(); -+ guarantee(unique_thread_id != 0, "unique thread id was not found"); -+ osthread->set_unique_thread_id(unique_thread_id); -+#endif - osthread->set_pthread_id(::pthread_self()); - - // initialize floating point control register diff --git a/java/openjdk8/files/patch-hotspot-src_cpu_zero_vm_methodHandles__zero.cpp b/java/openjdk8/files/patch-hotspot-src_cpu_zero_vm_methodHandles__zero.cpp deleted file mode 100644 index abb4e5554244..000000000000 --- a/java/openjdk8/files/patch-hotspot-src_cpu_zero_vm_methodHandles__zero.cpp +++ /dev/null @@ -1,12 +0,0 @@ ---- hotspot/src/cpu/zero/vm/methodHandles_zero.cpp.orig -+++ hotspot/src/cpu/zero/vm/methodHandles_zero.cpp -@@ -180,3 +180,9 @@ address MethodHandles::generate_method_handle_interpre - return NULL; - } - } -+ -+#ifndef PRODUCT -+void MethodHandles::trace_method_handle(MacroAssembler* _masm, const char* adaptername) { -+ // This is just a stub. -+} -+#endif //PRODUCT diff --git a/java/openjdk8/files/patch-hotspot_make_bsd_makefiles_gcc.make b/java/openjdk8/files/patch-hotspot_make_bsd_makefiles_gcc.make deleted file mode 100644 index 83d105676172..000000000000 --- a/java/openjdk8/files/patch-hotspot_make_bsd_makefiles_gcc.make +++ /dev/null @@ -1,12 +0,0 @@ ---- hotspot/make/bsd/makefiles/gcc.make.orig -+++ hotspot/make/bsd/makefiles/gcc.make -@@ -200,6 +200,9 @@ ifeq ($(USE_CLANG),) - CFLAGS += -fvisibility=hidden - endif - else -+ ifneq ($(OS_VENDOR), Darwin) -+ CFLAGS += -pthread -+ endif - CFLAGS += -fvisibility=hidden - endif - diff --git a/java/openjdk8/files/patch-hotspot_src_cpu_ppc_vm_vm_version_ppc.cpp b/java/openjdk8/files/patch-hotspot_src_cpu_ppc_vm_vm_version_ppc.cpp deleted file mode 100644 index f5ab1641093c..000000000000 --- a/java/openjdk8/files/patch-hotspot_src_cpu_ppc_vm_vm_version_ppc.cpp +++ /dev/null @@ -1,17 +0,0 @@ ---- hotspot/src/cpu/ppc/vm/vm_version_ppc.cpp.orig -+++ hotspot/src/cpu/ppc/vm/vm_version_ppc.cpp -@@ -38,8 +38,13 @@ - #ifdef TARGET_OS_FAMILY_linux - # include "os_linux.inline.hpp" - #endif -- -+#ifdef TARGET_OS_FAMILY_bsd -+# include "os_bsd.inline.hpp" -+#endif -+ -+#ifndef TARGET_OS_FAMILY_bsd - # include <sys/sysinfo.h> -+#endif - - int VM_Version::_features = VM_Version::unknown_m; - int VM_Version::_measured_cache_line_size = 128; // default value diff --git a/java/openjdk8/files/patch-hotspot_src_os__cpu_bsd__zero_vm_atomic__bsd__zero.inline.hpp b/java/openjdk8/files/patch-hotspot_src_os__cpu_bsd__zero_vm_atomic__bsd__zero.inline.hpp deleted file mode 100644 index cf23cc7cd434..000000000000 --- a/java/openjdk8/files/patch-hotspot_src_os__cpu_bsd__zero_vm_atomic__bsd__zero.inline.hpp +++ /dev/null @@ -1,46 +0,0 @@ ---- hotspot/src/os_cpu/bsd_zero/vm/atomic_bsd_zero.inline.hpp.orig 2015-06-03 16:41:00 UTC -+++ hotspot/src/os_cpu/bsd_zero/vm/atomic_bsd_zero.inline.hpp -@@ -112,8 +112,16 @@ static inline int m68k_lock_test_and_set - * - */ - -+#if defined(__FreeBSD__) -+#include <machine/atomic.h> -+#define __kernel_cmpxchg(oldval, newval, ptr) (!atomic_cmpset_rel_32((volatile u_int32_t *)(ptr), (u_int32_t)(oldval), (u_int32_t)(newval))) -+#elif defined(__NetBSD__) -+#include <sys/atomic.h> -+#define __kernel_cmpxchg(oldval, newval, ptr) ((unsigned int)(oldval) != atomic_cas_uint((volatile unsigned int*)(ptr), (unsigned int)(oldval), (unsigned int)(newval))) -+#else - typedef int (__kernel_cmpxchg_t)(int oldval, int newval, volatile int *ptr); - #define __kernel_cmpxchg (*(__kernel_cmpxchg_t *) 0xffff0fc0) -+#endif - - - -@@ -177,7 +185,7 @@ inline void Atomic::store_ptr(intptr_t s - - inline jint Atomic::add(jint add_value, volatile jint* dest) { - #ifdef ARM -- return arm_add_and_fetch(dest, add_value); -+ return arm_add_and_fetch((volatile int*)dest, add_value); - #else - #ifdef M68K - return m68k_add_and_fetch(dest, add_value); -@@ -189,7 +197,7 @@ inline jint Atomic::add(jint add_value, - - inline intptr_t Atomic::add_ptr(intptr_t add_value, volatile intptr_t* dest) { - #ifdef ARM -- return arm_add_and_fetch(dest, add_value); -+ return arm_add_and_fetch((volatile int*)dest, add_value); - #else - #ifdef M68K - return m68k_add_and_fetch(dest, add_value); -@@ -286,7 +294,7 @@ inline intptr_t Atomic::cmpxchg_ptr(intp - volatile intptr_t* dest, - intptr_t compare_value) { - #ifdef ARM -- return arm_compare_and_swap(dest, compare_value, exchange_value); -+ return arm_compare_and_swap((volatile int*)dest, compare_value, exchange_value); - #else - #ifdef M68K - return m68k_compare_and_swap(dest, compare_value, exchange_value); diff --git a/java/openjdk8/files/patch-hotspot_src_os__cpu_bsd__zero_vm_orderAccess__bsd__zero.inline.hpp b/java/openjdk8/files/patch-hotspot_src_os__cpu_bsd__zero_vm_orderAccess__bsd__zero.inline.hpp deleted file mode 100644 index 3ce69f31e339..000000000000 --- a/java/openjdk8/files/patch-hotspot_src_os__cpu_bsd__zero_vm_orderAccess__bsd__zero.inline.hpp +++ /dev/null @@ -1,21 +0,0 @@ -ARM: Substitute Linux atomic ops with FreeBSD/NetBSD atomic ops - ---- hotspot/src/os_cpu/bsd_zero/vm/orderAccess_bsd_zero.inline.hpp.orig 2015-06-03 15:49:41 UTC -+++ hotspot/src/os_cpu/bsd_zero/vm/orderAccess_bsd_zero.inline.hpp -@@ -37,8 +37,16 @@ - * and gcc __sync_synchronize(); implementation does not use the kernel - * helper for all gcc versions so it is unreliable to use as well. - */ -+#if defined(__FreeBSD__) -+#include <machine/atomic.h> -+#define __kernel_dmb dmb -+#elif defined(__NetBSD__) -+#include <sys/atomic.h> -+#define __kernel_dmb membar_sync -+#else - typedef void (__kernel_dmb_t) (void); - #define __kernel_dmb (*(__kernel_dmb_t *) 0xffff0fa0) -+#endif - - #define FULL_MEM_BARRIER __kernel_dmb() - #define READ_MEM_BARRIER __kernel_dmb() diff --git a/java/openjdk8/files/patch-hotspot_src_os__cpu_bsd__zero_vm_os__bsd__zero.cpp b/java/openjdk8/files/patch-hotspot_src_os__cpu_bsd__zero_vm_os__bsd__zero.cpp deleted file mode 100644 index 713d5c13c630..000000000000 --- a/java/openjdk8/files/patch-hotspot_src_os__cpu_bsd__zero_vm_os__bsd__zero.cpp +++ /dev/null @@ -1,44 +0,0 @@ ---- hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp.orig 2014-03-04 02:52:15 UTC -+++ hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp -@@ -60,8 +60,8 @@ - #include "utilities/vmError.hpp" - - address os::current_stack_pointer() { -- address dummy = (address) &dummy; -- return dummy; -+ // return the address of the current function -+ return (address)__builtin_frame_address(0); - } - - frame os::get_sender_for_C_frame(frame* fr) { -@@ -189,7 +189,7 @@ - ShouldNotCallThis(); - } - else*/ if (thread->thread_state() == _thread_in_vm && -- sig == SIGBUS && thread->doing_unsafe_access()) { -+ (sig == SIGSEGV || sig == SIGBUS) && thread->doing_unsafe_access()) { - ShouldNotCallThis(); - } - -@@ -446,21 +446,6 @@ extern "C" { - } - }; - --///////////////////////////////////////////////////////////////////////////// --// Implementations of atomic operations not supported by processors. --// -- http://gcc.gnu.org/onlinedocs/gcc-4.2.1/gcc/Atomic-Builtins.html -- --#ifndef _LP64 --extern "C" { -- long long unsigned int __sync_val_compare_and_swap_8( -- volatile void *ptr, -- long long unsigned int oldval, -- long long unsigned int newval) { -- ShouldNotCallThis(); -- } --}; --#endif // !_LP64 -- - #ifndef PRODUCT - void os::verify_stack_alignment() { - } diff --git a/java/openjdk8/files/patch-hotspot_src_os_bsd_vm_globals__bsd.hpp b/java/openjdk8/files/patch-hotspot_src_os_bsd_vm_globals__bsd.hpp deleted file mode 100644 index 5449e002c8f2..000000000000 --- a/java/openjdk8/files/patch-hotspot_src_os_bsd_vm_globals__bsd.hpp +++ /dev/null @@ -1,27 +0,0 @@ ---- hotspot/src/os/bsd/vm/globals_bsd.hpp.orig 2014-03-04 02:52:13 UTC -+++ hotspot/src/os/bsd/vm/globals_bsd.hpp -@@ -35,19 +35,17 @@ - product(bool, UseBsdPosixThreadCPUClocks, true, \ - "enable fast Bsd Posix clocks where available") \ - /* NB: The default value of UseBsdPosixThreadCPUClocks may be \ -- overridden in Arguments::parse_each_vm_init_arg. */ \ -- \ -- product(bool, UseHugeTLBFS, false, \ -- "Use MAP_HUGETLB for large pages") \ -- \ -- product(bool, UseSHM, false, \ -- "Use SYSV shared memory for large pages") -+ overridden in Arguments::parse_each_vm_init_arg. */ - - // - // Defines Bsd-specific default values. The flags are available on all - // platforms, but they may have different default values on other platforms. - // -+#ifdef __FreeBSD__ -+define_pd_global(bool, UseLargePages, true); -+#else - define_pd_global(bool, UseLargePages, false); -+#endif - define_pd_global(bool, UseLargePagesIndividualAllocation, false); - define_pd_global(bool, UseOSErrorReporting, false); - define_pd_global(bool, UseThreadPriorities, true) ; diff --git a/java/openjdk8/files/patch-hotspot_src_os_bsd_vm_os__bsd.cpp b/java/openjdk8/files/patch-hotspot_src_os_bsd_vm_os__bsd.cpp deleted file mode 100644 index edafe1666306..000000000000 --- a/java/openjdk8/files/patch-hotspot_src_os_bsd_vm_os__bsd.cpp +++ /dev/null @@ -1,249 +0,0 @@ ---- hotspot/src/os/bsd/vm/os_bsd.cpp.orig 2017-12-01 00:32:02 UTC -+++ hotspot/src/os/bsd/vm/os_bsd.cpp -@@ -1588,6 +1588,10 @@ void * os::dll_load(const char *filename, char *ebuf, - #define EM_X86_64 62 /* AMD x86-64 */ - #endif - -+ #ifndef EM_AARCH64 -+ #define EM_AARCH64 183 /* ARM AARCH64 */ -+ #endif -+ - static const arch_t arch_array[]={ - {EM_386, EM_386, ELFCLASS32, ELFDATA2LSB, (char*)"IA 32"}, - {EM_486, EM_386, ELFCLASS32, ELFDATA2LSB, (char*)"IA 32"}, -@@ -1604,7 +1608,8 @@ void * os::dll_load(const char *filename, char *ebuf, - {EM_MIPS_RS3_LE, EM_MIPS_RS3_LE, ELFCLASS32, ELFDATA2LSB, (char*)"MIPSel"}, - {EM_MIPS, EM_MIPS, ELFCLASS32, ELFDATA2MSB, (char*)"MIPS"}, - {EM_PARISC, EM_PARISC, ELFCLASS32, ELFDATA2MSB, (char*)"PARISC"}, -- {EM_68K, EM_68K, ELFCLASS32, ELFDATA2MSB, (char*)"M68k"} -+ {EM_68K, EM_68K, ELFCLASS32, ELFDATA2MSB, (char*)"M68k"}, -+ {EM_AARCH64, EM_AARCH64, ELFCLASS64, ELFDATA2LSB, (char*)"AARCH64"}, - }; - - #if (defined IA32) -@@ -1621,6 +1626,8 @@ void * os::dll_load(const char *filename, char *ebuf, - static Elf32_Half running_arch_code=EM_PPC64; - #elif (defined __powerpc__) - static Elf32_Half running_arch_code=EM_PPC; -+ #elif (defined AARCH64) -+ static Elf32_Half running_arch_code=EM_AARCH64; - #elif (defined ARM) - static Elf32_Half running_arch_code=EM_ARM; - #elif (defined S390) -@@ -1637,7 +1644,7 @@ void * os::dll_load(const char *filename, char *ebuf, - static Elf32_Half running_arch_code=EM_68K; - #else - #error Method os::dll_load requires that one of following is defined:\ -- IA32, AMD64, IA64, __sparc, __powerpc__, ARM, S390, ALPHA, MIPS, MIPSEL, PARISC, M68K -+ AARCH64, IA32, AMD64, IA64, __sparc, __powerpc__, ARM, S390, ALPHA, MIPS, MIPSEL, PARISC, M68K - #endif - - // Identify compatability class for VM's architecture and library's architecture -@@ -2395,14 +2402,18 @@ static address _highest_vm_reserved_address = NULL; - // 'requested_addr' is only treated as a hint, the return value may or - // may not start from the requested address. Unlike Bsd mmap(), this - // function returns NULL to indicate failure. --static char* anon_mmap(char* requested_addr, size_t bytes, bool fixed) { -+static char* anon_mmap(char* requested_addr, size_t bytes, size_t alignment_hint, bool fixed) { - char * addr; - int flags; - -+ assert(!(fixed && (alignment_hint > 0)), "alignment hint meaningless with fixed mmap"); -+ - flags = MAP_PRIVATE | MAP_ANONYMOUS; - if (fixed) { - assert((uintptr_t)requested_addr % os::Bsd::page_size() == 0, "unaligned address"); - flags |= MAP_FIXED; -+ } else if (alignment_hint > 0) { -+ flags |= MAP_ALIGNED(ffs(alignment_hint) - 1); - } - - // Map reserved/uncommitted pages PROT_NONE so we fail early if we -@@ -2434,7 +2445,7 @@ static int anon_munmap(char * addr, size_t size) { - - char* os::pd_reserve_memory(size_t bytes, char* requested_addr, - size_t alignment_hint) { -- return anon_mmap(requested_addr, bytes, (requested_addr != NULL)); -+ return anon_mmap(requested_addr, bytes, alignment_hint, (requested_addr != NULL)); - } - - bool os::pd_release_memory(char* addr, size_t size) { -@@ -2480,19 +2491,93 @@ bool os::unguard_memory(char* addr, size_t size) { - return bsd_mprotect(addr, size, PROT_READ|PROT_WRITE); - } - --bool os::Bsd::hugetlbfs_sanity_check(bool warn, size_t page_size) { -- return false; --} -- - // Large page support - - static size_t _large_page_size = 0; - - void os::large_page_init() { -+ if (UseLargePages) { -+ // print a warning if any large page related flag is specified on command line -+ bool warn_on_failure = !FLAG_IS_DEFAULT(UseLargePages) || -+ !FLAG_IS_DEFAULT(LargePageSizeInBytes); -+ -+ UseLargePages = Bsd::superpage_sanity_check(warn_on_failure, &_large_page_size); -+ } - } - -+// Insertion sort for small arrays (descending order). -+static void insertion_sort_descending(size_t* array, int len) { -+ for (int i = 0; i < len; i++) { -+ size_t val = array[i]; -+ for (size_t key = i; key > 0 && array[key - 1] < val; --key) { -+ size_t tmp = array[key]; -+ array[key] = array[key - 1]; -+ array[key - 1] = tmp; -+ } -+ } -+} - -+bool os::Bsd::superpage_sanity_check(bool warn, size_t* page_size) { -+#ifdef __FreeBSD__ -+ const unsigned int usable_count = VM_Version::page_size_count(); -+ if (usable_count == 1) { -+ return false; -+ } -+ -+ // Fill the array of page sizes. -+ int n = ::getpagesizes(_page_sizes, page_sizes_max); -+ assert(n > 0, "FreeBSD bug?"); -+ -+ if (n == page_sizes_max) { -+ // Add a sentinel value (necessary only if the array was completely filled -+ // since it is static (zeroed at initialization)). -+ _page_sizes[--n] = 0; -+ DEBUG_ONLY(warning("increase the size of the os::_page_sizes array.");) -+ } -+ assert(_page_sizes[n] == 0, "missing sentinel"); -+ trace_page_sizes("available page sizes", _page_sizes, n); -+ -+ if (n == 1) return false; // Only one page size available. -+ -+ // Skip sizes larger than 4M (or LargePageSizeInBytes if it was set) and -+ // select up to usable_count elements. First sort the array, find the first -+ // acceptable value, then copy the usable sizes to the top of the array and -+ // trim the rest. Make sure to include the default page size :-). -+ // -+ // A better policy could get rid of the 4M limit by taking the sizes of the -+ // important VM memory regions (java heap and possibly the code cache) into -+ // account. -+ insertion_sort_descending(_page_sizes, n); -+ const size_t size_limit = -+ FLAG_IS_DEFAULT(LargePageSizeInBytes) ? 4 * M : LargePageSizeInBytes; -+ int beg; -+ for (beg = 0; beg < n && _page_sizes[beg] > size_limit; ++beg) /* empty */ ; -+ const int end = MIN2((int)usable_count, n) - 1; -+ for (int cur = 0; cur < end; ++cur, ++beg) { -+ _page_sizes[cur] = _page_sizes[beg]; -+ } -+ _page_sizes[end] = vm_page_size(); -+ _page_sizes[end + 1] = 0; -+ -+ if (_page_sizes[end] > _page_sizes[end - 1]) { -+ // Default page size is not the smallest; sort again. -+ insertion_sort_descending(_page_sizes, end + 1); -+ } -+ *page_size = _page_sizes[0]; -+ -+ trace_page_sizes("usable page sizes", _page_sizes, end + 1); -+ return true; -+#else -+ return false; -+#endif -+} -+ -+ - char* os::reserve_memory_special(size_t bytes, size_t alignment, char* req_addr, bool exec) { -+#ifdef __FreeBSD__ -+ fatal("os::reserve_memory_special should not be called on FreeBSD."); -+ return NULL; -+#else - fatal("This code is not used or maintained."); - - // "exec" is passed in but not used. Creating the shared image for -@@ -2552,9 +2637,14 @@ char* os::reserve_memory_special(size_t bytes, size_t - MemTracker::record_virtual_memory_reserve_and_commit((address)addr, bytes, CALLER_PC); - - return addr; -+#endif - } - - bool os::release_memory_special(char* base, size_t bytes) { -+#ifdef __FreeBSD__ -+ fatal("os::release_memory_special should not be called on FreeBSD."); -+ return false; -+#else - if (MemTracker::tracking_level() > NMT_minimal) { - Tracker tkr = MemTracker::get_virtual_memory_release_tracker(); - // detaching the SHM segment will also delete it, see reserve_memory_special() -@@ -2568,21 +2658,28 @@ bool os::release_memory_special(char* base, size_t byt - } else { - return shmdt(base) == 0; - } -+#endif - } - - size_t os::large_page_size() { - return _large_page_size; - } - --// HugeTLBFS allows application to commit large page memory on demand; --// with SysV SHM the entire memory region must be allocated as shared --// memory. -+// FreeBSD allows application to commit large page memory on demand. - bool os::can_commit_large_page_memory() { -- return UseHugeTLBFS; -+#ifdef __FreeBSD__ -+ return true; -+#else -+ return false; -+#endif - } - - bool os::can_execute_large_page_memory() { -- return UseHugeTLBFS; -+#ifdef __FreeBSD__ -+ return true; -+#else -+ return false; -+#endif - } - - // Reserve memory at an arbitrary address, only if that area is -@@ -2614,7 +2711,7 @@ char* os::pd_attempt_reserve_memory_at(size_t bytes, c - - // Bsd mmap allows caller to pass an address as hint; give it a try first, - // if kernel honors the hint then we can return immediately. -- char * addr = anon_mmap(requested_addr, bytes, false); -+ char * addr = anon_mmap(requested_addr, bytes, 0, false); - if (addr == requested_addr) { - return requested_addr; - } -@@ -4010,15 +4010,19 @@ - } - - void os::set_native_thread_name(const char *name) { --#if defined(__APPLE__) && MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_5 -- // This is only supported in Snow Leopard and beyond - if (name != NULL) { -+#if defined(__APPLE__) && MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_5 -+ // This is only supported in Snow Leopard and beyond - // Add a "Java: " prefix to the name - char buf[MAXTHREADNAMESIZE]; - snprintf(buf, sizeof(buf), "Java: %s", name); - pthread_setname_np(buf); -- } -+#elif defined(__FreeBSD__) -+ char buf[MAXCOMLEN+1]; -+ strlcpy(buf, name, sizeof(buf)); -+ pthread_set_name_np(pthread_self(), buf); - #endif -+ } - } - - bool os::distribute_processes(uint length, uint* distribution) { diff --git a/java/openjdk8/files/patch-hotspot_src_os_bsd_vm_os__bsd.hpp b/java/openjdk8/files/patch-hotspot_src_os_bsd_vm_os__bsd.hpp deleted file mode 100644 index 1f513305cc5b..000000000000 --- a/java/openjdk8/files/patch-hotspot_src_os_bsd_vm_os__bsd.hpp +++ /dev/null @@ -1,11 +0,0 @@ ---- hotspot/src/os/bsd/vm/os_bsd.hpp.orig 2017-12-01 00:32:02 UTC -+++ hotspot/src/os/bsd/vm/os_bsd.hpp -@@ -87,7 +87,7 @@ class Bsd { - static void rebuild_cpu_to_node_map(); - static GrowableArray<int>* cpu_to_node() { return _cpu_to_node; } - -- static bool hugetlbfs_sanity_check(bool warn, size_t page_size); -+ static bool superpage_sanity_check(bool warn, size_t *page_size); - - public: - diff --git a/java/openjdk8/files/patch-hotspot_src_share_vm_runtime_arguments.cpp b/java/openjdk8/files/patch-hotspot_src_share_vm_runtime_arguments.cpp deleted file mode 100644 index a437f8fccb42..000000000000 --- a/java/openjdk8/files/patch-hotspot_src_share_vm_runtime_arguments.cpp +++ /dev/null @@ -1,12 +0,0 @@ ---- hotspot/src/share/vm/runtime/arguments.cpp.orig 2017-12-01 00:32:02.284351000 +0000 -+++ hotspot/src/share/vm/runtime/arguments.cpp 2017-12-01 00:38:48.362549000 +0000 -@@ -3974,7 +3974,8 @@ jint Arguments::parse(const JavaVMInitArgs* args) { - hotspotrc, hotspotrc); - } - --#ifdef _ALLBSD_SOURCE // UseLargePages is not yet supported on BSD. -+#if defined(_ALLBSD_SOURCE) && !defined(__FreeBSD__) -+ // UseLargePages is not yet supported on BSD. - UNSUPPORTED_OPTION(UseLargePages, "-XX:+UseLargePages"); - #endif - diff --git a/java/openjdk8/files/patch-jdk-make-lib-Awt2dLibraries.gmk b/java/openjdk8/files/patch-jdk-make-lib-Awt2dLibraries.gmk index b24c0ec378d9..5069b0c696ec 100644 --- a/java/openjdk8/files/patch-jdk-make-lib-Awt2dLibraries.gmk +++ b/java/openjdk8/files/patch-jdk-make-lib-Awt2dLibraries.gmk @@ -1,23 +1,20 @@ ---- jdk/make/lib/Awt2dLibraries.gmk.orig 2018-12-02 16:06:28.335527000 -0800 -+++ jdk/make/lib/Awt2dLibraries.gmk 2018-12-02 16:29:22.253979000 -0800 -@@ -1236,6 +1236,11 @@ - LIBSPLASHSCREEN_splashscreen_png.c_CFLAGS := -x objective-c -O0 - LIBSPLASHSCREEN_splashscreen_sys.m_CFLAGS := -O0 - -+ else ifeq ($(OPENJDK_TARGET_OS), bsd) -+ LIBSPLASHSCREEN_CFLAGS += -DWITH_X11 $(X_CFLAGS) -I$(PACKAGE_PATH)/include -+ ifneq ($(OPENJDK_TARGET_OS_VENDOR), openbsd) +--- jdk/make/lib/Awt2dLibraries.gmk.orig 2019-04-17 23:24:06.000000000 -0700 ++++ jdk/make/lib/Awt2dLibraries.gmk 2019-04-18 11:22:47.195832000 -0700 +@@ -1190,7 +1190,7 @@ + else ifeq ($(OPENJDK_TARGET_OS), bsd) + LIBSPLASHSCREEN_CFLAGS += -DWITH_X11 $(X_CFLAGS) -I$(PACKAGE_PATH)/include + ifneq ($(OPENJDK_TARGET_OS_VENDOR), openbsd) +- LIBSPLASHSCREEN_CFLAGS += -DLIBICONV_PLUG + LIBSPLASHSCREEN_CFLAGS += %%ICONV_CPPFLAGS%% -+ endif + endif else ifeq ($(OPENJDK_TARGET_OS), windows) LIBSPLASHSCREEN_CFLAGS += -DWITH_WIN32 - else -@@ -1257,6 +1262,8 @@ +@@ -1212,7 +1212,7 @@ + -framework Cocoa \ -framework JavaNativeFoundation + else ifeq ($(OPENJDK_TARGET_OS), bsd) +- LIBSPLASHSCREEN_LDFLAGS_SUFFIX += $(X_LIBS) -lX11 -lXext $(LIBM) -L$(PACKAGE_PATH)/lib -liconv -pthread ++ LIBSPLASHSCREEN_LDFLAGS_SUFFIX += $(X_LIBS) -lX11 -lXext $(LIBM) %%ICONV_LDFLAGS%% -pthread else ifeq ($(OPENJDK_TARGET_OS), windows) LIBSPLASHSCREEN_LDFLAGS_SUFFIX += kernel32.lib user32.lib gdi32.lib delayimp.lib -DELAYLOAD:user32.dll -+ else ifeq ($(OPENJDK_TARGET_OS), bsd) -+ LIBSPLASHSCREEN_LDFLAGS_SUFFIX += $(X_LIBS) -lX11 -lXext $(LIBM) %%ICONV_LDFLAGS%% -pthread else # .. all other Unixes can use X_LIBS - LIBSPLASHSCREEN_LDFLAGS_SUFFIX += $(X_LIBS) -lX11 -lXext $(LIBM) -lpthread - endif diff --git a/java/openjdk8/files/patch-jdk-src-share-native-sun-font-freetypeScaler.c b/java/openjdk8/files/patch-jdk-src-share-native-sun-font-freetypeScaler.c deleted file mode 100644 index 093996a80087..000000000000 --- a/java/openjdk8/files/patch-jdk-src-share-native-sun-font-freetypeScaler.c +++ /dev/null @@ -1,52 +0,0 @@ ---- jdk/src/share/native/sun/font/freetypeScaler.c -+++ jdk/src/share/native/sun/font/freetypeScaler.c -@@ -60,6 +60,7 @@ - JNIEnv* env; - FT_Library library; - FT_Face face; -+ FT_Stream faceStream; - jobject font2D; - jobject directBuffer; - -@@ -107,15 +108,10 @@ - if (scalerInfo == NULL) - return; - -- //apparently Done_Face will only close the stream -- // but will not relase the memory of stream structure. -- // We need to free it explicitly to avoid leak. -- //Direct access to the stream field might be not ideal solution as -- // it is considred to be "private". -- //Alternatively we could have stored pointer to the structure -- // in the scalerInfo but this will increase size of the structure -- // for no good reason -- stream = scalerInfo->face->stream; -+ // FT_Done_Face always closes the stream, but only frees the memory -+ // of the data structure if it was internally allocated by FT. -+ // We hold on to a pointer to the stream structure if we provide it -+ // ourselves, so that we can free it here. - - FT_Done_Face(scalerInfo->face); - FT_Done_FreeType(scalerInfo->library); -@@ -128,8 +124,8 @@ - free(scalerInfo->fontData); - } - -- if (stream != NULL) { -- free(stream); -+ if (scalerInfo->faceStream != NULL) { -+ free(scalerInfo->faceStream); - } - - free(scalerInfo); -@@ -302,6 +298,10 @@ - &ft_open_args, - indexInCollection, - &scalerInfo->face); -+ -+ if (!error) { -+ scalerInfo->faceStream = ftstream; -+ } - } - if (error || scalerInfo->directBuffer == NULL) { - free(ftstream); diff --git a/java/openjdk8/files/patch-jdk-src-solaris-classes-native-java-net-NetworkInterface.c b/java/openjdk8/files/patch-jdk-src-solaris-classes-native-java-net-NetworkInterface.c deleted file mode 100644 index bc94b2404300..000000000000 --- a/java/openjdk8/files/patch-jdk-src-solaris-classes-native-java-net-NetworkInterface.c +++ /dev/null @@ -1,13 +0,0 @@ ---- jdk/src/solaris/native/java/net/NetworkInterface.c.orig 2017-12-24 22:01:27.592305000 -0800 -+++ jdk/src/solaris/native/java/net/NetworkInterface.c 2017-12-24 22:06:51.899725000 -0800 -@@ -2075,10 +2075,6 @@ - if (ifa->ifa_addr == NULL || ifa->ifa_addr->sa_family != AF_INET6) - continue; - -- // set scope ID to interface index -- ((struct sockaddr_in6 *)ifa->ifa_addr)->sin6_scope_id = -- getIndex(sock, ifa->ifa_name); -- - // add interface to the list - ifs = addif(env, sock, ifa->ifa_name, ifs, ifa->ifa_addr, NULL, - AF_INET6, diff --git a/java/openjdk8/files/patch-jdk-src-solaris-native-java-io-UnixFileSystem_md.c b/java/openjdk8/files/patch-jdk-src-solaris-native-java-io-UnixFileSystem_md.c deleted file mode 100644 index f5d0902cff92..000000000000 --- a/java/openjdk8/files/patch-jdk-src-solaris-native-java-io-UnixFileSystem_md.c +++ /dev/null @@ -1,23 +0,0 @@ ---- jdk/src/solaris/native/java/io/UnixFileSystem_md.c.orig 2018-12-12 23:07:51.229721000 +0100 -+++ jdk/src/solaris/native/java/io/UnixFileSystem_md.c 2018-12-12 23:12:21.847169000 +0100 -@@ -208,7 +208,8 @@ - WITH_FIELD_PLATFORM_STRING(env, file, ids.path, path) { - struct stat64 sb; - if (stat64(path, &sb) == 0) { -- rv = 1000 * (jlong)sb.st_mtime; -+ rv = (jlong)sb.st_mtim.tv_sec * 1000; -+ rv += (jlong)sb.st_mtim.tv_nsec / 1000000; - } - } END_PLATFORM_STRING(env, path); - return rv; -@@ -392,8 +393,8 @@ - struct timeval tv[2]; - - /* Preserve access time */ -- tv[0].tv_sec = sb.st_atime; -- tv[0].tv_usec = 0; -+ tv[0].tv_sec = sb.st_atim.tv_sec; -+ tv[0].tv_usec = sb.st_atim.tv_nsec / 1000; - - /* Change last-modified time */ - tv[1].tv_sec = time / 1000; diff --git a/java/openjdk8/files/patch-jdk-src-solaris-native-sun-nio-ch-sctp-SctpChannelImpl.c b/java/openjdk8/files/patch-jdk-src-solaris-native-sun-nio-ch-sctp-SctpChannelImpl.c deleted file mode 100644 index 226536edfcda..000000000000 --- a/java/openjdk8/files/patch-jdk-src-solaris-native-sun-nio-ch-sctp-SctpChannelImpl.c +++ /dev/null @@ -1,41 +0,0 @@ ---- jdk/src/solaris/native/sun/nio/ch/sctp/SctpChannelImpl.c.org 2018-07-26 09:56:49.897172000 +0200 -+++ jdk/src/solaris/native/sun/nio/ch/sctp/SctpChannelImpl.c 2018-07-30 16:13:19.116935000 +0200 -@@ -330,11 +330,11 @@ - break; - case SCTP_ADDR_MADE_PRIM : - event = sun_nio_ch_sctp_PeerAddrChange_SCTP_ADDR_MADE_PRIM; --#ifdef __linux__ /* Solaris currently doesn't support SCTP_ADDR_CONFIRMED */ -+#ifndef __solaris__ /* Solaris currently doesn't support SCTP_ADDR_CONFIRMED */ - break; - case SCTP_ADDR_CONFIRMED : - event = sun_nio_ch_sctp_PeerAddrChange_SCTP_ADDR_CONFIRMED; --#endif /* __linux__ */ -+#endif /* __solaris__ */ - } - - addressObj = SockAddrToInetSocketAddress(env, (struct sockaddr*)&spc->spc_aaddr); -@@ -445,13 +445,13 @@ - } else if (errno == EINTR) { - return IOS_INTERRUPTED; - --#ifdef __linux__ -+#ifndef __solaris__ - } else if (errno == ENOTCONN) { - /* ENOTCONN when EOF reached */ - rv = 0; - /* there will be no control data */ - msg->msg_controllen = 0; --#endif /* __linux__ */ -+#endif /* __solaris__ */ - - } else { - handleSocketError(env, errno); -@@ -568,7 +568,7 @@ - /* Set up the msghdr structure for sending */ - memset(msg, 0, sizeof (*msg)); - memset(cbuf, 0, cbuf_size); -- msg->msg_name = &sa; -+ msg->msg_name = (sa_len == 0 ? NULL : &sa); - msg->msg_namelen = sa_len; - iov->iov_base = addr; - iov->iov_len = length; diff --git a/java/openjdk8/files/patch-jdk-src-solaris-native-sun-nio-fs-UnixNativeDispatcher.c b/java/openjdk8/files/patch-jdk-src-solaris-native-sun-nio-fs-UnixNativeDispatcher.c deleted file mode 100644 index 5e44a53651d3..000000000000 --- a/java/openjdk8/files/patch-jdk-src-solaris-native-sun-nio-fs-UnixNativeDispatcher.c +++ /dev/null @@ -1,11 +0,0 @@ ---- ./jdk/src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c.orig 2018-12-13 10:02:37.501082000 +0100 -+++ ./jdk/src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c 2018-12-13 10:06:26.825382000 +0100 -@@ -453,7 +453,7 @@ - (*env)->SetLongField(env, attrs, attrs_st_birthtime_sec, (jlong)buf->st_birthtime); - #endif - --#if (_POSIX_C_SOURCE >= 200809L) || defined(__solaris__) -+#if (_POSIX_C_SOURCE >= 200809L) || defined(__solaris__) || defined(__FreeBSD__) - (*env)->SetLongField(env, attrs, attrs_st_atime_nsec, (jlong)buf->st_atim.tv_nsec); - (*env)->SetLongField(env, attrs, attrs_st_mtime_nsec, (jlong)buf->st_mtim.tv_nsec); - (*env)->SetLongField(env, attrs, attrs_st_ctime_nsec, (jlong)buf->st_ctim.tv_nsec); diff --git a/java/openjdk8/files/patch-jdk_src_solaris_native_sun_management_OperatingSystemImpl.c b/java/openjdk8/files/patch-jdk_src_solaris_native_sun_management_OperatingSystemImpl.c deleted file mode 100644 index 53d58ea2a877..000000000000 --- a/java/openjdk8/files/patch-jdk_src_solaris_native_sun_management_OperatingSystemImpl.c +++ /dev/null @@ -1,24 +0,0 @@ ---- jdk/src/solaris/native/sun/management/OperatingSystemImpl.c.orig 2017-09-06 22:12:44 UTC -+++ jdk/src/solaris/native/sun/management/OperatingSystemImpl.c -@@ -368,7 +368,9 @@ Java_sun_management_OperatingSystemImpl_ - #elif defined(__FreeBSD__) - static const char *vm_stats[] = { - "vm.stats.vm.v_free_count", -+#if __FreeBSD_version < 1200016 - "vm.stats.vm.v_cache_count", -+#endif - /* "vm.stats.vm.v_inactive_count", */ - NULL - }; -@@ -435,11 +437,6 @@ Java_sun_management_OperatingSystemImpl_ - } - - --#ifdef _ALLBSD_SOURCE --#define FD_DIR "/dev/fd" --#else --#define FD_DIR "/proc/self/fd" --#endif - - JNIEXPORT jlong JNICALL - Java_sun_management_OperatingSystemImpl_getOpenFileDescriptorCount |