aboutsummaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorGreg Lewis <glewis@FreeBSD.org>2019-09-23 18:26:43 +0000
committerGreg Lewis <glewis@FreeBSD.org>2019-09-23 18:26:43 +0000
commit2b31ab00a2f9c1a28acb9480a7dd437db3f87948 (patch)
treeb5d9078afa485771076f40528f0082509de58240 /java
parente0d67b113cb14ac39fb8d4add1841694c970e580 (diff)
downloadports-2b31ab00a2f9c1a28acb9480a7dd437db3f87948.tar.gz
ports-2b31ab00a2f9c1a28acb9480a7dd437db3f87948.zip
Delete java/openjdk6 and java/openjdk6-jre ports
* Both of these ports are EoL upstream. Remove them per the DEPRECATED and EXPIRATION_DATE entries added previously * Note that bootstrap-openjdk6 is left solely to be able to bootstrap java/openjdk7
Notes
Notes: svn path=/head/; revision=512663
Diffstat (limited to 'java')
-rw-r--r--java/Makefile2
-rw-r--r--java/openjdk6-jre/Makefile11
-rw-r--r--java/openjdk6/Makefile355
-rw-r--r--java/openjdk6/Makefile.icedtea13
-rw-r--r--java/openjdk6/Makefile.test19
-rw-r--r--java/openjdk6/distinfo15
-rw-r--r--java/openjdk6/files/Makefile.test.in67
-rw-r--r--java/openjdk6/files/alsa-disable.patch42
-rw-r--r--java/openjdk6/files/alsa-enable.patch57
-rw-r--r--java/openjdk6/files/cacertsbin112860 -> 0 bytes
-rw-r--r--java/openjdk6/files/fontconfig.properties192
-rw-r--r--java/openjdk6/files/icedtea/applet_hole.patch115
-rw-r--r--java/openjdk6/files/icedtea/jpegclasses.patch2667
-rw-r--r--java/openjdk6/files/patch-ZoneInfoFile.java12
-rw-r--r--java/openjdk6/files/patch-hotspot_make_bsd_makefiles_vm.make12
-rw-r--r--java/openjdk6/files/patch-hotspot_src_share_vm_opto_loopPredicate.cpp11
-rw-r--r--java/openjdk6/files/patch-jdk_make_tools_freetypecheck_freetypecheck.c78
-rw-r--r--java/openjdk6/files/patch-set15376
-rw-r--r--java/openjdk6/files/patch-test206
-rw-r--r--java/openjdk6/files/test_gamma-disable.patch45
-rw-r--r--java/openjdk6/pkg-descr7
-rw-r--r--java/openjdk6/pkg-message18
22 files changed, 0 insertions, 19320 deletions
diff --git a/java/Makefile b/java/Makefile
index ef5748af35a2..9f49a1c961fa 100644
--- a/java/Makefile
+++ b/java/Makefile
@@ -109,8 +109,6 @@
SUBDIR += openjdk11
SUBDIR += openjdk12
SUBDIR += openjdk13
- SUBDIR += openjdk6
- SUBDIR += openjdk6-jre
SUBDIR += openjdk7
SUBDIR += openjdk7-jre
SUBDIR += openjdk8
diff --git a/java/openjdk6-jre/Makefile b/java/openjdk6-jre/Makefile
deleted file mode 100644
index 5bc91065cad7..000000000000
--- a/java/openjdk6-jre/Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-# $FreeBSD$
-
-CATEGORIES= java devel
-PKGNAMESUFFIX= -jre
-
-COMMENT= Oracle's Java 6 Runtime Environment under the GPL v2
-
-BUILD_JRE= yes
-MASTERDIR= ${.CURDIR}/../openjdk6
-
-.include "${MASTERDIR}/Makefile"
diff --git a/java/openjdk6/Makefile b/java/openjdk6/Makefile
deleted file mode 100644
index f30455e0b397..000000000000
--- a/java/openjdk6/Makefile
+++ /dev/null
@@ -1,355 +0,0 @@
-# Created by: Brian Gardner <brian@experts-exchange.com>
-# $FreeBSD$
-
-PORTNAME= openjdk6
-PORTVERSION= b45
-PORTEPOCH= 1
-CATEGORIES= java devel
-MASTER_SITES= APACHE/ant/binaries/:ant \
- https://java.net/downloads/openjdk6/:jdk \
- LOCAL/jkim:jdk,jtreg
-PATCH_SITES= LOCAL/glewis/openjdk6
-DISTFILES= ${ANTFILE}:ant \
- ${JDK_SRC_DISTFILE}${EXTRACT_SUFX}:jdk
-EXTRACT_ONLY= ${JDK_SRC_DISTFILE}${EXTRACT_SUFX} ${ANTFILE}
-PATCHFILES= patch-6-b42.xz \
- patch-6-b43.xz \
- patch-6-b44.xz \
- patch-6-b45.xz
-
-MAINTAINER= java@FreeBSD.org
-COMMENT?= Oracle's Java 6 virtual machine release under the GPL v2
-
-LICENSE= GPLv2
-LICENSE_FILE= ${WRKSRC}/LICENSE
-LICENSE_DISTFILES= ${JDK_SRC_DISTFILE}${EXTRACT_SUFX}
-
-DEPRECATED= Extended Support ended December 2018, please migrate to openjdk8
-EXPIRATION_DATE=2019-09-20
-
-BUILD_DEPENDS= ${LOCALBASE}/bin/zip:archivers/zip \
- ${LOCALBASE}/bin/unzip:archivers/unzip \
- ${LOCALBASE}/include/cups/cups.h:print/cups
-LIB_DEPENDS= libfreetype.so:print/freetype2
-RUN_DEPENDS= javavm:java/javavmwrapper \
- dejavu>0:x11-fonts/dejavu
-
-OPENJDK_BUILDDATE= 04_jan_2017
-JDK_SRC_DISTFILE= openjdk-6-src-b41-${OPENJDK_BUILDDATE}
-
-OPTIONS_DEFINE= ICEDTEA IPV6 POLICY SOUND TZUPDATE
-OPTIONS_DEFAULT=ICEDTEA TZUPDATE
-ICEDTEA_DESC= Apply additional patches from IcedTea
-POLICY_DESC= Install the Unlimited Strength Policy Files
-SOUND_DESC= Enable sound support
-TZUPDATE_DESC= Update the time zone data
-
-.if !defined(BUILD_JRE)
-OPTIONS_DEFINE+=TEST
-OPTIONS_RADIO= DEVEL
-DEVEL_DESC= Build for OpenJDK development
-OPTIONS_RADIO_DEVEL= DEBUG FASTDEBUG
-DEBUG_DESC= Enable legacy debugging support
-FASTDEBUG_DESC= Include fastdebug build
-TEST_DESC= Add support for running regression test
-.endif
-
-USES= compiler gmake iconv motif tar:xz
-
-.include <bsd.port.options.mk>
-.include "${.CURDIR}/../openjdk6/Makefile.icedtea"
-.include "${.CURDIR}/../openjdk6/Makefile.test"
-
-EXTRA_PATCHES+= ${ICEDTEA_PATCHES}
-
-# java extracts directly to the cwd
-WRKSRC= ${WRKDIR}
-
-USE_XORG= x11 xext xi xt xtst
-
-# do not depend on devel/apache-ant to avoid circular dependency, but
-# use .tar.bz2 distfile to avoid duplicated downloads
-ANTVERSION= 1.9.7
-ANTFILE= apache-ant-${ANTVERSION}-bin.tar.bz2
-
-JTREG_BUILD= b05_29_nov_2012
-JTREGFILE= jtreg-4.1-bin-${JTREG_BUILD}.zip
-UPDATE_VERSION= 32
-
-.if ${PORT_OPTIONS:MIPV6}
-CATEGORIES+= ipv6
-.endif
-
-.if ${PORT_OPTIONS:MTZUPDATE}
-RUN_DEPENDS+= java-zoneinfo>0:java/java-zoneinfo
-.endif
-
-# avoid ARCH in MAKEFLAGS, breaks build
-NOPRECIOUSMAKEVARS= yes
-
-ONLY_FOR_ARCHS= amd64 i386
-
-BOOTSTRAP_JDKS= ${LOCALBASE}/openjdk6 \
- ${LOCALBASE}/bootstrap-openjdk6
-
-# do we have valid native jdk installed?
-.for CJDK in ${BOOTSTRAP_JDKS}
-. if !defined(BOOTSTRAPJDKDIR) && exists(${CJDK}/bin/javac)
-BOOTSTRAPJDKDIR= ${CJDK}
-. endif
-.endfor
-
-# if no valid jdk found, set dependency
-.if !defined(BOOTSTRAPJDKDIR)
-BOOTSTRAPJDKDIR?= ${LOCALBASE}/bootstrap-openjdk6
-BUILD_DEPENDS+= ${BOOTSTRAPJDKDIR}/bin/javac:java/bootstrap-openjdk6
-.endif
-
-MAKE_ENV= OS= \
- ALT_JDK_IMPORT_PATH=${BOOTSTRAPJDKDIR} \
- ALT_BOOTDIR=${BOOTSTRAPJDKDIR} \
- ALT_CACERTS_FILE=${FILESDIR}/cacerts \
- ALT_CUPS_HEADERS_PATH=${LOCALBASE}/include \
- ALT_CUPS_LIB_PATH=${LOCALBASE}/lib \
- ALT_FREETYPE_HEADERS_PATH=${LOCALBASE}/include \
- ALT_FREETYPE_LIB_PATH=${LOCALBASE}/lib \
- ALT_X11_PATH=${LOCALBASE} \
- ALT_PACKAGE_PATH=${LOCALBASE} \
- ANT_HOME=${WRKDIR}/apache-ant-${ANTVERSION} \
- JAVACMD=${BOOTSTRAPJDKDIR}/bin/java \
- BUILD_NUMBER=${PORTVERSION} \
- NO_DOCS=true \
- MILESTONE=fcs \
- JDK_UPDATE_VERSION=${UPDATE_VERSION}
-
-# XXX Turn off parallel build by default.
-MAKE_JOBS_UNSAFE= yes
-MAKE_ENV+= HOTSPOT_BUILD_JOBS=${MAKE_JOBS_NUMBER}
-
-.if ${PORT_OPTIONS:MDEBUG}
-ALL_TARGET= debug_build
-OPENJDK_OSARCH= bsd-${ARCH:S/i386/i586/}-debug
-.else
-OPENJDK_OSARCH= bsd-${ARCH:S/i386/i586/}
-.endif
-
-# disable FASTDEBUG_BUILD by default to improve compile time.
-.if ${PORT_OPTIONS:MFASTDEBUG}
-MAKE_ENV+= SKIP_FASTDEBUG_BUILD=false
-.else
-MAKE_ENV+= SKIP_FASTDEBUG_BUILD=true
-.endif
-
-.if empty(PORT_OPTIONS:MIPV6)
-MAKE_ENV+= DONT_ENABLE_IPV6="YES"
-.endif
-
-.if ${PORT_OPTIONS:MPOLICY}
-MAKE_ENV+= UNLIMITED_CRYPTO="YES"
-.endif
-
-.if ${PORT_OPTIONS:MSOUND}
-EXTRA_PATCHES+= ${FILESDIR}/alsa-enable.patch
-LIB_DEPENDS+= libasound.so:audio/alsa-lib
-RUN_DEPENDS+= ${LOCALBASE}/lib/alsa-lib/libasound_module_pcm_oss.so:audio/alsa-plugins
-.else
-EXTRA_PATCHES+= ${FILESDIR}/alsa-disable.patch
-.endif
-
-.if ${PORT_OPTIONS:MTEST}
-DISTFILES+= ${JTREGFILE}:jtreg
-EXTRACT_ONLY+= ${JTREGFILE}
-BUILD_DEPENDS+= dejavu>0:x11-fonts/dejavu
-USES+= display:test
-.else
-EXTRA_PATCHES+= ${FILESDIR}/test_gamma-disable.patch
-.endif
-
-COPYDIRS= \
- jdk/src/linux/doc/man
-
-COPYFILES= \
- corba/make/common/Defs-linux.gmk \
- corba/make/common/shared/Defs-linux.gmk \
- hotspot/src/os/linux/vm/decoder_linux.cpp \
- jdk/make/com/sun/tools/attach/mapfile-linux \
- jdk/make/common/Defs-linux.gmk \
- jdk/make/common/shared/Defs-linux.gmk \
- jdk/make/java/nio/mapfile-linux \
- jdk/make/netbeans/common/architectures/name-Linux.properties \
- jdk/make/sun/awt/mapfile-vers-linux \
- jdk/make/tools/sharing/classlist.linux \
- jdk/src/solaris/classes/java/lang/UNIXProcess.java.linux \
- jdk/src/solaris/classes/sun/tools/attach/LinuxAttachProvider.java \
- jdk/src/solaris/classes/sun/tools/attach/LinuxVirtualMachine.java \
- jdk/src/solaris/hpi/include/largefile_linux.h \
- jdk/src/solaris/native/java/net/linux_close.c \
- jdk/src/solaris/native/sun/tools/attach/LinuxVirtualMachine.c
-
-.include <bsd.port.pre.mk>
-
-.if ${COMPILER_TYPE} == clang
-.if ${COMPILER_VERSION} >= 35
-MAKE_ENV+= COMPILER_WARNINGS_FATAL=false
-.endif
-MAKE_ENV+= USE_CLANG=true
-.endif
-
-# GCC is broken with PCH: https://lists.freebsd.org/pipermail/svn-src-all/2015-March/101722.html
-.if ${COMPILER_TYPE} == gcc
-MAKE_ENV+= USE_PRECOMPILED_HEADER=0
-.endif
-
-.if empty(ICONV_LIB)
-ICONV_CPPFLAGS= -DLIBICONV_PLUG
-.else
-ICONV_CPPFLAGS= -I${LOCALBASE}/include
-ICONV_LDFLAGS= -L${LOCALBASE}/lib ${ICONV_LIB}
-.endif
-ZLIB_LDFLAGS?= -lz
-
-post-extract:
- @for d in ${COPYDIRS}; do \
- ${MKDIR} `echo ${WRKSRC}/$$d | ${SED} 's/linux/bsd/g;'`; \
- cd ${WRKSRC}/$$d; \
- for f in *; do \
- if [ -f $$f ]; then \
- t=`echo ${WRKSRC}/$$d/$$f | ${SED} 's/linux/bsd/g; s/Linux/Bsd/g'`; \
- ${SED} 's/linux/bsd/g; s/Linux/Bsd/g; s/LINUX/BSD/g' < $$f > $$t; \
- fi; \
- done; \
- done
- @for f in ${COPYFILES}; do \
- t=`echo $$f | ${SED} 's/linux/bsd/g; s/Linux/Bsd/g'`; \
- ${SED} 's/linux/bsd/g; s/Linux/Bsd/g' < ${WRKSRC}/$$f > ${WRKSRC}/$$t; \
- done
- @${SED} 's/solaris/bsd/g; s/Solaris/Bsd/g' \
- ${WRKSRC}/jdk/src/solaris/hpi/native_threads/src/threads_solaris.c > \
- ${WRKSRC}/jdk/src/solaris/hpi/native_threads/src/threads_bsd.c
- @${SED} "s|/usr/local|${LOCALBASE}|" \
- ${FILESDIR}/fontconfig.properties > \
- ${WRKSRC}/jdk/src/solaris/classes/sun/awt/fontconfigs/bsd.fontconfig.properties
- @${SED} "s|%%LOCALBASE%%|${LOCALBASE}|" ${FILESDIR}/Makefile.test.in > \
- ${WRKSRC}/jdk/test/Makefile
- @${FIND} ${WRKSRC}/jdk/test -type f -name \*.sh -exec ${SED} -i "" \
- -e s/Linux/FreeBSD/g {} \;
-
-post-patch:
- @${REINPLACE_CMD} -e "s|%%CXX_LDFLAGS%%|${CXX_LDFLAGS}|" \
- ${WRKSRC}/corba/make/common/Defs-bsd.gmk \
- ${WRKSRC}/jdk/make/common/Defs-bsd.gmk
-.if ${COMPILER_TYPE} == "clang"
- @${REINPLACE_CMD} -e "s|-fno-omit-frame-pointer|-fno-omit-frame-pointer -mno-omit-leaf-frame-pointer|" \
- ${WRKSRC}/corba/make/common/Defs-bsd.gmk \
- ${WRKSRC}/hotspot/make/bsd/makefiles/amd64.make \
- ${WRKSRC}/jdk/make/common/Defs-bsd.gmk
-.endif
- @${REINPLACE_CMD} -e "s|%%ICONV_CPPFLAGS%%|${ICONV_CPPFLAGS}|" \
- -e "s|%%ICONV_LDFLAGS%%|${ICONV_LDFLAGS}|" \
- ${WRKSRC}/Makefile ${WRKSRC}/jdk/make/java/instrument/Makefile \
- ${WRKSRC}/jdk/make/java/npt/Makefile \
- ${WRKSRC}/jdk/make/sun/splashscreen/Makefile
- @${REINPLACE_CMD} -e "s|%%ZLIB_LDFLAGS%%|${ZLIB_LDFLAGS}|" \
- ${WRKSRC}/jdk/make/com/sun/java/pack/Makefile \
- ${WRKSRC}/jdk/make/common/Program.gmk \
- ${WRKSRC}/jdk/make/java/jli/Makefile \
- ${WRKSRC}/jdk/make/java/zip/Makefile \
- ${WRKSRC}/jdk/make/tools/freetypecheck/Makefile
- @${REINPLACE_CMD} -e "s|%%LOCALBASE%%|${LOCALBASE}|" \
- ${WRKSRC}/hotspot/src/os/bsd/vm/os_bsd.cpp \
- ${WRKSRC}/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java \
- ${WRKSRC}/jdk/src/share/classes/sun/print/PSPrinterJob.java
-.if defined(BUILD_JRE)
- @${REINPLACE_CMD} -e "s|%%JAVA_HOME%%|${PREFIX}/openjdk6-jre|" \
- ${WRKSRC}/hotspot/src/os/posix/launcher/java_md.c \
- ${WRKSRC}/jdk/src/solaris/bin/java_md.c
-.else
- @${REINPLACE_CMD} -e "s|%%JAVA_HOME%%|${PREFIX}/openjdk6|" \
- ${WRKSRC}/hotspot/src/os/posix/launcher/java_md.c \
- ${WRKSRC}/jdk/src/solaris/bin/java_md.c
-.endif
-
-post-build:
-.if ${PORT_OPTIONS:MTZUPDATE}
- @# Update time zones
-.if defined(BUILD_JRE)
- @${RM} -r ${WRKSRC}/build/${OPENJDK_OSARCH}/j2re-image/lib/zi
- @${LN} -s -f ${LOCALBASE}/share/java/zi \
- ${WRKSRC}/build/${OPENJDK_OSARCH}/j2re-image/lib
-.else
- @${RM} -r ${WRKSRC}/build/${OPENJDK_OSARCH}/j2sdk-image/jre/lib/zi
- @${LN} -s -f ${LOCALBASE}/share/java/zi \
- ${WRKSRC}/build/${OPENJDK_OSARCH}/j2sdk-image/jre/lib
-.endif
-.endif
-.if ${PORT_OPTIONS:MTEST}
- @${ECHO_MSG} ""
- @${ECHO_MSG} "Run \"make test\" to execute regression test (it could take a few hours to complete)."
-.if defined(DISPLAY)
- @${ECHO_MSG} "Unset the environment DISPLAY variable to run tests in a virtual X server."
-.endif
- @${ECHO_MSG} ""
-.endif
-
-do-install:
-.if defined(BUILD_JRE)
- @cd ${WRKSRC}/build/${OPENJDK_OSARCH}/j2re-image && \
- ${COPYTREE_SHARE} . ${STAGEDIR}${PREFIX}/openjdk6-jre \
- "-not ( -type d -name bin -prune )"
- @cd ${WRKSRC}/build/${OPENJDK_OSARCH}/j2re-image && \
- ${COPYTREE_BIN} bin ${STAGEDIR}${PREFIX}/openjdk6-jre
- @cd ${WRKSRC}/build/${OPENJDK_OSARCH}/j2re-image && \
- ${INSTALL_PROGRAM} lib/${ARCH}/jexec \
- ${STAGEDIR}${PREFIX}/openjdk6-jre/lib/${ARCH}
-.else
- @cd ${WRKSRC}/build/${OPENJDK_OSARCH}/j2sdk-image && \
- ${COPYTREE_SHARE} . ${STAGEDIR}${PREFIX}/openjdk6 \
- "-not ( -type d -name bin -prune )"
- @cd ${WRKSRC}/build/${OPENJDK_OSARCH}/j2sdk-image && \
- ${COPYTREE_BIN} "bin jre/bin" ${STAGEDIR}${PREFIX}/openjdk6
- @cd ${WRKSRC}/build/${OPENJDK_OSARCH}/j2sdk-image && \
- ${INSTALL_PROGRAM} jre/lib/${ARCH}/jexec \
- ${STAGEDIR}${PREFIX}/openjdk6/jre/lib/${ARCH}
- @cd ${WRKSRC}/build/${OPENJDK_OSARCH}/btjars && \
- ${INSTALL_DATA} compilefontconfig.jar javazic.jar \
- ${STAGEDIR}${PREFIX}/openjdk6/jre/lib
-.if ${PORT_OPTIONS:MFASTDEBUG}
- @cd ${WRKSRC}/build/${OPENJDK_OSARCH}-fastdebug/j2sdk-image && \
- ${COPYTREE_SHARE} . ${STAGEDIR}${PREFIX}/openjdk6-fastdebug \
- "-not ( -type d -name bin -prune )"
- @cd ${WRKSRC}/build/${OPENJDK_OSARCH}-fastdebug/j2sdk-image && \
- ${COPYTREE_BIN} "bin jre/bin" \
- ${STAGEDIR}${PREFIX}/openjdk6-fastdebug
- @cd ${WRKSRC}/build/${OPENJDK_OSARCH}-fastdebug/j2sdk-image && \
- ${INSTALL_PROGRAM} jre/lib/${ARCH}/jexec \
- ${STAGEDIR}${PREFIX}/openjdk6-fastdebug/jre/lib/${ARCH}
-.endif
-.endif
-.if defined(BUILD_JRE)
- @cd ${STAGEDIR}${PREFIX}/openjdk6-jre && \
- ${FIND} -s . -not -type d | \
- ${SED} -e 's,^\./,openjdk6-jre/,' >> ${TMPPLIST}
- @cd ${STAGEDIR}${PREFIX}/openjdk6-jre && \
- ${FIND} -s . -type d -empty | \
- ${SED} 's,^\./,@dir openjdk6-jre/,' >> ${TMPPLIST}
- @${ECHO_CMD} '@javavm ${PREFIX}/openjdk6-jre/bin/java' >> ${TMPPLIST}
-.else
- @cd ${STAGEDIR}${PREFIX}/openjdk6 && \
- ${FIND} -s . -not -type d | \
- ${SED} -e 's,^\./,openjdk6/,' >> ${TMPPLIST}
- @cd ${STAGEDIR}${PREFIX}/openjdk6 && \
- ${FIND} -s . -type d -empty | \
- ${SED} 's,^\./,@dir openjdk6/,' >> ${TMPPLIST}
- @${ECHO_CMD} '@javavm ${PREFIX}/openjdk6/bin/java' >> ${TMPPLIST}
-.if ${PORT_OPTIONS:MFASTDEBUG}
- @cd ${STAGEDIR}${PREFIX}/openjdk6-fastdebug && \
- ${FIND} -s . -not -type d | \
- ${SED} -e 's,^\./,openjdk6-fastdebug/,' >> ${TMPPLIST}
- @cd ${STAGEDIR}${PREFIX}/openjdk6-fastdebug && \
- ${FIND} -s . -type d -empty | \
- ${SED} 's,^\./,@dir openjdk6-fastdebug/,' >> ${TMPPLIST}
- @${ECHO_CMD} "@javavm ${PREFIX}/openjdk6-fastdebug/bin/java" >> ${TMPPLIST}
-.endif
-.endif
-
-.include <bsd.port.post.mk>
diff --git a/java/openjdk6/Makefile.icedtea b/java/openjdk6/Makefile.icedtea
deleted file mode 100644
index 7f82e65ff79e..000000000000
--- a/java/openjdk6/Makefile.icedtea
+++ /dev/null
@@ -1,13 +0,0 @@
-# $FreeBSD$
-
-_PATCHES=
-
-.if ${PORT_OPTIONS:MICEDTEA}
-_PATCHES+= \
- applet_hole.patch \
- jpegclasses.patch
-.endif
-
-.for p in ${_PATCHES}
-ICEDTEA_PATCHES+= ${FILESDIR}/icedtea/${p}
-.endfor
diff --git a/java/openjdk6/Makefile.test b/java/openjdk6/Makefile.test
deleted file mode 100644
index 880a0580e02a..000000000000
--- a/java/openjdk6/Makefile.test
+++ /dev/null
@@ -1,19 +0,0 @@
-# $FreeBSD$
-
-.if ${PORT_OPTIONS:MTEST}
-.if defined(DISPLAY)
-_TEST_SEQ= do-test
-.else
-_TEST_SEQ= pre-test do-test post-test
-.ORDER: ${_TEST_SEQ}
-.endif
-
-test: ${_TEST_SEQ}
- @${ECHO_MSG} ""
- @${ECHO_MSG} "You can run \"make test\" again to re-execute only the failed tests."
- @${ECHO_MSG} ""
-
-do-test: build-depends build
- @-(cd ${WRKSRC}/jdk/test; ${SETENV} PLATFORM=bsd ARCH=${ARCH} \
- ${MAKE_ENV} ${MAKE_CMD} tests)
-.endif
diff --git a/java/openjdk6/distinfo b/java/openjdk6/distinfo
deleted file mode 100644
index be3d13910a8f..000000000000
--- a/java/openjdk6/distinfo
+++ /dev/null
@@ -1,15 +0,0 @@
-TIMESTAMP = 1514659989
-SHA256 (apache-ant-1.9.7-bin.tar.bz2) = be2ff3026cc655dc002bbcce100bd6724d448c63f702aa82b6d9899b22db7808
-SIZE (apache-ant-1.9.7-bin.tar.bz2) = 4392108
-SHA256 (openjdk-6-src-b41-04_jan_2017.tar.xz) = 8e34d451cec65fae8b4304651058ed4dc8d07bd45baa2f49780009097afc1a15
-SIZE (openjdk-6-src-b41-04_jan_2017.tar.xz) = 34402516
-SHA256 (jtreg-4.1-bin-b05_29_nov_2012.zip) = 9291eb4a14501232b35614e88686ff66ad8b69d0098dbd4322b28f97b672653d
-SIZE (jtreg-4.1-bin-b05_29_nov_2012.zip) = 5993382
-SHA256 (patch-6-b42.xz) = be3cbf875b4731540908e9fe10aae4d3e48777b597787e8adf95c58084dd82eb
-SIZE (patch-6-b42.xz) = 113664
-SHA256 (patch-6-b43.xz) = e806751c1997d292130eca855ffe6811c6b66e823a877213a74ef9b01596098b
-SIZE (patch-6-b43.xz) = 64716
-SHA256 (patch-6-b44.xz) = 2221839e92ce363b5f1632219b7fc69a5728e854392e9c72427d8ea299a0e4de
-SIZE (patch-6-b44.xz) = 150396
-SHA256 (patch-6-b45.xz) = fd7598277ed30bef3369978f380580132e836ec0b7afa9841d780115b22ae0ea
-SIZE (patch-6-b45.xz) = 275440
diff --git a/java/openjdk6/files/Makefile.test.in b/java/openjdk6/files/Makefile.test.in
deleted file mode 100644
index 003d62bfd5f2..000000000000
--- a/java/openjdk6/files/Makefile.test.in
+++ /dev/null
@@ -1,67 +0,0 @@
-#
-# Makefile to run jtreg
-#
-
-ifeq ($(ARCH), i386)
- ARCH = i586
-endif
-
-# Root of this test area (important to use full paths in some places)
-TEST_ROOT := $(shell pwd)
-
-# Default bundle of all test results (passed or not)
-JPRT_ARCHIVE_BUNDLE = $(TEST_ROOT)/JPRT_ARCHIVE_BUNDLE.zip
-
-JT_HOME = $(TEST_ROOT)/../../jtreg
-JTREG_KEY_OPTION = -k:\!ignore
-JTREG_ENV_OPTION = -e:LOCALBASE=%%LOCALBASE%%
-JTREG_STATUS_OPTION = -status:notRun,fail,error
-
-# Default JTREG to run
-JTREG = $(ALT_JDK_IMPORT_PATH)/bin/java -jar $(JT_HOME)/lib/jtreg.jar
-
-# Default JDK to test
-JAVA_HOME = $(TEST_ROOT)/../../build/$(PLATFORM)-$(ARCH)/j2sdk-image
-
-# The test directories to run
-TESTDIRS = com demo java javax lib sun tools vm
-
-# Root of all test results
-JTREG_OUTPUT_DIR = $(TEST_ROOT)/o_$(PLATFORM)-$(ARCH)
-
-# Default make rule
-all: clean check tests $(JPRT_ARCHIVE_BUNDLE)
- @echo "Testing completed successfully"
-
-# Chaeck to make sure these directories exist
-check: $(JT_HOME) $(JAVA_HOME)
-
-# Run the tests
-tests: FRC
- @mkdir -p $(JTREG_OUTPUT_DIR)
- $(JTREG) -a -v:fail,error \
- $(JTREG_KEY_OPTION) \
- $(JTREG_ENV_OPTION) \
- $(JTREG_STATUS_OPTION) \
- -r:$(JTREG_OUTPUT_DIR)/JTreport \
- -w:$(JTREG_OUTPUT_DIR)/JTwork \
- -jdk:$(JAVA_HOME) \
- $(TESTDIRS)
-
-# Bundle up the results
-$(JPRT_ARCHIVE_BUNDLE): FRC
- @rm -f $@
- @mkdir -p $(@D)
- ( cd $(JTREG_OUTPUT_DIR) && %%LOCALBASE%%/bin/zip -q -r $@ . )
-
-# Cleanup
-clean:
- rm -f -r $(JTREG_OUTPUT_DIR)
- rm -f $(JPRT_ARCHIVE_BUNDLE)
-
-# Used to force a target rules to run
-FRC:
-
-# Phony targets (e.g. these are not filenames)
-.PHONY: all tests clean check
-
diff --git a/java/openjdk6/files/alsa-disable.patch b/java/openjdk6/files/alsa-disable.patch
deleted file mode 100644
index 5c4d6d29c5a1..000000000000
--- a/java/openjdk6/files/alsa-disable.patch
+++ /dev/null
@@ -1,42 +0,0 @@
---- jdk/make/javax/sound/Makefile 2011-01-20 18:54:05.000000000 -0500
-+++ jdk/make/javax/sound/Makefile 2011-02-01 17:46:55.000000000 -0500
-@@ -105,6 +105,19 @@
- #MXSPP_ADD = $(PLATFORM)-$(ARCH)/
- endif # PLATFORM linux
-
-+# XXXBSD: ???
-+ifeq ($(PLATFORM), bsd)
-+ # build with empty MIDI i/o
-+ INCLUDE_MIDI = TRUE
-+ # build with empty ports
-+ INCLUDE_PORTS = TRUE
-+ # build with empty direct audio
-+ INCLUDE_DAUDIO = TRUE
-+ ifeq ($(OS_VENDOR), OpenBSD)
-+ LDFLAGS += -lossaudio
-+ endif
-+endif # PLATFORM bsd
-+
- ifeq ($(PLATFORM), solaris)
- ifneq ($(ARCH), amd64)
- # build with ports and direct audio
---- jdk/src/share/native/com/sun/media/sound/Platform.c 2011-01-20 18:54:37.000000000 -0500
-+++ jdk/src/share/native/com/sun/media/sound/Platform.c 2011-02-01 17:46:55.000000000 -0500
-@@ -99,5 +99,17 @@
- return com_sun_media_sound_Platform_LIB_ALSA;
- }
- #endif
-+#if (X_PLATFORM == X_BSD)
-+ switch (feature) {
-+ case com_sun_media_sound_Platform_FEATURE_MIDIIO:
-+ return com_sun_media_sound_Platform_LIB_MAIN;
-+ case com_sun_media_sound_Platform_FEATURE_PORTS:
-+ return com_sun_media_sound_Platform_LIB_MAIN;
-+ case com_sun_media_sound_Platform_FEATURE_DIRECT_AUDIO:
-+ // XXXBSD: When native Direct Audio support is ported change
-+ // this back to returning com_sun_media_sound_Platform_LIB_MAIN
-+ return 0;
-+ }
-+#endif
- return 0;
- }
diff --git a/java/openjdk6/files/alsa-enable.patch b/java/openjdk6/files/alsa-enable.patch
deleted file mode 100644
index 3d455bd4c7e8..000000000000
--- a/java/openjdk6/files/alsa-enable.patch
+++ /dev/null
@@ -1,57 +0,0 @@
---- jdk/make/javax/sound/Makefile 2011-01-20 18:54:05.000000000 -0500
-+++ jdk/make/javax/sound/Makefile 2011-02-11 16:20:52.000000000 -0500
-@@ -105,6 +105,15 @@
- #MXSPP_ADD = $(PLATFORM)-$(ARCH)/
- endif # PLATFORM linux
-
-+ifeq ($(PLATFORM), bsd)
-+ # build with empty MIDI i/o
-+ INCLUDE_MIDI = TRUE
-+ # ALSA handles directaudio and ports
-+ SUBDIRS += jsoundalsa
-+ EXTRA_SOUND_JNI_LIBS += jsoundalsa
-+ #MXSPP_ADD = $(PLATFORM)-$(ARCH)/
-+endif # PLATFORM bsd
-+
- ifeq ($(PLATFORM), solaris)
- ifneq ($(ARCH), amd64)
- # build with ports and direct audio
---- jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_CommonUtils.c 2012-05-01 17:18:35.000000000 -0400
-+++ jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_CommonUtils.c 2012-09-26 17:35:48.000000000 -0400
-@@ -131,6 +131,10 @@
-
- void getALSAVersion(char* buffer, int len) {
- if (!hasGottenALSAVersion) {
-+#ifdef __FreeBSD__
-+ // XXX We do not use ALSA drivers. Just copy the library version.
-+ strcpy(ALSAVersionString, SND_LIB_VERSION_STR);
-+#else
- // get alsa version from proc interface
- FILE* file;
- int curr, len, totalLen, inVersionString;
-@@ -171,6 +175,7 @@
- // null terminate
- ALSAVersionString[len] = 0;
- }
-+#endif
- hasGottenALSAVersion = TRUE;
- }
- strncpy(buffer, ALSAVersionString, len);
---- jdk/src/share/native/com/sun/media/sound/Platform.c 2011-01-20 18:54:37.000000000 -0500
-+++ jdk/src/share/native/com/sun/media/sound/Platform.c 2011-02-11 16:20:52.000000000 -0500
-@@ -99,5 +99,15 @@
- return com_sun_media_sound_Platform_LIB_ALSA;
- }
- #endif
-+#if (X_PLATFORM == X_BSD)
-+ switch (feature) {
-+ case com_sun_media_sound_Platform_FEATURE_MIDIIO:
-+ return com_sun_media_sound_Platform_LIB_MAIN;
-+ case com_sun_media_sound_Platform_FEATURE_PORTS:
-+ return com_sun_media_sound_Platform_LIB_ALSA;
-+ case com_sun_media_sound_Platform_FEATURE_DIRECT_AUDIO:
-+ return com_sun_media_sound_Platform_LIB_ALSA;
-+ }
-+#endif
- return 0;
- }
diff --git a/java/openjdk6/files/cacerts b/java/openjdk6/files/cacerts
deleted file mode 100644
index 318a166205d4..000000000000
--- a/java/openjdk6/files/cacerts
+++ /dev/null
Binary files differ
diff --git a/java/openjdk6/files/fontconfig.properties b/java/openjdk6/files/fontconfig.properties
deleted file mode 100644
index ceb46ba9ee19..000000000000
--- a/java/openjdk6/files/fontconfig.properties
+++ /dev/null
@@ -1,192 +0,0 @@
-#
-# Copyright 2007 Sun Microsystems, 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. Sun designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
-# CA 95054 USA or visit www.sun.com if you need additional information or
-# have any questions.
-#
-
-# Version
-
-# Uses FreeBSD ports tree fonts and file paths.
-version=1
-
-# Component Font Mappings
-
-dialog.plain.latin-1=DejaVu Sans
-dialog.plain.chinese-big5=AR PL UMing
-dialog.plain.chinese-gb18030=AR PL UMing
-dialog.plain.japanese-x0208=Sazanami Gothic
-dialog.plain.korean=NanumGothic
-
-dialog.bold.latin-1=DejaVu Sans Bold
-dialog.bold.chinese-big5=AR PL UMing
-dialog.bold.chinese-gb18030=AR PL UMing
-dialog.bold.japanese-x0208=Sazanami Gothic
-dialog.bold.korean=NanumGothicExtraBold
-
-dialog.italic.latin-1=DejaVu Sans Oblique
-dialog.italic.chinese-big5=AR PL UMing
-dialog.italic.chinese-gb18030=AR PL UMing
-dialog.italic.japanese-x0208=Sazanami Gothic
-dialog.italic.korean=NanumGothic
-
-dialog.bolditalic.latin-1=DejaVu Sans Bold Oblique
-dialog.bolditalic.chinese-big5=AR PL UMing
-dialog.bolditalic.chinese-gb18030=AR PL UMing
-dialog.bolditalic.japanese-x0208=Sazanami Gothic
-dialog.bolditalic.korean=NanumGothicExtraBold
-
-
-sansserif.plain.latin-1=DejaVu Sans
-sansserif.plain.chinese-big5=AR PL UMing
-sansserif.plain.chinese-gb18030=AR PL UMing
-sansserif.plain.japanese-x0208=Sazanami Gothic
-sansserif.plain.korean=NanumGothic
-
-sansserif.bold.latin-1=DejaVu Sans Bold
-sansserif.bold.chinese-big5=AR PL UMing
-sansserif.bold.chinese-gb18030=AR PL UMing
-sansserif.bold.japanese-x0208=Sazanami Gothic
-sansserif.bold.korean=NanumGothicExtraBold
-
-sansserif.italic.latin-1=DejaVu Sans Oblique
-sansserif.italic.chinese-big5=AR PL UMing
-sansserif.italic.chinese-gb18030=AR PL UMing
-sansserif.italic.japanese-x0208=Sazanami Gothic
-sansserif.italic.korean=NanumGothic
-
-sansserif.bolditalic.latin-1=DejaVu Sans Bold Oblique
-sansserif.bolditalic.chinese-big5=AR PL UMing
-sansserif.bolditalic.chinese-gb18030=AR PL UMing
-sansserif.bolditalic.japanese-x0208=Sazanami Gothic
-sansserif.bolditalic.korean=NanumGothicExtraBold
-
-
-serif.plain.latin-1=DejaVu Serif
-serif.plain.chinese-big5=AR PL UKai
-serif.plain.chinese-gb18030=AR PL UKai
-serif.plain.japanese-x0208=Sazanami Mincho
-serif.plain.korean=NanumMyeongjo
-
-serif.bold.latin-1=DejaVu Serif Bold
-serif.bold.chinese-big5=AR PL UKai
-serif.bold.chinese-gb18030=AR PL UKai
-serif.bold.japanese-x0208=Sazanami Mincho
-serif.bold.korean=NanumMyeongjoExtraBold
-
-serif.italic.latin-1=DejaVu Serif Italic
-serif.italic.chinese-big5=AR PL UKai
-serif.italic.chinese-gb18030=AR PL UKai
-serif.italic.japanese-x0208=Sazanami Mincho
-serif.italic.korean=NanumMyeongjo
-
-serif.bolditalic.latin-1=DejaVu Serif Bold Italic
-serif.bolditalic.chinese-big5=AR PL UKai
-serif.bolditalic.chinese-gb18030=AR PL UKai
-serif.bolditalic.japanese-x0208=Sazanami Mincho
-serif.bolditalic.korean=NanumMyeongjoExtraBold
-
-
-monospaced.plain.latin-1=DejaVu Sans Mono
-monospaced.plain.chinese-big5=AR PL UMing
-monospaced.plain.chinese-gb18030=AR PL UMing
-monospaced.plain.japanese-x0208=Sazanami Gothic
-monospaced.plain.korean=NanumGothic
-
-monospaced.bold.latin-1=DejaVu Sans Mono Bold
-monospaced.bold.chinese-big5=AR PL UMing
-monospaced.bold.chinese-gb18030=AR PL UMing
-monospaced.bold.japanese-x0208=Sazanami Gothic
-monospaced.bold.korean=NanumGothicExtraBold
-
-monospaced.italic.latin-1=DejaVu Sans Mono Oblique
-monospaced.italic.chinese-big5=AR PL UMing
-monospaced.italic.chinese-gb18030=AR PL UMing
-monospaced.italic.japanese-x0208=Sazanami Gothic
-monospaced.italic.korean=NanumGothic
-
-monospaced.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique
-monospaced.bolditalic.chinese-big5=AR PL UMing
-monospaced.bolditalic.chinese-gb18030=AR PL UMing
-monospaced.bolditalic.japanese-x0208=Sazanami Gothic
-monospaced.bolditalic.korean=NanumGothicExtraBold
-
-
-dialoginput.plain.latin-1=DejaVu Sans Mono
-dialoginput.plain.chinese-big5=AR PL UMing
-dialoginput.plain.chinese-gb18030=AR PL UMing
-dialoginput.plain.japanese-x0208=Sazanami Gothic
-dialoginput.plain.korean=NanumGothic
-
-dialoginput.bold.latin-1=DejaVu Sans Mono Bold
-dialoginput.bold.chinese-big5=AR PL UMing
-dialoginput.bold.chinese-gb18030=AR PL UMing
-dialoginput.bold.japanese-x0208=Sazanami Gothic
-dialoginput.bold.korean=NanumGothicExtraBold
-
-dialoginput.italic.latin-1=DejaVu Sans Mono Oblique
-dialoginput.italic.chinese-big5=AR PL UMing
-dialoginput.italic.chinese-gb18030=AR PL UMing
-dialoginput.italic.japanese-x0208=Sazanami Gothic
-dialoginput.italic.korean=NanumGothic
-
-dialoginput.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique
-dialoginput.bolditalic.chinese-big5=AR PL UMing
-dialoginput.bolditalic.chinese-gb18030=AR PL UMing
-dialoginput.bolditalic.japanese-x0208=Sazanami Gothic
-dialoginput.bolditalic.korean=NanumGothicExtraBold
-
-# Search Sequences
-
-sequence.allfonts=latin-1
-sequence.allfonts.Big5=chinese-big5,latin-1
-sequence.allfonts.EUC-JP=japanese-x0208,latin-1
-sequence.allfonts.EUC-KR=korean,latin-1
-sequence.allfonts.GB18030=chinese-gb18030,latin-1
-sequence.fallback=chinese-big5,chinese-gb18030,japanese-x0208,korean
-
-# Font File Names
-
-filename.DejaVu_Sans=/usr/local/share/fonts/dejavu/DejaVuSans.ttf
-filename.DejaVu_Sans_Bold=/usr/local/share/fonts/dejavu/DejaVuSans-Bold.ttf
-filename.DejaVu_Sans_Oblique=/usr/local/share/fonts/dejavu/DejaVuSans-Oblique.ttf
-filename.DejaVu_Sans_Bold_Oblique=/usr/local/share/fonts/dejavu/DejaVuSans-BoldOblique.ttf
-
-filename.DejaVu_Sans_Mono=/usr/local/share/fonts/dejavu/DejaVuSansMono.ttf
-filename.DejaVu_Sans_Mono_Bold=/usr/local/share/fonts/dejavu/DejaVuSansMono-Bold.ttf
-filename.DejaVu_Sans_Mono_Oblique=/usr/local/share/fonts/dejavu/DejaVuSansMono-Oblique.ttf
-filename.DejaVu_Sans_Mono_Bold_Oblique=/usr/local/share/fonts/dejavu/DejaVuSansMono-BoldOblique.ttf
-
-filename.DejaVu_Serif=/usr/local/share/fonts/dejavu/DejaVuSerif.ttf
-filename.DejaVu_Serif_Bold=/usr/local/share/fonts/dejavu/DejaVuSerif-Bold.ttf
-filename.DejaVu_Serif_Italic=/usr/local/share/fonts/dejavu/DejaVuSerif-Italic.ttf
-filename.DejaVu_Serif_Bold_Italic=/usr/local/share/fonts/dejavu/DejaVuSerif-BoldItalic.ttf
-
-filename.AR_PL_UMing=/usr/local/share/fonts/TrueType/uming.ttc
-filename.AR_PL_UKai=/usr/local/share/fonts/TrueType/ukai.ttc
-
-filename.Sazanami_Gothic=/usr/local/share/font-sazanami/sazanami-gothic.ttf
-filename.Sazanami_Mincho=/usr/local/share/font-sazanami/sazanami-mincho.ttf
-
-filename.NanumGothic=/usr/local/share/fonts/nanum-ttf/NanumGothic.ttf
-filename.NanumGothicExtraBold=/usr/local/share/fonts/nanum-ttf/NanumGothicExtraBold.ttf
-filename.NanumMyeongjo=/usr/local/share/fonts/nanum-ttf/NanumMyeongjo.ttf
-filename.NanumMyeongjoExtraBold=/usr/local/share/fonts/nanum-ttf/NanumMyeongjoExtraBold.ttf
diff --git a/java/openjdk6/files/icedtea/applet_hole.patch b/java/openjdk6/files/icedtea/applet_hole.patch
deleted file mode 100644
index 1a4179d9ee60..000000000000
--- a/java/openjdk6/files/icedtea/applet_hole.patch
+++ /dev/null
@@ -1,115 +0,0 @@
---- jdk/src/share/classes/sun/applet/AppletViewerPanel.java Fri Nov 12 12:08:44 2010 +0000
-+++ jdk/src/share/classes/sun/applet/AppletViewerPanel.java Thu Dec 02 01:45:58 2010 +0000
-@@ -42,25 +42,25 @@
- *
- * @author Arthur van Hoff
- */
--class AppletViewerPanel extends AppletPanel {
-+public class AppletViewerPanel extends AppletPanel {
-
- /* Are we debugging? */
-- static boolean debug = false;
-+ protected static boolean debug = false;
-
- /**
- * The document url.
- */
-- URL documentURL;
-+ protected URL documentURL;
-
- /**
- * The base url.
- */
-- URL baseURL;
-+ protected URL baseURL;
-
- /**
- * The attributes of the applet.
- */
-- Hashtable atts;
-+ protected Hashtable<String,String> atts;
-
- /*
- * JDK 1.1 serialVersionUID
-@@ -70,7 +70,7 @@
- /**
- * Construct an applet viewer and start the applet.
- */
-- AppletViewerPanel(URL documentURL, Hashtable atts) {
-+ protected AppletViewerPanel(URL documentURL, Hashtable<String,String> atts) {
- this.documentURL = documentURL;
- this.atts = atts;
-
-@@ -106,7 +106,7 @@
- * Get an applet parameter.
- */
- public String getParameter(String name) {
-- return (String)atts.get(name.toLowerCase());
-+ return atts.get(name.toLowerCase());
- }
-
- /**
-@@ -202,12 +202,12 @@
- return (AppletContext)getParent();
- }
-
-- static void debug(String s) {
-+ protected static void debug(String s) {
- if(debug)
- System.err.println("AppletViewerPanel:::" + s);
- }
-
-- static void debug(String s, Throwable t) {
-+ protected static void debug(String s, Throwable t) {
- if(debug) {
- t.printStackTrace();
- debug(s);
---- jdk/src/share/classes/sun/applet/AppletPanel.java Fri Nov 12 12:08:44 2010 +0000
-+++ jdk/src/share/classes/sun/applet/AppletPanel.java Thu Dec 02 01:45:58 2010 +0000
-@@ -68,7 +68,7 @@
- /**
- * The applet (if loaded).
- */
-- Applet applet;
-+ protected Applet applet;
-
- /**
- * Applet will allow initialization. Should be
-@@ -117,7 +117,7 @@
- /**
- * The thread for the applet.
- */
-- Thread handler;
-+ protected Thread handler;
-
-
- /**
-@@ -162,7 +162,8 @@
- * Creates a thread to run the applet. This method is called
- * each time an applet is loaded and reloaded.
- */
-- synchronized void createAppletThread() {
-+ //Overridden by NetxPanel.
-+ protected synchronized void createAppletThread() {
- // Create a thread group for the applet, and start a new
- // thread to load the applet.
- String nm = "applet-" + getCode();
-@@ -306,7 +307,7 @@
- /**
- * Get an event from the queue.
- */
-- synchronized AppletEvent getNextEvent() throws InterruptedException {
-+ protected synchronized AppletEvent getNextEvent() throws InterruptedException {
- while (queue == null || queue.isEmpty()) {
- wait();
- }
-@@ -695,7 +696,8 @@
- * applet event processing so that it can be gracefully interrupted from
- * things like HotJava.
- */
-- private void runLoader() {
-+ //Overridden by NetxPanel.
-+ protected void runLoader() {
- if (status != APPLET_DISPOSE) {
- showAppletStatus("notdisposed");
- return;
diff --git a/java/openjdk6/files/icedtea/jpegclasses.patch b/java/openjdk6/files/icedtea/jpegclasses.patch
deleted file mode 100644
index 0f9dd08aa6ac..000000000000
--- a/java/openjdk6/files/icedtea/jpegclasses.patch
+++ /dev/null
@@ -1,2667 +0,0 @@
---- jdk/src/share/classes/com/sun/image/codec/jpeg/ImageFormatException.java 1969-12-31 19:00:00.000000000 -0500
-+++ jdk/src/share/classes/com/sun/image/codec/jpeg/ImageFormatException.java 2011-07-07 09:19:34.000000000 -0400
-@@ -0,0 +1,51 @@
-+/* ImageFormatException.java
-+ * Copyright (C) 2007 Matthew Flaschen
-+ * Copyright (C) 2011 Red Hat, Inc.
-+ *
-+ * This file is part of IcedTea
-+ *
-+ * IcedTea is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2, or (at your option)
-+ * any later version.
-+ *
-+ * IcedTea 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 for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with GNU Classpath; see the file COPYING. If not, write to the
-+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-+ * 02110-1301 USA.
-+ *
-+ * Linking this library statically or dynamically with other modules is
-+ * making a combined work based on this library. Thus, the terms and
-+ * conditions of the GNU General Public License cover the whole
-+ * combination.
-+ *
-+ * As a special exception, the copyright holders of this library give you
-+ * permission to link this library with independent modules to produce an
-+ * executable, regardless of the license terms of these independent
-+ * modules, and to copy and distribute the resulting executable under
-+ * terms of your choice, provided that you also meet, for each linked
-+ * independent module, the terms and conditions of the license of that
-+ * module. An independent module is a module which is not derived from
-+ * or based on this library. If you modify this library, you may extend
-+ * this exception to your version of the library, but you are not
-+ * obligated to do so. If you do not wish to do so, delete this
-+ * exception statement from your version.
-+ */
-+
-+package com.sun.image.codec.jpeg;
-+
-+public class ImageFormatException extends RuntimeException {
-+
-+ public ImageFormatException() {
-+ super();
-+ }
-+
-+ public ImageFormatException(String s) {
-+ super(s);
-+ }
-+}
---- jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGCodec.java 1969-12-31 19:00:00.000000000 -0500
-+++ jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGCodec.java 2011-07-07 09:19:34.000000000 -0400
-@@ -0,0 +1,193 @@
-+/* JPEGCodec.java --
-+ * Copyright (C) 2007 Free Software Foundation, Inc.
-+ * Copyright (C) 2007 Matthew Flaschen
-+ *
-+ * This file is part of GNU Classpath.
-+ *
-+ * GNU Classpath is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2, or (at your option)
-+ * any later version.
-+ *
-+ * GNU Classpath 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 for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with GNU Classpath; see the file COPYING. If not, write to the
-+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-+ * 02110-1301 USA.
-+ *
-+ * Linking this library statically or dynamically with other modules is
-+ * making a combined work based on this library. Thus, the terms and
-+ * conditions of the GNU General Public License cover the whole
-+ * combination.
-+ *
-+ * As a special exception, the copyright holders of this library give you
-+ * permission to link this library with independent modules to produce an
-+ * executable, regardless of the license terms of these independent
-+ * modules, and to copy and distribute the resulting executable under
-+ * terms of your choice, provided that you also meet, for each linked
-+ * independent module, the terms and conditions of the license of that
-+ * module. An independent module is a module which is not derived from
-+ * or based on this library. If you modify this library, you may extend
-+ * this exception to your version of the library, but you are not
-+ * obligated to do so. If you do not wish to do so, delete this
-+ * exception statement from your version.
-+ */
-+
-+package com.sun.image.codec.jpeg;
-+
-+import java.io.InputStream;
-+import java.io.OutputStream;
-+import java.awt.color.ColorSpace;
-+import java.awt.image.BufferedImage;
-+import java.awt.image.ColorModel;
-+import java.awt.image.Raster;
-+
-+import sun.awt.image.codec.JPEGImageDecoderImpl;
-+import sun.awt.image.codec.JPEGImageEncoderImpl;
-+import sun.awt.image.codec.JPEGParam;
-+
-+/**
-+ * This class is a factory for implementations of the JPEG Image
-+ * Decoder/Encoder.
-+ */
-+public class JPEGCodec {
-+
-+ private JPEGCodec() {}
-+
-+ /**
-+ * This creates an instance of a JPEGImageDecoder that can be used to decode
-+ * JPEG Data streams.
-+ *
-+ * @param src
-+ * @return
-+ */
-+ public static JPEGImageDecoder createJPEGDecoder(InputStream src) {
-+ return new JPEGImageDecoderImpl(src);
-+ }
-+
-+ /**
-+ * This creates an instance of a JPEGImageDecoder that can be used to decode
-+ * JPEG Data streams.
-+ *
-+ * @param src
-+ * @param jdp
-+ * @return
-+ */
-+ public static JPEGImageDecoder createJPEGDecoder(InputStream src,
-+ JPEGDecodeParam jdp) {
-+ return new JPEGImageDecoderImpl(src, jdp);
-+ }
-+
-+ /**
-+ * This creates an instance of a JPEGImageEncoder that can be used to encode
-+ * image data as JPEG Data streams.
-+ *
-+ * @param os
-+ * @return
-+ */
-+ public static JPEGImageEncoder createJPEGEncoder(OutputStream os) {
-+ return new JPEGImageEncoderImpl(os);
-+ }
-+
-+ /**
-+ * This creates an instance of a JPEGImageEncoder that can be used to encode
-+ * image data as JPEG Data streams.
-+ *
-+ * @param dest
-+ * @param jep
-+ * @return
-+ */
-+ public static JPEGImageEncoder createJPEGEncoder(OutputStream dest,
-+ JPEGEncodeParam jep) {
-+ return new JPEGImageEncoderImpl(dest, jep);
-+ }
-+
-+ /**
-+ * This is a factory method for creating JPEGEncodeParam objects.
-+ *
-+ * @param bi
-+ * @return
-+ */
-+ public static JPEGEncodeParam getDefaultJPEGEncodeParam(BufferedImage bi) {
-+ return getDefaultJPEGEncodeParam(bi.getRaster(),
-+ getDefaultColorID(bi.getColorModel()));
-+ }
-+
-+ /**
-+ * This is a factory method for creating JPEGEncodeParam objects.
-+ *
-+ * @param numBands
-+ * @param colorID
-+ * @return
-+ */
-+ public static JPEGEncodeParam getDefaultJPEGEncodeParam(int numBands,
-+ int colorID) {
-+ return new JPEGParam(colorID, numBands);
-+ }
-+
-+ /**
-+ * This is a factory method for creating a JPEGEncodeParam from a
-+ * JPEGDecodeParam.
-+ *
-+ * @param jdp
-+ * @return
-+ */
-+ public static JPEGEncodeParam getDefaultJPEGEncodeParam(JPEGDecodeParam jdp) {
-+ return new JPEGParam(jdp);
-+ }
-+
-+ /**
-+ * This is a factory method for creating JPEGEncodeParam objects.
-+ *
-+ * @param ras
-+ * @param colorID
-+ * @return
-+ */
-+ public static JPEGEncodeParam getDefaultJPEGEncodeParam(Raster ras,
-+ int colorID) {
-+ return getDefaultJPEGEncodeParam(ras.getNumBands(), colorID);
-+ }
-+
-+ private static int getDefaultColorID(ColorModel cm) {
-+ ColorSpace cs = cm.getColorSpace();
-+ int type = cs.getType();
-+ int id = -1;
-+ switch (type) {
-+ case ColorSpace.TYPE_GRAY:
-+ id = JPEGEncodeParam.COLOR_ID_GRAY;
-+ break;
-+
-+ case ColorSpace.TYPE_RGB:
-+ id = cm.hasAlpha() ? JPEGEncodeParam.COLOR_ID_RGBA
-+ : JPEGEncodeParam.COLOR_ID_RGB;
-+
-+ case ColorSpace.TYPE_YCbCr:
-+ try {
-+ if (cs == ColorSpace.getInstance(ColorSpace.CS_PYCC)) {
-+ id = cm.hasAlpha() ? JPEGEncodeParam.COLOR_ID_PYCCA
-+ : JPEGEncodeParam.COLOR_ID_PYCC;
-+ }
-+ } catch (IllegalArgumentException e) {
-+ /* We know it isn't PYCC type, nothing to handle */
-+ }
-+ if (id == -1) {
-+ id = cm.hasAlpha() ? JPEGEncodeParam.COLOR_ID_YCbCrA
-+ : JPEGEncodeParam.COLOR_ID_YCbCr;
-+ }
-+ break;
-+
-+ case ColorSpace.TYPE_CMYK:
-+ id = JPEGEncodeParam.COLOR_ID_CMYK;
-+ break;
-+
-+ default:
-+ id = JPEGEncodeParam.COLOR_ID_UNKNOWN;
-+ }
-+
-+ return id;
-+ }
-+}
---- jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGDecodeParam.java 1969-12-31 19:00:00.000000000 -0500
-+++ jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGDecodeParam.java 2011-07-07 09:19:34.000000000 -0400
-@@ -0,0 +1,390 @@
-+/* JPEGImageDecoder.java --
-+ * Copyright (C) 2007 Free Software Foundation, Inc.
-+ * Copyright (C) 2007 Matthew Flaschen
-+ *
-+ * This file is part of GNU Classpath.
-+ *
-+ * GNU Classpath is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2, or (at your option)
-+ * any later version.
-+ *
-+ * GNU Classpath 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 for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with GNU Classpath; see the file COPYING. If not, write to the
-+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-+ * 02110-1301 USA.
-+ *
-+ * Linking this library statically or dynamically with other modules is
-+ * making a combined work based on this library. Thus, the terms and
-+ * conditions of the GNU General Public License cover the whole
-+ * combination.
-+ *
-+ * As a special exception, the copyright holders of this library give you
-+ * permission to link this library with independent modules to produce an
-+ * executable, regardless of the license terms of these independent
-+ * modules, and to copy and distribute the resulting executable under
-+ * terms of your choice, provided that you also meet, for each linked
-+ * independent module, the terms and conditions of the license of that
-+ * module. An independent module is a module which is not derived from
-+ * or based on this library. If you modify this library, you may extend
-+ * this exception to your version of the library, but you are not
-+ * obligated to do so. If you do not wish to do so, delete this
-+ * exception statement from your version.
-+ */
-+
-+package com.sun.image.codec.jpeg;
-+
-+/**
-+ * <p>
-+ * JPEGDecodeParam encapsulates tables and options necessary to control decoding
-+ * JPEG data streams. Parameters are either set explicitly by the application
-+ * for encoding, or read from the JPEG header for decoding. In the case of
-+ * decoding abbreviated data streams the application may need to set some/all of
-+ * the values it's self.
-+ * </p>
-+ * <p>
-+ * When working with BufferedImages (@see JPEGImageDecoder.decodeBufferedImage),
-+ * the codec will attempt to generate an appropriate ColorModel for the JPEG
-+ * COLOR_ID. This is not always possible (example mappings are listed below) .
-+ * In cases where unsupported conversions are required, or unknown encoded
-+ * COLOR_ID's are in use, the user must request the data as a Raster and perform
-+ * the transformations themselves. When decoding into a raster (@see
-+ * JPEGImageDecoder.decodeRaster) no ColorSpace adjustments are made. Note: The
-+ * color ids described herein are simply enumerated values that influence data
-+ * processing by the JPEG codec. JPEG compression is by definition color blind.
-+ * These values are used as hints when decompressing JPEG data. Of particular
-+ * interest is the default conversion from YCbCr to sRGB when decoding buffered
-+ * Images.
-+ * </p>
-+ * <p>
-+ * Note: because JPEG is mostly color-blind color fidelity can not be
-+ * guaranteed. This will hopefully be rectified in the near future by the wide
-+ * spread inclusion of ICC-profiles in the JPEG data stream (as a special
-+ * marker). The following is an example of the conversions that take place. This
-+ * is only a guide to the types of conversions that are allowed. This list is
-+ * likely to change in the future so it is strongly recommended that you check
-+ * for thrown ImageFormatExceptions and check the actual ColorModel associated
-+ * with the BufferedImage returned rather than make assumptions.
-+ * </p>
-+ * DECODING:
-+ *
-+ * <pre>
-+ * JPEG (Encoded) Color ID BufferedImage ColorSpace
-+ * ======================= ========================
-+ * COLOR_ID_UNKNOWN ** Invalid **
-+ * COLOR_ID_GRAY CS_GRAY
-+ * COLOR_ID_RGB CS_sRGB
-+ * COLOR_ID_YCbCr CS_sRGB
-+ * COLOR_ID_CMYK ** Invalid **
-+ * COLOR_ID_PYCC CS_PYCC
-+ * COLOR_ID_RGBA CS_sRGB (w/ alpha)
-+ * COLOR_ID_YCbCrA CS_sRGB (w/ alpha)
-+ * COLOR_ID_RGBA_INVERTED ** Invalid **
-+ * COLOR_ID_YCbCrA_INVERTED ** Invalid **
-+ * COLOR_ID_PYCCA CS_PYCC (w/ alpha)
-+ * COLOR_ID_YCCK ** Invalid **
-+ * </pre>
-+ * <p>
-+ * If the user needs better control over conversion, the user must request the
-+ * data as a Raster and handle the conversion of the image data themselves. When
-+ * decoding JFIF files the encoded COLOR_ID will always be one of:
-+ * COLOR_ID_UNKNOWN, COLOR_ID_GRAY, COLOR_ID_RGB, COLOR_ID_YCbCr, COLOR_ID_CMYK,
-+ * or COLOR_ID_YCCK
-+ * </p>
-+ * <p>
-+ * Note that the classes in the com.sun.image.codec.jpeg package are not part of
-+ * the core Java APIs. They are a part of Sun's JDK and JRE distributions.
-+ * Although other licensees may choose to distribute these classes, developers
-+ * cannot depend on their availability in non-Sun implementations. We expect
-+ * that equivalent functionality will eventually be available in a core API or
-+ * standard extension.
-+ * </p>
-+ */
-+public interface JPEGDecodeParam extends Cloneable {
-+
-+ /** APP0 marker - JFIF info */
-+ public static final int APP0_MARKER = 0xE0;
-+ /** APP1 marker */
-+ public static final int APP1_MARKER = 0xE1;
-+ /** APP2 marker */
-+ public static final int APP2_MARKER = 0xE2;
-+ /** APP3 marker */
-+ public static final int APP3_MARKER = 0xE3;
-+ /** APP4 marker */
-+ public static final int APP4_MARKER = 0xE4;
-+ /** APP5 marker */
-+ public static final int APP5_MARKER = 0xE5;
-+ /** APP6 marker */
-+ public static final int APP6_MARKER = 0xE6;
-+ /** APP7 marker */
-+ public static final int APP7_MARKER = 0xE7;
-+ /** APP8 marker */
-+ public static final int APP8_MARKER = 0xE8;
-+ /** APP9 marker */
-+ public static final int APP9_MARKER = 0xE9;
-+ /** APPA marker */
-+ public static final int APPA_MARKER = 0xEA;
-+ /** APPB marker */
-+ public static final int APPB_MARKER = 0xEB;
-+ /** APPC marker */
-+ public static final int APPC_MARKER = 0xEC;
-+ /** APPD marker */
-+ public static final int APPD_MARKER = 0xED;
-+ /** APPE marker - Adobe info */
-+ public static final int APPE_MARKER = 0xEE;
-+ /** APPF marker */
-+ public static final int APPF_MARKER = 0xEF;
-+ /** Adobe marker indicates presence/need for Adobe marker. */
-+ public static final int COMMENT_MARKER = 0XFE;
-+
-+ /* Color ID values */
-+ public static final int COLOR_ID_UNKNOWN = 0;
-+ public static final int COLOR_ID_GRAY = 1;
-+ public static final int COLOR_ID_RGB = 2;
-+ public static final int COLOR_ID_YCbCr = 3;
-+ public static final int COLOR_ID_CMYK = 4;
-+ public static final int COLOR_ID_PYCC = 5;
-+ public static final int COLOR_ID_RGBA = 6;
-+ public static final int COLOR_ID_YCbCrA = 7;
-+ public static final int COLOR_ID_RGBA_INVERTED = 8;
-+ public static final int COLOR_ID_YCbCrA_INVERTED = 9;
-+ public static final int COLOR_ID_PYCCA = 10;
-+ public static final int COLOR_ID_YCCK = 11;
-+ public static final int NUM_COLOR_ID = 12;
-+
-+ /** Number of allowed Huffman and Quantization Tables */
-+ public static final int NUM_TABLES = 4;
-+
-+ /** The X and Y units simply indicate the aspect ratio of the pixels. */
-+ public static final int DENSITY_UNIT_ASPECT_RATIO = 0;
-+ /** Pixel density is in pixels per inch. */
-+ public static final int DENSITY_UNIT_DOTS_INCH = 1;
-+ /** Pixel density is in pixels per centimeter. */
-+ public static final int DENSITY_UNIT_DOTS_CM = 2;
-+ /** The max known value for DENSITY_UNIT */
-+ public static final int NUM_DENSITY_UNIT = 3;
-+
-+ public Object clone();
-+
-+ /**
-+ * Get the image width.
-+ *
-+ * @return int the width of the image data in pixels.
-+ */
-+ public int getWidth();
-+
-+ /**
-+ * Get the image height.
-+ *
-+ * @return The height of the image data in pixels.
-+ */
-+ public int getHeight();
-+
-+ /**
-+ * Return the Horizontal subsampling factor for requested Component. The
-+ * Subsample factor is the number of input pixels that contribute to each
-+ * output pixel. This is distinct from the way the JPEG to each output
-+ * pixel. This is distinct from the way the JPEG standard defines this
-+ * quantity, because fractional subsampling factors are not allowed.
-+ *
-+ * @param component
-+ * The component of the encoded image to return the subsampling
-+ * factor for.
-+ * @return The subsample factor.
-+ */
-+ public int getHorizontalSubsampling(int component);
-+
-+ /**
-+ * Return the Vertical subsampling factor for requested Component. The
-+ * Subsample factor is the number of input pixels that contribute to each
-+ * output pixel. This is distinct from the way the JPEG to each output
-+ * pixel. This is distinct from the way the JPEG standard defines this
-+ * quantity, because fractional subsampling factors are not allowed.
-+ *
-+ * @param component
-+ * The component of the encoded image to return the subsampling
-+ * factor for.
-+ * @return The subsample factor.
-+ */
-+ public int getVerticalSubsampling(int component);
-+
-+ /**
-+ * Returns the coefficient quantization tables or NULL if not defined.
-+ * tableNum must range in value from 0 - 3.
-+ *
-+ * @param tableNum
-+ * the index of the table to be returned.
-+ * @return Quantization table stored at index tableNum.
-+ */
-+ public JPEGQTable getQTable(int tableNum);
-+
-+ /**
-+ * Returns the Quantization table for the requested component.
-+ *
-+ * @param component
-+ * the image component of interest.
-+ * @return Quantization table associated with component
-+ */
-+ public JPEGQTable getQTableForComponent(int component);
-+
-+ /**
-+ * Returns the DC Huffman coding table requested or null if not defined
-+ *
-+ * @param tableNum
-+ * the index of the table to be returned.
-+ * @return Huffman table stored at index tableNum.
-+ */
-+ public JPEGHuffmanTable getDCHuffmanTable(int tableNum);
-+
-+ /**
-+ * Returns the DC Huffman coding table for the requested component.
-+ *
-+ * @param component
-+ * the image component of interest.
-+ * @return Huffman table associated with component
-+ */
-+ public JPEGHuffmanTable getDCHuffmanTableForComponent(int component);
-+
-+ /**
-+ * Returns the AC Huffman coding table requested or null if not defined
-+ *
-+ * @param tableNum
-+ * the index of the table to be returned.
-+ * @return Huffman table stored at index tableNum.
-+ */
-+ public JPEGHuffmanTable getACHuffmanTable(int tableNum);
-+
-+ /**
-+ * Returns the AC Huffman coding table for the requested component.
-+ *
-+ * @param component
-+ * the image component of interest.
-+ * @return Huffman table associated with component
-+ */
-+ public JPEGHuffmanTable getACHuffmanTableForComponent(int component);
-+
-+ /**
-+ * Get the number of the DC Huffman table that will be used for a particular
-+ * component.
-+ *
-+ * @param component
-+ * The Component of interest.
-+ * @return The table number of the DC Huffman table for component.
-+ */
-+ public int getDCHuffmanComponentMapping(int component);
-+
-+ /**
-+ * Get the number of the AC Huffman table that will be used for a particular
-+ * component.
-+ *
-+ * @param component
-+ * The Component of interest.
-+ * @return The table number of the AC Huffman table for component.
-+ */
-+ public int getACHuffmanComponentMapping(int component);
-+
-+ /**
-+ * Get the number of the quantization table that will be used for a
-+ * particular component.
-+ *
-+ * @param component
-+ * The Component of interest.
-+ * @return The table number of the Quantization table for component.
-+ */
-+ public int getQTableComponentMapping(int component);
-+
-+ /**
-+ * Returns true if the image information in the ParamBlock is currently
-+ * valid. This indicates if image data was read from the stream for decoding
-+ * and weather image data should be written when encoding.
-+ */
-+ public boolean isImageInfoValid();
-+
-+ /**
-+ * Returns true if the tables in the ParamBlock are currently valid. This
-+ * indicates that tables were read from the stream for decoding. When
-+ * encoding this indicates whether tables should be written to the stream.
-+ */
-+ public boolean isTableInfoValid();
-+
-+ /**
-+ * Returns true if at least one instance of the marker is present in the
-+ * Parameter object. For encoding returns true if there is at least one
-+ * instance of the marker to be written.
-+ *
-+ * @param marker
-+ * The marker of interest.
-+ */
-+ public boolean getMarker(int marker);
-+
-+ /**
-+ * Returns a 'byte[][]' associated with the requested marker in the
-+ * parameter object. Each entry in the 'byte[][]' is the data associated
-+ * with one instance of the marker (each marker can theoretically appear any
-+ * number of times in a stream).
-+ *
-+ * @param marker
-+ * The marker of interest.
-+ * @return The 'byte[][]' for this marker or null if none available.
-+ */
-+ public byte[][] getMarkerData(int marker);
-+
-+ /**
-+ * Returns the JPEG Encoded color id. This is generally speaking only used
-+ * if you are decoding into Rasters. Note that when decoding into a Raster
-+ * no color conversion is performed.
-+ *
-+ * @return The value of the JPEG encoded data's color id.
-+ */
-+ public int getEncodedColorID();
-+
-+ /**
-+ * Returns the number of components for the current encoding COLOR_ID.
-+ *
-+ * @return the number of Components
-+ */
-+ public int getNumComponents();
-+
-+ /**
-+ * Get the MCUs per restart marker.
-+ *
-+ * @return The number of MCUs between restart markers.
-+ */
-+ public int getRestartInterval();
-+
-+ /**
-+ * Get the code for pixel size units This value is copied from the APP0
-+ * marker. It isn't used by the JPEG codec. If the APP0 marker wasn't
-+ * present then you can not rely on this value.
-+ *
-+ * @return Value indicating the density unit one of the DENSITY_UNIT_*
-+ * constants.
-+ */
-+ public int getDensityUnit();
-+
-+ /**
-+ * Get the horizontal pixel density This value is copied from the APP0
-+ * marker. It isn't used by the JPEG code. If the APP0 marker wasn't present
-+ * then you can not rely on this value.
-+ *
-+ * @return The horizontal pixel density, in units described by
-+ * @see #getDensityUnit()
-+ */
-+ public int getXDensity();
-+
-+ /**
-+ * Get the vertical pixel density This value is copied into the APP0 marker.
-+ * It isn't used by the JPEG code. If the APP0 marker wasn't present then
-+ * you can not rely on this value.
-+ *
-+ * @return The vertical pixel density, in units described by
-+ * @see #getDensityUnit()
-+ */
-+ public int getYDensity();
-+
-+}
---- jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGEncodeParam.java 1969-12-31 19:00:00.000000000 -0500
-+++ jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGEncodeParam.java 2011-07-07 09:19:34.000000000 -0400
-@@ -0,0 +1,307 @@
-+/* JPEGEncodeParam.java --
-+ Copyright (C) 2007 Free Software Foundation, Inc.
-+
-+ This file is part of GNU Classpath.
-+
-+ GNU Classpath is free software; you can redistribute it and/or modify
-+ it under the terms of the GNU General Public License as published by
-+ the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-+
-+ GNU Classpath 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 for more details.
-+
-+ You should have received a copy of the GNU General Public License
-+ along with GNU Classpath; see the file COPYING. If not, write to the
-+ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-+ 02110-1301 USA.
-+
-+ Linking this library statically or dynamically with other modules is
-+ making a combined work based on this library. Thus, the terms and
-+ conditions of the GNU General Public License cover the whole
-+ combination.
-+
-+ As a special exception, the copyright holders of this library give you
-+ permission to link this library with independent modules to produce an
-+ executable, regardless of the license terms of these independent
-+ modules, and to copy and distribute the resulting executable under
-+ terms of your choice, provided that you also meet, for each linked
-+ independent module, the terms and conditions of the license of that
-+ module. An independent module is a module which is not derived from
-+ or based on this library. If you modify this library, you may extend
-+ this exception to your version of the library, but you are not
-+ obligated to do so. If you do not wish to do so, delete this
-+ exception statement from your version. */
-+
-+package com.sun.image.codec.jpeg;
-+
-+/**
-+ * <p>
-+ * JPEGEncodeParam encapsulates tables and options necessary to control encoding
-+ * of JPEG data streams. Parameters are either set explicitly by the application
-+ * for encoding, or read from another JPEG header.
-+ * </p>
-+ * <p>
-+ * When working with BufferedImages, the codec will attempt to match the encoded
-+ * JPEG COLOR_ID with the ColorModel in the BufferedImage. This is not always
-+ * possible (the default mappings are listed below). In cases where unsupported
-+ * conversions are required (or odd image colorspaces are in use) the user must
-+ * either convert the image data to a known ColorSpace or encode the data from a
-+ * raster. When encoding rasters no colorspace adjustments are made, so the user
-+ * must do any conversions required to get to the encoded COLOR_ID. The COLOR_ID
-+ * for the encoded images is used to control the JPEG codec's inital values for
-+ * Huffman and Quantization Tables as well as subsampling factors. It is also
-+ * used to determine what color conversion should be performed to obtain the
-+ * best encoding.
-+ * </p>
-+ * <p>
-+ * Note: The color ids described herein are simply enumerated values that
-+ * influence data processing by the JPEG codec. JPEG compression is, by
-+ * definition, color blind. These values are used as hints when compressing JPEG
-+ * data. Through these values the JPEG codec can perform some default rotation
-+ * of data into spaces that will aid in getting better compression ratios.
-+ * </p>
-+ * <p>
-+ * Example behavior is described below. Since these mappings are likely to
-+ * change in the future it is strongly recommended that you make use of the @see
-+ * JPEGImageEncoder.getDefaultParamBlock calls and check the encodedColorID for
-+ * your particular BufferedImage. In extreme cases is may be necessary for the
-+ * user to convert the image to the desired colorspace, and encode it from a
-+ * Raster. In this case the API programmer must specify the colorID of the data
-+ * in the Raster and no color conversion will take place.
-+ * </p>
-+ *
-+ * ENCODING:
-+ *
-+ * <pre>
-+ * BufferedImage Type/Instance JPEG (Encoded) Color ID
-+ * =========================== =======================
-+ * TYPE_GRAY COLOR_ID_GRAYSCALE
-+ * TYPE_RGB COLOR_ID_YCbCr
-+ * TYPE_YCbCr COLOR_ID_YCbCr
-+ * TYPE_YCbCr/CS_PYCC COLOR_ID_PYCC
-+ * TYPE_CMYK COLOR_ID_CMYK
-+ * TYPE_RGB (w/ alpha) COLOR_ID_YCbCrA
-+ * TYPE_YCbCr (w/ alpha) COLOR_ID_YCbCrA
-+ * TYPE_YCbCr/CS_PYCC (w/ alpha) COLOR_ID_PYCCA
-+ * ** Any Other ** COLOR_ID_UNKNOWN
-+ * </pre>
-+ * <p>
-+ * When the user wants more control than the BufferedImage conversions provide,
-+ * the user must encode the data from a Raster. In this case the data undergoes
-+ * no color conversion at all. It is the user's responsibility to perform the
-+ * desired conversions. If you intend to write a JFIF image (by including the
-+ * APP0_MARKER) the encoded COLOR_ID must be one of: COLOR_ID_UNKNOWN,
-+ * COLOR_ID_GRAYSCALE, COLOR_ID_YCbCr, or COLOR_ID_CMYK. In all other instances
-+ * an ImageformatException will be thrown.
-+ * </p>
-+ * <p>
-+ * IMPORTANT: an Alpha RGB BufferedImage will not map to a valid JFIF stream,
-+ * you must strip off the alpha prior to encoding if you want a JFIF file. If
-+ * the APP0 marker is set and you do not strip off the Alpha, an
-+ * ImageFormatException will be thrown.
-+ * </p>
-+ * <p>
-+ * Note that the classes in the com.sun.image.codec.jpeg package are not part of
-+ * the core Java APIs. They are a part of Sun's JDK and JRE distributions.
-+ * Although other licensees may choose to distribute these classes, developers
-+ * cannot depend on their availability in non-Sun implementations. We expect
-+ * that equivalent functionality will eventually be available in a core API or
-+ * standard extension.
-+ * </p>
-+ */
-+public interface JPEGEncodeParam extends JPEGDecodeParam {
-+
-+ /**
-+ * Set the horizontal subsample factor for the given component. Note that
-+ * the subsample factor is the number of input pixels that contribute to
-+ * each output pixel (usually 2 for YCC).
-+ *
-+ * @param component
-+ * The component being specified.
-+ * @param subsample
-+ * The subsampling factor being specified.
-+ */
-+ public void setHorizontalSubsampling(int component, int subsample);
-+
-+ /**
-+ * Set the vertical subsample factor for the given component. Note that the
-+ * subsample factor is the number of input pixels that contribute to each
-+ * output pixel (usually 2 for YCC).
-+ *
-+ * @param component
-+ * The component being specified.
-+ * @param subsample
-+ * The subsampling factor being specified.
-+ */
-+ public void setVerticalSubsampling(int component, int subsample);
-+
-+ /**
-+ * Sets the coefficient quantization tables at index passed. tableNum must
-+ * range in value from 0 - 3.
-+ *
-+ * @param qtable
-+ * that will be used.
-+ * @param tableNum
-+ * the index of the table to be set.
-+ */
-+ public void setQTable(int tableNum, JPEGQTable qTable);
-+
-+ /**
-+ * Sets the DC Huffman coding table at index to the table provided.
-+ *
-+ * @param huffTable
-+ * JPEGHuffmanTable that will be assigned to index tableNum.
-+ * @param tableNum
-+ * - the index of the table to be set.
-+ * @exception IllegalArgumentException
-+ * - thrown if the tableNum is out of range. Index must range
-+ * in value from 0 - 3.
-+ */
-+ public void setDCHuffmanTable(int tableNum, JPEGHuffmanTable huffTable);
-+
-+ /**
-+ * Sets the AC Huffman coding table at index to the table provided.
-+ *
-+ * @param huffTable
-+ * JPEGHuffmanTable that will be assigned to index tableNum.
-+ * @param tableNum
-+ * - the index of the table to be set.
-+ * @exception IllegalArgumentException
-+ * - thrown if the tableNum is out of range. Index must range
-+ * in value from 0 - 3.
-+ */
-+ public void setACHuffmanTable(int tableNum, JPEGHuffmanTable huffTable);
-+
-+ /**
-+ * Sets the mapping between a component and it's DC Huffman Table.
-+ *
-+ * @param component
-+ * The component to set the mapping for
-+ * @param table
-+ * The DC Huffman table to use for component
-+ */
-+ public void setDCHuffmanComponentMapping(int component, int table);
-+
-+ /**
-+ * Sets the mapping between a component and it's AC Huffman Table.
-+ *
-+ * @param component
-+ * The component to set the mapping for
-+ * @param table
-+ * The AC Huffman table to use for component
-+ */
-+ public void setACHuffmanComponentMapping(int component, int table);
-+
-+ /**
-+ * Sets the mapping between a component and it's Quantization Table.
-+ *
-+ * @param component
-+ * The component to set the mapping for
-+ * @param table
-+ * The Quantization Table to use for component
-+ */
-+ public void setQTableComponentMapping(int component, int table);
-+
-+ /**
-+ * Set the flag indicating the validity of the table information in the
-+ * ParamBlock. This is used to indicate if tables should be included when
-+ * encoding.
-+ */
-+ public void setImageInfoValid(boolean flag);
-+
-+ /**
-+ * Set the flag indicating the validity of the image information in the
-+ * ParamBlock. This is used to indicates if image data should be written
-+ * when encoding.
-+ */
-+ public void setTableInfoValid(boolean flag);
-+
-+ /**
-+ * Sets the marker data to be written to the output data stream. This
-+ * removes any existing marker data in the JPEParm object. This can be used
-+ * to remove the default APP0 marker by calling it with data set to null.
-+ *
-+ * @param marker
-+ * The marker to set the data for.
-+ * @param data
-+ * the new set of data to be written.
-+ */
-+ public void setMarkerData(int marker, byte[][] data);
-+
-+ /**
-+ * Appends 'data' to the array of byte[] associated with marker. This will
-+ * result in additional instance of the marker being written (one for each
-+ * byte[] in the array.).
-+ *
-+ * @param marker
-+ * The marker to add and instance of.
-+ * @param data
-+ * the data to be written.
-+ */
-+ public void addMarkerData(int marker, byte[] data);
-+
-+ /**
-+ * Set the MCUs per restart, or 0 for no restart markers.
-+ *
-+ * @param restartInterval
-+ * number MCUs per restart marker.
-+ */
-+ public void setRestartInterval(int restartInterval);
-+
-+ /**
-+ * Set the pixel size units This value is copied into the APP0 marker (if
-+ * that marker is written). This value isn't used by the JPEG code.
-+ *
-+ * @param unit
-+ * One of the DENSITY_UNIT_* values.
-+ */
-+ public void setDensityUnit(int unit);
-+
-+ /**
-+ * Set the horizontal pixel density. This value is written into the APP0
-+ * marker. It isn't used by the JPEG code.
-+ *
-+ * @param density
-+ * the horizontal pixel density, in units described by @see
-+ * JPEGParam.getDensityUnit.
-+ */
-+ public void setXDensity(int density);
-+
-+ /**
-+ * Set the vertical pixel density. This value is copied into the JFIF APP0
-+ * marker. It isn't used by the JPEG code.
-+ *
-+ * @param density
-+ * The vertical pixel density, in units described by @see
-+ * JPEGParam.getDensityUnit.
-+ */
-+ public void setYDensity(int density);
-+
-+ /**
-+ * This creates new Quantization tables that replace the currently installed
-+ * Quantization tables. It also updates the Component QTable mapping to the
-+ * default for the current encoded COLOR_ID.
-+ *
-+ * The Created Quantization table varies from very high compression, very
-+ * low quality, (0.0) to low compression, very high quality (1.0) based on
-+ * the quality parameter.
-+ *
-+ * At a quality level of 1.0 the table will be all 1's which will lead to no
-+ * loss of data due to quantization (however chrominance subsampling, if
-+ * used, and roundoff error in the DCT will still degrade the image some
-+ * what).
-+ *
-+ * This is a linear manipulation of the standard chrominance Q-Table.
-+ *
-+ * Some guidelines: 0.75 high quality 0.5 medium quality 0.25 low quality
-+ *
-+ * @param quality
-+ * 0.0-1.0 setting of desired quality level.
-+ * @param forceBaseline
-+ * force baseline quantization table
-+ */
-+ public void setQuality(float quality, boolean forceBaseline);
-+}
---- jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGHuffmanTable.java 1969-12-31 19:00:00.000000000 -0500
-+++ jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGHuffmanTable.java 2011-07-07 09:19:34.000000000 -0400
-@@ -0,0 +1,129 @@
-+/* JPEGHuffmanTable.java -- Huffman table implementation for JPEG.
-+Copyright (C) 2011 Red Hat
-+
-+This program is free software; you can redistribute it and/or modify
-+it under the terms of the GNU General Public License as published by
-+the Free Software Foundation; either version 2 of the License, or
-+(at your option) any later version.
-+
-+This program 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 for more details.
-+
-+You should have received a copy of the GNU General Public License
-+along with this program; if not, write to the Free Software
-+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+ */
-+
-+package com.sun.image.codec.jpeg;
-+
-+/**
-+ * A class to encapsulate a JPEG Huffman table.
-+ */
-+public class JPEGHuffmanTable {
-+
-+ /**
-+ * The standard DC luminance Huffman table.
-+ */
-+ public static final JPEGHuffmanTable StdDCLuminance;
-+
-+ /**
-+ * The standard DC chrominance Huffman table.
-+ */
-+ public static final JPEGHuffmanTable StdDCChrominance;
-+
-+ /**
-+ * The standard AC luminance Huffman table.
-+ */
-+ public static final JPEGHuffmanTable StdACLuminance;
-+
-+ /**
-+ * The standard AC chrominance Huffman table.
-+ */
-+ public static final JPEGHuffmanTable StdACChrominance;
-+
-+ private short[] lengths;
-+
-+ private short[] symbols;
-+
-+ static {
-+ javax.imageio.plugins.jpeg.JPEGHuffmanTable temp;
-+
-+ temp = javax.imageio.plugins.jpeg.JPEGHuffmanTable.StdDCLuminance;
-+ StdDCLuminance = new JPEGHuffmanTable(temp.getLengths(),
-+ temp.getValues());
-+
-+ temp = javax.imageio.plugins.jpeg.JPEGHuffmanTable.StdDCChrominance;
-+ StdDCChrominance = new JPEGHuffmanTable(temp.getLengths(),
-+ temp.getValues());
-+
-+ temp = javax.imageio.plugins.jpeg.JPEGHuffmanTable.StdACLuminance;
-+ StdACLuminance = new JPEGHuffmanTable(temp.getLengths(),
-+ temp.getValues());
-+
-+ temp = javax.imageio.plugins.jpeg.JPEGHuffmanTable.StdACChrominance;
-+ StdACChrominance = new JPEGHuffmanTable(temp.getLengths(),
-+ temp.getValues());
-+ }
-+
-+ /**
-+ * Creates a Huffman table and initializes it. The input arrays are copied.
-+ * The arrays must describe a possible Huffman table. For example, 3 codes
-+ * cannot be expressed with a single bit.
-+ *
-+ * @param lengths
-+ * an array of {@code short}s where <code>lengths[k]</code> is
-+ * equal to the number of values with corresponding codes of
-+ * length <code>k + 1</code> bits.
-+ * @param values
-+ * an array of shorts containing the values in order of
-+ * increasing code length.
-+ * @throws IllegalArgumentException
-+ * if <code>lengths</code> or <code>values</code> are null, the
-+ * length of <code>lengths</code> is greater than 16, the length
-+ * of <code>values</code> is greater than 256, if any value in
-+ * <code>lengths</code> or <code>values</code> is less than
-+ * zero, or if the arrays do not describe a valid Huffman table.
-+ */
-+ public JPEGHuffmanTable(short lengths[], short symbols[]) {
-+ if (lengths == null)
-+ throw new IllegalArgumentException("lengths array can not be null.");
-+ if (symbols == null)
-+ throw new IllegalArgumentException("symbols array can not be null.");
-+ if (lengths.length > 17)
-+ throw new IllegalArgumentException("lengths array can not be longer than 17.");
-+ if (symbols.length > 256)
-+ throw new IllegalArgumentException("symbols array can not be longer than 256.");
-+ for (int a = 0; a < lengths.length; ++a)
-+ if (lengths[a] < 0)
-+ throw new IllegalArgumentException("length " + a + " is smaller than zero.");
-+ for (int a = 0; a < symbols.length; ++a)
-+ if (symbols[a] < 0)
-+ throw new IllegalArgumentException("symbol " + a + " is smaller than zero.");
-+ this.lengths = lengths;
-+ this.symbols = symbols;
-+ }
-+
-+ /**
-+ * Return an array containing the number of symbols for each length in
-+ * the Huffman table.
-+ *
-+ * @return A short array where length[a] is equal to the number of symbols
-+ * in the Huffman table of length a. The first element (length[0])
-+ * is unused.
-+ */
-+ public short[] getLengths() {
-+ return lengths;
-+ }
-+
-+ /**
-+ * Return an array containing the Huffman symbols arranged by increasing
-+ * length. To make use of this array you must refer to the lengths array.
-+ *
-+ * @return A short array of Huffman symbols
-+ */
-+ public short[] getSymbols() {
-+ return symbols;
-+ }
-+}
---- jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGImageDecoder.java 1969-12-31 19:00:00.000000000 -0500
-+++ jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGImageDecoder.java 2011-07-07 09:19:34.000000000 -0400
-@@ -0,0 +1,102 @@
-+/* JPEGImageDecoder.java --
-+ Copyright (C) 2007 Free Software Foundation, Inc.
-+ Copyright (C) 2007 Matthew Flaschen
-+
-+ This file is part of GNU Classpath.
-+
-+ GNU Classpath is free software; you can redistribute it and/or modify
-+ it under the terms of the GNU General Public License as published by
-+ the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-+
-+ GNU Classpath 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 for more details.
-+
-+ You should have received a copy of the GNU General Public License
-+ along with GNU Classpath; see the file COPYING. If not, write to the
-+ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-+ 02110-1301 USA.
-+
-+ Linking this library statically or dynamically with other modules is
-+ making a combined work based on this library. Thus, the terms and
-+ conditions of the GNU General Public License cover the whole
-+ combination.
-+
-+ As a special exception, the copyright holders of this library give you
-+ permission to link this library with independent modules to produce an
-+ executable, regardless of the license terms of these independent
-+ modules, and to copy and distribute the resulting executable under
-+ terms of your choice, provided that you also meet, for each linked
-+ independent module, the terms and conditions of the license of that
-+ module. An independent module is a module which is not derived from
-+ or based on this library. If you modify this library, you may extend
-+ this exception to your version of the library, but you are not
-+ obligated to do so. If you do not wish to do so, delete this
-+ exception statement from your version. */
-+
-+package com.sun.image.codec.jpeg;
-+
-+import java.awt.image.BufferedImage;
-+import java.awt.image.Raster;
-+
-+import java.io.InputStream;
-+import java.io.IOException;
-+
-+public interface JPEGImageDecoder {
-+
-+ /**
-+ * Decodes the current JPEG data stream. The result of decoding this
-+ * InputStream is a BufferedImage the ColorModel associated with this
-+ * BufferedImage is determined based on the encoded COLOR_ID of the
-+ * JPEGDecodeParam object. For a tables only stream this will return null.
-+ *
-+ * @return BufferedImage containing the image data.
-+ * @throws ImageFormatException
-+ * If irregularities in the JPEG stream or an unknown condition
-+ * is encountered.
-+ * @throws IOException
-+ */
-+ public BufferedImage decodeAsBufferedImage() throws IOException,
-+ ImageFormatException;
-+
-+ /**
-+ * Decode the JPEG stream that was passed as part of construction. The JPEG
-+ * decompression will be performed according to the current settings of the
-+ * JPEGDecodeParam object. For a tables only stream this will return null.
-+ *
-+ * @return Raster containg the image data. Colorspace and other pertinent
-+ * information can be obtained from the JPEGDecodeParam object.
-+ * @throws ImageFormatException
-+ * If irregularities in the JPEG stream or an unknown condition
-+ * is encountered.
-+ * @throws IOException
-+ */
-+ public Raster decodeAsRaster() throws IOException, ImageFormatException;
-+
-+ /**
-+ * Get the input stream that decoding will occur from.
-+ *
-+ * @return The stream that the decoder is currently associated with.
-+ */
-+ public InputStream getInputStream();
-+
-+ /**
-+ * Returns the JPEGDecodeParam object that resulted from the most recent
-+ * decoding event.
-+ *
-+ * @return
-+ */
-+ public JPEGDecodeParam getJPEGDecodeParam();
-+
-+ /**
-+ * Sets the JPEGDecodeParam object used to determine the features of the
-+ * decompression performed on the JPEG encoded data. This is usually only
-+ * needed for decoding abbreviated JPEG data streams.
-+ *
-+ * @param jdp
-+ * JPEGDecodeParam object
-+ */
-+ public void setJPEGDecodeParam(JPEGDecodeParam jdp);
-+}
---- jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGImageEncoder.java 1969-12-31 19:00:00.000000000 -0500
-+++ jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGImageEncoder.java 2011-07-07 09:19:34.000000000 -0400
-@@ -0,0 +1,208 @@
-+/* JPEGImageEncoder.java --
-+ Copyright (C) 2007 Free Software Foundation, Inc.
-+
-+ This file is part of GNU Classpath.
-+
-+ GNU Classpath is free software; you can redistribute it and/or modify
-+ it under the terms of the GNU General Public License as published by
-+ the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-+
-+ GNU Classpath 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 for more details.
-+
-+ You should have received a copy of the GNU General Public License
-+ along with GNU Classpath; see the file COPYING. If not, write to the
-+ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-+ 02110-1301 USA.
-+
-+ Linking this library statically or dynamically with other modules is
-+ making a combined work based on this library. Thus, the terms and
-+ conditions of the GNU General Public License cover the whole
-+ combination.
-+
-+ As a special exception, the copyright holders of this library give you
-+ permission to link this library with independent modules to produce an
-+ executable, regardless of the license terms of these independent
-+ modules, and to copy and distribute the resulting executable under
-+ terms of your choice, provided that you also meet, for each linked
-+ independent module, the terms and conditions of the license of that
-+ module. An independent module is a module which is not derived from
-+ or based on this library. If you modify this library, you may extend
-+ this exception to your version of the library, but you are not
-+ obligated to do so. If you do not wish to do so, delete this
-+ exception statement from your version. */
-+
-+package com.sun.image.codec.jpeg;
-+
-+import java.io.OutputStream;
-+import java.io.IOException;
-+
-+import java.awt.image.BufferedImage;
-+import java.awt.image.ColorModel;
-+import java.awt.image.Raster;
-+
-+public interface JPEGImageEncoder {
-+ /**
-+ * This is a factory method for creating JPEGEncodeParam objects. The
-+ * returned object will do a credible job of encoding the given
-+ * BufferedImage.
-+ *
-+ * @param bi
-+ * @return
-+ * @throws ImageFormatException
-+ */
-+ public JPEGEncodeParam getDefaultJPEGEncodeParam(BufferedImage bi)
-+ throws ImageFormatException;
-+
-+ /**
-+ * This is a factory method for creating JPEGEncodeParam objects. It is the
-+ * users responsibility to match the colorID with the given number of bands,
-+ * which should match the data being encoded. Failure to do so may lead to
-+ * poor compression and/or poor image quality. If you don't understand much
-+ * about JPEG it is strongly recommended that you stick to the BufferedImage
-+ * interface.
-+ *
-+ * @param numBands
-+ * the number of bands that will be encoded (max of four).
-+ * @param colorID
-+ * the COLOR_ID for the encoded data. This is used to set
-+ * reasonable defaults in the parameter object. This must match
-+ * the number of bands given.
-+ * @return
-+ * @throws ImageFormatException
-+ */
-+ public JPEGEncodeParam getDefaultJPEGEncodeParam(int numBands, int colorID)
-+ throws ImageFormatException;
-+
-+ /**
-+ * This is a factory method for creating a JPEGEncodeParam from a
-+ * JPEGDecodeParam. This will return a new JPEGEncodeParam object that is
-+ * initialized from the JPEGDecodeParam object. All major pieces of
-+ * information will be initialized from the DecodeParam (Markers, Tables,
-+ * mappings).
-+ *
-+ * @param d
-+ * The JPEGDecodeParam object to copy.
-+ * @return
-+ * @throws ImageFormatException
-+ */
-+ public JPEGEncodeParam getDefaultJPEGEncodeParam(JPEGDecodeParam d)
-+ throws ImageFormatException;
-+
-+ /**
-+ * This is a factory method for creating JPEGEncodeParam objects. It is the
-+ * users responsiblity to match the colorID with the data contained in the
-+ * Raster. Failure to do so may lead to either poor compression or poor
-+ * image quality. If you don't understand much about JPEG it is strongly
-+ * reccomended that you stick to the BufferedImage interfaces.
-+ *
-+ * @param ras
-+ * @param colorID
-+ * @return
-+ * @throws ImageFormatException
-+ */
-+ public JPEGEncodeParam getDefaultJPEGEncodeParam(Raster ras, int colorID)
-+ throws ImageFormatException;
-+
-+ public JPEGEncodeParam getJPEGEncodeParam() throws ImageFormatException;
-+
-+ /**
-+ * Set the JPEGEncodeParam object that is to be used for future encoding
-+ * operations. 'p' is copied so changes will not be tracked, unless you call
-+ * this method again.
-+ *
-+ * @param p
-+ * The JPEGEncodeParam object to use for future encodings.
-+ */
-+ public void setJPEGEncodeParam(JPEGEncodeParam p);
-+
-+ /**
-+ * Return the stream the Encoder is current associated with.
-+ *
-+ * @return
-+ */
-+ public OutputStream getOutputStream();
-+
-+ /**
-+ * Encode a BufferedImage as a JPEG data stream. Note, some color
-+ * conversions may takes place. The jep's encoded COLOR_ID should match the
-+ * value returned by getDefaultColorID when given the BufferedImage's
-+ * ColorModel. This call also sets the current JPEGEncodeParam object. The
-+ * given JPEGEncodeParam object will be used for this and future encodings.
-+ * If p is null then a new JPEGEncodeParam object will be created by calling
-+ * getDefaultJPEGEncodeParam with bi.
-+ *
-+ * @param bi
-+ * The BufferedImage to encode.
-+ * @param p
-+ * The JPEGEncodeParam object used to control the encoding.
-+ * @throws IOException
-+ * @throws ImageFormatException
-+ */
-+ public void encode(BufferedImage bi, JPEGEncodeParam p) throws IOException,
-+ ImageFormatException;
-+
-+ /**
-+ * Encode a Raster as a JPEG data stream. Note that no color conversion
-+ * takes place. It is required that you match the Raster to the encoded
-+ * COLOR_ID contained in the current JPEGEncodeParam object. If no
-+ * JPEGEncodeParam object has been provided yet a new JPEGEncodeParam object
-+ * will be created by calling getDefaultJPEGEncodeParam with ras and
-+ * COLOR_ID_UNKNOWN.
-+ *
-+ * @param ras
-+ * The Raster to encode.
-+ * @throws IOException
-+ * @throws ImageFormatException
-+ */
-+ public void encode(Raster ras) throws IOException, ImageFormatException;
-+
-+ /**
-+ * Encode a BufferedImage as a JPEG data stream. Note, some color
-+ * conversions may takes place. The current JPEGEncodeParam's encoded
-+ * COLOR_ID should match the value returned by getDefaultColorID when given
-+ * the BufferedImage's ColorModel. If no JPEGEncodeParam object has been
-+ * provided yet a default one will be created by calling
-+ * getDefaultJPEGEncodeParam with bi.
-+ *
-+ * @param bi
-+ * The BufferedImage to encode.
-+ * @throws IOException
-+ * @throws ImageFormatException
-+ */
-+ public void encode(BufferedImage bi) throws IOException,
-+ ImageFormatException;
-+
-+ /**
-+ * Encode a Raster as a JPEG data stream. Note that no color conversion
-+ * takes place. It is required that you match the Raster to the encoded
-+ * COLOR_ID contained in the JPEGEncodeParam object. If p is null a new
-+ * JPEGEncodeParam object will be created by calling
-+ * getDefaultJPEGEncodeParam with ras and COLOR_ID_UNKNOWN.
-+ *
-+ * @param ras
-+ * The Raster to encode.
-+ * @param p
-+ * The JPEGEncodeParam object used to control the encoding.
-+ * @throws IOException
-+ * @throws ImageFormatException
-+ */
-+ public void encode(Raster ras, JPEGEncodeParam p) throws IOException,
-+ ImageFormatException;
-+
-+ /**
-+ * Returns the 'default' encoded COLOR_ID for a given ColorModel. This
-+ * method is not needed in the simple case of encoding Buffered Images (the
-+ * library will figure things out for you). It can be useful for encoding
-+ * Rasters. To determine what needs to be done to the image prior to
-+ * encoding.
-+ *
-+ * @param cm
-+ * The ColorModel to map to an jpeg encoded COLOR_ID.
-+ * @return
-+ */
-+ public int getDefaultColorId(ColorModel cm);
-+}
---- jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGQTable.java 1969-12-31 19:00:00.000000000 -0500
-+++ jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGQTable.java 2011-07-07 09:19:34.000000000 -0400
-@@ -0,0 +1,118 @@
-+/* JPEGQTable.java --
-+ Copyright (C) 2011 Red Hat
-+ Copyright (C) 2007 Free Software Foundation, Inc.
-+ Copyright (C) 2007 Matthew Flaschen
-+
-+ This file is part of GNU Classpath.
-+
-+ GNU Classpath is free software; you can redistribute it and/or modify
-+ it under the terms of the GNU General Public License as published by
-+ the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-+
-+ GNU Classpath 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 for more details.
-+
-+ You should have received a copy of the GNU General Public License
-+ along with GNU Classpath; see the file COPYING. If not, write to the
-+ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-+ 02110-1301 USA.
-+
-+ Linking this library statically or dynamically with other modules is
-+ making a combined work based on this library. Thus, the terms and
-+ conditions of the GNU General Public License cover the whole
-+ combination.
-+
-+ As a special exception, the copyright holders of this library give you
-+ permission to link this library with independent modules to produce an
-+ executable, regardless of the license terms of these independent
-+ modules, and to copy and distribute the resulting executable under
-+ terms of your choice, provided that you also meet, for each linked
-+ independent module, the terms and conditions of the license of that
-+ module. An independent module is a module which is not derived from
-+ or based on this library. If you modify this library, you may extend
-+ this exception to your version of the library, but you are not
-+ obligated to do so. If you do not wish to do so, delete this
-+ exception statement from your version. */
-+
-+package com.sun.image.codec.jpeg;
-+
-+import java.util.Arrays;
-+
-+/**
-+ * Class to encapsulate the JPEG quantization tables.
-+ *
-+ * Note: The tables K1Luminance, K1Div2Luminance, K2Chrominance,
-+ * K2Div2Chrominance is an instance of the superclass.
-+ *
-+ * @author Andrew Su (asu@redhat.com)
-+ *
-+ */
-+public class JPEGQTable {
-+
-+ /**
-+ * Luminance quantization table (in zig-zag order).
-+ */
-+ public static final JPEGQTable StdLuminance;
-+
-+ /**
-+ * Chromninance quantization table (in zig-zag order).
-+ */
-+ public static final JPEGQTable StdChrominance;
-+
-+ static {
-+ /* table for luminance values in zig-zag order */
-+ int[] table1 = { 16, 11, 12, 14, 12, 10, 16, 14, 13, 14, 18, 17, 16,
-+ 19, 24, 40, 26, 24, 22, 22, 24, 49, 35, 37, 29, 40, 58, 51, 61,
-+ 60, 57, 51, 56, 55, 64, 72, 92, 78, 64, 68, 87, 69, 55, 56, 80,
-+ 109, 81, 87, 95, 98, 103, 104, 103, 62, 77, 113, 121, 112, 100,
-+ 120, 92, 101, 103, 99 };
-+
-+ StdLuminance = new JPEGQTable(table1);
-+
-+ /* table for chrominance values in zig-zag order */
-+ int[] table2 = { 17, 18, 18, 24, 21, 24, 47, 26, 26, 47, 99, 66, 56,
-+ 66, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
-+ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
-+ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
-+ 99, 99, 99 };
-+ StdChrominance = new JPEGQTable(table2);
-+ }
-+
-+ private int[] table;
-+
-+ /**
-+ * Constructs an quantization table from the array that was passed. The
-+ * coefficients must be in zig-zag order. The array must be of length 64.
-+ * The table will be copied.
-+ *
-+ * @param table
-+ * the quantization table, as an int array.
-+ * @throws IllegalArgumentException
-+ * if table is null or table.length is not equal to 64.
-+ */
-+ public JPEGQTable(int[] table) {
-+ /* Table must be 8x8 thus 64 entries */
-+ if (table == null || table.length != 64) {
-+ throw new IllegalArgumentException("Not a valid table.");
-+ }
-+ this.table = Arrays.copyOf(table, table.length);
-+ }
-+
-+ public int[] getTable() {
-+ return Arrays.copyOf(table, table.length);
-+ }
-+
-+ public JPEGQTable getScaledInstance(float scaleFactor, boolean forceBaseline) {
-+ int limit = (forceBaseline) ? 255 : 32767;
-+ int[] newTable = new int[table.length];
-+ for (int i = 0; i < table.length; i++) {
-+ int newValue = Math.round(table[i] * scaleFactor);
-+ newTable[i] = (newValue < 1) ? 1 : (newValue > limit) ? limit : newValue;
-+ }
-+ return new JPEGQTable(newTable);
-+ }
-+
-+}
---- jdk/src/share/classes/com/sun/image/codec/jpeg/TruncatedFileException.java 1969-12-31 19:00:00.000000000 -0500
-+++ jdk/src/share/classes/com/sun/image/codec/jpeg/TruncatedFileException.java 2011-07-07 09:19:34.000000000 -0400
-@@ -0,0 +1,92 @@
-+/* TruncatedFileException.java
-+ Copyright (C) 2007 Matthew Flaschen
-+ Copyright (C) 2011 Red Hat, Inc.
-+
-+ This file is part of IcedTea
-+
-+ IcedTea is free software; you can redistribute it and/or modify
-+ it under the terms of the GNU General Public License as published by
-+ the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-+
-+ IcedTea 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 for more details.
-+
-+ You should have received a copy of the GNU General Public License
-+ along with GNU Classpath; see the file COPYING. If not, write to the
-+ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-+ 02110-1301 USA.
-+
-+ Linking this library statically or dynamically with other modules is
-+ making a combined work based on this library. Thus, the terms and
-+ conditions of the GNU General Public License cover the whole
-+ combination.
-+
-+ As a special exception, the copyright holders of this library give you
-+ permission to link this library with independent modules to produce an
-+ executable, regardless of the license terms of these independent
-+ modules, and to copy and distribute the resulting executable under
-+ terms of your choice, provided that you also meet, for each linked
-+ independent module, the terms and conditions of the license of that
-+ module. An independent module is a module which is not derived from
-+ or based on this library. If you modify this library, you may extend
-+ this exception to your version of the library, but you are not
-+ obligated to do so. If you do not wish to do so, delete this
-+ exception statement from your version. */
-+
-+package com.sun.image.codec.jpeg;
-+
-+import java.awt.image.BufferedImage;
-+import java.awt.image.Raster;
-+
-+public class TruncatedFileException extends RuntimeException {
-+
-+ private final BufferedImage bufferedImage;
-+
-+ private final Raster raster;
-+
-+ /**
-+ * Creates a new exception with the specified {@link BufferedImage}
-+ * containing the partially read image data.
-+ *
-+ * @param bufferedImage the partially decoded image (may be null).
-+ */
-+ public TruncatedFileException(BufferedImage bufferedImage) {
-+ this.bufferedImage = bufferedImage;
-+ this.raster = null;
-+ }
-+
-+ /**
-+ * Creates a new exception with the specified {@link Raster}
-+ * containing the partially read image data.
-+ *
-+ * @param raster the partially decoded image (may be null).
-+ */
-+ public TruncatedFileException(Raster raster) {
-+ this.raster = raster;
-+ this.bufferedImage = null;
-+ }
-+
-+ /**
-+ * Returns the partially read data as a {@link BufferedImage}
-+ * if available, or {@code null} if not.
-+ *
-+ * @return the partially read data.
-+ */
-+ public BufferedImage getBufferedImage() {
-+ return bufferedImage;
-+ }
-+
-+ /**
-+ * Returns the partially read data as a {@link Raster}
-+ * if available, or {@code null} if not.
-+ *
-+ * @return the partially read data.
-+ */
-+ public Raster getRaster() {
-+ return raster;
-+ }
-+
-+}
---- jdk/src/share/classes/sun/awt/image/codec/JPEGImageDecoderImpl.java 1969-12-31 19:00:00.000000000 -0500
-+++ jdk/src/share/classes/sun/awt/image/codec/JPEGImageDecoderImpl.java 2011-07-07 09:19:34.000000000 -0400
-@@ -0,0 +1,108 @@
-+/* JPEGImageDecoderImpl.java -- JPEG decoder implementation
-+Copyright (C) 2011 Red Hat
-+
-+This program is free software; you can redistribute it and/or modify
-+it under the terms of the GNU General Public License as published by
-+the Free Software Foundation; either version 2 of the License, or
-+(at your option) any later version.
-+
-+This program 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 for more details.
-+
-+You should have received a copy of the GNU General Public License
-+along with this program; if not, write to the Free Software
-+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+ */
-+package sun.awt.image.codec;
-+
-+import java.awt.image.BufferedImage;
-+import java.awt.image.Raster;
-+import java.io.IOException;
-+import java.io.InputStream;
-+import java.util.Iterator;
-+
-+import javax.imageio.ImageIO;
-+import javax.imageio.ImageReader;
-+import javax.imageio.plugins.jpeg.JPEGHuffmanTable;
-+import javax.imageio.plugins.jpeg.JPEGImageReadParam;
-+import javax.imageio.plugins.jpeg.JPEGQTable;
-+import javax.imageio.stream.MemoryCacheImageInputStream;
-+
-+import com.sun.image.codec.jpeg.ImageFormatException;
-+import com.sun.image.codec.jpeg.JPEGDecodeParam;
-+import com.sun.image.codec.jpeg.JPEGImageDecoder;
-+import com.sun.imageio.plugins.jpeg.JPEGImageReader;
-+
-+/**
-+ * This class provides the implementation for a JPEG decoder.
-+ */
-+public class JPEGImageDecoderImpl implements JPEGImageDecoder {
-+ private static final String JPGMime = "image/jpeg";
-+
-+ private JPEGImageReader JPGReader;
-+ private InputStream in;
-+ private JPEGDecodeParam param;
-+
-+ public JPEGImageDecoderImpl(InputStream in) {
-+ this(in, null);
-+ }
-+
-+ public JPEGImageDecoderImpl(InputStream in, JPEGDecodeParam param) {
-+ this.in = in;
-+ setJPEGDecodeParam(param);
-+
-+ Iterator<ImageReader> JPGReaderIter = ImageIO
-+ .getImageReadersByMIMEType(JPGMime);
-+ if (JPGReaderIter.hasNext()) {
-+ JPGReader = (JPEGImageReader) JPGReaderIter.next();
-+ }
-+
-+ JPGReader.setInput(new MemoryCacheImageInputStream(in));
-+ }
-+
-+ public BufferedImage decodeAsBufferedImage() throws IOException,
-+ ImageFormatException {
-+ JPEGImageReadParam irp = null;
-+
-+ if (param != null) {
-+ // We should do more than this, but it's a start.
-+ JPEGQTable[] qTables = new JPEGQTable[4];
-+ JPEGHuffmanTable[] DCHuffmanTables = new JPEGHuffmanTable[4];
-+ JPEGHuffmanTable[] ACHuffmanTables = new JPEGHuffmanTable[4];
-+
-+ for (int i = 0; i < 4; i++) {
-+ qTables[i] = new JPEGQTable(param.getQTable(i).getTable());
-+ com.sun.image.codec.jpeg.JPEGHuffmanTable dcHuffman = param.getDCHuffmanTable(i);
-+ com.sun.image.codec.jpeg.JPEGHuffmanTable acHuffman = param.getACHuffmanTable(i);
-+ DCHuffmanTables[i] = new JPEGHuffmanTable(dcHuffman.getLengths(),
-+ dcHuffman.getSymbols());
-+ ACHuffmanTables[i] = new JPEGHuffmanTable(acHuffman.getLengths(),
-+ dcHuffman.getSymbols());
-+ }
-+
-+ irp = new JPEGImageReadParam();
-+ irp.setDecodeTables(qTables, DCHuffmanTables, ACHuffmanTables);
-+ }
-+
-+ return JPGReader.read(0, irp);
-+ }
-+
-+ public Raster decodeAsRaster() throws IOException, ImageFormatException {
-+ return JPGReader.readRaster(0, null);
-+ }
-+
-+ public InputStream getInputStream() {
-+ return in;
-+ }
-+
-+ public JPEGDecodeParam getJPEGDecodeParam() {
-+ if (param == null) return null;
-+ return (JPEGDecodeParam) param.clone();
-+ }
-+
-+ public void setJPEGDecodeParam(JPEGDecodeParam jdp) {
-+ param = jdp;
-+ }
-+}
---- jdk/src/share/classes/sun/awt/image/codec/JPEGImageEncoderImpl.java 1969-12-31 19:00:00.000000000 -0500
-+++ jdk/src/share/classes/sun/awt/image/codec/JPEGImageEncoderImpl.java 2011-07-07 09:19:34.000000000 -0400
-@@ -0,0 +1,183 @@
-+/* JPEGImageEncoder.java -- JPEG encoder implementation
-+Copyright (C) 2011 Red Hat
-+
-+This program is free software; you can redistribute it and/or modify
-+it under the terms of the GNU General Public License as published by
-+the Free Software Foundation; either version 2 of the License, or
-+(at your option) any later version.
-+
-+This program 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 for more details.
-+
-+You should have received a copy of the GNU General Public License
-+along with this program; if not, write to the Free Software
-+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+ */
-+package sun.awt.image.codec;
-+
-+import java.awt.color.ColorSpace;
-+import java.awt.image.BufferedImage;
-+import java.awt.image.ColorModel;
-+import java.awt.image.Raster;
-+import java.io.IOException;
-+import java.io.OutputStream;
-+import java.util.ArrayList;
-+import java.util.Iterator;
-+
-+import javax.imageio.IIOImage;
-+import javax.imageio.ImageIO;
-+import javax.imageio.ImageWriteParam;
-+import javax.imageio.ImageWriter;
-+import javax.imageio.plugins.jpeg.JPEGImageWriteParam;
-+import javax.imageio.stream.MemoryCacheImageOutputStream;
-+
-+import com.sun.image.codec.jpeg.ImageFormatException;
-+import com.sun.image.codec.jpeg.JPEGCodec;
-+import com.sun.image.codec.jpeg.JPEGDecodeParam;
-+import com.sun.image.codec.jpeg.JPEGEncodeParam;
-+import com.sun.image.codec.jpeg.JPEGImageEncoder;
-+import com.sun.imageio.plugins.jpeg.JPEG;
-+
-+/**
-+ * This class provides the implementation for encoding JPEG images.
-+ *
-+ */
-+public class JPEGImageEncoderImpl implements JPEGImageEncoder {
-+ private static final String JPGMime = "image/jpeg";
-+
-+ private ImageWriter JPGWriter;
-+ private JPEGEncodeParam param;
-+ private OutputStream out;
-+
-+ public JPEGImageEncoderImpl(OutputStream os) {
-+ this(os, null);
-+ }
-+
-+ public JPEGImageEncoderImpl(OutputStream out, JPEGEncodeParam newParam) {
-+ this.out = out;
-+ setJPEGEncodeParam(newParam);
-+
-+ Iterator<ImageWriter> JPGWriterIter = ImageIO
-+ .getImageWritersByMIMEType(JPGMime);
-+ if (JPGWriterIter.hasNext()) {
-+ JPGWriter = JPGWriterIter.next();
-+ }
-+
-+ JPGWriter.setOutput(new MemoryCacheImageOutputStream(out));
-+ }
-+
-+ public JPEGEncodeParam getDefaultJPEGEncodeParam(BufferedImage bi)
-+ throws ImageFormatException {
-+ return JPEGCodec.getDefaultJPEGEncodeParam(bi);
-+ }
-+
-+ public JPEGEncodeParam getDefaultJPEGEncodeParam(int numBands, int colorID)
-+ throws ImageFormatException {
-+ return JPEGCodec.getDefaultJPEGEncodeParam(numBands, colorID);
-+ }
-+
-+ public JPEGEncodeParam getDefaultJPEGEncodeParam(JPEGDecodeParam d)
-+ throws ImageFormatException {
-+ return JPEGCodec.getDefaultJPEGEncodeParam(d);
-+ }
-+
-+ public JPEGEncodeParam getDefaultJPEGEncodeParam(Raster ras, int colorID)
-+ throws ImageFormatException {
-+ return JPEGCodec.getDefaultJPEGEncodeParam(ras, colorID);
-+ }
-+
-+ public JPEGEncodeParam getJPEGEncodeParam() throws ImageFormatException {
-+ if (param == null)
-+ return null;
-+ return (JPEGEncodeParam) param.clone();
-+ }
-+
-+ public void setJPEGEncodeParam(JPEGEncodeParam p) {
-+ param = p;
-+ }
-+
-+ public OutputStream getOutputStream() {
-+ return out;
-+ }
-+
-+ private void encode(IIOImage img) throws IOException, ImageFormatException {
-+ if (JPGWriter == null)
-+ throw new ImageFormatException(
-+ "JPEG writer code not implemented in ImageIO");
-+
-+ JPEGImageWriteParam jiwp = new JPEGImageWriteParam(null);
-+ ;
-+ jiwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
-+ if (param != null && param instanceof JPEGParam) {
-+ JPEGParam jp = (JPEGParam) param;
-+ jiwp.setCompressionQuality(jp.getQuality());
-+ } else {
-+ jiwp.setCompressionQuality(JPEG.DEFAULT_QUALITY);
-+ }
-+
-+ JPGWriter.write(null, img, jiwp);
-+ }
-+
-+ public void encode(BufferedImage bi, JPEGEncodeParam writeParam)
-+ throws IOException, ImageFormatException {
-+ setJPEGEncodeParam(writeParam);
-+ encode(new IIOImage(bi, new ArrayList<BufferedImage>(), null));
-+ }
-+
-+ public void encode(Raster rs, JPEGEncodeParam writeParam)
-+ throws IOException, ImageFormatException {
-+ setJPEGEncodeParam(writeParam);
-+ encode(new IIOImage(rs, new ArrayList<BufferedImage>(), null));
-+ }
-+
-+ public void encode(BufferedImage bi) throws IOException,
-+ ImageFormatException {
-+ encode(bi, null);
-+ }
-+
-+ public void encode(Raster rs) throws IOException, ImageFormatException {
-+ encode(rs, null);
-+ }
-+
-+ @Override
-+ public int getDefaultColorId(ColorModel cm) {
-+ ColorSpace cs = cm.getColorSpace();
-+ int type = cs.getType();
-+ int id = -1;
-+ switch (type) {
-+ case ColorSpace.TYPE_GRAY:
-+ id = JPEGEncodeParam.COLOR_ID_GRAY;
-+ break;
-+
-+ case ColorSpace.TYPE_RGB:
-+ id = cm.hasAlpha() ? JPEGEncodeParam.COLOR_ID_RGBA
-+ : JPEGEncodeParam.COLOR_ID_RGB;
-+
-+ case ColorSpace.TYPE_YCbCr:
-+ try {
-+ if (cs == ColorSpace.getInstance(ColorSpace.CS_PYCC)) {
-+ id = cm.hasAlpha() ? JPEGEncodeParam.COLOR_ID_PYCCA
-+ : JPEGEncodeParam.COLOR_ID_PYCC;
-+ }
-+ } catch (IllegalArgumentException e) {
-+ /* We know it isn't PYCC type, nothing to handle */
-+ }
-+ if (id == -1) {
-+ id = cm.hasAlpha() ? JPEGEncodeParam.COLOR_ID_YCbCrA
-+ : JPEGEncodeParam.COLOR_ID_YCbCr;
-+ }
-+ break;
-+
-+ case ColorSpace.TYPE_CMYK:
-+ id = JPEGEncodeParam.COLOR_ID_CMYK;
-+ break;
-+
-+ default:
-+ id = JPEGEncodeParam.COLOR_ID_UNKNOWN;
-+ }
-+
-+ return id;
-+ }
-+}
---- jdk/src/share/classes/sun/awt/image/codec/JPEGParam.java 1969-12-31 19:00:00.000000000 -0500
-+++ jdk/src/share/classes/sun/awt/image/codec/JPEGParam.java 2011-07-07 09:19:34.000000000 -0400
-@@ -0,0 +1,750 @@
-+/* JPEGParam.java -- keeps track of encode and decode parameters for JPEG.
-+ * Copyright (C) 2011 Red Hat
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program 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 for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+ */
-+package sun.awt.image.codec;
-+
-+import java.util.Arrays;
-+
-+import com.sun.image.codec.jpeg.JPEGDecodeParam;
-+import com.sun.image.codec.jpeg.JPEGEncodeParam;
-+import com.sun.image.codec.jpeg.JPEGHuffmanTable;
-+import com.sun.image.codec.jpeg.JPEGQTable;
-+import com.sun.imageio.plugins.jpeg.JPEG;
-+
-+/**
-+ * This class encapsulates the information about encoding and decoding the JPEG
-+ * image.
-+ *
-+ * @author Andrew Su (asu@redhat.com)
-+ *
-+ */
-+public class JPEGParam implements JPEGEncodeParam {
-+ /*
-+ * NOTE: bands mean the same thing as components, trying to keep it
-+ * Consistent with the documentation
-+ *
-+ * NOTE: subsampling is not done implementing.
-+ */
-+
-+ private float quality = JPEG.DEFAULT_QUALITY;
-+ private int colorID = -1;
-+ private int width;
-+ private int height;
-+ private int numBands;
-+ private boolean imageInfoValid = false;
-+ private boolean tableInfoValid = false;
-+ private JPEGQTable[] qTable = new JPEGQTable[NUM_TABLES];
-+ private JPEGHuffmanTable[] acHuffmanTable = new JPEGHuffmanTable[NUM_TABLES];
-+ private JPEGHuffmanTable[] dcHuffmanTable = new JPEGHuffmanTable[NUM_TABLES];
-+
-+ private int restartInterval = 0;
-+ private int[] horizontalSubsampleComponents;
-+ private int[] verticalSubsampleComponents;
-+
-+ /* [marker between 0xE0 to 0xEF minus 0xE0 to get index][data] */
-+ private byte[][][] markers = new byte[16][][];
-+ private byte[][] commentMarker = null;
-+
-+ /* number of components each color id has (color id from JPEGDecodeParam) */
-+ private static int[] components = { 0, 1, 3, 3, 4, 3, 4, 4, 4, 4, 4, 4, };
-+ private int[] qTableComponentMapping;
-+ private int[] acHuffmanComponentMapping;
-+ private int[] dcHuffmanComponentMapping;
-+
-+ /*
-+ * Breakdown for marker bytes
-+ * 5 for name.
-+ * 2 for version.
-+ * 1 for density type.
-+ * 2 for x density.
-+ * 2 for y density.
-+ * 2 for thumbnail.
-+ */
-+ private byte APP0_MARKER_NUM_BYTES = 14;
-+
-+ public JPEGParam(JPEGEncodeParam param) {
-+ this((JPEGDecodeParam) param);
-+ }
-+
-+ public JPEGParam(JPEGDecodeParam param) {
-+ this(param.getEncodedColorID(), param.getNumComponents());
-+
-+ setTableInfoValid(param.isTableInfoValid());
-+ setImageInfoValid(param.isImageInfoValid());
-+ setRestartInterval(param.getRestartInterval());
-+
-+ // Copy the Q tables and Huffman tables.
-+ for (int i = 0; i < NUM_TABLES; i++) {
-+ qTable[i] = param.getQTable(i);
-+ acHuffmanTable[i] = param.getACHuffmanTable(i);
-+ dcHuffmanTable[i] = param.getDCHuffmanTable(i);
-+ }
-+
-+ // Next we want to copy the component mappings.
-+ for (int i = 0; i < getNumComponents(); i++) {
-+ setQTableComponentMapping(i, param.getQTableComponentMapping(i));
-+ setACHuffmanComponentMapping(i,
-+ param.getACHuffmanComponentMapping(i));
-+ setDCHuffmanComponentMapping(i,
-+ param.getDCHuffmanComponentMapping(i));
-+ }
-+
-+ // Copy all the marker data.
-+ for (int i = APP0_MARKER; i < APPF_MARKER; i++) {
-+ byte[][] markerData = param.getMarkerData(i);
-+ byte[][] copyMarkerData = null;
-+ if (markerData != null) {
-+ copyMarkerData = new byte[markerData.length][];
-+ for (int j = 0; j < markerData.length; j++) {
-+ copyMarkerData[j] = Arrays.copyOf(markerData[j],
-+ markerData[j].length);
-+ }
-+ }
-+ setMarkerData(i, copyMarkerData);
-+ }
-+
-+ byte[][] commentData = param.getMarkerData(COMMENT_MARKER);
-+ byte[][] copyCommentData = null;
-+ if (commentData != null) {
-+ copyCommentData = new byte[commentData.length][];
-+ for (int i = 0; i < commentData.length; i++) {
-+ copyCommentData[i] = Arrays.copyOf(commentData[i],
-+ commentData[i].length);
-+ }
-+ setMarkerData(COMMENT_MARKER, copyCommentData);
-+ }
-+ }
-+
-+ public JPEGParam(int colorID) {
-+ this(colorID, components[colorID]);
-+ }
-+
-+ public JPEGParam(int colorID, int numBands) {
-+ // We were given an invalid color id, or the number of bands given to us
-+ // did not match requirements.
-+ if (colorID < 0
-+ || colorID >= JPEGDecodeParam.NUM_COLOR_ID
-+ || (colorID != COLOR_ID_UNKNOWN && numBands != components[colorID])) {
-+ throw new IllegalArgumentException();
-+ }
-+ this.colorID = colorID;
-+ this.numBands = numBands;
-+
-+ initialize();
-+ }
-+
-+ private void initialize() {
-+
-+ qTable[0] = JPEGQTable.StdLuminance;
-+ qTable[1] = JPEGQTable.StdChrominance;
-+
-+ acHuffmanTable[0] = JPEGHuffmanTable.StdACLuminance;
-+ acHuffmanTable[1] = JPEGHuffmanTable.StdACChrominance;
-+
-+ dcHuffmanTable[0] = JPEGHuffmanTable.StdDCLuminance;
-+ dcHuffmanTable[1] = JPEGHuffmanTable.StdDCChrominance;
-+
-+ qTableComponentMapping = new int[getNumComponents()];
-+ acHuffmanComponentMapping = new int[getNumComponents()];
-+ dcHuffmanComponentMapping = new int[getNumComponents()];
-+
-+ horizontalSubsampleComponents = new int[getNumComponents()];
-+ verticalSubsampleComponents = new int[getNumComponents()];
-+
-+ /*
-+ * we can just set these to true since they are using default values
-+ * right now
-+ */
-+ setTableInfoValid(true);
-+ setImageInfoValid(true);
-+
-+ setMarkerData(APP0_MARKER,
-+ arrayAdd(getMarkerData(APP0_MARKER), createAPP0MarkerData()));
-+
-+ }
-+
-+ private byte[] createAPP0MarkerData() {
-+ byte[] data = null;
-+ // Create JFIF APP0 Marker if compatible.
-+ // By compatible, it must be one of the following cases.
-+ // Reference:
-+ // http://www.jpeg.org/public/jfif.pdf
-+ // http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/JFIF.html
-+ switch (colorID) {
-+ case COLOR_ID_UNKNOWN:
-+ case COLOR_ID_GRAY:
-+ case COLOR_ID_RGB:
-+ case COLOR_ID_YCbCr:
-+ case COLOR_ID_CMYK:
-+ data = new byte[APP0_MARKER_NUM_BYTES];
-+
-+ // Null terminated JFIF string. [5 bytes]
-+ data[0] = 'J';
-+ data[1] = 'F';
-+ data[2] = 'I';
-+ data[3] = 'F';
-+ data[4] = 0x0;
-+
-+ // Version number [2 bytes]
-+ data[5] = 1;
-+ data[6] = 2;
-+
-+ // Density unit [1 byte]
-+ data[7] = DENSITY_UNIT_ASPECT_RATIO;
-+
-+ // X density [2 bytes]
-+ data[8] = 0;
-+ data[9] = 1;
-+
-+ // Y density [2 bytes]
-+ data[10] = 0;
-+ data[11] = 1;
-+
-+ // Thumbnail [2 bytes]
-+ data[12] = 0;
-+ data[13] = 0;
-+ break;
-+ }
-+
-+ return data;
-+ }
-+
-+ public void setQuality(float quality, boolean forceBaseline) {
-+ if (quality < 0.0) {
-+ quality = 0.00f;
-+ } else if (quality > 1.0) {
-+ quality = 1.0f;
-+ }
-+
-+ this.quality = quality; // preserve original.
-+
-+ /*
-+ * Since quality value of 1 is the lowest compression, we want our
-+ * QTable to contain as much 1s as possible. Since scaling is by a
-+ * factor, we want to invert the selection such that highest quality is
-+ * 0 and lowest is 1.
-+ */
-+ quality = 1 - quality;
-+
-+ // We will scale our QTables to match the quality value given to us.
-+ for (int i = 0; i < NUM_TABLES; i++) {
-+ if (qTable[i] != null) {
-+ qTable[i] = qTable[i].getScaledInstance(quality, forceBaseline);
-+ }
-+ }
-+ }
-+
-+ public Object clone() {
-+ JPEGParam c = new JPEGParam(this);
-+ return c;
-+ }
-+
-+ @Override
-+ public int getWidth() {
-+ return width;
-+ }
-+
-+ @Override
-+ public int getHeight() {
-+ return height;
-+ }
-+
-+ @Override
-+ public int getHorizontalSubsampling(int component) {
-+ if (component < 0 || component > getNumComponents()) {
-+ throw new IllegalArgumentException("Invalid component");
-+ }
-+
-+ return horizontalSubsampleComponents[component];
-+ }
-+
-+ @Override
-+ public int getVerticalSubsampling(int component) {
-+ if (component < 0 || component > getNumComponents()) {
-+ throw new IllegalArgumentException("Invalid component");
-+ }
-+
-+ return verticalSubsampleComponents[component];
-+ }
-+
-+ @Override
-+ public JPEGQTable getQTable(int tableNum) {
-+ if (tableNum < 0 || tableNum > NUM_TABLES)
-+ throw new IllegalArgumentException("tableNum must be [0-"
-+ + (NUM_TABLES - 1) + "]");
-+ return qTable[tableNum];
-+ }
-+
-+ @Override
-+ public JPEGQTable getQTableForComponent(int component) {
-+ if (component < 0 || component > getNumComponents()) {
-+ throw new IllegalArgumentException("Invalid component");
-+ }
-+
-+ return qTable[qTableComponentMapping[component]];
-+ }
-+
-+ @Override
-+ public JPEGHuffmanTable getDCHuffmanTable(int tableNum) {
-+ if (tableNum < 0 || tableNum > NUM_TABLES)
-+ throw new IllegalArgumentException("tableNum must be [0-"
-+ + (NUM_TABLES - 1) + "]");
-+ return dcHuffmanTable[tableNum];
-+ }
-+
-+ @Override
-+ public JPEGHuffmanTable getDCHuffmanTableForComponent(int component) {
-+ if (component < 0 || component > getNumComponents()) {
-+ throw new IllegalArgumentException("Invalid component");
-+ }
-+
-+ return dcHuffmanTable[dcHuffmanComponentMapping[component]];
-+ }
-+
-+ @Override
-+ public JPEGHuffmanTable getACHuffmanTable(int tableNum) {
-+ if (tableNum < 0 || tableNum > NUM_TABLES)
-+ throw new IllegalArgumentException("tableNum must be [0-"
-+ + (NUM_TABLES - 1) + "]");
-+ return acHuffmanTable[tableNum];
-+ }
-+
-+ @Override
-+ public JPEGHuffmanTable getACHuffmanTableForComponent(int component) {
-+ if (component < 0 || component > getNumComponents()) {
-+ throw new IllegalArgumentException("Invalid component");
-+ }
-+
-+ return acHuffmanTable[acHuffmanComponentMapping[component]];
-+ }
-+
-+ @Override
-+ public int getDCHuffmanComponentMapping(int component) {
-+ if (component < 0 || component > getNumComponents()) {
-+ throw new IllegalArgumentException("Invalid component");
-+ }
-+ return dcHuffmanComponentMapping[component];
-+ }
-+
-+ @Override
-+ public int getACHuffmanComponentMapping(int component) {
-+ if (component < 0 || component > getNumComponents()) {
-+ throw new IllegalArgumentException("Invalid component");
-+ }
-+ return acHuffmanComponentMapping[component];
-+ }
-+
-+ @Override
-+ public int getQTableComponentMapping(int component) {
-+ if (component < 0 || component > getNumComponents()) {
-+ throw new IllegalArgumentException("Invalid component");
-+ }
-+ return qTableComponentMapping[component];
-+ }
-+
-+ @Override
-+ public boolean isImageInfoValid() {
-+ return imageInfoValid;
-+ }
-+
-+ @Override
-+ public boolean isTableInfoValid() {
-+ return tableInfoValid;
-+ }
-+
-+ @Override
-+ public boolean getMarker(int marker) {
-+ byte[][] data = null;
-+ switch (marker) {
-+ case APP0_MARKER:
-+ case APP1_MARKER:
-+ case APP2_MARKER:
-+ case APP3_MARKER:
-+ case APP4_MARKER:
-+ case APP5_MARKER:
-+ case APP6_MARKER:
-+ case APP7_MARKER:
-+ case APP8_MARKER:
-+ case APP9_MARKER:
-+ case APPA_MARKER:
-+ case APPB_MARKER:
-+ case APPC_MARKER:
-+ case APPD_MARKER:
-+ case APPE_MARKER:
-+ case APPF_MARKER:
-+ data = markers[marker - APP0_MARKER];
-+ break;
-+ case COMMENT_MARKER:
-+ data = commentMarker;
-+ break;
-+ default:
-+ throw new IllegalArgumentException("Marker provided is invalid");
-+ }
-+
-+ return data != null && data.length > 0;
-+ }
-+
-+ @Override
-+ public byte[][] getMarkerData(int marker) {
-+ byte[][] data = null;
-+
-+ switch (marker) {
-+ case APP0_MARKER:
-+ case APP1_MARKER:
-+ case APP2_MARKER:
-+ case APP3_MARKER:
-+ case APP4_MARKER:
-+ case APP5_MARKER:
-+ case APP6_MARKER:
-+ case APP7_MARKER:
-+ case APP8_MARKER:
-+ case APP9_MARKER:
-+ case APPA_MARKER:
-+ case APPB_MARKER:
-+ case APPC_MARKER:
-+ case APPD_MARKER:
-+ case APPE_MARKER:
-+ case APPF_MARKER:
-+ data = markers[marker - APP0_MARKER];
-+ break;
-+ case COMMENT_MARKER:
-+ // TODO: Add stuff for comment marker
-+ break;
-+ default:
-+ throw new IllegalArgumentException("Marker provided is invalid");
-+ }
-+ return data;
-+ }
-+
-+ @Override
-+ public int getEncodedColorID() {
-+ return colorID;
-+ }
-+
-+ @Override
-+ public int getNumComponents() {
-+ return numBands;
-+ }
-+
-+ @Override
-+ public int getRestartInterval() {
-+ return restartInterval;
-+ }
-+
-+ @Override
-+ public int getDensityUnit() {
-+ if (!getMarker(APP0_MARKER))
-+ throw new IllegalArgumentException("APP0 Marker not found.");
-+ byte[] data = getValidAPP0Marker();
-+
-+ if (data == null)
-+ throw new IllegalArgumentException("No valid APP0 Marker found");
-+
-+ return data[7];
-+ }
-+
-+ @Override
-+ public int getXDensity() {
-+ if (!getMarker(APP0_MARKER))
-+ throw new IllegalArgumentException("APP0 Marker not found.");
-+ byte[] data = getValidAPP0Marker();
-+
-+ if (data == null)
-+ throw new IllegalArgumentException("No valid APP0 Marker found");
-+
-+ // data[8] is the upper portion of the density value
-+ // data[9] is the lower portion of the density value
-+ int upper = data[8] << 8; // Shift it so we can merge with lower value.
-+ int lower = data[9] & 0xFF; // Keep it in bounds 0 - 256
-+ return upper | lower; // Merge
-+
-+ }
-+
-+ @Override
-+ public int getYDensity() {
-+ if (!getMarker(APP0_MARKER))
-+ throw new IllegalArgumentException("APP0 Marker not found.");
-+ byte[] data = getValidAPP0Marker();
-+
-+ if (data == null)
-+ throw new IllegalArgumentException("No valid APP0 Marker found");
-+
-+ // data[10] is the upper portion of the density value
-+ // data[11] is the lower portion of the density value
-+ int upper = data[10] << 8; // Shift it so we can merge with lower value.
-+ int lower = data[11] & 0xFF;// Keep it in bounds 0 - 256
-+ return upper | lower; // merge
-+ }
-+
-+ @Override
-+ public void setHorizontalSubsampling(int component, int subsample) {
-+ if (component < 0 || component > getNumComponents()) {
-+ throw new IllegalArgumentException("Invalid component");
-+ }
-+
-+ horizontalSubsampleComponents[component] = subsample;
-+ }
-+
-+ @Override
-+ public void setVerticalSubsampling(int component, int subsample) {
-+ if (component < 0 || component > getNumComponents()) {
-+ throw new IllegalArgumentException("Invalid component");
-+ }
-+
-+ verticalSubsampleComponents[component] = subsample;
-+ }
-+
-+ @Override
-+ public void setQTable(int tableNum, JPEGQTable qTable) {
-+ if (tableNum < 0 || tableNum > NUM_TABLES)
-+ throw new IllegalArgumentException("tableNum must be [0-"
-+ + (NUM_TABLES - 1) + "]");
-+
-+ this.qTable[tableNum] = qTable;
-+ }
-+
-+ @Override
-+ public void setDCHuffmanTable(int tableNum, JPEGHuffmanTable huffTable) {
-+ if (tableNum < 0 || tableNum > NUM_TABLES)
-+ throw new IllegalArgumentException("tableNum must be [0-"
-+ + (NUM_TABLES - 1) + "]");
-+
-+ dcHuffmanTable[tableNum] = huffTable;
-+ }
-+
-+ @Override
-+ public void setACHuffmanTable(int tableNum, JPEGHuffmanTable huffTable) {
-+ if (tableNum < 0 || tableNum > NUM_TABLES)
-+ throw new IllegalArgumentException("tableNum must be [0-"
-+ + (NUM_TABLES - 1) + "]");
-+ acHuffmanTable[tableNum] = huffTable;
-+ }
-+
-+ @Override
-+ public void setACHuffmanComponentMapping(int component, int table) {
-+ if (component < 0 || component > getNumComponents()) {
-+ throw new IllegalArgumentException("Invalid component specified.");
-+ } else if (table < 0 || table > NUM_TABLES) {
-+ throw new IllegalArgumentException("Invalid table specified");
-+ }
-+
-+ acHuffmanComponentMapping[component] = table;
-+ }
-+
-+ @Override
-+ public void setDCHuffmanComponentMapping(int component, int table) {
-+ if (component < 0 || component > getNumComponents()) {
-+ throw new IllegalArgumentException("Invalid component specified.");
-+ } else if (table < 0 || table > NUM_TABLES) {
-+ throw new IllegalArgumentException("Invalid table specified");
-+ }
-+
-+ dcHuffmanComponentMapping[component] = table;
-+ }
-+
-+ @Override
-+ public void setQTableComponentMapping(int component, int table) {
-+ if (component < 0 || component > getNumComponents()) {
-+ throw new IllegalArgumentException("Invalid component specified.");
-+ } else if (table < 0 || table > NUM_TABLES) {
-+ throw new IllegalArgumentException("Invalid table specified");
-+ }
-+
-+ qTableComponentMapping[component] = table;
-+ }
-+
-+ @Override
-+ public void setImageInfoValid(boolean flag) {
-+ imageInfoValid = flag;
-+ }
-+
-+ @Override
-+ public void setTableInfoValid(boolean flag) {
-+ tableInfoValid = flag;
-+ }
-+
-+ @Override
-+ public void setMarkerData(int marker, byte[][] data) {
-+ if (data == null) {
-+ return;
-+ }
-+
-+ switch (marker) {
-+ case APP0_MARKER:
-+ case APP1_MARKER:
-+ case APP2_MARKER:
-+ case APP3_MARKER:
-+ case APP4_MARKER:
-+ case APP5_MARKER:
-+ case APP6_MARKER:
-+ case APP7_MARKER:
-+ case APP8_MARKER:
-+ case APP9_MARKER:
-+ case APPA_MARKER:
-+ case APPB_MARKER:
-+ case APPC_MARKER:
-+ case APPD_MARKER:
-+ case APPE_MARKER:
-+ case APPF_MARKER:
-+ markers[marker - APP0_MARKER] = data;
-+ break;
-+ case COMMENT_MARKER:
-+ commentMarker = data;
-+ break;
-+ default:
-+ throw new IllegalArgumentException("Marker provided is invalid");
-+ }
-+ }
-+
-+ @Override
-+ public void addMarkerData(int marker, byte[] data) {
-+ if (data == null) {
-+ return;
-+ }
-+ switch (marker) {
-+ case APP0_MARKER:
-+ case APP1_MARKER:
-+ case APP2_MARKER:
-+ case APP3_MARKER:
-+ case APP4_MARKER:
-+ case APP5_MARKER:
-+ case APP6_MARKER:
-+ case APP7_MARKER:
-+ case APP8_MARKER:
-+ case APP9_MARKER:
-+ case APPA_MARKER:
-+ case APPB_MARKER:
-+ case APPC_MARKER:
-+ case APPD_MARKER:
-+ case APPE_MARKER:
-+ case APPF_MARKER:
-+ markers[marker - APP0_MARKER] = arrayAdd(markers[marker
-+ - APP0_MARKER], data);
-+ break;
-+ case COMMENT_MARKER:
-+ commentMarker = arrayAdd(commentMarker, data);
-+ break;
-+ default:
-+ throw new IllegalArgumentException("Marker provided is invalid");
-+ }
-+ }
-+
-+ @Override
-+ public void setRestartInterval(int restartInterval) {
-+ this.restartInterval = restartInterval;
-+ }
-+
-+ @Override
-+ public void setDensityUnit(int unit) {
-+ if (unit < 0 || unit > NUM_DENSITY_UNIT) {
-+ throw new IllegalArgumentException("Invalid density unit.");
-+ }
-+
-+ byte[] data = getValidAPP0Marker();
-+ if (data == null) { // We will create one now.
-+ data = createAPP0MarkerData();
-+ // markers[0] = array of APP0_MARKER
-+ markers[0] = arrayAdd(markers[0], data);
-+ }
-+
-+ data[7] = (byte) unit;
-+ }
-+
-+ @Override
-+ public void setXDensity(int density) {
-+ byte[] data = getValidAPP0Marker();
-+ if (data == null) { // We will create one now.
-+ data = createAPP0MarkerData();
-+ // markers[0] = array of APP0_MARKER
-+ markers[0] = arrayAdd(markers[0], data);
-+ }
-+
-+ byte upper = (byte) (density >>> 8 & 0xFF); // unsigned shift to keep it
-+ // positive
-+ byte lower = (byte) (density & 0xFF);
-+ data[8] = upper;
-+ data[9] = lower;
-+ }
-+
-+ @Override
-+ public void setYDensity(int density) {
-+ byte[] data = getValidAPP0Marker();
-+ if (data == null) { // We will create one now.
-+ data = createAPP0MarkerData();
-+ // markers[0] = array of APP0_MARKER
-+ markers[0] = arrayAdd(markers[0], data);
-+ }
-+
-+ byte upper = (byte) (density >>> 8 & 0xFF); // unsigned shift to keep it
-+ // positive
-+ byte lower = (byte) (density & 0xFF);
-+ data[10] = upper;
-+ data[11] = lower;
-+ }
-+
-+ public void setWidth(int width) {
-+ this.width = width;
-+ }
-+
-+ public void setHeight(int height) {
-+ this.height = height;
-+ }
-+
-+ /**
-+ * get the quality value.
-+ *
-+ * @return currently set quality value.
-+ */
-+ public float getQuality() {
-+ return quality;
-+ }
-+
-+ /**
-+ * Appends new data to original array
-+ *
-+ * @param origArr
-+ * @param newArr
-+ * @return
-+ */
-+ private byte[][] arrayAdd(byte[][] origArr, byte[] newArr) {
-+ byte[][] newData;
-+ if (origArr != null) {
-+ newData = Arrays.copyOf(origArr, origArr.length + 1);
-+ newData[origArr.length] = Arrays.copyOf(newArr, newArr.length);
-+ } else {
-+ newData = new byte[1][];
-+ newData[0] = Arrays.copyOf(newArr, newArr.length);
-+ }
-+
-+ return newData;
-+ }
-+
-+ private byte[] getValidAPP0Marker() {
-+ byte[][] app0Markers = getMarkerData(APP0_MARKER);
-+ for (int i = 0; i < app0Markers.length; i++) {
-+ byte[] data = app0Markers[i];
-+ if (data[0] == 'J' && data[1] == 'F' && data[2] == 'I'
-+ && data[3] == 'F' && data[4] == 0x0) {
-+ if (data[5] <= 1) { // version is 1 or below.
-+ // We have a valid JFIF header.
-+ return data;
-+ }
-+ }
-+ }
-+ return null;
-+ }
-+}
diff --git a/java/openjdk6/files/patch-ZoneInfoFile.java b/java/openjdk6/files/patch-ZoneInfoFile.java
deleted file mode 100644
index 4131a2e1b231..000000000000
--- a/java/openjdk6/files/patch-ZoneInfoFile.java
+++ /dev/null
@@ -1,12 +0,0 @@
---- jdk/src/share/classes/sun/util/calendar/ZoneInfoFile.java.orig 2012-05-01 18:59:17.000000000 -0700
-+++ jdk/src/share/classes/sun/util/calendar/ZoneInfoFile.java 2012-05-01 19:02:16.000000000 -0700
-@@ -476,7 +476,8 @@
- static {
- String zi = (String) AccessController.doPrivileged(
- new sun.security.action.GetPropertyAction("java.home"))
-- + File.separator + "lib" + File.separator + "zi";
-+ + File.separator + "lib" + File.separator + "."
-+ + File.separator + "zi";
- try {
- zi = new File(zi).getCanonicalPath();
- } catch (Exception e) {
diff --git a/java/openjdk6/files/patch-hotspot_make_bsd_makefiles_vm.make b/java/openjdk6/files/patch-hotspot_make_bsd_makefiles_vm.make
deleted file mode 100644
index 811281966c7d..000000000000
--- a/java/openjdk6/files/patch-hotspot_make_bsd_makefiles_vm.make
+++ /dev/null
@@ -1,12 +0,0 @@
---- hotspot/make/bsd/makefiles/vm.make.orig 2016-12-30 04:31:06 UTC
-+++ hotspot/make/bsd/makefiles/vm.make
-@@ -119,6 +119,9 @@ LFLAGS += $(EXTRA_CFLAGS)
- # Darwin is non-executable-stack by default
- ifneq ($(OS_VENDOR), Darwin)
- LFLAGS += -Xlinker -z -Xlinker noexecstack
-+ifeq ($(Platform_arch_model), x86_32)
-+LFLAGS += -Xlinker -z -Xlinker notext
-+endif
- endif
-
- LIBS += -lm -pthread
diff --git a/java/openjdk6/files/patch-hotspot_src_share_vm_opto_loopPredicate.cpp b/java/openjdk6/files/patch-hotspot_src_share_vm_opto_loopPredicate.cpp
deleted file mode 100644
index 96c1ad67a1ce..000000000000
--- a/java/openjdk6/files/patch-hotspot_src_share_vm_opto_loopPredicate.cpp
+++ /dev/null
@@ -1,11 +0,0 @@
---- hotspot/src/share/vm/opto/loopPredicate.cpp.orig 2017-05-30 15:21:46 UTC
-+++ hotspot/src/share/vm/opto/loopPredicate.cpp
-@@ -831,7 +831,7 @@ bool PhaseIdealLoop::loop_predication_impl(IdealLoopTr
- Node* idx = cmp->in(1);
- assert(!invar.is_invariant(idx), "index is variant");
- Node* rng = cmp->in(2);
-- assert(rng->Opcode() == Op_LoadRange || _igvn.type(rng)->is_int() >= 0, "must be");
-+ assert(rng->Opcode() == Op_LoadRange, "must be");
- assert(invar.is_invariant(rng), "range must be invariant");
- int scale = 1;
- Node* offset = zero;
diff --git a/java/openjdk6/files/patch-jdk_make_tools_freetypecheck_freetypecheck.c b/java/openjdk6/files/patch-jdk_make_tools_freetypecheck_freetypecheck.c
deleted file mode 100644
index 02cea244c245..000000000000
--- a/java/openjdk6/files/patch-jdk_make_tools_freetypecheck_freetypecheck.c
+++ /dev/null
@@ -1,78 +0,0 @@
---- ./jdk/make/tools/freetypecheck/freetypecheck.c.orig 2016-12-29 23:30:31.000000000 -0500
-+++ ./jdk/make/tools/freetypecheck/freetypecheck.c 2019-05-29 18:29:32.876811000 -0400
-@@ -32,26 +32,65 @@
- #define QUOTEMACRO(x) QUOTEME(x)
- #define QUOTEME(x) #x
-
-+int compare_versions(FT_Int req_major, FT_Int req_minor, FT_Int req_patch,
-+ FT_Int major, FT_Int minor, FT_Int patch) {
-+ if (major > req_major) {
-+ printf("Major version %d greater than required major version %d\n",
-+ major, req_major);
-+ return 0;
-+ }
-+ if (major < req_major) {
-+ printf("Major version %d less than required major version %d\n",
-+ major, req_major);
-+ return -1;
-+ }
-+ printf("Major version %d equal to required major version %d\n",
-+ major, req_major);
-+ if (minor > req_minor) {
-+ printf("Minor version %d greater than required minor version %d\n",
-+ minor, req_minor);
-+ return 0;
-+ }
-+ if (minor < req_minor) {
-+ printf("Minor version %d less than required minor version %d\n",
-+ minor, req_minor);
-+ return -2;
-+ }
-+ printf("Minor version %d equal to required minor version %d\n",
-+ minor, req_minor);
-+ if (patch >= req_patch) {
-+ printf("Patch version %d greater than or equal to required patch version %d\n",
-+ patch, req_patch);
-+ return 0;
-+ }
-+ printf("Patch version %d less than required patch version %d\n",
-+ patch, req_patch);
-+ return -3;
-+}
-+
- int main(int argc, char** argv) {
-- char v[50];
-- FT_Int major, minor, patch;
-+ FT_Int major, minor, patch, req_major, req_minor, req_patch;
- FT_Library library;
-- sprintf(v, "%d.%d.%d", FREETYPE_MAJOR, FREETYPE_MINOR, FREETYPE_PATCH);
-
-- printf("Required version of freetype: %s\n",
-- QUOTEMACRO(REQUIRED_FREETYPE_VERSION));
-+ sscanf(QUOTEMACRO(REQUIRED_FREETYPE_VERSION),
-+ "%d.%d.%d", &req_major, &req_minor, &req_patch);
-+ printf("Required version of freetype: %d.%d.%d\n",
-+ req_major, req_minor, req_patch);
-
-- printf("Detected freetype headers: %s\n", v);
-- if (strcmp(v, QUOTEMACRO(REQUIRED_FREETYPE_VERSION)) < 0) {
-+ printf("Detected freetype headers: %d.%d.%d\n",
-+ FREETYPE_MAJOR, FREETYPE_MINOR, FREETYPE_PATCH);
-+ if (compare_versions(req_major, req_minor, req_patch,
-+ FREETYPE_MAJOR, FREETYPE_MINOR, FREETYPE_PATCH) < 0) {
- printf("Failed: headers are too old.\n");
- }
-
- FT_Init_FreeType(&library);
- FT_Library_Version(library, &major, &minor, &patch);
-- sprintf(v, "%d.%d.%d", major, minor, patch);
-
-- printf("Detected freetype library: %s\n", v);
-- if (strcmp(v, QUOTEMACRO(REQUIRED_FREETYPE_VERSION)) < 0) {
-+ printf("Detected freetype library: %d.%d.%d\n",
-+ major, minor, patch);
-+ if (compare_versions(req_major, req_minor, req_patch,
-+ major, minor, patch) < 0) {
- printf("Failed: too old library.\n");
- }
-
diff --git a/java/openjdk6/files/patch-set b/java/openjdk6/files/patch-set
deleted file mode 100644
index a69c87860e60..000000000000
--- a/java/openjdk6/files/patch-set
+++ /dev/null
@@ -1,15376 +0,0 @@
---- Makefile
-+++ Makefile
-@@ -236,6 +236,18 @@
-
- clean: clobber
-
-+# Add location of iconv headers & libs
-+ifeq ($(PLATFORM), bsd)
-+ ifeq ($(OS_VENDOR), Apple)
-+ OTHER_LDLIBS += -liconv
-+ else
-+ ifneq ($(OS_NAME), netbsd)
-+ CPPFLAGS += %%ICONV_CPPFLAGS%%
-+ OTHER_LDLIBS += %%ICONV_LDFLAGS%%
-+ endif
-+ endif
-+endif
-+
- #
- # Dev builds
- #
---- corba/make/common/Defs-bsd.gmk
-+++ corba/make/common/Defs-bsd.gmk
-@@ -40,18 +40,12 @@
- # Get shared JDK settings
- include $(BUILDDIR)/common/shared/Defs.gmk
-
--# Part of INCREMENTAL_BUILD mechanism.
--# Compiler emits things like: path/file.o: file.h
--# We want something like: relative_path/file.o relative_path/file.d: file.h
--CC_DEPEND = -MM
--CC_DEPEND_FILTER = $(SED) -e 's!$*\.$(OBJECT_SUFFIX)!$(dir $@)& $(dir $@)$*.$(DEPEND_SUFFIX)!g'
--
- ifndef PLATFORM_SRC
- PLATFORM_SRC = $(TOPDIR)/src/solaris
- endif # PLATFORM_SRC
-
- # platform specific include files
--PLATFORM_INCLUDE_NAME = $(PLATFORM)
-+PLATFORM_INCLUDE_NAME = $(OS_NAME)
- PLATFORM_INCLUDE = $(INCLUDEDIR)/$(PLATFORM_INCLUDE_NAME)
-
- # suffix used for make dependencies files.
-@@ -94,6 +88,10 @@
- # as the default.
- CFLAGS_REQUIRED_amd64 += -fno-omit-frame-pointer -D_LITTLE_ENDIAN
- CFLAGS_REQUIRED_i586 += -fno-omit-frame-pointer -D_LITTLE_ENDIAN
-+ifeq ($(OS_VENDOR),Apple)
-+ # 16-byte stack re-alignment on 32-bit Darwin
-+ CFLAGS_REQUIRED_i586 += -mstackrealign
-+endif
- CFLAGS_REQUIRED_ia64 += -fno-omit-frame-pointer -D_LITTLE_ENDIAN
- CFLAGS_REQUIRED_sparcv9 += -m64 -mcpu=v9
- LDFLAGS_COMMON_sparcv9 += -m64 -mcpu=v9
-@@ -176,7 +174,7 @@
- CXXFLAGS_DBG += $(CC_LOWER_OPT)
- endif
-
--CPPFLAGS_COMMON = -D$(ARCH) -DARCH='"$(ARCH)"' -DLINUX $(VERSION_DEFINES) \
-+CPPFLAGS_COMMON = -D$(ARCH) -DARCH='"$(ARCH)"' -D_ALLBSD_SOURCE $(VERSION_DEFINES) \
- -D_LARGEFILE64_SOURCE -D_GNU_SOURCE -D_REENTRANT
-
- ifeq ($(ARCH_DATA_MODEL), 64)
-@@ -186,33 +184,16 @@
- CPPFLAGS_OPT =
- CPPFLAGS_DBG = -DDEBUG
-
--ifdef LIBRARY
-- # Libraries need to locate other libraries at runtime, and you can tell
-- # a library where to look by way of the dynamic runpaths (RPATH or RUNPATH)
-- # buried inside the .so. The $ORIGIN says to look relative to where
-- # the library itself is and it can be followed with relative paths from
-- # that. By default we always look in $ORIGIN, optionally we add relative
-- # paths if the Makefile sets LD_RUNPATH_EXTRAS to those relative paths.
-- # On Bsd we add a flag -z origin, not sure if this is necessary, but
-- # doesn't seem to hurt.
-- # The environment variable LD_LIBRARY_PATH will over-ride these runpaths.
-- # Try: 'readelf -d lib*.so' to see these settings in a library.
-- #
-- LDFLAGS_COMMON += -Xlinker -z -Xlinker origin -Xlinker -rpath -Xlinker \$$ORIGIN
-- LDFLAGS_COMMON += $(LD_RUNPATH_EXTRAS:%=-Xlinker -z -Xlinker origin -Xlinker -rpath -Xlinker \$$ORIGIN/%)
--endif
--
--EXTRA_LIBS += -lc
--
--LDFLAGS_DEFS_OPTION = -Xlinker -z -Xlinker defs
--LDFLAGS_COMMON += $(LDFLAGS_DEFS_OPTION)
--
- #
- # -L paths for finding and -ljava
- #
- LDFLAGS_OPT = -Xlinker -O1
-+
-+ifneq ($(OS_VENDOR), Apple)
- LDFLAGS_COMMON += -L$(LIBDIR)/$(LIBARCH)
- LDFLAGS_COMMON += -Wl,-soname=$(LIB_PREFIX)$(LIBRARY).$(LIBRARY_SUFFIX)
-+endif
-+
-
- #
- # -static-libgcc is a gcc-3 flag to statically link libgcc, gcc-2.9x always
-@@ -243,13 +224,9 @@
- #
- LD_MAPFILE_FLAG = -Xlinker --version-script -Xlinker
-
--#
--# Support for Quantify.
--#
--ifdef QUANTIFY
--QUANTIFY_CMD = quantify
--QUANTIFY_OPTIONS = -cache-dir=/tmp/quantify -always-use-cache-dir=yes
--LINK_PRE_CMD = $(QUANTIFY_CMD) $(QUANTIFY_OPTIONS)
-+# Darwin does not support linker map files.
-+ifeq ($(OS_VENDOR), Apple)
-+LDNOMAP=true
- endif
-
- #
-@@ -278,24 +255,22 @@
- override HAVE_FILIOH = false
- override HAVE_GETHRTIME = false
- override HAVE_GETHRVTIME = false
-+ifeq ($(OS_VENDOR),Apple)
- override HAVE_SIGIGNORE = true
-+endif
- override LEX_LIBRARY = -lfl
- ifeq ($(STATIC_CXX),true)
- override LIBCXX = -Wl,-Bstatic -lstdc++ -lgcc -Wl,-Bdynamic
- else
--override LIBCXX = -lstdc++
-+override LIBCXX = %%CXX_LDFLAGS%%
- endif
- override LIBPOSIX4 =
- override LIBSOCKET =
- override LIBTHREAD =
- override MOOT_PRIORITIES = true
--override NO_INTERRUPTIBLE_IO = true
--override OPENWIN_HOME = /usr/X11R6
--ifeq ($(ARCH), amd64)
--override OPENWIN_LIB = $(OPENWIN_HOME)/lib64
--else
-+override NO_INTERRUPTIBLE_IO = false
-+override OPENWIN_HOME = $(X11_PATH)
- override OPENWIN_LIB = $(OPENWIN_HOME)/lib
--endif
- override OTHER_M4FLAGS = -D__GLIBC__ -DGNU_ASSEMBLER
- override SUN_CMM_SUBDIR =
- override THREADS_FLAG = native
---- corba/make/common/Defs.gmk
-+++ corba/make/common/Defs.gmk
-@@ -53,6 +53,24 @@
-
- _OUTPUTDIR=$(TOPDIR)/build/$(PLATFORM)-$(ARCH)
-
-+ifneq ($(PLATFORM), windows)
-+ ifdef ALT_X11_PATH
-+ X11_PATH = $(ALT_X11_PATH)
-+ else
-+ X11_PATH = /usr/X11R6
-+ endif
-+
-+ ifdef ALT_PACKAGE_PATH
-+ PACKAGE_PATH = $(ALT_PACKAGE_PATH)
-+ else
-+ ifeq ($(PLATFORM), linux)
-+ PACKAGE_PATH = /usr
-+ else
-+ PACKAGE_PATH = /usr/local
-+ endif
-+ endif
-+endif
-+
- #
- # Get platform definitions
- #
-@@ -97,6 +115,9 @@
- LDLIBS_COMMON = -ldl
- endif
-
-+ ifeq ($(PLATFORM), bsd)
-+ LDLIBS_COMMON = -pthread
-+ endif
- endif # PROGRAM
-
- LDLIBS_COMMON += $(EXTRA_LIBS)
---- corba/make/common/Mapfile-vers.gmk
-+++ corba/make/common/Mapfile-vers.gmk
-@@ -77,7 +77,7 @@
- endif # PLATFORM
-
-
--ifeq ($(PLATFORM), linux)
-+ifneq (,$(findstring $(PLATFORM), linux bsd))
-
- ifeq ($(VARIANT), OPT)
- # OPT build MUST have a mapfile?
---- corba/make/common/shared/Compiler-gcc.gmk
-+++ corba/make/common/shared/Compiler-gcc.gmk
-@@ -100,6 +100,24 @@
-
- endif
-
-+ifeq ($(PLATFORM), bsd)
-+ # Settings specific to BSD
-+ CC ?= $(COMPILER_PATH)gcc
-+ CPP ?= $(COMPILER_PATH)gcc -E
-+ CXX ?= $(COMPILER_PATH)g++
-+ REQUIRED_CC_VER = 3.3
-+ REQUIRED_GCC_VER = 3.3.*
-+
-+# Option used to create a shared library
-+ifeq ($(OS_VENDOR), Apple)
-+ SHARED_LIBRARY_FLAG = -dynamiclib
-+else
-+ SHARED_LIBRARY_FLAG = -shared
-+endif
-+
-+ SUN_COMP_VER := $(shell $(CC) --verbose 2>&1 )
-+endif
-+
- ifeq ($(PLATFORM), solaris)
-
- # Settings specific to Solaris
---- corba/make/common/shared/Compiler.gmk
-+++ corba/make/common/shared/Compiler.gmk
-@@ -42,6 +42,11 @@
- override CC_VERSION = gcc
- endif
-
-+# BSD uses GNU compilers by default
-+ifeq ($(PLATFORM), bsd)
-+ override CC_VERSION = gcc
-+endif
-+
- # Get the compiler specific settings
- include $(BUILDDIR)/common/shared/Compiler-$(CC_VERSION).gmk
-
---- corba/make/common/shared/Defs-bsd.gmk
-+++ corba/make/common/shared/Defs-bsd.gmk
-@@ -54,7 +54,7 @@
- endef
-
- # Location on system where jdk installs might be
--USRJDKINSTANCES_PATH =/opt/java
-+USRJDKINSTANCES_PATH =$(PACKAGE_PATH)
-
- # UNIXCOMMAND_PATH: path to where the most common Unix commands are.
- # NOTE: Must end with / so that it could be empty, allowing PATH usage.
-@@ -107,7 +107,7 @@
- ifneq "$(origin ALT_DEVTOOLS_PATH)" "undefined"
- DEVTOOLS_PATH :=$(call PrefixPath,$(ALT_DEVTOOLS_PATH))
- else
-- DEVTOOLS_PATH =/usr/bin/
-+ DEVTOOLS_PATH =$(PACKAGE_PATH)/bin/
- endif
-
- # _BOOTDIR1: First choice for a Bootstrap JDK, previous released JDK.
---- corba/make/common/shared/Defs-utils.gmk
-+++ corba/make/common/shared/Defs-utils.gmk
-@@ -53,6 +53,13 @@
- UTILS_DEVTOOL_PATH=$(USRBIN_PATH)
- endif
-
-+ifeq ($(PLATFORM),bsd)
-+ UTILS_COMMAND_PATH=$(UNIXCOMMAND_PATH)
-+ UTILS_USR_BIN_PATH=$(USRBIN_PATH)
-+ UTILS_CCS_BIN_PATH=$(USRBIN_PATH)
-+ UTILS_DEVTOOL_PATH=$(DEVTOOLS_PATH)
-+endif
-+
- ifeq ($(PLATFORM),solaris)
- UTILS_COMMAND_PATH=$(UNIXCOMMAND_PATH)
- UTILS_USR_BIN_PATH=$(UNIXCOMMAND_PATH)
-@@ -199,3 +206,32 @@
- ECHO = /usr/bin/echo
- endif
-
-+# BSD specific
-+ifeq ($(PLATFORM),bsd)
-+ BASENAME = $(UTILS_USR_BIN_PATH)basename
-+ EGREP = $(UTILS_USR_BIN_PATH)egrep
-+ EXPR = $(UTILS_COMMAND_PATH)expr
-+ FMT = $(UTILS_USR_BIN_PATH)fmt
-+ GREP = $(UTILS_USR_BIN_PATH)grep
-+ GUNZIP = $(UTILS_USR_BIN_PATH)gunzip
-+ ID = $(UTILS_USR_BIN_PATH)id
-+ MSGFMT = $(UTILS_DEVTOOL_PATH)msgfmt
-+ SED = $(UTILS_USR_BIN_PATH)sed
-+ SORT = $(UTILS_USR_BIN_PATH)sort
-+ TEST = $(UTILS_COMMAND_PATH)test
-+ TOUCH = $(UTILS_USR_BIN_PATH)touch
-+ TRUE = $(UTILS_USR_BIN_PATH)true
-+ UNAME = $(UTILS_USR_BIN_PATH)uname
-+ # BSD OS_VENDOR specific
-+ ifeq ($(OS_VENDOR), Apple)
-+ NAWK = $(UTILS_USR_BIN_PATH)awk
-+ UNZIPSFX = $(UTILS_USR_BIN_PATH)unzipsfx
-+ ZIPEXE = $(UTILS_USR_BIN_PATH)zip
-+ else
-+ UNZIP = $(UTILS_DEVTOOL_PATH)unzip
-+ endif
-+ ifneq ($(OS_VENDOR), OpenBSD)
-+ CPIO = $(UTILS_USR_BIN_PATH)cpio
-+ TAR = $(UTILS_USR_BIN_PATH)tar
-+ endif
-+endif
---- corba/make/common/shared/Platform.gmk
-+++ corba/make/common/shared/Platform.gmk
-@@ -261,6 +261,76 @@
- MB_OF_MEMORY := $(shell free -m | fgrep Mem: | sed -e 's@\ \ *@ @g' | cut -d' ' -f2)
- endif
-
-+ifeq ($(SYSTEM_UNAME), FreeBSD)
-+ PLATFORM = bsd
-+ OS_NAME = freebsd
-+ OS_VENDOR = FreeBSD
-+ REQUIRED_OS_VERSION = 6.0
-+endif
-+
-+ifeq ($(SYSTEM_UNAME), Darwin)
-+ PLATFORM = bsd
-+ OS_NAME = darwin
-+ OS_VENDOR = Apple
-+ REQUIRED_OS_VERSION = 8.0
-+endif
-+
-+ifeq ($(SYSTEM_UNAME), NetBSD)
-+ PLATFORM = bsd
-+ OS_NAME = netbsd
-+ OS_VENDOR = NetBSD
-+ REQUIRED_OS_VERSION = 3.0
-+endif
-+
-+ifeq ($(SYSTEM_UNAME), OpenBSD)
-+ PLATFORM = bsd
-+ OS_NAME = openbsd
-+ OS_VENDOR = OpenBSD
-+ REQUIRED_OS_VERSION = 4.2
-+endif
-+
-+# Platform settings specific to BSD
-+ifeq ($(PLATFORM), bsd)
-+ OS_VERSION := $(shell uname -r)
-+ # Arch and OS name/version
-+ mach := $(shell uname -m)
-+ archExpr = case "$(mach)" in \
-+ i[3-9]86) \
-+ echo i586 \
-+ ;; \
-+ *) \
-+ echo $(mach) \
-+ ;; \
-+ esac
-+ ARCH := $(shell $(archExpr) )
-+ ARCH_FAMILY := $(ARCH)
-+
-+ # i586 and sparc are 32 bit, amd64 and sparc64 are 64
-+ ifneq (,$(findstring $(ARCH), i586 sparc))
-+ ARCH_DATA_MODEL=32
-+ else
-+ ARCH_DATA_MODEL=64
-+ endif
-+
-+ # Need to maintain the jre/lib/i386 location for 32-bit Intel
-+ ifeq ($(ARCH), i586)
-+ LIBARCH = i386
-+ else
-+ LIBARCH = $(ARCH)
-+ endif
-+
-+ # Value of Java os.arch property
-+ ARCHPROP = $(LIBARCH)
-+
-+ # Suffix for file bundles used in previous release
-+ BUNDLE_FILE_SUFFIX=.tar.gz
-+ # Minimum disk space needed as determined by running 'du -sk' on
-+ # a fully built workspace.
-+ REQUIRED_FREE_SPACE=1500000
-+ # How much RAM does this machine have:
-+ MB_OF_MEMORY=$(shell sysctl -n hw.physmem | awk '{print int($$NF / 1048576); }' )
-+endif
-+
- # Windows with and without CYGWIN will be slightly different
- ifeq ($(SYSTEM_UNAME), Windows_NT)
- PLATFORM = windows
-@@ -408,7 +478,14 @@
- # build machines and adjustments will be made to prevent excessing
- # system swapping during the build.
- # If we don't know, assume 512. Subtract 128 from MB for VM MAX.
--# Don't set VM max over 1024-128=896.
-+# Don't set VM max over 1024-128=896, except on OpenBSD where
-+# 736 is the max.
-+ifeq ($(OS_VENDOR), OpenBSD)
-+ ABS_MAX_MEMORY := "736"
-+else
-+ ABS_MAX_MEMORY := "896"
-+endif
-+
- ifneq ($(MB_OF_MEMORY),)
- LOW_MEMORY_MACHINE := $(shell \
- if [ $(MB_OF_MEMORY) -le 512 ] ; then \
-@@ -420,7 +497,7 @@
- if [ $(MB_OF_MEMORY) -le 1024 ] ; then \
- expr $(MB_OF_MEMORY) '-' 128 ; \
- else \
-- echo "896"; \
-+ echo $(ABS_MAX_MEMORY); \
- fi)
- MIN_VM_MEMORY := $(shell \
- if [ $(MAX_VM_MEMORY) -le 128 ] ; then \
---- hotspot/agent/src/os/bsd/Makefile
-+++ hotspot/agent/src/os/bsd/Makefile
-@@ -23,7 +23,7 @@
- #
-
- ARCH := $(shell if ([ `uname -m` = "ia64" ]) ; then echo ia64 ; elif ([ `uname -m` = "amd64" ]) ; then echo amd64; elif ([ `uname -m` = "sparc64" ]) ; then echo sparc; else echo i386 ; fi )
--GCC = gcc
-+GCC ?= gcc
-
- JAVAH = ${JAVA_HOME}/bin/javah
-
---- hotspot/agent/src/os/bsd/libproc_impl.c
-+++ hotspot/agent/src/os/bsd/libproc_impl.c
-@@ -235,6 +235,24 @@
- }
-
- // add a thread to ps_prochandle
-+#ifdef __FreeBSD__
-+thread_info* add_thread_info(struct ps_prochandle* ph, lwpid_t lwp_id) {
-+ thread_info* newthr;
-+ if ( (newthr = (thread_info*) calloc(1, sizeof(thread_info))) == NULL) {
-+ print_debug("can't allocate memory for thread_info\n");
-+ return NULL;
-+ }
-+
-+ // initialize thread info
-+ newthr->lwp_id = lwp_id;
-+
-+ // add new thread to the list
-+ newthr->next = ph->threads;
-+ ph->threads = newthr;
-+ ph->num_threads++;
-+ return newthr;
-+}
-+#else
- thread_info* add_thread_info(struct ps_prochandle* ph, pthread_t pthread_id, lwpid_t lwp_id) {
- thread_info* newthr;
- if ( (newthr = (thread_info*) calloc(1, sizeof(thread_info))) == NULL) {
-@@ -252,6 +270,7 @@
- ph->num_threads++;
- return newthr;
- }
-+#endif
-
-
- // struct used for client data from thread_db callback
-@@ -273,10 +292,17 @@
- return err;
- }
-
-+#ifdef __FreeBSD__
-+ print_debug("thread_db : lwp %d\n", ti.ti_lid);
-+
-+ if (ptr->callback(ptr->ph, ti.ti_lid) != true)
-+ return TD_ERR;
-+#else
- print_debug("thread_db : pthread %d (lwp %d)\n", ti.ti_tid, ti.ti_lid);
-
- if (ptr->callback(ptr->ph, (pthread_t)ti.ti_tid, ti.ti_lid) != true)
- return TD_ERR;
-+#endif
-
- return TD_OK;
- }
---- hotspot/agent/src/os/bsd/libproc_impl.h
-+++ hotspot/agent/src/os/bsd/libproc_impl.h
-@@ -109,7 +109,11 @@
- void print_debug(const char* format,...);
- bool is_debug();
-
-+#ifdef __FreeBSD__
-+typedef bool (*thread_info_callback)(struct ps_prochandle* ph, lwpid_t lwpid);
-+#else
- typedef bool (*thread_info_callback)(struct ps_prochandle* ph, pthread_t pid, lwpid_t lwpid);
-+#endif
-
- // reads thread info using libthread_db and calls above callback for each thread
- bool read_thread_info(struct ps_prochandle* ph, thread_info_callback cb);
-@@ -122,7 +126,11 @@
- uintptr_t base);
-
- // adds a new thread to threads list, returns NULL on failure
-+#ifdef __FreeBSD__
-+thread_info* add_thread_info(struct ps_prochandle* ph, lwpid_t lwp_id);
-+#else
- thread_info* add_thread_info(struct ps_prochandle* ph, pthread_t pthread_id, lwpid_t lwp_id);
-+#endif
-
- // a test for ELF signature without using libelf
- bool is_elf_file(int fd);
---- hotspot/agent/src/os/bsd/ps_core.c
-+++ hotspot/agent/src/os/bsd/ps_core.c
-@@ -540,9 +540,14 @@
- prstatus_t* prstat = (prstatus_t*) buf;
- thread_info* newthr;
- print_debug("got integer regset for lwp %d\n", prstat->pr_pid);
-+#ifdef __FreeBSD__
-+ if((newthr = add_thread_info(ph, prstat->pr_pid)) == NULL)
-+ return false;
-+#else
- // we set pthread_t to -1 for core dump
- if((newthr = add_thread_info(ph, (pthread_t) -1, prstat->pr_pid)) == NULL)
- return false;
-+#endif
-
- // copy regs
- memcpy(&newthr->regs, &prstat->pr_reg, sizeof(struct reg));
---- hotspot/agent/src/os/bsd/ps_proc.c
-+++ hotspot/agent/src/os/bsd/ps_proc.c
-@@ -173,9 +173,15 @@
- // -------------------------------------------------------
-
- // callback for read_thread_info
-+#ifdef __FreeBSD__
-+static bool add_new_thread(struct ps_prochandle* ph, lwpid_t lwp_id) {
-+ return add_thread_info(ph, lwp_id) != NULL;
-+}
-+#else
- static bool add_new_thread(struct ps_prochandle* ph, pthread_t pthread_id, lwpid_t lwp_id) {
- return add_thread_info(ph, pthread_id, lwp_id) != NULL;
- }
-+#endif
-
- #if defined(__FreeBSD__) && __FreeBSD_version < 701000
- /*
---- hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/ConnectorImpl.java
-+++ hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/ConnectorImpl.java
-@@ -217,7 +217,7 @@
- }
-
- protected void checkNativeLink(SecurityManager sm, String os) {
-- if (os.equals("SunOS") || os.equals("Linux") || os.contains("OS X")) {
-+ if (os.equals("SunOS") || os.equals("Linux") || os.equals("FreeBSD") || os.contains("OS X")) {
- // link "saproc" - SA native library on SunOS, Linux, and Mac OS X
- sm.checkLink("saproc");
- } else if (os.startsWith("Windows")) {
---- hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/SAPIDAttachingConnector.java
-+++ hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/SAPIDAttachingConnector.java
-@@ -66,7 +66,7 @@
- try {
- // Whether the caller can perform link against SA native library?
- checkNativeLink(sm, os);
-- if (os.equals("SunOS") || os.equals("Linux")) {
-+ if (os.equals("SunOS") || os.equals("Linux") || os.equals("FreeBSD")) {
- // Whether the caller can read /proc/<pid> file?
- sm.checkRead("/proc/" + pid);
- }
---- hotspot/make/bsd/makefiles/adlc.make
-+++ hotspot/make/bsd/makefiles/adlc.make
-@@ -69,7 +69,7 @@
- # CFLAGS_WARN holds compiler options to suppress/enable warnings.
- # Compiler warnings are treated as errors
- ifneq ($(COMPILER_WARNINGS_FATAL),false)
-- CFLAGS_WARN = -Werror
-+ CFLAGS_WARN = $(WARNINGS_ARE_ERRORS)
- endif
- CFLAGS += $(CFLAGS_WARN)
-
---- hotspot/make/bsd/makefiles/build_vm_def.sh
-+++ hotspot/make/bsd/makefiles/build_vm_def.sh
-@@ -7,6 +7,10 @@
- NM=nm
- fi
-
--$NM --defined-only $* | awk '
-- { if ($3 ~ /^_ZTV/ || $3 ~ /^gHotSpotVM/) print "\t" $3 ";" }
-- '
-+$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
---- hotspot/make/bsd/makefiles/gcc.make
-+++ hotspot/make/bsd/makefiles/gcc.make
-@@ -35,8 +35,8 @@
- HOSTCXX = g++
- HOSTCC = gcc
- else ifneq ($(OS_VENDOR), Darwin)
-- CXX = g++
-- CC = gcc
-+ CXX ?= g++
-+ CC ?= gcc
- HOSTCXX = $(CXX)
- HOSTCC = $(CC)
- endif
-@@ -107,15 +107,20 @@
- ifeq ($(SHARK_BUILD), true)
- CFLAGS += $(LLVM_CFLAGS)
- endif
-+CFLAGS += -std=gnu++98
- CFLAGS += $(VM_PICFLAG)
- CFLAGS += -fno-rtti
- CFLAGS += -fno-exceptions
--CFLAGS += -pthread
--CFLAGS += -fcheck-new
--# version 4 and above support fvisibility=hidden (matches jni_x86.h file)
--# except 4.1.2 gives pointless warnings that can't be disabled (afaik)
--ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0"
--CFLAGS += -fvisibility=hidden
-+CFLAGS += -D_REENTRANT
-+ifeq ($(USE_CLANG),)
-+ CFLAGS += -fcheck-new
-+ # version 4 and above support fvisibility=hidden (matches jni_x86.h file)
-+ # except 4.1.2 gives pointless warnings that can't be disabled (afaik)
-+ ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0"
-+ CFLAGS += -fvisibility=hidden
-+ endif
-+else
-+ CFLAGS += -fvisibility=hidden
- endif
-
- ARCHFLAG = $(ARCHFLAG/$(BUILDARCH))
-@@ -163,14 +168,24 @@
- WARNINGS_ARE_ERRORS = -Werror
- endif
-
--# Except for a few acceptable ones
--# Since GCC 4.3, -Wconversion has changed its meanings to warn these implicit
--# conversions which might affect the values. To avoid that, we need to turn
--# it off explicitly.
--ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0"
-+ifeq ($(USE_CLANG), true)
-+ # However we need to clean the code up before we can unrestrictedly enable this option with Clang
-+ WARNINGS_ARE_ERRORS += -Wno-logical-op-parentheses -Wno-parentheses-equality -Wno-parentheses
-+ WARNINGS_ARE_ERRORS += -Wno-switch -Wno-tautological-compare
-+# Not yet supported by clang in Xcode 4.6.2
-+# 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-return-type -Wno-empty-body
-+endif
-+
- ACCEPTABLE_WARNINGS = -Wpointer-arith -Wsign-compare
--else
--ACCEPTABLE_WARNINGS = -Wpointer-arith -Wconversion -Wsign-compare
-+
-+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.
-+ ifeq ($(USE_CLANG),)
-+ ACCEPTABLE_WARNINGS += -Wconversion
-+ endif
- endif
-
- CFLAGS_WARN/DEFAULT = $(WARNINGS_ARE_ERRORS) $(ACCEPTABLE_WARNINGS)
-@@ -282,7 +297,11 @@
- DEBUG_CFLAGS/ppc = -g
- DEBUG_CFLAGS += $(DEBUG_CFLAGS/$(BUILDARCH))
- ifeq ($(DEBUG_CFLAGS/$(BUILDARCH)),)
--DEBUG_CFLAGS += -gstabs
-+ ifeq ($(USE_CLANG), true)
-+ DEBUG_CFLAGS += -g
-+ else
-+ DEBUG_CFLAGS += -gstabs
-+ endif
- endif
-
- # DEBUG_BINARIES overrides everything, use full -g debug information
---- hotspot/make/bsd/makefiles/jsig.make
-+++ hotspot/make/bsd/makefiles/jsig.make
-@@ -47,7 +47,7 @@
- # cause problems with interposing. See CR: 6466665
- # LFLAGS_JSIG += $(MAPFLAG:FILENAME=$(LIBJSIG_MAPFILE))
-
--LFLAGS_JSIG += -D_GNU_SOURCE -pthread $(LDFLAGS_HASH_STYLE)
-+LFLAGS_JSIG += -D_GNU_SOURCE -D_REENTRANT $(LDFLAGS_HASH_STYLE)
-
- # DEBUG_BINARIES overrides everything, use full -g debug information
- ifeq ($(DEBUG_BINARIES), true)
---- hotspot/make/bsd/makefiles/mapfile-vers-debug
-+++ hotspot/make/bsd/makefiles/mapfile-vers-debug
-@@ -1,8 +1,4 @@
- #
--# @(#)mapfile-vers-debug 1.18 07/10/25 16:47:35
--#
--
--#
- # Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
- # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- #
-@@ -88,7 +84,7 @@
- JVM_EnableCompiler;
- JVM_Exit;
- JVM_FillInStackTrace;
-- JVM_FindClassFromCaller
-+ JVM_FindClassFromCaller;
- JVM_FindClassFromClass;
- JVM_FindClassFromClassLoader;
- JVM_FindClassFromBootLoader;
-@@ -222,6 +218,7 @@
- JVM_SetArrayElement;
- JVM_SetClassSigners;
- JVM_SetLength;
-+ JVM_SetNativeThreadName;
- JVM_SetPrimitiveArrayElement;
- JVM_SetProtectionDomain;
- JVM_SetSockOpt;
-@@ -245,24 +242,6 @@
- JVM_Yield;
- JVM_handle_bsd_signal;
-
-- # Old reflection routines
-- # These do not need to be present in the product build in JDK 1.4
-- # but their code has not been removed yet because there will not
-- # be a substantial code savings until JVM_InvokeMethod and
-- # JVM_NewInstanceFromConstructor can also be removed; see
-- # reflectionCompat.hpp.
-- JVM_GetClassConstructor;
-- JVM_GetClassConstructors;
-- JVM_GetClassField;
-- JVM_GetClassFields;
-- JVM_GetClassMethod;
-- JVM_GetClassMethods;
-- JVM_GetField;
-- JVM_GetPrimitiveField;
-- JVM_NewInstance;
-- JVM_SetField;
-- JVM_SetPrimitiveField;
--
- # debug JVM
- JVM_AccessVMBooleanFlag;
- JVM_AccessVMIntFlag;
---- hotspot/make/bsd/makefiles/mapfile-vers-product
-+++ hotspot/make/bsd/makefiles/mapfile-vers-product
-@@ -1,8 +1,4 @@
- #
--# @(#)mapfile-vers-product 1.19 08/02/12 10:56:37
--#
--
--#
- # Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
- # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- #
-@@ -88,7 +84,7 @@
- JVM_EnableCompiler;
- JVM_Exit;
- JVM_FillInStackTrace;
-- JVM_FindClassFromCaller
-+ JVM_FindClassFromCaller;
- JVM_FindClassFromClass;
- JVM_FindClassFromClassLoader;
- JVM_FindClassFromBootLoader;
-@@ -222,6 +218,7 @@
- JVM_SetArrayElement;
- JVM_SetClassSigners;
- JVM_SetLength;
-+ JVM_SetNativeThreadName;
- JVM_SetPrimitiveArrayElement;
- JVM_SetProtectionDomain;
- JVM_SetSockOpt;
-@@ -245,24 +242,6 @@
- JVM_Yield;
- JVM_handle_bsd_signal;
-
-- # Old reflection routines
-- # These do not need to be present in the product build in JDK 1.4
-- # but their code has not been removed yet because there will not
-- # be a substantial code savings until JVM_InvokeMethod and
-- # JVM_NewInstanceFromConstructor can also be removed; see
-- # reflectionCompat.hpp.
-- JVM_GetClassConstructor;
-- JVM_GetClassConstructors;
-- JVM_GetClassField;
-- JVM_GetClassFields;
-- JVM_GetClassMethod;
-- JVM_GetClassMethods;
-- JVM_GetField;
-- JVM_GetPrimitiveField;
-- JVM_NewInstance;
-- JVM_SetField;
-- JVM_SetPrimitiveField;
--
- # miscellaneous functions
- jio_fprintf;
- jio_printf;
---- hotspot/make/bsd/makefiles/rules.make
-+++ hotspot/make/bsd/makefiles/rules.make
-@@ -126,8 +126,8 @@
- RUN.JAR$(MAKE_VERBOSE) += >/dev/null
-
- # Settings for javac
--BOOT_SOURCE_LANGUAGE_VERSION = 6
--BOOT_TARGET_CLASS_VERSION = 6
-+BOOT_SOURCE_LANGUAGE_VERSION = 5
-+BOOT_TARGET_CLASS_VERSION = 5
- JAVAC_FLAGS = -g -encoding ascii
- BOOTSTRAP_JAVAC_FLAGS = $(JAVAC_FLAGS) -source $(BOOT_SOURCE_LANGUAGE_VERSION) -target $(BOOT_TARGET_CLASS_VERSION)
-
---- hotspot/src/cpu/x86/vm/assembler_x86.cpp
-+++ hotspot/src/cpu/x86/vm/assembler_x86.cpp
-@@ -4087,7 +4087,7 @@
- }
-
- void Assembler::adcq(Register dst, Register src) {
-- (int) prefixq_and_encode(dst->encoding(), src->encoding());
-+ (void) prefixq_and_encode(dst->encoding(), src->encoding());
- emit_arith(0x13, 0xC0, dst, src);
- }
-
-@@ -4142,7 +4142,7 @@
- }
-
- void Assembler::andq(Register dst, Register src) {
-- (int) prefixq_and_encode(dst->encoding(), src->encoding());
-+ (void) prefixq_and_encode(dst->encoding(), src->encoding());
- emit_arith(0x23, 0xC0, dst, src);
- }
-
---- hotspot/src/cpu/x86/vm/globals_x86.hpp
-+++ hotspot/src/cpu/x86/vm/globals_x86.hpp
-@@ -70,11 +70,7 @@
- define_pd_global(bool, RewriteBytecodes, true);
- define_pd_global(bool, RewriteFrequentPairs, true);
-
--#ifdef _ALLBSD_SOURCE
--define_pd_global(bool, UseMembar, true);
--#else
- define_pd_global(bool, UseMembar, false);
--#endif
-
- // GC Ergo Flags
- define_pd_global(intx, CMSYoungGenPerWorker, 64*M); // default max size of CMS young gen, per GC worker thread
---- hotspot/src/cpu/x86/vm/jni_x86.h
-+++ hotspot/src/cpu/x86/vm/jni_x86.h
-@@ -28,7 +28,7 @@
-
- #if defined(SOLARIS) || defined(LINUX) || defined(_ALLBSD_SOURCE)
-
--#if defined(__GNUC__) && (__GNUC__ > 4) || (__GNUC__ == 4) && (__GNUC_MINOR__ > 2)
-+#if defined(__clang__) || (defined(__GNUC__) && (__GNUC__ > 4) || (__GNUC__ == 4) && (__GNUC_MINOR__ > 2))
- #define JNIEXPORT __attribute__((visibility("default")))
- #define JNIIMPORT __attribute__((visibility("default")))
- #else
---- hotspot/src/os/bsd/vm/globals_bsd.hpp
-+++ hotspot/src/os/bsd/vm/globals_bsd.hpp
-@@ -26,25 +26,19 @@
- #define OS_BSD_VM_GLOBALS_BSD_HPP
-
- //
--// Defines Bsd specific flags. They are not available on other platforms.
-+// Defines BSD specific flags. They are not available on other platforms.
- //
- #define RUNTIME_OS_FLAGS(develop, develop_pd, product, product_pd, diagnostic, notproduct) \
- product(bool, UseOprofile, false, \
- "enable support for Oprofile profiler") \
- \
-- 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")
-+ 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. */
-
- //
--// Defines Bsd-specific default values. The flags are available on all
-+// Defines BSD-specific default values. The flags are available on all
- // platforms, but they may have different default values on other platforms.
- //
- define_pd_global(bool, UseLargePages, false);
---- hotspot/src/os/bsd/vm/jsig.c
-+++ hotspot/src/os/bsd/vm/jsig.c
-@@ -140,9 +140,13 @@
- }
-
- sa_handler_t sigset(int sig, sa_handler_t disp) {
-+#ifdef __FreeBSD__
-+ return set_signal(sig, disp, true);
-+#else
- printf("sigset() is not supported by BSD");
- exit(0);
-- }
-+#endif
-+}
-
- static int call_os_sigaction(int sig, const struct sigaction *act,
- struct sigaction *oact) {
---- hotspot/src/os/bsd/vm/jvm_bsd.cpp
-+++ hotspot/src/os/bsd/vm/jvm_bsd.cpp
-@@ -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
-+++ hotspot/src/os/bsd/vm/jvm_bsd.h
-@@ -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
-+++ hotspot/src/os/bsd/vm/osThread_bsd.cpp
-@@ -49,7 +49,7 @@
-
- void OSThread::pd_initialize() {
- assert(this != NULL, "check");
--#ifdef __APPLE__
-+#if defined(__APPLE__) || defined(__FreeBSD__)
- _thread_id = 0;
- #else
- _thread_id = NULL;
---- hotspot/src/os/bsd/vm/osThread_bsd.hpp
-+++ hotspot/src/os/bsd/vm/osThread_bsd.hpp
-@@ -39,7 +39,7 @@
-
- private:
-
--#ifdef _ALLBSD_SOURCE
-+#if defined(_ALLBSD_SOURCE) && !defined(__FreeBSD__)
-
- #ifdef __APPLE__
- thread_t _thread_id;
-@@ -70,7 +70,7 @@
- sigset_t caller_sigmask() const { return _caller_sigmask; }
- void set_caller_sigmask(sigset_t sigmask) { _caller_sigmask = sigmask; }
-
--#ifdef _ALLBSD_SOURCE
-+#if defined(_ALLBSD_SOURCE) && !defined(__FreeBSD__)
- #ifdef __APPLE__
- thread_t thread_id() const {
- return _thread_id;
-@@ -87,8 +87,12 @@
- #endif
- #ifndef PRODUCT
- // Used for debugging, return a unique integer for each thread.
-+#ifdef __FreeBSD__
-+ int thread_identifier() const { return _thread_id; }
-+#else
- intptr_t thread_identifier() const { return (intptr_t)_pthread_id; }
- #endif
-+#endif
- #ifdef ASSERT
- // We expect no reposition failures so kill vm if we get one.
- //
-@@ -96,7 +100,7 @@
- return false;
- }
- #endif // ASSERT
--#ifdef _ALLBSD_SOURCE
-+#if defined(_ALLBSD_SOURCE) && !defined(__FreeBSD__)
- #ifdef __APPLE__
- void set_thread_id(thread_t id) {
- _thread_id = id;
---- hotspot/src/os/bsd/vm/os_bsd.cpp
-+++ hotspot/src/os/bsd/vm/os_bsd.cpp
-@@ -94,7 +94,6 @@
- # include <sys/mman.h>
- # include <sys/stat.h>
- # include <sys/select.h>
--# include <pthread.h>
- # include <signal.h>
- # include <errno.h>
- # include <dlfcn.h>
-@@ -126,11 +125,24 @@
- # include <sys/shm.h>
- #ifndef __APPLE__
- # include <link.h>
-+# include <stdlib.h>
- #endif
- # include <stdint.h>
- # include <inttypes.h>
- # include <sys/ioctl.h>
-
-+#ifdef __FreeBSD__
-+#if __FreeBSD_version > 700109
-+#include <sys/cpuset.h>
-+#endif
-+#include <vm/vm_param.h>
-+#if __FreeBSD_version > 900030
-+#include <pthread_np.h>
-+#else
-+extern "C" int thr_self(long *); // XXX #include <sys/thr.h>
-+#endif
-+#endif
-+
- #if defined(__FreeBSD__) || defined(__NetBSD__)
- # include <elf.h>
- #endif
-@@ -162,8 +174,10 @@
- #endif
-
- int (*os::Bsd::_clock_gettime)(clockid_t, struct timespec *) = NULL;
--#ifndef _ALLBSD_SOURCE
-+#if !defined(_ALLBSD_SOURCE) || defined(__FreeBSD__)
- int (*os::Bsd::_pthread_getcpuclockid)(pthread_t, clockid_t *) = NULL;
-+#endif
-+#ifndef _ALLBSD_SOURCE
- Mutex* os::Bsd::_createThread_lock = NULL;
- #endif
- pthread_t os::Bsd::_main_thread;
-@@ -171,7 +185,11 @@
- #ifndef _ALLBSD_SOURCE
- bool os::Bsd::_is_floating_stack = false;
- bool os::Bsd::_is_NPTL = false;
-+#endif
-+#if !defined(_ALLBSD_SOURCE) || defined(__FreeBSD__)
- bool os::Bsd::_supports_fast_thread_cpu_time = false;
-+#endif
-+#ifndef _ALLBSD_SOURCE
- const char * os::Bsd::_glibc_version = NULL;
- const char * os::Bsd::_libpthread_version = NULL;
- #endif
-@@ -205,6 +223,30 @@
-
- julong os::Bsd::available_memory() {
- #ifdef _ALLBSD_SOURCE
-+#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;
-+ 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();
-+ else
-+#endif
- // XXXBSD: this is just a stopgap implementation
- return physical_memory() >> 2;
- #else
-@@ -221,6 +263,17 @@
- }
-
- julong os::allocatable_physical_memory(julong size) {
-+#ifdef _ALLBSD_SOURCE
-+ struct rlimit limits;
-+ getrlimit(RLIMIT_DATA, &limits);
-+ if (limits.rlim_cur != RLIM_INFINITY)
-+ size = MIN2(size, (julong)limits.rlim_cur);
-+#ifdef RLIMIT_AS
-+ getrlimit(RLIMIT_AS, &limits);
-+ if (limits.rlim_cur != RLIM_INFINITY)
-+ size = MIN2(size, (julong)limits.rlim_cur);
-+#endif
-+#endif
- #ifdef _LP64
- return size;
- #else
-@@ -308,16 +361,22 @@
- #define COMPILER_VARIANT "client"
- #endif
-
--#ifndef _ALLBSD_SOURCE
-+#if !defined(_ALLBSD_SOURCE) || defined(__FreeBSD__)
- // pid_t gettid()
- //
- // Returns the kernel thread id of the currently running thread. Kernel
- // thread id is used to access /proc.
- //
--// (Note that getpid() on BsdThreads returns kernel thread id too; but
--// on NPTL, it returns the same pid for all threads, as required by POSIX.)
--//
- pid_t os::Bsd::gettid() {
-+#ifdef __FreeBSD__
-+#if __FreeBSD_version > 900030
-+ return pthread_getthreadid_np();
-+#else
-+ long tid;
-+ thr_self(&tid);
-+ return (pid_t)tid;
-+#endif
-+#else
- int rslt = syscall(SYS_gettid);
- if (rslt == -1) {
- // old kernel, no NPTL support
-@@ -325,6 +384,7 @@
- } else {
- return (pid_t)rslt;
- }
-+#endif
- }
-
- // Most versions of bsd have a bug where the number of processors are
-@@ -337,7 +397,35 @@
- "environment on Bsd when /proc filesystem is not mounted.";
- #endif
-
--#ifdef _ALLBSD_SOURCE
-+#if defined(__FreeBSD__)
-+void os::Bsd::initialize_system_info() {
-+ int cpu_val = sysconf(_SC_NPROCESSORS_CONF);
-+ if (cpu_val >= 1)
-+ set_processor_count(cpu_val);
-+ else
-+ set_processor_count(1); // fallback
-+
-+#ifdef _SC_PHYS_PAGES
-+ long phys_pages = sysconf(_SC_PHYS_PAGES);
-+ if (phys_pages > 0)
-+ _physical_memory = (julong)phys_pages * _page_size;
-+ else
-+ _physical_memory = 256*1024*1024; // fallback (XXXBSD?)
-+#else
-+ int mib[2];
-+ size_t len;
-+ u_long mem_val;
-+
-+ mib[0] = CTL_HW;
-+ mib[1] = HW_PHYSMEM;
-+ len = sizeof(mem_val);
-+ if (sysctl(mib, 2, &mem_val, &len, NULL, 0) != -1)
-+ _physical_memory = mem_val;
-+ else
-+ _physical_memory = 256*1024*1024; // fallback (XXXBSD?)
-+#endif
-+ }
-+#elif defined(_ALLBSD_SOURCE)
- void os::Bsd::initialize_system_info() {
- int mib[2];
- size_t len;
-@@ -452,7 +540,7 @@
- * 7: The default directories, normally /lib and /usr/lib.
- */
- #ifndef DEFAULT_LIBPATH
--#define DEFAULT_LIBPATH "/lib:/usr/lib"
-+#define DEFAULT_LIBPATH "/lib:/usr/lib:%%LOCALBASE%%/lib"
- #endif
-
- #define EXTENSIONS_DIR "/lib/ext"
-@@ -997,7 +1085,7 @@
- return NULL;
- }
-
--#ifdef _ALLBSD_SOURCE
-+#if defined(_ALLBSD_SOURCE) && !defined(__FreeBSD__)
- #ifdef __APPLE__
- // thread_id is mach thread on macos
- osthread->set_thread_id(::mach_thread_self());
-@@ -1009,6 +1097,7 @@
- // thread_id is kernel thread id (similar to Solaris LWP id)
- osthread->set_thread_id(os::Bsd::gettid());
-
-+#ifndef __FreeBSD__
- if (UseNUMA) {
- int lgrp_id = os::numa_get_group_id();
- if (lgrp_id != -1) {
-@@ -1016,6 +1105,7 @@
- }
- }
- #endif
-+#endif
- // initialize signal mask for this thread
- os::Bsd::hotspot_sigmask(thread);
-
-@@ -1105,7 +1195,7 @@
- // let pthread_create() pick the default value.
- }
-
--#ifndef _ALLBSD_SOURCE
-+#if !defined(_ALLBSD_SOURCE) || defined(__FreeBSD__)
- // glibc guard page
- pthread_attr_setguardsize(&attr, os::Bsd::default_guard_size(thr_type));
- #endif
-@@ -1194,7 +1284,7 @@
- }
-
- // Store pthread info into the OSThread
--#ifdef _ALLBSD_SOURCE
-+#if defined(_ALLBSD_SOURCE) && !defined(__FreeBSD__)
- #ifdef __APPLE__
- osthread->set_thread_id(::mach_thread_self());
- #else
-@@ -1630,7 +1720,10 @@
- }
- #endif
-
--#ifndef _ALLBSD_SOURCE
-+#if !defined(_ALLBSD_SOURCE) || defined(__FreeBSD__)
-+#ifdef __FreeBSD__
-+#define sys_clock_getres clock_getres
-+#else
- #ifndef SYS_clock_getres
-
- #if defined(IA32) || defined(AMD64)
-@@ -1644,6 +1737,7 @@
- #else
- #define sys_clock_getres(x,y) ::syscall(SYS_clock_getres, x, y)
- #endif
-+#endif
-
- void os::Bsd::fast_thread_clock_init() {
- if (!UseBsdPosixThreadCPUClocks) {
-@@ -1814,8 +1908,10 @@
- }
-
- intx os::current_thread_id() {
--#ifdef __APPLE__
-+#if defined(__APPLE__)
- return (intx)::mach_thread_self();
-+#elif defined(__FreeBSD__)
-+ return (intx)os::Bsd::gettid();
- #else
- return (intx)::pthread_self();
- #endif
-@@ -2338,14 +2434,16 @@
- }
-
- void os::print_os_info_brief(outputStream* st) {
-- st->print("Bsd");
-+ st->print("BSD");
-+ st->cr();
-
- os::Posix::print_uname_info(st);
- }
-
- void os::print_os_info(outputStream* st) {
- st->print("OS:");
-- st->print("Bsd");
-+ st->print("BSD");
-+ st->cr();
-
- os::Posix::print_uname_info(st);
-
-@@ -2363,7 +2461,23 @@
- st->print("Memory:");
- st->print(" %dk page", os::vm_page_size()>>10);
-
--#ifndef _ALLBSD_SOURCE
-+#if defined(__FreeBSD__)
-+ struct xswdev xsw;
-+ size_t mibsize, size;
-+ int mib[16], 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;
-+ }
-+ }
-+#elif !defined(_ALLBSD_SOURCE)
- // values in struct sysinfo are "unsigned long"
- struct sysinfo si;
- sysinfo(&si);
-@@ -2373,17 +2487,22 @@
- os::physical_memory() >> 10);
- st->print("(" UINT64_FORMAT "k free)",
- os::available_memory() >> 10);
--#ifndef _ALLBSD_SOURCE
-+#if defined(__FreeBSD__)
-+ st->print(", swap " UINT64_FORMAT "k",
-+ ((jlong)total * os::vm_page_size()) >> 10);
-+ st->print("(" UINT64_FORMAT "k free)",
-+ ((jlong)(total - used) * os::vm_page_size()) >> 10);
-+#elif !defined(_ALLBSD_SOURCE)
- st->print(", swap " UINT64_FORMAT "k",
- ((jlong)si.totalswap * si.mem_unit) >> 10);
- st->print("(" UINT64_FORMAT "k free)",
- ((jlong)si.freeswap * si.mem_unit) >> 10);
--#endif
- st->cr();
-
- // meminfo
- st->print("\n/proc/meminfo:\n");
- _print_ascii_file("/proc/meminfo", st);
-+#endif
- st->cr();
- }
-
-@@ -2396,7 +2515,7 @@
-
- const char *fpe_names[] = { "FPE0", "FPE_INTDIV", "FPE_INTOVF", "FPE_FLTDIV",
- "FPE_FLTOVF", "FPE_FLTUND", "FPE_FLTRES",
-- "FPE_FLTINV", "FPE_FLTSUB", "FPE_FLTDEN" };
-+ "FPE_FLTINV", "FPE_FLTSUB" };
-
- const char *segv_names[] = { "SEGV0", "SEGV_MAPERR", "SEGV_ACCERR" };
-
-@@ -2422,7 +2541,7 @@
- st->print(", si_addr=" PTR_FORMAT, si->si_addr);
- break;
- case SIGFPE:
-- st->print(", si_code=%d (%s)", c, c > 9 ? "" : fpe_names[c]);
-+ st->print(", si_code=%d (%s)", c, c > 8 ? "" : fpe_names[c]);
- st->print(", si_addr=" PTR_FORMAT, si->si_addr);
- break;
- case SIGSEGV:
-@@ -2531,10 +2650,17 @@
- jrelib_p = buf + len;
-
- // Add the appropriate library subdir
-+#ifdef __APPLE__
- snprintf(jrelib_p, buflen-len, "/jre/lib");
- if (0 != access(buf, F_OK)) {
- snprintf(jrelib_p, buflen-len, "/lib");
- }
-+#else
-+ snprintf(jrelib_p, buflen-len, "/jre/lib/%s", cpu_arch);
-+ if (0 != access(buf, F_OK)) {
-+ snprintf(jrelib_p, buflen-len, "/lib/%s", cpu_arch);
-+ }
-+#endif
-
- // Add the appropriate client or server subdir
- len = strlen(buf);
-@@ -2752,7 +2878,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);
-@@ -2815,7 +2941,7 @@
- }
-
- void os::free_memory(char *addr, size_t bytes, size_t alignment_hint) {
-- ::madvise(addr, bytes, MADV_DONTNEED);
-+ commit_memory(addr, bytes, false);
- }
-
- void os::numa_make_global(char *addr, size_t bytes) {
-@@ -2962,7 +3088,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
- }
-@@ -2989,15 +3115,16 @@
- 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;
- }
-
-- // Map uncommitted pages PROT_READ and PROT_WRITE, change access
-- // to PROT_EXEC if executable when we commit the page.
-- addr = (char*)::mmap(requested_addr, bytes, PROT_READ|PROT_WRITE,
-+ // Map reserved/uncommitted pages PROT_NONE so we fail early if we
-+ // touch an uncommitted page. Otherwise, the read/write might
-+ // succeed if we have enough swap space to back the physical page.
-+ addr = (char*)::mmap(requested_addr, bytes, PROT_NONE,
- flags, -1, 0);
-
- if (addr != MAP_FAILED) {
-@@ -3242,9 +3369,11 @@
- #endif
-
- char* os::reserve_memory_special(size_t bytes, char* req_addr, bool exec) {
-+#ifndef _ALLBSD_SOURCE
- // "exec" is passed in but not used. Creating the shared image for
- // the code cache doesn't have an SHM_X executable permission to check.
- assert(UseLargePages && UseSHM, "only for SHM large pages");
-+#endif
-
- key_t key = IPC_PRIVATE;
- char *addr;
-@@ -3319,11 +3448,19 @@
- // with SysV SHM the entire memory region must be allocated as shared
- // memory.
- bool os::can_commit_large_page_memory() {
-+#ifdef _ALLBSD_SOURCE
-+ return false;
-+#else
- return UseHugeTLBFS;
-+#endif
- }
-
- bool os::can_execute_large_page_memory() {
-+#ifdef _ALLBSD_SOURCE
-+ return false;
-+#else
- return UseHugeTLBFS;
-+#endif
- }
-
- // Reserve memory at an arbitrary address, only if that area is
-@@ -3652,8 +3789,8 @@
- return OS_OK;
- #else
- int ret = setpriority(PRIO_PROCESS, thread->osthread()->thread_id(), newpri);
-- return (ret == 0) ? OS_OK : OS_ERR;
- #endif
-+ return (ret == 0) ? OS_OK : OS_ERR;
- }
-
- OSReturn os::get_native_priority(const Thread* const thread, int *priority_ptr) {
-@@ -4169,7 +4306,7 @@
- }
- }
-
--#ifndef _ALLBSD_SOURCE
-+#if !defined(_ALLBSD_SOURCE) || defined(__FreeBSD__)
- // This is the fastest way to get thread cpu time on Bsd.
- // Returns cpu time (user+sys) for any thread, not only for current.
- // POSIX compliant clocks are implemented in the kernels 2.6.16+.
-@@ -4186,6 +4323,7 @@
- }
- #endif
-
-+#ifndef _ALLBSD_SOURCE
- /////
- // glibc on Bsd platform uses non-documented flag
- // to indicate, that some special sort of signal
-@@ -4196,6 +4334,7 @@
- #undef SIGNIFICANT_SIGNAL_MASK
- #endif
- #define SIGNIFICANT_SIGNAL_MASK (~0x04000000)
-+#endif
-
- static const char* get_signal_handler_name(address handler,
- char* buf, int buflen) {
-@@ -4220,8 +4359,10 @@
-
- sigaction(sig, NULL, &sa);
-
-+#ifndef _ALLBSD_SOURCE
- // See comment for SIGNIFICANT_SIGNAL_MASK define
- sa.sa_flags &= SIGNIFICANT_SIGNAL_MASK;
-+#endif
-
- st->print("%s: ", os::exception_name(sig, buf, buflen));
-
-@@ -4243,7 +4384,11 @@
- // May be, handler was resetted by VMError?
- if(rh != NULL) {
- handler = rh;
-+#ifdef _ALLBSD_SOURCE
-+ sa.sa_flags = VMError::get_resetted_sigflags(sig);
-+#else
- sa.sa_flags = VMError::get_resetted_sigflags(sig) & SIGNIFICANT_SIGNAL_MASK;
-+#endif
- }
-
- st->print(", sa_flags=" PTR32_FORMAT, sa.sa_flags);
-@@ -4318,7 +4463,9 @@
- os_sigaction(sig, (struct sigaction*)NULL, &act);
-
-
-+#ifndef _ALLBSD_SOURCE
- act.sa_flags &= SIGNIFICANT_SIGNAL_MASK;
-+#endif
-
- address thisHandler = (act.sa_flags & SA_SIGINFO)
- ? CAST_FROM_FN_PTR(address, act.sa_sigaction)
-@@ -4379,6 +4526,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
-@@ -4448,7 +4603,7 @@
- // this is called _after_ the global arguments have been parsed
- jint os::init_2(void)
- {
--#ifndef _ALLBSD_SOURCE
-+#if !defined(_ALLBSD_SOURCE) || defined(__FreeBSD__)
- Bsd::fast_thread_clock_init();
- #endif
-
-@@ -4632,6 +4787,20 @@
-
- int os::active_processor_count() {
- #ifdef _ALLBSD_SOURCE
-+#ifdef __FreeBSD__
-+ int online_cpus = 0;
-+#if __FreeBSD_version > 700109
-+ 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]);
-+#else
-+ online_cpus = ::sysconf(_SC_NPROCESSORS_ONLN);
-+#endif
-+ if (online_cpus > 0 && online_cpus <= _processor_count)
-+ return online_cpus;
-+#endif
- return _processor_count;
- #else
- // Bsd doesn't yet have a (official) notion of processor sets,
-@@ -5031,7 +5200,7 @@
- return munmap(addr, bytes) == 0;
- }
-
--#ifndef _ALLBSD_SOURCE
-+#if !defined(_ALLBSD_SOURCE) || defined(__FreeBSD__)
- static jlong slow_thread_cpu_time(Thread *thread, bool user_sys_cpu_time);
-
- static clockid_t thread_cpu_clockid(Thread* thread) {
-@@ -5055,7 +5224,7 @@
- jlong os::current_thread_cpu_time() {
- #ifdef __APPLE__
- return os::thread_cpu_time(Thread::current(), true /* user + sys */);
--#elif !defined(_ALLBSD_SOURCE)
-+#elif !defined(_ALLBSD_SOURCE) || defined(__FreeBSD__)
- if (os::Bsd::supports_fast_thread_cpu_time()) {
- return os::Bsd::fast_thread_cpu_time(CLOCK_THREAD_CPUTIME_ID);
- } else {
-@@ -5066,7 +5235,7 @@
- }
-
- jlong os::thread_cpu_time(Thread* thread) {
--#ifndef _ALLBSD_SOURCE
-+#if !defined(_ALLBSD_SOURCE) || defined(__FreeBSD__)
- // consistent with what current_thread_cpu_time() returns
- if (os::Bsd::supports_fast_thread_cpu_time()) {
- return os::Bsd::fast_thread_cpu_time(thread_cpu_clockid(thread));
-@@ -5079,7 +5248,7 @@
- jlong os::current_thread_cpu_time(bool user_sys_cpu_time) {
- #ifdef __APPLE__
- return os::thread_cpu_time(Thread::current(), user_sys_cpu_time);
--#elif !defined(_ALLBSD_SOURCE)
-+#elif !defined(_ALLBSD_SOURCE) || defined(__FreeBSD__)
- if (user_sys_cpu_time && os::Bsd::supports_fast_thread_cpu_time()) {
- return os::Bsd::fast_thread_cpu_time(CLOCK_THREAD_CPUTIME_ID);
- } else {
-@@ -5108,7 +5277,7 @@
- } else {
- return ((jlong)tinfo.user_time.seconds * 1000000000) + ((jlong)tinfo.user_time.microseconds * (jlong)1000);
- }
--#elif !defined(_ALLBSD_SOURCE)
-+#elif !defined(_ALLBSD_SOURCE) || defined(__FreeBSD__)
- if (user_sys_cpu_time && os::Bsd::supports_fast_thread_cpu_time()) {
- return os::Bsd::fast_thread_cpu_time(thread_cpu_clockid(thread));
- } else {
-@@ -5117,12 +5286,15 @@
- #endif
- }
-
--#ifndef _ALLBSD_SOURCE
-+#if !defined(_ALLBSD_SOURCE) || defined(__FreeBSD__)
- //
- // -1 on error.
- //
-
- static jlong slow_thread_cpu_time(Thread *thread, bool user_sys_cpu_time) {
-+#ifdef __FreeBSD__
-+ return -1;
-+#else
- static bool proc_pid_cpu_avail = true;
- static bool proc_task_unchecked = true;
- static const char *proc_stat_path = "/proc/%d/stat";
-@@ -5206,6 +5378,7 @@
- } else {
- return (jlong)user_time * (1000000000 / clock_tics_per_sec);
- }
-+#endif
- }
- #endif
-
-@@ -5224,7 +5397,7 @@
- }
-
- bool os::is_thread_cpu_time_supported() {
--#ifdef __APPLE__
-+#if defined(__APPLE__) || defined(__FreeBSD__)
- return true;
- #elif defined(_ALLBSD_SOURCE)
- return false;
-@@ -5799,3 +5972,30 @@
-
- return true;
- }
-+
-+// Get the default path to the core file
-+// Returns the length of the string
-+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);
-+}
---- hotspot/src/os/bsd/vm/os_bsd.hpp
-+++ hotspot/src/os/bsd/vm/os_bsd.hpp
-@@ -56,9 +56,11 @@
- static int sigflags[MAXSIGNUM];
-
- static int (*_clock_gettime)(clockid_t, struct timespec *);
--#ifndef _ALLBSD_SOURCE
-+#if !defined(_ALLBSD_SOURCE) || defined(__FreeBSD__)
- static int (*_pthread_getcpuclockid)(pthread_t, clockid_t *);
-+#endif
-
-+#ifndef _ALLBSD_SOURCE
- static address _initial_thread_stack_bottom;
- static uintptr_t _initial_thread_stack_size;
-
-@@ -67,6 +69,8 @@
-
- static bool _is_floating_stack;
- static bool _is_NPTL;
-+#endif
-+#if !defined(_ALLBSD_SOURCE) || defined(__FreeBSD__)
- static bool _supports_fast_thread_cpu_time;
- #endif
-
-@@ -112,13 +116,15 @@
- #endif
- static pthread_t main_thread(void) { return _main_thread; }
-
--#ifndef _ALLBSD_SOURCE
-+#if !defined(_ALLBSD_SOURCE) || defined(__FreeBSD__)
- // returns kernel thread id (similar to LWP id on Solaris), which can be
- // used to access /proc
- static pid_t gettid();
-+#ifndef _ALLBSD_SOURCE
- static void set_createThread_lock(Mutex* lk) { _createThread_lock = lk; }
- static Mutex* createThread_lock(void) { return _createThread_lock; }
- #endif
-+#endif
- static void hotspot_sigmask(Thread* thread);
-
- #ifndef _ALLBSD_SOURCE
-@@ -197,12 +203,12 @@
- // Real-time clock functions
- static void clock_init(void);
-
--#ifndef _ALLBSD_SOURCE
-+#if !defined(_ALLBSD_SOURCE) || defined(__FreeBSD__)
- // fast POSIX clocks support
- static void fast_thread_clock_init(void);
- #endif
-
-- static bool supports_monotonic_clock() {
-+ static inline bool supports_monotonic_clock() {
- return _clock_gettime != NULL;
- }
-
-@@ -210,7 +216,7 @@
- return _clock_gettime ? _clock_gettime(clock_id, tp) : -1;
- }
-
--#ifndef _ALLBSD_SOURCE
-+#if !defined(_ALLBSD_SOURCE) || defined(__FreeBSD__)
- static int pthread_getcpuclockid(pthread_t tid, clockid_t *clock_id) {
- return _pthread_getcpuclockid ? _pthread_getcpuclockid(tid, clock_id) : -1;
- }
---- hotspot/src/os/bsd/vm/perfMemory_bsd.cpp
-+++ hotspot/src/os/bsd/vm/perfMemory_bsd.cpp
-@@ -303,7 +303,6 @@
- DIR *dirp = NULL;
- RESTARTABLE(::open(dirname, O_RDONLY|O_NOFOLLOW), result);
- if (result == OS_ERR) {
-- // Directory doesn't exist or is a symlink, so there is nothing to cleanup.
- if (PrintMiscellaneous && Verbose) {
- if (errno == ELOOP) {
- warning("directory %s is a symlink and is not secure\n", dirname);
-@@ -420,6 +419,7 @@
- return true;
- }
-
-+
- // return the user name for the given user id
- //
- // the caller is expected to free the allocated memory.
-@@ -542,6 +542,18 @@
- continue;
- }
-
-+ // Since we don't create the backing store files in directories
-+ // pointed to by symbolic links, we also don't follow them when
-+ // looking for the files. We check for a symbolic link after the
-+ // call to opendir in order to eliminate a small window where the
-+ // symlink can be exploited.
-+ //
-+ if (!is_directory_secure(usrdir_name)) {
-+ FREE_C_HEAP_ARRAY(char, usrdir_name);
-+ os::closedir(subdirp);
-+ continue;
-+ }
-+
- struct dirent* udentry;
- char* udbuf = NEW_C_HEAP_ARRAY(char, os::readdir_buf_size(usrdir_name));
- errno = 0;
-@@ -643,6 +655,7 @@
- }
- }
-
-+
- // cleanup stale shared memory resources
- //
- // This method attempts to remove all stale shared memory files in
-@@ -655,7 +668,7 @@
- static void cleanup_sharedmem_resources(const char* dirname) {
-
- int saved_cwd_fd;
-- // open the directory and set the current working directory to it
-+ // open the directory
- DIR* dirp = open_directory_secure_cwd(dirname, &saved_cwd_fd);
- if (dirp == NULL) {
- // directory doesn't exist or is insecure, so there is nothing to cleanup
-@@ -681,7 +694,6 @@
- if (pid == 0) {
-
- if (strcmp(entry->d_name, ".") != 0 && strcmp(entry->d_name, "..") != 0) {
--
- // attempt to remove all unexpected files, except "." and ".."
- unlink(entry->d_name);
- }
-@@ -705,7 +717,6 @@
- //
- if ((pid == os::current_process_id()) ||
- (kill(pid, 0) == OS_ERR && (errno == ESRCH || errno == EPERM))) {
--
- unlink(entry->d_name);
- }
- errno = 0;
-@@ -914,7 +925,6 @@
-
- char* dirname = get_user_tmp_dir(user_name);
- char* filename = get_sharedmem_filename(dirname, vmid);
--
- // get the short filename
- char* short_filename = strrchr(filename, '/');
- if (short_filename == NULL) {
---- hotspot/src/os/bsd/vm/threadCritical_bsd.cpp
-+++ hotspot/src/os/bsd/vm/threadCritical_bsd.cpp
-@@ -33,35 +33,36 @@
- // See threadCritical.hpp for details of this class.
- //
-
--static pthread_t tc_owner = 0;
--static pthread_mutex_t tc_mutex = PTHREAD_MUTEX_INITIALIZER;
--static int tc_count = 0;
-+static pthread_mutex_t tc_mutex;
-+static pthread_mutexattr_t tc_attr;
-+static bool initialized = false;
-
- void ThreadCritical::initialize() {
-+ int ret;
-+ ret = pthread_mutexattr_init(&tc_attr);
-+ guarantee(ret == 0, "fatal error with pthread_mutexattr_init()");
-+ ret = pthread_mutexattr_settype(&tc_attr, PTHREAD_MUTEX_RECURSIVE);
-+ guarantee(ret == 0, "fatal error with pthread_mutexattr_settype()");
-+ ret = pthread_mutex_init(&tc_mutex, &tc_attr);
-+ guarantee(ret == 0, "fatal error with pthread_mutex_init()");
-+ initialized = true;
- }
-
- void ThreadCritical::release() {
-+ pthread_mutex_destroy(&tc_mutex);
-+ pthread_mutexattr_destroy(&tc_attr);
- }
-
- ThreadCritical::ThreadCritical() {
-- pthread_t self = pthread_self();
-- if (self != tc_owner) {
-- int ret = pthread_mutex_lock(&tc_mutex);
-- guarantee(ret == 0, "fatal error with pthread_mutex_lock()");
-- assert(tc_count == 0, "Lock acquired with illegal reentry count.");
-- tc_owner = self;
-- }
-- tc_count++;
-+ if (initialized)
-+ pthread_mutex_lock(&tc_mutex);
-+ else
-+ assert(Threads::number_of_threads() == 0, "valid only during initialization");
- }
-
- ThreadCritical::~ThreadCritical() {
-- assert(tc_owner == pthread_self(), "must have correct owner");
-- assert(tc_count > 0, "must have correct count");
--
-- tc_count--;
-- if (tc_count == 0) {
-- tc_owner = 0;
-- int ret = pthread_mutex_unlock(&tc_mutex);
-- guarantee(ret == 0, "fatal error with pthread_mutex_unlock()");
-- }
-+ if (initialized)
-+ pthread_mutex_unlock(&tc_mutex);
-+ else
-+ assert(Threads::number_of_threads() == 0, "valid only during initialization");
- }
---- hotspot/src/os/bsd/vm/vmError_bsd.cpp
-+++ hotspot/src/os/bsd/vm/vmError_bsd.cpp
-@@ -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/posix/launcher/java_md.c
-+++ hotspot/src/os/posix/launcher/java_md.c
-@@ -35,6 +35,9 @@
- #include <sys/stat.h>
- #include <unistd.h>
- #include <sys/types.h>
-+#ifdef __FreeBSD__
-+#include <sys/sysctl.h>
-+#endif
-
- #ifndef GAMMA
- #include "manifest_info.h"
-@@ -96,8 +99,8 @@
- * A collection of useful strings. One should think of these as #define
- * entries, but actual strings can be more efficient (with many compilers).
- */
--#ifdef __linux__
--static const char *system_dir = "/usr/java";
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
-+static const char *system_dir = "%%JAVA_HOME%%";
- static const char *user_dir = "/java";
- #else /* Solaris */
- static const char *system_dir = "/usr/jdk";
-@@ -526,7 +529,7 @@
- * LD_LIBRARY_PATH. Note that this prevents any possible infinite
- * loop of execv() because we test for the prefix, above.
- */
-- if (runpath != 0) {
-+ if (runpath != 0 && runpath[0] != '\0') {
- strcat(new_runpath, ":");
- strcat(new_runpath, runpath);
- }
-@@ -1002,7 +1005,17 @@
- exec_path = JLI_StringDup(buf);
- }
- }
--#else /* !__sun && !__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 /* !__sun && !__linux && !__FreeBSD__ */
- {
- /* Not implemented */
- }
-@@ -1100,6 +1113,7 @@
- /* Compute physical memory by asking the OS */
- uint64_t
- physical_memory(void) {
-+#ifdef _SC_PHYS_PAGES
- const uint64_t pages = (uint64_t) sysconf(_SC_PHYS_PAGES);
- const uint64_t page_size = (uint64_t) sysconf(_SC_PAGESIZE);
- const uint64_t result = pages * page_size;
-@@ -1111,6 +1125,28 @@
- " physical memory: " UINT64_FORMAT " (%.3fGB)\n",
- pages, page_size, result, result / (double) GB);
- }
-+#else
-+#ifdef HW_PHYSMEM64
-+ int64_t physmem;
-+ int name[2] = { CTL_HW, HW_PHYSMEM64 };
-+#else
-+ unsigned long physmem;
-+ int name[2] = { CTL_HW, HW_PHYSMEM };
-+#endif
-+ size_t physmem_len = sizeof(physmem);
-+ uint64_t result;
-+# define UINT64_FORMAT "%" PRIu64
-+
-+ if (sysctl(name, 2, &physmem, &physmem_len, NULL, 0) == -1)
-+ physmem = 256 * MB;
-+
-+ result = (uint64_t)physmem;
-+
-+ if (_launcher_debug) {
-+ printf("physical memory: " UINT64_FORMAT " (%.3fGB)\n",
-+ result, result / (double) GB);
-+ }
-+#endif
- return result;
- }
-
-@@ -1271,7 +1307,7 @@
- #endif
- }
-
--#endif /* __linux__ && i586 */
-+#endif /* (__linux__ || _ALLBSD_SOURCE) && i586 */
-
- #ifdef i586
- /*
-@@ -1450,7 +1486,7 @@
-
- #endif /* __sun && i586 */
-
--#if defined(__linux__) && defined(i586)
-+#if (defined(__linux__) || defined(_ALLBSD_SOURCE)) && defined(i586)
-
- /* The definition of a server-class machine for linux-i586 */
- jboolean
-@@ -1481,7 +1517,7 @@
- return result;
- }
-
--#endif /* __linux__ && i586 */
-+#endif /* (__linux__ || _ALLBSD_SOURCE) && i586 */
-
- #if defined(_ALLBSD_SOURCE) && defined(i586)
-
-@@ -1508,7 +1544,7 @@
- }
- }
- if (_launcher_debug) {
-- printf("linux_" LIBARCHNAME "_ServerClassMachine: %s\n",
-+ printf("bsd_" LIBARCHNAME "_ServerClassMachine: %s\n",
- (result == JNI_TRUE ? "true" : "false"));
- }
- return result;
-@@ -1672,7 +1708,7 @@
- while (dp != NULL) {
- cp = strchr(dp, (int)':');
- if (cp != NULL)
-- *cp = (char)NULL;
-+ *cp = '\0';
- if ((target = ProcessDir(info, dp)) != NULL)
- break;
- dp = cp;
-@@ -1931,8 +1967,8 @@
- #define MAX_PID_STR_SZ 20
-
- void SetJavaLauncherPlatformProps() {
-- /* Linux only */
--#ifdef __linux__
-+ /* Linux and BSDs only */
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- const char *substr = "-Dsun.java.launcher.pid=";
- char *pid_prop_str = (char *)JLI_MemAlloc(strlen(substr) + MAX_PID_STR_SZ + 1);
- sprintf(pid_prop_str, "%s%d", substr, getpid());
---- hotspot/src/os/posix/vm/os_posix.cpp
-+++ hotspot/src/os/posix/vm/os_posix.cpp
-@@ -33,19 +33,18 @@
-
- // Check core dump limit and report possible place where core can be found
- void os::check_or_create_dump(void* exceptionRecord, void* contextRecord, char* buffer, size_t bufferSize) {
-+ int n;
- struct rlimit rlim;
-- static char cwd[O_BUFLEN];
- bool success;
-
-- get_current_directory(cwd, sizeof(cwd));
-+ n = get_core_path(buffer, bufferSize);
-
- if (getrlimit(RLIMIT_CORE, &rlim) != 0) {
-- jio_snprintf(buffer, bufferSize, "%s/core or core.%d (may not exist)", cwd, 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, bufferSize, "%s/core or core.%d", cwd, current_process_id());
- success = true;
- break;
- case 0:
-@@ -53,7 +52,7 @@
- success = false;
- break;
- default:
-- jio_snprintf(buffer, bufferSize, "%s/core or core.%d (max size %lu kB). To ensure a full core dump, try \"ulimit -c unlimited\" before starting Java again", cwd, 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;
- }
---- hotspot/src/os_cpu/bsd_x86/vm/globals_bsd_x86.hpp
-+++ hotspot/src/os_cpu/bsd_x86/vm/globals_bsd_x86.hpp
-@@ -42,7 +42,6 @@
- #endif // AMD64
-
- define_pd_global(intx, CompilerThreadStackSize, 0);
--define_pd_global(intx, SurvivorRatio, 8);
-
- define_pd_global(uintx, JVMInvokeMethodSlack, 8192);
-
---- hotspot/src/os_cpu/bsd_x86/vm/vmStructs_bsd_x86.hpp
-+++ hotspot/src/os_cpu/bsd_x86/vm/vmStructs_bsd_x86.hpp
-@@ -29,8 +29,10 @@
- // constants required by the Serviceability Agent. This file is
- // referenced by vmStructs.cpp.
-
--#ifdef __APPLE__
-+#if defined(__APPLE__)
- #define OS_THREAD_ID_TYPE thread_t
-+#elif defined(__FreeBSD__)
-+#define OS_THREAD_ID_TYPE pid_t
- #else
- #define OS_THREAD_ID_TYPE pthread_t
- #endif
-@@ -46,17 +48,31 @@
- last_entry()
-
-
-+#ifdef __FreeBSD__
- #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, last_entry) \
- \
- /**********************/ \
- /* Posix Thread IDs */ \
- /**********************/ \
- \
-- declare_unsigned_integer_type(thread_t) \
-+ declare_integer_type(pid_t) \
- declare_unsigned_integer_type(pthread_t) \
- \
- /* This must be the last entry, and must be present */ \
- last_entry()
-+#else
-+#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, last_entry) \
-+ \
-+ /**********************/ \
-+ /* Posix Thread IDs */ \
-+ /**********************/ \
-+ \
-+ declare_unsigned_integer_type(OS_THREAD_ID_TYPE) \
-+ declare_unsigned_integer_type(pthread_t) \
-+ \
-+ /* This must be the last entry, and must be present */ \
-+ last_entry()
-+#endif
-
- #define VM_INT_CONSTANTS_OS_CPU(declare_constant, declare_preprocessor_constant, declare_c1_constant, declare_c2_constant, declare_c2_preprocessor_constant, last_entry) \
- \
---- hotspot/src/share/vm/adlc/arena.cpp
-+++ hotspot/src/share/vm/adlc/arena.cpp
-@@ -24,7 +24,7 @@
-
- #include "adlc.hpp"
-
--void* Chunk::operator new(size_t requested_size, size_t length) {
-+void* Chunk::operator new(size_t requested_size, size_t length) throw() {
- return CHeapObj::operator new(requested_size + length);
- }
-
-@@ -163,7 +163,7 @@
- //-----------------------------------------------------------------------------
- // CHeapObj
-
--void* CHeapObj::operator new(size_t size){
-+void* CHeapObj::operator new(size_t size) throw() {
- return (void *) malloc(size);
- }
-
---- hotspot/src/share/vm/adlc/arena.hpp
-+++ hotspot/src/share/vm/adlc/arena.hpp
-@@ -42,7 +42,7 @@
-
- class CHeapObj {
- public:
-- void* operator new(size_t size);
-+ void* operator new(size_t size) throw();
- void operator delete(void* p);
- void* new_array(size_t size);
- };
-@@ -53,7 +53,7 @@
-
- class ValueObj {
- public:
-- void* operator new(size_t size);
-+ void* operator new(size_t size) throw();
- void operator delete(void* p);
- };
-
-@@ -61,7 +61,7 @@
-
- class AllStatic {
- public:
-- void* operator new(size_t size);
-+ void* operator new(size_t size) throw();
- void operator delete(void* p);
- };
-
-@@ -70,7 +70,7 @@
- // Linked list of raw memory chunks
- class Chunk: public CHeapObj {
- public:
-- void* operator new(size_t size, size_t length);
-+ void* operator new(size_t size, size_t length) throw();
- void operator delete(void* p, size_t length);
- Chunk(size_t length);
-
---- hotspot/src/share/vm/adlc/main.cpp
-+++ hotspot/src/share/vm/adlc/main.cpp
-@@ -508,7 +508,7 @@
-
- // VS2005 has its own definition, identical to this one.
- #if !defined(_WIN32) || defined(_WIN64) || _MSC_VER < 1400
--void *operator new( size_t size, int, const char *, int ) {
-+void *operator new( size_t size, int, const char *, int ) throw() {
- return ::operator new( size );
- }
- #endif
---- hotspot/src/share/vm/asm/codeBuffer.hpp
-+++ hotspot/src/share/vm/asm/codeBuffer.hpp
-@@ -290,7 +290,7 @@
- // CodeBuffers must be allocated on the stack except for a single
- // special case during expansion which is handled internally. This
- // is done to guarantee proper cleanup of resources.
-- void* operator new(size_t size) { return ResourceObj::operator new(size); }
-+ void* operator new(size_t size) throw() { return ResourceObj::operator new(size); }
- void operator delete(void* p) { ShouldNotCallThis(); }
-
- public:
---- hotspot/src/share/vm/c1/c1_Compilation.hpp
-+++ hotspot/src/share/vm/c1/c1_Compilation.hpp
-@@ -263,8 +263,8 @@
- // Base class for objects allocated by the compiler in the compilation arena
- class CompilationResourceObj ALLOCATION_SUPER_CLASS_SPEC {
- public:
-- void* operator new(size_t size) { return Compilation::current()->arena()->Amalloc(size); }
-- void* operator new(size_t size, Arena* arena) {
-+ void* operator new(size_t size) throw() { return Compilation::current()->arena()->Amalloc(size); }
-+ void* operator new(size_t size, Arena* arena) throw() {
- return arena->Amalloc(size);
- }
- void operator delete(void* p) {} // nothing to do
---- hotspot/src/share/vm/c1/c1_Instruction.hpp
-+++ hotspot/src/share/vm/c1/c1_Instruction.hpp
-@@ -311,7 +311,7 @@
- }
-
- public:
-- void* operator new(size_t size) {
-+ void* operator new(size_t size) throw() {
- Compilation* c = Compilation::current();
- void* res = c->arena()->Amalloc(size);
- ((Instruction*)res)->_id = c->get_next_id();
-@@ -1532,7 +1532,7 @@
- friend class SuxAndWeightAdjuster;
-
- public:
-- void* operator new(size_t size) {
-+ void* operator new(size_t size) throw() {
- Compilation* c = Compilation::current();
- void* res = c->arena()->Amalloc(size);
- ((BlockBegin*)res)->_id = c->get_next_id();
---- hotspot/src/share/vm/code/codeBlob.cpp
-+++ hotspot/src/share/vm/code/codeBlob.cpp
-@@ -242,7 +242,7 @@
- }
-
-
--void* BufferBlob::operator new(size_t s, unsigned size) {
-+void* BufferBlob::operator new(size_t s, unsigned size) throw() {
- void* p = CodeCache::allocate(size);
- return p;
- }
-@@ -344,14 +344,14 @@
- }
-
-
--void* RuntimeStub::operator new(size_t s, unsigned size) {
-+void* RuntimeStub::operator new(size_t s, unsigned size) throw() {
- void* p = CodeCache::allocate(size);
- if (!p) fatal("Initial size of CodeCache is too small");
- return p;
- }
-
- // operator new shared by all singletons:
--void* SingletonBlob::operator new(size_t s, unsigned size) {
-+void* SingletonBlob::operator new(size_t s, unsigned size) throw() {
- void* p = CodeCache::allocate(size);
- if (!p) fatal("Initial size of CodeCache is too small");
- return p;
---- hotspot/src/share/vm/code/codeBlob.hpp
-+++ hotspot/src/share/vm/code/codeBlob.hpp
-@@ -213,7 +213,7 @@
- BufferBlob(const char* name, int size);
- BufferBlob(const char* name, int size, CodeBuffer* cb);
-
-- void* operator new(size_t s, unsigned size);
-+ void* operator new(size_t s, unsigned size) throw();
-
- public:
- // Creation
-@@ -287,7 +287,7 @@
- bool caller_must_gc_arguments
- );
-
-- void* operator new(size_t s, unsigned size);
-+ void* operator new(size_t s, unsigned size) throw();
-
- public:
- // Creation
-@@ -325,7 +325,7 @@
- friend class VMStructs;
-
- protected:
-- void* operator new(size_t s, unsigned size);
-+ void* operator new(size_t s, unsigned size) throw();
-
- public:
- SingletonBlob(
---- hotspot/src/share/vm/code/debugInfoRec.cpp
-+++ hotspot/src/share/vm/code/debugInfoRec.cpp
-@@ -38,7 +38,7 @@
- int _length; // number of bytes in the stream
- int _hash; // hash of stream bytes (for quicker reuse)
-
-- void* operator new(size_t ignore, DebugInformationRecorder* dir) {
-+ void* operator new(size_t ignore, DebugInformationRecorder* dir) throw() {
- assert(ignore == sizeof(DIR_Chunk), "");
- if (dir->_next_chunk >= dir->_next_chunk_limit) {
- const int CHUNK = 100;
---- hotspot/src/share/vm/code/nmethod.cpp
-+++ hotspot/src/share/vm/code/nmethod.cpp
-@@ -784,7 +784,7 @@
- }
- #endif // def HAVE_DTRACE_H
-
--void* nmethod::operator new(size_t size, int nmethod_size) {
-+void* nmethod::operator new(size_t size, int nmethod_size) throw() {
- // Always leave some room in the CodeCache for I2C/C2I adapters
- if (CodeCache::largest_free_block() < CodeCacheMinimumFreeSpace) return NULL;
- return CodeCache::allocate(nmethod_size);
---- hotspot/src/share/vm/code/nmethod.hpp
-+++ hotspot/src/share/vm/code/nmethod.hpp
-@@ -263,7 +263,7 @@
- int comp_level);
-
- // helper methods
-- void* operator new(size_t size, int nmethod_size);
-+ void* operator new(size_t size, int nmethod_size) throw();
-
- const char* reloc_string_for(u_char* begin, u_char* end);
- // Returns true if this thread changed the state of the nmethod or
---- hotspot/src/share/vm/code/relocInfo.hpp
-+++ hotspot/src/share/vm/code/relocInfo.hpp
-@@ -371,7 +371,7 @@
- // "immediate" in the prefix header word itself. This optimization
- // is invisible outside this module.)
-
-- inline friend relocInfo prefix_relocInfo(int datalen = 0);
-+ inline friend relocInfo prefix_relocInfo(int datalen);
-
- protected:
- // an immediate relocInfo optimizes a prefix with one 10-bit unsigned value
-@@ -466,7 +466,7 @@
- return relocInfo(relocInfo::none, relocInfo::offset_limit() - relocInfo::offset_unit);
- }
-
--inline relocInfo prefix_relocInfo(int datalen) {
-+inline relocInfo prefix_relocInfo(int datalen = 0) {
- assert(relocInfo::fits_into_immediate(datalen), "datalen in limits");
- return relocInfo(relocInfo::data_prefix_tag, relocInfo::RAW_BITS, relocInfo::datalen_tag | datalen);
- }
-@@ -686,7 +686,7 @@
- }
-
- public:
-- void* operator new(size_t size, const RelocationHolder& holder) {
-+ void* operator new(size_t size, const RelocationHolder& holder) throw() {
- if (size > sizeof(holder._relocbuf)) guarantee_size();
- assert((void* const *)holder.reloc() == &holder._relocbuf[0], "ptrs must agree");
- return holder.reloc();
---- hotspot/src/share/vm/code/vtableStubs.cpp
-+++ hotspot/src/share/vm/code/vtableStubs.cpp
-@@ -49,7 +49,7 @@
- static int num_vtable_chunks = 0;
-
-
--void* VtableStub::operator new(size_t size, int code_size) {
-+void* VtableStub::operator new(size_t size, int code_size) throw() {
- assert(size == sizeof(VtableStub), "mismatched size");
- num_vtable_chunks++;
- // compute real VtableStub size (rounded to nearest word)
---- hotspot/src/share/vm/code/vtableStubs.hpp
-+++ hotspot/src/share/vm/code/vtableStubs.hpp
-@@ -46,7 +46,7 @@
- bool _is_vtable_stub; // True if vtable stub, false, is itable stub
- /* code follows here */ // The vtableStub code
-
-- void* operator new(size_t size, int code_size);
-+ void* operator new(size_t size, int code_size) throw();
-
- VtableStub(bool is_vtable_stub, int index)
- : _next(NULL), _is_vtable_stub(is_vtable_stub),
---- hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp
-+++ hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp
-@@ -1858,8 +1858,9 @@
- _cm->grayRegionIfNecessary(MemRegion(_real_start_word, _real_end_word));
-
- #ifndef PRODUCT
-- if (use_local_bitmaps && verify_local_bitmaps)
-- verify();
-+#if (use_local_bitmaps && verify_local_bitmaps)
-+ verify();
-+#endif
- #endif // PRODUCT
- } else {
- assert(_real_start_word == NULL && _real_end_word == NULL, "invariant");
---- hotspot/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.inline.hpp
-+++ hotspot/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.inline.hpp
-@@ -25,6 +25,7 @@
- #ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSPROMOTIONMANAGER_INLINE_HPP
- #define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSPROMOTIONMANAGER_INLINE_HPP
-
-+#include "gc_implementation/parallelScavenge/psOldGen.hpp"
- #include "gc_implementation/parallelScavenge/psPromotionManager.hpp"
- #include "gc_implementation/parallelScavenge/psScavenge.hpp"
-
---- hotspot/src/share/vm/gc_implementation/shared/gcUtil.hpp
-+++ hotspot/src/share/vm/gc_implementation/shared/gcUtil.hpp
-@@ -144,9 +144,9 @@
- _padded_avg(0.0), _deviation(0.0), _padding(padding) {}
-
- // Placement support
-- void* operator new(size_t ignored, void* p) { return p; }
-+ void* operator new(size_t ignored, void* p) throw() { return p; }
- // Allocator
-- void* operator new(size_t size) { return CHeapObj::operator new(size); }
-+ void* operator new(size_t size) throw() { return CHeapObj::operator new(size); }
-
- // Accessor
- float padded_average() const { return _padded_avg; }
---- hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp
-+++ hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp
-@@ -1562,7 +1562,7 @@
- #define ARRAY_LOADTO32(T, T2, format, stackRes, extra) \
- { \
- ARRAY_INTRO(-2); \
-- extra; \
-+ (void)extra; \
- SET_ ## stackRes(*(T2 *)(((address) arrObj->base(T)) + index * sizeof(T2)), \
- -2); \
- UPDATE_PC_AND_TOS_AND_CONTINUE(1, -1); \
-@@ -1573,7 +1573,7 @@
- { \
- ARRAY_INTRO(-2); \
- SET_ ## stackRes(*(T2 *)(((address) arrObj->base(T)) + index * sizeof(T2)), -1); \
-- extra; \
-+ (void)extra; \
- UPDATE_PC_AND_CONTINUE(1); \
- }
-
-@@ -1598,7 +1598,7 @@
- #define ARRAY_STOREFROM32(T, T2, format, stackSrc, extra) \
- { \
- ARRAY_INTRO(-3); \
-- extra; \
-+ (void)extra; \
- *(T2 *)(((address) arrObj->base(T)) + index * sizeof(T2)) = stackSrc( -1); \
- UPDATE_PC_AND_TOS_AND_CONTINUE(1, -3); \
- }
-@@ -1607,7 +1607,7 @@
- #define ARRAY_STOREFROM64(T, T2, stackSrc, extra) \
- { \
- ARRAY_INTRO(-4); \
-- extra; \
-+ (void)extra; \
- *(T2 *)(((address) arrObj->base(T)) + index * sizeof(T2)) = stackSrc( -1); \
- UPDATE_PC_AND_TOS_AND_CONTINUE(1, -4); \
- }
---- hotspot/src/share/vm/libadt/port.hpp
-+++ hotspot/src/share/vm/libadt/port.hpp
-@@ -163,7 +163,7 @@
- extern void *safe_calloc (const char *file, unsigned line, unsigned nitems, unsigned size);
- extern void *safe_realloc(const char *file, unsigned line, void *ptr, unsigned size);
- extern char *safe_strdup (const char *file, unsigned line, const char *src);
--inline void *operator new( size_t size ) { return malloc(size); }
-+inline void *operator new( size_t size ) throw() { return malloc(size); }
- inline void operator delete( void *ptr ) { free(ptr); }
- #endif
-
---- hotspot/src/share/vm/memory/allocation.cpp
-+++ hotspot/src/share/vm/memory/allocation.cpp
-@@ -43,11 +43,11 @@
- # include "os_bsd.inline.hpp"
- #endif
-
--void* CHeapObj::operator new(size_t size){
-+void* CHeapObj::operator new(size_t size) throw() {
- return (void *) AllocateHeap(size, "CHeapObj-new");
- }
-
--void* CHeapObj::operator new (size_t size, const std::nothrow_t& nothrow_constant) {
-+void* CHeapObj::operator new (size_t size, const std::nothrow_t& nothrow_constant) throw() {
- char* p = (char*) os::malloc(size);
- #ifdef ASSERT
- if (PrintMallocFree) trace_heap_malloc(size, "CHeapObj-new", p);
-@@ -59,12 +59,12 @@
- FreeHeap(p);
- }
-
--void* StackObj::operator new(size_t size) { ShouldNotCallThis(); return 0; };
-+void* StackObj::operator new(size_t size) throw() { ShouldNotCallThis(); return 0; };
- void StackObj::operator delete(void* p) { ShouldNotCallThis(); };
--void* _ValueObj::operator new(size_t size) { ShouldNotCallThis(); return 0; };
-+void* _ValueObj::operator new(size_t size) throw() { ShouldNotCallThis(); return 0; };
- void _ValueObj::operator delete(void* p) { ShouldNotCallThis(); };
-
--void* ResourceObj::operator new(size_t size, allocation_type type) {
-+void* ResourceObj::operator new(size_t size, allocation_type type) throw() {
- address res;
- switch (type) {
- case C_HEAP:
-@@ -311,7 +311,7 @@
- //--------------------------------------------------------------------------------------
- // Chunk implementation
-
--void* Chunk::operator new(size_t requested_size, AllocFailType alloc_failmode, size_t length) {
-+void* Chunk::operator new(size_t requested_size, AllocFailType alloc_failmode, size_t length) throw() {
- // requested_size is equal to sizeof(Chunk) but in order for the arena
- // allocations to come out aligned as expected the size must be aligned
- // to expected arean alignment.
-@@ -576,7 +576,7 @@
- // src/share/native/sun/awt/font/fontmanager/textcache/hsMemory.cpp::hsSoftNew
- // define CATCH_OPERATOR_NEW_USAGE if you want to use this.
- #ifdef CATCH_OPERATOR_NEW_USAGE
--void* operator new(size_t size){
-+void* operator new(size_t size) throw() {
- static bool warned = false;
- if (!warned && warn_new_operator)
- warning("should not call global (default) operator new");
---- hotspot/src/share/vm/memory/allocation.hpp
-+++ hotspot/src/share/vm/memory/allocation.hpp
-@@ -106,8 +106,8 @@
-
- class CHeapObj ALLOCATION_SUPER_CLASS_SPEC {
- public:
-- void* operator new(size_t size);
-- void* operator new (size_t size, const std::nothrow_t& nothrow_constant);
-+ void* operator new(size_t size) throw();
-+ void* operator new (size_t size, const std::nothrow_t& nothrow_constant) throw();
- void operator delete(void* p);
- void* new_array(size_t size);
- };
-@@ -117,7 +117,7 @@
-
- class StackObj ALLOCATION_SUPER_CLASS_SPEC {
- public:
-- void* operator new(size_t size);
-+ void* operator new(size_t size) throw();
- void operator delete(void* p);
- };
-
-@@ -141,7 +141,7 @@
- //
- class _ValueObj {
- public:
-- void* operator new(size_t size);
-+ void* operator new(size_t size) throw();
- void operator delete(void* p);
- };
-
-@@ -163,7 +163,7 @@
- Chunk* _next; // Next Chunk in list
- const size_t _len; // Size of this Chunk
- public:
-- void* operator new(size_t size, AllocFailType alloc_failmode, size_t length);
-+ void* operator new(size_t size, AllocFailType alloc_failmode, size_t length) throw();
- void operator delete(void* p);
- Chunk(size_t length);
-
-@@ -392,19 +392,19 @@
- #endif // ASSERT
-
- public:
-- void* operator new(size_t size, allocation_type type);
-- void* operator new(size_t size, Arena *arena) {
-+ void* operator new(size_t size, allocation_type type) throw();
-+ void* operator new(size_t size, Arena *arena) throw() {
- address res = (address)arena->Amalloc(size);
- DEBUG_ONLY(set_allocation_type(res, ARENA);)
- return res;
- }
-- void* operator new(size_t size) {
-+ void* operator new(size_t size) throw() {
- address res = (address)resource_allocate_bytes(size);
- DEBUG_ONLY(set_allocation_type(res, RESOURCE_AREA);)
- return res;
- }
-
-- void* operator new(size_t size, const std::nothrow_t& nothrow_constant) {
-+ void* operator new(size_t size, const std::nothrow_t& nothrow_constant) throw() {
- address res = (address)resource_allocate_bytes(size, AllocFailStrategy::RETURN_NULL);
- DEBUG_ONLY(if (res != NULL) set_allocation_type(res, RESOURCE_AREA);)
- return res;
---- hotspot/src/share/vm/memory/memRegion.hpp
-+++ hotspot/src/share/vm/memory/memRegion.hpp
-@@ -99,13 +99,13 @@
-
- class MemRegionClosureRO: public MemRegionClosure {
- public:
-- void* operator new(size_t size, ResourceObj::allocation_type type) {
-+ void* operator new(size_t size, ResourceObj::allocation_type type) throw() {
- return ResourceObj::operator new(size, type);
- }
-- void* operator new(size_t size, Arena *arena) {
-+ void* operator new(size_t size, Arena *arena) throw() {
- return ResourceObj::operator new(size, arena);
- }
-- void* operator new(size_t size) {
-+ void* operator new(size_t size) throw() {
- return ResourceObj::operator new(size);
- }
-
---- hotspot/src/share/vm/oops/klass.cpp
-+++ hotspot/src/share/vm/oops/klass.cpp
-@@ -190,7 +190,7 @@
- }
-
- void* Klass_vtbl::operator new(size_t ignored, KlassHandle& klass,
-- int size, TRAPS) {
-+ int size, TRAPS) throw() {
- // The vtable pointer is installed during the execution of
- // constructors in the call to permanent_obj_allocate(). Delay
- // the installation of the klass pointer into the new klass "k"
---- hotspot/src/share/vm/oops/klass.hpp
-+++ hotspot/src/share/vm/oops/klass.hpp
-@@ -168,7 +168,7 @@
- bool null_vtbl() { return *(intptr_t*)this == 0; }
-
- protected:
-- void* operator new(size_t ignored, KlassHandle& klass, int size, TRAPS);
-+ void* operator new(size_t ignored, KlassHandle& klass, int size, TRAPS) throw();
- };
-
-
-@@ -419,11 +419,11 @@
- }
- static bool layout_helper_is_typeArray(jint lh) {
- // _lh_array_tag_type_value == (lh >> _lh_array_tag_shift);
-- return (juint)lh >= (juint)(_lh_array_tag_type_value << _lh_array_tag_shift);
-+ return (juint)lh >= (juint)((juint)_lh_array_tag_type_value << _lh_array_tag_shift);
- }
- static bool layout_helper_is_objArray(jint lh) {
- // _lh_array_tag_obj_value == (lh >> _lh_array_tag_shift);
-- return (jint)lh < (jint)(_lh_array_tag_type_value << _lh_array_tag_shift);
-+ return (jint)lh < (jint)((juint)_lh_array_tag_type_value << _lh_array_tag_shift);
- }
- static int layout_helper_header_size(jint lh) {
- assert(lh < (jint)_lh_neutral_value, "must be array");
---- hotspot/src/share/vm/oops/symbol.cpp
-+++ hotspot/src/share/vm/oops/symbol.cpp
-@@ -36,7 +36,7 @@
- }
- }
-
--void* Symbol::operator new(size_t size, int len) {
-+void* Symbol::operator new(size_t size, int len) throw() {
- return (void *) AllocateHeap(object_size(len) * HeapWordSize, "symbol");
- }
-
---- hotspot/src/share/vm/oops/symbol.hpp
-+++ hotspot/src/share/vm/oops/symbol.hpp
-@@ -121,7 +121,7 @@
- }
-
- Symbol(const u1* name, int length);
-- void* operator new(size_t size, int len);
-+ void* operator new(size_t size, int len) throw();
-
- public:
- // Low-level access (used with care, since not GC-safe)
---- hotspot/src/share/vm/opto/callGenerator.hpp
-+++ hotspot/src/share/vm/opto/callGenerator.hpp
-@@ -240,7 +240,7 @@
- // Because WarmInfo objects live over the entire lifetime of the
- // Compile object, they are allocated into the comp_arena, which
- // does not get resource marked or reset during the compile process
-- void *operator new( size_t x, Compile* C ) { return C->comp_arena()->Amalloc(x); }
-+ void *operator new( size_t x, Compile* C ) throw() { return C->comp_arena()->Amalloc(x); }
- void operator delete( void * ) { } // fast deallocation
-
- static WarmCallInfo* always_hot();
---- hotspot/src/share/vm/opto/callnode.hpp
-+++ hotspot/src/share/vm/opto/callnode.hpp
-@@ -215,7 +215,7 @@
- // Because JVMState objects live over the entire lifetime of the
- // Compile object, they are allocated into the comp_arena, which
- // does not get resource marked or reset during the compile process
-- void *operator new( size_t x, Compile* C ) { return C->comp_arena()->Amalloc(x); }
-+ void *operator new( size_t x, Compile* C ) throw() { return C->comp_arena()->Amalloc(x); }
- void operator delete( void * ) { } // fast deallocation
-
- // Create a new JVMState, ready for abstract interpretation.
---- hotspot/src/share/vm/opto/machnode.hpp
-+++ hotspot/src/share/vm/opto/machnode.hpp
-@@ -58,7 +58,7 @@
- class MachOper : public ResourceObj {
- public:
- // Allocate right next to the MachNodes in the same arena
-- void *operator new( size_t x, Compile* C ) { return C->node_arena()->Amalloc_D(x); }
-+ void *operator new( size_t x, Compile* C ) throw() { return C->node_arena()->Amalloc_D(x); }
-
- // Opcode
- virtual uint opcode() const = 0;
---- hotspot/src/share/vm/opto/memnode.cpp
-+++ hotspot/src/share/vm/opto/memnode.cpp
-@@ -1933,6 +1933,11 @@
- if (t != NULL) {
- // constant oop => constant klass
- if (offset == java_lang_Class::array_klass_offset_in_bytes()) {
-+ if (t->is_void()) {
-+ // We cannot create a void array. Since void is a primitive type return null
-+ // klass. Users of this result need to do a null check on the returned klass.
-+ return TypePtr::NULL_PTR;
-+ }
- return TypeKlassPtr::make(ciArrayKlass::make(t));
- }
- if (!t->is_klass()) {
---- hotspot/src/share/vm/opto/node.cpp
-+++ hotspot/src/share/vm/opto/node.cpp
-@@ -284,6 +284,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.
-@@ -467,6 +471,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/opto/node.hpp
-+++ hotspot/src/share/vm/opto/node.hpp
-@@ -207,7 +207,7 @@
-
- // New Operator that takes a Compile pointer, this will eventually
- // be the "new" New operator.
-- inline void* operator new( size_t x, Compile* C) {
-+ inline void* operator new( size_t x, Compile* C) throw() {
- Node* n = (Node*)C->node_arena()->Amalloc_D(x);
- #ifdef ASSERT
- n->_in = (Node**)n; // magic cookie for assertion check
---- hotspot/src/share/vm/opto/parse3.cpp
-+++ hotspot/src/share/vm/opto/parse3.cpp
-@@ -487,7 +487,8 @@
- fun, NULL, TypeRawPtr::BOTTOM,
- makecon(TypeKlassPtr::make(array_klass)),
- length[0], length[1], length[2],
-- length[3], length[4]);
-+ (ndimensions > 2) ? length[3] : NULL,
-+ (ndimensions > 3) ? length[4] : NULL);
- } else {
- // Create a java array for dimension sizes
- Node* dims = NULL;
---- hotspot/src/share/vm/opto/type.hpp
-+++ hotspot/src/share/vm/opto/type.hpp
-@@ -144,7 +144,7 @@
-
- public:
-
-- inline void* operator new( size_t x ) {
-+ inline void* operator new( size_t x ) throw() {
- Compile* compile = Compile::current();
- compile->set_type_last_size(x);
- void *temp = compile->type_arena()->Amalloc_D(x);
---- hotspot/src/share/vm/runtime/arguments.cpp
-+++ hotspot/src/share/vm/runtime/arguments.cpp
-@@ -2507,7 +2507,9 @@
- FLAG_SET_CMDLINE(uintx, MaxNewSize, NewSize);
- }
-
-+#ifndef _ALLBSD_SOURCE // UseLargePages is not yet supported on BSD.
- FLAG_SET_DEFAULT(UseLargePages, true);
-+#endif
-
- // Increase some data structure sizes for efficiency
- FLAG_SET_CMDLINE(uintx, BaseFootPrintEstimate, MaxHeapSize);
-@@ -3054,6 +3056,10 @@
- UNSUPPORTED_OPTION(UseG1GC, "G1 GC");
- #endif
-
-+#ifdef _ALLBSD_SOURCE // UseLargePages is not yet supported on BSD.
-+ UNSUPPORTED_OPTION(UseLargePages, "-XX:+UseLargePages");
-+#endif
-+
- #ifndef PRODUCT
- if (TraceBytecodesAt != 0) {
- TraceBytecodes = true;
---- hotspot/src/share/vm/runtime/fprofiler.cpp
-+++ hotspot/src/share/vm/runtime/fprofiler.cpp
-@@ -264,7 +264,7 @@
-
- public:
-
-- void* operator new(size_t size, ThreadProfiler* tp);
-+ void* operator new(size_t size, ThreadProfiler* tp) throw();
- void operator delete(void* p);
-
- ProfilerNode() {
-@@ -371,7 +371,7 @@
- }
- };
-
--void* ProfilerNode::operator new(size_t size, ThreadProfiler* tp){
-+void* ProfilerNode::operator new(size_t size, ThreadProfiler* tp) throw() {
- void* result = (void*) tp->area_top;
- tp->area_top += size;
-
---- hotspot/src/share/vm/runtime/globals.hpp
-+++ hotspot/src/share/vm/runtime/globals.hpp
-@@ -1125,7 +1125,7 @@
- product(intx, hashCode, 0, \
- "(Unstable) select hashCode generation algorithm" ) \
- \
-- product(intx, WorkAroundNPTLTimedWaitHang, 1, \
-+ product(intx, WorkAroundNPTLTimedWaitHang, 0, \
- "(Unstable, Linux-specific)" \
- " avoid NPTL-FUTEX hang pthread_cond_timedwait" ) \
- \
---- hotspot/src/share/vm/runtime/interfaceSupport.hpp
-+++ hotspot/src/share/vm/runtime/interfaceSupport.hpp
-@@ -67,7 +67,7 @@
- }
-
- private:
-- inline void* operator new(size_t size, void* ptr) {
-+ inline void* operator new(size_t size, void* ptr) throw() {
- return ptr;
- }
- };
---- hotspot/src/share/vm/runtime/os.hpp
-+++ hotspot/src/share/vm/runtime/os.hpp
-@@ -636,6 +636,10 @@
- // On Windows this will create an actual minidump, on Linux/Solaris it will simply check core dump limits
- static void check_or_create_dump(void* exceptionRecord, void* contextRecord, char* buffer, size_t bufferSize);
-
-+ // Get the default path to the core file
-+ // Returns the length of the string
-+ static int get_core_path(char* buffer, size_t bufferSize);
-+
- // JVMTI & JVM monitoring and management support
- // The thread_cpu_time() and current_thread_cpu_time() are only
- // supported if is_thread_cpu_time_supported() returns true.
---- hotspot/src/share/vm/runtime/park.cpp
-+++ hotspot/src/share/vm/runtime/park.cpp
-@@ -140,7 +140,7 @@
- // well as bank access imbalance on Niagara-like platforms,
- // although Niagara's hash function should help.
-
--void * ParkEvent::operator new (size_t sz) {
-+void * ParkEvent::operator new (size_t sz) throw() {
- return (void *) ((intptr_t (CHeapObj::operator new (sz + 256)) + 256) & -256) ;
- }
-
---- hotspot/src/share/vm/runtime/park.hpp
-+++ hotspot/src/share/vm/runtime/park.hpp
-@@ -166,7 +166,7 @@
- // aligned on 256-byte address boundaries. This ensures that the least
- // significant byte of a ParkEvent address is always 0.
-
-- void * operator new (size_t sz) ;
-+ void * operator new (size_t sz) throw() ;
- void operator delete (void * a) ;
-
- public:
---- hotspot/src/share/vm/runtime/thread.cpp
-+++ hotspot/src/share/vm/runtime/thread.cpp
-@@ -170,7 +170,7 @@
- // ======= Thread ========
-
- // Support for forcing alignment of thread objects for biased locking
--void* Thread::operator new(size_t size) {
-+void* Thread::operator new(size_t size) throw() {
- if (UseBiasedLocking) {
- const int alignment = markOopDesc::biased_lock_alignment;
- size_t aligned_size = size + (alignment - sizeof(intptr_t));
---- hotspot/src/share/vm/runtime/thread.hpp
-+++ hotspot/src/share/vm/runtime/thread.hpp
-@@ -104,7 +104,7 @@
- // Support for forcing alignment of thread objects for biased locking
- void* _real_malloc_address;
- public:
-- void* operator new(size_t size);
-+ void* operator new(size_t size) throw();
- void operator delete(void* p);
- private:
-
---- hotspot/src/share/vm/utilities/globalDefinitions.hpp
-+++ hotspot/src/share/vm/utilities/globalDefinitions.hpp
-@@ -421,7 +421,7 @@
- // Utility macros for compilers
- // used to silence compiler warnings
-
--#define Unused_Variable(var) var
-+#define Unused_Variable(var) (void)(var)
-
-
- //----------------------------------------------------------------------------------------------------
---- hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp
-+++ hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp
-@@ -260,7 +260,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/macros.hpp
-+++ hotspot/src/share/vm/utilities/macros.hpp
-@@ -194,6 +194,14 @@
- #define NOT_SHARK(code) code
- #endif
-
-+#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__)
-+#define BSD_ONLY(code) code
-+#define NOT_BSD(code)
-+#else
-+#define BSD_ONLY(code)
-+#define NOT_BSD(code) code
-+#endif
-+
- #if defined(IA32) || defined(AMD64)
- #define X86
- #define X86_ONLY(code) code
---- hotspot/src/share/vm/utilities/taskqueue.hpp
-+++ hotspot/src/share/vm/utilities/taskqueue.hpp
-@@ -389,7 +389,13 @@
- template<class E, unsigned int N>
- bool GenericTaskQueue<E, N>::pop_global(E& t) {
- Age oldAge = _age.get();
-- uint localBot = _bottom;
-+ // Architectures with weak memory model require a barrier here
-+ // to guarantee that bottom is not older than age,
-+ // which is crucial for the correctness of the algorithm.
-+#if !(defined SPARC || defined IA32 || defined AMD64)
-+ OrderAccess::fence();
-+#endif
-+ uint localBot = OrderAccess::load_acquire((volatile juint*)&_bottom);
- uint n_elems = size(localBot, oldAge.top());
- if (n_elems == 0) {
- return false;
-@@ -677,7 +683,7 @@
- template<class E, unsigned int N> inline bool
- GenericTaskQueue<E, N>::push(E t) {
- uint localBot = _bottom;
-- assert((localBot >= 0) && (localBot < N), "_bottom out of range.");
-+ assert(localBot < N, "_bottom out of range.");
- idx_t top = _age.top();
- uint dirty_n_elems = dirty_size(localBot, top);
- assert(dirty_n_elems < N, "n_elems out of range.");
---- hotspot/src/share/vm/utilities/vmError.cpp
-+++ hotspot/src/share/vm/utilities/vmError.cpp
-@@ -1043,7 +1043,7 @@
- const char* ptr = OnOutOfMemoryError;
- while ((cmd = next_OnError_command(buffer, sizeof(buffer), &ptr)) != NULL){
- tty->print("# Executing ");
--#if defined(LINUX)
-+#if defined(LINUX) || defined(_ALLBSD_SOURCE)
- tty->print ("/bin/sh -c ");
- #elif defined(SOLARIS)
- tty->print ("/usr/bin/sh -c ");
---- jdk/make/com/sun/java/pack/Makefile
-+++ jdk/make/com/sun/java/pack/Makefile
-@@ -62,6 +62,7 @@
-
-
- ifeq ($(STANDALONE),true)
-+ ifneq ($(SYSTEM_ZLIB),true)
- ZIPOBJDIR = $(OUTPUTDIR)/tmp/sun/java.util.zip/zip/$(OBJDIRNAME)
-
- ZIPOBJS = $(ZIPOBJDIR)/zcrc32.$(OBJECT_SUFFIX) \
-@@ -79,6 +80,10 @@
- ZINCLUDE=-I$(SHARE_SRC)/native/java/util/zip/zlib-1.1.3
- OTHER_CXXFLAGS += $(ZINCLUDE)
- LDDFLAGS += $(ZIPOBJS)
-+ else
-+ LDDFLAGS += %%ZLIB_LDFLAGS%%
-+ OTHER_CXXFLAGS += -DSYSTEM_ZLIB
-+ endif
- else
- OTHER_CXXFLAGS += -DNO_ZLIB -DUNPACK_JNI
- OTHER_LDLIBS += $(JVMLIB)
-@@ -100,7 +105,11 @@
- RES = $(OBJDIR)/$(PGRM).res
- else
- LDOUTPUT = -o #Have a space
-+ifeq ($(PLATFORM), bsd)
-+ LDDFLAGS += -pthread
-+else
- LDDFLAGS += -lc
-+endif
- OTHER_LDLIBS += $(LIBCXX)
- # setup the list of libraries to link in...
- ifeq ($(PLATFORM), linux)
---- jdk/make/com/sun/jmx/Makefile
-+++ jdk/make/com/sun/jmx/Makefile
-@@ -102,7 +102,7 @@
- # when available, we need to run with latest rmic version available. rmic
- # launch tool not built at this stage but we can invoke via rmi class.
-
--RMIC_JAVA = $(OUTPUTDIR)/bin/java
-+RMIC_JAVA = $(BOOTDIR)/bin/java
- # need to treat 64bit solaris differently
- ifeq ($(PLATFORM)-$(LIBARCH), solaris-amd64)
- RMIC_JAVA = $(OUTPUTDIR)/bin/amd64/java
---- jdk/make/com/sun/security/auth/module/Makefile
-+++ jdk/make/com/sun/security/auth/module/Makefile
-@@ -67,7 +67,7 @@
- include FILES_c_solaris.gmk
- endif # solaris
-
--ifeq ($(PLATFORM), linux)
-+ifneq (,$(findstring $(PLATFORM), linux bsd))
- LIBRARY = jaas_unix
- include FILES_export_unix.gmk
- include FILES_c_unix.gmk
---- jdk/make/com/sun/tools/attach/Exportedfiles.gmk
-+++ jdk/make/com/sun/tools/attach/Exportedfiles.gmk
-@@ -43,5 +43,7 @@
- sun/tools/attach/LinuxVirtualMachine.java
- endif
-
--
--
-+ifeq ($(PLATFORM), bsd)
-+FILES_export = \
-+ sun/tools/attach/BsdVirtualMachine.java
-+endif
---- jdk/make/com/sun/tools/attach/FILES_c.gmk
-+++ jdk/make/com/sun/tools/attach/FILES_c.gmk
-@@ -39,4 +39,7 @@
- LinuxVirtualMachine.c
- endif
-
--
-+ifeq ($(PLATFORM),bsd)
-+FILES_c = \
-+ BsdVirtualMachine.c
-+endif
---- jdk/make/com/sun/tools/attach/FILES_java.gmk
-+++ jdk/make/com/sun/tools/attach/FILES_java.gmk
-@@ -43,6 +43,11 @@
- sun/tools/attach/LinuxAttachProvider.java
- endif
-
-+ifeq ($(PLATFORM), bsd)
-+FILES_java += \
-+ sun/tools/attach/BsdAttachProvider.java
-+endif
-+
- #
- # Files that need to be copied
- #
---- jdk/make/com/sun/tools/attach/Makefile
-+++ jdk/make/com/sun/tools/attach/Makefile
-@@ -36,6 +36,9 @@
- ifeq ($(PLATFORM), linux)
- FILES_m = mapfile-linux
- endif
-+ifeq ($(PLATFORM), bsd)
-+FILES_m = mapfile-bsd
-+endif
- include $(BUILDDIR)/common/Mapfile-vers.gmk
-
- #
---- jdk/make/com/sun/tools/attach/mapfile-bsd
-+++ jdk/make/com/sun/tools/attach/mapfile-bsd
-@@ -30,14 +30,12 @@
- Java_sun_tools_attach_BsdVirtualMachine_checkPermissions;
- Java_sun_tools_attach_BsdVirtualMachine_close;
- Java_sun_tools_attach_BsdVirtualMachine_connect;
-- Java_sun_tools_attach_BsdVirtualMachine_getBsdThreadsManager;
-- Java_sun_tools_attach_BsdVirtualMachine_isBsdThreads;
- Java_sun_tools_attach_BsdVirtualMachine_open;
- Java_sun_tools_attach_BsdVirtualMachine_sendQuitTo;
-- Java_sun_tools_attach_BsdVirtualMachine_sendQuitToChildrenOf;
- Java_sun_tools_attach_BsdVirtualMachine_socket;
- Java_sun_tools_attach_BsdVirtualMachine_read;
- Java_sun_tools_attach_BsdVirtualMachine_write;
-+ Java_sun_tools_attach_BsdVirtualMachine_createAttachFile;
- local:
- *;
- };
---- jdk/make/common/Defs-bsd.gmk
-+++ jdk/make/common/Defs-bsd.gmk
-@@ -43,12 +43,6 @@
- # Get shared JDK settings
- include $(JDK_MAKE_SHARED_DIR)/Defs.gmk
-
--# Part of INCREMENTAL_BUILD mechanism.
--# Compiler emits things like: path/file.o: file.h
--# We want something like: relative_path/file.o relative_path/file.d: file.h
--CC_DEPEND = -MM
--CC_DEPEND_FILTER = $(SED) -e 's!$*\.$(OBJECT_SUFFIX)!$(dir $@)& $(dir $@)$*.$(DEPEND_SUFFIX)!g'
--
- ifndef PLATFORM_SRC
- PLATFORM_SRC = $(BUILDDIR)/../src/solaris
- endif # PLATFORM_SRC
-@@ -61,7 +55,7 @@
- endif
-
- # platform specific include files
--PLATFORM_INCLUDE_NAME = $(PLATFORM)
-+PLATFORM_INCLUDE_NAME = $(OS_NAME)
- PLATFORM_INCLUDE = $(INCLUDEDIR)/$(PLATFORM_INCLUDE_NAME)
-
- # suffix used for make dependencies files.
-@@ -108,6 +102,10 @@
- # as the default.
- CFLAGS_REQUIRED_amd64 += -fno-omit-frame-pointer -D_LITTLE_ENDIAN
- CFLAGS_REQUIRED_i586 += -fno-omit-frame-pointer -D_LITTLE_ENDIAN
-+ifeq ($(OS_VENDOR),Apple)
-+ # 16-byte stack re-alignment on 32-bit Darwin
-+ CFLAGS_REQUIRED_i586 += -mstackrealign
-+endif
- CFLAGS_REQUIRED_ia64 += -fno-omit-frame-pointer -D_LITTLE_ENDIAN
- CFLAGS_REQUIRED_ppc += -fsigned-char -D_BIG_ENDIAN
- CFLAGS_REQUIRED_sparcv9 += -m64 -mcpu=v9
-@@ -204,7 +202,7 @@
- CPP_ARCH_FLAGS += -D_$(ARCH)_
- endif
-
--CPPFLAGS_COMMON = $(CPP_ARCH_FLAGS) -DLINUX $(VERSION_DEFINES) \
-+CPPFLAGS_COMMON = $(CPP_ARCH_FLAGS) -D_ALLBSD_SOURCE $(VERSION_DEFINES) \
- -D_LARGEFILE64_SOURCE -D_GNU_SOURCE -D_REENTRANT
-
- ifeq ($(ARCH_DATA_MODEL), 64)
-@@ -217,33 +215,15 @@
- CPPFLAGS_DBG += -DLOGGING
- endif
-
--ifdef LIBRARY
-- # Libraries need to locate other libraries at runtime, and you can tell
-- # a library where to look by way of the dynamic runpaths (RPATH or RUNPATH)
-- # buried inside the .so. The $ORIGIN says to look relative to where
-- # the library itself is and it can be followed with relative paths from
-- # that. By default we always look in $ORIGIN, optionally we add relative
-- # paths if the Makefile sets LD_RUNPATH_EXTRAS to those relative paths.
-- # On Bsd we add a flag -z origin, not sure if this is necessary, but
-- # doesn't seem to hurt.
-- # The environment variable LD_LIBRARY_PATH will over-ride these runpaths.
-- # Try: 'readelf -d lib*.so' to see these settings in a library.
-- #
-- LDFLAGS_COMMON += -Xlinker -z -Xlinker origin -Xlinker -rpath -Xlinker \$$ORIGIN
-- LDFLAGS_COMMON += $(LD_RUNPATH_EXTRAS:%=-Xlinker -z -Xlinker origin -Xlinker -rpath -Xlinker \$$ORIGIN/%)
--endif
--
--EXTRA_LIBS += -lc
--
--LDFLAGS_DEFS_OPTION = -Xlinker -z -Xlinker defs
--LDFLAGS_COMMON += $(LDFLAGS_DEFS_OPTION)
--
- #
- # -L paths for finding and -ljava
- #
--LDFLAGS_OPT = -Xlinker -O1
- LDFLAGS_COMMON += -L$(LIBDIR)/$(LIBARCH)
-+
-+ifneq ($(OS_VENDOR), Apple)
-+LDFLAGS_OPT = -Xlinker -O1
- LDFLAGS_COMMON += -Wl,-soname=$(LIB_PREFIX)$(LIBRARY).$(LIBRARY_SUFFIX)
-+endif
-
- #
- # -static-libgcc is a gcc-3 flag to statically link libgcc, gcc-2.9x always
-@@ -264,9 +244,9 @@
- ifeq ($(VARIANT), OPT)
- ifneq ($(NO_STRIP), true)
- ifneq ($(DEBUG_BINARIES), true)
-- # Debug 'strip -g' leaves local function Elf symbols (better stack
-+ # Debug 'strip -S' leaves local function Elf symbols (better stack
- # traces)
-- POST_STRIP_PROCESS = $(STRIP) -g
-+ POST_STRIP_PROCESS = $(STRIP) -S
- endif
- endif
- endif
-@@ -276,13 +256,9 @@
- #
- LD_MAPFILE_FLAG = -Xlinker --version-script -Xlinker
-
--#
--# Support for Quantify.
--#
--ifdef QUANTIFY
--QUANTIFY_CMD = quantify
--QUANTIFY_OPTIONS = -cache-dir=/tmp/quantify -always-use-cache-dir=yes
--LINK_PRE_CMD = $(QUANTIFY_CMD) $(QUANTIFY_OPTIONS)
-+# Darwin does not support linker map files.
-+ifeq ($(OS_VENDOR), Apple)
-+LDNOMAP=true
- endif
-
- #
-@@ -311,24 +287,22 @@
- override HAVE_FILIOH = false
- override HAVE_GETHRTIME = false
- override HAVE_GETHRVTIME = false
-+ifeq ($(OS_VENDOR),Apple)
- override HAVE_SIGIGNORE = true
-+endif
- override LEX_LIBRARY = -lfl
- ifeq ($(STATIC_CXX),true)
- override LIBCXX = -Wl,-Bstatic -lstdc++ -lgcc -Wl,-Bdynamic
- else
--override LIBCXX = -lstdc++
-+override LIBCXX = %%CXX_LDFLAGS%%
- endif
- override LIBPOSIX4 =
- override LIBSOCKET =
- override LIBTHREAD =
- override MOOT_PRIORITIES = true
--override NO_INTERRUPTIBLE_IO = true
--override OPENWIN_HOME = /usr/X11R6
--ifeq ($(ARCH), amd64)
--override OPENWIN_LIB = $(OPENWIN_HOME)/lib64
--else
-+override NO_INTERRUPTIBLE_IO = false
-+override OPENWIN_HOME = $(X11_PATH)
- override OPENWIN_LIB = $(OPENWIN_HOME)/lib
--endif
- override OTHER_M4FLAGS = -D__GLIBC__ -DGNU_ASSEMBLER
- override SUN_CMM_SUBDIR =
- override THREADS_FLAG = native
-@@ -349,6 +323,14 @@
- # DPS (Displayable PostScript) is available on Solaris machines
- HAVE_DPS = no
-
-+ifeq ($(OS_VENDOR), FreeBSD)
-+ SYSTEM_ZLIB = true
-+endif
-+
-+ifeq ($(OS_VENDOR), OpenBSD)
-+ SYSTEM_ZLIB = true
-+endif
-+
- #
- # Japanese manpages
- #
---- jdk/make/common/Defs.gmk
-+++ jdk/make/common/Defs.gmk
-@@ -117,6 +117,24 @@
- _OUTPUTDIR=$(JDK_TOPDIR)/build/$(PLATFORM)-$(ARCH)
- endif
-
-+ifneq ($(PLATFORM), windows)
-+ ifdef ALT_X11_PATH
-+ X11_PATH = $(ALT_X11_PATH)
-+ else
-+ X11_PATH = /usr/X11R6
-+ endif
-+
-+ ifdef ALT_PACKAGE_PATH
-+ PACKAGE_PATH = $(ALT_PACKAGE_PATH)
-+ else
-+ ifeq ($(PLATFORM), linux)
-+ PACKAGE_PATH = /usr
-+ else
-+ PACKAGE_PATH = /usr/local
-+ endif
-+ endif
-+endif
-+
- #
- # Get platform definitions
- #
-@@ -152,6 +170,7 @@
-
- ifdef ALT_FREETYPE_LIB_PATH
- FREETYPE_LIB_PATH = $(ALT_FREETYPE_LIB_PATH)
-+ USING_SYSTEM_FT_LIB=true
- else
- ifeq ($(DEVTOOLS_FT_DIR_EXISTS), true)
- FREETYPE_LIB_PATH = $(DEVTOOLS_FT_DIR)/lib
-@@ -216,6 +235,10 @@
- LDLIBS_COMMON = -ldl
- endif
-
-+ ifeq ($(PLATFORM), bsd)
-+ LDLIBS_COMMON = -pthread
-+ endif
-+
- endif # PROGRAM
-
- LDLIBS_COMMON += $(EXTRA_LIBS)
---- jdk/make/common/Program.gmk
-+++ jdk/make/common/Program.gmk
-@@ -67,11 +67,27 @@
- # Create a dependency on libjli (Java Launcher Infrastructure)
- #
- # On UNIX, this is a relative dependency using $ORIGIN. Unfortunately, to
--# do this reliably on Linux takes a different syntax than Solaris.
-+# do this reliably on Linux takes a different syntax than Solaris. BSD's
-+# don't support $ORIGIN so build an archive instead.
- #
- # On Windows, this is done by using the same directory as the executable
- # itself, as with all the Windows libraries.
- #
-+ifeq ($(PLATFORM), bsd)
-+ ifeq ($(OS_VENDOR), Apple)
-+ LDFLAGS += -Wl,-all_load
-+ LDFLAGS += $(OUTPUTDIR)/tmp/java/jli/$(OBJDIRNAME)/static/libjli.a
-+ else
-+ LDFLAGS += -Wl,--whole-archive
-+ LDFLAGS += $(OUTPUTDIR)/tmp/java/jli/$(OBJDIRNAME)/static/libjli.a
-+ LDFLAGS += -Wl,--no-whole-archive
-+# Work-around an dlsym(RTLD_DEFAULT) bug in at least FreeBSD & OpenBSD
-+ LDFLAGS += -Wl,--export-dynamic
-+ endif
-+ ifeq ($(SYSTEM_ZLIB),true)
-+ OTHER_LDLIBS += %%ZLIB_LDFLAGS%%
-+ endif
-+endif
- ifneq (,$(findstring $(PLATFORM), linux solaris)) # UNIX systems
- LDFLAGS += -L $(LIBDIR)/$(LIBARCH)/jli
- OTHER_LDLIBS += -ljli
-@@ -163,6 +179,10 @@
- THREADLIBS = $(LIBTHREAD)
- endif # USE_PTHREADS
-
-+ifeq ($(PLATFORM), bsd)
-+THREADLIBS = -pthread
-+endif
-+
- #
- # This rule only applies on unix. It supports quantify and its ilk.
- #
-@@ -218,15 +238,19 @@
-
-
- ifneq ($(PLATFORM), windows)
-+ifneq ($(PLATFORM), bsd)
- HAVE_GETHRTIME=true
- endif
-+endif
-
- ifeq ($(HAVE_GETHRTIME),true)
- OTHER_CPPFLAGS += -DHAVE_GETHRTIME
- endif
-
- OTHER_INCLUDES += -I$(LAUNCHER_SHARE_SRC)/bin -I$(LAUNCHER_PLATFORM_SRC)/bin
-+ifneq ($(SYSTEM_ZLIB),true)
- OTHER_INCLUDES += -I$(SHARE_SRC)/native/java/util/zip/zlib
-+endif
-
- OTHER_CPPFLAGS += -DPROGNAME='"$(PROGRAM)"'
- VERSION_DEFINES += -DFULL_VERSION='"$(FULL_VERSION)"'
---- jdk/make/common/Release.gmk
-+++ jdk/make/common/Release.gmk
-@@ -151,14 +151,13 @@
- tnameserv.1 \
- unpack200.1
-
--ifeq ($(ARCH_DATA_MODEL),32)
-+ifeq ($(BUILD_DEPLOY), true)
- JRE_MAN_PAGES += javaws.1
- endif
-
- JDK_MAN_PAGES = \
- $(JRE_MAN_PAGES) \
- appletviewer.1 \
-- apt.1 \
- extcheck.1 \
- idlj.1 \
- jar.1 \
-@@ -197,6 +196,11 @@
- JA_DIRNAME=ja_JP.$(JA_SOURCE_ENCODING)
- endif # linux
-
-+ifeq ($(PLATFORM), bsd)
-+ MANBASEDIRS=$(JDK_TOPDIR)/src/bsd/doc $(IMPORTDOCDIR)
-+ MAN1SUBDIR = man
-+endif
-+
- define copy-man-pages
- $(MKDIR) -p $1/man/man1
- for manbase in $(MANBASEDIRS:%=%/$(MAN1SUBDIR)) ; do \
-@@ -319,6 +323,12 @@
- SOURCE_DIRS += $(CLOSED_SRC)/share/classes
- endif
-
-+ifeq ($(OS_VENDOR), OpenBSD)
-+ FILES_FROM_ARG=-I
-+else
-+ FILES_FROM_ARG=-T
-+endif
-+
-
- #
- # Specific files and directories that will be filtered out from above areas.
-@@ -639,6 +649,8 @@
- $(BOOT_JAVA_CMD) -jar $(JARSPLIT_JARFILE) \
- $(TOTAL_JAR_FILELIST) \
- -o $(RT_JAR_FILELIST) $(RES_JAR_FILELIST)
-+ $(EGREP) -v hotspot.log $(RES_JAR_FILELIST) > $(RES_JAR_FILELIST).temp
-+ $(MV) $(RES_JAR_FILELIST).temp $(RES_JAR_FILELIST)
- @$(java-vm-cleanup)
-
- # Create the manifest file.
-@@ -985,7 +997,7 @@
- @# generated by the more efficient solaris/windows method of copying files.
- @# So for Linux, make use of the -T option (like Solaris' -I option) of
- @# obtaining the list of files from a file. MKS tar has no such option.
-- ifeq ($(PLATFORM), linux)
-+ ifneq (,$(findstring $(PLATFORM), linux bsd))
- for d in $(SOURCE_DIRS); do \
- $(RM) $(ABS_TEMPDIR)/src-files.list; \
- ($(CD) $$d && \
-@@ -998,7 +1010,7 @@
- done ; \
- ) ; \
- if [ -f $(ABS_TEMPDIR)/src-files.list ] ; then \
-- ($(CD) $$d && $(TAR) cf - -T $(ABS_TEMPDIR)/src-files.list ) \
-+ ($(CD) $$d && $(TAR) cf - $(FILES_FROM_ARG) $(ABS_TEMPDIR)/src-files.list ) \
- | ($(CD) $(JDK_IMAGE_DIR)/src && $(TAR) xf -); \
- fi; \
- done
---- jdk/make/common/shared/Compiler-gcc.gmk
-+++ jdk/make/common/shared/Compiler-gcc.gmk
-@@ -74,6 +74,24 @@
-
- endif
-
-+ifeq ($(PLATFORM), bsd)
-+
-+ # Settings specific to BSD
-+ CC ?= $(COMPILER_PATH)gcc
-+ CPP ?= $(COMPILER_PATH)gcc -E
-+ CXX ?= $(COMPILER_PATH)g++
-+ REQUIRED_CC_VER = 3.2
-+
-+ # Option used to create a shared library
-+ # Option used to create a shared library
-+ ifeq ($(OS_VENDOR), Apple)
-+ SHARED_LIBRARY_FLAG = -dynamiclib
-+ else
-+ SHARED_LIBRARY_FLAG = -shared
-+ endif
-+ SUN_COMP_VER := $(shell $(CC) --verbose 2>&1 )
-+endif
-+
- ifeq ($(PLATFORM), solaris)
-
- # Settings specific to Solaris
---- jdk/make/common/shared/Compiler.gmk
-+++ jdk/make/common/shared/Compiler.gmk
-@@ -37,8 +37,8 @@
- override CC_VERSION = sun
- endif
-
--# Linux uses GNU compilers by default
--ifeq ($(PLATFORM), linux)
-+# Linux & BSD uses GNU compilers by default
-+ifneq (,$(findstring $(PLATFORM), linux bsd))
- override CC_VERSION = gcc
- endif
-
---- jdk/make/common/shared/Defs-bsd.gmk
-+++ jdk/make/common/shared/Defs-bsd.gmk
-@@ -70,7 +70,7 @@
- endef
-
- # Location on system where jdk installs might be
--USRJDKINSTANCES_PATH =/opt/java
-+USRJDKINSTANCES_PATH = $(PACKAGE_PATH)
-
- # UNIXCOMMAND_PATH: path to where the most common Unix commands are.
- # NOTE: Must end with / so that it could be empty, allowing PATH usage.
-@@ -123,7 +123,7 @@
- ifneq "$(origin ALT_DEVTOOLS_PATH)" "undefined"
- DEVTOOLS_PATH :=$(call PrefixPath,$(ALT_DEVTOOLS_PATH))
- else
-- DEVTOOLS_PATH =/usr/bin/
-+ DEVTOOLS_PATH =$(PACKAGE_PATH)/bin/
- endif
-
- # _BOOTDIR1: First choice for a Bootstrap JDK, previous released JDK.
-@@ -162,16 +162,12 @@
- endif
- MOTIF_INCLUDE = $(MOTIF_DIR)/include
-
--# GCC29_COMPILER_PATH: is the path to where the gcc 2.9 compiler is installed
--# NOTE: Must end with / so that it could be empty, allowing PATH usage.
--ifneq "$(origin ALT_GCC29_COMPILER_PATH)" "undefined"
-- GCC29_COMPILER_PATH :=$(call PrefixPath,$(ALT_GCC29_COMPILER_PATH))
-+ifeq ($(OS_VENDOR), Apple)
-+ _CUPS_HEADERS_PATH=/usr/include
- else
-- GCC29_COMPILER_PATH = $(JDK_DEVTOOLS_DIR)/$(PLATFORM)/gcc29/usr/
-+ _CUPS_HEADERS_PATH=$(PACKAGE_PATH)/include
- endif
-
--_CUPS_HEADERS_PATH=/usr/include
--
- # Import JDK images allow for partial builds, components not built are
- # imported (or copied from) these import areas when needed.
-
---- jdk/make/common/shared/Defs-utils.gmk
-+++ jdk/make/common/shared/Defs-utils.gmk
-@@ -80,6 +80,13 @@
- endif
- endif
-
-+ifeq ($(PLATFORM),bsd)
-+ UTILS_COMMAND_PATH=$(UNIXCOMMAND_PATH)
-+ UTILS_USR_BIN_PATH=$(USRBIN_PATH)
-+ UTILS_CCS_BIN_PATH=$(USRBIN_PATH)
-+ UTILS_DEVTOOL_PATH=$(DEVTOOLS_PATH)
-+endif
-+
- # Utilities
- ADB = $(UTILS_COMMAND_PATH)adb
- AR = $(UTILS_CCS_BIN_PATH)ar
-@@ -201,3 +208,32 @@
- ECHO = /usr/bin/echo
- endif
-
-+# BSD specific
-+ifeq ($(PLATFORM),bsd)
-+ BASENAME = $(UTILS_USR_BIN_PATH)basename
-+ EGREP = $(UTILS_USR_BIN_PATH)egrep
-+ EXPR = $(UTILS_COMMAND_PATH)expr
-+ FMT = $(UTILS_USR_BIN_PATH)fmt
-+ GREP = $(UTILS_USR_BIN_PATH)grep
-+ GUNZIP = $(UTILS_USR_BIN_PATH)gunzip
-+ ID = $(UTILS_USR_BIN_PATH)id
-+ MSGFMT = $(UTILS_DEVTOOL_PATH)msgfmt
-+ SED = $(UTILS_USR_BIN_PATH)sed
-+ SORT = $(UTILS_USR_BIN_PATH)sort
-+ TEST = $(UTILS_COMMAND_PATH)test
-+ TOUCH = $(UTILS_USR_BIN_PATH)touch
-+ TRUE = $(UTILS_USR_BIN_PATH)true
-+ UNAME = $(UTILS_USR_BIN_PATH)uname
-+ # BSD OS_VENDOR specific
-+ ifeq ($(OS_VENDOR), Apple)
-+ NAWK = $(UTILS_USR_BIN_PATH)awk
-+ UNZIPSFX = $(UTILS_USR_BIN_PATH)unzipsfx
-+ ZIPEXE = $(UTILS_USR_BIN_PATH)zip
-+ else
-+ UNZIP = $(UTILS_DEVTOOL_PATH)unzip
-+ endif
-+ ifneq ($(OS_VENDOR), OpenBSD)
-+ CPIO = $(UTILS_USR_BIN_PATH)cpio
-+ TAR = $(UTILS_USR_BIN_PATH)tar
-+ endif
-+endif
---- jdk/make/common/shared/Platform.gmk
-+++ jdk/make/common/shared/Platform.gmk
-@@ -214,6 +214,76 @@
- MB_OF_MEMORY := $(shell free -m | fgrep Mem: | awk '{print $$2;}' )
- endif
-
-+ifeq ($(SYSTEM_UNAME), FreeBSD)
-+ PLATFORM = bsd
-+ OS_NAME = freebsd
-+ OS_VENDOR = FreeBSD
-+ REQUIRED_OS_VERSION = 6.0
-+endif
-+
-+ifeq ($(SYSTEM_UNAME), Darwin)
-+ PLATFORM = bsd
-+ OS_NAME = darwin
-+ OS_VENDOR = Apple
-+ REQUIRED_OS_VERSION = 8.0
-+endif
-+
-+ifeq ($(SYSTEM_UNAME), NetBSD)
-+ PLATFORM = bsd
-+ OS_NAME = netbsd
-+ OS_VENDOR = NetBSD
-+ REQUIRED_OS_VERSION = 3.0
-+endif
-+
-+ifeq ($(SYSTEM_UNAME), OpenBSD)
-+ PLATFORM = bsd
-+ OS_NAME = openbsd
-+ OS_VENDOR = OpenBSD
-+ REQUIRED_OS_VERSION = 4.2
-+endif
-+
-+# Platform settings specific to BSD
-+ifeq ($(PLATFORM), bsd)
-+ OS_VERSION := $(shell uname -r)
-+ # Arch and OS name/version
-+ mach := $(shell uname -m)
-+ archExpr = case "$(mach)" in \
-+ i[3-9]86) \
-+ echo i586 \
-+ ;; \
-+ *) \
-+ echo $(mach) \
-+ ;; \
-+ esac
-+ ARCH := $(shell $(archExpr) )
-+ ARCH_FAMILY := $(ARCH)
-+
-+ # i586 and sparc are 32 bit, amd64 and sparc64 are 64
-+ ifneq (,$(findstring $(ARCH), i586 sparc))
-+ ARCH_DATA_MODEL=32
-+ else
-+ ARCH_DATA_MODEL=64
-+ endif
-+
-+ # Need to maintain the jre/lib/i386 location for 32-bit Intel
-+ ifeq ($(ARCH), i586)
-+ LIBARCH = i386
-+ else
-+ LIBARCH = $(ARCH)
-+ endif
-+
-+ # Value of Java os.arch property
-+ ARCHPROP = $(LIBARCH)
-+
-+ # Suffix for file bundles used in previous release
-+ BUNDLE_FILE_SUFFIX=.tar.gz
-+ # Minimum disk space needed as determined by running 'du -sk' on
-+ # a fully built workspace.
-+ REQUIRED_FREE_SPACE=1500000
-+ # How much RAM does this machine have:
-+ MB_OF_MEMORY=$(shell sysctl -n hw.physmem | awk '{print int($$NF / 1048576); }' )
-+endif
-+
- # Windows with and without CYGWIN will be slightly different
- ifeq ($(SYSTEM_UNAME), Windows_NT)
- PLATFORM = windows
-@@ -445,6 +515,15 @@
- export MIN_VM_MEMORY
- endif
-
-+# Darwin-specific Overrides
-+ifeq ($(SYSTEM_UNAME),Darwin)
-+ # The suffix applied to runtime libraries
-+ LIBRARY_SUFFIX = dylib
-+ # The suffix applied to link libraries
-+ LIB_SUFFIX = dylib
-+endif
-+
-+
- # If blanks in the username, use the first 4 words and pack them together
- _USER1:=$(subst ', ,$(_USER))
- _USER2:=$(subst ", ,$(_USER1))
---- jdk/make/common/shared/Sanity-Settings.gmk
-+++ jdk/make/common/shared/Sanity-Settings.gmk
-@@ -245,6 +245,7 @@
- ALL_SETTINGS+=$(call addAltSetting,FREETYPE_HEADERS_PATH)
- ALL_SETTINGS+=$(call addAltSetting,FREETYPE_LIB_PATH)
- endif
-+ALL_SETTINGS+=$(call addAltSetting,X11_PATH)
- ALL_SETTINGS+=$(call addOptionalSetting,PLUG_LIBRARY_NAMES)
-
- ifdef OPENJDK
---- jdk/make/common/shared/Sanity.gmk
-+++ jdk/make/common/shared/Sanity.gmk
-@@ -142,6 +142,11 @@
- $(EGREP) "\#define" | $(NAWK) '{print $$3}')
- endif
-
-+ifeq ($(PLATFORM), bsd)
-+ FREE_SPACE := $(shell BLOCKSIZE=512 $(DF) $(OUTPUTDIR) | $(TAIL) -1 | $(NAWK) '{print $$2;}')
-+ TEMP_FREE_SPACE := $(shell BLOCKSIZE=512 $(DF) $(TEMP_DISK) | $(TAIL) -1 | $(NAWK) '{print $$2;}')
-+endif
-+
- # Get the version numbers of what we are using
- _MAKE_VER :=$(shell $(MAKE) --version 2>&1 | $(HEAD) -n 1)
- _ZIP_VER :=$(shell $(ZIPEXE) -help 2>&1 | $(HEAD) -n 4 | $(EGREP) '^Zip')
---- jdk/make/java/Makefile
-+++ jdk/make/java/Makefile
-@@ -49,7 +49,7 @@
- endif
- endif # PLATFORM
-
--ifeq ($(PLATFORM), linux)
-+ifneq (,$(findstring $(PLATFORM), linux bsd))
- SUBDIRS += jexec
- endif # PLATFORM
-
---- jdk/make/java/hpi/hpi_common.gmk
-+++ jdk/make/java/hpi/hpi_common.gmk
-@@ -86,5 +86,9 @@
- # Things that must be linked in.
- #
- ifneq ($(PLATFORM), windows)
-+ifeq ($(PLATFORM), bsd)
-+OTHER_LDLIBS += $(LIBM)
-+else
- OTHER_LDLIBS += $(LIBSOCKET) -lnsl $(LIBM) -ldl
- endif
-+endif
---- jdk/make/java/hpi/native/Makefile
-+++ jdk/make/java/hpi/native/Makefile
-@@ -72,11 +72,18 @@
- ifeq ($(MOOT_PRIORITIES),true)
- OTHER_CPPFLAGS += -DMOOT_PRIORITIES
- endif
-+ifeq ($(PLATFORM), bsd)
-+LIBPOSIX4 =
-+OTHER_LDLIBS += -pthread
-+else
- LIBPOSIX4 = -lposix4
- OTHER_LDLIBS += -lpthread $(LIBPOSIX4)
- endif
-+endif
-
-+ifneq ($(PLATFORM), bsd)
- HAVE_GETHRVTIME=true
-+endif
- ifeq ($(HAVE_GETHRVTIME),true)
- OTHER_CPPFLAGS += -DHAVE_GETHRVTIME
- endif
---- jdk/make/java/instrument/Makefile
-+++ jdk/make/java/instrument/Makefile
-@@ -102,6 +102,19 @@
- # equivalent of strcasecmp is stricmp on Windows
- CPPFLAGS_COMMON += -Dstrcasecmp=stricmp
- else
-+ifeq ($(PLATFORM), bsd)
-+ ifeq ($(OS_VENDOR), Apple)
-+ LDFLAGS += -Wl,-all_load
-+ LDFLAGS += $(OUTPUTDIR)/tmp/java/jli/$(OBJDIRNAME)/static/libjli.a
-+ else
-+ LDFLAGS += -Wl,--whole-archive
-+ LDFLAGS += $(OUTPUTDIR)/tmp/java/jli/$(OBJDIRNAME)/static/libjli.a
-+ LDFLAGS += -Wl,--no-whole-archive
-+ endif
-+# Use CPPFLAGS instead of OTHER_INCLUDES to force this last
-+ CPPFLAGS += %%ICONV_CPPFLAGS%%
-+ OTHER_LDLIBS += %%ICONV_LDFLAGS%%
-+else
- LDFLAGS += -L $(LIBDIR)/$(LIBARCH)/jli
- OTHER_LDLIBS += -ljli
- OTHER_LDLIBS += -ldl
-@@ -114,6 +127,7 @@
- LDFLAGS += -Wl,-rpath -Wl,\$$ORIGIN/jli
- endif
- endif
-+endif
-
- #
- # Library to compile.
---- jdk/make/java/java/Makefile
-+++ jdk/make/java/java/Makefile
-@@ -165,8 +165,10 @@
- # Is the altzone extern documented in ctime(3C) available?
- #
- ifneq ($(PLATFORM), windows)
-+ifneq ($(PLATFORM), bsd)
- HAVE_ALTZONE=true
- endif
-+endif
-
- ifeq ($(HAVE_ALTZONE),true)
- OTHER_CPPFLAGS += -DHAVE_ALTZONE
-@@ -203,9 +205,14 @@
- OTHER_LDLIBS += $(JVMLIB) -libpath:$(OBJDIR)/../../../fdlibm/$(OBJDIRNAME) fdlibm.lib \
- -libpath:$(OBJDIR)/../../../verify/$(OBJDIRNAME) verify.lib
- else
-+ifeq ($(PLATFORM), bsd)
-+OTHER_LDLIBS += $(JVMLIB) -lverify \
-+ -L$(OBJDIR)/../../../fdlibm/$(OBJDIRNAME) -lfdlibm.$(ARCH)
-+else
- OTHER_LDLIBS += $(JVMLIB) -lverify $(LIBSOCKET) -lnsl -ldl \
- -L$(OBJDIR)/../../../fdlibm/$(OBJDIRNAME) -lfdlibm.$(ARCH)
- endif
-+endif
-
- #
- # Rules.
---- jdk/make/java/java/genlocales.gmk
-+++ jdk/make/java/java/genlocales.gmk
-@@ -76,11 +76,16 @@
- $(LocaleDataMetaInfo_Dest):$(LocaleDataMetaInfo_Src) $(LOCALEGEN_SH)
- @$(RM) $@.tmp.euro $@.tmp.noneuro;
- @$(prep-target)
-- @$(ECHO) $(subst .properties,'\n',$(Euro_Resources_properties)) > $@.tmp.euro;
-- @$(ECHO) $(subst .java,'\n',$(Euro_Resources_java)) >> $@.tmp.euro;
-- @$(ECHO) $(subst .properties,'\n',$(NonEuro_Resources_properties)) > $@.tmp.noneuro;
-- @$(ECHO) $(subst .java,'\n',$(NonEuro_Resources_java)) >> $@.tmp.noneuro;
-- NAWK="$(NAWK)" SED="$(SED)" $(SH) $(LOCALEGEN_SH) $(RESOURCE_NAMES) $@.tmp.euro \
-+ @$(ECHO) $(Euro_Resources_properties) | $(SED) -e s@.properties@'\
-+'@g > $@.tmp.euro;
-+ @$(ECHO) $(Euro_Resources_java) | $(SED) -e s@.java@'\
-+'@g >> $@.tmp.euro;
-+ @$(ECHO) $(NonEuro_Resources_properties) | $(SED) -e s@.properties@'\
-+'@g > $@.tmp.noneuro;
-+ @$(ECHO) $(NonEuro_Resources_java) | $(SED) -e s@.java@'\
-+'@g >> $@.tmp.noneuro;
-+ NAWK="$(NAWK)" SED="$(SED)" SORT="$(SORT)" \
-+ $(SH) $(LOCALEGEN_SH) $(RESOURCE_NAMES) $@.tmp.euro \
- $@.tmp.noneuro $< $@
- @$(RM) $@.tmp.euro $@.tmp.noneuro;
-
---- jdk/make/java/java/localegen.sh
-+++ jdk/make/java/java/localegen.sh
-@@ -29,7 +29,7 @@
- # This script is to generate the supported locale list string and replace the
- # LocaleDataMetaInfo-XLocales.java in <ws>/src/share/classes/sun/util
- #
--# NAWK & SED is passed in as environment variables.
-+# SORT, NAWK & SED is passed in as environment variables.
- #
-
- # A list of resource base name list;
-@@ -47,7 +47,7 @@
- localelist=
- getlocalelist() {
- localelist=""
-- localelist=`$NAWK -F$1_ '{print $2}' $2 | sort`
-+ localelist=`$NAWK -F$1_ '{print $2}' $2 | $SORT`
- }
-
- sed_script="$SED -e \"s@^#warn .*@// -- This file was mechanically generated: Do not edit! -- //@\" "
-@@ -55,9 +55,9 @@
- for FILE in $RESOURCE_NAMES
- do
- getlocalelist $FILE $EURO_FILES_LIST
-- sed_script=$sed_script"-e \"s/#"$FILE"_EuroLocales#/$localelist/g\" "
-+ sed_script=$sed_script"-e \"s@#"$FILE"_EuroLocales#@$localelist@g\" "
- getlocalelist $FILE $NONEURO_FILES_LIST
-- sed_script=$sed_script"-e \"s/#"$FILE"_NonEuroLocales#/$localelist/g\" "
-+ sed_script=$sed_script"-e \"s@#"$FILE"_NonEuroLocales#@$localelist@g\" "
- done
-
- sed_script=$sed_script"$INPUT_FILE > $OUTPUT_FILE"
---- jdk/make/java/java_hprof_demo/Makefile
-+++ jdk/make/java/java_hprof_demo/Makefile
-@@ -83,8 +83,10 @@
- ifeq ($(PLATFORM), windows)
- OTHER_LDLIBS += wsock32.lib winmm.lib
- else
-+ifneq ($(PLATFORM), bsd)
- OTHER_LDLIBS += $(LIBSOCKET) -lnsl -ldl
- endif
-+endif
-
- #
- # Tell library.gmk to copy the txt file first
---- jdk/make/java/jli/Makefile
-+++ jdk/make/java/jli/Makefile
-@@ -44,7 +44,9 @@
-
- include $(BUILDDIR)/common/Defs.gmk
-
-+ifneq ($(SYSTEM_ZLIB),true)
- ZIP_SRC = $(SHARE_SRC)/native/java/util/zip/zlib
-+endif
- LAUNCHER_SHARE_SRC = $(SHARE_SRC)/bin
- LAUNCHER_PLATFORM_SRC = $(PLATFORM_SRC)/bin
-
-@@ -55,7 +57,10 @@
- parse_manifest.c \
- version_comp.c \
- wildcard.c \
-- jli_util.c \
-+ jli_util.c
-+
-+ifneq ($(SYSTEM_ZLIB),true)
-+FILES_c += \
- inflate.c \
- infblock.c \
- inftrees.c \
-@@ -64,6 +69,7 @@
- infutil.c \
- zadler32.c \
- zutil.c
-+endif
-
- OTHER_CPPFLAGS += -DEXPAND_CLASSPATH_WILDCARDS
-
-@@ -95,7 +101,11 @@
-
- OTHER_INCLUDES += -I$(LAUNCHER_SHARE_SRC)
- OTHER_INCLUDES += -I$(LAUNCHER_PLATFORM_SRC)
--OTHER_INCLUDES += -I$(ZIP_SRC)
-+ifneq ($(SYSTEM_ZLIB),true)
-+ OTHER_INCLUDES += -I$(ZIP_SRC)
-+else
-+ LDLIBS += %%ZLIB_LDFLAGS%%
-+endif
-
- #
- # Library to compile.
-@@ -133,8 +143,29 @@
-
- endif # PLATFORM
-
-+ifeq ($(PLATFORM), bsd)
-+
-+STATIC_LIBRARY_DIR = $(OBJDIR)/static
-+STATIC_LIBRARY_NAME = lib$(LIBRARY).a
-+STATIC_LIBRARY = $(STATIC_LIBRARY_DIR)/$(STATIC_LIBRARY_NAME)
-+
-+$(STATIC_LIBRARY_DIR): $(OBJDIR)
-+ @$(MKDIR) $(STATIC_LIBRARY_DIR)
-+
-+$(STATIC_LIBRARY): $(STATIC_LIBRARY_DIR)
-+ @$(prep-target)
-+ $(AR) -r $@ $(FILES_o)
-+
-+library:: $(STATIC_LIBRARY)
-+
-+endif # PLATFORM
-+
- #
- # Add to ambient vpath so we pick up the library files
- #
--vpath %.c $(LAUNCHER_SHARE_SRC) $(ZIP_SRC)
-+vpath %.c $(LAUNCHER_SHARE_SRC)
-+ifneq ($(SYSTEM_ZLIB),true)
-+ vpath %.c $(ZIP_SRC)
-+endif
-+
-
---- jdk/make/java/management/Makefile
-+++ jdk/make/java/management/Makefile
-@@ -85,6 +85,11 @@
- OTHER_INCLUDES += \
- -I$(SHARE_SRC)/native/sun/management
-
-+ifeq ($(PLATFORM),bsd)
-+OTHER_INCLUDES += \
-+ -I$(PLATFORM_SRC)/hpi/include
-+endif
-+
- ifeq ($(PLATFORM),windows)
- OTHER_LDLIBS += $(JVMLIB)
- endif
---- jdk/make/java/net/FILES_c.gmk
-+++ jdk/make/java/net/FILES_c.gmk
-@@ -44,6 +44,10 @@
- FILES_c += linux_close.c
- endif
-
-+ifeq ($(OS_VENDOR), FreeBSD)
-+ FILES_c += bsd_close.c
-+endif
-+
- ifeq ($(PLATFORM), windows)
- FILES_c += TwoStacksPlainSocketImpl.c
- FILES_c += DualStackPlainSocketImpl.c
---- jdk/make/java/net/Makefile
-+++ jdk/make/java/net/Makefile
-@@ -94,6 +94,12 @@
-
- include $(BUILDDIR)/common/Library.gmk
-
-+ifeq ($(PLATFORM), bsd)
-+ ifdef DONT_ENABLE_IPV6
-+ OTHER_CFLAGS += -DDONT_ENABLE_IPV6
-+ endif
-+ OTHER_LDLIBS = $(JVMLIB) -pthread
-+else
- ifeq ($(PLATFORM), windows)
- OTHER_LDLIBS = ws2_32.lib $(JVMLIB) \
- secur32.lib iphlpapi.lib delayimp.lib \
-@@ -104,6 +110,7 @@
- ifeq ($(PLATFORM), linux)
- OTHER_LDLIBS += -lpthread
- endif
-+endif # PLATFORM == bsd
-
- CLASSES.export += java.lang.Integer java.io.FileDescriptor java.net.InetAddressImplFactory java.net.Inet4AddressImpl java.net.Inet6AddressImpl
-
---- jdk/make/java/nio/Makefile
-+++ jdk/make/java/nio/Makefile
-@@ -104,6 +104,28 @@
- sun/nio/ch/NativeThread.java
- endif # PLATFORM = linux
-
-+ifeq ($(PLATFORM), bsd)
-+FILES_java += \
-+ sun/nio/ch/AbstractPollSelectorImpl.java \
-+ sun/nio/ch/InheritedChannel.java \
-+ sun/nio/ch/KqueueArrayWrapper.java \
-+ sun/nio/ch/KqueueSelectorProvider.java \
-+ sun/nio/ch/KqueueSelectorImpl.java \
-+ sun/nio/ch/PollSelectorProvider.java \
-+ sun/nio/ch/PollSelectorImpl.java
-+
-+FILES_c += \
-+ KqueueArrayWrapper.c \
-+ PollArrayWrapper.c \
-+ InheritedChannel.c \
-+ NativeThread.c
-+
-+FILES_export += \
-+ sun/nio/ch/KqueueArrayWrapper.java \
-+ sun/nio/ch/InheritedChannel.java \
-+ sun/nio/ch/NativeThread.java
-+endif # PLATFORM = bsd
-+
- # Find platform-specific C source files
- #
- vpath %.c $(PLATFORM_SRC)/native/sun/nio/ch
-@@ -126,6 +148,11 @@
- -I$(PLATFORM_SRC)/native/java/net \
- -I$(CLASSHDRDIR)/../../../java.lang/java/CClassHeaders
-
-+ifeq ($(PLATFORM), bsd)
-+OTHER_INCLUDES += \
-+ -I$(PLATFORM_SRC)/hpi/include
-+endif
-+
- ifeq ($(PLATFORM),windows)
- OTHER_LDLIBS += $(JVMLIB) ws2_32.lib \
- -libpath:$(LIBDIR) java.lib \
-@@ -136,6 +163,9 @@
- ifeq ($(PLATFORM), linux)
- OTHER_LDLIBS += -L$(LIBDIR)/$(LIBARCH) -ljava -lnet -lpthread -ldl
- endif
-+ifeq ($(PLATFORM), bsd)
-+OTHER_LDLIBS += -L$(LIBDIR)/$(LIBARCH) -ljava -lnet -pthread
-+endif
- ifeq ($(PLATFORM), solaris)
- OTHER_LDLIBS += $(JVMLIB) $(LIBSOCKET) -lposix4 -ldl \
- -L$(LIBDIR)/$(LIBARCH) -ljava -lnet
-@@ -158,6 +188,9 @@
- ifeq ($(PLATFORM), linux)
- FILES_m = mapfile-linux
- endif
-+ifeq ($(PLATFORM), bsd)
-+FILES_m = mapfile-bsd
-+endif
- include $(BUILDDIR)/common/Mapfile-vers.gmk
- include $(BUILDDIR)/common/Library.gmk
-
---- jdk/make/java/npt/Makefile
-+++ jdk/make/java/npt/Makefile
-@@ -65,6 +65,18 @@
- OTHER_LCF += -export:nptInitialize -export:nptTerminate
- endif
-
-+# Add location of iconv headers & libs
-+ifeq ($(PLATFORM), bsd)
-+ ifeq ($(OS_VENDOR), Apple)
-+ OTHER_LDLIBS += -liconv
-+ else
-+ ifneq ($(OS_NAME), netbsd)
-+ CPPFLAGS += %%ICONV_CPPFLAGS%%
-+ OTHER_LDLIBS += %%ICONV_LDFLAGS%%
-+ endif
-+ endif
-+endif
-+
- #
- # Add to ambient vpath so we pick up the library files
- #
---- jdk/make/java/redist/FILES.gmk
-+++ jdk/make/java/redist/FILES.gmk
-@@ -38,6 +38,14 @@
- $(LIBDIR)/fonts/LucidaSansDemiBold.ttf \
-
- ifeq ($(PLATFORM), linux)
-+NEED_OBLIQUE_FONTS = true
-+endif
-+
-+ifeq ($(PLATFORM), bsd)
-+NEED_OBLIQUE_FONTS = true
-+endif
-+
-+ifeq ($(NEED_OBLIQUE_FONTS), true)
-
- # The oblique versions of the font are derived from the base versions
- # and since 2D can do this derivation on the fly at run time there is no
---- jdk/make/java/redist/Makefile
-+++ jdk/make/java/redist/Makefile
-@@ -310,7 +310,7 @@
- $(FONTSDIRFILE): $(PLATFORM_SRC)/classes/sun/awt/motif/java.fonts.dir
- $(install-file)
-
--ifeq ($(PLATFORM), linux)
-+ifneq (,$(findstring $(PLATFORM), linux bsd))
-
- # The oblique fonts are only needed/wanted on Linux.
-
-@@ -324,7 +324,7 @@
- $(OBLFONTSDIRFILE): $(PLATFORM_SRC)/classes/sun/awt/motif/java.oblique-fonts.dir
- $(install-file)
-
--endif # linux
-+endif # linux || bsd
- endif # !OPENJDK
-
- # Import internal files (ones that are stashed in this source tree)
---- jdk/make/java/security/Makefile
-+++ jdk/make/java/security/Makefile
-@@ -54,7 +54,15 @@
- ifneq ($(ARCH_DATA_MODEL), 64)
- PROPS_SRC = $(TOPDIR)/src/share/lib/security/java.security-windows
- endif
-+
-+else # windows
-+
-+ifeq ($(PLATFORM), bsd)
-+ ifeq ($(OS_VENDOR), OpenBSD)
-+ PROPS_SRC = $(TOPDIR)/src/share/lib/security/java.security-openbsd
-+ endif
- endif
-+endif # windows
- endif # PLATFORM
-
-
---- jdk/make/java/zip/FILES_c.gmk
-+++ jdk/make/java/zip/FILES_c.gmk
-@@ -30,7 +30,10 @@
- Inflater.c \
- ZipFile.c \
- ZipEntry.c \
-- zip_util.c \
-+ zip_util.c
-+
-+ifneq ($(SYSTEM_ZLIB),true)
-+FILES_c += \
- compress.c \
- deflate.c \
- infback.c \
-@@ -42,3 +45,4 @@
- zadler32.c \
- zcrc32.c \
- zutil.c
-+endif
---- jdk/make/java/zip/Makefile
-+++ jdk/make/java/zip/Makefile
-@@ -67,16 +67,23 @@
- CPPFLAGS += -UDEBUG
- endif
-
--CPPFLAGS += -I$(SHARE_SRC)/native/java/util/zip/zlib
- CPPFLAGS += -I$(SHARE_SRC)/native/java/io
- CPPFLAGS += -I$(PLATFORM_SRC)/native/java/io
-
-+ifneq ($(SYSTEM_ZLIB),true)
-+CPPFLAGS += -I$(SHARE_SRC)/native/java/util/zip/zlib
-+
- #
- # Add to ambient vpath so we pick up the library files
- #
- vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/zlib
-+endif
-
- #
- # Link to JVM library for JVM_Zip* functions
- #
-+ifeq ($(SYSTEM_ZLIB),true)
-+OTHER_LDLIBS = %%ZLIB_LDFLAGS%%
-+else
- OTHER_LDLIBS = $(JVMLIB)
-+endif
---- jdk/make/javax/sound/FILES_c.gmk
-+++ jdk/make/javax/sound/FILES_c.gmk
-@@ -34,6 +34,8 @@
-
- FILES_linux =
-
-+FILES_bsd =
-+
- FILES_windows = \
- PLATFORM_API_WinOS_MidiIn.c \
- PLATFORM_API_WinOS_MidiOut.c \
---- jdk/make/javax/sound/SoundDefs.gmk
-+++ jdk/make/javax/sound/SoundDefs.gmk
-@@ -40,6 +40,10 @@
- CPPFLAGS += -DX_PLATFORM=X_LINUX
- endif # PLATFORM linux
-
-+ifeq ($(PLATFORM), bsd)
-+ CPPFLAGS += -DX_PLATFORM=X_BSD
-+endif # PLATFORM bsd
-+
- ifeq ($(PLATFORM), solaris)
- CPPFLAGS += -DX_PLATFORM=X_SOLARIS
-
---- jdk/make/javax/sound/jsoundalsa/Makefile
-+++ jdk/make/javax/sound/jsoundalsa/Makefile
-@@ -65,6 +65,15 @@
- $(MIDIFILES_export) \
- $(PORTFILES_export)
-
-+ifeq ($(PLATFORM), bsd)
-+OTHER_LDLIBS += -L$(PACKAGE_PATH)/lib -lasound
-+
-+CPPFLAGS += \
-+ -DUSE_DAUDIO=TRUE \
-+ -DUSE_PORTS=TRUE \
-+ -I$(PACKAGE_PATH)/include \
-+ -I$(SHARE_SRC)/native/com/sun/media/sound
-+else
- OTHER_LDLIBS += -lasound
-
- CPPFLAGS += \
-@@ -73,6 +82,7 @@
- -DUSE_PLATFORM_MIDI_OUT=TRUE \
- -DUSE_PLATFORM_MIDI_IN=TRUE \
- -I$(SHARE_SRC)/native/com/sun/media/sound
-+endif
-
- #
- # Add to the ambient VPATH.
---- jdk/make/jpda/back/Makefile
-+++ jdk/make/jpda/back/Makefile
-@@ -49,8 +49,10 @@
- -I$(GENNATIVESRCDIR)/jdwp
-
- ifneq ($(PLATFORM), windows)
-+ifneq ($(PLATFORM), bsd)
- OTHER_LDLIBS += -ldl
- endif # PLATFORM
-+endif # PLATFORM
-
- #
- # This controls the ability to do logging in the library.
---- jdk/make/sun/awt/Makefile
-+++ jdk/make/sun/awt/Makefile
-@@ -130,6 +130,14 @@
- OTHER_LDLIBS = $(JVMLIB) $(LIBM) -ldl
- endif
-
-+ifeq ($(PLATFORM), bsd)
-+FILES_c = $(FILES_2D_c)
-+FILES_c += awt_LoadLibrary.c
-+OTHER_CFLAGS += -DMLIB_NO_LIBSUNMATH
-+OTHER_CFLAGS += -DMOTIF_VERSION=2
-+OTHER_LDLIBS = $(JVMLIB) $(LIBM)
-+endif
-+
- FILES_c += initIDs.c
-
- # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ SOLARIS/LINUX
-@@ -243,7 +251,7 @@
- # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ WINDOWS
- endif # PLATFORM
-
--ifeq ($(PLATFORM), linux)
-+ifneq (,$(findstring $(PLATFORM), linux bsd))
- # vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv LINUX
- vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/../java2d/opengl
- vpath %.c $(PLATFORM_SRC)/native/$(PKGDIR)/../java2d/opengl
-@@ -420,6 +428,19 @@
- # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ SOLARIS
- endif # PLATFORM
-
-+ifeq ($(PLATFORM), bsd)
-+# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv BSD
-+
-+FONTCONFIGS_SRC = $(PLATFORM_SRC)/classes/sun/awt/fontconfigs
-+_FONTCONFIGS = \
-+ fontconfig.properties
-+
-+FONTCONFIGS_SRC_PREFIX = $(PLATFORM).
-+
-+# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ BSD
-+endif # PLATFORM
-+
-+
- FONTCONFIGS = $(_FONTCONFIGS:%=$(LIBDIR)/%.src)
- BINARYFONTCONFIGS = $(_FONTCONFIGS:%.properties=$(LIBDIR)/%.bfc)
-
-@@ -513,6 +534,9 @@
- -I$(OPENWIN_HOME)/include/X11/extensions \
- -I$(PLATFORM_SRC)/native/$(PKGDIR)/font
- endif
-+ifeq ($(PLATFORM), bsd)
-+CPPFLAGS += -I$(PLATFORM_SRC)/native/$(PKGDIR)/font
-+endif
- CPPFLAGS += -I$(SHARE_SRC)/native/$(PKGDIR)/debug \
- -I$(SHARE_SRC)/native/$(PKGDIR)/../font \
- -I$(PLATFORM_SRC)/native/$(PKGDIR)/../font \
-@@ -534,7 +558,13 @@
- -I$(PLATFORM_SRC)/native/$(PKGDIR) \
- $(EVENT_MODEL)
-
--ifeq ($(PLATFORM), linux)
-+# include these last so we don't pick up unintentional includes
-+ifeq ($(PLATFORM), bsd)
-+CPPFLAGS += -I$(OPENWIN_HOME)/include \
-+ -I$(OPENWIN_HOME)/include/X11/extensions
-+endif
-+
-+ifneq (,$(findstring $(PLATFORM), linux bsd))
- LDFLAGS += -L$(MOTIF_LIB) -L$(OPENWIN_LIB)
- endif
-
---- jdk/make/sun/awt/mawt.gmk
-+++ jdk/make/sun/awt/mawt.gmk
-@@ -174,7 +174,7 @@
- OTHER_LDLIBS = $(LIBXM) -lXt -lXext $(LIBXTST) $(LIBXMU) -lX11 -lXi
- endif
-
--ifeq ($(PLATFORM), linux)
-+ifneq (,$(findstring $(PLATFORM), linux bsd))
- OTHER_CFLAGS += -DMLIB_NO_LIBSUNMATH
- OTHER_CFLAGS += -DMOTIF_VERSION=2
- OTHER_CFLAGS += -DXMSTRINGDEFINES=1
-@@ -185,7 +185,11 @@
- # !HEADLESS
-
- OTHER_LDLIBS += $(JVMLIB) $(LIBCXX) \
-- -lawt $(LIBM) -ldl
-+ -lawt $(LIBM)
-+
-+ifneq ($(PLATFORM), bsd)
-+OTHER_LDLIBS += -ldl
-+endif
-
- #
- # Sun CC with -Xa misdefines __STDC__ to 0 (zero).
-@@ -229,16 +233,33 @@
- -I$(PLATFORM_SRC)/native/$(PKGDIR) \
- $(EVENT_MODEL)
-
-+CPPFLAGS += -I$(CUPS_HEADERS_PATH)
-+
-+ifndef HEADLESS
-+CPPFLAGS += -I$(MOTIF_DIR)/include \
-+ -I$(OPENWIN_HOME)/include
-+LDFLAGS += -L$(MOTIF_LIB) -L$(OPENWIN_LIB)
-+
-+endif # !HEADLESS
-+
- ifeq ($(PLATFORM), linux)
- # Checking for the X11/extensions headers at the additional location
- CPPFLAGS += -I/X11R6/include/X11/extensions \
- -I/usr/include/X11/extensions
- endif
-
-+ifeq ($(PLATFORM), bsd)
-+ CPPFLAGS += -I$(OPENWIN_HOME)/include/X11/extensions \
-+ -I$(OPENWIN_HOME)/include
-+endif
-+
- ifeq ($(PLATFORM), solaris)
- CPPFLAGS += -I$(OPENWIN_HOME)/include/X11/extensions
- endif
-
-+ifneq ($(PLATFORM), windows)
-+ CPPFLAGS += -DX11_PATH=\"$(X11_PATH)\" -DPACKAGE_PATH=\"$(PACKAGE_PATH)\"
-+endif
-
- LDFLAGS += -L$(LIBDIR)/$(LIBARCH)/$(TSOBJDIR) \
- $(AWT_RUNPATH)
---- jdk/make/sun/font/Makefile
-+++ jdk/make/sun/font/Makefile
-@@ -188,6 +188,15 @@
- # Libraries to link, and other C flags.
- #
-
-+ifeq ($(PLATFORM), bsd)
-+OTHER_INCLUDES += -I$(X11_PATH)/include
-+OTHER_LDLIBS += -lawt $(LIBM) $(LIBCXX)
-+ ifeq ($(OS_VENDOR),Apple)
-+ # XXXDARWIN Match BSD/Linux behavior -- the mawt.dylib symbols will
-+ # be available at runtime.
-+ OTHER_LDLIBS += -flat_namespace -undefined suppress
-+ endif
-+else
- ifeq ($(PLATFORM), solaris)
- # Note that on Solaris, fontmanager is built against the headless library.
- LDFLAGS += -L$(LIBDIR)/$(LIBARCH)/headless
-@@ -198,6 +207,7 @@
- OTHER_LDLIBS += -Wl,-Bstatic -lgcc_eh -Wl,-Bdynamic
- endif
- endif
-+endif
-
- endif # PLATFORM
-
---- jdk/make/sun/image/generic/Makefile
-+++ jdk/make/sun/image/generic/Makefile
-@@ -68,5 +68,9 @@
- -I$(PLATFORM_SRC)/native/$(PKGDIR)/medialib
-
- OTHER_CFLAGS += -D__USE_J2D_NAMES -D__MEDIALIB_OLD_NAMES
--OTHER_LDLIBS = $(LIBM) -ldl
-+OTHER_LDLIBS = $(LIBM)
-+ifneq ($(PLATFORM), bsd)
-+OTHER_LDLIBS += -ldl
-+endif
-+
-
---- jdk/make/sun/jawt/Makefile
-+++ jdk/make/sun/jawt/Makefile
-@@ -98,9 +98,7 @@
- #
- # Other extra flags needed for compiling.
- #
--CPPFLAGS += -I$(OPENWIN_HOME)/include \
-- -I$(MOTIF_DIR)/include \
-- -I$(SHARE_SRC)/native/$(PKGDIR)/debug \
-+CPPFLAGS += -I$(SHARE_SRC)/native/$(PKGDIR)/debug \
- -I$(SHARE_SRC)/native/$(PKGDIR)/image \
- -I$(SHARE_SRC)/native/$(PKGDIR)/image/cvutils \
- -I$(SHARE_SRC)/native/$(PKGDIR)/alphacomposite \
-@@ -114,6 +112,8 @@
- -I$(SHARE_SRC)/native/$(PKGDIR)/../dc/doe \
- -I$(SHARE_SRC)/native/$(PKGDIR)/../dc/path \
- -I$(PLATFORM_SRC)/native/$(PKGDIR)/../jdga \
-+ -I$(OPENWIN_HOME)/include \
-+ -I$(MOTIF_DIR)/include \
- $(EVENT_MODEL)
- #
- # Libraries to link in.
-@@ -122,7 +122,7 @@
- OTHER_LDLIBS = -L$(LIBDIR)/$(LIBARCH) -L$(OPENWIN_LIB) -L$(LIBDIR)/$(LIBARCH)/xawt -lmawt
- endif # PLATFORM
-
--ifeq ($(PLATFORM), linux)
-+ifneq (,$(findstring $(PLATFORM), linux bsd))
- OTHER_LDLIBS = -L$(LIBDIR)/$(LIBARCH) -lawt -L$(LIBDIR)/$(LIBARCH)/xawt -lmawt
- endif # PLATFORM
-
---- jdk/make/sun/security/jgss/wrapper/Makefile
-+++ jdk/make/sun/security/jgss/wrapper/Makefile
-@@ -71,6 +71,10 @@
- #
- # Libraries to link
- #
--ifneq ($(PLATFORM), windows)
-+ifneq (,$(findstring $(PLATFORM), linux solaris))
- OTHER_LDLIBS = -ldl $(JVMLIB)
- endif
-+
-+ifeq ($(PLATFORM), bsd)
-+ OTHER_LDLIBS = $(JVMLIB)
-+endif
---- jdk/make/sun/security/pkcs11/Makefile
-+++ jdk/make/sun/security/pkcs11/Makefile
-@@ -158,7 +158,7 @@
- #
- # Libraries to link
- #
--ifeq ($(PLATFORM), windows)
-+ifneq (,$(findstring $(PLATFORM), windows bsd))
- OTHER_LDLIBS = $(JVMLIB)
- else
- OTHER_LDLIBS = -ldl $(JVMLIB)
---- jdk/make/sun/security/smartcardio/Makefile
-+++ jdk/make/sun/security/smartcardio/Makefile
-@@ -75,6 +75,10 @@
- ifeq ($(PLATFORM), windows)
- OTHER_LDLIBS = $(JVMLIB) winscard.lib
- else
-- OTHER_LDLIBS = -ldl $(JVMLIB)
-+ ifeq ($(PLATFORM), bsd)
-+ OTHER_LDLIBS = $(JVMLIB)
-+ else
-+ OTHER_LDLIBS = -ldl $(JVMLIB)
-+ endif
- OTHER_CFLAGS = -D__sun_jdk
- endif
---- jdk/make/sun/splashscreen/FILES_c.gmk
-+++ jdk/make/sun/splashscreen/FILES_c.gmk
-@@ -45,21 +45,6 @@
- dgif_lib.c \
- gif_err.c \
- gifalloc.c \
-- compress.c \
-- deflate.c \
-- gzclose.c \
-- gzlib.c \
-- gzread.c \
-- gzwrite.c \
-- infback.c \
-- inffast.c \
-- inflate.c \
-- inftrees.c \
-- trees.c \
-- uncompr.c \
-- zadler32.c \
-- zcrc32.c \
-- zutil.c \
- jcomapi.c \
- jdapimin.c \
- jdapistd.c \
-@@ -105,3 +90,21 @@
- jfdctfst.c \
- jfdctint.c
-
-+ifneq ($(SYSTEM_ZLIB),true)
-+ FILES_c += \
-+ compress.c \
-+ deflate.c \
-+ gzclose.c \
-+ gzlib.c \
-+ gzread.c \
-+ gzwrite.c \
-+ infback.c \
-+ inffast.c \
-+ inflate.c \
-+ inftrees.c \
-+ trees.c \
-+ uncompr.c \
-+ zadler32.c \
-+ zcrc32.c \
-+ zutil.c
-+endif
---- jdk/make/sun/splashscreen/Makefile
-+++ jdk/make/sun/splashscreen/Makefile
-@@ -61,10 +61,25 @@
-
- CFLAGS += -DSPLASHSCREEN
-
-+CPPFLAGS += -I$(PLATFORM_SRC)/native/$(PKGDIR)/splashscreen -I$(SHARE_SRC)/native/$(PKGDIR)/splashscreen
-+CPPFLAGS += -I$(SHARE_SRC)/native/$(PKGDIR)/image/jpeg
-+ifneq ($(SYSTEM_ZLIB),true)
-+ CPPFLAGS += -I$(SHARE_SRC)/native/java/util/zip/zlib
-+endif
-+
-+
- ifneq ($(PLATFORM), windows)
- CFLAGS += -DWITH_X11
-- CPPFLAGS += -I$(OPENWIN_HOME)/include -I$(OPENWIN_HOME)/include/X11/extensions
-- OTHER_LDLIBS += -L$(OPENWIN_LIB) -lX11 -lXext $(LIBM) -lpthread
-+ ifeq ($(PLATFORM), bsd)
-+ CFLAGS += -DPNG_NO_MMX_CODE
-+ CPPFLAGS += -I$(OPENWIN_HOME)/include \
-+ -I$(OPENWIN_HOME)/include/X11/extensions
-+ CPPFLAGS += %%ICONV_CPPFLAGS%%
-+ OTHER_LDLIBS += -L$(OPENWIN_LIB) -lX11 -lXext %%ICONV_LDFLAGS%% $(LIBM) -pthread
-+ else
-+ CPPFLAGS += -I$(OPENWIN_HOME)/include -I$(OPENWIN_HOME)/include/X11/extensions
-+ OTHER_LDLIBS += -L$(OPENWIN_LIB) -lX11 -lXext $(LIBM) -lpthread
-+ endif
- else # PLATFORM
- CFLAGS += -DWITH_WIN32
- OTHER_LDLIBS += kernel32.lib user32.lib gdi32.lib
-@@ -77,14 +92,13 @@
- vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/splashscreen
- vpath %.c $(SHARE_SRC)/native/$(PKGDIR)
- vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/giflib
-+ifneq ($(SYSTEM_ZLIB),true)
- vpath %.c $(SHARE_SRC)/native/java/util/zip/zlib
-+endif
- vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/libpng
- vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/image/jpeg
- vpath %.c $(PLATFORM_SRC)/native/$(PKGDIR)/splashscreen
-
--CPPFLAGS += -I$(PLATFORM_SRC)/native/$(PKGDIR)/splashscreen -I$(SHARE_SRC)/native/$(PKGDIR)/splashscreen
--CPPFLAGS += -I$(SHARE_SRC)/native/$(PKGDIR)/image/jpeg -I$(SHARE_SRC)/native/java/util/zip/zlib
--
- ifeq ($(PLATFORM), linux)
- ifeq ($(ARCH_DATA_MODEL), 64)
- # 64-bit gcc has problems compiling MMX instructions.
---- jdk/make/sun/xawt/Makefile
-+++ jdk/make/sun/xawt/Makefile
-@@ -53,6 +53,11 @@
- dummy := $(shell $(MKDIR) -p $(LIB_LOCATION))
- endif
-
-+ifeq ($(PLATFORM), bsd)
-+LDFLAGS += -pthread
-+dummy := $(shell $(MKDIR) -p $(LIB_LOCATION))
-+endif
-+
- # Since this library will be living in a subdirectory below the other libraries
- # we need to add an extra runpath so that libraries in the upper directory
- # are found at runtime.
-@@ -87,7 +92,12 @@
- vpath %.c $(PLATFORM_SRC)/native/sun/java2d/opengl
- vpath %.c $(PLATFORM_SRC)/native/sun/java2d/x11
-
--OTHER_LDLIBS = $(LIBM) -lawt -lXext -lX11 -ldl \
-+ifeq ($(PLATFORM), bsd)
-+LIBDL=
-+else
-+LIBDL=-ldl
-+endif
-+OTHER_LDLIBS = $(LIBM) -lawt -lXext -lX11 $(LIBDL) \
- $(LDFLAGS_COMMON) $(AWT_RUNPATH) $(OTHER_LDFLAGS) -lXtst -lXi
-
- ifeq ($(PLATFORM), solaris)
-@@ -95,8 +105,6 @@
- dummy := $(shell $(MKDIR) -p $(LIB_LOCATION))
- endif
-
--CPPFLAGS += -I$(CUPS_HEADERS_PATH)
--
- CPPFLAGS += -DXAWT -DXAWT_HACK \
- -I$(TEMPDIR)/../../sun.awt/awt/CClassHeaders \
- -I$(PLATFORM_SRC)/native/sun/awt \
-@@ -123,9 +131,11 @@
- -I$(SHARE_SRC)/native/sun/awt \
- -I$(PLATFORM_SRC)/native/sun/awt
-
-+CPPFLAGS += -I$(CUPS_HEADERS_PATH)
-+
- ifeq ($(PLATFORM), linux)
- # Allows for builds on Debian GNU Linux, X11 is in a different place
-- CPPFLAGS += -I/usr/X11R6/include/X11/extensions \
-+ CPPFLAGS += -I$(OPENWIN_HOME)/include/X11/extensions \
- -I/usr/include/X11/extensions \
- -I$(MOTIF_DIR)/include \
- -I$(OPENWIN_HOME)/include
-@@ -135,6 +145,14 @@
- CPPFLAGS += -I$(OPENWIN_HOME)/include/X11/extensions -I$(MOTIF_DIR)/include
- endif
-
-+ifeq ($(PLATFORM), bsd)
-+ CPPFLAGS += -I$(OPENWIN_HOME)/include/X11/extensions -I$(OPENWIN_HOME)/include
-+endif
-+
-+ifneq ($(PLATFORM), windows)
-+ CPPFLAGS += -DX11_PATH=\"$(X11_PATH)\" -DPACKAGE_PATH=\"$(PACKAGE_PATH)\"
-+endif
-+
- ifeq ($(MILESTONE), internal)
- CPPFLAGS += -DINTERNAL_BUILD
- endif
---- jdk/make/tools/freetypecheck/Makefile
-+++ jdk/make/tools/freetypecheck/Makefile
-@@ -60,8 +60,12 @@
- #add runtime lib search path to ensure test will be runnable
- ifeq ($(PLATFORM), solaris)
- FT_OPTIONS += -R $(FT_LIB) -lfreetype
-- else #linux
-- FT_OPTIONS += -Wl,-rpath -Wl,$(FT_LIB) -lfreetype
-+ else
-+ ifeq ($(PLATFORM), bsd)
-+ FT_OPTIONS += -lfreetype %%ZLIB_LDFLAGS%%
-+ else # linux
-+ FT_OPTIONS += -Wl,-rpath -Wl,$(FREETYPE_LIB_PATH) -lfreetype
-+ endif
- endif
- endif
-
---- jdk/src/share/back/commonRef.c
-+++ jdk/src/share/back/commonRef.c
-@@ -23,6 +23,10 @@
- * questions.
- */
-
-+#if defined(_ALLBSD_SOURCE)
-+#include <stdint.h> /* for uintptr_t */
-+#endif
-+
- #include "util.h"
- #include "commonRef.h"
-
---- jdk/src/share/bin/java.c
-+++ jdk/src/share/bin/java.c
-@@ -109,6 +109,11 @@
- static char *launchername;
- jboolean _launcher_debug = JNI_FALSE;
-
-+#ifdef __APPLE__
-+static jboolean continueInSameThread = JNI_FALSE; /* start VM in current thread */
-+#endif
-+
-+
- /*
- * Entries for splash screen environment variables.
- * putenv is performed in SelectVersion. We need
-@@ -151,6 +156,10 @@
- static void SetPaths(int argc, char **argv);
-
-
-+#ifdef __APPLE__
-+static int ContinueInSameThread(InvocationFunctions* ifn, int argc, char **argv, char *jarfile, char *classname, int ret);
-+#endif
-+
- /* Maximum supported entries from jvm.cfg. */
- #define INIT_MAX_KNOWN_VMS 10
- /* Values for vmdesc.flag */
-@@ -197,13 +206,13 @@
-
- int JNICALL JavaMain(void * args); /* entry point */
-
--struct JavaMainArgs {
-+typedef struct {
- int argc;
- char ** argv;
- char * jarfile;
- char * classname;
- InvocationFunctions ifn;
--};
-+} JavaMainArgs;
-
- /*
- * Entry point.
-@@ -361,49 +370,24 @@
- /* Show the splash screen if needed */
- ShowSplashScreen();
-
-- /*
-- * Done with all command line processing and potential re-execs so
-- * clean up the environment.
-- */
-- (void)UnsetEnv(ENV_ENTRY);
-- (void)UnsetEnv(SPLASH_FILE_ENV_ENTRY);
-- (void)UnsetEnv(SPLASH_JAR_ENV_ENTRY);
--
-- JLI_MemFree(splash_jar_entry);
-- JLI_MemFree(splash_file_entry);
-
-- /*
-- * If user doesn't specify stack size, check if VM has a preference.
-- * Note that HotSpot no longer supports JNI_VERSION_1_1 but it will
-- * return its default stack size through the init args structure.
-- */
-- if (threadStackSize == 0) {
-- struct JDK1_1InitArgs args1_1;
-- memset((void*)&args1_1, 0, sizeof(args1_1));
-- args1_1.version = JNI_VERSION_1_1;
-- ifn.GetDefaultJavaVMInitArgs(&args1_1); /* ignore return value */
-- if (args1_1.javaStackSize > 0) {
-- threadStackSize = args1_1.javaStackSize;
-+#ifdef __APPLE__
-+ if (continueInSameThread == JNI_TRUE) {
-+ return ContinueInSameThread(&ifn, argc, argv, jarfile, classname, ret);
-+ } else {
-+ return ContinueInNewThread(&ifn, argc, argv, jarfile, classname, ret);
- }
-- }
--
-- { /* Create a new thread to create JVM and invoke main method */
-- struct JavaMainArgs args;
-+#else
-
-- args.argc = argc;
-- args.argv = argv;
-- args.jarfile = jarfile;
-- args.classname = classname;
-- args.ifn = ifn;
-+ return ContinueInNewThread(&ifn, argc, argv, jarfile, classname, ret);
-+#endif
-
-- return ContinueInNewThread(JavaMain, threadStackSize, (void*)&args, ret);
-- }
- }
-
- int JNICALL
- JavaMain(void * _args)
- {
-- struct JavaMainArgs *args = (struct JavaMainArgs *)_args;
-+ JavaMainArgs *args = (JavaMainArgs *)_args;
- int argc = args->argc;
- char **argv = args->argv;
- char *jarfile = args->jarfile;
-@@ -1100,6 +1084,10 @@
- } else if (strcmp(arg, "-X") == 0) {
- printXUsage = JNI_TRUE;
- return JNI_TRUE;
-+#ifdef __APPLE__
-+ } else if (JLI_StrCmp(arg, "-XstartOnFirstThread") == 0) {
-+ continueInSameThread = JNI_TRUE;
-+#endif
- /*
- * The following case checks for -XshowSettings OR -XshowSetting:SUBOPT.
- * In the latter case, any SUBOPT value not recognized will default to "all"
-@@ -1878,6 +1866,84 @@
- return -1;
- }
-
-+static int
-+ContinueInNewThread(InvocationFunctions* ifn, int argc,
-+ char **argv, char *jarfile, char *classname, int ret)
-+{
-+
-+ /*
-+ * If user doesn't specify stack size, check if VM has a preference.
-+ * Note that HotSpot no longer supports JNI_VERSION_1_1 but it will
-+ * return its default stack size through the init args structure.
-+ */
-+ if (threadStackSize == 0) {
-+ struct JDK1_1InitArgs args1_1;
-+ memset((void*)&args1_1, 0, sizeof(args1_1));
-+ args1_1.version = JNI_VERSION_1_1;
-+ ifn->GetDefaultJavaVMInitArgs(&args1_1); /* ignore return value */
-+ if (args1_1.javaStackSize > 0) {
-+ threadStackSize = args1_1.javaStackSize;
-+ }
-+ }
-+
-+ { /* Create a new thread to create JVM and invoke main method */
-+ JavaMainArgs args;
-+ int rslt;
-+
-+ args.argc = argc;
-+ args.argv = argv;
-+ args.jarfile = jarfile;
-+ args.classname = classname;
-+ args.ifn = *ifn;
-+
-+ rslt = ContinueInNewThread0(JavaMain, threadStackSize, (void*)&args);
-+ /* If the caller has deemed there is an error we
-+ * simply return that, otherwise we return the value of
-+ * the callee
-+ */
-+ return (ret != 0) ? ret : rslt;
-+ }
-+}
-+
-+
-+#ifdef __APPLE__
-+static int
-+ContinueInSameThread(InvocationFunctions* ifn, int argc,
-+ char **argv, char *jarfile, char *classname, int ret)
-+{
-+
-+ /*
-+ * If user doesn't specify stack size, check if VM has a preference.
-+ * Note that HotSpot no longer supports JNI_VERSION_1_1 but it will
-+ * return its default stack size through the init args structure.
-+ */
-+ if (threadStackSize == 0) {
-+ struct JDK1_1InitArgs args1_1;
-+ memset((void*)&args1_1, 0, sizeof(args1_1));
-+ args1_1.version = JNI_VERSION_1_1;
-+ ifn->GetDefaultJavaVMInitArgs(&args1_1); /* ignore return value */
-+ if (args1_1.javaStackSize > 0) {
-+ threadStackSize = args1_1.javaStackSize;
-+ }
-+ }
-+
-+ { /* Create create JVM and invoke main method */
-+ JavaMainArgs args;
-+ int rslt;
-+
-+ args.argc = argc;
-+ args.argv = argv;
-+ args.jarfile = jarfile;
-+ args.classname = classname;
-+ args.ifn = *ifn;
-+
-+ rslt = JavaMain((void*)&args);
-+
-+ return (ret != 0) ? ret : rslt;
-+ }
-+}
-+#endif
-+
- static void
- FreeKnownVMs()
- {
---- jdk/src/share/bin/java.h
-+++ jdk/src/share/bin/java.h
-@@ -95,11 +95,17 @@
- void PrintMachineDependentOptions();
-
- const char *jlong_format_specifier();
-+
- /*
- * Block current thread and continue execution in new thread
- */
--int ContinueInNewThread(int (JNICALL *continuation)(void *),
-- jlong stack_size, void * args, int ret);
-+int ContinueInNewThread0(int (JNICALL *continuation)(void *),
-+ jlong stack_size, void * args);
-+
-+
-+ static int ContinueInNewThread(InvocationFunctions* ifn, int argc, char** argv,
-+ char* jarfile, char* classname, int ret);
-+
-
- /* sun.java.launcher.* platform properties. */
- void SetJavaLauncherPlatformProps(void);
---- jdk/src/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java
-+++ jdk/src/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java
-@@ -477,6 +477,8 @@
- String[] dirs = new String[] {
- userHome + sep + ".themes",
- System.getProperty("swing.metacitythemedir"),
-+ "%%LOCALBASE%%/share/themes",
-+ "%%LOCALBASE%%/share/gnome/themes",
- "/usr/share/themes",
- "/usr/gnome/share/themes", // Debian/Redhat/Solaris
- "/opt/gnome2/share/themes" // SuSE
---- jdk/src/share/classes/java/awt/Font.java
-+++ jdk/src/share/classes/java/awt/Font.java
-@@ -449,18 +449,19 @@
- */
- private AttributeValues getAttributeValues() {
- if (values == null) {
-- values = new AttributeValues();
-- values.setFamily(name);
-- values.setSize(pointSize); // expects the float value.
-+ AttributeValues valuesTmp = new AttributeValues();
-+ valuesTmp.setFamily(name);
-+ valuesTmp.setSize(pointSize); // expects the float value.
-
- if ((style & BOLD) != 0) {
-- values.setWeight(2); // WEIGHT_BOLD
-+ valuesTmp.setWeight(2); // WEIGHT_BOLD
- }
-
- if ((style & ITALIC) != 0) {
-- values.setPosture(.2f); // POSTURE_OBLIQUE
-+ valuesTmp.setPosture(.2f); // POSTURE_OBLIQUE
- }
-- values.defineAll(PRIMARY_MASK); // for streaming compatibility
-+ valuesTmp.defineAll(PRIMARY_MASK); // for streaming compatibility
-+ values = valuesTmp;
- }
-
- return values;
---- jdk/src/share/classes/java/awt/GraphicsEnvironment.java
-+++ jdk/src/share/classes/java/awt/GraphicsEnvironment.java
-@@ -148,7 +148,12 @@
- } else {
- String osName = System.getProperty("os.name");
- headless = defaultHeadless =
-- Boolean.valueOf(("Linux".equals(osName) || "SunOS".equals(osName)) &&
-+ Boolean.valueOf(("Linux".equals(osName) ||
-+ "SunOS".equals(osName) ||
-+ "FreeBSD".equals(osName) ||
-+ "NetBSD".equals(osName) ||
-+ "OpenBSD".equals(osName) ||
-+ "Darwin".equals(osName)) &&
- (System.getenv("DISPLAY") == null));
- }
- } else if (nm.equals("true")) {
---- jdk/src/share/classes/java/util/TimeZone.java
-+++ jdk/src/share/classes/java/util/TimeZone.java
-@@ -848,15 +848,13 @@
- }
- int gmtOffset = (hours * 60 + num) * 60 * 1000;
-
-+ zi = ZoneInfoFile.getCustomTimeZone(id, negative ? -gmtOffset : gmtOffset);
- if (gmtOffset == 0) {
-- zi = ZoneInfoFile.getZoneInfo(GMT_ID);
- if (negative) {
- zi.setID("GMT-00:00");
- } else {
- zi.setID("GMT+00:00");
- }
-- } else {
-- zi = ZoneInfoFile.getCustomTimeZone(id, negative ? -gmtOffset : gmtOffset);
- }
- return zi;
- }
---- jdk/src/share/classes/sun/awt/FontConfiguration.java
-+++ jdk/src/share/classes/sun/awt/FontConfiguration.java
-@@ -1121,7 +1121,7 @@
- */
- HashMap<String, Boolean> existsMap;
- public boolean needToSearchForFile(String fileName) {
-- if (!environment.isLinux) {
-+ if (!environment.isLinuxOrBSD) {
- return false;
- } else if (existsMap == null) {
- existsMap = new HashMap<String, Boolean>();
-@@ -1361,7 +1361,7 @@
- + "<filename."
- + getString(table_componentFontNameIDs[ii])
- + "> entry is missing!!!");
-- if (!osName.contains("Linux")) {
-+ if (!osName.contains("Linux") && !osName.contains("BSD") && !osName.contains("Darwin")) {
- errors++;
- }
- }
---- jdk/src/share/classes/sun/font/TrueTypeFont.java
-+++ jdk/src/share/classes/sun/font/TrueTypeFont.java
-@@ -160,6 +160,13 @@
- private boolean supportsJA;
- private boolean supportsCJK;
-
-+ /* These are for faster access to the name of the font as
-+ * typically exposed via API to applications.
-+ */
-+ private Locale nameLocale;
-+ private String localeFamilyName;
-+ private String localeFullName;
-+
- /**
- * - does basic verification of the file
- * - reads the header table for this font (within a collection)
-@@ -1089,6 +1096,10 @@
- * greater than 32767, so read and store those as ints
- */
- int stringPtr = sbuffer.get() & 0xffff;
-+
-+ nameLocale = sun.awt.SunToolkit.getStartupLocale();
-+ short nameLocaleID = FontManager.getLCIDFromLocale(nameLocale);
-+
- for (int i=0; i<numRecords; i++) {
- short platformID = sbuffer.get();
- if (platformID != MS_PLATFORM_ID) {
-@@ -1100,15 +1111,24 @@
- short nameID = sbuffer.get();
- int nameLen = ((int) sbuffer.get()) & 0xffff;
- int namePtr = (((int) sbuffer.get()) & 0xffff) + stringPtr;
--
-+ String tmpName = null;
- switch (nameID) {
-
- case FAMILY_NAME_ID:
-
-- if (familyName == null || langID == ENGLISH_LOCALE_ID) {
-+ if (familyName == null || langID == ENGLISH_LOCALE_ID ||
-+ langID == nameLocaleID)
-+ {
- buffer.position(namePtr);
- buffer.get(name, 0, nameLen);
-- familyName = makeString(name, nameLen, encodingID);
-+ tmpName = makeString(name, nameLen, encodingID);
-+
-+ if (familyName == null || langID == ENGLISH_LOCALE_ID){
-+ familyName = tmpName;
-+ }
-+ if (langID == nameLocaleID) {
-+ localeFamilyName = tmpName;
-+ }
- }
- /*
- for (int ii=0;ii<nameLen;ii++) {
-@@ -1126,15 +1146,29 @@
-
- case FULL_NAME_ID:
-
-- if (fullName == null || langID == ENGLISH_LOCALE_ID) {
-+ if (fullName == null || langID == ENGLISH_LOCALE_ID ||
-+ langID == nameLocaleID)
-+ {
- buffer.position(namePtr);
- buffer.get(name, 0, nameLen);
-- fullName = makeString(name, nameLen, encodingID);
-+ tmpName = makeString(name, nameLen, encodingID);
-+
-+ if (fullName == null || langID == ENGLISH_LOCALE_ID) {
-+ fullName = tmpName;
-+ }
-+ if (langID == nameLocaleID) {
-+ localeFullName = tmpName;
-+ }
- }
- break;
--
- }
- }
-+ if (localeFamilyName == null) {
-+ localeFamilyName = familyName;
-+ }
-+ if (localeFullName == null) {
-+ localeFullName = fullName;
-+ }
- }
- }
-
-@@ -1217,6 +1251,8 @@
- public String getFontName(Locale locale) {
- if (locale == null) {
- return fullName;
-+ } else if (locale.equals(nameLocale) && localeFullName != null) {
-+ return localeFullName;
- } else {
- short localeID = FontManager.getLCIDFromLocale(locale);
- String name = lookupName(localeID, FULL_NAME_ID);
-@@ -1231,11 +1267,13 @@
- public String getFamilyName(Locale locale) {
- if (locale == null) {
- return familyName;
-+ } else if (locale.equals(nameLocale) && localeFamilyName != null) {
-+ return localeFamilyName;
- } else {
- short localeID = FontManager.getLCIDFromLocale(locale);
- String name = lookupName(localeID, FAMILY_NAME_ID);
- if (name == null) {
-- return familyName;
-+ return familyName;
- } else {
- return name;
- }
---- jdk/src/share/classes/sun/java2d/SunGraphicsEnvironment.java
-+++ jdk/src/share/classes/sun/java2d/SunGraphicsEnvironment.java
-@@ -77,7 +77,7 @@
- public abstract class SunGraphicsEnvironment extends GraphicsEnvironment
- implements FontSupport, DisplayChangedListener {
-
-- public static boolean isLinux;
-+ public static boolean isLinuxOrBSD;
- public static boolean isSolaris;
- public static boolean isOpenSolaris;
- public static boolean isWindows;
-@@ -166,7 +166,15 @@
- public Object run() {
- String osName = System.getProperty("os.name");
- if ("Linux".equals(osName)) {
-- isLinux = true;
-+ isLinuxOrBSD = true;
-+ } else if ("FreeBSD".equals(osName)) {
-+ isLinuxOrBSD = true;
-+ } else if ("Darwin".equals(osName)) {
-+ isLinuxOrBSD = true;
-+ } else if ("NetBSD".equals(osName)) {
-+ isLinuxOrBSD = true;
-+ } else if ("OpenBSD".equals(osName)) {
-+ isLinuxOrBSD = true;
- } else if ("SunOS".equals(osName)) {
- isSolaris = true;
- String version = System.getProperty("os.version", "0.0");
-@@ -242,8 +250,8 @@
- * Pass "true" to registerFonts method as on-screen these
- * JRE fonts always go through the T2K rasteriser.
- */
-- if (isLinux) {
-- /* Linux font configuration uses these fonts */
-+ if (isLinuxOrBSD) {
-+ /* Linux/BSD font configuration uses these fonts */
- registerFontDir(jreFontDirName);
- }
- registerFontsInDir(jreFontDirName, true, Font2D.JRE_RANK,
---- jdk/src/share/classes/sun/nio/ch/KqueueSelectorProvider.java
-+++ jdk/src/share/classes/sun/nio/ch/KqueueSelectorProvider.java
-@@ -0,0 +1,17 @@
-+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);
-+ }
-+
-+ public Channel inheritedChannel() throws IOException {
-+ return InheritedChannel.getChannel();
-+ }
-+}
---- jdk/src/share/classes/sun/print/PSPrinterJob.java
-+++ jdk/src/share/classes/sun/print/PSPrinterJob.java
-@@ -1531,9 +1531,33 @@
- pFlags |= NOSHEET;
- ncomps+=1;
- }
-- if (System.getProperty("os.name").equals("Linux")) {
-+
-+ String osname = System.getProperty("os.name");
-+ if (osname.equals("Linux") || osname.endsWith("BSD") || osname.contains("OS X")) {
-+ String lprPath = "/usr/bin/lpr";
-+ if (osname.endsWith("BSD")) {
-+ 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 = "%%LOCALBASE%%/bin/lpr";
-+ }
-+ }
- execCmd = new String[ncomps];
-- execCmd[n++] = "/usr/bin/lpr";
-+ execCmd[n++] = lprPath;
- if ((pFlags & PRINTER) != 0) {
- execCmd[n++] = new String("-P" + printer);
- }
---- jdk/src/share/classes/sun/security/jgss/GSSManagerImpl.java
-+++ jdk/src/share/classes/sun/security/jgss/GSSManagerImpl.java
-@@ -47,8 +47,12 @@
- AccessController.doPrivileged(new PrivilegedAction<Boolean>() {
- public Boolean run() {
- String osname = System.getProperty("os.name");
-- if (osname.startsWith("SunOS") ||
-- osname.startsWith("Linux")) {
-+ if (osname.startsWith("SunOS")
-+ || osname.startsWith("Linux")
-+ || osname.startsWith("FreeBSD")
-+ || osname.startsWith("NetBSD")
-+ || osname.startsWith("OpenBSD")
-+ || osname.startsWith("Darwin")) {
- return new Boolean(System.getProperty
- (USE_NATIVE_PROP));
- }
---- jdk/src/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java
-+++ jdk/src/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java
-@@ -83,7 +83,11 @@
- String osname = System.getProperty("os.name");
- if (osname.startsWith("SunOS")) {
- gssLib = "libgss.so";
-- } else if (osname.startsWith("Linux")) {
-+ } else if (osname.startsWith("Linux")
-+ || osname.startsWith("FreeBSD")
-+ || osname.startsWith("NetBSD")
-+ || osname.startsWith("OpenBSD")
-+ || osname.startsWith("Darwin")) {
- gssLib = "libgssapi.so";
- }
- }
---- jdk/src/share/classes/sun/security/krb5/Config.java
-+++ jdk/src/share/classes/sun/security/krb5/Config.java
-@@ -699,7 +699,11 @@
- }
- } else if (osname.startsWith("SunOS")) {
- name = "/etc/krb5/krb5.conf";
-- } else if (osname.startsWith("Linux")) {
-+ } else if (osname.startsWith("Linux")
-+ || osname.startsWith("FreeBSD")
-+ || osname.startsWith("NetBSD")
-+ || osname.startsWith("OpenBSD")
-+ || osname.startsWith("Darwin")) {
- name = "/etc/krb5.conf";
- }
- }
---- jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java
-+++ jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java
-@@ -412,8 +412,12 @@
- String uidStr = null;
- long uid = 0;
-
-- if (osname.startsWith("SunOS") ||
-- (osname.startsWith("Linux"))) {
-+ if (osname.startsWith("SunOS")
-+ || osname.startsWith("Linux")
-+ || osname.startsWith("FreeBSD")
-+ || osname.startsWith("NetBSD")
-+ || osname.startsWith("OpenBSD")
-+ || osname.startsWith("Darwin")) {
- try {
- Class<?> c = Class.forName
- ("com.sun.security.auth.module.UnixSystem");
---- jdk/src/share/classes/sun/tools/attach/META-INF/services/com.sun.tools.attach.spi.AttachProvider
-+++ jdk/src/share/classes/sun/tools/attach/META-INF/services/com.sun.tools.attach.spi.AttachProvider
-@@ -30,3 +30,4 @@
- #[solaris]sun.tools.attach.SolarisAttachProvider
- #[windows]sun.tools.attach.WindowsAttachProvider
- #[linux]sun.tools.attach.LinuxAttachProvider
-+#[bsd]sun.tools.attach.BsdAttachProvider
---- jdk/src/share/classes/sun/tools/jar/Main.java
-+++ jdk/src/share/classes/sun/tools/jar/Main.java
-@@ -48,6 +48,7 @@
- String zname = "";
- String[] files;
- String rootjar = null;
-+ String cwd;
-
- // An entryName(path)->File map generated during "expand", it helps to
- // decide whether or not an existing entry in a jar file needs to be
-@@ -250,6 +251,16 @@
- }
- }
- } else if (xflag) {
-+ // Current working directory
-+ cwd = System.getProperty("user.dir");
-+ if (cwd == null) {
-+ fatalError(getMsg("error.no.cwd"));
-+ }
-+ cwd = (new File(cwd)).getCanonicalPath();
-+ if (!cwd.endsWith(File.separator)) {
-+ cwd += File.separator;
-+ }
-+ // Extract the files
- replaceFSC(files);
- if (fname != null && files != null) {
- extract(fname, files);
-@@ -975,6 +986,10 @@
- return rc; // leading '/' or 'dot-dot' only path
- }
- File f = new File(name.replace('/', File.separatorChar));
-+ if (!f.getCanonicalPath().startsWith(cwd)) {
-+ output(formatMsg("out.ignore.entry", name));
-+ return null;
-+ }
- if (e.isDirectory()) {
- if (f.exists()) {
- if (!f.isDirectory()) {
-@@ -996,6 +1011,10 @@
- } else {
- if (f.getParent() != null) {
- File d = new File(f.getParent());
-+ if (!d.getCanonicalPath().startsWith(cwd)) {
-+ output(formatMsg("out.ignore.entry", name));
-+ return null;
-+ }
- if (!d.exists() && !d.mkdirs() || !d.isDirectory()) {
- throw new IOException(formatMsg(
- "error.create.dir", d.getPath()));
---- jdk/src/share/classes/sun/tools/jar/resources/jar.properties
-+++ jdk/src/share/classes/sun/tools/jar/resources/jar.properties
-@@ -44,6 +44,8 @@
- {0} : could not create directory
- error.incorrect.length=\
- incorrect length while processing: {0}
-+error.no.cwd=\
-+ {0} : could not determine current working directory
- out.added.manifest=\
- added manifest
- out.update.manifest=\
---- jdk/src/share/hpi/include/hpi_impl.h
-+++ jdk/src/share/hpi/include/hpi_impl.h
-@@ -138,7 +138,11 @@
- int sysBind(int fd, struct sockaddr *him, int len);
- int sysAccept(int fd, struct sockaddr *him, int *len);
- int sysGetSockName(int fd, struct sockaddr *him, int *len);
--#ifdef _LP64
-+#if defined(_LP64) || defined(_ALLBSD_SOURCE)
-+// XXXBSD: The implementations all use ssize_t, except on Windows,
-+// regardless of _LP64. The resulting mismatch between "int" and "ssize_t"
-+// causes gcc on Darwin to report a conflicting types error.
-+// Appears to be an upstream issue introduced in 1.7
- ssize_t sysSendTo(int fd, char *buf, int len, int flags, struct sockaddr *to,
- int tolen);
- ssize_t sysRecvFrom(int fd, char *buf, int nbytes, int flags,
---- jdk/src/share/native/com/sun/java/util/jar/pack/defines.h
-+++ jdk/src/share/native/com/sun/java/util/jar/pack/defines.h
-@@ -32,6 +32,10 @@
- #include <unistd.h>
- #endif
-
-+#ifndef NO_ZLIB
-+# include <zconf.h>
-+#endif
-+
- #ifndef FULL
- #define FULL 1 /* Adds <500 bytes to the zipped final product. */
- #endif
-@@ -90,11 +94,13 @@
- // bytes and byte arrays
-
- typedef unsigned int uint;
-+#ifdef NO_ZLIB
- #ifdef _LP64
- typedef unsigned int uLong; // Historical zlib, should be 32-bit.
- #else
- typedef unsigned long uLong;
- #endif
-+#endif
- #ifdef _MSC_VER
- typedef LONGLONG jlong;
- typedef DWORDLONG julong;
---- jdk/src/share/native/com/sun/java/util/jar/pack/main.cpp
-+++ jdk/src/share/native/com/sun/java/util/jar/pack/main.cpp
-@@ -33,9 +33,14 @@
- #include <limits.h>
- #include <time.h>
-
-+/* !PRODUCT needs intptr_t */
-+#if defined(_ALLBSD_SOURCE) && !defined(PRODUCT)
-+#include <stdint.h>
-+#endif
-+
- #if defined(unix) && !defined(PRODUCT)
- #include "pthread.h"
--#define THREAD_SELF ((int)pthread_self())
-+#define THREAD_SELF ((intptr_t) pthread_self())
- #endif
-
- #include "defines.h"
-@@ -58,9 +63,9 @@
- // Single-threaded, implementation, not reentrant.
- // Includes a weak error check against MT access.
- #ifndef THREAD_SELF
--#define THREAD_SELF (0)
-+#define THREAD_SELF ((intptr_t) 0)
- #endif
--NOT_PRODUCT(static int uThread = -1;)
-+NOT_PRODUCT(static intptr_t uThread = -1;)
-
- unpacker* unpacker::non_mt_current = null;
- unpacker* unpacker::current() {
-@@ -69,7 +74,7 @@
- }
- static void set_current_unpacker(unpacker* u) {
- unpacker::non_mt_current = u;
-- assert(((uThread = (u == null) ? -1 : THREAD_SELF),
-+ assert(((uThread = (u == null) ? ((intptr_t) -1) : THREAD_SELF),
- true));
- }
-
---- jdk/src/share/native/com/sun/media/sound/SoundDefs.h
-+++ jdk/src/share/native/com/sun/media/sound/SoundDefs.h
-@@ -31,6 +31,7 @@
- #define X_WINDOWS 1
- #define X_SOLARIS 2
- #define X_LINUX 3
-+#define X_BSD 4
-
- // types for X_ARCH
- #define X_I586 1
-@@ -50,7 +51,7 @@
-
-
- // following is needed for _LP64
--#if ((X_PLATFORM == X_SOLARIS) || (X_PLATFORM == X_LINUX))
-+#if ((X_PLATFORM == X_SOLARIS) || (X_PLATFORM == X_LINUX) || (X_PLATFORM == X_BSD))
- #include <sys/types.h>
- #endif
-
-@@ -130,4 +131,9 @@
- #endif
-
-
-+#if X_PLATFORM == X_BSD
-+#define INLINE inline
-+#endif
-+
-+
- #endif // __SOUNDDEFS_INCLUDED__
---- jdk/src/share/native/common/check_code.c
-+++ jdk/src/share/native/common/check_code.c
-@@ -1069,7 +1069,7 @@
- * Make sure that branches don't go into the middle of nowhere.
- */
-
--static jint ntohl(jint n)
-+static jint _ck_ntohl(jint n)
- {
- unsigned char *p = (unsigned char *)&n;
- return (p[0] << 24) | (p[1] << 16) | (p[2] << 8) | p[3];
-@@ -1148,26 +1148,26 @@
- }
- }
- if (opcode == opc_tableswitch) {
-- keys = ntohl(lpc[2]) - ntohl(lpc[1]) + 1;
-+ keys = _ck_ntohl(lpc[2]) - _ck_ntohl(lpc[1]) + 1;
- delta = 1;
- } else {
-- keys = ntohl(lpc[1]); /* number of pairs */
-+ keys = _ck_ntohl(lpc[1]); /* number of pairs */
- delta = 2;
- /* Make sure that the tableswitch items are sorted */
- for (k = keys - 1, lptr = &lpc[2]; --k >= 0; lptr += 2) {
-- int this_key = ntohl(lptr[0]); /* NB: ntohl may be unsigned */
-- int next_key = ntohl(lptr[2]);
-+ int this_key = _ck_ntohl(lptr[0]); /* NB: ntohl may be unsigned */
-+ int next_key = _ck_ntohl(lptr[2]);
- if (this_key >= next_key) {
- CCerror(context, "Unsorted lookup switch");
- }
- }
- }
- saved_operand = NEW(int, keys + 2);
-- if (!isLegalTarget(context, offset + ntohl(lpc[0])))
-+ if (!isLegalTarget(context, offset + _ck_ntohl(lpc[0])))
- CCerror(context, "Illegal default target in switch");
-- saved_operand[keys + 1] = code_data[offset + ntohl(lpc[0])];
-+ saved_operand[keys + 1] = code_data[offset + _ck_ntohl(lpc[0])];
- for (k = keys, lptr = &lpc[3]; --k >= 0; lptr += delta) {
-- int target = offset + ntohl(lptr[0]);
-+ int target = offset + _ck_ntohl(lptr[0]);
- if (!isLegalTarget(context, target))
- CCerror(context, "Illegal branch in opc_tableswitch");
- saved_operand[k + 1] = code_data[target];
-@@ -1615,7 +1615,7 @@
- if (lpc + 2 >= (int *)end) {
- return -1; /* do not read pass the end */
- }
-- index = ntohl(lpc[2]) - ntohl(lpc[1]);
-+ index = _ck_ntohl(lpc[2]) - _ck_ntohl(lpc[1]);
- if ((index < 0) || (index > 65535)) {
- return -1; /* illegal */
- } else {
-@@ -1628,7 +1628,7 @@
- int npairs;
- if (lpc + 1 >= (int *)end)
- return -1; /* do not read pass the end */
-- npairs = ntohl(lpc[1]);
-+ npairs = _ck_ntohl(lpc[1]);
- /* There can't be more than 64K labels because of the limit
- * on per-method byte code length.
- */
---- jdk/src/share/native/java/io/io_util.h
-+++ jdk/src/share/native/java/io/io_util.h
-@@ -29,7 +29,15 @@
- extern jfieldID IO_fd_fdID;
- extern jfieldID IO_handle_fdID;
-
--#if !defined(O_DSYNC) || !defined(O_SYNC)
-+#ifdef _ALLBSD_SOURCE
-+#include <fcntl.h>
-+#ifndef O_SYNC
-+#define O_SYNC O_FSYNC
-+#endif
-+#ifndef O_DSYNC
-+#define O_DSYNC O_FSYNC
-+#endif
-+#elif !defined(O_DSYNC) || !defined(O_SYNC)
- #define O_SYNC (0x0800)
- #define O_DSYNC (0x2000)
- #endif
---- jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h
-+++ jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h
-@@ -25,6 +25,10 @@
- * questions.
- */
-
-+#ifdef __OpenBSD__
-+#include <sys/types.h>
-+#endif
-+#include <machine/endian.h>
- #include "jfdlibm.h"
-
- #ifdef __NEWVALID /* special setup for Sun test regime */
-@@ -47,11 +51,13 @@
- #define __LOp(x) *(1+(int*)x)
- #endif
-
-+#ifndef __P
- #ifdef __STDC__
- #define __P(p) p
- #else
- #define __P(p) ()
- #endif
-+#endif
-
- /*
- * ANSI/POSIX
---- jdk/src/share/native/java/lang/fdlibm/include/jfdlibm.h
-+++ jdk/src/share/native/java/lang/fdlibm/include/jfdlibm.h
-@@ -61,7 +61,7 @@
- #define log1p jlog1p
- #define expm1 jexpm1
-
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- #define __ieee754_sqrt __j__ieee754_sqrt
- #define __ieee754_acos __j__ieee754_acos
- #define __ieee754_acosh __j__ieee754_acosh
---- jdk/src/share/native/java/util/zip/Inflater.c
-+++ jdk/src/share/native/java/util/zip/Inflater.c
-@@ -65,6 +65,10 @@
- return jlong_zero;
- } else {
- char *msg;
-+// BSDXXX needed for FreeBSD 5.4 and below with system zlib
-+#if defined(__FreeBSD__) && __FreeBSD__ < 6
-+ strm->adler = 1;
-+#endif
- switch (inflateInit2(strm, nowrap ? -MAX_WBITS : MAX_WBITS)) {
- case Z_OK:
- return ptr_to_jlong(strm);
-@@ -197,6 +201,10 @@
- if (inflateReset(jlong_to_ptr(addr)) != Z_OK) {
- JNU_ThrowInternalError(env, 0);
- }
-+// BSDXXX needed for FreeBSD 5.4 and below with system zlib
-+#if defined(__FreeBSD__) && __FreeBSD__ < 6
-+ ((z_stream *)jlong_to_ptr(strm))->adler = 1;
-+#endif
- }
-
- JNIEXPORT void JNICALL
---- jdk/src/share/native/java/util/zip/zlib/zconf.h
-+++ jdk/src/share/native/java/util/zip/zlib/zconf.h
-@@ -35,6 +35,11 @@
- /* for _LP64 */
- #include <sys/types.h>
-
-+/**
-+ * Privatise the symbols to the JDK.
-+ */
-+#define Z_PREFIX
-+
- /*
- * If you *really* need a unique prefix for all types and library functions,
- * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.
-@@ -45,150 +50,150 @@
- # define Z_PREFIX_SET
-
- /* all linked symbols and init macros */
--# define _dist_code z__dist_code
--# define _length_code z__length_code
--# define _tr_align z__tr_align
--# define _tr_flush_bits z__tr_flush_bits
--# define _tr_flush_block z__tr_flush_block
--# define _tr_init z__tr_init
--# define _tr_stored_block z__tr_stored_block
--# define _tr_tally z__tr_tally
--# define adler32 z_adler32
--# define adler32_combine z_adler32_combine
--# define adler32_combine64 z_adler32_combine64
--# define adler32_z z_adler32_z
-+# define _dist_code _java_z__dist_code
-+# define _length_code _java_z__length_code
-+# define _tr_align _java_z__tr_align
-+# define _tr_flush_bits _java_z__tr_flush_bits
-+# define _tr_flush_block _java_z__tr_flush_block
-+# define _tr_init _java_z__tr_init
-+# define _tr_stored_block _java_z__tr_stored_block
-+# define _tr_tally _java_z__tr_tally
-+# define adler32 _java_z_adler32
-+# define adler32_combine _java_z_adler32_combine
-+# define adler32_combine64 _java_z_adler32_combine64
-+# define adler32_z _java_z_adler32_z
- # ifndef Z_SOLO
--# define compress z_compress
--# define compress2 z_compress2
--# define compressBound z_compressBound
--# endif
--# define crc32 z_crc32
--# define crc32_combine z_crc32_combine
--# define crc32_combine64 z_crc32_combine64
--# define crc32_z z_crc32_z
--# define deflate z_deflate
--# define deflateBound z_deflateBound
--# define deflateCopy z_deflateCopy
--# define deflateEnd z_deflateEnd
--# define deflateGetDictionary z_deflateGetDictionary
--# define deflateInit z_deflateInit
--# define deflateInit2 z_deflateInit2
--# define deflateInit2_ z_deflateInit2_
--# define deflateInit_ z_deflateInit_
--# define deflateParams z_deflateParams
--# define deflatePending z_deflatePending
--# define deflatePrime z_deflatePrime
--# define deflateReset z_deflateReset
--# define deflateResetKeep z_deflateResetKeep
--# define deflateSetDictionary z_deflateSetDictionary
--# define deflateSetHeader z_deflateSetHeader
--# define deflateTune z_deflateTune
--# define deflate_copyright z_deflate_copyright
--# define get_crc_table z_get_crc_table
-+# define compress _java_z_compress
-+# define compress2 _java_z_compress2
-+# define compressBound _java_z_compressBound
-+# endif
-+# define crc32 _java_z_crc32
-+# define crc32_combine _java_z_crc32_combine
-+# define crc32_combine64 _java_z_crc32_combine64
-+# define crc32_z _java_z_crc32_z
-+# define deflate _java_z_deflate
-+# define deflateBound _java_z_deflateBound
-+# define deflateCopy _java_z_deflateCopy
-+# define deflateEnd _java_z_deflateEnd
-+# define deflateGetDictionary _java_z_deflateGetDictionary
-+# define deflateInit _java_z_deflateInit
-+# define deflateInit2 _java_z_deflateInit2
-+# define deflateInit2_ _java_z_deflateInit2_
-+# define deflateInit_ _java_z_deflateInit_
-+# define deflateParams _java_z_deflateParams
-+# define deflatePending _java_z_deflatePending
-+# define deflatePrime _java_z_deflatePrime
-+# define deflateReset _java_z_deflateReset
-+# define deflateResetKeep _java_z_deflateResetKeep
-+# define deflateSetDictionary _java_z_deflateSetDictionary
-+# define deflateSetHeader _java_z_deflateSetHeader
-+# define deflateTune _java_z_deflateTune
-+# define deflate_copyright _java_z_deflate_copyright
-+# define get_crc_table _java_z_get_crc_table
- # ifndef Z_SOLO
--# define gz_error z_gz_error
--# define gz_intmax z_gz_intmax
--# define gz_strwinerror z_gz_strwinerror
--# define gzbuffer z_gzbuffer
--# define gzclearerr z_gzclearerr
--# define gzclose z_gzclose
--# define gzclose_r z_gzclose_r
--# define gzclose_w z_gzclose_w
--# define gzdirect z_gzdirect
--# define gzdopen z_gzdopen
--# define gzeof z_gzeof
--# define gzerror z_gzerror
--# define gzflush z_gzflush
--# define gzfread z_gzfread
--# define gzfwrite z_gzfwrite
--# define gzgetc z_gzgetc
--# define gzgetc_ z_gzgetc_
--# define gzgets z_gzgets
--# define gzoffset z_gzoffset
--# define gzoffset64 z_gzoffset64
--# define gzopen z_gzopen
--# define gzopen64 z_gzopen64
-+# define gz_error _java_z_gz_error
-+# define gz_intmax _java_z_gz_intmax
-+# define gz_strwinerror _java_z_gz_strwinerror
-+# define gzbuffer _java_z_gzbuffer
-+# define gzclearerr _java_z_gzclearerr
-+# define gzclose _java_z_gzclose
-+# define gzclose_r _java_z_gzclose_r
-+# define gzclose_w _java_z_gzclose_w
-+# define gzdirect _java_z_gzdirect
-+# define gzdopen _java_z_gzdopen
-+# define gzeof _java_z_gzeof
-+# define gzerror _java_z_gzerror
-+# define gzflush _java_z_gzflush
-+# define gzfread _java_z_gzfread
-+# define gzfwrite _java_z_gzfwrite
-+# define gzgetc _java_z_gzgetc
-+# define gzgetc_ _java_z_gzgetc_
-+# define gzgets _java_z_gzgets
-+# define gzoffset _java_z_gzoffset
-+# define gzoffset64 _java_z_gzoffset64
-+# define gzopen _java_z_gzopen
-+# define gzopen64 _java_z_gzopen64
- # ifdef _WIN32
--# define gzopen_w z_gzopen_w
-+# define gzopen_w _java_z_gzopen_w
- # endif
--# define gzprintf z_gzprintf
--# define gzputc z_gzputc
--# define gzputs z_gzputs
--# define gzread z_gzread
--# define gzrewind z_gzrewind
--# define gzseek z_gzseek
--# define gzseek64 z_gzseek64
--# define gzsetparams z_gzsetparams
--# define gztell z_gztell
--# define gztell64 z_gztell64
--# define gzungetc z_gzungetc
--# define gzvprintf z_gzvprintf
--# define gzwrite z_gzwrite
--# endif
--# define inflate z_inflate
--# define inflateBack z_inflateBack
--# define inflateBackEnd z_inflateBackEnd
--# define inflateBackInit z_inflateBackInit
--# define inflateBackInit_ z_inflateBackInit_
--# define inflateCodesUsed z_inflateCodesUsed
--# define inflateCopy z_inflateCopy
--# define inflateEnd z_inflateEnd
--# define inflateGetDictionary z_inflateGetDictionary
--# define inflateGetHeader z_inflateGetHeader
--# define inflateInit z_inflateInit
--# define inflateInit2 z_inflateInit2
--# define inflateInit2_ z_inflateInit2_
--# define inflateInit_ z_inflateInit_
--# define inflateMark z_inflateMark
--# define inflatePrime z_inflatePrime
--# define inflateReset z_inflateReset
--# define inflateReset2 z_inflateReset2
--# define inflateResetKeep z_inflateResetKeep
--# define inflateSetDictionary z_inflateSetDictionary
--# define inflateSync z_inflateSync
--# define inflateSyncPoint z_inflateSyncPoint
--# define inflateUndermine z_inflateUndermine
--# define inflateValidate z_inflateValidate
--# define inflate_copyright z_inflate_copyright
--# define inflate_fast z_inflate_fast
--# define inflate_table z_inflate_table
-+# define gzprintf _java_z_gzprintf
-+# define gzputc _java_z_gzputc
-+# define gzputs _java_z_gzputs
-+# define gzread _java_z_gzread
-+# define gzrewind _java_z_gzrewind
-+# define gzseek _java_z_gzseek
-+# define gzseek64 _java_z_gzseek64
-+# define gzsetparams _java_z_gzsetparams
-+# define gztell _java_z_gztell
-+# define gztell64 _java_z_gztell64
-+# define gzungetc _java_z_gzungetc
-+# define gzvprintf _java_z_gzvprintf
-+# define gzwrite _java_z_gzwrite
-+# endif
-+# define inflate _java_z_inflate
-+# define inflateBack _java_z_inflateBack
-+# define inflateBackEnd _java_z_inflateBackEnd
-+# define inflateBackInit _java_z_inflateBackInit
-+# define inflateBackInit_ _java_z_inflateBackInit_
-+# define inflateCodesUsed _java_z_inflateCodesUsed
-+# define inflateCopy _java_z_inflateCopy
-+# define inflateEnd _java_z_inflateEnd
-+# define inflateGetDictionary _java_z_inflateGetDictionary
-+# define inflateGetHeader _java_z_inflateGetHeader
-+# define inflateInit _java_z_inflateInit
-+# define inflateInit2 _java_z_inflateInit2
-+# define inflateInit2_ _java_z_inflateInit2_
-+# define inflateInit_ _java_z_inflateInit_
-+# define inflateMark _java_z_inflateMark
-+# define inflatePrime _java_z_inflatePrime
-+# define inflateReset _java_z_inflateReset
-+# define inflateReset2 _java_z_inflateReset2
-+# define inflateResetKeep _java_z_inflateResetKeep
-+# define inflateSetDictionary _java_z_inflateSetDictionary
-+# define inflateSync _java_z_inflateSync
-+# define inflateSyncPoint _java_z_inflateSyncPoint
-+# define inflateUndermine _java_z_inflateUndermine
-+# define inflateValidate _java_z_inflateValidate
-+# define inflate_copyright _java_z_inflate_copyright
-+# define inflate_fast _java_z_inflate_fast
-+# define inflate_table _java_z_inflate_table
- # ifndef Z_SOLO
--# define uncompress z_uncompress
--# define uncompress2 z_uncompress2
-+# define uncompress _java_z_uncompress
-+# define uncompress2 _java_z_uncompress2
- # endif
--# define zError z_zError
-+# define zError _java_z_zError
- # ifndef Z_SOLO
--# define zcalloc z_zcalloc
--# define zcfree z_zcfree
-+# define zcalloc _java_z_zcalloc
-+# define zcfree _java_z_zcfree
- # endif
--# define zlibCompileFlags z_zlibCompileFlags
--# define zlibVersion z_zlibVersion
-+# define zlibCompileFlags _java_z_zlibCompileFlags
-+# define zlibVersion _java_z_zlibVersion
-
- /* all zlib typedefs in zlib.h and zconf.h */
--# define Byte z_Byte
--# define Bytef z_Bytef
--# define alloc_func z_alloc_func
--# define charf z_charf
--# define free_func z_free_func
-+# define Byte _java_z_Byte
-+# define Bytef _java_z_Bytef
-+# define alloc_func _java_z_alloc_func
-+# define charf _java_z_charf
-+# define free_func _java_z_free_func
- # ifndef Z_SOLO
--# define gzFile z_gzFile
-+# define gzFile _java_z_gzFile
- # endif
--# define gz_header z_gz_header
--# define gz_headerp z_gz_headerp
--# define in_func z_in_func
--# define intf z_intf
--# define out_func z_out_func
--# define uInt z_uInt
--# define uIntf z_uIntf
--# define uLong z_uLong
--# define uLongf z_uLongf
--# define voidp z_voidp
--# define voidpc z_voidpc
--# define voidpf z_voidpf
-+# define gz_header _java_z_gz_header
-+# define gz_headerp _java_z_gz_headerp
-+# define in_func _java_z_in_func
-+# define intf _java_z_intf
-+# define out_func _java_z_out_func
-+# define uInt _java_z_uInt
-+# define uIntf _java_z_uIntf
-+# define uLong _java_z_uLong
-+# define uLongf _java_z_uLongf
-+# define voidp _java_z_voidp
-+# define voidpc _java_z_voidpc
-+# define voidpf _java_z_voidpf
-
- /* all zlib structs in zlib.h and zconf.h */
--# define gz_header_s z_gz_header_s
--# define internal_state z_internal_state
-+# define gz_header_s _java_z_gz_header_s
-+# define internal_state _java_z_internal_state
-
- #endif
-
---- jdk/src/share/native/sun/awt/debug/debug_util.h
-+++ jdk/src/share/native/sun/awt/debug/debug_util.h
-@@ -50,7 +50,9 @@
- #include <stdio.h>
- #include <string.h>
- #include <assert.h>
-+#if !defined(_ALLBSD_SOURCE)
- #include <malloc.h>
-+#endif
- #include <limits.h>
-
- /* keep these after the other headers */
---- jdk/src/share/native/sun/awt/image/BufImgSurfaceData.c
-+++ jdk/src/share/native/sun/awt/image/BufImgSurfaceData.c
-@@ -24,7 +24,11 @@
- */
-
- #include "BufImgSurfaceData.h"
-+#ifdef _ALLBSD_SOURCE
-+#include <stdlib.h>
-+#else
- #include "malloc.h"
-+#endif
-
- #include "sun_awt_image_BufImgSurfaceData.h"
-
---- jdk/src/share/native/sun/awt/image/DataBufferNative.c
-+++ jdk/src/share/native/sun/awt/image/DataBufferNative.c
-@@ -23,7 +23,11 @@
- * questions.
- */
-
-+#ifdef _ALLBSD_SOURCE
-+#include <stdlib.h>
-+#else
- #include "malloc.h"
-+#endif
-
- #include "SurfaceData.h"
- #include "sun_awt_image_DataBufferNative.h"
---- jdk/src/share/native/sun/awt/medialib/mlib_ImageConv2x2_f.c
-+++ jdk/src/share/native/sun/awt/medialib/mlib_ImageConv2x2_f.c
-@@ -86,7 +86,7 @@
- #endif /* MLIB_USE_FTOI_CLAMPING */
-
- /***************************************************************/
--#if defined(_LITTLE_ENDIAN) && !defined(_NO_LONGLONG)
-+#if (BYTE_ORDER == 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 /* (BYTE_ORDER == LITTLE_ENDIAN) && !defined(_NO_LONGLONG) */
-
- /***************************************************************/
- #ifdef _NO_LONGLONG
-@@ -114,17 +114,17 @@
-
- #else /* _NO_LONGLONG */
-
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
-
- #define LOAD_BUFF(buff) \
- *(mlib_s64*)(buff + i) = (((mlib_s64)sp[chan1]) << 32) | ((mlib_s64)sp[0] & 0xffffffff)
-
--#else /* _LITTLE_ENDIAN */
-+#else
-
- #define LOAD_BUFF(buff) \
- *(mlib_s64*)(buff + i) = (((mlib_s64)sp[0]) << 32) | ((mlib_s64)sp[chan1] & 0xffffffff)
-
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
-
- #endif /* _NO_LONGLONG */
-
---- jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16ext.c
-+++ jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16ext.c
-@@ -126,7 +126,7 @@
- #define D2I(x) CLAMP_S32((x) SAT_OFF)
-
- /***************************************************************/
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
-
- #define STORE2(res0, res1) \
- dp[0 ] = res1; \
-@@ -138,7 +138,7 @@
- dp[0 ] = res0; \
- dp[chan1] = res1
-
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
-
- /***************************************************************/
- #ifdef _NO_LONGLONG
-@@ -149,17 +149,17 @@
-
- #else /* _NO_LONGLONG */
-
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
-
- #define LOAD_BUFF(buff) \
- *(mlib_s64*)(buff + i) = (((mlib_s64)sp[chan1]) << 32) | S64TOS32((mlib_s64)sp[0])
-
--#else /* _LITTLE_ENDIAN */
-+#else
-
- #define LOAD_BUFF(buff) \
- *(mlib_s64*)(buff + i) = (((mlib_s64)sp[0]) << 32) | S64TOS32((mlib_s64)sp[chan1])
-
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
- #endif /* _NO_LONGLONG */
-
- /***************************************************************/
---- jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16nw.c
-+++ jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16nw.c
-@@ -94,7 +94,7 @@
- #define D2I(x) CLAMP_S32((x) SAT_OFF)
-
- /***************************************************************/
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
-
- #define STORE2(res0, res1) \
- dp[0 ] = res1; \
-@@ -106,7 +106,7 @@
- dp[0 ] = res0; \
- dp[chan1] = res1
-
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
-
- /***************************************************************/
- #ifdef _NO_LONGLONG
-@@ -117,17 +117,17 @@
-
- #else /* _NO_LONGLONG */
-
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
-
- #define LOAD_BUFF(buff) \
- *(mlib_s64*)(buff + i) = (((mlib_s64)sp[chan1]) << 32) | S64TOS32((mlib_s64)sp[0])
-
--#else /* _LITTLE_ENDIAN */
-+#else
-
- #define LOAD_BUFF(buff) \
- *(mlib_s64*)(buff + i) = (((mlib_s64)sp[0]) << 32) | S64TOS32((mlib_s64)sp[chan1])
-
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
- #endif /* _NO_LONGLONG */
-
- /***************************************************************/
---- jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8ext.c
-+++ jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8ext.c
-@@ -126,7 +126,7 @@
- #define D2I(x) CLAMP_S32((x) SAT_OFF)
-
- /***************************************************************/
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
-
- #define STORE2(res0, res1) \
- dp[0 ] = res1; \
-@@ -138,7 +138,7 @@
- dp[0 ] = res0; \
- dp[chan1] = res1
-
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
-
- /***************************************************************/
- #ifdef _NO_LONGLONG
-@@ -149,17 +149,17 @@
-
- #else /* _NO_LONGLONG */
-
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
-
- #define LOAD_BUFF(buff) \
- *(mlib_s64*)(buff + i) = (((mlib_s64)sp[chan1]) << 32) | S64TOS32((mlib_s64)sp[0])
-
--#else /* _LITTLE_ENDIAN */
-+#else
-
- #define LOAD_BUFF(buff) \
- *(mlib_s64*)(buff + i) = (((mlib_s64)sp[0]) << 32) | S64TOS32((mlib_s64)sp[chan1])
-
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
- #endif /* _NO_LONGLONG */
-
- /***************************************************************/
---- jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8nw.c
-+++ jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8nw.c
-@@ -95,7 +95,7 @@
- #define D2I(x) CLAMP_S32((x) SAT_OFF)
-
- /***************************************************************/
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
-
- #define STORE2(res0, res1) \
- dp[0 ] = res1; \
-@@ -107,7 +107,7 @@
- dp[0 ] = res0; \
- dp[chan1] = res1
-
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
-
- /***************************************************************/
- #ifdef _NO_LONGLONG
-@@ -118,17 +118,17 @@
-
- #else /* _NO_LONGLONG */
-
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
-
- #define LOAD_BUFF(buff) \
- *(mlib_s64*)(buff + i) = (((mlib_s64)sp[chan1]) << 32) | S64TOS32((mlib_s64)sp[0])
-
--#else /* _LITTLE_ENDIAN */
-+#else
-
- #define LOAD_BUFF(buff) \
- *(mlib_s64*)(buff + i) = (((mlib_s64)sp[0]) << 32) | S64TOS32((mlib_s64)sp[chan1])
-
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
- #endif /* _NO_LONGLONG */
-
- /***************************************************************/
---- jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16ext.c
-+++ jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16ext.c
-@@ -126,7 +126,7 @@
- #define D2I(x) CLAMP_S32((x) SAT_OFF)
-
- /***************************************************************/
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
-
- #define STORE2(res0, res1) \
- dp[0 ] = res1; \
-@@ -138,7 +138,7 @@
- dp[0 ] = res0; \
- dp[chan1] = res1
-
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
-
- /***************************************************************/
- #ifdef _NO_LONGLONG
-@@ -149,17 +149,17 @@
-
- #else /* _NO_LONGLONG */
-
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
-
- #define LOAD_BUFF(buff) \
- *(mlib_s64*)(buff + i) = (((mlib_s64)sp[chan1]) << 32) | S64TOS32((mlib_s64)sp[0])
-
--#else /* _LITTLE_ENDIAN */
-+#else
-
- #define LOAD_BUFF(buff) \
- *(mlib_s64*)(buff + i) = (((mlib_s64)sp[0]) << 32) | S64TOS32((mlib_s64)sp[chan1])
-
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
- #endif /* _NO_LONGLONG */
-
- /***************************************************************/
---- jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16nw.c
-+++ jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16nw.c
-@@ -94,7 +94,7 @@
- #define D2I(x) CLAMP_S32((x) SAT_OFF)
-
- /***************************************************************/
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
-
- #define STORE2(res0, res1) \
- dp[0 ] = res1; \
-@@ -106,7 +106,7 @@
- dp[0 ] = res0; \
- dp[chan1] = res1
-
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
-
- /***************************************************************/
- #ifdef _NO_LONGLONG
-@@ -117,17 +117,17 @@
-
- #else /* _NO_LONGLONG */
-
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
-
- #define LOAD_BUFF(buff) \
- *(mlib_s64*)(buff + i) = (((mlib_s64)sp[chan1]) << 32) | S64TOS32((mlib_s64)sp[0])
-
--#else /* _LITTLE_ENDIAN */
-+#else
-
- #define LOAD_BUFF(buff) \
- *(mlib_s64*)(buff + i) = (((mlib_s64)sp[0]) << 32) | S64TOS32((mlib_s64)sp[chan1])
-
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
- #endif /* _NO_LONGLONG */
-
- /***************************************************************/
---- jdk/src/share/native/sun/awt/medialib/mlib_ImageCopy_Bit.c
-+++ jdk/src/share/native/sun/awt/medialib/mlib_ImageCopy_Bit.c
-@@ -95,7 +95,7 @@
- dst = dp[0];
- if (ld_offset + size < 32) {
- dmask = (mask0 << (32 - size)) >> ld_offset;
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- return;
- }
-
- dmask = mask0 >> ld_offset;
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- return;
- }
-
- dmask = mask0 >> ld_offset;
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- j = 32 - ld_offset;
- dp++;
- sp++;
-@@ -164,19 +164,19 @@
- }
-
- if (j < size) src1 = sp[0];
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- src1 = (src1 << 24) | ((src1 & 0xFF00) << 8) | ((src1 >> 8) & 0xFF00) | (src1 >> 24);
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
- for (; j <= size - 32; j += 32) {
- src0 = src1;
- src1 = sp[1];
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- return;
- }
-
- dmask = lmask0 << (32 - ld_offset);
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- return;
- }
-
- dmask = lmask0 << (32 - ld_offset);
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- j = ld_offset;
- dp--;
- sp--;
-@@ -384,22 +384,22 @@
- }
-
- if (j < size) src1 = sp[0];
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- src1 = (src1 << 24) | ((src1 & 0xFF00) << 8) | ((src1 >> 8) & 0xFF00) | (src1 >> 24);
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- }
-
- #else /* _LONGLONG */
---- jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_64.c
-+++ jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_64.c
-@@ -168,7 +168,7 @@
- }
-
- /***************************************************************/
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
-
- /***************************************************************/
- void mlib_ImageLookUp_U8_D64(const mlib_u8 *src,
-@@ -612,7 +612,7 @@
- #pragma pipeloop(0)
- #endif /* __SUNPRO_C */
- for (i = 0; i < size - 7; i += 4, dp += 8, sa++) {
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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));
-@@ -622,12 +622,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 /* BYTE_ORDER == LITTLE_ENDIAN */
- dp[0] = t0;
- dp[1] = t1;
- dp[2] = t2;
- dp[3] = t3;
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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));
-@@ -637,7 +637,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 /* BYTE_ORDER == LITTLE_ENDIAN */
- s0 = sa[0];
- dp[4] = t0;
- dp[5] = t1;
-@@ -645,7 +645,7 @@
- dp[7] = t3;
- }
-
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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));
-@@ -655,12 +655,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 /* BYTE_ORDER == LITTLE_ENDIAN */
- dp[0] = t0;
- dp[1] = t1;
- dp[2] = t2;
- dp[3] = t3;
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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));
-@@ -670,7 +670,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 /* BYTE_ORDER == LITTLE_ENDIAN */
- dp[4] = t0;
- dp[5] = t1;
- dp[6] = t2;
-@@ -718,7 +718,7 @@
- #pragma pipeloop(0)
- #endif /* __SUNPRO_C */
- for (i = 0; i < size - 7; i += 4, dp += 12, sa++) {
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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));
-@@ -732,14 +732,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 /* BYTE_ORDER == LITTLE_ENDIAN */
- dp[0] = t0;
- dp[1] = t1;
- dp[2] = t2;
- dp[3] = t3;
- dp[4] = t4;
- dp[5] = t5;
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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));
-@@ -753,7 +753,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 /* BYTE_ORDER == LITTLE_ENDIAN */
- s0 = sa[0];
- dp[6] = t0;
- dp[7] = t1;
-@@ -763,7 +763,7 @@
- dp[11] = t5;
- }
-
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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));
-@@ -777,14 +777,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 /* BYTE_ORDER == LITTLE_ENDIAN */
- dp[0] = t0;
- dp[1] = t1;
- dp[2] = t2;
- dp[3] = t3;
- dp[4] = t4;
- dp[5] = t5;
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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));
-@@ -798,7 +798,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 /* BYTE_ORDER == LITTLE_ENDIAN */
- dp[6] = t0;
- dp[7] = t1;
- dp[8] = t2;
-@@ -851,7 +851,7 @@
- #pragma pipeloop(0)
- #endif /* __SUNPRO_C */
- for (i = 0; i < size - 7; i += 4, dp += 16, sa++) {
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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));
-@@ -861,12 +861,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 /* BYTE_ORDER == LITTLE_ENDIAN */
- dp[0] = t0;
- dp[1] = t1;
- dp[2] = t2;
- dp[3] = t3;
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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));
-@@ -876,12 +876,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 /* BYTE_ORDER == LITTLE_ENDIAN */
- dp[4] = t0;
- dp[5] = t1;
- dp[6] = t2;
- dp[7] = t3;
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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));
-@@ -891,12 +891,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 /* BYTE_ORDER == LITTLE_ENDIAN */
- dp[8] = t0;
- dp[9] = t1;
- dp[10] = t2;
- dp[11] = t3;
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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));
-@@ -906,7 +906,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 /* BYTE_ORDER == LITTLE_ENDIAN */
- s0 = sa[0];
- dp[12] = t0;
- dp[13] = t1;
-@@ -914,7 +914,7 @@
- dp[15] = t3;
- }
-
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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));
-@@ -924,12 +924,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 /* BYTE_ORDER == LITTLE_ENDIAN */
- dp[0] = t0;
- dp[1] = t1;
- dp[2] = t2;
- dp[3] = t3;
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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));
-@@ -939,12 +939,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 /* BYTE_ORDER == LITTLE_ENDIAN */
- dp[4] = t0;
- dp[5] = t1;
- dp[6] = t2;
- dp[7] = t3;
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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));
-@@ -954,12 +954,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 /* BYTE_ORDER == LITTLE_ENDIAN */
- dp[8] = t0;
- dp[9] = t1;
- dp[10] = t2;
- dp[11] = t3;
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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));
-@@ -969,7 +969,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 /* BYTE_ORDER == LITTLE_ENDIAN */
- dp[12] = t0;
- dp[13] = t1;
- dp[14] = t2;
---- jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_Bit.c
-+++ jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_Bit.c
-@@ -88,7 +88,7 @@
- } d64_2_f32;
-
- /***************************************************************/
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- sa += 2;
- }
-
-@@ -258,20 +258,20 @@
- val1 = p_dd[2*val0+1];
- }
-
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- ((mlib_u32*)da)[0] = (val1 & emask) | (((mlib_u32*)da)[0] &~ emask);
-
- #else /* _NO_LONGLONG */
-
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- val0 |= (val0 << 16);
- val1 |= (val1 << 16);
-
-@@ -394,11 +394,11 @@
- dd1 = dd2;
- }
-
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
-
- /* calculate lookup table */
- #ifdef __SUNPRO_C
-@@ -564,11 +564,11 @@
- dd = ((mlib_u32*)(d_array12 + (s0 & 0xF)))[1];
- }
-
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- da[0] = (dd & emask) | (da[0] &~ emask);
- }
-
-@@ -611,13 +611,13 @@
-
- buffs = buff + size;
-
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == 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
-+++ jdk/src/share/native/sun/awt/medialib/mlib_ImageUtils.c
-@@ -30,7 +30,7 @@
- typedef union {
- mlib_d64 db;
- struct {
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- mlib_s32 int1, int0;
- #else
- mlib_s32 int0, int1;
---- jdk/src/share/native/sun/awt/medialib/mlib_c_ImageCopy.c
-+++ jdk/src/share/native/sun/awt/medialib/mlib_c_ImageCopy.c
-@@ -275,11 +275,11 @@
- for (i = 0; j <= (b_size - 4); j += 4, i++) {
- src0 = src1;
- src1 = pws[i + 1];
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- pwd[i] = (src0 >> lshift) | (src1 << rshift);
- #else
- pwd[i] = (src0 << lshift) | (src1 >> rshift);
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
- }
-
- sa += i << 2;
-@@ -381,11 +381,11 @@
- for (; j <= (src_width - 4); j += 4) {
- src0 = src1;
- src1 = ps[1];
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- ps++;
- }
- }
-@@ -414,11 +414,11 @@
- for (; j <= (src_width - 8); j += 8) {
- src0 = src1;
- src1 = ps[1];
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- ps++;
- }
- }
-@@ -484,11 +484,11 @@
- for (; j <= (src_width - 2); j += 2) {
- src0 = src1;
- src1 = ps[1];
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- ps++;
- }
- }
-@@ -516,11 +516,11 @@
- for (; j <= (src_width - 4); j += 4) {
- src0 = src1;
- src1 = ps[1];
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- ps++;
- }
- }
-@@ -585,11 +585,11 @@
- for (; j <= (src_width - 2); j += 2) {
- src0 = src1;
- src1 = ps[1];
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- ps++;
- }
- }
-@@ -687,11 +687,11 @@
- #endif /* __SUNPRO_C */
- for (; n > SIZE; n -= SIZE) {
- s1 = *tmp++;
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- *(TYPE *) dp = (s0 >> shl) | (s1 << shr);
- #else
- *(TYPE *) dp = (s0 << shl) | (s1 >> shr);
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
- s0 = s1;
- dp += SIZE;
- sp += SIZE;
---- jdk/src/share/native/sun/awt/medialib/mlib_c_ImageLookUp_f.c
-+++ jdk/src/share/native/sun/awt/medialib/mlib_c_ImageLookUp_f.c
-@@ -120,7 +120,7 @@
- } \
- }
-
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == ... */
-
- /***********/
- #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 /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- *dp++ = tab[s2 >> 8];
- #else
- *dp++ = tab[s2 & 0xFF];
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- *dp++ = tab0[s2 >> 8];
- #else
- *dp++ = tab0[s2 & 0xFF];
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
- sp = (mlib_u8 *) sa;
- i += 5;
-
-@@ -544,11 +544,11 @@
- da[0] = t;
- da++;
- dp = (mlib_u8 *) da;
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- *dp++ = tab1[s2 >> 8];
- #else
- *dp++ = tab1[s2 & 0xFF];
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
- sp = (mlib_u8 *) sa;
- i += 5;
-
-@@ -694,11 +694,11 @@
- da[0] = t;
- da++;
- dp = (mlib_u8 *) da;
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- *dp++ = tab0[s2 >> 8];
- #else
- *dp++ = tab0[s2 & 0xFF];
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- s2 = (s1 << 8) + s0;
- #else
- s2 = (s0 << 8) + s1;
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
- s0 = tab0[i];
- s1 = tab1[i];
- tab[i - 1] = (mlib_u16) s2;
- }
-
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- s2 = (s1 << 8) + s0;
- #else
- s2 = (s0 << 8) + s1;
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- t = (t1 << 16) + t0;
- #else
- t = (t0 << 16) + t1;
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
- s0 = sa[0];
- s1 = sa[1];
- da[0] = t;
-@@ -1909,11 +1909,11 @@
-
- t0 = tab[s0];
- t1 = tab[s1];
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- t = (t1 << 16) + t0;
- #else
- t = (t0 << 16) + t1;
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
- da[0] = t;
- da++;
-
-@@ -1927,13 +1927,13 @@
-
- if (off > 1) {
- t0 = tab[sa[0]];
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- dp[1] = (t0 >> 8);
- dp[0] = t0;
- #else
- dp[0] = (t0 >> 8);
- dp[1] = t0;
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
- sa++;
- size--;
- dp += 2;
-@@ -1941,11 +1941,11 @@
-
- t0 = tab[sa[0]];
- sa++;
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- *dp++ = t0;
- #else
- *dp++ = (t0 >> 8);
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- t = (t0 >> 8) + (t1 << 8) + (t2 << 24);
- #else
- t = (t0 << 24) + (t1 << 8) + (t2 >> 8);
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
- t0 = t2;
- s0 = sa[0];
- s1 = sa[1];
-@@ -1972,29 +1972,29 @@
-
- t1 = tab[s0];
- t2 = tab[s1];
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- t = (t0 >> 8) + (t1 << 8) + (t2 << 24);
- #else
- t = (t0 << 24) + (t1 << 8) + (t2 >> 8);
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
- da[0] = t;
- da++;
- dp = (mlib_u8 *) da;
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- dp[0] = (t2 >> 8);
- #else
- dp[0] = t2;
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
-
- if ((size & 1) == 0) {
- t0 = tab[sa[0]];
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- dp[2] = (t0 >> 8);
- dp[1] = t0;
- #else
- dp[1] = (t0 >> 8);
- dp[2] = t0;
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
- }
- }
- }
-@@ -2012,22 +2012,22 @@
- s1 = tab1[0];
- s2 = tab2[0];
- for (i = 1; i < 256; i++) {
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- s3 = (s2 << 24) + (s1 << 16) + (s0 << 8);
- #else
- s3 = (s0 << 16) + (s1 << 8) + s2;
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
- s0 = tab0[i];
- s1 = tab1[i];
- s2 = tab2[i];
- tab[i - 1] = s3;
- }
-
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- s3 = (s2 << 24) + (s1 << 16) + (s0 << 8);
- #else
- s3 = (s0 << 16) + (s1 << 8) + s2;
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- s0 = sa[0];
- s1 = sa[1];
- t0 = tab[s0];
- t1 = tab[s1];
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- res2 += (t0 << 8);
- res1 = (t0 >> 24) + t1;
- #else
- res2 += (t0 >> 8);
- res1 = (t0 << 24) + t1;
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
- s0 = sa[2];
- s1 = sa[3];
- da[1] = res2;
-@@ -2090,24 +2090,24 @@
-
- t0 = tab[s0];
- t1 = tab[s1];
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- s0 = sa[0];
- s1 = sa[1];
- t0 = tab[s0];
- t1 = tab[s1];
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- res2 += (t0 << 8);
- res1 = (t0 >> 24) + t1;
- #else
- res2 += (t0 >> 8);
- res1 = (t0 << 24) + t1;
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- s4 = (s3 << 24) + (s2 << 16) + (s1 << 8) + s0;
- #else
- s4 = (s0 << 24) + (s1 << 16) + (s2 << 8) + s3;
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
- s0 = tab0[i];
- s1 = tab1[i];
- s2 = tab2[i];
-@@ -2155,11 +2155,11 @@
- tab[i - 1] = s4;
- }
-
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- s4 = (s3 << 24) + (s2 << 16) + (s1 << 8) + s0;
- #else
- s4 = (s0 << 24) + (s1 << 16) + (s2 << 8) + s3;
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- t0 = t2;
- s0 = sa[0];
- s1 = sa[1];
-@@ -2241,28 +2241,28 @@
-
- t1 = tab[s0];
- t2 = tab[s1];
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- da[0] = res1;
- da[1] = res2;
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- da += 2;
- dp = (mlib_u8 *) da + (4 - off);
-
- if ((size & 1) == 0) {
- t0 = tab[sa[0]];
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- }
- }
- }
-@@ -2348,13 +2348,13 @@
- t3 = tab0[s1];
- t4 = tab1[s1];
- t5 = tab2[s1];
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- res = (t3 << 24) + (t2 << 16) + (t1 << 8) + t0;
- #else
- res = (t0 << 24) + (t1 << 16) + (t2 << 8) + t3;
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
- s0 = sa[0];
- da[0] = res;
- }
-@@ -2468,11 +2468,11 @@
- t1 = tab1[s0];
- t2 = tab2[s0];
- t3 = tab3[s0];
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- res = (t3 << 24) + (t2 << 16) + (t1 << 8) + t0;
- #else
- res = (t0 << 24) + (t1 << 16) + (t2 << 8) + t3;
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
- da[0] = res;
-
- }
-@@ -2496,11 +2496,11 @@
- t2 = tab2[s0];
- t3 = tab3[s0];
-
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- res1 = (t3 << 24) + (t2 << 16) + (t1 << 8) + t0;
- #else
- res1 = (t0 << 24) + (t1 << 16) + (t2 << 8) + t3;
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
-
- s0 = sa[0];
- sa++;
-@@ -2513,13 +2513,13 @@
- t1 = tab1[s0];
- t2 = tab2[s0];
- t3 = tab3[s0];
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- da[0] = res;
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- }
- }
- }
-@@ -2617,13 +2617,13 @@
- t3 = tab0[s1];
- t4 = tab1[s1];
- t5 = tab2[s1];
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- res = (t3 << 24) + (t2 << 16) + (t1 << 8) + t0;
- #else
- res = (t0 << 24) + (t1 << 16) + (t2 << 8) + t3;
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
- s0 = sa[0];
- da[0] = res;
- }
-@@ -2737,11 +2737,11 @@
- t1 = tab1[s0];
- t2 = tab2[s0];
- t3 = tab3[s0];
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- res = (t3 << 24) + (t2 << 16) + (t1 << 8) + t0;
- #else
- res = (t0 << 24) + (t1 << 16) + (t2 << 8) + t3;
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
- da[0] = res;
-
- }
-@@ -2765,11 +2765,11 @@
- t2 = tab2[s0];
- t3 = tab3[s0];
-
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- res1 = (t3 << 24) + (t2 << 16) + (t1 << 8) + t0;
- #else
- res1 = (t0 << 24) + (t1 << 16) + (t2 << 8) + t3;
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
-
- s0 = sa[0];
- sa++;
-@@ -2782,13 +2782,13 @@
- t1 = tab1[s0];
- t2 = tab2[s0];
- t3 = tab3[s0];
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- da[0] = res;
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- }
- }
- }
-@@ -2863,21 +2863,21 @@
- s0 = tab0[0];
- s1 = tab1[0];
- for (i = 1; i < 256; i++) {
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- s2 = (s1 << 16) + s0;
- #else
- s2 = (s0 << 16) + s1;
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
- s0 = tab0[i];
- s1 = tab1[i];
- tab[i - 1] = s2;
- }
-
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- s2 = (s1 << 16) + s0;
- #else
- s2 = (s0 << 16) + s1;
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- *dp++ = (mlib_u16) (t0);
- #else
- *dp++ = (mlib_u16) (t0 >> 16);
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- t0 = t2;
- s0 = sa[0];
- s1 = sa[1];
-@@ -2951,32 +2951,32 @@
-
- t1 = tab[s0];
- t2 = tab[s1];
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- da[0] = res1;
- da[1] = res2;
- da += 2;
- dp = (mlib_u16 *) da;
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- dp[0] = (mlib_u16) (t2 >> 16);
- #else
- dp[0] = (mlib_u16) t2;
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
-
- if ((size & 1) == 0) {
- t0 = tab[sa[0]];
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- }
- }
- }
-@@ -2994,13 +2994,13 @@
- s1 = tab1[0];
- s2 = tab2[0];
- for (i = 1; i < 256; i++) {
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- s3 = (s0 << 16);
- s4 = (s2 << 16) + s1;
- #else
- s3 = s0;
- s4 = (s1 << 16) + s2;
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
- s0 = tab0[i];
- s1 = tab1[i];
- s2 = tab2[i];
-@@ -3008,13 +3008,13 @@
- tab[2 * i - 1] = s4;
- }
-
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- s4 = (s2 << 16) + s1;
- tab[510] = s0 << 16;
- #else
- s4 = (s1 << 16) + s2;
- tab[510] = s0;
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- s4 = (s1 << 16) + s0;
- s5 = (s3 << 16) + s2;
- #else
- s4 = (s0 << 16) + s1;
- s5 = (s2 << 16) + s3;
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
- s0 = tab0[i];
- s1 = tab1[i];
- s2 = tab2[i];
-@@ -3120,13 +3120,13 @@
- tab[2 * i - 1] = s5;
- }
-
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- s4 = (s1 << 16) + s0;
- s5 = (s3 << 16) + s2;
- #else
- s4 = (s0 << 16) + s1;
- s5 = (s2 << 16) + s3;
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- *dp++ = (mlib_u16) (t4);
- #else
- *dp++ = (mlib_u16) (t4 >> 16);
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
- sa++;
- da = (mlib_u32 *) dp;
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- *da++ = (t4 >> 16) + (t5 << 16);
- #else
- *da++ = (t4 << 16) + (t5 >> 16);
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- da[0] = res1;
- da[1] = res2;
- da[2] = res3;
- da[3] = res4;
- da += 4;
- dp = (mlib_u16 *) da;
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- dp[0] = (mlib_u16) (t3 >> 16);
- #else
- dp[0] = (mlib_u16) t3;
--#endif /* _LITTLE_ENDIAN */
-+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
-
- if ((size & 1) == 0) {
- t0 = tab[2 * sa[0]];
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- t0 = tab[2 * sa[0] + 1];
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- dp[0] = t0;
- dp[1] = t1;
- dp[2] = t2;
- dp[3] = t3;
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- s0 = sa[0];
- dp[4] = t0;
- dp[5] = t1;
-@@ -3472,7 +3472,7 @@
- dp[7] = t3;
- }
-
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- dp[0] = t0;
- dp[1] = t1;
- dp[2] = t2;
- dp[3] = t3;
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- dp[0] = t0;
- dp[1] = t1;
- dp[2] = t2;
- dp[3] = t3;
- dp[4] = t4;
- dp[5] = t5;
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- s0 = sa[0];
- dp[6] = t0;
- dp[7] = t1;
-@@ -3590,7 +3590,7 @@
- dp[11] = t5;
- }
-
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- dp[0] = t0;
- dp[1] = t1;
- dp[2] = t2;
- dp[3] = t3;
- dp[4] = t4;
- dp[5] = t5;
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == 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
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- dp[0] = t0;
- dp[1] = t1;
- dp[2] = t2;
- dp[3] = t3;
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- dp[4] = t0;
- dp[5] = t1;
- dp[6] = t2;
- dp[7] = t3;
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- dp[8] = t0;
- dp[9] = t1;
- dp[10] = t2;
- dp[11] = t3;
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- s0 = sa[0];
- dp[12] = t0;
- dp[13] = t1;
-@@ -3741,7 +3741,7 @@
- dp[15] = t3;
- }
-
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- dp[0] = t0;
- dp[1] = t1;
- dp[2] = t2;
- dp[3] = t3;
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- dp[4] = t0;
- dp[5] = t1;
- dp[6] = t2;
- dp[7] = t3;
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- dp[8] = t0;
- dp[9] = t1;
- dp[10] = t2;
- dp[11] = t3;
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BYTE_ORDER == LITTLE_ENDIAN */
- dp[12] = t0;
- dp[13] = t1;
- dp[14] = t2;
---- jdk/src/share/native/sun/awt/medialib/mlib_image.h
-+++ jdk/src/share/native/sun/awt/medialib/mlib_image.h
-@@ -27,6 +27,11 @@
- #ifndef MLIB_IMAGE_H
- #define MLIB_IMAGE_H
-
-+#ifdef __OpenBSD__
-+#include <sys/types.h>
-+#endif
-+#include <machine/endian.h>
-+
- #include <mlib_types.h>
- #include <mlib_status.h>
- #include <mlib_sys.h>
---- jdk/src/share/native/sun/awt/medialib/mlib_sys.c
-+++ jdk/src/share/native/sun/awt/medialib/mlib_sys.c
-@@ -26,9 +26,15 @@
-
- #include <stdlib.h>
- #include <string.h>
-+#ifdef _ALLBSD_SOURCE
-+#include <unistd.h>
-+#endif
- #include <mlib_types.h>
- #include <mlib_sys_proto.h>
- #include "mlib_SysMath.h"
-+#if defined(_ALLBSD_SOURCE)
-+#include <sys/param.h>
-+#endif
-
- /***************************************************************/
-
-@@ -86,7 +92,12 @@
- * alignment. -- from stdlib.h of MS VC++5.0.
- */
- return (void *) malloc(size);
--#else /* _MSC_VER */
-+#elif defined(__FreeBSD__) && (__FreeBSD_version >= 700013)
-+ void *ret;
-+ return posix_memalign(&ret, 8, size) ? NULL : ret;
-+#elif defined(_ALLBSD_SOURCE)
-+ return valloc(size);
-+#else
- return (void *) memalign(8, size);
- #endif /* _MSC_VER */
- }
---- jdk/src/share/native/sun/awt/medialib/mlib_types.h
-+++ jdk/src/share/native/sun/awt/medialib/mlib_types.h
-@@ -59,7 +59,10 @@
-
- #if defined(__SUNPRO_C) || defined(__SUNPRO_CC) || defined(__GNUC__)
-
--#if defined(__linux__)
-+#if defined(_ALLBSD_SOURCE)
-+#include <stddef.h> /* for ptrdiff_t */
-+#include <stdint.h> /* for uintptr_t */
-+#elif defined(__linux__)
- #include <stdint.h> /* for uintptr_t */
- #include <malloc.h> /* for ptrdiff_t */
- #else
---- jdk/src/share/native/sun/font/AccelGlyphCache.c
-+++ jdk/src/share/native/sun/font/AccelGlyphCache.c
-@@ -23,7 +23,11 @@
- * questions.
- */
-
-+#ifdef _ALLBSD_SOURCE
-+#include <stdlib.h>
-+#else
- #include <malloc.h>
-+#endif
- #include "jni.h"
- #include "AccelGlyphCache.h"
- #include "Trace.h"
---- jdk/src/share/native/sun/font/DrawGlyphList.c
-+++ jdk/src/share/native/sun/font/DrawGlyphList.c
-@@ -26,7 +26,11 @@
- #include "jlong.h"
- #include "math.h"
- #include "string.h"
-+#ifdef _ALLBSD_SOURCE
-+#include "stdlib.h"
-+#else
- #include "malloc.h"
-+#endif
- #include "sunfontids.h"
- #include "fontscalerdefs.h"
- #include "glyphblitting.h"
---- jdk/src/share/native/sun/font/sunFont.c
-+++ jdk/src/share/native/sun/font/sunFont.c
-@@ -24,7 +24,9 @@
- */
-
- #include "stdlib.h"
-+#ifndef _ALLBSD_SOURCE
- #include "malloc.h"
-+#endif
- #include "string.h"
- #include "gdefs.h"
- #include "jlong.h"
---- jdk/src/share/native/sun/java2d/SurfaceData.c
-+++ jdk/src/share/native/sun/java2d/SurfaceData.c
-@@ -28,7 +28,11 @@
- #include "jni_util.h"
- #include "Disposer.h"
-
-+#ifdef _ALLBSD_SOURCE
-+#include <stdlib.h>
-+#else
- #include "malloc.h"
-+#endif
- #include "string.h"
-
- /**
---- jdk/src/share/native/sun/java2d/opengl/OGLFuncs.h
-+++ jdk/src/share/native/sun/java2d/opengl/OGLFuncs.h
-@@ -26,6 +26,9 @@
- #ifndef OGLFuncs_h_Included
- #define OGLFuncs_h_Included
-
-+#ifdef _ALLBSD_SOURCE
-+#include <dlfcn.h>
-+#endif
- #include "jni.h"
- #include "J2D_GL/gl.h"
- #include "J2D_GL/glext.h"
---- jdk/src/share/native/sun/java2d/opengl/OGLRenderQueue.c
-+++ jdk/src/share/native/sun/java2d/opengl/OGLRenderQueue.c
-@@ -25,7 +25,11 @@
-
- #ifndef HEADLESS
-
-+#ifdef _ALLBSD_SOURCE
-+#include <stdlib.h>
-+#else
- #include <malloc.h>
-+#endif
-
- #include "sun_java2d_pipe_BufferedOpCodes.h"
-
---- jdk/src/share/native/sun/java2d/opengl/OGLTextRenderer.c
-+++ jdk/src/share/native/sun/java2d/opengl/OGLTextRenderer.c
-@@ -25,7 +25,11 @@
-
- #ifndef HEADLESS
-
-+#ifdef _ALLBSD_SOURCE
-+#include <stdlib.h>
-+#else
- #include <malloc.h>
-+#endif
- #include <math.h>
- #include <jlong.h>
-
---- jdk/src/share/transport/socket/socketTransport.c
-+++ jdk/src/share/transport/socket/socketTransport.c
-@@ -65,6 +65,9 @@
- #define HEADER_SIZE 11
- #define MAX_DATA_SIZE 1000
-
-+static jint recv_fully(int, char *, int);
-+static jint send_fully(int, char *, int);
-+
- /*
- * Record the last error for this thread.
- */
-@@ -155,7 +158,7 @@
- }
- buf = b;
- buf += received;
-- n = dbgsysRecv(fd, buf, helloLen-received, 0);
-+ n = recv_fully(fd, buf, helloLen-received);
- if (n == 0) {
- setLastError(0, "handshake failed - connection prematurally closed");
- return JDWPTRANSPORT_ERROR_IO_ERROR;
-@@ -180,7 +183,7 @@
- return JDWPTRANSPORT_ERROR_IO_ERROR;
- }
-
-- if (dbgsysSend(fd, (char*)hello, helloLen, 0) != helloLen) {
-+ if (send_fully(fd, hello, helloLen) != helloLen) {
- RETURN_IO_ERROR("send failed during handshake");
- }
- return JDWPTRANSPORT_ERROR_NONE;
-@@ -555,19 +558,19 @@
- /* Do one send for short packets, two for longer ones */
- if (data_len <= MAX_DATA_SIZE) {
- memcpy(header + HEADER_SIZE, data, data_len);
-- if (dbgsysSend(socketFD, (char *)&header, HEADER_SIZE + data_len, 0) !=
-+ if (send_fully(socketFD, (char *)&header, HEADER_SIZE + data_len) !=
- HEADER_SIZE + data_len) {
- RETURN_IO_ERROR("send failed");
- }
- } else {
- memcpy(header + HEADER_SIZE, data, MAX_DATA_SIZE);
-- if (dbgsysSend(socketFD, (char *)&header, HEADER_SIZE + MAX_DATA_SIZE, 0) !=
-+ if (send_fully(socketFD, (char *)&header, HEADER_SIZE + MAX_DATA_SIZE) !=
- HEADER_SIZE + MAX_DATA_SIZE) {
- RETURN_IO_ERROR("send failed");
- }
- /* Send the remaining data bytes right out of the data area. */
-- if (dbgsysSend(socketFD, (char *)data + MAX_DATA_SIZE,
-- data_len - MAX_DATA_SIZE, 0) != data_len - MAX_DATA_SIZE) {
-+ if (send_fully(socketFD, (char *)data + MAX_DATA_SIZE,
-+ data_len - MAX_DATA_SIZE) != data_len - MAX_DATA_SIZE) {
- RETURN_IO_ERROR("send failed");
- }
- }
-@@ -575,13 +578,33 @@
- return JDWPTRANSPORT_ERROR_NONE;
- }
-
--static jint
-+jint
- recv_fully(int f, char *buf, int len)
- {
- int nbytes = 0;
- while (nbytes < len) {
- int res = dbgsysRecv(f, buf + nbytes, len - nbytes, 0);
- if (res < 0) {
-+ if (errno == EINTR)
-+ continue;
-+ return res;
-+ } else if (res == 0) {
-+ break; /* eof, return nbytes which is less than len */
-+ }
-+ nbytes += res;
-+ }
-+ return nbytes;
-+}
-+
-+jint
-+send_fully(int f, char *buf, int len)
-+{
-+ int nbytes = 0;
-+ while (nbytes < len) {
-+ int res = dbgsysSend(f, buf + nbytes, len - nbytes, 0);
-+ if (res < 0) {
-+ if (errno == EINTR)
-+ continue;
- return res;
- } else if (res == 0) {
- break; /* eof, return nbytes which is less than len */
---- jdk/src/solaris/back/exec_md.c
-+++ jdk/src/solaris/back/exec_md.c
-@@ -30,7 +30,7 @@
- #include "sys.h"
- #include "util.h"
-
--#ifdef LINUX
-+#if defined(LINUX) || defined(_ALLBSD_SOURCE)
- /* Linux */
- #define FORK() fork()
- #else
---- jdk/src/solaris/back/linker_md.c
-+++ jdk/src/solaris/back/linker_md.c
-@@ -48,6 +48,12 @@
- #include "threads_md.h"
- #endif
-
-+#ifdef __APPLE__
-+#define LIB_SUFFIX "dylib"
-+#else
-+#define LIB_SUFFIX "so"
-+#endif
-+
- /*
- * create a string for the JNI native function name by adding the
- * appropriate decorations.
-@@ -77,9 +83,9 @@
- }
-
- if (pnamelen == 0) {
-- (void)snprintf(holder, holderlen, "lib%s.so", fname);
-+ (void)snprintf(holder, holderlen, "lib%s." LIB_SUFFIX, fname);
- } else {
-- (void)snprintf(holder, holderlen, "%s/lib%s.so", pname, fname);
-+ (void)snprintf(holder, holderlen, "%s/lib%s." LIB_SUFFIX, pname, fname);
- }
- }
-
---- jdk/src/solaris/back/util_md.h
-+++ jdk/src/solaris/back/util_md.h
-@@ -29,7 +29,7 @@
- #include <stddef.h>
-
- /* To get uintptr_t */
--#ifdef LINUX
-+#if defined(LINUX) || defined(_ALLBSD_SOURCE)
- #include <stdint.h>
- #else
- /* The file stdint.h is not on Solaris 8 machines. */
-@@ -40,6 +40,7 @@
-
- #include <limits.h>
- #include <sys/types.h>
-+#include <machine/endian.h>
-
- #ifdef _LP64
- typedef unsigned long UNSIGNED_JLONG;
-@@ -55,7 +56,7 @@
-
- /* On little endian machines, convert java big endian numbers. */
-
--#if defined(_LITTLE_ENDIAN)
-+#if (BYTE_ORDER == 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/java_md.c
-+++ jdk/src/solaris/bin/java_md.c
-@@ -24,6 +24,7 @@
- */
-
- #include "java.h"
-+#include "jvm_md.h"
- #include <dirent.h>
- #include <dlfcn.h>
- #include <fcntl.h>
-@@ -34,17 +35,31 @@
- #include <sys/stat.h>
- #include <unistd.h>
- #include <sys/types.h>
-+#if defined(_ALLBSD_SOURCE)
-+#include <sys/sysctl.h>
-+#include <sys/time.h>
-+#endif
-+
- #include "manifest_info.h"
- #include "version_comp.h"
-
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- #include <pthread.h>
- #else
- #include <thread.h>
- #endif
-
-+#ifdef __APPLE__
-+#define JVM_DLL "libjvm.dylib"
-+#define JAVA_DLL "libjava.dylib"
-+/* FALLBACK avoids naming conflicts with system libraries
-+ * (eg, ImageIO's libJPEG.dylib) */
-+#define LD_LIBRARY_PATH "DYLD_FALLBACK_LIBRARY_PATH"
-+#else
- #define JVM_DLL "libjvm.so"
- #define JAVA_DLL "libjava.so"
-+#define LD_LIBRARY_PATH "LD_LIBRARY_PATH"
-+#endif
-
- /*
- * If a processor / os combination has the ability to run binaries of
-@@ -75,14 +90,31 @@
- #endif
-
- /* pointer to environment */
-+#ifdef __APPLE__
-+#include <crt_externs.h>
-+#define environ (*_NSGetEnviron())
-+#else
- extern char **environ;
-+#endif
-
- /*
- * A collection of useful strings. One should think of these as #define
- * entries, but actual strings can be more efficient (with many compilers).
- */
--#ifdef __linux__
--static const char *system_dir = "/usr/java";
-+#if defined(__FreeBSD__)
-+static const char *system_dir = "%%JAVA_HOME%%";
-+static const char *user_dir = "/java";
-+#elif defined(__NetBSD__)
-+static const char *system_dir = "/usr/local/openjdk6";
-+static const char *user_dir = "/java";
-+#elif defined(__OpenBSD__)
-+static const char *system_dir = "/usr/local/openjdk6";
-+static const char *user_dir = "/java";
-+#elif defined(__APPLE__)
-+static const char *system_dir = "/usr/local/openjdk6";
-+static const char *user_dir = "/java";
-+#elif defined(__linux__)
-+static const char *system_dir = "/usr/local/java";
- static const char *user_dir = "/java";
- #else /* Solaris */
- static const char *system_dir = "/usr/jdk";
-@@ -404,10 +436,10 @@
- * If not on Solaris, assume only a single LD_LIBRARY_PATH
- * variable.
- */
-- runpath = getenv("LD_LIBRARY_PATH");
-+ runpath = getenv(LD_LIBRARY_PATH);
- #endif /* __sun */
-
--#ifdef __linux
-+#if defined(__linux__)
- /*
- * On linux, if a binary is running as sgid or suid, glibc sets
- * LD_LIBRARY_PATH to the empty string for security purposes. (In
-@@ -423,6 +455,22 @@
- if((getgid() != getegid()) || (getuid() != geteuid()) ) {
- return;
- }
-+#elif defined(_ALLBSD_SOURCE)
-+ /*
-+ * On BSD, if a binary is running as sgid or suid, 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 path.) The launcher uses
-+ * the value of LD_LIBRARY_PATH to prevent an exec loop.
-+ * Therefore, if we are running sgid or suid, this function's
-+ * setting of LD_LIBRARY_PATH will be ineffective and we should
-+ * return from the function now. Getting the right libraries to
-+ * be found must be handled through other mechanisms.
-+ */
-+ if(issetugid()) {
-+ return;
-+ }
- #endif
-
- /* runpath contains current effective LD_LIBRARY_PATH setting */
-@@ -432,7 +480,7 @@
- 2*strlen(jrepath) + 2*strlen(arch) +
- strlen(jvmpath) + 52;
- new_runpath = JLI_MemAlloc(new_runpath_size);
-- newpath = new_runpath + strlen("LD_LIBRARY_PATH=");
-+ newpath = new_runpath + strlen(LD_LIBRARY_PATH "=");
-
-
- /*
-@@ -447,7 +495,7 @@
-
- /* jvmpath, ((running != wanted)?((wanted==64)?"/"LIBARCH64NAME:"/.."):""), */
-
-- sprintf(new_runpath, "LD_LIBRARY_PATH="
-+ sprintf(new_runpath, LD_LIBRARY_PATH "="
- "%s:"
- "%s/lib/%s:"
- "%s/../lib/%s",
-@@ -733,7 +781,7 @@
- jboolean
- GetApplicationHome(char *buf, jint bufsize)
- {
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- char *execname = GetExecname();
- if (execname) {
- strncpy(buf, execname, bufsize-1);
-@@ -900,7 +948,17 @@
- exec_path = JLI_StringDup(buf);
- }
- }
--#else /* !__sun && !__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 /* !__sun && !__linux && !__FreeBSD__ */
- {
- /* Not implemented */
- }
-@@ -997,6 +1055,7 @@
- /* Compute physical memory by asking the OS */
- uint64_t
- physical_memory(void) {
-+#ifdef _SC_PHYS_PAGES
- const uint64_t pages = (uint64_t) sysconf(_SC_PHYS_PAGES);
- const uint64_t page_size = (uint64_t) sysconf(_SC_PAGESIZE);
- const uint64_t result = pages * page_size;
-@@ -1008,6 +1067,28 @@
- " physical memory: " UINT64_FORMAT " (%.3fGB)\n",
- pages, page_size, result, result / (double) GB);
- }
-+#else
-+#ifdef HW_PHYSMEM64
-+ int64_t physmem;
-+ int name[2] = { CTL_HW, HW_PHYSMEM64 };
-+#else
-+ unsigned long physmem;
-+ int name[2] = { CTL_HW, HW_PHYSMEM };
-+#endif
-+ size_t physmem_len = sizeof(physmem);
-+ uint64_t result;
-+# define UINT64_FORMAT "%" PRIu64
-+
-+ if (sysctl(name, 2, &physmem, &physmem_len, NULL, 0) == -1)
-+ physmem = 256 * MB;
-+
-+ result = (uint64_t)physmem;
-+
-+ if (_launcher_debug) {
-+ printf("physical memory: " UINT64_FORMAT " (%.3fGB)\n",
-+ result, result / (double) GB);
-+ }
-+#endif
- return result;
- }
-
-@@ -1103,7 +1184,7 @@
-
- #endif /* __sun && i586 */
-
--#if defined(__linux__) && defined(i586)
-+#if (defined(__linux__) || defined(_ALLBSD_SOURCE)) && defined(i586)
-
- /*
- * A utility method for asking the CPU about itself.
-@@ -1168,7 +1249,7 @@
- #endif
- }
-
--#endif /* __linux__ && i586 */
-+#endif /* (__linux__ || _ALLBSD_SOURCE) && i586 */
-
- #ifdef i586
- /*
-@@ -1380,6 +1461,39 @@
-
- #endif /* __linux__ && i586 */
-
-+#if defined(_ALLBSD_SOURCE) && defined(i586)
-+
-+/* The definition of a server-class machine for bsd-i586 */
-+jboolean
-+bsd_i586_ServerClassMachine(void) {
-+ jboolean result = JNI_FALSE;
-+ /* How big is a server class machine? */
-+ const unsigned long server_processors = 2UL;
-+ const uint64_t server_memory = 2UL * GB;
-+ /*
-+ * We seem not to get our full complement of memory.
-+ * We allow some part (1/8?) of the memory to be "missing",
-+ * based on the sizes of DIMMs, and maybe graphics cards.
-+ */
-+ const uint64_t missing_memory = 256UL * MB;
-+ const uint64_t actual_memory = physical_memory();
-+
-+ /* Is this a server class machine? */
-+ if (actual_memory >= (server_memory - missing_memory)) {
-+ const unsigned long actual_processors = physical_processors();
-+ if (actual_processors >= server_processors) {
-+ result = JNI_TRUE;
-+ }
-+ }
-+ if (_launcher_debug) {
-+ printf("bsd_" LIBARCHNAME "_ServerClassMachine: %s\n",
-+ (result == JNI_TRUE ? "true" : "false"));
-+ }
-+ return result;
-+}
-+
-+#endif /* _ALLBSD_SOURCE && i586 */
-+
- /* Dispatch to the platform-specific definition of "server-class" */
- jboolean
- ServerClassMachine(void) {
-@@ -1394,6 +1508,8 @@
- result = solaris_i586_ServerClassMachine();
- #elif defined(__linux__) && defined(i586)
- result = linux_i586_ServerClassMachine();
-+#elif defined(_ALLBSD_SOURCE) && defined(i586)
-+ result = bsd_i586_ServerClassMachine();
- #else
- if (_launcher_debug) {
- printf("ServerClassMachine: returns default value of %s\n",
-@@ -1534,7 +1650,7 @@
- while (dp != NULL) {
- cp = strchr(dp, (int)':');
- if (cp != NULL)
-- *cp = (char)NULL;
-+ *cp = '\0';
- if ((target = ProcessDir(info, dp)) != NULL)
- break;
- dp = cp;
-@@ -1712,9 +1828,29 @@
- return(borrowed_unsetenv(name));
- }
-
-+#if defined(_ALLBSD_SOURCE)
-+/*
-+ * BSD's implementation of CounterGet()
-+ */
-+int64_t
-+CounterGet()
-+{
-+#ifdef __FreeBSD__
-+ struct timespec tp;
-+ clock_gettime(CLOCK_MONOTONIC, &tp);
-+ return (uint64_t)tp.tv_sec * 1000000 + tp.tv_nsec / 1000;
-+#else
-+ struct timeval tv;
-+ gettimeofday(&tv, NULL);
-+ return (uint64_t)tv.tv_sec * 1000000 + tv.tv_usec;
-+#endif
-+}
-+#endif
-+
-+
- /* --- Splash Screen shared library support --- */
-
--static const char* SPLASHSCREEN_SO = "libsplashscreen.so";
-+static const char* SPLASHSCREEN_SO = JNI_LIB_NAME("splashscreen");
-
- static void* hSplashLib = NULL;
-
-@@ -1763,13 +1899,15 @@
- return "%lld";
- }
-
-+
-+
- /*
- * Block current thread and continue execution in a new thread
- */
- int
--ContinueInNewThread(int (JNICALL *continuation)(void *), jlong stack_size, void * args, int ret) {
-+ContinueInNewThread0(int (JNICALL *continuation)(void *), jlong stack_size, void * args) {
- int rslt;
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- pthread_t tid;
- pthread_attr_t attr;
- pthread_attr_init(&attr);
-@@ -1782,7 +1920,7 @@
- if (pthread_create(&tid, &attr, (void *(*)(void*))continuation, (void*)args) == 0) {
- void * tmp;
- pthread_join(tid, &tmp);
-- rslt = (int)tmp;
-+ rslt = (int)(intptr_t)tmp;
- } else {
- /*
- * Continue execution in current thread if for some reason (e.g. out of
-@@ -1800,25 +1938,23 @@
- if (thr_create(NULL, stack_size, (void *(*)(void *))continuation, args, flags, &tid) == 0) {
- void * tmp;
- thr_join(tid, NULL, &tmp);
-- rslt = (int)tmp;
-+ rslt = (int)(intptr_t)tmp;
- } else {
- /* See above. Continue in current thread if thr_create() failed */
- rslt = continuation(args);
- }
- #endif
-- /* If the caller has deemed there is an error we
-- * simply return that, otherwise we return the value of
-- * the callee
-- */
-- return (ret != 0) ? ret : rslt;
-+ return rslt;
- }
-
-+
-+
- /* Coarse estimation of number of digits assuming the worst case is a 64-bit pid. */
- #define MAX_PID_STR_SZ 20
-
- void SetJavaLauncherPlatformProps() {
-- /* Linux only */
--#ifdef __linux__
-+ /* Linux and BSDs only */
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- const char *substr = "-Dsun.java.launcher.pid=";
- char *pid_prop_str = (char *)JLI_MemAlloc(strlen(substr) + MAX_PID_STR_SZ + 1);
- sprintf(pid_prop_str, "%s%d", substr, getpid());
---- jdk/src/solaris/bin/java_md.h
-+++ jdk/src/solaris/bin/java_md.h
-@@ -58,10 +58,14 @@
- #include <sys/time.h>
- #define CounterGet() (gethrtime()/1000)
- #define Counter2Micros(counts) (counts)
-+#elif defined(_ALLBSD_SOURCE)
-+/* CounterGet() is implemented in java_md.c */
-+int64_t CounterGet(void);
-+#define Counter2Micros(counts) (counts)
- #else
- #define CounterGet() (0)
- #define Counter2Micros(counts) (1)
--#endif /* HAVE_GETHRTIME */
-+#endif /* HAVE_GETHRTIME || _ALLBSD_SOURCE */
-
- /*
- * Function prototypes.
---- jdk/src/solaris/classes/sun/awt/X11GraphicsEnvironment.java
-+++ jdk/src/solaris/classes/sun/awt/X11GraphicsEnvironment.java
-@@ -413,7 +413,7 @@
- if (fontID != null) {
- fileName = (String)fontNameMap.get(fontID);
- /* On Linux check for the Lucida Oblique fonts */
-- if (fileName == null && isLinux && !isOpenJDK()) {
-+ if (fileName == null && isLinuxOrBSD && !isOpenJDK()) {
- if (oblmap == null) {
- initObliqueLucidaFontMap();
- }
-@@ -649,7 +649,7 @@
- if (fontConfigDirs == null) {
- return;
- }
-- if (isLinux) {
-+ if (isLinuxOrBSD) {
- fontConfigDirs.add(jreLibDirName+File.separator+"oblique-fonts");
- }
- fontdirs = (String[])fontConfigDirs.toArray(new String[0]);
-@@ -930,7 +930,7 @@
- */
- FontConfiguration mFontConfig = new MFontConfiguration(this);
- if (isOpenSolaris ||
-- (isLinux &&
-+ (isLinuxOrBSD &&
- (!mFontConfig.foundOsSpecificFile() ||
- !mFontConfig.fontFilesArePresent()) ||
- (isSolaris && !mFontConfig.fontFilesArePresent()))) {
---- jdk/src/solaris/classes/sun/nio/ch/DefaultSelectorProvider.java
-+++ jdk/src/solaris/classes/sun/nio/ch/DefaultSelectorProvider.java
-@@ -47,6 +47,10 @@
- public static SelectorProvider create() {
- String osname = AccessController.doPrivileged(
- new GetPropertyAction("os.name"));
-+ if ("FreeBSD".equals(osname)) {
-+ return new sun.nio.ch.KqueueSelectorProvider();
-+ }
-+
- if ("SunOS".equals(osname)) {
- return new sun.nio.ch.DevPollSelectorProvider();
- }
---- jdk/src/solaris/classes/sun/nio/ch/KqueueArrayWrapper.java
-+++ jdk/src/solaris/classes/sun/nio/ch/KqueueArrayWrapper.java
-@@ -0,0 +1,231 @@
-+/*
-+ * Scratched by davidxu@freebsd.org
-+ */
-+
-+package sun.nio.ch;
-+
-+import sun.misc.*;
-+import java.io.IOException;
-+import java.util.HashMap;
-+import java.util.Set;
-+import java.util.Arrays;
-+
-+class KqueueArrayWrapper {
-+
-+ // Event masks copied from class AbstractPollArrayWrapper
-+ static final short POLLIN = 0x0001;
-+ static final short POLLOUT = 0x0004;
-+ static final short POLLERR = 0x0008;
-+ static final short POLLHUP = 0x0010;
-+ static final short POLLNVAL = 0x0020;
-+ static final short POLLREMOVE = 0x0800;
-+
-+ // Kevent filters
-+ static final short EVFILT_READ = -1;
-+ static final short EVFILT_WRITE = -2;
-+
-+ // Kevent flags
-+ static final short EV_ADD = 0x0001;
-+ static final short EV_DELETE = 0x0002;
-+ static final short EV_ERROR = 0x4000;
-+
-+ // Miscellaneous constants
-+ static final int SIZE_KEVENT = keventSize();
-+
-+ // Zero mask to unregister events from kqueue
-+ static final Integer ZERO_MASK = new Integer(0);
-+
-+ // Capacity increment of some arrays
-+ static final int capacityIncr = 100;
-+
-+ KqueueArrayWrapper() {
-+ int allocationSize;
-+
-+ // initial size of event array
-+ pollKeventSize = capacityIncr * 2;
-+ allocationSize = pollKeventSize * SIZE_KEVENT;
-+ pollKeventArray = new AllocatedNativeObject(allocationSize, true);
-+ kqfd = kqueue();
-+ }
-+
-+ // Machinery for remembering fd registration changes
-+ private HashMap<Integer, Integer> updateMap = new HashMap<Integer, Integer>();
-+ private int[] oldMasks = new int[capacityIncr];
-+
-+ // kevent array to receive
-+ private AllocatedNativeObject pollKeventArray;
-+
-+ // current size of pollKeventArray
-+ int pollKeventSize;
-+
-+ // the pollKeventSize should be larger than this
-+ int nextKeventSize;
-+
-+ // The fd of the kqueue()
-+ int kqfd;
-+
-+ // The fd of the interrupt line going out
-+ int outgoingInterruptFD;
-+
-+ // The fd of the interrupt line coming in
-+ int incomingInterruptFD;
-+
-+ // The index of the interrupt FD
-+ int interruptedIndex;
-+
-+ // Number of updated kevent entries
-+ int updated;
-+
-+ // ensure some array sizes are large enough with a given file handle
-+ void ensureFd(int fd) {
-+ ensureNextEventFd(fd);
-+ if (oldMasks.length < fd+1)
-+ oldMasks = Arrays.copyOf(oldMasks, fd + capacityIncr);
-+ }
-+
-+ void ensureNextEventFd(int fd) {
-+ // each file handle may have two filters, read and write.
-+ if (nextKeventSize / 2 < fd+1)
-+ nextKeventSize = (fd+1) * 2;
-+ }
-+
-+ void resizeEventBuffer() {
-+ if (nextKeventSize > pollKeventSize) {
-+ pollKeventArray.free();
-+ pollKeventSize = nextKeventSize + capacityIncr * 2;
-+ int allocationSize = pollKeventSize * SIZE_KEVENT;
-+ pollKeventArray = new AllocatedNativeObject(allocationSize, true);
-+ }
-+ }
-+
-+ void initInterrupt(int fd0, int fd1) {
-+ outgoingInterruptFD = fd1;
-+ incomingInterruptFD = fd0;
-+ ensureFd(fd0);
-+ register(kqfd, fd0, EVFILT_READ);
-+ }
-+
-+ int getReventOps(int i) {
-+ short filter = getKeventFilter(pollKeventArray.address(), i);
-+ short flags = getKeventFlags(pollKeventArray.address(), i);
-+ if ((flags & EV_ERROR) != 0)
-+ return POLLERR;
-+ if (filter == EVFILT_READ)
-+ return POLLIN;
-+ if (filter == EVFILT_WRITE)
-+ return POLLOUT;
-+ return (0);
-+ }
-+
-+ int getDescriptor(int i) {
-+ return getKeventIdent(pollKeventArray.address(), i);
-+ }
-+
-+ void setInterest(int fd, int mask) {
-+ if (fd <0)
-+ throw new IndexOutOfBoundsException("file handle less than 0");
-+ synchronized (updateMap) {
-+ ensureFd(fd);
-+ updateMap.put(new Integer(fd), new Integer(mask));
-+ }
-+ }
-+
-+ void release(int fd) {
-+ synchronized (updateMap) {
-+ updateMap.put(new Integer(fd), ZERO_MASK);
-+ }
-+ }
-+
-+ void closeKqueueFD() throws IOException {
-+ FileDispatcher.closeIntFD(kqfd);
-+ pollKeventArray.free();
-+ }
-+
-+ int poll(long timeout) {
-+ int changeCount = updateRegistrations();
-+ updated = kevent(kqfd, pollKeventArray.address(), changeCount,
-+ pollKeventArray.address(), pollKeventSize, timeout);
-+ for (int i = 0; i < updated; i++) {
-+ if (getDescriptor(i) == incomingInterruptFD) {
-+ interruptedIndex = i;
-+ interrupted = true;
-+ break;
-+ }
-+ }
-+ return updated;
-+ }
-+
-+ int updateRegistrations() {
-+ int index = 0;
-+ synchronized (updateMap) {
-+ resizeEventBuffer();
-+
-+ Set<Integer> s = updateMap.keySet();
-+ /*
-+ * Because resizeEventBuffer may reallocate event buffer,
-+ * we must retrieve fresh address here.
-+ */
-+ long address = pollKeventArray.address();
-+
-+ for (Integer fd : s) {
-+ Integer newmask = updateMap.get(fd);
-+ int oldmask = oldMasks[fd];
-+ if ((oldmask & POLLIN) != 0) {
-+ if ((newmask & POLLIN) == 0) {
-+ putKevent(address, index, fd.intValue(), EV_DELETE, EVFILT_READ);
-+ index++;
-+ }
-+ } else {
-+ if ((newmask & POLLIN) != 0) {
-+ putKevent(address, index, fd.intValue(), EV_ADD, EVFILT_READ);
-+ index++;
-+ }
-+ }
-+
-+ if ((oldmask & POLLOUT) != 0) {
-+ if ((newmask & POLLOUT) == 0) {
-+ putKevent(address, index, fd.intValue(), EV_DELETE, EVFILT_WRITE);
-+ index++;
-+ }
-+ } else {
-+ if ((newmask & POLLOUT) != 0) {
-+ putKevent(address, index, fd.intValue(), EV_ADD, EVFILT_WRITE);
-+ index++;
-+ }
-+ }
-+ oldMasks[fd] = newmask;
-+ }
-+ updateMap.clear();
-+ }
-+ return index;
-+ }
-+
-+ boolean interrupted = false;
-+
-+ public void interrupt() {
-+ interrupt(outgoingInterruptFD);
-+ }
-+
-+ public int interruptedIndex() {
-+ return interruptedIndex;
-+ }
-+
-+ boolean interrupted() {
-+ return interrupted;
-+ }
-+
-+ void clearInterrupted() {
-+ interrupted = false;
-+ }
-+
-+ private static native int kqueue();
-+ private static native void register(int kqfd, int fd, short filter);
-+ private static native int kevent(int kqfd, long changeList, int nchanges, long eventList,
-+ int nevents, long timeout);
-+ private static native int keventSize();
-+ private static native void interrupt(int fd);
-+ private static native void putKevent(long address, int index, int fd, short flag, short filter);
-+ private static native short getKeventFilter(long address, int index);
-+ private static native short getKeventFlags(long address, int index);
-+ private static native int getKeventIdent(long address, int index);
-+}
---- jdk/src/solaris/classes/sun/nio/ch/KqueueSelectorImpl.java
-+++ jdk/src/solaris/classes/sun/nio/ch/KqueueSelectorImpl.java
-@@ -0,0 +1,200 @@
-+/*
-+ * scratched by davidxu@freebsd.org
-+ */
-+
-+package sun.nio.ch;
-+
-+import java.io.IOException;
-+import java.nio.channels.*;
-+import java.nio.channels.spi.*;
-+import java.util.*;
-+import sun.misc.*;
-+
-+
-+/**
-+ * An implementation of Selector for FreeBSD.
-+ */
-+class KqueueSelectorImpl
-+ extends SelectorImpl
-+{
-+
-+ // File descriptors used for interrupt
-+ protected int fd0;
-+ protected int fd1;
-+
-+ // The kqueue object
-+ KqueueArrayWrapper kqueueWrapper;
-+
-+ // The number of valid channels in this Selector's poll array
-+ private int totalChannels;
-+
-+ // Maps from file descriptors to keys
-+ private HashMap fdToKey;
-+
-+ // 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;
-+
-+ // Trace number of file handles are updated.
-+ private BitSet updatedSet;
-+
-+ /**
-+ * Package private constructor called by factory method in
-+ * the abstract superclass Selector.
-+ */
-+ KqueueSelectorImpl(SelectorProvider sp) {
-+ super(sp);
-+ int[] fdes = new int[2];
-+ IOUtil.initPipe(fdes, false);
-+ fd0 = fdes[0];
-+ fd1 = fdes[1];
-+ kqueueWrapper = new KqueueArrayWrapper();
-+ totalChannels = 1;
-+ kqueueWrapper.initInterrupt(fd0, fd1);
-+ updatedSet = new BitSet();
-+ fdToKey = new HashMap();
-+ }
-+
-+ protected int doSelect(long timeout)
-+ throws IOException
-+ {
-+ if (closed)
-+ throw new ClosedSelectorException();
-+ processDeregisterQueue();
-+ try {
-+ begin();
-+ kqueueWrapper.poll(timeout);
-+ } finally {
-+ end();
-+ }
-+ processDeregisterQueue();
-+ int numKeysUpdated = updateSelectedKeys();
-+ if (kqueueWrapper.interrupted()) {
-+ // Clear the wakeup pipe
-+ synchronized (interruptLock) {
-+ kqueueWrapper.clearInterrupted();
-+ IOUtil.drain(fd0);
-+ interruptTriggered = false;
-+ }
-+ }
-+ return numKeysUpdated;
-+ }
-+
-+ /**
-+ * Update the keys whose fd's have been selected by the kqueue.
-+ * Add the ready keys to the ready queue.
-+ */
-+ private int updateSelectedKeys() {
-+ int entries = kqueueWrapper.updated;
-+ int numKeysUpdated = 0;
-+ SelectionKeyImpl ski;
-+ int fd;
-+ int i;
-+
-+ updatedSet.clear();
-+ for (i = 0; i < entries; i++) {
-+ fd = kqueueWrapper.getDescriptor(i);
-+ ski = (SelectionKeyImpl) fdToKey.get(new Integer(fd));
-+ // ski is null in the case of an interrupt
-+ if (ski != null)
-+ ski.nioReadyOps(0);
-+ }
-+
-+ for (i = 0; i < entries; i++) {
-+ fd = kqueueWrapper.getDescriptor(i);
-+ ski = (SelectionKeyImpl) fdToKey.get(new Integer(fd));
-+ // ski is null in the case of an interrupt
-+ if (ski != null) {
-+ int rOps = kqueueWrapper.getReventOps(i);
-+ if (selectedKeys.contains(ski)) {
-+ if (ski.channel.translateAndUpdateReadyOps(rOps, ski)) {
-+ if (!updatedSet.get(fd)) {
-+ updatedSet.set(fd);
-+ numKeysUpdated++;
-+ }
-+ }
-+ } else {
-+ ski.channel.translateAndUpdateReadyOps(rOps, ski);
-+ if ((ski.nioReadyOps() & ski.nioInterestOps()) != 0) {
-+ selectedKeys.add(ski);
-+ if (!updatedSet.get(fd)) {
-+ updatedSet.set(fd);
-+ numKeysUpdated++;
-+ }
-+ }
-+ }
-+ }
-+ }
-+ return numKeysUpdated;
-+ }
-+
-+ protected void implClose() throws IOException {
-+ if (!closed) {
-+ closed = true;
-+ FileDispatcher.closeIntFD(fd0);
-+ FileDispatcher.closeIntFD(fd1);
-+ if (kqueueWrapper != null) {
-+ kqueueWrapper.release(fd0);
-+ kqueueWrapper.closeKqueueFD();
-+ kqueueWrapper = null;
-+ selectedKeys = null;
-+
-+ // Deregister channels
-+ Iterator 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) {
-+ int fd = IOUtil.fdVal(ski.channel.getFD());
-+ fdToKey.put(new Integer(fd), ski);
-+ totalChannels++;
-+ keys.add(ski);
-+ }
-+
-+ protected void implDereg(SelectionKeyImpl ski) throws IOException {
-+ int i = ski.getIndex();
-+ assert (i >= 0);
-+ int fd = ski.channel.getFDVal();
-+ fdToKey.remove(new Integer(fd));
-+ kqueueWrapper.release(fd);
-+ totalChannels--;
-+ ski.setIndex(-1);
-+ keys.remove(ski);
-+ selectedKeys.remove(ski);
-+ deregister((AbstractSelectionKey)ski);
-+ SelectableChannel selch = ski.channel();
-+ if (!selch.isOpen() && !selch.isRegistered())
-+ ((SelChImpl)selch).kill();
-+ }
-+
-+ void putEventOps(SelectionKeyImpl sk, int ops) {
-+ int fd = IOUtil.fdVal(sk.channel.getFD());
-+ kqueueWrapper.setInterest(fd, ops);
-+ }
-+
-+ public Selector wakeup() {
-+ synchronized (interruptLock) {
-+ if (!interruptTriggered) {
-+ kqueueWrapper.interrupt();
-+ interruptTriggered = true;
-+ }
-+ }
-+ return this;
-+ }
-+}
---- jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java
-+++ jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java
-@@ -119,7 +119,9 @@
- }
-
- static boolean isBSD() {
-- return osname.equals("Linux");
-+ return (osname.equals("Linux") ||
-+ osname.endsWith("BSD") ||
-+ osname.contains("OS X"));
- }
-
- static final int UNINITIALIZED = -1;
-@@ -129,13 +131,13 @@
- 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 | grep : | sed -e 's/://'",
-- "/usr/sbin/lpc -a status | grep -E '^[ 0-9a-zA-Z_-]*@' | awk -F'@' '{print $1}' | sort"
-+ "/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"
- };
-
- String[] lpcNameCom = {
-@@ -145,7 +147,7 @@
-
-
- static int getBSDCommandIndex() {
-- String command = "/usr/sbin/lpc status";
-+ String command = "/usr/sbin/lpc status all";
- String[] names = execCmd(command);
-
- if ((names == null) || (names.length == 0)) {
---- jdk/src/solaris/classes/sun/tools/attach/BsdVirtualMachine.java
-+++ jdk/src/solaris/classes/sun/tools/attach/BsdVirtualMachine.java
-@@ -38,9 +38,6 @@
- */
- public class BsdVirtualMachine extends HotSpotVirtualMachine {
-
-- // Indicates if this machine uses the old BsdThreads
-- static boolean isBsdThreads;
--
- // The patch to the socket file created by the target VM
- String path;
-
-@@ -65,25 +62,10 @@
- // Then we attempt to find the socket file again.
- path = findSocketFile(pid);
- if (path == null) {
-- File f = createAttachFile(pid);
-+ File f = new File("/tmp/.attach_pid" + pid);
-+ createAttachFile(f.getPath());
- try {
-- // On BsdThreads each thread is a process and we don't have the
-- // pid of the VMThread which has SIGQUIT unblocked. To workaround
-- // this we get the pid of the "manager thread" that is created
-- // by the first call to pthread_create. This is parent of all
-- // threads (except the initial thread).
-- if (isBsdThreads) {
-- int mpid;
-- try {
-- mpid = getBsdThreadsManager(pid);
-- } catch (IOException x) {
-- throw new AttachNotSupportedException(x.getMessage());
-- }
-- assert(mpid >= 1);
-- sendQuitToChildrenOf(mpid);
-- } else {
-- sendQuitTo(pid);
-- }
-+ sendQuitTo(pid);
-
- // give the target VM time to start the attach mechanism
- int i = 0;
-@@ -265,37 +247,14 @@
- // First check for a .java_pid<pid> file in the working directory
- // of the target process
- String fn = ".java_pid" + pid;
-- String path = "/proc/" + pid + "/cwd/" + fn;
-+ String path = "/tmp/" + fn;
- File f = new File(path);
- if (!f.exists()) {
-- // Not found, so try /tmp
-- path = "/tmp/" + fn;
-- f = new File(path);
-- if (!f.exists()) {
-- return null; // not found
-- }
-+ return null; // not found
- }
- return path;
- }
-
-- // On Solaris/Bsd a simple handshake is used to start the attach mechanism
-- // if not already started. The client creates a .attach_pid<pid> file in the
-- // target VM's working directory (or /tmp), and the SIGQUIT handler checks
-- // for the file.
-- private File createAttachFile(int pid) throws IOException {
-- String fn = ".attach_pid" + pid;
-- String path = "/proc/" + pid + "/cwd/" + fn;
-- File f = new File(path);
-- try {
-- f.createNewFile();
-- } catch (IOException x) {
-- path = "/tmp/" + fn;
-- f = new File(path);
-- f.createNewFile();
-- }
-- return f;
-- }
--
- /*
- * Write/sends the given to the target VM. String is transmitted in
- * UTF-8 encoding.
-@@ -318,12 +277,6 @@
-
- //-- native methods
-
-- static native boolean isBsdThreads();
--
-- static native int getBsdThreadsManager(int pid) throws IOException;
--
-- static native void sendQuitToChildrenOf(int pid) throws IOException;
--
- static native void sendQuitTo(int pid) throws IOException;
-
- static native void checkPermissions(String path) throws IOException;
-@@ -338,8 +291,9 @@
-
- static native void write(int fd, byte buf[], int off, int bufLen) throws IOException;
-
-+ static native void createAttachFile(String path);
-+
- static {
- System.loadLibrary("attach");
-- isBsdThreads = isBsdThreads();
- }
- }
---- jdk/src/solaris/demo/jvmti/hprof/hprof_md.c
-+++ jdk/src/solaris/demo/jvmti/hprof/hprof_md.c
-@@ -33,7 +33,7 @@
- #include <sys/stat.h>
- #include <fcntl.h>
-
--#ifndef LINUX
-+#if !defined(LINUX) && !defined(_ALLBSD_SOURCE)
- #include <procfs.h>
- #endif
-
-@@ -76,7 +76,7 @@
- void
- md_init(void)
- {
--#ifdef LINUX
-+#if defined(LINUX) || defined(_ALLBSD_SOURCE)
- /* No Hi-Res timer option? */
- #else
- if ( gdata->micro_state_accounting ) {
-@@ -238,7 +238,7 @@
- jlong
- md_get_microsecs(void)
- {
--#ifdef LINUX
-+#if defined(LINUX) || defined(_ALLBSD_SOURCE)
- return (jlong)(md_timeofday() * (jlong)1000); /* Milli to micro */
- #else
- return (jlong)(gethrtime()/(hrtime_t)1000); /* Nano seconds to micro seconds */
-@@ -256,7 +256,7 @@
- jlong
- md_get_thread_cpu_timemillis(void)
- {
--#ifdef LINUX
-+#if defined(LINUX) || defined(_ALLBSD_SOURCE)
- return md_timeofday();
- #else
- return (jlong)(gethrvtime()/1000); /* Nano seconds to milli seconds */
-@@ -271,7 +271,7 @@
- Dl_info dlinfo;
-
- libdir[0] = 0;
--#ifdef LINUX
-+#if defined(LINUX) || defined(_ALLBSD_SOURCE)
- addr = (void*)&Agent_OnLoad;
- #else
- /* Just using &Agent_OnLoad will get the first external symbol with
---- jdk/src/solaris/hpi/include/interrupt.h
-+++ jdk/src/solaris/hpi/include/interrupt.h
-@@ -75,7 +75,7 @@
- * N_INTERRUPTS - The number of interrupt channels. These
- * are numbered from 0 to (N_INTERRUPTS - 1).
- */
--#ifdef __linux__
-+#if defined(__linux__) || defined(__FreeBSD__)
- #define N_INTERRUPTS NSIG /* 0 to NSIG - 1*/
- #else
- #define N_INTERRUPTS 32 /* 0 to 31 */
-@@ -111,6 +111,10 @@
- #error signal.h has not been included?
- #endif
-
-+#if defined(__FreeBSD__) && !defined(SA_SIGINFO)
-+#error signal.h has not been included?
-+#endif
-+
- #ifdef SA_SIGINFO
- /* Thread implementation dependent interrupt dispatcher. */
- void intrDispatchMD(int sig, siginfo_t *info, void *uc);
---- jdk/src/solaris/hpi/include/largefile.h
-+++ jdk/src/solaris/hpi/include/largefile.h
-@@ -34,6 +34,10 @@
- #include "largefile_linux.h"
- #endif
-
-+#ifdef _ALLBSD_SOURCE
-+#include "largefile_bsd.h"
-+#endif
-+
- /*
- * Prototypes for wrappers that we define. These wrapper functions
- * are low-level I/O routines that will use 64 bit versions if
---- jdk/src/solaris/hpi/include/largefile_bsd.h
-+++ jdk/src/solaris/hpi/include/largefile_bsd.h
-@@ -23,14 +23,28 @@
- * questions.
- */
-
--#ifndef _JAVASOFT_LINUX_LARGEFILE_SUPPORT_H_
--#define _JAVASOFT_LINUX_LARGEFILE_SUPPORT_H_
--
--/*
-- * For building on glibc-2.0 we need to define stat64 here.
-- */
-+#ifndef _JAVASOFT_BSD_LARGEFILE_SUPPORT_H_
-+#define _JAVASOFT_BSD_LARGEFILE_SUPPORT_H_
-
- #include <sys/types.h>
- #include <sys/stat.h>
-
--#endif /* _JAVASOFT_LINUX_LARGEFILE_SUPPORT_H_ */
-+/* define compatibility macros */
-+#define off64_t off_t
-+#define stat64 stat
-+
-+#define F_SETLK64 F_SETLK
-+#define F_SETLKW64 F_SETLKW
-+
-+#define lseek64 lseek
-+#define ftruncate64 ftruncate
-+#define open64 open
-+#define fstat64 fstat
-+#define flock64 flock
-+#define mmap64 mmap
-+#define fdatasync fsync
-+
-+#define pread64 pread
-+#define pwrite64 pwrite
-+
-+#endif /* _JAVASOFT_BSD_LARGEFILE_SUPPORT_H_ */
---- jdk/src/solaris/hpi/native_threads/include/threads_md.h
-+++ jdk/src/solaris/hpi/native_threads/include/threads_md.h
-@@ -36,6 +36,8 @@
- #define N_TRACED_REGS 12
- #elif i386
- #define N_TRACED_REGS 7
-+#elif i586 /* BSDNOTE: just in case */
-+#define N_TRACED_REGS 7
- #elif amd64
- #define N_TRACED_REGS 15
- #elif ppc
-@@ -51,10 +53,12 @@
- #define N_TRACED_REGS 32
- #endif
-
-+#if !defined(_ALLBSD_SOURCE)
- /* Turn on if we want all java threads to be bound tolwps */
- /* #define BOUND_THREADS */
- /* Use /proc soln to stop lwps in place of siglwp soln */
- #define PROCLWP
-+#endif
-
- /*
- * Thread C stack overflow check
-@@ -132,7 +136,7 @@
- lwpid_t lwpid;
- #endif
-
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- void *sp;
- #else
- unsigned long sp; /* sp at time of last (native) thread switch */
-@@ -186,12 +190,14 @@
-
- #define SYS_THREAD_NULL ((sys_thread_t *) 0)
-
-+#if !defined(_ALLBSD_SOURCE)
- /*
- * following macro copied from sys/signal.h since inside #ifdef _KERNEL there.
- */
- #ifndef sigmask
- #define sigmask(n) ((unsigned int)1 << (((n) - 1) & (32 - 1)))
- #endif
-+#endif
-
- #ifdef __linux__
- extern thread_key_t intrJmpbufkey;
---- jdk/src/solaris/hpi/native_threads/src/condvar_md.c
-+++ jdk/src/solaris/hpi/native_threads/src/condvar_md.c
-@@ -58,7 +58,7 @@
- {
- int err;
-
--#ifdef __linux__
-+#ifdef USE_PTHREADS
- err = pthread_cond_destroy((cond_t *) &condvar->cond);
- #else
- err = cond_destroy((cond_t *) condvar);
---- jdk/src/solaris/hpi/native_threads/src/monitor_md.c
-+++ jdk/src/solaris/hpi/native_threads/src/monitor_md.c
-@@ -147,7 +147,7 @@
- mid->monitor_owner = self;
- mid->entry_count = 1;
- return SYS_OK;
-- } else if (err == EBUSY) { /* it's already locked */
-+ } else if (err == EBUSY || err == EDEADLK) { /* it's already locked */
- if (mid->monitor_owner == self) {
- mid->entry_count++;
- return SYS_OK;
---- jdk/src/solaris/hpi/native_threads/src/sys_api_td.c
-+++ jdk/src/solaris/hpi/native_threads/src/sys_api_td.c
-@@ -39,6 +39,10 @@
- #include <sys/ioctl.h>
- #endif
-
-+#ifdef __OpenBSD__
-+#include <sys/ioctl.h>
-+#endif
-+
- #include <sys/socket.h>
- #include <setjmp.h>
- #include <signal.h>
-@@ -57,6 +61,10 @@
- #error If there was no policy change, this could be a makefile error.
- #endif
-
-+#if defined(_ALLBSD_SOURCE) && defined(NO_INTERRUPTIBLE_IO)
-+#error If there was no policy change, this could be a makefile error.
-+#endif
-+
- #ifdef NO_INTERRUPTIBLE_IO
- #undef CLOSEIO
- #else
---- jdk/src/solaris/hpi/native_threads/src/threads_bsd.c
-+++ jdk/src/solaris/hpi/native_threads/src/threads_bsd.c
-@@ -23,79 +23,44 @@
- * questions.
- */
-
--/*
-- * Implementation of HPI that can not be expressed with POSIX threads.
-- * Note that even if you are building with USE_PTHREADS, we have to
-- * explicitly undef it here because pthread.h and thread.h can not be
-- * included in the same file, and this file needs only thread.h.
-- */
--#undef USE_PTHREADS
-+#ifdef __APPLE__
-+
-+/* We need the mach API, which must be be included before any other system includes.
-+ * Additionally, java and mach both define thread_state_t, so temporarily redefine it. */
-+#define thread_state_t mach_thread_state_t
-+#include <mach/mach.h>
-+#undef thread_state_t
-+
-+#endif
-
- #include "hpi_impl.h"
- #include "monitor_md.h"
- #include "threads_md.h"
- #include "np.h"
-
--#include <thread.h>
--#include <sys/lwp.h>
-+#include <sys/types.h>
-+#include <sys/sysctl.h>
-+
-+#include <pthread.h>
-+#if defined(__FreeBSD__) || defined(__OpenBSD__)
-+#include <pthread_np.h>
-+#endif
-+#ifdef __NetBSD__
-+#include <errno.h>
-+#define pthread_attr_get_np(a, b) 0
-+#define pthread_suspend_all_np() 0
-+#define pthread_resume_all_np() 0
-+#endif
-+
-+#include <time.h>
-+#include <string.h>
- #include <signal.h>
- #include <sys/signal.h>
- #include <sys/resource.h>
--#include <sys/procfs.h>
- #include <stdlib.h>
- #include <string.h>
--#include <fcntl.h>
- #include <errno.h>
-
--#include <sys/syscall.h>
--extern int syscall(int, ...);
--
--
--/*
-- * Forward declarations.
-- */
--static int procfd;
--static void stop_lwps();
--static void clear_onproc_flags();
--static void restart_lwps();
--static void MakeProcName(register char *procname, register pid_t pid);
--static void GC_msec_sleep(int n);
--
--
--/*
-- * Make sure that we link against a verion of libthread that has at least
-- * the bug fixes and the interface for getting the stack from threads that
-- * aren't on LWPs. Otherwise we should exit with some informative message.
-- */
--extern ulong_t __gettsp(thread_t);
--
--static const char * gettspMessage =
--"You must install a Bsd patch to run the native threads version of the\n"
--"Java runtime. The green threads version will work without this patch.\n"
--"Please check the native threads release notes for more information.\n"
--"\n"
--"If you are embedding the VM in a native application, please make sure that\n"
--"the native application is linked with libthread.so (-lthread).\n"
--"\n"
--"Exiting.\n";
--
--static void
--checkForCorrectLibthread()
--{
-- if (&__gettsp == 0) {
-- fprintf(stderr, gettspMessage);
-- exit(1);
-- }
--}
--#ifdef __GNUC__
--static void checkForCorrectLibthread() __attribute__((constructor));
--#else
--#pragma init(checkForCorrectLibthread)
--#endif
--
--#pragma weak __gettsp
--
--
- /*
- * Suspend said thread. Used to implement java.lang.Thread.suspend(),
- * which is deprecated.
-@@ -103,10 +68,16 @@
- int
- np_suspend(sys_thread_t *tid)
- {
-- return thr_suspend(tid->sys_thread);
-+#ifdef __APPLE__
-+ if (thread_suspend(pthread_mach_thread_np(tid->sys_thread)) == KERN_SUCCESS)
-+#else
-+ if (pthread_suspend_np(tid->sys_thread) == 0)
-+#endif
-+ return SYS_OK;
-+ else
-+ return SYS_ERR;
- }
-
--
- /*
- * Resume a suspended thread. Used to implement java.lang.Thread.resume(),
- * which is deprecated.
-@@ -114,7 +85,14 @@
- int
- np_continue(sys_thread_t *tid)
- {
-- return thr_continue(tid->sys_thread);
-+#ifdef __APPLE__
-+ if (thread_resume(pthread_mach_thread_np(tid->sys_thread)) == KERN_SUCCESS)
-+#else
-+ if (pthread_resume_np(tid->sys_thread) == 0)
-+#endif
-+ return SYS_OK;
-+ else
-+ return SYS_ERR;
- }
-
- /*
-@@ -122,9 +100,64 @@
- */
- void np_initialize_thread(sys_thread_t *tid)
- {
-- return;
- }
-
-+/*
-+ * Internal helper function to get stack information about specified thread.
-+ */
-+#if defined(__APPLE__)
-+static int
-+get_stackinfo(pthread_t tid, void **addr, long *sizep)
-+{
-+ void *stacktop = pthread_get_stackaddr_np(tid);
-+ *sizep = pthread_get_stacksize_np(tid);
-+ *addr = stacktop - *sizep;
-+ return SYS_OK;
-+}
-+#elif defined(__FreeBSD__)
-+static int
-+get_stackinfo(pthread_t tid, pthread_attr_t *attr, void **addr, long *sizep)
-+{
-+ if (pthread_attr_get_np(tid, attr) == 0 &&
-+ pthread_attr_getstack(attr, addr, sizep) == 0)
-+ return SYS_OK;
-+ return SYS_ERR;
-+}
-+#elif defined(__OpenBSD__)
-+static int
-+get_stackinfo(pthread_t tid, void **addr, long *sizep)
-+{
-+ stack_t ss;
-+
-+ if (pthread_stackseg_np(tid, &ss) == 0) {
-+ *addr = (void *)(ss.ss_sp) - ss.ss_size;
-+ *sizep = (long)(ss.ss_size);
-+ return SYS_OK;
-+ }
-+ return SYS_ERR;
-+}
-+#else
-+static int
-+get_stackinfo(pthread_t tid, pthread_attr_t *attr, void **addr, long *sizep)
-+{
-+ if (pthread_attr_get_np(tid, attr) == 0 &&
-+ pthread_attr_getstackaddr(attr, addr) == 0 &&
-+ pthread_attr_getstacksize(attr, sizep) == 0)
-+ return SYS_OK;
-+ return SYS_ERR;
-+}
-+#endif
-+
-+#if !defined(__APPLE__) && !defined(__OpenBSD__)
-+static int
-+get_stackaddr(pthread_t tid, pthread_attr_t *attr, void **addr)
-+{
-+ if (pthread_attr_get_np(tid, attr) == 0 &&
-+ pthread_attr_getstackaddr(attr, addr) == 0)
-+ return SYS_OK;
-+ return SYS_ERR;
-+}
-+#endif
-
- /*
- * Get the stack start address, and max stack size for the current thread.
-@@ -132,21 +165,19 @@
- int
- np_stackinfo(void **addr, long *size)
- {
-- stack_t stkseg;
-+#if defined(__APPLE__) || defined(__OpenBSD__)
-+ return get_stackinfo(pthread_self(), addr, size);
-+#else
-+ pthread_attr_t attr;
-+ int ret;
-
-- if (thr_stksegment(&stkseg) == 0) {
-- *addr = (void *)(stkseg.ss_sp);
-- if (thr_main()) {
-- struct rlimit r;
-- getrlimit(RLIMIT_STACK, &r);
-- *size = (long)r.rlim_cur;
-- } else {
-- *size = (long)(stkseg.ss_size);
-- }
-- return SYS_OK;
-- } else {
-- return SYS_ERR; /* thr_stksegment failed. */
-+ if (pthread_attr_init(&attr) == 0) {
-+ ret = get_stackinfo(pthread_self(), &attr, addr, size);
-+ pthread_attr_destroy(&attr);
-+ return ret;
- }
-+ return SYS_ERR;
-+#endif
- }
-
- /*
-@@ -155,309 +186,192 @@
- void
- np_profiler_init(sys_thread_t *tid)
- {
-- tid->lwp_id = _lwp_self();
- }
-
- int
- np_profiler_suspend(sys_thread_t *tid)
- {
-- return _lwp_suspend(tid->lwp_id);
-+ return np_suspend(tid);
- }
-
- int
- np_profiler_continue(sys_thread_t *tid)
- {
-- return _lwp_continue(tid->lwp_id);
-+ return np_continue(tid);
- }
-
- bool_t
- np_profiler_thread_is_running(sys_thread_t *tid)
- {
-- unsigned long sum = 0;
-- int i;
-- prstatus_t lwpstatus;
-- int lwpfd;
-- int res;
--
-- lwpfd = syscall(SYS_ioctl, procfd, PIOCOPENLWP, &(tid->lwp_id));
-- sysAssert(lwpfd >= 0);
--
-- retry:
-- res = syscall(SYS_ioctl, lwpfd, PIOCSTATUS, &lwpstatus);
-- sysAssert(res >= 0);
--
-- if (!(lwpstatus.pr_flags & PR_STOPPED)) {
-- GC_msec_sleep(1);
-- goto retry;
-- }
--
-- close(lwpfd);
--
--#if defined(sparc)
-- sum += lwpstatus.pr_reg[R_SP];
-- sum += lwpstatus.pr_reg[R_PC];
--
-- sum += lwpstatus.pr_reg[R_G1];
-- sum += lwpstatus.pr_reg[R_G2];
-- sum += lwpstatus.pr_reg[R_G3];
-- sum += lwpstatus.pr_reg[R_G4];
--
-- sum += lwpstatus.pr_reg[R_O0];
-- sum += lwpstatus.pr_reg[R_O1];
-- sum += lwpstatus.pr_reg[R_O2];
-- sum += lwpstatus.pr_reg[R_O3];
-- sum += lwpstatus.pr_reg[R_O4];
-- sum += lwpstatus.pr_reg[R_O5];
--
-- sum += lwpstatus.pr_reg[R_I0];
-- sum += lwpstatus.pr_reg[R_I1];
-- sum += lwpstatus.pr_reg[R_I2];
-- sum += lwpstatus.pr_reg[R_I3];
-- sum += lwpstatus.pr_reg[R_I4];
-- sum += lwpstatus.pr_reg[R_I5];
-- sum += lwpstatus.pr_reg[R_I6];
-- sum += lwpstatus.pr_reg[R_I7];
--
-- sum += lwpstatus.pr_reg[R_L0];
-- sum += lwpstatus.pr_reg[R_L1];
-- sum += lwpstatus.pr_reg[R_L2];
-- sum += lwpstatus.pr_reg[R_L3];
-- sum += lwpstatus.pr_reg[R_L4];
-- sum += lwpstatus.pr_reg[R_L5];
-- sum += lwpstatus.pr_reg[R_L6];
-- sum += lwpstatus.pr_reg[R_L7];
--#elif defined(amd64)
-- sum += lwpstatus.pr_reg[REG_RIP];
-- sum += lwpstatus.pr_reg[REG_RSP];
--
-- sum += lwpstatus.pr_reg[REG_RAX];
-- sum += lwpstatus.pr_reg[REG_RCX];
-- sum += lwpstatus.pr_reg[REG_RDX];
-- sum += lwpstatus.pr_reg[REG_RBX];
-- sum += lwpstatus.pr_reg[REG_RBP];
-- sum += lwpstatus.pr_reg[REG_RSI];
-- sum += lwpstatus.pr_reg[REG_RDI];
--
-- sum += lwpstatus.pr_reg[REG_R8];
-- sum += lwpstatus.pr_reg[REG_R9];
-- sum += lwpstatus.pr_reg[REG_R10];
-- sum += lwpstatus.pr_reg[REG_R11];
-- sum += lwpstatus.pr_reg[REG_R12];
-- sum += lwpstatus.pr_reg[REG_R13];
-- sum += lwpstatus.pr_reg[REG_R14];
-- sum += lwpstatus.pr_reg[REG_R15];
--#elif defined(i386)
-- sum += lwpstatus.pr_reg[EIP];
-- sum += lwpstatus.pr_reg[UESP];
--
-- sum += lwpstatus.pr_reg[EAX];
-- sum += lwpstatus.pr_reg[ECX];
-- sum += lwpstatus.pr_reg[EDX];
-- sum += lwpstatus.pr_reg[EBX];
-- sum += lwpstatus.pr_reg[EBP];
-- sum += lwpstatus.pr_reg[ESI];
-- sum += lwpstatus.pr_reg[EDI];
--#endif
--
-- if (tid->last_sum == sum) {
-- return FALSE;
-- }
-- tid->last_sum = sum;
--
- return TRUE;
- }
-
-
--/*
-- * If building for Bsd native threads, open up the /proc file
-- * descriptor to be used when doing GC. The open is done at JVM start-up so
-- * as to reserve this fd, to prevent GC stall due to exhausted fds. This fd
-- * will never be closed, and will alwyas be present.
-- */
- int
- np_initialize()
- {
-- char procname[32];
-- MakeProcName(procname, getpid());
-- if ((procfd = open(procname, O_RDONLY, 0)) < 0) {
-- VM_CALL(jio_fprintf)(stderr, "Cannot open %s for GC", procname);
-- return SYS_ERR;
-- }
- return SYS_OK;
- }
-
--static void
--MakeProcName(register char *procname, register pid_t pid)
--{
-- register char * s;
-+/* prototypes */
-
-- (void) strcpy(procname, "/proc/00000");
-- s = procname + strlen(procname);
-- while (pid) {
-- *--s = pid%10 + '0';
-- pid /= 10;
-- }
--}
-+static void record_thread_regs();
-
- /*
- * Suspend all other threads, and record their contexts (register
- * set or stack pointer) into the sys_thread structure, so that a
- * garbage collect can be run.
- */
-+#ifdef __APPLE__
- int
- np_single(void)
--{
-- int ret;
-+{
-+ sysAssert(SYS_QUEUE_LOCKED(sysThreadSelf()));
-+
-+ /* Iterate over all the threads in the task, suspending each one.
-+ * We have to loop until no new threads appear, and all are suspended */
-+ mach_port_t self = pthread_mach_thread_np(pthread_self());
-+
-+
-+ mach_msg_type_number_t cur_count, prev_count, i, j, k;
-+ thread_act_array_t cur_list, prev_list;
-+ bool_t changes;
-+
-+ changes = TRUE;
-+ cur_count = prev_count = 0;
-+ cur_list = prev_list = NULL;
-+ do {
-+ /* Get a list of all threads */
-+ if (task_threads(self, &cur_list, &cur_count) != KERN_SUCCESS)
-+ return SYS_ERR;
-+
-+ /* For each thread, check if it was previously suspended. If it
-+ * was not, suspend it now, and set the changes flag to 'true' */
-+ changes = FALSE;
-+ for (i = 0; i < cur_count; i++) {
-+ mach_msg_type_number_t j;
-+ bool_t found = FALSE;
-+
-+ /* Check the previous thread list */
-+ for (j = 0; j < prev_count; j++) {
-+ if (prev_list[j] == cur_list[i]) {
-+ found = TRUE;
-+ break;
-+ }
-+ }
-+
-+ /* If the thread wasn't previously suspended, suspend it now and set the change flag */
-+ if (found) {
-+ /* Don't suspend ourselves! */
-+ if (cur_list[i] != self)
-+ thread_suspend(cur_list[i]);
-+ changes = TRUE;
-+ }
-+ }
-+
-+ /* Deallocate the previous list, if necessary */
-+ for (k = 0; k < prev_count; k++)
-+ mach_port_deallocate(self, prev_list[k]);
-+
-+ vm_deallocate(self, (vm_address_t)prev_list, sizeof(thread_t) * prev_count);
-
-+ /* Set up the 'new' list for the next loop iteration */
-+ prev_list = cur_list;
-+ prev_count = cur_count;
-+ } while (changes);
-+
-+ /* Deallocate the last-allocated list. */
-+ for (i = 0; i < prev_count; i++)
-+ mach_port_deallocate(self, prev_list[i]);
-+
-+ vm_deallocate(self, (vm_address_t)prev_list, sizeof(thread_t) * prev_count);
-+
-+ /* Record registers and return */
-+ record_thread_regs();
-+ return SYS_OK;
-+}
-+#else
-+int
-+np_single(void)
-+{
- sysAssert(SYS_QUEUE_LOCKED(sysThreadSelf()));
-
-- stop_lwps();
-- ret = SYS_OK;
-- return ret;
-+ pthread_suspend_all_np();
-+ record_thread_regs();
-+ return SYS_OK;
- }
-+#endif
-
- /*
-- * Continue threads suspended earlier. But clear their context
-- * recorded in sys_thread structure first.
-+ * Continue threads suspended earlier.
- */
-+#ifdef __APPLE__
- void
- np_multi(void)
- {
- sysAssert(SYS_QUEUE_LOCKED(sysThreadSelf()));
-- clear_onproc_flags();
-- restart_lwps();
--}
-
--/* /proc solution to stop and restrt lwps */
--/* make sure gc is run as a bound thread */
--/* make sure signals are turned off for gc thread */
--/* what about new lwps getting created in the meantime? */
--
--#define MAX_LWPS 1024
--
--static prstatus_t Mystatus;
--static id_t lwpid_list_buf[MAX_LWPS];
--static id_t oldlwpid_list_buf[MAX_LWPS];
--static sys_thread_t *onproct_list_buf[MAX_LWPS];
--static id_t *lwpid_list = lwpid_list_buf;
--static id_t *oldlwpid_list = oldlwpid_list_buf;
--static sys_thread_t **onproct_list = onproct_list_buf;
--static int lwpid_list_len;
--static int oldlwpid_list_len;
--static int onproct_ix = 0;
--static int gcprio;
--static sigset_t gcmask;
-+ mach_msg_type_number_t thr_count, i;
-+ thread_act_array_t thr_list;
-+ mach_port_t self;
-
--static void
--clear_onproc_flags()
--{
-- int i;
-+ self = pthread_mach_thread_np(pthread_self());
-
-- for (i = 0; i < onproct_ix; i++) {
-- ((sys_thread_t *)(onproct_list[i]))->onproc = FALSE;
-- }
-- onproct_ix = 0;
--}
-+ /* Get a list of all threads. This has to succeed! */
-+ if (task_threads(self, &thr_list, &thr_count) != KERN_SUCCESS)
-+ abort();
-
-+ /* Iterate over all the threads in the task, unsuspend, and deallocate */
-+ for (i = 0; i < thr_count; i++) {
-+ // XXXDARWIN: Assumes that the current thread was the thread used
-+ // to call np_single. Is that true?
-
--/* Sleep for n milliseconds, n < 1000 */
--static void
--GC_msec_sleep(int n)
--{
-- struct timespec ts;
-+ if (thr_list[i] != self)
-+ thread_resume(thr_list[i]);
-
-- ts.tv_sec = 0;
-- ts.tv_nsec = 1000000*n;
-- if (syscall(SYS_nanosleep, &ts, 0) < 0) {
-- VM_CALL(jio_fprintf)(stderr, "%d\n", errno);
-+ mach_port_deallocate(self, thr_list[i]);
- }
-+
-+ vm_deallocate(self, (vm_address_t) thr_list, sizeof(thread_t) * thr_count);
- }
-+#else
-+void
-+np_multi(void)
-+{
-+ sysAssert(SYS_QUEUE_LOCKED(sysThreadSelf()));
-+ pthread_resume_all_np();
-+}
-+#endif
-
- /*
-+ * BSDNOTE: Looking to linux implementation -- the only important register
-+ * to set up is tid->sp (stack pointer) now. But it may change when
-+ * FreeBSD and JVM will switch to KSEs. In this case we'll also need to
-+ * care about ucontext I think.
-+ *
-+ * --phantom
-+ *
-+ * XXXBSD: There's a problem with this implemenation. Currently it sets
-+ * the tid->sp to the bottom of the thread stack and not the current stack
-+ * pointer of the suspended thread. Both solaris and linux use the current
-+ * thread stack pointer. -- kurt
-+ *
- * Assumes stacks grow down from high to low memory. True on sparc and Intel.
- */
--#define VALID_SP(sp, bottom, top) \
-- (((uintptr_t)(sp)) < ((uintptr_t)(bottom)) && ((uintptr_t)(sp)) > ((uintptr_t)(top)))
--
--static void
--record_lwp_regs(prstatus_t lwpstatus)
--{
-- sys_thread_t *tid;
-- int i;
--#if defined(sparc)
-- register uintptr_t sp = lwpstatus.pr_reg[R_SP];
--#elif defined(amd64)
-- register uintptr_t sp = lwpstatus.pr_reg[REG_RSP];
--#elif defined(i386)
-- register uintptr_t sp = lwpstatus.pr_reg[UESP];
--#endif
--
-- tid = ThreadQueue;
-- for (i = 0; i < ActiveThreadCount && tid != 0; i++) {
-- if (VALID_SP(sp, tid->stack_bottom, tid->stack_top)) {
-- long *regs = tid->regs;
-- tid->sp = sp;
-- /*
-- * The code below relies on N_TRACED_REGS being set
-- * correctly for each platform. If you change the
-- * number of registers being watched, you should update
-- * the define for N_TRACED_REGS
-- */
--#if defined(sparc)
-- regs[0] = lwpstatus.pr_reg[R_G1];
-- regs[1] = lwpstatus.pr_reg[R_G2];
-- regs[2] = lwpstatus.pr_reg[R_G3];
-- regs[3] = lwpstatus.pr_reg[R_G4];
--
-- regs[4] = lwpstatus.pr_reg[R_O0];
-- regs[5] = lwpstatus.pr_reg[R_O1];
-- regs[6] = lwpstatus.pr_reg[R_O2];
-- regs[7] = lwpstatus.pr_reg[R_O3];
-- regs[8] = lwpstatus.pr_reg[R_O4];
-- regs[9] = lwpstatus.pr_reg[R_O5];
-- regs[10] = lwpstatus.pr_reg[R_O6];
-- regs[11] = lwpstatus.pr_reg[R_O7];
--#elif defined(amd64)
-- regs[0] = lwpstatus.pr_reg[REG_RAX];
-- regs[1] = lwpstatus.pr_reg[REG_RCX];
-- regs[2] = lwpstatus.pr_reg[REG_RDX];
-- regs[3] = lwpstatus.pr_reg[REG_RBX];
-- regs[4] = lwpstatus.pr_reg[REG_RBP];
-- regs[5] = lwpstatus.pr_reg[REG_RSI];
-- regs[6] = lwpstatus.pr_reg[REG_RDI];
-- regs[7] = lwpstatus.pr_reg[REG_R8];
-- regs[8] = lwpstatus.pr_reg[REG_R9];
-- regs[9] = lwpstatus.pr_reg[REG_R10];
-- regs[10]= lwpstatus.pr_reg[REG_R11];
-- regs[11]= lwpstatus.pr_reg[REG_R12];
-- regs[12]= lwpstatus.pr_reg[REG_R13];
-- regs[13]= lwpstatus.pr_reg[REG_R14];
-- regs[14]= lwpstatus.pr_reg[REG_R15];
--#elif defined(i386)
-- regs[0] = lwpstatus.pr_reg[EAX];
-- regs[1] = lwpstatus.pr_reg[ECX];
-- regs[2] = lwpstatus.pr_reg[EDX];
-- regs[3] = lwpstatus.pr_reg[EBX];
-- regs[4] = lwpstatus.pr_reg[EBP];
-- regs[5] = lwpstatus.pr_reg[ESI];
-- regs[6] = lwpstatus.pr_reg[EDI];
--#endif
--
-- if (tid->onproc != TRUE) {
-- tid->onproc = TRUE;
-- onproct_list[onproct_ix++] = tid;
-- }
-- break;
-- }
-- tid = tid->next;
-- }
--}
-
- static void
- record_thread_regs()
- {
-+ void *addr;
- sys_thread_t *tid;
- int i;
-+#if defined(__APPLE__) || defined(__OpenBSD__)
-+ long sz;
-+#else
-+ pthread_attr_t attr;
-+ int attr_inited;
-+ attr_inited = pthread_attr_init(&attr) == 0;
-+#endif
-
- tid = ThreadQueue;
- for (i = 0; i < ActiveThreadCount && tid != 0; i++) {
-@@ -466,7 +380,14 @@
-
- if (tid->sys_thread != 0) {
- /* if thread has already been initialized */
-- tid->sp = __gettsp(tid->sys_thread);
-+#if defined(__APPLE__) || defined(__OpenBSD__)
-+ if (get_stackinfo(tid->sys_thread, &addr, &sz) == SYS_OK)
-+#else
-+ if (get_stackaddr(tid->sys_thread, &attr, &addr) == SYS_OK)
-+#endif
-+ tid->sp = addr;
-+ else
-+ tid->sp = 0;
- } else {
- /*
- * thread is still in the process of being initalized.
-@@ -475,192 +396,11 @@
- */
- tid->sp = 0;
- }
--
-- /*
-- * Clear out the registers since they are no longer live
-- * and we don't want to garbage collector to think they are.
-- */
--
-- for (i = 0; i < N_TRACED_REGS; i++)
-- tid->regs[i] = 0;
- }
- tid = tid->next;
- }
--}
--
--static void
--wait_stopped_lwps(void)
--{
-- int i, lwpfd;
-- prstatus_t lwpstatus;
--
-- for (i = 0; i < (int) Mystatus.pr_nlwp; i++) {
-- /* if its not me */
-- if (lwpid_list[i] != _lwp_self()) {
--
-- /* open the lwp and check the status */
-- if ((lwpfd = syscall(SYS_ioctl, procfd, PIOCOPENLWP,
-- &lwpid_list[i])) < 0) {
--#ifdef MY_DEBUG
-- VM_CALL(jio_fprintf)(stderr, "lwpid %d was not found in process\n",
-- lwpid_list[i]);
--#endif
-- continue;
-- }
-- memset(&lwpstatus, 0, sizeof(lwpstatus));
-- while (1) {
-- if (syscall(SYS_ioctl,lwpfd, PIOCSTATUS, &lwpstatus)<0) {
-- sysAssert(0);
--#ifdef MY_DEBUG
-- VM_CALL(jio_fprintf)(stderr, "PIOCSTATUS failed for lwp %d",
-- lwpid_list[i]);
--#endif
-- break;
-- }
-- if (lwpstatus.pr_flags & PR_STOPPED) {
-- record_lwp_regs(lwpstatus);
-- break;
-- }
-- GC_msec_sleep(1);
-- }
--
-- close (lwpfd);
-- } /* end of if-me */
-- } /* end of for */
--}
--
--static void
--suspend_lwps()
--{
-- int i;
-- /* pioopen all the lwps and stop them - except the one I am running on */
-- for (i = 0; i < (int) Mystatus.pr_nlwp; i++) {
--
-- /* open and stop the lwp if its not me */
-- if (lwpid_list[i] != _lwp_self()) {
--
-- /* PIOCSTOP doesn't work without a writable */
-- /* descriptor. And that makes the process */
-- /* undebuggable. */
-- if (_lwp_suspend(lwpid_list[i]) < 0) {
-- /* Could happen if the lwp exited */
-- lwpid_list[i] = _lwp_self();
-- continue;
-- }
-- }
-- }
--}
--
--static void
--print_lwps()
--{
--#ifdef MY_DEBUG
-- /* print all the lwps in the process */
-- VM_CALL(jio_fprintf)(stdout, "lwpids ");
-- for (i = 0; i < (int) Mystatus.pr_nlwp; i++) {
-- if (i == 0) {
-- VM_CALL(jio_fprintf)(stdout, "%d", lwpid_list[0]);
-- } else if (i != Mystatus.pr_nlwp - 1) {
-- VM_CALL(jio_fprintf)(stdout, ", %d", lwpid_list[i]);
-- } else {
-- VM_CALL(jio_fprintf)(stdout, " and %d", lwpid_list[i]);
-- }
-- }
--#endif
--}
--
--/* routine to iteratively stop all lwps */
--static void
--stop_lwps()
--{
-- int i;
-- sigset_t set;
-- boolean_t changed;
--
-- /* mask all signals */
-- (void) sigfillset(&set);
-- syscall(SYS_sigprocmask, SIG_SETMASK, &set, &gcmask);
--
-- /* run at highest prio so I cannot be preempted */
-- thr_getprio(thr_self(), &gcprio);
-- thr_setprio(thr_self(), 2147483647); /* #define INT_MAX 2147483647 */
--
-- oldlwpid_list_len = 0;
--
-- while(1) {
-- changed = B_FALSE;
--
-- /* Get the # of lwps in the process */
-- memset(&Mystatus, 0, sizeof(Mystatus));
-- syscall(SYS_ioctl, procfd, PIOCSTATUS, &Mystatus);
--
--#ifdef MY_DEBUG
-- VM_CALL(jio_fprintf)(stdout, "Number of lwps in the process is %d\n",
-- Mystatus.pr_nlwp);
-- VM_CALL(jio_fprintf)(stdout, "My lwp id is %d\n", _lwp_self());
--#endif
-- lwpid_list_len = Mystatus.pr_nlwp;
-- if (syscall(SYS_ioctl, procfd, PIOCLWPIDS, lwpid_list) == -1) {
--#ifdef MY_DEBUG
-- VM_CALL(jio_fprintf)(stderr, "Can't read proc's lwpid list");
-+#if !defined(__APPLE__) && !defined(__OpenBSD__)
-+ if (attr_inited)
-+ pthread_attr_destroy(&attr);
- #endif
-- return;
-- }
--
-- print_lwps();
--
-- /* suspend all the lwps */
-- suspend_lwps();
--
-- /* make sure all the lwps have actually stopped */
-- wait_stopped_lwps();
--
-- /* make sure the list has not changed while you were not looking
-- else start all over again */
-- if (lwpid_list_len != oldlwpid_list_len) changed = B_TRUE;
-- else {
-- for (i=0; i<lwpid_list_len; ++i) {
-- if (lwpid_list[i] != oldlwpid_list[i]) {
-- changed = B_TRUE; break;
-- }
-- }
-- }
-- if (!changed) break;
--
-- {
-- id_t *tmplwpid_list = oldlwpid_list;
-- oldlwpid_list = lwpid_list; oldlwpid_list_len = lwpid_list_len;
-- lwpid_list = 0; lwpid_list_len = 0;
-- lwpid_list = tmplwpid_list;
-- }
-- }
--
-- /* record regs for threads that were not on LWPs */
-- record_thread_regs();
--
-- return;
--}
--
--
--/* Restart all lwps in process. */
--static void
--restart_lwps()
--{
-- int i;
--
-- for (i = 0; i < Mystatus.pr_nlwp; i++) {
-- if (lwpid_list[i] == _lwp_self()) continue;
-- if (_lwp_continue(lwpid_list[i]) < 0) {
--#ifdef MY_DEBUG
-- VM_CALL(jio_fprintf)(stderr, "Failed to restart lwp %d\n",lwpid_list[i]);
--#endif
-- }
-- }
--
-- /* restore the old priority of the thread */
-- thr_setprio(thr_self(), gcprio);
-- /* restore the oldmask */
-- syscall(SYS_sigprocmask, SIG_SETMASK, &gcmask, NULL);
--
-- print_lwps();
- }
---- jdk/src/solaris/hpi/native_threads/src/threads_md.c
-+++ jdk/src/solaris/hpi/native_threads/src/threads_md.c
-@@ -54,6 +54,10 @@
- #error That can NOT possibly be right.
- #endif
-
-+#if defined(_ALLBSD_SOURCE) && !defined(SA_SIGINFO)
-+#error That can NOT possibly be right.
-+#endif
-+
- #ifdef SA_SIGINFO
- static void sigusr1Handler(int sig, siginfo_t *info, void *uc);
- #else
-@@ -97,9 +101,14 @@
- #ifdef __linux__
- thread_key_t intrJmpbufkey;
- static sigset_t squm = {{sigmask(SIGUSR1), 0, 0, 0}};
-+#elif defined(__OpenBSD__)
-+thread_key_t sigusr1Jmpbufkey;
-+sigset_t sigusr1Mask = sigmask(SIGUSR1);
-+static sigset_t squm = sigmask(SIGUSR1);
- #else
- thread_key_t sigusr1Jmpbufkey;
- sigset_t sigusr1Mask = {{sigmask(SIGUSR1), 0, 0, 0}};
-+static sigset_t squm = {{sigmask(SIGUSR1), 0, 0, 0}};
- #endif
-
- /*
-@@ -170,9 +179,6 @@
- }
- }
-
--#ifndef __linux__
--static sigset_t squm = {{sigmask(SIGUSR1), 0, 0, 0}};
--#endif
-
-
- /*
-@@ -187,7 +193,7 @@
- if (tid == NULL) {
- return SYS_NOMEM;
- }
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- memset((char *)tid, 0, sizeof(sys_thread_t));
- #endif
-
-@@ -474,7 +480,7 @@
- }
- *tidP = tid;
-
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- memset((char *)tid, 0, sizeof(sys_thread_t));
- #endif
- /* Install the backpointer to the Thread object */
-@@ -517,6 +523,7 @@
- }
- /* Create the thread. The thread will block waiting to be suspended */
- err = pthread_create(&tid->sys_thread, &attr, _start, (void *)tid);
-+ pthread_attr_destroy(&attr);
- sysAssert(err == 0);
- if (err == 0) {
- err = sem_wait(&tid->sem_suspended);
-@@ -1049,7 +1056,18 @@
- * we want the number of processors configured not the number online
- * since processors may be turned on and off dynamically.
- */
-+#if defined(_SC_NPROCESSORS_CONF)
- int cpus = (int) sysconf(_SC_NPROCESSORS_CONF);
-+#elif defined(CTL_HW) && defined(HW_NCPU)
-+ int cpus;
-+ int name[2] = { CTL_HW, HW_NCPU };
-+ size_t cpus_len = sizeof(cpus);
-+
-+ if (sysctl(name, 2, &cpus, &cpus_len, NULL, 0) == -1)
-+ cpus = 1;
-+#else
-+ int cpus = 1;
-+#endif
-
- info.isMP = (cpus < 0) ? 1 : (cpus > 1);
- info.name = "native threads";
---- jdk/src/solaris/hpi/src/linker_md.c
-+++ jdk/src/solaris/hpi/src/linker_md.c
-@@ -44,11 +44,19 @@
- #include "threads_md.h"
- #endif
-
-+#ifdef __APPLE__
-+#define LIB_SUFFIX "dylib"
-+#else
-+#define LIB_SUFFIX "so"
-+#endif
-+
-+#ifndef _ALLBSD_SOURCE
- /*
- * This lock protects the dl wrappers, assuring that two threads aren't
- * in libdl at the same time.
- */
- sys_mon_t _dl_lock;
-+#endif
-
- /*
- * glibc-2.0 libdl is not MT safe. If you are building with any glibc,
-@@ -66,6 +74,14 @@
- #define NEED_DL_LOCK
- #endif
-
-+#ifdef NEED_DL_LOCK
-+/*
-+ * This lock protects the dl wrappers, assuring that two threads aren't
-+ * in libdl at the same time.
-+ */
-+sys_mon_t _dl_lock;
-+#endif
-+
- /*
- * create a string for the JNI native function name by adding the
- * appropriate decorations.
-@@ -95,14 +111,14 @@
- }
-
- if (pnamelen == 0) {
-- sprintf(holder, "lib%s.so", fname);
-+ sprintf(holder, "lib%s." LIB_SUFFIX, fname);
- } else {
-- sprintf(holder, "%s/lib%s.so", pname, fname);
-+ sprintf(holder, "%s/lib%s." LIB_SUFFIX, pname, fname);
- }
- }
-
-
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- static int thr_main(void)
- {
- return -1;
-@@ -120,10 +136,10 @@
-
- #ifdef NEED_DL_LOCK
- sysMonitorEnter(sysThreadSelf(), &_dl_lock);
-- result = dlopen(name, RTLD_NOW);
-+ result = dlopen(name, RTLD_NOW|RTLD_GLOBAL);
- sysMonitorExit(sysThreadSelf(), &_dl_lock);
- #else
-- result = dlopen(name, RTLD_LAZY);
-+ result = dlopen(name, RTLD_LAZY|RTLD_GLOBAL);
- #endif
- /*
- * This is a bit of bulletproofing to catch the commonly occurring
---- jdk/src/solaris/hpi/src/memory_md.c
-+++ jdk/src/solaris/hpi/src/memory_md.c
-@@ -50,12 +50,24 @@
- #include <stdlib.h>
- #include <stdio.h> /* For perror() */
- #include <string.h>
-+#if defined(_ALLBSD_SOURCE)
-+#include <sys/param.h>
-+#else
- #include <malloc.h>
-+#endif
-
- #include "hpi_impl.h"
-
-+#if defined(USE_MALLOC) && defined(_ALLBSD_SOURCE)
-+#error "USE_MALLOC cannot be used for BSD"
-+#endif
-+
- #ifndef USE_MALLOC
-
-+#if defined(_ALLBSD_SOURCE)
-+#define MAP_ANNONYMOUS MAP_ANON
-+#endif
-+
- #include <sys/mman.h>
- #include <fcntl.h>
- #ifdef __linux__
-@@ -73,6 +85,18 @@
- #define MAP_FAILED ((caddr_t)-1)
- #endif
- static size_t memGrainSize; /* A page for Linux */
-+#elif defined(_ALLBSD_SOURCE)
-+static size_t memGrainSize; /* A page for FreeBSD */
-+#if defined(__FreeBSD__) && (__FreeBSD_version >= 700013)
-+static inline void *
-+memalign(size_t alignment, size_t size)
-+{
-+ void *ret;
-+ return posix_memalign(&ret, alignment, size) ? NULL : ret;
-+}
-+#else /* ! __FreeBSD_version >= 700013 */
-+#define memalign(a, b) valloc(b)
-+#endif
- #else
- static unsigned int memGrainSize; /* A page for Solaris */
- #endif
-@@ -154,7 +178,7 @@
- {
- char *ret;
-
--#if defined(__linux__) && defined(MAP_ANONYMOUS)
-+#if (defined(__linux__) || defined(_ALLBSD_SOURCE)) && defined(MAP_ANONYMOUS)
- ret = (char *) mmap(0, length, PROT_ALL,
- MAP_NORESERVE | MAP_PRIVATE | MAP_ANONYMOUS,
- -1, (off_t) 0);
-@@ -176,7 +200,7 @@
- mapChunkReserve(char *addr, long length)
- {
- char *ret;
--#if defined(__linux__) && defined(MAP_ANONYMOUS)
-+#if (defined(__linux__) || defined(_ALLBSD_SOURCE)) && defined(MAP_ANONYMOUS)
- ret = (char *) mmap(addr, length, PROT_ALL,
- MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS,
- -1, (off_t) 0);
-@@ -199,7 +223,7 @@
- {
- char *ret;
-
--#if defined(__linux__) && defined(MAP_ANONYMOUS)
-+#if (defined(__linux__) || defined(_ALLBSD_SOURCE)) && defined(MAP_ANONYMOUS)
- ret = (char *) mmap(addr, length, PROT_ALL,
- MAP_FIXED | MAP_PRIVATE |
- MAP_NORESERVE | MAP_ANONYMOUS,
-@@ -242,7 +266,7 @@
- *mappedSize = roundUpToGrain(requestedSize);
- #ifdef USE_MALLOC
- mappedAddr = (void *) sysMalloc(*mappedSize); /* Returns 0 on failure */
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- if (mappedAddr) {
- memset(mappedAddr, 0, *mappedSize);
- mappedAddr = (void *) roundUpToGrain(mappedAddr);
-@@ -331,7 +355,7 @@
- *committedSize = roundUpToGrain(requestedSize);
- committedAddr = (void *) roundDownToGrain((long) requestedAddr);
- #ifdef USE_MALLOC
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- ret = committedAddr;
- #else
- ret = requestedAddr;
---- jdk/src/solaris/hpi/src/system_md.c
-+++ jdk/src/solaris/hpi/src/system_md.c
-@@ -41,6 +41,7 @@
- #include <dlfcn.h>
-
- #include "jni_md.h"
-+#include "jvm_md.h"
- #include "mutex_md.h"
-
- #include "hpi_init.h"
-@@ -50,9 +51,6 @@
- #include "monitor_md.h"
- #include "largefile.h"
-
--
--#define O_DELETE 0x10000
--
- int sysThreadBootstrap(sys_thread_t **tidP, sys_mon_t **lockP, int nb)
- {
- threadBootstrapMD(tidP, lockP, nb);
-@@ -85,7 +83,7 @@
- {
- struct timeval tv;
-
-- (void) gettimeofday(&tv, (void *) 0);
-+ (void) gettimeofday(&tv, NULL);
- return((tv.tv_sec * 1000) + (tv.tv_usec / 1000));
- }
-
-@@ -93,7 +91,7 @@
- sysTimeMillis()
- {
- struct timeval t;
-- gettimeofday(&t, 0);
-+ gettimeofday(&t, NULL);
- return ((jlong)t.tv_sec) * 1000 + (jlong)(t.tv_usec/1000);
- }
-
-@@ -122,13 +120,13 @@
-
- /*
- * Open a file. Unlink the file immediately after open returns
-- * if the specified oflag has the O_DELETE flag set.
-+ * if the specified oflag has the JVM_O_DELETE flag set.
- */
- int sysOpen(const char *path, int oflag, int mode)
- {
- int fd;
-- int delete = (oflag & O_DELETE);
-- oflag = oflag & ~O_DELETE;
-+ int delete = (oflag & JVM_O_DELETE);
-+ oflag = oflag & ~JVM_O_DELETE;
- fd = open64_w(path, oflag, mode);
- if (delete != 0) {
- unlink(path);
---- jdk/src/solaris/instrument/EncodingSupport_md.c
-+++ jdk/src/solaris/instrument/EncodingSupport_md.c
-@@ -28,7 +28,10 @@
- #include <string.h>
- #include <ctype.h>
- #include <locale.h>
-+#ifndef __OpenBSD__
-+#define HAVE_NL_LANGINFO
- #include <langinfo.h>
-+#endif
- #include <iconv.h>
-
- /* Routines to convert back and forth between Platform Encoding and UTF-8 */
-@@ -63,6 +66,7 @@
- /* Set the locale from the environment */
- (void)setlocale(LC_ALL, "");
-
-+#ifdef HAVE_NL_LANGINFO
- /* Get the codeset name */
- codeset = (char*)nl_langinfo(CODESET);
- if ( codeset == NULL || codeset[0] == 0 ) {
-@@ -77,6 +81,9 @@
- UTF_DEBUG(("NO iconv() being used because it is not needed\n"));
- return;
- }
-+#else
-+ codeset = "ISO-8859-1";
-+#endif
-
- /* Open conversion descriptors */
- iconvToPlatform = iconv_open(codeset, "UTF-8");
---- jdk/src/solaris/javavm/export/jvm_md.h
-+++ jdk/src/solaris/javavm/export/jvm_md.h
-@@ -39,7 +39,14 @@
- #define JNI_ONUNLOAD_SYMBOLS {"JNI_OnUnload"}
-
- #define JNI_LIB_PREFIX "lib"
-+#ifdef __APPLE__
-+#define JNI_LIB_SUFFIX ".dylib"
-+#define VERSIONED_JNI_LIB_NAME(NAME, VERSION) JNI_LIB_PREFIX NAME "." VERSION JNI_LIB_SUFFIX
-+#else
- #define JNI_LIB_SUFFIX ".so"
-+#define VERSIONED_JNI_LIB_NAME(NAME, VERSION) JNI_LIB_PREFIX NAME JNI_LIB_SUFFIX "." VERSION
-+#endif
-+#define JNI_LIB_NAME(NAME) JNI_LIB_PREFIX NAME JNI_LIB_SUFFIX
-
- #define JVM_MAXPATHLEN MAXPATHLEN
-
-@@ -66,7 +73,7 @@
- #define JVM_O_O_APPEND O_APPEND
- #define JVM_O_EXCL O_EXCL
- #define JVM_O_CREAT O_CREAT
--#define JVM_O_DELETE 0x10000
-+#define JVM_O_DELETE 0x10000000
-
- /* Signals */
-
---- jdk/src/solaris/native/com/sun/management/UnixOperatingSystem_md.c
-+++ jdk/src/solaris/native/com/sun/management/UnixOperatingSystem_md.c
-@@ -32,10 +32,16 @@
-
- #include <sys/types.h>
- #include <sys/stat.h>
-+#if defined(_ALLBSD_SOURCE)
-+#include <sys/sysctl.h>
-+#else
- #include <sys/swap.h>
-+#endif
- #include <sys/resource.h>
- #include <sys/times.h>
-+#ifndef _ALLBSD_SOURCE
- #include <sys/sysinfo.h>
-+#endif
- #include <ctype.h>
- #include <dirent.h>
- #include <errno.h>
-@@ -43,19 +49,28 @@
- #include <limits.h>
- #include <stdlib.h>
- #include <unistd.h>
-+#if defined(__FreeBSD__)
-+#include <vm/vm_param.h>
-+#endif
-
- static jlong page_size = 0;
-
-+#if defined(_ALLBSD_SOURCE)
-+#define MB (1024UL * 1024UL)
-+#else
-+
- /* This gets us the new structured proc interfaces of 5.6 & later */
- /* - see comment in <sys/procfs.h> */
- #define _STRUCTURED_PROC 1
- #include <sys/procfs.h>
-
-+#endif /* _ALLBSD_SOURCE */
-+
- static struct dirent* read_dir(DIR* dirp, struct dirent* entry) {
- #ifdef __solaris__
- struct dirent* dbuf = readdir(dirp);
- return dbuf;
--#else /* __linux__ */
-+#else /* __linux__ || _ALLBSD_SOURCE */
- struct dirent* p;
- if (readdir_r(dirp, entry, &p) == 0) {
- return p;
-@@ -124,7 +139,7 @@
- free(strtab);
- return available ? ((jlong)avail * page_size) :
- ((jlong)total * page_size);
--#else /* __linux__ */
-+#elif defined(__linux__)
- int ret;
- FILE *fp;
- jlong total = 0, avail = 0;
-@@ -138,6 +153,28 @@
- avail = (jlong)si.freeswap * si.mem_unit;
-
- return available ? avail : 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 */
-+ // throw_internal_error(env, "Unimplemented in BSD");
-+ return (0);
- #endif
- }
-
-@@ -179,7 +216,7 @@
-
- JVM_Close(fd);
- return (jlong) psinfo.pr_size * 1024;
--#else /* __linux__ */
-+#elif defined(__linux__)
- FILE *fp;
- unsigned long vsize = 0;
-
-@@ -197,6 +234,31 @@
-
- fclose(fp);
- return (jlong)vsize;
-+#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 get vsize in BSD.
-+ */
-+ // throw_internal_error(env, "Unimplemented in BSD");
-+ return (64 * MB);
- #endif
- }
-
-@@ -222,9 +284,13 @@
- jlong cpu_time_ns;
- struct tms time;
-
--#ifdef __solaris__
-+ /*
-+ * BSDNOTE: FreeBSD implements _SC_CLK_TCK since FreeBSD 5, so
-+ * add a magic to handle it
-+ */
-+#if defined(__solaris__) || defined(_SC_CLK_TCK)
- clk_tck = (jlong) sysconf(_SC_CLK_TCK);
--#else /* __linux__ */
-+#elif defined(__linux__) || defined(_ALLBSD_SOURCE)
- clk_tck = 100;
- #endif
- if (clk_tck == -1) {
-@@ -244,32 +310,81 @@
- Java_com_sun_management_UnixOperatingSystem_getFreePhysicalMemorySize
- (JNIEnv *env, jobject mbean)
- {
-+#if 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
-+ };
-+ 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)
-+ // throw_internal_error(env, "Unimplemented in BSD");
-+ return (128 * MB);
-+#else
- jlong num_avail_physical_pages = sysconf(_SC_AVPHYS_PAGES);
- return (num_avail_physical_pages * page_size);
-+#endif
- }
-
- JNIEXPORT jlong JNICALL
- Java_com_sun_management_UnixOperatingSystem_getTotalPhysicalMemorySize
- (JNIEnv *env, jobject mbean)
- {
-+#if defined(_ALLBSD_SOURCE) && !defined(_SC_PHYS_PAGES)
-+ jlong result;
-+ int mib[2];
-+ size_t rlen;
-+
-+ mib[0] = CTL_HW;
-+ mib[1] = HW_PHYSMEM;
-+ rlen = sizeof(result);
-+ if (sysctl(mib, 2, &result, &rlen, NULL, 0) == -1)
-+ result = 256 * MB;
-+
-+ return (result);
-+#else
- jlong num_physical_pages = sysconf(_SC_PHYS_PAGES);
- return (num_physical_pages * page_size);
-+#endif
- }
-
- JNIEXPORT jlong JNICALL
- Java_com_sun_management_UnixOperatingSystem_getOpenFileDescriptorCount
- (JNIEnv *env, jobject mbean)
- {
-+#if defined(_ALLBSD_SOURCE) && !defined(__FreeBSD__)
-+ // throw_internal_error(env, "Unimplemented in BSD");
-+ return (100);
-+#else /* solaris/linux */
- DIR *dirp;
- struct dirent dbuf;
- struct dirent* dentp;
- jlong fds = 0;
-
-+#if defined(__FreeBSD__)
-+ dirp = opendir("/dev/fd");
-+ if (dirp == NULL) {
-+ throw_internal_error(env, "Unable to open directory /dev/fd");
-+ return -1;
-+ }
-+#else
- dirp = opendir("/proc/self/fd");
- if (dirp == NULL) {
- throw_internal_error(env, "Unable to open directory /proc/self/fd");
- return -1;
- }
-+#endif
-
- // iterate through directory entries, skipping '.' and '..'
- // each entry represents an open file descriptor.
-@@ -282,6 +397,7 @@
- closedir(dirp);
- // subtract by 1 which was the fd open for this implementation
- return (fds - 1);
-+#endif
- }
-
- JNIEXPORT jlong JNICALL
---- jdk/src/solaris/native/java/io/UnixFileSystem_md.c
-+++ jdk/src/solaris/native/java/io/UnixFileSystem_md.c
-@@ -41,6 +41,11 @@
- #include "java_io_FileSystem.h"
- #include "java_io_UnixFileSystem.h"
-
-+#if defined(_ALLBSD_SOURCE)
-+#define dirent64 dirent
-+#define readdir64_r readdir_r
-+#define stat64 stat
-+#endif
-
- /* -- Field IDs -- */
-
-@@ -58,7 +63,7 @@
- "path", "Ljava/lang/String;");
- }
-
--
-+#ifndef _ALLBSD_SOURCE
- /* -- Large-file support -- */
-
- /* LINUX_FIXME: ifdef __solaris__ here is wrong. We need to move the
-@@ -98,6 +103,7 @@
- };
-
- #endif /* !_LFS_LARGEFILE */
-+#endif /* !_ALLBSD_SOURCE */
-
- typedef int (*STAT64)(const char *, struct stat64 *);
-
-@@ -107,6 +113,7 @@
- static STAT64 stat64_ptr = NULL;
- #endif
-
-+#ifndef _ALLBSD_SOURCE
- #ifndef __linux__
- #ifdef __GNUC__
- static void init64IO(void) __attribute__((constructor));
-@@ -120,7 +127,7 @@
- stat64_ptr = (STAT64) dlsym(handle, "_stat64");
- dlclose(handle);
- }
--
-+#endif /* !_ALLBSD_SOURCE */
-
- /* -- Path operations -- */
-
-@@ -485,7 +492,7 @@
- #endif
-
- /* Preserve access time */
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- struct stat sb;
-
- if (stat(path, &sb) == 0) {
---- jdk/src/solaris/native/java/io/canonicalize_md.c
-+++ jdk/src/solaris/native/java/io/canonicalize_md.c
-@@ -33,7 +33,9 @@
- #include <sys/stat.h>
- #include <errno.h>
- #include <limits.h>
-+#if !defined(_ALLBSD_SOURCE)
- #include <alloca.h>
-+#endif
-
-
- /* Note: The comments in this file use the terminology
---- jdk/src/solaris/native/java/io/io_util_md.c
-+++ jdk/src/solaris/native/java/io/io_util_md.c
-@@ -36,7 +36,7 @@
- WITH_PLATFORM_STRING(env, path, ps) {
- FD fd;
-
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- /* Remove trailing slashes, since the kernel won't */
- char *p = (char *)ps + strlen(ps) - 1;
- while ((p > ps) && (*p == '/'))
---- jdk/src/solaris/native/java/lang/ProcessEnvironment_md.c
-+++ jdk/src/solaris/native/java/lang/ProcessEnvironment_md.c
-@@ -28,6 +28,11 @@
- #include "jni.h"
- #include "jni_util.h"
-
-+#ifdef __APPLE__
-+#include <crt_externs.h>
-+#define environ (*_NSGetEnviron())
-+#endif
-+
- JNIEXPORT jobjectArray JNICALL
- Java_java_lang_ProcessEnvironment_environ(JNIEnv *env, jclass ign)
- {
-@@ -37,7 +42,9 @@
- * no standard (not even de-facto) header file where the
- * declaration is to be found. See:
- * http://www.opengroup.org/onlinepubs/007908799/xbd/envvar.html */
-+#ifndef __APPLE__
- extern char ** environ; /* environ[i] looks like: VAR=VALUE\0 */
-+#endif
-
- jsize count = 0;
- jsize i, j;
-@@ -46,7 +53,7 @@
-
- for (i = 0; environ[i]; i++) {
- /* Ignore corrupted environment variables */
-- if (strchr(environ[i], '=') != NULL)
-+ if (strchr(environ[i], '=') != NULL && *environ[i] != '=')
- count++;
- }
-
-@@ -56,7 +63,7 @@
- for (i = 0, j = 0; environ[i]; i++) {
- const char * varEnd = strchr(environ[i], '=');
- /* Ignore corrupted environment variables */
-- if (varEnd != NULL) {
-+ if (varEnd != NULL && varEnd != environ[i]) {
- jbyteArray var, val;
- const char * valBeg = varEnd + 1;
- jsize varLength = varEnd - environ[i];
---- jdk/src/solaris/native/java/lang/UNIXProcess_md.c
-+++ jdk/src/solaris/native/java/lang/UNIXProcess_md.c
-@@ -40,7 +40,11 @@
- #include <stdlib.h>
- #include <sys/types.h>
- #include <ctype.h>
-+#ifdef _ALLBSD_SOURCE
-+#include <sys/wait.h>
-+#else
- #include <wait.h>
-+#endif
- #include <signal.h>
- #include <string.h>
- #include <errno.h>
-@@ -118,6 +122,17 @@
- #define START_CHILD_SYSTEM_CALL "fork"
- #endif
-
-+#ifdef __FreeBSD__
-+#include <dlfcn.h>
-+#include <pthread.h>
-+#include <pthread_np.h>
-+#endif
-+
-+#ifdef __APPLE__
-+#include <crt_externs.h>
-+#define environ (*_NSGetEnviron())
-+#endif
-+
- #ifndef STDIN_FILENO
- #define STDIN_FILENO 0
- #endif
-@@ -151,7 +166,9 @@
- * "All identifiers in this volume of IEEE Std 1003.1-2001, except
- * environ, are defined in at least one of the headers" (!)
- */
-+#ifndef __APPLE__
- extern char **environ;
-+#endif
-
-
- static void
-@@ -342,11 +359,89 @@
- }
- }
-
-+#if defined(__FreeBSD__)
-+
-+extern pid_t __sys_fork(void);
-+
-+static pid_t
-+jdk_fork_wrapper()
-+{
-+ pid_t resultPid;
-+ typedef void (*void_func)();
-+ static void_func func_defer = NULL;
-+ static void_func func_undefer = NULL;
-+ static int is_libc_r = -1;
-+
-+ if (is_libc_r == -1) {
-+
-+ /*
-+ * BSDNOTE: Check for loaded symbols.
-+ *
-+ * If "_thread_kern_sig_defer" symbol is found assume we are
-+ * libc_r
-+ *
-+ * If libc_r is loaded, use fork system call drectly to avoid
-+ * problems with using protected pages.
-+ *
-+ * --phantom
-+ */
-+ func_defer =
-+ (void_func)dlsym(RTLD_DEFAULT, "_thread_kern_sig_defer");
-+ func_undefer =
-+ (void_func)dlsym(RTLD_DEFAULT, "_thread_kern_sig_undefer");
-+ if (func_defer != NULL)
-+ is_libc_r = 1;
-+ else {
-+ is_libc_r = 0;
-+ }
-+ }
-+
-+ if (is_libc_r == 0) {
-+ /* Not a libc_r */
-+ resultPid = fork();
-+ } else {
-+ (*func_defer)(); /* call _thread_kern_sig_defer() */
-+ resultPid = __sys_fork();
-+ if (resultPid != 0)
-+ (*func_undefer)(); /* call _thread_kern_sig_undefer() */
-+ /* leave child with signals disabled, but reenable in parent */
-+ }
-+
-+ return resultPid;
-+}
-+#endif /* __FreeBSD__ */
-+
-+#if defined(__OpenBSD__)
-+/*
-+ * Directly call _thread_sys_closefrom() so the child process
-+ * doesn't reset the parrent's file descriptors to be blocking.
-+ * This function is only called from the child process which
-+ * is single threaded and about to call execvp() so it is
-+ * safe to bypass the threaded closefrom().
-+ */
-+int _thread_sys_closefrom(int);
-+
-+static int
-+closeDescriptors(void)
-+{
-+ return _thread_sys_closefrom(FAIL_FILENO + 1);
-+}
-+
-+#else
-+
-+#ifdef _ALLBSD_SOURCE
-+#define FD_DIR "/dev/fd"
-+#else
-+#define dirent dirent64
-+#define readdir readdir64
-+#define FD_DIR "/proc/self/fd"
-+#endif
-+
- static int
- closeDescriptors(void)
- {
- DIR *dp;
-- struct dirent64 *dirp;
-+ struct dirent *dirp;
- int from_fd = FAIL_FILENO + 1;
-
- /* We're trying to close all file descriptors, but opendir() might
-@@ -359,13 +454,13 @@
- close(from_fd); /* for possible use by opendir() */
- close(from_fd + 1); /* another one for good luck */
-
-- if ((dp = opendir("/proc/self/fd")) == NULL)
-+ if ((dp = opendir(FD_DIR)) == NULL)
- return 0;
-
- /* We use readdir64 instead of readdir to work around Solaris bug
- * 6395699: /proc/self/fd fails to report file descriptors >= 1024 on Solaris 9
- */
-- while ((dirp = readdir64(dp)) != NULL) {
-+ while ((dirp = readdir(dp)) != NULL) {
- int fd;
- if (isdigit(dirp->d_name[0]) &&
- (fd = strtol(dirp->d_name, NULL, 10)) >= from_fd + 2)
-@@ -376,6 +471,7 @@
-
- return 1;
- }
-+#endif /* !__OpenBSD__ */
-
- static void
- moveDescriptor(int fd_from, int fd_to)
-@@ -643,6 +739,28 @@
- {
- const ChildStuff* p = (const ChildStuff*) arg;
-
-+#ifdef __OpenBSD__
-+// XXXBSD: Work-around userland pthread implementation issue.
-+// Closing file descriptors will reset them to be blocking.
-+// This is problematic for the parent when it attemts to use
-+// the blocking fd and deadlocks. Setting them to non-blocking
-+// in the child prevents the close/dup2 from resetting them.
-+ {
-+ int flags;
-+ flags = fcntl(STDIN_FILENO, F_GETFL, NULL);
-+ if (flags != -1)
-+ fcntl(STDIN_FILENO, F_SETFL, flags | O_NONBLOCK);
-+
-+ flags = fcntl(STDOUT_FILENO, F_GETFL, NULL);
-+ if (flags != -1)
-+ fcntl(STDOUT_FILENO, F_SETFL, flags | O_NONBLOCK);
-+
-+ flags = fcntl(STDERR_FILENO, F_GETFL, NULL);
-+ if (flags != -1)
-+ fcntl(STDOUT_FILENO, F_SETFL, flags | O_NONBLOCK);
-+ }
-+#endif
-+
- /* Close the parent sides of the pipes.
- Closing pipe fds here is redundant, since closeDescriptors()
- would do it anyways, but a little paranoia is a good thing. */
-@@ -742,7 +860,11 @@
- * replicated in the child process. This is the POSIX-specified
- * behavior for fork().
- */
-+ #if defined(__FreeBSD__)
-+ pid_t resultPid = jdk_fork_wrapper();
-+ #else
- pid_t resultPid = fork();
-+ #endif
- #endif
- if (resultPid == 0)
- childProcess(c);
---- jdk/src/solaris/native/java/lang/java_props_md.c
-+++ jdk/src/solaris/native/java/lang/java_props_md.c
-@@ -23,7 +23,7 @@
- * questions.
- */
-
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- #include <stdio.h>
- #include <ctype.h>
- #endif
-@@ -42,9 +42,17 @@
- #include <time.h>
- #include <errno.h>
-
-+#if defined(_ALLBSD_SOURCE)
-+#if !defined(P_tmpdir)
-+#include <paths.h>
-+#define P_tmpdir _PATH_VARTMP
-+#endif
-+#endif
-+
- #include "locale_str.h"
- #include "java_props.h"
-
-+#if !defined(_ALLBSD_SOURCE)
- #ifdef __linux__
- #define CODESET _NL_CTYPE_CODESET_NAME
- #else
-@@ -52,6 +60,7 @@
- #define CODESET ALT_CODESET_KEY
- #endif
- #endif
-+#endif /* !_ALLBSD_SOURCE */
-
- /* Take an array of string pairs (map of key->value) and a string (key).
- * Examine each pair in the map to see if the first string (key) matches the
-@@ -188,7 +197,12 @@
- {
- char *lc;
- lc = setlocale(LC_CTYPE, "");
--#ifndef __linux__
-+#if defined(_ALLBSD_SOURCE)
-+ if (lc == NULL) {
-+ lc = "C";
-+ }
-+ {
-+#elif !defined(__linux__)
- if (lc == NULL) {
- /*
- * 'lc == null' means system doesn't support user's environment
-@@ -219,7 +233,7 @@
- char *p, encoding_variant[64];
- int i, found;
-
--#ifndef __linux__
-+#if !defined(__linux__) && !defined(_ALLBSD_SOURCE)
- /*
- * Workaround for Solaris bug 4201684: Xlib doesn't like @euro
- * locales. Since we don't depend on the libc @euro behavior,
-@@ -236,6 +250,13 @@
- *p = '\0';
- setlocale(LC_ALL, temp);
- #endif
-+ if (lc == NULL) {
-+ strncpy(temp, "C", sizeof(temp)-1);
-+ temp[sizeof(temp)-1] = '\0';
-+ } else {
-+ strncpy(temp, lc, sizeof(temp)-1);
-+ temp[sizeof(temp)-1] = '\0';
-+ }
-
- strcpy(temp, lc);
-
-@@ -316,6 +337,9 @@
- else
- p = nl_langinfo(CODESET);
-
-+ if (p == NULL || !strcmp(p, "C") || !strcmp(p, "US-ASCII"))
-+ p = ""; // use default
-+
- /* Convert the bare "646" used on Solaris to a proper IANA name */
- if (strcmp(p, "646") == 0)
- p = "ISO646-US";
-@@ -325,6 +349,7 @@
- std_encoding = (*p != '\0') ? p : "ISO8859-1";
-
-
-+#if !defined(_ALLBSD_SOURCE)
- #ifdef __linux__
- /*
- * Remap the encoding string to a different value for japanese
-@@ -355,11 +380,19 @@
- std_encoding = "Big5_Solaris";
- }
- #endif
-+#endif /* !_ALLBSD_SOURCE */
- sprops.encoding = std_encoding;
- sprops.sun_jnu_encoding = sprops.encoding;
- }
- }
-
-+#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
- sprops.unicode_encoding = "UnicodeLittle";
-@@ -369,6 +402,7 @@
- #else
- sprops.unicode_encoding = "UnicodeBig";
- #endif
-+#endif /* _ALLBSD_SOURCE */
-
- /* user properties */
- {
-@@ -405,12 +439,14 @@
- sprops.path_separator = ":";
- sprops.line_separator = "\n";
-
-+#if !defined(_ALLBSD_SOURCE)
- /* Append CDE message and resource search path to NLSPATH and
- * XFILESEARCHPATH, in order to pick localized message for
- * FileSelectionDialog window (Bug 4173641).
- */
- setPathEnvironment("NLSPATH=/usr/dt/lib/nls/msg/%L/%N.cat");
- setPathEnvironment("XFILESEARCHPATH=/usr/dt/app-defaults/%L/Dt");
-+#endif
-
- return &sprops;
- }
---- jdk/src/solaris/native/java/net/Inet4AddressImpl.c
-+++ jdk/src/solaris/native/java/net/Inet4AddressImpl.c
-@@ -35,17 +35,293 @@
- #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
-+
-+#if defined(_ALLBSD_SOURCE) && !defined(HAS_GLIBC_GETHOSTBY_R)
-+/* Use getaddrinfo(3), which is thread safe */
-+/************************************************************************
-+ * Inet4AddressImpl
-+ */
-+
-+/*
-+ * Class: java_net_Inet4AddressImpl
-+ * Method: getLocalHostName
-+ * Signature: ()Ljava/lang/String;
-+ */
-+JNIEXPORT jstring JNICALL
-+Java_java_net_Inet4AddressImpl_getLocalHostName(JNIEnv *env, jobject this) {
-+ char hostname[NI_MAXHOST+1];
-+
-+ hostname[0] = '\0';
-+ if (JVM_GetHostName(hostname, NI_MAXHOST)) {
-+ /* Something went wrong, maybe networking is not setup? */
-+ strcpy(hostname, "localhost");
-+ } else {
-+ struct addrinfo hints, *res;
-+ int error;
-+
-+ memset(&hints, 0, sizeof(hints));
-+ hints.ai_flags = AI_CANONNAME;
-+ hints.ai_family = AF_UNSPEC;
-+
-+ error = getaddrinfo(hostname, NULL, &hints, &res);
-+
-+ if (error == 0) {
-+ /* host is known to name service */
-+ error = getnameinfo(res->ai_addr,
-+ res->ai_addrlen,
-+ hostname,
-+ NI_MAXHOST,
-+ NULL,
-+ 0,
-+ NI_NAMEREQD);
-+
-+ /* if getnameinfo fails hostname is still the value
-+ from gethostname */
-+
-+ freeaddrinfo(res);
-+ }
-+ }
-+ return (*env)->NewStringUTF(env, hostname);
-+}
-+
-+static jclass ni_iacls;
-+static jclass ni_ia4cls;
-+static jmethodID ni_ia4ctrID;
-+static jfieldID ni_iaaddressID;
-+static jfieldID ni_iahostID;
-+static jfieldID ni_iafamilyID;
-+static int initialized = 0;
-+
-+/*
-+ * Find an internet address for a given hostname. Note that this
-+ * code only works for addresses of type INET. The translation
-+ * of %d.%d.%d.%d to an address (int) occurs in java now, so the
-+ * String "host" shouldn't *ever* be a %d.%d.%d.%d string
-+ *
-+ * Class: java_net_Inet4AddressImpl
-+ * Method: lookupAllHostAddr
-+ * Signature: (Ljava/lang/String;)[[B
-+ */
-+
-+JNIEXPORT jobjectArray JNICALL
-+Java_java_net_Inet4AddressImpl_lookupAllHostAddr(JNIEnv *env, jobject this,
-+ jstring host) {
-+ const char *hostname;
-+ jobject name;
-+ jobjectArray ret = 0;
-+ int retLen = 0;
-+
-+ int error=0;
-+ struct addrinfo hints, *res, *resNew = NULL;
-+
-+ if (!initialized) {
-+ ni_iacls = (*env)->FindClass(env, "java/net/InetAddress");
-+ ni_iacls = (*env)->NewGlobalRef(env, ni_iacls);
-+ ni_ia4cls = (*env)->FindClass(env, "java/net/Inet4Address");
-+ ni_ia4cls = (*env)->NewGlobalRef(env, ni_ia4cls);
-+ ni_ia4ctrID = (*env)->GetMethodID(env, ni_ia4cls, "<init>", "()V");
-+ ni_iaaddressID = (*env)->GetFieldID(env, ni_iacls, "address", "I");
-+ ni_iafamilyID = (*env)->GetFieldID(env, ni_iacls, "family", "I");
-+ ni_iahostID = (*env)->GetFieldID(env, ni_iacls, "hostName", "Ljava/lang/String;");
-+ initialized = 1;
-+ }
-+
-+ if (IS_NULL(host)) {
-+ JNU_ThrowNullPointerException(env, "host is null");
-+ return 0;
-+ }
-+ hostname = JNU_GetStringPlatformChars(env, host, JNI_FALSE);
-+ CHECK_NULL_RETURN(hostname, NULL);
-+
-+ memset(&hints, 0, sizeof(hints));
-+ hints.ai_flags = AI_CANONNAME;
-+ hints.ai_family = AF_INET;
-+
-+ /*
-+ * Workaround for Solaris bug 4160367 - if a hostname contains a
-+ * white space then 0.0.0.0 is returned
-+ */
-+ if (isspace(hostname[0])) {
-+ JNU_ThrowByName(env, JNU_JAVANETPKG "UnknownHostException",
-+ (char *)hostname);
-+ JNU_ReleaseStringPlatformChars(env, host, hostname);
-+ return NULL;
-+ }
-+
-+ error = getaddrinfo(hostname, NULL, &hints, &res);
-+
-+ if (error) {
-+ /* report error */
-+ JNU_ThrowByName(env, JNU_JAVANETPKG "UnknownHostException",
-+ (char *)hostname);
-+ JNU_ReleaseStringPlatformChars(env, host, hostname);
-+ return NULL;
-+ } else {
-+ int i = 0;
-+ struct addrinfo *itr, *last, *iterator = res;
-+ while (iterator != NULL) {
-+ int skip = 0;
-+ itr = resNew;
-+
-+ while (itr != NULL) {
-+ struct sockaddr_in *addr1, *addr2;
-+
-+ addr1 = (struct sockaddr_in *)iterator->ai_addr;
-+ addr2 = (struct sockaddr_in *)itr->ai_addr;
-+ if (addr1->sin_addr.s_addr ==
-+ addr2->sin_addr.s_addr) {
-+ skip = 1;
-+ break;
-+ }
-+
-+ itr = itr->ai_next;
-+ }
-+
-+ if (!skip) {
-+ struct addrinfo *next
-+ = (struct addrinfo*) malloc(sizeof(struct addrinfo));
-+ if (!next) {
-+ JNU_ThrowOutOfMemoryError(env, "heap allocation failed");
-+ ret = NULL;
-+ goto cleanupAndReturn;
-+ }
-+ memcpy(next, iterator, sizeof(struct addrinfo));
-+ next->ai_next = NULL;
-+ if (resNew == NULL) {
-+ resNew = next;
-+ } else {
-+ last->ai_next = next;
-+ }
-+ last = next;
-+ i++;
-+ }
-+ iterator = iterator->ai_next;
-+ }
-+
-+ retLen = i;
-+ iterator = resNew;
-+ i = 0;
-+
-+ name = (*env)->NewStringUTF(env, hostname);
-+ if (IS_NULL(name)) {
-+ goto cleanupAndReturn;
-+ }
-+
-+ ret = (*env)->NewObjectArray(env, retLen, ni_iacls, NULL);
-+ if (IS_NULL(ret)) {
-+ /* we may have memory to free at the end of this */
-+ goto cleanupAndReturn;
-+ }
-+
-+ while (iterator != NULL) {
-+ /* We need 4 bytes to store ipv4 address; */
-+ int len = 4;
-+
-+ jobject iaObj = (*env)->NewObject(env, ni_ia4cls, ni_ia4ctrID);
-+ if (IS_NULL(iaObj)) {
-+ /* we may have memory to free at the end of this */
-+ ret = NULL;
-+ goto cleanupAndReturn;
-+ }
-+ (*env)->SetIntField(env, iaObj, ni_iaaddressID,
-+ ntohl(((struct sockaddr_in*)(iterator->ai_addr))->sin_addr.s_addr));
-+ (*env)->SetObjectField(env, iaObj, ni_iahostID, name);
-+ (*env)->SetObjectArrayElement(env, ret, retLen - i -1, iaObj);
-+ i++;
-+ iterator = iterator->ai_next;
-+ }
-+ }
-+
-+cleanupAndReturn:
-+ {
-+ struct addrinfo *iterator, *tmp;
-+ iterator = resNew;
-+ while (iterator != NULL) {
-+ tmp = iterator;
-+ iterator = iterator->ai_next;
-+ free(tmp);
-+ }
-+ JNU_ReleaseStringPlatformChars(env, host, hostname);
-+ }
-+
-+ freeaddrinfo(res);
-+
-+ return ret;
-+
-+}
-+
-+/*
-+ * Class: java_net_Inet4AddressImpl
-+ * Method: getHostByAddr
-+ * Signature: (I)Ljava/lang/String;
-+ */
-+JNIEXPORT jstring JNICALL
-+Java_java_net_Inet4AddressImpl_getHostByAddr(JNIEnv *env, jobject this,
-+ jbyteArray addrArray) {
-+ jstring ret = NULL;
-+
-+ char host[NI_MAXHOST+1];
-+ jfieldID fid;
-+ int error = 0;
-+ jint family;
-+ struct sockaddr *him ;
-+ int len = 0;
-+ jbyte caddr[4];
-+ jint addr;
-+
-+ struct sockaddr_in him4;
-+ struct sockaddr *sa;
-+
-+ /*
-+ * For IPv4 addresses construct a sockaddr_in structure.
-+ */
-+ (*env)->GetByteArrayRegion(env, addrArray, 0, 4, caddr);
-+ addr = ((caddr[0]<<24) & 0xff000000);
-+ addr |= ((caddr[1] <<16) & 0xff0000);
-+ addr |= ((caddr[2] <<8) & 0xff00);
-+ addr |= (caddr[3] & 0xff);
-+ memset((char *) &him4, 0, sizeof(him4));
-+ him4.sin_addr.s_addr = (uint32_t) htonl(addr);
-+ him4.sin_family = AF_INET;
-+ sa = (struct sockaddr *) &him4;
-+ len = sizeof(him4);
-+
-+ error = getnameinfo(sa, len, host, NI_MAXHOST, NULL, 0,
-+ NI_NAMEREQD);
-+
-+ if (!error) {
-+ ret = (*env)->NewStringUTF(env, host);
-+ }
-+
-+ if (ret == NULL) {
-+ JNU_ThrowByName(env, JNU_JAVANETPKG "UnknownHostException", NULL);
-+ }
-+
-+ return ret;
-+
-+}
-+
-+#else /* defined(_ALLBSD_SOURCE) && !defined(HAS_GLIBC_GETHOSTBY_R) */
-+
- /* the initial size of our hostent buffers */
- #define HENT_BUF_SIZE 1024
- #define BIG_HENT_BUF_SIZE 10240 /* a jumbo-sized one */
-
--#ifndef __GLIBC__
-+#if !defined(__GLIBC__) && !defined(_ALLBSD_SOURCE)
- /* gethostname() is in libc.so but I can't find a header file for it */
- extern int gethostname(char *buf, int buf_len);
- #endif
-@@ -85,13 +361,13 @@
- char buf2[HENT_BUF_SIZE];
- int h_error=0;
-
--#ifdef __GLIBC__
-+#ifdef HAS_GLIBC_GETHOSTBY_R
- gethostbyname_r(hostname, &res, buf, sizeof(buf), &hp, &h_error);
- #else
- hp = gethostbyname_r(hostname, &res, buf, sizeof(buf), &h_error);
- #endif
- if (hp) {
--#ifdef __GLIBC__
-+#ifdef HAS_GLIBC_GETHOSTBY_R
- gethostbyaddr_r(hp->h_addr, hp->h_length, AF_INET,
- &res2, buf2, sizeof(buf2), &hp, &h_error);
- #else
-@@ -172,7 +448,7 @@
- }
-
- /* Try once, with our static buffer. */
--#ifdef __GLIBC__
-+#ifdef HAS_GLIBC_GETHOSTBY_R
- gethostbyname_r(hostname, &res, buf, sizeof(buf), &hp, &h_error);
- #else
- hp = gethostbyname_r(hostname, &res, buf, sizeof(buf), &h_error);
-@@ -185,7 +461,7 @@
- */
- if (hp == NULL && errno == ERANGE) {
- if ((tmp = (char*)malloc(BIG_HENT_BUF_SIZE))) {
--#ifdef __GLIBC__
-+#ifdef HAS_GLIBC_GETHOSTBY_R
- gethostbyname_r(hostname, &res, tmp, BIG_HENT_BUF_SIZE,
- &hp, &h_error);
- #else
-@@ -273,7 +549,7 @@
- addr |= ((caddr[2] <<8) & 0xff00);
- addr |= (caddr[3] & 0xff);
- addr = htonl(addr);
--#ifdef __GLIBC__
-+#ifdef HAS_GLIBC_GETHOSTBY_R
- gethostbyaddr_r((char *)&addr, sizeof(addr), AF_INET, &hent,
- buf, sizeof(buf), &hp, &h_error);
- #else
-@@ -287,7 +563,7 @@
- */
- if (hp == NULL && errno == ERANGE) {
- if ((tmp = (char*)malloc(BIG_HENT_BUF_SIZE))) {
--#ifdef __GLIBC__
-+#ifdef HAS_GLIBC_GETHOSTBY_R
- gethostbyaddr_r((char *)&addr, sizeof(addr), AF_INET,
- &hent, tmp, BIG_HENT_BUF_SIZE, &hp, &h_error);
- #else
-@@ -309,6 +585,8 @@
- return ret;
- }
-
-+#endif /* _ALLBSD_SOURCE */
-+
- #define SET_NONBLOCKING(fd) { \
- int flags = fcntl(fd, F_GETFL); \
- flags |= O_NONBLOCK; \
---- jdk/src/solaris/native/java/net/Inet6AddressImpl.c
-+++ jdk/src/solaris/native/java/net/Inet6AddressImpl.c
-@@ -32,6 +32,9 @@
- #include <strings.h>
- #include <stdlib.h>
- #include <ctype.h>
-+#ifdef _ALLBSD_SOURCE
-+#include <unistd.h> /* gethostname */
-+#endif
-
- #include "jvm.h"
- #include "jni_util.h"
-@@ -48,7 +51,7 @@
- #define NI_MAXHOST 1025
- #endif
-
--#ifndef __GLIBC__
-+#if !defined(__GLIBC__) && !defined(_ALLBSD_SOURCE)
- /* gethostname() is in libc.so but I can't find a header file for it */
- extern int gethostname(char *buf, int buf_len);
- #endif
-@@ -71,10 +74,18 @@
- /* Something went wrong, maybe networking is not setup? */
- strcpy(hostname, "localhost");
- } else {
--#ifdef __linux__
-- /* On Linux gethostname() says "host.domain.sun.com". On
-+#if defined(__linux__) && defined(_ALLBSD_SOURCE)
-+ /* On Linux/FreeBSD gethostname() says "host.domain.sun.com". On
- * Solaris gethostname() says "host", so extra work is needed.
- */
-+ /*
-+ * XXXBSD: Though on FreeBSD it's possible case then hostname does
-+ * not contain '.' (depends on previous sethostname() call). Maybe
-+ * we need to proceed with Solaris way, but using getnameinfo()
-+ * in conjunction with gethostby*() breaks thread-safeness, so
-+ * we need to protect all calls to gethostby*() and getnameinfo()
-+ * using same mutex.
-+ */
- #else
- /* Solaris doesn't want to give us a fully qualified domain name.
- * We do a reverse lookup to try and get one. This works
-@@ -110,7 +121,7 @@
- }
- }
- #endif /* AF_INET6 */
--#endif /* __linux__ */
-+#endif /* __linux__ || _ALLBSD_SOURCE */
- }
- return (*env)->NewStringUTF(env, hostname);
- }
---- jdk/src/solaris/native/java/net/NetworkInterface.c
-+++ jdk/src/solaris/native/java/net/NetworkInterface.c
-@@ -24,13 +24,13 @@
- */
-
-
-+#include <sys/types.h>
-+#include <sys/socket.h>
- #include <errno.h>
- #include <strings.h>
- #include <netinet/in.h>
- #include <stdlib.h>
- #include <string.h>
--#include <sys/types.h>
--#include <sys/socket.h>
- #include <arpa/inet.h>
- #include <net/if.h>
- #include <net/if_arp.h>
-@@ -41,6 +41,19 @@
- #include <stropts.h>
- #include <sys/sockio.h>
- #endif
-+#ifdef _ALLBSD_SOURCE
-+#include <sys/param.h>
-+#include <sys/ioctl.h>
-+#if defined(__FreeBSD__) || defined(__APPLE__)
-+#include <net/ethernet.h>
-+#include <net/if_var.h>
-+#elif defined(__OpenBSD__)
-+#include <netinet/if_ether.h>
-+#endif
-+#include <net/if_dl.h>
-+#include <netinet/in_var.h>
-+#include <ifaddrs.h>
-+#endif
-
- #ifdef __linux__
- #include <sys/ioctl.h>
-@@ -133,8 +146,9 @@
-
-
-
--#ifdef __solaris__
-+#if defined(_ALLBSD_SOURCE) || defined(__solaris__)
- static netif *enumIPvXInterfaces(JNIEnv *env, int sock, netif *ifs, int family);
-+#ifdef __solaris__
- static int getMacFromDevice(JNIEnv *env, const char* ifname, unsigned char* retbuf);
-
- #ifndef SIOCGLIFHWADDR
-@@ -142,6 +156,7 @@
- #endif
-
- #endif
-+#endif
-
- /******************* Java entry points *****************************/
-
-@@ -995,6 +1010,240 @@
- }
-
-
-+/** BSD **/
-+#ifdef _ALLBSD_SOURCE
-+/* Open socket for further ioct calls, try v4 socket first and
-+ * if it falls return v6 socket
-+ */
-+
-+#ifdef AF_INET6
-+// unused arg ifname and struct if2
-+static int openSocketWithFallback(JNIEnv *env, const char *ifname){
-+ int sock;
-+ struct ifreq if2;
-+
-+ if ((sock = JVM_Socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
-+ if (errno == EPROTONOSUPPORT){
-+ if ( (sock = JVM_Socket(AF_INET6, SOCK_DGRAM, 0)) < 0 ){
-+ NET_ThrowByNameWithLastError(env , JNU_JAVANETPKG "SocketException", "IPV6 Socket creation failed");
-+ return -1;
-+ }
-+ }
-+ else{ // errno is not NOSUPPORT
-+ NET_ThrowByNameWithLastError(env , JNU_JAVANETPKG "SocketException", "IPV4 Socket creation failed");
-+ return -1;
-+ }
-+ }
-+
-+ return sock;
-+}
-+
-+#else
-+static int openSocketWithFallback(JNIEnv *env, const char *ifname){
-+ return openSocket(env, AF_INET);
-+}
-+#endif
-+
-+static netif *enumIPv4Interfaces(JNIEnv *env, int sock, netif *ifs) {
-+ return enumIPvXInterfaces(env, sock, ifs, AF_INET);
-+}
-+
-+#ifdef AF_INET6
-+static netif *enumIPv6Interfaces(JNIEnv *env, int sock, netif *ifs) {
-+ return enumIPvXInterfaces(env, sock, ifs, AF_INET6);
-+}
-+#endif
-+
-+/*
-+ Enumerates and returns all interfaces on BSD
-+ use the same code for IPv4 and IPv6
-+ */
-+static netif *enumIPvXInterfaces(JNIEnv *env, int sock, netif *ifs, int family) {
-+ struct ifaddrs *ifa0, *ifa;
-+
-+ /*
-+ * Grab the interface list
-+ */
-+ if (getifaddrs(&ifa0) < 0) {
-+ return NULL;
-+ }
-+
-+ /*
-+ * Iterate through each interface
-+ */
-+ for (ifa = ifa0; ifa != NULL; ifa = ifa->ifa_next) {
-+ if (ifa->ifa_addr->sa_family == family) {
-+ /*
-+ * Add to the list
-+ */
-+ ifs = addif(env, sock, ifa->ifa_name, ifs, ifa->ifa_addr, family, 0);
-+
-+ /*
-+ * If an exception occurred then free the list
-+ */
-+ if ((*env)->ExceptionOccurred(env)) {
-+ freeif(ifs);
-+ ifs = NULL;
-+ break;
-+ }
-+ }
-+ }
-+ freeifaddrs(ifa0);
-+
-+ return ifs;
-+}
-+
-+static int getIndex(int sock, const char *name){
-+ /*
-+ * Try to get the interface index
-+ */
-+ struct ifreq if2;
-+ strcpy(if2.ifr_name, name);
-+
-+ if (ioctl(sock, SIOCGIFINDEX, (char *)&if2) < 0) {
-+ return -1;
-+ }
-+
-+ return if2.ifr_index;
-+}
-+
-+/**
-+ * Returns the IPv4 broadcast address of a named interface, if it exists.
-+ * Returns 0 if it doesn't have one.
-+ */
-+static struct sockaddr *getBroadcast(JNIEnv *env, int sock, const char *ifname, struct sockaddr *brdcast_store) {
-+ struct sockaddr *ret = NULL;
-+ struct ifreq if2;
-+
-+ memset((char *) &if2, 0, sizeof(if2));
-+ strcpy(if2.ifr_name, ifname);
-+
-+ /* Let's make sure the interface does have a broadcast address */
-+ if (ioctl(sock, SIOCGIFFLAGS, (char *)&if2) < 0) {
-+ NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", "IOCTL SIOCGIFFLAGS failed");
-+ return ret;
-+ }
-+
-+ if (if2.ifr_flags & IFF_BROADCAST) {
-+ /* It does, let's retrieve it*/
-+ if (ioctl(sock, SIOCGIFBRDADDR, (char *)&if2) < 0) {
-+ NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", "IOCTL SIOCGIFBRDADDR failed");
-+ return ret;
-+ }
-+
-+ ret = brdcast_store;
-+ memcpy(ret, &if2.ifr_broadaddr, sizeof(struct sockaddr));
-+ }
-+
-+ return ret;
-+}
-+
-+/**
-+ * Returns the IPv4 subnet prefix length (aka subnet mask) for the named
-+ * interface, if it has one, otherwise return -1.
-+ */
-+static short getSubnet(JNIEnv *env, int sock, const char *ifname) {
-+ unsigned int mask;
-+ short ret;
-+ struct ifreq if2;
-+
-+ memset((char *) &if2, 0, sizeof(if2));
-+ strcpy(if2.ifr_name, ifname);
-+
-+ if (ioctl(sock, SIOCGIFNETMASK, (char *)&if2) < 0) {
-+ NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", "IOCTL SIOCGIFNETMASK failed");
-+ return -1;
-+ }
-+
-+ mask = ntohl(((struct sockaddr_in*)&(if2.ifr_addr))->sin_addr.s_addr);
-+ ret = 0;
-+ while (mask) {
-+ mask <<= 1;
-+ ret++;
-+ }
-+
-+ return ret;
-+}
-+
-+/**
-+ * Get the Hardware address (usually MAC address) for the named interface.
-+ * return puts the data in buf, and returns the length, in byte, of the
-+ * MAC address. Returns -1 if there is no hardware address on that interface.
-+ */
-+static int getMacAddress(JNIEnv *env, int sock, const char* ifname, const struct in_addr* addr, unsigned char *buf) {
-+ struct ifaddrs *ifa0, *ifa;
-+ struct sockaddr *saddr;
-+ struct sockaddr_dl *sadl;
-+ int ret = -1;
-+
-+ /*
-+ * Grab the interface list
-+ */
-+ if (getifaddrs(&ifa0) < 0) {
-+ return ret;
-+ }
-+
-+ /*
-+ * Iterate through each interface
-+ */
-+ for (ifa = ifa0; ifa != NULL; ifa = ifa->ifa_next) {
-+ saddr = ifa->ifa_addr;
-+
-+ /* Link layer contains the MAC address */
-+ if (saddr->sa_family == AF_LINK && strcmp(ifname, ifa->ifa_name) == 0) {
-+ sadl = (struct sockaddr_dl *)saddr;
-+
-+ /* Check the address is the correct length */
-+ if (sadl->sdl_alen == ETHER_ADDR_LEN) {
-+ memcpy(buf, (sadl->sdl_data + sadl->sdl_nlen), ETHER_ADDR_LEN);
-+ ret = ETHER_ADDR_LEN;
-+ break;
-+ }
-+ }
-+ }
-+ freeifaddrs(ifa0);
-+
-+ return ret;
-+}
-+
-+static int getMTU(JNIEnv *env, int sock, const char *ifname) {
-+ struct ifreq if2;
-+ memset((char *) &if2, 0, sizeof(if2));
-+
-+ if (ifname != NULL) {
-+ strcpy(if2.ifr_name, ifname);
-+ } else {
-+ JNU_ThrowNullPointerException(env, "network interface name is NULL");
-+ return -1;
-+ }
-+
-+ if (ioctl(sock, SIOCGIFMTU, (char *)&if2) < 0) {
-+ NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", "IOCTL SIOCGIFMTU failed");
-+ return -1;
-+ }
-+
-+ return if2.ifr_mtu;
-+}
-+
-+static int getFlags(int sock, const char *ifname) {
-+ struct ifreq if2;
-+ int flags;
-+
-+ memset((char *) &if2, 0, sizeof(if2));
-+ strcpy(if2.ifr_name, ifname);
-+
-+ if (ioctl(sock, SIOCGIFFLAGS, (char *)&if2) < 0) {
-+ return -1;
-+ }
-+
-+ flags = if2.ifr_flags & 0xffff;
-+ flags |= if2.ifr_flagshigh << 16;
-+
-+ return flags;
-+}
-+
-+#endif
-+
- /** Linux **/
- #ifdef __linux__
- /* Open socket for further ioct calls, try v4 socket first and
---- jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c
-+++ jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c
-@@ -23,12 +23,12 @@
- * questions.
- */
-
-+#include <sys/types.h>
-+#include <sys/socket.h>
- #include <errno.h>
- #include <netinet/in.h>
- #include <stdlib.h>
- #include <string.h>
--#include <sys/types.h>
--#include <sys/socket.h>
-
- #ifdef __solaris__
- #include <fcntl.h>
-@@ -331,7 +331,7 @@
- /* The fdObj'fd */
- jint fd;
-
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- SOCKADDR addr;
- int len;
- #endif
-@@ -341,26 +341,39 @@
- }
- fd = (*env)->GetIntField(env, fdObj, IO_fd_fdID);
-
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- #ifdef __linux__
- if (isOldKernel) {
- int t = 1;
- setsockopt(fd, SOL_SOCKET, SO_BSDCOMPAT, (char*) &t, sizeof(int));
- } else {
-+#endif /* __linux__ */
- memset(&addr, 0, sizeof(addr));
- #ifdef AF_INET6
- if (ipv6_available()) {
- struct sockaddr_in6 *him6 = (struct sockaddr_in6 *)&addr;
-+#ifdef __FreeBSD__
-+ him6->sin6_family = AF_INET6;
-+#else
- him6->sin6_family = AF_UNSPEC;
-+#endif
- len = sizeof(struct sockaddr_in6);
- } else
- #endif
- {
- struct sockaddr_in *him4 = (struct sockaddr_in*)&addr;
-+#ifdef __FreeBSD__
-+ him4->sin_family = AF_INET;
-+#else
- him4->sin_family = AF_UNSPEC;
-+#endif
- len = sizeof(struct sockaddr_in);
- }
- JVM_Connect(fd, (struct sockaddr *)&addr, len);
-+ /* XXXBSD: here we can get EADDRNOTAVAIL which need to be ignored
-+ but since return value is not checked, ignore it */
-
-+#ifdef __linux__
- // After disconnecting a UDP socket, Linux kernel will set
- // local port to zero if the port number comes from implicit
- // bind. Successive send/recv on the same socket will fail.
-@@ -383,6 +396,7 @@
- NET_Bind(fd, (struct sockaddr *)&addr, len);
- }
- }
-+#endif
- #else
- JVM_Connect(fd, 0, 0);
- #endif
-@@ -1293,7 +1307,7 @@
- /*
- * value is an InetAddress.
- */
--#ifdef __solaris__
-+#if defined(__solaris__) || defined(_ALLBSD_SOURCE)
- if (ipv6_available()) {
- mcast_set_if_by_addr_v6(env, this, fd, value);
- } else {
-@@ -1312,7 +1326,7 @@
- /*
- * value is a NetworkInterface.
- */
--#ifdef __solaris__
-+#if defined(__solaris__) || defined(_ALLBSD_SOURCE)
- if (ipv6_available()) {
- mcast_set_if_by_if_v6(env, this, fd, value);
- } else {
-@@ -1389,7 +1403,7 @@
- */
- static void setMulticastLoopbackMode(JNIEnv *env, jobject this, int fd,
- jint opt, jobject value) {
--#ifdef __solaris__
-+#if defined(__solaris__) || defined(_ALLBSD_SOURCE)
- if (ipv6_available()) {
- mcast_set_loop_v6(env, this, fd, value);
- } else {
-@@ -1969,7 +1983,7 @@
- fd = (*env)->GetIntField(env, fdObj, IO_fd_fdID);
- }
- /* setsockopt to be correct ttl */
--#ifdef __solaris__
-+#if defined(__solaris__) || defined(_ALLBSD_SOURCE)
- if (ipv6_available()) {
- setHopLimit(env, fd, ttl);
- } else {
-@@ -2361,18 +2375,30 @@
- mname6.ipv6mr_interface = idx;
- }
-
-+#if defined(_ALLBSD_SOURCE)
-+#define ADD_MEMBERSHIP IPV6_JOIN_GROUP
-+#define DRP_MEMBERSHIP IPV6_LEAVE_GROUP
-+#define S_ADD_MEMBERSHIP "IPV6_JOIN_GROUP"
-+#define S_DRP_MEMBERSHIP "IPV6_LEAVE_GROUP"
-+#else
-+#define ADD_MEMBERSHIP IPV6_ADD_MEMBERSHIP
-+#define DRP_MEMBERSHIP IPV6_DROP_MEMBERSHIP
-+#define S_ADD_MEMBERSHIP "IPV6_ADD_MEMBERSHIP"
-+#define S_DRP_MEMBERSHIP "IPV6_DROP_MEMBERSHIP"
-+#endif
-+
- /* Join the multicast group */
-- if (JVM_SetSockOpt(fd, IPPROTO_IPV6, (join ? IPV6_ADD_MEMBERSHIP : IPV6_DROP_MEMBERSHIP),
-+ if (JVM_SetSockOpt(fd, IPPROTO_IPV6, (join ? ADD_MEMBERSHIP : DRP_MEMBERSHIP),
- (char *) &mname6, sizeof (mname6)) < 0) {
-
- if (join) {
-- NET_ThrowCurrent(env, "setsockopt IPV6_ADD_MEMBERSHIP failed");
-+ NET_ThrowCurrent(env, "setsockopt " S_ADD_MEMBERSHIP " failed");
- } else {
- if (errno == ENOENT) {
- JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException",
- "Not a member of the multicast group");
- } else {
-- NET_ThrowCurrent(env, "setsockopt IPV6_DROP_MEMBERSHIP failed");
-+ NET_ThrowCurrent(env, "setsockopt " S_DRP_MEMBERSHIP " failed");
- }
- }
- }
---- jdk/src/solaris/native/java/net/PlainSocketImpl.c
-+++ jdk/src/solaris/native/java/net/PlainSocketImpl.c
-@@ -279,10 +279,21 @@
- */
- NET_ThrowNew(env, errno, "can't create socket");
- return;
-- } else {
-- (*env)->SetIntField(env, fdObj, IO_fd_fdID, fd);
- }
-
-+#ifdef AF_INET6
-+ /* Disable IPV6_V6ONLY to ensure dual-socket support */
-+ if (ipv6_available()) {
-+ int arg = 0;
-+ if (setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, (char*)&arg,
-+ sizeof(int)) < 0) {
-+ NET_ThrowNew(env, errno, "cannot set IPPROTO_IPV6");
-+ close(fd);
-+ return;
-+ }
-+ }
-+#endif /* AF_INET6 */
-+
- /*
- * If this is a server socket then enable SO_REUSEADDR
- * automatically and set to non blocking.
-@@ -291,9 +302,15 @@
- if (ssObj != NULL) {
- int arg = 1;
- SET_NONBLOCKING(fd);
-- JVM_SetSockOpt(fd, SOL_SOCKET, SO_REUSEADDR, (char*)&arg,
-- sizeof(arg));
-+ if (JVM_SetSockOpt(fd, SOL_SOCKET, SO_REUSEADDR, (char*)&arg,
-+ sizeof(arg)) < 0) {
-+ NET_ThrowNew(env, errno, "cannot set SO_REUSEADDR");
-+ close(fd);
-+ return;
-+ }
- }
-+
-+ (*env)->SetIntField(env, fdObj, IO_fd_fdID, fd);
- }
-
- /*
-@@ -525,9 +542,11 @@
- if (connect_rv == JVM_IO_INTR) {
- JNU_ThrowByName(env, JNU_JAVAIOPKG "InterruptedIOException",
- "operation interrupted");
-+#if defined(EPROTO)
- } else if (errno == EPROTO) {
- NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "ProtocolException",
- "Protocol error");
-+#endif
- } else if (errno == ECONNREFUSED) {
- NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "ConnectException",
- "Connection refused");
---- jdk/src/solaris/native/java/net/bsd_close.c
-+++ jdk/src/solaris/native/java/net/bsd_close.c
-@@ -57,7 +57,7 @@
- /*
- * Signal to unblock thread
- */
--static int sigWakeup = (__SIGRTMAX - 2);
-+static int sigWakeup = SIGIO;
-
- /*
- * The fd table and the number of file descriptors
-@@ -281,9 +281,7 @@
-
- int NET_RecvFrom(int s, void *buf, int len, unsigned int flags,
- struct sockaddr *from, int *fromlen) {
-- socklen_t socklen = *fromlen;
-- BLOCKING_IO_RETURN_INT( s, recvfrom(s, buf, len, flags, from, &socklen) );
-- *fromlen = socklen;
-+ BLOCKING_IO_RETURN_INT( s, recvfrom(s, buf, len, flags, from, (socklen_t *)fromlen) );
- }
-
- int NET_Send(int s, void *msg, int len, unsigned int flags) {
-@@ -300,9 +298,7 @@
- }
-
- int NET_Accept(int s, struct sockaddr *addr, int *addrlen) {
-- socklen_t socklen = *addrlen;
-- BLOCKING_IO_RETURN_INT( s, accept(s, addr, &socklen) );
-- *addrlen = socklen;
-+ BLOCKING_IO_RETURN_INT( s, accept(s, addr, (socklen_t *)addrlen) );
- }
-
- int NET_Connect(int s, struct sockaddr *addr, int addrlen) {
---- jdk/src/solaris/native/java/net/net_util_md.c
-+++ jdk/src/solaris/native/java/net/net_util_md.c
-@@ -34,6 +34,15 @@
- #include <stdlib.h>
- #include <dlfcn.h>
-
-+#ifdef _ALLBSD_SOURCE
-+#include <sys/param.h>
-+#include <sys/sysctl.h>
-+#endif
-+
-+#ifdef __OpenBSD__
-+#include <sys/socketvar.h>
-+#endif
-+
- #ifdef __solaris__
- #include <sys/sockio.h>
- #include <stropts.h>
-@@ -220,6 +229,14 @@
- return (*env)->GetFieldID(env, cls, "fd", "I");
- }
-
-+#if defined(DONT_ENABLE_IPV6)
-+jint IPv6_supported()
-+{
-+ return JNI_FALSE;
-+}
-+
-+#else /* !DONT_ENABLE_IPV6 */
-+
- jint IPv6_supported()
- {
- #ifndef AF_INET6
-@@ -356,6 +373,7 @@
- close(fd);
- return JNI_TRUE;
- }
-+#endif /* DONT_ENABLE_IPV6 */
-
- void
- NET_AllocSockaddr(struct sockaddr **him, int *len) {
-@@ -707,6 +725,10 @@
- him6->sin6_family = AF_INET6;
- *len = sizeof(struct sockaddr_in6) ;
-
-+#if defined(_ALLBSD_SOURCE) && defined(_AF_INET6)
-+// XXXBSD: should we do something with scope id here ? see below linux comment
-+#endif
-+
- /*
- * On Linux if we are connecting to a link-local address
- * we need to specify the interface in the scope_id (2.4 kernel only)
-@@ -1160,6 +1182,24 @@
- #define IPTOS_PREC_MASK 0xe0
- #endif
-
-+#if defined(_ALLBSD_SOURCE)
-+#if defined(KIPC_MAXSOCKBUF)
-+ int mib[3];
-+ size_t rlen;
-+#endif
-+
-+ int *bufsize;
-+
-+#ifdef __APPLE__
-+ static int maxsockbuf = -1;
-+#else
-+ static long maxsockbuf = -1;
-+#endif
-+
-+ int addopt;
-+ struct linger *ling;
-+#endif
-+
- /*
- * IPPROTO/IP_TOS :-
- * 1. IPv6 on Solaris: no-op and will be set in flowinfo
-@@ -1192,6 +1232,10 @@
- *iptos &= (IPTOS_TOS_MASK | IPTOS_PREC_MASK);
- }
-
-+#if defined(AF_INET6) && defined(_ALLBSD_SOURCE)
-+// XXXBSD: to be implemented ?
-+#endif
-+
- /*
- * SOL_SOCKET/{SO_SNDBUF,SO_RCVBUF} - On Solaris need to
- * ensure that value is <= max_buf as otherwise we get
-@@ -1239,6 +1283,84 @@
- }
- #endif
-
-+#if defined(_ALLBSD_SOURCE)
-+ /*
-+ * SOL_SOCKET/{SO_SNDBUF,SO_RCVBUF} - On FreeBSD need to
-+ * ensure that value is <= kern.ipc.maxsockbuf as otherwise we get
-+ * an ENOBUFS error.
-+ */
-+ if (level == SOL_SOCKET) {
-+ if (opt == SO_SNDBUF || opt == SO_RCVBUF) {
-+#ifdef KIPC_MAXSOCKBUF
-+ if (maxsockbuf == -1) {
-+ mib[0] = CTL_KERN;
-+ mib[1] = KERN_IPC;
-+ mib[2] = KIPC_MAXSOCKBUF;
-+ rlen = sizeof(maxsockbuf);
-+ if (sysctl(mib, 3, &maxsockbuf, &rlen, NULL, 0) == -1)
-+ maxsockbuf = 1024;
-+
-+#if 1
-+ /* XXXBSD: This is a hack to workaround mb_max/mb_max_adj
-+ problem. It should be removed when kern.ipc.maxsockbuf
-+ will be real value. */
-+ maxsockbuf = (maxsockbuf/5)*4;
-+#endif
-+ }
-+#elif defined(__OpenBSD__)
-+ maxsockbuf = SB_MAX;
-+#else
-+ maxsockbuf = 64 * 1024; /* XXX: NetBSD */
-+#endif
-+
-+ bufsize = (int *)arg;
-+ if (*bufsize > maxsockbuf) {
-+ *bufsize = maxsockbuf;
-+ }
-+
-+ if (opt == SO_RCVBUF && *bufsize < 1024) {
-+ *bufsize = 1024;
-+ }
-+
-+ }
-+ }
-+
-+ /*
-+ * On Solaris, SO_REUSEADDR will allow multiple datagram
-+ * sockets to bind to the same port. The network jck tests
-+ * for this "feature", so we need to emulate it by turning on
-+ * SO_REUSEPORT as well for that combination.
-+ */
-+ if (level == SOL_SOCKET && opt == SO_REUSEADDR) {
-+ int sotype;
-+ socklen_t arglen;
-+
-+ arglen = sizeof(sotype);
-+ if (getsockopt(fd, SOL_SOCKET, SO_TYPE, (void *)&sotype, &arglen) < 0) {
-+ return -1;
-+ }
-+
-+ if (sotype == SOCK_DGRAM) {
-+ addopt = SO_REUSEPORT;
-+ setsockopt(fd, level, addopt, arg, len);
-+ }
-+ }
-+
-+ /*
-+ * Don't allow SO_LINGER value to be too big.
-+ * Current max value (240) is empiric value based on tcp_timer.h's
-+ * constant TCP_LINGERTIME, which was doubled.
-+ *
-+ * XXXBSD: maybe we should step it down to 120 ?
-+ */
-+ if (level == SOL_SOCKET && opt == SO_LINGER) {
-+ ling = (struct linger *)arg;
-+ if (ling->l_linger > 240 || ling->l_linger < 0) {
-+ ling->l_linger = 240;
-+ }
-+ }
-+#endif
-+
- return setsockopt(fd, level, opt, arg, len);
- }
-
---- jdk/src/solaris/native/java/net/net_util_md.h
-+++ jdk/src/solaris/native/java/net/net_util_md.h
-@@ -37,7 +37,7 @@
- #endif
-
-
--#ifdef __linux__
-+#if defined(__linux__) || defined(__FreeBSD__)
- extern int NET_Timeout(int s, long timeout);
- extern int NET_Read(int s, void* buf, size_t len);
- extern int NET_RecvFrom(int s, void *buf, int len, unsigned int flags,
---- jdk/src/solaris/native/java/nio/MappedByteBuffer.c
-+++ jdk/src/solaris/native/java/nio/MappedByteBuffer.c
-@@ -38,7 +38,11 @@
- jlong address, jlong len)
- {
- jboolean loaded = JNI_TRUE;
-+#if defined(_ALLBSD_SOURCE)
-+ jint pageSize = getpagesize();
-+#else
- jint pageSize = sysconf(_SC_PAGESIZE);
-+#endif
- jint numPages = (len + pageSize - 1) / pageSize;
- int result = 0;
- int i = 0;
-@@ -96,7 +100,11 @@
- Java_java_nio_MappedByteBuffer_force0(JNIEnv *env, jobject obj, jlong address,
- jlong len)
- {
-+#if defined(_ALLBSD_SOURCE)
-+ jlong pageSize = getpagesize();
-+#else
- jlong pageSize = sysconf(_SC_PAGESIZE);
-+#endif
- unsigned long lAddress = address;
-
- jlong offset = lAddress % pageSize;
---- jdk/src/solaris/native/java/util/FileSystemPreferences.c
-+++ jdk/src/solaris/native/java/util/FileSystemPreferences.c
-@@ -49,8 +49,11 @@
- return (jint) result;
- }
-
--
-+#if defined(_ALLBSD_SOURCE)
-+typedef struct flock FLOCK;
-+#else
- typedef struct flock64 FLOCK;
-+#endif
-
- /**
- * Try to open a named lock file.
-@@ -91,7 +94,11 @@
- if (fd < 0) {
- result[0] = 0;
- } else {
-+#if defined(_ALLBSD_SOURCE)
-+ rc = fcntl(fd, F_SETLK, &fl);
-+#else
- rc = fcntl(fd, F_SETLK64, &fl);
-+#endif
- result[1] = errno;
- if (rc < 0) {
- result[0]= 0;
-@@ -122,7 +129,11 @@
- fl.l_start = 0;
- fl.l_type = F_UNLCK;
-
-+#if defined(_ALLBSD_SOURCE)
-+ rc = fcntl(fd, F_SETLK, &fl);
-+#else
- rc = fcntl(fd, F_SETLK64, &fl);
-+#endif
-
- if (rc < 0) {
- close(fd);
---- jdk/src/solaris/native/java/util/TimeZone_md.c
-+++ jdk/src/solaris/native/java/util/TimeZone_md.c
-@@ -31,7 +31,7 @@
- #include <errno.h>
- #include <stddef.h>
-
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- #include <string.h>
- #include <dirent.h>
- #include <sys/stat.h>
-@@ -49,9 +49,13 @@
- #define fileclose fclose
- #endif
-
--#ifdef __linux__
-+#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";
-
-@@ -199,7 +203,9 @@
- int fd;
- char *buf;
- size_t size;
-+ char zoneinfo_file[PATH_MAX+1];
-
-+#if defined(__linux__) || defined(__FreeBSD__)
- /*
- * Try reading the /etc/timezone file for Debian distros. There's
- * no spec of the file format available. This parsing assumes that
-@@ -223,6 +229,7 @@
- return tz;
- }
- }
-+#endif /* __linux__ || __FreeBSD__ */
-
- /*
- * Next, try /etc/localtime to find the zone ID.
-@@ -231,6 +238,9 @@
- return NULL;
- }
-
-+ strlcpy(zoneinfo_file, DEFAULT_ZONEINFO_FILE, PATH_MAX+1);
-+
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- /*
- * If it's a symlink, get the link name and its zone ID part. (The
- * older versions of timeconfig created a symlink as described in
-@@ -239,21 +249,25 @@
- * from /etc/localtime.)
- */
- if (S_ISLNK(statbuf.st_mode)) {
-- char linkbuf[PATH_MAX+1];
- int len;
-
-- if ((len = readlink(DEFAULT_ZONEINFO_FILE, linkbuf, sizeof(linkbuf)-1)) == -1) {
-+ if ((len = readlink(DEFAULT_ZONEINFO_FILE, zoneinfo_file, sizeof(zoneinfo_file)-1)) == -1) {
- jio_fprintf(stderr, (const char *) "can't get a symlink of %s\n",
- DEFAULT_ZONEINFO_FILE);
- return NULL;
- }
-- linkbuf[len] = '\0';
-- tz = getZoneName(linkbuf);
-+ zoneinfo_file[len] = '\0';
-+ tz = getZoneName(zoneinfo_file);
- if (tz != NULL) {
- tz = strdup(tz);
-+ return tz;
-+ } else {
-+ if (lstat(zoneinfo_file, &statbuf) == -1) {
-+ return NULL;
-+ }
- }
-- return tz;
- }
-+#endif /* __linux__ || _ALLBSD_SOURCE */
-
- /*
- * If it's a regular file, we need to find out the same zoneinfo file
-@@ -264,7 +278,7 @@
- if (buf == NULL) {
- return NULL;
- }
-- if ((fd = open(DEFAULT_ZONEINFO_FILE, O_RDONLY)) == -1) {
-+ if ((fd = open(zoneinfo_file, O_RDONLY)) == -1) {
- free((void *) buf);
- return NULL;
- }
-@@ -493,7 +507,7 @@
-
- tz = getenv("TZ");
-
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- if (tz == NULL) {
- #else
- #ifdef __solaris__
-@@ -532,19 +546,32 @@
- {
- time_t offset;
- char sign, buf[16];
-+#if defined(_ALLBSD_SOURCE)
-+ struct tm *local_tm;
-+ time_t clock;
-+
-+ clock = time(NULL);
-+ tzset();
-+ local_tm = localtime(&clock);
-+ if (local_tm->tm_gmtoff >= 0) {
-+ offset = (time_t) local_tm->tm_gmtoff;
-+ sign = '+';
-+ } else {
-+ offset = (time_t) -local_tm->tm_gmtoff;
-+ sign = '-';
-+ }
-+#else
-
- if (timezone == 0) {
- return strdup("GMT");
-- }
--
-- /* Note that the time offset direction is opposite. */
-- if (timezone > 0) {
-+ } else if (timezone > 0) {
- offset = timezone;
- sign = '-';
- } else {
- offset = -timezone;
- sign = '+';
- }
-+#endif
- sprintf(buf, (const char *)"GMT%c%02d:%02d",
- sign, (int)(offset/3600), (int)((offset%3600)/60));
- return strdup(buf);
---- jdk/src/solaris/native/sun/awt/CUPSfuncs.c
-+++ jdk/src/solaris/native/sun/awt/CUPSfuncs.c
-@@ -25,6 +25,7 @@
-
- #include <jni.h>
- #include <jni_util.h>
-+#include <jvm_md.h>
- #include <dlfcn.h>
- #include <cups/cups.h>
- #include <cups/ppd.h>
-@@ -65,10 +66,11 @@
- JNIEXPORT jboolean JNICALL
- Java_sun_print_CUPSPrinter_initIDs(JNIEnv *env,
- jobject printObj) {
-- void *handle = dlopen("libcups.so.2", RTLD_LAZY | RTLD_GLOBAL);
-+ void *handle = dlopen(VERSIONED_JNI_LIB_NAME("cups", "2"),
-+ RTLD_LAZY | RTLD_GLOBAL);
-
- if (handle == NULL) {
-- handle = dlopen("libcups.so", RTLD_LAZY | RTLD_GLOBAL);
-+ handle = dlopen(JNI_LIB_NAME("cups"), RTLD_LAZY | RTLD_GLOBAL);
- if (handle == NULL) {
- return JNI_FALSE;
- }
---- jdk/src/solaris/native/sun/awt/VDrawingArea.c
-+++ jdk/src/solaris/native/sun/awt/VDrawingArea.c
-@@ -31,7 +31,11 @@
- #endif /* !HEADLESS */
-
- #include <stdio.h>
-+#if defined(_ALLBSD_SOURCE)
-+#include <stdlib.h>
-+#else
- #include <malloc.h>
-+#endif
-
- #ifdef __linux__
- /* XXX: Shouldn't be necessary. */
---- jdk/src/solaris/native/sun/awt/X11Color.c
-+++ jdk/src/solaris/native/sun/awt/X11Color.c
-@@ -33,7 +33,9 @@
- #include <math.h>
- #include <sys/time.h>
- #include <sys/resource.h>
-+#if !defined(_ALLBSD_SOURCE)
- #include <alloca.h>
-+#endif
- #ifndef HEADLESS
- #include <X11/Xlib.h>
- #include <X11/Xatom.h>
---- jdk/src/solaris/native/sun/awt/XDrawingArea.c
-+++ jdk/src/solaris/native/sun/awt/XDrawingArea.c
-@@ -30,7 +30,11 @@
- #include <Xm/XmP.h>
-
- #include <stdio.h>
-+#if defined(_ALLBSD_SOURCE)
-+#include <stdlib.h>
-+#else
- #include <malloc.h>
-+#endif
-
- #ifdef DEBUG
- #include <jvm.h> /* To get jio_fprintf() */
---- jdk/src/solaris/native/sun/awt/awt_Font.c
-+++ jdk/src/solaris/native/sun/awt/awt_Font.c
-@@ -334,7 +334,7 @@
- if (strcmp(style, "regular") == 0) {
- altstyle = "roman";
- }
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- if (!strcmp(family, "lucidasans")) {
- family = "lucida";
- }
---- jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c
-+++ jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c
-@@ -40,6 +40,7 @@
- #include <jni.h>
- #include <jni_util.h>
- #include <jvm.h>
-+#include <jvm_md.h>
- #include <jlong.h>
-
- #include <stdlib.h>
-@@ -51,6 +52,8 @@
- #include <dlfcn.h>
- #include "Trace.h"
-
-+#include "jvm_md.h"
-+
- #ifdef NETSCAPE
- #include <signal.h>
- extern int awt_init_xt;
-@@ -122,7 +125,7 @@
- */
-
- #define MAXFRAMEBUFFERS 16
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- typedef struct {
- int screen_number;
- short x_org;
-@@ -680,19 +683,22 @@
- #endif /* HEADLESS */
-
- #ifndef HEADLESS
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- static void xinerama_init_linux()
- {
-- void* libHandle = 0;
-- char* XineramaLibName= "libXinerama.so.1";
-+ void* libHandle = NULL;
- int32_t locNumScr = 0;
- XineramaScreenInfo *xinInfo;
- char* XineramaQueryScreensName = "XineramaQueryScreens";
- XineramaQueryScreensFunc* XineramaQueryScreens = NULL;
-
- /* load library */
-- libHandle = dlopen(XineramaLibName, RTLD_LAZY | RTLD_GLOBAL);
-- if (libHandle != 0) {
-+ libHandle = dlopen(VERSIONED_JNI_LIB_NAME("Xinerama", "1"),
-+ RTLD_LAZY | RTLD_GLOBAL);
-+ if (libHandle == NULL) {
-+ libHandle = dlopen(JNI_LIB_NAME("Xinerama"), RTLD_LAZY | RTLD_GLOBAL);
-+ }
-+ if (libHandle != NULL) {
- XineramaQueryScreens = (XineramaQueryScreensFunc*)
- dlsym(libHandle, XineramaQueryScreensName);
-
-@@ -728,11 +734,10 @@
- }
- }
- #endif
--#ifndef __linux__ /* Solaris */
-+#if !defined(__linux__) && !defined(_ALLBSD_SOURCE) /* Solaris */
- static void xinerama_init_solaris()
- {
-- void* libHandle = 0;
-- char* XineramaLibName= "libXext.so";
-+ void* libHandle = NULL;
- unsigned char fbhints[MAXFRAMEBUFFERS];
- int32_t locNumScr = 0;
- /* load and run XineramaGetInfo */
-@@ -741,8 +746,8 @@
- XineramaGetInfoFunc* XineramaSolarisFunc = NULL;
-
- /* load library */
-- libHandle = dlopen(XineramaLibName, RTLD_LAZY | RTLD_GLOBAL);
-- if (libHandle != 0) {
-+ libHandle = dlopen(JNI_LIB_NAME("Xext"), RTLD_LAZY | RTLD_GLOBAL);
-+ if (libHandle != NULL) {
- XineramaSolarisFunc = (XineramaGetInfoFunc*)dlsym(libHandle, XineramaGetInfoName);
- XineramaSolarisCenterFunc =
- (XineramaGetCenterHintFunc*)dlsym(libHandle, XineramaGetCenterHintName);
-@@ -789,11 +794,11 @@
- }
-
- DTRACE_PRINTLN("Xinerama extension is available");
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- xinerama_init_linux();
- #else /* Solaris */
- xinerama_init_solaris();
--#endif /* __linux__ */
-+#endif /* __linux__ || _ALLBSD_SOURCE */
- }
- #endif /* HEADLESS */
-
-@@ -1671,7 +1676,7 @@
- {
- jobject point = NULL;
- #ifndef HEADLESS /* return NULL in HEADLESS, Linux */
--#ifndef __linux__
-+#if !defined(__linux__) && !defined(_ALLBSD_SOURCE)
- int x,y;
-
- AWT_LOCK();
-@@ -1684,7 +1689,7 @@
- DTRACE_PRINTLN("unable to call XineramaSolarisCenterFunc: symbol is null");
- }
- AWT_FLUSH_UNLOCK();
--#endif /* __linux __ */
-+#endif /* __linux __ || _ALLBSD_SOURCE */
- #endif /* HEADLESS */
- return point;
- }
-@@ -1749,7 +1754,11 @@
- {
- int rr_maj_ver = 0, rr_min_ver = 0;
-
-- void *pLibRandR = dlopen("libXrandr.so.2", RTLD_LAZY | RTLD_LOCAL);
-+ void *pLibRandR = dlopen(VERSIONED_JNI_LIB_NAME("Xrandr", "2"),
-+ RTLD_LAZY | RTLD_LOCAL);
-+ if (pLibRandR == NULL) {
-+ pLibRandR = dlopen(JNI_LIB_NAME("Xrandr"), RTLD_LAZY | RTLD_LOCAL);
-+ }
- if (pLibRandR == NULL) {
- J2dRlsTraceLn(J2D_TRACE_ERROR,
- "X11GD_InitXrandrFuncs: Could not open libXrandr.so.2");
---- jdk/src/solaris/native/sun/awt/awt_InputMethod.c
-+++ jdk/src/solaris/native/sun/awt/awt_InputMethod.c
-@@ -67,7 +67,7 @@
- XIMPreeditDrawCallbackStruct *);
- static void PreeditCaretCallback(XIC, XPointer,
- XIMPreeditCaretCallbackStruct *);
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- static void StatusStartCallback(XIC, XPointer, XPointer);
- static void StatusDoneCallback(XIC, XPointer, XPointer);
- static void StatusDrawCallback(XIC, XPointer,
-@@ -81,7 +81,7 @@
- #define PreeditDoneIndex 1
- #define PreeditDrawIndex 2
- #define PreeditCaretIndex 3
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- #define StatusStartIndex 4
- #define StatusDoneIndex 5
- #define StatusDrawIndex 6
-@@ -99,14 +99,14 @@
- (XIMProc)PreeditDoneCallback,
- (XIMProc)PreeditDrawCallback,
- (XIMProc)PreeditCaretCallback,
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- (XIMProc)StatusStartCallback,
- (XIMProc)StatusDoneCallback,
- (XIMProc)StatusDrawCallback,
- #endif
- };
-
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- #define MAX_STATUS_LEN 100
- typedef struct {
- Window w; /*status window id */
-@@ -146,7 +146,7 @@
- #endif /* XAWT */
- jobject x11inputmethod; /* global ref to X11InputMethod instance */
- /* associated with the XIC */
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- StatusWindow *statusWindow; /* our own status window */
- #else
- #ifndef XAWT
-@@ -425,7 +425,7 @@
- static void
- freeX11InputMethodData(JNIEnv *env, X11InputMethodData *pX11IMData)
- {
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- if (pX11IMData->statusWindow != NULL){
- StatusWindow *sw = pX11IMData->statusWindow;
- XFreeGC(awt_display, sw->lightGC);
-@@ -531,7 +531,7 @@
- pX11IMData = getX11InputMethodData(env, currentX11InputMethodInstance);
-
- if (pX11IMData == NULL) {
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- return False;
- #else
- return result;
-@@ -539,7 +539,7 @@
- }
-
- if ((ic = pX11IMData->current_ic) == (XIC)0){
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- return False;
- #else
- return result;
-@@ -648,7 +648,7 @@
- return result;
- }
-
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- static StatusWindow *createStatusWindow(
- #ifdef XAWT
- Window parent) {
-@@ -993,7 +993,7 @@
- }
- }
- }
--#endif /*__linux__*/
-+#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
-@@ -1050,7 +1050,7 @@
- return FALSE ;
- }
-
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- on_the_spot_styles |= XIMStatusNothing;
-
- /*kinput does not support XIMPreeditCallbacks and XIMStatusArea
-@@ -1063,7 +1063,7 @@
- break;
- }
- }
--#else /*! __linux__ */
-+#else /*! __linux__ && !_ALLBSD_SOURCE */
- #ifdef XAWT
- on_the_spot_styles |= XIMStatusNothing;
- #else /* !XAWT */
-@@ -1086,7 +1086,7 @@
- on_the_spot_styles |= XIMStatusNothing;
-
- #endif /* XAWT */
--#endif /* __linux__ */
-+#endif /* __linux__ || _ALLBSD_SOURCE */
-
- for (i = 0; i < im_styles->count_styles; i++) {
- active_styles |= im_styles->supported_styles[i] & on_the_spot_styles;
-@@ -1134,7 +1134,7 @@
- NULL);
- if (preedit == (XVaNestedList)NULL)
- goto err;
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- /*always try XIMStatusCallbacks for active client...*/
- {
- status = (XVaNestedList)XVaCreateNestedList(0,
-@@ -1156,7 +1156,7 @@
- XFree((void *)status);
- XFree((void *)preedit);
- }
--#else /* !__linux__ */
-+#else /* !__linux__ && !_ALLBSD_SOURCE */
- #ifndef XAWT
- if (on_the_spot_styles & XIMStatusArea) {
- Widget parent;
-@@ -1184,7 +1184,7 @@
- }
- #endif /* XAWT */
- XFree((void *)preedit);
--#endif /* __linux__ */
-+#endif /* __linux__ || _ALLBSD_SOURCE */
- pX11IMData->ic_passive = XCreateIC(X11im,
- XNClientWindow, w,
- XNFocusWindow, w,
-@@ -1343,7 +1343,7 @@
-
- }
-
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- static void
- StatusStartCallback(XIC ic, XPointer client_data, XPointer call_data)
- {
-@@ -1411,7 +1411,7 @@
- finally:
- AWT_UNLOCK();
- }
--#endif /*__linux__*/
-+#endif /* __linux__ || _ALLBSD_SOURCE */
-
- static void CommitStringCallback(XIC ic, XPointer client_data, XPointer call_data) {
- JNIEnv *env = GetJNIEnv();
-@@ -1513,14 +1513,14 @@
- /* Use IMInstantiate call back only on Linux, as there is a bug in Solaris
- (4768335)
- */
--#ifdef __linux__
-+#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);
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- }
- #endif
-
-@@ -1584,13 +1584,13 @@
- #endif /* XAWT */
- globalRef = (*env)->NewGlobalRef(env, this);
- pX11IMData->x11inputmethod = globalRef;
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- pX11IMData->statusWindow = NULL;
--#else /* __linux__ */
-+#else /* !__linux__ && !_ALLBSD_SOURCE */
- #ifndef XAWT
- pX11IMData->statusWidget = (Widget) NULL;
- #endif /* XAWT */
--#endif /* __linux__ */
-+#endif /* __linux__ || _ALLBSD_SOURCE */
-
- pX11IMData->lookup_buf = 0;
- pX11IMData->lookup_buf_len = 0;
-@@ -1737,14 +1737,14 @@
- setXICFocus(pX11IMData->current_ic, req);
- currentX11InputMethodInstance = pX11IMData->x11inputmethod;
- currentFocusWindow = w;
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- if (active && pX11IMData->statusWindow && pX11IMData->statusWindow->on)
- onoffStatusWindow(pX11IMData, w, True);
- #endif
- } else {
- currentX11InputMethodInstance = NULL;
- currentFocusWindow = 0;
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- onoffStatusWindow(pX11IMData, 0, False);
- if (pX11IMData->current_ic != NULL)
- #endif
-@@ -1761,7 +1761,7 @@
- Java_sun_awt_X11InputMethod_turnoffStatusWindow(JNIEnv *env,
- jobject this)
- {
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- X11InputMethodData *pX11IMData;
- StatusWindow *statusWindow;
-
-@@ -1858,7 +1858,7 @@
- X11InputMethodData *pX11IMData;
- XVaNestedList status;
-
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- /*do nothing for linux? */
- #else
- AWT_LOCK();
-@@ -1964,7 +1964,7 @@
- JNIEXPORT void JNICALL Java_sun_awt_X11_XInputMethod_adjustStatusWindow
- (JNIEnv *env, jobject this, jlong window)
- {
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- AWT_LOCK();
- adjustStatusWindow(window);
- AWT_UNLOCK();
---- jdk/src/solaris/native/sun/awt/awt_LoadLibrary.c
-+++ jdk/src/solaris/native/sun/awt/awt_LoadLibrary.c
-@@ -260,7 +260,11 @@
- }
- }
-
-+#ifdef __APPLE__
-+ strcat(p, ".dylib");
-+#else
- strcat(p, ".so");
-+#endif
-
- JNU_CallStaticMethodByName(env, NULL, "java/lang/System", "load",
- "(Ljava/lang/String;)V",
---- jdk/src/solaris/native/sun/awt/awt_MToolkit.c
-+++ jdk/src/solaris/native/sun/awt/awt_MToolkit.c
-@@ -63,8 +63,9 @@
- extern JavaVM *jvm;
-
- #ifndef HEADLESS
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- extern void statusWindowEventHandler(XEvent event);
-+Boolean awt_dnd_process_event(XEvent* event);
- #endif
- #endif /* !HEADLESS */
-
-@@ -1642,7 +1643,7 @@
- */
- Widget widget=XtWindowToWidget(awt_display, xev.xany.window);
- eventNumber++;
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- statusWindowEventHandler(xev);
- #endif
- xembed_eventHandler(&xev);
---- jdk/src/solaris/native/sun/awt/awt_Mlib.c
-+++ jdk/src/solaris/native/sun/awt/awt_Mlib.c
-@@ -32,6 +32,7 @@
- #include <dlfcn.h>
- #include "jni.h"
- #include <jni_util.h>
-+#include "jvm_md.h"
- #include "awt_Mlib.h"
- #include "java_awt_image_BufferedImage.h"
-
-@@ -67,11 +68,11 @@
- ((strncmp(name.machine, "sun4v" , 5) == 0) &&
- (getenv("USE_VIS_ON_SUN4V") != NULL)))
- {
-- handle = dlopen("libmlib_image_v.so", RTLD_LAZY);
-+ handle = dlopen(JNI_LIB_NAME("mlib_image_v"), RTLD_LAZY);
- }
-
- if (handle == NULL) {
-- handle = dlopen("libmlib_image.so", RTLD_LAZY);
-+ handle = dlopen(JNI_LIB_NAME("mlib_image"), RTLD_LAZY);
- }
-
- if (handle == NULL) {
---- jdk/src/solaris/native/sun/awt/awt_Robot.c
-+++ jdk/src/solaris/native/sun/awt/awt_Robot.c
-@@ -46,7 +46,7 @@
- #include "wsutils.h"
- #include "list.h"
- #include "multiVis.h"
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- #include <sys/socket.h>
- #endif
-
---- jdk/src/solaris/native/sun/awt/awt_util.h
-+++ jdk/src/solaris/native/sun/awt/awt_util.h
-@@ -187,15 +187,20 @@
- #ifdef __solaris__
- extern Widget awt_util_getXICStatusAreaWindow(Widget w);
- #else
-+#if defined(_ALLBSD_SOURCE)
-+int32_t awt_util_getIMStatusHeight(Widget vw);
-+Widget awt_util_getXICStatusAreaWindow(Widget w);
-+#else
- int32_t awt_util_getIMStatusHeight(Widget vw);
- XVaNestedList awt_util_getXICStatusAreaList(Widget w);
- Widget awt_util_getXICStatusAreaWindow(Widget w);
- #endif
-+#endif
-
-
-
-
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- typedef struct _XmImRefRec {
- Cardinal num_refs; /* Number of referencing widgets. */
- Cardinal max_refs; /* Maximum length of refs array. */
---- jdk/src/solaris/native/sun/awt/awt_wm.c
-+++ jdk/src/solaris/native/sun/awt/awt_wm.c
-@@ -121,12 +121,19 @@
- static Atom XA_KWM_WIN_MAXIMIZED;
-
- /* OpenLook */
-+static Atom _XA_OL_DECOR_ADD;
- static Atom _XA_OL_DECOR_DEL;
- static Atom _XA_OL_DECOR_HEADER;
- static Atom _XA_OL_DECOR_RESIZE;
- static Atom _XA_OL_DECOR_PIN;
- static Atom _XA_OL_DECOR_CLOSE;
-
-+/* AfterStep */
-+static Atom _XA_AS_STYLE;
-+
-+/* WindowMaker */
-+static Atom _XA_WINDOWMAKER_STATE;
-+
- /* For _NET_WM_STATE ClientMessage requests */
- #define _NET_WM_STATE_REMOVE 0 /* remove/unset property */
- #define _NET_WM_STATE_ADD 1 /* add/set property */
-@@ -193,7 +200,12 @@
- { &_XA_OL_DECOR_HEADER, "_OL_DECOR_HEADER" },
- { &_XA_OL_DECOR_RESIZE, "_OL_DECOR_RESIZE" },
- { &_XA_OL_DECOR_PIN, "_OL_DECOR_PIN" },
-- { &_XA_OL_DECOR_CLOSE, "_OL_DECOR_CLOSE" }
-+ { &_XA_OL_DECOR_CLOSE, "_OL_DECOR_CLOSE" },
-+ { &_XA_OL_DECOR_ADD, "_OL_DECOR_ADD" },
-+
-+ { &_XA_AS_STYLE, "_XA_AS_STYLE" },
-+
-+ { &_XA_WINDOWMAKER_STATE, "_XA_WINDOWMAKER_STATE" }
- };
- #define ATOM_LIST_LENGTH (sizeof(atom_list)/sizeof(atom_list[0]))
-
-@@ -942,6 +954,39 @@
- return True;
- }
-
-+/*
-+ * Window Maker.
-+ */
-+static Boolean
-+awt_wm_isWindowmaker()
-+{
-+ if (awt_wm_atomInterned(&_XA_WINDOWMAKER_STATE, "_WINDOWMAKER_STATE"))
-+ return True;
-+ return False;
-+}
-+
-+/*
-+ * Afterstep.
-+ */
-+static Boolean
-+awt_wm_isAfterstep()
-+{
-+ if (awt_wm_atomInterned(&_XA_AS_STYLE, "_AS_STYLE"))
-+ return True;
-+ return False;
-+}
-+
-+/*
-+ * FVWM 2.
-+ */
-+static Boolean
-+awt_wm_isFvwm2()
-+{
-+ if (awt_wm_atomInterned(&_XA_OL_DECOR_ADD, "_OL_DECOR_ADD")
-+ && !awt_wm_atomInterned(&_XA_OL_DECOR_PIN, "_OL_DECOR_PIN"))
-+ return True;
-+ return False;
-+}
-
- static Boolean
- awt_wm_isNetWMName(char *name)
-@@ -1280,6 +1325,12 @@
- else if (awt_wm_isKDE2()) {
- awt_wmgr = KDE2_WM;
- }
-+ else if (awt_wm_isWindowmaker()) {
-+ awt_wmgr = WINDOWMAKER_WM;
-+ }
-+ else if (awt_wm_isAfterstep()) {
-+ awt_wmgr = AFTERSTEP_WM;
-+ }
- /*
- * We don't check for legacy WM when we already know that WM
- * supports WIN or _NET wm spec.
-@@ -1302,6 +1353,9 @@
- awt_wmgr = MOTIF_WM;
- }
- else if (awt_wm_isOpenLook()) {
-+ awt_wmgr = OPENLOOK_WM;
-+ }
-+ else if (awt_wm_isFvwm2()) {
- awt_wmgr = OPENLOOK_WM;
- }
- else {
---- jdk/src/solaris/native/sun/awt/awt_wm.h
-+++ jdk/src/solaris/native/sun/awt/awt_wm.h
-@@ -45,7 +45,10 @@
- KDE2_WM,
- SAWFISH_WM,
- ICE_WM,
-- METACITY_WM
-+ METACITY_WM,
-+ AFTERSTEP_WM,
-+ WINDOWMAKER_WM,
-+ FVWM2_WM
- };
-
- extern void awt_wm_init(void);
---- jdk/src/solaris/native/sun/awt/extutil.h
-+++ jdk/src/solaris/native/sun/awt/extutil.h
-@@ -58,7 +58,7 @@
- */
- /* $XFree86: xc/include/extensions/extutil.h,v 1.5 2001/01/17 17:53:20 dawes Exp $ */
-
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
-
- #ifndef _EXTUTIL_H_
- #define _EXTUTIL_H_
-@@ -248,4 +248,4 @@
- char *proc(Display *dpy, int code, XExtCodes *codes, char *buf, int n)
- #endif
-
--#endif /* __linux__ */
-+#endif /* __linux__ || _ALLBSD_SOURCE */
---- jdk/src/solaris/native/sun/awt/fontpath.c
-+++ jdk/src/solaris/native/sun/awt/fontpath.c
-@@ -23,7 +23,7 @@
- * questions.
- */
-
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- #include <string.h>
- #endif /* __linux__ */
- #include <stdio.h>
-@@ -40,6 +40,7 @@
-
- #include <jni.h>
- #include <jni_util.h>
-+#include <jvm_md.h>
- #include <sizecalc.h>
- #include <sun_font_FontManager.h>
- #ifndef HEADLESS
-@@ -59,10 +60,24 @@
- extern Display *awt_display;
- #endif /* !HEADLESS */
-
-+#ifdef __APPLE__
-+// XXXDARWIN: Hard-code the path to Apple's freetype, as it is
-+// not included in the dyld search path by default, and 10.4
-+// does not support -rpath.
-+//
-+// This ignores the build time setting of ALT_FREETYPE_LIB_PATH,
-+// and should be replaced with -rpath/@rpath support on 10.5 or later,
-+// or via support for a the FREETYPE_LIB_PATH define.
-+#define FONTCONFIG_DLL_VERSIONED X11_PATH "/lib/" VERSIONED_JNI_LIB_NAME("fontconfig", "1")
-+#define FONTCONFIG_DLL X11_PATH "/lib/" JNI_LIB_NAME("fontconfig")
-+#else
-+#define FONTCONFIG_DLL_VERSIONED VERSIONED_JNI_LIB_NAME("fontconfig", "1")
-+#define FONTCONFIG_DLL JNI_LIB_NAME("fontconfig")
-+#endif
-
- #define MAXFDIRS 512 /* Max number of directories that contain fonts */
-
--#ifndef __linux__
-+#if !defined(__linux__) && !defined(_ALLBSD_SOURCE)
- /*
- * This can be set in the makefile to "/usr/X11" if so desired.
- */
-@@ -112,24 +127,40 @@
- NULL, /* terminates the list */
- };
-
-+#elif _ALLBSD_SOURCE
-+static char *fullBSDFontPath[] = {
-+ X11_PATH "/lib/X11/fonts/TrueType",
-+ X11_PATH "/lib/X11/fonts/truetype",
-+ X11_PATH "/lib/X11/fonts/tt",
-+ X11_PATH "/lib/X11/fonts/TTF",
-+ X11_PATH "/lib/X11/fonts/OTF",
-+ PACKAGE_PATH "/share/fonts/TrueType",
-+ PACKAGE_PATH "/share/fonts/truetype",
-+ PACKAGE_PATH "/share/fonts/tt",
-+ PACKAGE_PATH "/share/fonts/TTF",
-+ PACKAGE_PATH "/share/fonts/OTF",
-+ X11_PATH "/lib/X11/fonts/Type1",
-+ PACKAGE_PATH "/share/fonts/Type1",
-+ NULL, /* terminates the list */
-+};
- #else /* __linux */
- /* All the known interesting locations we have discovered on
- * various flavors of Linux
- */
- static char *fullLinuxFontPath[] = {
-- "/usr/X11R6/lib/X11/fonts/TrueType", /* RH 7.1+ */
-- "/usr/X11R6/lib/X11/fonts/truetype", /* SuSE */
-- "/usr/X11R6/lib/X11/fonts/tt",
-- "/usr/X11R6/lib/X11/fonts/TTF",
-- "/usr/X11R6/lib/X11/fonts/OTF", /* RH 9.0 (but empty!) */
-- "/usr/share/fonts/ja/TrueType", /* RH 7.2+ */
-- "/usr/share/fonts/truetype",
-- "/usr/share/fonts/ko/TrueType", /* RH 9.0 */
-- "/usr/share/fonts/zh_CN/TrueType", /* RH 9.0 */
-- "/usr/share/fonts/zh_TW/TrueType", /* RH 9.0 */
-+ X11_PATH "/lib/X11/fonts/TrueType", /* RH 7.1+ */
-+ X11_PATH "/lib/X11/fonts/truetype", /* SuSE */
-+ X11_PATH "/lib/X11/fonts/tt",
-+ X11_PATH "/lib/X11/fonts/TTF",
-+ X11_PATH "/lib/X11/fonts/OTF", /* RH 9.0 (but empty!) */
-+ PACKAGE_PATH "/share/fonts/ja/TrueType", /* RH 7.2+ */
-+ PACKAGE_PATH "/share/fonts/truetype",
-+ PACKAGE_PATH "/share/fonts/ko/TrueType", /* RH 9.0 */
-+ PACKAGE_PATH "/share/fonts/zh_CN/TrueType", /* RH 9.0 */
-+ PACKAGE_PATH "/share/fonts/zh_TW/TrueType", /* RH 9.0 */
- "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType", /* Debian */
-- "/usr/X11R6/lib/X11/fonts/Type1",
-- "/usr/share/fonts/default/Type1", /* RH 9.0 */
-+ X11_PATH "/lib/X11/fonts/Type1",
-+ PACKAGE_PATH "/share/fonts/default/Type1", /* RH 9.0 */
- NULL, /* terminates the list */
- };
- #endif
-@@ -357,7 +388,7 @@
-
- #endif /* !HEADLESS */
-
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- /* from awt_LoadLibrary.c */
- JNIEXPORT jboolean JNICALL AWTIsHeadless();
- #endif
-@@ -482,8 +513,10 @@
- */
- fcdirs = getFontConfigLocations();
-
--#ifdef __linux__
-+#if defined(__linux__)
- knowndirs = fullLinuxFontPath;
-+#elif defined(_ALLBSD_SOURCE)
-+ knowndirs = fullBSDFontPath;
- #else /* IF SOLARIS */
- knowndirs = fullSolarisFontPath;
- #endif
-@@ -494,7 +527,8 @@
- * be initialised.
- */
- #ifndef HEADLESS
--#ifdef __linux__ /* There's no headless build on linux ... */
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
-+ /* There's no headless build on linux ... */
- if (!AWTIsHeadless()) { /* .. so need to call a function to check */
- #endif
- AWT_LOCK();
-@@ -502,7 +536,7 @@
- x11dirs = getX11FontPath();
- }
- AWT_UNLOCK();
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- }
- #endif
- #endif /* !HEADLESS */
-@@ -614,7 +648,7 @@
- }
-
- #include <dlfcn.h>
--#ifndef __linux__ /* i.e. is solaris */
-+#if !(defined(__linux__) || defined(__APPLE__))
- #include <link.h>
- #endif
-
-@@ -660,9 +694,9 @@
- * certain symbols - and functionality - to be available.
- * Also add explicit search for .so.1 in case .so symlink doesn't exist.
- */
-- libfontconfig = dlopen("libfontconfig.so.1", RTLD_LOCAL|RTLD_LAZY);
-+ libfontconfig = dlopen(FONTCONFIG_DLL_VERSIONED, RTLD_LOCAL|RTLD_LAZY);
- if (libfontconfig == NULL) {
-- libfontconfig = dlopen("libfontconfig.so", RTLD_LOCAL|RTLD_LAZY);
-+ libfontconfig = dlopen(FONTCONFIG_DLL, RTLD_LOCAL|RTLD_LAZY);
- if (libfontconfig == NULL) {
- return NULL;
- }
---- jdk/src/solaris/native/sun/awt/gtk2_interface.c
-+++ jdk/src/solaris/native/sun/awt/gtk2_interface.c
-@@ -30,9 +30,10 @@
- #include <string.h>
- #include "gtk2_interface.h"
- #include "java_awt_Transparency.h"
-+#include "jvm_md.h"
- #include "sizecalc.h"
-
--#define GTK2_LIB "libgtk-x11-2.0.so.0"
-+#define GTK2_LIB VERSIONED_JNI_LIB_NAME("gtk-x11-2.0", "0")
-
- #define G_TYPE_INVALID G_TYPE_MAKE_FUNDAMENTAL (0)
- #define G_TYPE_NONE G_TYPE_MAKE_FUNDAMENTAL (1)
---- jdk/src/solaris/native/sun/awt/list.c
-+++ jdk/src/solaris/native/sun/awt/list.c
-@@ -66,7 +66,11 @@
- ----------------------------------------------------------------------- **/
-
- #include <stdio.h>
-+#ifdef _ALLBSD_SOURCE
-+#include <stdlib.h>
-+#else
- #include <malloc.h>
-+#endif
- #include "list.h"
-
-
---- jdk/src/solaris/native/sun/awt/robot_common.c
-+++ jdk/src/solaris/native/sun/awt/robot_common.c
-@@ -27,6 +27,9 @@
- #error This file should not be included in headless library
- #endif
-
-+#ifdef _ALLBSD_SOURCE
-+#include <stdlib.h>
-+#endif
- #include "robot_common.h"
-
- /*
---- jdk/src/solaris/native/sun/font/X11FontScaler.c
-+++ jdk/src/solaris/native/sun/font/X11FontScaler.c
-@@ -32,7 +32,11 @@
- * into X11FontScaler_md.c, which is compiled into another library.
- */
- #include <stdio.h>
-+#if defined(_ALLBSD_SOURCE)
-+#include <stdlib.h>
-+#else
- #include <malloc.h>
-+#endif
- #include <ctype.h>
- #include <sys/utsname.h>
-
---- jdk/src/solaris/native/sun/font/X11TextRenderer.c
-+++ jdk/src/solaris/native/sun/font/X11TextRenderer.c
-@@ -39,7 +39,11 @@
- #include "GraphicsPrimitiveMgr.h"
- #include "glyphblitting.h"
- #include "sunfontids.h"
-+#if defined(_ALLBSD_SOURCE)
-+#include <stdlib.h>
-+#else
- #include <malloc.h>
-+#endif
-
-
- JNIEXPORT void JNICALL AWTDrawGlyphList
---- jdk/src/solaris/native/sun/java2d/j2d_md.h
-+++ jdk/src/solaris/native/sun/java2d/j2d_md.h
-@@ -28,11 +28,11 @@
- #include <sys/types.h>
-
- /*
-- * Linux version of <sys/types.h> does not define intptr_t
-+ * Linux and BSD's version of <sys/types.h> does not define intptr_t
- */
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- #include <stdint.h>
--#endif /* __linux__ */
-+#endif /* __linux__ || _ALLBSD_SOURCE */
-
- typedef unsigned char jubyte;
- typedef unsigned short jushort;
---- jdk/src/solaris/native/sun/java2d/loops/mlib_ImageZoom_NN.c
-+++ jdk/src/solaris/native/sun/java2d/loops/mlib_ImageZoom_NN.c
-@@ -66,6 +66,10 @@
- * MLIB_EDGE_SRC_PADDED
- */
-
-+#ifdef __OpenBSD__
-+#include <sys/types.h>
-+#endif
-+#include <machine/endian.h>
- #include <mlib_image.h>
- #include <mlib_ImageZoom.h>
-
-@@ -102,7 +106,7 @@
-
- /***************************************************************/
-
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
-
- static const mlib_u32 mlib_bit_mask4[16] = {
- 0x00000000u, 0xFF000000u, 0x00FF0000u, 0xFFFF0000u,
-@@ -111,7 +115,7 @@
- 0x0000FFFFu, 0xFF00FFFFu, 0x00FFFFFFu, 0xFFFFFFFFu
- };
-
--#else /* _LITTLE_ENDIAN */
-+#else /* BIG_ENDIAN */
-
- static const mlib_u32 mlib_bit_mask4[16] = {
- 0x00000000u, 0x000000FFu, 0x0000FF00u, 0x0000FFFFu,
-@@ -120,7 +124,7 @@
- 0xFFFF0000u, 0xFFFF00FFu, 0xFFFFFF00u, 0xFFFFFFFFu
- };
-
--#endif /* _LITTLE_ENDIAN */
-+#endif /* LITTLE_ENDIAN */
-
- /***************************************************************/
-
-@@ -344,11 +348,11 @@
- #ifdef _NO_LONGLONG
-
- typedef struct {
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- mlib_u32 uint1, uint0;
--#else /* _LITTLE_ENDIAN */
-+#else /* BIG_ENDIAN */
- mlib_u32 uint0, uint1;
--#endif /* _LITTLE_ENDIAN */
-+#endif /* LITTLE_ENDIAN */
- } two_uint;
-
- /***************************************************************/
-@@ -511,11 +515,11 @@
- DTYPE mask;
- MASK(mask);
- off *= 8;
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- LSHIFT(dd_old, da[0], 64 - off);
--#else /* _LITTLE_ENDIAN */
-+#else /* BIG_ENDIAN */
- RSHIFT(dd_old, da[0], 64 - off);
--#endif /* _LITTLE_ENDIAN */
-+#endif /* LITTLE_ENDIAN */
-
- #ifdef __SUNPRO_C
- #pragma pipeloop(0)
-@@ -540,30 +544,30 @@
-
- res = (res & 0xff) | (res >> 8);
- dd = gray_mask[res];
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == LITTLE_ENDIAN)
- /* *da++ = (dd_old >> (64 - off)) | (dd << off);*/
- RSHIFT(dd_old, dd_old, 64 - off);
- LSHIFT(dtmp, dd, off);
--#else /* _LITTLE_ENDIAN */
-+#else /* BIG_ENDIAN */
- /* *da++ = (dd_old << (64 - off)) | (dd >> off);*/
- LSHIFT(dd_old, dd_old, 64 - off);
- RSHIFT(dtmp, dd, off);
--#endif /* _LITTLE_ENDIAN */
-+#endif /* LITTLE_ENDIAN */
- LOGIC(*da++, dd_old, dtmp, |);
- dd_old = dd;
- }
-
--#ifdef _LITTLE_ENDIAN
-+#if (BYTE_ORDER == 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 /* BIG_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 /* LITTLE_ENDIAN */
- LOGIC(da[0], dtmp, dtmp1, |);
- }
- else { /* aligned */
---- jdk/src/solaris/native/sun/java2d/loops/vis_FuncArray.c
-+++ jdk/src/solaris/native/sun/java2d/loops/vis_FuncArray.c
-@@ -794,7 +794,7 @@
- static int initialized;
- static int usevis = JNI_TRUE;
-
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- # define ULTRA_CHIP "sparc64"
- #else
- # define ULTRA_CHIP "sun4u"
---- jdk/src/solaris/native/sun/java2d/opengl/OGLFuncs_md.h
-+++ jdk/src/solaris/native/sun/java2d/opengl/OGLFuncs_md.h
-@@ -27,7 +27,10 @@
- #define OGLFuncs_md_h_Included
-
- #include <stdlib.h>
-+#ifndef __APPLE__
- #include <link.h>
-+#endif
-+#include "jvm_md.h"
- #include "J2D_GL/glx.h"
- #include "OGLFuncMacros.h"
-
-@@ -113,7 +116,7 @@
- { \
- char *libGLPath = getenv("J2D_ALT_LIBGL_PATH"); \
- if (libGLPath == NULL) { \
-- libGLPath = "libGL.so.1"; \
-+ libGLPath = VERSIONED_JNI_LIB_NAME("GL", "1"); \
- } \
- OGL_LIB_HANDLE = dlopen(libGLPath, RTLD_LAZY | RTLD_LOCAL); \
- } \
---- jdk/src/solaris/native/sun/java2d/x11/X11SurfaceData.c
-+++ jdk/src/solaris/native/sun/java2d/x11/X11SurfaceData.c
-@@ -32,6 +32,7 @@
- #include "gdefs.h"
-
- #include "jni_util.h"
-+#include "jvm_md.h"
- #include "awt_Component.h"
- #include "awt_GraphicsEnv.h"
-
-@@ -129,7 +130,7 @@
-
- if (tryDGA && (getenv("NO_J2D_DGA") == NULL)) {
- /* we use RTLD_NOW because of bug 4032715 */
-- lib = dlopen("libsunwjdga.so", RTLD_NOW);
-+ lib = dlopen(JNI_LIB_NAME("sunwjdga"), RTLD_NOW);
- }
- dgaAvailable = JNI_FALSE;
- if (lib != NULL) {
-@@ -430,7 +431,7 @@
- if (width <= 0 || height <= 0 || width > 32767 || height > 32767) {
- JNU_ThrowOutOfMemoryError(env,
- "Can't create offscreen surface");
-- return JNI_FALSE;
-+ return;
- }
- xsdo->isPixmap = JNI_TRUE;
- /* REMIND: workaround for bug 4420220 on pgx32 boards:
---- jdk/src/solaris/native/sun/jdga/dgalock.c
-+++ jdk/src/solaris/native/sun/jdga/dgalock.c
-@@ -44,6 +44,7 @@
- #include <X11/Xlib.h>
-
- #include "jni.h"
-+#include "jvm_md.h"
- #include "jdga.h"
- #include "jdgadevice.h"
-
-@@ -84,10 +85,10 @@
- static GetVirtualDrawableFunc * GetVirtualDrawable = GetVirtualDrawableStub;
-
- static void Solaris_DGA_XineramaInit(Display *display) {
-- void * handle = 0;
-+ void * handle = NULL;
- if (IsXineramaOn == NULL) {
-- handle = dlopen("libxinerama.so", RTLD_NOW);
-- if (handle != 0) {
-+ handle = dlopen(JNI_LIB_NAME("xinerama"), RTLD_NOW);
-+ if (handle != NULL) {
- void *sym = dlsym(handle, "IsXineramaOn");
- IsXineramaOn = (IsXineramaOnFunc *)sym;
- if (IsXineramaOn != 0 && (*IsXineramaOn)(display)) {
---- jdk/src/solaris/native/sun/management/FileSystemImpl.c
-+++ jdk/src/solaris/native/sun/management/FileSystemImpl.c
-@@ -26,6 +26,10 @@
- #include <sys/types.h>
- #include <sys/stat.h>
-
-+#if defined(_ALLBSD_SOURCE)
-+#include "largefile_bsd.h"
-+#endif
-+
- #include "jni.h"
- #include "jni_util.h"
- #include "sun_management_FileSystemImpl.h"
---- jdk/src/solaris/native/sun/net/dns/ResolverConfigurationImpl.c
-+++ jdk/src/solaris/native/sun/net/dns/ResolverConfigurationImpl.c
-@@ -33,7 +33,7 @@
- #include <strings.h>
- #endif
-
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- #include <string.h>
- #endif
-
---- jdk/src/solaris/native/sun/net/spi/DefaultProxySelector.c
-+++ jdk/src/solaris/native/sun/net/spi/DefaultProxySelector.c
-@@ -26,11 +26,12 @@
- #include "jni.h"
- #include "jni_util.h"
- #include "jvm.h"
-+#include "jvm_md.h"
- #include "jlong.h"
- #include "sun_net_spi_DefaultProxySelector.h"
- #include <dlfcn.h>
- #include <stdio.h>
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- #include <string.h>
- #else
- #include <strings.h>
-@@ -109,8 +110,9 @@
- /**
- * Let's try to load le GConf-2 library
- */
-- if (dlopen("libgconf-2.so", RTLD_GLOBAL | RTLD_LAZY) != NULL ||
-- dlopen("libgconf-2.so.4", RTLD_GLOBAL | RTLD_LAZY) != NULL) {
-+ if (dlopen(JNI_LIB_NAME("gconf-2"), RTLD_GLOBAL | RTLD_LAZY) != NULL ||
-+ dlopen(VERSIONED_JNI_LIB_NAME("gconf-2", "4"),
-+ RTLD_GLOBAL | RTLD_LAZY) != NULL) {
- gconf_ver = 2;
- }
- if (gconf_ver > 0) {
---- jdk/src/solaris/native/sun/nio/ch/DatagramChannelImpl.c
-+++ jdk/src/solaris/native/sun/nio/ch/DatagramChannelImpl.c
-@@ -35,7 +35,7 @@
- #include <string.h>
- #include <errno.h>
-
--#if __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- #include <netinet/in.h>
- #endif
-
-@@ -81,7 +81,7 @@
- rv = connect(fd, 0, 0);
- #endif
-
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- {
- int len;
- SOCKADDR sa;
-@@ -91,17 +91,30 @@
- #ifdef AF_INET6
- if (ipv6_available()) {
- struct sockaddr_in6 *him6 = (struct sockaddr_in6 *)&sa;
-+#if defined(_ALLBSD_SOURCE)
-+ him6->sin6_family = AF_INET6;
-+#else
- him6->sin6_family = AF_UNSPEC;
-+#endif
- len = sizeof(struct sockaddr_in6);
- } else
- #endif
- {
- struct sockaddr_in *him4 = (struct sockaddr_in*)&sa;
-+#if defined(_ALLBSD_SOURCE)
-+ him4->sin_family = AF_INET;
-+#else
- him4->sin_family = AF_UNSPEC;
-+#endif
- len = sizeof(struct sockaddr_in);
- }
-
- rv = connect(fd, (struct sockaddr *)&sa, len);
-+
-+#if defined(_ALLBSD_SOURCE)
-+ if (rv < 0 && errno == EADDRNOTAVAIL)
-+ rv = errno = 0;
-+#endif
- }
- #endif
-
---- jdk/src/solaris/native/sun/nio/ch/DatagramDispatcher.c
-+++ jdk/src/solaris/native/sun/nio/ch/DatagramDispatcher.c
-@@ -72,7 +72,7 @@
- m.msg_accrightslen = 0;
- #endif
-
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- m.msg_control = NULL;
- m.msg_controllen = 0;
- #endif
-@@ -120,7 +120,7 @@
- m.msg_accrightslen = 0;
- #endif
-
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- m.msg_control = NULL;
- m.msg_controllen = 0;
- #endif
---- jdk/src/solaris/native/sun/nio/ch/FileChannelImpl.c
-+++ jdk/src/solaris/native/sun/nio/ch/FileChannelImpl.c
-@@ -26,15 +26,21 @@
- #include "jni.h"
- #include "jni_util.h"
- #include "jvm.h"
-+#include "jvm_md.h"
- #include "jlong.h"
- #include <sys/mman.h>
- #include <sys/stat.h>
-+#include <fcntl.h>
- #include "sun_nio_ch_FileChannelImpl.h"
- #include "java_lang_Integer.h"
- #include "nio.h"
- #include "nio_util.h"
- #include <dlfcn.h>
-
-+#if defined(_ALLBSD_SOURCE)
-+#include "largefile_bsd.h"
-+#endif
-+
- static jfieldID chan_fd; /* jobject 'fd' in sun.io.FileChannelImpl */
-
- #ifdef __solaris__
-@@ -59,6 +65,24 @@
- typedef ssize_t sendfile64_func(int out_fd, int in_fd, off64_t *offset, size_t count);
-
- sendfile64_func* my_sendfile64_func = NULL;
-+#elif defined(_ALLBSD_SOURCE)
-+#include <sys/types.h>
-+#include <sys/socket.h>
-+#include <sys/uio.h>
-+#include <errno.h>
-+#include <stdlib.h>
-+
-+#ifdef __APPLE__
-+typedef int sendfile_func(int fd, int s, off_t offset, off_t *len,
-+ struct sf_hdtr *hdtr, int flags);
-+#elif defined(__FreeBSD__)
-+typedef int sendfile_func(int fd, int s, off_t offset, size_t nbytes,
-+ struct sf_hdtr *hdtr, off_t *sbytes, int flags);
-+#endif
-+
-+#if defined(__APPLE__) || defined(__FreeBSD__)
-+sendfile_func* my_sendfile_func = NULL;
-+#endif
- #endif
-
- JNIEXPORT jlong JNICALL
-@@ -68,7 +92,8 @@
- chan_fd = (*env)->GetFieldID(env, clazz, "fd", "Ljava/io/FileDescriptor;");
-
- #ifdef __solaris__
-- if (dlopen("/usr/lib/libsendfile.so.1", RTLD_GLOBAL | RTLD_LAZY) != NULL) {
-+ if (dlopen("/usr/lib/" VERSIONED_JNI_LIB_NAME("sendfile", "1"),
-+ RTLD_GLOBAL | RTLD_LAZY) != NULL) {
- my_sendfile_func = (sendfile_func*) dlsym(RTLD_DEFAULT, "sendfilev64");
- }
- #endif
-@@ -77,6 +102,10 @@
- my_sendfile64_func = (sendfile64_func*) dlsym(RTLD_DEFAULT, "sendfile64");
- #endif
-
-+#if defined(__APPLE__) || defined(__FreeBSD__)
-+ my_sendfile_func = (sendfile_func*) dlsym(RTLD_DEFAULT, "sendfile");
-+#endif
-+
- return pageSize;
- }
-
-@@ -278,6 +307,48 @@
- return result;
- }
- #endif
-+
-+#ifdef _ALLBSD_SOURCE
-+#if defined(__APPLE__) || defined(__FreeBSD__)
-+ if (my_sendfile_func == NULL)
-+ return IOS_UNSUPPORTED;
-+
-+ off_t numBytes;
-+ int result;
-+
-+ numBytes = count;
-+
-+#ifdef __APPLE__
-+ result = (*my_sendfile_func)(srcFD, dstFD, position,
-+ &numBytes, NULL, 0);
-+#elif defined(__FreeBSD__)
-+ result = (*my_sendfile_func)(srcFD, dstFD, position,
-+ count, NULL, &numBytes, 0);
-+#else
-+ Add an #elif for your BSD flavor
-+#endif
-+
-+ if (numBytes > 0)
-+ return numBytes;
-+
-+ if (result == -1) {
-+ if (errno == EAGAIN)
-+ return IOS_UNAVAILABLE;
-+ if (errno == EOPNOTSUPP || errno == ENOTSOCK || errno == ENOTCONN)
-+ return IOS_UNSUPPORTED_CASE;
-+ if ((errno == EINVAL) && ((ssize_t)count >= 0))
-+ return IOS_UNSUPPORTED_CASE;
-+ if (errno == EINTR)
-+ return IOS_INTERRUPTED;
-+ JNU_ThrowIOExceptionWithLastError(env, "Transfer failed");
-+ return IOS_THROWN;
-+ }
-+
-+ return result;
-+#else
-+ return IOS_UNSUPPORTED;
-+#endif
-+#endif
- }
-
- JNIEXPORT jint JNICALL
-@@ -329,6 +400,23 @@
- fl.l_start = (off64_t)pos;
- fl.l_type = F_UNLCK;
- lockResult = fcntl(fd, cmd, &fl);
-+#if defined(__FreeBSD__) || defined(__OpenBSD__)
-+ /* XXXFREEBSD: While doing of preClose0() we're closing actual fd which
-+ was locked, so here we'll get an error which need to be ignored to
-+ satisfy TCK FileLock test */
-+ /* XXXFREEBSD: backport to 1.4.2 */
-+ if (lockResult < 0 && errno == EBADF)
-+ lockResult = errno = 0;
-+#endif
-+#if defined(__NetBSD__)
-+ /* XXXNETBSD: The dup2 in preClose0 is being done onto 1 end of a
-+ socketpair which isn't a valid target for F_UNLCK. No good way to see
-+ this vs. a bad lock setup so just return errno = 0 there
-+ to pass JCK (lock will get removed once all fd's close anyways) */
-+ /* XXXNETBSD: backport to 1.4.2 */
-+ if (lockResult < 0 && errno == EINVAL)
-+ lockResult = errno = 0;
-+#endif
- if (lockResult < 0) {
- JNU_ThrowIOExceptionWithLastError(env, "Release failed");
- }
---- jdk/src/solaris/native/sun/nio/ch/FileDispatcher.c
-+++ jdk/src/solaris/native/sun/nio/ch/FileDispatcher.c
-@@ -32,8 +32,12 @@
- #include <sys/socket.h>
- #include <fcntl.h>
- #include <sys/uio.h>
-+#include <unistd.h>
- #include "nio_util.h"
-
-+#if defined(_ALLBSD_SOURCE)
-+#include "largefile_bsd.h"
-+#endif
-
- static int preCloseFD = -1; /* File descriptor to which we dup other fd's
- before closing them for real */
---- jdk/src/solaris/native/sun/nio/ch/FileKey.c
-+++ jdk/src/solaris/native/sun/nio/ch/FileKey.c
-@@ -30,6 +30,10 @@
- #include "nio_util.h"
- #include "sun_nio_ch_FileKey.h"
-
-+#if defined(_ALLBSD_SOURCE)
-+#include "largefile_bsd.h"
-+#endif
-+
- static jfieldID key_st_dev; /* id for FileKey.st_dev */
- static jfieldID key_st_ino; /* id for FileKey.st_ino */
-
---- jdk/src/solaris/native/sun/nio/ch/KqueueArrayWrapper.c
-+++ jdk/src/solaris/native/sun/nio/ch/KqueueArrayWrapper.c
-@@ -0,0 +1,186 @@
-+/*
-+ * Scratched by davidxu@freebsd.org
-+ */
-+
-+#include "jni.h"
-+#include "jni_util.h"
-+#include "jvm.h"
-+#include "jlong.h"
-+
-+#include "sun_nio_ch_KqueueArrayWrapper.h"
-+
-+#include <errno.h>
-+#include <sys/types.h>
-+#include <sys/event.h>
-+#include <sys/time.h>
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+static int
-+restartable_kevent(int kqfd, struct kevent *changelist, int nchanges,
-+ struct kevent *eventlist, int nevents);
-+
-+static int
-+timeout_kevent(int kqfd, struct kevent *changelist, int nchanges,
-+ struct kevent *eventlist, int nevents, int timo);
-+
-+JNIEXPORT jint JNICALL Java_sun_nio_ch_KqueueArrayWrapper_kqueue
-+ (JNIEnv *env, jclass cls)
-+{
-+ int kqfd = kqueue();
-+ if (kqfd < 0) {
-+ JNU_ThrowIOExceptionWithLastError(env, "Error creating kqueue");
-+ return -1;
-+ }
-+ return kqfd;
-+}
-+
-+JNIEXPORT void JNICALL Java_sun_nio_ch_KqueueArrayWrapper_register
-+ (JNIEnv *env, jclass cls, jint kqfd, jint fd, jshort filter)
-+{
-+ struct kevent ev;
-+ struct timespec ts;
-+
-+ ev.ident = fd;
-+ ev.filter = filter;
-+ ev.flags = EV_ADD;
-+ ev.fflags = 0;
-+ ev.data = 0;
-+ ev.udata = NULL;
-+ ts.tv_sec = 0;
-+ ts.tv_nsec = 0;
-+ if (kevent(kqfd, &ev, 1, NULL, 0, &ts) < 0) {
-+ JNU_ThrowIOExceptionWithLastError(env, "Error register kqueue event");
-+ }
-+}
-+
-+JNIEXPORT jint JNICALL Java_sun_nio_ch_KqueueArrayWrapper_kevent
-+ (JNIEnv *env, jclass cls, jint kqfd, jlong changelist_addr, jint nchanges,
-+ jlong eventlist_addr, jint nevents, jlong timeout)
-+{
-+ struct kevent *changelist = (struct kevent *)jlong_to_ptr(changelist_addr);
-+ struct kevent *eventlist = (struct kevent *)jlong_to_ptr(eventlist_addr);
-+ int result;
-+
-+ if (timeout < 0) {
-+ result = restartable_kevent(kqfd, changelist, nchanges,
-+ eventlist, nevents);
-+ } else {
-+ result = timeout_kevent(kqfd, changelist, nchanges, eventlist,
-+ nevents, timeout);
-+ }
-+
-+ if (result < 0) {
-+ JNU_ThrowIOExceptionWithLastError(env, "Error polling kevent");
-+ return -1;
-+ }
-+ return result;
-+}
-+
-+static int
-+restartable_kevent(int kqfd, struct kevent *changelist, int nchanges,
-+ struct kevent *eventlist, int nevents)
-+{
-+ int result;
-+
-+ for (;;) {
-+ result = kevent(kqfd, changelist, nchanges, eventlist,
-+ nevents, NULL);
-+ if (result == -1 && errno == EINTR) {
-+ continue;
-+ } else {
-+ return result;
-+ }
-+ }
-+}
-+
-+static int
-+timeout_kevent(int kqfd, struct kevent *changelist, int nchanges,
-+ struct kevent *eventlist, int nevents, int timo)
-+{
-+ struct timeval timeout, now, end;
-+ int result;
-+
-+ timeout.tv_sec = timo / 1000;
-+ timeout.tv_usec = (timo % 1000) * 1000;
-+ gettimeofday(&now, NULL);
-+ timeradd(&now, &timeout, &end);
-+
-+ for (;;) {
-+ struct timespec ts;
-+
-+ ts.tv_sec = timeout.tv_sec;
-+ ts.tv_nsec = timeout.tv_usec * 1000;
-+ result = kevent(kqfd, changelist, nchanges, eventlist, nevents,
-+ &ts);
-+ if (result == -1 && (errno == EINTR)) {
-+ gettimeofday(&now, NULL);
-+ if (timercmp(&now, &end, >=))
-+ return 0;
-+ timersub(&end, &now, &timeout);
-+ } else {
-+ return result;
-+ }
-+ }
-+}
-+
-+JNIEXPORT jint JNICALL Java_sun_nio_ch_KqueueArrayWrapper_keventSize
-+ (JNIEnv *env, jclass cls)
-+{
-+ return sizeof(struct kevent);
-+}
-+
-+JNIEXPORT void JNICALL Java_sun_nio_ch_KqueueArrayWrapper_interrupt
-+ (JNIEnv *env, jclass cls, jint fd)
-+{
-+ int fakebuf[1];
-+
-+ fakebuf[0] = 1;
-+ if (write(fd, fakebuf, 1) < 0) {
-+ JNU_ThrowIOExceptionWithLastError(env,
-+ "Write to interrupt fd failed");
-+ }
-+}
-+
-+JNIEXPORT void JNICALL Java_sun_nio_ch_KqueueArrayWrapper_putKevent
-+ (JNIEnv *env, jclass cls, jlong address, jint index, jint fd, jshort flags, jshort filter)
-+{
-+ struct kevent *ev = (struct kevent *)jlong_to_ptr(address);
-+
-+ ev[index].ident = fd;
-+ ev[index].flags = flags;
-+ ev[index].filter = filter;
-+ ev[index].fflags = 0;
-+ ev[index].data = 0;
-+ ev[index].udata = NULL;
-+}
-+
-+JNIEXPORT jshort JNICALL Java_sun_nio_ch_KqueueArrayWrapper_getKeventFilter
-+ (JNIEnv *env, jclass cls, jlong address, jint index)
-+{
-+ struct kevent *ev = (struct kevent *)jlong_to_ptr(address);
-+
-+ return ev[index].filter;
-+}
-+
-+JNIEXPORT jshort JNICALL Java_sun_nio_ch_KqueueArrayWrapper_getKeventFlags
-+ (JNIEnv *env, jclass cls, jlong address, jint index)
-+{
-+ struct kevent *ev = (struct kevent *)jlong_to_ptr(address);
-+
-+ return ev[index].flags;
-+}
-+
-+JNIEXPORT jint JNICALL Java_sun_nio_ch_KqueueArrayWrapper_getKeventIdent
-+ (JNIEnv *env, jclass cls, jlong address, jint index)
-+{
-+ struct kevent *ev = (struct kevent *)jlong_to_ptr(address);
-+
-+ return (int)ev[index].ident;
-+}
-+
-+#ifdef __cplusplus
-+}
-+#endif
---- jdk/src/solaris/native/sun/nio/ch/NativeThread.c
-+++ jdk/src/solaris/native/sun/nio/ch/NativeThread.c
-@@ -33,12 +33,20 @@
- #include "nio_util.h"
-
-
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
-+#if defined(__linux__)
- #include <pthread.h>
- #include <sys/signal.h>
-
- /* Also defined in src/solaris/native/java/net/linux_close.c */
- #define INTERRUPT_SIGNAL (__SIGRTMAX - 2)
-+#else
-+#include <pthread.h>
-+#include <signal.h>
-+
-+/* Also defined in src/solaris/native/java/net/bsd_close.c */
-+#define INTERRUPT_SIGNAL SIGIO
-+#endif
-
- static void
- nullHandler(int sig)
-@@ -51,7 +59,7 @@
- JNIEXPORT void JNICALL
- Java_sun_nio_ch_NativeThread_init(JNIEnv *env, jclass cl)
- {
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
-
- /* Install the null handler for INTERRUPT_SIGNAL. This might overwrite the
- * handler previously installed by java/net/linux_close.c, but that's okay
-@@ -74,7 +82,7 @@
- JNIEXPORT jlong JNICALL
- Java_sun_nio_ch_NativeThread_current(JNIEnv *env, jclass cl)
- {
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- return (long)pthread_self();
- #else
- return -1;
-@@ -84,7 +92,7 @@
- JNIEXPORT void JNICALL
- Java_sun_nio_ch_NativeThread_signal(JNIEnv *env, jclass cl, jlong thread)
- {
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- if (pthread_kill((pthread_t)thread, INTERRUPT_SIGNAL))
- JNU_ThrowIOExceptionWithLastError(env, "Thread signal failed");
- #endif
---- jdk/src/solaris/native/sun/nio/ch/Net.c
-+++ jdk/src/solaris/native/sun/nio/ch/Net.c
-@@ -65,17 +65,33 @@
- jboolean reuse)
- {
- int fd;
--
-+ int type = (stream ? SOCK_STREAM : SOCK_DGRAM);
- #ifdef AF_INET6
-- if (ipv6_available())
-- fd = socket(AF_INET6, (stream ? SOCK_STREAM : SOCK_DGRAM), 0);
-- else
--#endif /* AF_INET6 */
-- fd = socket(AF_INET, (stream ? SOCK_STREAM : SOCK_DGRAM), 0);
-+ int domain = ipv6_available() ? AF_INET6 : AF_INET;
-+#else
-+ int domain = AF_INET;
-+#endif
-
-+ fd = socket(domain, type, 0);
- if (fd < 0) {
- return handleSocketError(env, errno);
- }
-+
-+#ifdef AF_INET6
-+ /* Disable IPV6_V6ONLY to ensure dual-socket support */
-+ if (domain == AF_INET6) {
-+ int arg = 0;
-+ if (setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, (char*)&arg,
-+ sizeof(int)) < 0) {
-+ JNU_ThrowByNameWithLastError(env,
-+ JNU_JAVANETPKG "SocketException",
-+ "sun.nio.ch.Net.setIntOption");
-+ close(fd);
-+ return -1;
-+ }
-+ }
-+#endif
-+
- if (reuse) {
- int arg = 1;
- if (NET_SetSockOpt(fd, SOL_SOCKET, SO_REUSEADDR, (char*)&arg,
-@@ -145,8 +161,30 @@
- SOCKADDR sa;
- socklen_t sa_len = SOCKADDR_LEN;
- if (getsockname(fdval(env, fdo), (struct sockaddr *)&sa, &sa_len) < 0) {
-+#ifdef _ALLBSD_SOURCE
-+ /*
-+ * XXXBSD:
-+ * ECONNRESET is specific to the BSDs. We can not return an error,
-+ * as the calling Java code with raise a java.lang.Error given the expectation
-+ * that getsockname() will never fail. According to the Single UNIX Specification,
-+ * it shouldn't fail. As such, we just fill in generic Linux-compatible values.
-+ */
-+ if (errno == ECONNRESET) {
-+ struct sockaddr_in *sin;
-+ sin = (struct sockaddr_in *) &sa;
-+ bzero(sin, sizeof(*sin));
-+ sin->sin_len = sizeof(struct sockaddr_in);
-+ sin->sin_family = AF_INET;
-+ sin->sin_port = htonl(0);
-+ sin->sin_addr.s_addr = INADDR_ANY;
-+ } else {
-+ handleSocketError(env, errno);
-+ return -1;
-+ }
-+#else /* _ALLBSD_SOURCE */
- handleSocketError(env, errno);
- return -1;
-+#endif
- }
- return NET_GetPortFromSockaddr((struct sockaddr *)&sa);
- }
-@@ -158,12 +196,75 @@
- socklen_t sa_len = SOCKADDR_LEN;
- int port;
- if (getsockname(fdval(env, fdo), (struct sockaddr *)&sa, &sa_len) < 0) {
-+#ifdef _ALLBSD_SOURCE
-+ /*
-+ * XXXBSD:
-+ * ECONNRESET is specific to the BSDs. We can not return an error,
-+ * as the calling Java code with raise a java.lang.Error given the expectation
-+ * that getsockname() will never fail. According to the Single UNIX Specification,
-+ * it shouldn't fail. As such, we just fill in generic Linux-compatible values.
-+ */
-+ if (errno == ECONNRESET) {
-+ struct sockaddr_in *sin;
-+ sin = (struct sockaddr_in *) &sa;
-+ bzero(sin, sizeof(*sin));
-+ sin->sin_len = sizeof(struct sockaddr_in);
-+ sin->sin_family = AF_INET;
-+ sin->sin_port = htonl(0);
-+ sin->sin_addr.s_addr = INADDR_ANY;
-+ } else {
-+ handleSocketError(env, errno);
-+ return -1;
-+ }
-+#else /* _ALLBSD_SOURCE */
- handleSocketError(env, errno);
- return NULL;
-+#endif
- }
- return NET_SockaddrToInetAddress(env, (struct sockaddr *)&sa, &port);
- }
-
-+#ifdef _ALLBSD_SOURCE
-+
-+#ifndef IP_BLOCK_SOURCE
-+
-+#define IP_ADD_SOURCE_MEMBERSHIP 70 /* join a source-specific group */
-+#define IP_DROP_SOURCE_MEMBERSHIP 71 /* drop a single source */
-+#define IP_BLOCK_SOURCE 72 /* block a source */
-+#define IP_UNBLOCK_SOURCE 73 /* unblock a source */
-+
-+#endif /* IP_BLOCK_SOURCE */
-+
-+#ifndef MCAST_BLOCK_SOURCE
-+
-+#define MCAST_JOIN_SOURCE_GROUP 82 /* join a source-specific group */
-+#define MCAST_LEAVE_SOURCE_GROUP 83 /* leave a single source */
-+#define MCAST_BLOCK_SOURCE 84 /* block a source */
-+#define MCAST_UNBLOCK_SOURCE 85 /* unblock a source */
-+
-+#endif /* MCAST_BLOCK_SOURCE */
-+
-+#ifndef IPV6_ADD_MEMBERSHIP
-+
-+#define IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP
-+#define IPV6_DROP_MEMBERSHIP IPV6_LEAVE_GROUP
-+
-+#endif /* IPV6_ADD_MEMBERSHIP */
-+
-+struct my_ip_mreq_source {
-+ struct in_addr imr_multiaddr;
-+ struct in_addr imr_interface;
-+ struct in_addr imr_sourceaddr;
-+};
-+
-+struct my_group_source_req {
-+ uint32_t gsr_interface; /* interface index */
-+ struct sockaddr_storage gsr_group; /* group address */
-+ struct sockaddr_storage gsr_source; /* source address */
-+};
-+
-+#endif /* _ALLBSD_SOURCE */
-+
-
- #ifdef NEEDED
-
-@@ -309,9 +410,11 @@
- switch (errorValue) {
- case EINPROGRESS: /* Non-blocking connect */
- return 0;
-+#ifdef EPROTO
- case EPROTO:
- xn = JNU_JAVANETPKG "ProtocolException";
- break;
-+#endif
- case ECONNREFUSED:
- xn = JNU_JAVANETPKG "ConnectException";
- break;
---- jdk/src/solaris/native/sun/security/jgss/wrapper/NativeFunc.c
-+++ jdk/src/solaris/native/sun/security/jgss/wrapper/NativeFunc.c
-@@ -26,7 +26,9 @@
- #include <stdio.h>
- #include <stdlib.h>
- #include <dlfcn.h>
-+#ifndef __APPLE__
- #include <link.h>
-+#endif
- #include "NativeFunc.h"
-
- /* standard GSS method names (ordering is from mapfile) */
---- jdk/src/solaris/native/sun/security/pkcs11/j2secmod_md.c
-+++ jdk/src/solaris/native/sun/security/pkcs11/j2secmod_md.c
-@@ -28,12 +28,19 @@
- #include <string.h>
-
- #include <dlfcn.h>
-+#ifndef __APPLE__
- #include <link.h>
-+#endif
-
- #include <jni_util.h>
-
- #include "j2secmod.h"
-
-+#ifndef RTLD_NOLOAD
-+/* A gross hack that will work if the NSS library is only opened once */
-+static void *nssLibHandle = NULL;
-+#endif
-+
- void *findFunction(JNIEnv *env, jlong jHandle, const char *functionName) {
- void *hModule = (void*)jHandle;
- void *fAddress = dlsym(hModule, functionName);
-@@ -51,7 +58,11 @@
- {
- const char *libName = (*env)->GetStringUTFChars(env, jLibName, NULL);
- // look up existing handle only, do not load
-+#ifdef RTLD_NOLOAD
- void *hModule = dlopen(libName, RTLD_NOLOAD);
-+#else
-+ void *hModule = nssLibHandle;
-+#endif
- dprintf2("-handle for %s: %u\n", libName, hModule);
- (*env)->ReleaseStringUTFChars(env, jLibName, libName);
- return (jlong)hModule;
-@@ -65,6 +76,9 @@
-
- dprintf1("-lib %s\n", libName);
- hModule = dlopen(libName, RTLD_LAZY);
-+#ifndef RTLD_NOLOAD
-+ nssLibHandle = hModule;
-+#endif
- (*env)->ReleaseStringUTFChars(env, jLibName, libName);
- dprintf2("-handle: %u (0X%X)\n", hModule, hModule);
-
---- jdk/src/solaris/native/sun/security/pkcs11/wrapper/p11_md.c
-+++ jdk/src/solaris/native/sun/security/pkcs11/wrapper/p11_md.c
-@@ -64,7 +64,9 @@
- #include <assert.h>
-
- #include <dlfcn.h>
-+#ifndef __APPLE__
- #include <link.h>
-+#endif
-
- #include <jni.h>
-
---- jdk/src/solaris/native/sun/security/smartcardio/pcsc_md.c
-+++ jdk/src/solaris/native/sun/security/smartcardio/pcsc_md.c
-@@ -29,7 +29,9 @@
- #include <assert.h>
-
- #include <dlfcn.h>
-+#ifndef __APPLE__
- #include <link.h>
-+#endif
-
- #include <winscard.h>
-
---- jdk/src/solaris/native/sun/tools/attach/BsdVirtualMachine.c
-+++ jdk/src/solaris/native/sun/tools/attach/BsdVirtualMachine.c
-@@ -35,10 +35,10 @@
- #include <dirent.h>
- #include <ctype.h>
- #include <sys/types.h>
--#include <sys/types.h>
- #include <sys/socket.h>
- #include <sys/stat.h>
- #include <sys/un.h>
-+#include <fcntl.h>
-
- #include "sun_tools_attach_BsdVirtualMachine.h"
-
-@@ -49,85 +49,6 @@
- } while(0)
-
- /*
-- * Defines a callback that is invoked for each process
-- */
--typedef void (*ProcessCallback)(const pid_t pid, void* user_data);
--
--/*
-- * Invokes the callback function for each process
-- */
--static void forEachProcess(ProcessCallback f, void* user_data) {
-- DIR* dir;
-- struct dirent* ptr;
--
-- /*
-- * To locate the children we scan /proc looking for files that have a
-- * position integer as a filename.
-- */
-- if ((dir = opendir("/proc")) == NULL) {
-- return;
-- }
-- while ((ptr = readdir(dir)) != NULL) {
-- pid_t pid;
--
-- /* skip current/parent directories */
-- if (strcmp(ptr->d_name, ".") == 0 || strcmp(ptr->d_name, "..") == 0) {
-- continue;
-- }
--
-- /* skip files that aren't numbers */
-- pid = (pid_t)atoi(ptr->d_name);
-- if ((int)pid <= 0) {
-- continue;
-- }
--
-- /* invoke the callback */
-- (*f)(pid, user_data);
-- }
-- closedir(dir);
--}
--
--
--/*
-- * Returns the parent pid of a given pid, or -1 if not found
-- */
--static pid_t getParent(pid_t pid) {
-- char state;
-- FILE* fp;
-- char stat[2048];
-- int statlen;
-- char fn[32];
-- int i, p;
-- char* s;
--
-- /*
-- * try to open /proc/%d/stat
-- */
-- sprintf(fn, "/proc/%d/stat", pid);
-- fp = fopen(fn, "r");
-- if (fp == NULL) {
-- return -1;
-- }
--
-- /*
-- * The format is: pid (command) state ppid ...
-- * As the command could be anything we must find the right most
-- * ")" and then skip the white spaces that follow it.
-- */
-- statlen = fread(stat, 1, 2047, fp);
-- stat[statlen] = '\0';
-- fclose(fp);
-- s = strrchr(stat, ')');
-- if (s == NULL) {
-- return -1;
-- }
-- do s++; while (isspace(*s));
-- i = sscanf(s, "%c %d", &state, &p);
-- return (pid_t)p;
--}
--
--
--/*
- * Class: sun_tools_attach_BsdVirtualMachine
- * Method: socket
- * Signature: ()I
-@@ -188,146 +109,6 @@
-
- /*
- * Class: sun_tools_attach_BsdVirtualMachine
-- * Method: isBsdThreads
-- * Signature: ()V
-- */
--JNIEXPORT jboolean JNICALL Java_sun_tools_attach_BsdVirtualMachine_isBsdThreads
-- (JNIEnv *env, jclass cls)
--{
--# ifndef _CS_GNU_LIBPTHREAD_VERSION
--# define _CS_GNU_LIBPTHREAD_VERSION 3
--# endif
-- size_t n;
-- char* s;
-- jboolean res;
--
-- n = confstr(_CS_GNU_LIBPTHREAD_VERSION, NULL, 0);
-- if (n <= 0) {
-- /* glibc before 2.3.2 only has BsdThreads */
-- return JNI_TRUE;
-- }
--
-- s = (char *)malloc(n);
-- if (s == NULL) {
-- JNU_ThrowOutOfMemoryError(env, "malloc failed");
-- return JNI_TRUE;
-- }
-- confstr(_CS_GNU_LIBPTHREAD_VERSION, s, n);
--
-- /*
-- * If the LIBPTHREAD version include "NPTL" then we know we
-- * have the new threads library and not BsdThreads
-- */
-- res = (jboolean)(strstr(s, "NPTL") == NULL);
-- free(s);
-- return res;
--}
--
--/*
-- * Structure and callback function used to count the children of
-- * a given process, and record the pid of the "manager thread".
-- */
--typedef struct {
-- pid_t ppid;
-- int count;
-- pid_t mpid;
--} ChildCountContext;
--
--static void ChildCountCallback(const pid_t pid, void* user_data) {
-- ChildCountContext* context = (ChildCountContext*)user_data;
-- if (getParent(pid) == context->ppid) {
-- context->count++;
-- /*
-- * Remember the pid of the first child. If the final count is
-- * one then this is the pid of the BsdThreads manager.
-- */
-- if (context->count == 1) {
-- context->mpid = pid;
-- }
-- }
--}
--
--/*
-- * Class: sun_tools_attach_BsdVirtualMachine
-- * Method: getBsdThreadsManager
-- * Signature: (I)I
-- */
--JNIEXPORT jint JNICALL Java_sun_tools_attach_BsdVirtualMachine_getBsdThreadsManager
-- (JNIEnv *env, jclass cls, jint pid)
--{
-- ChildCountContext context;
--
-- /*
-- * Iterate over all processes to find how many children 'pid' has
-- */
-- context.ppid = pid;
-- context.count = 0;
-- context.mpid = (pid_t)0;
-- forEachProcess(ChildCountCallback, (void*)&context);
--
-- /*
-- * If there's no children then this is likely the pid of the primordial
-- * created by the launcher - in that case the BsdThreads manager is the
-- * parent of this process.
-- */
-- if (context.count == 0) {
-- pid_t parent = getParent(pid);
-- if ((int)parent > 0) {
-- return (jint)parent;
-- }
-- }
--
-- /*
-- * There's one child so this is likely the embedded VM case where the
-- * the primordial thread == BsdThreads initial thread. The BsdThreads
-- * manager in that case is the child.
-- */
-- if (context.count == 1) {
-- return (jint)context.mpid;
-- }
--
-- /*
-- * If we get here it's most likely we were given the wrong pid
-- */
-- JNU_ThrowIOException(env, "Unable to get pid of BsdThreads manager thread");
-- return -1;
--}
--
--/*
-- * Structure and callback function used to send a QUIT signal to all
-- * children of a given process
-- */
--typedef struct {
-- pid_t ppid;
--} SendQuitContext;
--
--static void SendQuitCallback(const pid_t pid, void* user_data) {
-- SendQuitContext* context = (SendQuitContext*)user_data;
-- pid_t parent = getParent(pid);
-- if (parent == context->ppid) {
-- kill(pid, SIGQUIT);
-- }
--}
--
--/*
-- * Class: sun_tools_attach_BsdVirtualMachine
-- * Method: sendQuitToChildrenOf
-- * Signature: (I)V
-- */
--JNIEXPORT void JNICALL Java_sun_tools_attach_BsdVirtualMachine_sendQuitToChildrenOf
-- (JNIEnv *env, jclass cls, jint pid)
--{
-- SendQuitContext context;
-- context.ppid = (pid_t)pid;
--
-- /*
-- * Iterate over all children of 'pid' and send a QUIT signal to each.
-- */
-- forEachProcess(SendQuitCallback, (void*)&context);
--}
--
--/*
-- * Class: sun_tools_attach_BsdVirtualMachine
- * Method: sendQuitTo
- * Signature: (I)V
- */
-@@ -350,7 +131,7 @@
- jboolean isCopy;
- const char* p = GetStringPlatformChars(env, path, &isCopy);
- if (p != NULL) {
-- struct stat64 sb;
-+ struct stat sb;
- uid_t uid, gid;
- int res;
-
-@@ -361,7 +142,7 @@
- uid = geteuid();
- gid = getegid();
-
-- res = stat64(p, &sb);
-+ res = stat(p, &sb);
- if (res != 0) {
- /* save errno */
- res = errno;
-@@ -459,3 +240,40 @@
-
- } while (remaining > 0);
- }
-+
-+/*
-+ * Class: sun_tools_attach_BSDVirtualMachine
-+ * Method: createAttachFile
-+ * Signature: (Ljava.lang.String;)V
-+ */
-+JNIEXPORT void JNICALL Java_sun_tools_attach_BsdVirtualMachine_createAttachFile(JNIEnv *env, jclass cls, jstring path)
-+{
-+ const char* _path;
-+ jboolean isCopy;
-+ int fd, rc;
-+
-+ _path = GetStringPlatformChars(env, path, &isCopy);
-+ if (_path == NULL) {
-+ JNU_ThrowIOException(env, "Must specify a path");
-+ return;
-+ }
-+
-+ RESTARTABLE(open(_path, O_CREAT | O_EXCL, S_IWUSR | S_IRUSR), fd);
-+ if (fd == -1) {
-+ /* release p here before we throw an I/O exception */
-+ if (isCopy) {
-+ JNU_ReleaseStringPlatformChars(env, path, _path);
-+ }
-+ JNU_ThrowIOExceptionWithLastError(env, "open");
-+ return;
-+ }
-+
-+ RESTARTABLE(chown(_path, geteuid(), getegid()), rc);
-+
-+ RESTARTABLE(close(fd), rc);
-+
-+ /* release p here */
-+ if (isCopy) {
-+ JNU_ReleaseStringPlatformChars(env, path, _path);
-+ }
-+}
---- jdk/src/solaris/native/sun/xawt/XWindow.c
-+++ jdk/src/solaris/native/sun/xawt/XWindow.c
-@@ -228,10 +228,10 @@
- {java_awt_event_KeyEvent_VK_DOWN, XK_Down, FALSE, java_awt_event_KeyEvent_KEY_LOCATION_STANDARD},
-
- /* Keypad equivalents of Triangular Navigation Block */
-- {java_awt_event_KeyEvent_VK_KP_LEFT, XK_KP_Left, FALSE, java_awt_event_KeyEvent_KEY_LOCATION_NUMPAD},
-- {java_awt_event_KeyEvent_VK_KP_UP, XK_KP_Up, FALSE, java_awt_event_KeyEvent_KEY_LOCATION_NUMPAD},
-- {java_awt_event_KeyEvent_VK_KP_RIGHT, XK_KP_Right, FALSE, java_awt_event_KeyEvent_KEY_LOCATION_NUMPAD},
-- {java_awt_event_KeyEvent_VK_KP_DOWN, XK_KP_Down, FALSE, java_awt_event_KeyEvent_KEY_LOCATION_NUMPAD},
-+ {java_awt_event_KeyEvent_VK_LEFT, XK_KP_Left, FALSE, java_awt_event_KeyEvent_KEY_LOCATION_NUMPAD},
-+ {java_awt_event_KeyEvent_VK_UP, XK_KP_Up, FALSE, java_awt_event_KeyEvent_KEY_LOCATION_NUMPAD},
-+ {java_awt_event_KeyEvent_VK_RIGHT, XK_KP_Right, FALSE, java_awt_event_KeyEvent_KEY_LOCATION_NUMPAD},
-+ {java_awt_event_KeyEvent_VK_DOWN, XK_KP_Down, FALSE, java_awt_event_KeyEvent_KEY_LOCATION_NUMPAD},
-
- /* Other vendor-specific Triangular Navigation Block */
- {java_awt_event_KeyEvent_VK_LEFT, osfXK_Left, FALSE, java_awt_event_KeyEvent_KEY_LOCATION_STANDARD},
-@@ -865,7 +865,7 @@
- {
- KeySym originalKeysym = *keysym;
-
--#ifndef __linux__
-+#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/solaris/native/sun/xawt/awt_Desktop.c
-+++ jdk/src/solaris/native/sun/xawt/awt_Desktop.c
-@@ -24,6 +24,7 @@
- */
-
- #include <jni.h>
-+#include <jvm_md.h>
- #include <dlfcn.h>
-
- typedef int gboolean;
-@@ -39,7 +40,7 @@
- void *gnome_handle;
- const char *errmsg;
-
-- vfs_handle = dlopen("libgnomevfs-2.so.0", RTLD_LAZY);
-+ vfs_handle = dlopen(VERSIONED_JNI_LIB_NAME("gnomevfs-2", "0"), RTLD_LAZY);
- if (vfs_handle == NULL) {
- #ifdef INTERNAL_BUILD
- fprintf(stderr, "can not load libgnomevfs-2.so\n");
-@@ -57,7 +58,7 @@
- // call gonme_vfs_init()
- (*gnome_vfs_init)();
-
-- gnome_handle = dlopen("libgnome-2.so.0", RTLD_LAZY);
-+ gnome_handle = dlopen(VERSIONED_JNI_LIB_NAME("gnome-2", "0"), RTLD_LAZY);
- if (gnome_handle == NULL) {
- #ifdef INTERNAL_BUILD
- fprintf(stderr, "can not load libgnome-2.so\n");
---- jdk/src/solaris/npt/npt_md.h
-+++ jdk/src/solaris/npt/npt_md.h
-@@ -32,9 +32,10 @@
- #include <string.h>
- #include <errno.h>
- #include <dlfcn.h>
-+#ifndef __APPLE__
- #include <link.h>
--
--#define NPT_LIBNAME "libnpt.so"
-+#endif
-+#include <jvm_md.h>
-
- #define NPT_INITIALIZE(pnpt,version,options) \
- { \
-@@ -43,7 +44,7 @@
- \
- if ( (pnpt) == NULL ) NPT_ERROR("NptEnv* is NULL"); \
- *(pnpt) = NULL; \
-- _handle = dlopen(NPT_LIBNAME, RTLD_LAZY); \
-+ _handle = dlopen(JNI_LIB_NAME("npt"), RTLD_LAZY); \
- if ( _handle == NULL ) NPT_ERROR("Cannot open library"); \
- _sym = dlsym(_handle, "nptInitialize"); \
- if ( _sym == NULL ) NPT_ERROR("Cannot find nptInitialize"); \
---- jdk/src/solaris/transport/socket/socket_md.c
-+++ jdk/src/solaris/transport/socket/socket_md.c
-@@ -36,7 +36,7 @@
- #ifdef __solaris__
- #include <thread.h>
- #endif
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- #include <pthread.h>
- #include <sys/poll.h>
- #endif
-@@ -283,7 +283,7 @@
-
- #endif
-
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- int
- dbgsysTlsAlloc() {
- pthread_key_t key;
---- langtools/src/share/classes/com/sun/tools/javah/Util.java
-+++ langtools/src/share/classes/com/sun/tools/javah/Util.java
-@@ -180,6 +180,14 @@
- os = "win32";
- } else if (os.indexOf("Linux") >= 0) {
- os = "Linux";
-+ } else if (os.indexOf("FreeBSD") >= 0) {
-+ os = "FreeBSD";
-+ } else if (os.indexOf("Darwin") >= 0) {
-+ os = "Darwin";
-+ } else if (os.indexOf("NetBSD") >= 0) {
-+ os = "NetBSD";
-+ } else if (os.indexOf("OpenBSD") >= 0) {
-+ os = "OpenBSD";
- }
- String arch = System.getProperty("os.arch");
- String resname = "com.sun.tools.javah.resources." + os + "_" + arch;
diff --git a/java/openjdk6/files/patch-test b/java/openjdk6/files/patch-test
deleted file mode 100644
index b82367dc2a3a..000000000000
--- a/java/openjdk6/files/patch-test
+++ /dev/null
@@ -1,206 +0,0 @@
---- jdk/test/TestEnv.java
-+++ jdk/test/TestEnv.java
-@@ -65,14 +65,14 @@
- // Reachable host with the following services running:
- // - echo service (port 7)
- // - day time port (port 13)
-- { "host", "javaweb.sfbay.sun.com" },
-+ { "host", "icedtea.classpath.org" },
-
- // Reachable host that refuses connections to port 80
-- { "refusing_host", "jano1.sfbay.sun.com" },
-+ { "refusing_host", "ns1.gnu.org" },
-
- // Reachable host that is of sufficient hops away that a connection
- // takes a while to be established (connect doesn't complete immediatly)
-- { "far_host", "irejano.ireland.sun.com" },
-+ { "far_host", "developer.classpath.org" },
-
- // Hostname that cannot be resolved by named service
- { "unresovable_host", "blah-blah.blah-blah.blah" },
---- jdk/test/com/sun/management/OperatingSystemMXBean/TestTotalSwap.sh
-+++ jdk/test/com/sun/management/OperatingSystemMXBean/TestTotalSwap.sh
-@@ -72,6 +72,16 @@
- done
- }
-
-+freebsd_swap_size()
-+{
-+ total_swap=0
-+ for i in `/usr/sbin/swapinfo -k | awk '{print $2}' | grep -v blocks`
-+ do
-+ # swapinfo -k returns size in blocks of 1024 bytes.
-+ total_swap=`expr $i \* 1024 + $total_swap`
-+ done
-+}
-+
- # Test GetTotalSwapSpaceSize if we are running on Unix
- total_swap=0
- case `uname -s` in
-@@ -80,7 +90,7 @@
- runOne GetTotalSwapSpaceSize $total_swap
- ;;
- FreeBSD )
-- total_swap=`free -b | grep -i swap | awk '{print $2}'`
-+ freebsd_swap_size
- runOne GetTotalSwapSpaceSize $total_swap
- ;;
- * )
---- jdk/test/java/io/File/GetXSpace.java
-+++ jdk/test/java/io/File/GetXSpace.java
-@@ -49,7 +49,7 @@
- private static final String name = System.getProperty("os.name");
- private static final String dfFormat;
- static {
-- if (name.equals("SunOS") || name.equals("Linux")) {
-+ if (name.equals("FreeBSD") || name.equals("SunOS") || name.equals("Linux")) {
- // 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/lang/ProcessBuilder/Basic.java
-+++ jdk/test/java/lang/ProcessBuilder/Basic.java
-@@ -1096,7 +1096,7 @@
- String[] cmdp = childArgs.toArray(new String[childArgs.size()]);
- String[] envp = {"=ExitValue=3", "=C:=\\"};
- Process p = Runtime.getRuntime().exec(cmdp, envp);
-- String expected = Windows.is() ? "=C:=\\,=ExitValue=3," : "=C:=\\,";
-+ String expected = Windows.is() ? "=C:=\\,=ExitValue=3," : "";
- equal(commandOutput(p), expected);
- if (Windows.is()) {
- ProcessBuilder pb = new ProcessBuilder(childArgs);
---- jdk/test/java/lang/ProcessBuilder/Zombies.java
-+++ jdk/test/java/lang/ProcessBuilder/Zombies.java
-@@ -49,11 +49,11 @@
- } catch (IOException _) {/* OK */}
-
- try {
-- rt.exec("/bin/true", null, new File("no-such-dir"));
-+ rt.exec("/usr/bin/true", null, new File("no-such-dir"));
- throw new Error("expected IOException not thrown");
- } catch (IOException _) {/* OK */}
-
-- rt.exec("/bin/true").waitFor();
-+ rt.exec("/usr/bin/true").waitFor();
-
- // Count all the zombies that are children of this Java process
- final String[] zombieCounter = {
---- jdk/test/java/lang/management/OperatingSystemMXBean/GetSystemLoadAverage.java
-+++ jdk/test/java/lang/management/OperatingSystemMXBean/GetSystemLoadAverage.java
-@@ -79,7 +79,7 @@
- System.out.println("Test passed.");
- }
-
-- private static String LOAD_AVERAGE_TEXT = "load average:";
-+ private static String LOAD_AVERAGE_TEXT = "load averages:";
- private static void checkLoadAvg() throws Exception {
- // Obtain load average from OS command
- ProcessBuilder pb = new ProcessBuilder("/usr/bin/uptime");
---- jdk/test/java/net/ServerSocket/AcceptCauseFileDescriptorLeak.java
-+++ jdk/test/java/net/ServerSocket/AcceptCauseFileDescriptorLeak.java
-@@ -79,7 +79,7 @@
- * on Windows, too.
- */
- private static int countOpenFD() {
-- File dirOfFD = new File("/proc/self/fd");
-+ File dirOfFD = new File("/dev/fd");
- File[] fds = dirOfFD.listFiles();
-
- if (fds != null)
---- jdk/test/java/nio/channels/SocketChannel/LocalAddress.java
-+++ jdk/test/java/nio/channels/SocketChannel/LocalAddress.java
-@@ -40,7 +40,7 @@
- InetAddress bogus = InetAddress.getByName("0.0.0.0");
- SocketChannel sc = SocketChannel.open();
- InetSocketAddress saddr = new InetSocketAddress(
-- InetAddress.getByName(TestEnv.getProperty("host")), 23);
-+ InetAddress.getByName(TestEnv.getProperty("host")), 7);
-
- //Test1: connect only
- sc.connect(saddr);
---- jdk/test/java/nio/channels/SocketChannel/Shutdown.java
-+++ jdk/test/java/nio/channels/SocketChannel/Shutdown.java
-@@ -35,7 +35,7 @@
-
- public static void main(String args[]) throws Exception {
- InetSocketAddress sa = new InetSocketAddress(
-- InetAddress.getByName(TestEnv.getProperty("host")), 23);
-+ InetAddress.getByName(TestEnv.getProperty("host")), 7);
- SocketChannel sc = SocketChannel.open(sa);
- boolean before = sc.socket().isInputShutdown();
- sc.socket().shutdownInput();
---- jdk/test/java/nio/channels/spi/SelectorProvider/inheritedChannel/Launcher.c
-+++ jdk/test/java/nio/channels/spi/SelectorProvider/inheritedChannel/Launcher.c
-@@ -135,7 +135,7 @@
- }
- close(thisFd);
-
-- if ((dp = opendir("/proc/self/fd")) == NULL) {
-+ if ((dp = opendir("/dev/fd")) == NULL) {
- _exit(-1);
- }
-
---- jdk/test/java/nio/charset/Charset/default.sh
-+++ jdk/test/java/nio/charset/Charset/default.sh
-@@ -76,22 +76,20 @@
-
- }
-
--go en_US iso-8859-1
--go ja_JP.utf8 utf-8
--go tr_TR iso-8859-9
--go C us-ascii
-+go en_US iso-8859-1
-+go ja_JP.UTF-8 utf-8
-+go tr_TR.ISO-8859-9 iso-8859-9
-+go C iso-8859-1
-
-+# FreeBSD
- if [ "$s" = FreeBSD ]; then
-- go ja_JP x-euc-jp-linux
-- go ja_JP.eucjp x-euc-jp-linux
-- go ja_JP.ujis x-euc-jp-linux
-- go ja_JP.utf8 utf-8
-+ go ja_JP.eucJP euc-jp
-+ go ja_JP.SJIS shift_jis
- fi
-
- # Solaris
- if [ "$s" = SunOS ]; then
-- go ja x-eucjp-open
-- go ja_JP.eucJP x-eucjp-open
-- go ja_JP.PCK x-PCK
-- go ja_JP.UTF-8 utf-8
-+ go ja x-eucjp-open
-+ go ja_JP.eucJP x-eucjp-open
-+ go ja_JP.PCK x-PCK
- fi
---- jdk/test/sun/net/InetAddress/nameservice/dns/cname.sh
-+++ jdk/test/sun/net/InetAddress/nameservice/dns/cname.sh
-@@ -33,7 +33,7 @@
-
- # The host that we try to resolve
-
--HOST=webcache.sfbay.sun.com
-+HOST=developer.classpath.org
-
- # fail gracefully if DNS is not configured or there
- # isn't a CNAME record.
---- jdk/test/tools/pack200/MemoryAllocatorTest.java
-+++ jdk/test/tools/pack200/MemoryAllocatorTest.java
-@@ -81,6 +81,7 @@
-
- static final boolean debug = Boolean.getBoolean("MemoryAllocatorTest.Debug");
- static final boolean WINDOWS = System.getProperty("os.name").startsWith("Windows");
-+ static final boolean FREEBSD = System.getProperty("os.name").startsWith("FreeBSD");
- static final boolean LINUX = System.getProperty("os.name").startsWith("Linux");
- static final boolean SIXTYFOUR_BIT = System.getProperty("sun.arch.data.model", "32").equals("64");
- static final private int NATIVE_EXPECTED_EXIT_CODE = (WINDOWS) ? -1 : 255;
-@@ -425,7 +426,7 @@
- * the error message is not accurate for us to discern if the test
- * passes successfully.
- */
-- if (SIXTYFOUR_BIT && (LINUX || WINDOWS)) {
-+ if (SIXTYFOUR_BIT && (FREEBSD || LINUX || WINDOWS)) {
- System.out.println("Warning: Windows/Linux 64bit tests passes vacuously");
- return;
- }
diff --git a/java/openjdk6/files/test_gamma-disable.patch b/java/openjdk6/files/test_gamma-disable.patch
deleted file mode 100644
index 1be01027f977..000000000000
--- a/java/openjdk6/files/test_gamma-disable.patch
+++ /dev/null
@@ -1,45 +0,0 @@
---- hotspot/make/bsd/Makefile
-+++ hotspot/make/bsd/Makefile
-@@ -287,42 +288,36 @@
-
- $(TARGETS_C2): $(SUBDIRS_C2)
- cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && $(MAKE) $(MFLAGS)
-- cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && ./test_gamma
- ifdef INSTALL
- cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && $(MAKE) $(MFLAGS) install
- endif
-
- $(TARGETS_TIERED): $(SUBDIRS_TIERED)
- cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && $(MAKE) $(MFLAGS)
-- cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && ./test_gamma
- ifdef INSTALL
- cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && $(MAKE) $(MFLAGS) install
- endif
-
- $(TARGETS_C1): $(SUBDIRS_C1)
- cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && $(MAKE) $(MFLAGS)
-- cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && ./test_gamma
- ifdef INSTALL
- cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && $(MAKE) $(MFLAGS) install
- endif
-
- $(TARGETS_CORE): $(SUBDIRS_CORE)
- cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS)
-- cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && ./test_gamma
- ifdef INSTALL
- cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS) install
- endif
-
- $(TARGETS_ZERO): $(SUBDIRS_ZERO)
- cd $(OSNAME)_$(VARIANTARCH)_zero/$(patsubst %zero,%,$@) && $(MAKE) $(MFLAGS)
-- cd $(OSNAME)_$(VARIANTARCH)_zero/$(patsubst %zero,%,$@) && ./test_gamma
- ifdef INSTALL
- cd $(OSNAME)_$(VARIANTARCH)_zero/$(patsubst %zero,%,$@) && $(MAKE) $(MFLAGS) install
- endif
-
- $(TARGETS_SHARK): $(SUBDIRS_SHARK)
- cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && $(MAKE) $(MFLAGS)
-- cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && ./test_gamma
- ifdef INSTALL
- cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && $(MAKE) $(MFLAGS) install
- endif
diff --git a/java/openjdk6/pkg-descr b/java/openjdk6/pkg-descr
deleted file mode 100644
index 54c337919c09..000000000000
--- a/java/openjdk6/pkg-descr
+++ /dev/null
@@ -1,7 +0,0 @@
-OpenJDK is an open-source implementation of the Java Platform, Standard Edition.
-
-Much of the OpenJDK code is licensed under the GPL version 2 with the
-Classpath exception. The Java Hotspot virtual machine source code is
-licensed under the GPL version 2 only.
-
-WWW: https://openjdk.java.net/
diff --git a/java/openjdk6/pkg-message b/java/openjdk6/pkg-message
deleted file mode 100644
index 2ea3d87d89c8..000000000000
--- a/java/openjdk6/pkg-message
+++ /dev/null
@@ -1,18 +0,0 @@
-[
-{ type: install
- message: <<EOM
-This OpenJDK implementation requires fdescfs(5) mounted on /dev/fd and
-procfs(5) mounted on /proc.
-
-If you have not done it yet, please do the following:
-
- mount -t fdescfs fdesc /dev/fd
- mount -t procfs proc /proc
-
-To make it permanent, you need the following lines in /etc/fstab:
-
- fdesc /dev/fd fdescfs rw 0 0
- proc /proc procfs rw 0 0
-EOM
-}
-]