From: Emilio Pozuelo Monfort Date: Tue, 20 Nov 2018 16:55:11 +0000 (+0000) Subject: openjdk-7 (7u181-2.6.14-2~deb8u1) jessie-security; urgency=medium X-Git-Tag: archive/raspbian/7u181-2.6.14-2_deb8u1+rpi1^2~10 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=31411c404a087d3ffecdc035cd9e532bce46703c;p=openjdk-7.git openjdk-7 (7u181-2.6.14-2~deb8u1) jessie-security; urgency=medium * Rebuild for jessie-security. [dgit import unpatched openjdk-7 7u181-2.6.14-2~deb8u1] --- 31411c404a087d3ffecdc035cd9e532bce46703c diff --cc debian/JAVA_HOME index 0000000,0000000..876e989 new file mode 100644 --- /dev/null +++ b/debian/JAVA_HOME @@@ -1,0 -1,0 +1,13 @@@ ++ JAVA_HOME ++ ++1. Legacy use of JAVA_HOME ++ ++ As of the latest versions of java-common there really should ++ be no need for JAVA_HOME as Java(TM) should be completely ++ integrated with your Debian GNU/Linux system. ++ ++ ++2. Selecting OpenJDK 7 as the default Java(TM) implementation ++ ++ Please see README.alternatives for instructions on how ++ to make OpenJDK 7 executables and man pages the default on your system. diff --cc debian/JB-archive.applications.in index 0000000,0000000..7f20fd5 new file mode 100644 --- /dev/null +++ b/debian/JB-archive.applications.in @@@ -1,0 -1,0 +1,6 @@@ ++java-archive ++ command=/usr/bin/java -jar ++ name=java-archive ++ can_open_multiple_files=false ++ requires_terminal=false ++ mime_types=application/java-archive,application/x-java-archive,application/x-jar diff --cc debian/JB-archive.keys.in index 0000000,0000000..743e3c8 new file mode 100644 --- /dev/null +++ b/debian/JB-archive.keys.in @@@ -1,0 -1,0 +1,18 @@@ ++application/java-archive ++ description=Java Archive ++ icon_filename=@basename@ ++ default_action_type=application ++ default_application_id=java-archive ++ short_list_application_user_additions=java-archive ++application/x-java-archive ++ description=Java Archive ++ icon_filename=@basename@ ++ default_action_type=application ++ default_application_id=java-archive ++ short_list_application_user_additions=java-archive ++application/x-jar ++ description=Java Archive ++ icon_filename=@basename@ ++ default_action_type=application ++ default_application_id=java-archive ++ short_list_application_user_additions=java-archive diff --cc debian/JB-archive.mime.in index 0000000,0000000..e354ead new file mode 100644 --- /dev/null +++ b/debian/JB-archive.mime.in @@@ -1,0 -1,0 +1,6 @@@ ++application/java-archive ++ ext: jar ++application/x-java-archive ++ ext: jar ++application/x-jar ++ ext: jar diff --cc debian/JB-demo.menu.in index 0000000,0000000..58aec29 new file mode 100644 --- /dev/null +++ b/debian/JB-demo.menu.in @@@ -1,0 -1,0 +1,55 @@@ ++?package(@basename@-demo):\ ++ needs="x11"\ ++ section="Applications/Programming"\ ++ title="@vendor@ Java @RELEASE@ FileChooser Demo"\ ++ command="/bin/sh -c 'cd /@basedir@/demo/jfc/FileChooserDemo; /@basedir@/bin/java -jar FileChooserDemo.jar'"\ ++ icon="/usr/share/pixmaps/@basename@-app.xpm"\ ++ hints="Java2" ++ ++?package(@basename@-demo):\ ++ needs="x11"\ ++ section="Applications/Programming"\ ++ title="@vendor@ Java @RELEASE@ Font2DTest Demo"\ ++ command="/bin/sh -c 'cd /@basedir@/demo/jfc/Font2DTest; /@basedir@/bin/java -jar Font2DTest.jar'"\ ++ icon="/usr/share/pixmaps/@basename@-app.xpm"\ ++ hints="Java2" ++ ++?package(@basename@-demo):\ ++ needs="x11"\ ++ section="Applications/Programming"\ ++ title="@vendor@ Java @RELEASE@ Java 2D Demo"\ ++ command="/bin/sh -c 'cd /@basedir@/demo/jfc/Java2D; /@basedir@/bin/java -jar Java2Demo.jar'"\ ++ icon="/usr/share/pixmaps/@basename@-app.xpm"\ ++ hints="Java2" ++ ++?package(@basename@-demo):\ ++ needs="x11"\ ++ section="Applications/Programming"\ ++ title="@vendor@ Java @RELEASE@ SampleTree Demo"\ ++ command="/bin/sh -c 'cd /@basedir@/demo/jfc/SampleTree; /@basedir@/bin/java -jar SampleTree.jar'"\ ++ icon="/usr/share/pixmaps/@basename@-app.xpm"\ ++ hints="Java2" ++ ++?package(@basename@-demo):\ ++ needs="x11"\ ++ section="Applications/Programming"\ ++ title="@vendor@ Java @RELEASE@ Stylepad Demo"\ ++ command="/bin/sh -c 'cd /@basedir@/demo/jfc/Stylepad; /@basedir@/bin/java -jar Stylepad.jar'"\ ++ icon="/usr/share/pixmaps/@basename@-app.xpm"\ ++ hints="Java2" ++ ++?package(@basename@-demo):\ ++ needs="x11"\ ++ section="Applications/Programming"\ ++ title="@vendor@ Java @RELEASE@ SwingSet2 Demo"\ ++ command="/bin/sh -c 'cd /@basedir@/demo/jfc/SwingSet2; /@basedir@/bin/java -jar SwingSet2.jar'"\ ++ icon="/usr/share/pixmaps/@basename@-app.xpm"\ ++ hints="Java2" ++ ++?package(@basename@-demo):\ ++ needs="x11"\ ++ section="Applications/Programming"\ ++ title="@vendor@ Java @RELEASE@ TableExample Demo"\ ++ command="/bin/sh -c 'cd /@basedir@/demo/jfc/TableExample; /@basedir@/bin/java -jar TableExample.jar'"\ ++ icon="/usr/share/pixmaps/@basename@-app.xpm"\ ++ hints="Java2" diff --cc debian/JB-demo.overrides.in index 0000000,0000000..43cc902 new file mode 100644 --- /dev/null +++ b/debian/JB-demo.overrides.in @@@ -1,0 -1,0 +1,5 @@@ ++# jpda/examples.jar only contains source code ++@basename@-demo: codeless-jar usr/share/doc/openjdk-7-jre-headless/demo/jpda/examples.jar ++ ++# yes, we are @basename@ ++@basename@-demo: incompatible-java-bytecode-format diff --cc debian/JB-doc.doc-base.in index 0000000,0000000..619d9ae new file mode 100644 --- /dev/null +++ b/debian/JB-doc.doc-base.in @@@ -1,0 -1,0 +1,11 @@@ ++Document: @JDK@-doc ++Title: @vendor@ Java(TM) @RELEASE@ JDK, Standard Edition Documentation ++Author: @vendor@ ++Abstract: The Java @RELEASE@ Platform Documentation contains API specifications, ++ feature descriptions, developer guides, reference pages for JDK tools ++ and utilities, demos, and links to related information. ++Section: Programming ++ ++Format: HTML ++Index: /usr/share/doc/@basename@-jre-headless/api/index.html ++Files: /usr/share/doc/@basename@-jre-headless/api/*/*.html diff --cc debian/JB-fonts.defoma-hints.in index 0000000,0000000..80212e2 new file mode 100644 --- /dev/null +++ b/debian/JB-fonts.defoma-hints.in @@@ -1,0 -1,0 +1,187 @@@ ++category truetype ++ ++# Sans ++ ++begin /usr/share/fonts/truetype/ttf-lucida/LucidaSansRegular.ttf ++ Family = LucidaSans ++ FontName = LucidaSans ++ Encoding = Unicode ++ Location = English ++ Charset = ISO8859-1 ISO8859-2 ISO8859-7 ISO8859-9 ISO8859-15 ISO10646-1 ++ UniCharset = ISO8859-1 ISO8859-2 ISO8859-7 ISO8859-9 ISO8859-15 ++ GeneralFamily = SansSerif ++ Weight = Book ++ Width = Variable ++ Shape = NoSerif Upright ++ Foundry = Lucida ++ Priority = 15 ++end ++ ++begin /usr/share/fonts/truetype/ttf-lucida/LucidaSansDemiBold.ttf ++ Family = LucidaSans ++ FontName = LucidaSans-Demibold ++ Encoding = Unicode ++ Location = English ++ Charset = ISO8859-1 ISO8859-2 ISO8859-7 ISO8859-9 ISO8859-15 ISO10646-1 ++ UniCharset = ISO8859-1 ISO8859-2 ISO8859-7 ISO8859-9 ISO8859-15 ++ GeneralFamily = SansSerif ++ Weight = Bold ++ Width = Variable ++ Shape = NoSerif Upright ++ Foundry = Lucida ++ Priority = 15 ++end ++ ++begin /usr/share/fonts/truetype/ttf-lucida/LucidaSansOblique.ttf ++ Family = LucidaSans ++ FontName = LucidaSans-Oblique ++ Encoding = Unicode ++ Location = English ++ Charset = ISO8859-1 ISO8859-2 ISO8859-7 ISO8859-9 ISO8859-15 ISO10646-1 ++ UniCharset = ISO8859-1 ISO8859-2 ISO8859-7 ISO8859-9 ISO8859-15 ++ GeneralFamily = SansSerif ++ Weight = Thin ++ Width = Variable ++ Shape = NoSerif Oblique ++ Foundry = Lucida ++ Priority = 15 ++end ++ ++begin /usr/share/fonts/truetype/ttf-lucida/LucidaSansDemiOblique.ttf ++ Family = LucidaSans ++ FontName = LucidaSans-Demibold-Oblique ++ Encoding = Unicode ++ Location = English ++ Charset = ISO8859-1 ISO8859-2 ISO8859-7 ISO8859-9 ISO8859-15 ISO10646-1 ++ UniCharset = ISO8859-1 ISO8859-2 ISO8859-7 ISO8859-9 ISO8859-15 ++ GeneralFamily = SansSerif ++ Weight = Bold ++ Width = Variable ++ Shape = NoSerif Oblique ++ Foundry = Lucida ++ Priority = 15 ++end ++ ++# Serif ++ ++begin /usr/share/fonts/truetype/ttf-lucida/LucidaBrightRegular.ttf ++ Family = LucidaBright ++ FontName = LucidaBright-Regular ++ Encoding = Unicode ++ Location = English ++ Charset = ISO8859-1 ISO8859-2 ISO8859-7 ISO8859-9 ISO8859-15 ISO10646-1 ++ UniCharset = ISO8859-1 ISO8859-2 ISO8859-7 ISO8859-9 ISO8859-15 ++ GeneralFamily = Roman ++ Weight = Book ++ Width = Variable ++ Shape = NoSerif Upright ++ Foundry = Lucida ++ Priority = 15 ++end ++ ++begin /usr/share/fonts/truetype/ttf-lucida/LucidaBrightItalic.ttf ++ Family = LucidaBright ++ FontName = LucidaBright-Italic ++ Encoding = Unicode ++ Location = English ++ Charset = ISO8859-1 ISO8859-2 ISO8859-7 ISO8859-9 ISO8859-15 ISO10646-1 ++ UniCharset = ISO8859-1 ISO8859-2 ISO8859-7 ISO8859-9 ISO8859-15 ++ GeneralFamily = Roman ++ Weight = Book ++ Width = Variable ++ Shape = NoSerif Oblique ++ Foundry = Lucida ++ Priority = 15 ++end ++ ++begin /usr/share/fonts/truetype/ttf-lucida/LucidaBrightDemiBold.ttf ++ Family = Lucida-Bright ++ FontName = Lucida-Bright-Demi ++ Encoding = Unicode ++ Location = English ++ Charset = ISO8859-1 ISO8859-2 ISO8859-7 ISO8859-9 ISO8859-15 ISO10646-1 ++ UniCharset = ISO8859-1 ISO8859-2 ISO8859-7 ISO8859-9 ISO8859-15 ++ GeneralFamily = Roman ++ Weight = Bold ++ Width = Variable ++ Shape = NoSerif Upright ++ Foundry = Lucida ++ Priority = 15 ++end ++ ++begin /usr/share/fonts/truetype/ttf-lucida/LucidaBrightDemiItalic.ttf ++ Family = Lucida-Bright ++ FontName = Lucida-Bright-DemiItalic ++ Encoding = Unicode ++ Location = English ++ Charset = ISO8859-1 ISO8859-2 ISO8859-7 ISO8859-9 ISO8859-15 ISO10646-1 ++ UniCharset = ISO8859-1 ISO8859-2 ISO8859-7 ISO8859-9 ISO8859-15 ++ GeneralFamily = Roman ++ Weight = Demi ++ Width = Variable ++ Shape = NoSerif Oblique ++ Foundry = Lucida ++ Priority = 15 ++end ++ ++# Mono ++ ++begin /usr/share/fonts/truetype/ttf-lucida/LucidaTypewriterRegular.ttf ++ Family = LucidaSans-Typewriter ++ FontName = LucidaSans-Typewriter ++ Encoding = Unicode ++ Location = English ++ Charset = ISO8859-1 ISO8859-2 ISO8859-7 ISO8859-9 ISO8859-15 ISO10646-1 ++ UniCharset = ISO8859-1 ISO8859-2 ISO8859-7 ISO8859-9 ISO8859-15 ++ GeneralFamily = Typewriter ++ Weight = Book ++ Width = Fixed ++ Shape = NoSerif Upright ++ Foundry = Lucida ++ Priority = 15 ++end ++ ++begin /usr/share/fonts/truetype/ttf-lucida/LucidaTypewriterOblique.ttf ++ Family = LucidaSans-Typewriter ++ FontName = LucidaSans-Typewriter-Oblique ++ Encoding = Unicode ++ Location = English ++ Charset = ISO8859-1 ISO8859-2 ISO8859-7 ISO8859-9 ISO8859-15 ISO10646-1 ++ UniCharset = ISO8859-1 ISO8859-2 ISO8859-7 ISO8859-9 ISO8859-15 ++ GeneralFamily = Typewriter ++ Weight = Book ++ Width = Fixed ++ Shape = NoSerif Oblique ++ Foundry = Lucida ++ Priority = 15 ++end ++ ++begin /usr/share/fonts/truetype/ttf-lucida/LucidaTypewriterBold.ttf ++ Family = LucidaSans-Typewriter ++ FontName = LucidaSans-Typewriter-Bold ++ Encoding = Unicode ++ Location = English ++ Charset = ISO8859-1 ISO8859-2 ISO8859-7 ISO8859-9 ISO8859-15 ISO10646-1 ++ UniCharset = ISO8859-1 ISO8859-2 ISO8859-7 ISO8859-9 ISO8859-15 ++ GeneralFamily = Typewriter ++ Weight = Bold ++ Width = Fixed ++ Shape = NoSerif Upright ++ Foundry = Lucida ++ Priority = 15 ++end ++ ++begin /usr/share/fonts/truetype/ttf-lucida/LucidaTypewriterBoldOblique.ttf ++ Family = LucidaSans-Typewriter ++ FontName = LucidaSans-Typewriter-Bold-Oblique ++ Encoding = Unicode ++ Location = English ++ Charset = ISO8859-1 ISO8859-2 ISO8859-7 ISO8859-9 ISO8859-15 ISO10646-1 ++ UniCharset = ISO8859-1 ISO8859-2 ISO8859-7 ISO8859-9 ISO8859-15 ++ GeneralFamily = Typewriter ++ Weight = Bold ++ Width = Fixed ++ Shape = NoSerif Oblique ++ Foundry = Lucida ++ Priority = 15 ++end diff --cc debian/JB-java.desktop.in index 0000000,0000000..a57b923 new file mode 100644 --- /dev/null +++ b/debian/JB-java.desktop.in @@@ -1,0 -1,0 +1,11 @@@ ++[Desktop Entry] ++Name=@vendor@ Java @RELEASE@ Runtime ++Name[fi]=@vendor@ Java @RELEASE@ - ajonaikainen ympäristö ++Comment=@vendor@ Java @RELEASE@ Runtime ++Comment[fi]=@vendor@ Java @RELEASE@ - ajonaikainen ympäristö ++Exec=@java_launcher@ -jar ++Terminal=false ++Type=Application ++Icon=@basename@ ++MimeType=application/x-java-archive;application/java-archive;application/x-jar; ++NoDisplay=true diff --cc debian/JB-jconsole.desktop.in index 0000000,0000000..bae9db1 new file mode 100644 --- /dev/null +++ b/debian/JB-jconsole.desktop.in @@@ -1,0 -1,0 +1,10 @@@ ++[Desktop Entry] ++Name=@vendor@ Java @RELEASE@ Console ++Name[fi]=@vendor@ Java @RELEASE@ - konsoli ++Comment=@vendor@ Java @RELEASE@ Monitoring & Management Console ++Comment[fi]=@vendor@ Java @RELEASE@ - valvonta- ja hallintakonsoli ++Exec=/usr/bin/jconsole ++Terminal=false ++Type=Application ++Icon=@basename@ ++Categories=Application;System; diff --cc debian/JB-jdk.menu.in index 0000000,0000000..14f11ec new file mode 100644 --- /dev/null +++ b/debian/JB-jdk.menu.in @@@ -1,0 -1,0 +1,7 @@@ ++?package(@basename@-jdk):\ ++ needs="x11"\ ++ section="Applications/System/Administration"\ ++ title="@vendor@ Java @RELEASE@ Console"\ ++ command="/usr/bin/jconsole"\ ++ icon="/usr/share/pixmaps/@basename@.xpm"\ ++ hints="Java2" diff --cc debian/JB-jdk.overrides.in index 0000000,0000000..a9d5acb new file mode 100644 --- /dev/null +++ b/debian/JB-jdk.overrides.in @@@ -1,0 -1,0 +1,2 @@@ ++# OpenJDK uses $ORIGIN to find shared libs in JAVA_HOME ++@basename@-jdk binary: binary-or-shlib-defines-rpath diff --cc debian/JB-jdk.postinst.in index 0000000,0000000..bdffbe3 new file mode 100644 --- /dev/null +++ b/debian/JB-jdk.postinst.in @@@ -1,0 -1,0 +1,75 @@@ ++#!/bin/sh ++ ++set -e ++ ++multiarch=@multiarch@ ++priority=@priority@ ++basedir=/@basedir@ ++mandir=$basedir/man ++jdiralias=@jdiralias@ ++srcext=1.gz ++dstext=1.gz ++jdk_tools='@jdk_tools@' ++ ++case "$1" in ++configure) ++ # obsolete tool ++ if update-alternatives --list apt 2>/dev/null; then ++ update-alternatives --remove-all apt || true ++ fi ++ ++ if [ -z "$2" ]; then ++ update_alternatives=y ++ fi ++ if [ -n "$multiarch" ] && [ -n "$2" ]; then ++ for i in $jdk_tools; do ++ if [ -z "$(update-alternatives --list $i 2>/dev/null | grep ^$basedir/)" ]; then ++ update_alternatives=y ++ break ++ fi ++ done ++ fi ++ if [ "$update_alternatives" != y ] && [ $priority -gt 1060 ]; then ++ for i in $jre_tools; do ++ oldp=$(update-alternatives --query java | awk -v b=$basedir '/^Alternative:/ && $2~b {p=1} /^Priority:/ && p {print $2; exit}') ++ if [ -n "$oldp" ] && [ "$oldp" -le 1060 ]; then ++ update_alternatives=y ++ break ++ fi ++ done ++ fi ++ ++ if [ "$update_alternatives" = y ]; then ++ if [ -n "$multiarch" ] && [ "$DPKG_MAINTSCRIPT_ARCH" != $(dpkg --print-architecture) ]; then ++ priority=$(expr $priority - 1) ++ fi ++ for i in $jdk_tools; do ++ unset slave1 slave2 || true ++ if [ -e $mandir/man1/$i.$srcext ]; then ++ slave1="--slave \ ++ /usr/share/man/man1/$i.$dstext \ ++ $i.$dstext \ ++ $mandir/man1/$i.$srcext" ++ fi ++ if false && [ -e $mandir/ja/man1/$i.$srcext ]; then ++ slave2="--slave \ ++ /usr/share/man/ja/man1/$i.$dstext \ ++ ${i}_ja.$dstext \ ++ $mandir/ja/man1/$i.$srcext" ++ fi ++ update-alternatives \ ++ --install \ ++ /usr/bin/$i \ ++ $i \ ++ $basedir/bin/$i \ ++ $priority \ ++ $slave1 $slave2 ++ done ++ fi # update alternatives ++ ++ ;; ++esac ++ ++#DEBHELPER# ++ ++exit 0 diff --cc debian/JB-jdk.preinst.in index 0000000,0000000..b69b8f2 new file mode 100644 --- /dev/null +++ b/debian/JB-jdk.preinst.in @@@ -1,0 -1,0 +1,23 @@@ ++#!/bin/sh ++ ++set -e ++ ++multiarch=@multiarch@ ++old_basedir=/usr/lib/jvm/java-7-openjdk ++jdk_tools='appletviewer apt extcheck idlj jar jarsigner javac javadoc javah javap jconsole jdb jhat jinfo jmap jps jrunscript jsadebugd jstack jstat jstatd native2ascii rmic schemagen serialver wsgen wsimport xjc' ++ ++case "$1" in ++ upgrade) ++ if [ -n "$multiarch" ] && [ -n "$2" ]; then ++ for i in $jdk_tools; do ++ if [ -n "$(update-alternatives --list $i 2>/dev/null | grep ^$old_basedir/)" ]; then ++ update-alternatives --remove $i $old_basedir/bin/$i || true ++ fi ++ done ++ fi ++ ;; ++esac ++ ++#DEBHELPER# ++ ++exit 0 diff --cc debian/JB-jdk.prerm.in index 0000000,0000000..f512195 new file mode 100644 --- /dev/null +++ b/debian/JB-jdk.prerm.in @@@ -1,0 -1,0 +1,15 @@@ ++#!/bin/sh -e ++ ++set -e ++ ++jdk_tools='@jdk_tools@' ++basedir=/@basedir@ ++ ++ ++if [ "$1" = "remove" ] || [ "$1" = "deconfigure" ]; then ++ for i in $jdk_tools; do ++ update-alternatives --remove $i $basedir/bin/$i ++ done ++fi ++ ++#DEBHELPER# diff --cc debian/JB-jre-headless.overrides.in index 0000000,0000000..8a29a01 new file mode 100644 --- /dev/null +++ b/debian/JB-jre-headless.overrides.in @@@ -1,0 -1,0 +1,11 @@@ ++# empty directory by intent ++@basename@-jre-headless binary: package-contains-empty-directory usr/share/binfmts/ ++ ++# Strip libjvm.so with --strip-debug instead of --strip-unneeded. LP: #574997. ++@basename@-jre-headless binary: unstripped-binary-or-object ++ ++# OpenJDK uses $ORIGIN to find shared libs in JAVA_HOME ++@basename@-jre-headless binary: binary-or-shlib-defines-rpath ++ ++# Ignore the mouse cursors ++@basename@-jre-headless binary: image-file-in-usr-lib diff --cc debian/JB-jre-headless.postinst.in index 0000000,0000000..8b9aba3 new file mode 100644 --- /dev/null +++ b/debian/JB-jre-headless.postinst.in @@@ -1,0 -1,0 +1,149 @@@ ++#!/bin/sh ++ ++set -e ++ ++multiarch=@multiarch@ ++with_tzdata=@with_tzdata@ ++priority=@priority@ ++basedir=/@basedir@ ++mandir=$basedir/jre/man ++srcext=1.gz ++dstext=1.gz ++jre_tools='@jre_hl_tools@' ++ ++case "$1" in ++configure) ++ # fail early. java currently uses tricks to find its own shared ++ # libraries depending on the path of the binary. Will be changed ++ # in OpenJDK7 ++ if ! mountpoint -q /proc; then ++ echo >&2 "the java command requires a mounted proc fs (/proc)." ++ exit 1 ++ fi ++ ++ [ -d /etc/.java ] || mkdir -m 755 /etc/.java ++ [ -d /etc/.java/.systemPrefs ] || mkdir -m 755 /etc/.java/.systemPrefs ++ if [ ! -f /etc/.java/.systemPrefs/.system.lock ]; then ++ touch /etc/.java/.systemPrefs/.system.lock ++ chmod 644 /etc/.java/.systemPrefs/.system.lock ++ fi ++ if [ ! -f /etc/.java/.systemPrefs/.systemRootModFile ]; then ++ touch /etc/.java/.systemPrefs/.systemRootModFile ++ chmod 644 /etc/.java/.systemPrefs/.systemRootModFile ++ fi ++ ++ if [ -z "$2" ]; then ++ update_alternatives=y ++ fi ++ if [ -n "$multiarch" ] && [ -n "$2" ]; then ++ for i in $jre_tools; do ++ if [ -z "$(update-alternatives --list $i 2>/dev/null | grep ^$basedir/)" ]; then ++ update_alternatives=y ++ break ++ fi ++ done ++ fi ++ if [ "$update_alternatives" != y ] && [ $priority -gt 1060 ]; then ++ for i in $jre_tools; do ++ oldp=$(update-alternatives --query java | awk -v b=$basedir '/^Alternative:/ && $2~b {p=1} /^Priority:/ && p {print $2; exit}') ++ if [ -n "$oldp" ] && [ "$oldp" -le 1060 ]; then ++ update_alternatives=y ++ break ++ fi ++ done ++ fi ++ ++ if [ "$update_alternatives" = y ]; then ++ if [ -n "$multiarch" ] && [ "$DPKG_MAINTSCRIPT_ARCH" != $(dpkg --print-architecture) ]; then ++ priority=$(expr $priority - 1) ++ fi ++ for i in $jre_tools; do ++ unset slave1 slave2 || true ++ if [ -e $mandir/man1/$i.$srcext ]; then ++ slave1="--slave \ ++ /usr/share/man/man1/$i.$dstext \ ++ $i.$dstext \ ++ $mandir/man1/$i.$srcext" ++ fi ++ # disabled ++ if false && [ -e $mandir/ja/man1/$i.$srcext ]; then ++ slave2="--slave \ ++ /usr/share/man/ja/man1/$i.$dstext \ ++ ${i}_ja.$dstext \ ++ $mandir/ja/man1/$i.$srcext" ++ fi ++ update-alternatives \ ++ --install \ ++ /usr/bin/$i \ ++ $i \ ++ $basedir/jre/bin/$i \ ++ $priority \ ++ $slave1 $slave2 ++ done ++ update-alternatives \ ++ --install /usr/bin/jexec jexec $basedir/jre/lib/jexec $priority \ ++ --slave \ ++ /usr/share/binfmts/jar \ ++ jexec-binfmt \ ++ $basedir/jre/lib/jar.binfmt ++ fi # update alternatives ++ ++ if [ -n "$multiarch" ] && [ -n "$2" ]; then ++ if true; then ++ : ++ elif dpkg --compare-versions "$2" lt 7~b147-2.0~pre3-3ubuntu2~; then ++ for d in cmm; do ++ if [ -d $basedir/jre/lib/$d ] && [ ! -h $basedir/jre/lib/$d ]; then ++ rm -rf $basedir/jre/lib/$d ++ ln -s ../../../java-6-openjdk-common/jre/lib/$d $basedir/jre/lib/$d ++ fi ++ done ++ fi ++ fi ++ ++ # register binfmt; ignore errors, the alternative may already be ++ # registered by another JRE. ++ if which update-binfmts >/dev/null && [ -r /usr/share/binfmts/jar ]; then ++ update-binfmts --package @basename@ --import jar || true ++ fi ++ ++ # activate class data sharing ++ case @archdir@ in i386|sparc) ++ rm -f $basedir/jre/lib/@archdir@/client/classes.jsa ++ log=$(tempfile) ++ if ! $basedir/bin/java -client -Xshare:dump -XX:PermSize=128m > $log; then ++ cat >&2 $log ++ rm -f $log ++ # this may fail on some machines/configurations, just ignore it. ++ echo >&2 "ignoring dump failure" ++ #exit 1 ++ fi ++ rm -f $log ++ esac ++ case @archdir@ in amd64|i386|sparc) ++ rm -f $basedir/jre/lib/@archdir@/server/classes.jsa ++ log=$(tempfile) ++ if ! $basedir/bin/java -server -Xshare:dump > $log; then ++ cat >&2 $log ++ rm -f $log ++ # this may fail on some machines/configurations, just ignore it. ++ echo >&2 "ignoring dump failure" ++ #exit 1 ++ fi ++ rm -f $log ++ esac ++ ++ if [ "$with_tzdata" = yes ] && [ -n "$multiarch" ]; then ++ if [ ! -h /@basedir@/jre/lib/zi ] && [ -d /@basedir@/jre/lib/zi ]; then ++ rm -rf /@basedir@/jre/lib/zi ++ ln -s ../../../../../share/javazi /@basedir@/jre/lib/zi ++ fi ++ fi ++ ++ ;; ++ ++esac ++ ++#DEBHELPER# ++ ++exit 0 diff --cc debian/JB-jre-headless.postrm.in index 0000000,0000000..5c8811f new file mode 100644 --- /dev/null +++ b/debian/JB-jre-headless.postrm.in @@@ -1,0 -1,0 +1,21 @@@ ++#!/bin/sh ++ ++set -e ++ ++multiarch=@multiarch@ ++jdirname=@jdirname@ ++etcdir=/@etcdir@ ++ ++case "$1" in ++purge) ++ if [ -z "$jdirname" ] || [ -z "$etcdir" ]; then ++ echo >&2 "$(basename $0): Internal error" ++ exit 1 ++ fi ++ # removals of config files in /etc is handled by dpkg ++ ++ # XXX should remove /etc/.java ??? ++ ;; ++esac ++ ++#DEBHELPER# diff --cc debian/JB-jre-headless.preinst.in index 0000000,0000000..7a152ee new file mode 100644 --- /dev/null +++ b/debian/JB-jre-headless.preinst.in @@@ -1,0 -1,0 +1,43 @@@ ++#! /bin/sh ++ ++set -e ++ ++if [ -h /usr/share/doc/@basename@-jre-headless ]; then ++ rm -f /usr/share/doc/@basename@-jre-headless ++fi ++ ++multiarch=@multiarch@ ++with_tzdata=@with_tzdata@ ++basedir=/@basedir@ ++old_basedir=/usr/lib/jvm/java-7-openjdk ++jre_tools='java keytool pack200 rmid rmiregistry unpack200 orbd servertool tnameserv' ++ ++case "$1" in ++ upgrade) ++ if [ -n "$multiarch" ] && [ -n "$2" ]; then ++ for i in $jre_tools; do ++ if [ -n "$(update-alternatives --list $i 2>/dev/null | grep ^$old_basedir/)" ]; then ++ update-alternatives --remove $i $old_basedir/jre/bin/$i || true ++ fi ++ done ++ if [ -n "$(update-alternatives --list jexec 2>/dev/null | grep ^$old_basedir/)" ]; then ++ update-alternatives --remove jexec $old_basedir/jre/lib/jexec || true ++ fi ++ ++ if dpkg --compare-versions "$2" lt 7u45-2.4.3-0~; then ++ if [ -h $basedir/jre/lib/cmm ]; then ++ rm -f $basedir/jre/lib/cmm ++ fi ++ fi ++ fi ++ ++ # upgrading from a version that used the timezone files from tzdata-java ++ if [ "$with_tzdata" != yes ] && [ -n "$multiarch" ]; then ++ if [ -h /@basedir@/jre/lib/zi ]; then ++ rm -f /@basedir@/jre/lib/zi ++ fi ++ fi ++ ;; ++esac ++ ++#DEBHELPER# diff --cc debian/JB-jre-headless.prerm.in index 0000000,0000000..a5577e4 new file mode 100644 --- /dev/null +++ b/debian/JB-jre-headless.prerm.in @@@ -1,0 -1,0 +1,27 @@@ ++#!/bin/sh ++ ++set -e ++ ++basedir=/@basedir@ ++jre_tools='@jre_hl_tools@' ++ ++rm -f $basedir/jre/lib/@archdir@/client/classes.jsa ++rm -f $basedir/jre/lib/@archdir@/server/classes.jsa ++ ++if [ "$1" = "remove" ] || [ "$1" = "deconfigure" ]; then ++ for i in $jre_tools; do ++ update-alternatives --remove $i $basedir/jre/bin/$i ++ done ++ ++ if which update-binfmts >/dev/null; then ++ # try to remove and ignore the error ++ if [ -e /var/lib/binfmts/jar ]; then ++ update-binfmts --package @basename@ \ ++ --remove jar /usr/bin/jexec || true ++ fi ++ fi ++ ++ update-alternatives --remove jexec $basedir/jre/lib/jexec ++fi ++ ++#DEBHELPER# diff --cc debian/JB-jre-lib.overrides.in index 0000000,0000000..d9a9a70 new file mode 100644 --- /dev/null +++ b/debian/JB-jre-lib.overrides.in @@@ -1,0 -1,0 +1,2 @@@ ++# no separate directory for image files ++@basename@-jre-lib binary: image-file-in-usr-lib diff --cc debian/JB-jre-lib.postinst.in index 0000000,0000000..baab740 new file mode 100644 --- /dev/null +++ b/debian/JB-jre-lib.postinst.in @@@ -1,0 -1,0 +1,15 @@@ ++#! /bin/sh ++ ++set -e ++ ++multiarch=@multiarch@ ++with_tzdata=@with_tzdata@ ++ ++if [ "$with_tzdata" = yes ] && [ -z "$multiarch" ]; then ++ if [ ! -h /@basedir@/jre/lib/zi ] && [ -d /@basedir@/jre/lib/zi ]; then ++ rm -rf /@basedir@/jre/lib/zi ++ ln -s ../../../../../share/javazi /@basedir@/jre/lib/zi ++ fi ++fi ++ ++#DEBHELPER# diff --cc debian/JB-jre-lib.preinst.in index 0000000,0000000..aa762ef new file mode 100644 --- /dev/null +++ b/debian/JB-jre-lib.preinst.in @@@ -1,0 -1,0 +1,7 @@@ ++#! /bin/sh ++ ++set -e ++ ++if [ -h /usr/share/doc/@basename@-jre-lib ]; then ++ rm -f /usr/share/doc/@basename@-jre-lib ++fi diff --cc debian/JB-jre-zero.overrides.in index 0000000,0000000..1616f86 new file mode 100644 --- /dev/null +++ b/debian/JB-jre-zero.overrides.in @@@ -1,0 -1,0 +1,2 @@@ ++# Strip libjvm.so with --strip-debug instead of --strip-unneeded. LP: #574997. ++@basename@-jre-zero binary: unstripped-binary-or-object diff --cc debian/JB-jre.menu.in index 0000000,0000000..024b63f new file mode 100644 --- /dev/null +++ b/debian/JB-jre.menu.in @@@ -1,0 -1,0 +1,7 @@@ ++?package(@basename@-jre):\ ++ needs="x11"\ ++ section="Applications/System/Administration"\ ++ title="@vendor@ Java @RELEASE@ Policy Tool"\ ++ command="/usr/bin/policytool"\ ++ icon="/usr/share/pixmaps/@basename@.xpm"\ ++ hints="Java2" diff --cc debian/JB-jre.overrides.in index 0000000,0000000..0e96708 new file mode 100644 --- /dev/null +++ b/debian/JB-jre.overrides.in @@@ -1,0 -1,0 +1,5 @@@ ++# OpenJDK uses $ORIGIN to find shared libs in JAVA_HOME ++@basename@-jre binary: binary-or-shlib-defines-rpath ++ ++# these are in the -jre-headless package, -jre depends on it ++@basename@-jre binary: desktop-command-not-in-package diff --cc debian/JB-jre.postinst.in index 0000000,0000000..e1a27b7 new file mode 100644 --- /dev/null +++ b/debian/JB-jre.postinst.in @@@ -1,0 -1,0 +1,76 @@@ ++#!/bin/sh ++ ++set -e ++ ++multiarch=@multiarch@ ++priority=@priority@ ++basedir=/@basedir@ ++mandir=$basedir/jre/man ++srcext=1.gz ++dstext=1.gz ++jre_tools='@jre_tools@' ++ ++case "$1" in ++configure) ++ if [ -d /usr/share/doc/@basename@-jre ] && [ ! -h /usr/share/doc/@basename@-jre ]; then ++ rm -rf /usr/share/doc/@basename@-jre ++ ln -sf @basename@-jre-headless /usr/share/doc/@basename@-jre; ++ fi ++ ++ if [ -z "$2" ]; then ++ update_alternatives=y ++ fi ++ if [ -n "$multiarch" ] && [ -n "$2" ]; then ++ for i in $jre_tools; do ++ if [ -z "$(update-alternatives --list $i 2>/dev/null | grep ^$basedir/)" ]; then ++ update_alternatives=y ++ break ++ fi ++ done ++ fi ++ if [ "$update_alternatives" != y ] && [ $priority -gt 1060 ]; then ++ for i in $jre_tools; do ++ oldp=$(update-alternatives --query java | awk -v b=$basedir '/^Alternative:/ && $2~b {p=1} /^Priority:/ && p {print $2; exit}') ++ if [ -n "$oldp" ] && [ "$oldp" -le 1060 ]; then ++ update_alternatives=y ++ break ++ fi ++ done ++ fi ++ ++ if [ "$update_alternatives" = y ]; then ++ if [ -n "$multiarch" ] && [ "$DPKG_MAINTSCRIPT_ARCH" != $(dpkg --print-architecture) ]; then ++ priority=$(expr $priority - 1) ++ fi ++ for i in $jre_tools; do ++ unset slave1 slave2 || true ++ if [ -e $mandir/man1/$i.$srcext ]; then ++ slave1="--slave \ ++ /usr/share/man/man1/$i.$dstext \ ++ $i.$dstext \ ++ $mandir/man1/$i.$srcext" ++ fi ++ # disabled ++ if false && [ -e $mandir/ja/man1/$i.$srcext ]; then ++ slave2="--slave \ ++ /usr/share/man/ja/man1/$i.$dstext \ ++ ${i}_ja.$dstext \ ++ $mandir/ja/man1/$i.$srcext" ++ fi ++ update-alternatives \ ++ --install \ ++ /usr/bin/$i \ ++ $i \ ++ $basedir/jre/bin/$i \ ++ $priority \ ++ $slave1 $slave2 ++ done ++ fi # update alternatives ++ ++ ;; ++ ++esac ++ ++#DEBHELPER# ++ ++exit 0 diff --cc debian/JB-jre.preinst.in index 0000000,0000000..f6e7124 new file mode 100644 --- /dev/null +++ b/debian/JB-jre.preinst.in @@@ -1,0 -1,0 +1,39 @@@ ++#! /bin/sh ++ ++set -e ++ ++if [ -h /usr/share/doc/@basename@-jre-headless ]; then ++ rm -f /usr/share/doc/@basename@-jre-headless ++fi ++ ++multiarch=@multiarch@ ++old_basedir=/usr/lib/jvm/java-7-openjdk ++jre_tools='policytool' ++ ++ ++case "$1" in ++ install|upgrade) ++ # cleanup obsolete alternatives left by openjdk-6-jre/squeeze ++ if dpkg --compare-versions "$2" lt "7u79-2.5.5-1~"; then ++ for i in javaws pluginappletviewer; do ++ update-alternatives --remove $i /usr/lib/jvm/java-6-openjdk/jre/bin/$i || true ++ done ++ fi ++ ;; ++esac ++ ++case "$1" in ++ upgrade) ++ if [ -n "$multiarch" ] && [ -n "$2" ]; then ++ for i in $jre_tools; do ++ if [ -n "$(update-alternatives --list $i 2>/dev/null | grep ^$old_basedir/)" ]; then ++ update-alternatives --remove $i $old_basedir/jre/bin/$i || true ++ fi ++ done ++ fi ++ ;; ++esac ++ ++#DEBHELPER# ++ ++exit 0 diff --cc debian/JB-jre.prerm.in index 0000000,0000000..f32dbe6 new file mode 100644 --- /dev/null +++ b/debian/JB-jre.prerm.in @@@ -1,0 -1,0 +1,14 @@@ ++#!/bin/sh ++ ++set -e ++ ++basedir=/@basedir@ ++jre_tools='@jre_tools@' ++ ++if [ "$1" = "remove" ] || [ "$1" = "deconfigure" ]; then ++ for i in $jre_tools; do ++ update-alternatives --remove $i $basedir/jre/bin/$i ++ done ++fi ++ ++#DEBHELPER# diff --cc debian/JB-policytool.desktop.in index 0000000,0000000..c62c353 new file mode 100644 --- /dev/null +++ b/debian/JB-policytool.desktop.in @@@ -1,0 -1,0 +1,10 @@@ ++[Desktop Entry] ++Name=@vendor@ Java @RELEASE@ Policy Tool ++Name[fi]=@vendor@ Java @RELEASE@ - käytäntötyökalu ++Comment=@vendor@ Java @RELEASE@ Policy Tool ++Comment[fi]=@vendor@ Java @RELEASE@ - käytäntötyökalu ++Exec=/usr/bin/policytool ++Terminal=false ++Type=Application ++Icon=@basename@ ++Categories=Settings; diff --cc debian/README.Debian index 0000000,0000000..f7e8ab8 new file mode 100644 --- /dev/null +++ b/debian/README.Debian @@@ -1,0 -1,0 +1,78 @@@ ++openjdk-7 for Debian/Ubuntu ++--------------------------- ++ ++The OpenJDK build is configured --with-additional-vms to build with ++different virtual machines. The original implementation of the hotspot ++VM is only available on the amd64, i386, lpia and sparc architectures. ++Other VM's are JamVM, providing a just in time compiler on several ++architectures (although the VM implementation is incomplete), and Zero, ++providing a byte code interpreter for every architecture. On some ++architectures Zero is built with JIT support using shark (still considered ++experimental). ++ ++To use a different VM other than the default, use ++ ++ java -jamvm|-zero|-shark ++ ++or for the java tools, use ++ ++ -J-jamvm|-J-zero|-J-shark. ++ ++The zero build on the ix86 architectures is built with shark (just in time ++compiler); to use the zero build without shark support, use the `-Xint' ++option to operate in interpreted-only mode. ++ ++On some architectures (currently armel and powerpc, when built against ++llvm-2.6) which use ther zero vm as the default, the openjdk-7-jre-zero ++package contains the shark vm. ++ ++To change the default permanently, edit /etc/java-7-openjdk/jvm.cfg. ++ ++The JamVM can be found in the icedtea-7-jre-jamvm package, the Zero/Shark ++VM can be found in the openjdk-7-jre-zero package (on the architectures ++where the Hotspot VM is available). ++ ++Please look for further documentation in the directory ++/usr/share/doc/openjdk-7-jre/ . ++ ++The package openjdk-7-jre-headless ships a cgi script ++/usr/lib/jvm/java-7-openjdk/bin/java-rmi.cgi that you must integrate ++into your webserver setup manually if you need it. It is not activated ++automatically. ++ ++ ++Note for non-reparenting window manager users ++--------------------------------------------- ++ ++If you are using a non-reparenting window manager, such as ratpoison, awesome ++or dwm, some Java graphical applications using the AWT toolkit will only ++display empty grey windows, as described in but #508650. ++ ++There are two solutions to work around this issue: ++1. mask your window manager as one of the non-reparenting ones supported by AWT, ++ using the wmname tool from the dwm-tools ++ package: ++ $ wmname LG3D ++2. set the environment variable _JAVA_AWT_WM_NONREPARENTING: ++ $ export _JAVA_AWT_WM_NONREPARENTING=true ++ ++You can automate these tasks by writing them to your ~/.xsessionrc: ++$ cat >> ~/.xsessionrc < Sun, 03 May 2009 13:58:10 +0200 ++ -- Torsten Werner Wed, 02 Apr 2008 11:46:53 +0200 diff --cc debian/README.alternatives.in index 0000000,0000000..d9201da new file mode 100644 --- /dev/null +++ b/debian/README.alternatives.in @@@ -1,0 -1,0 +1,33 @@@ ++ ++Packages providing a runtime or a development environment for the Java ++language all use symlinks in the /etc/alternatives directory to enable ++the system administrator to choose which programs to use for java, ++javac, javah, etc. ++ ++Starting with java-common 0.23ubuntu1, the update-java-alternatives ++script can be used to set a bunch of jre/jdk alternatives: ++ ++First, you have to decide which Java implementation to default to. ++ ++ update-java-alternatives --list ++ ++tells about the available runtime and/or development environments. The ++first column shows the names to be used in for the following examples. ++ ++- Set all runtime tools to point to the alternatives: ++ ++ update-java-alternatives --jre --set ++ ++- Set all runtime tools (headless only) to point to the ++ alternatives: ++ ++ update-java-alternatives --jre-headless --set ++ ++- Set all runtime and development tools to point to the ++ alternatives: ++ ++ update-java-alternatives --set ++ ++- Set all runtime and development tools to auto mode: ++ ++ update-java-alternatives --auto diff --cc debian/README.source index 0000000,0000000..a92feef new file mode 100644 --- /dev/null +++ b/debian/README.source @@@ -1,0 -1,0 +1,77 @@@ ++Content of source package ++========================= ++"openjdk7" is a composite source package: ++- Based on IcedTea which provides ++ a harness to build the source code from Oracle OpenJDK. ++- Multiple tarballs from each Oracle mercurial repositories : ++ corba / hotspot / jaxp / jaxws / jdk-dfsg / langtools / openjdk ++- Debian packaging scripts and patches. ++ ++Building a new OpenJDK+IcedTea-7 Debian package ++=================================================== ++Pre-requisites: ++- Mercurial ++- Bazaar ++ sudo aptitude install mercurial bzr ++ ++0) Clone OpenJDK debian packaging: ++ bzr branch lp:~openjdk/openjdk/openjdk7 openjdk7/ ++ or update existing repository clone: ++ (cd openjdk7/; bzr pull --remember lp:~openjdk/openjdk/openjdk7) ++ ++1) Clone IcedTea-7 HG: ++ hg clone http://icedtea.classpath.org/hg/icedtea7 icedtea-2.1.1/ ++ or update existing repository clone: ++ (cd icedtea7/; hg pull -u) ++ ++2) Download OpenJDK upstream tarballs and move them to $BUILD/ ++ export BUILD=7u3 ++ mkdir -p $BUILD/ ++ ( ++ cd icedtea-2.1.1/ ++ sh autogen.sh && ./configure --enable-jamvm ++ make download ++ ) ++ ++ mv icedtea-2.1.1/*.tar.gz $BUILD/ ++ ( ++ cd icedtea-2.1.1/ ++ make distclean ++ ) ++ ++3) Remove files with unclear license from jdk.tar.gz: ++ sh openjdk7/generate-dfsg-zip.sh $BUILD/jdk.tar.gz ++ sh openjdk7/generate-dfsg-zip.sh $BUILD/langtools.tar.gz ++ ++4) Check tarballs' name and version (for original directory name) ++ in openjdk7/generate-debian-orig.sh and package version in ++ openjdk7/changelog ++ ++5) Generate "orig" directory and "orig+debian" directory ++ sh openjdk7/generate-debian-orig.sh ++ ++Support for DEB_BUILD_OPTIONS ++============================= ++As described in Debian Policy §4.9.1, current package's debian/rules support ++the standardized environment variable DEB_BUILD_OPTIONS. This variable can ++contain several flags to change how a package is compiled and built. ++ ++ * nocheck: don't run mauve and jtreg test suites. ++ * nodocs: pass --disable-docs to IcedTea configure script, which ++ disable Javadoc generation. ++ * nostrip: debugging symbols should not be stripped from the ++ binary during installation ++ * parallel=X: package should be built using up to X parallel processes ++ * nobootstrap: don't use gcj to bootstrap OpenJDK but use existing OpenJDK ++ installed on current machine. ++ * noaltzero: don't build alternative Zero VM. ++ * noaltshark: don't build alternative Shark VM. ++ * noaltjamvm: don't build alternative Jamvm VM. ++ ++Sample usage: ++DEB_BUILD_OPTIONS="parallel=5 nocheck" debuild -i"(\.hg|\.bzr)" ++ ++ Build with 5 parallel processes and don't run mauve/jtreg test suites. ++ ++This also work with cowbuilder/pbuilder: ++DEB_BUILD_OPTIONS="parallel=5 nocheck" pdebuild -i"(\.hg|\.bzr)" --logfile ../build.log --pbuilder cowbuilder diff --cc debian/accessibility-atk.properties.disabled index 0000000,0000000..c1bdc48 new file mode 100644 --- /dev/null +++ b/debian/accessibility-atk.properties.disabled @@@ -1,0 -1,0 +1,10 @@@ ++# ++# The following line specifies the assistive technology classes ++# that should be loaded into the Java VM when the AWT is initailized. ++# Specify multiple classes by separating them with commas. ++# Note: the line below cannot end the file (there must be at ++# a minimum a blank line following it). ++# ++# Doesn't work, see LP: #935296 ++#assistive_technologies=org.GNOME.Accessibility.AtkWrapper ++ diff --cc debian/accessibility-atk.properties.enabled index 0000000,0000000..e1129f8 new file mode 100644 --- /dev/null +++ b/debian/accessibility-atk.properties.enabled @@@ -1,0 -1,0 +1,9 @@@ ++# ++# The following line specifies the assistive technology classes ++# that should be loaded into the Java VM when the AWT is initailized. ++# Specify multiple classes by separating them with commas. ++# Note: the line below cannot end the file (there must be at ++# a minimum a blank line following it). ++# ++assistive_technologies=org.GNOME.Accessibility.AtkWrapper ++ diff --cc debian/accessibility.properties index 0000000,0000000..e009589 new file mode 100644 --- /dev/null +++ b/debian/accessibility.properties @@@ -1,0 -1,0 +1,9 @@@ ++# ++# The following line specifies the assistive technology classes ++# that should be loaded into the Java VM when the AWT is initialized. ++# Specify multiple classes by separating them with commas. ++# Note: the line below cannot end the file (there must be at ++# a minimum a blank line following it). ++# ++assistive_technologies=org.GNOME.Accessibility.JavaBridge ++ diff --cc debian/buildwatch.sh index 0000000,0000000..23fc9b5 new file mode 100644 --- /dev/null +++ b/debian/buildwatch.sh @@@ -1,0 -1,0 +1,58 @@@ ++#! /bin/sh ++ ++# ++# Output something to stdout every so often so buildd won't kill ++# the build when building ++# ++ ++builddir=$1 ++ ++echo $$ > buildwatch.pid ++ ++time_unit="m" ++timer=0 ++sleep_for=3 ++time_up_at=180 ++upd_every=30 # use a multiple of $sleep_for ++ ++reset_timer() { timer=0; } ++inc_timer() { timer=$(expr $timer + $sleep_for); } ++time_up() { [ $timer -ge $time_up_at ]; } ++can_update() { [ $(expr $timer % $upd_every) -eq 0 ]; } ++do_sleep() { sleep ${sleep_for}${time_unit} && inc_timer; } ++ ++is_running() { ++ ps x | grep -v grep | egrep -qs $@ ++ return $? ++} ++ ++while ! time_up; do ++ if [ ! -f buildwatch.pid ]; then ++ echo "[$0] pidfile removed" && break ++ fi ++ if ! is_running '/make'; then ++ echo "[$0] no make process detected (build done?)" && break ++ fi ++ ++ do_sleep ++ can_update || continue ++ ++ new_noisy=$(ls -l $builddir/mauve-*/mauve_output* $builddir/test/jtreg_output-* 2>&1 | md5sum) ++ new_quiet=$(ls -l $builddir/openjdk*/build/*/tmp/rt-orig.jar $builddir/openjdk*/build/*/lib/tools.jar $builddir/openjdk*/build/*/lib/ct.sym 2>&1 | md5sum) ++ if [ -n "$old_noisy" -a "$old_noisy" != "$new_noisy" ]; then ++ # mauve/jtreg updated test files, so it should be updating stdout in its own ++ # keep quiet and restart timer ++ reset_timer ++ elif [ -n "$old_quiet" -a "$old_quiet" != "$new_quiet" ]; then ++ reset_timer ++ echo "[$0] assembling jar file ..." ++ elif is_running '/cc1|jar|java|gij'; then ++ echo "[$0] compiler/java/jar running ..." ++ reset_timer ++ fi ++ old_noisy=$new_noisy ++ old_quiet=$new_quiet ++done ++ ++echo "[$0] exiting" ++rm -f buildwatch.pid diff --cc debian/changelog index 0000000,0000000..b78a96d new file mode 100644 --- /dev/null +++ b/debian/changelog @@@ -1,0 -1,0 +1,4719 @@@ ++openjdk-7 (7u181-2.6.14-2~deb8u1) jessie-security; urgency=medium ++ ++ * Rebuild for jessie-security. ++ ++ -- Emilio Pozuelo Monfort Tue, 20 Nov 2018 17:55:11 +0100 ++ ++openjdk-7 (7u181-2.6.14-2) experimental; urgency=medium ++ ++ * Apply 7u191-b01 and 7u201-b00 security patches. ++ * Security fixes: ++ - CVE-2018-3136, S8194534: Manifest better support. ++ - CVE-2018-3139, S8196902: Better HTTP redirection support. ++ - CVE-2018-3149, S8199177: Enhance JNDI lookups. ++ - CVE-2018-3169, S8199226: Improve field accesses. ++ - CVE-2018-3180, S8202613: Improve TLS connections stability. ++ - CVE-2018-2938, S8197871: Support Derby connections. ++ - CVE-2018-2952, S8199547: Exception to Pattern Syntax. ++ - S8191239: Improve desktop file usage. ++ - S8193419: Better Internet address support. ++ - S8197925: Better stack walking. ++ - S8200666: Improve LDAP support. ++ * debian/patches/hotspot-disable-exec-shield-workaround.patch: removed, ++ upstream fixed i386 stack guard support in S8197429 (hotspot's mercurial ++ commit 6636:d673ec579604). ++ * debian/patches/jdk-freetypeScaler-crash.diff: removed, it caused ++ a memory leak and has been fixed upstream already, albeit in a ++ different way. Closes: #910672. ++ * debian/patches/jdk-8132985-backport-double-free.patch, ++ debian/patches/jdk-8139803-backport-warning.patch: fix crash in ++ freetypescaler due to double free, thanks to Heikki Aitakangas for ++ the report and patches. (Closes: #911847) ++ * debian/rules: run only the hotspot testsuite for jamvm and zero ++ alternative vms to make build faster. ++ ++ -- Tiago Stürmer Daitx Thu, 11 Oct 2018 01:47:12 +0000 ++ ++openjdk-7 (7u181-2.6.14-1) experimental; urgency=medium ++ ++ * IcedTea release 2.6.14 (based on 7u181). Closes: #898976. ++ * Security fixes: ++ - S8162488: JDK should be updated to use LittleCMS 2.8 ++ - S8180881: Better packaging of deserialization ++ - S8182362: Update CipherOutputStream Usage ++ - S8183032: Upgrade to LittleCMS 2.9 ++ - S8189123: More consistent classloading ++ - S8189969, CVE-2018-2790: Manifest better manifest entries ++ - S8189977, CVE-2018-2795: Improve permission portability ++ - S8189981, CVE-2018-2796: Improve queuing portability ++ - S8189985, CVE-2018-2797: Improve tabular data portability ++ - S8189989, CVE-2018-2798: Improve container portability ++ - S8189993, CVE-2018-2799: Improve document portability ++ - S8189997, CVE-2018-2794: Enhance keystore mechanisms ++ - S8190478: Improved interface method selection ++ - S8190877: Better handling of abstract classes ++ - S8191696: Better mouse positioning ++ - S8192025, CVE-2018-2814: Less referential references ++ - S8192030: Better MTSchema support ++ - S8192757, CVE-2018-2815: Improve stub classes implementation ++ - S8193409: Improve AES supporting classes ++ - S8193414: Improvements in MethodType lookups ++ - S8193833, CVE-2018-2800: Better RMI connection support ++ * debian/patches/it-patch-updates.diff: ++ - Refreshed. ++ * debian/patches/hotspot-powerpcspe.diff: ++ - Removed, fixed upstream. ++ ++ -- Emilio Pozuelo Monfort Fri, 08 Jun 2018 12:23:38 +0200 ++ ++openjdk-7 (7u171-2.6.13-1) experimental; urgency=high ++ ++ [ Tiago Stürmer Daitx ] ++ * IcedTea release 2.6.13 (based on 7u171). Closes: #891330. ++ * Security fixes: ++ - S8160104: CORBA communication improvements ++ - S8172525, CVE-2018-2579: Improve key keying case ++ - S8174756: Extra validation for public keys ++ - S8175932: Improve host instance supports ++ - S8176458: Revise default document styling ++ - S8178449, CVE-2018-2588: Improve LDAP logins ++ - S8178458: Better use of certificates in LDAP ++ - S8178466: Better RSA parameters ++ - S8179536: Cleaner print job handling ++ - S8179990: Cleaner palette entry handling ++ - S8180011: Cleaner native graphics device handling ++ - S8180015: Cleaner AWT robot handling ++ - S8180020: Improve SymbolHashMap entry handling ++ - S8180433: Cleaner CLR invocation handling ++ - S8180877: More deeply colored ICC spaces ++ - S8181664: Improve JVM UTF String handling ++ - S8181670: Improve implementation of keystores ++ - S8182125, CVE-2018-2599: Improve reliability of DNS lookups ++ - S8182387, CVE-2018-2603: Improve PKCS usage ++ - S8182601, CVE-2018-2602: Improve usage messages ++ - S8185292, CVE-2018-2618: Stricter key generation ++ - S8185325, CVE-2018-2641: Improve GTK initialization ++ - S8186080: Transform XML interfaces ++ - S8186212, CVE-2018-2629: Improve GSS handling ++ - S8186600, CVE-2018-2634: Improve property negotiations ++ - S8186606, CVE-2018-2633: Improve LDAP lookup robustness ++ - S8186867: Improve native glyph layouts ++ - S8186998, CVE-2018-2637: Improve JMX supportive features ++ - S8189284, CVE-2018-2663: More refactoring for deserialization cases ++ - S8190289, CVE-2018-2677: More refactoring for client deserialization cases ++ - S8191142, CVE-2018-2678: More refactoring for naming deserialization cases ++ * Remove multiarch-support pre-dependency. Closes: #887858. ++ ++ [ Matthias Klose ] ++ * Bump standards version. ++ * Disable bootstrap on sid/buster, gcj is removed. ++ * Remove Damien Raude-Morvan as uploader. Closes: #889378. ++ ++ -- Matthias Klose Mon, 02 Apr 2018 10:36:32 +0200 ++ ++openjdk-7 (7u161-2.6.12-1) experimental; urgency=medium ++ ++ * IcedTea release 2.6.12 (based on 7u161). ++ * Disable Hotspot workaround for Exec Shield (Debian only). ++ Addresses: #876051. ++ * Build-depend on g++-4.7 on wheezy. This is the default on some ++ architectures such as amd64 or i386, but not on armhf or armel, ++ which default to 4.6. There the build was working before because ++ the bootstrap build pulled gcj-jdk, which depends on gcj-4.7-jdk ++ and that in turn depends on g++-4.7. However since we have ++ disabled the bootstrap build now, g++-4.7 is no longer installed ++ on arm* builds, causing the build failure which couldn't be seen ++ on amd64 (Emilio Pozuelo Monfort). ++ ++ -- Matthias Klose Thu, 07 Dec 2017 09:12:51 +0100 ++ ++openjdk-7 (7u151-2.6.11-3) experimental; urgency=medium ++ ++ [ Matthias Klose ] ++ * Disable bootstrap on wheezy, it currently fails due to the last round ++ of 8u151 security patches (Emilio Pozuelo Monfort). ++ ++ [ Tiago Stürmer Daitx ] ++ * debian/patches/hotspot-aarch64-S8145438-fix-field-too-big-for-insn.patch: ++ the S8144028 fix was incomplete and followed up by S8145438; without it ++ aarch64 JVM can fail with "Internal Error, failed: Field too big for ++ insn". ++ ++ -- Matthias Klose Thu, 23 Nov 2017 16:37:21 +0100 ++ ++openjdk-7 (7u151-2.6.11-2) experimental; urgency=medium ++ ++ [ Tiago Stürmer Daitx ] ++ * Backport of 8u151 security fixes. Closes: #881764. ++ * Security patches: ++ - CVE-2017-10274, S8169026: Handle smartcard clean up better. If a ++ CardImpl can be recovered via finalization, then separate instances ++ pointing to the same device can be created. ++ - CVE-2017-10281, S8174109: Better queuing priorities. PriorityQueue's ++ readObject allocates an array based on data in the stream which could ++ cause an OOM. ++ - CVE-2017-10285, S8174966: Unreferenced references. RMI's Unreferenced ++ thread can be used as the root of a Trusted Method Chain. ++ - CVE-2017-10295, S8176751: Better URL connections. On Ubuntu (and ++ possibly other Linux flavors) CR-NL in the host field are ignored and ++ can be used to inject headers in an HTTP request stream. ++ - CVE-2017-10388, S8178794: Correct Kerberos ticket grants. Kerberos ++ implementations can incorrectly take information from the unencrypted ++ portion of the ticket from the KDC. This can lead to an MITM attack ++ impersonating Kerberos services. ++ - CVE-2017-10346, S8180711: Better alignment of special invocations. A ++ missing load constraint for some invokespecial cases can allow invoking ++ a method from an unrelated class. ++ - CVE-2017-10350, S8181100: Better Base Exceptions. An array is allocated ++ based on data in the serial stream without a limit onthe size. ++ - CVE-2017-10347, S8181323: Better timezone processing. An array is ++ allocated based on data in the serial stream without a limit on the ++ size. ++ - CVE-2017-10349, S8181327: Better Node predications. An array is ++ allocated based on data in the serial stream without a limit onthe size. ++ - CVE-2017-10345, S8181370: Better keystore handling. A malicious ++ serialized object in a keystore can cause a DoS when using keytool. ++ - CVE-2017-10348, S8181432: Better processing of unresolved permissions. ++ An array is allocated based on data in the serial stream without a limit ++ onthe size. ++ - CVE-2017-10357, S8181597: Process Proxy presentation. A malicious ++ serialized stream could cause an OOM due to lack on checking on the ++ number of interfaces read from the stream for a Proxy. ++ - CVE-2017-10355, S8181612: More stable connection processing. If an ++ attack can cause an application to open a connection to a malicious FTP ++ server (e.g., via XML), then a thread can be tied up indefinitely in ++ accept(2). ++ - CVE-2017-10356, S8181692: Update storage implementations. JKS and JCEKS ++ keystores should be retired from common use in favor of more modern ++ keystore protections. ++ - CVE-2016-10165, S8183028: Improve CMS header processing. Missing bounds ++ check could lead to leaked memory contents. ++ - CVE-2016-9841, S8184682: Upgrade compression library. There were four ++ off by one errors found in the zlib library. Two of them are long typed ++ which could lead to RCE. ++ * debian/patches/hotspot-aarch64-S8150652-unused-template.diff: unused ++ template breaks builds with gcc-6 due to macro conflict. ++ * debian/rules: try /etc/os-release before lsb-release; allows one to check ++ if patches still apply cleanly across distros from the command line by ++ setting distrel. ++ ++ -- Matthias Klose Mon, 20 Nov 2017 21:24:32 +0100 ++ ++openjdk-7 (7u151-2.6.11-1) experimental; urgency=medium ++ ++ * IcedTea release 2.6.11 (based on 7u151). Closes: #869816. ++ * Security fixes: ++ - S8163958, CVE-2017-10102: Improved garbage collection. ++ - S8167228: Update to libpng 1.6.28. ++ - S8169209, CVE-2017-10053: Improved image post-processing steps. ++ - S8169392, CVE-2017-10067: Additional jar validation steps. ++ - S8170966, CVE-2017-10081: Right parenthesis issue. ++ - S8172204, CVE-2017-10087: Better Thread Pool execution. ++ - S8172461, CVE-2017-10089: Service Registration Lifecycle. ++ - S8172465, CVE-2017-10090: Better handling of channel groups. ++ - S8172469, CVE-2017-10096: Transform Transformer Exceptions. ++ - S8173286, CVE-2017-10101: Better reading of text catalogs. ++ - S8173697, CVE-2017-10107: Less Active Activations. ++ - S8173770, CVE-2017-10074: Image conversion improvements. ++ - S8174098, CVE-2017-10110: Better image fetching. ++ - S8174105, CVE-2017-10108: Better naming attribution. ++ - S8174113, CVE-2017-10109: Better sourcing of code. ++ - S8174770: Check registry registration location. ++ - S8174873: Improved certificate processing. ++ - S8175106, CVE-2017-10115: Higher quality DSA operations. ++ - S8175110, CVE-2017-10118: Higher quality ECDSA operations. ++ - S8176055: JMX diagnostic improvements. ++ - S8176067, CVE-2017-10116: Proper directory lookup processing. ++ - S8176760, CVE-2017-10135: Better handling of PKCS8 material. ++ - S8178135, CVE-2017-10176: Additional elliptic curve support. ++ - S8181420, CVE-2017-10074: PPC: Image conversion improvements. ++ - S8182054, CVE-2017-10243: Improve wsdl support. ++ - S8183551, CVE-2017-10074, PR3423: AArch64: Image conversion improvements. ++ - S8184119, CVE-2017-10111: Incorrect return processing for the LF editor ++ of MethodHandles.permuteArguments. ++ ++ [ Tiago Stürmer Daitx ] ++ * d/control.in: ++ - remove @bd_compress@ dependency. ++ - replace @bd_autotools@ with fixed dependencies. ++ * d/control.tests: package to hold all tests artifacts and logs. ++ * d/repack: fixed and simplified download script. ++ * d/rules: ++ - include openjdk-7-tests package on Ubuntu derivatives only. ++ - only save the full jtreg results when the openjdk-7-tests package ++ is being built, otherwise stick to old behaviour (keep compressed ++ test summaries + failed test results). Closes: #863007, #865533. ++ - only run the long jdk testsuite when default vm is a hotspot. ++ - only run the full testsuite for zero alternative vm on very fast ++ systems, otherwise stick to the hotspot testsuite to avoid long ++ build times. ++ - remove with_nss as all supported releases have it now. ++ - remove gcc/g++ configurations for EOL releases. ++ - keep libjpeg8 dependency on wheezy, replace it with libjpeg62-turbo ++ on other Debian releases and libjpeg-turbo8 on Ubuntu. Closes: #766601. ++ - remove old logic to depend on libcupsys2. ++ - always set rhino_source, all supported releases have dpkg > 1.16.2. ++ - remove bd_compress and pkg_compress as they haven't been used for ++ quite a while. ++ - remove with_wgy_zenhai logic, lenny is EOL. ++ - remove bd_autotools logic if/then, call dh_autoreconf and ++ dh_autoreconf_clean. ++ - simplify bootstrap dependency logic and remove EOL releases. ++ - remove EOL releases from gcc/g++ dependency logic. ++ - remove unused jamvm_defaults and simplify jamvm_archs logic. ++ - use ttf-indic-fonts for trusty, otherwise stick to fonts-indic. ++ - patch configure after dh_autoreconf call to include additional ++ /usr/lib/jvm directories; setting DEB_HOST_ARCH=alpha to check ++ if patches apply correctly fails because alpha requires a jdk for ++ bootstrap and IcedTea does not look into our usual directories. ++ * d/p/fontconfig-arphic-uming.diff: removed, not used since lenny. ++ * d/p/jdk-getAccessibleValue.diff: libatk-wrapper-java: File selection ++ dialog not refreshed when changing directory. Kindly provided by ++ Samuel Thibault. Closes: #827741. ++ * d/p/jdk-S8173783-fix-illegalargumentexception-regression.patch: ++ deleted, included in IcedTea 2.6.10. ++ * d/p/kfreebsd-support-jdk.diff: updated, was failing to apply due to ++ jdk changes in NetworkInterface.c. ++ * d/p/sec-webrev-8u131-*.patch: deleted, included in IcedTea 2.6.10. ++ * d/p/zero-sparc.diff: commented out chaitin.hpp hunk #1 as that #ifdef ++ has been removed by JDK-8011621 (backported by IcedTea 2.6.10); this ++ was also backported to 7u131 through JDK-8160961 but then backed out, ++ better keep the hunk in case IcedTea decides to back it out as well. ++ ++ [ Matthias Klose ] ++ * Build using gcc-6 on recent releases. ++ * Fix libjvm.so's .debug file names. Closes: #865749. LP: #1548434. ++ ++ -- Matthias Klose Wed, 23 Aug 2017 16:02:57 +0200 ++ ++openjdk-7 (7u131-2.6.9-3) experimental; urgency=medium ++ ++ * Only include the failing tests in the packages, not the whole test world. ++ * openjdk-7-jdk: Provide openjdk-7-jdk-headless. ++ ++ -- Matthias Klose Sat, 20 May 2017 15:52:17 -0700 ++ ++openjdk-7 (7u131-2.6.9-2) experimental; urgency=high ++ ++ [ Tiago Stürmer Daitx ] ++ * Fix JDK regression introduced by 7u131 upgrade: (LP: #1691126) ++ - d/p/jdk-S8173783-fix-illegalargumentexception-regression.patch: ++ fix "IllegalArgumentException: jdk.tls.namedGroups" backported ++ from http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/rev/f5d0aadb4d1c ++ ++ -- Matthias Klose Tue, 16 May 2017 21:42:12 -0700 ++ ++openjdk-7 (7u131-2.6.9-1) experimental; urgency=high ++ ++ [ Tiago Stürmer Daitx ] ++ * IcedTea release 2.6.9 (based on 7u131): ++ * Security fixes ++ - S8167110, CVE-2017-3514: Windows peering issue. ++ - S8163528, CVE-2017-3511: Better library loading. ++ - S8169011, CVE-2017-3526: Resizing XML parse trees. ++ - S8163520, CVE-2017-3509: Reuse cache entries. ++ - S8171533, CVE-2017-3544: Better email transfer. ++ - S8170222, CVE-2017-3533: Better transfers of files. ++ - S8171121, CVE-2017-3539: Enhancing jar checking. ++ - S8172299: Improve class processing. ++ * debian/compat: updated from 5 to 9. ++ * debian/watch: using watch version 4 to download both icedtea and ++ icedtea-sound. LP: #1642420. ++ * debian/repack: simplified tarball download. ++ * debian/rules: ++ - removed 8u121 patches as they have been applied to 7u131. ++ - building icedtea-sound on build/ directory ++ - replaced 'dh_strip -k' calls by dh_prep ++ - have the 'build' rule depend on 'debian/control' rule to force ++ failure if debian/control gets regenerated. ++ - added file 'security/blacklisted.cert' to be copied to etc dir ++ (introduced by S8011402). ++ - simplified build dependencies. ++ - removed jtreg's xvfb-run call since icedtea takes care of calling it. ++ - removed window manager as there are no additional significant failures ++ on the jdk tests when not running one. ++ - re-enabled jdk jtreg tests. ++ - removed lpia arch. ++ - use fonts-wqy-microhei and fonts-wqy-zenhei instead of transitional ++ package names. ++ - drop Recommends on obsolete GNOME libraries so they are not in a ++ default GNOME desktop installation (Simon McVittie). Closes: #850270. ++ + sun.net.spi.DefaultProxySelector prefers libglib2.0-0 (>= 2.24) ++ over obsolete libgconf2-4. ++ + sun.nio.fs.GnomeFileTypeDetector prefers libglib2.0-0 (>= 2.24) ++ over libgnomevfs-2-0. ++ + sun.xawt.awt_Desktop prefers libgtk2.0-0 (>= 2.14) over ++ libgnomevfs2-0. ++ * debian/control.in: added static build dependencies as their previous ++ selection logic in debian/rules is no longer required. ++ * debian/control: regenerated. ++ * debian/patches/icedtea-sound.diff: removed, now packing icedtea-sound ++ 1.0.1 which includes those fixes. ++ * debian/upstream/signing-key.asc: add new signing key. ++ ++ [ Matthias Klose ] ++ * Remove obsolete changelog entries from previous release. ++ ++ -- Matthias Klose Tue, 16 May 2017 13:49:35 -0700 ++ ++openjdk-7 (7u121-2.6.8-2) experimental; urgency=high ++ ++ [ Tiago Stürmer Daitx ] ++ * Security fixes from 8u121: ++ - S8167104, CVE-2017-3289: Custom class constructor code can bypass the ++ required call to super.init allowing for uninitialized objects to be ++ created. ++ - S8164143, CVE-2017-3260: It is possible to corrupt memory by calling ++ dispose() on a CMenuComponentmultiple times. ++ - S8168714, CVE-2016-5546: ECDSA will accept signatures that have various ++ extraneous bytes added to them whereas the signature is supposed to be ++ unique. ++ - S8166988, CVE-2017-3253: The PNG specification allows the [iz}Txt ++ sections to be 2^32-1 bytes long so these should not be uncompressed ++ unless the user explicitly requests it. ++ - S8168728, CVE-2016-5548: DSA signing exhibits a timing bias that may ++ leak information about k. ++ - S8161743, CVE-2017-3252: LdapLoginModule incorrectly tries to ++ deserialize responses from an LDAP server when an LDAP context is ++ expected. ++ - S8167223, CVE-2016-5552: Parsing of URLs can be inconsistent with how ++ users or external applications would interpret them leading to possible ++ security issues. ++ - S8168705, CVE-2016-5547: A value from an InputStream is read directly ++ into the size argument of a new byte[] without validation. ++ - S8164147, CVE-2017-3261: An integer overflow exists in ++ SocketOutputStream which can lead to memorydisclosure. ++ - S8151934, CVE-2017-3231: Under some circumstances URLClassLoader will ++ dispatch HTTP GET requests where the invoker does not have permission. ++ - S8165071, CVE-2016-2183: 3DES can be exploited for block collisions when ++ long running sessions are allowed. ++ - S8165344, CVE-2017-3272: A protected field can be leveraged into type ++ confusion. ++ - S8156802, CVE-2017-3241: RMI deserialization should limit the types ++ deserialized to prevent attacks that could escape the sandbox. ++ * Ignored ++ - S8168724, CVE-2016-5549: ECDSA signing exhibits a timing bias that may ++ leak information about k. ++ ++ -- Matthias Klose Tue, 07 Feb 2017 11:09:39 +0100 ++ ++openjdk-7 (7u121-2.6.8-1) experimental; urgency=medium ++ ++ * IcedTea release 2.6.8 (based on 7u121): ++ ++ -- Matthias Klose Mon, 14 Nov 2016 13:38:40 +0100 ++ ++openjdk-7 (7u111-2.6.7-3) experimental; urgency=medium ++ ++ [ Tiago Stürmer Daitx ] ++ * Don't use precompiled header files on arm64. ++ * Update the sec-webrev-8u111-S8159503.hotspot patch. ++ ++ -- Matthias Klose Sat, 05 Nov 2016 13:19:09 +0100 ++ ++openjdk-7 (7u111-2.6.7-2) experimental; urgency=medium ++ ++ [ Tiago Stürmer Daitx ] ++ * Backported security fixes from 8u111: ++ - CVE-2016-5568, S8158993: Service Menu services. ++ - CVE-2016-5582, S8160591: Improve internal array handling. ++ - CVE-2016-5573, S8159519: Reformat JDWP messages. ++ - CVE-2016-5597, S8160838: Better HTTP service. ++ - CVE-2016-5554, S8157739: Classloader Consistency Checking. ++ - CVE-2016-5542, S8155973: Tighten jar checks. ++ * debian/rules: ++ - removed lcms version 1 option as no current release uses that, lcms2 ++ is now default. ++ - removed in-tree/system lcms selection to always use system's lcms. ++ - removed all cacao references except for the transitional cacao package. ++ - updated jtreg tests to use othervm. ++ - simplified rhino and libcups dependency selection. ++ * debian/buildwatch.sh: updated to stop it if no 'make' process is running, ++ as it probably means that the build failed - otherwise buildwatch keeps ++ the builder alive until it exits after the timer (3 hours by default) ++ expires. ++ * debian/control.in: removed cacao references. ++ * debian/README.source: removed cacao references. ++ * debian/patches/cacao-armv4.diff: deleted file. ++ * Makefile.am: remove -samevm ++ * debian/patches/it-jamvm-8158260-unsafe-methods.patch: fix JAMVM ++ after the introduction of two new Unsafe methods in the OpenJDK ++ hotspot. Closes: #833933. (LP: #1611598) ++ ++ [ Matthias Klose ] ++ * Fix building the -dbg package depending on the debhelper level. ++ ++ -- Matthias Klose Fri, 04 Nov 2016 18:50:39 +0100 ++ ++openjdk-7 (7u111-2.6.7-1) experimental; urgency=medium ++ ++ [ Matthias Klose ] ++ * Fix handling of /usr/lib/jvm/*/jre/lib/zi if internal tzdata is used ++ (Andreas Beckmann). Closes: #821858. ++ * Add missing includes for aarch64 hotspot backport (building without pch). ++ * Use in-tree lcms for backports. ++ ++ [ Tiago Stürmer Daitx ] ++ * IcedTea release 2.6.7 (based on 7u111): ++ * Security fixes ++ - S8079718, CVE-2016-3458: IIOP Input Stream Hooking ++ - S8145446, CVE-2016-3485: Perfect pipe placement (Windows only) ++ - S8147771: Construction of static protection domains under Javax ++ custom policy ++ - S8148872, CVE-2016-3500: Complete name checking ++ - S8149962, CVE-2016-3508: Better delineation of XML processing ++ - S8150752: Share Class Data ++ - S8151925: Font reference improvements ++ - S8152479, CVE-2016-3550: Coded byte streams ++ - S8155981, CVE-2016-3606: Bolster bytecode verification ++ - S8155985, CVE-2016-3598: Persistent Parameter Processing ++ - S8158571, CVE-2016-3610: Additional method handle validation ++ * debian/rules: ++ - Create symbolic link in source package (thanks Avinash). ++ Closes: #832720. ++ * debian/JB-jre-headless.prerm.in: check for /var/lib/binfmts/jar ++ instead of /var/lib/binfmts/@basename@ before removing jar entry ++ from binfmts. Closes: #821146. ++ ++ -- Matthias Klose Sat, 30 Jul 2016 08:13:07 +0200 ++ ++openjdk-7 (7u101-2.6.6-2) experimental; urgency=medium ++ ++ * Configure with --disable-arm32-jit, broken by the security update. ++ ++ -- Matthias Klose Sat, 23 Apr 2016 02:28:28 +0200 ++ ++openjdk-7 (7u101-2.6.6-1) experimental; urgency=medium ++ ++ [ Tiago Stürmer Daitx ] ++ * IcedTea release 2.6.6 (based on 7u101): ++ * Security fixes ++ - S8129952, CVE-2016-0686: Ensure thread consistency ++ - S8132051, CVE-2016-0687: Better byte behavior ++ - S8138593, CVE-2016-0695: Make DSA more fair ++ - S8139008: Better state table management ++ - S8143167, CVE-2016-3425: Better buffering of XML strings ++ - S8144430, CVE-2016-3427: Improve JMX connections ++ - S8146494: Better ligature substitution ++ - S8146498: Better device table adjustments ++ * debian/patches/jdk-8152335-improve-methodhandle-consistency.patch: ++ removed, fix is upstream since 2.6.5 ++ ++ [ Matthias Klose ] ++ * Fix handling of /usr/lib/jvm/*/jre/lib/zi if internal tzdata is used (Andreas ++ Beckmann). Closes: #821858. ++ ++ -- Matthias Klose Fri, 22 Apr 2016 21:14:22 +0200 ++ ++openjdk-7 (7u95-2.6.4-3) experimental; urgency=medium ++ ++ [ Tiago Stürmer Daitx ] ++ * SECURITY UPDATE: Applies to client deployment of Java only. This ++ vulnerability can be exploited only through sandboxed Java Web Start ++ applications and sandboxed Java applets. ++ - d/p/jdk-8152335-improve-methodhandle-consistency.patch: S8152335, ++ CVE-2016-0636: Improve MethodHandle consistency ++ ++ [ Matthias Klose ] ++ * Use internal tzdata for builds in stretch, unstable, experimental. ++ Closes: #818308. ++ ++ -- Matthias Klose Thu, 24 Mar 2016 15:24:32 +0100 ++ ++openjdk-7 (7u95-2.6.4-2) experimental; urgency=medium ++ ++ * Upload to experimental. ++ ++ -- Matthias Klose Fri, 05 Feb 2016 17:51:20 +0100 ++ ++openjdk-7 (7u95-2.6.4-1) unstable; urgency=high ++ ++ [ Tiago Stürmer Daitx ] ++ * IcedTea release 2.6.4 (based on 7u95): ++ * Security fixes ++ - S8059054, CVE-2016-0402: Better URL processing ++ - S8130710, CVE-2016-0448: Better attributes processing ++ - S8132210: Reinforce JMX collector internals ++ - S8132988: Better printing dialogues ++ - S8133962, CVE-2016-0466: More general limits ++ - S8137060: JMX memory management improvements ++ - S8139012: Better font substitutions ++ - S8139017, CVE-2016-0483: More stable image decoding ++ - S8140543, CVE-2016-0494: Arrange font actions ++ - S8143185: Cleanup for handling proxies ++ - S8143941, CVE-2015-8126, CVE-2015-8472: Update splashscreen displays ++ - S8144773, CVE-2015-7575: Further reduce use of MD5 (SLOTH) ++ * debian/patches/it-debian-build-flags.diff: refreshed ++ * debian/patches/it-set-compiler.diff: refreshed ++ * debian/patches/it-use-quilt.diff: refreshed ++ * debian/patches/it-jamvm-2.0.diff: refreshed ++ * debian/patches/icedtea-pretend-memory.diff: refreshed ++ * debian/patches/fix_extra_flags-default.diff: refreshed ++ * debian/patches/zero-sparc.diff: refreshed ++ ++ [ Matthias Klose ] ++ * Remove obsolete IcedTea configure options. ++ * Fix build failure on squeeze (Thorsten Glaser). Closes: #809205. ++ * Don't run the test on mips, still having stone age buildd hardware and ++ empty promises to fix these issues since 2010. ++ ++ -- Matthias Klose Thu, 21 Jan 2016 13:17:54 +0100 ++ ++openjdk-7 (7u91-2.6.3-3) unstable; urgency=medium ++ ++ * Fix stripping packages (use bash instead of expr substring). ++ * openjdk-jre-headless: Add dependency on the package containing the ++ mountpoint binary. Closes: #803717. ++ * openjdk-7-jdk: Fix typo in sdk provides. Closes: #803150. ++ * Build using giflib 5. ++ ++ -- Matthias Klose Mon, 30 Nov 2015 06:27:48 +0100 ++ ++openjdk-7 (7u91-2.6.3-2) unstable; urgency=medium ++ ++ * Enable sparc64 for hotspot (John Paul Adrian Glaubitz). ++ * Add debian/patches/sparc-libproc-fix.diff to include missing ++ headers on sparc64 (David Matthew Mattli). Closes: #805846. ++ ++ -- Matthias Klose Wed, 25 Nov 2015 23:38:54 +0100 ++ ++openjdk-7 (7u91-2.6.3-1) unstable; urgency=medium ++ ++ [ Tiago Stürmer Daitx ] ++ * Icedtea release 2.6.3 (based on 7u91): ++ * Security fixes ++ - S8142882, CVE-2015-4871: rebinding of the receiver of a DirectMethodHandle may ++ allow a protected method to be accessed ++ ++ -- Matthias Klose Thu, 19 Nov 2015 01:27:25 +0100 ++ ++openjdk-7 (7u91-2.6.2-1) unstable; urgency=medium ++ ++ [ Tiago Stürmer Daitx ] ++ * IcedTea release 2.6.2 (based on 7u91): ++ * Security fixes ++ - S8048030, CVE-2015-4734: Expectations should be consistent ++ - S8068842, CVE-2015-4803: Better JAXP data handling ++ - S8076339, CVE-2015-4903: Better handling of remote object invocation ++ - S8076383, CVE-2015-4835: Better CORBA exception handling ++ - S8076387, CVE-2015-4882: Better CORBA value handling ++ - S8076392, CVE-2015-4881: Improve IIOPInputStream consistency ++ - S8076413, CVE-2015-4883: Better JRMP message handling ++ - S8078427, CVE-2015-4842: More supportive home environment ++ - S8078440: Safer managed types ++ - S8080541: More direct property handling ++ - S8080688, CVE-2015-4860: Service for DGC services ++ - S8081760: Better group dynamics ++ - S8086092, CVE-2015-4840: More palette improvements ++ - S8086733, CVE-2015-4893: Improve namespace handling ++ - S8087350: Improve array conversions ++ - S8103671, CVE-2015-4805: More objective stream classes ++ - S8103675: Better Binary searches ++ - S8130078, CVE-2015-4911: Document better processing ++ - S8130193, CVE-2015-4806: Improve HTTP connections ++ - S8130864: Better server identity handling ++ - S8130891, CVE-2015-4843: (bf) More direct buffering ++ - S8131291, CVE-2015-4872: Perfect parameter patterning ++ - S8132042, CVE-2015-4844: Preserve layout presentation ++ * d/patches/it-debian-build-flags.diff: refreshed ++ * d/patches/it-set-compiler.diff: refreshed ++ * d/patches/it-use-quilt.diff: refreshed and updated ++ * d/patches/it-jamvm-2.0.diff: refreshed ++ * d/patches/xrender: removed as it was applied upstream ++ ++ -- Matthias Klose Sun, 25 Oct 2015 22:30:06 +0100 ++ ++openjdk-7 (7u85-2.6.1-6) unstable; urgency=medium ++ ++ [ Tiago Stürmer Daitx ] ++ * Security fixes ++ - S8048030, CVE-2015-4734: Expectations should be consistent ++ - S8068842, CVE-2015-4803: Better JAXP data handling ++ - S8076339, CVE-2015-4903: Better handling of remote object invocation ++ - S8076383, CVE-2015-4835: Better CORBA exception handling ++ - S8076387, CVE-2015-4882: Better CORBA value handling ++ - S8076392, CVE-2015-4881: Improve IIOPInputStream consistency ++ - S8076413, CVE-2015-4883: Better JRMP message handling ++ - S8078427, CVE-2015-4842: More supportive home environment ++ - S8078440: Safer managed types ++ - S8080541: More direct property handling ++ - S8080688, CVE-2015-4860: Service for DGC services ++ - S8081744, CVE-2015-4868: Clear out list corner case ++ - S8081760: Better group dynamics ++ - S8086092. CVE-2015-4840: More palette improvements ++ - S8086733, CVE-2015-4893: Improve namespace handling ++ - S8087350: Improve array conversions ++ - S8103671, CVE-2015-4805: More objective stream classes ++ - S8103675: Better Binary searches ++ - S8129611: Accessbridge error handling improvement ++ - S8130078, CVE-2015-4911: Document better processing ++ - S8130185: More accessible access switch ++ - S8130193, CVE-2015-4806: Improve HTTP connections ++ - S8130864: Better server identity handling ++ - S8130891, CVE-2015-4843: (bf) More direct buffering ++ - S8131291, CVE-2015-4872: Perfect parameter patterning ++ - S8132042, CVE-2015-4844: Preserve layout presentation ++ * S6966259: Make PrincipalName and Realm immutable, required for S8048030 ++ * S8078822: 8068842 fix missed one new file ++ PrimeNumberSequenceGenerator.java ++ ++ [ Matthias Klose ] ++ * Re-enable the atk bridge for releases with a fixed atk bridge. ++ Again closes: #797595. ++ ++ -- Matthias Klose Thu, 22 Oct 2015 00:42:34 +0200 ++ ++openjdk-7 (7u85-2.6.1-5) unstable; urgency=medium ++ ++ * Fix passing --disable-system-sctp for non-linux targets. ++ ++ -- Matthias Klose Thu, 08 Oct 2015 07:01:54 +0200 ++ ++openjdk-7 (7u85-2.6.1-4) unstable; urgency=medium ++ ++ * Build again with pulseaudio on alpha. ++ * Update the kfreebsd support patches (Steven Chamberlain). Closes: #798123. ++ * Fix parallel build. Closes: #798124. ++ * Disable again the atk bridge, too many regressions. Reopens: #797595. ++ ++ -- Matthias Klose Wed, 07 Oct 2015 16:24:40 +0200 ++ ++openjdk-7 (7u85-2.6.1-3) unstable; urgency=medium ++ ++ * Configure with --disable-system-sctp on KFreeBSD. ++ * Stop building jamvm on mips and mipsel, fails to build. ++ ++ -- Matthias Klose Sat, 05 Sep 2015 16:54:38 +0200 ++ ++openjdk-7 (7u85-2.6.1-2) unstable; urgency=medium ++ ++ * Stop building zero on AArch64, broken on the merged IcedTea Hotspot. ++ * Only build-depend on libsctp-dev on linux architectures. ++ * Configure for zero on sparc64, Hotspot build fails too. ++ ++ -- Matthias Klose Fri, 04 Sep 2015 17:47:56 +0200 ++ ++openjdk-7 (7u85-2.6.1-1) unstable; urgency=medium ++ ++ * IcedTea7 2.6.1 release (based on OpenJDK 7u85). ++ * Configure for Hotspot on sparc64. ++ * Add mips to the openjdk stage1 architectures. ++ * Sort the enums and the annotations in the package-tree.html files (Emmanuel ++ Bourg). Closes: #787159. ++ * Re-enable the atk bridge for releases with a fixed atk bridge. ++ Closes: #797595. ++ * Make derivatives builds the same as the parent distro. Closes: #797662. ++ ++ -- Matthias Klose Thu, 03 Sep 2015 12:47:16 +0200 ++ ++openjdk-7 (7u79-2.5.6-2) unstable; urgency=medium ++ ++ * Fix installing the openjdk.desktop file when cautious-launch is available. ++ LP: #1448548. ++ ++ -- Matthias Klose Thu, 13 Aug 2015 14:09:54 +0200 ++ ++openjdk-7 (7u79-2.5.6-1) unstable; urgency=medium ++ ++ * IcedTea7 2.5.6 release (based on OpenJDK 7u79). ++ * Security fixes ++ - S8043202, CVE-2015-2808: Prohibit RC4 cipher suites. ++ - S8067694, CVE-2015-2625: Improved certification checking. ++ - S8071715, CVE-2015-4760: Tune font layout engine. ++ - S8071731: Better scaling for C1. ++ - S8072490: Better font morphing redux. ++ - S8072887: Better font handling improvements. ++ - S8073334: Improved font substitutions. ++ - S8073773: Presume path preparedness. ++ - S8073894: Getting to the root of certificate chains. ++ - S8074330: Set font anchors more solidly. ++ - S8074335: Substitute for substitution formats. ++ - S8074865, CVE-2015-2601: General crypto resilience changes. ++ - S8074871: Adjust device table handling. ++ - S8075374, CVE-2015-4748: Responding to OCSP responses. ++ - S8075378, CVE-2015-4749: JNDI DnsClient Exception Handling. ++ - S8075738: Better multi-JVM sharing. ++ - S8075833, CVE-2015-2613: Straighter Elliptic Curves. ++ - S8075838: Method for typing MethodTypes. ++ - S8075853, CVE-2015-2621: Proxy for MBean proxies. ++ - S8076328, CVE-2015-4000: Enforce key exchange constraints. ++ - S8076376, CVE-2015-2628: Enhance IIOP operations. ++ - S8076397, CVE-2015-4731: Better MBean connections. ++ - S8076401, CVE-2015-2590: Serialize OIS data. ++ - S8076405, CVE-2015-4732: Improve serial serialization. ++ - S8076409, CVE-2015-4733: Reinforce RMI framework. ++ - S8077520, CVE-2015-2632: Morph tables into improved form. ++ - PR2487, CVE-2015-4000: Make jdk8 mode the default for ++ jdk.tls.ephemeralDHKeySize. ++ * Update the kfreebsd hotspot support patch (Steven Chamberlain). ++ Closes: #788982. ++ * openjdk-7-jre: Recommend the real libgconf2-4 and libgnome2-0 packages. ++ Closes: #786594. ++ ++ -- Matthias Klose Thu, 23 Jul 2015 17:19:35 +0200 ++ ++openjdk-7 (7u79-2.5.5-1) unstable; urgency=high ++ ++ * IcedTea7 2.5.5 release (based on OpenJDK 7u79). ++ * Security fixes ++ - S8059064: Better G1 log caching. ++ - S8060461: Fix for JDK-8042609 uncovers additional issue. ++ - S8064601, CVE-2015-0480: Improve jar file handling. ++ - S8065286: Fewer subtable substitutions. ++ - S8065291: Improved font lookups. ++ - S8066479: Better certificate chain validation. ++ - S8067050: Better font consistency checking. ++ - S8067684: Better font substitutions. ++ - S8067699, CVE-2015-0469: Better glyph storage. ++ - S8068320, CVE-2015-0477: Limit applet requests. ++ - S8068720, CVE-2015-0488: Better certificate options checking. ++ - S8069198: Upgrade image library. ++ - S8071726, CVE-2015-0478: Better RSA optimizations. ++ - S8071818: Better vectorization on SPARC. ++ - S8071931, CVE-2015-0460: Return of the phantom menace. ++ * Build the documentation when building with a Hotspot VM. Closes: #781577. ++ * openjdk-7-jre.preinst: Fix version for alternatives cleanup. ++ Closes: #775072. ++ * Re-enable HotSpot on SPARC; zero doesn't workm and there seems to be ++ some work ongoing upstream. ++ * Refresh patches. ++ * Only install the openjdk-java.desktop file when using cautious-launcher. ++ ++ -- Matthias Klose Wed, 15 Apr 2015 22:16:17 +0200 ++ ++openjdk-7 (7u75-2.5.4-3) unstable; urgency=medium ++ ++ * Replace the ARM32 Thumb JIT with the ARM32 JIT. ++ * Fix 8059327: XML parser returns corrupt attribute value. Closes: #780166. ++ * openjdk-7-jre.preinst: Cleanup obsolete alternatives (javaws, ++ pluginappletviewer) left by openjdk-6-jre/squeeze (Andreas Beckmann). ++ Closes: #775072. ++ ++ -- Matthias Klose Wed, 11 Mar 2015 13:07:54 +0100 ++ ++openjdk-7 (7u75-2.5.4-2) unstable; urgency=medium ++ ++ * Fix build on mips64 and mips64el. Addresses #776295. ++ * Fix the build using the updated patch not following symlinks. ++ ++ -- Matthias Klose Thu, 05 Feb 2015 18:22:28 +0100 ++ ++openjdk-7 (7u75-2.5.4-1) unstable; urgency=high ++ ++ * IcedTea7 2.5.4 release (based on OpenJDK 7u75). ++ * Security fixes ++ - S8046656: Update protocol support. ++ - S8047125, CVE-2015-0395: (ref) More phantom object references. ++ - S8047130: Fewer escapes from escape analysis. ++ - S8048035, CVE-2015-0400: Ensure proper proxy protocols. ++ - S8049253: Better GC validation. ++ - S8050807, CVE-2015-0383: Better performing performance data handling. ++ - S8054367, CVE-2015-0412: More references for endpoints. ++ - S8055304, CVE-2015-0407: More boxing for DirectoryComboBoxModel. ++ - S8055309, CVE-2015-0408: RMI needs better transportation considerations. ++ - S8055479: TLAB stability. ++ - S8055489, CVE-2014-6585: Better substitution formats. ++ - S8056264, CVE-2014-6587: Multicast support improvements. ++ - S8056276, CVE-2014-6591: Fontmanager feature improvements. ++ - S8057555, CVE-2014-6593: Less cryptic cipher suite management. ++ - S8058982, CVE-2014-6601: Better verification of an exceptional invokespecial. ++ - S8059485, CVE-2015-0410: Resolve parsing ambiguity. ++ - S8061210, CVE-2014-3566: Issues in TLS. ++ ++ -- Matthias Klose Fri, 23 Jan 2015 12:14:42 +0100 ++ ++openjdk-7 (7u71-2.5.3-2) unstable; urgency=medium ++ ++ * Regenerate the .orig.tar to omit a third hotspot tarball. ++ * Really fix the libjpeg runtime dependency for sid and jessie. ++ Closes: #766601. ++ * Fix regression running JamVM after the 2.5.3 security update. ++ Closes: #767771. LP: #1382205. ++ * Fix regression running CACAO after the 2.5.3 security update. ++ * Backport S8000897, VM crash in CompileBroker. Closes: #768747. ++ * Fix building icedtea-sound on x32 (patch dropped in 7u71-2.5.3-1). ++ Closes: #766610. ++ * Don't use the compatibility path names from the ttf-dejavu packages ++ for recent releases. LP: #1362099. ++ ++ -- Matthias Klose Thu, 13 Nov 2014 11:10:28 +0100 ++ ++openjdk-7 (7u71-2.5.3-1) unstable; urgency=high ++ ++ * IcedTea7 2.5.3 release (based on OpenJDK 7u71). ++ * Security fixes: ++ - S8015256: Better class accessibility. ++ - S8022783, CVE-2014-6504: Optimize C2 optimizations. ++ - S8035162: Service printing service. ++ - S8035781: Improve equality for annotations. ++ - S8036805: Correct linker method lookup. ++ - S8036810: Correct linker field lookup. ++ - S8036936: Use local locales. ++ - S8037066, CVE-2014-6457: Secure transport layer. ++ - S8037846, CVE-2014-6558: Ensure streaming of input cipher streams. ++ - S8038364: Use certificate exceptions correctly. ++ - S8038899: Safer safepoints. ++ - S8038903: More native monitor monitoring. ++ - S8038908: Make Signature more robust. ++ - S8038913: Bolster XML support. ++ - S8039509, CVE-2014-6512: Wrap sockets more thoroughly. ++ - S8039533, CVE-2014-6517: Higher resolution resolvers. ++ - S8041540, CVE-2014-6511: Better use of pages in font processing. ++ - S8041529: Better parameterization of parameter lists. ++ - S8041545: Better validation of generated rasters. ++ - S8041564, CVE-2014-6506: Improved management of logger resources. ++ - S8041717, CVE-2014-6519: Issue with class file parser. ++ - S8042609, CVE-2014-6513: Limit splashiness of splash images. ++ - S8042797, CVE-2014-6502: Avoid strawberries in LogRecord. ++ - S8044274, CVE-2014-6531: Proper property processing. ++ ++ [ Matthias Klose ] ++ * Change B-D to libjpeg-dev to finish the transition to libjpeg-turbo ++ (Ondřej Surý). Closes: #763489. ++ * Depend on libnss3 instead of libnss3-1d for recent releases. ++ Addresses: #760122. ++ * Ship the apt binary and man page again. Closes: #765037. ++ ++ [ Bill Huey ] ++ * Icedtea 2.5.3, jamvm-2.0.0 and icetea-sound-1.0.1 packaging updates. ++ ++ -- Matthias Klose Thu, 23 Oct 2014 15:53:05 +0200 ++ ++openjdk-7 (7u65-2.5.2-4) unstable; urgency=medium ++ ++ * Update the hotspot for AArch64, rev 9580ebccfdc3. ++ * Don't install tapset files. Not yet ready. Closes: #761043. ++ ++ -- Matthias Klose Thu, 18 Sep 2014 02:41:41 +0200 ++ ++openjdk-7 (7u65-2.5.2-3) unstable; urgency=medium ++ ++ * Enable systemtap for development versions. ++ * Fix the icedtea-sound build on x32. Closes: #760436. ++ * Enable the template interpreter for ppc64 and ppc64el. ++ ++ -- Matthias Klose Tue, 09 Sep 2014 14:38:10 +0200 ++ ++openjdk-7 (7u65-2.5.2-2) unstable; urgency=medium ++ ++ * Update JamVM patch for kfreebsd (Steven Chamberlain). Closes: #760160. ++ ++ -- Matthias Klose Tue, 02 Sep 2014 22:48:03 +0200 ++ ++openjdk-7 (7u65-2.5.2-1) unstable; urgency=medium ++ ++ * IcedTea7 2.5.2 release (based on OpenJDK 7u65). ++ * Update JamVM to 2.0.0. ++ * Update the hotspot for AArch64, rev 778cb4032983. ++ ++ -- Matthias Klose Sun, 31 Aug 2014 22:21:19 +0200 ++ ++openjdk-7 (7u65-2.5.1-5) unstable; urgency=medium ++ ++ * Fix quoting of configure args for the zero build. ++ * Fix a stack verifier regression in the latest security updates. ++ http://hg.openjdk.java.net/jdk7u/jdk7u/hotspot/rev/bad107a5d096 ++ (Bill Huey) LP: #1360392. ++ * Don't ship the apt binary anymore for new releases (deprecated upstream). ++ * Let openjdk-7-source replace openjdk-7-jdk, widening the version range. ++ * Update the hotspot for AArch64, rev 778cb4032983. ++ ++ -- Matthias Klose Sun, 24 Aug 2014 10:16:14 +0200 ++ ++openjdk-7 (7u65-2.5.1-4) unstable; urgency=medium ++ ++ * Let the file system check for the libpcsclite library succeed again, ++ although we are not using it. Closes: #755893. ++ ++ -- Matthias Klose Fri, 25 Jul 2014 20:35:47 +0200 ++ ++openjdk-7 (7u65-2.5.1-3) unstable; urgency=medium ++ ++ * Use the system libpcsclite library. Closes: #754952. ++ * Let openjdk-7-source replace openjdk-7-jdk. Closes: #755126. ++ ++ -- Matthias Klose Wed, 23 Jul 2014 17:42:25 +0200 ++ ++openjdk-7 (7u65-2.5.1-2) unstable; urgency=medium ++ ++ * openjdk-7-jdk: Fix src.zip symlink. Closes: #755126. ++ ++ -- Matthias Klose Sat, 19 Jul 2014 13:52:53 +0200 ++ ++openjdk-7 (7u65-2.5.1-1) unstable; urgency=high ++ ++ * IcedTea7 2.5.1 release (based on OpenJDK 7u65). ++ * Security fixes: ++ - S8029755, CVE-2014-4209: Enhance subject class. ++ - S8030763: Validate global memory allocation. ++ - S8031340, CVE-2014-4264: Better TLS/EC management. ++ - S8031346, CVE-2014-4244: Enhance RSA key handling. ++ - S8031540: Introduce document horizon. ++ - S8032536: JVM resolves wrong method in some unusual cases. ++ - S8033055: Issues in 2d. ++ - S8033301, CVE-2014-4266: Build more informative InfoBuilder. ++ - S8034267: Probabilistic native crash. ++ - S8034272: Do not cram data into CRAM arrays. ++ - S8034985, CVE-2014-2483: Better form for Lambda Forms. ++ - S8035004, CVE-2014-4252: Provider provides less service. ++ - S8035009, CVE-2014-4218: Make Proxy representations consistent. ++ - S8035119, CVE-2014-4219: Fix exceptions to bytecode verification. ++ - S8035699, CVE-2014-4268: File choosers should be choosier. ++ - S8035788. CVE-2014-4221: Provide more consistency for lookups. ++ - S8035793, CVE-2014-4223: Maximum arity maxed out. ++ - S8036571: (process) Process process arguments carefully. ++ - S8036800: Attribute OOM to correct part of code. ++ - S8037046: Validate libraries to be loaded. ++ - S8037076, CVE-2014-2490: Check constant pool constants. ++ - S8037157: Verify call. ++ - S8037162, CVE-2014-4263: More robust DH exchanges. ++ - S8037167, CVE-2014-4216: Better method signature resolution. ++ - S8039520, CVE-2014-4262: More atomicity of atomic updates. ++ * Build libjsig and libsaproc with hardening defaults. ++ * Fix some lintian warnings. ++ * Move libjavagtk into the -jre package. Closes: #754770. ++ * Recognize -dcevm as a jvm. Closes: #748625. ++ * Install the src.zip into an architecture independent path. Closes: #749648. ++ ++ -- Matthias Klose Wed, 16 Jul 2014 21:27:01 +0200 ++ ++openjdk-7 (7u60-2.5.0-2) unstable; urgency=high ++ ++ * Refresh KFreeBSD patches (Steven Chamberlain). Closes: #754214. ++ * Backport S7179339, xrender pipeline creates graphics corruption. ++ (Matthias Bläsing). LP: #1101348. ++ * Configure with --disable-infinality. Closes: #754343. LP: #1338897. ++ ++ -- Matthias Klose Thu, 10 Jul 2014 17:25:27 +0200 ++ ++openjdk-7 (7u60-2.5.0-1) unstable; urgency=medium ++ ++ * IcedTea7 2.5.0 release (based on OpenJDK 7u60). ++ * Convert to package format 3.0 (quilt). ++ * Add the IcedTea Sound tarball. ++ * Build the hotspot VM for ppc64 and ppc64el. ++ * Replace the IcedTea patch system with quilt. ++ * Re-enable the ARM assembler interpreter. ++ ++ -- Matthias Klose Sun, 06 Jul 2014 14:51:51 +0200 ++ ++openjdk-7 (7u55-2.4.7-2) unstable; urgency=medium ++ ++ * Fix the quoting of configure flags for the zero build. ++ * Update the java-access-bridge-security patch (Raphael Geissert). ++ * Don't hard code the compiler names in the AArch64 hotspot build. ++ * Build using GCC 4.9 where available. ++ * Add MIPS64(el) support (Yunqiang Su). Closes: #746207. ++ * Suggest fonts-indic instead of ttf-indic-fonts. Closes: #747694. ++ ++ -- Matthias Klose Fri, 16 May 2014 19:12:42 +0200 ++ ++openjdk-7 (7u55-2.4.7-1) unstable; urgency=high ++ ++ * IcedTea7 2.4.7 release. ++ * Security fixes ++ - S8023046: Enhance splashscreen support. ++ - S8025005: Enhance CORBA initializations. ++ - S8025010, CVE-2014-2412: Enhance AWT contexts. ++ - S8025030, CVE-2014-2414: Enhance stream handling. ++ - S8025152, CVE-2014-0458: Enhance activation set up. ++ - S8026067: Enhance signed jar verification. ++ - S8026163, CVE-2014-2427: Enhance media provisioning. ++ - S8026188, CVE-2014-2423: Enhance envelope factory. ++ - S8026200: Enhance RowSet Factory. ++ - S8026716, CVE-2014-2402: (aio) Enhance asynchronous channel handling. ++ - S8026736, CVE-2014-2398: Enhance Javadoc pages. ++ - S8026797, CVE-2014-0451: Enhance data transfers. ++ - S8026801, CVE-2014-0452: Enhance endpoint addressing. ++ - S8027766, CVE-2014-0453: Enhance RSA processing. ++ - S8027775: Enhance ICU code. ++ - S8027841, CVE-2014-0429: Enhance pixel manipulations. ++ - S8028385: Enhance RowSet Factory. ++ - S8029282, CVE-2014-2403: Enhance CharInfo set up. ++ - S8029286: Enhance subject delegation. ++ - S8029699: Update Poller demo. ++ - S8029730: Improve audio device additions. ++ - S8029735: Enhance service mgmt natives. ++ - S8029740, CVE-2014-0446: Enhance handling of loggers. ++ - S8029745, CVE-2014-0454: Enhance algorithm checking. ++ - S8029750: Enhance LCMS color processing (LCMS 2 only). ++ - S8029760, CVE-2013-6629: Enhance AWT image libraries (in-tree libjpeg). ++ - S8029844, CVE-2014-0455: Enhance argument validation. ++ - S8029854, CVE-2014-2421: Enhance JPEG decodings. ++ - S8029858, CVE-2014-0456: Enhance array copies. ++ - S8030731, CVE-2014-0460: Improve name service robustness. ++ - S8031330: Refactor ObjectFactory. ++ - S8031335, CVE-2014-0459: Better color profiling. ++ - S8031352, CVE-2013-6954: Enhance PNG handling (in-tree libpng). ++ - S8031394, CVE-2014-0457: (sl) Fix exception handling in ServiceLoader. ++ - S8031395: Enhance LDAP processing. ++ - S8032686, CVE-2014-2413: Issues with method invoke. ++ - S8033618, CVE-2014-1876: Correct logging output. ++ - S8034926, CVE-2014-2397: Attribute classes properly. ++ - S8036794, CVE-2014-0461: Manage JavaScript instances. ++ * AArch64 fixes. ++ ++ -- Matthias Klose Wed, 16 Apr 2014 15:37:40 +0200 ++ ++openjdk-7 (7u51-2.4.6-1) unstable; urgency=medium ++ ++ * IcedTea7 2.4.6 release. ++ * Explicitly use AC_MAINTAINER_MODE and automake-1.11 to create the ++ debian .orig tarball. Addresses: #740289. ++ * Apply patch from upstream to fix bold fonts in Swing applications using ++ GTK L&F (Ryan Tandy). LP: #937200. ++ * Explicitly build-depend on libkrb5-dev. ++ * On AArch64 don't use the hotsport backport for the zero build. ++ ++ -- Matthias Klose Tue, 01 Apr 2014 09:25:19 +0200 ++ ++openjdk-7 (7u51-2.4.6~pre1-1) unstable; urgency=medium ++ ++ * IcedTea7 2.4.6 prerelease. ++ * Fix icedtea-web build failure on kfreebsd-* (unable to find ++ sun.security.util.SecurityConstants). Steven Chamberlain. Closes: #739032. ++ * Update the AArch64 Hotspot. ++ ++ -- Matthias Klose Thu, 27 Mar 2014 17:24:45 +0100 ++ ++openjdk-7 (7u51-2.4.5-2) unstable; urgency=medium ++ ++ * Update the KFreeBSD patch (Steven Chamberlain). Closes: #736291. ++ ++ -- Matthias Klose Tue, 04 Feb 2014 13:28:10 +0100 ++ ++openjdk-7 (7u51-2.4.5-1) unstable; urgency=medium ++ ++ * IcedTea7 2.4.5 release. ++ * Build Hotspot client and server vms for AArch64. ++ ++ -- Matthias Klose Fri, 31 Jan 2014 06:13:20 -0500 ++ ++openjdk-7 (7u51-2.4.4-1) unstable; urgency=medium ++ ++ * IcedTea7 2.4.4 release. ++ * Security fixes ++ - S6727821: Enhance JAAS Configuration. ++ - S7068126, CVE-2014-0373: Enhance SNMP statuses. ++ - S8010935: Better XML handling. ++ - S8011786, CVE-2014-0368: Better applet networking. ++ - S8021257, S8025022, CVE-2013-5896 : com.sun.corba.se.** should be ++ on restricted package list. ++ - S8021271, S8021266, CVE-2014-0408: Better buffering in ObjC code. ++ - S8022904: Enhance JDBC Parsers. ++ - S8022927: Input validation for byte/endian conversions. ++ - S8022935: Enhance Apache resolver classes. ++ - S8022945: Enhance JNDI implementation classes. ++ - S8023057: Enhance start up image display. ++ - S8023069, CVE-2014-0411: Enhance TLS connections. ++ - S8023245, CVE-2014-0423: Enhance Beans decoding. ++ - S8023301: Enhance generic classes. ++ - S8023338: Update jarsigner to encourage timestamping. ++ - S8023672: Enhance jar file validation. ++ - S8024302: Clarify jar verifications. ++ - S8024306, CVE-2014-0416: Enhance Subject consistency. ++ - S8024530: Enhance font process resilience. ++ - S8024867: Enhance logging start up. ++ - S8025014: Enhance Security Policy. ++ - S8025018, CVE-2014-0376: Enhance JAX-P set up. ++ - S8025026, CVE-2013-5878: Enhance canonicalization. ++ - S8025034, CVE-2013-5907: Improve layout lookups. ++ - S8025448: Enhance listening events. ++ - S8025758, CVE-2014-0422: Enhance Naming management. ++ - S8025767, CVE-2014-0428: Enhance IIOP Streams. ++ - S8026172: Enhance UI Management. ++ - S8026176: Enhance document printing. ++ - S8026193, CVE-2013-5884: Enhance CORBA stub factories. ++ - S8026204: Enhance auth login contexts. ++ - S8026417, CVE-2013-5910: Enhance XML canonicalization. ++ - S8026502: java/lang/invoke/MethodHandleConstants.java fails on all ++ platforms. ++ - S8027201, CVE-2014-0376: Enhance JAX-P set up. ++ - S8029507, CVE-2013-5893: Enhance JVM method processing. ++ - S8029533: REGRESSION: closed/java/lang/invoke/8008140/Test8008140.java ++ fails agains. ++ * Remove alpha from stage1_gcj_archs. ++ * Use the langtools and jdk tarballs as provided by IcedTea. ++ * Hotspot is dead on sparc. Build the zero interpreter as the default. ++ * Blindly update the KF***BSD patches. ++ ++ -- Matthias Klose Wed, 15 Jan 2014 10:34:34 +0100 ++ ++openjdk-7 (7u45-2.4.3-5) unstable; urgency=medium ++ ++ * Run the jtreg tests on powerpcspe, tested by Roland Stigge. ++ * Fix zero builds on 64k page kernel configs. ++ * Fix more IcedTea bits to build on x32. ++ ++ -- Matthias Klose Sat, 11 Jan 2014 13:55:34 +0100 ++ ++openjdk-7 (7u45-2.4.3-4) unstable; urgency=low ++ ++ * Re-enable running the testsuite on powerpc. ++ * Run the testsuite on AArch64. ++ * Fix IcedTea bits to build on x32. ++ ++ -- Matthias Klose Sun, 22 Dec 2013 21:20:10 +0100 ++ ++openjdk-7 (7u45-2.4.3-3) unstable; urgency=low ++ ++ * Don't build on s390 anymore. ++ * Update hotspot-mips-align patch (Aurelien Jarno). Closes: #732528). ++ * Build for ppc64el. ++ * Try to build zero on x32. ++ * Configure with --enable-zero on sparc and sparc64. ++ ++ -- Matthias Klose Fri, 20 Dec 2013 14:42:38 +0100 ++ ++openjdk-7 (7u45-2.4.3-2.3) unstable; urgency=medium ++ ++ * Disable bootstrap build on alpha. Closes: #719671. ++ * Disable running the jdk jtreg tests on the hotspot architectures. ++ Hanging on the buildds. ++ * Re-enable the jexec patch, program logic confused by running jexec ++ outside the assumed java home. Closes: #731961. ++ * Don't apply the s390 patches on s390x. s390 is successfully dead. ++ * Fix zero builds on little endian architectures, taken from the trunk. ++ ++ -- Matthias Klose Thu, 12 Dec 2013 18:24:44 +0100 ++ ++openjdk-7 (7u45-2.4.3-1) unstable; urgency=medium ++ ++ * IcedTea7 2.4.3 release. ++ * Security fixes: ++ - S8006900, CVE-2013-3829: Add new date/time capability. ++ - S8008589: Better MBean permission validation. ++ - S8011071, CVE-2013-5780: Better crypto provider handling. ++ - S8011081, CVE-2013-5772: Improve jhat. ++ - S8011157, CVE-2013-5814: Improve CORBA portablility. ++ - S8012071, CVE-2013-5790: Better Building of Beans. ++ - S8012147: Improve tool support. ++ - S8012277: CVE-2013-5849: Improve AWT DataFlavor. ++ - S8012425, CVE-2013-5802: Transform TransformerFactory. ++ - S8013503, CVE-2013-5851: Improve stream factories. ++ - S8013506: Better Pack200 data handling. ++ - S8013510, CVE-2013-5809: Augment image writing code. ++ - S8013514: Improve stability of cmap class. ++ - S8013739, CVE-2013-5817: Better LDAP resource management. ++ - S8013744, CVE-2013-5783: Better tabling for AWT. ++ - S8014085: Better serialization support in JMX classes. ++ - S8014093, CVE-2013-5782: Improve parsing of images. ++ - S8014098: Better profile validation. ++ - S8014102, CVE-2013-5778: Improve image conversion. ++ - S8014341, CVE-2013-5803: Better service from Kerberos servers. ++ - S8014349, CVE-2013-5840: (cl) Class.getDeclaredClass problematic ++ in some class loader configurations. ++ - S8014530, CVE-2013-5825: Better digital signature processing. ++ - S8014534: Better profiling support. ++ - S8014987, CVE-2013-5842: Augment serialization handling. ++ - S8015614: Update build settings. ++ - S8015731: Subject java.security.auth.subject to improvements. ++ - S8015743, CVE-2013-5774: Address internet addresses. ++ - S8016256: Make finalization final. ++ - S8016653, CVE-2013-5804: javadoc should ignore ignoreable characters ++ in names. ++ - S8016675, CVE-2013-5797: Make Javadoc pages more robust. ++ - S8017196, CVE-2013-5850: Ensure Proxies are handled appropriately. ++ - S8017287, CVE-2013-5829: Better resource disposal. ++ - S8017291, CVE-2013-5830: Cast Proxies Aside. ++ - S8017298, CVE-2013-4002: Better XML support. ++ - S8017300, CVE-2013-5784: Improve Interface Implementation. ++ - S8017505, CVE-2013-5820: Better Client Service. ++ - S8019292: Better Attribute Value Exceptions. ++ - S8019617: Better view of objects. ++ - S8020293: JVM crash. ++ - S8021275, CVE-2013-5805: Better screening for ScreenMenu. ++ - S8021282, CVE-2013-5806: Better recycling of object instances. ++ - S8021286: Improve MacOS resourcing. ++ - S8021290, CVE-2013-5823: Better signature validation. ++ - S8022931, CVE-2013-5800: Enhance Kerberos exceptions. ++ - S8022940: Enhance CORBA translations. ++ - S8023683: Enhance class file parsing. ++ * Fix build failure on mips* (Aurelien Jarno). Closes: #729448). ++ * Run autoreconf. Closes: #724083. ++ * Merge the -jre-lib package into -jre-headless. Simplifies the packaging ++ and the savings were not as big as wanted, because the rt.jar is still ++ architecture dependant. Closes: #641049, #722510. ++ ++ -- Matthias Klose Sun, 08 Dec 2013 23:22:06 +0100 ++ ++openjdk-7 (7u25-2.3.12-4ubuntu3) saucy; urgency=low ++ ++ * Apply missing patch to fix arm64/AArch64 detection. ++ ++ -- Matthias Klose Fri, 11 Oct 2013 17:51:33 +0200 ++ ++openjdk-7 (7u25-2.3.12-4ubuntu2) saucy; urgency=low ++ ++ * openjdk-jre-headless: Loosen the dependency on -jre-lib. ++ ++ -- Matthias Klose Wed, 09 Oct 2013 16:29:15 +0200 ++ ++openjdk-7 (7u25-2.3.12-4ubuntu1) saucy; urgency=low ++ ++ * Regenerate the control file. ++ ++ -- Matthias Klose Fri, 16 Aug 2013 12:09:47 +0200 ++ ++openjdk-7 (7u25-2.3.12-4) unstable; urgency=low ++ ++ * Add the hotspot patches for AArch64, which apparently were not ++ included in the IcedTea release by intent. ++ * Don't interpret arm64 as an ARM architecture, but as AArch64. So ++ much for Debian calling this port arm64 ... ++ * Use host macros instead of build macros for corba and hotspot config. ++ * Re-add multiarch library directories to the default library path. ++ Closes: #712567. ++ * Enable the two-stage build on alpha. Closes: #719671. ++ * Build for powerpcspe (Roland Stigge). Closes: #712686. ++ * Recommend fonts-dejavu-extra instead of ttf-dejavu-extra for current ++ releases. Closes: #718839. ++ ++ -- Matthias Klose Thu, 15 Aug 2013 21:26:51 +0200 ++ ++openjdk-7 (7u25-2.3.12-3) unstable; urgency=low ++ ++ * Fix kFreeBSD builds (Thanks to Christoph Egger for his help). ++ ++ -- Damien Raude-Morvan Mon, 12 Aug 2013 00:39:41 +0200 ++ ++openjdk-7 (7u25-2.3.12-2) unstable; urgency=low ++ ++ [ Matthias Klose ] ++ * Regenerate the hotspot-s390 patch. ++ ++ [ Damien Raude-Morvan ] ++ * Update kfreebsd patches. ++ ++ -- Matthias Klose Sat, 03 Aug 2013 20:22:41 +0200 ++ ++openjdk-7 (7u25-2.3.12-1) unstable; urgency=low ++ ++ * IcedTea7 2.3.12 release. ++ * Don't build with pulseaudio on arm64. ++ * Disable bootstraped build on s390 and sparc. ++ ++ -- Matthias Klose Fri, 02 Aug 2013 15:55:01 +0200 ++ ++openjdk-7 (7u25-2.3.10-2ubuntu1) saucy; urgency=low ++ ++ * Regenerate the control file. ++ ++ -- Matthias Klose Mon, 15 Jul 2013 23:59:45 +0200 ++ ++openjdk-7 (7u25-2.3.10-2) unstable; urgency=low ++ ++ [ Matthias Klose ] ++ * Fix gcj-jdk build dependency on ia64 and s390. ++ * Build zero on arm64. ++ ++ [ Gianfranco Costamagna ] ++ * Fix build failure on kfreebsd (Closes: #714528) ++ ++ -- Matthias Klose Sun, 30 Jun 2013 17:12:28 +0200 ++ ++openjdk-7 (7u25-2.3.10-1) unstable; urgency=high ++ ++ * IcedTea7 2.3.10 release. ++ * Security fixes ++ * S6741606, CVE-2013-2407: Integrate Apache Santuario. ++ * S7158805, CVE-2013-2445: Better rewriting of nested subroutine calls. ++ * S7170730, CVE-2013-2451: Improve Windows network stack support. ++ * S8000638, CVE-2013-2450: Improve deserialization. ++ * S8000642, CVE-2013-2446: Better handling of objects for transportation. ++ * S8001032: Restrict object access. ++ * S8001033, CVE-2013-2452: Refactor network address handling in virtual ++ machine identifiers. ++ * S8001034, CVE-2013-1500: Memory management improvements. ++ * S8001038, CVE-2013-2444: Resourcefully handle resources. ++ * S8001043: Clarify definition restrictions. ++ * S8001308: Update display of applet windows. ++ * S8001309: Better handling of annotation interfaces. ++ * S8001318, CVE-2013-2447: Socket.getLocalAddress not consistent with ++ InetAddress.getLocalHost. ++ * S8001330, CVE-2013-2443: Improve on checking order (non-Zero builds only). ++ * S8003703, CVE-2013-2412: Update RMI connection dialog box. ++ * S8004288, CVE-2013-2449: (fs) Files.probeContentType problems. ++ * S8004584: Augment applet contextualization. ++ * S8005007: Better glyph processing. ++ * S8006328, CVE-2013-2448: Improve robustness of sound classes. ++ * S8006611: Improve scripting. ++ * S8007467: Improve robustness of JMX internal APIs. ++ * S8007471: Improve MBean notifications. ++ * S8007812, CVE-2013-2455: (reflect) Class.getEnclosingMethod problematic for some classes. ++ * S8007925: Improve cmsStageAllocLabV2ToV4curves. ++ * S8007926: Improve cmsPipelineDup. ++ * S8007927: Improve cmsAllocProfileSequenceDescription. ++ * S8007929: Improve CurvesAlloc. ++ * S8008120, CVE-2013-2457: Improve JMX class checking. ++ * S8008124, CVE-2013-2453: Better compliance testing. ++ * S8008128: Better API coherence for JMX. ++ * S8008132, CVE-2013-2456: Better serialization support. ++ * S8008585: Better JMX data handling. ++ * S8008593: Better URLClassLoader resource management. ++ * S8008603: Improve provision of JMX providers. ++ * S8008607: Better input checking in JMX. ++ * S8008611: Better handling of annotations in JMX. ++ * S8008615: Improve robustness of JMX internal APIs. ++ * S8008623: Better handling of MBeanServers. ++ * S8008744, CVE-2013-2407: Rework part of fix for JDK-6741606. ++ * S8008982: Adjust JMX for underlying interface changes. ++ * S8009004: Better implementation of RMI connections. ++ * S8009008: Better manage management-api. ++ * S8009013: Better handling of T2K glyphs. ++ * S8009034: Improve resulting notifications in JMX. ++ * S8009038: Improve JMX notification support. ++ * S8009057, CVE-2013-2448: Improve MIDI event handling. ++ * S8009067: Improve storing keys in KeyStore. ++ * S8009071, CVE-2013-2459: Improve shape handling. ++ * S8009235: Improve handling of TSA data. ++ * S8009424, CVE-2013-2458: Adapt Nashorn to JSR-292 implementation change. ++ * S8009554, CVE-2013-2454: Improve SerialJavaObject.getFields. ++ * S8009654: Improve stability of cmsnamed. ++ * S8010209, CVE-2013-2460: Better provision of factories. ++ * S8011243, CVE-2013-2470: Improve ImagingLib. ++ * S8011248, CVE-2013-2471: Better Component Rasters. ++ * S8011253, CVE-2013-2472: Better Short Component Rasters. ++ * S8011257, CVE-2013-2473: Better Byte Component Rasters. ++ * S8012375, CVE-2013-1571: Improve Javadoc framing. ++ * S8012421: Better positioning of PairPositioning. ++ * S8012438, CVE-2013-2463: Better image validation. ++ * S8012597, CVE-2013-2465: Better image channel verification. ++ * S8012601, CVE-2013-2469: Better validation of image layouts. ++ * S8014281, CVE-2013-2461: Better checking of XML signature. ++ * S8015997: Additional improvement in Javadoc framing. ++ * Breaks icedtea-netx (<< 1.4-2). ++ ++ -- Matthias Klose Fri, 28 Jun 2013 16:55:32 +0200 ++ ++openjdk-7 (7u21-2.3.9-5) unstable; urgency=low ++ ++ * Update kFreeBSD support (Guido Guenther). Closes: #708818. ++ * Stop building the transitional cacao package for sid. ++ ++ -- Matthias Klose Sat, 18 May 2013 20:13:33 +0200 ++ ++openjdk-7 (7u21-2.3.9-4) unstable; urgency=high ++ ++ * Build the transitional cacao package for sid as well. Apparently ++ some buildds are not updated to list wheezy as the code name for ++ the current distribution. ++ ++ -- Matthias Klose Thu, 02 May 2013 03:27:44 +0200 ++ ++openjdk-7 (7u21-2.3.9-3) unstable; urgency=high ++ ++ * Disable the cacao build again, causing build failures on i386 and s390. ++ * Build a transitional cacao jre package instead. ++ ++ -- Matthias Klose Tue, 30 Apr 2013 00:27:05 +0200 ++ ++openjdk-7 (7u21-2.3.9-2) unstable; urgency=high ++ ++ * On ia64, use gcj-4.7 for the bootstrap build. ++ * Drop the cacao jre from recommends to suggests. ++ * Re-enable cacao, was enabled in the 2.1.x series. ++ ++ -- Matthias Klose Sat, 27 Apr 2013 01:17:16 +0200 ++ ++openjdk-7 (7u21-2.3.9-1) unstable; urgency=high ++ ++ * IcedTea7 2.3.9 release. ++ * Security fixes: ++ - S6657673, CVE-2013-1518: Issues with JAXP. ++ - S7200507: Refactor Introspector internals. ++ - S8000724, CVE-2013-2417: Improve networking serialization. ++ - S8001031, CVE-2013-2419: Better font processing. ++ - S8001040, CVE-2013-1537: Rework RMI model. ++ - S8001322: Refactor deserialization. ++ - S8001329, CVE-2013-1557: Augment RMI logging. ++ - S8003335: Better handling of Finalizer thread. ++ - S8003445: Adjust JAX-WS to focus on API. ++ - S8003543, CVE-2013-2415: Improve processing of MTOM attachments. ++ - S8004261: Improve input validation. ++ - S8004336, CVE-2013-2431: Better handling of method handle intrinsic frames. ++ - S8004986, CVE-2013-2383: Better handling of glyph table. ++ - S8004987, CVE-2013-2384: Improve font layout. ++ - S8004994, CVE-2013-1569: Improve checking of glyph table. ++ - S8005432: Update access to JAX-WS. ++ - S8005943: (process) Improved Runtime.exec. ++ - S8006309: More reliable control panel operation. ++ - S8006435, CVE-2013-2424: Improvements in JMX. ++ - S8006790: Improve checking for windows. ++ - S8006795: Improve font warning messages. ++ - S8007406: Improve accessibility of AccessBridge. ++ - S8007617, CVE-2013-2420: Better validation of images. ++ - S8007667, CVE-2013-2430: Better image reading. ++ - S8007918, CVE-2013-2429: Better image writing. ++ - S8008140: Better method handle resolution. ++ - S8009049, CVE-2013-2436: Better method handle binding. ++ - S8009063, CVE-2013-2426: Improve reliability of ConcurrentHashMap. ++ - S8009305, CVE-2013-0401: Improve AWT data transfer. ++ - S8009677, CVE-2013-2423: Better setting of setters. ++ - S8009699, CVE-2013-2421: Methodhandle lookup. ++ - S8009814, CVE-2013-1488: Better driver management. ++ - S8009857, CVE-2013-2422: Problem with plugin. ++ * Backports: ++ - S7130662: GTK file dialog crashes with a NPE. ++ * Bug fixes ++ - PR1363: Fedora 19 / rawhide FTBFS SIGILL. ++ - PR1401: Fix Zero build on 2.3.8. ++ - Fix offset problem in ICU LETableReference. ++ - Change -Werror fix to preserve OpenJDK default. ++ - PR1303: Correct #ifdef to #if. ++ - PR1404: Failure to bootstrap with ecj 4.2. ++ ++ -- Matthias Klose Mon, 22 Apr 2013 03:27:08 +0200 ++ ++openjdk-7 (7u17-2.3.8-2) experimental; urgency=low ++ ++ * Remove Torsten Werner as uploader. ++ ++ -- Matthias Klose Mon, 01 Apr 2013 00:39:58 +0200 ++ ++openjdk-7 (7u17-2.3.8-1ubuntu1) raring; urgency=low ++ ++ * Regenerate the control file. ++ ++ -- Matthias Klose Sun, 31 Mar 2013 20:10:05 +0200 ++ ++openjdk-7 (7u17-2.3.8-1) experimental; urgency=low ++ ++ * IcedTea7 2.3.8 release. ++ * Security fixes: ++ - S8007014, CVE-2013-0809: Improve image handling. ++ - S8007675, CVE-2013-1493: Improve color conversion. ++ * Backports: ++ - S8002344: Krb5LoginModule config class does not return proper KDC list ++ from DNS. ++ - S8004344: Fix a crash in ToolkitErrorHandler() in XlibWrapper.c. ++ - S8006179: JSR292 MethodHandles lookup with interface using findVirtual(). ++ - S8006882: Proxy generated classes in sun.proxy package breaks JMockit. ++ * Bug fixes: ++ - PR1303: Correct #ifdef to #if. ++ - PR1340: Simplify the rhino class rewriter to avoid use of concurrency. ++ - Revert 7017193 and add the missing free call, until a better fix is ready. ++ ++ -- Matthias Klose Sun, 31 Mar 2013 14:31:11 +0200 ++ ++openjdk-7 (7u15-2.3.7-1ubuntu2) raring; urgency=low ++ ++ * Security fixes: ++ - S8007014, CVE-2013-0809: Improve image handling ++ - S8007675, CVE-2013-1493: Improve color conversion ++ - debian/rules: updated to add 8007014.patch and 8007675.patch ++ ++ -- Jamie Strandboge Wed, 06 Mar 2013 14:12:03 -0600 ++ ++openjdk-7 (7u15-2.3.7-1ubuntu1) raring; urgency=low ++ ++ * Regenerate the control file. ++ ++ -- Matthias Klose Wed, 20 Feb 2013 23:59:54 +0100 ++ ++openjdk-7 (7u15-2.3.7-1) experimental; urgency=low ++ ++ * IcedTea7 2.3.7 release. ++ * Security fixes: ++ - S8004937, CVE-2013-1484: Improve proxy construction. ++ - S8006439, CVE-2013-1485: Improve MethodHandles coverage. ++ - S8006446, CVE-2013-1486: Restrict MBeanServer access. ++ - S8006777, CVE-2013-0169: Improve TLS handling of invalid messages. ++ - S8007688: Blacklist known bad certificate. ++ * Backports: ++ - S8007393: Possible race condition after JDK-6664509. ++ - S8007611: logging behavior in applet changed. ++ * For zero builds, use the same hotspot version as in 2.1.6. ++ * Reenable bootstrap builds, except for alpha. ++ * Explicitly disable building on mips/mipsel. Not supported by the ++ Debian OpenJDK maintainers, the Debian mips porters, or the Debian ++ Java team. ++ ++ -- Matthias Klose Wed, 20 Feb 2013 23:33:58 +0100 ++ ++openjdk-7 (7u13-2.3.6-1) experimental; urgency=low ++ ++ * IcedTea7 2.3.6 release. ++ - Disable bootstrap builds, currently broken in IcedTea. ++ * Security fixes: ++ - S6563318, CVE-2013-0424: RMI data sanitization. ++ - S6664509, CVE-2013-0425: Add logging context. ++ - S6664528, CVE-2013-0426: Find log level matching its name or value given ++ at construction time. ++ - S6776941: CVE-2013-0427: Improve thread pool shutdown. ++ - S7141694, CVE-2013-0429: Improving CORBA internals. ++ - S7173145: Improve in-memory representation of splashscreens. ++ - S7186945: Unpack200 improvement. ++ - S7186946: Refine unpacker resource usage. ++ - S7186948: Improve Swing data validation. ++ - S7186952, CVE-2013-0432: Improve clipboard access. ++ - S7186954: Improve connection performance. ++ - S7186957: Improve Pack200 data validation. ++ - S7192392, CVE-2013-0443: Better validation of client keys. ++ - S7192393, CVE-2013-0440: Better Checking of order of TLS Messages. ++ - S7192977, CVE-2013-0442: Issue in toolkit thread. ++ - S7197546, CVE-2013-0428: (proxy) Reflect about creating reflective proxies. ++ - S7200491: Tighten up JTable layout code. ++ - S7200500: Launcher better input validation. ++ - S7201064: Better dialogue checking. ++ - S7201066, CVE-2013-0441: Change modifiers on unused fields. ++ - S7201068, CVE-2013-0435: Better handling of UI elements. ++ - S7201070: Serialization to conform to protocol. ++ - S7201071, CVE-2013-0433: InetSocketAddress serialization issue. ++ - S8000210: Improve JarFile code quality. ++ - S8000537, CVE-2013-0450: Contextualize RequiredModelMBean class. ++ - S8000540, CVE-2013-1475: Improve IIOP type reuse management. ++ - S8000631, CVE-2013-1476: Restrict access to class constructor. ++ - S8001235, CVE-2013-0434: Improve JAXP HTTP handling. ++ - S8001242: Improve RMI HTTP conformance. ++ - S8001307: Modify ACC_SUPER behavior. ++ - S8001972, CVE-2013-1478: Improve image processing. ++ - S8002325, CVE-2013-1480: Improve management of images. ++ * Fix font suggestion for indic fonts in wheezy. ++ * Fix fontconfig definitions for japanese and korean fonts, fixing ++ compilation of the fontconfig file. ++ * Add Built-Using: rhino attribute for the -lib package. ++ * Don't use concurrent features to rewrite the rhino jar file. ++ * Enable class data sharing for the hotspot server VM. ++ ++ -- Matthias Klose Tue, 12 Feb 2013 20:59:48 +0100 ++ ++openjdk-7 (7u9-2.3.4-1) experimental; urgency=low ++ ++ * IcedTea7 2.3.4 release. ++ * Security fixes ++ - S8004933, CVE-2012-3174: Improve MethodHandle interaction with libraries. ++ - S8006017, CVE-2013-0422: Improve lookup resolutions. ++ - S8006125: Update MethodHandles library interactions. ++ * Bug fixes ++ - S7197906: BlockOffsetArray::power_to_cards_back() needs to handle > 32 bit ++ shifts. ++ - G422525: Fix building with PaX enabled kernels. ++ ++ [ Matthias Klose ] ++ * Loosen OpenGL dependency. Closes: #695028. ++ * Fix error parsing drop files parameter from pcmanfm (Alberto Fernández ++ Martínez). Closes: #695992. ++ ++ [ Thorsten Glaser ] ++ * debian/rules: Use gcj-4.6-jdk for m68k builds. ++ * d/patches/text-relocations.patch: build with -fPIC on all archs. ++ ++ -- Matthias Klose Tue, 15 Jan 2013 23:38:48 +0100 ++ ++openjdk-7 (7u9-2.3.3-1) experimental; urgency=low ++ ++ * Upload to experimental. ++ ++ -- Matthias Klose Wed, 17 Oct 2012 15:16:51 +0200 ++ ++openjdk-7 (7u9-2.3.3-0ubuntu1) quantal-security; urgency=low ++ ++ * IcedTea7 2.3.3 release. ++ * Security fixes ++ - S6631398, CVE-2012-3216: FilePermission improved path checking. ++ - S7093490: adjust package access in rmiregistry. ++ - S7143535, CVE-2012-5068: ScriptEngine corrected permissions. ++ - S7158796, CVE-2012-5070: Tighten properties checking in EnvHelp. ++ - S7158807: Revise stack management with volatile call sites. ++ - S7163198, CVE-2012-5076: Tightened package accessibility. ++ - S7167656, CVE-2012-5077: Multiple Seeders are being created. ++ - S7169884, CVE-2012-5073: LogManager checks do not work correctly for ++ sub-types. ++ - S7169887, CVE-2012-5074: Tightened package accessibility. ++ - S7169888, CVE-2012-5075: Narrowing resource definitions in JMX RMI ++ connector. ++ - S7172522, CVE-2012-5072: Improve DomainCombiner checking. ++ - S7186286, CVE-2012-5081: TLS implementation to better adhere to RFC. ++ - S7189103, CVE-2012-5069: Executors needs to maintain state. ++ - S7189490: More improvements to DomainCombiner checking. ++ - S7189567, CVE-2012-5085: java net obselete protocol. ++ - S7192975, CVE-2012-5071: Issue with JMX reflection. ++ - S7195194, CVE-2012-5084: Better data validation for Swing. ++ - S7195549, CVE-2012-5087: Better bean object persistence. ++ - S7195917, CVE-2012-5086: XMLDecoder parsing at close-time should be ++ improved. ++ - S7195919, CVE-2012-5979: (sl) ServiceLoader can throw CCE without ++ needing to create instance. ++ - S7196190, CVE-2012-5088: Improve method of handling MethodHandles. ++ - S7198296, CVE-2012-5089: Refactor classloader usage. ++ - S7158800: Improve storage of symbol tables. ++ - S7158801: Improve VM CompileOnly option. ++ - S7158804: Improve config file parsing. ++ - S7198606, CVE-2012-4416: Improve VM optimization. ++ ++ -- Matthias Klose Wed, 17 Oct 2012 13:27:47 +0200 ++ ++openjdk-7 (7u7-2.3.2a-1ubuntu1) quantal; urgency=low ++ ++ * Build a transitional icedtea-7-jre-cacao package to ease upgrades. ++ ++ -- Matthias Klose Wed, 19 Sep 2012 17:42:39 +0200 ++ ++openjdk-7 (7u7-2.3.2a-1) experimental; urgency=low ++ ++ * Upload to experimental. ++ ++ -- Matthias Klose Sat, 15 Sep 2012 22:20:06 +0200 ++ ++openjdk-7 (7u7-2.3.2a-0ubuntu1) quantal; urgency=low ++ ++ * Repackage the source to drop the cacao tarball (and packaging files). ++ * Depend again on system provided tzdata-java and restore the zi ++ symlink on upgrade. LP: #1050404. ++ * libgnome2-0, libgnomevfs2-0, libgconf2-4 are not prepared for multiarch. ++ Don't depend on these so that openjdk-7 can be installed as a multiarch ++ package. ++ ++ -- Matthias Klose Sat, 15 Sep 2012 17:01:12 +0200 ++ ++openjdk-7 (7u7-2.3.2-1ubuntu2) quantal; urgency=low ++ ++ * Make the avian VM a known runtime. ++ ++ -- Matthias Klose Wed, 05 Sep 2012 11:58:35 +0200 ++ ++openjdk-7 (7u7-2.3.2-1ubuntu1) quantal; urgency=low ++ ++ * Fix 32bit hotspot build, don't set maximal heap space lower than ++ minimal heap space for the docs build. ++ * d/p/sane-library-paths.patch, d/p/ant-diagnostics.diff, ++ d/p/fix-race-cond-print.diff, d/p/gcc-hotspot-opt-O[02].diff, ++ d/p/gcc-mtune-generic.diff, d/p/openjdk-6986968.diff: Remove, not used. ++ * Remove unused shark/llvm-3.0 patches. ++ * d/p/zero-only-use-floating-point-if-floating-poi.patch: Remove, applied ++ upstream. ++ * Don't explicitly build with -march=i586 on i386 architectures. ++ * Re-apply zero-missing-headers.diff. ++ * Disable cacao builds, needs update for 7u7. ++ * For Ubuntu quantal, set priorities for alternatives higher than for ++ OpenJDK 6. ++ * Call update-alternatives when the existing priority for the alternative ++ is lower than the current one. ++ * Configure with --disable-downloading. ++ * Pass -avoid-version to libtool to create a JamVM libjvm.so without SONAME ++ version numbers to match the Hotspot Server/Client libjvm.so. LP: #850433. ++ * Revert the following change: Move libgnome2-0, libgnomevfs2-0, libgconf2-4 ++ from Depends of JRE package to Recommends (#661465). ++ The proper fix is to create a -jdk-headless package, or not depending on ++ these gnome packages at all (e.g. using XDG libraries). ++ ++ -- Matthias Klose Tue, 04 Sep 2012 12:08:31 +0200 ++ ++openjdk-7 (7u7-2.3.2-1) experimental; urgency=low ++ ++ * New upstream IcedTea7 2.3.2 release. ++ * Security fixes: ++ - CVE-2012-4681: Reintroduce PackageAccessible checks removed in 6788531. ++ - S7079902, CVE-2012-1711: Refine CORBA data models. ++ - S7143606, CVE-2012-1717: File.createTempFile should be improved ++ for temporary files created by the platform. ++ - S7143614, CVE-2012-1716: SynthLookAndFeel stability improvement. ++ - S7143617, CVE-2012-1713: Improve fontmanager layout lookup operations. ++ - S7143851, CVE-2012-1719: Improve IIOP stub and tie generation in RMIC. ++ - S7143872, CVE-2012-1718: Improve certificate extension processing. ++ - S7152811, CVE-2012-1723: Issues in client compiler. ++ - S7157609, CVE-2012-1724: Issues with loop. ++ - S7160757, CVE-2012-1725: Problem with hotspot/runtime_classfile. ++ - S7165628, CVE-2012-1726: Issues with java.lang.invoke.MethodHandles.Lookup. ++ * Bump version to 7u7 (OpenJDK), 2.3.2 (IcedTea). Closes: #685276. ++ * d/p/icedtea7-forest-jdk_7104625-XEvent_wrap_logging_calls_with_if.patch, ++ d/p/hotspot-sparc.diff: Remove, integrated upstream. ++ * d/p/{deb-multiarch,fix_extra_flags,hotspot-no-werror}.diff: ++ Add variants for hotspot and zero builds. ++ * d/p/default-jvm-cfg.diff, d/p/icedtea-4953367.patch, ++ d/p/icedtea-patch.diff, d/p/icedtea-pretend-memory.diff, ++ d/p/libpcsclite-dlopen.diff, d/p/nonreparenting-wm.diff: ++ Update for 2.3.2. ++ * Remove build support for Ubuntu releases earlier than hardy. ++ * d/update-shasum.sh: Only update the shasums of the -dfsg tarballs. ++ * Don't apply shark patches (not built anyway). ++ ++ -- Matthias Klose Sat, 01 Sep 2012 11:46:50 +0200 ++ ++openjdk-7 (7u3-2.1.7-1) unstable; urgency=high ++ ++ * IcedTea7 2.1.7 release: ++ * Security fixes: ++ - S8007014, CVE-2013-0809: Improve image handling. ++ - S8007675, CVE-2013-1493: Improve color conversion. ++ * Backports: ++ - S8002344: Krb5LoginModule config class does not return proper KDC list ++ from DNS. ++ - S8004344: Fix a crash in ToolkitErrorHandler() in XlibWrapper.c. ++ - S8006179: JSR292 MethodHandles lookup with interface using findVirtual(). ++ - S8006882: Proxy generated classes in sun.proxy package breaks JMockit. ++ * Bug fixes: ++ - PR1303: Correct #ifdef to #if ++ - Stop libraries being stripped in the OpenJDK build. ++ - PR1340: Simplify the rhino class rewriter to avoid use of concurrency. ++ - Revert 7017193 and add the missing free call, until a better fix is ready. ++ ++ -- Matthias Klose Sat, 30 Mar 2013 11:31:12 +0100 ++ ++openjdk-7 (7u3-2.1.6-1) unstable; urgency=high ++ ++ * IcedTea7 2.1.5 release: ++ * Security fixes: ++ - S6563318, CVE-2013-0424: RMI data sanitization. ++ - S6664509, CVE-2013-0425: Add logging context. ++ - S6664528, CVE-2013-0426: Find log level matching its name or value ++ given at construction time. ++ - S6776941: CVE-2013-0427: Improve thread pool shutdown. ++ - S7141694, CVE-2013-0429: Improving CORBA internals. ++ - S7173145: Improve in-memory representation of splashscreens. ++ - S7186945: Unpack200 improvement. ++ - S7186946: Refine unpacker resource usage. ++ - S7186948: Improve Swing data validation. ++ - S7186952, CVE-2013-0432: Improve clipboard access. ++ - S7186954: Improve connection performance. ++ - S7186957: Improve Pack200 data validation. ++ - S7192392, CVE-2013-0443: Better validation of client keys. ++ - S7192393, CVE-2013-0440: Better Checking of order of TLS Messages. ++ - S7192977, CVE-2013-0442: Issue in toolkit thread. ++ - S7197546, CVE-2013-0428: (proxy) Reflect about creating reflective ++ proxies. ++ - S7200491: Tighten up JTable layout code. ++ - S7200493, CVE-2013-0444: Improve cache handling. ++ - S7200499: Better data validation for options. ++ - S7200500: Launcher better input validation. ++ - S7201064: Better dialogue checking. ++ - S7201066, CVE-2013-0441: Change modifiers on unused fields. ++ - S7201068, CVE-2013-0435: Better handling of UI elements. ++ - S7201070: Serialization to conform to protocol. ++ - S7201071, CVE-2013-0433: InetSocketAddress serialization issue. ++ - S8000210: Improve JarFile code quality. ++ - S8000537, CVE-2013-0450: Contextualize RequiredModelMBean class. ++ - S8000539, CVE-2013-0431: Introspect JMX data handling. ++ - S8000540, CVE-2013-1475: Improve IIOP type reuse management. ++ - S8000631, CVE-2013-1476: Restrict access to class constructor. ++ - S8001235, CVE-2013-0434: Improve JAXP HTTP handling. ++ - S8001242: Improve RMI HTTP conformance. ++ - S8001307: Modify ACC_SUPER behavior. ++ - S8001972, CVE-2013-1478: Improve image processing. ++ - S8002325, CVE-2013-1480: Improve management of images. ++ * Backports: ++ - S7054590: (JSR-292) MethodHandleProxies.asInterfaceInstance() ++ accepts private/protected nested interfaces. ++ - S7175616: Port fix for TimeZone from JDK 8 to JDK 7. ++ - S8002068: Build broken: corba code changes unable to use new ++ JDK 7 classes. ++ - S8004341: Two JCK tests fails with 7u11 b06. ++ - S8005615: Java Logger fails to load tomcat logger implementation (JULI). ++ * IcedTea7 2.1.6 release: ++ * Security fixes: ++ - S8004937, CVE-2013-1484: Improve proxy construction. ++ - S8006439, CVE-2013-1485: Improve MethodHandles coverage. ++ - S8006446, CVE-2013-1486: Restrict MBeanServer access. ++ - S8006777, CVE-2013-0169: Improve TLS handling of invalid messages. ++ - S8007688: Blacklist known bad certificate. ++ * Backports: ++ - S7123519: problems with certification path. ++ - S8007393: Possible race condition after JDK-6664509. ++ - S8007611: logging behavior in applet changed. ++ * Fix font suggestion for indic fonts in wheezy. ++ * Fix fontconfig definitions for japanese and korean fonts, fixing ++ compilation of the fontconfig file. ++ * Add Built-Using: rhino attribute for the -lib package. ++ * Don't use concurrent features to rewrite the rhino jar file. ++ * Enable class data sharing for the hotspot server VM. ++ * Enable bootstrap builds for alpha. ++ * Explicitly disable building on mips/mipsel. Not supported by the ++ Debian OpenJDK maintainers, the Debian mips porters, or the Debian ++ Java team. ++ ++ -- Matthias Klose Thu, 21 Feb 2013 03:38:13 +0100 ++ ++openjdk-7 (7u3-2.1.4-1) unstable; urgency=low ++ ++ * IcedTea7 2.1.4 release. ++ * Security fixes ++ - S8004933, CVE-2012-3174: Improve MethodHandle interaction with libraries ++ - S8006017, CVE-2013-0422: Improve lookup resolutions ++ - S8006125: Update MethodHandles library interactions ++ * Loosen OpenGL dependency. Closes: #695028. ++ * Fix error parsing drop files parameter from pcmanfm (Alberto Fernández ++ Martínez). Closes: #695992. ++ ++ -- Matthias Klose Wed, 16 Jan 2013 11:46:20 +0100 ++ ++openjdk-7 (7u3-2.1.3-1) unstable; urgency=low ++ ++ * IcedTea7 2.1.3 release. ++ * Security fixes ++ - S6631398, CVE-2012-3216: FilePermission improved path checking. ++ - S7093490: adjust package access in rmiregistry. ++ - S7143535, CVE-2012-5068: ScriptEngine corrected permissions. ++ - S7158796, CVE-2012-5070: Tighten properties checking in EnvHelp. ++ - S7158807: Revise stack management with volatile call sites. ++ - S7163198, CVE-2012-5076: Tightened package accessibility. ++ - S7167656, CVE-2012-5077: Multiple Seeders are being created. ++ - S7169884, CVE-2012-5073: LogManager checks do not work correctly for ++ sub-types. ++ - S7169887, CVE-2012-5074: Tightened package accessibility. ++ - S7169888, CVE-2012-5075: Narrowing resource definitions in JMX RMI ++ connector. ++ - S7172522, CVE-2012-5072: Improve DomainCombiner checking. ++ - S7186286, CVE-2012-5081: TLS implementation to better adhere to RFC. ++ - S7189103, CVE-2012-5069: Executors needs to maintain state. ++ - S7189490: More improvements to DomainCombiner checking. ++ - S7189567, CVE-2012-5085: java net obselete protocol. ++ - S7192975, CVE-2012-5071: Issue with JMX reflection. ++ - S7195194, CVE-2012-5084: Better data validation for Swing. ++ - S7195549, CVE-2012-5087: Better bean object persistence. ++ - S7195917, CVE-2012-5086: XMLDecoder parsing at close-time should be ++ improved. ++ - S7195919, CVE-2012-5979: (sl) ServiceLoader can throw CCE without ++ needing to create instance. ++ - S7196190, CVE-2012-5088: Improve method of handling MethodHandles. ++ - S7198296, CVE-2012-5089: Refactor classloader usage. ++ - S7158801: Improve VM CompileOnly option. ++ - S7158804: Improve config file parsing. ++ - S7198606, CVE-2012-4416: Improve VM optimization. ++ * Backports ++ - S7175845: "jar uf" changes file permissions unexpectedly. ++ - S7177216: native2ascii changes file permissions of input file. ++ - S7106773: 512 bits RSA key cannot work with SHA384 and SHA512. ++ - S7158800: Improve storage of symbol tables. ++ ++ -- Matthias Klose Wed, 17 Oct 2012 16:03:47 +0200 ++ ++openjdk-7 (7u3-2.1.2-2ubuntu1) precise-security; urgency=low ++ ++ * Make the avian VM a known runtime. ++ ++ -- Matthias Klose Sat, 08 Sep 2012 16:01:31 +0200 ++ ++openjdk-7 (7u3-2.1.2-2) unstable; urgency=high ++ ++ * Pass -avoid-version to libtool to create a JamVM libjvm.so without SONAME ++ version numbers to match the Hotspot Server/Client libjvm.so. LP: #850433. ++ ++ -- Matthias Klose Tue, 04 Sep 2012 17:55:43 +0200 ++ ++openjdk-7 (7u3-2.1.2-1) unstable; urgency=high ++ ++ * IcedTea7 2.1.2 release. ++ * Security fixes ++ - CVE-2012-4681, S7162473: Reintroduce PackageAccessible checks removed ++ in 6788531. ++ - S7162476, CVE-2012-1682: XMLDecoder security issue via ClassFinder. ++ - S7194567, CVE-2012-3136: Improve long term persistence of java.beans ++ objects. ++ - S7163201, CVE-2012-0547: Simplify toolkit internals references. ++ * d/p/hotspot-sparc.diff: Remove, integrated upstream. ++ * Stop running the mauve tests. ++ ++ -- Matthias Klose Mon, 03 Sep 2012 23:17:11 +0200 ++ ++openjdk-7 (7~u3-2.1.1-3) unstable; urgency=low ++ ++ * d/rules: Ensure we don't remove -02 (default) when -03 is disabled ++ (fix jamvm FTBFS on armhf without -02). ++ * d/patches/gcc-jdk-opt-O0.diff, d/patches/gcc-jdk-opt-O2.diff, ++ d/patches/gcc-no-hardening.diff, d/patches/gcc-opt-O2.diff: removed. ++ ++ -- Damien Raude-Morvan Wed, 25 Jul 2012 21:18:15 +0200 ++ ++openjdk-7 (7~u3-2.1.1-2) unstable; urgency=low ++ ++ * d/rules: On Debian Wheezy/Sid bump Build-Depends on libnss3-dev ++ (>= 2:3.13.4) and Depends on libnss3 (>= 2:3.13.4) (ie. with epoch). ++ (Closes: #679465). ++ * d/control: Suggests icedtea-7-plugin instead of icedtea6-plugin ++ (Closes: #680284). ++ * d/patches/7130140-MouseEvent-systemout.diff: Remove "MEvent. CASE!" from ++ console output. (Closes: #679036). ++ * Disable -O3 compile: cause wrong Math.* computations. ++ (Closes: #679292 and Closes: #678228). LP: #1044857. ++ * debian/patches/FreetypeFontScaler_getFontMetricsNative.diff: ++ Fix "OpenJDK returns the text height greater than font size". ++ (Closes: #657854) ++ ++ -- Damien Raude-Morvan Sat, 30 Jun 2012 18:17:51 +0200 ++ ++openjdk-7 (7~u3-2.1.1-1) unstable; urgency=medium ++ ++ * New upstream release with security fixes (Closes: #677486): ++ - S7079902, CVE-2012-1711: Refine CORBA data models ++ - S7110720: Issue with vm config file loadingIssue with ++ vm config file loading ++ - S7143606, CVE-2012-1717: File.createTempFile should be improved ++ for temporary files created by the platform. ++ - S7143614, CVE-2012-1716: SynthLookAndFeel stability improvement ++ - S7143617, CVE-2012-1713: Improve fontmanager layout lookup operations ++ - S7143851, CVE-2012-1719: Improve IIOP stub and tie generation in RMIC ++ - S7143872, CVE-2012-1718: Improve certificate extension processing ++ - S7145239: Finetune package definition restriction ++ - S7152811, CVE-2012-1723: Issues in client compiler ++ - S7157609, CVE-2012-1724: Issues with loop ++ - S7160677: missing else in fix for 7152811 ++ - S7160757, CVE-2012-1725: Problem with hotspot/runtime_classfile ++ - S7165628, CVE-2012-1726: Issues with ++ java.lang.invoke.MethodHandles.Lookup ++ * Patches merged upstream: ++ - debian/patches/arm-thumb-fix.diff ++ - debian/patches/gcc-4.7.diff ++ ++ [ James Page ] ++ * Cherry picked patch from openjdk-6 to fix handling of ++ ICC profiles (LP: #888123, #888129) (Closes: #676351). ++ ++ [ Damien Raude-Morvan ] ++ * Move libgnome2-0, libgnomevfs2-0, libgconf2-4 from Depends of JRE package ++ to Recommends (Closes: #661465). ++ * New jni_md_h_JNIEXPORT_visibility.patch to allow JNIEXPORT definition ++ to work with -fvisibility=hidden. (Closes: #670896). ++ ++ -- Damien Raude-Morvan Mon, 11 Jun 2012 21:01:10 +0200 ++ ++openjdk-7 (7~u3-2.1.1~pre1-2) unstable; urgency=low ++ ++ * Don't mark the -demo package as Multi-Arch same. Closes: #670038. ++ * Build using gcc-4.4 on mips, mipsel. ++ * Build again with older gcj version on s390 (4.6). ++ ++ -- Matthias Klose Thu, 03 May 2012 10:44:20 +0200 ++ ++openjdk-7 (7~u3-2.1.1~pre1-1ubuntu3) precise-proposed; urgency=low ++ ++ * Default to the ARM assembler interpreter instead to JamVM on ++ ARM. LP: #993380. ++ ++ -- Matthias Klose Wed, 02 May 2012 17:58:20 +0200 ++ ++openjdk-7 (7~u3-2.1.1~pre1-1ubuntu2) precise; urgency=low ++ ++ * Use the /usr/bin path for the policytool desktop file. LP: #980205. ++ Closes: #670037. ++ ++ -- Matthias Klose Thu, 12 Apr 2012 23:29:06 +0200 ++ ++openjdk-7 (7~u3-2.1.1~pre1-1ubuntu1) precise; urgency=low ++ ++ * Regenerate the control file. ++ ++ -- Matthias Klose Wed, 11 Apr 2012 07:21:41 +0200 ++ ++openjdk-7 (7~u3-2.1.1~pre1-1) unstable; urgency=low ++ ++ * Update from the IcedTea7-2.1 release branch (20110410). ++ * Install desktop files again, using the common /usr/bin/java ++ interpreter name. ++ * Build-depend on libpng-dev for newer releases. Closes: #662452. ++ * Let dlopen handle finding the libpcsclite library. LP: #898689. ++ * Build-depend on fonts-ipafont-mincho, fixing a build failure in the ++ fontconfig compiler (find out why it breaks ...). ++ * Build using gcc-4.7/gcj-4.7 for sid/wheezy, fix build failure. ++ * Remove `-icedtea' suffix from the release identification. ++ * Fix arm thumb build, update taken from IcedTea6. ++ ++ -- Matthias Klose Tue, 10 Apr 2012 14:11:09 +0200 ++ ++openjdk-7 (7~u3-2.1-4) unstable; urgency=low ++ ++ [ Matthias Klose ] ++ * Don't install the binary fontconfig file. LP: #964303. ++ ++ [ Damien Raude-Morvan ] ++ * Remove libxp-dev check in configure.ac, it's not needed anymore ++ (Closes: #657260) and so drop build dependency on libxp-dev. ++ * Fix FTBFS with glib 2.32 by adding explicit dependency gthread-2.0.pc ++ (Closes: #665666). ++ * Use libpng-dev instead of libpng12-dev for wheezy/sid (Closes: #662453). ++ ++ -- Damien Raude-Morvan Mon, 09 Apr 2012 00:21:20 +0200 ++ ++openjdk-7 (7~u3-2.1-3) unstable; urgency=low ++ ++ * d/rules,Makefile.am: Improve handling of dpkg-buildflags: don't overwrite ++ CFLAGS of hotspot but use EXTRA_* flags into icedtea and openjdk Makefile. ++ (Closes: #661695). ++ * d/rules: Build everything with -03 opt level (jamvm, cacao and jdk) ++ * d/patches/kfreebsd-support-*.diff: Refresh kfreebsd patches and ++ fix FTBFS on k-i386 (ie. at least on a sid VM). ++ * Backport S7104625 as d/patches/icedtea7-forest-jdk_7104625*.patch ++ to check for logging to prevent wasted CPU (Closes: #651423). ++ ++ -- Damien Raude-Morvan Tue, 06 Mar 2012 01:09:09 +0100 ++ ++openjdk-7 (7~u3-2.1-2) unstable; urgency=low ++ ++ [ Matthias Klose ] ++ * Use NanumMyeongjo as the preferred korean font. LP: #792471. ++ * Fix crash in java.net.NetworkInterface.getNetworkInterfaces() when ++ ifr_ifindex exceeds 255. LP: #925218. S7078386. ++ * Use IPAfont as the preferred japanesse font. Closes: #646054. ++ * Build using gcj on alpha and armel. Closes: #655750. ++ ++ [ Damien Raude-Morvan ] ++ * d/patches/sparc-stubgenerator.diff: Fix FTBFS on sparc on ++ stubGenerator_sparc.cpp by using explicit class typedef ++ (Closes: #660871). ++ * d/patches/fix_extra_flags.diff: Improve support for hardened build, ++ also send flags to jdk build and send -Wl,-z,relro during hotspot link. ++ * Bump Standards-Version to 3.9.3: no changes needed. ++ * d/control: Don't use nonexistent dlopenjl:Recommends substvar, ++ replaced by dlopenhl:Recommends. ++ * d/*.{prerm,postrm}: Use set -e inside script instead of sh -e shebang. ++ * Cleanup lintian-overrides. ++ ++ -- Damien Raude-Morvan Wed, 29 Feb 2012 00:52:49 +0100 ++ ++openjdk-7 (7~u3-2.1-1ubuntu2) precise; urgency=low ++ ++ * Make sure that the nss.cfg doesn't mention any library path. ++ LP: #939361, #939419. ++ * Disable the accessibility wrapper, doesn't work yet. LP: #935296. ++ ++ -- Matthias Klose Fri, 24 Feb 2012 15:10:12 +0100 ++ ++openjdk-7 (7~u3-2.1-1ubuntu1) precise; urgency=low ++ ++ [ Damien Raude-Morvan ] ++ * d/patches/jexec.diff: Dropped, uneeded and not compatible with multi-arch. ++ * d/rules: Use dpkg-buildflags to enable hardened build. ++ (Closes: #660021). ++ ++ [ Matthias Klose ] ++ * Merge r522 from openjdk6: ++ - Make upgrades from non-multiarch to multiarch builds more silent. ++ - Fix order of grant decls in java.policy. ++ - Make doc files multi-arch installable. ++ - JB-archive.applications.in: Use /usr/bin/java by default. Maybe ++ should be moved to the default-jdk package. ++ * Explicitly look for the gthread-2.0 pkgconfig module. ++ ++ -- Matthias Klose Wed, 22 Feb 2012 14:07:16 +0100 ++ ++openjdk-7 (7~u3-2.1-1) unstable; urgency=low ++ ++ * Update icedtea7 2.1 (OpenJDK7 ~u3 release): ++ - Check for logging to prevent wasted CPU (Closes: #651423). ++ * Fix following security issues: ++ - S7082299, CVE-2011-3571: Fix in AtomicReferenceArray ++ - S7088367, CVE-2011-3563: Fix issues in java sound ++ - S7110683, CVE-2012-0502: Issues with some KeyboardFocusManager method ++ - S7110687, CVE-2012-0503: Issues with TimeZone class ++ - S7110700, CVE-2012-0505: Enhance exception throwing mechanism in ++ ObjectStreamClass ++ - S7110704, CVE-2012-0506: Issues with some method in corba ++ - S7112642, CVE-2012-0497: Incorrect checking for graphics rendering object ++ - S7118283, CVE-2012-0501: Better input parameter checking in zip file ++ processing ++ - S7126960, CVE-2011-5035: Add property to limit number of request headers ++ to the HTTP Server ++ ++ [ Matthias Klose ] ++ * openjdk-7-jre-lib: Mark as Multi-Arch: foreign. ++ ++ [ Damien Raude-Morvan ] ++ * Merge r501-521 from openjdk6: ++ - Fix plugin name in jinfo file. ++ - Fix build flags for cppInterpreter_arm.o. ++ - Use java-atk-wrapper instead of java-access-bridge for accessibility. ++ - Make the java.policy file multi-arch installable. ++ - Don't install desktop and menu files for multiarch builds. ++ Needs a better solution. ++ - Don't install an alternative for the deprecated apt tool. ++ - Make the upgrade from a non-multiarch installation location more ++ robust; don't depend on version numbers, but check the path of the ++ alternatives. ++ - Disable test for armel and powerpc (broken on buildd) ++ * d/rules: Make symbolic links to src.zip on /usr/lib/jvm/java-7-openjdk-amd64 ++ like openjdk-6-jdk (Closes: #649618). ++ * d/rules: Pass -n to gzip when compressing manpages to be Multi-Arch: same safe. ++ * d/rules: Add build-arch/build-indep target. ++ * d/rules: Re-enable Cacao VM! ++ * d/{rules,control}: Only rhino 1.7R3 is supported by openjdk7, update B-D. ++ * d/patches/hotspot-s390.diff: Update for latest Hotspot. ++ * d/patches/icedtea-patch.diff: Move nssLibraryDirectory handling to d/rules. ++ * d/rules: Remove --with-*-drop-zip options, as code drops are embedded. ++ * d/patches/hsx23-zero.patch, patches/shark-compiler-fixes.patch: ++ Fix FTBFS for Zero under Hotspot >= v22. ++ * d/patches/kfreebsd-*: Refreshed. ++ * d/control: Make openjdk-7-source:all package binNMU-able by using ++ Depends ">=" on openjdk-7-jre (ie. src.zip won't change). ++ ++ -- Damien Raude-Morvan Wed, 15 Feb 2012 20:55:52 +0100 ++ ++openjdk-7 (7~b147-2.0-1) unstable; urgency=low ++ ++ * New upstream IcedTea7 release. ++ - S7000600, CVE-2011-3547: InputStream skip() information leak. ++ - S7019773, CVE-2011-3548: mutable static AWTKeyStroke.ctor. ++ - S7023640, CVE-2011-3551: Java2D TransformHelper integer overflow. ++ - S7032417, CVE-2011-3552: excessive default UDP socket limit under ++ SecurityManager. ++ - S7046794, CVE-2011-3553: JAX-WS stack-traces information leak. ++ - S7046823, CVE-2011-3544: missing SecurityManager checks in scripting ++ engine. ++ - S7055902, CVE-2011-3521: IIOP deserialization code execution. ++ - S7057857, CVE-2011-3554: insufficient pack200 JAR files uncompress error ++ checks. ++ - S7064341, CVE-2011-3389: HTTPS: block-wise chosen-plaintext attack ++ against SSL/TLS (BEAST). ++ - S7070134, CVE-2011-3558: HotSpot crashes with sigsegv from PorterStemmer. ++ - S7077466, CVE-2011-3556: RMI DGC server remote code execution. ++ - S7083012, CVE-2011-3557: RMI registry privileged code execution. ++ - S7096936, CVE-2011-3560: missing checkSetFactory calls in ++ HttpsURLConnection. ++ ++ [ Matthias Klose ] ++ * Merge debian packaging r501 from openjdk-6: ++ - Tighten inter-package dependencies for Debian builds. Closes: #641240. ++ * Build-depend on wdiff. ++ ++ -- Damien Raude-Morvan Sat, 01 Oct 2011 10:53:15 +0200 ++ ++openjdk-7 (7~b147-2.0~pre6-2) unstable; urgency=low ++ ++ * d/rules: Fix java.policy to include jre/lib/ext/* files (instead of ++ non-existant ext/*). It'll restore privilegied access from sunpkcs11.jar ++ to sun.* code. ++ * d/patches/s390_hotspot_fix.diff: Update to fix FTBFS on s390. ++ ++ -- Damien Raude-Morvan Sat, 01 Oct 2011 10:53:15 +0200 ++ ++openjdk-7 (7~b147-2.0~pre6-1) unstable; urgency=low ++ ++ * Update to IcedTea7 (20110928). ++ ++ [ Matthias Klose ] ++ * Merge debian packaging r496 from openjdk-6: ++ - Fix dangling java-1.7.0-openjdk symlink for non-multiarch builds. ++ ++ [ Damien Raude-Morvan ] ++ * d/rules: --disable-compile-against-syscalls for kFreeBSD (since there is ++ no epoll support). ++ * Update patches: ++ - d/patches/sun-awt-buildsystem.diff: Drop, merged upstream. ++ - d/patches/icedtea-override-redirect-compiz.patch: Refresh. ++ - d/patches/s390_hotspot_fix.diff: Extracted (instead of direct patch). ++ * Add Build-Depends on libattr1-dev. ++ ++ -- Damien Raude-Morvan Wed, 28 Sep 2011 17:19:33 +0200 ++ ++openjdk-7 (7~b147-2.0~pre5-1) unstable; urgency=low ++ ++ * Update to IcedTea7 (20110914). ++ - d/patches/jdk-no-mapfile.diff: Drop, merged in icedtea7-forest ++ (for real this time). ++ - d/patches/sun-awt-buildsystem.diff: Fix icedtea7-forest awt build. ++ * d/patches/kfreebsd-support-jdk.diff: Refresh. ++ * d/patches/icedtea-patch.diff: Remove usage of nssLibraryDirectory because ++ while it works for nss3, it fails for softokn3 (since the latter is ++ in nss/ subdirectory). Without this parameter, openjdk-7 will rely on ++ default ld.so behavior. (Closes: #637337, #638008) ++ In openjdk-6, nssLibraryDirectory was not used to load softokn3 (Secmod). ++ * d/control: openjdk-7-jre Provides java7-runtime, openjdk-7-jre-headless ++ Provides java7-runtime-headless and openjdk-7-jdk Provides java7-jdk. ++ (Closes: #641668). ++ ++ -- Damien Raude-Morvan Mon, 19 Sep 2011 16:33:15 +0200 ++ ++openjdk-7 (7~b147-2.0~pre4-1) unstable; urgency=low ++ ++ * Update to IcedTea7 (20110906): ++ - JamVM: support for armhf and other various fixes. ++ * Upload to unstable. ++ * Regenerate control file for debian unstable. ++ * Makefile.am: Force JAVA_HOME for ant call to --with-jdk-home value (without ++ this, it defaults to existing JAVA_HOME env or /usr/bin/java link) ++ ++ -- Damien Raude-Morvan Mon, 05 Sep 2011 23:50:43 +0200 ++ ++openjdk-7 (7~b147-2.0~pre3-3ubuntu2) oneiric; urgency=low ++ ++ * Merge debian packaging r491 from openjdk-6: ++ - Move the -lib files into a different location so that the java-7-openjdk ++ name can be used as a symlink. ++ - Symlink the jre/cmm directory, instead of the files inside. Closes: #639883. ++ ++ -- Matthias Klose Thu, 01 Sep 2011 21:08:45 +0200 ++ ++openjdk-7 (7~b147-2.0~pre3-3ubuntu1) oneiric; urgency=low ++ ++ * Regenerate the control file. ++ ++ -- Matthias Klose Sun, 28 Aug 2011 23:42:18 +0200 ++ ++openjdk-7 (7~b147-2.0~pre3-3) experimental; urgency=low ++ ++ * Merge debian packaging r485:489 from openjdk-6: ++ - Build using GCC-4.4 on sparc and sparc64. ++ - Enable testsuite runs in s390x. ++ * Merge debian packaging r490 from openjdk-6: ++ - Set plugin name for the jinfo file. Closes: #638548, ++ - Disable the mauve testsuite on i386. ++ - Make the installation multiarch aware. ++ ++ -- Matthias Klose Sun, 28 Aug 2011 20:42:54 +0200 ++ ++openjdk-7 (7~b147-2.0~pre3-2) experimental; urgency=low ++ ++ * d/patches/jdk-no-mapfile.diff: Re-add was not merged into ++ current (e46d527097f1) revision but latter. ++ ++ -- Damien Raude-Morvan Mon, 22 Aug 2011 00:11:33 +0200 ++ ++openjdk-7 (7~b147-2.0~pre3-1) experimental; urgency=low ++ ++ * Update to IcedTea7 (20110821): ++ - JamVM updates. ++ - S7070134,S7044738,S7068051,S7073913: Fix random segfaults ++ and related invalid results from loop unroll optimization. ++ - d/patches/jdk-no-mapfile.diff: Drop, merged in icedtea7-forest. ++ ++ [ Matthias Klose ] ++ * Build using GCC-4.4 on mips/mipsel. Closes: #628620. ++ * Merge debian packaging r482:485 from openjdk-6: ++ - Call dbus-launch --exit-with-session in testsuite. Closes: #612394. ++ - Build for s390x using Zero. ++ ++ [ Damien Raude-Morvan ] ++ * d/patches/kfreebsd-support-hotspot.diff: Add workaround ++ to handle #637378. ++ * d/generate-dfsg-zip.sh: Update to also handle langtools.tar.gz. ++ Closes: #623693. ++ ++ -- Damien Raude-Morvan Sun, 21 Aug 2011 20:08:50 +0200 ++ ++openjdk-7 (7~b147-2.0~pre2-3) experimental; urgency=low ++ ++ * d/patches/kfreebsd-support-hotspot.diff: Fix access to CPU registry under ++ kfreebsd-amd64. ++ ++ -- Damien Raude-Morvan Sun, 07 Aug 2011 12:22:47 +0200 ++ ++openjdk-7 (7~b147-2.0~pre2-2) experimental; urgency=low ++ ++ * d/patches/kfreebsd-support-jamvm.diff: Add support for kfreebsd-amd64. ++ * d/patches/kfreebsd-support-hotspot.diff: Small fixes for Hotspot on ++ kfreebsd-i386. ++ * Split d/patches/hotspot-s390.diff and zero-missing-headers.diff. ++ * Re-add missing changes from last upload: ++ - patches/use-idx_t.patch: Edit upstream patch to avoid FTBFS on s390. ++ - Makefile.{am,im}: Force bootclasspath (useful when building from ++ openjdk-6). ++ ++ -- Damien Raude-Morvan Sat, 06 Aug 2011 23:50:58 +0200 ++ ++openjdk-7 (7~b147-2.0~pre2-1) experimental; urgency=low ++ ++ * Update to icedtea7-forest snapshot (20110804): ++ - d/patches/pr753.diff: drop, merged in icedtea7-forest. ++ - d/patches/pr757.diff: drop, merged in icedtea7-forest. ++ - d/patches/zero-jsr292-fixes.diff: drop, merged in icedtea7-forest. ++ - d/patches/no-compiler-path.diff: drop, now handled correctly icedtea7's ++ configure and openjdk's Makefile (by CC and CXX environment variables). ++ - Updated JamVM to the 2011-08-01 revision. ++ ++ [ Damien Raude-Morvan ] ++ * d/patches/zero-fpu-control-is-noop.diff: Remove ShouldNotCallThis from ++ os_linux_zero.cpp (fix crash under i386). ++ * d/rules: Enable support for GNU/kFreeBSD arch: ++ - d/patches/kfreebsd-support-*: Update with latest fixes. ++ - d/patches/kfreebsd-sync-issues.diff: hack to force some wait ++ until we fix sync issues. ++ - d/rules: Enable shark for GNU/kFreeBSD. ++ * d/rules: Use DEB_HOST_ARCH_CPU for jvmarch/archdir. Thanks to ++ Jérémie Koenig for patch. ++ * d/patches/jexec.diff: Update for openjdk-7. ++ * d/JB-jdk.overrides.in: Fix override for new Lintian 2.5.0 path handling. ++ * d/icedtea-7-jre-jamvm.overrides: As for others libjvm.so, we use ++ --strip-debug instead of --strip-unneeded. ++ * d/source.lintian-overrides: Drop, not used anymore in openjdk-7. ++ ++ [ Matthias Klose ] ++ * Merge debian packaging r472:482 from openjdk-6: ++ - openjdk-6-jre-headless: Depend on icedtea-6-jre-jamvm, if it's ++ the default VM. ++ - Use gcj-4.4 as the stage1 java VM on mips and mipsel. ++ - Make JamVM the default VM on Ubuntu oneiric/ARM. ++ ++ -- Matthias Klose Thu, 04 Aug 2011 11:38:01 +0200 ++ ++openjdk-7 (7~b147-2.0~pre1-1) experimental; urgency=low ++ ++ * New b147 code drop (OpenJDK7 RC1). ++ ++ [ Matthias Klose ] ++ * Fix build on sparc64. ++ * Recognize 32bit user space on sparc. ++ * Build shark using llvm-2.9. ++ ++ [ Damien Raude-Morvan ] ++ * d/patches/zero-jsr292-fixes.diff: Fixes on Zero/Shark for JSR 292 support ++ from Chris Phillips . ++ * d/generate-dfsg-zip.sh: Update for OpenJDK7 as a first step to get #623693 ++ fixed. ++ * d/patches/kfreebsd-*: WiP patches for GNU/kFreeBSD support ++ (not yet enabled by default). ++ ++ -- Matthias Klose Sun, 17 Jul 2011 16:08:51 +0200 ++ ++openjdk-7 (7~b143-2.0~pre1-2) experimental; urgency=low ++ ++ * Upload to experimental. ++ ++ -- Matthias Klose Tue, 12 Jul 2011 14:30:01 +0200 ++ ++openjdk-7 (7~b143-2.0~pre1-1ubuntu1) oneiric; urgency=low ++ ++ * Fix zero builds on non-ix86 architectures. ++ * Fix build on sparc. ++ * Build using jpeg8. ++ ++ -- Matthias Klose Tue, 12 Jul 2011 14:25:24 +0200 ++ ++openjdk-7 (7~b143-2.0~pre1-1) experimental; urgency=low ++ ++ [ Damien Raude-Morvan ] ++ * New b143 code drop. ++ * Drop d/patches/7031385.diff: Merged upstream. ++ * Drop d/patches/jamvm-oj7.patch: Merged upstream. ++ * Manpages are now ja_JP.UTF-8 instead of ja_JP.eucJP ++ ++ [ Matthias Klose ] ++ * Apply fix for IcedTea issue #753, #757. ++ * Update s390 hotspot build fixes. ++ * Re-enable zero on i386. ++ ++ -- Matthias Klose Sun, 10 Jul 2011 14:28:17 +0200 ++ ++openjdk-7 (7~b136-2.0~pre1-2) experimental; urgency=low ++ ++ * Disable zero on i386. ++ ++ -- Matthias Klose Sun, 29 May 2011 12:37:03 +0200 ++ ++openjdk-7 (7~b136-2.0~pre1-1ubuntu1) oneiric; urgency=low ++ ++ * Upload to oneiric. ++ ++ -- Matthias Klose Sun, 29 May 2011 07:59:01 +0200 ++ ++openjdk-7 (7~b136-2.0~pre1-1) experimental; urgency=low ++ ++ [ Matthias Klose ] ++ * Fix non-bootstrap builds. ++ * Merge debian packaging r469:472 from openjdk-6. ++ * Run jtreg tests using JamVM too. ++ * Don't run the jtreg tests with the NSS security provider enabled. ++ * Update JamVM to 20110528. ++ * Re-enable the zero build, keep the shark builds disabled. ++ ++ [ Damien Raude-Morvan ] ++ * Only apply jamvm-oj7.patch when jamvm build in enabled. ++ ++ -- Matthias Klose Sat, 28 May 2011 17:17:23 +0200 ++ ++openjdk-7 (7~b136-1.14+debian1-1) experimental; urgency=low ++ ++ * New upstream release: Icedtea 1.14. ++ - debian/patches/jamvm-oj7.patch: support new instruction ++ (JVM_FindClassFromBootLoader) in JamVM. ++ - Makefile.am: Fix some missing depends between ++ patch and extract targets. ++ * debian/patches/nonreparenting-wm.diff: Update. ++ * Replace B-D on libxalan2-java by xsltproc for bootstrapping JMVTI. ++ * Don't use GCJ_SUFFIX=4.6 for sid/wheezy/oneiric as GCJ version ++ is not homogeneous between arch. ++ * Enable JamVM support: ++ - d/control: Add B-D on libtool. ++ ++ -- Damien Raude-Morvan Thu, 26 May 2011 23:03:56 +0200 ++ ++openjdk-7 (7~b136-1.14~pre0-4) experimental; urgency=low ++ ++ * Re-add build dependency on fastjar. ++ * Fix dependency on liblcms2-2. ++ ++ -- Matthias Klose Sun, 08 May 2011 10:21:21 +0200 ++ ++openjdk-7 (7~b136-1.14~pre0-3) experimental; urgency=low ++ ++ * Fix liblcms dependency for -jre-headless package. ++ ++ -- Damien Raude-Morvan Sat, 07 May 2011 17:20:15 +0200 ++ ++openjdk-7 (7~b136-1.14~pre0-2ubuntu2) oneiric; urgency=low ++ ++ * Re-add build dependency on fastjar. ++ ++ -- Matthias Klose Sun, 08 May 2011 02:51:47 +0200 ++ ++openjdk-7 (7~b136-1.14~pre0-2) experimental; urgency=low ++ ++ * Fix build failure on i386 with GCC 4.6. ++ ++ -- Matthias Klose Fri, 06 May 2011 17:10:00 +0200 ++ ++openjdk-7 (7~b136-1.14~pre0-1) experimental; urgency=low ++ ++ [ Damien Raude-Morvan ] ++ * New b136 code drop: ++ - d/rules: Use jaxp-1_4_5-dev1.zip as jaxp-drop-zip. ++ - d/patches/icedtea-pretend-memory.diff: Refreshed. ++ ++ [ Matthias Klose ] ++ * Fix -jre-lib dependency on -jre. Closes: #624846. ++ * Add lcms configury. ++ ++ -- Matthias Klose Thu, 05 May 2011 21:08:55 +0200 ++ ++openjdk-7 (7~b130-1.14~pre0-2) experimental; urgency=low ++ ++ * Remove obsolete conflicts. Closes: #624090. ++ * Add copyright for the rewriter class. Addresses part of #623693. ++ * Lower priorities for the alternatives below these of OpenJDK 6, ++ as long as OpenJDK 7 is not yet released. ++ * Don't build HotSpot with -Werror on architectures other than amd64 ++ and i386. ++ ++ -- Matthias Klose Wed, 27 Apr 2011 23:03:45 +0200 ++ ++openjdk-7 (7~b130-1.14~pre0-1) experimental; urgency=low ++ ++ * New b130 code drop. ++ * Merge debian packaging r464:469 from openjdk-6. ++ * Do not bump the epoch, package was never uploaded to any official ++ repository. ++ ++ -- Matthias Klose Wed, 20 Apr 2011 21:46:32 +0200 ++ ++openjdk-7 (1:7~b129-1.14~pre0-1) experimental; urgency=low ++ ++ * New b129 code drop. ++ * Bump epoch to 1 and use ~ to indicate that's not openjdk-7 final relaase. ++ ++ -- Damien Raude-Morvan Mon, 14 Feb 2011 00:34:45 +0100 ++ ++openjdk-7 (7b128-1.14~pre0-1) UNRELEASED; urgency=low ++ ++ * New b128 code drop. ++ * Exclude "release" file for dh_install. ++ ++ -- Damien Raude-Morvan Mon, 07 Feb 2011 23:45:13 +0100 ++ ++openjdk-7 (7b126-1.14~pre0-1) UNRELEASED; urgency=low ++ ++ * Merge debian packaging r446:464 from openjdk-6 ++ but keep the following changes : ++ - Replace DISABLE_PRECOMPILED_HEADER=1 by USE_PRECOMPILED_HEADER=0 ++ - Use "ant, ant-optionnal" for all distrel ++ - Drop "with_hotspot" variable (only one hotspot supported by IcedTea7) ++ - Drop --enable-xrender (not supported by IcedTea7) ++ * New b125 code drop: ++ - d/rules: Use new archives by --with-*-src-zip ++ * Refresh patches: ++ - d/patches/shebang.diff: Year updated ++ - d/patches/ld-symbolic-functions.diff and ++ d/patches/no-compiler-path.diff: Changed corba generic Makefiles. ++ - d/patches/default-jvm-cfg.diff and d/patches/set-exec-name.diff: ++ Upstream merged "solaris" and "linux" java.c and java_md.c ++ * Drop patches: ++ - d/patches/too-many-args-ftbfs.diff (merged upstream) ++ - d/patches/sparc.diff (merges upstream) ++ - d/patches/hotspot-include-fixes.diff (includeDB dropped upstream) ++ ++ -- Damien Raude-Morvan Mon, 24 Jan 2011 00:18:38 +0100 ++ ++openjdk-7 (7b106~pre1-0lucid2) lucid; urgency=low ++ ++ * Build for lucid. ++ ++ -- Matthias Klose Thu, 09 Sep 2010 15:32:13 +0200 ++ ++openjdk-7 (7b106~pre1-0ubuntu2) maverick; urgency=low ++ ++ * Build openjdk-7 snapshot (7b106) ++ * Symlink timezone data. ++ * Disable shark builds, currently broken in 7b106. ++ ++ -- Matthias Klose Tue, 07 Sep 2010 04:56:48 +0200 ++ ++openjdk-7 (7b89-1.13-0ubuntu1) maverick; urgency=low ++ ++ * Update to the IcedTea 1.13 release. ++ * openjdk-7-jre: Recommend ttf-dejavu-extra. LP: #569396. ++ ++ -- Matthias Klose Fri, 30 Jul 2010 01:19:45 +0200 ++ ++openjdk-7 (7b89~pre1-0lucid3) lucid; urgency=low ++ ++ * Include docs in the -doc package. LP: #600834. ++ * Update from the IcedTea6 trunk. ++ - Plugin and netx fixes. ++ - Don't link the plugin against the libxul libraries. Closes: #576361. ++ - More plugin cpu usage fixes. Closes: #584335, #587049. ++ - Plugin: fixes AppletContext.getApplets(). ++ * Fix Vcs-Bzr location. Closes: #530883. ++ * Search for unversioned llvm-config tool. ++ * Don't set XFILESEARCHPATH and NLSPATH on startup. LP: #586641. ++ * Fix chinese font metrics and prefer using 'WenQuanYi Micro Hei' font. ++ LP: #472845. ++ * Strip libjvm.so with --strip-debug instead of --strip-unneeded. ++ LP: #574997. ++ * Fix inter-package dependencies. ++ ++ -- Matthias Klose Thu, 15 Jul 2010 18:12:17 +0200 ++ ++openjdk-7 (7b89~pre1-0lucid1) lucid; urgency=low ++ ++ [ Damien Raude-Morvan ] ++ * Merge debian packaging r403:430 from openjdk-6. ++ * Add myself to Uploaders. ++ * Build openjdk-7 snapshot (7b89) ++ * Use ant+ant-optional (IcedTea7 support ant 1.8). ++ * Merge debian packaging r431:436 from openjdk-6. ++ ++ [ Matthias Klose ] ++ * Merge debian packaging r430:445 from openjdk-6. ++ * Update debian patches to 7b89. ++ * Reenable the two stage build. ++ * Reenable building cacao. ++ * Reenable building zero. ++ ++ -- Matthias Klose Tue, 13 Jul 2010 10:32:11 +0200 ++ ++openjdk-7 (7b77-0ubuntu1~ppa1) lucid; urgency=low ++ ++ * Build openjdk-7 snapshot (7b77). ++ * Merge debian packaging r391:403 from openjdk-6. ++ ++ -- Matthias Klose Mon, 21 Dec 2009 16:58:34 +0100 ++ ++openjdk-7 (7b72-0ubuntu1~ppa1) karmic; urgency=low ++ ++ * Build openjdk-7 snapshot (7b72). ++ * Merge debian packaging r371:391 from openjdk-6. ++ * Disable the zero build for now. ++ ++ -- Matthias Klose Sat, 03 Oct 2009 16:35:27 +0200 ++ ++openjdk-7 (7b66-0ubuntu1~ppa1) karmic; urgency=low ++ ++ * Build openjdk-7 snapshot (7b66). ++ * Merge debian packaging r362:371 from openjdk-6. ++ ++ -- Matthias Klose Thu, 06 Aug 2009 12:40:00 +0200 ++ ++openjdk-7 (7b59-0ubuntu1) karmic; urgency=low ++ ++ * Reenable the build of zero. ++ * Reapply fontconfig patch. ++ * Apply icedtea-cacao-no-mmap-first-page patch. ++ ++ -- Matthias Klose Fri, 29 May 2009 10:19:26 +0200 ++ ++openjdk-7 (7b59-0ubuntu1~ppa1) karmic; urgency=low ++ ++ * Build openjdk-7 snapshot (7b59). ++ * Merge debian packaging r205:362 from openjdk-6. ++ ++ -- Matthias Klose Wed, 27 May 2009 12:09:16 +0200 ++ ++openjdk-7 (7b40-0ubuntu2) jaunty; urgency=low ++ ++ * Add build dependency on libxrender-dev. ++ * Don't use fastjar on ia64, working around a build failure. ++ * Add configury for shark builds. ++ ++ -- Matthias Klose Thu, 04 Dec 2008 16:26:15 +0100 ++ ++openjdk-7 (7b40-0ubuntu1) jaunty; urgency=low ++ ++ * Build openjdk-7 snapshot (7b40). ++ * Update packaging for openjdk-7. ++ ++ -- Matthias Klose Tue, 02 Dec 2008 14:27:03 +0100 ++ ++openjdk-6 (6b22-1.10.1-0ubuntu1) natty; urgency=low ++ ++ * IcedTea6 1.10.1 release. ++ ++ -- Matthias Klose Tue, 05 Apr 2011 12:20:36 +0200 ++ ++openjdk-6 (6b22-1.10.1~pre1-1) experimental; urgency=low ++ ++ * Upload to experimental. ++ ++ -- Matthias Klose Sat, 26 Mar 2011 10:43:49 +0100 ++ ++openjdk-6 (6b22-1.10.1~pre1-0ubuntu1) natty; urgency=low ++ ++ * Update from the IcedTea6-1.10 release branch (20110325). ++ * Add multiarch directories to the default library path. LP: #737603. ++ ++ -- Matthias Klose Fri, 25 Mar 2011 16:33:57 +0100 ++ ++openjdk-6 (6b22-1.10-3) experimental; urgency=low ++ ++ * Fix JamVM build on mips/mipsel (Robert Lougher). ++ * Re-enable the JamVM build on mips/mipsel. ++ ++ -- Matthias Klose Sun, 06 Mar 2011 15:01:54 +0100 ++ ++openjdk-6 (6b22-1.10-2) experimental; urgency=low ++ ++ * Mention that IcedTea is copyrigh GPLv2 + "CLASSPATH" EXCEPTION. ++ Closes: #611269. ++ * Don't run the jdk checks for the alternate builds (hotspot and ++ langtools checks are still run). ++ * Disable the JamVM build on mips/mipsel. ++ ++ -- Matthias Klose Sat, 05 Mar 2011 16:13:40 +0100 ++ ++openjdk-6 (6b22-1.10-1) experimental; urgency=low ++ ++ * Upload to experimental. ++ ++ -- Matthias Klose Fri, 04 Mar 2011 16:12:50 +0100 ++ ++openjdk-6 (6b22-1.10-0ubuntu2) natty; urgency=low ++ ++ * Disable the jdk tests with the Shark, JamVM and Cacao VMs. ++ ++ -- Matthias Klose Fri, 04 Mar 2011 15:32:50 +0100 ++ ++openjdk-6 (6b22-1.10-0ubuntu1) natty; urgency=low ++ ++ * IcedTea6 1.10 release. ++ ++ -- Matthias Klose Thu, 03 Mar 2011 09:32:19 +0100 ++ ++openjdk-6 (6b21~pre3-0ubuntu1) natty; urgency=low ++ ++ * Update from the IcedTea6 trunk (20110224). ++ * icedtea-6-jre-jamvm: Build JamVM as an alternative VM, ++ start with `java -jamvm'. ++ ++ -- Matthias Klose Thu, 24 Feb 2011 02:45:56 +0100 ++ ++openjdk-6 (6b21~pre2-0ubuntu1) natty; urgency=low ++ ++ * Update from the IcedTea6 trunk (20110217). ++ * Update hotspot hs20 (not yet enabled). ++ * Add ppc64 packaging bits. ++ ++ -- Matthias Klose Fri, 18 Feb 2011 15:55:41 +0100 ++ ++openjdk-6 (6b21~pre1-1) experimental; urgency=low ++ ++ * Upload to experimental. ++ ++ -- Matthias Klose Sat, 22 Jan 2011 15:34:21 +0100 ++ ++openjdk-6 (6b21~pre1-0ubuntu1) natty; urgency=low ++ ++ * Update to 6b21. ++ ++ -- Matthias Klose Sat, 22 Jan 2011 14:28:28 +0100 ++ ++openjdk-6 (6b20-1.10~pre3-0ubuntu4) natty; urgency=low ++ ++ * Fix shark build on powerpc. ++ ++ -- Matthias Klose Fri, 24 Dec 2010 11:06:32 +0100 ++ ++openjdk-6 (6b20-1.10~pre3-0ubuntu3) natty; urgency=low ++ ++ * Update from the IcedTea6 trunk (20101223). ++ ++ -- Matthias Klose Thu, 23 Dec 2010 14:27:17 +0100 ++ ++openjdk-6 (6b20-1.10~pre3-0ubuntu1) natty; urgency=low ++ ++ * Update from the IcedTea6 trunk (20101126). ++ * Update hotspot hs19. ++ * Fix build failures on ia64, s390 and sparc64. ++ ++ -- Matthias Klose Fri, 26 Nov 2010 16:38:16 +0100 ++ ++openjdk-6 (6b20-1.10~pre2-0ubuntu7~ppa1) natty; urgency=low ++ ++ * Reenable shark on amd64, but build using llvm-2.7. ++ ++ -- Matthias Klose Thu, 21 Oct 2010 23:59:30 +0200 ++ ++openjdk-6 (6b20-1.10~pre2-0ubuntu5) natty; urgency=low ++ ++ * Don't try to set up an alternative for javaws ++ ++ -- Matthias Klose Thu, 21 Oct 2010 17:38:48 +0200 ++ ++openjdk-6 (6b20-1.10~pre2-0ubuntu3) natty; urgency=low ++ ++ * Stop building zero/shark on amd64. Fails the self tests. ++ ++ -- Matthias Klose Thu, 21 Oct 2010 13:49:56 +0200 ++ ++openjdk-6 (6b20-1.10~pre2-0ubuntu2) natty; urgency=low ++ ++ * Don't include OpenJDK's javaws either. ++ * openjdk-6-jre: Recommend icedtea-netx. ++ ++ -- Matthias Klose Thu, 21 Oct 2010 08:34:07 +0200 ++ ++openjdk-6 (6b20-1.10~pre2-0ubuntu1) natty; urgency=low ++ ++ * Update from the IcedTea6 trunk (20101020). ++ * Remove the plugin and javaws from the packaging, removed upstream. ++ ++ -- Matthias Klose Wed, 20 Oct 2010 17:45:09 +0200 ++ ++openjdk-6 (6b20-1.10~pre1-0ubuntu2) natty; urgency=low ++ ++ * Build with hotspot 19. ++ ++ -- Matthias Klose Thu, 14 Oct 2010 11:28:38 +0200 ++ ++openjdk-6 (6b20-1.10~pre1-0ubuntu1) natty; urgency=low ++ ++ * Snapshot, taken from the IcedTea6 trunk (20101013). ++ ++ -- Matthias Klose Wed, 13 Oct 2010 08:36:44 +0200 ++ ++openjdk-6 (6b20-1.9.2-1) experimental; urgency=low ++ ++ * Upload to experimental. ++ ++ -- Matthias Klose Wed, 24 Nov 2010 05:29:43 +0100 ++ ++openjdk-6 (6b20-1.9.2-0ubuntu1) maverick-security; urgency=low ++ ++ * IcedTea6 1.9.2 release. ++ - CVE-2010-3860: Fix IcedTea System property information leak via ++ public static. ++ * Build using Hotspot hs19. ++ * Start metacity using dbus-launch, when running the testsuite. LP: #632594. ++ ++ -- Matthias Klose Sun, 21 Nov 2010 18:30:39 +0100 ++ ++openjdk-6 (6b20-1.9.1-1ubuntu3) maverick-security; urgency=low ++ ++ * Move all japanese man pages belonging to the jre into the -jre package. ++ Closes: #600765. ++ * Add -jdk replaces for -jre and -jre-headless. Closes: #600809. ++ ++ -- Matthias Klose Wed, 20 Oct 2010 12:51:34 +0200 ++ ++openjdk-6 (6b20-1.9.1-1ubuntu1) maverick-security; urgency=low ++ ++ * Fix upgrade to symlinked timezone data. Closes: #600359. ++ * Move all japanese man pages belonging to the jre into the -jre package. ++ Closes: #600765. ++ ++ -- Matthias Klose Mon, 18 Oct 2010 16:07:48 +0200 ++ ++openjdk-6 (6b20-1.9.1-1) experimental; urgency=low ++ ++ * Upload to experimental. ++ ++ -- Matthias Klose Tue, 12 Oct 2010 15:07:35 +0200 ++ ++openjdk-6 (6b20-1.9.1-0ubuntu1) maverick-security; urgency=low ++ ++ * IcedTea6 1.9.1 release. ++ - Security updates: ++ - S6914943, CVE-2009-3555: TLS: MITM attacks via session renegotiation. ++ - S6559775, CVE-2010-3568: OpenJDK Deserialization Race condition. ++ - S6891766, CVE-2010-3554: OpenJDK corba reflection vulnerabilities. ++ - S6925710, CVE-2010-3562: OpenJDK IndexColorModel double-free. ++ - S6938813, CVE-2010-3557: OpenJDK Swing mutable static. ++ - S6957564, CVE-2010-3548: OpenJDK DNS server IP address information ++ leak. ++ - S6958060, CVE-2010-3564: OpenJDK kerberos vulnerability. ++ - S6963023, CVE-2010-3565: OpenJDK JPEG writeImage remote code execution. ++ - S6963489, CVE-2010-3566: OpenJDK ICC Profile remote code execution. ++ - S6966692, CVE-2010-3569: OpenJDK Serialization inconsistencies. ++ - S6622002, CVE-2010-3553: UIDefault.ProxyLazyValue has unsafe ++ reflection usage. ++ - S6623943: javax.swing.TimerQueue's thread occasionally fails to start. ++ - S6925672, CVE-2010-3561: Privileged ServerSocket.accept allows ++ receiving connections from any host. ++ - S6952017, CVE-2010-3549: HttpURLConnection chunked encoding issue ++ (Http request splitting). ++ - S6952603, CVE-2010-3551: NetworkInterface reveals local network ++ address to untrusted code. ++ - S6961084, CVE-2010-3541: limit setting of some request headers in ++ HttpURLConnection. ++ - S6963285, CVE-2010-3567: Crash in ICU Opentype layout engine due to ++ mismatch in character counts. ++ - S6980004, CVE-2010-3573: limit HTTP request cookie headers in ++ HttpURLConnection. ++ - S6981426, CVE-2010-3574: limit use of TRACE method in ++ HttpURLConnection. ++ - Plugin fixes. ++ - Backports from newer IcedTea releases. ++ ++ -- Matthias Klose Tue, 12 Oct 2010 12:13:40 +0200 ++ ++openjdk-6 (6b20-1.9-1) experimental; urgency=low ++ ++ * Upload to experimental. ++ ++ -- Matthias Klose Tue, 07 Sep 2010 21:19:21 +0200 ++ ++openjdk-6 (6b20-1.9-0ubuntu1) maverick; urgency=low ++ ++ * IcedTea6 1.9 release. ++ ++ -- Matthias Klose Tue, 07 Sep 2010 18:13:20 +0200 ++ ++openjdk-6 (6b20~pre2-0ubuntu2) maverick; urgency=low ++ ++ * Update from the IcedTea6 trunk. ++ * Really let the build fail on armel. ++ ++ -- Matthias Klose Fri, 30 Jul 2010 16:55:38 +0200 ++ ++openjdk-6 (6b20~pre2-0ubuntu1) maverick; urgency=high ++ ++ * Update from the IcedTea6 trunk. ++ - (CVE-2010-2783): IcedTea 'Extended JNLP Services' arbitrary file access. ++ - (CVE-2010-2548): IcedTea incomplete property access check for unsigned ++ applications ++ * openjdk-6-jre: Recommend ttf-dejavu-extra. LP: #569396. ++ * Explicitely fail the build on armel. The ARM assembler interpreter is ++ disabled and would a 3-5x performance regression compared to the current ++ 6b18 armel binaries in the archive. ++ ++ -- Matthias Klose Thu, 29 Jul 2010 00:10:53 +0200 ++ ++openjdk-6 (6b20~pre1-2) experimental; urgency=low ++ ++ * Upload to experimental. ++ ++ -- Matthias Klose Thu, 15 Jul 2010 13:55:02 +0200 ++ ++openjdk-6 (6b20~pre1-1ubuntu1) maverick; urgency=low ++ ++ * Include docs in the -doc package. LP: #600834. ++ * Update from the IcedTea6 trunk. ++ - Plugin and netx fixes. ++ - Don't link the plugin against the libxul libraries. Closes: #576361. ++ - More plugin cpu usage fixes. Closes: #584335, #587049. ++ - Plugin: fixes AppletContext.getApplets(). ++ * Fix Vcs-Bzr location. Closes: #530883. ++ * Search for unversioned llvm-config tool. ++ * Don't set XFILESEARCHPATH and NLSPATH on startup. LP: #586641. ++ * Fix chinese font metrics and prefer using 'WenQuanYi Micro Hei' font. ++ LP: #472845. ++ * Strip libjvm.so with --strip-debug instead of --strip-unneeded. ++ LP: #574997. ++ ++ -- Matthias Klose Thu, 15 Jul 2010 12:40:10 +0200 ++ ++openjdk-6 (6b20~pre1-1) experimental; urgency=low ++ ++ * Upload to experimental. ++ ++ -- Matthias Klose Mon, 28 Jun 2010 00:50:58 +0200 ++ ++openjdk-6 (6b20~pre1-0ubuntu2) maverick; urgency=low ++ ++ * Shark & CACAO build fixes. ++ ++ -- Matthias Klose Fri, 25 Jun 2010 02:27:10 +0200 ++ ++openjdk-6 (6b20~pre1-0ubuntu1) maverick; urgency=low ++ ++ * Update to 6b20 code drop. ++ ++ -- Matthias Klose Wed, 14 Apr 2010 02:53:37 +0200 ++ ++openjdk-6 (6b18-1.8-4) unstable; urgency=low ++ ++ * Update from the 1.8 branch. ++ - Plugin and netx fixes. ++ - Don't link the plugin against the libxul libraries. Closes: #576361. ++ - More plugin cpu usage fixes. Closes: #584335, #587049. ++ - Plugin: fixes AppletContext.getApplets(). ++ - Fix race conditions in plugin initialization code that were causing ++ hangs when loading multiple applets in parallel. ++ * Fix Vcs-Bzr location. Closes: #530883. ++ * Search for unversioned llvm-config tool. ++ * Don't set XFILESEARCHPATH and NLSPATH on startup. LP: #586641. ++ * Fix chinese font metrics and prefer using 'WenQuanYi Micro Hei' font. ++ LP: #472845. ++ * Strip libjvm.so with --strip-debug instead of --strip-unneeded. ++ LP: #574997. ++ * Don't turn on the ARM assembler interpreter when building the shark ++ VM. ++ ++ -- Matthias Klose Thu, 15 Jul 2010 00:40:13 +0200 ++ ++openjdk-6 (6b18-1.8-3) unstable; urgency=low ++ ++ * Update from the 1.8 branch. ++ - Plugin fixes. LP: #597714. ++ * Add powerpcspe build fixes (Sebastian Andrzej Siewior). Closes: #586359. ++ * Work around build failure on buildds configured with low ARG_MAX ++ (Giovanni Mascellani). Closes: #575254. ++ ++ -- Matthias Klose Sun, 27 Jun 2010 10:16:27 +0200 ++ ++openjdk-6 (6b18-1.8-2ubuntu3) maverick; urgency=low ++ ++ * Update from the 1.8 branch. ++ - Plugin fixes. LP: #597714. ++ * Add powerpcspe build fixes (Sebastian Andrzej Siewior). Closes: #586359. ++ * Work around build failure on buildds configured with low ARG_MAX ++ (Giovanni Mascellani). Closes: #575254. ++ ++ -- Matthias Klose Sun, 27 Jun 2010 10:16:27 +0200 ++ ++openjdk-6 (6b18-1.8-2ubuntu2) maverick; urgency=low ++ ++ * Search for unversioned llvm-config tool. ++ ++ -- Matthias Klose Sun, 02 May 2010 12:03:01 +0200 ++ ++openjdk-6 (6b18-1.8-2ubuntu1) maverick; urgency=low ++ ++ * Upload to maverick. ++ ++ -- Matthias Klose Sun, 02 May 2010 11:23:16 +0200 ++ ++openjdk-6 (6b18-1.8-2) unstable; urgency=low ++ ++ * Update from the 1.8 branch. ++ - Fix build on Hitachi SH. Closes: #575346. ++ - Shark and Zero fixes. ++ * Build shark using llvm-2.7. ++ * Don't use shark to run the test harness when testing the shark build. ++ * README.Debian: Add paragraph about debugging the IcedTea NPPlugin. ++ ++ -- Matthias Klose Sat, 01 May 2010 12:35:19 +0200 ++ ++openjdk-6 (6b18-1.8-1) unstable; urgency=low ++ ++ * Upload to unstable. ++ ++ -- Matthias Klose Wed, 14 Apr 2010 02:53:37 +0200 ++ ++openjdk-6 (6b18-1.8-0ubuntu1) lucid; urgency=low ++ ++ * Update IcedTea6 to the icedtea6-1.8 release. ++ * Fix builds on Ubuntu/dapper and Debian/lenny. ++ * On hppa, configure --without-rhino --disable-plugin. ++ * Fix Hitachi SH configury. Closes: #575346. ++ * Start a window manager when running the tests. Prefer metacity, ++ as more tests pass with it. ++ * Let XToolkit.isTraySupported() return true, if Compiz is running. ++ Works around sun#6438179. LP: #300948. ++ * Make /jre/lib/security/nss.cfg a config file. ++ * Fail in the configuration of the packages, if /proc is not mounted. ++ java currently uses tricks to find its own shared libraries depending ++ on the path of the binary. Will be changed in OpenJDK7. Closes: #576453. ++ * Fix PR icedtea/469, testsuite failures with the NSS based security ++ provider. LP: #556549. ++ * Do not pass LD_LIBRARY_PATH from the plugin to the java process. ++ While libnss3.so gets loaded from /usr/lib, the dependent libraries ++ are loaded from MOZILLA_FIVE_HOME (See #561216 for the wrong firefox ++ config). LP: #561124. ++ Closes as well: LP: #551328, #554909, #560829, #549010, #553452. ++ * Always build shark with hs14. ++ ++ -- Matthias Klose Wed, 14 Apr 2010 01:53:33 +0200 ++ ++openjdk-6 (6b18~pre4-1ubuntu1) lucid; urgency=low ++ ++ * Build-depend on xulrunner-1.9.2-dev instead of xulrunner-dev, ++ unexpectedly demoted to universe. ++ * icedtea6-plugin: Hardcode dependency on xulrunner-1.9.2. No way ++ to do better? See #552780. ++ * Fix builds on Ubuntu hardy. ++ ++ -- Matthias Klose Wed, 31 Mar 2010 22:21:49 +0200 ++ ++openjdk-6 (6b18~pre4-1) unstable; urgency=high ++ ++ * Upload to unstable. ++ ++ -- Matthias Klose Wed, 31 Mar 2010 16:35:18 +0200 ++ ++openjdk-6 (6b18~pre4-0ubuntu2) lucid; urgency=low ++ ++ * Fix typo in NPPlugin code. LP: #552287. ++ ++ -- Matthias Klose Wed, 31 Mar 2010 10:41:11 +0200 ++ ++openjdk-6 (6b18~pre4-0ubuntu1) lucid; urgency=low ++ ++ [ Matthias Klose ] ++ * Update IcedTea6 form the 1.8 branch. ++ * SECURITY UPDATE: multiple upstream vulnerabilities. Upstream fixes: ++ - (CVE-2010-0837): JAR "unpack200" must verify input parameters (6902299). ++ - (CVE-2010-0845): No ClassCastException for HashAttributeSet constructors ++ if run with -Xcomp (6894807). ++ - (CVE-2010-0838): CMM readMabCurveData Buffer Overflow Vulnerability ++ (6899653). ++ - (CVE-2010-0082): Loader-constraint table allows arrays instead of ++ only the base-classes (6626217). ++ - (CVE-2010-0095): Subclasses of InetAddress may incorrectly interpret ++ network addresses (6893954) [ZDI-CAN-603]. ++ - (CVE-2010-0085): File TOCTOU deserialization vulnerability (6736390). ++ - (CVE-2010-0091): Unsigned applet can retrieve the dragged information ++ before drop action occurs (6887703). ++ - (CVE-2010-0088): Inflater/Deflater clone issues (6745393). ++ - (CVE-2010-0084): Policy/PolicyFile leak dynamic ProtectionDomains ++ (6633872). ++ - (CVE-2010-0092): AtomicReferenceArray causes SIGSEGV -> SEGV_MAPERR ++ error (6888149). ++ - (CVE-2010-0094): Deserialization of RMIConnectionImpl objects should ++ enforce stricter checks (6893947) [ZDI-CAN-588]. ++ - (CVE-2010-0093): System.arraycopy unable to reference elements ++ beyond Integer.MAX_VALUE bytes (6892265). ++ - (CVE-2010-0840): Applet Trusted Methods Chaining Privilege Escalation ++ Vulnerability (6904691). ++ - (CVE-2010-0848): AWT Library Invalid Index Vulnerability (6914823). ++ - (CVE-2010-0847): ImagingLib arbitrary code execution vulnerability ++ (6914866). ++ - (CVE-2009-3555): TLS: MITM attacks via session renegotiation. ++ - 6639665: ThreadGroup finalizer allows creation of false root ++ ThreadGroups. ++ - 6898622: ObjectIdentifer.equals is not capable of detecting incorrectly. ++ encoded CommonName OIDs. ++ - 6910590: Application can modify command array in ProcessBuilder. ++ - 6909597: JPEGImageReader stepX Integer Overflow Vulnerability. ++ - 6932480: Crash in CompilerThread/Parser. Unloaded array klass? ++ - 6898739: TLS renegotiation issue. ++ ++ [ Torsten Werner ] ++ * Switch off IPV6_V6ONLY for IN6_IS_ADDR_UNSPECIFIED addresses, too. ++ (Closes: #575163) ++ ++ -- Matthias Klose Wed, 31 Mar 2010 02:34:04 +0200 ++ ++openjdk-6 (6b18~pre3-1) unstable; urgency=low ++ ++ [ Matthias Klose ] ++ * Update IcedTea build infrastructure (20100321). ++ * Update support for SH4 (Nobuhiro Iwamatsu). ++ * Handle renaming of the plugin name. ++ ++ [ Torsten Werner ] ++ * Improve patch for IPv4 mapped IPv6 addresses even more. ++ (Closes: #573742) ++ ++ -- Matthias Klose Sun, 21 Mar 2010 22:52:12 +0100 ++ ++openjdk-6 (6b18~pre2-1ubuntu2) lucid; urgency=low ++ ++ * Fix build failure on ARM. ++ ++ -- Matthias Klose Fri, 12 Mar 2010 15:19:13 +0100 ++ ++openjdk-6 (6b18~pre2-1ubuntu1) lucid; urgency=low ++ ++ * Upload to lucid. ++ ++ -- Matthias Klose Wed, 10 Mar 2010 23:34:57 +0100 ++ ++openjdk-6 (6b18~pre2-1) unstable; urgency=low ++ ++ * Update IcedTea build infrastructure (20100310). ++ * Disable building the plugin the plugin on alpha (borked xulrunner ++ packaging using binary indep packages). ++ * Use a two stage build on alpha. ++ * Add note about the reparenting WM workaround. Closes: #573026. ++ * Prefer Sazanami instead of Kochi for Japanese fonts (Hideki Yamane). ++ Closes: #572511. ++ * openjdk-6-doc: Don't compress package-list files. Closes: #567899. ++ ++ -- Matthias Klose Wed, 10 Mar 2010 11:19:19 +0100 ++ ++openjdk-6 (6b18~pre1-4) unstable; urgency=low ++ ++ * Improve patch for IPv4 mapped IPv6 addresses. ++ ++ -- Torsten Werner Sun, 07 Mar 2010 01:14:36 +0100 ++ ++openjdk-6 (6b18~pre1-3) unstable; urgency=low ++ ++ * Add a patch for improved handling of IPv4 mapped IPv6 addresses. ++ (Closes: #560056, #561930, #563699, #563946) ++ ++ -- Torsten Werner Tue, 02 Mar 2010 23:46:57 +0100 ++ ++openjdk-6 (6b18~pre1-2) unstable; urgency=low ++ ++ * Change Build-Depends: ant1.7-optional because of a bus error in gij. ++ ++ -- Torsten Werner Mon, 01 Mar 2010 07:17:16 +0100 ++ ++openjdk-6 (6b18~pre1-1ubuntu1) lucid; urgency=low ++ ++ * Ignore error code running ant -diagnostics. ++ * Build-depend on ant-optional. ++ * Disable the cacao build on armel, fails to build with the non ++ bootstrap build. ++ ++ -- Matthias Klose Sat, 20 Feb 2010 15:36:06 +0100 ++ ++openjdk-6 (6b18~pre1-1) unstable; urgency=low ++ ++ * Upload to unstable. ++ ++ -- Matthias Klose Fri, 19 Feb 2010 21:52:32 +0100 ++ ++openjdk-6 (6b18~pre1-0ubuntu1) lucid; urgency=low ++ ++ * New Openjdk6 b18 source code drop. ++ * Use mangled copy of rhino. Closes: #512970. LP: #255149. ++ ++ -- Matthias Klose Fri, 19 Feb 2010 18:17:23 +0100 ++ ++openjdk-6 (6b17-1.7-1ubuntu1) lucid; urgency=low ++ ++ * ARM Thumb2 updates. ++ * Test build using Hotspt hs14 on ix86. ++ ++ -- Matthias Klose Sun, 31 Jan 2010 21:56:59 +0100 ++ ++openjdk-6 (6b18~pre1-1) unstable; urgency=low ++ ++ * Upload to unstable. ++ ++ -- Matthias Klose Fri, 19 Feb 2010 21:52:32 +0100 ++ ++openjdk-6 (6b18~pre1-0ubuntu1) lucid; urgency=low ++ ++ * New Openjdk6 b18 source code drop. ++ * Use mangled copy of rhino. Closes: #512970. LP: #255149. ++ ++ -- Matthias Klose Fri, 19 Feb 2010 18:17:23 +0100 ++ ++openjdk-6 (6b17-1.7-1ubuntu1) lucid; urgency=low ++ ++ * ARM Thumb2 updates. ++ * Test build using Hotspt hs14 on ix86. ++ ++ -- Matthias Klose Sun, 31 Jan 2010 21:56:59 +0100 ++ ++openjdk-6 (6b17-1.7-1) unstable; urgency=low ++ ++ * Upload to unstable. ++ ++ -- Matthias Klose Wed, 27 Jan 2010 23:44:47 +0100 ++ ++openjdk-6 (6b17-1.7-0ubuntu1) lucid; urgency=low ++ ++ * IcedTea6 1.7 release. ++ * Don't try to load libjpeg7; still building with libjpeg62. Closes: #563999. ++ * Run the testsuite on sh4. ++ * Ubuntu only: Implement an execute bit checker for the Non-Exec Policy ++ - debian/JB-java.desktop.in: update mime handler to use new launcher. ++ * armel: Apply the thumb2 patches from the trunk, plus proposed patches ++ for the trunk. ++ ++ -- Matthias Klose Wed, 27 Jan 2010 22:48:24 +0100 ++ ++openjdk-6 (6b17-0ubuntu1) lucid; urgency=low ++ ++ * Build from the IcedTea6-1.7 branch. ++ * Don't build the plugin on sparc64. ++ * Enable the NPPlugin. ++ * Add support for SH4 (Nobuhiro Iwamatsu). ++ * Fix crash in the ARM assembler interpreter (Edward Nevill). ++ ++ -- Matthias Klose Wed, 06 Jan 2010 15:52:50 +0100 ++ ++openjdk-6 (6b17~pre3-1ubuntu2) lucid; urgency=low ++ ++ * Update IcedTea build infrastructure (20091224). ++ * Explicitely build-depend on x11-xkb-utils (xkbcomp is needed by ++ xvfb-run). ++ ++ -- Matthias Klose Thu, 24 Dec 2009 12:43:00 +0100 ++ ++openjdk-6 (6b17~pre3-1ubuntu1) lucid; urgency=low ++ ++ * Upload to lucid. ++ ++ -- Matthias Klose Fri, 18 Dec 2009 10:40:05 +0100 ++ ++openjdk-6 (6b17~pre3-1) unstable; urgency=low ++ ++ * Update IcedTea build infrastructure (20091218). ++ * Install docs into the openjdk-6-jre-headless directory instead of ++ openjdk-6-jre. ++ ++ -- Matthias Klose Fri, 18 Dec 2009 10:00:08 +0100 ++ ++openjdk-6 (6b17~pre2-1ubuntu1) lucid; urgency=low ++ ++ * Update IcedTea build infrastructure (20091215). ++ * Fix cacao build on armel with current optimization defaults. ++ ++ -- Matthias Klose Tue, 15 Dec 2009 16:41:12 +0100 ++ ++openjdk-6 (6b17~pre2-1) unstable; urgency=low ++ ++ * Upload to unstable. ++ ++ -- Matthias Klose Mon, 09 Nov 2009 21:50:52 +0100 ++ ++openjdk-6 (6b17~pre2-0ubuntu3) lucid; urgency=low ++ ++ * Security updates: ++ - (CVE-2009-3728) ICC_Profile file existence detection information leak ++ (6631533). ++ - (CVE-2009-3885) BMP parsing DoS with UNC ICC links (6632445). ++ - (CVE-2009-3881) resurrected classloaders can still have children ++ (6636650). ++ - (CVE-2009-3882) Numerous static security flaws in Swing (findbugs) ++ (6657026). ++ - (CVE-2009-3883) Mutable statics in Windows PL&F (findbugs) (6657138). ++ - (CVE-2009-3880) UI logging information leakage (6664512). ++ - (CVE-2009-3879) GraphicsConfiguration information leak (6822057). ++ - (CVE-2009-3884) zoneinfo file existence information leak (6824265). ++ - (CVE-2009-2409) deprecate MD2 in SSL cert validation (Kaminsky) (6861062). ++ - (CVE-2009-3873) JPEG Image Writer quantization problem (6862968). ++ - (CVE-2009-3875) MessageDigest.isEqual introduces timing attack ++ vulnerabilities (6863503). ++ - (CVE-2009-3876, CVE-2009-3877) OpenJDK ASN.1/DER input stream parser ++ denial of service (6864911). ++ - (CVE-2009-3869) JRE AWT setDifflCM stack overflow (6872357). ++ - (CVE-2009-3874) ImageI/O JPEG heap overflow (6874643. ++ - (CVE-2009-3871) JRE AWT setBytePixels heap overflow (6872358). ++ * Update IcedTea build infrastructure (20091109). ++ * Use hs16 on armel. ++ ++ -- Matthias Klose Mon, 09 Nov 2009 17:48:43 +0100 ++ ++openjdk-6 (6b17~pre2-0ubuntu2) lucid; urgency=low ++ ++ * Don't use hs16 on armel and sparc. ++ ++ -- Matthias Klose Mon, 02 Nov 2009 15:33:00 +0100 ++ ++openjdk-6 (6b17~pre2-0ubuntu1) lucid; urgency=low ++ ++ * New code drop (b17). ++ * Bump hotspot to hs16. ++ * Update IcedTea build infrastructure (20091031). ++ * Set priority of default -jre and -jdk packages to optional. ++ * Fix binary-all to binary-any dependencies. Closes: #550680. ++ ++ -- Matthias Klose Sat, 31 Oct 2009 19:30:54 +0100 ++ ++openjdk-6 (6b16-1.6.1-2) unstable; urgency=medium ++ ++ * Build-depend on xulrunner-dev (>= 1.9.1.3-3). ++ ++ -- Matthias Klose Sun, 11 Oct 2009 21:34:48 +0200 ++ ++openjdk-6 (6b16-1.6.1-1ubuntu3) karmic; urgency=low ++ ++ [Matthias Klose] ++ * On armel and powerpc, build an additional VM using shark in the ++ openjdk-6-jre-zero package (java -shark ). Requires llvm-2.6. ++ * Hide the desktop menu entry for WebStart. LP: #222180. ++ * Don't provide java-virtual-machine anymore. ++ ++ [Edward Nevill] ++ * Avoid stack overflows in the arm interpreter. ++ ++ -- Matthias Klose Thu, 08 Oct 2009 12:41:46 +0200 ++ ++openjdk-6 (6b16-1.6.1-1ubuntu2) karmic; urgency=low ++ ++ * Support PKCS11 cryptography via NSS, now allowing import of all ++ certificates from ca-certificates. ++ * Remove Michael Koch from uploaders, request by himself. ++ * Add the doc dir symlink for openjdk-6-jre-zero when the package ++ is built with shark support. ++ ++ -- Matthias Klose Mon, 28 Sep 2009 21:55:08 +0200 ++ ++openjdk-6 (6b16-1.6.1-1ubuntu1) karmic; urgency=low ++ ++ * Fix dependency on the java bridge packages. ++ * debian/rules: Conditionalize stuff so that the recent release ++ is never mentioned. ++ * Remove obsolete patches in debian/patches. ++ * Rebuild on armel to fix up libffi for the soft float abi. ++ * For jaunty builds, fix IcedTeaPlugin failure to start with xulrunner 1.9.1 ++ (LP: #359407). ++ - debian/patches/icedtea-plugin-use-runtime-nsIProcess-IID.diff: Add. ++ - debian/rules: Apply it for jaunty builds. ++ * Use pulseaudio as default serviceprovider for ++ javax.sound.midi.MidiSystem and javax.sound.sampled.AudioSystem. ++ LP: #407299. ++ ++ -- Matthias Klose Sat, 26 Sep 2009 16:01:48 +0200 ++ ++openjdk-6 (6b16-1.6.1-1) unstable; urgency=low ++ ++ * Upload to Debian unstable. ++ ++ -- Matthias Klose Tue, 15 Sep 2009 02:17:03 +0200 ++ ++openjdk-6 (6b16-1.6.1-0ubuntu1) karmic; urgency=low ++ ++ * Update IcedTea6 to the 1.6.1 release. ++ * Work around GCC PR target/41327, build the JDK on s390 with -O2. ++ ++ -- Matthias Klose Thu, 10 Sep 2009 01:55:08 +0200 ++ ++openjdk-6 (6b16-1.6-1) unstable; urgency=low ++ ++ * Update IcedTea6 to the 1.6 release. ++ * Fix GCC build dependencies. ++ ++ -- Matthias Klose Wed, 09 Sep 2009 22:18:38 +0200 ++ ++openjdk-6 (6b16-1.6~pre2-1) unstable; urgency=low ++ ++ * Upload to unstable. ++ ++ -- Matthias Klose Fri, 28 Aug 2009 19:04:31 +0200 ++ ++openjdk-6 (6b16-1.6~pre2-0ubuntu1) karmic; urgency=low ++ ++ * Update IcedTea from the 1.6 release branch: ++ - Fix buffer overflow in debugger's socket handler (Kees Cook). ++ https://bugs.openjdk.java.net/show_bug.cgi?id=100103. LP: #409736. ++ - plugin fixes. ++ * Move the pulseaudio recommendation to a suggestion, don't build-depend ++ on pulseaudio. Closes: #539394. LP: #361408. ++ * Build for armv6 (on armel). ++ ++ [ Kees Cook ] ++ * debian/rules: Re-enable fortification and stack protector ++ (LP: #330713). ++ * Adding stack markings to the x86 assembly for not using executable ++ stack. LP: #419018. ++ ++ -- Matthias Klose Fri, 28 Aug 2009 18:51:34 +0200 ++ ++openjdk-6 (6b16-1.6~pre1-0ubuntu1) karmic; urgency=low ++ ++ * Test build (icedtea6-1.6 release branch). ++ ++ -- Matthias Klose Fri, 21 Aug 2009 19:44:42 +0200 ++ ++openjdk-6 (6b16~pre5-0ubuntu2) karmic; urgency=low ++ ++ * Add explicit build dependency on libgtk2.0-dev. ++ ++ -- Matthias Klose Thu, 06 Aug 2009 11:39:14 +0200 ++ ++openjdk-6 (6b16~pre5-0ubuntu1) karmic; urgency=low ++ ++ * Bump hotspot to hs14b16. ++ * Update IcedTea build infrastructure (20090805). ++ * patches/java-access-bridge-security.patch: Update. ++ * Build-depend on xulrunner-dev instead of xulrunner-1.9-dev on karmic. ++ * Don't recommend the jck fonts anymore, just suggest them; the appropriate ++ fonts are installed as dependencies of the language packs. ++ ++ -- Matthias Klose Thu, 06 Aug 2009 10:27:09 +0200 ++ ++openjdk-6 (6b16~pre4-0ubuntu7) karmic; urgency=low ++ ++ * Build using GCC-4.4 on sparc as well, require 4.4.1. ++ ++ -- Matthias Klose Thu, 23 Jul 2009 18:23:14 +0200 ++ ++openjdk-6 (6b16~pre4-0ubuntu6) karmic; urgency=low ++ ++ * Fix build failure building the zero VM. ++ ++ -- Matthias Klose Thu, 16 Jul 2009 09:49:36 -0400 ++ ++openjdk-6 (6b16~pre4-0ubuntu5) karmic; urgency=low ++ ++ [Matthias Klose] ++ * Update IcedTea build infrastructure (20090715). ++ * Tighten build dependency on llvm-dev. ++ ++ [Edward Nevill] ++ * Add armv4 compatibility. ++ ++ -- Matthias Klose Wed, 15 Jul 2009 15:40:44 -0400 ++ ++openjdk-6 (6b16~pre4-0ubuntu4) karmic; urgency=low ++ ++ [Edward Nevill] ++ * Added Bytecode Interpreter Generator. ++ * Added ARM templates for above. ++ * Removed old optimised ARM assebler. ++ * Added -g0 because of problems with ld linking -g. ++ * Changed alignment to 64 now that as bug is fixed. ++ ++ [Matthias Klose] ++ * Update IcedTea build infrastructure (20090710). ++ * Let the -jre package depend on the access-bridge package, not the ++ -jre-headless package. LP: #395074. ++ * Suggested by Ed Nevill: ++ - Pass -timeout:3 when running the jtreg testsuite on zero architectures. ++ - Pass -Xmx256M -vmoption:-Xmx256M on armel for the jtreg testsuite run. ++ * Tighten build dependency on llvm-dev. ++ ++ -- Matthias Klose Fri, 03 Jul 2009 18:32:50 +0200 ++ ++openjdk-6 (6b16~pre4-0ubuntu3) karmic; urgency=low ++ ++ * Update zero-port-opt patch on armel. ++ ++ -- Matthias Klose Wed, 24 Jun 2009 10:48:48 +0200 ++ ++openjdk-6 (6b16~pre4-0ubuntu2) karmic; urgency=low ++ ++ * Update IcedTea build infrastructure (20090623). ++ * Reapply the zero-port-opt patch on armel. ++ * Do not use the IPA Mona font family by default. Closes: #521233. ++ * Build cacao with -fno-strict-aliasing. ++ ++ -- Matthias Klose Tue, 23 Jun 2009 16:23:38 +0200 ++ ++openjdk-6 (6b16-4) unstable; urgency=medium ++ ++ * Build the zero binary package when building with shark. ++ * Build-depend on cpio. Closes: #532963. ++ ++ -- Matthias Klose Tue, 16 Jun 2009 07:52:19 +0200 ++ ++openjdk-6 (6b16-3) unstable; urgency=low ++ ++ * Update IcedTea build infrastructure (20090612). ++ * Install the libaccess-bridge-java* symlinks again. ++ * Build zero on ix86 architectures with JIT support (shark). To use the zero ++ build without shark, use the `-Xint' option to operate in interpreted-only ++ mode. ++ ++ -- Matthias Klose Fri, 12 Jun 2009 17:31:34 +0200 ++ ++openjdk-6 (6b16-2) unstable; urgency=low ++ ++ * Don't install libaccess-bridge-java* symlinks until ++ libaccess-bridge-java-jni is available on all architectures. ++ * Add missing build dependency on cacao-source. ++ ++ -- Matthias Klose Mon, 18 May 2009 14:02:59 +0200 ++ ++openjdk-6 (6b16-1) unstable; urgency=low ++ ++ * Upload to unstable, based in 6b16 and IcedTea 1.5. ++ ++ -- Matthias Klose Sun, 17 May 2009 23:02:46 +0200 ++ ++openjdk-6 (6b16~pre3-0ubuntu1) karmic; urgency=low ++ ++ * Update to hotspot hs14b15. ++ * Provide symlink for libjava-access-bridge-jni.so. LP: #375347. ++ ++ -- Matthias Klose Fri, 15 May 2009 00:41:24 +0200 ++ ++openjdk-6 (6b16~pre2-0ubuntu3) karmic; urgency=low ++ ++ * Update IcedTea build infrastructure (20090513). ++ * Fix build failure when xvfb-run doesn't work, trying to access a ++ non-existing directory. ++ ++ -- Matthias Klose Wed, 13 May 2009 23:01:23 +0200 ++ ++openjdk-6 (6b16~pre2-0ubuntu2) karmic; urgency=low ++ ++ * Add libffi-dev as architecture independent build dependency. ++ ++ -- Matthias Klose Mon, 11 May 2009 08:41:42 +0200 ++ ++openjdk-6 (6b16~pre2-0ubuntu1) karmic; urgency=low ++ ++ * Update to re-tagged code drop (b16). ++ * Update IcedTea build infrastructure (20090510). ++ * Remove patches integrated in IcedTea. ++ * Remove GCJ Web Plugin support. ++ * Remove build infrastructure to build additional VM's, integrated ++ in IcedTea. ++ * Stop building the openjdk-6-source-files package. ++ * README.Debian: Document using the different VM's. ++ * Use GCC-4.3 on sparc, ICE with GCC-4.4. ++ * Fix problem with the ARM assembler interpreter, when executing a 'new' ++ bytecode with a double on the top of the stack (Edward Nevill). ++ * Run the testsuite for the zero build on ix86 architectures. ++ ++ -- Matthias Klose Sun, 10 May 2009 23:37:42 +0200 ++ ++openjdk-6 (6b16~pre1-0ubuntu1) karmic; urgency=low ++ ++ * New code drop (b16). ++ * Update IcedTea build infrastructure (20090429). ++ * Merge changes from 6b14-1.4.1. ++ * Fix section names (using the java section). ++ * Remove all UTF-8 sequence definitions from the font configuration. ++ ++ -- Matthias Klose Wed, 29 Apr 2009 11:33:07 +0200 ++ ++openjdk-6 (6b14-1.4.1-0ubuntu9) jaunty; urgency=low ++ ++ * Reenable the testsuite (revert the change in last upload). ++ * Apply fix for the ARM bytecode interpreter (Edward Nevill). ++ ++ -- Matthias Klose Sat, 18 Apr 2009 11:24:27 +0200 ++ ++openjdk-6 (6b14-1.4.1-0ubuntu7) jaunty; urgency=low ++ ++ * Don't use some indian fonts with diverging font metrics for the ++ latin-1.UTF-8 encoding. LP: #289784. ++ * Disable running the testsuite for this build (no code changes compared ++ to the previous upload). ++ ++ -- Matthias Klose Tue, 14 Apr 2009 11:46:25 +0200 ++ ++openjdk-6 (6b14-1.4.1-0ubuntu6) jaunty; urgency=low ++ ++ * Fix native2ascii jdk test case, which let the jdk testsuite fail. ++ ++ -- Matthias Klose Fri, 10 Apr 2009 11:58:44 +0200 ++ ++openjdk-6 (6b14-1.4.1-0ubuntu5) jaunty; urgency=low ++ ++ [Matthias Klose] ++ * Update to the final CACAO 0.99.4 release. ++ * Security Vulnerability Fixes for OpenJDK: ++ - 6522586: Enforce limits on Font creation. ++ - 6536193: flaw in UTF8XmlOutput. ++ - 6610888: Potential use of cleared of incorrect acc in JMX Monitor. ++ - 6610896: JMX Monitor handles thread groups incorrectly. ++ - 6630639: lightweight HttpServer leaks file descriptors on no-data ++ connections. ++ - 6632886: Font.createFont can be persuaded to leak temporary files. ++ - 6636360: compiler/6595044/Main.java test fails with 64bit java on ++ solaris-sparcv9 with SIGSEGV. ++ - 6652463: MediaSize constructors allow to redefine the mapping of ++ standard MediaSizeName values. ++ - 6652929: Font.createFont(int,File) trusts File.getPath. ++ - 6656633: getNotificationInfo methods static mutable (findbugs). ++ - 6658158: Mutable statics in SAAJ (findbugs). ++ - 6658163: txw2.DatatypeWriter.BUILDIN is a mutable static (findbugs). ++ - 6691246: Thread context class loader can be set using JMX remote ++ ClientNotifForwarded. ++ - 6717680: LdapCtx does not close the connection if initialization fails. ++ - 6721651: Security problem with out-of-the-box management. ++ - 6737315: LDAP serialized data vulnerability. ++ - 6792554: Java JAR Pack200 header checks are insufficent. ++ - 6804996: JWS PNG Decoding Integer Overflow [V-flrhat2ln8]. ++ - 6804997: JWS GIF Decoding Heap Corruption [V-r687oxuocp]. ++ - 6804998: JRE GIF Decoding Heap Corruption [V-y6g5jlm8e1]. ++ * Add security patch for the lcms library. ++ * Add accessibility patches java-access-bridge-security.patch and ++ accessible-toolkit.patch. ++ * Merge fixes for testsuite failures from the IcedTea6 branch. ++ * Merge the proxy support for the plugin from the IcedTea6 branch. ++ * Merge http://icedtea.classpath.org/hg/release/icedtea6-1.4.1/rev/546ef0cdee06 ++ (TJ). LP: #344705. ++ * Add a Xb-Npp-Description for the IcedTea plugin. LP: #272010. ++ ++ [Edward Nevill] ++ * Put VFP back in - selects VFP / novfp autmatically ++ * More assembler optimisations ++ ++ -- Matthias Klose Thu, 09 Apr 2009 14:14:12 +0200 ++ ++openjdk-6 (6b14-1.4.1-0ubuntu4) jaunty; urgency=low ++ ++ * Disable the additional zero JVM on sparc. ++ * patches/hotspot/default/icedtea-includedb.patch: Add missing include in ++ openjdk/hotspot/src/share/vm/includeDB_core. ++ * Fix build failure of the zero VM on lpia with a fixed GCC. ++ ++ -- Matthias Klose Fri, 13 Mar 2009 16:39:27 +0100 ++ ++openjdk-6 (6b14-1.4.1-0ubuntu3) jaunty; urgency=low ++ ++ * Build the Zero/Shark VM as an additional JVM (call as `java -zero'). ++ ++ -- Matthias Klose Sat, 07 Mar 2009 20:54:28 +0100 ++ ++openjdk-6 (6b14-1.4.1-0ubuntu2) jaunty; urgency=low ++ ++ * Fix zero-port-opt patching (build failure on armel). ++ ++ -- Matthias Klose Thu, 05 Mar 2009 18:19:18 +0100 ++ ++openjdk-6 (6b14-1.4.1-0ubuntu1) jaunty; urgency=low ++ ++ * Update IcedTea to the 1.4.1 release. ++ * Build the Cacao VM as an additional JVM (call as `java -cacao'). ++ * Build in separate build directory. ++ ++ -- Matthias Klose Thu, 05 Mar 2009 15:16:02 +0100 ++ ++openjdk-6 (6b14-1.5~pre1-5) unstable; urgency=low ++ ++ * Fix build failure on armel. ++ * Require the final cacao-0.99.4 release. ++ * Add /usr/lib/jni to the library path. Closes: #517338. ++ ++ -- Matthias Klose Tue, 17 Mar 2009 09:37:20 +0100 ++ ++openjdk-6 (6b14-1.5~pre1-4) unstable; urgency=low ++ ++ * Disable the additional zero JVM on sparc. ++ * Fix casts in hotspot on s390. Closes: #518823. ++ * Add special flags for javac on s390 to work around a VM problem with bad ++ code generation during inlining. ++ * Run the testsuites for the default VM on all architectures. ++ * Update IcedTea (20090314). ++ ++ -- Matthias Klose Sat, 14 Mar 2009 18:29:49 +0100 ++ ++openjdk-6 (6b14-1.5~pre1-3) unstable; urgency=low ++ ++ * Don't configure the additional zero JVM with --enable-shark, currently ++ fails to build. ++ * Don't build the JDK when building the additional zero JVM. ++ ++ -- Matthias Klose Sat, 07 Mar 2009 21:11:16 +0100 ++ ++openjdk-6 (6b14-1.5~pre1-2) experimental; urgency=low ++ ++ * Build the Zero/Shark VM as an additional JVM (call as `java -zero'). ++ ++ -- Matthias Klose Fri, 06 Mar 2009 11:16:07 +0100 ++ ++openjdk-6 (6b14-1.5~pre1-0ubuntu1) jaunty; urgency=low ++ ++ * Update hotspot to 14.0-b10. ++ * Update IcedTea (20090305). ++ * Build the Cacao VM as an additional JVM (call as `java -cacao'). ++ * Build in separate build directory. ++ ++ -- Matthias Klose Thu, 05 Mar 2009 15:16:02 +0100 ++ ++openjdk-6 (6b14-0ubuntu17) jaunty; urgency=low ++ ++ [ Edward Nevill ] ++ * Remove VFP from asm loop ++ * Disble the mauve testsuite for armel. ++ ++ [Matthias Klose] ++ * Update IcedTea (20090302). ++ ++ -- Matthias Klose Mon, 02 Mar 2009 16:18:01 +0100 ++ ++openjdk-6 (6b14-0ubuntu16) jaunty; urgency=low ++ ++ * Regenerate auto files. ++ ++ -- Matthias Klose Wed, 18 Feb 2009 15:20:10 +0100 ++ ++openjdk-6 (6b14-0ubuntu15) jaunty; urgency=low ++ ++ [ Edward Nevill ] ++ * Added ARM assembler interpreter loop ++ * mauve and jtreg removed again for alpha release ++ ++ [Matthias Klose] ++ * Update IcedTea (20090218). ++ ++ -- Matthias Klose Wed, 18 Feb 2009 13:35:02 +0100 ++ ++openjdk-6 (6b14-0ubuntu14) jaunty; urgency=low ++ ++ * Configure with --disable-nio2 on armel as well. ++ ++ -- Matthias Klose Fri, 13 Feb 2009 10:13:55 +0100 ++ ++openjdk-6 (6b14-0ubuntu13) jaunty; urgency=low ++ ++ * Really configure with --disable-nio2. ++ ++ -- Matthias Klose Thu, 12 Feb 2009 17:26:43 +0100 ++ ++openjdk-6 (6b14-0ubuntu12) jaunty; urgency=low ++ ++ * Configure with --disable-nio2. ++ * Run mauve and jtreg testsuites on armel. ++ ++ -- Matthias Klose Wed, 11 Feb 2009 13:00:15 +0100 ++ ++openjdk-6 (6b14-0ubuntu11) jaunty; urgency=low ++ ++ [Edward Nevill] ++ * Performance improvements for the zero build (currently applied ++ on armel only). ++ ++ [Matthias Klose] ++ * Update IcedTea (20090210). ++ ++ -- Matthias Klose Tue, 10 Feb 2009 15:29:22 +0100 ++ ++openjdk-6 (6b14-0ubuntu10) jaunty; urgency=low ++ ++ * Explicitely remove PulseAudioMuteControl.java. ++ ++ -- Matthias Klose Mon, 26 Jan 2009 22:09:21 +0100 ++ ++openjdk-6 (6b14-0ubuntu9.1) jaunty; urgency=low ++ ++ * Test build. ++ ++ -- Matthias Klose Sun, 25 Jan 2009 17:03:51 +0100 ++ ++openjdk-6 (6b14-0ubuntu9) jaunty; urgency=low ++ ++ * Update IcedTea build infrastructure (20090125). ++ * Run the jtreg testsuite for cacao builds, save all test logs. ++ ++ -- Matthias Klose Sun, 25 Jan 2009 15:40:52 +0100 ++ ++openjdk-6 (6b14-0ubuntu8) jaunty; urgency=low ++ ++ * Fix merge error, don't apply patches twice. ++ ++ -- Matthias Klose Mon, 19 Jan 2009 01:15:19 +0100 ++ ++openjdk-6 (6b14-0ubuntu7) jaunty; urgency=low ++ ++ * debian/rules: Call dh_desktop. LP: #309999. ++ * Add dependency on libjpeg62 for the -headless package. LP: #318383. ++ * Test some jtreg tests which fail in samevm mode in a separate VM. ++ * Build all with -fno-stack-protector -U_FORTIFY_SOURCE. ++ * Include jtr files of failed tests in the -jdk package. ++ ++ -- Matthias Klose Mon, 19 Jan 2009 00:23:22 +0100 ++ ++openjdk-6 (6b14-0ubuntu6) jaunty; urgency=low ++ ++ * The -source package now contains all source files. Closes: #504568. ++ * The 6b14 build fixes the following security related issues (sun bug number, ++ CVE, description): ++ - 6588160, CVE-2008-5348: jaas krb5 client leaks OS-level UDP sockets. ++ - 6497740, CVE-2009-5349: Limit the size of RSA public keys. ++ - 6484091, CVE-2008-5350: FileSystemView leaks directory info. ++ - 4486841, CVE-2008-5351: UTF-8 decoder needed adhere to Unicode 3.0.1 ++ fixes. ++ - 6755943, CVE-2008-5352: JAR decompression should enforce stricter header ++ checks. ++ - 6734167, CVE-2008-5353: Calendar.readObject allows elevation of ++ privileges. ++ - 6733959, CVE-2008-5354: Insufficient checks for "Main-Class" manifest ++ entry in JAR files ++ - 6751322, CVE-2008-5356: Sun Java JRE TrueType Font Parsing Heap Overflow. ++ - 6733336, CVE-2008-5357: Crash on malformed font. ++ - 6766136, CVE-2008-5358: corrupted gif image may cause crash in java ++ splashscreen library. ++ - 6726779, CVE-2008-5359: ConvolveOp on USHORT raster can cause the JVM ++ crash. ++ - 6721753, CVE-2008-5360: File.createTempFile produces guessable file names. ++ - 6592792: Add com.sun.xml.internal to the "package.access" property in ++ $JAVA_HOME/lib/security/java.security. ++ * Regenerate the control file. ++ ++ -- Matthias Klose Tue, 13 Jan 2009 15:04:36 +0100 ++ ++openjdk-6 (6b14-0ubuntu2~ppa1) intrepid; urgency=low ++ ++ * Upload to the OpenJDK PPA for intrepid. ++ ++ -- Matthias Klose Tue, 13 Jan 2009 13:28:38 +0100 ++ ++openjdk-6 (6b14-0ubuntu5) jaunty; urgency=low ++ ++ * Update IcedTea build infrastructure (20090113). ++ * Rebuild with updated nss/nspr packages. ++ * Update debug patches. ++ * debian/patches/nonreparenting-wm.diff: If the _JAVA_AWT_WM_NONREPARENTING ++ environment variable is set, disable all workarounds causing blank windows ++ in non-reparentizing window managers (Bernhard R. Link). Closes: #508650. ++ * Fix location of plugin for Debian. Closes: #505726. ++ * Let the -jdk package provide java-compiler. Closes: #507641. ++ ++ -- Matthias Klose Tue, 13 Jan 2009 10:18:44 +0100 ++ ++openjdk-6 (6b14-0ubuntu4) jaunty; urgency=low ++ ++ * Use a default jvm.cfg not only for java, but for all jdk tools. ++ LP: #288616. ++ * Update IcedTea build infrastructure (20081223). ++ ++ -- Matthias Klose Tue, 23 Dec 2008 09:24:23 +0100 ++ ++openjdk-6 (6b14-0ubuntu3) jaunty; urgency=low ++ ++ * Update IcedTea build infrastructure (20081217). ++ * Add support for PARISC. ++ * Use a default jvm.cfg if the jvm.cfg doesn't yet exist after unpacking ++ the runtime package. LP: #288616. ++ ++ -- Matthias Klose Wed, 17 Dec 2008 09:58:26 +0100 ++ ++openjdk-6 (6b14~pre1-0ubuntu2) jaunty; urgency=low ++ ++ * Install hotspot tarball in -source-files package. ++ * Fix build failure on sparc. ++ ++ -- Matthias Klose Fri, 05 Dec 2008 09:43:51 +0100 ++ ++openjdk-6 (6b14~pre1-0ubuntu1) jaunty; urgency=low ++ ++ * New code drop (b14). ++ * Update IcedTea build infrastructure (20081204). ++ ++ -- Matthias Klose Thu, 04 Dec 2008 11:40:56 +0100 ++ ++openjdk-6 (6b13~pre2-0ubuntu2) jaunty; urgency=low ++ ++ * Update IcedTea build infrastructure (20081203). ++ - Fix build failures on zero based architectures. ++ * Add build dependency on libxrender-dev. ++ * Don't use fastjar on ia64, working around a build failure. ++ ++ -- Matthias Klose Wed, 03 Dec 2008 18:43:23 +0100 ++ ++openjdk-6 (6b13~pre2-0ubuntu1) jaunty; urgency=low ++ ++ * Update IcedTea build infrastructure (20081202). ++ - Add Dec 3 OpenJDK security patches ++ * Build with --with-hotspot-build, update patches for this config. ++ ++ -- Matthias Klose Wed, 03 Dec 2008 01:05:54 +0100 ++ ++openjdk-6 (6b13~pre1-0ubuntu4) jaunty; urgency=low ++ ++ * Update IcedTea build infrastructure (20081122). ++ - Fixes for the IcedTeaPlugin. LP: #300254. ++ ++ -- Matthias Klose Sat, 22 Nov 2008 10:42:10 +0100 ++ ++openjdk-6 (6b13~pre1-0ubuntu3) jaunty; urgency=low ++ ++ * Fix versioned conflict on icedtea-gcjwebplugin. LP: #284299. ++ * Update IcedTea build infrastructure (20081121). ++ - Fixes for the IcedTeaPlugin. ++ * Configure with pulseaudio in jaunty. ++ ++ -- Matthias Klose Fri, 21 Nov 2008 07:46:10 +0100 ++ ++openjdk-6 (6b13~pre1-0ubuntu2) jaunty; urgency=low ++ ++ * Update IcedTea build infrastructure (20081117). ++ * Use openjdk-6 as stage1 compiler on armel for a faster build. ++ ++ -- Matthias Klose Mon, 17 Nov 2008 18:43:17 +0100 ++ ++openjdk-6 (6b13~pre1-0ubuntu1) jaunty; urgency=low ++ ++ * New code drop (b13). ++ - In the langtools area, besides a few miscellaneous bug fixes (6760834, ++ 6725036, 6657499), all the langtools regression tests now pass out of ++ the box (6728697, 6707027) and if using the most recent version of ++ jtreg, the langtools regression tests can be run in the much faster ++ "same vm" mode of jtreg, enabled with the -s option (6749967, 6748541, ++ 6748546, 6748601, 6759775, 6759795, 6759796, 6759996, 6760805, 6760930). ++ - Gervill update, including applying a patch from IcedTea (6758986, ++ 6748247, 6748251). ++ - Publishing a few dozen additional existing regression tests as open ++ source (6601457, 6759433, 6740185). ++ - JMX and monitoring fixes (6651382, 6616825, 6756202, 6754672). ++ - Man page updates (6757036, 6392810, 6504867, 6326773). ++ - Assorted other fixes (6746055, 6621697, 6756569, 6356642, 6761678). ++ * Update IcedTea build infrastructure (20081111). ++ - Fix freeze in midi app, LP: #275672. ++ - Fixes in the IcedTeaPlugin: LP: #282570, LP: #282570, LP: #285729, ++ LP: #291377, LP: #37330, LP: #239533. ++ - Fix vertical text metrics with freetype scaler. LP: #289784. ++ * Build-depend on ecj-gcj instead of ecj on architectures using ++ gij/gcj as the bootstrap system. ++ * Fixed in 6b12: Stack overflow running Kea. LP: #244731. ++ ++ -- Matthias Klose Tue, 11 Nov 2008 12:39:16 +0100 ++ ++openjdk-6 (6b12-1~exp1) experimental; urgency=low ++ ++ * Update IcedTea build infrastructure (20081025). ++ ++ -- Matthias Klose Sat, 25 Oct 2008 23:35:14 +0200 ++ ++openjdk-6 (6b12-0ubuntu6) intrepid; urgency=low ++ ++ * Make the dependency on ca-certificates-java unversioned. ++ * Merge from IcedTea: ++ - plugin/icedtea/netscape/javascript/JSObject.java: Make ++ long constructor public. ++ ++ -- Matthias Klose Fri, 24 Oct 2008 23:06:32 +0200 ++ ++openjdk-6 (6b12-0ubuntu5) intrepid; urgency=low ++ ++ * Update IcedTea build infrastructure (20081024). ++ - Add --pkgversion= configure option. ++ - IcedTeaPlugin fixes. ++ - Fix xjc regressions. ++ * openjdk-jre-headless: Depend on ca-certificates-java. ++ * Configure with --pkgversion= to encode the package ++ version in the -version output and in vm dumps. ++ * cacao: Handle VM options Xverify:all and Xverify:none. ++ ++ -- Matthias Klose Fri, 24 Oct 2008 13:39:29 +0200 ++ ++openjdk-6 (6b12-0) experimental; urgency=low ++ ++ * Upload to experimental. ++ * Pretend the availability of at least 384MB RAM; better swap on the ++ buildds than failing the build. ++ ++ -- Matthias Klose Sun, 19 Oct 2008 11:15:28 +0200 ++ ++openjdk-6 (6b12-0ubuntu4) intrepid; urgency=low ++ ++ * Update IcedTea build infrastructure (20081019). ++ - plugin fix (Make applet size factors doubles instead of ints). ++ * Don't fail the build when the jtreg summary is missing. ++ * openjdk-6-source-files: Fix priority and section of the binary package. ++ * Fix section of the plugin package. ++ ++ -- Matthias Klose Sun, 19 Oct 2008 09:29:03 +0200 ++ ++openjdk-6 (6b12-0ubuntu3) intrepid; urgency=low ++ ++ * Update IcedTea build infrastructure (20081018). ++ - Fix LiveConnect issues in the web plugin. LP: #282762. ++ - Fail the build, if patches don't apply. ++ * Show xvfb and xauth failures in the build log, when running the testsuites. ++ * Kill processes which still hang after running the testsuite. Closes: #493339. ++ * Run the testsuite in parallel, reducing build time. ++ * openjdk-headless: Depend instead of recommending tzdata-java. ++ ++ -- Matthias Klose Sat, 18 Oct 2008 17:15:14 +0200 ++ ++openjdk-6 (6b12-0ubuntu2) intrepid; urgency=low ++ ++ * icedtea6-plugin: Versioned conflict with icedtea-gcjwebplugin. LP: #184299. ++ * Don't configure --with-alt-jar=/usr/bin/fastjar on hotspot archs ++ and cacao builds. Working around a problem generating rt.jar. Manually ++ add the netscape/javascript files in zero builds. ++ * Update IcedTea build infrastructure (20081017). ++ - configury updates. ++ - IcedTeaPlugin update. ++ * openjdk-6-jdk: Suggest visualvm. ++ * Remove cacao patches found in cacao 0.99.4~20081012. ++ ++ -- Matthias Klose Fri, 17 Oct 2008 13:25:45 +0200 ++ ++openjdk-6 (6b12-0ubuntu1) intrepid; urgency=low ++ ++ * Update IcedTea to the 1.3.0 release. ++ * Apply upstream patch to fix upstream issue 6758986. ++ ++ -- Matthias Klose Wed, 15 Oct 2008 19:49:05 +0000 ++ ++openjdk-6 (6b12~pre2-1) experimental; urgency=low ++ ++ * Upload to experimental. ++ ++ -- Matthias Klose Sun, 12 Oct 2008 11:16:03 +0000 ++ ++openjdk-6 (6b12~pre2-0ubuntu3) intrepid; urgency=low ++ ++ * Update IcedTea build infrastructure (20081015). ++ * Add netscape/javascript class files to rt.jar. LP: #282762. ++ * Be more verbose in the icedtea6-plugin package description. ++ * Fix some lintian warnings. ++ ++ -- Matthias Klose Wed, 15 Oct 2008 12:45:59 +0200 ++ ++openjdk-6 (6b12~pre2-0ubuntu2) intrepid; urgency=low ++ ++ * Update IcedTea build infrastructure (20081012). ++ * When building as cacao, build a cacao-oj6-plugin package. ++ * When building as cacao, run the testsuite on amd64, i386, sparc. ++ * Add finnish translations to the desktop files (Timo Jyrinki). ++ Closes: #494354. ++ * Fix font paths (Rob Gom). Closes: #495988. ++ * Reenable running the testsuite. ++ * Fix pulse-java build failure on amd64. ++ ++ -- Matthias Klose Sun, 12 Oct 2008 13:05:49 +0200 ++ ++openjdk-6 (6b12~pre2-0ubuntu1) intrepid; urgency=low ++ ++ * Update IcedTea build infrastructure (20081011). ++ * debian/copyright: Add copyright notice for pulseaudio sound files. ++ * Add support to build with pulseaudio support. ++ ++ -- Matthias Klose Sat, 11 Oct 2008 15:44:50 +0200 ++ ++openjdk-6 (6b12~pre1-0ubuntu5) intrepid; urgency=low ++ ++ * Move the plugin from the -jre package into the -plugin package. ++ ++ -- Matthias Klose Fri, 10 Oct 2008 06:55:34 +0000 ++ ++openjdk-6 (6b12~pre1-0ubuntu4) intrepid; urgency=low ++ ++ * Update IcedTea build infrastructure (20081009). ++ * Configure with --enable-liveconnect, build an icedtea6-plugin package. ++ Thanks to Deepak Bhole. ++ LP: #207064, #195783, #199680, #202762, #220241, #242263, #242496, ++ #242496, #250292, #269885, #274356, #274360, #259313. ++ * Build an icedtea6-plugin package. ++ * Merge changes from 6b11-9 packaging. ++ * Build a openjdk-6-source-files packages (used as a build dependency ++ of cacao-oj6). ++ * Build depend on cacao-source for cacao-oj6 builds. ++ ++ -- Matthias Klose Thu, 09 Oct 2008 15:04:27 +0200 ++ ++openjdk-6 (6b12~pre1-0ubuntu3) intrepid; urgency=low ++ ++ * Update IcedTea build infrastructure (20080915). ++ * Reapply: openjdk-6-jre-headless: Make libnss-mdns a suggestion ++ instead of a recommendation. LP: #261847. ++ * Build-depend against fixed fastjar. LP: #267177. ++ ++ -- Matthias Klose Mon, 15 Sep 2008 20:16:51 +0200 ++ ++openjdk-6 (6b12~pre1-0ubuntu2) intrepid; urgency=low ++ ++ * Update the icedtea-hotspot patch to b12, fixing build failures ++ on zero archs (ia64, powerpc). ++ ++ -- Matthias Klose Sat, 13 Sep 2008 11:48:44 +0200 ++ ++openjdk-6 (6b12~pre1-0ubuntu1) intrepid; urgency=low ++ ++ * New code drop (b12). ++ * Update IcedTea build infrastructure (20080912). ++ ++ -- Matthias Klose Sat, 13 Sep 2008 00:41:42 +0200 ++ ++openjdk-6 (6b11-6) unstable; urgency=low ++ ++ * Set minimum heap size independent of available memory for cacao builds. ++ * Link the wrapper tools with -rdynamic for cacao builds. ++ * Update cacao based builds: ++ - Update cacao to 0.99.3, remove patches applied upstream. ++ - Fix build failures on mipsel-linux. ++ * Allow setting of the bootstrap compiler per architecture. ++ * Configure --with-alt-jar set to fastjar to speed up builds. ++ * Update IcedTea build infrastructure (20080815), remove local patches ++ integrated in IcedTea. ++ - Make use of unsigned/signed types explicit. ++ - Fix PR icedtea/184, adding support for returning floats and doubles ++ for zero builds. ++ - Fix Fix PR icedtea/181, class type checks. ++ ++ -- Matthias Klose Fri, 15 Aug 2008 16:59:48 +0000 ++ ++openjdk-6 (6b11-5) unstable; urgency=low ++ ++ * debian/rules (stamps/mauve-build): Configure with --host and --build. ++ * openjdk-6-jdk: Recommend libxt-dev (jawt_md.h header includes). ++ * Fix build issues on s390 (size_t is unsigned long). ++ ++ -- Matthias Klose Sun, 03 Aug 2008 20:05:44 +0200 ++ ++openjdk-6 (6b11-4) unstable; urgency=low ++ ++ * Update IcedTea build infrastructure (20080801). ++ - Fix typo, causing build failure on mipsel. ++ ++ -- Matthias Klose Fri, 01 Aug 2008 01:25:51 +0200 ++ ++openjdk-6 (6b11-3) unstable; urgency=low ++ ++ * Include the name of the VM used in the package description. ++ * Update IcedTea build infrastructure (20080731). ++ * Build for alpha, arm, mips and mipsel. ++ * Switch from libcupsys2(-dev) to libcups2(-dev) for newer releases. ++ (Closes: #492384) ++ * Add symlinks for header files found in JAVA_HOME/include/linux in ++ JAVA_HOME/include. ++ * openjdk-6-jre: Don' recommend lesstif2 anymore. ++ ++ -- Matthias Klose Thu, 31 Jul 2008 17:16:59 +0200 ++ ++openjdk-6 (6b11-2ubuntu1) intrepid; urgency=low ++ ++ * xvfb seems to be broken when running with intrepid and an intrepid kernel. ++ Nevertheless, run xvfb-run -s "-extension GLX" on the buildds (hardy kernels). ++ * Stop the buildwatch process after the testsuite finishes. ++ ++ -- Matthias Klose Fri, 25 Jul 2008 12:33:44 +0200 ++ ++openjdk-6 (6b11-2) unstable; urgency=low ++ ++ * Update IcedTea build infrastructure (20080724). ++ * debian/buildwatch.sh: Track long building files with no visible output. ++ * Fix build failure when not running the mauve testsuite. ++ * Disable running the testsuite for cacao builds (leaving processes around). ++ * Don't set a soversion for the cacao libjvm. ++ * Configure with --host and --build. ++ * Call xvfb-run with -s "-extension GLX". ++ ++ -- Matthias Klose Thu, 24 Jul 2008 22:25:30 +0200 ++ ++openjdk-6 (6b11-1ubuntu2) intrepid; urgency=low ++ ++ * Update IcedTea build infrastructure (20080724). ++ * debian/buildwatch.sh: Track long building files with no visible output. ++ * Fix build failure when not running the mauve testsuite. ++ * Disable running the testsuite for cacao builds (leaving processes around). ++ * Don't set a soversion for the cacao libjvm. ++ * Configure with --host and --build. ++ ++ -- Matthias Klose Thu, 24 Jul 2008 17:58:53 +0200 ++ ++openjdk-6 (6b11-1ubuntu1) intrepid; urgency=low ++ ++ * Regenerate the control file. ++ ++ -- Matthias Klose Wed, 23 Jul 2008 00:42:16 +0200 ++ ++openjdk-6 (6b11-1) unstable; urgency=low ++ ++ * New code drop (b11). ++ * Update IcedTea build infrastructure (20080721). ++ * debian/generate-dfsg.sh: Update for b11. ++ * debian/patches/const_strings.patch, debian/patches/issue-6659207.diff: ++ Remove, applied upstream. ++ * debian/generate-debian-orig.sh: Fix /proc check. ++ * debian/control.in: Loosen dependency of -jre-lib on -jre. ++ * Support `nodocs' in DEB_BUILD_OPTIONS. ++ * Remove build-dependency on lesstif2-dev. ++ * Bootstrap using gcj on all archs; the 6b10dfsg-2 packages are broken. ++ * Run the jtreg harness in a virtual X environment. ++ * Install javazic.jar in the jre-lib package. ++ * Don't run the testsuite on arm; the build already takes days; only ++ run the testsuite on hotspot archs and powerpc. ++ ++ -- Matthias Klose Wed, 23 Jul 2008 00:28:12 +0200 ++ ++openjdk-6 (6b10dfsg-2) unstable; urgency=low ++ ++ * Update IcedTea build infrastructure (20080714). ++ * On arm configure cacao builds with --enable-softfloat. ++ * Don't run the mauve testsuite for cacao builds (hangs the test runner ++ process). ++ * Don't configure cacao builds with --enable/-disable-zero. ++ * Don't remove alternatives on upgrade. ++ * debian/copyright: Add license for NanoXML. ++ * Do recommends ttf-indic-fonts instead of ttf-indic-fonts-core for ++ lenny and sid. Closes: #490619. ++ * Ignore errors when registering the jar binfmt. The alternative may ++ already be registered by another JVM. Closes: #490594. ++ * openjdk-6-jre-headless: Depend on ttf-dejavu-core instead of ttf-dejavu. ++ * On amd64, i386 and sparc, bootstrap using openjdk. ++ ++ -- Matthias Klose Mon, 14 Jul 2008 19:41:19 +0200 ++ ++openjdk-6 (6b10dfsg-1ubuntu2) intrepid; urgency=low ++ ++ * Update IcedTea build infrastructure (20080702). ++ - Do not configure --with-shark by default. ++ - Update license headers from jdk7. ++ * Start debian/buildwatch.sh for armel and sparc builds as well. ++ * Allow configuration with --with-cacao. ++ ++ -- Matthias Klose Mon, 30 Jun 2008 13:30:06 +0200 ++ ++openjdk-6 (6b10dfsg-1ubuntu1) intrepid; urgency=low ++ ++ * The rebuilt upstream tarball now has GPL-compatible free software licenses ++ and documented copyrights and licenses. LP: #238569. ++ * Fixed name of the xulrunner-1.9-javaplugin.so in the .jinfo file. ++ LP: #226911. ++ * Ignore errors during activation of class data sharing. Closes: #490617, ++ #490672. ++ ++ -- Matthias Klose Mon, 30 Jun 2008 13:30:06 +0200 ++ ++openjdk-6 (6b10dfsg-1) unstable; urgency=low ++ ++ * Rebuild the upstream tar ball: ++ - Remove the jscheme jar files. ++ - Apply the patch from Iris Clark (Sun) for the copyright headers ++ (http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=141#c4). ++ - Remove jdk/src/share/classes/java/lang/instrument/package.html. ++ - Upload to main. ++ * Update IcedTea build infrastructure (20080628). ++ * Build an openjdk-6-dbg package. ++ * patches/gcc-mtune-generic.diff: Fix typo. ++ * openjdk-6-jre: Depend on ttf-dejavu. ++ * debian/copyright: Add two more copyright holders, not directly ++ mentioned in the third party readme. ++ Replace Apache 2.0 license with pointer to common-licenses. ++ * Fix more lintian warnings. ++ * debian/sun_java_app.xpm: Downsize icon to 32x32 pixels. ++ * Build-depend/depend on rhino. ++ ++ -- Matthias Klose Sun, 29 Jun 2008 17:42:51 +0200 ++ ++openjdk-6 (6b10-1) unstable; urgency=low ++ ++ * New code drop (b10). ++ - Still some non-compliant license headers found in ++ openjdk/corba/src/share/classes/com/sun/tools/corba/se/idl. ++ - Upload to non-free. ++ * Update IcedTea build infrastructure (20080603). ++ * In fontconfig.properties, fix Korean font names and add paths to the Luxi ++ fonts for Motif. Add fonts for Indic languages. ++ * Install compilefontconfig.jar in openjdk-6-jre-lib package. ++ * Run the testsuites of hotspot, langtools and jdk. ++ * Include the jscheme-5.0 sources in the tarball, mention the jscheme ++ licenses in debian/copyright. ++ * Use the certificates provided by the ca-certificates-java package. ++ * More fontconfig updates (Arne Goetje). ++ * Fix some lintian warnings. ++ * Correct build-dependency for openjdk based bootstraps. ++ ++ -- Matthias Klose Wed, 04 Jun 2008 01:46:52 +0200 ++ ++openjdk-6 (6b09-1~pre1) unstable; urgency=low ++ ++ [ Matthias Klose ] ++ * New code drop (b09). ++ * Update IcedTea build infrastructure (20080528). ++ - Add missing color profiles. LP: #225174. ++ - Moved system properties defined in hotspot to TrustManagerFactoryImpl. ++ LP: #224455. ++ * 6636469_v4.diff: Remove, committed in IcedTea. ++ * debian/control: Update Vcs-* attributes. ++ * debian/JB-jre-headless.p*.in: Fix update-binfmts calls. ++ * Compress the man pages, fixing the slave symlinks of the alternatives. ++ * javaws.desktop: Add `%u' to the Exec key, remove -viewer option. ++ * openjdk-6-jre-headless: Recommends libnss-mdns. ++ * openjdk-6-jre-headless: Warn about unmounted /proc file system. ++ * debian/JB-jre.mime.in: Remove the -viewer option from command (Tan Rui ++ Boon). ++ * Add a `docs' symlink pointing to /usr/share/doc/openjdk-6. LP: #218405. ++ * Set maintainer to the team list. ++ * Add copyright notices for patches and generated files. ++ * Add helper scripts to modify upstream tarball and generate the debian ++ tarball. ++ * Fix names for browser alternatives in jinfo file, set browser_plugin_dirs ++ unconditionally. ++ * Recommend the ttf-wqy-zenhei font instead of ttf-arphic-uming, if the ++ latter is available in Truetype Collection (TTC) format only, add the ++ fontconfig changes as a patch. ++ * Make the cjk font packages configurable in the control file. ++ * Use GCC-4.3 on all platforms where available. ++ * Install a config file swing.properties, allowing a user to change ++ the default look and feel. LP: #229112. ++ * When trying to determine the executable name reading /proc/self/exe, ++ discard known prefixes used for unionfs mounts. LP: #224110. ++ * Explicitely configure with --disable-zero on hotspot architectures. ++ * Add fix for issue 6659207, access violation in CompilerThread0. ++ Addresses #478560. Needs checking: LP: #229207. ++ * Disable building the docs on ia64, powerpc and sparc, we don't build ++ architecture independent packages on these architectures. ++ * Explicitely configure --with-parallel-jobs, needed by the updated IcedTea. ++ * Backport the linux-sparc patches, enable building on sparc. LP: #154080. ++ * Don't use an absolute path calling the compiler. ++ * Replace the OpenJDK version in desktop and menu files. ++ * Install menu files. ++ * Install openjdk-6-java.desktop in -jre, instead of -jre-headless. ++ ++ -- Matthias Klose Wed, 14 May 2008 08:49:54 +0200 ++ ++openjdk-6 (6b08-1) unstable; urgency=low ++ ++ [ Torsten Werner ] ++ * first upload to Debian (Closes: #452750) ++ * Regenerate debian/control. ++ * Switch to bzip2 package compression in Debian but leave lzma compression ++ in Ubuntu. ++ * Temporarily downgrade Depends: tzdata-java to Recommends until the package ++ becomes available in Debian. ++ * Add myself to Uploaders. ++ * Do not install extras license file in openjdk-6-jre-lib. ++ * Add patch shebang.diff to fix a lintian warning. ++ * Install openjdk-6-java.desktop into the correct binary package. ++ * Improve some package descriptions. ++ * Remove some empty directories from binary packages. ++ * Install README.Debian in every binary package and give it some useful ++ content. ++ * Install java-rmi.cgi in package openjdk-6-jre-headless and mention it in ++ README.Debian. ++ * Install /usr/bin/jexec via update-alternatives. ++ * Downgrade Depends: java-common (>= 0.28). ++ * Add patch jexec.diff to make the jexec binary executable without ++ specifying an absolute path. ++ * Add Build-Depends: xauth and xfonts-base for mauve. ++ * Update and install the lintian override files. ++ * Replace all occurences of binary:Version and source:Version by ++ Source-Version to be compatible with Ubuntu release 6.06. ++ * Remove Conflicts: gcjwebplugin. ++ ++ [ Michael Koch ] ++ * Fixed Vcs-Bzr and Vcs-Browser fields. ++ * Removed Encoding entry from all debian/*.desktop.in files. ++ ++ [ Matthias Klose ] ++ * Make Java Full Screen Exclusive Mode work again with Xorg Server 1.3 ++ and above (Dan Munckton). LP: #154613 (Java bug 6636469). ++ * Configure with --enable-zero on all archs except amd64, i386, lpia. ++ * Update IcedTea build infrastructure. ++ * Handle binary files in updates of the build infrastructure. ++ * Enable bootstrap/normal builds per architecture. ++ * javaws-wrapper.sh: Use readlink --canonicalize. LP: #211515. ++ * binfmt-support: Handle /usr/share/binfmts/jar as a slave symlink of ++ the jexec alternative, install the binfmt file in the jre libdir. ++ Use the jexec alternative in the binfmt file. ++ * JB-jre-headless.postinst.in: Remove sun-java6 specific chunks. ++ * Differentiate between the openjdk version required as dependency and ++ as build dependency. ++ ++ -- Torsten Werner Wed, 09 Apr 2008 10:12:55 +0200 ++ ++openjdk-6 (6b08-0ubuntu1) hardy; urgency=low ++ ++ * New code drop (b08). ++ * Update IcedTea build infrastructure. ++ * Move binfmt-support references from -jre to -jre-headless package. ++ * Don't fail on purge, if /var/lib/binfmts/openjdk-6 is missing. LP: #206721. ++ * Only use the basename for icons in desktop files. LP: #207413. ++ * Install javaws(1). LP: #191297. ++ * Install a wrapper script for javaws, which calls `javaws -viewer' if no ++ arguments are given (or else starting javaws from the desktop menu ++ would not do anything). ++ * debian/JB-web-start.applications.in: Remove the -viewer option from command. ++ ++ -- Matthias Klose Fri, 28 Mar 2008 16:10:32 +0000 ++ ++openjdk-6 (6b07-0ubuntu1) hardy; urgency=low ++ ++ * New code drop (b07). ++ * Update IcedTea build infrastructure. ++ * debian/copyright: Update to OpenJDK Trademark Notice v1.1. ++ ++ -- Matthias Klose Sat, 22 Mar 2008 22:41:42 +0100 ++ ++openjdk-6 (6b06-0ubuntu12) hardy; urgency=low ++ ++ * Update icon locations in menu files. ++ * openjdk-6-jre-headless: Provide java-virtual-machine. LP: #189953. ++ * openjdk-6-jre-headless: Add a conflict to gcjwebplugin; for openjdk ++ use the icetea-gcjwebplugin, for gij the java-gcj-compat-plugin. ++ ++ -- Matthias Klose Sat, 22 Mar 2008 20:12:41 +0100 ++ ++openjdk-6 (6b06-0ubuntu11) hardy; urgency=low ++ ++ * Update IcedTea to 20080319. ++ * Move rt.jar into the openjdk-6-jre-headless package; sun/awt/X11 ++ class files differ between amd64 and i386. ++ * Install all desktop files in /usr/share/applications. ++ ++ -- Matthias Klose Wed, 19 Mar 2008 23:53:36 +0100 ++ ++openjdk-6 (6b06-0ubuntu10) hardy; urgency=low ++ ++ * Remove print-lsb-release.patch, forwarded to IcedTea. ++ * Fix IcedTea configure to detect libffi without pkg-config. ++ ++ -- Matthias Klose Wed, 12 Mar 2008 20:28:55 +0100 ++ ++openjdk-6 (6b06-0ubuntu9) hardy; urgency=low ++ ++ * Build-depend on libffi4-dev on architectures other than amd64, i386, lpia. ++ * Install icons in /usr/share/pixmaps, not /usr/share/icons. ++ * debian/rules: Call dh_icons. ++ ++ -- Matthias Klose Wed, 12 Mar 2008 11:34:44 +0100 ++ ++openjdk-6 (6b06-0ubuntu8) hardy; urgency=low ++ ++ * Tighten dependency on java-common. ++ * debian/copyright: Include trademark notice. ++ * debian/control: Mention IcedTea in the package descriptions. ++ * Update IcedTea to 20080311. ++ ++ -- Matthias Klose Tue, 11 Mar 2008 21:39:27 +0100 ++ ++openjdk-6 (6b06-0ubuntu7) hardy; urgency=low ++ ++ * Build-depend on unzip. ++ ++ -- Matthias Klose Fri, 07 Mar 2008 16:47:43 +0100 ++ ++openjdk-6 (6b06-0ubuntu6) hardy; urgency=low ++ ++ * Build-depend on zip. ++ ++ -- Matthias Klose Fri, 07 Mar 2008 16:16:52 +0100 ++ ++openjdk-6 (6b06-0ubuntu5) hardy; urgency=low ++ ++ * debian/mauve_tests: javax.swing.text.html.HTML.ElementTagAttributeTest, ++ removed, tries to access the network. ++ * debian/README.alternatives.in: Update for --jre-headless. ++ * debian/rules: Fix paths for OpenJDK based bootstrap. ++ * Compress packages using lzma. ++ * Drop build dependency on zip, unzip. ++ * Fix build infrastructure to bootstrap with OpenJDK instead of ecj. ++ * Do not build the gcjwebplugin from the OpenJDK source. ++ ++ -- Matthias Klose Fri, 07 Mar 2008 13:53:15 +0100 ++ ++openjdk-6 (6b06-0ubuntu4) hardy; urgency=low ++ ++ * Don't register a java-rmi.cgi alternative in /usr/bin. ++ ++ -- Matthias Klose Thu, 06 Mar 2008 17:59:35 +0100 ++ ++openjdk-6 (6b06-0ubuntu3) hardy; urgency=low ++ ++ * Split out a openjdk-6-jre-headless package, depend on java-common, ++ supporting update-java-alternatives --jre-headless. ++ * Make openjdk-6-jre-headless and openjdk-6-jre architecture any. ++ * New package openjdk-6-jre-lib (arch all). ++ * Remove openjdk-6-bin package. ++ * debian/patches/openjdk-ubuntu-branding.patch: New patch. ++ * Install images/cursors/cursors.properties as a config file. ++ * Do not compress demos and examples in the -demo package. ++ * openjdk-6-jre: Add dependency on libxinerama1. ++ * Update IcedTea to 20080305. ++ * Don't generate cacerts ourself, but depend on ca-certificates, ++ fix location of javax.net.ssl.trustStore property. ++ * Build-depend on mauve and xvfb; run some mauve tests (the list of ++ tests taken from the Fedora package). ++ * Keep a backup of the `generated' directory; some files are regenerated ++ differently, increasing the size of the diff. ++ ++ -- Matthias Klose Thu, 06 Mar 2008 10:05:39 +0100 ++ ++openjdk-6 (6b06-0ubuntu2) hardy; urgency=low ++ ++ * Re-add gawk and pkg-config as build dependencies. ++ ++ -- Matthias Klose Tue, 04 Mar 2008 12:20:21 +0100 ++ ++openjdk-6 (6b06-0ubuntu1) hardy; urgency=low ++ ++ * New code drop (b06). ++ * Remove java-access-bridge tarball, use an externally built package. ++ * Update IcedTea to 20080304. ++ * Don't use any compiler flags from the environment. ++ ++ -- Matthias Klose Tue, 04 Mar 2008 09:16:59 +0100 ++ ++openjdk-6 (6b05-0ubuntu1) hardy; urgency=low ++ ++ * First public OpenJDK upstream code drop (b05). ++ * Depend on tzdata-java. ++ ++ -- Matthias Klose Fri, 29 Feb 2008 19:05:42 +0100 ++ ++icedtea-java7 (7~b24-1.5+20080118-2) UNRELEASED; urgency=low ++ ++ * Fix removal of alternatives. ++ ++ -- Matthias Klose Sat, 26 Jan 2008 18:41:40 +0100 ++ ++icedtea-java7 (7~b24-1.5+20080118-1) hardy; urgency=low ++ ++ * Fix installation of the plugin for firefox-3.0. ++ ++ -- Matthias Klose Sat, 19 Jan 2008 15:10:18 +0100 ++ ++icedtea-java7 (7~b24-1.5+20080118-1~ppa1) hardy; urgency=low ++ ++ * Update IcedTea to 20080118. ++ * Fix another build failure when gcc version != gcj version. ++ * Use the versioned compiler to build the corba parts. ++ * Register plugin for firefox-3.0. ++ * Build using GCC-4.3. ++ ++ -- Matthias Klose Fri, 18 Jan 2008 21:15:08 +0100 ++ ++icedtea-java7 (7~b24-1.5-2) UNRELEASED; urgency=low ++ ++ * First upload to Debian. Closes: #452750. ++ * debian/control.in: ++ - Moved package from universe/devel section to devel. ++ - Put icedtea-java7-doc into doc section. ++ - Added Homepage field and removed Homepage pseudo field from ++ descriptions. ++ - Updated Standards-Version to 3.7.3. ++ * debian/rules: ++ - Check if Makefile exists before called clean in clean target. ++ * debian/copyright: Converted to UTF-8. ++ ++ -- Michael Koch Sat, 05 Jan 2008 13:34:46 -0100 ++ ++icedtea-java7 (7~b24-1.5-1) hardy; urgency=low ++ ++ * Update to IcedTea-1.5. ++ * debian/patches/ssp-interpreter.diff: Use bash to call the ssp script, ++ backslash handling differs betweend dash and bash. ++ ++ -- Matthias Klose Fri, 04 Jan 2008 09:58:27 +0100 ++ ++icedtea-java7 (7~b24-1.5~20071214-1) hardy; urgency=low ++ ++ * New upstream snapshot (b24). ++ * Update java-access-bridge to 1.21.1. ++ * On powerpc keep the build alive using buildwatch script. ++ * Do not install menu entries for javaws, ControlPanel. LP: #155553, #156673. ++ * README.alternatives: Fix example. LP: #157063. ++ ++ -- Matthias Klose Fri, 14 Dec 2007 11:09:22 +0100 ++ ++icedtea-java7 (7~b23-1.5~20071124-4) hardy; urgency=low ++ ++ * Allow libungif4-dev as alternative build dependency. ++ * On powerpc keep the build alive using buildwatch script. ++ * Always build the plugin using libxul-dev. ++ ++ -- Matthias Klose Mon, 10 Dec 2007 15:20:16 +0100 ++ ++icedtea-java7 (7~b23-1.5~20071124-3) hardy; urgency=low ++ ++ * Lower optimization to -O2 for building the jdk on amd64. ++ * Reenable parallel build. ++ * Link using -Bsymbolic-functions. ++ * debian/patches/arguments.patch, debian/patches/const_strings.patch: ++ New patches (Arnaud Vandyck). ++ ++ -- Matthias Klose Thu, 29 Nov 2007 18:50:41 +0100 ++ ++icedtea-java7 (7~b23-1.5~20071124-2) hardy; urgency=low ++ ++ * Bootstrap using ecj/gcj. ++ * Build using g++-4.1 on i386, lpia, powerpc. ++ ++ -- Matthias Klose Wed, 28 Nov 2007 14:46:48 +0000 ++ ++icedtea-java7 (7~b23-1.5~20071124-1) hardy; urgency=low ++ ++ * New upstream snapshot (b23). ++ ++ -- Matthias Klose Tue, 27 Nov 2007 15:48:08 +0100 ++ ++icedtea-java7 (7~b22-1.5~20071018-0ubuntu3) hardy; urgency=low ++ ++ * Revert the previous change, require 7~b22 versions again. ++ ++ -- Matthias Klose Sat, 20 Oct 2007 14:33:26 +0000 ++ ++icedtea-java7 (7~b22-1.5~20071018-0ubuntu2) hardy; urgency=low ++ ++ * Loosen dependencies to 7~b21, until package is built on all archs. ++ ++ -- Matthias Klose Sat, 20 Oct 2007 07:48:36 +0000 ++ ++icedtea-java7 (7~b22-1.5~20071018-0ubuntu1) hardy; urgency=low ++ ++ * New upstream snapshot (b22). ++ * Don't use parallel builds to make the build log better comparable. ++ ++ -- Matthias Klose Fri, 19 Oct 2007 19:49:51 +0200 ++ ++icedtea-java7 (7~b21-1.4+20071007-0ubuntu5) gutsy; urgency=low ++ ++ * Update icedtea to vcs 20071012 (1.4 release), checked that the plugin ++ works on amd64. ++ * debian/copyright: Update "License Headers" section. ++ ++ -- Matthias Klose Sun, 14 Oct 2007 19:55:12 +0200 ++ ++icedtea-java7 (7~b21-1.4+20071007-0ubuntu4) gutsy; urgency=low ++ ++ * Bootstrapping trigger upload for final step of bootstrapping i386, amd64, ++ lpia. ++ ++ -- LaMont Jones Wed, 10 Oct 2007 22:04:25 -0600 ++ ++icedtea-java7 (7~b21-1.4+20071007-0ubuntu3) gutsy; urgency=low ++ ++ * Add build dependency on bzip2. ++ ++ -- Matthias Klose Wed, 10 Oct 2007 09:00:40 +0000 ++ ++icedtea-java7 (7~b21-1.4+20071007-0ubuntu2) gutsy; urgency=low ++ ++ * Add build dependency on ant. ++ ++ -- Matthias Klose Wed, 10 Oct 2007 06:33:14 +0000 ++ ++icedtea-java7 (7~b21-1.4+20071007-0ubuntu1) gutsy; urgency=low ++ ++ * Update icedtea to vcs 20071007. ++ * Update java-access-bridge to 1.20.0. ++ * Add build-dependency on libxinerama-dev. ++ * Add Xb-Npp-xxx tags for the -plugin package. ++ * Name the plugin "GCJ Web Browser Plugin (using IcedTea)", GCJ now ++ "Great Cool Java" (according to Michael Koch). ++ * Compress binary-indep packages using bzip2. ++ ++ -- Matthias Klose Sun, 7 Oct 2007 23:43:28 +0200 ++ ++icedtea-java7 (7~b21-1.4+20071002-0ubuntu2) gutsy; urgency=low ++ ++ * Rebuild using icedtea 7~b21. ++ ++ -- Matthias Klose Tue, 02 Oct 2007 19:45:21 +0200 ++ ++icedtea-java7 (7~b21-1.4+20071002-0ubuntu1) gutsy; urgency=low ++ ++ * New upstream snapshot (b21). ++ * Correctly unregister the executable binary format in the -bin package. ++ * Assemble the debian/copyright file. ++ ++ -- Matthias Klose Tue, 2 Oct 2007 09:59:37 +0200 ++ ++icedtea-java7 (7~b19-1.3+20070905-0ubuntu1) gutsy; urgency=low ++ ++ * New upstream snapshot (b19). ++ * Build using g++-4.2 on amd64, using g++-4.1 on i386 and lpia. ++ * Build without -Werror, upstream source is not yet warning clean. ++ * Support DEB_BUILD_OPTIONS=parallel=. ++ * Add build dependency on wget. ++ * Add font suggestions. ++ * Changed font configuration to fix CJK font support (Arne Goetje). ++ * Fix location of the plugin, when registering the plugin alternatives. ++ ++ -- Matthias Klose Thu, 6 Sep 2007 00:46:40 +0200 ++ ++icedtea-java7 (7~b18-1.2+20070822-0ubuntu2) gutsy; urgency=low ++ ++ * Create browser plugin directories. ++ * Build-depend on liblcms1-dev. ++ * Recommend packages with dlopened libraries: liblcms1, lesstif2, libcupsys2, ++ libgtk2.0-0, libgnome2-0, libgnomevfs2-0, libgconf2-4, libxrandr2, ++ libgl1-mesa-glx. ++ ++ -- Matthias Klose Tue, 21 Aug 2007 17:21:00 +0200 ++ ++icedtea-java7 (7~b18-1.2+20070822-0ubuntu1) gutsy; urgency=low ++ ++ * New upstream version. ++ * Include java-access-bridge. ++ * Build -doc, -plugin packages. ++ * Register alternatives, priority 1060. ++ ++ -- Matthias Klose Tue, 21 Aug 2007 17:21:00 +0200 ++ ++icedtea-java7 (7~b17-1.2+20070808-1) gutsy; urgency=low ++ ++ * Initial release, discard the initial packaging based on cdbs. ++ * Base the packaging on the sun-javaX packages. ++ ++ -- Matthias Klose Wed, 08 Aug 2007 15:55:39 +0200 ++ ++icedtea (7~b16-20070724-1) UNRELEASED; urgency=low ++ ++ * Update upstream tarball to 7~b16, update icedtea to 20070724. ++ * debian/control: Build-depend on libfreetype6-dev. ++ * debian/rules: Configure --with-jar=/usr/bin/fastjar. ++ * Build using gcj-4.2. ++ ++ -- Matthias Klose Tue, 24 Jul 2007 11:24:55 +0200 ++ ++icedtea (7~b14-20070704-1) unstable; urgency=low ++ ++ * Initial version. ++ ++ -- Michael Koch Wed, 04 Jul 2007 08:25:31 -0100 ++ diff --cc debian/compat index 0000000,0000000..ec63514 new file mode 100644 --- /dev/null +++ b/debian/compat @@@ -1,0 -1,0 +1,1 @@@ ++9 diff --cc debian/control index 0000000,0000000..97ab4fc new file mode 100644 --- /dev/null +++ b/debian/control @@@ -1,0 -1,0 +1,177 @@@ ++Source: openjdk-7 ++Section: java ++Priority: optional ++Maintainer: OpenJDK Team ++Uploaders: Matthias Klose ++Build-Depends: debhelper (>= 9), ++ m4, lsb-release, wget, zip, unzip, sharutils, ++ gawk, cpio, pkg-config, procps, time, wdiff, ++ xvfb, xauth, xfonts-base, libgl1-mesa-dri [!x32], ++ xfwm4, dbus-x11, x11-xkb-utils, ++ fastjar (>= 2:0.96-0ubuntu2), ant, ant-optional, ++ libpulse-dev (>= 0.9.12), mauve, dh-autoreconf, quilt, ++ libtool, g++-4.9, ++ ecj-gcj [amd64 armel arm64 armhf hppa i386 ia64 powerpc powerpcspe ppc64 ppc64el m68k mipsel sh4 sparc sparc64 s390x x32 kfreebsd-i386 kfreebsd-amd64], gcj-jdk [amd64 armel arm64 armhf hppa i386 ia64 powerpc powerpcspe ppc64 ppc64el m68k mipsel sh4 sparc sparc64 s390x x32 kfreebsd-i386 kfreebsd-amd64], openjdk-7-jdk (>= 6b18) [alpha mips mips64 mips64el], ++ libxtst-dev, libxi-dev, libxt-dev, libxaw7-dev, libxrender-dev, libasound2-dev, libfreetype6-dev (>= 2.2.1), libgtk2.0-dev, liblcms2-dev, libxinerama-dev, libkrb5-dev, xsltproc, libcups2-dev, libpcsclite-dev, librhino-java (>= 1.7R3~), fonts-ipafont-mincho, ++ libffi-dev, ++ zlib1g-dev, libattr1-dev, libpng-dev, libjpeg-dev, libgif-dev, libsctp-dev [linux-any], ++ libnss3-dev (>= 2:3.17.1), systemtap-sdt-dev, ++Standards-Version: 4.1.3 ++Homepage: http://openjdk.java.net/ ++Vcs-Bzr: http://bazaar.launchpad.net/~openjdk/openjdk/openjdk7 ++Vcs-Browser: https://code.launchpad.net/~openjdk/openjdk/openjdk7 ++ ++Package: openjdk-7-jdk ++Architecture: alpha amd64 armel armhf arm64 i386 ia64 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el m68k sh4 sparc sparc64 s390x x32 kfreebsd-i386 kfreebsd-amd64 ++Multi-Arch: same ++Pre-Depends: ${dpkg:Depends} ++Depends: openjdk-7-jre (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} ++Recommends: libxt-dev ++Suggests: openjdk-7-demo, openjdk-7-source, visualvm ++Provides: java-sdk, java2-sdk, java5-sdk, java6-sdk, java7-sdk, java-compiler, openjdk-7-jdk-headless ++Description: OpenJDK Development Kit (JDK) ++ OpenJDK is a development environment for building applications, ++ applets, and components using the Java programming language. ++ . ++ The packages are built using the IcedTea build support and patches ++ from the IcedTea project. ++ ++Package: openjdk-7-jre-headless ++Architecture: alpha amd64 armel armhf arm64 i386 ia64 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el m68k sh4 sparc sparc64 s390x x32 kfreebsd-i386 kfreebsd-amd64 ++Multi-Arch: same ++Pre-Depends: ${dpkg:Depends} ++Depends: ${jredefault:Depends}, ${cacert:Depends}, ${tzdata:Depends}, ${jcommon:Depends}, ${dlopenhl:Depends}, ${mountpoint:Depends}, ${shlibs:Depends}, ${misc:Depends} ++Recommends: ${dlopenhl:Recommends}, ${jamvm:Recommends} ++Suggests: ${jamvm:Suggests}, libnss-mdns, sun-java6-fonts, fonts-dejavu-extra, fonts-ipafont-gothic, fonts-ipafont-mincho, fonts-wqy-microhei, fonts-wqy-zenhei, fonts-indic, ++Provides: java-runtime-headless, java2-runtime-headless, java5-runtime-headless, java6-runtime-headless, java7-runtime-headless, ${defaultvm:Provides}, ${jvm:Provides} ++Replaces: openjdk-7-jre-lib (<< 7u45-2.4.3-1) ++Conflicts: ${multiarch:Conflicts} ++Breaks: ${netx:Breaks} ++Description: OpenJDK Java runtime, using ${vm:Name} (headless) ++ Minimal Java runtime - needed for executing non GUI Java programs, ++ using ${vm:Name}. ++ . ++ The packages are built using the IcedTea build support and patches ++ from the IcedTea project. ++ ++Package: openjdk-7-jre ++Architecture: alpha amd64 armel armhf arm64 i386 ia64 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el m68k sh4 sparc sparc64 s390x x32 kfreebsd-i386 kfreebsd-amd64 ++Multi-Arch: same ++Pre-Depends: ${dpkg:Depends} ++Depends: openjdk-7-jre-headless (= ${binary:Version}), ${xandsound:Depends}, ${shlibs:Depends}, ${dlopenjre:Depends}, ${misc:Depends}, ${dep:bridge} ++Recommends: ${dlopenjre:Recommends}, fonts-dejavu-extra ++Suggests: icedtea-7-plugin, ${pkg:pulseaudio} ++Conflicts: icedtea-gcjwebplugin (<< 1.0-1ubuntu4) ++Replaces: openjdk-7-jre-headless (<< 7u65-2.5.1-0~) ++Provides: java-runtime, java2-runtime, java5-runtime, java6-runtime, java7-runtime ++Description: OpenJDK Java runtime, using ${vm:Name} ++ Full Java runtime environment - needed for executing Java GUI and Webstart ++ programs, using ${vm:Name}. ++ . ++ The packages are built using the IcedTea build support and patches ++ from the IcedTea project. ++ ++Package: openjdk-7-jre-lib ++Architecture: all ++Multi-Arch: foreign ++Section: oldlibs ++Priority: extra ++Pre-Depends: ${dpkg:Depends} ++Depends: ${misc:Depends} ++Breaks: openjdk-7-jre-headless (<< 7u45-2.4.3-1) ++Description: OpenJDK Java runtime (architecture independent libraries) ++ OpenJDK Java runtime, using ${vm:Name}. ++ . ++ The packages are built using the IcedTea build support and patches ++ from the IcedTea project. ++ . ++ This is a transitional package. You can safely remove it. ++ ++Package: openjdk-7-demo ++Architecture: alpha amd64 armel armhf arm64 i386 ia64 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el m68k sh4 sparc sparc64 s390x x32 kfreebsd-i386 kfreebsd-amd64 ++Priority: extra ++Pre-Depends: ${dpkg:Depends} ++Depends: openjdk-7-jre (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: Java runtime based on OpenJDK (demos and examples) ++ OpenJDK Java runtime ++ . ++ The packages are built using the IcedTea build support and patches ++ from the IcedTea project. ++ ++Package: openjdk-7-source ++Architecture: all ++Priority: extra ++Pre-Depends: ${dpkg:Depends} ++Depends: openjdk-7-jre (>= ${source:Version}), openjdk-7-jdk (>= ${binary:Version}), ${misc:Depends} ++Replaces: openjdk-7-jdk (<< 7u65-2.5.1-4) ++Description: OpenJDK Development Kit (JDK) source files ++ OpenJDK is a development environment for building applications, ++ applets, and components using the Java programming language. ++ . ++ This package contains the Java programming language source files ++ (src.zip) for all classes that make up the Java core API. ++ . ++ The packages are built using the IcedTea build support and patches ++ from the IcedTea project. ++ ++Package: openjdk-7-doc ++Section: doc ++Pre-Depends: ${dpkg:Depends} ++Architecture: all ++Priority: extra ++Depends: ${misc:Depends} ++Suggests: openjdk-7-jdk ++Description: OpenJDK Development Kit (JDK) documentation ++ OpenJDK is a development environment for building applications, ++ applets, and components using the Java programming language. ++ . ++ This package contains the API documentation. ++ . ++ The packages are built using the IcedTea build support and patches ++ from the IcedTea project. ++ ++Package: openjdk-7-dbg ++Architecture: alpha amd64 armel armhf arm64 i386 ia64 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el m68k sh4 sparc sparc64 s390x x32 kfreebsd-i386 kfreebsd-amd64 ++Multi-Arch: same ++Priority: extra ++Section: debug ++Pre-Depends: ${dpkg:Depends} ++Depends: openjdk-7-jre-headless (= ${binary:Version}), ${misc:Depends} ++Recommends: openjdk-7-jre (= ${binary:Version}) ++Suggests: openjdk-7-jdk (= ${binary:Version}) ++Description: Java runtime based on OpenJDK (debugging symbols) ++ OpenJDK is a development environment for building applications, ++ applets, and components using the Java programming language. ++ . ++ This package contains the debugging symbols. ++ . ++ The packages are built using the IcedTea build support and patches ++ from the IcedTea project. ++ ++Package: icedtea-7-jre-jamvm ++Architecture: amd64 armel armhf i386 powerpc kfreebsd-i386 kfreebsd-amd64 ++Multi-Arch: same ++Priority: extra ++Pre-Depends: ${dpkg:Depends} ++Depends: openjdk-7-jre-headless (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: Alternative JVM for OpenJDK, using JamVM ++ The package provides an alternative runtime using the JamVM. This is a ++ somewhat faster alternative than the Zero port on architectures like armel, ++ mips, mipsel, powerpc. ++ . ++ The VM is started with the option `-jamvm'. See the README.Debian for details. ++ ++Package: openjdk-7-jre-zero ++Architecture: amd64 i386 ppc64 ppc64el kfreebsd-amd64 kfreebsd-i386 ++Multi-Arch: same ++Priority: extra ++Pre-Depends: ${dpkg:Depends} ++Depends: openjdk-7-jre-headless (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} ++Provides: ${zerovm:Provides} ++Description: Alternative JVM for OpenJDK, using Zero/Shark ++ The package provides an alternative runtime using the Zero VM and the ++ Shark Just In Time Compiler (JIT). Built on architectures in addition ++ to the Hotspot VM as a debugging aid for those architectures which don't ++ have a Hotspot VM. ++ . ++ The VM is started with the option `-zero'. See the README.Debian for details. diff --cc debian/control.cacao-trans index 0000000,0000000..27e3e6c new file mode 100644 --- /dev/null +++ b/debian/control.cacao-trans @@@ -1,0 -1,0 +1,11 @@@ ++ ++Package: icedtea-7-jre-cacao ++Architecture: alpha amd64 armel armhf i386 lpia powerpc powerpcspe m68k mips mipsel s390 ++Multi-Arch: same ++Priority: extra ++Pre-Depends: ${dpkg:Depends} ++Depends: @basename@-jre-headless (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: Transitional package for obsolete Cacao JVM for OpenJDK ++ Cacao support was removed for recent versions of OpenJDK 7. ++ . ++ This is a transitional package which can be safely removed. diff --cc debian/control.in index 0000000,0000000..851d782 new file mode 100644 --- /dev/null +++ b/debian/control.in @@@ -1,0 -1,0 +1,150 @@@ ++Source: @basename@ ++Section: java ++Priority: optional ++Maintainer: OpenJDK Team ++Uploaders: Matthias Klose ++Build-Depends: debhelper (>= 9), ++ m4, lsb-release, wget, zip, unzip, sharutils, ++ gawk, cpio, pkg-config, procps, time, wdiff, ++ xvfb, xauth, xfonts-base, libgl1-mesa-dri [!x32], ++ xfwm4, dbus-x11, x11-xkb-utils, ++ fastjar (>= 2:0.96-0ubuntu2), ant, ant-optional, ++ libpulse-dev (>= 0.9.12), mauve, dh-autoreconf, quilt, ++ @bd_jamvm@ @bd_gcc@ ++ @bd_bootstrap@ ++ @bd_openjdk@ ++ @bd_zero@ @bd_shark@ ++ @bd_syslibs@ ++ @bd_nss@ @bd_systemtap@ ++Standards-Version: 4.1.3 ++Homepage: http://openjdk.java.net/ ++Vcs-Bzr: http://bazaar.launchpad.net/~openjdk/openjdk/openjdk7 ++Vcs-Browser: https://code.launchpad.net/~openjdk/openjdk/openjdk7 ++ ++Package: @basename@-jdk ++Architecture: @any_archs@ ++Multi-Arch: same ++Pre-Depends: ${dpkg:Depends} ++Depends: @basename@-jre (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} ++Recommends: libxt-dev ++Suggests: @basename@-demo, @basename@-source, visualvm ++Provides: java-sdk, java2-sdk, java5-sdk, java6-sdk, java7-sdk, java-compiler, @basename@-jdk-headless ++Description: OpenJDK Development Kit (JDK) ++ OpenJDK is a development environment for building applications, ++ applets, and components using the Java programming language. ++ . ++ The packages are built using the IcedTea build support and patches ++ from the IcedTea project. ++ ++Package: @basename@-jre-headless ++Architecture: @any_archs@ ++Multi-Arch: same ++Pre-Depends: ${dpkg:Depends} ++Depends: ${jredefault:Depends}, ${cacert:Depends}, ${tzdata:Depends}, ${jcommon:Depends}, ${dlopenhl:Depends}, ${mountpoint:Depends}, ${shlibs:Depends}, ${misc:Depends} ++Recommends: ${dlopenhl:Recommends}, ${jamvm:Recommends} ++Suggests: ${jamvm:Suggests}, libnss-mdns, sun-java6-fonts, @core_fonts@, @cjk_fonts@ ++Provides: java-runtime-headless, java2-runtime-headless, java5-runtime-headless, java6-runtime-headless, java7-runtime-headless, ${defaultvm:Provides}, ${jvm:Provides} ++Replaces: @basename@-jre-lib (<< 7u45-2.4.3-1) ++Conflicts: ${multiarch:Conflicts} ++Breaks: ${netx:Breaks} ++Built-Using: ${rhino:Source} ++Description: OpenJDK Java runtime, using ${vm:Name} (headless) ++ Minimal Java runtime - needed for executing non GUI Java programs, ++ using ${vm:Name}. ++ . ++ The packages are built using the IcedTea build support and patches ++ from the IcedTea project. ++ ++Package: @basename@-jre ++Architecture: @any_archs@ ++Multi-Arch: same ++Pre-Depends: ${dpkg:Depends} ++Depends: @basename@-jre-headless (= ${binary:Version}), ${xandsound:Depends}, ${shlibs:Depends}, ${dlopenjre:Depends}, ${misc:Depends}, ${dep:bridge} ++Recommends: ${dlopenjre:Recommends}, @core_fonts@ ++Suggests: icedtea-7-plugin, ${pkg:pulseaudio} ++Conflicts: icedtea-gcjwebplugin (<< 1.0-1ubuntu4) ++Replaces: @basename@-jre-headless (<< 7u65-2.5.1-0~) ++Provides: java-runtime, java2-runtime, java5-runtime, java6-runtime, java7-runtime ++Description: OpenJDK Java runtime, using ${vm:Name} ++ Full Java runtime environment - needed for executing Java GUI and Webstart ++ programs, using ${vm:Name}. ++ . ++ The packages are built using the IcedTea build support and patches ++ from the IcedTea project. ++ ++Package: @basename@-jre-lib ++Architecture: @lib_arch@ ++Multi-Arch: foreign ++Section: oldlibs ++Priority: extra ++Pre-Depends: ${dpkg:Depends} ++Depends: ${misc:Depends} ++Breaks: @basename@-jre-headless (<< 7u45-2.4.3-1) ++Description: OpenJDK Java runtime (architecture independent libraries) ++ OpenJDK Java runtime, using ${vm:Name}. ++ . ++ The packages are built using the IcedTea build support and patches ++ from the IcedTea project. ++ . ++ This is a transitional package. You can safely remove it. ++ ++Package: @basename@-demo ++Architecture: @any_archs@ ++Priority: extra ++Pre-Depends: ${dpkg:Depends} ++Depends: @basename@-jre (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: Java runtime based on OpenJDK (demos and examples) ++ OpenJDK Java runtime ++ . ++ The packages are built using the IcedTea build support and patches ++ from the IcedTea project. ++ ++Package: @basename@-source ++Architecture: all ++Priority: extra ++Pre-Depends: ${dpkg:Depends} ++Depends: @basename@-jre (>= ${source:Version}), @basename@-jdk (>= ${binary:Version}), ${misc:Depends} ++Replaces: openjdk-7-jdk (<< 7u65-2.5.1-4) ++Description: OpenJDK Development Kit (JDK) source files ++ OpenJDK is a development environment for building applications, ++ applets, and components using the Java programming language. ++ . ++ This package contains the Java programming language source files ++ (src.zip) for all classes that make up the Java core API. ++ . ++ The packages are built using the IcedTea build support and patches ++ from the IcedTea project. ++ ++Package: @basename@-doc ++Section: doc ++Pre-Depends: ${dpkg:Depends} ++Architecture: all ++Priority: extra ++Depends: ${misc:Depends} ++Suggests: @basename@-jdk ++Description: OpenJDK Development Kit (JDK) documentation ++ OpenJDK is a development environment for building applications, ++ applets, and components using the Java programming language. ++ . ++ This package contains the API documentation. ++ . ++ The packages are built using the IcedTea build support and patches ++ from the IcedTea project. ++ ++Package: @basename@-dbg ++Architecture: @any_archs@ ++Multi-Arch: same ++Priority: extra ++Section: debug ++Pre-Depends: ${dpkg:Depends} ++Depends: @basename@-jre-headless (= ${binary:Version}), ${misc:Depends} ++Recommends: @basename@-jre (= ${binary:Version}) ++Suggests: @basename@-jdk (= ${binary:Version}) ++Description: Java runtime based on OpenJDK (debugging symbols) ++ OpenJDK is a development environment for building applications, ++ applets, and components using the Java programming language. ++ . ++ This package contains the debugging symbols. ++ . ++ The packages are built using the IcedTea build support and patches ++ from the IcedTea project. diff --cc debian/control.jamvm-jre index 0000000,0000000..dd3923f new file mode 100644 --- /dev/null +++ b/debian/control.jamvm-jre @@@ -1,0 -1,0 +1,13 @@@ ++ ++Package: icedtea-7-jre-jamvm ++Architecture: @jamvm_archs@ ++Multi-Arch: same ++Priority: extra ++Pre-Depends: ${dpkg:Depends} ++Depends: @basename@-jre-headless (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: Alternative JVM for OpenJDK, using JamVM ++ The package provides an alternative runtime using the JamVM. This is a ++ somewhat faster alternative than the Zero port on architectures like armel, ++ mips, mipsel, powerpc. ++ . ++ The VM is started with the option `-jamvm'. See the README.Debian for details. diff --cc debian/control.tests index 0000000,0000000..977df85 new file mode 100644 --- /dev/null +++ b/debian/control.tests @@@ -1,0 -1,0 +1,16 @@@ ++ ++Package: @basename@-tests ++Architecture: @any_archs@ ++Multi-Arch: same ++Priority: extra ++Pre-Depends: ${dpkg:Depends} ++Suggests: jtreg ++Description: OpenJDK Development Kit (JDK) documentation ++ OpenJDK is a development environment for building applications, ++ applets, and components using the Java programming language. ++ . ++ This package contains the jtreg test results from the suites ran ++ during the package build. ++ . ++ The packages are built using the IcedTea build support and patches ++ from the IcedTea project. diff --cc debian/control.zero-jre index 0000000,0000000..f53e372 new file mode 100644 --- /dev/null +++ b/debian/control.zero-jre @@@ -1,0 -1,0 +1,15 @@@ ++ ++Package: @basename@-jre-zero ++Architecture: @altzero_archs@ ++Multi-Arch: same ++Priority: extra ++Pre-Depends: ${dpkg:Depends} ++Depends: @basename@-jre-headless (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} ++Provides: ${zerovm:Provides} ++Description: Alternative JVM for OpenJDK, using Zero/Shark ++ The package provides an alternative runtime using the Zero VM and the ++ Shark Just In Time Compiler (JIT). Built on architectures in addition ++ to the Hotspot VM as a debugging aid for those architectures which don't ++ have a Hotspot VM. ++ . ++ The VM is started with the option `-zero'. See the README.Debian for details. diff --cc debian/copyright index 0000000,0000000..30de5c3 new file mode 100644 --- /dev/null +++ b/debian/copyright @@@ -1,0 -1,0 +1,2375 @@@ ++This package was debianized by Matthias Klose on ++Wed, 08 Aug 2007 15:55:39 +0200. ++ ++It was downloaded from ++ http://icedtea.classpath.org ++ http://download.java.net/openjdk/jdk7/ ++ http://ftp.gnome.org/pub/GNOME/sources/java-access-bridge/ ++ ++------------------------------------------------------------------------------ ++Upstream Authors: ++ ++IcedTea (see AUTHORS for a current list): ++ Lillian Angel ++ Gary Benson ++ Tania Bento ++ Deepak Bhole ++ Thomas Fitzsimmons ++ Kyle Galloway ++ Andrew Haley ++ Ioana Iivan ++ Matthias Klose ++ Francis Kung ++ Omair Majid ++ Casey Marshall ++ Raif Naffah ++ Joshua Sumali ++ Christian Thalinger ++ Mark Wielaard ++ ++IcedTea Sound (see AUTHORS for a current list): ++ Andrew John Hughes ++ Ioana Ivan ++ Matthias Klose ++ Denis Lila ++ Omair Majid ++ Xerxes Rånby ++ Marc Schoenefeld ++ Joshua Sumali ++ Jon VanAlten ++ ++OpenJDK: ++ Sun Microsystems, Inc. ++ Oracle and/or its affiliates. ++ ++Java Access Bridge: ++ Bill Haneman ++ Louise Miller ++ Gergõ Érdi ++ Laszlo (Laca) Peter ++ Jeff Cai ++ George Kraft IV ++ Padraig O'Briain ++ Darren Kenny ++ ++Packaging: ++ Matthias Klose ++ ++------------------------------------------------------------------------------ ++Copyright: ++ ++IcedTea: ++ Portions Copyright © 2007 Lillian Angel ++ Portions Copyright © 2007 Gary Benson ++ Portions Copyright © 2007 Tania Bento ++ Portions Copyright © 2008 Deepak Bhole ++ Portions Copyright © 2007 Thomas Fitzsimmons ++ Portions Copyright © 2007 Kyle Galloway ++ Portions Copyright © 2007 Andrew Haley ++ Portions Copyright © 2008 Ioana Iivan ++ Portions Copyright © 2007 Matthias Klose ++ Portions Copyright © 2007 Francis Kung ++ Portions Copyright © 2008 Omair Majid ++ Portions Copyright © 2007 Casey Marshall ++ Portions Copyright © 2007 Raif Naffah ++ Portions Copyright © 2007 Joshua Sumali ++ Portions Copyright © 2007 Christian Thalinger ++ Portions Copyright © 2007 Mark Wielaard ++ Portions Copyright © 2007, 2008 Red Hat, Inc. ++ Portions Copyright © 2001-2003 Jon A. Maxwell (JAM) ++ Portions Copyright © 1992, 1995-2007 Sun Microsystems, Inc. ++ Portions Copyright © 2007 Matthew Flaschen ++ Portions Copyright © 2000-2002 Marc De Scheemaecker ++ Portions Copyright © 1991-1998 Thomas G. Lane ++ Portions Copyright © 2007 Free Software Foundation, Inc. ++ ++IcedTea Sound: ++ Portions Copyright © 2008-2011 Red Hat, Inc. ++ ++OpenJDK: ++ Copyright © 1996-2007 Sun Microsystems, Inc. ++ Copyright © 1996-2007 Oracle and/or its affiliates. ++ For third party copyrights see below (copies from the third party readme). ++ Portions Copyright © 1993-1999 IBM Corp. ++ Portions Copyright © 1997 Eastman Kodak Company. ++ Portions Copyright © 1999-2005 The Apache Software Foundation. ++ ++Java Access Bridge: ++ Portions Copyright © 2002-2007 Bill Haneman ++ Portions Copyright © 2002-2007 Louise Miller ++ Portions Copyright © 2002-2007 Gergõ Érdi ++ Portions Copyright © 2002-2007 Laszlo (Laca) Peter ++ Portions Copyright © 2002-2007 Jeff Cai ++ Portions Copyright © 2002-2007 George Kraft IV ++ Portions Copyright © 2002-2007 Padraig O'Briain ++ Portions Copyright © 2002-2007 Darren Kenny ++ ++Packaging: ++ Copyright © 2007-2014 Canonical Ltd. ++ ++------------------------------------------------------------------------------ ++License: ++ ++NOTE: the combined work which includes the upstream components below ++carries forward the OpenJDK Assembly Exception (text included below). ++ ++Packaging: ++ Permission is hereby granted, free of charge, to any person obtaining ++ a copy of this software and associated documentation files (the ++ "Software"), to deal in the Software without restriction, including ++ without limitation the rights to use, copy, modify, merge, publish, ++ distribute, sublicense, and/or sell copies of the Software, and to ++ permit persons to whom the Software is furnished to do so, subject to ++ the following conditions: ++ ++ The above copyright notice and this permission notice shall be ++ included in all copies or substantial portions of the Software. ++ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ++ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE ++ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION ++ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION ++ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ++ ++IcedTea and IcedTea Sound: ++ IcedTea is licensed under the GPL v2. See `/usr/share/common-licenses/GPL-2'. ++ The exception is: "CLASSPATH" EXCEPTION TO THE GPL. ++ ++ The sound files (pulseaudio/testsounds/*.wav) were taken from the KDE Project ++ (www.kde.org). A copy of them can be obtained from ++ http://websvn.kde.org/branches/KDE/4.0/kdeartwork/sounds/ . They are licensed ++ by the copyright holders as GPLv2. ++ ++IcedTea/rewriter: ++ This program is free software: you can redistribute it and/or modify ++ it under the terms of the GNU Affero General Public License as ++ published by the Free Software Foundation, either version 3 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 Affero General Public License for more details. ++ ++ You should have received a copy of the GNU Affero General Public License ++ along with this program. If not, see . ++ ++OpenJDK: ++ OpenJDK is licensed under the GPL v2 with exceptions, ++ see `/usr/share/common-licenses/GPL-2'. ++ The exceptions are: ++ - "CLASSPATH" EXCEPTION TO THE GPL ++ - OPENJDK ASSEMBLY EXCEPTION ++ Various third party code in OpenJDK is licensed under different licenses. ++ See below (THIRD_PARTY_README). ++ ++Java Access Bridge: ++ Java Access Bridge is licensed under the LGPL v2. ++ See `/usr/share/common-licenses/LGPL-2'. ++ ++A Note About License Headers ++---------------------------- ++ ++Some sources downloaded from openjdk.java.net do not display the GPL ++license header. Instances are: ++ ++ - The files in openjdk/j2se/src/share/classes/javax/xml/stream/ seem to ++ comprise the BEA-StAX source code ++ ++ http://ftpna2.bea.com/pub/downloads/jsr173.jar ++ ++ with some Sun-specific modifications. We're assuming that Sun is ++ bundling BEA-StAX under the terms of the Apache License 2.0 and ++ that the modifications are owned by Sun. ++ ++ - We are assuming that these files are owned by Sun: ++ openjdk/j2se/src/share/classes/**/resources/*.properties ++ ++The downloaded sources include a script that inserts proprietary ++license headers into the source files it generates. The script ++itself is GPL'd so we patched them to emit the GPL header. The ++file is: ++ openjdk/j2se/make/java/nio/genExceptions.sh ++ ++------------------------------------------------------------------------------ ++"CLASSPATH" EXCEPTION TO THE GPL ++ ++Certain source files distributed by Sun Microsystems, Inc. are subject to ++the following clarification and special exception to the GPL, but only where ++Sun has expressly included in the particular source file's header the words ++"Sun designates this particular file as subject to the "Classpath" exception ++as provided by Sun in the LICENSE file that accompanied this code." ++ ++ 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. ++ ++------------------------------------------------------------------------------ ++OPENJDK ASSEMBLY EXCEPTION ++ ++The OpenJDK source code made available by Sun at openjdk.java.net and ++openjdk.dev.java.net ("OpenJDK Code") is distributed under the terms of the ++GNU General Public License version 2 ++only ("GPL2"), with the following clarification and special exception. ++ ++ Linking this OpenJDK Code statically or dynamically with other code ++ is making a combined work based on this library. Thus, the terms ++ and conditions of GPL2 cover the whole combination. ++ ++ As a special exception, Sun gives you permission to link this ++ OpenJDK Code with certain code licensed by Sun as indicated at ++ http://openjdk.java.net/legal/exception-modules-2007-05-08.html ++ ("Designated Exception Modules") to produce an executable, ++ regardless of the license terms of the Designated Exception Modules, ++ and to copy and distribute the resulting executable under GPL2, ++ provided that the Designated Exception Modules continue to be ++ governed by the licenses under which they were offered by Sun. ++ ++As such, it allows licensees and sublicensees of Sun's GPL2 OpenJDK Code to ++build an executable that includes those portions of necessary code that Sun ++could not provide under GPL2 (or that Sun has provided under GPL2 with the ++Classpath exception). If you modify or add to the OpenJDK code, that new ++GPL2 code may still be combined with Designated Exception Modules if the ++new code is made subject to this exception by its copyright holder. ++ ++------------------------------------------------------------------------------ ++OpenJDK Trademark Notice ++Version 1.1, 2008/3/10 ++ ++OpenJDK (the "Name") is a trademark of Sun Microsystems, Inc. (the "Owner"). ++Owner permits any person obtaining a copy of this software (the "Software") ++which is based on original software retrieved from one of the following ++websites: http://download.java.net/openjdk, http://hg.openjdk.java.net/jdk6, ++or http://openjdk.java.net (each a "Website", with the original software made ++available by the Owner on a Website being known as the "Website Software") to ++use the Name in package names and version strings of the Software subject to ++the following conditions: ++ ++ - The Software is a substantially complete implementation of the OpenJDK ++ development kit or runtime environment code made available by Owner on a ++ Website, and the vast majority of the Software code is identical to the ++ upstream Website Software; ++ ++ - No permission is hereby granted to use the Name in any other manner, ++ unless such use constitutes "fair use." ++ ++ - The Owner makes no warranties of any kind respecting the Name and all ++ representations and warranties, including any implied warranty of ++ merchantability, fitness for a particular purpose or non-infringement ++ are hereby disclaimed; and ++ ++ - This notice and the following legend are included in all copies of the ++ Software or portions of it: ++ ++ OpenJDK is a trademark or registered trademark of Sun Microsystems, ++ Inc. in the United States and other countries. ++ ++The Name may also be used in connection with descriptions of the Software that ++constitute "fair use," such as "derived from the OpenJDK code base" or "based ++on the OpenJDK source code." ++ ++Owner intends to revise this Notice as necessary in order to meet the needs of ++the OpenJDK Community. Please send questions or comments about this Notice to ++Sun Microsystems at openjdk-tm@sun.com. Revisions to this Notice will be ++announced on the public mailing list announce@openjdk.java.net, to which you ++may subscribe by visiting http://mail.openjdk.java.net. The latest version of ++this Notice may be found at http://openjdk.java.net/legal. ++ ++------------------------------------------------------------------------------ ++the follwing licenses for third party code are taken from ++openjdk/THIRD_PARTY_README ++------------------------------------------------------------------------------ ++ ++DO NOT TRANSLATE OR LOCALIZE. ++ ++%% This notice is provided with respect to Thai dictionary for text breaking, which may be included with this software: ++ ++--- begin of LICENSE file --- ++ ++Copyright (C) 1982 The Royal Institute, Thai Royal Government. ++ ++Copyright (C) 1998 National Electronics and Computer Technology Center, ++ National Science and Technology Development Agency, ++ Ministry of Science Technology and Environment, ++ Thai Royal Government. ++ ++Permission is hereby granted, free of charge, to any person obtaining ++a copy of this software and associated documentation files (the "Software"), to ++deal in the Software without restriction, including without ++limitation the rights to use, copy, modify, merge, publish, distribute, ++sublicense, and/or sell copies of the Software, and to permit persons to ++whom the Software is furnished to do so, subject to the following ++conditions: ++ ++The above copyright notice and this permission notice shall be included ++in all copies or substantial portions of the Software. ++ ++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN ++NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, ++DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR ++OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE ++USE OR OTHER DEALINGS IN THE SOFTWARE. ++ ++--- end of LICENSE file --- ++%% This notice is provided with respect to ASM, which may be included with this software: ++Copyright (c) 2000-2005 INRIA, France Telecom ++All rights reserved. ++ ++Redistribution and use in source and binary forms, with or without ++modification, are permitted provided that the following conditions ++are met: ++ ++1. Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ ++2. Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ ++3. Neither the name of the copyright holders nor the names of its ++ contributors may be used to endorse or promote products derived from ++ this software without specific prior written permission. ++ ++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" ++AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE ++LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR ++CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF ++SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ++INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN ++CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ++ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF ++THE POSSIBILITY OF SUCH DAMAGE. ++%% This notice is provided with respect to zlib 1.1.3, which may be included with this software: ++ ++Acknowledgments: ++ ++ The deflate format used by zlib was defined by Phil Katz. The deflate ++ and zlib specifications were written by L. Peter Deutsch. Thanks to all the ++ people who reported problems and suggested various improvements in zlib; ++ they are too numerous to cite here. ++ ++Copyright notice: ++ ++ (C) 1995-1998 Jean-loup Gailly and Mark Adler ++ ++ This software is provided 'as-is', without any express or implied ++ warranty. In no event will the authors be held liable for any damages ++ arising from the use of this software. ++ ++ Permission is granted to anyone to use this software for any purpose, ++ including commercial applications, and to alter it and redistribute it ++ freely, subject to the following restrictions: ++ ++ 1. The origin of this software must not be misrepresented; you must not ++ claim that you wrote the original software. If you use this software ++ in a product, an acknowledgment in the product documentation would be ++ appreciated but is not required. ++ 2. Altered source versions must be plainly marked as such, and must not be ++ misrepresented as being the original software. ++ 3. This notice may not be removed or altered from any source distribution. ++ ++ Jean-loup Gailly Mark Adler ++ jloup@gzip.org madler@alumni.caltech.edu ++ ++If you use the zlib library in a product, we would appreciate *not* ++receiving lengthy legal documents to sign. The sources are provided ++for free but without warranty of any kind. The library has been ++entirely written by Jean-loup Gailly and Mark Adler; it does not ++include third-party code. ++ ++If you redistribute modified sources, we would appreciate that you include ++in the file ChangeLog history information documenting your changes. ++ ++%% This notice is provided with respect to W3C (DTD for XML Signatures), which may be included with this software: ++W3C® SOFTWARE NOTICE AND LICENSE ++Copyright © 1994-2002 World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/ ++This W3C work (including software, documents, or other related items) is being provided by the copyright holders under the following license. By obtaining, using and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions: ++Permission to use, copy, modify, and distribute this software and its documentation, with or without modification,  for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the software and documentation or portions thereof, including modifications, that you make: ++1.The full text of this NOTICE in a location viewable to users of the redistributed or derivative work. ++2.Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, a short notice of the following form (hypertext is preferred, text is permitted) should be used within the body of any redistributed or derivative code: "Copyright © [$date-of-software] World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/" ++3.Notice of any changes or modifications to the W3C files, including the date changes were made. (We recommend you provide URIs to the location from which the code is derived.) ++THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. ++COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION. ++The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the software without specific, written prior permission. Title to copyright in this software and any associated documentation will at all times remain with copyright holders. ++____________________________________ ++This formulation of W3C's notice and license became active on August 14 1998 so as to improve compatibility with GPL. This version ensures that W3C software licensing terms are no more restrictive than GPL and consequently W3C software may be distributed in GPL packages. See the older formulation for the policy prior to this date. Please see our Copyright FAQ for common questions about using materials from our site, including specific terms and conditions for packages like libwww, Amaya, and Jigsaw. Other questions about this notice can be directed to site-policy@w3.org. ++  ++%% This notice is provided with respect to jscheme.jar, which may be included with this software: ++Software License Agreement ++Copyright © 1998-2002 by Peter Norvig. ++Permission is granted to anyone to use this software, in source or object code form, on any computer system, and to modify, compile, decompile, run, and redistribute it to anyone else, subject to the following restrictions: ++1.The author makes no warranty of any kind, either expressed or implied, about the suitability of this software for any purpose. ++2.The author accepts no liability of any kind for damages or other consequences of the use of this software, even if they arise from defects in the software. ++3.The origin of this software must not be misrepresented, either by explicit claim or by omission. ++4.Altered versions must be plainly marked as such, and must not be misrepresented as being the original software. Altered versions may be distributed in packages under other licenses (such as the GNU license). ++If you find this software useful, it would be nice if you let me (peter@norvig.com) know about it, and nicer still if you send me modifications that you are willing to share. However, you are not required to do so. ++ ++ ++%% This notice is provided with respect to PC/SC Lite for Suse Linux v. 1.1.1, which may be included with this software: ++ ++Copyright (c) 1999-2004 David Corcoran ++Copyright (C) 1999-2003 Ludovic Rousseau ++All rights reserved. ++ ++Redistribution and use in source and binary forms, with or without ++modification, are permitted provided that the following conditions ++are met: ++ ++1. Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++2. Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++3. The name of the author may not be used to endorse or promote products ++ derived from this software without specific prior written permission. ++ ++Changes to this license can be made only by the copyright author with ++explicit written consent. ++ ++THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR ++IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES ++OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ++IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, ++INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT ++NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF ++THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++ ++%% This notice is provided with respect to IAIK PKCS Wrapper, which may be included with this software: ++ ++Copyright (c) 2002 Graz University of Technology. All rights reserved. ++Redistribution and use in source and binary forms, with or without modification,are permitted provided that the following conditions are met: ++ ++ ++1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. ++ ++2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. ++ ++3. The end-user documentation included with the redistribution, if any, must include the following acknowledgment: ++ ++ "This product includes software developed by IAIK of Graz University of Technology." ++ ++ Alternately, this acknowledgment may appear in the software itself, if and wherever such third-party acknowledgments normally appear. ++ ++4. The names "Graz University of Technology" and "IAIK of Graz University of Technology" must not be used to endorse or promote products derived from this software without prior written permission. ++ ++5. Products derived from this software may not be called "IAIK PKCS Wrapper", nor may "IAIK" appear in their name, without prior written permission of Graz University of Technology. ++ ++THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED ++WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ++WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR ++PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE LICENSOR BE ++LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, ++OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, ++PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, ++OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ++ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, ++OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ++POSSIBILITY OF SUCH DAMAGE. ++ ++%% This notice is provided with respect to Document Object Model (DOM) v. Level 3, which may be included with this software: ++ ++W3Cýý SOFTWARE NOTICE AND LICENSE ++ ++http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231 ++ ++This work (and included software, documentation such as READMEs, or other related items) is being ++provided by the copyright holders under the following license. By obtaining, using and/or copying this work, you ++(the licensee) agree that you have read, understood, and will comply with the following terms and conditions. ++ ++Permission to copy, modify, and distribute this software and its documentation, with or without modification, for ++any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies ++of the software and documentation or portions thereof, including modifications: ++ 1.The full text of this NOTICE in a location viewable to users of the redistributed or derivative work. ++ 2.Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the ++ W3C Software Short Notice should be included (hypertext is preferred, text is permitted) within the body ++ of any redistributed or derivative code. ++ 3.Notice of any changes or modifications to the files, including the date changes were made. (We ++ recommend you provide URIs to the location from which the code is derived.) ++THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKENO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, ++WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THEUSE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS,COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. ++ ++COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL ORCONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION. ++The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the ++software without specific, written prior permission. Title to copyright in this software and any associated ++documentation will at all times remain with copyright holders. ++ ++____________________________________ ++ ++This formulation of W3C's notice and license became active on December 31 2002. This version removes the ++copyright ownership notice such that this license can be used with materials other than those owned by the ++W3C, reflects that ERCIM is now a host of the W3C, includes references to this specific dated version of the ++license, and removes the ambiguous grant of "use". Otherwise, this version is the same as the previous ++version and is written so as to preserve the Free Software Foundation's assessment of GPL compatibility and ++OSI's certification under the Open Source Definition. Please see our Copyright FAQ for common questions ++about using materials from our site, including specific terms and conditions for packages like libwww, Amaya, ++and Jigsaw. Other questions about this notice can be directed to ++site-policy@w3.org. ++ ++%% This notice is provided with respect to Xalan, Xerces, which may be included with this software: ++ ++/* ++ * The Apache Software License, Version 1.1 ++ * ++ * ++ * Copyright (c) 1999-2003 The Apache Software Foundation. All rights * reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. * ++ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in ++ * the documentation and/or other materials provided with the ++ * distribution. ++ * ++ * 3. The end-user documentation included with the redistribution, ++ * if any, must include the following acknowledgment: ++ * "This product includes software developed by the ++ * Apache Software Foundation (http://www.apache.org/)." ++ * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * ++ * 4. The names "Xerces" and "Apache Software Foundation" must ++ * not be used to endorse or promote products derived from this ++ * software without prior written permission. For written ++ * permission, please contact apache@apache.org. ++ * ++ * 5. Products derived from this software may not be called "Apache", ++ * nor may "Apache" appear in their name, without prior written ++ * permission of the Apache Software Foundation. ++ * ++ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED ++ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES ++ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE ++ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR ++ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF ++ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, ++ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT ++ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++ * SUCH DAMAGE. ++ * ==================================================================== * ++ * This software consists of voluntary contributions made by many ++ * individuals on behalf of the Apache Software Foundation and was ++ * originally based on software copyright (c) 1999, International ++ * Business Machines, Inc., http://www.ibm.com. For more ++ * information on the Apache Software Foundation, please see ++ * ++ ++%% This notice is provided with respect to JavaScript, which may be included with this software: ++ ++AMENDMENTS ++The Netscape Public License Version 1.1 ("NPL") consists of the Mozilla Public License Version 1.1 with the following Amendments, including Exhibit A-Netscape Public License.  Files identified with "Exhibit A-Netscape Public License" are governed by the Netscape Public License Version 1.1. ++Additional Terms applicable to the Netscape Public License. ++I. Effect. ++These additional terms described in this Netscape Public License -- Amendments shall apply to the Mozilla Communicator client code and to all Covered Code under this License. ++II. ''Netscape's Branded Code'' means Covered Code that Netscape distributes and/or permits others to distribute under one or more trademark(s) which are controlled by Netscape but which are not licensed for use under this License. ++III. Netscape and logo. ++This License does not grant any rights to use the trademarks "Netscape'', the "Netscape N and horizon'' logo or the "Netscape lighthouse" logo, "Netcenter", "Gecko", "Java" or "JavaScript", "Smart Browsing" even if such marks are included in the Original Code or Modifications. ++IV. Inability to Comply Due to Contractual Obligation. ++Prior to licensing the Original Code under this License, Netscape has licensed third party code for use in Netscape's Branded Code. To the extent that Netscape is limited contractually from making such third party code available under this License, Netscape may choose to reintegrate such code into Covered Code without being required to distribute such code in Source Code form, even if such code would otherwise be considered ''Modifications'' under this License. ++V. Use of Modifications and Covered Code by Initial Developer. ++V.1. In General. ++The obligations of Section 3 apply to Netscape, except to the extent specified in this Amendment, Section V.2 and V.3. ++V.2. Other Products. ++Netscape may include Covered Code in products other than the Netscape's Branded Code which are released by Netscape during the two (2) years following the release date of the Original Code, without such additional products becoming subject to the terms of this License, and may license such additional products on different terms from those contained in this License. ++V.3. Alternative Licensing. ++Netscape may license the Source Code of Netscape's Branded Code, including Modifications incorporated therein, without such Netscape Branded Code becoming subject to the terms of this License, and may license such Netscape Branded Code on different terms from those contained in this License. ++  ++VI. Litigation. ++Notwithstanding the limitations of Section 11 above, the provisions regarding litigation in Section 11(a), (b) and (c) of the License shall apply to all disputes relating to this License. ++ ++EXHIBIT A-Netscape Public License. ++  ++''The contents of this file are subject to the Netscape Public License Version 1.1 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.mozilla.org/NPL/ ++Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. ++The Original Code is Mozilla Communicator client code, released March 31, 1998. ++The Initial Developer of the Original Code is Netscape Communications Corporation. Portions created by Netscape are Copyright (C) 1998-1999 Netscape Communications Corporation. All Rights Reserved. ++Contributor(s): ______________________________________. ++  ++Alternatively, the contents of this file may be used under the terms of the _____ license (the  "[___] License"), in which case the provisions of [______] License are applicable  instead of those above.  If you wish to allow use of your version of this file only under the terms of the [____] License and not to allow others to use your version of this file under the NPL, indicate your decision by deleting  the provisions above and replace  them with the notice and other provisions required by the [___] License.  If you do not delete the provisions above, a recipient may use your version of this file under either the NPL or the [___] License." ++ ++MOZILLA PUBLIC LICENSE ++Version 1.1 ++ ++1. Definitions. ++1.0.1. "Commercial Use" means distribution or otherwise making the Covered Code available to a third party. ++1.1. ''Contributor'' means each entity that creates or contributes to the creation of Modifications. ++1.2. ''Contributor Version'' means the combination of the Original Code, prior Modifications used by a Contributor, and the Modifications made by that particular Contributor. ++1.3. ''Covered Code'' means the Original Code or Modifications or the combination of the Original Code and Modifications, in each case including portions thereof. ++1.4. ''Electronic Distribution Mechanism'' means a mechanism generally accepted in the software development community for the electronic transfer of data. ++1.5. ''Executable'' means Covered Code in any form other than Source Code. ++1.6. ''Initial Developer'' means the individual or entity identified as the Initial Developer in the Source Code notice required by Exhibit A. ++1.7. ''Larger Work'' means a work which combines Covered Code or portions thereof with code not governed by the terms of this License. ++1.8. ''License'' means this document. ++1.8.1. "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein. ++1.9. ''Modifications'' means any addition to or deletion from the substance or structure of either the Original Code or any previous Modifications. When Covered Code is released as a series of files, a Modification is: ++A. Any addition to or deletion from the contents of a file containing Original Code or previous Modifications. ++B. Any new file that contains any part of the Original Code or previous Modifications. ++  ++1.10. ''Original Code'' means Source Code of computer software code which is described in the Source Code notice required by Exhibit A as Original Code, and which, at the time of its release under this License is not already Covered Code governed by this License. ++1.10.1. "Patent Claims" means any patent claim(s), now owned or hereafter acquired, including without limitation,  method, process, and apparatus claims, in any patent Licensable by grantor. ++1.11. ''Source Code'' means the preferred form of the Covered Code for making modifications to it, including all modules it contains, plus any associated interface definition files, scripts used to control compilation and installation of an Executable, or source code differential comparisons against either the Original Code or another well known, available Covered Code of the Contributor's choice. The Source Code can be in a compressed or archival form, provided the appropriate decompression or de-archiving software is widely available for no charge. ++1.12. "You'' (or "Your")  means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License or a future version of this License issued under Section 6.1. For legal entities, "You'' includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, "control'' means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity. ++2. Source Code License. ++2.1. The Initial Developer Grant. ++The Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims: ++(a)  under intellectual property rights (other than patent or trademark) Licensable by Initial Developer to use, reproduce, modify, display, perform, sublicense and distribute the Original Code (or portions thereof) with or without Modifications, and/or as part of a Larger Work; and ++(b) under Patents Claims infringed by the making, using or selling of Original Code, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Code (or portions thereof). ++  ++(c) the licenses granted in this Section 2.1(a) and (b) are effective on the date Initial Developer first distributes Original Code under the terms of this License. ++(d) Notwithstanding Section 2.1(b) above, no patent license is granted: 1) for code that You delete from the Original Code; 2) separate from the Original Code;  or 3) for infringements caused by: i) the modification of the Original Code or ii) the combination of the Original Code with other software or devices. ++  ++2.2. Contributor Grant. ++Subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license ++  ++(a)  under intellectual property rights (other than patent or trademark) Licensable by Contributor, to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof) either on an unmodified basis, with other Modifications, as Covered Code and/or as part of a Larger Work; and ++(b) under Patent Claims infringed by the making, using, or selling of  Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: 1) Modifications made by that Contributor (or portions thereof); and 2) the combination of  Modifications made by that Contributor with its Contributor Version (or portions of such combination). ++(c) the licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first makes Commercial Use of the Covered Code. ++(d)    Notwithstanding Section 2.2(b) above, no patent license is granted: 1) for any code that Contributor has deleted from the Contributor Version; 2)  separate from the Contributor Version;  3)  for infringements caused by: i) third party modifications of Contributor Version or ii)  the combination of Modifications made by that Contributor with other software  (except as part of the Contributor Version) or other devices; or 4) under Patent Claims infringed by Covered Code in the absence of Modifications made by that Contributor. ++ ++3. Distribution Obligations. ++3.1. Application of License. ++The Modifications which You create or to which You contribute are governed by the terms of this License, including without limitation Section 2.2. The Source Code version of Covered Code may be distributed only under the terms of this License or a future version of this License released under Section 6.1, and You must include a copy of this License with every copy of the Source Code You distribute. You may not offer or impose any terms on any Source Code version that alters or restricts the applicable version of this License or the recipients' rights hereunder. However, You may include an additional document offering the additional rights described in Section 3.5. ++3.2. Availability of Source Code. ++Any Modification which You create or to which You contribute must be made available in Source Code form under the terms of this License either on the same media as an Executable version or via an accepted Electronic Distribution Mechanism to anyone to whom you made an Executable version available; and if made available via Electronic Distribution Mechanism, must remain available for at least twelve (12) months after the date it initially became available, or at least six (6) months after a subsequent version of that particular Modification has been made available to such recipients. You are responsible for ensuring that the Source Code version remains available even if the Electronic Distribution Mechanism is maintained by a third party. ++3.3. Description of Modifications. ++You must cause all Covered Code to which You contribute to contain a file documenting the changes You made to create that Covered Code and the date of any change. You must include a prominent statement that the Modification is derived, directly or indirectly, from Original Code provided by the Initial Developer and including the name of the Initial Developer in (a) the Source Code, and (b) in any notice in an Executable version or related documentation in which You describe the origin or ownership of the Covered Code. ++3.4. Intellectual Property Matters ++(a) Third Party Claims. ++If Contributor has knowledge that a license under a third party's intellectual property rights is required to exercise the rights granted by such Contributor under Sections 2.1 or 2.2, Contributor must include a text file with the Source Code distribution titled "LEGAL'' which describes the claim and the party making the claim in sufficient detail that a recipient will know whom to contact. If Contributor obtains such knowledge after the Modification is made available as described in Section 3.2, Contributor shall promptly modify the LEGAL file in all copies Contributor makes available thereafter and shall take other steps (such as notifying appropriate mailing lists or newsgroups) reasonably calculated to inform those who received the Covered Code that new knowledge has been obtained. ++(b) Contributor APIs. ++If Contributor's Modifications include an application programming interface and Contributor has knowledge of patent licenses which are reasonably necessary to implement that API, Contributor must also include this information in the LEGAL file. ++  ++          (c)    Representations. ++Contributor represents that, except as disclosed pursuant to Section 3.4(a) above, Contributor believes that Contributor's Modifications are Contributor's original creation(s) and/or Contributor has sufficient rights to grant the rights conveyed by this License. ++ ++3.5. Required Notices. ++You must duplicate the notice in Exhibit A in each file of the Source Code.  If it is not possible to put such notice in a particular Source Code file due to its structure, then You must include such notice in a location (such as a relevant directory) where a user would be likely to look for such a notice.  If You created one or more Modification(s) You may add your name as a Contributor to the notice described in Exhibit A.  You must also duplicate this License in any documentation for the Source Code where You describe recipients' rights or ownership rights relating to Covered Code.  You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Code. However, You may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear than any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer. ++3.6. Distribution of Executable Versions. ++You may distribute Covered Code in Executable form only if the requirements of Section 3.1-3.5 have been met for that Covered Code, and if You include a notice stating that the Source Code version of the Covered Code is available under the terms of this License, including a description of how and where You have fulfilled the obligations of Section 3.2. The notice must be conspicuously included in any notice in an Executable version, related documentation or collateral in which You describe recipients' rights relating to the Covered Code. You may distribute the Executable version of Covered Code or ownership rights under a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable version does not attempt to limit or alter the recipient's rights in the Source Code version from the rights set forth in this License. If You distribute the Executable version under a different license You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or any Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer. ++3.7. Larger Works. ++You may create a Larger Work by combining Covered Code with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Code. ++4. Inability to Comply Due to Statute or Regulation. ++If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Code due to statute, judicial order, or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be included in the LEGAL file described in Section 3.4 and must be included with all distributions of the Source Code. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it. ++5. Application of this License. ++This License applies to code to which the Initial Developer has attached the notice in Exhibit A and to related Covered Code. ++6. Versions of the License. ++6.1. New Versions. ++Netscape Communications Corporation (''Netscape'') may publish revised and/or new versions of the License from time to time. Each version will be given a distinguishing version number. ++6.2. Effect of New Versions. ++Once Covered Code has been published under a particular version of the License, You may always continue to use it under the terms of that version. You may also choose to use such Covered Code under the terms of any subsequent version of the License published by Netscape. No one other than Netscape has the right to modify the terms applicable to Covered Code created under this License. ++6.3. Derivative Works. ++If You create or use a modified version of this License (which you may only do in order to apply it to code which is not already Covered Code governed by this License), You must (a) rename Your license so that the phrases ''Mozilla'', ''MOZILLAPL'', ''MOZPL'', ''Netscape'', "MPL", ''NPL'' or any confusingly similar phrase do not appear in your license (except to note that your license differs from this License) and (b) otherwise make it clear that Your version of the license contains terms which differ from the Mozilla Public License and Netscape Public License. (Filling in the name of the Initial Developer, Original Code or Contributor in the notice described in Exhibit A shall not of themselves be deemed to be modifications of this License.) ++7. DISCLAIMER OF WARRANTY. ++COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS'' BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. ++8. TERMINATION. ++8.1.  This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. All sublicenses to the Covered Code which are properly granted shall survive any termination of this License. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive. ++8.2.  If You initiate litigation by asserting a patent infringement claim (excluding declatory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You file such action is referred to as "Participant")  alleging that: ++(a)  such Participant's Contributor Version directly or indirectly infringes any patent, then any and all rights granted by such Participant to You under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively, unless if within 60 days after receipt of notice You either: (i)  agree in writing to pay Participant a mutually agreeable reasonable royalty for Your past and future use of Modifications made by such Participant, or (ii) withdraw Your litigation claim with respect to the Contributor Version against such Participant.  If within 60 days of notice, a reasonable royalty and payment arrangement are not mutually agreed upon in writing by the parties or the litigation claim is not withdrawn, the rights granted by Participant to You under Sections 2.1 and/or 2.2 automatically terminate at the expiration of the 60 day notice period specified above. ++(b)  any software, hardware, or device, other than such Participant's Contributor Version, directly or indirectly infringes any patent, then any rights granted to You by such Participant under Sections 2.1(b) and 2.2(b) are revoked effective as of the date You first made, used, sold, distributed, or had made, Modifications made by that Participant. ++8.3.  If You assert a patent infringement claim against Participant alleging that such Participant's Contributor Version directly or indirectly infringes any patent where such claim is resolved (such as by license or settlement) prior to the initiation of patent infringement litigation, then the reasonable value of the licenses granted by such Participant under Sections 2.1 or 2.2 shall be taken into account in determining the amount or value of any payment or license. ++8.4.  In the event of termination under Sections 8.1 or 8.2 above,  all end user license agreements (excluding distributors and resellers) which have been validly granted by You or any distributor hereunder prior to termination shall survive termination. ++9. LIMITATION OF LIABILITY. ++UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. ++10. U.S. GOVERNMENT END USERS. ++The Covered Code is a ''commercial item,'' as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of ''commercial computer software'' and ''commercial computer software documentation,'' as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Code with only those rights set forth herein. ++11. MISCELLANEOUS. ++This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by California law provisions (except to the extent applicable law, if any, provides otherwise), excluding its conflict-of-law provisions. With respect to disputes in which at least one party is a citizen of, or an entity chartered or registered to do business in the United States of America, any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California, with venue lying in Santa Clara County, California, with the losing party responsible for costs, including without limitation, court costs and reasonable attorneys' fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License. ++12. RESPONSIBILITY FOR CLAIMS. ++As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability. ++13. MULTIPLE-LICENSED CODE. ++Initial Developer may designate portions of the Covered Code as "Multiple-Licensed".  "Multiple-Licensed" means that the Initial Developer permits you to utilize portions of the Covered Code under Your choice of the NPL or the alternative licenses, if any, specified by the Initial Developer in the file described in Exhibit A. ++ ++EXHIBIT A -Mozilla Public License. ++``The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at ++http://www.mozilla.org/MPL/ ++Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ++ANY KIND, either express or implied. See the License for the specific language governing rights and ++limitations under the License. ++The Original Code is ______________________________________. ++The Initial Developer of the Original Code is ________________________. Portions created by ++ ______________________ are Copyright (C) ______ _______________________. All Rights ++Reserved. ++Contributor(s): ______________________________________. ++Alternatively, the contents of this file may be used under the terms of the _____ license (the  "[___] License"), in which case the provisions of [______] License are applicable  instead of those above.  If you wish to allow use of your version of this file only under the terms of the [____] License and not to allow others to use your version of this file under the MPL, indicate your decision by deleting  the provisions above and replace  them with the notice and other provisions required by the [___] License.  If you do not delete the provisions above, a recipient may use your version of this file under either the MPL or the [___] License." ++[NOTE: The text of this Exhibit A may differ slightly from the text of the notices in the Source Code files of the Original Code. You should use the text of this Exhibit A rather than the text found in the Original Code Source Code for Your Modifications.] ++ ++%% This notice is provided with respect to Mesa 3-D graphics library v. 5, which may be included with this software: ++ ++Copyright (c) 2007 The Khronos Group Inc. ++ ++Permission is hereby granted, free of charge, to any person obtaining a ++copy of this software and/or associated documentation files (the ++"Materials"), to deal in the Materials without restriction, including ++without limitation the rights to use, copy, modify, merge, publish, ++distribute, sublicense, and/or sell copies of the Materials, and to ++permit persons to whom the Materials are furnished to do so, subject to ++the following conditions: ++ ++The above copyright notice and this permission notice shall be included ++in all copies or substantial portions of the Materials. ++ ++THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ++EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. ++IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY ++CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, ++TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE ++MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. ++ ++%% This notice is provided with respect to Byte Code Engineering Library (BCEL), which may be included with this software: ++ ++ Apache Software License ++ ++ /* ++==================================================================== * The Apache Software License, Version 1.1 ++ * ++ * Copyright (c) 2001 The Apache Software Foundation. Allrights ++ * reserved. ++ * ++ * Redistribution and use in source and binary forms, withor without ++ * modification, are permitted provided that the followingconditions ++ * are met: ++ * ++ * 1. Redistributions of source code must retain the abovecopyright ++ * notice, this list of conditions and the followingdisclaimer. ++ * ++ * 2. Redistributions in binary form must reproduce theabove copyright ++ * notice, this list of conditions and the followingdisclaimer in ++ * the documentation and/or other materials providedwith the ++ * distribution. ++ * ++ * 3. The end-user documentation included with theredistribution, ++ * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation ++(http://www.apache.org/)." ++ * Alternately, this acknowledgment may appear in thesoftware itself, ++ * if and wherever such third-party acknowledgmentsnormally appear. ++ * ++ * 4. The names "Apache" and "Apache Software Foundation"and ++ * "Apache BCEL" must not be used to endorse or promoteproducts ++ * derived from this software without prior writtenpermission. For ++ * written permission, please contact apache@apache.org. * ++ * 5. Products derived from this software may not be called"Apache", ++ * "Apache BCEL", nor may "Apache" appear in their name,without ++ * prior written permission of the Apache SoftwareFoundation. ++ * ++ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED ORIMPLIED ++ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIEDWARRANTIES ++ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSEARE ++ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWAREFOUNDATION OR ++ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,INCIDENTAL, ++ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,BUT NOT ++ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;LOSS OF ++ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVERCAUSED AND ++ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICTLIABILITY, ++ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING INANY WAY OUT ++ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THEPOSSIBILITY OF ++ * SUCH DAMAGE. ++ * ++==================================================================== * ++ * This software consists of voluntary contributions madeby many ++ * individuals on behalf of the Apache Software ++Foundation. For more ++ * information on the Apache Software Foundation, pleasesee ++ * . ++ */ ++ ++%% This notice is provided with respect to Regexp, Regular Expression Package, which may be included with this software: ++ ++The Apache Software License, Version 1.1 ++Copyright (c) 2001 The Apache Software Foundation. All rights ++reserved. ++Redistribution and use in source and binary forms, with or without modification,are permitted provided that the following conditions are met: ++ ++1. Redistributions of source code must retain the above copyright ++notice, this list of conditions and the following disclaimer. ++ ++2. Redistributions in binary form must reproduce the above copyright ++notice, this list of conditions and the following disclaimer in ++the documentation and/or other materials provided with the ++distribution. ++ ++3. The end-user documentation included with the redistribution, ++if any, must include the following acknowledgment: ++"This product includes software developed by the ++Apache Software Foundation (http://www.apache.org/)." ++Alternately, this acknowledgment may appear in the software itself, ++if and wherever such third-party acknowledgments normally appear. ++ ++4. The names "Apache" and "Apache Software Foundation" and ++"Apache Turbine" must not be used to endorse or promote products ++derived from this software without prior written permission. For ++written permission, please contact apache@apache.org. ++ ++5. Products derived from this software may not be called "Apache", ++"Apache Turbine", nor may "Apache" appear in their name, without ++prior written permission of the Apache Software Foundation. ++ ++THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED ++WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES ++OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE ++DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR ++ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF ++USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ++ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, ++OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT ++OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++SUCH DAMAGE. ++ ++==================================================================== ++This software consists of voluntary contributions made by many ++individuals on behalf of the Apache Software Foundation. For more ++information on the Apache Software Foundation, please see ++ ++http://www.apache.org. ++ ++%% This notice is provided with respect to CUP Parser Generator for Java, which may be included with this software: ++ ++CUP Parser Generator Copyright Notice, License, and Disclaimer ++ ++Copyright 1996-1999 by Scott Hudson, Frank Flannery, C. Scott Ananian ++Permission to use, copy, modify, and distribute this software and its ++documentation for any purpose and without fee is hereby granted, provided thatthe above copyright notice appear in all copies and that both the copyrightnotice and this permission notice and warranty disclaimer appear in ++supporting documentation, and that the names of the authors or their employersnot be used in advertising or publicity pertaining to distribution of ++the software without specific, written prior permission. ++ ++The authors and their employers disclaim all warranties with regard to thissoftware, including all implied warranties of merchantability and ++fitness. In no event shall the authors or their employers be liable for anyspecial, indirect or consequential damages or any damages whatsoever ++resulting from loss of use, data or profits, whether in an action of contract,negligence or other tortious action, arising out of or in connection withthe use or performance of this software. ++ ++%% This notice is provided with respect to SAX v. 2.0.1, which may be included with this software: ++ ++Copyright Status ++ ++ SAX is free! ++ ++ In fact, it's not possible to own a license to SAX, since it's been placed in the public ++ domain. ++ ++ No Warranty ++ ++ Because SAX is released to the public domain, there is no warranty for the design or for ++ the software implementation, to the extent permitted by applicable law. Except when ++ otherwise stated in writing the copyright holders and/or other parties provide SAX "as is" ++ without warranty of any kind, either expressed or implied, including, but not limited to, the ++ implied warranties of merchantability and fitness for a particular purpose. The entire risk as ++ to the quality and performance of SAX is with you. Should SAX prove defective, you ++ assume the cost of all necessary servicing, repair or correction. ++ ++ In no event unless required by applicable law or agreed to in writing will any copyright ++ holder, or any other party who may modify and/or redistribute SAX, be liable to you for ++ damages, including any general, special, incidental or consequential damages arising out of ++ the use or inability to use SAX (including but not limited to loss of data or data being ++ rendered inaccurate or losses sustained by you or third parties or a failure of the SAX to ++ operate with any other programs), even if such holder or other party has been advised of ++ the possibility of such damages. ++ ++ Copyright Disclaimers ++ ++ This page includes statements to that effect by David Megginson, who would have been ++ able to claim copyright for the original work. ++ SAX 1.0 ++ ++ Version 1.0 of the Simple API for XML (SAX), created collectively by the membership of ++ the XML-DEV mailing list, is hereby released into the public domain. ++ ++ No one owns SAX: you may use it freely in both commercial and non-commercial ++ applications, bundle it with your software distribution, include it on a CD-ROM, list the ++ source code in a book, mirror the documentation at your own web site, or use it in any ++ other way you see fit. ++ ++ David Megginson, sax@megginson.com ++ 1998-05-11 ++ ++ SAX 2.0 ++ ++ I hereby abandon any property rights to SAX 2.0 (the Simple API for XML), and release ++ all of the SAX 2.0 source code, compiled code, and documentation contained in this ++ distribution into the Public Domain. SAX comes with NO WARRANTY or guarantee of ++ fitness for any purpose. ++ ++ David Megginson, david@megginson.com ++ 2000-05-05 ++ ++%% This notice is provided with respect to Cryptix, which may be included with this software: ++ ++Cryptix General License ++ ++Copyright © 1995-2003 The Cryptix Foundation Limited. All rights reserved. ++Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions aremet: ++ ++ 1.Redistributions of source code must retain the copyright notice, this list of conditions and the following disclaimer. 2.Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. ++THIS SOFTWARE IS PROVIDED BY THE CRYPTIX FOUNDATION LIMITED AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS ORIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FORA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE CRYPTIX FOUNDATION LIMITED OR CONTRIBUTORS BELIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOTLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESSINTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OFTHE POSSIBILITY OF SUCH DAMAGE. ++ ++%% This notice is provided with respect to X Window System, which may be included with this software: ++ ++Copyright The Open Group ++ ++Permission to use, copy, modify, distribute, and sell this software and itsdocumentation for any purpose is hereby granted without fee, provided that theabove copyright notice appear in all copies and that both that copyright noticeand this permission notice appear in supporting documentation. ++ ++The above copyright notice and this permission notice shall be included in allcopies or substantial portions of the Software. ++ ++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ORIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESSFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUPBE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OFCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THESOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ++ ++Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. ++ ++Portions also covered by other licenses as noted in the above URL. ++ ++%% This notice is provided with respect to Retroweaver, which may be included with this software: ++ ++Copyright (c) February 2004, Toby Reyelts ++All rights reserved. ++ ++Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: ++ ++Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. ++Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. ++Neither the name of Toby Reyelts nor the names of his contributors may be used to endorse or promote products derived from this software without specific prior written permission. ++ ++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICTLIABILITY, ++OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++%% This notice is provided with respect to stripper, which may be included with this software: ++ ++Stripper : debug information stripper ++ Copyright (c) 2003 Kohsuke Kawaguchi ++ All rights reserved. ++ ++ Redistribution and use in source and binary forms, with or without ++ modification, are permitted provided that the following conditions ++ are met: ++ 1. Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ 2. Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holders nor the names of its ++ contributors may be used to endorse or promote products derived from this software without specific prior written permission. ++ ++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR ++ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF ++ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++%% This notice is provided with respect to libpng official PNG reference library, which may be included with this software: ++ ++This copy of the libpng notices is provided for your convenience. In case ofany discrepancy between this copy and the notices in the file png.h that isincluded in the libpng distribution, the latter shall prevail. ++ ++COPYRIGHT NOTICE, DISCLAIMER, and LICENSE: ++ ++If you modify libpng you may insert additional notices immediately followingthis sentence. ++ ++libpng version 1.2.6, December 3, 2004, is ++Copyright (c) 2004 Glenn Randers-Pehrson, and is ++distributed according to the same disclaimer and license as libpng-1.2.5with the following individual added to the list of Contributing Authors ++ Cosmin Truta ++ ++libpng versions 1.0.7, July 1, 2000, through 1.2.5 - October 3, 2002, areCopyright (c) 2000-2002 Glenn Randers-Pehrson, and are ++distributed according to the same disclaimer and license as libpng-1.0.6with the following individuals added to the list of Contributing Authors ++ Simon-Pierre Cadieux ++ Eric S. Raymond ++ Gilles Vollant ++ ++and with the following additions to the disclaimer: ++ ++ There is no warranty against interference with your enjoyment of the library or against infringement. There is no warranty that our ++ efforts or the library will fulfill any of your particular purposes or needs. This library is provided with all faults, and the entire risk of satisfactory quality, performance, accuracy, and effort is with the user. ++ ++libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, areCopyright (c) 1998, 1999 Glenn Randers-Pehrson, and are ++distributed according to the same disclaimer and license as libpng-0.96,with the following individuals added to the list of Contributing Authors: ++ Tom Lane ++ Glenn Randers-Pehrson ++ Willem van Schaik ++ ++libpng versions 0.89, June 1996, through 0.96, May 1997, are ++Copyright (c) 1996, 1997 Andreas Dilger ++Distributed according to the same disclaimer and license as libpng-0.88,with the following individuals added to the list of Contributing Authors: ++ John Bowler ++ Kevin Bracey ++ Sam Bushell ++ Magnus Holmgren ++ Greg Roelofs ++ Tom Tanner ++ ++libpng versions 0.5, May 1995, through 0.88, January 1996, are ++Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc. ++ ++For the purposes of this copyright and license, "Contributing Authors"is defined as the following set of individuals: ++ ++ Andreas Dilger ++ Dave Martindale ++ Guy Eric Schalnat ++ Paul Schmidt ++ Tim Wegner ++ ++The PNG Reference Library is supplied "AS IS". The Contributing Authorsand Group 42, Inc. disclaim all warranties, expressed or implied, ++including, without limitation, the warranties of merchantability and offitness for any purpose. The Contributing Authors and Group 42, Inc. ++assume no liability for direct, indirect, incidental, special, exemplary,or consequential damages, which may result from the use of the PNG ++Reference Library, even if advised of the possibility of such damage. ++ ++Permission is hereby granted to use, copy, modify, and distribute thissource code, or portions hereof, for any purpose, without fee, subjectto the following restrictions: ++ ++1. The origin of this source code must not be misrepresented. ++ ++2. Altered versions must be plainly marked as such and must not ++ be misrepresented as being the original source. ++ ++3. This Copyright notice may not be removed or altered from any ++ source or altered source distribution. ++ ++The Contributing Authors and Group 42, Inc. specifically permit, withoutfee, and encourage the use of this source code as a component to ++supporting the PNG file format in commercial products. If you use thissource code in a product, acknowledgment is not required but would be ++appreciated. ++ ++ ++A "png_get_copyright" function is available, for convenient use in "about"boxes and the like: ++ ++ printf("%s",png_get_copyright(NULL)); ++ ++Also, the PNG logo (in PNG format, of course) is supplied in the ++files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31). ++ ++Libpng is OSI Certified Open Source Software. OSI Certified Open Source is acertification mark of the Open Source Initiative. ++ ++Glenn Randers-Pehrson ++glennrp at users.sourceforge.net ++December 3, 2004 ++ ++%% This notice is provided with respect to Libungif - An uncompressed GIF library, which may be included with this software: ++ ++The GIFLIB distribution is Copyright (c) 1997 Eric S. Raymond ++ ++Permission is hereby granted, free of charge, to any person obtaining a copyof this software and associated documentation files (the "Software"), to dealin the Software without restriction, including without limitation the rightsto use, copy, modify, merge, publish, distribute, sublicense, and/or sellcopies of the Software, and to permit persons to whom the Software is ++furnished to do so, subject to the following conditions: ++ ++The above copyright notice and this permission notice shall be included inall copies or substantial portions of the Software. ++ ++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ORIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THEAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHERLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS INTHE SOFTWARE. ++ ++%% This notice is provided with respect to XML Resolver library, Xalan J2, and StAX API, which may be included with this software: ++ ++[Apache 2.0 license removed from this file. On Debian systems the text of ++ the Apache 2.0 license can be found in /usr/share/common-licenses/Apache-2.0 ] ++ ++%% Some Portions licensed from IBM are available at: ++http://www.ibm.com/software/globalization/icu/ ++ ++%% This notice is provided with respect to ICU4J, ICU 1.8.1 and later, which may be included with this software: ++ ++ICU License - ICU 1.8.1 and later COPYRIGHT AND PERMISSION NOTICE Cop ++yright (c) ++1995-2003 International Business Machines Corporation and others All rightsreserved. Permission is hereby granted, free of charge, to any person obtaininga copy of this software and associated documentation files (the "Software"), todeal in the Software without restriction, including without limitation therights to use, copy, modify, merge, publish, distribute, and/or sell copies ofthe Software, and to permit persons to whom the Software is furnished to do so,provided that the above copyright notice(s) and this permission notice appear inall copies of the Software and that both the above copyright notice(s) and thispermission notice appear in supporting documentation. THE SOFTWARE IS PROVIDED"AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOTLIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSEAND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHTHOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY C ++ LAIM, OR ANYSPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTINGFROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCEOR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE ORPERFORMANCE OF THIS SOFTWARE. Except as contained in this notice, the name of acopyright holder shall not be used in advertising or otherwise to promote thesale, use or other dealings in this Software without prior written authorizationof the copyright holder. ++ ++%% This notice is provided with respect to Jing, which may be included with this software: ++ ++Jing Copying Conditions ++ ++Copyright (c) 2001-2003 Thai Open Source Software Center Ltd ++All rights reserved. ++ ++Redistribution and use in source and binary forms, with or without modification,are permitted provided that the following conditions are met: ++ ++ * Redistributions of source code must retain the above copyright notice,this list of conditions and the following disclaimer. ++ * Redistributions in binary form must reproduce the above copyright notice,this list of conditions and the following disclaimer in the documentation and/orother materials provided with the distribution. ++ * Neither the name of the Thai Open Source Software Center Ltd nor the namesof its contributors may be used to endorse or promote products derived from thissoftware without specific prior written permission. ++ ++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" ANDANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIEDWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE AREDISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANYDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ONANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THISSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++%% This notice is provided with respect to RELAX NG Object Model/Parser, which may be included with this software: ++ ++ ++The MIT License ++ ++Copyright (c) ++ ++Permission is hereby granted, free of charge, to any person obtaining a copy ofthis software and associated documentation files (the "Software"), to deal inthe Software without restriction, including without limitation the rights touse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies ofthe Software, and to permit persons to whom the Software is furnished to do so,subject to the following conditions: ++ ++The above copyright notice and this permission notice shall be included in allcopies or substantial portions of the Software. ++ ++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ORIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESSFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS ORCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHERIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR INCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ++ ++%% This notice is provided with respect to XFree86-VidMode Extension, which may be included with this software: ++ ++Version 1.1 of XFree86 ProjectLicence. ++ ++ Copyright (C) 1994-2004 The XFree86 Project, Inc. All rights reserved. ++ ++ Permission is hereby granted, free of charge, to any person obtaining a copyof this software and associated documentation files (the "Software"), to deal inthe Software without restriction, including without limitation the rights touse, copy, modify, merge, publish, distribute, sublicence, and/or sell copies ofthe Software, and to permit persons to whom the Software is furnished to do so,subject to the following conditions: ++ ++ 1. Redistributions of source code must retain the above copyright notice,this list of conditions, and the following disclaimer. ++ 2. Redistributions in binary form must reproduce the above copyrightnotice, this list of conditions and the following disclaimer in the ++documentation and/or other materials provided with the distribution, and in thesame place and form as other copyright, license and disclaimer information. 3. The end-user documentation included with the redistribution, if any,must include the following acknowledgment: "This product includes softwaredeveloped by The XFree86 Project, Inc (http://www.xfree86.org/) and itscontributors", in the same place and form as other third-party acknowledgments.Alternately, this acknowledgment may appear in the software itself, in the sameform and location as other such third-party acknowledgments. ++ 4. Except as contained in this notice, the name of The XFree86 Project,Inc shall not be used in advertising or otherwise to promote the sale, use orother dealings in this Software without prior written authorization from TheXFree86 Project, Inc. ++ ++ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY ANDFITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE XFREE86PROJECT, INC OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; ORBUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER INCONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISINGIN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITYOF SUCH DAMAGE. ++ ++%% This notice is provided with respect to XML Security, which may be included with this software: ++ ++ The Apache Software License, ++ Version 1.1 ++ ++ ++ PDF ++ ++ ++ Copyright (C) 2002 The Apache SoftwareFoundation. ++ All rights reserved. Redistribution anduse in ++ source and binary forms, with or withoutmodifica- ++ tion, are permitted provided that thefollowing ++ conditions are met: 1. Redistributions ofsource ++ code must retain the above copyrightnotice, this ++ list of conditions and the followingdisclaimer. ++ 2. Redistributions in binary form mustreproduce ++ the above copyright notice, this list of conditions and the following disclaimerin the ++ documentation and/or other materialsprovided with ++ the distribution. 3. The end-userdocumentation ++ included with the redistribution, if any,must ++ include the following acknowledgment:"This ++ product includes software developed bythe Apache ++ Software Foundation ++(http://www.apache.org/)." ++ Alternately, this acknowledgment mayappear in the ++ software itself, if and wherever suchthird-party ++ acknowledgments normally appear. 4. Thenames ++ "Apache Forrest" and "Apache SoftwareFoundation" ++ must not be used to endorse or promoteproducts ++ derived from this software without priorwritten ++ permission. For written permission,please contact ++ apache@apache.org. 5. Products derivedfrom this ++ software may not be called "Apache", normay ++ "Apache" appear in their name, withoutprior ++ written permission of the Apache Software Foundation. THIS SOFTWARE IS PROVIDED``AS IS'' ++ AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THEIMPLIED ++ WARRANTIES OF MERCHANTABILITY AND FITNESSFOR A ++ PARTICULAR PURPOSE ARE DISCLAIMED. IN NOEVENT ++ SHALL THE APACHE SOFTWARE FOUNDATION ORITS ++ CONTRIBUTORS BE LIABLE FOR ANY DIRECT,INDIRECT, ++ INCIDENTAL, SPECIAL, EXEMPLARY, ORCONSEQUENTIAL ++ DAMAGES (INCLU- DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ORSERVICES; LOSS ++ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANYTHEORY OF ++ LIABILITY, WHETHER IN CONTRACT, STRICTLIABILITY, ++ OR TORT (INCLUDING NEGLIGENCE OROTHERWISE) ++ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THEPOSSIBILITY OF ++ SUCH DAMAGE. This software consists ofvoluntary ++ contributions made by many individuals onbehalf ++ of the Apache Software Foundation. Formore ++ information on the Apache SoftwareFoundation, ++ please see . ++ ++%% This notice is provided with respect to Independent JPEG Group's software (libjpeg), which may be included with this software: ++ ++In plain English: ++ ++1. We don't promise that this software works. (But if you find any bugs, ++ please let us know!) ++2. You can use this software for whatever you want. You don't have to pay us. ++3. You may not pretend that you wrote this software. If you use it in a program, you must acknowledge somewhere in your documentation that you've used the IJG code. ++ ++In legalese: ++ ++The authors make NO WARRANTY or representation, either express or implied, with respect to this software, its quality, accuracy, merchantability, or fitness for a particular purpose. This software is provided "AS IS", and you, its user, assume the entire risk as to its quality and accuracy. ++ ++This software is copyright (C) 1991-1998, Thomas G. Lane. ++All Rights Reserved except as specified below. ++ ++Permission is hereby granted to use, copy, modify, and distribute this software (or portions thereof) for any purpose, without fee, subject to these conditions: ++ ++(1) If any part of the source code for this software is distributed, then this ++README file must be included, with this copyright and no-warranty notice unaltered; and any additions, deletions, or changes to the original files must be clearly indicated in accompanying documentation. ++ ++(2) If only executable code is distributed, then the accompanying documentation must state that "this software is based in part on the work of the Independent JPEG Group". ++ ++(3) Permission for use of this software is granted only if the user accepts full responsibility for any undesirable consequences; the authors accept NO LIABILITY for damages of any kind. ++ ++These conditions apply to any software derived from or based on the IJG code, not just to the unmodified library. If you use our work, you ought to acknowledge us. ++ ++Permission is NOT granted for the use of any IJG author's name or company name in advertising or publicity relating to this software or products derived from it. This software may be referred to only as "the Independent JPEG Group's software". ++ ++We specifically permit and encourage the use of this software as the basis of commercial products, provided that all warranty or liability claims are assumed by the product vendor. ++ ++ansi2knr.c is included in this distribution by permission of L. Peter Deutsch, sole proprietor of its copyright holder, Aladdin Enterprises of Menlo Park, CA. ansi2knr.c is NOT covered by the above copyright and conditions, but instead by the usual distribution terms of the Free Software Foundation; principally, that you must include source code if you redistribute it. (See the file ansi2knr.c for full details.) However, since ansi2knr.c is not needed as part of any program generated from the IJG code, this does not limit you more than the foregoing paragraphs do. ++ ++The Unix configuration script "configure" was produced with GNU Autoconf. It is copyright by the Free Software Foundation but is freely distributable. The same holds for its supporting scripts (config.guess, config.sub, ltconfig, ltmain.sh). Another support script, install-sh, is copyright by M.I.T. but is also freely distributable. ++ ++It appears that the arithmetic coding option of the JPEG spec is covered by patents owned by IBM, AT&T, and Mitsubishi. Hence arithmetic coding cannot legally be used without obtaining one or more licenses. For this reason, support for arithmetic coding has been removed from the free JPEG software. (Since arithmetic coding provides only a marginal gain over the unpatented Huffman mode, it is unlikely that very many implementations will support it.) So far as we are aware, there are no patent restrictions on the remaining code. ++ ++The IJG distribution formerly included code to read and write GIF files. To avoid entanglement with the Unisys LZW patent, GIF reading support has been removed altogether, and the GIF writer has been simplified to produce "uncompressed GIFs". This technique does not use the LZW algorithm; the resulting GIF files are larger than usual, but are readable by all standard GIF decoders. ++ ++We are required to state that ++ "The Graphics Interchange Format(c) is the Copyright property of ++ CompuServe Incorporated. GIF(sm) is a Service Mark property of ++ CompuServe Incorporated." ++ ++%% This notice is provided with respect to X Resize and Rotate (Xrandr) Extension, which may be included with this software: ++2. XFree86 License ++ ++XFree86 code without an explicit copyright is covered by the following ++copyright/license: ++ ++Copyright (C) 1994-2003 The XFree86 Project, Inc. All Rights Reserved. ++ ++Permission is hereby granted, free of charge, to any person obtaining a copy of ++this software and associated documentation files (the "Software"), to deal in ++the Software without restriction, including without limitation the rights to ++use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of ++the Software, and to permit persons to whom the Software is furnished to do so, ++subject to the following conditions: ++ ++The above copyright notice and this permission notice shall be included in all ++copies or substantial portions of the Software. ++ ++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS ++FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE XFREE86 ++PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ++ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION ++WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ++ ++Except as contained in this notice, the name of the XFree86 Project shall not be ++used in advertising or otherwise to promote the sale, use or other dealings in ++this Software without prior written authorization from the XFree86 Project. ++ ++%% This notice is provided with respect to fontconfig, which may be included with this software: ++Id: COPYING,v 1.3 2003/04/04 20:17:40 keithp Exp $ ++Copyright 2001,2003 Keith Packard ++ ++Permission to use, copy, modify, distribute, and sell this software and its ++documentation for any purpose is hereby granted without fee, provided that ++the above copyright notice appear in all copies and that both that ++copyright notice and this permission notice appear in supporting ++documentation, and that the name of Keith Packard not be used in ++advertising or publicity pertaining to distribution of the software without ++specific, written prior permission. Keith Packard makes no ++representations about the suitability of this software for any purpose. It ++is provided "as is" without express or implied warranty. ++ ++KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, ++INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO ++EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR ++CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, ++DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER ++TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR ++PERFORMANCE OF THIS SOFTWARE. ++%% This notice is provided with respect to XFree86, which may be included with this software: ++Copyright (C) 1994-2002 The XFree86 Project, Inc. All Rights Reserved. ++ ++Permission is hereby granted, free of charge, to any person obtaining a copy of ++this software and associated ++documentation files (the "Software"), to deal in the Software without ++restriction, including without limitation ++the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or ++sell copies of the Software, and to ++permit persons to whom the Software is furnished to do so, subject to the ++following conditions: ++ ++The above copyright notice and this permission notice shall be included in all ++copies or substantial portions of the ++Software. ++ ++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++IMPLIED, INCLUDING BUT ++NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR ++PURPOSE AND ++NONINFRINGEMENT. IN NO EVENT SHALL THE XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, ++DAMAGES OR OTHER ++LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, ++OUT OF OR IN ++CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ++ ++Except as contained in this notice, the name of the XFree86 Project shall not be ++used in advertising or otherwise ++to promote the sale, use or other dealings in this Software without prior ++written authorization from the XFree86 ++Project. ++%% This notice is provided with respect to Fast Infoset, which may be included with this software: ++* Fast Infoset ver. 0.1 software ("Software") ++* ++* Copyright, 2004-2005 Sun Microsystems, Inc. All Rights Reserved. ++* ++* Software is licensed under the Apache License, Version 2.0 (the "License"); ++* you may not use this file except in compliance with the License. You may ++* obtain a copy of the License at: ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT ++* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the ++* License for the specific language governing permissions and limitations. ++* ++* Sun supports and benefits from the global community of open source ++* developers, and thanks the community for its important contributions and ++* open standards-based technology, which Sun has adopted into many of its ++* products. ++* ++* Please note that portions of Software may be provided with notices and ++* open source licenses from such communities and third parties that govern the ++* use of those portions, and any licenses granted hereunder do not alter any ++* rights and obligations you may have under such open source licenses, ++* however, the disclaimer of warranty and limitation of liability provisions ++* in this License will apply to all Software in this distribution. ++* ++* You acknowledge that the Software is not designed, licensed or intended ++* for use in the design, construction, operation or maintenance of any nuclear ++* facility. ++* ++* Apache License ++* Version 2.0, January 2004 ++* http://www.apache.org/licenses/ ++* ++*/ ++/* ++* ==================================================================== ++* ++* This code is subject to the freebxml License, Version 1.1 ++* ++* Copyright (c) 2001 - 2005 freebxml.org. All rights reserved. ++* ++* $Header: /cvs/fi/FastInfoset/src/com/sun/xml/internal/fastinfoset/AbstractResourceBundle.java,v 1.2 ++*  ==================================================================== ++*/ ++%% This notice is provided with respect to Kerberos, which may be included with this software: ++ ++/* ++ * Copyright (C) 1998 by the FundsXpress, INC. ++ * ++ * All rights reserved. ++ * ++ * Export of this software from the United States of America may require ++ * a specific license from the United States Government.  It is the ++ * responsibility of any person or organization contemplating export to ++ * obtain such a license before exporting. ++ * ++ * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and ++ * distribute this software and its documentation for any purpose and ++ * without fee is hereby granted, provided that the above copyright ++ * notice appear in all copies and that both that copyright notice and ++ * this permission notice appear in supporting documentation, and that ++ * the name of FundsXpress. not be used in advertising or publicity pertaining ++ * to distribution of the software without specific, written prior ++ * permission. FundsXpress makes no representations about the suitability of ++ * this software for any purpose. It is provided "as is" without express ++ * or implied warranty. ++ * ++ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR ++ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ++ * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. ++ */ ++ ++%% This notice is provided with respect to Unicode's CLDR data repository, which may be included with this software: ++ ++ Unicode Copyright ++ ++ For the general privacy policy governing access to this site, see the ++Unicode Privacy Policy. For trademark usage, see the the Unicode Consortium ++Trademarks and Logo Policy. ++ Notice to End User: Terms of Use ++ Carefully read the following legal agreement ("Agreement"). Use or copying ++of the software and/or codes provided with this agreement (The "Software") ++constitutes your acceptance of these terms ++ ++ 1. Unicode Copyright. ++ 1. Copyright © 1991-2005 Unicode, Inc. All rights reserved. ++ 2. Certain documents and files on this website contain a legend ++indicating that "Modification is permitted." Any person is hereby authorized, ++without fee, to modify such documents and files to create derivative works ++conforming to the Unicode® Standard, subject to Terms and Conditions herein. ++ 3. Any person is hereby authorized, without fee, to view, use, ++reproduce, and distribute all documents and files solely for informational ++purposes in the creation of products supporting the Unicode Standard, subject to ++the Terms and Conditions herein. ++ 4. Further specifications of rights and restrictions pertaining to ++the use of the particular set of data files known as the "Unicode Character ++Database" can be found in Exhibit 1. ++ 5. Further specifications of rights and restrictions pertaining to ++the use of the particular set of files that constitute the online edition of The ++Unicode Standard, Version 4.0, may be found in V4.0 online edition. ++ 6. No license is granted to "mirror" the Unicode website where a ++fee is charged for access to the "mirror" site. ++ 7. Modification is not permitted with respect to this document. All ++copies of this document must be verbatim. ++ 2. Restricted Rights Legend. Any technical data or software which is ++licensed to the United States of America, its agencies and/or instrumentalities ++under this Agreement is commercial technical data or commercial computer ++software developed exclusively at private expense as defined in FAR 2.101, or ++DFARS 252.227-7014 (June 1995), as applicable. For technical data, use, ++duplication, or disclosure by the Government is subject to restrictions as set ++forth in DFARS 202.227-7015 Technical Data, Commercial and Items (Nov 1995) and ++this Agreement. For Software, in accordance with FAR 12-212 or DFARS 227-7202, ++as applicable, use, duplication or disclosure by the Government is subject to ++the restrictions set forth in this Agreement. ++ 3. Warranties and Disclaimers. ++ 1. This publication and/or website may include technical or ++typographical errors or other inaccuracies . Changes are periodically added to ++the information herein; these changes will be incorporated in new editions of ++the publication and/or website. Unicode may make improvements and/or changes in ++the product(s) and/or program(s) described in this publication and/or website at ++any time. ++ 2. If this file has been purchased on magnetic or optical media ++from Unicode, Inc. the sole and exclusive remedy for any claim will be exchange ++of the defective media within ninety (90) days of original purchase. ++ 3. EXCEPT AS PROVIDED IN SECTION C.2, THIS PUBLICATION AND/OR ++SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND EITHER EXPRESS, ++IMPLIED, OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTIES OF ++MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. UNICODE ++AND ITS LICENSORS ASSUME NO RESPONSIBILITY FOR ERRORS OR OMISSIONS IN THIS ++PUBLICATION AND/OR SOFTWARE OR OTHER DOCUMENTS WHICH ARE REFERENCED BY OR LINKED ++TO THIS PUBLICATION OR THE UNICODE WEBSITE. ++ 4. Waiver of Damages. In no event shall Unicode or its licensors be ++liable for any special, incidental, indirect or consequential damages of any ++kind, or any damages whatsoever, whether or not Unicode was advised of the ++possibility of the damage, including, without limitation, those resulting from ++the following: loss of use, data or profits, in connection with the use, ++modification or distribution of this information or its derivatives. ++ 5. Trademarks. ++ 1. Unicode and the Unicode logo are registered trademarks of ++Unicode, Inc. ++ 2. This site contains product names and corporate names of other ++companies. All product names and company names and logos mentioned herein are ++the trademarks or registered trademarks of their respective owners. Other ++products and corporate names mentioned herein which are trademarks of a third ++party are used only for explanation and for the owners' benefit and with no ++intent to infringe. ++ 3. Use of third party products or information referred to herein is ++at the user's risk. ++ 6. Miscellaneous. ++ 1. Jurisdiction and Venue. This server is operated from a location ++in the State of California, United States of America. Unicode makes no ++representation that the materials are appropriate for use in other locations. If ++you access this server from other locations, you are responsible for compliance ++with local laws. This Agreement, all use of this site and any claims and damages ++resulting from use of this site are governed solely by the laws of the State of ++California without regard to any principles which would apply the laws of a ++different jurisdiction. The user agrees that any disputes regarding this site ++shall be resolved solely in the courts located in Santa Clara County, ++California. The user agrees said courts have personal jurisdiction and agree to ++waive any right to transfer the dispute to any other forum. ++ 2. Modification by Unicode Unicode shall have the right to modify ++this Agreement at any time by posting it to this site. The user may not assign ++any part of this Agreement without Unicode's prior written consent. ++ 3. Taxes. The user agrees to pay any taxes arising from access to ++this website or use of the information herein, except for those based on ++Unicode's net income. ++ 4. Severability. If any provision of this Agreement is declared ++invalid or unenforceable, the remaining provisions of this Agreement shall ++remain in effect. ++ 5. Entire Agreement. This Agreement constitutes the entire ++agreement between the parties. ++ ++EXHIBIT 1 ++UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE ++ ++ Unicode Data Files include all data files under the directories ++http://www.unicode.org/Public/ and http://www.unicode.org/reports/. Unicode ++Software includes any source code under the directories ++http://www.unicode.org/Public/ and http://www.unicode.org/reports/. ++ ++ NOTICE TO USER: Carefully read the following legal agreement. BY ++DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES ++("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND ++AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU ++DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES ++OR SOFTWARE. ++ ++ COPYRIGHT AND PERMISSION NOTICE ++ ++ Copyright Ã?Â,Ã,© 1991-2004 Unicode, Inc. All rights reserved. Distributed under ++the Terms of Use in http://www.unicode.org/copyright.html. ++ ++ Permission is hereby granted, free of charge, to any person obtaining a copy ++of the Unicode data files and associated documentation (the "Data Files") or ++Unicode software and associated documentation (the "Software") to deal in the ++Data Files or Software without restriction, including without limitation the ++rights to use, copy, modify, merge, publish, distribute, and/or sell copies of ++the Data Files or Software, and to permit persons to whom the Data Files or ++Software are furnished to do so, provided that (a) the above copyright notice(s) ++and this permission notice appear with all copies of the Data Files or Software, ++(b) both the above copyright notice(s) and this permission notice appear in ++associated documentation, and (c) there is clear notice in each modified Data ++File or in the Software as well as in the documentation associated with the Data ++File(s) or Software that the data or software has been modified. ++ ++ THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY ++KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD ++PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS ++NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL ++DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, ++WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING ++OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. ++ ++ Except as contained in this notice, the name of a copyright holder shall not ++be used in advertising or otherwise to promote the sale, use or other dealings ++in these Data Files or Software without prior written authorization of the ++copyright holder. ++ ++ Unicode and the Unicode logo are trademarks of Unicode, Inc., and may be ++registered in some jurisdictions. All other trademarks and registered trademarks ++mentioned herein are the property of their respective owners. ++%% This notice is provided with respect to RSA PKCS#11 Header Files & Specification, which may be included with this software: ++ ++/* ++ * Copyright (C) 1998 by the FundsXpress, INC. ++ * ++ * All rights reserved. ++ * ++ * Export of this software from the United States of America may require ++ * a specific license from the United States Government.  It is the ++ * responsibility of any person or organization contemplating export to ++ * obtain such a license before exporting. ++ * ++ * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and ++ * distribute this software and its documentation for any purpose and ++ * without fee is hereby granted, provided that the above copyright ++ * notice appear in all copies and that both that copyright notice and ++ * this permission notice appear in supporting documentation, and that ++ * the name of FundsXpress. not be used in advertising or publicity pertaining ++ * to distribution of the software without specific, written prior ++ * permission.  FundsXpress makes no representations about the suitability of ++ * this software for any purpose.  It is provided "as is" without express ++ * or implied warranty. ++ * ++ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR ++ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ++ * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. ++ */ ++ ++%% This notice is provided with respect to certain files/code which may included in the implementation of AWT within the software: ++ ++****************************************************** ++BEGIN  src/solaris/native/sun/awt/HPkeysym.h ++Copyright 1987, 1998  The Open Group ++ ++All Rights Reserved. ++ ++The above copyright notice and this permission notice shall be included ++in all copies or substantial portions of the Software. ++ ++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. ++IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR ++OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ++ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR ++OTHER DEALINGS IN THE SOFTWARE. ++ ++Except as contained in this notice, the name of The Open Group shall ++not be used in advertising or otherwise to promote the sale, use or ++other dealings in this Software without prior written authorization ++from The Open Group. ++ ++Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts, ++ ++All Rights Reserved ++ ++Permission to use, copy, modify, and distribute this software and its ++documentation for any purpose and without fee is hereby granted, ++provided that the above copyright notice appear in all copies and that ++both that copyright notice and this permission notice appear in ++supporting documentation, and that the names of Hewlett Packard ++or Digital not be ++used in advertising or publicity pertaining to distribution of the ++software without specific, written prior permission. ++ ++DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ++ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL ++DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ++ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, ++WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ++ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS ++SOFTWARE. ++ ++HEWLETT-PACKARD MAKES NO WARRANTY OF ANY KIND WITH REGARD ++TO THIS SOFWARE, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ++WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR ++PURPOSE.  Hewlett-Packard shall not be liable for errors ++contained herein or direct, indirect, special, incidental or ++consequential damages in connection with the furnishing, ++performance, or use of this material. ++ ++END  src/solaris/native/sun/awt/HPkeysym.h ++****************************************************** ++BEGIN  src/solaris/native/sun/awt/Xinerama.c ++/***************************************************************** ++Copyright (c) 1991, 1997 Digital Equipment Corporation, Maynard, Massachusetts. ++Permission is hereby granted, free of charge, to any person obtaining a copy ++of this software and associated documentation files (the "Software"), to deal ++in the Software without restriction, including without limitation the rights ++to use, copy, modify, merge, publish, distribute, sublicense, and/or sell ++copies of the Software. ++ ++The above copyright notice and this permission notice shall be included in ++all copies or substantial portions of the Software. ++ ++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL ++DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING, ++BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL DAMAGES, OR OTHER LIABILITY, ++WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR ++IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ++ ++Except as contained in this notice, the name of Digital Equipment Corporation ++shall not be used in advertising or otherwise to promote the sale, use or other ++dealings in this Software without prior written authorization from Digital ++Equipment Corporation. ++******************************************************************/ ++END  src/solaris/native/sun/awt/Xinerama.c ++****************************************************** ++BEGIN src/solaris/native/sun/awt/Xinerama.h ++/* ++Copyright (C) 1994-2001 The XFree86 Project, Inc. All Rights Reserved. ++ ++Permission is hereby granted, free of charge, to any person obtaining a ++copy of this software and associated documentation files (the "Soft- ++ware"), to deal in the Software without restriction, including without ++limitation the rights to use, copy, modify, merge, publish, distribute, ++and/or sell copies of the Software, and to permit persons to whom the ++Software is furnished to do so, provided that the above copyright ++notice(s) and this permission notice appear in all copies of the Soft- ++ware and that both the above copyright notice(s) and this permission ++notice appear in supporting documentation. ++ ++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- ++ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY ++RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN ++THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE- ++QUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, ++DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER ++TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFOR- ++MANCE OF THIS SOFTWARE. ++ ++Except as contained in this notice, the name of a copyright holder shall ++not be used in advertising or otherwise to promote the sale, use or ++other dealings in this Software without prior written authorization of ++the copyright holder. ++*/ ++END src/solaris/native/sun/awt/Xinerama.h ++****************************************************** ++BEGIN src/solaris/native/sun/awt/Xrandr.h ++/* ++ * $XFree86: xc/lib/Xrandr/Xrandr.h,v 1.9 2002/09/29 23:39:44 keithp Exp $ ++ * ++ * Copyright © 2000 Compaq Computer Corporation, Inc. ++ * Copyright © 2002 Hewlett-Packard Company, Inc. ++ * ++ * Permission to use, copy, modify, distribute, and sell this software and its ++ * documentation for any purpose is hereby granted without fee, provided that ++ * the above copyright notice appear in all copies and that both that ++ * copyright notice and this permission notice appear in supporting ++ * documentation, and that the name of Compaq not be used in advertising or ++ * publicity pertaining to distribution of the software without specific, ++ * written prior permission.  HP makes no representations about the ++ * suitability of this software for any purpose.  It is provided "as is" ++ * without express or implied warranty. ++ * ++ * HP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL ++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL COMPAQ ++ * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION ++ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN ++ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ * ++ * Author:  Jim Gettys, HP Labs, HP. ++ */ ++ ++ ++END src/solaris/native/sun/awt/Xrandr.h ++****************************************************** ++BEGIN src/solaris/native/sun/awt/extutil.h ++/* ++ * $Xorg: extutil.h,v 1.3 2000/08/18 04:05:45 coskrey Exp $ ++ * ++Copyright 1989, 1998  The Open Group ++ ++All Rights Reserved. ++ ++The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. ++ ++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE ++OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN ++AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN ++CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ++ ++Except as contained in this notice, the name of The Open Group shall not be ++used in advertising or otherwise to promote the sale, use or other dealings ++in this Software without prior written authorization from The Open Group. ++ * ++ * Author:  Jim Fulton, MIT The Open Group ++ * ++ *                     Xlib Extension-Writing Utilities ++ * ++ * This package contains utilities for writing the client API for various ++ * protocol extensions.  THESE INTERFACES ARE NOT PART OF THE X STANDARD AND ++ * ARE SUBJECT TO CHANGE! ++ */ ++/* $XFree86: xc/include/extensions/extutil.h,v 1.5 2001/01/17 17:53:20 dawes Exp $ */ ++ ++END src/solaris/native/sun/awt/extutil.h ++****************************************************** ++BEGIN   src/solaris/native/sun/awt/fontconfig.h ++/* ++ * $RCSId: xc/lib/fontconfig/fontconfig/fontconfig.h,v 1.30 2002/09/26 00:17:27 ++keithp Exp $ ++ * ++ * Copyright © 2001 Keith Packard ++ * ++ * Permission to use, copy, modify, distribute, and sell this software and its ++ * documentation for any purpose is hereby granted without fee, provided that ++ * the above copyright notice appear in all copies and that both that ++ * copyright notice and this permission notice appear in supporting ++ * documentation, and that the name of Keith Packard not be used in ++ * advertising or publicity pertaining to distribution of the software without ++ * specific, written prior permission.  Keith Packard makes no ++ * representations about the suitability of this software for any purpose.  It ++ * is provided "as is" without express or implied warranty. ++ * ++ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, ++ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO ++ * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR ++ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, ++ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER ++ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR ++ * PERFORMANCE OF THIS SOFTWARE. ++ ++END   src/solaris/native/sun/awt/fontconfig.h ++****************************************************** ++BEGIN src/solaris/native/sun/awt/list.c ++AND  src/solaris/native/sun/awt/list.h ++AND src/solaris/native/sun/awt/multiVis.c ++AND  src/solaris/native/sun/awt/multiVis.h ++AND  src/solaris/native/sun/awt/wsutils.h ++ ++Copyright (c) 1994 Hewlett-Packard Co. ++Copyright (c) 1996  X Consortium ++ ++Permission is hereby granted, free of charge, to any person obtaining ++a copy of this software and associated documentation files (the ++"Software"), to deal in the Software without restriction, including ++without limitation the rights to use, copy, modify, merge, publish, ++distribute, sublicense, and sell copies of the Software, and to ++permit persons to whom the Software is furnished to do so, subject to ++the following conditions: ++ ++The above copyright notice and this permission notice shall be included ++in all copies or substantial portions of the Software. ++ ++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. ++IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR ++OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ++ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR ++OTHER DEALINGS IN THE SOFTWARE. ++ ++Except as contained in this notice, the name of the X Consortium shall ++not be used in advertising or otherwise to promote the sale, use or ++other dealings in this Software without prior written authorization ++from the X Consortium. ++ ++END src/solaris/native/sun/awt/list.c ++AND  src/solaris/native/sun/awt/list.h ++AND src/solaris/native/sun/awt/multiVis.c ++AND  src/solaris/native/sun/awt/multiVis.h ++AND  src/solaris/native/sun/awt/wsutils.h ++ ++***************************************************************** ++BEGIN src/solaris/native/sun/awt/panoramiXext.h ++Copyright (c) 1991, 1997 Digital Equipment Corporation, Maynard, Massachusetts. ++Permission is hereby granted, free of charge, to any person obtaining a copy ++of this software and associated documentation files (the "Software"), to deal ++in the Software without restriction, including without limitation the rights ++to use, copy, modify, merge, publish, distribute, sublicense, and/or sell ++copies of the Software. ++ ++The above copyright notice and this permission notice shall be included in ++all copies or substantial portions of the Software. ++ ++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL ++DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING, ++BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL DAMAGES, OR OTHER LIABILITY, ++WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR ++IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ++ ++Except as contained in this notice, the name of Digital Equipment Corporation ++shall not be used in advertising or otherwise to promote the sale, use or other ++dealings in this Software without prior written authorization from Digital ++Equipment Corporation. ++ ++END src/solaris/native/sun/awt/panoramiXext.h ++****************************************************** ++ ++BEGIN src/solaris/native/sun/awt/randr.h ++ ++ * ++ * Copyright © 2000, Compaq Computer Corporation, ++ * Copyright © 2002, Hewlett Packard, Inc. ++ * ++ * Permission to use, copy, modify, distribute, and sell this software and its ++ * documentation for any purpose is hereby granted without fee, provided that ++ * the above copyright notice appear in all copies and that both that ++ * copyright notice and this permission notice appear in supporting ++ * documentation, and that the name of Compaq or HP not be used in advertising ++ * or publicity pertaining to distribution of the software without specific, ++ * written prior permission.  HP makes no representations about the ++ * suitability of this software for any purpose.  It is provided "as is" ++ * without express or implied warranty. ++ * ++ * HP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL ++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL HP ++ * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION ++ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN ++ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ * ++ * Author:  Jim Gettys, HP Labs, Hewlett-Packard, Inc. ++ ++END src/solaris/native/sun/awt/randr.h ++***************************************************** ++ ++BEGIN src/solaris/native/sun/java2d/opengl/J2D_GL/glx.h ++ * Mesa 3-D graphics library ++ * Version:  4.1 ++ * ++ * Copyright (C) 1999-2002  Brian Paul   All Rights Reserved. ++ * ++ * Permission is hereby granted, free of charge, to any person obtaining a ++ * copy of this software and associated documentation files (the "Software"), ++ * to deal in the Software without restriction, including without limitation ++ * the rights to use, copy, modify, merge, publish, distribute, sublicense, ++ * and/or sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following conditions: ++ * ++ * The above copyright notice and this permission notice shall be included ++ * in all copies or substantial portions of the Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL ++ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN ++ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN ++ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ++ ++END src/solaris/native/sun/java2d/opengl/J2D_GL/glx.h ++ ++ ++ The Jscheme Language and Implementation ++ ++Copyright (c) 2002 Ken R. Anderson, Timothy J. Hickey, Peter Norvig ++ ++This system is licensed under the following ++zlib/libpng open-source license. ++ ++This software is provided 'as-is', without any express or ++implied warranty. ++ ++In no event will the authors be held liable for any damages ++arising from the use of this software. ++ ++Permission is granted to anyone to use this software for any ++purpose, including commercial applications, and to alter it ++and redistribute it freely, subject to the following ++restrictions: ++ ++1. The origin of this software must not be misrepresented; you ++ must not claim that you wrote the original software. If you ++ use this software in a product, an acknowledgment in the ++ product documentation would be appreciated but is not ++ required. ++ ++2. Altered source versions must be plainly marked as such, and ++ must not be misrepresented as being the original software. ++ ++3. This notice may not be removed or altered from any source ++ distribution. ++ ++JScheme includes software licensed under the Apache Software License, ++Version 1.1: ++ ++ ++/* ==================================================================== ++ * The Apache Software License, Version 1.1 ++ * ++ * Copyright (c) 2000 The Apache Software Foundation. All rights ++ * reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in ++ * the documentation and/or other materials provided with the ++ * distribution. ++ * ++ * 3. The end-user documentation included with the redistribution, ++ * if any, must include the following acknowledgment: ++ * "This product includes software developed by the ++ * Apache Software Foundation (http://www.apache.org/)." ++ * Alternately, this acknowledgment may appear in the software itself, ++ * if and wherever such third-party acknowledgments normally appear. ++ * ++ * 4. The names "Apache" and "Apache Software Foundation" must ++ * not be used to endorse or promote products derived from this ++ * software without prior written permission. For written ++ * permission, please contact apache@apache.org. ++ * ++ * 5. Products derived from this software may not be called "Apache", ++ * nor may "Apache" appear in their name, without prior written ++ * permission of the Apache Software Foundation. ++ * ++ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED ++ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES ++ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE ++ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR ++ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF ++ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ++ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, ++ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT ++ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++ * SUCH DAMAGE. ++ * ==================================================================== ++ * ++ * This software consists of voluntary contributions made by many ++ * individuals on behalf of the Apache Software Foundation. For more ++ * information on the Apache Software Foundation, please see ++ * . ++ * ++ * Portions of this software are based upon public domain software ++ * originally written at the National Center for Supercomputing Applications, ++ * University of Illinois, Urbana-Champaign. ++ */ ++ ++ ++Licenses for sources found in the IcedTea patches/checkins: ++ ++NanoXML: ++ ++ * This file is part of NanoXML 2 Lite. ++ * Copyright (C) 2000-2002 Marc De Scheemaecker, All Rights Reserved. ++ * ++ * This software is provided 'as-is', without any express or implied warranty. ++ * In no event will the authors be held liable for any damages arising from the ++ * use of this software. ++ * ++ * Permission is granted to anyone to use this software for any purpose, ++ * including commercial applications, and to alter it and redistribute it ++ * freely, subject to the following restrictions: ++ * ++ * 1. The origin of this software must not be misrepresented; you must not ++ * claim that you wrote the original software. If you use this software in ++ * a product, an acknowledgment in the product documentation would be ++ * appreciated but is not required. ++ * ++ * 2. Altered source versions must be plainly marked as such, and must not be ++ * misrepresented as being the original software. ++ * ++ * 3. This notice may not be removed or altered from any source distribution. ++ ++ ++CACAO ++=============================================================================== ++ ++It was downloaded from http://www.cacaojvm.org/ ++ ++Copyright Holder: CACAO Project ++ Copyright (C) 1996-2008 Verein zur Foerderung der freien virtuellen Maschine CACAO ++ Portions Copyright (C) 1996-2005, 2006, 2007 R. Grafl, A. Krall, C. Kruegel, ++ C. Oates, R. Obermaisser, M. Platter, M. Probst, S. Ring, ++ E. Steiner, C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich, ++ J. Wenninger, Institut f. Computersprachen - TU Wien ++ ++License: ++ ++ 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ++ ++ ++On Debian systems a full copy of the GNU General Public License, GPL, can be ++found in the file /usr/share/common-licenses/GPL-2. ++ ++ ++CACAO uses code from other free software projects. Only code licensed ++under a GPL compatible license can be merged in. You can find the ++licenses of third party sources in their respective sources. ++ ++ ++* src/mm/boehm-gc ++ ++Merged in the Boehm-Weiser garbage collector from ++http://www.hpl.hp.com/personal/Hans_Boehm/gc/. ++ ++Copyright (c) 1988, 1989 Hans-J. Boehm, Alan J. Demers ++Copyright (c) 1991-1996 by Xerox Corporation. All rights reserved. ++Copyright (c) 1996-1999 by Silicon Graphics. All rights reserved. ++Copyright (c) 1999-2003 by Hewlett-Packard Company. All rights reserved. ++Portions Copyright (c) 1999-2001 by Red Hat, Inc. All rights reserved. ++ ++The file linux_threads.c is also ++Copyright (c) 1998 by Fergus Henderson. All rights reserved. ++ ++The files Makefile.am, and configure.in are ++Copyright (c) 2001 by Red Hat Inc. All rights reserved. ++ ++Several files supporting GNU-style builds are copyrighted by the Free ++Software Foundation, and carry a different license from that given ++below. ++ ++THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED ++OR IMPLIED. ANY USE IS AT YOUR OWN RISK. ++ ++Permission is hereby granted to use or copy this program ++for any purpose, provided the above notices are retained on all copies. ++Permission to modify the code and to distribute modified code is granted, ++provided the above notices are retained, and a notice that the code was ++modified is included with the above copyright notice. ++ ++A few of the files needed to use the GNU-style build procedure come with ++slightly different licenses, though they are all similar in spirit. A few ++are GPL'ed, but with an exception that should cover all uses in the ++collector. (If you are concerned about such things, I recommend you look ++at the notice in config.guess or ltmain.sh.) ++ ++The files copyrighted by Hewlett-Packard Company have the notice: ++ ++ * Permission is hereby granted, free of charge, to any person obtaining a copy ++ * of this software and associated documentation files (the "Software"), to deal ++ * in the Software without restriction, including without limitation the rights ++ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell ++ * copies of the Software, and to permit persons to whom the Software is ++ * furnished to do so, subject to the following conditions: ++ * ++ * The above copyright notice and this permission notice shall be included in ++ * all copies or substantial portions of the Software. ++ ++* src/fdlibm ++ ++fdlimb contains general algorithms useful for runtimes and compilers to ++support strict double and float mathematical operations. ++ ++fdlibm files carry the following notices: ++ ++ Copyright (c) 1991 by AT&T. ++ ++ Permission to use, copy, modify, and distribute this software for any ++ purpose without fee is hereby granted, provided that this entire notice ++ is included in all copies of any software which is or includes a copy ++ or modification of this software and in all copies of the supporting ++ documentation for such software. ++ ++ THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED ++ WARRANTY. IN PARTICULAR, NEITHER THE AUTHOR NOR AT&T MAKES ANY ++ REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY ++ OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. ++ ++ Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. ++ ++ Developed at SunPro, a Sun Microsystems, Inc. business. ++ Permission to use, copy, modify, and distribute this ++ software is freely granted, provided that this notice ++ is preserved. ++ ++The upstream for fdlibm is libgcj (http://gcc.gnu.org/java/), they sync ++again with the 'real' upstream (http://www.netlib.org/fdlibm/readme). ++ ++ ++* src/threads/green/{locks.[ch],threadio.[ch],threads.[ch]} ++ ++This files are taken from Kaffe.org VM available at ++http://www.kaffe.org/. Kaffe's license.terms file is located in the ++top directory of the source code. The current license of Kaffe is the ++same as of CACAO, GPL Version 2. ++ ++ ++* src/vm/jit/{i386,x86_64}/{dis-asm.h,i386-dis.c} ++ ++Print i386 instructions for GDB, the GNU debugger. ++Copyright 1988, 1989, 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, ++2001, 2002, 2003, 2004 Free Software Foundation, Inc. ++ ++This file is part of GDB. ++ ++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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. */ ++ ++ ++* src/vm/jit/{i386,x86_64}/dis-asm.h ++ ++Interface between the opcode library and its callers. ++ ++Copyright 2001, 2002 Free Software Foundation, Inc. ++ ++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, 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., 51 Franklin St, Fifth Floor, ++Boston, MA 02110-1301 USA ++ ++Written by Cygnus Support, 1993. ++ ++The opcode library (libopcodes.a) provides instruction decoders for ++a large variety of instruction sets, callable with an identical ++interface, for making instruction-processing programs more independent ++of the instruction set being processed. ++ ++ ++* src/vm/jit/powerpc/{ppc.h,ppc-dis.c,ppc-opc.c} ++ ++Copyright 1994, 1995, 2000, 2001, 2002 Free Software Foundation, Inc. ++Written by Ian Lance Taylor, Cygnus Support ++ ++This file is part of GDB, GAS, and the GNU binutils. ++ ++GDB, GAS, and the GNU binutils are free software; you can redistribute ++them and/or modify them 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. ++ ++GDB, GAS, and the GNU binutils are distributed in the hope that they ++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 file; see the file COPYING. If not, write to the Free ++Software Foundation, Inc., 51 Franklin St, Fifth Floor, ++Boston, MA 02110-1301 USA. ++ ++ ++* src/lib/classes/* ++ ++GNU Classpath is licensed under the terms of the GNU General Public ++License with the following clarification and special exception: ++ ++ "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." ++ ++See license.terms for the text of the GNU General Public License. ++ ++More information on GNU Classpath is available from ++http://www.gnu.org/software/classpath/classpath.html. ++ ++ ++* m4/{iconv.m4,lib-ld.m4,lib-link.m4,lib-prefix.m4} ++ ++Copyright (C) 1996-2003 Free Software Foundation, Inc. ++This file is free software, distributed under the terms of the GNU ++General Public License. As a special exception to the GNU General ++Public License, this file may be distributed as part of a program ++that contains a configuration script generated by Autoconf, under ++the same distribution terms as the rest of that program. ++ ++ ++* src/toolbox/avl.[ch] ++ ++libavl - library for manipulation of binary trees. ++Copyright (C) 1998-2002 Free Software Foundation, Inc. ++ ++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., 51 Franklin St, Fifth Floor, Boston, MA ++02110-1301 USA. ++ ++The author may be contacted at on the Internet, or ++write to Ben Pfaff, Stanford University, Computer Science Dept., 353 ++Serra Mall, Stanford CA 94305, USA. ++ ++ ++* src/vm/unzip.[ch] ++ ++Copyright (C) 1998 Gilles Vollant ++ ++This unzip package allow extract file from .ZIP file, compatible with PKZip 2.04g ++ WinZip, InfoZip tools and compatible. ++Encryption and multi volume ZipFile (span) are not supported. ++Old compressions used by old PKZip 1.x are not supported ++ ++THIS IS AN ALPHA VERSION. AT THIS STAGE OF DEVELOPPEMENT, SOMES API OR STRUCTURE ++CAN CHANGE IN FUTURE VERSION !! ++I WAIT FEEDBACK at mail info@winimage.com ++Visit also http://www.winimage.com/zLibDll/unzip.htm for evolution ++ ++Condition of use and distribution are the same than zlib : ++ ++This software is provided 'as-is', without any express or implied ++warranty. In no event will the authors be held liable for any damages ++arising from the use of this software. ++ ++Permission is granted to anyone to use this software for any purpose, ++including commercial applications, and to alter it and redistribute it ++freely, subject to the following restrictions: ++ ++1. The origin of this software must not be misrepresented; you must not ++ claim that you wrote the original software. If you use this software ++ in a product, an acknowledgment in the product documentation would be ++ appreciated but is not required. ++2. Altered source versions must be plainly marked as such, and must not be ++ misrepresented as being the original software. ++3. This notice may not be removed or altered from any source distribution. ++ ++ ++src/mm/boehm-gc/libatomic_ops-1.2/src/atomic_ops/sysdeps/armcc ++ ++ * Copyright (c) 2007 by NEC LE-IT: All rights reserved. ++ * A transcription of ARMv6 atomic operations for the ARM Realview Toolchain. ++ * This code works with armcc from RVDS 3.1 ++ * This is based on work in gcc/arm.h by ++ * Copyright (c) 1991-1994 by Xerox Corporation. All rights reserved. ++ * Copyright (c) 1996-1999 by Silicon Graphics. All rights reserved. ++ * Copyright (c) 1999-2003 by Hewlett-Packard Company. All rights reserved. ++ * ++ * ++ * ++ * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED ++ * OR IMPLIED. ANY USE IS AT YOUR OWN RISK. ++ * ++ * Permission is hereby granted to use or copy this program ++ * for any purpose, provided the above notices are retained on all copies. ++ * Permission to modify the code and to distribute modified code is granted, ++ * provided the above notices are retained, and a notice that the code was ++ * modified is included with the above copyright notice. ++ ++src/mm/boehm-gc/include/private ++ ++ Copyright (c) 2004-2005 Andrei Polushin ++ ++ Permission is hereby granted, free of charge, to any person obtaining a copy ++ of this software and associated documentation files (the "Software"), to deal ++ in the Software without restriction, including without limitation the rights ++ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell ++ copies of the Software, and to permit persons to whom the Software is ++ furnished to do so, subject to the following conditions: ++ The above copyright notice and this permission notice shall be included in ++ all copies or substantial portions of the Software. ++ ++contrib/vmlog: ++ ++/* Copyright (C) 2006 Edwin Steiner */ ++/* 2007 Peter Molnar */ ++ ++/* 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. ++ */ ++ ++Some of the build files are ++ ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005 Free Software Foundation, Inc. ++ ++ ++JAMVM: ++ ++ Copyright (C) 2003, 2004, 2005, 2006, 2007, 2009, 2010 ++ Robert Lougher . ++ ++ 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, ++ 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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ++ ++On Debian systems a full copy of the GNU General Public License, GPL, can be ++found in the file /usr/share/common-licenses/GPL-2. diff --cc debian/copyright.cacao index 0000000,0000000..14f310c new file mode 100644 --- /dev/null +++ b/debian/copyright.cacao @@@ -1,0 -1,0 +1,356 @@@ ++ ++=============================================================================== ++CACAO ++=============================================================================== ++ ++This package was debianized by Stephan Michels on ++Sat, 12 Nov 2005 22:07:41 +0100. ++ ++It was downloaded from http://www.cacaojvm.org/ ++ ++Copyright Holder: CACAO Project ++ Copyright (C) 1996-2008 Verein zur Foerderung der freien virtuellen Maschine CACAO ++ Portions Copyright (C) 1996-2005, 2006, 2007 R. Grafl, A. Krall, C. Kruegel, ++ C. Oates, R. Obermaisser, M. Platter, M. Probst, S. Ring, ++ E. Steiner, C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich, ++ J. Wenninger, Institut f. Computersprachen - TU Wien ++ ++License: ++ ++ ++ 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ++ ++ ++On Debian systems a full copy of the GNU General Public License, GPL, can be ++found in the file /usr/share/common-licenses/GPL-2. ++ ++ ++CACAO uses code from other free software projects. Only code licensed ++under a GPL compatible license can be merged in. You can find the ++licenses of third party sources in their respective sources. ++ ++ ++* src/mm/boehm-gc ++ ++Merged in the Boehm-Weiser garbage collector from ++http://www.hpl.hp.com/personal/Hans_Boehm/gc/. ++ ++Copyright (c) 1988, 1989 Hans-J. Boehm, Alan J. Demers ++Copyright (c) 1991-1996 by Xerox Corporation. All rights reserved. ++Copyright (c) 1996-1999 by Silicon Graphics. All rights reserved. ++Copyright (c) 1999-2003 by Hewlett-Packard Company. All rights reserved. ++Portions Copyright (c) 1999-2001 by Red Hat, Inc. All rights reserved. ++ ++The file linux_threads.c is also ++Copyright (c) 1998 by Fergus Henderson. All rights reserved. ++ ++The files Makefile.am, and configure.in are ++Copyright (c) 2001 by Red Hat Inc. All rights reserved. ++ ++Several files supporting GNU-style builds are copyrighted by the Free ++Software Foundation, and carry a different license from that given ++below. ++ ++THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED ++OR IMPLIED. ANY USE IS AT YOUR OWN RISK. ++ ++Permission is hereby granted to use or copy this program ++for any purpose, provided the above notices are retained on all copies. ++Permission to modify the code and to distribute modified code is granted, ++provided the above notices are retained, and a notice that the code was ++modified is included with the above copyright notice. ++ ++A few of the files needed to use the GNU-style build procedure come with ++slightly different licenses, though they are all similar in spirit. A few ++are GPL'ed, but with an exception that should cover all uses in the ++collector. (If you are concerned about such things, I recommend you look ++at the notice in config.guess or ltmain.sh.) ++ ++The files copyrighted by Hewlett-Packard Company have the notice: ++ ++ * Permission is hereby granted, free of charge, to any person obtaining a copy ++ * of this software and associated documentation files (the "Software"), to deal ++ * in the Software without restriction, including without limitation the rights ++ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell ++ * copies of the Software, and to permit persons to whom the Software is ++ * furnished to do so, subject to the following conditions: ++ * ++ * The above copyright notice and this permission notice shall be included in ++ * all copies or substantial portions of the Software. ++ ++* src/fdlibm ++ ++fdlimb contains general algorithms useful for runtimes and compilers to ++support strict double and float mathematical operations. ++ ++fdlibm files carry the following notices: ++ ++ Copyright (c) 1991 by AT&T. ++ ++ Permission to use, copy, modify, and distribute this software for any ++ purpose without fee is hereby granted, provided that this entire notice ++ is included in all copies of any software which is or includes a copy ++ or modification of this software and in all copies of the supporting ++ documentation for such software. ++ ++ THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED ++ WARRANTY. IN PARTICULAR, NEITHER THE AUTHOR NOR AT&T MAKES ANY ++ REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY ++ OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. ++ ++ Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. ++ ++ Developed at SunPro, a Sun Microsystems, Inc. business. ++ Permission to use, copy, modify, and distribute this ++ software is freely granted, provided that this notice ++ is preserved. ++ ++The upstream for fdlibm is libgcj (http://gcc.gnu.org/java/), they sync ++again with the 'real' upstream (http://www.netlib.org/fdlibm/readme). ++ ++ ++* src/threads/green/{locks.[ch],threadio.[ch],threads.[ch]} ++ ++This files are taken from Kaffe.org VM available at ++http://www.kaffe.org/. Kaffe's license.terms file is located in the ++top directory of the source code. The current license of Kaffe is the ++same as of CACAO, GPL Version 2. ++ ++ ++* src/vm/jit/{i386,x86_64}/{dis-asm.h,i386-dis.c} ++ ++Print i386 instructions for GDB, the GNU debugger. ++Copyright 1988, 1989, 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, ++2001, 2002, 2003, 2004 Free Software Foundation, Inc. ++ ++This file is part of GDB. ++ ++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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. */ ++ ++ ++* src/vm/jit/{i386,x86_64}/dis-asm.h ++ ++Interface between the opcode library and its callers. ++ ++Copyright 2001, 2002 Free Software Foundation, Inc. ++ ++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, 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., 51 Franklin St, Fifth Floor, ++Boston, MA 02110-1301 USA ++ ++Written by Cygnus Support, 1993. ++ ++The opcode library (libopcodes.a) provides instruction decoders for ++a large variety of instruction sets, callable with an identical ++interface, for making instruction-processing programs more independent ++of the instruction set being processed. ++ ++ ++* src/vm/jit/powerpc/{ppc.h,ppc-dis.c,ppc-opc.c} ++ ++Copyright 1994, 1995, 2000, 2001, 2002 Free Software Foundation, Inc. ++Written by Ian Lance Taylor, Cygnus Support ++ ++This file is part of GDB, GAS, and the GNU binutils. ++ ++GDB, GAS, and the GNU binutils are free software; you can redistribute ++them and/or modify them 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. ++ ++GDB, GAS, and the GNU binutils are distributed in the hope that they ++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 file; see the file COPYING. If not, write to the Free ++Software Foundation, Inc., 51 Franklin St, Fifth Floor, ++Boston, MA 02110-1301 USA. ++ ++ ++* src/lib/classes/* ++ ++GNU Classpath is licensed under the terms of the GNU General Public ++License with the following clarification and special exception: ++ ++ "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." ++ ++See license.terms for the text of the GNU General Public License. ++ ++More information on GNU Classpath is available from ++http://www.gnu.org/software/classpath/classpath.html. ++ ++ ++* m4/{iconv.m4,lib-ld.m4,lib-link.m4,lib-prefix.m4} ++ ++Copyright (C) 1996-2003 Free Software Foundation, Inc. ++This file is free software, distributed under the terms of the GNU ++General Public License. As a special exception to the GNU General ++Public License, this file may be distributed as part of a program ++that contains a configuration script generated by Autoconf, under ++the same distribution terms as the rest of that program. ++ ++ ++* src/toolbox/avl.[ch] ++ ++libavl - library for manipulation of binary trees. ++Copyright (C) 1998-2002 Free Software Foundation, Inc. ++ ++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., 51 Franklin St, Fifth Floor, Boston, MA ++02110-1301 USA. ++ ++The author may be contacted at on the Internet, or ++write to Ben Pfaff, Stanford University, Computer Science Dept., 353 ++Serra Mall, Stanford CA 94305, USA. ++ ++ ++* src/vm/unzip.[ch] ++ ++Copyright (C) 1998 Gilles Vollant ++ ++This unzip package allow extract file from .ZIP file, compatible with PKZip 2.04g ++ WinZip, InfoZip tools and compatible. ++Encryption and multi volume ZipFile (span) are not supported. ++Old compressions used by old PKZip 1.x are not supported ++ ++THIS IS AN ALPHA VERSION. AT THIS STAGE OF DEVELOPPEMENT, SOMES API OR STRUCTURE ++CAN CHANGE IN FUTURE VERSION !! ++I WAIT FEEDBACK at mail info@winimage.com ++Visit also http://www.winimage.com/zLibDll/unzip.htm for evolution ++ ++Condition of use and distribution are the same than zlib : ++ ++This software is provided 'as-is', without any express or implied ++warranty. In no event will the authors be held liable for any damages ++arising from the use of this software. ++ ++Permission is granted to anyone to use this software for any purpose, ++including commercial applications, and to alter it and redistribute it ++freely, subject to the following restrictions: ++ ++1. The origin of this software must not be misrepresented; you must not ++ claim that you wrote the original software. If you use this software ++ in a product, an acknowledgment in the product documentation would be ++ appreciated but is not required. ++2. Altered source versions must be plainly marked as such, and must not be ++ misrepresented as being the original software. ++3. This notice may not be removed or altered from any source distribution. ++ ++ ++src/mm/boehm-gc/libatomic_ops-1.2/src/atomic_ops/sysdeps/armcc ++ ++ * Copyright (c) 2007 by NEC LE-IT: All rights reserved. ++ * A transcription of ARMv6 atomic operations for the ARM Realview Toolchain. ++ * This code works with armcc from RVDS 3.1 ++ * This is based on work in gcc/arm.h by ++ * Copyright (c) 1991-1994 by Xerox Corporation. All rights reserved. ++ * Copyright (c) 1996-1999 by Silicon Graphics. All rights reserved. ++ * Copyright (c) 1999-2003 by Hewlett-Packard Company. All rights reserved. ++ * ++ * ++ * ++ * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED ++ * OR IMPLIED. ANY USE IS AT YOUR OWN RISK. ++ * ++ * Permission is hereby granted to use or copy this program ++ * for any purpose, provided the above notices are retained on all copies. ++ * Permission to modify the code and to distribute modified code is granted, ++ * provided the above notices are retained, and a notice that the code was ++ * modified is included with the above copyright notice. ++ ++src/mm/boehm-gc/include/private ++ ++ Copyright (c) 2004-2005 Andrei Polushin ++ ++ Permission is hereby granted, free of charge, to any person obtaining a copy ++ of this software and associated documentation files (the "Software"), to deal ++ in the Software without restriction, including without limitation the rights ++ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell ++ copies of the Software, and to permit persons to whom the Software is ++ furnished to do so, subject to the following conditions: ++ The above copyright notice and this permission notice shall be included in ++ all copies or substantial portions of the Software. ++ ++contrib/vmlog: ++ ++/* Copyright (C) 2006 Edwin Steiner */ ++/* 2007 Peter Molnar */ ++ ++/* 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. ++ */ ++ ++Some of the build files are ++ ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005 Free Software Foundation, Inc. diff --cc debian/font.properties.ja index 0000000,0000000..9191671 new file mode 100644 --- /dev/null +++ b/debian/font.properties.ja @@@ -1,0 -1,0 +1,197 @@@ ++# @(#)font.properties.ja.linux 1.7 02/03/07 ++# ++# Copyright 2002 Sun Microsystems, Inc. All rights reserved. ++# ++ ++# Component Font Mappings ++# ++serif.0=-b&h-lucidabright-medium-r-normal--*-%d-*-*-p-*-iso8859-1 ++serif.1=-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++serif.italic.0=-b&h-lucidabright-medium-i-normal--*-%d-*-*-p-*-iso8859-1 ++serif.italic.1=-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++serif.bold.0=-b&h-lucidabright-demibold-r-normal--*-%d-*-*-p-*-iso8859-1 ++serif.bold.1=-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++serif.bolditalic.0=-b&h-lucidabright-demibold-i-normal--*-%d-*-*-p-*-iso8859-1 ++serif.bolditalic.1=-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++sansserif.0=-b&h-lucidasans-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1 ++sansserif.1=-kochi-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++sansserif.italic.0=-b&h-lucidasans-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1 ++sansserif.italic.1=-kochi-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++sansserif.bold.0=-b&h-lucidasans-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1 ++sansserif.bold.1=-kochi-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++sansserif.bolditalic.0=-b&h-lucidasans-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1 ++sansserif.bolditalic.1=-kochi-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++monospaced.0=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1 ++monospaced.1=-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++monospaced.italic.0=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1 ++monospaced.italic.1=-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++monospaced.bold.0=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1 ++monospaced.bold.1=-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++monospaced.bolditalic.0=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1 ++monospaced.bolditalic.1=-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++dialog.0=-b&h-lucidasans-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1 ++dialog.1=-kochi-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++dialog.italic.0=-b&h-lucidasans-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1 ++dialog.italic.1=-kochi-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++dialog.bold.0=-b&h-lucidasans-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1 ++dialog.bold.1=-kochi-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++dialog.bolditalic.0=-b&h-lucidasans-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1 ++dialog.bolditalic.1=-kochi-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++dialoginput.0=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1 ++dialoginput.1=-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++dialoginput.italic.0=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1 ++dialoginput.italic.1=-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++dialoginput.bold.0=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1 ++dialoginput.bold.1=-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++dialoginput.bolditalic.0=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1 ++dialoginput.bolditalic.1=-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++# Missing Glyph Character ++# ++default.char=274f ++ ++# Component Font Character Encodings ++# ++fontcharset.serif.0=sun.io.CharToByteISO8859_1 ++fontcharset.serif.1=sun.awt.motif.CharToByteX11JIS0208 ++ ++fontcharset.sansserif.0=sun.io.CharToByteISO8859_1 ++fontcharset.sansserif.1=sun.awt.motif.CharToByteX11JIS0208 ++ ++fontcharset.monospaced.0=sun.io.CharToByteISO8859_1 ++fontcharset.monospaced.1=sun.awt.motif.CharToByteX11JIS0208 ++ ++fontcharset.dialog.0=sun.io.CharToByteISO8859_1 ++fontcharset.dialog.1=sun.awt.motif.CharToByteX11JIS0208 ++ ++fontcharset.dialoginput.0=sun.io.CharToByteISO8859_1 ++fontcharset.dialoginput.1=sun.awt.motif.CharToByteX11JIS0208 ++ ++# Exclusion Ranges ++# ++ ++# XFontSet Information ++# ++fontset.serif.plain=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucidabright-medium-r-normal--*-%d-*-*-p-*-iso8859-1,\ ++-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.serif.italic=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucidabright-medium-i-normal--*-%d-*-*-p-*-iso8859-1,\ ++-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.serif.bold=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucidabright-demibold-r-normal--*-%d-*-*-p-*-iso8859-1,\ ++-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.serif.bolditalic=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucidabright-demibold-i-normal--*-%d-*-*-p-*-iso8859-1,\ ++-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.sansserif.plain=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucida-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1,\ ++-kochi-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.sansserif.italic=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucida-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1,\ ++-kochi-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.sansserif.bold=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucida-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\ ++-kochi-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.sansserif.bolditalic=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucida-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1,\ ++-kochi-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.monospaced.plain=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\ ++-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.monospaced.italic=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\ ++-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.monospaced.bold=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\ ++-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.monospaced.bolditalic=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\ ++-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.dialog.italic=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucida-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1,\ ++-kochi-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.dialog.bold=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucida-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\ ++-kochi-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.dialog.bolditalic=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucida-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1,\ ++-kochi-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.dialog.plain=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucida-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\ ++-kochi-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.dialoginput.italic=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\ ++-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.dialoginput.bold=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\ ++-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.dialoginput.bolditalic=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\ ++-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.dialoginput.plain=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\ ++-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.default=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucida-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\ ++-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 diff --cc debian/font.properties.ja.wgy_zenhai index 0000000,0000000..119822d new file mode 100644 --- /dev/null +++ b/debian/font.properties.ja.wgy_zenhai @@@ -1,0 -1,0 +1,244 @@@ ++# @(#)font.properties.ja.linux 1.7 02/03/07 ++# ++# Copyright 2002 Sun Microsystems, Inc. All rights reserved. ++# ++ ++# Component Font Mappings ++# ++serif.0=-b&h-lucidabright-medium-r-normal--*-%d-*-*-p-*-iso8859-1 ++serif.1=-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++serif.2=-sazanami-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++serif.italic.0=-b&h-lucidabright-medium-i-normal--*-%d-*-*-p-*-iso8859-1 ++serif.italic.1=-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++serif.italic.2=-sazanami-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++serif.bold.0=-b&h-lucidabright-demibold-r-normal--*-%d-*-*-p-*-iso8859-1 ++serif.bold.1=-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++serif.bold.2=-sazanami-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++serif.bolditalic.0=-b&h-lucidabright-demibold-i-normal--*-%d-*-*-p-*-iso8859-1 ++serif.bolditalic.1=-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++serif.bolditalic.2=-sazanami-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++sansserif.0=-b&h-lucidasans-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1 ++sansserif.1=-kochi-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++sansserif.2=-sazanami-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++sansserif.italic.0=-b&h-lucidasans-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1 ++sansserif.italic.1=-kochi-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++sansserif.italic.2=-sazanami-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++sansserif.bold.0=-b&h-lucidasans-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1 ++sansserif.bold.1=-kochi-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++sansserif.bold.2=-sazanami-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++sansserif.bolditalic.0=-b&h-lucidasans-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1 ++sansserif.bolditalic.1=-kochi-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++sansserif.bolditalic.2=-sazanami-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++monospaced.0=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1 ++monospaced.1=-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++monospaced.2=-sazanami-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++monospaced.italic.0=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1 ++monospaced.italic.1=-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++monospaced.italic.2=-sazanami-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++monospaced.bold.0=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1 ++monospaced.bold.1=-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++monospaced.bold.2=-sazanami-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++monospaced.bolditalic.0=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1 ++monospaced.bolditalic.1=-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++monospaced.bolditalic.2=-sazanami-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++dialog.0=-b&h-lucidasans-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1 ++dialog.1=-kochi-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++dialog.2=-sazanami-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++dialog.italic.0=-b&h-lucidasans-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1 ++dialog.italic.1=-kochi-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++dialog.italic.2=-sazanami-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++dialog.bold.0=-b&h-lucidasans-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1 ++dialog.bold.1=-kochi-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++dialog.bold.2=-sazanami-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++dialog.bolditalic.0=-b&h-lucidasans-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1 ++dialog.bolditalic.1=-kochi-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++dialog.bolditalic.2=-sazanami-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++dialoginput.0=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1 ++dialoginput.1=-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++dialoginput.2=-sazanami-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++dialoginput.italic.0=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1 ++dialoginput.italic.1=-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++dialoginput.italic.2=-sazanami-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++dialoginput.bold.0=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1 ++dialoginput.bold.1=-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++dialoginput.bold.2=-sazanami-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++dialoginput.bolditalic.0=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1 ++dialoginput.bolditalic.1=-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++dialoginput.bolditalic.2=-sazanami-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++# Missing Glyph Character ++# ++default.char=274f ++ ++# Component Font Character Encodings ++# ++fontcharset.serif.0=sun.io.CharToByteISO8859_1 ++fontcharset.serif.1=sun.awt.motif.CharToByteX11JIS0208 ++fontcharset.serif.2=sun.awt.motif.CharToByteX11JIS0208 ++ ++fontcharset.sansserif.0=sun.io.CharToByteISO8859_1 ++fontcharset.sansserif.1=sun.awt.motif.CharToByteX11JIS0208 ++fontcharset.sansserif.2=sun.awt.motif.CharToByteX11JIS0208 ++ ++fontcharset.monospaced.0=sun.io.CharToByteISO8859_1 ++fontcharset.monospaced.1=sun.awt.motif.CharToByteX11JIS0208 ++fontcharset.monospaced.2=sun.awt.motif.CharToByteX11JIS0208 ++ ++fontcharset.dialog.0=sun.io.CharToByteISO8859_1 ++fontcharset.dialog.1=sun.awt.motif.CharToByteX11JIS0208 ++fontcharset.dialog.2=sun.awt.motif.CharToByteX11JIS0208 ++ ++fontcharset.dialoginput.0=sun.io.CharToByteISO8859_1 ++fontcharset.dialoginput.1=sun.awt.motif.CharToByteX11JIS0208 ++fontcharset.dialoginput.2=sun.awt.motif.CharToByteX11JIS0208 ++ ++# Exclusion Ranges ++# ++ ++# XFontSet Information ++# ++fontset.serif.plain=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucidabright-medium-r-normal--*-%d-*-*-p-*-iso8859-1,\ ++-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0,\ ++-sazanami-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.serif.italic=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucidabright-medium-i-normal--*-%d-*-*-p-*-iso8859-1,\ ++-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0,\ ++-sazanami-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.serif.bold=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucidabright-demibold-r-normal--*-%d-*-*-p-*-iso8859-1,\ ++-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0,\ ++-sazanami-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.serif.bolditalic=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucidabright-demibold-i-normal--*-%d-*-*-p-*-iso8859-1,\ ++-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0,\ ++-sazanami-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.sansserif.plain=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucida-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1,\ ++-kochi-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0,\ ++-sazanami-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.sansserif.italic=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucida-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1,\ ++-kochi-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0,\ ++-sazanami-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.sansserif.bold=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucida-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\ ++-kochi-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0,\ ++-sazanami-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.sansserif.bolditalic=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucida-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1,\ ++-kochi-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0,\ ++-sazanami-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.monospaced.plain=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\ ++-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0,\ ++-sazanami-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.monospaced.italic=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\ ++-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0,\ ++-sazanami-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.monospaced.bold=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\ ++-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0,\ ++-sazanami-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.monospaced.bolditalic=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\ ++-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0,\ ++-sazanami-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.dialog.italic=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucida-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1,\ ++-kochi-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0,\ ++-sazanami-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.dialog.bold=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucida-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\ ++-kochi-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0,\ ++-sazanami-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.dialog.bolditalic=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucida-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1,\ ++-kochi-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0,\ ++-sazanami-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.dialog.plain=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucida-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\ ++-kochi-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0,\ ++-sazanami-gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.dialoginput.italic=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\ ++-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0,\ ++-sazanami-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.dialoginput.bold=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\ ++-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0,\ ++-sazanami-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.dialoginput.bolditalic=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\ ++-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0,\ ++-sazanami-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.dialoginput.plain=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\ ++-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0,\ ++-sazanami-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ ++fontset.default=\ ++-sony-fixed-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0,\ ++-b&h-lucida-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\ ++-kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0,\ ++-sazanami-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0 ++ diff --cc debian/generate-debian-orig.sh index 0000000,0000000..6f64117 new file mode 100644 --- /dev/null +++ b/debian/generate-debian-orig.sh @@@ -1,0 -1,0 +1,80 @@@ ++#!/bin/sh ++ ++# all directories are relative to the current dir ++ ++tarballs="corba.tar.bz2 hotspot.tar.bz2 jaxp.tar.bz2 jaxws.tar.bz2 jdk.tar.bz2 langtools.tar.bz2 openjdk.tar.bz2" ++tarballs="$tarballs icedtea-sound-1.0.1.tar.gz" ++jamvmtb=jamvm-2.0.0.tar.gz ++ ++# tarballs location ++tarballdir=7u161 ++ ++# icedtea upstream location (as extracted from icedtea's tarball) ++icedtea_checkout=icedtea-2.6.12 ++ ++# openjdk's debian location (usually fetched from bzr or the latest openjdk) ++debian_checkout=openjdk7 ++ ++base=openjdk-7 ++version=7u161-2.6.12 ++ ++# output directory ++pkgdir=$base-$version ++ ++# new orig file ++origtar=${base}_${version}.orig.tar.gz ++ ++if [ -d $pkgdir ]; then ++ echo directory $pkgdir already exists ++ exit 1 ++fi ++ ++if [ -d $pkgdir.orig ]; then ++ echo directory $pkgdir.orig already exists ++ exit 1 ++fi ++ ++if [ -f $origtar ]; then ++ echo "Using existing $origtar" ++ tar xf $origtar ++ if [ -d $pkgdir.orig ]; then ++ mv $pkgdir.orig $pkgdir ++ fi ++ tar -c -f - -C $icedtea_checkout . | tar -x -f - -C $pkgdir ++ rm -rf $pkgdir/.hg ++else ++ echo "Creating new $pkgdir.orig/" ++ rm -rf $pkgdir.orig ++ mkdir -p $pkgdir.orig ++ case "$base" in ++ openjdk*) ++ for i in $tarballs; do ++ cp -p $tarballdir/$i $pkgdir.orig/ ++ done ++ cp -p $tarballdir/$jamvmtb $pkgdir.orig/ ++ ;; ++ esac ++ tar -c -f - -C $icedtea_checkout . | tar -x -f - -C $pkgdir.orig ++ ( ++ cd $pkgdir.orig ++ sh autogen.sh ++ rm -rf autom4te.cache ++ ) ++ cp -a $pkgdir.orig $pkgdir.new ++ rm -rf $pkgdir.orig/.hg ++ mv $pkgdir.orig $pkgdir ++ tar cfz $origtar $pkgdir ++ rm -rf $pkgdir ++ mv $pkgdir.new $pkgdir ++fi ++ ++echo "Build debian diff in $pkgdir/" ++cp -a $debian_checkout $pkgdir/debian ++( ++ cd $pkgdir ++ #bash debian/update-shasum.sh ++ #bash debian/update-hgrev.sh ++ ls ++ sh autogen.sh ++ rm -rf autom4te.cache ++) diff --cc debian/generate-dfsg-zip.sh index 0000000,0000000..200be94 new file mode 100644 --- /dev/null +++ b/debian/generate-dfsg-zip.sh @@@ -1,0 -1,0 +1,60 @@@ ++#!/bin/sh ++ ++if [ ! -f "$1" ]; then ++ echo "does not exist: $1" ++ exit 1 ++fi ++ ++jdkdir=$(tar tf $1 | head -1 | sed 's,/.*,,') ++echo $jdkdir ++ ++dist=$(lsb_release -is) ++ ++echo "not needed anymore. 2.4.4 has both jdk and langtools cleaned up" ++exit 1 ++ ++# Untar openjdk source zip. ++rm -rf openjdk ++case "$1" in ++ *.zip) unzip -q -x $1 ;; ++ *.tar*) tar xf $1;; ++esac ++ ++case "$1" in ++ *jdk*) ++ echo "Cleanup jdk tarball..." ++ # Remove J2DBench sources, some of which have questionable license ++ # headers. ++ rm -rf \ ++ $jdkdir/src/share/demo/java2d/J2DBench ++ ++ # binary files ++ rm -f \ ++ $jdkdir/test/sun/net/idn/*.spp ++ ++ rm -rf \ ++ $jdkdir/test/sun/security/pkcs11/nss/lib/* ++ ++ rm -f \ ++ $jdkdir/test/java/util/Locale/data/deflocale.sh \ ++ $jdkdir/test/java/util/Locale/data/deflocale.rhel5 \ ++ $jdkdir/test/java/util/Locale/data/deflocale.rhel5.fmtasdefault \ ++ $jdkdir/test/java/util/Locale/data/deflocale.sol10.fmtasdefault \ ++ $jdkdir/test/java/util/Locale/data/deflocale.win7 \ ++ $jdkdir/test/java/util/Locale/data/deflocale.win7.fmtasdefault ++;; ++ ++ *langtools*) ++ echo "Cleanup langtools tarball..." ++ rm -rf $jdkdir/test/tools/javac/T5090006/broken.jar ++;; ++ ++esac ++ ++# Create new zip with new name. ++ ++NEW_ZIP=$(echo $1 | sed -e 's/\.tar.gz/-dfsg.tar.gz/;s/\.zip/-dfsg.tar.gz/') ++GZIP=-9v tar -cz -f $NEW_ZIP $jdkdir ++ ++# Remove old unzipped openjdk dir. ++rm -rf $jdkdir diff --cc debian/icedtea-7-jre-jamvm.overrides index 0000000,0000000..c173d01 new file mode 100644 --- /dev/null +++ b/debian/icedtea-7-jre-jamvm.overrides @@@ -1,0 -1,0 +1,7 @@@ ++# It seems to be acceptable to use rpath for private libraries like the ++# jdk is doing it. Check http://wiki.debian.org/RpathIssue for more ++# information. ++icedtea-7-jre-jamvm binary: shlib-with-executable-stack ++ ++# Strip libjvm.so with --strip-debug instead of --strip-unneeded. LP: #574997. ++icedtea-7-jre-jamvm binary: unstripped-binary-or-object diff --cc debian/jvm.cfg-default index 0000000,0000000..d886ba8 new file mode 100644 --- /dev/null +++ b/debian/jvm.cfg-default @@@ -1,0 -1,0 +1,5 @@@ ++# jvm.cfg-default - default jvm configuration which is used if no jvm.cfg ++# is found. After unpacking the file jvm.cfg doesn't exist yet (config file), ++# in this case use this file instead, so that the VM can be used before ++# configuration of the runtime package. ++-server KNOWN diff --cc debian/mauve_tests index 0000000,0000000..edba589 new file mode 100644 --- /dev/null +++ b/debian/mauve_tests @@@ -1,0 -1,0 +1,2570 @@@ ++javax.xml.xpath.XPath ++javax.xml.parsers.DocumentBuilder.PR27864 ++javax.xml.parsers.DocumentBuilder.parseSimpleXML ++javax.crypto.spec.TestOfPBEKeySpec ++javax.crypto.spec.TestOfSecretKeySpec ++javax.accessibility.AccessibleContext.getAccessibleRelationSet ++javax.imageio.plugins.jpeg.TestJPEGImageReadParam ++javax.imageio.plugins.jpeg.TestJPEGHuffmanTable ++javax.imageio.plugins.jpeg.TestJPEGQTable ++javax.imageio.stream.IIOByteBuffer.setOffset ++javax.imageio.stream.IIOByteBuffer.setLength ++javax.imageio.stream.IIOByteBuffer.setData ++javax.imageio.spi.ServiceRegistry.getServiceProviderByClass ++javax.imageio.spi.ServiceRegistry.deregisterAll ++javax.imageio.spi.ServiceRegistry.getCategories ++javax.imageio.spi.ServiceRegistry.lookupProviders ++javax.imageio.spi.ServiceRegistry.registerServiceProvider ++javax.imageio.spi.IIOServiceProvider.getVersion ++javax.imageio.spi.IIOServiceProvider.getVendorName ++javax.imageio.spi.ImageOutputStreamSpi.ImageOutputStreamSpi ++javax.imageio.spi.ImageOutputStreamSpi.needsCacheFile ++javax.imageio.spi.ImageOutputStreamSpi.canUseCacheFile ++javax.imageio.spi.ImageReaderWriterSpi.getNativeImageMetadataFormatName ++javax.imageio.spi.ImageReaderWriterSpi.getFileSuffixes ++javax.imageio.spi.ImageReaderWriterSpi.getExtraImageMetadataFormatNames ++javax.imageio.spi.ImageReaderWriterSpi.getPluginClassName ++javax.imageio.spi.ImageReaderWriterSpi.getNativeStreamMetadataFormatName ++javax.imageio.spi.ImageReaderWriterSpi.getExtraStreamMetadataFormatNames ++javax.imageio.spi.ImageReaderWriterSpi.getMIMETypes ++javax.imageio.spi.ImageReaderWriterSpi.isStandardImageMetadataFormatSupported ++javax.imageio.spi.ImageReaderWriterSpi.getFormatNames ++javax.imageio.spi.ImageReaderWriterSpi.isStandardStreamMetadataFormatSupported ++javax.imageio.spi.ImageInputStreamSpi.ImageInputStreamSpi ++javax.imageio.spi.ImageInputStreamSpi.needsCacheFile ++javax.imageio.spi.ImageInputStreamSpi.canUseCacheFile ++javax.imageio.spi.ImageTranscoderSpi.ImageTranscoderSpi ++javax.imageio.spi.IIORegistry.getDefaultInstance ++javax.naming.CompoundName.simple ++javax.naming.directory.BasicAttribute.Enumerate ++javax.naming.CompositeName.composite ++javax.management.ObjectName.apply ++javax.management.ObjectName.Parsing ++javax.management.ObjectName.ParsingJDK6 ++javax.management.ObjectName.applyJDK6 ++javax.management.openmbean.ArrayType.IsValue ++javax.management.openmbean.ArrayType.Constructor2 ++javax.management.openmbean.ArrayType.Equals ++javax.management.openmbean.ArrayType.IsPrimitiveArray ++javax.management.openmbean.ArrayType.GetArrayType ++javax.management.openmbean.ArrayType.HashCode ++javax.management.openmbean.ArrayType.GetPrimitiveArrayType ++javax.management.openmbean.ArrayType.Constructor1 ++javax.management.openmbean.CompositeDataInvocationHandler.Test ++javax.management.MBeanServerPermission.Constructor ++javax.security.auth.login.TestOfPR25202 ++javax.print.SimpleDoc.constructor ++javax.print.SimpleDoc.getStreamForBytes ++javax.print.SimpleDoc.getAttributes ++javax.print.SimpleDoc.getReaderForText ++javax.print.DocFlavor.parseMimeType ++javax.print.attribute.TextSyntax.constructors ++javax.print.attribute.ResolutionSyntax.simple ++javax.print.attribute.EnumSyntax.serialize ++javax.print.attribute.EnumSyntax.equals ++javax.print.attribute.AttributeSetUtilities.simple ++javax.print.attribute.Size2DSyntax.simple ++javax.print.attribute.SetOfIntegerSyntax.Simple ++javax.print.attribute.HashAttributeSet.populatedSet ++javax.print.attribute.HashAttributeSet.nullTests ++javax.print.attribute.HashAttributeSet.emptySet ++javax.print.attribute.standard.MediaSize.userClass ++javax.swing.JWindow.isRootPaneCheckingEnabled ++javax.swing.JSplitPane.setComponent ++javax.swing.JSplitPane.setResizeWeight ++javax.swing.JSplitPane.getDividerLocation ++javax.swing.JSplitPane.getInputMap ++javax.swing.JSplitPane.getActionMap ++javax.swing.JSplitPane.paramString ++javax.swing.JSplitPane.Constructor ++javax.swing.JOptionPane.getInputMap ++javax.swing.JTabbedPane.getInputMap ++javax.swing.JTabbedPane.Mnemonic ++javax.swing.JTabbedPane.remove ++javax.swing.JToggleButton.constructor ++javax.swing.JToggleButton.actionEvent ++javax.swing.JToggleButton.isFocusable ++javax.swing.JToggleButton.uidelegate ++javax.swing.JToggleButton.getActionCommand ++javax.swing.JToggleButton.model ++javax.swing.JToggleButton.click ++javax.swing.text.View.getResizeWeight ++javax.swing.text.View.getMaximumSpan ++javax.swing.text.View.getMinimumSpan ++javax.swing.text.View.getAlignment ++javax.swing.text.GapContent.getString ++javax.swing.text.GapContent.GapContentTest ++javax.swing.text.GapContent.length ++javax.swing.text.GapContent.constructors ++javax.swing.text.GapContent.insertString ++javax.swing.text.GapContent.getChars ++javax.swing.text.GapContent.PositionTest ++javax.swing.text.GapContent.remove ++javax.swing.text.ElementIterator.ElementIteratorTest ++javax.swing.text.AbstractDocument.BranchElement.getStartOffset ++javax.swing.text.AbstractDocument.BranchElement.getElementIndexNullPointer ++javax.swing.text.AbstractDocument.BranchElement.BranchElementTest ++javax.swing.text.AbstractDocument.BranchElement.getElementIndex ++javax.swing.text.AbstractDocument.LeafElement.getStartOffset ++javax.swing.text.AbstractDocument.getDocumentProperties ++javax.swing.text.AbstractDocument.ElementChange2 ++javax.swing.text.AbstractDocument.AbstractDocumentTest ++javax.swing.text.AbstractDocument.ElementChange ++javax.swing.text.AbstractDocument.filterTest ++javax.swing.text.MaskFormatter.MaskFormatterTest ++javax.swing.text.DefaultFormatter.getValueClass ++javax.swing.text.PlainDocument.getRootElements ++javax.swing.text.PlainDocument.getDocumentProperties ++javax.swing.text.PlainDocument.removeJoinesLines ++javax.swing.text.PlainDocument.multipleLeafs ++javax.swing.text.PlainDocument.getText ++javax.swing.text.PlainDocument.getLength ++javax.swing.text.PlainDocument.createPosition ++javax.swing.text.PlainDocument.insertUpdate ++javax.swing.text.PlainDocument.insertString ++javax.swing.text.PlainDocument.PlainDocumentTest ++javax.swing.text.AttributeSet.isEqual ++javax.swing.text.Segment.clone ++javax.swing.text.Segment.first ++javax.swing.text.Segment.setIndex ++javax.swing.text.Segment.last ++javax.swing.text.Segment.getIndex ++javax.swing.text.Segment.current ++javax.swing.text.Segment.next ++javax.swing.text.Segment.isPartialReturn ++javax.swing.text.Segment.getEndIndex ++javax.swing.text.Segment.setPartialReturn ++javax.swing.text.Segment.getBeginIndex ++javax.swing.text.Segment.constructors ++javax.swing.text.Segment.toString ++javax.swing.text.Segment.previous ++javax.swing.text.TextAction.augmentList ++javax.swing.text.TabSet.getTab ++javax.swing.text.TabSet.constructor ++javax.swing.text.TabSet.getTabCount ++javax.swing.text.TabSet.getTabIndex ++javax.swing.text.TabSet.getTabIndexAfter ++javax.swing.text.TabSet.equals ++javax.swing.text.TabSet.toString ++javax.swing.text.html.HTML.HTML_Test ++javax.swing.text.html.HTMLDocument.FindById ++javax.swing.text.html.parser.Entity.Entity_Test ++javax.swing.text.html.parser.TagElement.TagElement_Test ++javax.swing.text.html.parser.AttributeList.AttributeList_test ++javax.swing.text.html.parser.Element.Element_Test ++javax.swing.text.html.parser.ParserDelegator.Entities ++javax.swing.text.html.parser.ParserDelegator.Text4 ++javax.swing.text.html.parser.ParserDelegator.randomTables ++javax.swing.text.html.parser.ParserDelegator.SimpleParsing ++javax.swing.text.html.parser.ParserDelegator.Text3 ++javax.swing.text.html.parser.ParserDelegator.Text ++javax.swing.text.html.parser.ParserDelegator.eolnNorification ++javax.swing.text.html.parser.ParserDelegator.tokenLocations ++javax.swing.text.html.parser.DTD.DTD_test ++javax.swing.text.BoxView.spans ++javax.swing.text.StyleConstants.setTabSet ++javax.swing.text.StyleConstants.setUnderline ++javax.swing.text.StyleConstants.getLeftIndent ++javax.swing.text.StyleConstants.getIcon ++javax.swing.text.StyleConstants.setFontFamily ++javax.swing.text.StyleConstants.isBold ++javax.swing.text.StyleConstants.setLineSpacing ++javax.swing.text.StyleConstants.isSubscript ++javax.swing.text.StyleConstants.setItalic ++javax.swing.text.StyleConstants.getFontSize ++javax.swing.text.StyleConstants.setComponent ++javax.swing.text.StyleConstants.setBidiLevel ++javax.swing.text.StyleConstants.getForeground ++javax.swing.text.StyleConstants.setSuperscript ++javax.swing.text.StyleConstants.getSpaceAbove ++javax.swing.text.StyleConstants.getLineSpacing ++javax.swing.text.StyleConstants.setSpaceBelow ++javax.swing.text.StyleConstants.setBackground ++javax.swing.text.StyleConstants.getRightIndent ++javax.swing.text.StyleConstants.getFirstLineIndent ++javax.swing.text.StyleConstants.isItalic ++javax.swing.text.StyleConstants.getTabSet ++javax.swing.text.StyleConstants.setIcon ++javax.swing.text.StyleConstants.isUnderline ++javax.swing.text.StyleConstants.setBold ++javax.swing.text.StyleConstants.setAlignment ++javax.swing.text.StyleConstants.setSubscript ++javax.swing.text.StyleConstants.setRightIndent ++javax.swing.text.StyleConstants.isSuperscript ++javax.swing.text.StyleConstants.getSpaceBelow ++javax.swing.text.StyleConstants.setFontSize ++javax.swing.text.StyleConstants.getFontFamily ++javax.swing.text.StyleConstants.constants ++javax.swing.text.StyleConstants.setStrikeThrough ++javax.swing.text.StyleConstants.setForeground ++javax.swing.text.StyleConstants.getAlignment ++javax.swing.text.StyleConstants.setLeftIndent ++javax.swing.text.StyleConstants.getBackground ++javax.swing.text.StyleConstants.getComponent ++javax.swing.text.StyleConstants.getBidiLevel ++javax.swing.text.StyleConstants.setFirstLineIndent ++javax.swing.text.StyleConstants.setSpaceAbove ++javax.swing.text.StyleConstants.isStrikeThrough ++javax.swing.text.DefaultStyledDocument.ElementBuffer.ElementStructure3 ++javax.swing.text.DefaultStyledDocument.ElementBuffer.ElementStructure1 ++javax.swing.text.DefaultStyledDocument.ElementBuffer.StyledDocument6 ++javax.swing.text.DefaultStyledDocument.ElementBuffer.ElementStructure7 ++javax.swing.text.DefaultStyledDocument.ElementBuffer.ElementStructure2 ++javax.swing.text.DefaultStyledDocument.ElementBuffer.StyledDocument1 ++javax.swing.text.DefaultStyledDocument.ElementBuffer.ElementStructure4 ++javax.swing.text.DefaultStyledDocument.ElementBuffer.ElementStructure6 ++javax.swing.text.DefaultStyledDocument.ElementBuffer.StyledDocument3 ++javax.swing.text.DefaultStyledDocument.ElementBuffer.ElementStructure5 ++javax.swing.text.DefaultStyledDocument.ElementBuffer.insert ++javax.swing.text.DefaultStyledDocument.ElementBuffer.ElementStructure8 ++javax.swing.text.DefaultStyledDocument.ElementBuffer.StyledDocument2 ++javax.swing.text.DefaultStyledDocument.ElementBuffer.StyledDocument5 ++javax.swing.text.DefaultStyledDocument.ElementBuffer.StyledDocument4 ++javax.swing.text.DefaultStyledDocument.Insert ++javax.swing.text.DefaultStyledDocument.insertString ++javax.swing.text.DefaultStyledDocument.Create ++javax.swing.text.SimpleAttributeSet.removeAttributesOnlyIfMatch ++javax.swing.text.SimpleAttributeSet.clone ++javax.swing.text.SimpleAttributeSet.EMPTY ++javax.swing.text.SimpleAttributeSet.containsAttributes ++javax.swing.text.SimpleAttributeSet.containsChecksParent ++javax.swing.text.SimpleAttributeSet.containsAttribute ++javax.swing.text.SimpleAttributeSet.getResolveParent ++javax.swing.text.SimpleAttributeSet.removeAttribute ++javax.swing.text.SimpleAttributeSet.copyAttributes ++javax.swing.text.SimpleAttributeSet.equals ++javax.swing.text.SimpleAttributeSet.removeAttributes ++javax.swing.text.SimpleAttributeSet.getAttribute ++javax.swing.text.SimpleAttributeSet.isEqual ++javax.swing.text.SimpleAttributeSet.getAttributeCount ++javax.swing.text.SimpleAttributeSet.constructors ++javax.swing.text.SimpleAttributeSet.isDefined ++javax.swing.text.SimpleAttributeSet.addAttribute ++javax.swing.text.SimpleAttributeSet.getAttributeNames ++javax.swing.text.SimpleAttributeSet.setResolveParent ++javax.swing.text.SimpleAttributeSet.isEmpty ++javax.swing.text.SimpleAttributeSet.addAttributes ++javax.swing.text.SimpleAttributeSet.nullValue ++javax.swing.text.ZoneView.getMaximumZoneSize ++javax.swing.text.ZoneView.createZone ++javax.swing.text.ZoneView.constructor ++javax.swing.text.ZoneView.zoneWasLoaded ++javax.swing.text.ZoneView.isZoneLoaded ++javax.swing.text.ZoneView.loadChildren ++javax.swing.text.ZoneView.setMaxZonesLoaded ++javax.swing.text.ZoneView.unloadZone ++javax.swing.text.ZoneView.setMaximumZoneSize ++javax.swing.text.FlowView.FlowStrategy.adjustRow ++javax.swing.text.FlowView.getFlowAxis ++javax.swing.text.InternationalFormatter.InternationalFormatterTest ++javax.swing.text.Utilities.getNextWord ++javax.swing.text.Utilities.getBreakLocation ++javax.swing.text.Utilities.getPreviousWord ++javax.swing.text.Utilities.getWordStart ++javax.swing.text.Utilities.getTabbedTextOffset ++javax.swing.text.TabStop.constructors ++javax.swing.text.TabStop.toString ++javax.swing.text.StringContent.insertUndo ++javax.swing.text.StringContent.BadLocationExceptionTest ++javax.swing.text.StringContent.stickyPosition ++javax.swing.text.StringContent.length ++javax.swing.text.StringContent.removeUndo ++javax.swing.text.StringContent.constructors ++javax.swing.text.StringContent.insertString ++javax.swing.text.StringContent.StringContentTest ++javax.swing.text.StyledEditorKit.createInputAttributesTest ++javax.swing.text.StyleContext.NamedStyleInit ++javax.swing.text.StyleContext.NamedStyleSetResolveParent ++javax.swing.text.StyleContext.addStyle ++javax.swing.text.StyleContext.addAttribute ++javax.swing.JScrollBar.getAccessibleContext ++javax.swing.JScrollBar.getInputMap ++javax.swing.JScrollBar.constructors ++javax.swing.JScrollBar.getActionMap ++javax.swing.JScrollBar.paramString ++javax.swing.plaf.basic.BasicButtonUI.getTextShiftOffset ++javax.swing.plaf.basic.BasicButtonUI.getPropertyPrefix ++javax.swing.plaf.basic.BasicButtonUI.defaultTextIconGap ++javax.swing.plaf.basic.BasicButtonUI.setTextShiftOffset ++javax.swing.plaf.basic.BasicButtonUI.defaultTextShiftOffset ++javax.swing.plaf.basic.BasicButtonUI.clearTextShiftOffset ++javax.swing.plaf.basic.BasicRadioButtonMenuItemUI.getPropertyPrefix ++javax.swing.plaf.basic.BasicToggleButtonUI.getPropertyPrefix ++javax.swing.plaf.basic.BasicSeparatorUI.getPreferredSize ++javax.swing.plaf.basic.BasicSeparatorUI.getMinimumSize ++javax.swing.plaf.basic.BasicSeparatorUI.getMaximumSize ++javax.swing.plaf.basic.BasicLookAndFeel.initSystemColorDefaults ++javax.swing.plaf.basic.BasicCheckBoxMenuItemUI.getPropertyPrefix ++javax.swing.plaf.basic.BasicHTML.isHTMLString ++javax.swing.plaf.basic.BasicScrollBarUI.layoutContainer ++javax.swing.plaf.basic.BasicScrollBarUI.getPreferredSize ++javax.swing.plaf.basic.BasicScrollBarUI.constructor ++javax.swing.plaf.basic.BasicScrollBarUI.getMinimumSize ++javax.swing.plaf.basic.BasicScrollBarUI.createDecreaseButton ++javax.swing.plaf.basic.BasicScrollBarUI.getMaximumSize ++javax.swing.plaf.basic.BasicScrollBarUI.getMaximumThumbSize ++javax.swing.plaf.basic.BasicScrollBarUI.installDefaults ++javax.swing.plaf.basic.BasicScrollBarUI.createIncreaseButton ++javax.swing.plaf.basic.BasicScrollBarUI.installComponents ++javax.swing.plaf.basic.BasicScrollBarUI.getMinimumThumbSize ++javax.swing.plaf.basic.BasicInternalFrameTitlePane.MaximizeAction.constructor ++javax.swing.plaf.basic.BasicInternalFrameTitlePane.IconifyAction.constructor ++javax.swing.plaf.basic.BasicInternalFrameTitlePane.CloseAction.constructor ++javax.swing.plaf.basic.BasicInternalFrameTitlePane.RestoreAction.constructor ++javax.swing.plaf.basic.BasicInternalFrameTitlePane.MoveAction.constructor ++javax.swing.plaf.basic.BasicInternalFrameTitlePane.SizeAction.constructor ++javax.swing.plaf.basic.BasicPasswordFieldUI.getPropertyPrefix ++javax.swing.plaf.basic.BasicSplitPaneUI.BasicHorizontalLayoutManager.layoutContainer ++javax.swing.plaf.basic.BasicSplitPaneUI.getDividerLocation ++javax.swing.plaf.basic.BasicArrowButton.getPreferredSize ++javax.swing.plaf.basic.BasicArrowButton.isFocusTraversable ++javax.swing.plaf.basic.BasicArrowButton.getMinimumSize ++javax.swing.plaf.basic.BasicArrowButton.isFocusable ++javax.swing.plaf.basic.BasicArrowButton.getMaximumSize ++javax.swing.plaf.basic.BasicSliderUI.xPositionForValue ++javax.swing.plaf.basic.BasicSliderUI.getPreferredSize ++javax.swing.plaf.basic.BasicSliderUI.getMinimumSize ++javax.swing.plaf.basic.BasicSliderUI.valueForYPosition ++javax.swing.plaf.basic.BasicSliderUI.getMaximumSize ++javax.swing.plaf.basic.BasicSliderUI.getThumbSize ++javax.swing.plaf.basic.BasicSliderUI.valueForXPosition ++javax.swing.plaf.basic.BasicSliderUI.constructors ++javax.swing.plaf.basic.BasicSliderUI.yPositionForValue ++javax.swing.plaf.basic.BasicTextFieldUI.getPropertyPrefix ++javax.swing.plaf.basic.BasicTextPaneUI.getPropertyPrefix ++javax.swing.plaf.basic.BasicMenuItemUI.getPropertyPrefix ++javax.swing.plaf.basic.BasicFormattedTextFieldUI.getPropertyPrefix ++javax.swing.plaf.basic.BasicTextAreaUI.getPropertyPrefix ++javax.swing.plaf.basic.BasicComboBoxUI.getDefaultSize ++javax.swing.plaf.basic.BasicComboBoxUI.createEditor ++javax.swing.plaf.basic.BasicComboBoxUI.getMaximumSize ++javax.swing.plaf.basic.BasicListUI.updateLayoutStateNeeded ++javax.swing.plaf.basic.BasicMenuUI.getPropertyPrefix ++javax.swing.plaf.basic.BasicIconFactory.getCheckBoxMenuItemIcon ++javax.swing.plaf.basic.BasicIconFactory.getMenuArrowIcon ++javax.swing.plaf.basic.BasicIconFactory.getCheckBoxIcon ++javax.swing.plaf.basic.BasicFileChooserUI.getFileName ++javax.swing.plaf.basic.BasicFileChooserUI.getApproveButtonText ++javax.swing.plaf.basic.BasicFileChooserUI.constructor ++javax.swing.plaf.basic.BasicFileChooserUI.getApproveButtonMnemonic ++javax.swing.plaf.basic.BasicFileChooserUI.uninstallStrings ++javax.swing.plaf.basic.BasicFileChooserUI.getApproveButton ++javax.swing.plaf.basic.BasicFileChooserUI.getGoHomeAction ++javax.swing.plaf.basic.BasicFileChooserUI.getUpdateAction ++javax.swing.plaf.basic.BasicFileChooserUI.getDirectoryName ++javax.swing.plaf.basic.BasicFileChooserUI.getApproveSelectionAction ++javax.swing.plaf.basic.BasicFileChooserUI.installStrings ++javax.swing.plaf.basic.BasicFileChooserUI.getChangeToParentDirectoryAction ++javax.swing.plaf.basic.BasicFileChooserUI.getCancelSelectionAction ++javax.swing.plaf.basic.BasicFileChooserUI.getFileView ++javax.swing.plaf.basic.BasicFileChooserUI.installIcons ++javax.swing.plaf.basic.BasicFileChooserUI.getNewFolderAction ++javax.swing.plaf.basic.BasicFileChooserUI.getApproveButtonToolTipText ++javax.swing.plaf.basic.BasicFileChooserUI.getDialogTitle ++javax.swing.plaf.basic.BasicCheckBoxUI.getPropertyPrefix ++javax.swing.plaf.basic.BasicComboBoxEditor.removeActionListener ++javax.swing.plaf.basic.BasicComboBoxEditor.addActionListener ++javax.swing.plaf.basic.BasicComboBoxEditor.constructor ++javax.swing.plaf.basic.BasicEditorPaneUI.getPropertyPrefix ++javax.swing.plaf.basic.BasicRootPaneUI.installDefaults ++javax.swing.plaf.basic.BasicRadioButtonUI.getPropertyPrefix ++javax.swing.plaf.ColorUIResource.serialization ++javax.swing.plaf.ColorUIResource.equals ++javax.swing.plaf.ColorUIResource.constructors ++javax.swing.plaf.metal.MetalTheme.MetalThemeTest ++javax.swing.plaf.metal.MetalLookAndFeel.getMenuTextFont ++javax.swing.plaf.metal.MetalLookAndFeel.getDescription ++javax.swing.plaf.metal.MetalLookAndFeel.isNativeLookAndFeel ++javax.swing.plaf.metal.MetalLookAndFeel.getSeparatorBackground ++javax.swing.plaf.metal.MetalLookAndFeel.getPrimaryControl ++javax.swing.plaf.metal.MetalLookAndFeel.getWindowTitleInactiveForeground ++javax.swing.plaf.metal.MetalLookAndFeel.getMenuBackground ++javax.swing.plaf.metal.MetalLookAndFeel.getMenuForeground ++javax.swing.plaf.metal.MetalLookAndFeel.getPrimaryControlShadow ++javax.swing.plaf.metal.MetalLookAndFeel.getWindowTitleForeground ++javax.swing.plaf.metal.MetalLookAndFeel.getControlTextFont ++javax.swing.plaf.metal.MetalLookAndFeel.getControlHighlight ++javax.swing.plaf.metal.MetalLookAndFeel.getPrimaryControlHighlight ++javax.swing.plaf.metal.MetalLookAndFeel.getControlTextColor ++javax.swing.plaf.metal.MetalLookAndFeel.getPrimaryControlDarkShadow ++javax.swing.plaf.metal.MetalLookAndFeel.getSeparatorForeground ++javax.swing.plaf.metal.MetalLookAndFeel.getSubTextFont ++javax.swing.plaf.metal.MetalLookAndFeel.setCurrentTheme ++javax.swing.plaf.metal.MetalLookAndFeel.getControlShadow ++javax.swing.plaf.metal.MetalLookAndFeel.isSupportedLookAndFeel ++javax.swing.plaf.metal.MetalLookAndFeel.getMenuSelectedBackground ++javax.swing.plaf.metal.MetalLookAndFeel.getInactiveControlTextColor ++javax.swing.plaf.metal.MetalLookAndFeel.getWhite ++javax.swing.plaf.metal.MetalLookAndFeel.getUserTextFont ++javax.swing.plaf.metal.MetalLookAndFeel.getAcceleratorForeground ++javax.swing.plaf.metal.MetalLookAndFeel.getControlDisabled ++javax.swing.plaf.metal.MetalLookAndFeel.getID ++javax.swing.plaf.metal.MetalLookAndFeel.getWindowTitleBackground ++javax.swing.plaf.metal.MetalLookAndFeel.getName ++javax.swing.plaf.metal.MetalLookAndFeel.getSystemTextColor ++javax.swing.plaf.metal.MetalLookAndFeel.getWindowTitleFont ++javax.swing.plaf.metal.MetalLookAndFeel.getInactiveSystemTextColor ++javax.swing.plaf.metal.MetalLookAndFeel.getUserTextColor ++javax.swing.plaf.metal.MetalLookAndFeel.getWindowBackground ++javax.swing.plaf.metal.MetalLookAndFeel.getBlack ++javax.swing.plaf.metal.MetalLookAndFeel.getAcceleratorSelectedForeground ++javax.swing.plaf.metal.MetalLookAndFeel.getDesktopColor ++javax.swing.plaf.metal.MetalLookAndFeel.getSystemTextFont ++javax.swing.plaf.metal.MetalLookAndFeel.getControlDarkShadow ++javax.swing.plaf.metal.MetalLookAndFeel.getControlInfo ++javax.swing.plaf.metal.MetalLookAndFeel.getMenuDisabledForeground ++javax.swing.plaf.metal.MetalLookAndFeel.getFocusColor ++javax.swing.plaf.metal.MetalLookAndFeel.getMenuSelectedForeground ++javax.swing.plaf.metal.MetalLookAndFeel.getHighlightedTextColor ++javax.swing.plaf.metal.MetalLookAndFeel.getControl ++javax.swing.plaf.metal.MetalLookAndFeel.getWindowTitleInactiveBackground ++javax.swing.plaf.metal.MetalLookAndFeel.getTextHighlightColor ++javax.swing.plaf.metal.MetalLookAndFeel.getPrimaryControlInfo ++javax.swing.plaf.metal.MetalComboBoxIcon.getIconWidth ++javax.swing.plaf.metal.MetalComboBoxIcon.getIconHeight ++javax.swing.plaf.metal.MetalComboBoxUI.getPreferredSize ++javax.swing.plaf.metal.MetalComboBoxUI.createArrowButton ++javax.swing.plaf.metal.MetalFileChooserUI.getFileName ++javax.swing.plaf.metal.MetalFileChooserUI.createFilterComboBoxModel ++javax.swing.plaf.metal.MetalFileChooserUI.getButtonPanel ++javax.swing.plaf.metal.MetalFileChooserUI.getPreferredSize ++javax.swing.plaf.metal.MetalFileChooserUI.getMinimumSize ++javax.swing.plaf.metal.MetalFileChooserUI.getMaximumSize ++javax.swing.plaf.metal.MetalFileChooserUI.getApproveButton ++javax.swing.plaf.metal.MetalFileChooserUI.setFileName ++javax.swing.plaf.metal.MetalFileChooserUI.getBottomPanel ++javax.swing.plaf.metal.MetalCheckBoxUI.getPropertyPrefix ++javax.swing.plaf.metal.MetalIconFactory.TreeFolderIcon.getAdditionalHeight ++javax.swing.plaf.metal.MetalIconFactory.TreeFolderIcon.getShift ++javax.swing.plaf.metal.MetalIconFactory.PaletteCloseIcon.getIconWidth ++javax.swing.plaf.metal.MetalIconFactory.PaletteCloseIcon.getIconHeight ++javax.swing.plaf.metal.MetalIconFactory.TreeLeafIcon.getAdditionalHeight ++javax.swing.plaf.metal.MetalIconFactory.TreeLeafIcon.getShift ++javax.swing.plaf.metal.MetalIconFactory.getInternalFrameCloseIcon ++javax.swing.plaf.metal.MetalIconFactory.getInternalFrameMaximizeIcon ++javax.swing.plaf.metal.MetalIconFactory.getMenuItemCheckIcon ++javax.swing.plaf.metal.MetalIconFactory.getRadioButtonMenuItemIcon ++javax.swing.plaf.metal.MetalIconFactory.getCheckBoxMenuItemIcon ++javax.swing.plaf.metal.MetalIconFactory.getTreeHardDriveIcon ++javax.swing.plaf.metal.MetalIconFactory.getTreeLeafIcon ++javax.swing.plaf.metal.MetalIconFactory.getMenuArrowIcon ++javax.swing.plaf.metal.MetalIconFactory.getFileChooserNewFolderIcon ++javax.swing.plaf.metal.MetalIconFactory.getTreeControlIcon ++javax.swing.plaf.metal.MetalIconFactory.getFileChooserDetailViewIcon ++javax.swing.plaf.metal.MetalIconFactory.getTreeFloppyDriveIcon ++javax.swing.plaf.metal.MetalIconFactory.getMenuItemArrowIcon ++javax.swing.plaf.metal.MetalIconFactory.getFileChooserListViewIcon ++javax.swing.plaf.metal.MetalIconFactory.getTreeComputerIcon ++javax.swing.plaf.metal.MetalIconFactory.getFileChooserHomeFolderIcon ++javax.swing.plaf.metal.MetalIconFactory.getInternalFrameAltMaximizeIcon ++javax.swing.plaf.metal.MetalIconFactory.getRadioButtonIcon ++javax.swing.plaf.metal.MetalIconFactory.getFileChooserUpFolderIcon ++javax.swing.plaf.metal.MetalIconFactory.getInternalFrameDefaultMenuIcon ++javax.swing.plaf.metal.MetalIconFactory.getInternalFrameMinimizeIcon ++javax.swing.plaf.metal.MetalIconFactory.getCheckBoxIcon ++javax.swing.plaf.metal.MetalIconFactory.getTreeFolderIcon ++javax.swing.plaf.metal.MetalRadioButtonUI.getSelectColor ++javax.swing.plaf.metal.MetalRadioButtonUI.getFocusColor ++javax.swing.plaf.metal.MetalRadioButtonUI.getDisabledTextColor ++javax.swing.plaf.metal.MetalComboBoxButton.setIconOnly ++javax.swing.plaf.metal.MetalComboBoxButton.isFocusTraversable ++javax.swing.plaf.metal.MetalComboBoxButton.setEnabled ++javax.swing.plaf.metal.MetalComboBoxButton.isIconOnly ++javax.swing.plaf.metal.MetalComboBoxButton.getComboBox ++javax.swing.plaf.metal.MetalComboBoxButton.getComboIcon ++javax.swing.plaf.metal.MetalComboBoxButton.setComboBox ++javax.swing.plaf.metal.MetalComboBoxButton.constructors ++javax.swing.plaf.metal.MetalComboBoxButton.setComboIcon ++javax.swing.plaf.metal.DefaultMetalTheme.getMenuTextFont ++javax.swing.plaf.metal.DefaultMetalTheme.DefaultMetalThemeTest ++javax.swing.plaf.metal.DefaultMetalTheme.getControlTextFont ++javax.swing.plaf.metal.DefaultMetalTheme.getSubTextFont ++javax.swing.plaf.metal.DefaultMetalTheme.getUserTextFont ++javax.swing.plaf.metal.DefaultMetalTheme.getName ++javax.swing.plaf.metal.DefaultMetalTheme.getWindowTitleFont ++javax.swing.plaf.metal.DefaultMetalTheme.getSystemTextFont ++javax.swing.plaf.metal.MetalComboBoxEditor.constructor ++javax.swing.plaf.metal.MetalComboBoxEditor.editorBorderInsets ++javax.swing.plaf.metal.MetalToolTipUI.constructor ++javax.swing.plaf.metal.MetalToolTipUI.createUI ++javax.swing.plaf.metal.OceanTheme.OceanThemeTest ++javax.swing.plaf.metal.OceanTheme.addCustomEntriesToTable ++javax.swing.plaf.metal.MetalToggleButtonUI.getSelectColor ++javax.swing.plaf.metal.MetalToggleButtonUI.getFocusColor ++javax.swing.plaf.metal.MetalToggleButtonUI.getDisabledTextColor ++javax.swing.plaf.metal.MetalBorders.ToolBarBorder.getBorderInsets ++javax.swing.plaf.metal.MetalBorders.MenuItemBorder.borderInsets ++javax.swing.plaf.metal.MetalBorders.MenuBarBorder.getBorderInsets ++javax.swing.plaf.metal.MetalBorders.MenuBarBorder.borderInsets ++javax.swing.plaf.metal.MetalBorders.getToggleButtonBorder ++javax.swing.plaf.metal.MetalBorders.getDesktopIconBorder ++javax.swing.plaf.metal.MetalBorders.getButtonBorder ++javax.swing.plaf.metal.MetalBorders.getTextFieldBorder ++javax.swing.plaf.metal.MetalBorders.getTextBorder ++javax.swing.plaf.metal.MetalScrollButton.getButtonWidth ++javax.swing.plaf.metal.MetalScrollButton.getPreferredSize ++javax.swing.plaf.metal.MetalScrollButton.constructor ++javax.swing.plaf.metal.MetalScrollButton.getMinimumSize ++javax.swing.plaf.metal.MetalScrollButton.isFocusable ++javax.swing.plaf.metal.MetalScrollButton.getMaximumSize ++javax.swing.plaf.metal.MetalScrollBarUI.layoutContainer ++javax.swing.plaf.metal.MetalScrollBarUI.getPreferredSize ++javax.swing.plaf.metal.MetalScrollBarUI.constructor ++javax.swing.plaf.metal.MetalScrollBarUI.installDefaults ++javax.swing.plaf.metal.MetalScrollBarUI.getMinimumThumbSize ++javax.swing.plaf.metal.MetalButtonUI.getSelectColor ++javax.swing.plaf.metal.MetalButtonUI.getFocusColor ++javax.swing.plaf.metal.MetalButtonUI.getDisabledTextColor ++javax.swing.plaf.IconUIResource.constructor ++javax.swing.JFrame.isRootPaneCheckingEnabled ++javax.swing.JFrame.glassPaneLayout ++javax.swing.JFrame.constructors ++javax.swing.border.TitledBorder.getTitleFont ++javax.swing.border.TitledBorder.getTitle ++javax.swing.border.TitledBorder.setTitleJustification ++javax.swing.border.TitledBorder.getBorder ++javax.swing.border.TitledBorder.getBorderInsets ++javax.swing.border.TitledBorder.setTitleColor ++javax.swing.border.TitledBorder.setTitle ++javax.swing.border.TitledBorder.setTitlePosition ++javax.swing.border.TitledBorder.getTitleJustification ++javax.swing.border.TitledBorder.setBorder ++javax.swing.border.TitledBorder.getTitleColor ++javax.swing.border.TitledBorder.isBorderOpaque ++javax.swing.border.TitledBorder.constructors ++javax.swing.border.TitledBorder.setTitleFont ++javax.swing.border.TitledBorder.getTitlePosition ++javax.swing.border.CompoundBorder.isBorderOpaque ++javax.swing.JTable.AccessibleJTable.AccessibleJTableHeaderCell.getAccessibleRole ++javax.swing.JTable.AccessibleJTable.AccessibleJTableCell.getAccessibleRole ++javax.swing.JTable.AccessibleJTable.getAccessibleColumnHeader ++javax.swing.JTable.setRowSelectionAllowed ++javax.swing.JTable.getColumn ++javax.swing.JTable.getRowHeight ++javax.swing.JTable.convertColumnIndexToModel ++javax.swing.JTable.createDefaultDataModel ++javax.swing.JTable.getCellEditor ++javax.swing.JTable.setColumnSelectionAllowed ++javax.swing.JTable.setAutoCreateColumnsFromModel ++javax.swing.JTable.setRowHeight ++javax.swing.JTable.createDefaultSelectionModel ++javax.swing.JTable.getAccessibleContext ++javax.swing.JTable.convertColumnIndexToView ++javax.swing.JTable.isCellEditable ++javax.swing.JTable.getInputMap ++javax.swing.JTable.getCellRect ++javax.swing.JTable.isRowSelected ++javax.swing.JTable.getModel ++javax.swing.JTable.initializeLocalVars ++javax.swing.JTable.createDefaultColumnsFromModel ++javax.swing.JTable.getAutoCreateColumnsFromModel ++javax.swing.JTable.isColumnSelected ++javax.swing.JTable.addColumn ++javax.swing.table.AbstractTableModel.getColumnName ++javax.swing.table.AbstractTableModel.fireTableDataChanged ++javax.swing.table.AbstractTableModel.fireTableStructureChanged ++javax.swing.table.AbstractTableModel.fireTableRowsUpdated ++javax.swing.table.AbstractTableModel.fireTableRowsDeleted ++javax.swing.table.AbstractTableModel.getColumnClass ++javax.swing.table.AbstractTableModel.isCellEditable ++javax.swing.table.AbstractTableModel.fireTableChanged ++javax.swing.table.AbstractTableModel.findColumn ++javax.swing.table.AbstractTableModel.fireTableRowsInserted ++javax.swing.table.AbstractTableModel.fireTableCellUpdated ++javax.swing.table.DefaultTableCellRenderer.getTableCellRendererComponent ++javax.swing.table.DefaultTableColumnModel.getListeners ++javax.swing.table.DefaultTableColumnModel.getColumn ++javax.swing.table.DefaultTableColumnModel.getColumnModelListeners ++javax.swing.table.DefaultTableColumnModel.getSelectedColumnCount ++javax.swing.table.DefaultTableColumnModel.getSelectionModel ++javax.swing.table.DefaultTableColumnModel.getTotalColumnWidth ++javax.swing.table.DefaultTableColumnModel.constructor ++javax.swing.table.DefaultTableColumnModel.getColumns ++javax.swing.table.DefaultTableColumnModel.setColumnSelectionAllowed ++javax.swing.table.DefaultTableColumnModel.getColumnSelectionAllowed ++javax.swing.table.DefaultTableColumnModel.getColumnCount ++javax.swing.table.DefaultTableColumnModel.setSelectionModel ++javax.swing.table.DefaultTableColumnModel.setColumnMargin ++javax.swing.table.DefaultTableColumnModel.getColumnIndexAtX ++javax.swing.table.DefaultTableColumnModel.addColumnModelListener ++javax.swing.table.DefaultTableColumnModel.removeColumn ++javax.swing.table.DefaultTableColumnModel.moveColumn ++javax.swing.table.DefaultTableColumnModel.addColumn ++javax.swing.table.DefaultTableColumnModel.getColumnIndex ++javax.swing.table.DefaultTableColumnModel.getColumnMargin ++javax.swing.table.DefaultTableModel.removeRow ++javax.swing.table.DefaultTableModel.getRowCount ++javax.swing.table.DefaultTableModel.setColumnCount ++javax.swing.table.DefaultTableModel.insertRow ++javax.swing.table.DefaultTableModel.getColumnCount ++javax.swing.table.DefaultTableModel.convertToVector ++javax.swing.table.DefaultTableModel.setColumnIdentifiers ++javax.swing.table.DefaultTableModel.isCellEditable ++javax.swing.table.DefaultTableModel.setDataVector ++javax.swing.table.DefaultTableModel.setValueAt ++javax.swing.table.DefaultTableModel.moveRow ++javax.swing.table.DefaultTableModel.newDataAvailable ++javax.swing.table.DefaultTableModel.addRow ++javax.swing.table.DefaultTableModel.constructors ++javax.swing.table.DefaultTableModel.getDataVector ++javax.swing.table.DefaultTableModel.rowsRemoved ++javax.swing.table.DefaultTableModel.addColumn ++javax.swing.table.DefaultTableModel.setRowCount ++javax.swing.table.DefaultTableModel.getValueAt ++javax.swing.table.TableColumn.setCellEditor ++javax.swing.table.TableColumn.getHeaderRenderer ++javax.swing.table.TableColumn.getIdentifier ++javax.swing.table.TableColumn.setPreferredWidth ++javax.swing.table.TableColumn.setHeaderValue ++javax.swing.table.TableColumn.getCellRenderer ++javax.swing.table.TableColumn.sizeWidthToFit ++javax.swing.table.TableColumn.setResizable ++javax.swing.table.TableColumn.properties ++javax.swing.table.TableColumn.removePropertyChangeListener ++javax.swing.table.TableColumn.setIdentifier ++javax.swing.table.TableColumn.addPropertyChangeListener ++javax.swing.table.TableColumn.setMinWidth ++javax.swing.table.TableColumn.setModelIndex ++javax.swing.table.TableColumn.setCellRenderer ++javax.swing.table.TableColumn.getModelIndex ++javax.swing.table.TableColumn.setMaxWidth ++javax.swing.table.TableColumn.setWidth ++javax.swing.table.TableColumn.constants ++javax.swing.table.TableColumn.setHeaderRenderer ++javax.swing.table.TableColumn.getHeaderValue ++javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry.getLocale ++javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry.isFocusTraversable ++javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry.setAccessibleName ++javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry.getAccessibleName ++javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry.getAccessibleDescription ++javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry.getAccessibleIndexInParent ++javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry.getAccessibleContext ++javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry.isVisible ++javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry.getAccessibleChild ++javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry.getAccessibleRole ++javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry.getAccessibleComponent ++javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry.getAccessibleChildrenCount ++javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry.getAccessibleValue ++javax.swing.table.JTableHeader.AccessibleJTableHeader.getAccessibleChild ++javax.swing.table.JTableHeader.AccessibleJTableHeader.getAccessibleRole ++javax.swing.table.JTableHeader.AccessibleJTableHeader.getAccessibleChildrenCount ++javax.swing.table.JTableHeader.getAccessibleContext ++javax.swing.event.InternalFrameEvent.constructor ++javax.swing.event.InternalFrameEvent.getInternalFrame ++javax.swing.event.InternalFrameEvent.paramString ++javax.swing.event.ListDataEvent.getIndex0 ++javax.swing.event.ListDataEvent.constructor ++javax.swing.event.ListDataEvent.getType ++javax.swing.event.ListDataEvent.getSource ++javax.swing.event.ListDataEvent.getIndex1 ++javax.swing.event.ListDataEvent.toString ++javax.swing.event.TableModelEvent.constructors ++javax.swing.event.SwingPropertyChangeSupport.firePropertyChange ++javax.swing.event.SwingPropertyChangeSupport.getPropertyChangeListeners ++javax.swing.event.SwingPropertyChangeSupport.constructor ++javax.swing.event.SwingPropertyChangeSupport.hasListeners ++javax.swing.event.SwingPropertyChangeSupport.removePropertyChangeListener ++javax.swing.event.SwingPropertyChangeSupport.addPropertyChangeListener ++javax.swing.event.EventListenerList.getListeners ++javax.swing.event.EventListenerList.add ++javax.swing.event.EventListenerList.getListenerList ++javax.swing.event.EventListenerList.getListenerCount ++javax.swing.event.EventListenerList.toString ++javax.swing.event.EventListenerList.remove ++javax.swing.event.TreeSelectionEvent.isAddedPath ++javax.swing.event.TreeSelectionEvent.cloneWithSource ++javax.swing.event.TreeSelectionEvent.constructors ++javax.swing.JDesktopPane.constructor ++javax.swing.JRadioButton.isFocusable ++javax.swing.JRadioButton.uidelegate ++javax.swing.JRadioButton.getActionCommand ++javax.swing.JRadioButton.model ++javax.swing.JMenuBar.getComponentIndex ++javax.swing.JMenuBar.getHelpMenu ++javax.swing.JMenuBar.getSubElements ++javax.swing.JMenuBar.setMargin ++javax.swing.JMenuBar.getInputMap ++javax.swing.JMenuBar.setHelpMenu ++javax.swing.JMenuBar.getActionMap ++javax.swing.JMenuBar.getMenu ++javax.swing.JCheckBoxMenuItem.uidelegate ++javax.swing.JCheckBoxMenuItem.getActionCommand ++javax.swing.JCheckBoxMenuItem.model ++javax.swing.JCheckBoxMenuItem.constructors ++javax.swing.JComboBox.getPrototypeDisplayValue ++javax.swing.JComboBox.MutableTest2 ++javax.swing.JComboBox.setEditor ++javax.swing.JComboBox.getEditor ++javax.swing.JComboBox.addItem ++javax.swing.JComboBox.MutableTest1 ++javax.swing.JComboBox.removeItem ++javax.swing.JComboBox.setModel ++javax.swing.JComboBox.setSelectedIndex ++javax.swing.JComboBox.model ++javax.swing.JComboBox.listenerList ++javax.swing.JComboBox.setPrototypeDisplayValue ++javax.swing.JComboBox.setEditable ++javax.swing.JComboBox.SimpleSelectionTest ++javax.swing.OverlayLayout.layoutContainer ++javax.swing.OverlayLayout.getLayoutAlignmentY ++javax.swing.OverlayLayout.getLayoutAlignmentX ++javax.swing.OverlayLayout.preferredLayoutSize ++javax.swing.OverlayLayout.minimumLayoutSize ++javax.swing.OverlayLayout.maximumLayoutSize ++javax.swing.JScrollPane.AccessibleJScrollPane.resetViewport ++javax.swing.JScrollPane.createHorizontalScrollBar ++javax.swing.JScrollPane.getInputMap ++javax.swing.JScrollPane.createVerticalScrollBar ++javax.swing.JScrollPane.getActionMap ++javax.swing.DefaultListCellRenderer.getListCellRendererComponent ++javax.swing.JFileChooser.setFileHidingEnabled ++javax.swing.JFileChooser.getControlButtonsAreShown ++javax.swing.JFileChooser.setApproveButtonMnemonic ++javax.swing.JFileChooser.setFileSystemView ++javax.swing.JFileChooser.getApproveButtonText ++javax.swing.JFileChooser.setDialogTitle ++javax.swing.JFileChooser.setDialogType ++javax.swing.JFileChooser.setSelectedFile ++javax.swing.JFileChooser.getChoosableFileFilters ++javax.swing.JFileChooser.getApproveButtonMnemonic ++javax.swing.JFileChooser.setApproveButtonText ++javax.swing.JFileChooser.getDialogType ++javax.swing.JFileChooser.getFileFilter ++javax.swing.JFileChooser.setAccessory ++javax.swing.JFileChooser.isAcceptAllFileFilterUsed ++javax.swing.JFileChooser.accept ++javax.swing.JFileChooser.setControlButtonsAreShown ++javax.swing.JFileChooser.setFileView ++javax.swing.JFileChooser.setCurrentDirectory ++javax.swing.JFileChooser.isFileHidingEnabled ++javax.swing.JFileChooser.constructors ++javax.swing.JFileChooser.changeToParentDirectory ++javax.swing.JFileChooser.getFileView ++javax.swing.JFileChooser.getFileSystemView ++javax.swing.JFileChooser.setSelectedFiles ++javax.swing.JFileChooser.setFileFilter ++javax.swing.JFileChooser.getFileSelectionMode ++javax.swing.JFileChooser.setFileSelectionMode ++javax.swing.JFileChooser.getSelectedFiles ++javax.swing.JFileChooser.getAccessory ++javax.swing.JFileChooser.setApproveButtonToolTipText ++javax.swing.JFileChooser.getApproveButtonToolTipText ++javax.swing.JFileChooser.getDialogTitle ++javax.swing.SpinnerDateModel.getPreviousValue ++javax.swing.SpinnerDateModel.setStart ++javax.swing.SpinnerDateModel.setEnd ++javax.swing.SpinnerDateModel.setValue ++javax.swing.SpinnerDateModel.getNextValue ++javax.swing.SpinnerDateModel.constructors ++javax.swing.JDialog.isRootPaneCheckingEnabled ++javax.swing.JPopupMenu.getInputMap ++javax.swing.JSlider.getPaintTrack ++javax.swing.JSlider.addChangeListener ++javax.swing.JSlider.setMinimum ++javax.swing.JSlider.setSnapToTicks ++javax.swing.JSlider.setOrientation ++javax.swing.JSlider.getMinorTickSpacing ++javax.swing.JSlider.setValue ++javax.swing.JSlider.setMaximum ++javax.swing.JSlider.setExtent ++javax.swing.JSlider.setPaintLabels ++javax.swing.JSlider.getSnapToTicks ++javax.swing.JSlider.setMinorTickSpacing ++javax.swing.JSlider.getUIClassID ++javax.swing.JSlider.setLabelTable ++javax.swing.JSlider.getPaintTicks ++javax.swing.JSlider.setModel ++javax.swing.JSlider.getMaximum ++javax.swing.JSlider.setPaintTicks ++javax.swing.JSlider.getPaintLabels ++javax.swing.JSlider.getMinimum ++javax.swing.JSlider.getModel ++javax.swing.JSlider.getInverted ++javax.swing.JSlider.setInverted ++javax.swing.JSlider.constructors ++javax.swing.JSlider.getMajorTickSpacing ++javax.swing.JSlider.createStandardLabels ++javax.swing.JSlider.setMajorTickSpacing ++javax.swing.JSlider.getExtent ++javax.swing.JSlider.setPaintTrack ++javax.swing.JSlider.getLabelTable ++javax.swing.DefaultButtonModel.addActionListener ++javax.swing.DefaultButtonModel.setPressed ++javax.swing.DefaultButtonModel.setEnabled ++javax.swing.DefaultButtonModel.constructor ++javax.swing.DefaultButtonModel.setActionCommand ++javax.swing.DefaultButtonModel.getSelectedObjects ++javax.swing.DefaultButtonModel.setArmed ++javax.swing.DefaultButtonModel.setSelected ++javax.swing.DefaultButtonModel.constants ++javax.swing.DefaultButtonModel.setRollover ++javax.swing.DefaultButtonModel.setGroup ++javax.swing.JComponent.getListeners ++javax.swing.JComponent.setVerifyInputWhenFocusTarget ++javax.swing.JComponent.getVetoableChangeListeners ++javax.swing.JComponent.setInheritsPopupMenu ++javax.swing.JComponent.getPreferredSize ++javax.swing.JComponent.setEnabled ++javax.swing.JComponent.constructor ++javax.swing.JComponent.registerKeyboardAction ++javax.swing.JComponent.setUI ++javax.swing.JComponent.getActionForKeyStroke ++javax.swing.JComponent.setMinimumSize ++javax.swing.JComponent.setPreferredSize ++javax.swing.JComponent.setDefaultLocale ++javax.swing.JComponent.setBackground ++javax.swing.JComponent.setBorder ++javax.swing.JComponent.getInputMap ++javax.swing.JComponent.setVisible ++javax.swing.JComponent.setAlignmentX ++javax.swing.JComponent.setComponentPopupMenu ++javax.swing.JComponent.getFont ++javax.swing.JComponent.setAlignmentY ++javax.swing.JComponent.setMaximumSize ++javax.swing.JComponent.setFont ++javax.swing.JComponent.getVerifyInputWhenFocusTarget ++javax.swing.JComponent.putClientProperty ++javax.swing.JComponent.getAlignmentY ++javax.swing.JComponent.getComponentPopupMenu ++javax.swing.JComponent.getAlignmentX ++javax.swing.JComponent.removeVetoableChangeListener ++javax.swing.JComponent.getRegisteredKeyStrokes ++javax.swing.JComponent.setForeground ++javax.swing.JComponent.paint ++javax.swing.JComponent.setOpaque ++javax.swing.JComponent.addVetoableChangeListener ++javax.swing.JProgressBar.isStringPainted ++javax.swing.JProgressBar.setOrientation ++javax.swing.JProgressBar.setValue ++javax.swing.JProgressBar.setBorderPainted ++javax.swing.JProgressBar.setStringPainted ++javax.swing.JProgressBar.getAccessibleContext ++javax.swing.JProgressBar.getPercentComplete ++javax.swing.JProgressBar.paramString ++javax.swing.JMenu.uidelegate ++javax.swing.JMenu.getInputMap ++javax.swing.JMenu.getActionCommand ++javax.swing.JMenu.model ++javax.swing.JMenu.getPopUpMenu ++javax.swing.JMenu.remove ++javax.swing.UIManager.LookAndFeelInfo.constructor ++javax.swing.UIManager.getPropertyChangeListeners ++javax.swing.UIManager.getBoolean ++javax.swing.UIManager.addAuxiliaryLookAndFeel ++javax.swing.UIManager.getString ++javax.swing.UIManager.getBorder ++javax.swing.UIManager.getIcon ++javax.swing.UIManager.getInsets ++javax.swing.UIManager.removeAuxiliaryLookAndFeel ++javax.swing.UIManager.setLookAndFeel ++javax.swing.UIManager.getFont ++javax.swing.UIManager.getDefaults ++javax.swing.UIManager.getInt ++javax.swing.UIManager.addPropertyChangeListener ++javax.swing.UIManager.getUI ++javax.swing.UIManager.getDimension ++javax.swing.UIManager.getLookAndFeelDefaults ++javax.swing.UIManager.getCrossPlatformLookAndFeelClassName ++javax.swing.UIManager.getColor ++javax.swing.UIManager.getAuxiliaryLookAndFeels ++javax.swing.JPanel.setBorder ++javax.swing.JPanel.Layouter ++javax.swing.JTree.getCellRenderer ++javax.swing.JTree.isRowSelected ++javax.swing.JTree.setModel ++javax.swing.TransferHandler.exportToClipboard ++javax.swing.TransferHandler.TransferActionConstructor ++javax.swing.TransferHandler.canImport ++javax.swing.TransferHandler.importData ++javax.swing.TransferHandler.createTransferable ++javax.swing.JToolTip.setComponent ++javax.swing.JToolTip.setTipText ++javax.swing.JToolTip.getAccessibleContext ++javax.swing.JToolTip.getUIClassID ++javax.swing.JToolTip.getTipText ++javax.swing.JToolTip.paramString ++javax.swing.JToolTip.getComponent ++javax.swing.JToolBar.buttonInsets ++javax.swing.JToolBar.getInputMap ++javax.swing.JRootPane.RootLayout.layoutContainer ++javax.swing.JRootPane.RootLayout.getLayoutAlignmentY ++javax.swing.JRootPane.RootLayout.getLayoutAlignmentX ++javax.swing.JRootPane.RootLayout.preferredLayoutSize ++javax.swing.JRootPane.setLayeredPane ++javax.swing.ScrollPaneLayout.minimumLayoutSize ++javax.swing.Timer.preparatory ++javax.swing.Timer.setDelay ++javax.swing.Timer.basic ++javax.swing.Timer.test_23918 ++javax.swing.Timer.setInitialDelay ++javax.swing.ActionMap.newMapKeysNull ++javax.swing.InputMap.put ++javax.swing.InputMap.constructor ++javax.swing.InputMap.keys ++javax.swing.InputMap.setParent ++javax.swing.InputMap.size ++javax.swing.InputMap.newMapKeysNull ++javax.swing.InputMap.get ++javax.swing.InputMap.getParent ++javax.swing.InputMap.remove ++javax.swing.InputMap.clear ++javax.swing.InputMap.allKeys ++javax.swing.filechooser.FileView.getDescription ++javax.swing.filechooser.FileView.getIcon ++javax.swing.filechooser.FileView.getName ++javax.swing.filechooser.FileView.isTraversable ++javax.swing.filechooser.FileView.getTypeDescription ++javax.swing.filechooser.FileSystemView.getFileSystemView ++javax.swing.ViewportLayout.layoutContainer ++javax.swing.ViewportLayout.minimumLayoutSize ++javax.swing.JList.AccessibleJList.AccessibleJListChild.isFocusTraversable ++javax.swing.JList.AccessibleJList.AccessibleJListChild.isEnabled ++javax.swing.JList.AccessibleJList.AccessibleJListChild.setEnabled ++javax.swing.JList.AccessibleJList.AccessibleJListChild.setCursor ++javax.swing.JList.AccessibleJList.AccessibleJListChild.getForeground ++javax.swing.JList.AccessibleJList.AccessibleJListChild.setBackground ++javax.swing.JList.AccessibleJList.AccessibleJListChild.isVisible ++javax.swing.JList.AccessibleJList.AccessibleJListChild.isShowing ++javax.swing.JList.AccessibleJList.AccessibleJListChild.getFont ++javax.swing.JList.AccessibleJList.AccessibleJListChild.getCursor ++javax.swing.JList.AccessibleJList.AccessibleJListChild.getAccessibleRole ++javax.swing.JList.AccessibleJList.AccessibleJListChild.setFont ++javax.swing.JList.AccessibleJList.AccessibleJListChild.getAccessibleStateSet ++javax.swing.JList.AccessibleJList.AccessibleJListChild.setForeground ++javax.swing.JList.AccessibleJList.AccessibleJListChild.getBackground ++javax.swing.JList.AccessibleJList.valueChanged ++javax.swing.JList.AccessibleJList.getAccessibleChild ++javax.swing.JList.AccessibleJList.getAccessibleRole ++javax.swing.JList.AccessibleJList.intervalAdded ++javax.swing.JList.AccessibleJList.intervalRemoved ++javax.swing.JList.AccessibleJList.contentsChanged ++javax.swing.JList.AccessibleJList.getAccessibleStateSet ++javax.swing.JList.setValueIsAdjusting ++javax.swing.JList.setVisibleRowCount ++javax.swing.JList.setSelectionBackground ++javax.swing.JList.setBackground ++javax.swing.JList.getSelectionBackground ++javax.swing.JList.getInputMap ++javax.swing.JList.setModel ++javax.swing.JList.getNextMatch ++javax.swing.JList.setLayoutOrientation ++javax.swing.JList.constructors ++javax.swing.JList.getBackground ++javax.swing.ToolTipManager.setReshowDelay ++javax.swing.ToolTipManager.setInitialDelay ++javax.swing.ToolTipManager.setDismissDelay ++javax.swing.AbstractButton.constructor ++javax.swing.AbstractButton.setRolloverEnabled ++javax.swing.AbstractButton.setRolloverSelectedIcon ++javax.swing.AbstractButton.init ++javax.swing.AbstractButton.setVerticalTextPosition ++javax.swing.AbstractButton.setHorizontalAlignment ++javax.swing.AbstractButton.setHorizontalTextPosition ++javax.swing.AbstractButton.setRolloverIcon ++javax.swing.AbstractButton.setVerticalAlignment ++javax.swing.AbstractButton.createChangeListener ++javax.swing.JLayeredPane.defaultLayoutManager ++javax.swing.JLayeredPane.getComponentsInLayer ++javax.swing.JLayeredPane.setPosition ++javax.swing.JLayeredPane.moveToFront ++javax.swing.JLayeredPane.addImpl ++javax.swing.DefaultListModel.toArray ++javax.swing.DefaultListModel.trimToSize ++javax.swing.DefaultListModel.removeAllElements ++javax.swing.DefaultListModel.constructor ++javax.swing.DefaultListModel.add ++javax.swing.DefaultListModel.lastElement ++javax.swing.DefaultListModel.copyInto ++javax.swing.DefaultListModel.firstElement ++javax.swing.DefaultListModel.setElementAt ++javax.swing.DefaultListModel.set ++javax.swing.DefaultListModel.elementAt ++javax.swing.DefaultListModel.ensureCapacity ++javax.swing.DefaultListModel.indexOf ++javax.swing.DefaultListModel.insertElementAt ++javax.swing.DefaultListModel.setSize ++javax.swing.DefaultListModel.lastIndexOf ++javax.swing.DefaultListModel.elements ++javax.swing.DefaultListModel.size ++javax.swing.DefaultListModel.getSize ++javax.swing.DefaultListModel.capacity ++javax.swing.DefaultListModel.removeElementAt ++javax.swing.DefaultListModel.get ++javax.swing.DefaultListModel.contains ++javax.swing.DefaultListModel.getElementAt ++javax.swing.DefaultListModel.removeRange ++javax.swing.DefaultListModel.addElement ++javax.swing.DefaultListModel.removeElement ++javax.swing.DefaultListModel.isEmpty ++javax.swing.DefaultListModel.remove ++javax.swing.DefaultListModel.clear ++javax.swing.JFormattedTextField.JFormattedTextFieldTests ++javax.swing.AbstractAction.clone ++javax.swing.AbstractAction.setEnabled ++javax.swing.AbstractAction.getValue ++javax.swing.AbstractAction.constructors ++javax.swing.AbstractAction.putValue ++javax.swing.JTextArea.preferredSize ++javax.swing.JTextArea.isValidChecks ++javax.swing.JTextArea.text ++javax.swing.JTextArea.gettingText ++javax.swing.JCheckBox.constructor ++javax.swing.JCheckBox.isFocusable ++javax.swing.JCheckBox.uidelegate ++javax.swing.JCheckBox.getActionCommand ++javax.swing.JCheckBox.model ++javax.swing.JButton.uidelegate ++javax.swing.JButton.getActionCommand ++javax.swing.JButton.model ++javax.swing.SizeRequirements.calculateAlignedPositions ++javax.swing.tree.TreePath.getParentPath ++javax.swing.tree.TreePath.serialization ++javax.swing.tree.TreePath.getPath ++javax.swing.tree.TreePath.getLastPathComponent ++javax.swing.tree.TreePath.PR27651 ++javax.swing.tree.TreePath.isDescendant ++javax.swing.tree.TreePath.equals ++javax.swing.tree.TreePath.getPathCount ++javax.swing.tree.TreePath.constructors ++javax.swing.tree.TreePath.getPathComponent ++javax.swing.tree.TreePath.pathByAddingChild ++javax.swing.tree.DefaultMutableTreeNode.clone ++javax.swing.tree.DefaultMutableTreeNode.getChildAt ++javax.swing.tree.DefaultMutableTreeNode.getChildBefore ++javax.swing.tree.DefaultMutableTreeNode.getSiblingCount ++javax.swing.tree.DefaultMutableTreeNode.isNodeSibling ++javax.swing.tree.DefaultMutableTreeNode.getIndex ++javax.swing.tree.DefaultMutableTreeNode.isNodeChild ++javax.swing.tree.DefaultMutableTreeNode.add ++javax.swing.tree.DefaultMutableTreeNode.getFirstChild ++javax.swing.tree.DefaultMutableTreeNode.getPath ++javax.swing.tree.DefaultMutableTreeNode.removeAllChildren ++javax.swing.tree.DefaultMutableTreeNode.getChildCount ++javax.swing.tree.DefaultMutableTreeNode.isNodeRelated ++javax.swing.tree.DefaultMutableTreeNode.getNextSibling ++javax.swing.tree.DefaultMutableTreeNode.getPreviousSibling ++javax.swing.tree.DefaultMutableTreeNode.setAllowsChildren ++javax.swing.tree.DefaultMutableTreeNode.getPreviousLeaf ++javax.swing.tree.DefaultMutableTreeNode.isNodeAncestor ++javax.swing.tree.DefaultMutableTreeNode.getNextPreviousNode ++javax.swing.tree.DefaultMutableTreeNode.isNodeDescendant ++javax.swing.tree.DefaultMutableTreeNode.breadthFirstEnumeration ++javax.swing.tree.DefaultMutableTreeNode.getLastLeaf ++javax.swing.tree.DefaultMutableTreeNode.children ++javax.swing.tree.DefaultMutableTreeNode.getAllowsChildren ++javax.swing.tree.DefaultMutableTreeNode.getFirstLeaf ++javax.swing.tree.DefaultMutableTreeNode.constructors ++javax.swing.tree.DefaultMutableTreeNode.isLeaf ++javax.swing.tree.DefaultMutableTreeNode.insert ++javax.swing.tree.DefaultMutableTreeNode.DefaultMutableTreeNodeTest ++javax.swing.tree.DefaultMutableTreeNode.getParent ++javax.swing.tree.DefaultMutableTreeNode.getLastChild ++javax.swing.tree.DefaultMutableTreeNode.pathFromAncestorEnumeration ++javax.swing.tree.DefaultMutableTreeNode.remove ++javax.swing.tree.DefaultMutableTreeNode.getNextLeaf ++javax.swing.tree.DefaultMutableTreeNode.getChildAfter ++javax.swing.tree.DefaultTreeCellRenderer.getBackgroundSelectionColor ++javax.swing.tree.DefaultTreeCellRenderer.getOpenIcon ++javax.swing.tree.DefaultTreeCellRenderer.getClosedIcon ++javax.swing.tree.DefaultTreeCellRenderer.setOpenIcon ++javax.swing.tree.DefaultTreeCellRenderer.constructor ++javax.swing.tree.DefaultTreeCellRenderer.getLeafIcon ++javax.swing.tree.DefaultTreeCellRenderer.getBorderSelectionColor ++javax.swing.tree.DefaultTreeCellRenderer.setLeafIcon ++javax.swing.tree.DefaultTreeCellRenderer.getDefaultLeafIcon ++javax.swing.tree.DefaultTreeCellRenderer.setBackgroundSelectionColor ++javax.swing.tree.DefaultTreeCellRenderer.getDefaultOpenIcon ++javax.swing.tree.DefaultTreeCellRenderer.getDefaultClosedIcon ++javax.swing.tree.DefaultTreeCellRenderer.setBackgroundNonSelectionColor ++javax.swing.tree.DefaultTreeCellRenderer.setBorderSelectionColor ++javax.swing.tree.DefaultTreeCellRenderer.getBackgroundNonSelectionColor ++javax.swing.tree.DefaultTreeCellRenderer.setClosedIcon ++javax.swing.tree.VariableHeightLayoutCache.getBounds ++javax.swing.BoxLayout.layoutContainer ++javax.swing.BoxLayout.invalidateLayout ++javax.swing.BoxLayout.constructor ++javax.swing.BoxLayout.simplevertical ++javax.swing.BoxLayout.maximumLayoutSize2 ++javax.swing.BoxLayout.getLayoutAlignmentY ++javax.swing.BoxLayout.horizontal2 ++javax.swing.BoxLayout.getLayoutAlignmentX ++javax.swing.BoxLayout.simplehorizontal ++javax.swing.BoxLayout.constants ++javax.swing.BoxLayout.preferredLayoutSize ++javax.swing.BoxLayout.minimumLayoutSize ++javax.swing.BoxLayout.maximumLayoutSize ++javax.swing.JApplet.isRootPaneCheckingEnabled ++javax.swing.DefaultBoundedRangeModel.setValueIsAdjusting ++javax.swing.DefaultBoundedRangeModel.setMinimum ++javax.swing.DefaultBoundedRangeModel.serialization ++javax.swing.DefaultBoundedRangeModel.setValue ++javax.swing.DefaultBoundedRangeModel.setMaximum ++javax.swing.DefaultBoundedRangeModel.setExtent ++javax.swing.DefaultBoundedRangeModel.getChangeListeners ++javax.swing.DefaultBoundedRangeModel.getValue ++javax.swing.DefaultBoundedRangeModel.setRangeProperties ++javax.swing.DefaultBoundedRangeModel.getMaximum ++javax.swing.DefaultBoundedRangeModel.getValueIsAdjusting ++javax.swing.DefaultBoundedRangeModel.getMinimum ++javax.swing.DefaultBoundedRangeModel.general ++javax.swing.DefaultBoundedRangeModel.toString ++javax.swing.DefaultBoundedRangeModel.getExtent ++javax.swing.undo.UndoableEditSupport.getUndoableEditListeners ++javax.swing.undo.UndoableEditSupport.createCompoundEdit ++javax.swing.undo.UndoableEditSupport.toString ++javax.swing.undo.UndoableEditSupport.beginUpdate ++javax.swing.undo.UndoableEditSupport.UndoableEditSupport ++javax.swing.undo.UndoableEditSupport.getUpdateLevel ++javax.swing.undo.CompoundEdit.lastEdit ++javax.swing.undo.CompoundEdit.addEdit ++javax.swing.undo.CompoundEdit.canRedo ++javax.swing.undo.CompoundEdit.canUndo ++javax.swing.undo.CompoundEdit.isInProgress ++javax.swing.undo.AbstractUndoableEdit.getRedoPresentationName ++javax.swing.undo.AbstractUndoableEdit.addEdit ++javax.swing.undo.AbstractUndoableEdit.canRedo ++javax.swing.undo.AbstractUndoableEdit.redo ++javax.swing.undo.AbstractUndoableEdit.undo ++javax.swing.undo.AbstractUndoableEdit.canUndo ++javax.swing.undo.AbstractUndoableEdit.getPresentationName ++javax.swing.undo.AbstractUndoableEdit.replaceEdit ++javax.swing.undo.AbstractUndoableEdit.isSignificant ++javax.swing.undo.AbstractUndoableEdit.getUndoPresentationName ++javax.swing.undo.StateEdit.undo ++javax.swing.undo.StateEdit.getPresentationName ++javax.swing.undo.UndoManager.getRedoPresentationName ++javax.swing.undo.UndoManager.getUndoOrRedoPresentationName ++javax.swing.undo.UndoManager.addEdit ++javax.swing.undo.UndoManager.canRedo ++javax.swing.undo.UndoManager.trimEdits ++javax.swing.undo.UndoManager.undoTo ++javax.swing.undo.UndoManager.editToBeUndone ++javax.swing.undo.UndoManager.canUndo ++javax.swing.undo.UndoManager.undoableEditHappened ++javax.swing.undo.UndoManager.setLimit ++javax.swing.undo.UndoManager.discardAllEdits ++javax.swing.undo.UndoManager.redoTo ++javax.swing.undo.UndoManager.end ++javax.swing.undo.UndoManager.toString ++javax.swing.undo.UndoManager.getUndoPresentationName ++javax.swing.undo.UndoManager.getLimit ++javax.swing.undo.UndoManager.editToBeRedone ++javax.swing.undo.UndoManager.canUndoOrRedo ++javax.swing.JMenuItem.getActionCommand ++javax.swing.JMenuItem.constructors ++javax.swing.DefaultComboBoxModel.removeAllElements ++javax.swing.DefaultComboBoxModel.insertElementAt ++javax.swing.DefaultComboBoxModel.getIndexOf ++javax.swing.DefaultComboBoxModel.getSize ++javax.swing.DefaultComboBoxModel.constructors ++javax.swing.DefaultComboBoxModel.removeElementAt ++javax.swing.DefaultComboBoxModel.getSelectedItem ++javax.swing.DefaultComboBoxModel.getElementAt ++javax.swing.DefaultComboBoxModel.addElement ++javax.swing.DefaultComboBoxModel.removeElement ++javax.swing.SizeSequence.getIndex ++javax.swing.SizeSequence.getSizes ++javax.swing.SizeSequence.removeEntries ++javax.swing.SizeSequence.setSizes ++javax.swing.SizeSequence.setSize ++javax.swing.SizeSequence.getSize ++javax.swing.SizeSequence.constructors ++javax.swing.SizeSequence.insertEntries ++javax.swing.JTextField.CopyPaste ++javax.swing.JTextField.createDefaultModel ++javax.swing.JTextField.setDocument ++javax.swing.JTextField.fireActionPerformed ++javax.swing.UIDefaults.putDefaults ++javax.swing.UIDefaults.getBoolean ++javax.swing.UIDefaults.remove ++javax.swing.RepaintManager.addDirtyRegion ++javax.swing.JInternalFrame.AccessibleJInternalFrame.getAccessibleName ++javax.swing.JInternalFrame.AccessibleJInternalFrame.getCurrentAccessibleValue ++javax.swing.JInternalFrame.AccessibleJInternalFrame.getMaximumAccessibleValue ++javax.swing.JInternalFrame.AccessibleJInternalFrame.setCurrentAccessibleValue ++javax.swing.JInternalFrame.AccessibleJInternalFrame.getAccessibleRole ++javax.swing.JInternalFrame.AccessibleJInternalFrame.getAccessibleValue ++javax.swing.JInternalFrame.AccessibleJInternalFrame.getMinimumAccessibleValue ++javax.swing.JInternalFrame.getDesktopIcon ++javax.swing.JInternalFrame.isRootPaneCheckingEnabled ++javax.swing.JInternalFrame.setDefaultCloseOperation ++javax.swing.JInternalFrame.isIconifiable ++javax.swing.JInternalFrame.setTitle ++javax.swing.JInternalFrame.setClosable ++javax.swing.JInternalFrame.setResizable ++javax.swing.JInternalFrame.setIconifiable ++javax.swing.JInternalFrame.setFrameIcon ++javax.swing.JInternalFrame.setMaximizable ++javax.swing.JInternalFrame.getInputMap ++javax.swing.JInternalFrame.setClosed ++javax.swing.JInternalFrame.setNormalBounds ++javax.swing.JInternalFrame.setSelected2 ++javax.swing.JInternalFrame.dispose ++javax.swing.JInternalFrame.isResizable ++javax.swing.JInternalFrame.constructors ++javax.swing.JInternalFrame.paramString ++javax.swing.JInternalFrame.setDesktopIcon ++javax.swing.JInternalFrame.getNormalBounds ++javax.swing.SpinnerListModel.Constructors ++javax.swing.SpinnerListModel.Ordering ++javax.swing.SpinnerListModel.SetList ++javax.swing.SpinnerListModel.ArrayModel ++javax.swing.SpinnerListModel.ListModel ++javax.swing.JRadioButtonMenuItem.isFocusable ++javax.swing.JRadioButtonMenuItem.uidelegate ++javax.swing.JRadioButtonMenuItem.getActionCommand ++javax.swing.JRadioButtonMenuItem.model ++javax.swing.KeyStroke.getKeyStroke ++javax.swing.SpinnerNumberModel.getPreviousValue ++javax.swing.SpinnerNumberModel.setMinimum ++javax.swing.SpinnerNumberModel.setValue ++javax.swing.SpinnerNumberModel.setMaximum ++javax.swing.SpinnerNumberModel.getNextValue ++javax.swing.SpinnerNumberModel.setStepSize ++javax.swing.SpinnerNumberModel.constructors ++javax.swing.JLabel.AccessibleJLabel.getAccessibleName ++javax.swing.JLabel.setDisplayedMnemonicIndex ++javax.swing.JLabel.constructor ++javax.swing.JLabel.getAccessibleContext ++javax.swing.JLabel.Icon ++javax.swing.JLabel.getInputMap ++javax.swing.JLabel.setHorizontalAlignment ++javax.swing.JLabel.setFont ++javax.swing.JLabel.setDisplayedMnemonic ++javax.swing.JLabel.getActionMap ++javax.swing.JLabel.Mnemonic ++javax.swing.JLabel.paramString ++javax.swing.JLabel.setVerticalAlignment ++javax.swing.JEditorPane.ContentType ++javax.swing.JEditorPane.ViewType ++javax.swing.JEditorPane.setText ++javax.swing.JEditorPane.getScrollableTracks ++javax.swing.DefaultListSelectionModel.clone ++javax.swing.DefaultListSelectionModel.getListeners ++javax.swing.DefaultListSelectionModel.setValueIsAdjusting ++javax.swing.DefaultListSelectionModel.setAnchorSelectionIndex ++javax.swing.DefaultListSelectionModel.removeListSelectionListener ++javax.swing.DefaultListSelectionModel.constructor ++javax.swing.DefaultListSelectionModel.removeIndexInterval ++javax.swing.DefaultListSelectionModel.removeSelectionInterval ++javax.swing.DefaultListSelectionModel.getAnchorSelectionIndex ++javax.swing.DefaultListSelectionModel.getLeadSelectionIndex ++javax.swing.DefaultListSelectionModel.isLeadAnchorNotificationEnabled ++javax.swing.DefaultListSelectionModel.setSelectionInterval ++javax.swing.DefaultListSelectionModel.getSelectionMode ++javax.swing.DefaultListSelectionModel.isSelectedIndex ++javax.swing.DefaultListSelectionModel.moveLeadSelectionIndex ++javax.swing.DefaultListSelectionModel.leadSelectionIndex ++javax.swing.DefaultListSelectionModel.getMaxSelectionIndex ++javax.swing.DefaultListSelectionModel.getMinSelectionIndex ++javax.swing.DefaultListSelectionModel.getListSelectionListeners ++javax.swing.DefaultListSelectionModel.getValueIsAdjusting ++javax.swing.DefaultListSelectionModel.isSelectionEmpty ++javax.swing.DefaultListSelectionModel.addSelectionInterval ++javax.swing.DefaultListSelectionModel.setLeadSelectionIndex ++javax.swing.DefaultListSelectionModel.toString ++javax.swing.DefaultListSelectionModel.setSelectionMode ++javax.swing.DefaultListSelectionModel.clearSelection ++javax.swing.DefaultListSelectionModel.insertIndexInterval ++javax.swing.DefaultListSelectionModel.addListSelectionListener ++javax.swing.SwingUtilities.calculateInnerArea ++javax.swing.SwingUtilities.isRectangleContainingRectangle ++javax.swing.SwingUtilities.computeIntersection ++javax.swing.SwingUtilities.replaceUIActionMap ++javax.swing.SwingUtilities.computeUnion ++javax.swing.JSpinner.ListEditor.constructor ++javax.swing.JSpinner.ListEditor.getModel ++javax.swing.JSpinner.NumberEditor.getModel ++javax.swing.JSpinner.NumberEditor.constructors ++javax.swing.JSpinner.NumberEditor.getFormat ++javax.swing.JSpinner.DefaultEditor.constructor ++javax.swing.JSpinner.DefaultEditor.stateChanged ++javax.swing.JSpinner.DefaultEditor.propertyChange ++javax.swing.JSpinner.DefaultEditor.preferredLayoutSize ++javax.swing.JSpinner.DefaultEditor.minimumLayoutSize ++javax.swing.JSpinner.DateEditor.getModel ++javax.swing.JSpinner.getPreviousValue ++javax.swing.JSpinner.addChangeListener ++javax.swing.JSpinner.createEditor ++javax.swing.JSpinner.getChangeListeners ++javax.swing.JSpinner.setEditor ++javax.swing.JSpinner.getUIClassID ++javax.swing.JSpinner.getEditor ++javax.swing.JSpinner.setModel ++javax.swing.JSpinner.getNextValue ++javax.swing.JSpinner.getModel ++javax.swing.JSpinner.constructors ++javax.swing.JSpinner.removeChangeListener ++javax.swing.ButtonGroup.constructor ++javax.swing.ButtonGroup.add ++javax.swing.ButtonGroup.isSelected ++javax.swing.ButtonGroup.getSelection ++javax.swing.ButtonGroup.getElements ++javax.swing.ButtonGroup.getButtonCount ++javax.swing.ButtonGroup.setSelected ++javax.swing.ButtonGroup.remove ++javax.swing.JViewport.setView ++gnu.javax.crypto.jce.TestOfDHKeyAgreement2 ++gnu.javax.crypto.jce.TestOfPR27849 ++gnu.javax.crypto.jce.TestOfPR27228 ++java.rmi.server.Uniqueness ++java.lang.Integer.compareTo ++java.lang.Integer.decode ++java.lang.Integer.new_Integer ++java.lang.Integer.IntegerTest ++java.lang.Integer.getInteger ++java.lang.Integer.parseInt ++java.lang.ClassLoader.redefine ++java.lang.ClassLoader.security ++java.lang.ClassLoader.loadClass ++java.lang.ClassLoader.initialize ++java.lang.ClassLoader.Resources ++java.lang.ClassLoader.BootDefinedPackages ++java.lang.Number.NumberTest ++java.lang.ProcessBuilder.simple ++java.lang.System.getProperty ++java.lang.System.arraycopy ++java.lang.System.identityHashCode ++java.lang.ThreadGroup.enumerate ++java.lang.ThreadGroup.insecurity ++java.lang.ThreadGroup.security ++java.lang.String.substring ++java.lang.String.compareTo ++java.lang.String.getBytes13 ++java.lang.String.hash ++java.lang.String.split ++java.lang.String.getBytes14 ++java.lang.String.startsWith ++java.lang.String.equals ++java.lang.String.indexOf ++java.lang.String.to ++java.lang.String.StringTest ++java.lang.String.surrogate ++java.lang.String.charAt ++java.lang.String.new_String ++java.lang.String.getBytes ++java.lang.String.CASE_INSENSITIVE_ORDER ++java.lang.Class.ClassTest ++java.lang.Class.serialization ++java.lang.Class.reflect ++java.lang.Class.security ++java.lang.Class.init ++java.lang.Class.newInstance ++java.lang.Class.reflect2 ++java.lang.Cloneable.CloneableTest ++java.lang.ref.WeakReference.weakref ++java.lang.ref.PhantomReference.phantom ++java.lang.Double.compareTo ++java.lang.Double.DoubleSetterTest ++java.lang.Double.DoubleTest ++java.lang.Double.toHexString ++java.lang.Double.parseDouble ++java.lang.Double.compare ++java.lang.Double.valueOf ++java.lang.StrictMath.cbrt ++java.lang.StrictMath.expm1 ++java.lang.StrictMath.cosh ++java.lang.StrictMath.sinh ++java.lang.StrictMath.tanh ++java.lang.Short.hash ++java.lang.Short.ShortTest ++java.lang.InheritableThreadLocal.simple ++java.lang.Math.max ++java.lang.Math.ulp ++java.lang.Math.sin ++java.lang.Math.min ++java.lang.Math.cos ++java.lang.Math.MathTest ++java.lang.Math.rint ++java.lang.Boolean.BooleanTest ++java.lang.Boolean.equals_Boolean ++java.lang.Boolean.new_Boolean ++java.lang.Boolean.hashcode_Boolean ++java.lang.Boolean.get ++java.lang.Boolean.value ++java.lang.Float.compareTo ++java.lang.Float.toHexString ++java.lang.Float.compare ++java.lang.Float.parseFloat ++java.lang.Float.valueOf ++java.lang.Float.FloatTest ++java.lang.Float.new_Float ++java.lang.reflect.Array.set ++java.lang.reflect.Array.newInstance ++java.lang.reflect.AccessibleObject.accessible ++java.lang.reflect.Field.promotion ++java.lang.reflect.Field.access ++java.lang.reflect.Field.toString ++java.lang.reflect.Modifier.toString12 ++java.lang.reflect.Modifier.toString ++java.lang.reflect.Constructor.newInstance ++java.lang.reflect.Constructor.toString ++java.lang.reflect.Proxy.DeclaringClass ++java.lang.reflect.Proxy.check13 ++java.lang.reflect.Proxy.ExceptionRaising ++java.lang.reflect.Proxy.ToString ++java.lang.reflect.InvocationTargetException.Chain ++java.lang.reflect.Method.equals ++java.lang.reflect.Method.toString ++java.lang.reflect.Method.invoke ++java.lang.reflect.ReflectAccess ++java.lang.ThreadLocal.simple ++java.lang.Object.clone ++java.lang.Object.wait ++java.lang.Object.ObjectTest ++java.lang.Object.oom ++java.lang.Byte.ByteTest ++java.lang.Byte.new_Byte ++java.lang.StringBuffer.StringBufferTest ++java.lang.StringBuffer.plus ++java.lang.Long.Tests15 ++java.lang.Long.getLong ++java.lang.Long.LongTest ++java.lang.Long.new_Long ++java.lang.Thread.join ++java.lang.Thread.isAlive ++java.lang.Thread.name ++java.lang.Thread.interrupt ++java.lang.Thread.contextClassLoader ++java.lang.Thread.getThreadGroup ++java.lang.Thread.priority ++java.lang.Thread.stop ++java.lang.Thread.daemon ++java.lang.Package.getPackage ++java.lang.Character.digit ++java.lang.Character.Blocks ++java.lang.Character.unicode ++java.lang.Character.getNumericValue ++java.lang.Character.getType ++java.lang.Character.hash ++java.lang.Character.classify ++java.lang.Character.classify12 ++java.lang.Character.to ++java.lang.Character.consts ++java.lang.Character.forDigit ++java.lang.Character.getType12 ++java.lang.Character.equals_Character ++java.lang.Character.CharacterTest ++java.lang.Character.Blocks15 ++java.lang.SecurityManager.thread ++java.text.StringCharacterIterator.constructor ++java.text.StringCharacterIterator.iter ++java.text.CollationElementIterator.offset ++java.text.CollationElementIterator.jdk11 ++java.text.AttributedString.constructors ++java.text.AttributedString.addAttribute ++java.text.AttributedString.getIterator ++java.text.AttributedString.addAttributes ++java.text.AttributedString.Test ++java.text.DecimalFormat.setCurrency ++java.text.DecimalFormat.clone ++java.text.DecimalFormat.setDecimalFormatSymbols ++java.text.DecimalFormat.getNegativePrefix ++java.text.DecimalFormat.applyPattern ++java.text.DecimalFormat.formatToCharacterIterator ++java.text.DecimalFormat.getNegativeSuffix ++java.text.DecimalFormat.setNegativePrefix ++java.text.DecimalFormat.applyLocalizedPattern ++java.text.DecimalFormat.getDecimalFormatSymbols ++java.text.DecimalFormat.toLocalizedPattern ++java.text.DecimalFormat.isDecimalSeparatorAlwaysShown ++java.text.DecimalFormat.setNegativeSuffix ++java.text.DecimalFormat.PR27311 ++java.text.DecimalFormat.getPositivePrefix ++java.text.DecimalFormat.getCurrency ++java.text.DecimalFormat.equals ++java.text.DecimalFormat.digits ++java.text.DecimalFormat.setDecimalSeparatorAlwaysShown ++java.text.DecimalFormat.setPositiveSuffix ++java.text.DecimalFormat.parse ++java.text.DecimalFormat.setPositivePrefix ++java.text.DecimalFormat.toPattern14 ++java.text.DecimalFormat.setMultiplier ++java.text.DecimalFormat.format ++java.text.DecimalFormat.getPositiveSuffix ++java.text.DecimalFormat.setGroupingSize ++java.text.DecimalFormat.PR23996 ++java.text.DecimalFormat.toPattern ++java.text.DecimalFormat.constructors ++java.text.DecimalFormat.MaximumAndMinimumDigits ++java.text.DecimalFormat.formatExp ++java.text.DecimalFormat.getGroupingSize ++java.text.DecimalFormat.hashCode ++java.text.DecimalFormat.position ++java.text.DecimalFormat.getMultiplier ++java.text.NumberFormat.UK ++java.text.CharacterIterator.implement ++java.text.ParsePosition.Test ++java.text.BreakIterator.chariter ++java.text.BreakIterator.patho ++java.text.BreakIterator.lineiter ++java.text.BreakIterator.sentiter ++java.text.BreakIterator.worditer ++java.text.Collator.Constants ++java.text.Collator.GetSet ++java.text.ParseException.Test ++java.text.Annotation.Test ++java.text.RuleBasedCollator.CollatorTests ++java.text.RuleBasedCollator.VeryBasic ++java.text.MessageFormat.format14 ++java.text.MessageFormat.attribute ++java.text.MessageFormat.parse ++java.text.MessageFormat.format ++java.text.ChoiceFormat.next ++java.text.ChoiceFormat.parse ++java.text.ChoiceFormat.format ++java.text.DateFormatSymbols.setMonths ++java.text.DateFormatSymbols.setShortMonths ++java.text.DateFormatSymbols.setEras ++java.text.DateFormatSymbols.setAmPmStrings ++java.text.DateFormatSymbols.setWeekdays ++java.text.DateFormatSymbols.setZoneStrings ++java.text.DateFormatSymbols.setShortWeekdays ++java.text.DateFormatSymbols.Test ++java.text.AttributedCharacterIterator.Attribute.toString ++java.text.AttributedCharacterIterator.getRunLimit ++java.text.AttributedCharacterIterator.implement ++java.text.AttributedCharacterIterator.getRunStart ++java.text.AttributedCharacterIterator.getAttribute ++java.text.DateFormat.equals ++java.text.DateFormat.hashCode ++java.text.DateFormat.Test ++java.text.ACIAttribute.Test ++java.text.DecimalFormatSymbols.serial ++java.text.DecimalFormatSymbols.GetSet12 ++java.text.DecimalFormatSymbols.getCurrency ++java.text.DecimalFormatSymbols.DumpDefault11 ++java.text.DecimalFormatSymbols.GetSet11 ++java.text.DecimalFormatSymbols.DumpDefault12 ++java.text.FieldPosition.Test ++java.text.SimpleDateFormat.applyPattern ++java.text.SimpleDateFormat.Localization ++java.text.SimpleDateFormat.applyLocalizedPattern ++java.text.SimpleDateFormat.toLocalizedPattern ++java.text.SimpleDateFormat.attribute ++java.text.SimpleDateFormat.Cloning ++java.text.SimpleDateFormat.getDateFormatSymbols ++java.text.SimpleDateFormat.parse ++java.text.SimpleDateFormat.toPattern ++java.text.SimpleDateFormat.constructors ++java.text.SimpleDateFormat.setDateFormatSymbols ++java.text.SimpleDateFormat.getAndSet2DigitYearStart ++java.text.SimpleDateFormat.Test ++java.text.Bidi.Basic ++java.text.Bidi.reorderVisually ++java.math.BigInteger.compareTo ++java.math.BigInteger.modInverse ++java.math.BigInteger.shift ++java.math.BigInteger.serialization ++java.math.BigInteger.add ++java.math.BigInteger.TestOfPR27372 ++java.math.BigInteger.signum ++java.math.BigInteger.modPow ++java.math.BigInteger.equals ++java.math.BigInteger.divide ++java.math.BigInteger.setBit ++java.math.BigInteger.multiply ++java.math.BigInteger.TestOfToByteArray ++java.math.BigInteger.toString ++java.math.BigInteger.ctor ++java.math.BigInteger.abs ++java.math.BigInteger.valueOf ++java.math.BigDecimal.compareTo ++java.math.BigDecimal.divide ++java.math.BigDecimal.DiagBigDecimal ++java.math.BigDecimal.construct ++java.math.BigDecimal.setScale ++java.security.MessageDigest.Instance ++java.security.AccessController.doPrivileged ++java.security.AccessController.contexts ++java.security.Security.getAlgorithms ++java.security.Security.provider ++java.security.Provider.NameVersionInfo ++java.security.SecureRandom.SHA1PRNG ++java.security.SecureRandom.TestOfPR23899 ++java.security.SecureRandom.Instance ++java.security.KeyPairGenerator.getInstance14 ++java.security.AlgorithmParameters.getInstance14 ++java.security.AlgorithmParameterGenerator.getInstance14 ++java.security.DigestInputStream.readMD5 ++java.security.KeyFactory.getInstance14 ++java.security.Signature.getInstance14 ++java.security.Signature.Instance ++java.security.BasicPermission.newPermission ++java.sql.Clob.ClobTest ++java.sql.Types.TestJdbc10 ++java.sql.Types.TestJdbc20 ++java.sql.Array.ArrayTest ++java.sql.Blob.BlobTest ++java.sql.Connection.TestJdbc ++java.sql.Time.TimeTest ++java.sql.DriverManager.DriverManagerTest ++java.sql.Date.DateTest ++java.sql.DatabaseMetaData.TestJdbc ++java.sql.Timestamp.TimestampTest ++java.io.RandomAccessFile.setLength ++java.io.RandomAccessFile.security ++java.io.RandomAccessFile.jdk11 ++java.io.RandomAccessFile.randomaccessfile ++java.io.BufferedWriter.Test ++java.io.PipedReaderWriter.Test ++java.io.PushbackInputStream.ProtectedVars ++java.io.PushbackInputStream.BufferOverflow ++java.io.PushbackInputStream.Unread ++java.io.FileOutputStream.append ++java.io.FileOutputStream.fileoutputstream ++java.io.FileOutputStream.security ++java.io.FileOutputStream.write ++java.io.FileOutputStream.jdk12 ++java.io.StringWriter.Test ++java.io.FilterOutputStream.write ++java.io.ObjectInputStream.security ++java.io.ObjectInputStream.readResolve ++java.io.ObjectInputStream.ClassLoaderTest ++java.io.ObjectOutputStream.security ++java.io.ObjectOutputStream.StreamDataTest ++java.io.ObjectOutputStream.useProtocolVersion ++java.io.InputStream.Test ++java.io.Utf8Encoding.ReadReference ++java.io.Utf8Encoding.WriteRead ++java.io.FilePermission.traversal2 ++java.io.FilePermission.simple ++java.io.FilePermission.traversal ++java.io.FileWriter.jdk11 ++java.io.OutputStreamWriter.jdk11 ++java.io.Serializable.BreakMe ++java.io.Serializable.BreakMeTestSer ++java.io.Serializable.ParentReadResolve ++java.io.Serializable.readResolve ++java.io.Serializable.ParentWriteReplace ++java.io.ObjectInputOutput.LoopSerializationTest ++java.io.ObjectInputOutput.ExtTest ++java.io.ObjectInputOutput.Deserializable ++java.io.ObjectInputOutput.ProxySerializationTest ++java.io.ObjectInputOutput.Compat1 ++java.io.ObjectInputOutput.SerTest ++java.io.ObjectInputOutput.HierarchyTest ++java.io.ObjectInputOutput.OutputTest ++java.io.ObjectInputOutput.InputTest ++java.io.PrintWriter.jdk11 ++java.io.PrintWriter.checkError ++java.io.SequenceInputStream.Test ++java.io.StringBufferInputStream.ProtectedVars ++java.io.StringBufferInputStream.SimpleRead ++java.io.StringBufferInputStream.MarkReset ++java.io.LineNumberReader.Test2 ++java.io.LineNumberReader.mark ++java.io.LineNumberReader.Test ++java.io.InputStreamReader.hang ++java.io.InputStreamReader.utf8 ++java.io.InputStreamReader.jdk11 ++java.io.InputStreamReader.except ++java.io.InputStreamReader.getEncoding ++java.io.DataInputStream.readLine ++java.io.DataInputStream.ReadReference ++java.io.DataInputStream.ReadReference2 ++java.io.FilterWriter.write ++java.io.CharArrayWriter.ProtectedVars ++java.io.CharArrayWriter.BasicTests ++java.io.FileDescriptor.jdk11 ++java.io.Reader.Test ++java.io.PushbackReader.BufferOverflow ++java.io.PushbackReader.Unread ++java.io.ByteArrayOutputStream.subclass ++java.io.ByteArrayOutputStream.write ++java.io.PrintStream.subclass ++java.io.PrintStream.encodings ++java.io.ObjectStreamClass.ProxyTest ++java.io.ObjectStreamClass.Test ++java.io.FilterReader.SimpleRead ++java.io.FilterReader.MarkReset ++java.io.BufferedOutputStream.interrupt ++java.io.BufferedOutputStream.Test ++java.io.BufferedInputStream.Skip ++java.io.BufferedInputStream.BigMark ++java.io.BufferedInputStream.ProtectedVars ++java.io.BufferedInputStream.ZeroRead ++java.io.BufferedInputStream.SimpleRead ++java.io.BufferedInputStream.MarkReset ++java.io.BufferedReader.mark ++java.io.BufferedReader.SimpleRead ++java.io.BufferedReader.MarkReset ++java.io.BufferedReader.boundary ++java.io.DataOutputStream.WriteRead2 ++java.io.DataOutputStream.writeUTF ++java.io.DataOutputStream.WriteRead ++java.io.PipedStream.close ++java.io.PipedStream.receive ++java.io.PipedStream.Test ++java.io.FileInputStream.fileinputstream ++java.io.FileInputStream.read ++java.io.FileInputStream.security ++java.io.Writer.Test ++java.io.FilterInputStream.SimpleRead ++java.io.FilterInputStream.MarkReset ++java.io.FileReader.jdk11 ++java.io.StringReader.Test ++java.io.ByteArrayInputStream.ProtectedVars ++java.io.ByteArrayInputStream.SimpleRead ++java.io.ByteArrayInputStream.MarkReset ++java.io.File.newFileURI ++java.io.File.URI ++java.io.File.createFile ++java.io.File.security ++java.io.File.ReadMethods ++java.io.File.ExecuteMethods ++java.io.File.list ++java.io.File.jdk11 ++java.io.File.newFile ++java.io.File.WriteMethods ++java.io.File.canWrite ++java.io.File.listFiles ++java.io.File.emptyFile ++java.io.File.UnicodeURI ++java.io.OutputStream.Test ++java.io.StreamTokenizer.WordWhiteChars ++java.io.StreamTokenizer.slashstar ++java.io.StreamTokenizer.commentchar ++java.io.StreamTokenizer.slashslash ++java.io.StreamTokenizer.newline ++java.io.StreamTokenizer.misc ++java.io.StreamTokenizer.Test ++java.io.LineNumberInputStream.Test ++java.io.CharArrayReader.ProtectedVars ++java.io.CharArrayReader.OutOfBounds ++java.io.CharArrayReader.SimpleRead ++java.io.CharArrayReader.MarkReset ++java.util.Stack.AcuniaStackTest ++java.util.Arrays.asList ++java.util.Arrays.fill ++java.util.Arrays.equals ++java.util.Arrays.sort ++java.util.Arrays.binarySearch ++java.util.Properties.getProperty ++java.util.Properties.AcuniaPropertiesTest ++java.util.Properties.load ++java.util.TreeSet.basic ++java.util.Observable.observable ++java.util.StringTokenizer.hasMoreElements ++java.util.StringTokenizer.hasMoreTokens ++java.util.StringTokenizer.countTokens ++java.util.StringTokenizer.nextToken ++java.util.StringTokenizer.constructors ++java.util.StringTokenizer.nextElement ++java.util.IdentityHashMap.simple ++java.util.prefs.PreferenceTest ++java.util.Hashtable.HashContains ++java.util.Hashtable.AcuniaHashtableTest ++java.util.Hashtable.EnumerateAndModify ++java.util.Hashtable.basic ++java.util.Hashtable.ContainsHash ++java.util.Hashtable.NullValue ++java.util.TreeMap.serialization ++java.util.TimeZone.setDefault ++java.util.TimeZone.zdump ++java.util.TimeZone.setID ++java.util.UUID.TestAll ++java.util.Currency.Constructors ++java.util.Currency.Germany ++java.util.Currency.ReferenceEquality ++java.util.Currency.France ++java.util.Currency.getInstance ++java.util.Currency.Japan ++java.util.Currency.UK ++java.util.Currency.Korea ++java.util.Currency.PRC ++java.util.Currency.Canada ++java.util.Currency.CanadaFrench ++java.util.Currency.China ++java.util.Currency.Taiwan ++java.util.Currency.Italy ++java.util.AbstractCollection.AcuniaAbstractCollectionTest ++java.util.AbstractCollection.AcuniaAddCollectionTest ++java.util.AbstractCollection.toString ++java.util.SimpleTimeZone.clone ++java.util.SimpleTimeZone.hasSameRules ++java.util.SimpleTimeZone.getRawOffset ++java.util.SimpleTimeZone.setRawOffset ++java.util.SimpleTimeZone.check14 ++java.util.SimpleTimeZone.equals ++java.util.SimpleTimeZone.inDaylightTime ++java.util.SimpleTimeZone.setStartYear ++java.util.SimpleTimeZone.constructors ++java.util.SimpleTimeZone.getOffset ++java.util.SimpleTimeZone.setDSTSavings ++java.util.SimpleTimeZone.hashCode ++java.util.SimpleTimeZone.constants ++java.util.SimpleTimeZone.getDSTSavings ++java.util.AbstractList.AcuniaAbstractListTest ++java.util.Collections.nCopies ++java.util.Collections.fill ++java.util.Collections.max ++java.util.Collections.copy ++java.util.Collections.rotate ++java.util.Collections.unmodifiableList ++java.util.Collections.min ++java.util.Collections.unmodifiableMap ++java.util.Collections.reverse ++java.util.Collections.reverseOrder ++java.util.Collections.sort ++java.util.Collections.binarySearch ++java.util.logging.SocketHandler.SocketHandler ++java.util.logging.XMLFormatter.getTail ++java.util.logging.Handler.isLoggable ++java.util.logging.Handler.setEncoding ++java.util.logging.Handler.setFilter ++java.util.logging.Handler.getErrorManager ++java.util.logging.Handler.reportError ++java.util.logging.Handler.setLevel ++java.util.logging.Handler.setErrorManager ++java.util.logging.LogRecord.getThreadID ++java.util.logging.LogRecord.setLoggerName ++java.util.logging.LogRecord.getMillis ++java.util.logging.LogRecord.setThrown ++java.util.logging.LogRecord.setThreadID ++java.util.logging.LogRecord.setSequenceNumber ++java.util.logging.LogRecord.setSourceMethodName ++java.util.logging.LogRecord.setResourceBundle ++java.util.logging.LogRecord.setMillis ++java.util.logging.LogRecord.setMessage ++java.util.logging.LogRecord.setParameters ++java.util.logging.LogRecord.setSourceClassName ++java.util.logging.LogRecord.setLevel ++java.util.logging.Level.intValue ++java.util.logging.Level.equals ++java.util.logging.Level.getName ++java.util.logging.Level.parse ++java.util.logging.Level.toString ++java.util.logging.Level.hashCode ++java.util.logging.LogManager.readConfiguration ++java.util.logging.LoggingMXBean.Test ++java.util.logging.Logger.hierarchyChecks ++java.util.logging.Logger.getName ++java.util.logging.Logger.getAnonymousLogger ++java.util.logging.Logger.securityChecks ++java.util.logging.Logger.getParent ++java.util.logging.Logger.global ++java.util.Iterator.ConcurrentModification ++java.util.BitSet.AcuniaBitSetTest ++java.util.BitSet.flip ++java.util.BitSet.jdk10 ++java.util.BitSet.get ++java.util.BitSet.clear ++java.util.Timer.taskException ++java.util.GregorianCalendar.first ++java.util.GregorianCalendar.setFirstDayOfWeek ++java.util.GregorianCalendar.dayOfWeekInMonth ++java.util.GregorianCalendar.setWeekOfMonth ++java.util.GregorianCalendar.internal ++java.util.GregorianCalendar.equals ++java.util.GregorianCalendar.getMinimum ++java.util.GregorianCalendar.getMinimalDaysInFirstWeek ++java.util.GregorianCalendar.conversion ++java.util.GregorianCalendar.weekOfYear ++java.util.Random.basic ++java.util.AbstractSet.AcuniaAbstractSetTest ++java.util.Calendar.TimeZone ++java.util.Calendar.ampm ++java.util.Calendar.add ++java.util.Calendar.minmax ++java.util.Calendar.setTime ++java.util.Calendar.setTimeZone ++java.util.Calendar.getInstance ++java.util.Calendar.set ++java.util.Calendar.simple ++java.util.Calendar.roll ++java.util.Calendar.dstOffset ++java.util.regex.Matcher.hitEnd ++java.util.regex.Pattern.UnicodeSimpleCategory ++java.util.regex.Pattern.pcrematches ++java.util.regex.Pattern.matches ++java.util.regex.PatternSplit ++java.util.regex.CharacterClasses ++java.util.AbstractSequentialList.AcuniaAbstractSequentialListTest ++java.util.LinkedList.subList ++java.util.LinkedList.AcuniaLinkedListTest ++java.util.LinkedList.SubListTest ++java.util.HashMap.AcuniaHashMapTest ++java.util.jar.JarInputStream.getNextEntry ++java.util.jar.JarFile.TestOfManifest ++java.util.jar.JarFile.basic ++java.util.Vector.subList ++java.util.Vector.copyInto ++java.util.Vector.removeAll ++java.util.Vector.retainAll ++java.util.Vector.VectorSerialization ++java.util.zip.ZipEntry.time ++java.util.zip.ZipEntry.Size ++java.util.zip.ZipEntry.newZipEntry ++java.util.zip.ZipEntry.setComment ++java.util.zip.ZipInputStream.close ++java.util.zip.ZipInputStream.basic ++java.util.zip.Deflater.PR27435 ++java.util.zip.Adler32.checksum ++java.util.zip.GZIPInputStream.PR24461 ++java.util.zip.GZIPInputStream.basic ++java.util.zip.InflaterInputStream.basic ++java.util.zip.ZipFile.DirEntryTest ++java.util.zip.ZipFile.NoEntryTest ++java.util.zip.ZipFile.newZipFile ++java.util.Date.compareTo ++java.util.Date.clone ++java.util.Date.before ++java.util.Date.serialization ++java.util.Date.range ++java.util.Date.equals ++java.util.Date.parse ++java.util.Date.after ++java.util.Date.getTimezoneOffset ++java.util.LinkedHashMap.LinkedHashMapTest ++java.util.LinkedHashMap.Regress ++java.util.ArrayList.subList ++java.util.ArrayList.serial ++java.util.ResourceBundle.getBundle ++java.util.AbstractMap.AcuniaAbstractMapTest ++java.beans.XMLDecoder.jdk14 ++java.beans.Expression.check ++java.beans.Introspector.getBeanInfo2 ++java.beans.Introspector.getBeanInfo4 ++java.beans.Introspector.getBeanInfo ++java.beans.Introspector.jdk11 ++java.beans.Introspector.jdk12 ++java.beans.Introspector.getBeanInfo2_2 ++java.beans.DesignMode.constants ++java.beans.PropertyEditorSupport.setValue ++java.beans.PropertyEditorSupport.getSource ++java.beans.SimpleBeanInfo.getIcon ++java.beans.SimpleBeanInfo.getDefaultPropertyIndex ++java.beans.SimpleBeanInfo.getEventSetDescriptors ++java.beans.SimpleBeanInfo.getDefaultEventIndex ++java.beans.SimpleBeanInfo.getBeanDescriptor ++java.beans.SimpleBeanInfo.getAdditionalBeanInfo ++java.beans.SimpleBeanInfo.loadImage ++java.beans.EventSetDescriptor.constructorTest1 ++java.beans.FeatureDescriptor.check ++java.beans.beancontext.BeanContextSupport.toArray ++java.beans.beancontext.BeanContextSupport.getChildPropertyChangeListener ++java.beans.beancontext.BeanContextSupport.serialize ++java.beans.beancontext.BeanContextSupport.getChildBeanContextChild ++java.beans.beancontext.BeanContextSupport.getChildBeanContextMembershipListener ++java.beans.beancontext.BeanContextSupport.setDesignTime ++java.beans.beancontext.BeanContextSupport.getChildVisibility ++java.beans.beancontext.BeanContextSupport.constructors ++java.beans.beancontext.BeanContextSupport.getChildVetoableChangeListener ++java.beans.beancontext.BeanContextSupport.getChildSerializable ++java.beans.beancontext.BeanContextSupport.getBeanContextPeer ++java.beans.beancontext.BeanContextServicesSupport.getChildBeanContextServicesListener ++java.beans.beancontext.InstantiateChild ++java.beans.beancontext.Remove ++java.beans.beancontext.Array ++java.beans.beancontext.Add ++java.beans.PropertyChangeSupport.firePropertyChange ++java.beans.VetoableChangeSupport.addVetoableChangeListener ++java.beans.Statement.check ++java.beans.Beans.instantiate_1 ++java.beans.EventHandler.check ++java.beans.EventHandler.check14b ++java.beans.PropertyDescriptor.constructorTest2 ++java.beans.PropertyDescriptor.constructorTest1 ++java.beans.MethodDescriptor.constructorTest1 ++java.awt.AWTEvent.constants ++java.awt.CardLayout.show ++java.awt.CardLayout.first ++java.awt.CardLayout.testMaximumLayoutSize ++java.awt.CardLayout.testMinimumLayoutSize ++java.awt.Graphics.clearRect ++java.awt.Polygon.contains ++java.awt.Polygon.getPathIterator ++java.awt.BasicStroke.equals ++java.awt.BasicStroke.constructors ++java.awt.BasicStroke.hashCode ++java.awt.BasicStroke.constants ++java.awt.Graphics2D.setClip ++java.awt.Graphics2D.getClip ++java.awt.Graphics2D.getClipBounds ++java.awt.Graphics2D.setTransform ++java.awt.Graphics2D.clip ++java.awt.Graphics2D.transform ++java.awt.Point.move ++java.awt.Point.clone ++java.awt.Point.equals ++java.awt.Point.constructors ++java.awt.Point.setLocation ++java.awt.Point.translate ++java.awt.Point.getLocation ++java.awt.event.ComponentEvent.paramString ++java.awt.image.ShortLookupTable.getTable ++java.awt.image.ShortLookupTable.lookupPixel ++java.awt.image.ShortLookupTable.constructors ++java.awt.image.PixelGrabber.SimpleGrabber ++java.awt.image.PixelGrabber.testNullProducer ++java.awt.image.ConvolveOp.getEdgeCondition ++java.awt.image.ConvolveOp.getKernel ++java.awt.image.ConvolveOp.filterRaster ++java.awt.image.ConvolveOp.getRenderingHints ++java.awt.image.ConvolveOp.getPoint2D ++java.awt.image.ConvolveOp.createCompatibleDestRaster ++java.awt.image.ConvolveOp.constructors ++java.awt.image.ConvolveOp.getBounds2D ++java.awt.image.ConvolveOp.constants ++java.awt.image.IndexColorModel.getGreens ++java.awt.image.IndexColorModel.getComponentSize ++java.awt.image.IndexColorModel.getTransparentPixel ++java.awt.image.IndexColorModel.getColorSpace ++java.awt.image.IndexColorModel.getAlphas ++java.awt.image.IndexColorModel.getPixelSize ++java.awt.image.IndexColorModel.isValid ++java.awt.image.IndexColorModel.constructors ++java.awt.image.IndexColorModel.getBlues ++java.awt.image.IndexColorModel.getReds ++java.awt.image.IndexColorModel.getTransparency ++java.awt.image.DataBuffer.getDataTypeSize ++java.awt.image.DataBuffer.getOffset ++java.awt.image.DataBuffer.constants ++java.awt.image.DataBuffer.getOffsets ++java.awt.image.DataBufferUShort.getData ++java.awt.image.DataBufferUShort.getBankData ++java.awt.image.DataBufferUShort.setElem ++java.awt.image.DataBufferUShort.getElem ++java.awt.image.DataBufferUShort.getDataType ++java.awt.image.DataBufferUShort.constructors ++java.awt.image.ComponentSampleModel.setPixels ++java.awt.image.ComponentSampleModel.getPixelStride ++java.awt.image.ComponentSampleModel.getDataElements ++java.awt.image.ComponentSampleModel.getSample ++java.awt.image.ComponentSampleModel.getBandOffsets ++java.awt.image.ComponentSampleModel.equals ++java.awt.image.ComponentSampleModel.getPixel ++java.awt.image.ComponentSampleModel.getNumDataElements ++java.awt.image.ComponentSampleModel.getSamples ++java.awt.image.ComponentSampleModel.getSampleSize ++java.awt.image.ComponentSampleModel.getSampleFloat ++java.awt.image.ComponentSampleModel.setDataElements ++java.awt.image.ComponentSampleModel.constructors ++java.awt.image.ComponentSampleModel.setPixel ++java.awt.image.ComponentSampleModel.createDataBuffer ++java.awt.image.ComponentSampleModel.getOffset ++java.awt.image.ComponentSampleModel.getSampleDouble ++java.awt.image.ComponentSampleModel.createCompatibleSampleModel ++java.awt.image.ComponentSampleModel.setSamples ++java.awt.image.ComponentSampleModel.hashCode ++java.awt.image.ComponentSampleModel.getPixels ++java.awt.image.ComponentSampleModel.getScanlineStride ++java.awt.image.ComponentSampleModel.createSubsetSampleModel ++1 problem (1 error)java.awt.image.ColorModel.getComponentSize ++java.awt.image.ColorModel.getRGBdefault ++java.awt.image.ColorModel.constructors ++java.awt.image.LookupTable.constructor ++java.awt.image.LookupTable.getNumComponents ++java.awt.image.RescaleOp.getScaleFactors ++java.awt.image.RescaleOp.getRenderingHints ++java.awt.image.RescaleOp.getPoint2D ++java.awt.image.RescaleOp.constructors ++java.awt.image.RescaleOp.getNumFactors ++java.awt.image.RescaleOp.getOffsets ++java.awt.image.DirectColorModel.coerceData ++java.awt.image.WritableRaster.createChild ++java.awt.image.WritableRaster.createWritableChild ++java.awt.image.ComponentColorModel.coerceData ++java.awt.image.SampleModel.setPixels ++java.awt.image.SampleModel.getSample ++java.awt.image.SampleModel.getPixel ++java.awt.image.SampleModel.getSamples ++java.awt.image.SampleModel.getSampleSize ++java.awt.image.SampleModel.getSampleFloat ++java.awt.image.SampleModel.setPixel ++java.awt.image.SampleModel.setSample ++java.awt.image.SampleModel.createDataBuffer ++java.awt.image.SampleModel.getSampleDouble ++java.awt.image.SampleModel.setSamples ++java.awt.image.SampleModel.getPixels ++java.awt.image.BandCombineOp.getPoint2D ++java.awt.image.BandCombineOp.createCompatibleDestRaster ++java.awt.image.BandCombineOp.getBounds2D ++java.awt.image.BandCombineOp.filter ++java.awt.image.LookupOp.constructor ++java.awt.image.LookupOp.filterRaster ++java.awt.image.LookupOp.getRenderingHints ++java.awt.image.LookupOp.getTable ++java.awt.image.LookupOp.getPoint2D ++java.awt.image.Kernel.getYOrigin ++java.awt.image.Kernel.constructor ++java.awt.image.Kernel.getXOrigin ++java.awt.image.Kernel.getHeight ++java.awt.image.Kernel.check ++java.awt.image.Kernel.getKernelData ++java.awt.image.Kernel.getWidth ++java.awt.image.BufferedImage.getSubimage ++java.awt.image.BufferedImage.getSetRgb1Pixel ++java.awt.image.DataBufferByte.getData ++java.awt.image.DataBufferByte.getBankData ++java.awt.image.DataBufferByte.setElem ++java.awt.image.DataBufferByte.getElem ++java.awt.image.DataBufferByte.getDataType ++java.awt.image.DataBufferByte.constructors ++java.awt.image.DataBufferShort.getData ++java.awt.image.DataBufferShort.getBankData ++java.awt.image.DataBufferShort.setElem ++java.awt.image.DataBufferShort.getElem ++java.awt.image.DataBufferShort.getDataType ++java.awt.image.DataBufferShort.constructors ++java.awt.image.Raster.createChild ++java.awt.image.DataBufferInt.getData ++java.awt.image.DataBufferInt.getBankData ++java.awt.image.DataBufferInt.setElem ++java.awt.image.DataBufferInt.getElem ++java.awt.image.DataBufferInt.getDataType ++java.awt.image.DataBufferInt.constructors ++java.awt.image.SinglePixelPackedSampleModel.getBitOffsets ++java.awt.image.SinglePixelPackedSampleModel.getDataElements ++java.awt.image.SinglePixelPackedSampleModel.getSample ++java.awt.image.SinglePixelPackedSampleModel.equals ++java.awt.image.SinglePixelPackedSampleModel.getPixel ++java.awt.image.SinglePixelPackedSampleModel.getNumDataElements ++java.awt.image.SinglePixelPackedSampleModel.getSamples ++java.awt.image.SinglePixelPackedSampleModel.getSampleSize ++java.awt.image.SinglePixelPackedSampleModel.setDataElements ++java.awt.image.SinglePixelPackedSampleModel.constructors ++java.awt.image.SinglePixelPackedSampleModel.getBitMasks ++java.awt.image.SinglePixelPackedSampleModel.setPixel ++java.awt.image.SinglePixelPackedSampleModel.setSample ++java.awt.image.SinglePixelPackedSampleModel.createDataBuffer ++java.awt.image.SinglePixelPackedSampleModel.getOffset ++java.awt.image.SinglePixelPackedSampleModel.createCompatibleSampleModel ++java.awt.image.SinglePixelPackedSampleModel.hashCode ++java.awt.image.SinglePixelPackedSampleModel.getPixels ++java.awt.image.SinglePixelPackedSampleModel.getScanlineStride ++java.awt.image.SinglePixelPackedSampleModel.createSubsetSampleModel ++java.awt.image.ByteLookupTable.getTable ++java.awt.image.ByteLookupTable.lookupPixel ++java.awt.image.ByteLookupTable.constructors ++java.awt.image.MultiPixelPackedSampleModel.getBitOffset ++java.awt.image.MultiPixelPackedSampleModel.getTransferType ++java.awt.image.MultiPixelPackedSampleModel.getDataElements ++java.awt.image.MultiPixelPackedSampleModel.getSample ++java.awt.image.MultiPixelPackedSampleModel.equals ++java.awt.image.MultiPixelPackedSampleModel.getPixel ++java.awt.image.MultiPixelPackedSampleModel.getSampleSize ++java.awt.image.MultiPixelPackedSampleModel.setDataElements ++java.awt.image.MultiPixelPackedSampleModel.constructors ++java.awt.image.MultiPixelPackedSampleModel.setPixel ++java.awt.image.MultiPixelPackedSampleModel.setSample ++java.awt.image.MultiPixelPackedSampleModel.createDataBuffer ++java.awt.image.MultiPixelPackedSampleModel.getPixelBitStride ++java.awt.image.MultiPixelPackedSampleModel.getOffset ++java.awt.image.MultiPixelPackedSampleModel.createCompatibleSampleModel ++java.awt.image.MultiPixelPackedSampleModel.hashCode ++java.awt.image.MultiPixelPackedSampleModel.getScanlineStride ++java.awt.image.MultiPixelPackedSampleModel.createSubsetSampleModel ++java.awt.image.AffineTransformOp.getPoint2D ++java.awt.image.AffineTransformOp.createCompatibleDestRaster ++java.awt.image.AffineTransformOp.constructors ++java.awt.image.AffineTransformOp.getBounds2D ++java.awt.image.PixelInterleavedSampleModel.createSubsetSampleModel ++java.awt.image.BandedSampleModel.setPixels ++java.awt.image.BandedSampleModel.getDataElements ++java.awt.image.BandedSampleModel.getSample ++java.awt.image.BandedSampleModel.getPixel ++java.awt.image.BandedSampleModel.getSamples ++java.awt.image.BandedSampleModel.getSampleFloat ++java.awt.image.BandedSampleModel.setDataElements ++java.awt.image.BandedSampleModel.constructors ++java.awt.image.BandedSampleModel.setPixel ++java.awt.image.BandedSampleModel.setSample ++java.awt.image.BandedSampleModel.createDataBuffer ++java.awt.image.BandedSampleModel.getSampleDouble ++java.awt.image.BandedSampleModel.createCompatibleSampleModel ++java.awt.image.BandedSampleModel.setSamples ++java.awt.image.BandedSampleModel.hashCode ++java.awt.image.BandedSampleModel.getPixels ++java.awt.image.BandedSampleModel.createSubsetSampleModel ++java.awt.image.ColorConvertOp.filterRaster ++java.awt.image.ColorConvertOp.getPoint2D ++java.awt.image.ColorConvertOp.createCompatibleDestRaster ++java.awt.image.ColorConvertOp.constructors ++java.awt.image.ColorConvertOp.getBounds2D ++java.awt.ScrollPaneAdjustable.paramString ++java.awt.GridBagLayout.AdjustForGravity ++java.awt.GridBagLayout.toString ++java.awt.Dimension.clone ++java.awt.Dimension.equals ++java.awt.Dimension.setSize ++java.awt.Dimension.getSize ++java.awt.Dimension.constructors ++java.awt.TextField.getPreferredSize ++java.awt.TextField.getMinimumSize ++java.awt.TextField.constructors ++java.awt.BorderLayout.layoutContainer ++java.awt.BorderLayout.getHgap ++java.awt.BorderLayout.maxLayoutSize ++java.awt.BorderLayout.setVgap ++java.awt.BorderLayout.getVgap ++java.awt.BorderLayout.getLayoutAlignmentY ++java.awt.BorderLayout.Test15 ++java.awt.BorderLayout.getLayoutAlignmentX ++java.awt.BorderLayout.setHgap ++java.awt.BorderLayout.constructors ++java.awt.BorderLayout.constants ++java.awt.BorderLayout.preferredLayoutSize ++java.awt.BorderLayout.addLayoutComponent ++java.awt.Scrollbar.testSetBlockIncrement ++java.awt.Scrollbar.testSetUnitIncrement ++java.awt.Scrollbar.testSetValues ++java.awt.List.testSelected ++java.awt.ScrollPane.add ++java.awt.ScrollPane.getScrollPosition ++java.awt.ScrollPane.testSetLayout ++java.awt.ScrollPane.setScrollPosition ++java.awt.ScrollPane.doLayout ++java.awt.Choice.getSelected ++java.awt.Choice.remove ++java.awt.KeyboardFocusManager.getFocusOwner ++java.awt.KeyboardFocusManager.getGlobalPermanentFocusOwner ++java.awt.KeyboardFocusManager.getGlobalFocusOwner ++java.awt.AWTPermission.constructor ++java.awt.ColorClass.decode ++java.awt.ColorClass.serialization ++java.awt.ColorClass.equals ++java.awt.ColorClass.getGreen ++java.awt.ColorClass.constructors ++java.awt.ColorClass.brighter ++java.awt.ColorClass.hashCode ++java.awt.ColorClass.constants ++java.awt.ColorClass.getBlue ++java.awt.ColorClass.getRed ++java.awt.RenderingHints.Key.isCompatibleValue ++java.awt.RenderingHints.clone ++java.awt.RenderingHints.keySet ++java.awt.RenderingHints.put ++java.awt.RenderingHints.add ++java.awt.RenderingHints.putAll ++java.awt.RenderingHints.entrySet ++java.awt.RenderingHints.equals ++java.awt.RenderingHints.size ++java.awt.RenderingHints.get ++java.awt.RenderingHints.values ++java.awt.RenderingHints.containsValue ++java.awt.RenderingHints.isEmpty ++java.awt.RenderingHints.remove ++java.awt.RenderingHints.clear ++java.awt.Panel.TestPanelRepaint ++java.awt.AWTKeyStroke.serialization ++java.awt.AWTKeyStroke.equals ++java.awt.AWTKeyStroke.getAWTKeyStroke ++java.awt.Rectangle.clone ++java.awt.Rectangle.add ++java.awt.Rectangle.setRect ++java.awt.Rectangle.setBounds ++java.awt.Rectangle.equals ++java.awt.Rectangle.intersects ++java.awt.Rectangle.setSize ++java.awt.Rectangle.grow ++java.awt.Rectangle.outcode ++java.awt.Rectangle.union ++java.awt.Rectangle.constructors ++java.awt.Rectangle.intersection ++java.awt.Rectangle.setLocation ++java.awt.Rectangle.translate ++java.awt.Rectangle.contains ++java.awt.Rectangle.isEmpty ++java.awt.Menu.insert ++java.awt.AlphaComposite.getInstance ++java.awt.AlphaComposite.equals ++java.awt.AlphaComposite.getInstance14 ++java.awt.AlphaComposite.getRule ++java.awt.Window.security ++java.awt.Window.focusCycleRootTest ++java.awt.EventClass.constants ++java.awt.Frame.isDisplayable1 ++java.awt.Frame.isDisplayable5 ++java.awt.Frame.isDisplayable4 ++java.awt.Frame.isDisplayable3 ++java.awt.Frame.isDisplayable6 ++java.awt.Frame.menubar ++java.awt.Frame.isDisplayable2 ++java.awt.Frame.isDisplayable7 ++java.awt.Container.getListeners ++java.awt.Container.setLayout ++java.awt.Container.getPreferredSize ++java.awt.Container.applyComponentOrientation ++java.awt.Container.getComponentAt ++java.awt.Container.getAlignmentY ++java.awt.Container.getAlignmentX ++java.awt.Container.addImpl ++java.awt.FontClass.serialization ++java.awt.MenuItem.label1 ++java.awt.font.TextHitInfo.isLeadingEdge ++java.awt.font.TextHitInfo.getOtherHit ++java.awt.font.TextHitInfo.leading ++java.awt.font.TextHitInfo.getOffsetHit ++java.awt.font.TextHitInfo.equals ++java.awt.font.TextHitInfo.getCharIndex ++java.awt.font.TextHitInfo.afterOffset ++java.awt.font.TextHitInfo.getInsertionIndex ++java.awt.font.TextHitInfo.toString ++java.awt.font.TextHitInfo.beforeOffset ++java.awt.font.TextHitInfo.hashCode ++java.awt.font.TextHitInfo.trailing ++java.awt.font.TransformAttribute.serialization ++java.awt.font.TransformAttribute.getTransform ++java.awt.font.TransformAttribute.isIdentity ++java.awt.font.ShapeGraphicAttribute.ShapeGraphicAttributeTest ++java.awt.font.ImageGraphicAttribute.ImageGraphicAttributeTest ++java.awt.font.TextAttribute.toString13 ++java.awt.font.TextAttribute.serialization ++java.awt.font.TextAttribute.toString ++java.awt.font.TextAttribute.constants13 ++java.awt.font.TextAttribute.constants ++java.awt.GradientPaint.getPoint2 ++java.awt.GradientPaint.equals ++java.awt.GradientPaint.getColor1 ++java.awt.GradientPaint.constructors ++java.awt.GradientPaint.getColor2 ++java.awt.GradientPaint.isCyclic ++java.awt.GradientPaint.getTransparency ++java.awt.GradientPaint.getPoint1 ++java.awt.TextComponent.setSelectionStart ++java.awt.Component.repaint ++java.awt.Component.getListeners ++java.awt.Component.setName ++java.awt.Component.properties14 ++java.awt.Component.getMaximumSize ++java.awt.Component.setMinimumSize ++java.awt.Component.getForeground ++java.awt.Component.setPreferredSize ++java.awt.Component.properties ++java.awt.Component.requestFocus ++java.awt.Component.isValid ++java.awt.Component.getFont ++java.awt.Component.setMaximumSize ++java.awt.Component.setComponentOrientation ++java.awt.datatransfer.DataFlavor.writeExternal ++java.awt.datatransfer.StringSelection.selection ++java.awt.TextArea.getPreferredSize ++java.awt.TextArea.getMinimumSize ++java.awt.TextArea.testReplaceText ++java.awt.TextArea.constructors ++java.awt.TextArea.testAppendText ++java.awt.TextArea.testInsertText ++java.awt.TextArea.testInvalidConstructorValues ++java.awt.color.ColorSpace.isCS_sRGB ++java.awt.color.ColorSpace.getInstance ++java.awt.FlowLayout.minimumLayoutSize ++java.awt.geom.Ellipse2D.Double.clone ++java.awt.geom.Ellipse2D.Double.getY ++java.awt.geom.Ellipse2D.Double.setFrame ++java.awt.geom.Ellipse2D.Double.getHeight ++java.awt.geom.Ellipse2D.Double.getX ++java.awt.geom.Ellipse2D.Double.constructors ++java.awt.geom.Ellipse2D.Double.getBounds2D ++java.awt.geom.Ellipse2D.Double.isEmpty ++java.awt.geom.Ellipse2D.Double.getWidth ++java.awt.geom.Ellipse2D.Float.clone ++java.awt.geom.Ellipse2D.Float.getY ++java.awt.geom.Ellipse2D.Float.setFrame ++java.awt.geom.Ellipse2D.Float.getHeight ++java.awt.geom.Ellipse2D.Float.getX ++java.awt.geom.Ellipse2D.Float.constructors ++java.awt.geom.Ellipse2D.Float.getBounds2D ++java.awt.geom.Ellipse2D.Float.isEmpty ++java.awt.geom.Ellipse2D.Float.getWidth ++java.awt.geom.Ellipse2D.intersects ++java.awt.geom.Ellipse2D.contains ++java.awt.geom.GeneralPath.getCurrentPoint ++java.awt.geom.GeneralPath.GeneralPath ++java.awt.geom.GeneralPath.append_PathIterator ++java.awt.geom.GeneralPath.contains ++java.awt.geom.GeneralPath.getPathIterator ++java.awt.geom.RectangularShape.getFrame ++java.awt.geom.RectangularShape.setFrame ++java.awt.geom.RectangularShape.getMinY ++java.awt.geom.RectangularShape.intersects ++java.awt.geom.RectangularShape.getMaxY ++java.awt.geom.RectangularShape.getMaxX ++java.awt.geom.RectangularShape.setFrameFromCenter ++java.awt.geom.RectangularShape.setFrameFromDiagonal ++java.awt.geom.RectangularShape.getMinX ++java.awt.geom.RectangularShape.getCenterX ++java.awt.geom.RectangularShape.getCenterY ++java.awt.geom.RectangularShape.contains ++java.awt.geom.RectangularShape.isEmpty ++java.awt.geom.RectangularShape.getBounds ++java.awt.geom.Line2D.clone ++java.awt.geom.Line2D.getP1 ++java.awt.geom.Line2D.linesIntersect ++java.awt.geom.Line2D.ptSegDistSq ++java.awt.geom.Line2D.relativeCCW ++java.awt.geom.Line2D.getP2 ++java.awt.geom.Line2D.setLine ++java.awt.geom.Line2D.equals ++java.awt.geom.Line2D.intersects ++java.awt.geom.Line2D.ptLineDistSq ++java.awt.geom.Line2D.ptSegDist ++java.awt.geom.Line2D.intersectsLine ++java.awt.geom.Line2D.contains ++java.awt.geom.Line2D.ptLineDist ++java.awt.geom.Line2D.getPathIterator ++java.awt.geom.Line2D.getBounds ++java.awt.geom.Area.clone ++java.awt.geom.Area.add ++java.awt.geom.Area.isRectangular ++java.awt.geom.Area.createTransformedArea ++java.awt.geom.Area.isPolygonal ++java.awt.geom.Area.intersect ++java.awt.geom.Area.equals ++java.awt.geom.Area.exclusiveOr ++java.awt.geom.Area.intersects ++java.awt.geom.Area.reset ++java.awt.geom.Area.isSingular ++java.awt.geom.Area.constructors ++java.awt.geom.Area.getBounds2D ++java.awt.geom.Area.contains ++java.awt.geom.Area.subtract ++java.awt.geom.Area.isEmpty ++java.awt.geom.Area.transform ++java.awt.geom.Area.getBounds ++java.awt.geom.Rectangle2D.Double.clone ++java.awt.geom.Rectangle2D.Double.createIntersection ++java.awt.geom.Rectangle2D.Double.setRect ++java.awt.geom.Rectangle2D.Double.outcode ++java.awt.geom.Rectangle2D.Double.createUnion ++java.awt.geom.Rectangle2D.Double.isEmpty ++java.awt.geom.Rectangle2D.Float.clone ++java.awt.geom.Rectangle2D.Float.createIntersection ++java.awt.geom.Rectangle2D.Float.setRect ++java.awt.geom.Rectangle2D.Float.outcode ++java.awt.geom.Rectangle2D.Float.createUnion ++java.awt.geom.Rectangle2D.Float.isEmpty ++java.awt.geom.Rectangle2D.add ++java.awt.geom.Rectangle2D.setFrame ++java.awt.geom.Rectangle2D.intersect ++java.awt.geom.Rectangle2D.equals ++java.awt.geom.Rectangle2D.intersects ++java.awt.geom.Rectangle2D.union ++java.awt.geom.Rectangle2D.intersectsLine ++java.awt.geom.Rectangle2D.getBounds2D ++java.awt.geom.Rectangle2D.contains ++java.awt.geom.Rectangle2D.constants ++java.awt.geom.Rectangle2D.getPathIterator ++java.awt.geom.Rectangle2D.getBounds ++java.awt.geom.Arc2D.Double.clone ++java.awt.geom.Arc2D.Float.clone ++java.awt.geom.Arc2D.setFrame ++java.awt.geom.Arc2D.setAngleStart ++java.awt.geom.Arc2D.setArc ++java.awt.geom.Arc2D.setArcByTangent ++java.awt.geom.Arc2D.containsAngle ++java.awt.geom.Arc2D.setArcByCenter ++java.awt.geom.Arc2D.intersects ++java.awt.geom.Arc2D.getEndPoint ++java.awt.geom.Arc2D.setAngleExtent ++java.awt.geom.Arc2D.constructors ++java.awt.geom.Arc2D.getBounds2D ++java.awt.geom.Arc2D.contains ++java.awt.geom.Arc2D.getStartPoint ++java.awt.geom.Arc2D.constants ++java.awt.geom.Arc2D.isEmpty ++java.awt.geom.Arc2D.getPathIterator ++java.awt.geom.Arc2D.setAngles ++java.awt.geom.Arc2D.setArcType ++java.awt.geom.QuadCurve2D.Double.getP1 ++java.awt.geom.QuadCurve2D.Double.getP2 ++java.awt.geom.QuadCurve2D.Double.getCtrlPt ++java.awt.geom.QuadCurve2D.Double.getBounds2D ++java.awt.geom.QuadCurve2D.Double.Double ++java.awt.geom.QuadCurve2D.Double.setCurve ++java.awt.geom.QuadCurve2D.Float.getP1 ++java.awt.geom.QuadCurve2D.Float.Float ++java.awt.geom.QuadCurve2D.Float.getP2 ++java.awt.geom.QuadCurve2D.Float.getCtrlPt ++java.awt.geom.QuadCurve2D.Float.getBounds2D ++java.awt.geom.QuadCurve2D.Float.setCurve ++java.awt.geom.QuadCurve2D.clone ++java.awt.geom.QuadCurve2D.getFlatness ++java.awt.geom.QuadCurve2D.subdivide ++java.awt.geom.QuadCurve2D.getFlatnessSq ++java.awt.geom.QuadCurve2D.setCurve ++java.awt.geom.QuadCurve2D.getPathIterator ++java.awt.geom.CubicCurve2D.Double.getP1 ++java.awt.geom.CubicCurve2D.Double.getCtrlP2 ++java.awt.geom.CubicCurve2D.Double.getP2 ++java.awt.geom.CubicCurve2D.Double.getBounds2D ++java.awt.geom.CubicCurve2D.Double.Double ++java.awt.geom.CubicCurve2D.Double.setCurve ++java.awt.geom.CubicCurve2D.Double.getCtrlP1 ++java.awt.geom.CubicCurve2D.Float.getP1 ++java.awt.geom.CubicCurve2D.Float.getCtrlP2 ++java.awt.geom.CubicCurve2D.Float.Float ++java.awt.geom.CubicCurve2D.Float.getP2 ++java.awt.geom.CubicCurve2D.Float.getBounds2D ++java.awt.geom.CubicCurve2D.Float.setCurve ++java.awt.geom.CubicCurve2D.Float.getCtrlP1 ++java.awt.geom.CubicCurve2D.clone ++java.awt.geom.CubicCurve2D.getFlatness ++java.awt.geom.CubicCurve2D.subdivide ++java.awt.geom.CubicCurve2D.getFlatnessSq ++java.awt.geom.CubicCurve2D.setCurve ++java.awt.geom.CubicCurve2D.getPathIterator ++java.awt.geom.FlatteningPathIterator.FlatteningPathIterator ++java.awt.geom.FlatteningPathIterator.getWindingRule ++java.awt.geom.FlatteningPathIterator.getFlatness ++java.awt.geom.FlatteningPathIterator.getRecursionLimit ++java.awt.geom.FlatteningPathIterator.currentSegment ++java.awt.geom.AffineTransform.clone ++java.awt.geom.AffineTransform.preConcatenate ++java.awt.geom.AffineTransform.getRotateInstance ++java.awt.geom.AffineTransform.getMatrix ++java.awt.geom.AffineTransform.inverseTransform ++java.awt.geom.AffineTransform.getScaleInstance ++java.awt.geom.AffineTransform.createInverse ++java.awt.geom.AffineTransform.deltaTransform ++java.awt.geom.AffineTransform.equals ++java.awt.geom.AffineTransform.setTransform ++java.awt.geom.AffineTransform.constructors ++java.awt.geom.AffineTransform.getTranslateInstance ++java.awt.geom.AffineTransform.constants ++java.awt.geom.AffineTransform.concatenate ++java.awt.geom.AffineTransform.getShearInstance ++java.awt.geom.AffineTransform.transform ++java.awt.geom.AffineTransform.getDeterminant ++java.awt.geom.AffineTransform.isIdentity ++java.awt.geom.RoundRectangle2D.intersects ++java.awt.geom.RoundRectangle2D.contains ++java.awt.testName ++java.nio.Buffer.IntBufferTest ++java.nio.Buffer.ShortBufferTest ++java.nio.Buffer.FloatBufferTest ++java.nio.Buffer.LongBufferTest ++java.nio.Buffer.ByteBufferTest ++java.nio.Buffer.DoubleBufferTest ++java.nio.Buffer.CharBufferTest ++java.nio.LongBuffer.compact ++java.nio.ShortBuffer.compact ++java.nio.IntBuffer.compareTo ++java.nio.IntBuffer.compact ++java.nio.channels.Channels.ChannelsTest ++java.nio.channels.Selector.testEmptySelect ++java.nio.channels.FileChannel.copyIO ++java.nio.channels.FileChannel.multibufferIO ++java.nio.channels.FileChannel.truncate ++java.nio.channels.FileChannel.map ++java.nio.channels.FileChannel.offsetSingleBuffer ++java.nio.channels.FileChannel.singlebufferIO ++java.nio.channels.FileChannel.multidirectbufferIO ++java.nio.channels.FileChannel.offsetSingleDirectBuffer ++java.nio.DoubleBuffer.compareTo ++java.nio.DoubleBuffer.compact ++java.nio.ByteBuffer.direct ++java.nio.ByteBuffer.compact ++java.nio.ByteBuffer.TestAllocateDirect ++java.nio.ByteBuffer.GetPut ++java.nio.ByteBuffer.putDouble ++java.nio.ByteBuffer.Order ++java.nio.ByteBuffer.Allocating ++java.nio.CharBuffer.compact ++java.nio.FloatBuffer.compareTo ++java.nio.FloatBuffer.compact ++java.nio.charset.Charset.UTF8Charset ++java.nio.charset.Charset.utf16 ++java.nio.charset.Charset.canEncode ++java.nio.charset.Charset.forName diff --cc debian/patches/accessible-toolkit.patch index 0000000,0000000..7fbbd94 new file mode 100644 --- /dev/null +++ b/debian/patches/accessible-toolkit.patch @@@ -1,0 -1,0 +1,17 @@@ ++Index: openjdk/jdk/src/share/classes/java/awt/Toolkit.java ++=================================================================== ++--- openjdk/jdk/src/share/classes/java/awt/Toolkit.java +++++ openjdk/jdk/src/share/classes/java/awt/Toolkit.java ++@@ -891,7 +891,11 @@ public abstract class Toolkit { ++ return null; ++ } ++ }); ++- loadAssistiveTechnologies(); +++ try { +++ loadAssistiveTechnologies(); +++ } catch ( AWTError error) { +++ // ignore silently +++ } ++ } finally { ++ // Make sure to always re-enable the JIT. ++ java.lang.Compiler.enable(); diff --cc debian/patches/alpha-float-const.diff index 0000000,0000000..bc63ece new file mode 100644 --- /dev/null +++ b/debian/patches/alpha-float-const.diff @@@ -1,0 -1,0 +1,11 @@@ ++--- openjdk-boot/jdk/src/share/classes/java/lang/Float.java~ 2010-03-08 14:53:10.224835876 +0100 +++++ openjdk-boot/jdk/src/share/classes/java/lang/Float.java 2010-03-08 15:05:28.803585964 +0100 ++@@ -86,7 +86,7 @@ ++ * ++ * @since 1.6 ++ */ ++- public static final float MIN_NORMAL = 1.17549435E-38f; +++ public static final float MIN_NORMAL = Float.intBitsToFloat(0x00800000); ++ ++ /** ++ * A constant holding the smallest positive nonzero value of type diff --cc debian/patches/atk-wrapper-security.patch index 0000000,0000000..a1933fd new file mode 100644 --- /dev/null +++ b/debian/patches/atk-wrapper-security.patch @@@ -1,0 -1,0 +1,12 @@@ ++Index: openjdk/jdk/src/share/lib/security/java.security-linux ++=================================================================== ++--- openjdk/jdk/src/share/lib/security/java.security-linux +++++ openjdk/jdk/src/share/lib/security/java.security-linux ++@@ -137,6 +137,7 @@ keystore.type.compat=true ++ # corresponding RuntimePermission ("accessClassInPackage."+package) has ++ # been granted. ++ package.access=sun.,\ +++ org.GNOME.Accessibility.,\ ++ com.sun.xml.internal.,\ ++ com.sun.imageio.,\ ++ com.sun.istack.internal.,\ diff --cc debian/patches/default-jvm-cfg-aarch64.diff index 0000000,0000000..6a07e4e new file mode 100644 --- /dev/null +++ b/debian/patches/default-jvm-cfg-aarch64.diff @@@ -1,0 -1,0 +1,22 @@@ ++--- openjdk/jdk/src/share/bin/java.c.orig +++++ openjdk/jdk/src/share/bin/java.c ++@@ -1580,7 +1580,7 @@ ++ ReadKnownVMs(const char *jvmCfgName, jboolean speculative) ++ { ++ FILE *jvmCfg; ++- char line[MAXPATHLEN+20]; +++ char line[MAXPATHLEN+30]; ++ int cnt = 0; ++ int lineno = 0; ++ jlong start, end; ++@@ -1595,6 +1595,10 @@ ++ ++ jvmCfg = fopen(jvmCfgName, "r"); ++ if (jvmCfg == NULL) { +++ strcat(jvmCfgName, "-default"); +++ jvmCfg = fopen(jvmCfgName, "r"); +++ } +++ if (jvmCfg == NULL) { ++ if (!speculative) { ++ JLI_ReportErrorMessage(CFG_ERROR6, jvmCfgName); ++ exit(1); diff --cc debian/patches/default-jvm-cfg-default.diff index 0000000,0000000..d2191fe new file mode 100644 --- /dev/null +++ b/debian/patches/default-jvm-cfg-default.diff @@@ -1,0 -1,0 +1,48 @@@ ++Index: openjdk/jdk/src/share/bin/java.c ++=================================================================== ++--- openjdk/jdk/src/share/bin/java.c +++++ openjdk/jdk/src/share/bin/java.c ++@@ -1584,7 +1584,7 @@ jint ++ ReadKnownVMs(const char *jvmCfgName, jboolean speculative) ++ { ++ FILE *jvmCfg; ++- char line[MAXPATHLEN+20]; +++ char line[MAXPATHLEN+30]; ++ int cnt = 0; ++ int lineno = 0; ++ jlong start, end; ++@@ -1599,6 +1599,10 @@ ReadKnownVMs(const char *jvmCfgName, jbo ++ ++ jvmCfg = fopen(jvmCfgName, "r"); ++ if (jvmCfg == NULL) { +++ strcat(jvmCfgName, "-default"); +++ jvmCfg = fopen(jvmCfgName, "r"); +++ } +++ if (jvmCfg == NULL) { ++ if (!speculative) { ++ JLI_ReportErrorMessage(CFG_ERROR6, jvmCfgName); ++ exit(1); ++Index: b/openjdk/hotspot/src/share/tools/launcher/java.c ++=================================================================== ++--- openjdk/hotspot/src/share/tools/launcher/java.c +++++ openjdk/hotspot/src/share/tools/launcher/java.c ++@@ -1863,7 +1863,7 @@ jint ++ ReadKnownVMs(const char *jrepath, char * arch, jboolean speculative) ++ { ++ FILE *jvmCfg; ++- char jvmCfgName[MAXPATHLEN+20]; +++ char jvmCfgName[MAXPATHLEN+30]; ++ char line[MAXPATHLEN+20]; ++ int cnt = 0; ++ int lineno = 0; ++@@ -1884,6 +1884,10 @@ ReadKnownVMs(const char *jrepath, char * ++ ++ jvmCfg = fopen(jvmCfgName, "r"); ++ if (jvmCfg == NULL) { +++ strcat(jvmCfgName, "-default"); +++ jvmCfg = fopen(jvmCfgName, "r"); +++ } +++ if (jvmCfg == NULL) { ++ if (!speculative) { ++ ReportErrorMessage2("Error: could not open `%s'", jvmCfgName, ++ JNI_TRUE); diff --cc debian/patches/dnd-files.patch index 0000000,0000000..96c8bc8 new file mode 100644 --- /dev/null +++ b/debian/patches/dnd-files.patch @@@ -1,0 -1,0 +1,21 @@@ ++diff -uNr openjdk-orig/jdk/src/solaris/classes/sun/awt/X11/XDataTransferer.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XDataTransferer.java ++--- openjdk-orig/jdk/src/solaris/classes/sun/awt/X11/XDataTransferer.java 2012-10-16 22:36:45.000000000 +0200 +++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XDataTransferer.java 2012-12-15 12:14:59.281673529 +0100 ++@@ -283,14 +283,14 @@ ++ reader = new BufferedReader(new InputStreamReader(stream, charset)); ++ String line; ++ ArrayList uriList = new ArrayList(); ++- URI uri; ++ while ((line = reader.readLine()) != null) { ++ try { ++- uri = new URI(line); +++ if (!"\0".equals(line)) { +++ uriList.add(new URI(line)); +++ } ++ } catch (URISyntaxException uriSyntaxException) { ++ throw new IOException(uriSyntaxException); ++ } ++- uriList.add(uri); ++ } ++ return uriList.toArray(new URI[uriList.size()]); ++ } finally { diff --cc debian/patches/enumipv6-fix.patch index 0000000,0000000..82f73c5 new file mode 100644 --- /dev/null +++ b/debian/patches/enumipv6-fix.patch @@@ -1,0 -1,0 +1,11 @@@ ++--- openjdk/jdk/src/solaris/native/java/net/NetworkInterface.c~ 2012-02-15 09:26:50.000000000 +0100 +++++ openjdk/jdk/src/solaris/native/java/net/NetworkInterface.c 2012-02-26 14:13:22.602107361 +0100 ++@@ -1105,7 +1105,7 @@ ++ uint8_t ipv6addr[16]; ++ ++ if ((f = fopen(_PATH_PROCNET_IFINET6, "r")) != NULL) { ++- while (fscanf(f, "%4s%4s%4s%4s%4s%4s%4s%4s %02x %02x %02x %02x %20s\n", +++ while (fscanf(f, "%4s%4s%4s%4s%4s%4s%4s%4s %x %x %x %x %20s\n", ++ addr6p[0], addr6p[1], addr6p[2], addr6p[3], addr6p[4], addr6p[5], addr6p[6], addr6p[7], ++ &if_idx, &plen, &scope, &dad_status, devname) != EOF) { ++ diff --cc debian/patches/fix_extra_flags-aarch64.diff index 0000000,0000000..6463b13 new file mode 100644 --- /dev/null +++ b/debian/patches/fix_extra_flags-aarch64.diff @@@ -1,0 -1,0 +1,83 @@@ ++Description: Handle EXTRA_* flags into openjdk ++ - jsig: Add $EXTRA_CFLAGS and EXTRA_LDFLAGS to CC ++ - saproc: Add EXTRA_LDFLAGS to SA_LFLAGS ++ - launcher: Add $EXTRA_CFLAGS/$EXTRA_LDFLAGS to CC/LD ++ - hotspot: Fix typo on EXTRA_LDFLAGS ++ - jdk: Append EXTRA_* to exisint flags ++Author: Damien Raude-Morvan , Matthias Klose ++ ++--- openjdk/hotspot/make/linux/makefiles/jsig.make.orig +++++ openjdk/hotspot/make/linux/makefiles/jsig.make ++@@ -59,7 +59,7 @@ ++ $(LIBJSIG): $(JSIGSRCDIR)/jsig.c $(LIBJSIG_MAPFILE) ++ @echo Making signal interposition lib... ++ $(QUIETLY) $(CC) $(SYMFLAG) $(ARCHFLAG) $(SHARED_FLAG) $(PICFLAG) \ ++- $(LFLAGS_JSIG) $(JSIG_DEBUG_CFLAGS) $(EXTRA_CFLAGS) -o $@ $< -ldl +++ $(LFLAGS_JSIG) $(EXTRA_LDFLAGS_HS) $(JSIG_DEBUG_CFLAGS) $(EXTRA_CFLAGS) $(EXTRA_CFLAGS_HS) -o $@ $< -ldl ++ $(QUIETLY) [ -f $(LIBJSIG_G) ] || { ln -s $@ $(LIBJSIG_G); } ++ ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) ++ ifneq ($(STRIP_POLICY),no_strip) ++--- openjdk/hotspot/make/linux/makefiles/launcher.make.orig +++++ openjdk/hotspot/make/linux/makefiles/launcher.make ++@@ -73,16 +73,16 @@ ++ ++ $(LAUNCHER_OUT)/%.o: $(LAUNCHERDIR_SHARE)/%.c ++ $(QUIETLY) [ -d $(LAUNCHER_OUT) ] || { mkdir -p $(LAUNCHER_OUT); } ++- $(QUIETLY) $(CC) -g -o $@ -c $< -MMD $(LAUNCHERFLAGS) $(CXXFLAGS) +++ $(QUIETLY) $(CC) -g -o $@ -c $< -MMD $(LAUNCHERFLAGS) $(EXTRA_CFLAGS_HS) $(CXXFLAGS) ++ ++ $(LAUNCHER_OUT)/%.o: $(LAUNCHERDIR)/%.c ++ $(QUIETLY) [ -d $(LAUNCHER_OUT) ] || { mkdir -p $(LAUNCHER_OUT); } ++- $(QUIETLY) $(CC) -g -o $@ -c $< -MMD $(LAUNCHERFLAGS) $(CXXFLAGS) +++ $(QUIETLY) $(CC) -g -o $@ -c $< -MMD $(LAUNCHERFLAGS) $(EXTRA_CFLAGS_HS) $(CXXFLAGS) ++ ++ $(LAUNCHER): $(OBJS) $(LIBJVM) $(LAUNCHER_MAPFILE) ++ $(QUIETLY) echo Linking launcher... ++ $(QUIETLY) $(LINK_LAUNCHER/PRE_HOOK) ++- $(QUIETLY) $(LINK_LAUNCHER) $(LFLAGS_LAUNCHER) -o $@ $(OBJS) $(LIBS_LAUNCHER) +++ $(QUIETLY) $(LINK_LAUNCHER) $(LFLAGS_LAUNCHER) $(EXTRA_LDFLAGS_HS) -o $@ $(OBJS) $(LIBS_LAUNCHER) ++ $(QUIETLY) $(LINK_LAUNCHER/POST_HOOK) ++ ++ $(LAUNCHER): $(LAUNCHER_SCRIPT) ++--- openjdk/hotspot/make/linux/makefiles/vm.make.orig +++++ openjdk/hotspot/make/linux/makefiles/vm.make ++@@ -113,8 +113,8 @@ ++ CFLAGS += $(CFLAGS/NOEX) ++ ++ # Extra flags from gnumake's invocation or environment ++-CFLAGS += $(EXTRA_CFLAGS) ++-LFLAGS += $(EXTRA_CFLAGS) +++CFLAGS += $(EXTRA_CFLAGS_HS) +++LFLAGS += $(EXTRA_LDFLAGS_HS) ++ ++ # Don't set excutable bit on stack segment ++ # the same could be done by separate execstack command ++--- openjdk/jdk/make/common/Defs.gmk.orig +++++ openjdk/jdk/make/common/Defs.gmk ++@@ -506,11 +506,11 @@ ++ # EXTRA_CFLAGS are used to define cross-compilation options ++ # ++ ASFLAGS = $(ASFLAGS_$(VARIANT)) $(ASFLAGS_COMMON) $(OTHER_ASFLAGS) ++-CFLAGS = $(CFLAGS_$(VARIANT)/BYFILE) $(CFLAGS_COMMON) $(OTHER_CFLAGS) $(EXTRA_CFLAGS) ++-CXXFLAGS = $(CXXFLAGS_$(VARIANT)/BYFILE) $(CXXFLAGS_COMMON) $(OTHER_CXXFLAGS) $(EXTRA_CFLAGS) +++CFLAGS = $(CFLAGS_$(VARIANT)/BYFILE) $(CFLAGS_COMMON) $(OTHER_CFLAGS) $(EXTRA_CFLAGS_JDK) +++CXXFLAGS = $(CXXFLAGS_$(VARIANT)/BYFILE) $(CXXFLAGS_COMMON) $(OTHER_CXXFLAGS) $(EXTRA_CXXFLAGS_JDK) ++ CPPFLAGS = $(CPPFLAGS_$(VARIANT)) $(CPPFLAGS_COMMON) $(OTHER_CPPFLAGS) \ ++- $(DEFINES) $(OPTIONS:%=-D%) ++-LDFLAGS = $(LDFLAGS_$(VARIANT)) $(LDFLAGS_COMMON) $(OTHER_LDFLAGS) +++ $(DEFINES) $(OPTIONS:%=-D%) $(EXTRA_CPPFLAGS_JDK) +++LDFLAGS = $(LDFLAGS_$(VARIANT)) $(LDFLAGS_COMMON) $(OTHER_LDFLAGS) $(EXTRA_LDFLAGS_JDK) ++ LDLIBS = $(OTHER_LDLIBS) $(LDLIBS_$(VARIANT)) $(LDLIBS_COMMON) ++ LINTFLAGS = $(LINTFLAGS_$(VARIANT)) $(LINTFLAGS_COMMON) \ ++ $(OTHER_LINTFLAGS) ++--- openjdk/hotspot/make/linux/makefiles/saproc.make +++++ openjdk/hotspot/make/linux/makefiles/saproc.make ++@@ -73,7 +73,7 @@ ++ else ++ ALT_SAINCDIR= ++ endif ++-SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE)) $(LDFLAGS_HASH_STYLE) +++SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE)) $(LDFLAGS_HASH_STYLE) $(EXTRA_LDFLAGS_HS) ++ ++ $(LIBSAPROC): $(SASRCFILES) $(SAMAPFILE) ++ $(QUIETLY) if [ "$(BOOT_JAVA_HOME)" = "" ]; then \ diff --cc debian/patches/fix_extra_flags-default.diff index 0000000,0000000..b41f5e6 new file mode 100644 --- /dev/null +++ b/debian/patches/fix_extra_flags-default.diff @@@ -1,0 -1,0 +1,93 @@@ ++Description: Handle EXTRA_* flags into openjdk ++ - jsig: Add $EXTRA_CFLAGS and EXTRA_LDFLAGS to CC ++ - saproc: Add EXTRA_LDFLAGS to SA_LFLAGS ++ - launcher: Add $EXTRA_CFLAGS/$EXTRA_LDFLAGS to CC/LD ++ - hotspot: Fix typo on EXTRA_LDFLAGS ++ - jdk: Append EXTRA_* to exisint flags ++Author: Damien Raude-Morvan , Matthias Klose ++ ++Index: openjdk/hotspot/make/linux/makefiles/jsig.make ++=================================================================== ++--- openjdk/hotspot/make/linux/makefiles/jsig.make +++++ openjdk/hotspot/make/linux/makefiles/jsig.make ++@@ -59,7 +59,7 @@ endif ++ $(LIBJSIG): $(JSIGSRCDIR)/jsig.c $(LIBJSIG_MAPFILE) ++ @echo Making signal interposition lib... ++ $(QUIETLY) $(CC) $(SYMFLAG) $(ARCHFLAG) $(SHARED_FLAG) $(PICFLAG) \ ++- $(LFLAGS_JSIG) $(JSIG_DEBUG_CFLAGS) $(EXTRA_CFLAGS) -o $@ $< -ldl +++ $(LFLAGS_JSIG) $(EXTRA_LDFLAGS_HS) $(JSIG_DEBUG_CFLAGS) $(EXTRA_CFLAGS) $(EXTRA_CFLAGS_HS) -o $@ $< -ldl ++ $(QUIETLY) [ -f $(LIBJSIG_G) ] || { ln -s $@ $(LIBJSIG_G); } ++ ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) ++ ifneq ($(STRIP_POLICY),no_strip) ++Index: openjdk/hotspot/make/linux/makefiles/launcher.make ++=================================================================== ++--- openjdk/hotspot/make/linux/makefiles/launcher.make +++++ openjdk/hotspot/make/linux/makefiles/launcher.make ++@@ -73,16 +73,16 @@ DEPFILES := $(patsubst %.o,%.d,$(OBJS)) ++ ++ $(LAUNCHER_OUT)/%.o: $(LAUNCHERDIR_SHARE)/%.c ++ $(QUIETLY) [ -d $(LAUNCHER_OUT) ] || { mkdir -p $(LAUNCHER_OUT); } ++- $(QUIETLY) $(CC) -g -o $@ -c $< -MMD $(LAUNCHERFLAGS) $(CXXFLAGS) +++ $(QUIETLY) $(CC) -g -o $@ -c $< -MMD $(LAUNCHERFLAGS) $(EXTRA_CFLAGS_HS) $(CXXFLAGS) ++ ++ $(LAUNCHER_OUT)/%.o: $(LAUNCHERDIR)/%.c ++ $(QUIETLY) [ -d $(LAUNCHER_OUT) ] || { mkdir -p $(LAUNCHER_OUT); } ++- $(QUIETLY) $(CC) -g -o $@ -c $< -MMD $(LAUNCHERFLAGS) $(CXXFLAGS) +++ $(QUIETLY) $(CC) -g -o $@ -c $< -MMD $(LAUNCHERFLAGS) $(EXTRA_CFLAGS_HS) $(CXXFLAGS) ++ ++ $(LAUNCHER): $(OBJS) $(LIBJVM) $(LAUNCHER_MAPFILE) ++ $(QUIETLY) echo Linking launcher... ++ $(QUIETLY) $(LINK_LAUNCHER/PRE_HOOK) ++- $(QUIETLY) $(LINK_LAUNCHER) $(LFLAGS_LAUNCHER) -o $@ $(OBJS) $(LIBS_LAUNCHER) +++ $(QUIETLY) $(LINK_LAUNCHER) $(LFLAGS_LAUNCHER) $(EXTRA_LDFLAGS_HS) -o $@ $(OBJS) $(LIBS_LAUNCHER) ++ $(QUIETLY) $(LINK_LAUNCHER/POST_HOOK) ++ ++ $(LAUNCHER): $(LAUNCHER_SCRIPT) ++Index: openjdk/hotspot/make/linux/makefiles/vm.make ++=================================================================== ++--- openjdk/hotspot/make/linux/makefiles/vm.make +++++ openjdk/hotspot/make/linux/makefiles/vm.make ++@@ -134,8 +134,8 @@ CFLAGS += $(CFLAGS_WARN/BYFILE) ++ CFLAGS += $(CFLAGS/NOEX) ++ ++ # Extra flags from gnumake's invocation or environment ++-CFLAGS += $(EXTRA_CFLAGS) ++-LFLAGS += $(EXTRA_CFLAGS) +++CFLAGS += $(EXTRA_CFLAGS_HS) +++LFLAGS += $(EXTRA_LDFLAGS_HS) ++ ++ # Don't set excutable bit on stack segment ++ # the same could be done by separate execstack command ++Index: openjdk/jdk/make/common/Defs.gmk ++=================================================================== ++--- openjdk/jdk/make/common/Defs.gmk +++++ openjdk/jdk/make/common/Defs.gmk ++@@ -556,11 +556,11 @@ CXXFLAGS_$(VARIANT)/BYFILE = $(CXXFLAGS ++ # EXTRA_CFLAGS and EXTRA_LDFLAGS are used for command-line additions ++ # ++ ASFLAGS = $(ASFLAGS_$(VARIANT)) $(ASFLAGS_COMMON) $(OTHER_ASFLAGS) ++-CFLAGS = $(CFLAGS_$(VARIANT)/BYFILE) $(CFLAGS_COMMON) $(OTHER_CFLAGS) $(EXTRA_CFLAGS) ++-CXXFLAGS = $(CXXFLAGS_$(VARIANT)/BYFILE) $(CXXFLAGS_COMMON) $(OTHER_CXXFLAGS) $(EXTRA_CFLAGS) +++CFLAGS = $(CFLAGS_$(VARIANT)/BYFILE) $(CFLAGS_COMMON) $(OTHER_CFLAGS) $(EXTRA_CFLAGS_JDK) +++CXXFLAGS = $(CXXFLAGS_$(VARIANT)/BYFILE) $(CXXFLAGS_COMMON) $(OTHER_CXXFLAGS) $(EXTRA_CXXFLAGS_JDK) ++ CPPFLAGS = $(CPPFLAGS_$(VARIANT)) $(CPPFLAGS_COMMON) $(OTHER_CPPFLAGS) \ ++- $(DEFINES) $(OPTIONS:%=-D%) ++-LDFLAGS = $(LDFLAGS_$(VARIANT)) $(LDFLAGS_COMMON) $(OTHER_LDFLAGS) $(EXTRA_LDFLAGS) +++ $(DEFINES) $(OPTIONS:%=-D%) $(EXTRA_CPPFLAGS_JDK) +++LDFLAGS = $(LDFLAGS_$(VARIANT)) $(LDFLAGS_COMMON) $(OTHER_LDFLAGS) $(EXTRA_LDFLAGS_JDK) ++ LDLIBS = $(OTHER_LDLIBS) $(LDLIBS_$(VARIANT)) $(LDLIBS_COMMON) ++ LINTFLAGS = $(LINTFLAGS_$(VARIANT)) $(LINTFLAGS_COMMON) \ ++ $(OTHER_LINTFLAGS) ++Index: openjdk/hotspot/make/linux/makefiles/saproc.make ++=================================================================== ++--- openjdk/hotspot/make/linux/makefiles/saproc.make +++++ openjdk/hotspot/make/linux/makefiles/saproc.make ++@@ -77,7 +77,7 @@ ALT_SAINCDIR=-I$(ALT_SASRCDIR) ++ else ++ ALT_SAINCDIR= ++ endif ++-SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE)) $(LDFLAGS_HASH_STYLE) +++SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE)) $(LDFLAGS_HASH_STYLE) $(EXTRA_LDFLAGS_HS) ++ ++ $(LIBSAPROC): $(SASRCFILES) $(SAMAPFILE) ++ $(QUIETLY) if [ "$(BOOT_JAVA_HOME)" = "" ]; then \ diff --cc debian/patches/fontconfig-dejavu.diff index 0000000,0000000..37737be new file mode 100644 --- /dev/null +++ b/debian/patches/fontconfig-dejavu.diff @@@ -1,0 -1,0 +1,48 @@@ ++Index: openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties ++=================================================================== ++--- openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties +++++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties ++@@ -26,7 +26,7 @@ ++ ++ # Version ++ ++-# Uses Ubuntu 8.04 (hardy), Debian 6.0 (Squeeze) (and more recent releases) fonts and file paths. +++# Uses Ubuntu 14.04 (trusty), Debian 8.0 (jessie) (and more recent releases) fonts and file paths. ++ version=1 ++ ++ # Component Font Mappings ++@@ -219,20 +219,20 @@ exclusion.japanese-ipafont=0390-03d6,220 ++ ++ # Font File Names ++ ++-filename.DejaVu_Sans=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf ++-filename.DejaVu_Sans_Bold=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Bold.ttf ++-filename.DejaVu_Sans_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Oblique.ttf ++-filename.DejaVu_Sans_Bold_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-BoldOblique.ttf ++- ++-filename.DejaVu_Sans_Mono=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono.ttf ++-filename.DejaVu_Sans_Mono_Bold=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-Bold.ttf ++-filename.DejaVu_Sans_Mono_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-Oblique.ttf ++-filename.DejaVu_Sans_Mono_Bold_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-BoldOblique.ttf ++- ++-filename.DejaVu_Serif=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif.ttf ++-filename.DejaVu_Serif_Bold=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-Bold.ttf ++-filename.DejaVu_Serif_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-Oblique.ttf ++-filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-BoldOblique.ttf +++filename.DejaVu_Sans=/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf +++filename.DejaVu_Sans_Bold=/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf +++filename.DejaVu_Sans_Oblique=/usr/share/fonts/truetype/dejavu/DejaVuSans-Oblique.ttf +++filename.DejaVu_Sans_Bold_Oblique=/usr/share/fonts/truetype/dejavu/DejaVuSans-BoldOblique.ttf +++ +++filename.DejaVu_Sans_Mono=/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf +++filename.DejaVu_Sans_Mono_Bold=/usr/share/fonts/truetype/dejavu/DejaVuSansMono-Bold.ttf +++filename.DejaVu_Sans_Mono_Oblique=/usr/share/fonts/truetype/dejavu/DejaVuSansMono-Oblique.ttf +++filename.DejaVu_Sans_Mono_Bold_Oblique=/usr/share/fonts/truetype/dejavu/DejaVuSansMono-BoldOblique.ttf +++ +++filename.DejaVu_Serif=/usr/share/fonts/truetype/dejavu/DejaVuSerif.ttf +++filename.DejaVu_Serif_Bold=/usr/share/fonts/truetype/dejavu/DejaVuSerif-Bold.ttf +++filename.DejaVu_Serif_Oblique=/usr/share/fonts/truetype/dejavu/DejaVuSerif-Oblique.ttf +++filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/truetype/dejavu/DejaVuSerif-BoldOblique.ttf ++ ++ filename.AR_PL_UMing_CN=/usr/share/fonts/truetype/arphic/uming.ttc ++ filename.AR_PL_UMing_HK=/usr/share/fonts/truetype/arphic/uming.ttc diff --cc debian/patches/fontconfig-japanese.diff index 0000000,0000000..0cecba8 new file mode 100644 --- /dev/null +++ b/debian/patches/fontconfig-japanese.diff @@@ -1,0 -1,0 +1,221 @@@ ++# used for Debian wheezy and Ubuntu 12.04 LTS or newer ++ ++Index: openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties ++=================================================================== ++--- openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties +++++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties ++@@ -58,142 +58,142 @@ allfonts.sinhala=LKLUG ++ ++ serif.plain.latin-1=DejaVu Serif ++ #serif.plain.latin-1.motif=LuxiSerif-Regular ++-serif.plain.japanese-kochi=Kochi Mincho ++ serif.plain.japanese-sazanami=Sazanami Mincho ++ serif.plain.japanese-vlgothic=Sazanami Mincho +++serif.plain.japanese-ipafont=IPAMincho ++ serif.plain.korean-nanum=NanumMyeongjo ++ ++ serif.bold.latin-1=DejaVu Serif Bold ++ #serif.bold.latin-1.motif=LuxiSerif-Bold ++-serif.bold.japanese-kochi=Kochi Mincho ++ serif.bold.japanese-sazanami=Sazanami Mincho ++ serif.bold.japanese-vlgothic=Sazanami Mincho +++serif.bold.japanese-ipafont=IPAMincho ++ serif.bold.korean-nanum=NanumMyeongjo Bold ++ ++ serif.italic.latin-1=DejaVu Serif Oblique ++ #serif.italic.latin-1.motif=LuxiSerif-Oblique ++-serif.italic.japanese-kochi=Kochi Mincho ++ serif.italic.japanese-sazanami=Sazanami Mincho ++ serif.italic.japanese-vlgothic=Sazanami Mincho +++serif.italic.japanese-ipafont=IPAMincho ++ serif.italic.korean-nanum=NanumMyeongjo ++ ++ serif.bolditalic.latin-1=DejaVu Serif Bold Oblique ++ #serif.bolditalic.latin-1.motif=LuxiSerif-BoldOblique ++-serif.bolditalic.japanese-kochi=Kochi Mincho ++ serif.bolditalic.japanese-sazanami=Sazanami Mincho ++ serif.bolditalic.japanese-vlgothic=Sazanami Mincho +++serif.bolditalic.japanese-ipafont=IPAMincho ++ serif.bolditalic.korean-nanum=NanumMyeongjo Bold ++ ++ sansserif.plain.latin-1=DejaVu Sans ++ #sansserif.plain.latin-1.motif=LuxiSans-Regular ++-sansserif.plain.japanese-kochi=Kochi Gothic ++ sansserif.plain.japanese-sazanami=Sazanami Gothic ++ sansserif.plain.japanese-vlgothic=VL PGothic +++sansserif.plain.japanese-ipafont=IPAPGothic ++ sansserif.plain.korean-nanum=NanumGothic ++ ++ sansserif.bold.latin-1=DejaVu Sans Bold ++ #sansserif.bold.latin-1.motif=LuxiSans-Bold ++-sansserif.bold.japanese-kochi=Kochi Gothic ++ sansserif.bold.japanese-sazanami=Sazanami Gothic ++ sansserif.bold.japanese-vlgothic=VL PGothic +++sansserif.bold.japanese-ipafont=IPAPGothic ++ sansserif.bold.korean-nanum=NanumGothic Bold ++ ++ sansserif.italic.latin-1=DejaVu Sans Oblique ++ #sansserif.italic.latin-1.motif=LuxiSans-Oblique ++-sansserif.italic.japanese-kochi=Kochi Gothic ++ sansserif.italic.japanese-sazanami=Sazanami Gothic ++ sansserif.italic.japanese-vlgothic=VL PGothic +++sansserif.italic.japanese-ipafont=IPAPGothic ++ sansserif.italic.korean-nanum=NanumGothic ++ ++ sansserif.bolditalic.latin-1=DejaVu Sans Bold Oblique ++ #sansserif.bolditalic.latin-1.motif=LuxiSans-BoldOblique ++-sansserif.bolditalic.japanese-kochi=Kochi Gothic ++ sansserif.bolditalic.japanese-sazanami=Sazanami Gothic ++ sansserif.bolditalic.japanese-vlgothic=VL PGothic +++sansserif.bolditalic.japanese-ipafont=IPAPGothic ++ sansserif.bolditalic.korean-nanum=NanumGothic Bold ++ ++ monospaced.plain.latin-1=DejaVu Sans Mono ++ #monospaced.plain.latin-1.motif=LuxiMono-Regular ++-monospaced.plain.japanese-kochi=Kochi Gothic ++ monospaced.plain.japanese-sazanami=Sazanami Gothic ++ monospaced.plain.japanese-vlgothic=VL Gothic +++monospaced.plain.japanese-ipafont=IPAGothic ++ monospaced.plain.korean-nanum=NanumGothicCoding ++ ++ monospaced.bold.latin-1=DejaVu Sans Mono Bold ++ #monospaced.bold.latin-1.motif=LuxiMono-Bold ++-monospaced.bold.japanese-kochi=Kochi Gothic ++ monospaced.bold.japanese-sazanami=Sazanami Gothic ++ monospaced.bold.japanese-vlgothic=VL Gothic +++monospaced.bold.japanese-ipafont=IPAGothic ++ monospaced.bold.korean-nanum=NanumGothicCoding Bold ++ ++ monospaced.italic.latin-1=DejaVu Sans Mono Oblique ++ #monospaced.italic.latin-1.motif=LuxiMono-Oblique ++-monospaced.italic.japanese-kochi=Kochi Gothic ++ monospaced.italic.japanese-sazanami=Sazanami Gothic ++ monospaced.italic.japanese-vlgothic=VL Gothic +++monospaced.italic.japanese-ipafont=IPAGothic ++ monospaced.italic.korean-nanum=NanumGothicCoding ++ ++ monospaced.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique ++ #monospaced.bolditalic.latin-1.motif=LuxiMono-BoldOblique ++-monospaced.bolditalic.japanese-kochi=Kochi Gothic ++ monospaced.bolditalic.japanese-sazanami=Sazanami Gothic ++ monospaced.bolditalic.japanese-vlgothic=VL Gothic +++monospaced.bolditalic.japanese-ipafont=IPAGothic ++ monospaced.bolditalic.korean-nanum=NanumGothicCoding Bold ++ ++ dialog.plain.latin-1=DejaVu Sans ++ #dialog.plain.latin-1.motif=LuxiSans-Regular ++-dialog.plain.japanese-kochi=Kochi Gothic ++ dialog.plain.japanese-sazanami=Sazanami Gothic ++ dialog.plain.japanese-vlgothic=VL PGothic +++dialog.plain.japanese-ipafont=IPAPGothic ++ dialog.plain.korean-nanum=NanumGothic ++ ++ dialog.bold.latin-1=DejaVu Sans Bold ++ #dialog.bold.latin-1.motif=LuxiSans-Bold ++-dialog.bold.japanese-kochi=Kochi Gothic ++ dialog.bold.japanese-sazanami=Sazanami Gothic ++ dialog.bold.japanese-vlgothic=VL PGothic +++dialog.bold.japanese-ipafont=IPAPGothic ++ dialog.bold.korean-nanum=NanumGothic Bold ++ ++ dialog.italic.latin-1=DejaVu Sans Oblique ++ #dialog.italic.latin-1.motif=LuxiSans-Oblique ++-dialog.italic.japanese-kochi=Kochi Gothic ++ dialog.italic.japanese-sazanami=Sazanami Gothic ++ dialog.italic.japanese-vlgothic=VL PGothic +++dialog.italic.japanese-ipafont=IPAPGothic ++ dialog.italic.korean-nanum=NanumGothic ++ ++ dialog.bolditalic.latin-1=DejaVu Sans Bold Oblique ++ #dialog.bolditalic.latin-1.motif=LuxiSans-BoldOblique ++-dialog.bolditalic.japanese-kochi=Kochi Gothic ++ dialog.bolditalic.japanese-sazanami=Sazanami Gothic ++ dialog.bolditalic.japanese-vlgothic=VL PGothic +++dialog.bolditalic.japanese-ipafont=IPAPGothic ++ dialog.bolditalic.korean-nanum=NanumGothic Bold ++ ++ dialoginput.plain.latin-1=DejaVu Sans Mono ++ #dialoginput.plain.latin-1.motif=LuxiMono-Regular ++-dialoginput.plain.japanese-kochi=Kochi Gothic ++ dialoginput.plain.japanese-sazanami=Sazanami Gothic ++ dialoginput.plain.japanese-vlgothic=VL Gothic +++dialoginput.plain.japanese-ipafont=IPAGothic ++ dialoginput.plain.korean-nanum=NanumGothic ++ ++ dialoginput.bold.latin-1=DejaVu Sans Mono Bold ++ #dialoginput.bold.latin-1.motif=LuxiMono-Bold ++-dialoginput.bold.japanese-kochi=Kochi Gothic ++ dialoginput.bold.japanese-sazanami=Sazanami Gothic ++ dialoginput.bold.japanese-vlgothic=VL Gothic +++dialoginput.bold.japanese-ipafont=IPAGothic ++ dialoginput.bold.korean-nanum=NanumGothic Bold ++ ++ dialoginput.italic.latin-1=DejaVu Sans Mono Oblique ++ #dialoginput.italic.latin-1.motif=LuxiMono-Oblique ++-dialoginput.italic.japanese-kochi=Kochi Gothic ++ dialoginput.italic.japanese-sazanami=Sazanami Gothic ++ dialoginput.italic.japanese-vlgothic=VL Gothic +++dialoginput.italic.japanese-ipafont=IPAGothic ++ dialoginput.italic.korean-nanum=NanumGothic ++ ++ dialoginput.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique ++ #dialoginput.bolditalic.latin-1.motif=LuxiMono-BoldOblique ++-dialoginput.bolditalic.japanese-kochi=Kochi Gothic ++ dialoginput.bolditalic.japanese-sazanami=Sazanami Gothic ++ dialoginput.bolditalic.japanese-vlgothic=VL Gothic +++dialoginput.bolditalic.japanese-ipafont=IPAGothic ++ dialoginput.bolditalic.korean-nanum=NanumGothic Bold ++ ++ # Search Sequences ++@@ -202,18 +202,20 @@ sequence.allfonts=latin-1 ++ sequence.allfonts.GB18030=latin-1,wqy-microhei,umingcn,shanheisun,wqy-zenhei ++ sequence.allfonts.GB2312=latin-1,wqy-microhei,umingcn,shanheisun,wqy-zenhei ++ sequence.allfonts.GBK=latin-1,wqy-microhei,umingcn,shanheisun,wqy-zenhei ++-sequence.allfonts.x-euc-jp-linux=latin-1,japanese-vlgothic,japanese-sazanami,japanese-kochi +++sequence.allfonts.x-euc-jp-linux=latin-1,japanese-ipafont,japanese-vlgothic,japanese-sazanami ++ sequence.allfonts.EUC-KR=latin-1,korean-nanum ++ sequence.allfonts.Big5=latin-1,umingtw,shanheisun,wqy-microhei,wqy-zenhei ++ sequence.allfonts.Big5-HKSCS=latin-1,uminghk,shanheisun,wqy-microhei,wqy-zenhei ++-#sequence.fallback=uminghk,shanheisun,wqy-zenhei,japanese-vlgothic,japanese-kochi,japanese-sazanami,korean-un,bengali,gujarati,hindi,oriya,punjabi,malayalam,tamil,telugu,sinhala ++-sequence.fallback=wqy-microhei,uminghk,shanheisun,wqy-zenhei,japanese-vlgothic,japanese-sazanami,japanese-kochi,korean-nanum,bengali,gujarati,hindi,oriya,punjabi,tamil,telugu +++#sequence.fallback=uminghk,shanheisun,wqy-zenhei,japanese-ipafont,japanese-vlgothic,japanese-sazanami,korean-un,bengali,gujarati,hindi,oriya,punjabi,malayalam,tamil,telugu,sinhala +++sequence.fallback=wqy-microhei,uminghk,shanheisun,wqy-zenhei,japanese-ipafont,japanese-vlgothic,japanese-sazanami,korean-nanum,bengali,gujarati,hindi,oriya,punjabi,tamil,telugu +++ +++sequence.fallback=wqy-microhei,uminghk,shanheisun,wqy-zenhei,japanese-ipafont,japanese-vlgothic,japanese-sazanami,bengali,gujarati,hindi,oriya,punjabi,tamil,telugu ++ ++ # Exclusion Ranges ++ ++-exclusion.japanese-kochi=0390-03d6,2200-22ef,2701-27be ++ exclusion.japanese-sazanami=0390-03d6,2200-22ef,2701-27be ++ exclusion.japanese-vlgothic=0390-03d6,2200-22ef,2701-27be +++exclusion.japanese-ipafont=0390-03d6,2200-22ef,2701-27be ++ ++ # Font File Names ++ ++@@ -245,12 +247,16 @@ filename.NanumGothic=/usr/share/fonts/tr ++ filename.NanumGothic_Bold=/usr/share/fonts/truetype/nanum/NanumGothicBold.ttf ++ filename.NanumGothicCoding=/usr/share/fonts/truetype/nanum-coding/NanumGothic_Coding.ttf ++ filename.NanumGothicCoding_Bold=/usr/share/fonts/truetype/nanum-coding/NanumGothic_Coding_Bold.ttf ++-filename.Kochi_Gothic=/usr/share/fonts/truetype/kochi/kochi-gothic.ttf +++ +++#Japanese fonts ++ filename.Sazanami_Gothic=/usr/share/fonts/truetype/sazanami/sazanami-gothic.ttf ++-filename.Kochi_Mincho=/usr/share/fonts/truetype/kochi/kochi-mincho.ttf ++ filename.Sazanami_Mincho=/usr/share/fonts/truetype/sazanami/sazanami-mincho.ttf ++ filename.VL_Gothic=/usr/share/fonts/truetype/vlgothic/VL-Gothic-Regular.ttf ++ filename.VL_PGothic=/usr/share/fonts/truetype/vlgothic/VL-PGothic-Regular.ttf +++filename.IPAGothic=/usr/share/fonts/opentype/ipafont-gothic/ipag.ttf +++filename.IPAPGothic=/usr/share/fonts/opentype/ipafont-gothic/ipagp.ttf +++filename.IPAMincho=/usr/share/fonts/opentype/ipafont-mincho/ipam.ttf +++filename.IPAPMincho=/usr/share/fonts/opentype/ipafont-mincho/ipamp.ttf ++ ++ filename.Lohit_Bengali=/usr/share/fonts/truetype/ttf-bengali-fonts/lohit_bn.ttf ++ filename.Lohit_Gujarati=/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_gu.ttf ++@@ -284,7 +290,6 @@ awtfontpath.umingtw=/usr/share/fonts/tru ++ awtfontpath.shanheisun=/usr/share/fonts/truetype/arphic ++ awtfontpath.wqy-microhei=/usr/share/fonts/truetype/wqy ++ awtfontpath.wqy-zenhei=/usr/share/fonts/truetype/wqy ++-awtfontpath.japanese-kochi=/usr/share/fonts/truetype/kochi ++ awtfontpath.japanese-sazanami=/usr/share/fonts/truetype/sazanami ++ awtfontpath.japanese-vlgothic=/usr/share/fonts/truetype/vlgothic ++ awtfontpath.korean-nanum=/usr/share/fonts/truetype/nanum diff --cc debian/patches/fontconfig-korean-nanum.diff index 0000000,0000000..1ed1937 new file mode 100644 --- /dev/null +++ b/debian/patches/fontconfig-korean-nanum.diff @@@ -1,0 -1,0 +1,268 @@@ ++# used for Debian wheezy and Ubuntu 12.04 LTS or newer ++ ++Index: openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties ++=================================================================== ++--- openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties +++++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties ++@@ -61,200 +61,140 @@ serif.plain.latin-1=DejaVu Serif ++ serif.plain.japanese-kochi=Kochi Mincho ++ serif.plain.japanese-sazanami=Sazanami Mincho ++ serif.plain.japanese-vlgothic=Sazanami Mincho ++-serif.plain.korean-baekmuk=Baekmuk Batang ++-#serif.plain.korean-baekmuk.motif=Baekmuk Batang ++-serif.plain.korean-un=UnBatang ++-#serif.plain.korean-un.motif=UnBatang +++serif.plain.korean-nanum=NanumMyeongjo ++ ++ serif.bold.latin-1=DejaVu Serif Bold ++ #serif.bold.latin-1.motif=LuxiSerif-Bold ++ serif.bold.japanese-kochi=Kochi Mincho ++ serif.bold.japanese-sazanami=Sazanami Mincho ++ serif.bold.japanese-vlgothic=Sazanami Mincho ++-serif.bold.korean-baekmuk=Baekmuk Batang ++-#serif.bold.korean-baekmuk.motif=Baekmuk Batang ++-serif.bold.korean-un=UnBatang Bold ++-#serif.bold.korean-un.motif=UnBatang Bold +++serif.bold.korean-nanum=NanumMyeongjo Bold ++ ++ serif.italic.latin-1=DejaVu Serif Oblique ++ #serif.italic.latin-1.motif=LuxiSerif-Oblique ++ serif.italic.japanese-kochi=Kochi Mincho ++ serif.italic.japanese-sazanami=Sazanami Mincho ++ serif.italic.japanese-vlgothic=Sazanami Mincho ++-serif.italic.korean-baekmuk=Baekmuk Batang ++-#serif.italic.korean-baekmuk.motif=Baekmuk Batang ++-serif.italic.korean-un=UnBatang ++-#serif.italic.korean-un.motif=UnBatang +++serif.italic.korean-nanum=NanumMyeongjo ++ ++ serif.bolditalic.latin-1=DejaVu Serif Bold Oblique ++ #serif.bolditalic.latin-1.motif=LuxiSerif-BoldOblique ++ serif.bolditalic.japanese-kochi=Kochi Mincho ++ serif.bolditalic.japanese-sazanami=Sazanami Mincho ++ serif.bolditalic.japanese-vlgothic=Sazanami Mincho ++-serif.bolditalic.korean-baekmuk=Baekmuk Batang ++-#serif.bolditalic.korean-baekmuk.motif=Baekmuk Batang ++-serif.bolditalic.korean-un=UnBatang Bold ++-#serif.bolditalic.korean-un.motif=UnBatang Bold +++serif.bolditalic.korean-nanum=NanumMyeongjo Bold ++ ++ sansserif.plain.latin-1=DejaVu Sans ++ #sansserif.plain.latin-1.motif=LuxiSans-Regular ++ sansserif.plain.japanese-kochi=Kochi Gothic ++ sansserif.plain.japanese-sazanami=Sazanami Gothic ++ sansserif.plain.japanese-vlgothic=VL PGothic ++-sansserif.plain.korean-baekmuk=Baekmuk Gulim ++-#sansserif.plain.korean-baekmuk.motif=Baekmuk Gulim ++-sansserif.plain.korean-un=UnDotum ++-#sansserif.plain.korean-un.motif=UnDotum +++sansserif.plain.korean-nanum=NanumGothic ++ ++ sansserif.bold.latin-1=DejaVu Sans Bold ++ #sansserif.bold.latin-1.motif=LuxiSans-Bold ++ sansserif.bold.japanese-kochi=Kochi Gothic ++ sansserif.bold.japanese-sazanami=Sazanami Gothic ++ sansserif.bold.japanese-vlgothic=VL PGothic ++-sansserif.bold.korean-baekmuk=Baekmuk Gulim ++-#sansserif.bold.korean-baekmuk.motif=Baekmuk Gulim ++-sansserif.bold.korean-un=UnDotum Bold ++-#sansserif.bold.korean-un.motif=UnDotum Bold +++sansserif.bold.korean-nanum=NanumGothic Bold ++ ++ sansserif.italic.latin-1=DejaVu Sans Oblique ++ #sansserif.italic.latin-1.motif=LuxiSans-Oblique ++ sansserif.italic.japanese-kochi=Kochi Gothic ++ sansserif.italic.japanese-sazanami=Sazanami Gothic ++ sansserif.italic.japanese-vlgothic=VL PGothic ++-sansserif.italic.korean-baekmuk=Baekmuk Gulim ++-#sansserif.italic.korean-baekmuk.motif=Baekmuk Gulim ++-sansserif.italic.korean-un=UnDotum ++-#sansserif.italic.korean-un.motif=UnDotum +++sansserif.italic.korean-nanum=NanumGothic ++ ++ sansserif.bolditalic.latin-1=DejaVu Sans Bold Oblique ++ #sansserif.bolditalic.latin-1.motif=LuxiSans-BoldOblique ++ sansserif.bolditalic.japanese-kochi=Kochi Gothic ++ sansserif.bolditalic.japanese-sazanami=Sazanami Gothic ++ sansserif.bolditalic.japanese-vlgothic=VL PGothic ++-sansserif.bolditalic.korean-baekmuk=Baekmuk Gulim ++-#sansserif.bolditalic.korean-baekmuk.motif=Baekmuk Gulim ++-sansserif.bolditalic.korean-un=UnDotum Bold ++-#sansserif.bolditalic.korean-un.motif=UnDotum Bold +++sansserif.bolditalic.korean-nanum=NanumGothic Bold ++ ++ monospaced.plain.latin-1=DejaVu Sans Mono ++ #monospaced.plain.latin-1.motif=LuxiMono-Regular ++ monospaced.plain.japanese-kochi=Kochi Gothic ++ monospaced.plain.japanese-sazanami=Sazanami Gothic ++ monospaced.plain.japanese-vlgothic=VL Gothic ++-monospaced.plain.korean-baekmuk=Baekmuk Gulim ++-#monospaced.plain.korean-baekmuk.motif=Baekmuk Gulim ++-monospaced.plain.korean-un=UnDotum ++-#monospaced.plain.korean-un.motif=UnDotum +++monospaced.plain.korean-nanum=NanumGothicCoding ++ ++ monospaced.bold.latin-1=DejaVu Sans Mono Bold ++ #monospaced.bold.latin-1.motif=LuxiMono-Bold ++ monospaced.bold.japanese-kochi=Kochi Gothic ++ monospaced.bold.japanese-sazanami=Sazanami Gothic ++ monospaced.bold.japanese-vlgothic=VL Gothic ++-monospaced.bold.korean-baekmuk=Baekmuk Gulim ++-#monospaced.bold.korean-baekmuk.motif=Baekmuk Gulim ++-monospaced.bold.korean-un=UnDotum Bold ++-#monospaced.bold.korean-un.motif=UnDotum Bold +++monospaced.bold.korean-nanum=NanumGothicCoding Bold ++ ++ monospaced.italic.latin-1=DejaVu Sans Mono Oblique ++ #monospaced.italic.latin-1.motif=LuxiMono-Oblique ++ monospaced.italic.japanese-kochi=Kochi Gothic ++ monospaced.italic.japanese-sazanami=Sazanami Gothic ++ monospaced.italic.japanese-vlgothic=VL Gothic ++-monospaced.italic.korean-baekmuk=Baekmuk Gulim ++-#monospaced.italic.korean-baekmuk.motif=Baekmuk Gulim ++-monospaced.italic.korean-un=UnDotum ++-#monospaced.italic.korean-un.motif=UnDotum +++monospaced.italic.korean-nanum=NanumGothicCoding ++ ++ monospaced.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique ++ #monospaced.bolditalic.latin-1.motif=LuxiMono-BoldOblique ++ monospaced.bolditalic.japanese-kochi=Kochi Gothic ++ monospaced.bolditalic.japanese-sazanami=Sazanami Gothic ++ monospaced.bolditalic.japanese-vlgothic=VL Gothic ++-monospaced.bolditalic.korean-baekmuk=Baekmuk Gulim ++-#monospaced.bolditalic.korean-baekmuk.motif=Baekmuk Gulim ++-monospaced.bolditalic.korean-un=UnDotum Bold ++-#monospaced.bolditalic.korean-un.motif=UnDotum Bold +++monospaced.bolditalic.korean-nanum=NanumGothicCoding Bold ++ ++ dialog.plain.latin-1=DejaVu Sans ++ #dialog.plain.latin-1.motif=LuxiSans-Regular ++ dialog.plain.japanese-kochi=Kochi Gothic ++ dialog.plain.japanese-sazanami=Sazanami Gothic ++ dialog.plain.japanese-vlgothic=VL PGothic ++-dialog.plain.korean-baekmuk=Baekmuk Gulim ++-#dialog.plain.korean-baekmuk.motif=Baekmuk Gulim ++-dialog.plain.korean-un=UnDotum ++-#dialog.plain.korean-un.motif=UnDotum +++dialog.plain.korean-nanum=NanumGothic ++ ++ dialog.bold.latin-1=DejaVu Sans Bold ++ #dialog.bold.latin-1.motif=LuxiSans-Bold ++ dialog.bold.japanese-kochi=Kochi Gothic ++ dialog.bold.japanese-sazanami=Sazanami Gothic ++ dialog.bold.japanese-vlgothic=VL PGothic ++-dialog.bold.korean-baekmuk=Baekmuk Gulim ++-#dialog.bold.korean-baekmuk.motif=Baekmuk Gulim ++-dialog.bold.korean-un=UnDotum Bold ++-#dialog.bold.korean-un.motif=UnDotum Bold +++dialog.bold.korean-nanum=NanumGothic Bold ++ ++ dialog.italic.latin-1=DejaVu Sans Oblique ++ #dialog.italic.latin-1.motif=LuxiSans-Oblique ++ dialog.italic.japanese-kochi=Kochi Gothic ++ dialog.italic.japanese-sazanami=Sazanami Gothic ++ dialog.italic.japanese-vlgothic=VL PGothic ++-dialog.italic.korean-baekmuk=Baekmuk Gulim ++-#dialog.italic.korean-baekmuk.motif=Baekmuk Gulim ++-dialog.italic.korean-un=UnDotum ++-#dialog.italic.korean-un.motif=UnDotum +++dialog.italic.korean-nanum=NanumGothic ++ ++ dialog.bolditalic.latin-1=DejaVu Sans Bold Oblique ++ #dialog.bolditalic.latin-1.motif=LuxiSans-BoldOblique ++ dialog.bolditalic.japanese-kochi=Kochi Gothic ++ dialog.bolditalic.japanese-sazanami=Sazanami Gothic ++ dialog.bolditalic.japanese-vlgothic=VL PGothic ++-dialog.bolditalic.korean-baekmuk=Baekmuk Gulim ++-#dialog.bolditalic.korean-baekmuk.motif=Baekmuk Gulim ++-dialog.bolditalic.korean-un=UnDotum Bold ++-#dialog.bolditalic.korean-un.motif=UnDotum Bold +++dialog.bolditalic.korean-nanum=NanumGothic Bold ++ ++ dialoginput.plain.latin-1=DejaVu Sans Mono ++ #dialoginput.plain.latin-1.motif=LuxiMono-Regular ++ dialoginput.plain.japanese-kochi=Kochi Gothic ++ dialoginput.plain.japanese-sazanami=Sazanami Gothic ++ dialoginput.plain.japanese-vlgothic=VL Gothic ++-dialoginput.plain.korean-baekmuk=Baekmuk Gulim ++-#dialoginput.plain.korean-baekmuk.motif=Baekmuk Gulim ++-dialoginput.plain.korean-un=UnDotum ++-#dialoginput.plain.korean-un.motif=UnDotum +++dialoginput.plain.korean-nanum=NanumGothic ++ ++ dialoginput.bold.latin-1=DejaVu Sans Mono Bold ++ #dialoginput.bold.latin-1.motif=LuxiMono-Bold ++ dialoginput.bold.japanese-kochi=Kochi Gothic ++ dialoginput.bold.japanese-sazanami=Sazanami Gothic ++ dialoginput.bold.japanese-vlgothic=VL Gothic ++-dialoginput.bold.korean-baekmuk=Baekmuk Gulim ++-#dialoginput.bold.korean-baekmuk.motif=Baekmuk Gulim ++-dialoginput.bold.korean-un=UnDotum Bold ++-#dialoginput.bold.korean-un.motif=UnDotum Bold +++dialoginput.bold.korean-nanum=NanumGothic Bold ++ ++ dialoginput.italic.latin-1=DejaVu Sans Mono Oblique ++ #dialoginput.italic.latin-1.motif=LuxiMono-Oblique ++ dialoginput.italic.japanese-kochi=Kochi Gothic ++ dialoginput.italic.japanese-sazanami=Sazanami Gothic ++ dialoginput.italic.japanese-vlgothic=VL Gothic ++-dialoginput.italic.korean-baekmuk=Baekmuk Gulim ++-#dialoginput.italic.korean-baekmuk.motif=Baekmuk Gulim ++-dialoginput.italic.korean-un=UnDotum ++-#dialoginput.italic.korean-un.motif=UnDotum +++dialoginput.italic.korean-nanum=NanumGothic ++ ++ dialoginput.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique ++ #dialoginput.bolditalic.latin-1.motif=LuxiMono-BoldOblique ++ dialoginput.bolditalic.japanese-kochi=Kochi Gothic ++ dialoginput.bolditalic.japanese-sazanami=Sazanami Gothic ++ dialoginput.bolditalic.japanese-vlgothic=VL Gothic ++-dialoginput.bolditalic.korean-baekmuk=Baekmuk Gulim ++-#dialoginput.bolditalic.korean-baekmuk.motif=Baekmuk Gulim ++-dialoginput.bolditalic.korean-un=UnDotum Bold ++-#dialoginput.bolditalic.korean-un.motif=UnDotum Bold +++dialoginput.bolditalic.korean-nanum=NanumGothic Bold ++ ++ # Search Sequences ++ ++@@ -263,11 +203,11 @@ sequence.allfonts.GB18030=latin-1,wqy-mi ++ sequence.allfonts.GB2312=latin-1,wqy-microhei,umingcn,shanheisun,wqy-zenhei ++ sequence.allfonts.GBK=latin-1,wqy-microhei,umingcn,shanheisun,wqy-zenhei ++ sequence.allfonts.x-euc-jp-linux=latin-1,japanese-vlgothic,japanese-sazanami,japanese-kochi ++-sequence.allfonts.EUC-KR=latin-1,korean-un,korean-baekmuk +++sequence.allfonts.EUC-KR=latin-1,korean-nanum ++ sequence.allfonts.Big5=latin-1,umingtw,shanheisun,wqy-microhei,wqy-zenhei ++ sequence.allfonts.Big5-HKSCS=latin-1,uminghk,shanheisun,wqy-microhei,wqy-zenhei ++-#sequence.fallback=uminghk,shanheisun,wqy-zenhei,japanese-vlgothic,japanese-kochi,japanese-sazanami,korean-un,korean-baekmuk,bengali,gujarati,hindi,oriya,punjabi,malayalam,tamil,telugu,sinhala ++-sequence.fallback=wqy-microhei,uminghk,shanheisun,wqy-zenhei,japanese-vlgothic,japanese-sazanami,japanese-kochi,korean-un,korean-baekmuk,bengali,gujarati,hindi,oriya,punjabi,tamil,telugu +++#sequence.fallback=uminghk,shanheisun,wqy-zenhei,japanese-vlgothic,japanese-kochi,japanese-sazanami,korean-un,bengali,gujarati,hindi,oriya,punjabi,malayalam,tamil,telugu,sinhala +++sequence.fallback=wqy-microhei,uminghk,shanheisun,wqy-zenhei,japanese-vlgothic,japanese-sazanami,japanese-kochi,korean-nanum,bengali,gujarati,hindi,oriya,punjabi,tamil,telugu ++ ++ # Exclusion Ranges ++ ++@@ -299,12 +239,12 @@ filename.AR_PL_ShanHeiSun_Uni=/usr/share ++ ++ filename.WenQuanYi_Micro_Hei=/usr/share/fonts/truetype/wqy/wqy-microhei.ttc ++ filename.WenQuanYi_Zen_Hei=/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc ++-filename.Baekmuk_Batang=/usr/share/fonts/truetype/baekmuk/batang.ttf ++-filename.UnBatang=/usr/share/fonts/truetype/unfonts/UnBatang.ttf ++-filename.UnBatang_Bold=/usr/share/fonts/truetype/unfonts/UnBatangBold.ttf ++-filename.Baekmuk_Gulim=/usr/share/fonts/truetype/baekmuk/gulim.ttf ++-filename.UnDotum=/usr/share/fonts/truetype/unfonts/UnDotum.ttf ++-filename.UnDotum_Bold=/usr/share/fonts/truetype/unfonts/UnDotumBold.ttf +++filename.NanumMyeongjo=/usr/share/fonts/truetype/nanum/NanumMyeongjo.ttf +++filename.NanumMyeongjo_Bold=/usr/share/fonts/truetype/nanum/NanumMyeongjoBold.ttf +++filename.NanumGothic=/usr/share/fonts/truetype/nanum/NanumGothic.ttf +++filename.NanumGothic_Bold=/usr/share/fonts/truetype/nanum/NanumGothicBold.ttf +++filename.NanumGothicCoding=/usr/share/fonts/truetype/nanum-coding/NanumGothic_Coding.ttf +++filename.NanumGothicCoding_Bold=/usr/share/fonts/truetype/nanum-coding/NanumGothic_Coding_Bold.ttf ++ filename.Kochi_Gothic=/usr/share/fonts/truetype/kochi/kochi-gothic.ttf ++ filename.Sazanami_Gothic=/usr/share/fonts/truetype/sazanami/sazanami-gothic.ttf ++ filename.Kochi_Mincho=/usr/share/fonts/truetype/kochi/kochi-mincho.ttf ++@@ -347,5 +287,4 @@ awtfontpath.wqy-zenhei=/usr/share/fonts/ ++ awtfontpath.japanese-kochi=/usr/share/fonts/truetype/kochi ++ awtfontpath.japanese-sazanami=/usr/share/fonts/truetype/sazanami ++ awtfontpath.japanese-vlgothic=/usr/share/fonts/truetype/vlgothic ++-awtfontpath.korean-baekmuk=/usr/share/fonts/truetype/baekmuk ++-awtfontpath.korean-un=/usr/share/fonts/truetype/unfonts +++awtfontpath.korean-nanum=/usr/share/fonts/truetype/nanum diff --cc debian/patches/fontconfig-wqy-microhei.patch index 0000000,0000000..e7b05e9 new file mode 100644 --- /dev/null +++ b/debian/patches/fontconfig-wqy-microhei.patch @@@ -1,0 -1,0 +1,55 @@@ ++Index: openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties ++=================================================================== ++--- openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties +++++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties ++@@ -38,6 +38,7 @@ allfonts.uminghk=AR PL UMing HK ++ #allfonts.uminghk.motif=AR PL UMing HK ++ allfonts.umingtw=AR PL UMing TW ++ #allfonts.umingtw.motif=AR PL UMing TW +++allfonts.wqy-microhei=WenQuanYi Micro Hei ++ allfonts.wqy-zenhei=WenQuanYi Zen Hei ++ #allfonts.wqy-zenhei.motif=WenQuanYi Zen Hei ++ allfonts.shanheisun=AR PL ShanHeiSun Uni ++@@ -258,15 +259,15 @@ dialoginput.bolditalic.korean-un=UnDotum ++ # Search Sequences ++ ++ sequence.allfonts=latin-1 ++-sequence.allfonts.GB18030=latin-1,umingcn,shanheisun,wqy-zenhei ++-sequence.allfonts.GB2312=latin-1,umingcn,shanheisun,wqy-zenhei ++-sequence.allfonts.GBK=latin-1,umingcn,shanheisun,wqy-zenhei +++sequence.allfonts.GB18030=latin-1,wqy-microhei,umingcn,shanheisun,wqy-zenhei +++sequence.allfonts.GB2312=latin-1,wqy-microhei,umingcn,shanheisun,wqy-zenhei +++sequence.allfonts.GBK=latin-1,wqy-microhei,umingcn,shanheisun,wqy-zenhei ++ sequence.allfonts.x-euc-jp-linux=latin-1,japanese-vlgothic,japanese-sazanami,japanese-kochi ++ sequence.allfonts.EUC-KR=latin-1,korean-un,korean-baekmuk ++-sequence.allfonts.Big5=latin-1,umingtw,shanheisun,wqy-zenhei ++-sequence.allfonts.Big5-HKSCS=latin-1,uminghk,shanheisun,wqy-zenhei +++sequence.allfonts.Big5=latin-1,umingtw,shanheisun,wqy-microhei,wqy-zenhei +++sequence.allfonts.Big5-HKSCS=latin-1,uminghk,shanheisun,wqy-microhei,wqy-zenhei ++ #sequence.fallback=uminghk,shanheisun,wqy-zenhei,japanese-vlgothic,japanese-kochi,japanese-sazanami,korean-un,korean-baekmuk,bengali,gujarati,hindi,oriya,punjabi,malayalam,tamil,telugu,sinhala ++-sequence.fallback=uminghk,shanheisun,wqy-zenhei,japanese-vlgothic,japanese-sazanami,japanese-kochi,korean-un,korean-baekmuk,bengali,gujarati,hindi,oriya,punjabi,tamil,telugu +++sequence.fallback=wqy-microhei,uminghk,shanheisun,wqy-zenhei,japanese-vlgothic,japanese-sazanami,japanese-kochi,korean-un,korean-baekmuk,bengali,gujarati,hindi,oriya,punjabi,tamil,telugu ++ ++ # Exclusion Ranges ++ ++@@ -294,9 +295,10 @@ filename.DejaVu_Serif_Bold_Oblique=/usr/ ++ filename.AR_PL_UMing_CN=/usr/share/fonts/truetype/arphic/uming.ttc ++ filename.AR_PL_UMing_HK=/usr/share/fonts/truetype/arphic/uming.ttc ++ filename.AR_PL_UMing_TW=/usr/share/fonts/truetype/arphic/uming.ttc ++-filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/truetype/arphic/uming.ttf +++filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/truetype/arphic/uming.ttc ++ ++-filename.WenQuanYi_Zen_Hei=/usr/share/fonts/truetype/wqy/wqy-zenhei.ttf +++filename.WenQuanYi_Micro_Hei=/usr/share/fonts/truetype/wqy/wqy-microhei.ttc +++filename.WenQuanYi_Zen_Hei=/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc ++ filename.Baekmuk_Batang=/usr/share/fonts/truetype/baekmuk/batang.ttf ++ filename.UnBatang=/usr/share/fonts/truetype/unfonts/UnBatang.ttf ++ filename.UnBatang_Bold=/usr/share/fonts/truetype/unfonts/UnBatangBold.ttf ++@@ -340,6 +342,7 @@ awtfontpath.umingcn=/usr/share/fonts/tru ++ awtfontpath.uminghk=/usr/share/fonts/truetype/arphic ++ awtfontpath.umingtw=/usr/share/fonts/truetype/arphic ++ awtfontpath.shanheisun=/usr/share/fonts/truetype/arphic +++awtfontpath.wqy-microhei=/usr/share/fonts/truetype/wqy ++ awtfontpath.wqy-zenhei=/usr/share/fonts/truetype/wqy ++ awtfontpath.japanese-kochi=/usr/share/fonts/truetype/kochi ++ awtfontpath.japanese-sazanami=/usr/share/fonts/truetype/sazanami diff --cc debian/patches/hotspot-S8207151-fix-bad-klassoop.patch index 0000000,0000000..b86afbe new file mode 100644 --- /dev/null +++ b/debian/patches/hotspot-S8207151-fix-bad-klassoop.patch @@@ -1,0 -1,0 +1,11 @@@ ++--- openjdk/hotspot/src/share/vm/prims/jvm.cpp 2018-07-11 22:26:32.837214290 -0300 +++++ openjdk/hotspot/src/share/vm/prims/jvm.cpp 2018-07-11 22:26:32.757213896 -0300 ++@@ -915,6 +915,8 @@ ++ h_prot, true, thread); ++ ++ if (result != NULL) { +++ from_class_oop = JNIHandles::resolve(from); +++ from_class = java_lang_Class::as_klassOop(from_class_oop); ++ oop mirror = JNIHandles::resolve_non_null(result); ++ klassOop to_class = java_lang_Class::as_klassOop(mirror); ++ ClassLoaderDependencies::record_dependency(from_class, to_class, CHECK_NULL); diff --cc debian/patches/hotspot-aarch64-S8145438-fix-field-too-big-for-insn.patch index 0000000,0000000..9bf2d87 new file mode 100644 --- /dev/null +++ b/debian/patches/hotspot-aarch64-S8145438-fix-field-too-big-for-insn.patch @@@ -1,0 -1,0 +1,272 @@@ ++ ++# HG changeset patch ++# User aph ++# Date 1503422240 -3600 ++# Node ID 46d12689c87023b51d55e45434d34c55dc1399f8 ++# Parent 541e6b9eb05f01e8e792e1f338c325f44fc8da11 ++8145438, PR3443, RH1482244: Guarantee failures since 8144028: Use AArch64 bit-test instructions in C2 ++Summary: Implement short and long versions of bit test instructions. ++Reviewed-by: kvn ++ ++diff -r 541e6b9eb05f -r 46d12689c870 src/cpu/aarch64/vm/aarch64.ad ++--- openjdk/hotspot/src/cpu/aarch64/vm/aarch64.ad Tue Jul 04 21:23:37 2017 +0100 +++++ openjdk/hotspot/src/cpu/aarch64/vm/aarch64.ad Tue Aug 22 18:17:20 2017 +0100 ++@@ -1540,10 +1540,14 @@ ++ return 0; ++ } ++ ++-bool Matcher::is_short_branch_offset(int rule, int br_size, int offset) ++-{ ++- Unimplemented(); ++- return false; +++// Is this branch offset short enough that a short branch can be used? +++// +++// NOTE: If the platform does not provide any short branch variants, then +++// this method should return false for offset 0. +++bool Matcher::is_short_branch_offset(int rule, int br_size, int offset) { +++ // The passed offset is relative to address of the branch. +++ +++ return (-32768 <= offset && offset < 32768); ++ } ++ ++ const bool Matcher::isSimpleConstant64(jlong value) { ++@@ -11153,7 +11157,8 @@ ++ ++ // Test bit and Branch ++ ++-instruct cmpL_branch_sign(cmpOp cmp, iRegL op1, immL0 op2, label labl, rFlagsReg cr) %{ +++// Patterns for short (< 32KiB) variants +++instruct cmpL_branch_sign(cmpOp cmp, iRegL op1, immL0 op2, label labl) %{ ++ match(If cmp (CmpL op1 op2)); ++ predicate(n->in(1)->as_Bool()->_test._test == BoolTest::lt ++ || n->in(1)->as_Bool()->_test._test == BoolTest::ge); ++@@ -11163,16 +11168,15 @@ ++ format %{ "cb$cmp $op1, $labl # long" %} ++ ins_encode %{ ++ Label* L = $labl$$label; ++- Assembler::Condition cond = (Assembler::Condition)$cmp$$cmpcode; ++- if (cond == Assembler::LT) ++- __ tbnz($op1$$Register, 63, *L); ++- else ++- __ tbz($op1$$Register, 63, *L); +++ Assembler::Condition cond = +++ ((Assembler::Condition)$cmp$$cmpcode == Assembler::LT) ? Assembler::NE : Assembler::EQ; +++ __ tbr(cond, $op1$$Register, 63, *L); ++ %} ++ ins_pipe(pipe_cmp_branch); ++-%} ++- ++-instruct cmpI_branch_sign(cmpOp cmp, iRegIorL2I op1, immI0 op2, label labl, rFlagsReg cr) %{ +++ ins_short_branch(1); +++%} +++ +++instruct cmpI_branch_sign(cmpOp cmp, iRegIorL2I op1, immI0 op2, label labl) %{ ++ match(If cmp (CmpI op1 op2)); ++ predicate(n->in(1)->as_Bool()->_test._test == BoolTest::lt ++ || n->in(1)->as_Bool()->_test._test == BoolTest::ge); ++@@ -11182,16 +11186,15 @@ ++ format %{ "cb$cmp $op1, $labl # int" %} ++ ins_encode %{ ++ Label* L = $labl$$label; ++- Assembler::Condition cond = (Assembler::Condition)$cmp$$cmpcode; ++- if (cond == Assembler::LT) ++- __ tbnz($op1$$Register, 31, *L); ++- else ++- __ tbz($op1$$Register, 31, *L); +++ Assembler::Condition cond = +++ ((Assembler::Condition)$cmp$$cmpcode == Assembler::LT) ? Assembler::NE : Assembler::EQ; +++ __ tbr(cond, $op1$$Register, 31, *L); ++ %} ++ ins_pipe(pipe_cmp_branch); ++-%} ++- ++-instruct cmpL_branch_bit(cmpOp cmp, iRegL op1, immL op2, immL0 op3, label labl, rFlagsReg cr) %{ +++ ins_short_branch(1); +++%} +++ +++instruct cmpL_branch_bit(cmpOp cmp, iRegL op1, immL op2, immL0 op3, label labl) %{ ++ match(If cmp (CmpL (AndL op1 op2) op3)); ++ predicate((n->in(1)->as_Bool()->_test._test == BoolTest::ne ++ || n->in(1)->as_Bool()->_test._test == BoolTest::eq) ++@@ -11204,15 +11207,13 @@ ++ Label* L = $labl$$label; ++ Assembler::Condition cond = (Assembler::Condition)$cmp$$cmpcode; ++ int bit = exact_log2($op2$$constant); ++- if (cond == Assembler::EQ) ++- __ tbz($op1$$Register, bit, *L); ++- else ++- __ tbnz($op1$$Register, bit, *L); +++ __ tbr(cond, $op1$$Register, bit, *L); ++ %} ++ ins_pipe(pipe_cmp_branch); ++-%} ++- ++-instruct cmpI_branch_bit(cmpOp cmp, iRegIorL2I op1, immI op2, immI0 op3, label labl, rFlagsReg cr) %{ +++ ins_short_branch(1); +++%} +++ +++instruct cmpI_branch_bit(cmpOp cmp, iRegIorL2I op1, immI op2, immI0 op3, label labl) %{ ++ match(If cmp (CmpI (AndI op1 op2) op3)); ++ predicate((n->in(1)->as_Bool()->_test._test == BoolTest::ne ++ || n->in(1)->as_Bool()->_test._test == BoolTest::eq) ++@@ -11225,10 +11226,79 @@ ++ Label* L = $labl$$label; ++ Assembler::Condition cond = (Assembler::Condition)$cmp$$cmpcode; ++ int bit = exact_log2($op2$$constant); ++- if (cond == Assembler::EQ) ++- __ tbz($op1$$Register, bit, *L); ++- else ++- __ tbnz($op1$$Register, bit, *L); +++ __ tbr(cond, $op1$$Register, bit, *L); +++ %} +++ ins_pipe(pipe_cmp_branch); +++ ins_short_branch(1); +++%} +++ +++// And far variants +++instruct far_cmpL_branch_sign(cmpOp cmp, iRegL op1, immL0 op2, label labl) %{ +++ match(If cmp (CmpL op1 op2)); +++ predicate(n->in(1)->as_Bool()->_test._test == BoolTest::lt +++ || n->in(1)->as_Bool()->_test._test == BoolTest::ge); +++ effect(USE labl); +++ +++ ins_cost(BRANCH_COST); +++ format %{ "cb$cmp $op1, $labl # long" %} +++ ins_encode %{ +++ Label* L = $labl$$label; +++ Assembler::Condition cond = +++ ((Assembler::Condition)$cmp$$cmpcode == Assembler::LT) ? Assembler::NE : Assembler::EQ; +++ __ tbr(cond, $op1$$Register, 63, *L, /*far*/true); +++ %} +++ ins_pipe(pipe_cmp_branch); +++%} +++ +++instruct far_cmpI_branch_sign(cmpOp cmp, iRegIorL2I op1, immI0 op2, label labl) %{ +++ match(If cmp (CmpI op1 op2)); +++ predicate(n->in(1)->as_Bool()->_test._test == BoolTest::lt +++ || n->in(1)->as_Bool()->_test._test == BoolTest::ge); +++ effect(USE labl); +++ +++ ins_cost(BRANCH_COST); +++ format %{ "cb$cmp $op1, $labl # int" %} +++ ins_encode %{ +++ Label* L = $labl$$label; +++ Assembler::Condition cond = +++ ((Assembler::Condition)$cmp$$cmpcode == Assembler::LT) ? Assembler::NE : Assembler::EQ; +++ __ tbr(cond, $op1$$Register, 31, *L, /*far*/true); +++ %} +++ ins_pipe(pipe_cmp_branch); +++%} +++ +++instruct far_cmpL_branch_bit(cmpOp cmp, iRegL op1, immL op2, immL0 op3, label labl) %{ +++ match(If cmp (CmpL (AndL op1 op2) op3)); +++ predicate((n->in(1)->as_Bool()->_test._test == BoolTest::ne +++ || n->in(1)->as_Bool()->_test._test == BoolTest::eq) +++ && is_power_of_2(n->in(2)->in(1)->in(2)->get_long())); +++ effect(USE labl); +++ +++ ins_cost(BRANCH_COST); +++ format %{ "tb$cmp $op1, $op2, $labl" %} +++ ins_encode %{ +++ Label* L = $labl$$label; +++ Assembler::Condition cond = (Assembler::Condition)$cmp$$cmpcode; +++ int bit = exact_log2($op2$$constant); +++ __ tbr(cond, $op1$$Register, bit, *L, /*far*/true); +++ %} +++ ins_pipe(pipe_cmp_branch); +++%} +++ +++instruct far_cmpI_branch_bit(cmpOp cmp, iRegIorL2I op1, immI op2, immI0 op3, label labl) %{ +++ match(If cmp (CmpI (AndI op1 op2) op3)); +++ predicate((n->in(1)->as_Bool()->_test._test == BoolTest::ne +++ || n->in(1)->as_Bool()->_test._test == BoolTest::eq) +++ && is_power_of_2(n->in(2)->in(1)->in(2)->get_int())); +++ effect(USE labl); +++ +++ ins_cost(BRANCH_COST); +++ format %{ "tb$cmp $op1, $op2, $labl" %} +++ ins_encode %{ +++ Label* L = $labl$$label; +++ Assembler::Condition cond = (Assembler::Condition)$cmp$$cmpcode; +++ int bit = exact_log2($op2$$constant); +++ __ tbr(cond, $op1$$Register, bit, *L, /*far*/true); ++ %} ++ ins_pipe(pipe_cmp_branch); ++ %} ++diff -r 541e6b9eb05f -r 46d12689c870 src/cpu/aarch64/vm/assembler_aarch64.hpp ++--- openjdk/hotspot/src/cpu/aarch64/vm/assembler_aarch64.hpp Tue Jul 04 21:23:37 2017 +0100 +++++ openjdk/hotspot/src/cpu/aarch64/vm/assembler_aarch64.hpp Tue Aug 22 18:17:20 2017 +0100 ++@@ -2723,6 +2723,32 @@ ++ ++ void movptr(Register r, uintptr_t imm64); ++ +++public: +++ +++ // Generalized Test Bit And Branch, including a "far" variety which +++ // spans more than 32KiB. +++ void tbr(Condition cond, Register Rt, int bitpos, Label &dest, bool far = false) { +++ assert(cond == EQ || cond == NE, "must be"); +++ +++ if (far) +++ cond = ~cond; +++ +++ void (Assembler::* branch)(Register Rt, int bitpos, Label &L); +++ if (cond == Assembler::EQ) +++ branch = &Assembler::tbz; +++ else +++ branch = &Assembler::tbnz; +++ +++ if (far) { +++ Label L; +++ (this->*branch)(Rt, bitpos, L); +++ b(dest); +++ bind(L); +++ } else { +++ (this->*branch)(Rt, bitpos, dest); +++ } +++ } +++ ++ // macro instructions for accessing and updating floating point ++ // status register ++ // ++diff -r 541e6b9eb05f -r 46d12689c870 src/cpu/aarch64/vm/c1_MacroAssembler_aarch64.hpp ++--- openjdk/hotspot/src/cpu/aarch64/vm/c1_MacroAssembler_aarch64.hpp Tue Jul 04 21:23:37 2017 +0100 +++++ openjdk/hotspot/src/cpu/aarch64/vm/c1_MacroAssembler_aarch64.hpp Tue Aug 22 18:17:20 2017 +0100 ++@@ -27,6 +27,8 @@ ++ #ifndef CPU_AARCH64_VM_C1_MACROASSEMBLER_AARCH64_HPP ++ #define CPU_AARCH64_VM_C1_MACROASSEMBLER_AARCH64_HPP ++ +++using MacroAssembler::null_check; +++ ++ // C1_MacroAssembler contains high-level macros for C1 ++ ++ private: ++diff -r 541e6b9eb05f -r 46d12689c870 src/cpu/aarch64/vm/interp_masm_aarch64.cpp ++--- openjdk/hotspot/src/cpu/aarch64/vm/interp_masm_aarch64.cpp Tue Jul 04 21:23:37 2017 +0100 +++++ openjdk/hotspot/src/cpu/aarch64/vm/interp_masm_aarch64.cpp Tue Aug 22 18:17:20 2017 +0100 ++@@ -1370,9 +1370,8 @@ ++ // the code to check if the event should be sent. ++ if (JvmtiExport::can_post_interpreter_events()) { ++ Label L; ++- ldr(r3, Address(rthread, JavaThread::interp_only_mode_offset())); ++- tst(r3, ~0); ++- br(Assembler::EQ, L); +++ ldrw(r3, Address(rthread, JavaThread::interp_only_mode_offset())); +++ cbzw(r3, L); ++ call_VM(noreg, CAST_FROM_FN_PTR(address, ++ InterpreterRuntime::post_method_entry)); ++ bind(L); ++diff -r 541e6b9eb05f -r 46d12689c870 src/share/vm/adlc/formssel.cpp ++--- openjdk/hotspot/src/share/vm/adlc/formssel.cpp Tue Jul 04 21:23:37 2017 +0100 +++++ openjdk/hotspot/src/share/vm/adlc/formssel.cpp Tue Aug 22 18:17:20 2017 +0100 ++@@ -1249,7 +1249,8 @@ ++ !is_short_branch() && // Don't match another short branch variant ++ reduce_result() != NULL && ++ strcmp(reduce_result(), short_branch->reduce_result()) == 0 && ++- _matrule->equivalent(AD.globalNames(), short_branch->_matrule)) { +++ _matrule->equivalent(AD.globalNames(), short_branch->_matrule) && +++ equivalent_predicates(this, short_branch)) { ++ // The instructions are equivalent. ++ ++ // Now verify that both instructions have the same parameters and ++ diff --cc debian/patches/hotspot-aarch64-S8150652-unused-template.diff index 0000000,0000000..6c95c24 new file mode 100644 --- /dev/null +++ b/debian/patches/hotspot-aarch64-S8150652-unused-template.diff @@@ -1,0 -1,0 +1,24 @@@ ++ ++# HG changeset patch ++# User aph ++# Date 1456412384 0 ++# Node ID 54520c7add1015fe231044c9913c1c52d58755ab ++# Parent d93a2aced128f90edb773eca33cc374deb18078d ++8150652: Remove unused code in AArch64 back end ++Reviewed-by: kvn ++ ++Index: openjdk/hotspot/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp ++=================================================================== ++--- openjdk/hotspot/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp +++++ openjdk/hotspot/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp ++@@ -194,10 +194,6 @@ static int reg2offset_out(VMReg r) { ++ return (r->reg2stack() + SharedRuntime::out_preserve_stack_slots()) * VMRegImpl::stack_slot_size; ++ } ++ ++-template static const T& min (const T& a, const T& b) { ++- return (a > b) ? b : a; ++-} ++- ++ // --------------------------------------------------------------------------- ++ // Read the array of BasicTypes from a signature, and compute where the ++ // arguments should go. Values in the VMRegPair regs array refer to 4-byte diff --cc debian/patches/hotspot-libpath-aarch64.diff index 0000000,0000000..8db8ef5 new file mode 100644 --- /dev/null +++ b/debian/patches/hotspot-libpath-aarch64.diff @@@ -1,0 -1,0 +1,31 @@@ ++--- openjdk/hotspot/make/linux/makefiles/vm.make +++++ openjdk/hotspot/make/linux/makefiles/vm.make ++@@ -123,6 +123,12 @@ ifeq ($(INCLUDE_TRACE), 1) ++ CFLAGS += -DINCLUDE_TRACE=1 ++ endif ++ +++DEB_MULTIARCH := $(shell dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null || true) +++ifneq (,$(DEB_MULTIARCH)) +++CPPFLAGS += -DDEB_MULTIARCH="\"$(DEB_MULTIARCH)\"" +++CXXFLAGS += -DDEB_MULTIARCH="\"$(DEB_MULTIARCH)\"" +++endif +++ ++ ifdef DISTRIBUTION_ID ++ CXXFLAGS += -DDISTRIBUTION_ID="\"$(DISTRIBUTION_ID)\"" ++ endif ++--- openjdk/hotspot/src/os/linux/vm/os_linux.cpp +++++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp ++@@ -405,10 +405,10 @@ void os::init_system_properties_values() ++ * ... ++ * 7: The default directories, normally /lib and /usr/lib. ++ */ ++-#if defined(AMD64) || defined(_LP64) && (defined(SPARC) || defined(PPC) || defined(S390) || defined(AARCH64)) || defined(BUILTIN_SIM) ++-#define DEFAULT_LIBPATH "/usr/lib64:/lib64:/lib:/usr/lib" +++#ifdef DEB_MULTIARCH +++#define DEFAULT_LIBPATH "/usr/lib/" DEB_MULTIARCH "/jni" ":/lib/" DEB_MULTIARCH ":/usr/lib/" DEB_MULTIARCH ":/usr/lib/jni:/lib:/usr/lib" ++ #else ++-#define DEFAULT_LIBPATH "/lib:/usr/lib" +++#define DEFAULT_LIBPATH "/usr/lib/jni:/lib:/usr/lib" ++ #endif ++ ++ #define EXTENSIONS_DIR "/lib/ext" diff --cc debian/patches/hotspot-libpath-default.diff index 0000000,0000000..b8cefa2 new file mode 100644 --- /dev/null +++ b/debian/patches/hotspot-libpath-default.diff @@@ -1,0 -1,0 +1,35 @@@ ++Index: openjdk/hotspot/make/linux/makefiles/vm.make ++=================================================================== ++--- openjdk/hotspot/make/linux/makefiles/vm.make +++++ openjdk/hotspot/make/linux/makefiles/vm.make ++@@ -123,6 +123,12 @@ ifeq ($(INCLUDE_TRACE), 1) ++ CFLAGS += -DINCLUDE_TRACE=1 ++ endif ++ +++DEB_MULTIARCH := $(shell dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null || true) +++ifneq (,$(DEB_MULTIARCH)) +++CPPFLAGS += -DDEB_MULTIARCH="\"$(DEB_MULTIARCH)\"" +++CXXFLAGS += -DDEB_MULTIARCH="\"$(DEB_MULTIARCH)\"" +++endif +++ ++ ifdef DISTRIBUTION_ID ++ CXXFLAGS += -DDISTRIBUTION_ID="\"$(DISTRIBUTION_ID)\"" ++ endif ++Index: openjdk/hotspot/src/os/linux/vm/os_linux.cpp ++=================================================================== ++--- openjdk/hotspot/src/os/linux/vm/os_linux.cpp +++++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp ++@@ -403,10 +403,10 @@ void os::init_system_properties_values() ++ * ... ++ * 7: The default directories, normally /lib and /usr/lib. ++ */ ++-#if defined(AMD64) || defined(_LP64) && (defined(SPARC) || defined(PPC) || defined(S390) || defined(AARCH64)) || defined(BUILTIN_SIM) ++-#define DEFAULT_LIBPATH "/usr/lib64:/lib64:/lib:/usr/lib" +++#ifdef DEB_MULTIARCH +++#define DEFAULT_LIBPATH "/usr/lib/" DEB_MULTIARCH "/jni" ":/lib/" DEB_MULTIARCH ":/usr/lib/" DEB_MULTIARCH ":/usr/lib/jni:/lib:/usr/lib" ++ #else ++-#define DEFAULT_LIBPATH "/lib:/usr/lib" +++#define DEFAULT_LIBPATH "/usr/lib/jni:/lib:/usr/lib" ++ #endif ++ ++ #define EXTENSIONS_DIR "/lib/ext" diff --cc debian/patches/hotspot-mips-align.diff index 0000000,0000000..9b61b6e new file mode 100644 --- /dev/null +++ b/debian/patches/hotspot-mips-align.diff @@@ -1,0 -1,0 +1,13 @@@ ++Index: openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp ++=================================================================== ++--- openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp +++++ openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp ++@@ -368,7 +368,7 @@ int CppInterpreter::native_entry(methodO ++ ThreadStateTransition::transition_from_java(thread, _thread_in_native); ++ ++ // Make the call ++- intptr_t result[4 - LogBytesPerWord]; +++ intptr_t result[4 - LogBytesPerWord] __attribute__((__aligned__(__alignof__(double)))); ++ ffi_call(handler->cif(), (void (*)()) function, result, arguments); ++ ++ // Change the thread state back to _thread_in_Java. diff --cc debian/patches/hotspot-no-march-i586.diff index 0000000,0000000..25fdd05 new file mode 100644 --- /dev/null +++ b/debian/patches/hotspot-no-march-i586.diff @@@ -1,0 -1,0 +1,15 @@@ ++# Don't explicitly build with -march=i586 on i386 architectures. ++ ++Index: openjdk/hotspot/make/linux/makefiles/gcc.make ++=================================================================== ++--- openjdk/hotspot/make/linux/makefiles/gcc.make +++++ openjdk/hotspot/make/linux/makefiles/gcc.make ++@@ -102,7 +102,7 @@ CFLAGS += -fno-delete-null-pointer-check ++ endif ++ ++ ARCHFLAG = $(ARCHFLAG/$(BUILDARCH)) ++-ARCHFLAG/i486 = -m32 -march=i586 +++ARCHFLAG/i486 = -m32 ++ ARCHFLAG/amd64 = -m64 ++ ARCHFLAG/aarch64 = ++ ARCHFLAG/ia64 = diff --cc debian/patches/hotspot-s390.diff index 0000000,0000000..0f66b48 new file mode 100644 --- /dev/null +++ b/debian/patches/hotspot-s390.diff @@@ -1,0 -1,0 +1,204 @@@ ++Description: hotspot makes some assumptions about size_t, depending on the architecture ++ (32bit/64bit), which doesn't work on s390 (32bit). ++ the fix is to add casts to size_t, as already done in other places. ++Forwarded: http://mail.openjdk.java.net/pipermail/hotspot-dev/2011-July/004301.html ++ ++--- openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp.orig +++++ openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp ++@@ -2656,7 +2656,7 @@ ++ if (ResizeOldPLAB && CMSOldPLABResizeQuicker) { ++ size_t multiple = _num_blocks[word_sz]/(CMSOldPLABToleranceFactor*CMSOldPLABNumRefills*n_blks); ++ n_blks += CMSOldPLABReactivityFactor*multiple*n_blks; ++- n_blks = MIN2(n_blks, CMSOldPLABMax); +++ n_blks = MIN2(n_blks, (size_t) CMSOldPLABMax); ++ } ++ assert(n_blks > 0, "Error"); ++ _cfls->par_get_chunk_of_blocks(word_sz, n_blks, fl); ++--- openjdk/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp.orig +++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp ++@@ -571,7 +571,7 @@ ++ _regionStack(), ++ // _finger set in set_non_marking_state ++ ++- _max_task_num(MAX2((uint)ParallelGCThreads, 1U)), +++ _max_task_num(MAX2((size_t)ParallelGCThreads, (size_t)1)), ++ // _active_tasks set in set_non_marking_state ++ // _tasks set inside the constructor ++ _task_queues(new CMTaskQueueSet((int) _max_task_num)), ++@@ -679,7 +679,7 @@ ++ // notice that ConcGCThreads overwrites G1MarkingOverheadPercent ++ // if both are set ++ ++- _parallel_marking_threads = (uint) ConcGCThreads; +++ _parallel_marking_threads = (size_t) ConcGCThreads; ++ _max_parallel_marking_threads = _parallel_marking_threads; ++ _sleep_factor = 0.0; ++ _marking_task_overhead = 1.0; ++@@ -4515,7 +4515,7 @@ ++ // of things to do) or totally (at the very end). ++ size_t target_size; ++ if (partially) { ++- target_size = MIN2((size_t)_task_queue->max_elems()/3, GCDrainStackTargetSize); +++ target_size = MIN2((size_t) (_task_queue->max_elems()/3), (size_t)GCDrainStackTargetSize); ++ } else { ++ target_size = 0; ++ } ++--- openjdk/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp.orig +++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ++@@ -1615,7 +1615,7 @@ ++ ++ verify_region_sets_optional(); ++ ++- size_t expand_bytes = MAX2(word_size * HeapWordSize, MinHeapDeltaBytes); +++ size_t expand_bytes = MAX2((size_t) (word_size * HeapWordSize), (size_t)MinHeapDeltaBytes); ++ ergo_verbose1(ErgoHeapSizing, ++ "attempt heap expansion", ++ ergo_format_reason("allocation request failed") ++--- openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp.orig +++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp ++@@ -1083,7 +1083,7 @@ ++ // This can be done by either mutator threads together with the ++ // concurrent refinement threads or GC threads. ++ int HeapRegionRemSet::num_par_rem_sets() { ++- return (int)MAX2(DirtyCardQueueSet::num_par_ids() + ConcurrentG1Refine::thread_num(), ParallelGCThreads); +++ return (int)MAX2((uintx)DirtyCardQueueSet::num_par_ids() + ConcurrentG1Refine::thread_num(), ParallelGCThreads); ++ } ++ ++ HeapRegionRemSet::HeapRegionRemSet(G1BlockOffsetSharedArray* bosa, ++--- openjdk/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp.orig +++++ openjdk/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp ++@@ -188,7 +188,7 @@ ++ const size_t num_overflow_elems = of_stack->size(); ++ const size_t space_available = queue->max_elems() - queue->size(); ++ const size_t num_take_elems = MIN3(space_available / 4, ++- ParGCDesiredObjsFromOverflowList, +++ (size_t)ParGCDesiredObjsFromOverflowList, ++ num_overflow_elems); ++ // Transfer the most recent num_take_elems from the overflow ++ // stack to our work queue. ++--- openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.cpp.orig +++++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.cpp ++@@ -62,7 +62,7 @@ ++ if (_virtual_space != NULL && _virtual_space->expand_by(bytes)) { ++ _region_start = covered_region.start(); ++ _region_size = covered_region.word_size(); ++- idx_t* map = (idx_t*)_virtual_space->reserved_low_addr(); +++ uintptr_t* map = (uintptr_t*)_virtual_space->reserved_low_addr(); ++ _beg_bits.set_map(map); ++ _beg_bits.set_size(bits / 2); ++ _end_bits.set_map(map + words / 2); ++--- openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp.orig +++++ openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp ++@@ -354,7 +354,7 @@ ++ // generally small compared to the NewRatio calculation. ++ _min_gen0_size = NewSize; ++ desired_new_size = NewSize; ++- max_new_size = MAX2(max_new_size, NewSize); +++ max_new_size = MAX2(max_new_size, (size_t) NewSize); ++ } else { ++ // For the case where NewSize is the default, use NewRatio ++ // to size the minimum and initial generation sizes. ++@@ -362,10 +362,10 @@ ++ // NewRatio is overly large, the resulting sizes can be too ++ // small. ++ _min_gen0_size = MAX2(scale_by_NewRatio_aligned(min_heap_byte_size()), ++- NewSize); +++ (size_t) NewSize); ++ desired_new_size = ++ MAX2(scale_by_NewRatio_aligned(initial_heap_byte_size()), ++- NewSize); +++ (size_t) NewSize); ++ } ++ ++ assert(_min_gen0_size > 0, "Sanity check"); ++@@ -420,14 +420,14 @@ ++ // Adjust gen0 down to accomodate OldSize ++ *gen0_size_ptr = heap_size - min_gen0_size; ++ *gen0_size_ptr = ++- MAX2((uintx)align_size_down(*gen0_size_ptr, min_alignment()), +++ MAX2((size_t)align_size_down(*gen0_size_ptr, min_alignment()), ++ min_alignment()); ++ assert(*gen0_size_ptr > 0, "Min gen0 is too large"); ++ result = true; ++ } else { ++ *gen1_size_ptr = heap_size - *gen0_size_ptr; ++ *gen1_size_ptr = ++- MAX2((uintx)align_size_down(*gen1_size_ptr, min_alignment()), +++ MAX2((size_t)align_size_down(*gen1_size_ptr, min_alignment()), ++ min_alignment()); ++ } ++ } ++@@ -451,7 +451,7 @@ ++ // for setting the gen1 maximum. ++ _max_gen1_size = max_heap_byte_size() - _max_gen0_size; ++ _max_gen1_size = ++- MAX2((uintx)align_size_down(_max_gen1_size, min_alignment()), +++ MAX2((size_t)align_size_down(_max_gen1_size, min_alignment()), ++ min_alignment()); ++ // If no explicit command line flag has been set for the ++ // gen1 size, use what is left for gen1. ++@@ -465,11 +465,11 @@ ++ "gen0 has an unexpected minimum size"); ++ set_min_gen1_size(min_heap_byte_size() - min_gen0_size()); ++ set_min_gen1_size( ++- MAX2((uintx)align_size_down(_min_gen1_size, min_alignment()), +++ MAX2((size_t)align_size_down(_min_gen1_size, min_alignment()), ++ min_alignment())); ++ set_initial_gen1_size(initial_heap_byte_size() - initial_gen0_size()); ++ set_initial_gen1_size( ++- MAX2((uintx)align_size_down(_initial_gen1_size, min_alignment()), +++ MAX2((size_t)align_size_down(_initial_gen1_size, min_alignment()), ++ min_alignment())); ++ ++ } else { ++--- openjdk/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp.orig +++++ openjdk/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp ++@@ -46,7 +46,7 @@ ++ const size_t beg_index = size_t(index); ++ assert(beg_index < len || len == 0, "index too large"); ++ ++- const size_t stride = MIN2(len - beg_index, ObjArrayMarkingStride); +++ const size_t stride = MIN2(len - beg_index, (size_t)ObjArrayMarkingStride); ++ const size_t end_index = beg_index + stride; ++ T* const base = (T*)a->base(); ++ T* const beg = base + beg_index; ++@@ -80,7 +80,7 @@ ++ const size_t beg_index = size_t(index); ++ assert(beg_index < len || len == 0, "index too large"); ++ ++- const size_t stride = MIN2(len - beg_index, ObjArrayMarkingStride); +++ const size_t stride = MIN2(len - beg_index, (size_t)ObjArrayMarkingStride); ++ const size_t end_index = beg_index + stride; ++ T* const base = (T*)a->base(); ++ T* const beg = base + beg_index; ++--- openjdk/hotspot/src/share/vm/runtime/arguments.cpp.orig +++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp ++@@ -1179,7 +1179,7 @@ ++ // so it's NewRatio x of NewSize. ++ if (FLAG_IS_DEFAULT(OldSize)) { ++ if (max_heap > NewSize) { ++- FLAG_SET_ERGO(uintx, OldSize, MIN2(NewRatio*NewSize, max_heap - NewSize)); +++ FLAG_SET_ERGO(uintx, OldSize, MIN2((size_t) (NewRatio*NewSize), (size_t) (max_heap - NewSize))); ++ if (PrintGCDetails && Verbose) { ++ // Too early to use gclog_or_tty ++ tty->print_cr("CMS ergo set OldSize: " SIZE_FORMAT, OldSize); ++--- openjdk/hotspot/src/share/vm/utilities/bitMap.inline.hpp.orig +++++ openjdk/hotspot/src/share/vm/utilities/bitMap.inline.hpp ++@@ -52,7 +52,7 @@ ++ ++ inline bool BitMap::par_set_bit(idx_t bit) { ++ verify_index(bit); ++- volatile idx_t* const addr = word_addr(bit); +++ volatile idx_t* const addr = (idx_t *)word_addr(bit); ++ const idx_t mask = bit_mask(bit); ++ idx_t old_val = *addr; ++ ++@@ -73,7 +73,7 @@ ++ ++ inline bool BitMap::par_clear_bit(idx_t bit) { ++ verify_index(bit); ++- volatile idx_t* const addr = word_addr(bit); +++ volatile idx_t* const addr = (idx_t *)word_addr(bit); ++ const idx_t mask = ~bit_mask(bit); ++ idx_t old_val = *addr; ++ diff --cc debian/patches/hotspot-sparc-arch.diff index 0000000,0000000..0dc97c5 new file mode 100644 --- /dev/null +++ b/debian/patches/hotspot-sparc-arch.diff @@@ -1,0 -1,0 +1,11 @@@ ++--- openjdk/hotspot/make/linux/makefiles/defs.make.orig 2011-07-13 09:00:57.000000000 +0200 +++++ openjdk/hotspot/make/linux/makefiles/defs.make 2011-07-13 08:58:01.000000000 +0200 ++@@ -58,7 +58,7 @@ ++ endif ++ ++ # sparc ++-ifeq ($(ARCH), sparc64) +++ifneq (,$(filter $(ARCH), sparc sparc64)) ++ ifeq ($(ARCH_DATA_MODEL), 64) ++ ARCH_DATA_MODEL = 64 ++ MAKE_ARGS += LP64=1 diff --cc debian/patches/hotspot-sparc-fix.diff index 0000000,0000000..bcee9d0 new file mode 100644 --- /dev/null +++ b/debian/patches/hotspot-sparc-fix.diff @@@ -1,0 -1,0 +1,21 @@@ ++# unused patch ++ ++--- openjdk/hotspot/src/os_cpu/linux_sparc/vm/vm_version_linux_sparc.cpp.orig 2009-10-14 17:13:15.000000000 +0000 +++++ openjdk/hotspot/src/os_cpu/linux_sparc/vm/vm_version_linux_sparc.cpp 2009-11-02 13:15:17.000000000 +0000 ++@@ -27,6 +27,7 @@ ++ ++ static bool detect_niagara() { ++ char cpu[128]; +++ char *buf = cpu; ++ bool rv = false; ++ ++ FILE* fp = fopen("/proc/cpuinfo", "r"); ++@@ -35,7 +36,7 @@ ++ } ++ ++ while (!feof(fp)) { ++- if (fscanf(fp, "cpu\t\t: %100[^\n]", &cpu) == 1) { +++ if (fscanf(fp, "cpu\t\t: %100[^\n]", buf) == 1) { ++ if (strstr(cpu, "Niagara") != NULL) { ++ rv = true; ++ } diff --cc debian/patches/hotspot-warn-no-errformat.diff index 0000000,0000000..28c4c0d new file mode 100644 --- /dev/null +++ b/debian/patches/hotspot-warn-no-errformat.diff @@@ -1,0 -1,0 +1,24 @@@ ++# unused patch ++ ++--- openjdk/hotspot/make/solaris/makefiles/gcc.make~ 2009-10-02 23:16:39.000000000 +0200 +++++ openjdk/hotspot/make/solaris/makefiles/gcc.make 2009-10-22 07:05:58.000000000 +0200 ++@@ -109,7 +109,7 @@ ++ ++ ++ # Compiler warnings are treated as errors ++-WARNINGS_ARE_ERRORS = -Werror +++WARNINGS_ARE_ERRORS = -Werror -Wno-error=format ++ # Enable these warnings. See 'info gcc' about details on these options ++ ADDITIONAL_WARNINGS = -Wpointer-arith -Wconversion -Wsign-compare ++ CFLAGS_WARN/DEFAULT = $(WARNINGS_ARE_ERRORS) $(ADDITIONAL_WARNINGS) ++--- openjdk/hotspot/make/linux/makefiles/gcc.make~ 2009-10-22 06:58:44.000000000 +0200 +++++ openjdk/hotspot/make/linux/makefiles/gcc.make 2009-10-22 07:06:00.000000000 +0200 ++@@ -98,7 +98,7 @@ ++ endif ++ ++ # Compiler warnings are treated as errors ++-WARNINGS_ARE_ERRORS = -Werror +++WARNINGS_ARE_ERRORS = -Werror -Wno-error=format ++ ++ # Except for a few acceptable ones ++ # Since GCC 4.3, -Wconversion has changed its meanings to warn these implicit diff --cc debian/patches/icc_loading_with_symlink.diff index 0000000,0000000..ea2d151 new file mode 100644 --- /dev/null +++ b/debian/patches/icc_loading_with_symlink.diff @@@ -1,0 -1,0 +1,37 @@@ ++Description: Allow loading of ICC profiles when jre/lib/cmm is a ++ symlink by disabling call to isChildOf(f, dir) in getStandardProfileFile ++ and getProfileFile methods. ++ . ++ isChildOf method try to ensures f.getCanonicalPath start with ++ dir.getCanonicalPath but, on openjdk-6, dir.getCanonicalPath ++ will resolve to realpath and so won't match. ++ . ++ It should fix "Cannot open file sRGB.pf" errors. ++Author: Damien Raude-Morvan ++Last-Update: 2012-05-18 ++Bug-Debian: http://bugs.debian.org/641530 ++Forwarded: not-yet ++ ++Index: openjdk/jdk/src/share/classes/java/awt/color/ICC_Profile.java ++=================================================================== ++--- openjdk/jdk/src/share/classes/java/awt/color/ICC_Profile.java +++++ openjdk/jdk/src/share/classes/java/awt/color/ICC_Profile.java ++@@ -1825,9 +1825,6 @@ public class ICC_Profile implements Seri ++ dir = st.nextToken(); ++ fullPath = dir + File.separatorChar + fileName; ++ f = new File(fullPath); ++- if (!isChildOf(f, dir)) { ++- f = null; ++- } ++ } ++ } ++ ++@@ -1864,7 +1861,7 @@ public class ICC_Profile implements Seri ++ File.separatorChar + "lib" + File.separatorChar + "cmm"; ++ String fullPath = dir + File.separatorChar + fileName; ++ File f = new File(fullPath); ++- return (f.isFile() && isChildOf(f, dir)) ? f : null; +++ return (f.isFile()) ? f : null; ++ } ++ ++ /** diff --cc debian/patches/icedtea-4953367.patch index 0000000,0000000..5232687 new file mode 100644 --- /dev/null +++ b/debian/patches/icedtea-4953367.patch @@@ -1,0 -1,0 +1,23 @@@ ++http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4953367 ++ ++Index: openjdk/jdk/src/solaris/native/java/lang/java_props_md.c ++=================================================================== ++--- openjdk/jdk/src/solaris/native/java/lang/java_props_md.c +++++ openjdk/jdk/src/solaris/native/java/lang/java_props_md.c ++@@ -589,6 +589,7 @@ GetJavaProperties(JNIEnv *env) ++ sprops.path_separator = ":"; ++ sprops.line_separator = "\n"; ++ +++#ifndef __linux__ ++ #if !defined(_ALLBSD_SOURCE) ++ /* Append CDE message and resource search path to NLSPATH and ++ * XFILESEARCHPATH, in order to pick localized message for ++@@ -597,7 +598,7 @@ GetJavaProperties(JNIEnv *env) ++ setPathEnvironment("NLSPATH=/usr/dt/lib/nls/msg/%L/%N.cat"); ++ setPathEnvironment("XFILESEARCHPATH=/usr/dt/app-defaults/%L/Dt"); ++ #endif ++- +++#endif ++ ++ #ifdef MACOSX ++ setProxyProperties(&sprops); diff --cc debian/patches/icedtea-override-redirect-compiz.patch index 0000000,0000000..1e913ec new file mode 100644 --- /dev/null +++ b/debian/patches/icedtea-override-redirect-compiz.patch @@@ -1,0 -1,0 +1,12 @@@ ++Index: openjdk/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java ++=================================================================== ++--- openjdk/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java +++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java ++@@ -1163,6 +1163,7 @@ class XWindowPeer extends XPanelPeer imp ++ boolean isOverrideRedirect() { ++ return XWM.getWMID() == XWM.OPENLOOK_WM || ++ (XWM.getWMID() == XWM.METACITY_WM ? true : false) || +++ XWM.getWMID() == XWM.COMPIZ_WM || ++ target.getName().equals("###overrideRedirect###") || ++ Window.Type.POPUP.equals(getWindowType()); ++ } diff --cc debian/patches/icedtea-pretend-memory.diff index 0000000,0000000..d73cbd7 new file mode 100644 --- /dev/null +++ b/debian/patches/icedtea-pretend-memory.diff @@@ -1,0 -1,0 +1,26 @@@ ++Index: openjdk/jdk/make/common/shared/Platform.gmk ++=================================================================== ++--- openjdk/jdk/make/common/shared/Platform.gmk.orig +++++ openjdk/jdk/make/common/shared/Platform.gmk ++@@ -246,7 +246,7 @@ ++ # Suffix for file bundles used in previous release ++ BUNDLE_FILE_SUFFIX=.tar.gz ++ # How much RAM does this machine have: ++- MB_OF_MEMORY := $(shell free -m | fgrep Mem: | awk '{print $$2;}' ) +++ MB_OF_MEMORY := $(shell m=`free -m | fgrep Mem: | sed -e 's@\ \ *@ @g' | cut -d' ' -f2`; if [ "$$m" -lt 384 ]; then echo 384; else echo $$m; fi) ++ endif ++ ++ ifeq ($(SYSTEM_UNAME), Darwin) ++Index: openjdk/corba/make/common/shared/Platform.gmk ++=================================================================== ++--- openjdk/corba/make/common/shared/Platform.gmk.orig +++++ openjdk/corba/make/common/shared/Platform.gmk ++@@ -240,7 +240,7 @@ ++ endif ++ endif ++ # How much RAM does this machine have: ++- MB_OF_MEMORY := $(shell free -m | fgrep Mem: | sed -e 's@\ \ *@ @g' | cut -d' ' -f2) +++ MB_OF_MEMORY := $(shell m=`free -m | fgrep Mem: | sed -e 's@\ \ *@ @g' | cut -d' ' -f2`; if [ "$$m" -lt 384 ]; then echo 384; else echo $$m; fi) ++ endif ++ ++ ifeq ($(SYSTEM_UNAME), FreeBSD) diff --cc debian/patches/it-aarch64-zero-default.diff index 0000000,0000000..ee6e5b4 new file mode 100644 --- /dev/null +++ b/debian/patches/it-aarch64-zero-default.diff @@@ -1,0 -1,0 +1,64 @@@ ++Description: Build zero on AArch64 from the default Hotspot tarball ++ Zero should be built from the same source on all architectures. ++Author: Matthias Klose ++Forwarded: not-needed ++Last-Update: 2014-07-06 ++ ++Index: b/Makefile.am ++=================================================================== ++--- a/Makefile.am +++++ b/Makefile.am ++@@ -2284,14 +2284,17 @@ if ADD_SHARK_BUILD ++ ADD_ZERO_CONFIGURE_ARGS += \ ++ --enable-shark ++ endif +++_quote = ' +++# ' make emacs mode happy ++ ADD_ZERO_CONFIGURE_ARGS += \ ++ --disable-docs \ ++- $(filter-out '--with-jdk-home=% '--with-ecj=% \ ++- '--with-java=% '--with-javah=% \ ++- '--with-javac=% '--with-javac=% \ ++- '--with-rmic=% '--with-additional-vms=% \ ++- '--disable-bootstrap% '--enable-bootstrap% , \ ++- $(CONFIGURE_ARGS)) \ +++ $(filter-out $(_quote)--with-jdk-home=% $(_quote)--with-ecj=% \ +++ $(_quote)--with-java=% $(_quote)--with-javah=% \ +++ $(_quote)--with-javac=% $(_quote)--with-javac=% \ +++ $(_quote)--with-rmic=% $(_quote)--with-additional-vms=% \ +++ $(_quote)--disable-bootstrap% $(_quote)--enable-bootstrap% \ +++ $(_quote)--with-hotspot-build=% $(_quote)--with-%-src-zip=% , \ +++ $(subst hotspot-aarch64.tar,hotspot.tar,$(CONFIGURE_ARGS))) \ ++ $(foreach i, openjdk hotspot corba jaxp jaxws jdk langtools, \ ++ $(if $(findstring --with-$(i)-src-zip=, $(CONFIGURE_ARGS)),, --with-$(i)-src-zip=$(abs_top_builddir)/$(i).$(TAR_SUFFIX))) ++ ++@@ -2301,7 +2304,7 @@ ADD_ZERO_EXTRA_BUILD_ENV = \ ++ BUILD_JAXWS=false ALT_JAXWS_DIST=$(BUILD_OUTPUT_DIR)/jaxws/dist \ ++ BUILD_CORBA=false ALT_CORBA_DIST=$(BUILD_OUTPUT_DIR)/corba/dist \ ++ BUILD_JDK=false \ ++- DISTRIBUTION_PATCHES='$(foreach p,$(DISTRIBUTION_PATCHES),$(if $(findstring cacao,$(p)),,$(if $(findstring jamvm,$(p)),,$(p))))' +++ DISTRIBUTION_PATCHES='$(foreach p,$(subst -aarch64,-default,$(DISTRIBUTION_PATCHES)),$(if $(findstring cacao,$(p)),,$(if $(findstring jamvm,$(p)),,$(p))))' ++ ++ stamps/add-zero.stamp: stamps/icedtea.stamp ++ mkdir -p stamps ++Index: b/acinclude.m4 ++=================================================================== ++--- a/acinclude.m4 +++++ b/acinclude.m4 ++@@ -928,7 +928,7 @@ AC_DEFUN_ONCE([IT_WITH_GCJ], ++ AC_DEFUN_ONCE([IT_WITH_HOTSPOT_BUILD], ++ [ ++ AC_REQUIRE([IT_ENABLE_ZERO_BUILD]) ++- if test "x$JRE_ARCH_DIR" = "xaarch64" -o "x$JRE_ARCH_DIR" = "xarm"; then +++ if test "x$JRE_ARCH_DIR" = "xaarch64" && test "x$use_zero" != xyes && test "x${ENABLE_CACAO}" != xyes && test "x${ENABLE_JAMVM}" != xyes; then ++ DEFAULT_BUILD="aarch64" ++ else ++ DEFAULT_BUILD="default" ++@@ -950,6 +950,7 @@ AC_DEFUN_ONCE([IT_WITH_HOTSPOT_BUILD], ++ AC_MSG_RESULT([${HSBUILD}]) ++ AC_SUBST([HSBUILD]) ++ AM_CONDITIONAL(WITH_ALT_HSBUILD, test "x${HSBUILD}" != "xdefault") +++ AM_CONDITIONAL(HSBUILD_AARCH64, test "x${HSBUILD}" == "xaarch64") ++ ]) ++ ++ AC_DEFUN([IT_WITH_HOTSPOT_SRC_ZIP], diff --cc debian/patches/it-debian-build-flags.diff index 0000000,0000000..988507f new file mode 100644 --- /dev/null +++ b/debian/patches/it-debian-build-flags.diff @@@ -1,0 -1,0 +1,28 @@@ ++Description: Pass the Debian build flags to all build components ++Author: Damien Raude-Morvan ++Forwarded: not-needed ++Last-Update: 2014-07-06 ++ ++Index: b/Makefile.am ++=================================================================== ++--- a/Makefile.am +++++ b/Makefile.am ++@@ -152,7 +152,7 @@ IT_JAVAC_SETTINGS=-g -encoding utf-8 $(J ++ IT_JAVACFLAGS=$(IT_JAVAC_SETTINGS) -source $(IT_LANGUAGE_SOURCE_VERSION) -target $(IT_CLASS_TARGET_VERSION) ++ ++ # Flags ++-IT_CFLAGS=$(CFLAGS) $(ARCHFLAG) +++IT_CFLAGS=$(CFLAGS) $(ARCHFLAG) $(EXTRA_CFLAGS_IT) ++ ++ # Conditional defintions ++ ++@@ -2586,7 +2586,8 @@ stamps/jamvm.stamp: $(OPENJDK_TREE) stam ++ if BUILD_JAMVM ++ cd jamvm/jamvm && \ ++ ./autogen.sh --with-java-runtime-library=openjdk7 \ ++- --prefix=$(abs_top_builddir)/jamvm/install ; \ +++ --prefix=$(abs_top_builddir)/jamvm/install \ +++ CFLAGS='$(EXTRA_CFLAGS_JAMVM)' LDFLAGS='$(EXTRA_LDFLAGS_JAMVM)' CPPFLAGS='$(EXTRA_CPPFLAGS_JAMVM)' CXXFLAGS='$(EXTRA_CXXFLAGS_JAMVM)'; \ ++ $(MAKE) ; \ ++ $(MAKE) install ++ mkdir -p $(abs_top_builddir)/jamvm/install/hotspot/jre/lib/$(INSTALL_ARCH_DIR)/server diff --cc debian/patches/it-jamvm-2.0.diff index 0000000,0000000..ec85e8f new file mode 100644 --- /dev/null +++ b/debian/patches/it-jamvm-2.0.diff @@@ -1,0 -1,0 +1,126 @@@ ++Index: b/Makefile.am ++=================================================================== ++--- a/Makefile.am +++++ b/Makefile.am ++@@ -26,8 +26,8 @@ CACAO_BASE_URL = $(DROP_URL)/cacao ++ CACAO_SRC_ZIP = cacao-$(CACAO_VERSION).tar.gz ++ CACAO_URL = $(CACAO_BASE_URL)/$(CACAO_SRC_ZIP) ++ ++-JAMVM_VERSION = ec18fb9e49e62dce16c5094ef1527eed619463aa ++-JAMVM_SHA256SUM = 31810266666c23822942aac62a78019c2c4589e1c5ee48329cbf42652d4437bc +++JAMVM_VERSION = 2.0.0 +++JAMVM_SHA256SUM = 76428e96df0ae9dd964c7a7c74c1e9a837e2f312c39e9a357fa8178f7eff80da ++ JAMVM_BASE_URL = $(DROP_URL)/jamvm ++ JAMVM_URL = $(JAMVM_BASE_URL)/jamvm-$(JAMVM_VERSION).tar.gz ++ JAMVM_SRC_ZIP = jamvm-$(JAMVM_VERSION).tar.gz ++@@ -404,8 +404,6 @@ endif ++ ++ if BUILD_JAMVM ++ ICEDTEA_PATCHES += \ ++- patches/jamvm/find_class_from_caller.patch \ ++- patches/jamvm/pr2172-tempdir.patch \ ++ patches/jamvm/noexecstack.patch \ ++ patches/jamvm/pr2665.patch \ ++ patches/jamvm/pr3134-unsafe_methods.patch ++@@ -419,6 +417,11 @@ if !USE_NON_NSS_CURVES ++ ICEDTEA_PATCHES += patches/rh1022017.patch ++ endif ++ +++if BUILD_JAMVM +++ICEDTEA_PATCHES += \ +++ patches/jamvm-2.5.3-fix.diff +++endif +++ ++ ICEDTEA_PATCHES += $(DISTRIBUTION_PATCHES) ++ ++ # Bootstrapping patches ++@@ -2456,7 +2459,7 @@ clean-rewrite-rhino: ++ stamps/jamvm.stamp: $(OPENJDK_TREE) stamps/rt.stamp ++ if BUILD_JAMVM ++ cd jamvm/jamvm && \ ++- ./autogen.sh --with-java-runtime-library=openjdk7 \ +++ ./configure --with-java-runtime-library=openjdk7 \ ++ --prefix=$(abs_top_builddir)/jamvm/install \ ++ CFLAGS='$(EXTRA_CFLAGS_JAMVM)' LDFLAGS='$(EXTRA_LDFLAGS_JAMVM)' CPPFLAGS='$(EXTRA_CPPFLAGS_JAMVM)' CXXFLAGS='$(EXTRA_CXXFLAGS_JAMVM)'; \ ++ $(MAKE) ; \ ++Index: b/patches/jamvm-2.5.3-fix.diff ++=================================================================== ++--- /dev/null +++++ b/patches/jamvm-2.5.3-fix.diff ++@@ -0,0 +1,76 @@ +++--- jamvm/jamvm-2.0.0/src/classlib/openjdk/jvm.c ++++++ jamvm/jamvm-2.0.0/src/classlib/openjdk/jvm.c +++@@ -517,6 +517,48 @@ jclass JVM_FindClassFromBootLoader(JNIEnv *env, const char *name) { +++ } +++ +++ ++++/* JVM_FindClassFromCaller ++++ * Find a class from a given class loader. Throws ClassNotFoundException. ++++ * name: name of class ++++ * init: whether initialization is done ++++ * loader: class loader to look up the class. ++++ * This may not be the same as the caller's class loader. ++++ * caller: initiating class. The initiating class may be null when a security ++++ * manager is not installed. ++++ * ++++ * Find a class with this name in this loader, ++++ * using the caller's "protection domain". ++++ */ ++++ ++++jclass JVM_FindClassFromCaller(JNIEnv *env, const char *name, ++++ jboolean init, jobject loader, ++++ jclass caller) { ++++ Class *class; ++++ ++++ TRACE("JVM_FindClassFromCaller(env=%p, name=%s, init=%d, loader=%p," ++++ " caller=%p)", env, name, init, loader, caller); ++++ ++++ /* XXX The caller's protection domain should be used during ++++ the findClassFromClassLoader but there is no specification or ++++ unit-test in OpenJDK documenting the desired effect */ ++++ ++++ class = findClassFromClassLoader((char *)name, loader); ++++ ++++ if(class == NULL) { ++++ Object *excep = exceptionOccurred(); ++++ char *dot_name = slash2DotsDup((char*)name); ++++ ++++ clearException(); ++++ signalChainedException(java_lang_ClassNotFoundException, ++++ dot_name, excep); ++++ sysFree(dot_name); ++++ } else if(init) ++++ initClass(class); ++++ ++++ return class; ++++} ++++ ++++ +++ /* JVM_FindClassFromClassLoader */ +++ +++ jclass JVM_FindClassFromClassLoader(JNIEnv *env, const char *name, +++@@ -2965,6 +3007,24 @@ void JVM_GetVersionInfo(JNIEnv *env, jvm_version_info *info, size_t info_size) { +++ } +++ +++ ++++/* JVM_GetTemporaryDirectory ++++ * Return the temporary directory that the VM uses for the attach ++++ * and perf data files. ++++ * ++++ * It is important that this directory is well-known and the ++++ * same for all VM instances. It cannot be affected by configuration ++++ * variables such as java.io.tmpdir. ++++ * ++++ * JamVM do not support the jvmstat framework thus this is left unimplemented. ++++ */ ++++ ++++jstring JVM_GetTemporaryDirectory(JNIEnv *env) { ++++ UNIMPLEMENTED("JVM_GetTemporaryDirectory"); ++++ ++++ return 0; ++++} ++++ ++++ +++ /* JVM_RegisterSignal */ +++ +++ extern void signalHandler(int sig); diff --cc debian/patches/it-mips64-zero.diff index 0000000,0000000..316b03a new file mode 100644 --- /dev/null +++ b/debian/patches/it-mips64-zero.diff @@@ -1,0 -1,0 +1,47 @@@ ++Description: Build zero on 64bit MIPS targets ++Forwarded: no ++Last-Update: 2014-07-06 ++ ++--- a/acinclude.m4 +++++ b/acinclude.m4 ++@@ -43,12 +43,38 @@ ++ BUILD_ARCH_DIR=mips ++ INSTALL_ARCH_DIR=mips ++ JRE_ARCH_DIR=mips ++- ;; +++ ARCHFLAG="-mabi=32" +++ ;; ++ mipsel) ++ BUILD_ARCH_DIR=mipsel ++ INSTALL_ARCH_DIR=mipsel ++ JRE_ARCH_DIR=mipsel ++- ;; +++ ARCHFLAG="-mabi=32" +++ ;; +++ mipsn32) +++ BUILD_ARCH_DIR=mipsn32 +++ INSTALL_ARCH_DIR=mipsn32 +++ JRE_ARCH_DIR=mipsn32 +++ ARCHFLAG="-mabi=n32" +++ ;; +++ mipsn32el) +++ BUILD_ARCH_DIR=mipsn32el +++ INSTALL_ARCH_DIR=mipsn32el +++ JRE_ARCH_DIR=mipsn32el +++ ARCHFLAG="-mabi=n32" +++ ;; +++ mips64) +++ BUILD_ARCH_DIR=mips64 +++ INSTALL_ARCH_DIR=mips64 +++ JRE_ARCH_DIR=mips64 +++ ARCHFLAG="-mabi=64" +++ ;; +++ mips64el) +++ BUILD_ARCH_DIR=mips64el +++ INSTALL_ARCH_DIR=mips64el +++ JRE_ARCH_DIR=mips64el +++ ARCHFLAG="-mabi=64" +++ ;; ++ powerpc) ++ BUILD_ARCH_DIR=ppc ++ INSTALL_ARCH_DIR=ppc diff --cc debian/patches/it-nss-softokn-config.diff index 0000000,0000000..5dae7ff new file mode 100644 --- /dev/null +++ b/debian/patches/it-nss-softokn-config.diff @@@ -1,0 -1,0 +1,20 @@@ ++# DP: Fix configure check for the SunEC security provider. ++ ++Index: b/acinclude.m4 ++=================================================================== ++--- a/acinclude.m4 +++++ b/acinclude.m4 ++@@ -2791,9 +2791,12 @@ AC_DEFUN_ONCE([IT_ENABLE_SUNEC], ++ if test x"${ENABLE_SUNEC}" = "xyes"; then ++ PKG_CHECK_MODULES(NSS_SOFTOKN, nss-softokn >= 3.16.1, [NSS_SOFTOKN_FOUND=yes], [NSS_SOFTOKN_FOUND=no]) ++ PKG_CHECK_MODULES(NSS_JAVA, nss-java, [NSS_JAVA_FOUND=yes], [NSS_JAVA_FOUND=no]) +++ NSS_SOFTOKN_FOUND=yes +++ NSS_SOFTOKN_CFLAGS=$NSS_CFLAGS ++ if test "x${NSS_SOFTOKN_FOUND}" = "xyes"; then +++ nsslibdir="/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)/nss" ++ SUNEC_CFLAGS=$NSS_SOFTOKN_CFLAGS; ++- SUNEC_LIBS="$NSS_LIBS -lfreebl"; +++ SUNEC_LIBS="$NSS_LIBS -L$nsslibdir -Xlinker -rpath=$nsslibdir -lfreebl3"; ++ elif test "x${NSS_JAVA_FOUND}" = "xyes"; then ++ SUNEC_CFLAGS="$NSS_JAVA_CFLAGS -DLEGACY_NSS"; ++ SUNEC_LIBS=$NSS_JAVA_LIBS; diff --cc debian/patches/it-patch-updates.diff index 0000000,0000000..e8eade1 new file mode 100644 --- /dev/null +++ b/debian/patches/it-patch-updates.diff @@@ -1,0 -1,0 +1,15 @@@ ++Description: IcedTea patch updates (regenerate patches) ++Author: Matthias Klose ++Last-Update: 2018-06-08 ++ ++--- a/patches/boot/bootstrap-tools.patch +++++ b/patches/boot/bootstrap-tools.patch ++@@ -60,7 +62,7 @@ ++ JAVAH_CMD = $(JAVA_TOOLS_DIR)/javah \ ++ $(JAVAHFLAGS) ++ - JAVADOC_CMD = $(JAVA_TOOLS_DIR)/javadoc $(JAVA_TOOLS_FLAGS:%=-J%) \ ++-- $(JAVADOCFLAGS) +++- $(JAVADOCFLAGS) ++ endif ++ ++ # Override of what javac to use (see deploy workspace) diff --cc debian/patches/it-remove-samevm.patch index 0000000,0000000..01a7080 new file mode 100644 --- /dev/null +++ b/debian/patches/it-remove-samevm.patch @@@ -1,0 -1,0 +1,18 @@@ ++--- a/Makefile.am +++++ b/Makefile.am ++@@ -2740,7 +2740,6 @@ check-langtools: stamps/jtreg.stamp ++ mkdir -p test/langtools/JTwork test/langtools/JTreport ++ $(BOOT_DIR)/bin/java -jar test/jtreg.jar -v1 -a -ignore:quiet \ ++ -w:test/langtools/JTwork -r:test/langtools/JTreport \ ++- $${ICEDTEA_JTREG_OTHERVM:--samevm} \ ++ -jdk:$(BUILD_SDK_DIR) \ ++ $(ICEDTEA_JTREG_OPTIONS) \ ++ -exclude:$(abs_top_srcdir)/test/jtreg/excludelist.langtools.jtx \ ++@@ -2759,7 +2758,6 @@ endif ++ $${XVFB_RUN} \ ++ $(BOOT_DIR)/bin/java -jar test/jtreg.jar -v1 -a -ignore:quiet \ ++ -w:test/jdk/JTwork -r:test/jdk/JTreport \ ++- $${ICEDTEA_JTREG_OTHERVM:--samevm} \ ++ -jdk:$(BUILD_SDK_DIR) \ ++ $(ICEDTEA_JTREG_OPTIONS) $(CACAO_EXCLUDE) \ ++ -exclude:$(abs_top_srcdir)/test/jtreg/excludelist.jdk.jtx \ diff --cc debian/patches/it-set-compiler.diff index 0000000,0000000..79ee626 new file mode 100644 --- /dev/null +++ b/debian/patches/it-set-compiler.diff @@@ -1,0 -1,0 +1,16 @@@ ++Description: Pass the correct compiler to the OpenJDK build system ++Author: Matthias Klose ++Forwarded: #openjdk on OFTC ++ ++Index: b/Makefile.am ++=================================================================== ++--- a/Makefile.am 2016-04-22 14:27:57.520981863 -0300 +++++ b/Makefile.am 2016-04-22 14:27:57.516981802 -0300 ++@@ -618,6 +618,7 @@ ++ VERBOSE="$(VERBOSE)" \ ++ STATIC_CXX="false" \ ++ BUILD_GCC="$(CC)" \ +++ BUILD_CPP="$(CXX)" \ ++ BUILD_CXX="$(CXX)" \ ++ SYSTEM_CUPS="${ENABLE_SYSTEM_CUPS}" \ ++ CUPS_LIBS="${CUPS_LIBS}" \ diff --cc debian/patches/it-sparc-zero.diff index 0000000,0000000..526f982 new file mode 100644 --- /dev/null +++ b/debian/patches/it-sparc-zero.diff @@@ -1,0 -1,0 +1,17 @@@ ++Description: Hotspot not supported anymore on SPARC, default to zero ++Author: Matthias Klose ++Forwarded: no ++Last-Update: 2014-07-06 ++ ++Index: b/acinclude.m4 ++=================================================================== ++--- a/acinclude.m4 +++++ b/acinclude.m4 ++@@ -2803,7 +2803,6 @@ AC_DEFUN_ONCE([IT_HAS_NATIVE_HOTSPOT_POR ++ aarch64) ;; ++ arm64) ;; ++ i?86) ;; ++- sparc) ;; ++ x86_64) ;; ++ powerpc64) ;; ++ powerpc64le) ;; diff --cc debian/patches/it-use-quilt.diff index 0000000,0000000..5a38da9 new file mode 100644 --- /dev/null +++ b/debian/patches/it-use-quilt.diff @@@ -1,0 -1,0 +1,229 @@@ ++Description: Use quilt for IcedTea patching ++Author: Matthias Klose ++Forwarded: not accepted ++Last-Update: 2014-07-06 ++ ++Index: b/Makefile.am ++=================================================================== ++--- a/Makefile.am +++++ b/Makefile.am ++@@ -1665,132 +1665,37 @@ clean-fonts: ++ rm -f stamps/fonts.stamp ++ ++ stamps/patch-fsg.stamp: stamps/extract.stamp stamps/fonts.stamp +++ set -e; \ ++ mkdir -p stamps ; \ ++- rm -f stamps/patch-fsg.stamp.tmp ; \ ++- touch stamps/patch-fsg.stamp.tmp ; \ ++- all_patches_ok=yes; \ ++- for p in $(ICEDTEA_FSG_PATCHES) ; \ ++- do \ ++- if test x$${all_patches_ok} = "xyes" \ ++- && echo Checking $$p \ ++- && $(PATCH) -l -p0 --dry-run -s -t -f \ ++- -F 0 < $(abs_top_srcdir)/$$p ; \ ++- then \ ++- echo Applying $$p ; \ ++- $(PATCH) -l -p0 < $(abs_top_srcdir)/$$p ; \ ++- if ! grep "^\* $$(basename $$p)" $(abs_top_srcdir)/HACKING \ ++- >> stamps/patch-fsg.stamp.tmp ; \ ++- then \ ++- echo "* $$(basename $$p): UNDOCUMENTED" \ ++- >> stamps/patch-fsg.stamp.tmp ; \ ++- fi ; \ ++- else \ ++- test x$${all_patches_ok} = "xyes" && all_patches_ok=$$p ; \ ++- fi ; \ ++- done ; \ ++- mv stamps/patch-fsg.stamp.tmp stamps/patch-fsg.stamp ; \ ++- if ! test x$${all_patches_ok} = "xyes"; then \ ++- echo ERROR patch $${all_patches_ok} FAILED! ; \ ++- echo WARNING make clean-patch before retrying a fix ; \ ++- exit 2; \ ++- fi ; +++ if [ -n "$(ICEDTEA_FSG_PATCHES)" ]; then \ +++ for p in $(ICEDTEA_FSG_PATCHES); do \ +++ echo "$$p -p0"; \ +++ done > series.fsg; \ +++ QUILT_SERIES=series.fsg QUILT_PATCHES=$(abs_top_srcdir) quilt push -a; \ +++ mv .pc .pc.fsg; \ +++ fi +++ touch $@ ++ ++ clean-patch-fsg: clean-patch ++- if [ -e stamps/patch-fsg.stamp ] ; then \ ++- all_patches_ok=yes; \ ++- for p in $(ICEDTEA_FSG_PATCHES) ; \ ++- do \ ++- echo Checking $$p ; \ ++- if $(PATCH) -l -p0 -R --dry-run -s -t -f < $(abs_top_srcdir)/$$p ; \ ++- then \ ++- echo Reverting $$p ; \ ++- $(PATCH) -l -p0 -R < $(abs_top_srcdir)/$$p ; \ ++- else \ ++- all_patches_ok=no ; \ ++- fi ; \ ++- done ; \ ++- if ! test x$${all_patches_ok} = "xyes" ; then \ ++- echo "WARNING Not all patches reverted cleanly" ; \ ++- fi ; \ ++- rm -f stamps/patch-fsg.stamp ; \ +++ if [ -e series.fsg ] ; then \ +++ QUILT_SERIES=series.fsg QUILT_PATCHES=$(abs_top_srcdir) quilt pop -a; \ ++ fi ++ ++ stamps/patch.stamp: stamps/patch-fsg.stamp +++ set -e; \ ++ mkdir -p stamps ; \ ++- rm -f stamps/patch.stamp.tmp ; \ ++- touch stamps/patch.stamp.tmp ; \ ++- all_patches_ok=yes; \ ++- cd $(abs_top_builddir)/openjdk/jdk; \ ++- for p in $(OPENJDK_PATCHES) ; \ ++- do \ ++- if test x$${all_patches_ok} == "xyes" \ ++- && echo Checking $$p \ ++- && $(PATCH) -l -p1 --dry-run -s -t -f -F 0 < $(abs_top_srcdir)/$$p ; \ ++- then \ ++- echo Applying $$p ; \ ++- $(PATCH) -l -p1 < $(abs_top_srcdir)/$$p ; \ ++- else \ ++- test x$${all_patches_ok} == "xyes" && all_patches_ok=$$p ; \ ++- fi ; \ ++- done ; \ ++- cd $(abs_top_builddir) ; \ ++- for p in $(ICEDTEA_PATCHES) ; \ ++- do \ ++- if test x$${all_patches_ok} = "xyes" \ ++- && echo Checking $$p \ ++- && $(PATCH) -l -p0 --dry-run -s -t -f \ ++- -F 0 < $(abs_top_srcdir)/$$p ; \ ++- then \ ++- echo Applying $$p ; \ ++- $(PATCH) -l -p0 < $(abs_top_srcdir)/$$p ; \ ++- if ! grep "^\* $$(basename $$p)" $(abs_top_srcdir)/HACKING \ ++- >> stamps/patch.stamp.tmp ; \ ++- then \ ++- echo "* $$(basename $$p): UNDOCUMENTED" \ ++- >> stamps/patch.stamp.tmp ; \ ++- fi ; \ ++- else \ ++- test x$${all_patches_ok} = "xyes" && all_patches_ok=$$p ; \ ++- fi ; \ ++- done ; \ ++- if ! test x$${all_patches_ok} = "xyes"; then \ ++- echo ERROR patch $${all_patches_ok} FAILED! ; \ ++- echo WARNING make clean-patch before retrying a fix ; \ ++- exit 2; \ ++- fi ; \ ++- mv stamps/patch.stamp.tmp stamps/patch.stamp +++ if [ -n "$(ICEDTEA_PATCHES)" ]; then \ +++ for p in $(ICEDTEA_PATCHES); do \ +++ echo "$$p -p0"; \ +++ done > series.openjdk; \ +++ QUILT_SERIES=series.openjdk QUILT_PATCHES=$(abs_top_srcdir) quilt push -a; \ +++ mv .pc .pc.openjdk; \ +++ fi +++ touch $@ ++ ++ clean-patch: ++- if [ -e stamps/patch.stamp ] ; then \ ++- all_patches_ok=yes; \ ++- for p in $(ICEDTEA_PATCHES) ; \ ++- do \ ++- echo Checking $$p ; \ ++- if $(PATCH) -l -p0 -R --dry-run -s -t -f < $(abs_top_srcdir)/$$p ; \ ++- then \ ++- echo Reverting $$p ; \ ++- $(PATCH) -l -p0 -R < $(abs_top_srcdir)/$$p ; \ ++- else \ ++- all_patches_ok=no ; \ ++- fi ; \ ++- done ; \ ++- cd $(abs_top_builddir)/openjdk/jdk; \ ++- for p in $(OPENJDK_PATCHES) ; \ ++- do \ ++- echo Checking $$p ; \ ++- if $(PATCH) -l -p1 -R --dry-run -s -t -f < $(abs_top_srcdir)/$$p ; \ ++- then \ ++- echo Reverting $$p ; \ ++- $(PATCH) -l -p1 -R < $(abs_top_srcdir)/$$p ; \ ++- else \ ++- all_patches_ok=no ; \ ++- fi ; \ ++- done ; \ ++- cd $(abs_top_builddir) ; \ ++- if ! test x$${all_patches_ok} = "xyes" ; then \ ++- echo "WARNING Not all patches reverted cleanly" ; \ ++- fi ; \ ++- rm -f stamps/patch.stamp ; \ +++ if [ -e series.opendjk ] ; then \ +++ QUILT_SERIES=series.openjdk QUILT_PATCHES=$(abs_top_srcdir) quilt pop -a; \ ++ fi ++ ++ stamps/versioning.stamp: stamps/patch.stamp ++@@ -1860,54 +1765,20 @@ clean-clone-boot: ++ rm -f stamps/clone-boot.stamp ++ ++ stamps/patch-boot.stamp: stamps/clone-boot.stamp +++ set -e; \ ++ mkdir -p stamps; \ ++- rm -f stamps/patch-boot.stamp.tmp ; \ ++- touch stamps/patch-boot.stamp.tmp ; \ ++- all_patches_ok=yes; \ ++- for p in $(ICEDTEA_BOOT_PATCHES) ; \ ++- do \ ++- if test x$${all_patches_ok} = "xyes" \ ++- && echo Checking $$p \ ++- && $(PATCH) -l -p0 --dry-run -s -t -f \ ++- -F 0 < $(abs_top_srcdir)/$$p ; \ ++- then \ ++- echo Applying $$p ; \ ++- $(PATCH) -l -p0 < $(abs_top_srcdir)/$$p ; \ ++- if ! grep "^\* $$(basename $$p)" $(abs_top_srcdir)/HACKING \ ++- >> stamps/patch-boot.stamp.tmp ; \ ++- then \ ++- echo "* $$(basename $$p): UNDOCUMENTED" \ ++- >> stamps/patch-boot.stamp.tmp ; \ ++- fi ; \ ++- else \ ++- test x$${all_patches_ok} = "xyes" && all_patches_ok=$$p ; \ ++- fi ; \ ++- done ; \ ++- mv stamps/patch-boot.stamp.tmp stamps/patch-boot.stamp ; \ ++- if ! test x$${all_patches_ok} = "xyes"; then \ ++- echo ERROR patch $${all_patches_ok} FAILED! ; \ ++- echo WARNING make clean-patch before retrying a fix ; \ ++- exit 2; \ +++ if [ -n "$(ICEDTEA_BOOT_PATCHES)" ]; then \ +++ for p in $(ICEDTEA_BOOT_PATCHES); do \ +++ echo "$$p -p0"; \ +++ done > series.boot; \ +++ QUILT_SERIES=series.boot QUILT_PATCHES=$(abs_top_srcdir) quilt push -a; \ +++ mv .pc .pc.boot; \ ++ fi +++ touch $@ ++ ++ clean-patch-boot: ++- if [ -e stamps/patch-boot.stamp ] ; then \ ++- all_patches_ok=yes; \ ++- for p in $(ICEDTEA_BOOT_PATCHES) ; \ ++- do \ ++- echo Checking $$p ; \ ++- if $(PATCH) -l -p0 -R --dry-run -s -t -f < $(abs_top_srcdir)/$$p ; \ ++- then \ ++- echo Reverting $$p ; \ ++- $(PATCH) -l -p0 -R < $(abs_top_srcdir)/$$p ; \ ++- else \ ++- all_patches_ok=no ; \ ++- fi ; \ ++- done ; \ ++- if ! test x$${all_patches_ok} = "xyes" ; then \ ++- echo "WARNING Not all patches reverted cleanly" ; \ ++- fi ; \ ++- rm -f stamps/patch-boot.stamp ; \ +++ if [ -e series.boot ] ; then \ +++ QUILT_SERIES=series.boot QUILT_PATCHES=$(abs_top_srcdir) quilt pop -a; \ ++ fi ++ ++ # Bootstrap Directory Targets diff --cc debian/patches/it-x32-zero.diff index 0000000,0000000..e6b91d6 new file mode 100644 --- /dev/null +++ b/debian/patches/it-x32-zero.diff @@@ -1,0 -1,0 +1,41 @@@ ++Description: Build zero on x32 ++Author: Matthias Klose ++Forwarded: http://mail.openjdk.java.net/pipermail/zero-dev/2014-January/000524.html ++Last-Update: 2014-07-06 ++ ++Index: b/acinclude.m4 ++=================================================================== ++--- a/acinclude.m4 +++++ b/acinclude.m4 ++@@ -2,10 +2,18 @@ AC_DEFUN([IT_SET_ARCH_SETTINGS], ++ [ ++ case "${host_cpu}" in ++ x86_64) ++- BUILD_ARCH_DIR=amd64 ++- INSTALL_ARCH_DIR=amd64 ++- JRE_ARCH_DIR=amd64 ++- ARCHFLAG="-m64" +++ case "${host}" in +++ *x32) +++ BUILD_ARCH_DIR=x32 +++ INSTALL_ARCH_DIR=x32 +++ JRE_ARCH_DIR=x32 +++ ;; +++ *) +++ BUILD_ARCH_DIR=amd64 +++ INSTALL_ARCH_DIR=amd64 +++ JRE_ARCH_DIR=amd64 +++ ARCHFLAG="-m64" +++ esac ++ ;; ++ i?86) ++ BUILD_ARCH_DIR=i586 ++@@ -753,7 +761,7 @@ AC_DEFUN_ONCE([IT_ENABLE_ZERO_BUILD], ++ ZERO_LIBARCH="${INSTALL_ARCH_DIR}" ++ dnl can't use AC_CHECK_SIZEOF on multilib ++ case "${ZERO_LIBARCH}" in ++- arm|i386|ppc|s390|sh|sparc) +++ arm|i386|ppc|s390|sh|sparc|x32) ++ ZERO_BITSPERWORD=32 ++ ;; ++ aarch64|alpha|amd64|ia64|ppc64|ppc64le|s390x|sparcv9) diff --cc debian/patches/java-access-bridge-security.patch index 0000000,0000000..2e5d0e1 new file mode 100644 --- /dev/null +++ b/debian/patches/java-access-bridge-security.patch @@@ -1,0 -1,0 +1,15 @@@ ++# patch only used for builds with java-access-bridge support ++ ++--- openjdk/jdk/src/share/lib/security/java.security-linux +++++ openjdk/jdk/src/share/lib/security/java.security-linux ++@@ -149,7 +149,9 @@ ++ com.sun.org.apache.xml.internal.security.,\ ++ com.sun.org.glassfish.,\ ++ org.jcp.xml.dsig.internal.,\ ++- oracle.jrockit.jfr. +++ oracle.jrockit.jfr.,\ +++ org.GNOME.Accessibility.,\ +++ org.GNOME.Bonobo. ++ # ++ # List of comma-separated packages that start with or equal this string ++ # will cause a security exception to be thrown when diff --cc debian/patches/javadoc-sort-enum-and-annotation-types.patch index 0000000,0000000..9a85a61 new file mode 100644 --- /dev/null +++ b/debian/patches/javadoc-sort-enum-and-annotation-types.patch @@@ -1,0 -1,0 +1,21 @@@ ++Description: Sort the enums and the annotations in the package-tree.html files ++Author: Emmanuel Bourg ++Forwarded: no ++--- openjdk/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/ClassTree.java +++++ openjdk/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/ClassTree.java ++@@ -163,6 +163,15 @@ ++ for (Iterator> it = subclasses.values().iterator(); it.hasNext(); ) { ++ Collections.sort(it.next()); ++ } +++ +++ Collections.sort(baseEnums); +++ for (Iterator> it = subEnums.values().iterator(); it.hasNext(); ) { +++ Collections.sort(it.next()); +++ } +++ Collections.sort(baseAnnotationTypes); +++ for (Iterator> it = subAnnotationTypes.values().iterator(); it.hasNext(); ) { +++ Collections.sort(it.next()); +++ } ++ } ++ ++ /** diff --cc debian/patches/jdk-8132985-backport-double-free.patch index 0000000,0000000..2a01235 new file mode 100644 --- /dev/null +++ b/debian/patches/jdk-8132985-backport-double-free.patch @@@ -1,0 -1,0 +1,154 @@@ ++ ++# HG changeset patch ++# User psadhukhan ++# Date 1444048603 -10800 ++# Node ID 9b0e9d8ccccf47b47add56dbdbd4a27cd2452af7 ++# Parent b5125fa7ef4b687b959ed353c8ff47d6eead9fe3 ++8132985: Crash in freetypescaler.c due to double free ++Reviewed-by: prr, simonis ++ ++diff -r b5125fa7ef4b -r 9b0e9d8ccccf jdk/src/share/native/sun/font/freetypeScaler.c ++--- openjdk/jdk/src/share/native/sun/font/freetypeScaler.c Mon Oct 05 15:29:23 2015 +0300 +++++ openjdk/jdk/src/share/native/sun/font/freetypeScaler.c Mon Oct 05 15:36:43 2015 +0300 ++@@ -60,6 +60,7 @@ ++ JNIEnv* env; ++ FT_Library library; ++ FT_Face face; +++ FT_Stream faceStream; ++ jobject font2D; ++ jobject directBuffer; ++ ++@@ -107,16 +108,10 @@ ++ if (scalerInfo == NULL) ++ return; ++ ++- //apparently Done_Face will only close the stream ++- // but will not relase the memory of stream structure. ++- // We need to free it explicitly to avoid leak. ++- //Direct access to the stream field might be not ideal solution as ++- // it is considred to be "private". ++- //Alternatively we could have stored pointer to the structure ++- // in the scalerInfo but this will increase size of the structure ++- // for no good reason ++- stream = scalerInfo->face->stream; ++- +++ // FT_Done_Face always closes the stream, but only frees the memory +++ // of the data structure if it was internally allocated by FT. +++ // We hold on to a pointer to the stream structure if we provide it +++ // ourselves, so that we can free it here. ++ FT_Done_Face(scalerInfo->face); ++ FT_Done_FreeType(scalerInfo->library); ++ ++@@ -128,10 +123,9 @@ ++ free(scalerInfo->fontData); ++ } ++ ++- if (stream != NULL) { ++- free(stream); ++- } ++- +++ if (scalerInfo->faceStream != NULL) { +++ free(scalerInfo->faceStream); +++ } ++ free(scalerInfo); ++ } ++ ++@@ -302,6 +296,9 @@ ++ &ft_open_args, ++ indexInCollection, ++ &scalerInfo->face); +++ if (!error) { +++ scalerInfo->faceStream = ftstream; +++ } ++ } ++ if (error || scalerInfo->directBuffer == NULL) { ++ free(ftstream); ++diff -r b5125fa7ef4b -r 9b0e9d8ccccf jdk/test/java/awt/FontClass/FontDisposer/FontDisposeTest.java ++--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++++ openjdk/jdk/test/java/awt/FontClass/FontDisposer/FontDisposeTest.java Mon Oct 05 15:36:43 2015 +0300 ++@@ -0,0 +1,84 @@ +++/* +++ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. +++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +++ * +++ * This code is free software; you can redistribute it and/or modify it +++ * under the terms of the GNU General Public License version 2 only, as +++ * published by the Free Software Foundation. +++ * +++ * This code is distributed in the hope that it will be useful, but WITHOUT +++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +++ * version 2 for more details (a copy is included in the LICENSE file that +++ * accompanied this code). +++ * +++ * You should have received a copy of the GNU General Public License version +++ * 2 along with this work; if not, write to the Free Software Foundation, +++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +++ * +++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +++ * or visit www.oracle.com if you need additional information or have any +++ * questions. +++ */ +++import java.awt.Font; +++import java.awt.Graphics2D; +++import java.awt.font.FontRenderContext; +++import java.awt.image.BufferedImage; +++import java.io.FileInputStream; +++import java.io.ByteArrayInputStream; +++import java.io.InputStream; +++import java.lang.reflect.Field; +++import java.lang.reflect.Method; +++ +++import sun.font.Font2DHandle; +++import sun.font.Font2D; +++import sun.font.FontScaler; +++import sun.font.Type1Font; +++ +++/** +++ * @bug 8132985 +++ * @summary Tests to verify Type1 Font scaler dispose crashes +++ * @modules java.desktop/sun.font +++ */ +++public class FontDisposeTest +++{ +++ public static void main(String[] args) throws Exception +++ { +++ // The bug only happens with Type 1 fonts. The Ghostscript font files +++ // should be commonly available. From distro pacakge or +++ // ftp://ftp.gnu.org/gnu/ghostscript/gnu-gs-fonts-other-6.0.tar.gz +++ // Pass pfa/pfb font file as argument +++ String path = args[0]; +++ +++ // Load +++ InputStream stream = new FileInputStream(path); +++ Font font = Font.createFont(Font.TYPE1_FONT,stream); +++ +++ // Ensure native bits have been generated +++ BufferedImage img = new BufferedImage(100,100, +++ BufferedImage.TYPE_INT_ARGB); +++ Graphics2D g2d = img.createGraphics(); +++ FontRenderContext frc = g2d.getFontRenderContext(); +++ +++ font.getLineMetrics("derp",frc); +++ +++ // Force disposal - +++ // System.gc() is not sufficient. +++ Field font2DHandleField = Font.class.getDeclaredField("font2DHandle"); +++ font2DHandleField.setAccessible(true); +++ sun.font.Font2DHandle font2DHandle = +++ (sun.font.Font2DHandle)font2DHandleField.get(font); +++ +++ sun.font.Font2D font2D = font2DHandle.font2D; +++ sun.font.Type1Font type1Font = (sun.font.Type1Font)font2D; +++ +++ Method getScalerMethod = +++ sun.font.Type1Font.class.getDeclaredMethod("getScaler"); +++ getScalerMethod.setAccessible(true); +++ sun.font.FontScaler scaler = +++ (sun.font.FontScaler)getScalerMethod.invoke(type1Font); +++ +++ // dispose should not crash due to double free +++ scaler.dispose(); +++ } +++} ++ diff --cc debian/patches/jdk-8139803-backport-warning.patch index 0000000,0000000..2961f80 new file mode 100644 --- /dev/null +++ b/debian/patches/jdk-8139803-backport-warning.patch @@@ -1,0 -1,0 +1,21 @@@ ++ ++# HG changeset patch ++# User psadhukhan ++# Date 1445944584 -10800 ++# Node ID dfeaf40df80032570558c031f37f6630dc729e3f ++# Parent 8e4b93a5a036bec10caeed3c1063b63e5ca571b1 ++8139803: Fix for 8132985 breaks OpenJDK build on windows. ++Reviewed-by: serb, simonis ++ ++diff -r 8e4b93a5a036 -r dfeaf40df800 jdk/src/share/native/sun/font/freetypeScaler.c ++--- openjdk/jdk/src/share/native/sun/font/freetypeScaler.c Tue Oct 27 14:14:08 2015 +0300 +++++ openjdk/jdk/src/share/native/sun/font/freetypeScaler.c Tue Oct 27 14:16:24 2015 +0300 ++@@ -103,7 +103,6 @@ ++ } ++ ++ static void freeNativeResources(JNIEnv *env, FTScalerInfo* scalerInfo) { ++- void *stream; ++ ++ if (scalerInfo == NULL) ++ return; ++ diff --cc debian/patches/jdk-bold-swing-fonts.patch index 0000000,0000000..f075cc7 new file mode 100644 --- /dev/null +++ b/debian/patches/jdk-bold-swing-fonts.patch @@@ -1,0 -1,0 +1,87 @@@ ++Description: Fix bold fonts in GTK applications ++ Installing certain fonts on Ubuntu triggered a corner case in the ++ OpenJDK font loader where only the bold and italic weights, not ++ regular, of the Ubuntu font would be loaded. ++ . ++ This patch is from upstream JDK8 and fixes the font loader to allow ++ styles loaded at a later time to join their proper family. ++Author: Philip Race ++Applied-Upstream: http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/rev/50c530973203 ++Bug: https://bugs.openjdk.java.net/browse/JDK-8012351 ++Bug-Ubuntu: https://bugs.launchpad.net/bugs/937200 ++ ++Index: openjdk/jdk/src/share/classes/sun/font/FontFamily.java ++=================================================================== ++--- openjdk/jdk/src/share/classes/sun/font/FontFamily.java +++++ openjdk/jdk/src/share/classes/sun/font/FontFamily.java ++@@ -25,6 +25,7 @@ ++ ++ package sun.font; ++ +++import java.io.File; ++ import java.awt.Font; ++ import java.util.HashMap; ++ import java.util.concurrent.ConcurrentHashMap; ++@@ -105,8 +106,39 @@ public class FontFamily { ++ return familyRank; ++ } ++ +++ private boolean isFromSameSource(Font2D font) { +++ if (!(font instanceof FileFont)) { +++ return false; +++ } +++ +++ FileFont existingFont = null; +++ if (plain instanceof FileFont) { +++ existingFont = (FileFont)plain; +++ } else if (bold instanceof FileFont) { +++ existingFont = (FileFont)bold; +++ } else if (italic instanceof FileFont) { +++ existingFont = (FileFont)italic; +++ } else if (bolditalic instanceof FileFont) { +++ existingFont = (FileFont)bolditalic; +++ } +++ // A family isn't created until there's a font. +++ // So if we didn't find a file font it means this +++ // isn't a file-based family. +++ if (existingFont == null) { +++ return false; +++ } +++ File existDir = (new File(existingFont.platName)).getParentFile(); +++ +++ FileFont newFont = (FileFont)font; +++ File newDir = (new File(newFont.platName)).getParentFile(); +++ return java.util.Objects.equals(newDir, existDir); +++ } +++ ++ public void setFont(Font2D font, int style) { ++- if (font.getRank() > familyRank) { +++ /* Allow a lower-rank font only if its a file font +++ * from the exact same source as any previous font. +++ */ +++ if ((font.getRank() > familyRank) && !isFromSameSource(font)) { ++ if (FontUtilities.isLogging()) { ++ FontUtilities.getLogger() ++ .warning("Rejecting adding " + font + ++Index: openjdk/jdk/src/share/classes/sun/font/SunFontManager.java ++=================================================================== ++--- openjdk/jdk/src/share/classes/sun/font/SunFontManager.java +++++ openjdk/jdk/src/share/classes/sun/font/SunFontManager.java ++@@ -764,7 +764,7 @@ public abstract class SunFontManager imp ++ if (family == null) { ++ family = new FontFamily(familyName, false, rank); ++ family.setFont(f, f.style); ++- } else if (family.getRank() >= rank) { +++ } else { ++ family.setFont(f, f.style); ++ } ++ fullNameToFont.put(fontName.toLowerCase(Locale.ENGLISH), f); ++@@ -855,7 +855,7 @@ public abstract class SunFontManager imp ++ if (family == null) { ++ family = new FontFamily(familyName, false, rank); ++ family.setFont(newFont, newFont.style); ++- } else if (family.getRank() >= rank) { +++ } else { ++ family.setFont(newFont, newFont.style); ++ } ++ return newFont; diff --cc debian/patches/jdk-getAccessibleValue.diff index 0000000,0000000..a666d46 new file mode 100644 --- /dev/null +++ b/debian/patches/jdk-getAccessibleValue.diff @@@ -1,0 -1,0 +1,243 @@@ ++--- openjdk/jdk/src/share/classes/javax/swing/JList.java.orig +++++ openjdk/jdk/src/share/classes/javax/swing/JList.java ++@@ -3371,7 +3371,12 @@ public class JList extends JComponent ++ } ++ ++ public AccessibleAction getAccessibleAction() { ++- return getCurrentAccessibleContext().getAccessibleAction(); +++ AccessibleContext ac = getCurrentAccessibleContext(); +++ if (ac != null) { +++ return ac.getAccessibleAction(); +++ } else { +++ return null; +++ } ++ } ++ ++ /** ++@@ -3387,15 +3392,30 @@ public class JList extends JComponent ++ } ++ ++ public AccessibleSelection getAccessibleSelection() { ++- return getCurrentAccessibleContext().getAccessibleSelection(); +++ AccessibleContext ac = getCurrentAccessibleContext(); +++ if (ac != null) { +++ return ac.getAccessibleSelection(); +++ } else { +++ return null; +++ } ++ } ++ ++ public AccessibleText getAccessibleText() { ++- return getCurrentAccessibleContext().getAccessibleText(); +++ AccessibleContext ac = getCurrentAccessibleContext(); +++ if (ac != null) { +++ return ac.getAccessibleText(); +++ } else { +++ return null; +++ } ++ } ++ ++ public AccessibleValue getAccessibleValue() { ++- return getCurrentAccessibleContext().getAccessibleValue(); +++ AccessibleContext ac = getCurrentAccessibleContext(); +++ if (ac != null) { +++ return ac.getAccessibleValue(); +++ } else { +++ return null; +++ } ++ } ++ ++ ++--- openjdk/jdk/src/share/classes/javax/swing/JTable.java.orig +++++ openjdk/jdk/src/share/classes/javax/swing/JTable.java ++@@ -8231,7 +8231,12 @@ public class JTable extends JComponent i ++ * @return the AccessibleAction, or null ++ */ ++ public AccessibleAction getAccessibleAction() { ++- return getCurrentAccessibleContext().getAccessibleAction(); +++ AccessibleContext ac = getCurrentAccessibleContext(); +++ if (ac != null) { +++ return ac.getAccessibleAction(); +++ } else { +++ return null; +++ } ++ } ++ ++ /** ++@@ -8253,7 +8258,12 @@ public class JTable extends JComponent i ++ * null ++ */ ++ public AccessibleSelection getAccessibleSelection() { ++- return getCurrentAccessibleContext().getAccessibleSelection(); +++ AccessibleContext ac = getCurrentAccessibleContext(); +++ if (ac != null) { +++ return ac.getAccessibleSelection(); +++ } else { +++ return null; +++ } ++ } ++ ++ /** ++@@ -8263,7 +8273,12 @@ public class JTable extends JComponent i ++ * @return the AccessibleText, or null ++ */ ++ public AccessibleText getAccessibleText() { ++- return getCurrentAccessibleContext().getAccessibleText(); +++ AccessibleContext ac = getCurrentAccessibleContext(); +++ if (ac != null) { +++ return ac.getAccessibleText(); +++ } else { +++ return null; +++ } ++ } ++ ++ /** ++@@ -8273,7 +8288,12 @@ public class JTable extends JComponent i ++ * @return the AccessibleValue, or null ++ */ ++ public AccessibleValue getAccessibleValue() { ++- return getCurrentAccessibleContext().getAccessibleValue(); +++ AccessibleContext ac = getCurrentAccessibleContext(); +++ if (ac != null) { +++ return ac.getAccessibleValue(); +++ } else { +++ return null; +++ } ++ } ++ ++ ++@@ -9032,7 +9052,12 @@ public class JTable extends JComponent i ++ * @return the AccessibleAction, or null ++ */ ++ public AccessibleAction getAccessibleAction() { ++- return getCurrentAccessibleContext().getAccessibleAction(); +++ AccessibleContext ac = getCurrentAccessibleContext(); +++ if (ac != null) { +++ return ac.getAccessibleAction(); +++ } else { +++ return null; +++ } ++ } ++ ++ /** ++@@ -9054,7 +9079,12 @@ public class JTable extends JComponent i ++ * null ++ */ ++ public AccessibleSelection getAccessibleSelection() { ++- return getCurrentAccessibleContext().getAccessibleSelection(); +++ AccessibleContext ac = getCurrentAccessibleContext(); +++ if (ac != null) { +++ return ac.getAccessibleSelection(); +++ } else { +++ return null; +++ } ++ } ++ ++ /** ++@@ -9064,7 +9094,12 @@ public class JTable extends JComponent i ++ * @return the AccessibleText, or null ++ */ ++ public AccessibleText getAccessibleText() { ++- return getCurrentAccessibleContext().getAccessibleText(); +++ AccessibleContext ac = getCurrentAccessibleContext(); +++ if (ac != null) { +++ return ac.getAccessibleText(); +++ } else { +++ return null; +++ } ++ } ++ ++ /** ++@@ -9074,7 +9109,12 @@ public class JTable extends JComponent i ++ * @return the AccessibleValue, or null ++ */ ++ public AccessibleValue getAccessibleValue() { ++- return getCurrentAccessibleContext().getAccessibleValue(); +++ AccessibleContext ac = getCurrentAccessibleContext(); +++ if (ac != null) { +++ return ac.getAccessibleValue(); +++ } else { +++ return null; +++ } ++ } ++ ++ ++--- openjdk/jdk/src/share/classes/javax/swing/JTree.java.orig +++++ openjdk/jdk/src/share/classes/javax/swing/JTree.java ++@@ -4922,7 +4922,7 @@ public class JTree extends JComponent im ++ public AccessibleSelection getAccessibleSelection() { ++ AccessibleContext ac = getCurrentAccessibleContext(); ++ if (ac != null && isLeaf) { ++- return getCurrentAccessibleContext().getAccessibleSelection(); +++ return ac.getAccessibleSelection(); ++ } else { ++ return this; ++ } ++@@ -4937,7 +4937,7 @@ public class JTree extends JComponent im ++ public AccessibleText getAccessibleText() { ++ AccessibleContext ac = getCurrentAccessibleContext(); ++ if (ac != null) { ++- return getCurrentAccessibleContext().getAccessibleText(); +++ return ac.getAccessibleText(); ++ } else { ++ return null; ++ } ++@@ -4952,7 +4952,7 @@ public class JTree extends JComponent im ++ public AccessibleValue getAccessibleValue() { ++ AccessibleContext ac = getCurrentAccessibleContext(); ++ if (ac != null) { ++- return getCurrentAccessibleContext().getAccessibleValue(); +++ return ac.getAccessibleValue(); ++ } else { ++ return null; ++ } ++--- openjdk/jdk/src/share/classes/javax/swing/table/JTableHeader.java.orig +++++ openjdk/jdk/src/share/classes/javax/swing/table/JTableHeader.java ++@@ -1083,7 +1083,12 @@ public class JTableHeader extends JCompo ++ } ++ ++ public AccessibleAction getAccessibleAction() { ++- return getCurrentAccessibleContext().getAccessibleAction(); +++ AccessibleContext ac = getCurrentAccessibleContext(); +++ if (ac != null) { +++ return ac.getAccessibleAction(); +++ } else { +++ return null; +++ } ++ } ++ ++ /** ++@@ -1099,15 +1104,30 @@ public class JTableHeader extends JCompo ++ } ++ ++ public AccessibleSelection getAccessibleSelection() { ++- return getCurrentAccessibleContext().getAccessibleSelection(); +++ AccessibleContext ac = getCurrentAccessibleContext(); +++ if (ac != null) { +++ return ac.getAccessibleSelection(); +++ } else { +++ return null; +++ } ++ } ++ ++ public AccessibleText getAccessibleText() { ++- return getCurrentAccessibleContext().getAccessibleText(); +++ AccessibleContext ac = getCurrentAccessibleContext(); +++ if (ac != null) { +++ return ac.getAccessibleText(); +++ } else { +++ return null; +++ } ++ } ++ ++ public AccessibleValue getAccessibleValue() { ++- return getCurrentAccessibleContext().getAccessibleValue(); +++ AccessibleContext ac = getCurrentAccessibleContext(); +++ if (ac != null) { +++ return ac.getAccessibleValue(); +++ } else { +++ return null; +++ } ++ } ++ ++ diff --cc debian/patches/jdk-pulseaudio.diff index 0000000,0000000..ac11ab7 new file mode 100644 --- /dev/null +++ b/debian/patches/jdk-pulseaudio.diff @@@ -1,0 -1,0 +1,16 @@@ ++--- openjdk/jdk/src/share/lib/sound.properties 2008-08-28 04:15:18.000000000 -0400 +++++ openjdk/jdk/src/share/lib/sound.properties 2008-10-03 16:59:21.000000000 -0400 ++@@ -37,3 +37,13 @@ ++ # Specify the default Receiver by provider and name: ++ # javax.sound.midi.Receiver=com.sun.media.sound.MidiProvider#SunMIDI1 ++ # +++ +++javax.sound.sampled.Clip=org.classpath.icedtea.pulseaudio.PulseAudioMixerProvider +++javax.sound.sampled.Port=org.classpath.icedtea.pulseaudio.PulseAudioMixerProvider +++javax.sound.sampled.SourceDataLine=org.classpath.icedtea.pulseaudio.PulseAudioMixerProvider +++javax.sound.sampled.TargetDataLine=org.classpath.icedtea.pulseaudio.PulseAudioMixerProvider +++ +++#javax.sound.sampled.Clip=com.sun.media.sound.DirectAudioDeviceProvider +++#javax.sound.sampled.Port=com.sun.media.sound.PortMixerProvider +++#javax.sound.sampled.SourceDataLine=com.sun.media.sound.DirectAudioDeviceProvider +++#javax.sound.sampled.TargetDataLine=com.sun.media.sound.DirectAudioDeviceProvider diff --cc debian/patches/jdk-zero-arch.diff index 0000000,0000000..0b61a3a new file mode 100644 --- /dev/null +++ b/debian/patches/jdk-zero-arch.diff @@@ -1,0 -1,0 +1,29 @@@ ++--- openjdk/jdk/make/jdk_generic_profile.sh~ 2013-07-25 18:10:09.000000000 +0200 +++++ openjdk/jdk/make/jdk_generic_profile.sh 2013-08-05 02:56:33.016845707 +0200 ++@@ -269,7 +269,7 @@ ++ i386|ppc|s390|sparc|arm|sh) ++ ARCH_DATA_MODEL=32 ++ ;; ++- amd64|ppc64|s390x|sparcv9|ia64|alpha) +++ aarch64|amd64|ppc64|s390x|sparcv9|ia64|alpha) ++ ARCH_DATA_MODEL=64 ++ ;; ++ *) ++@@ -280,7 +280,7 @@ ++ ++ # ZERO_ENDIANNESS is the endianness of the processor ++ case "${ZERO_LIBARCH}" in ++- i386|amd64|ia64|arm) +++ i386|amd64|ia64|arm|aarch64|mipsel) ++ ZERO_ENDIANNESS=little ++ ;; ++ ppc*|s390*|sparc*|alpha) ++@@ -307,7 +307,7 @@ ++ s390) ++ ZERO_ARCHFLAG="-m31" ++ ;; ++- arm) +++ arm|aarch64) ++ ZERO_ARCHFLAG="-D_LITTLE_ENDIAN" ++ ;; ++ *) diff --cc debian/patches/jexec.diff.in index 0000000,0000000..3e17f3c new file mode 100644 --- /dev/null +++ b/debian/patches/jexec.diff.in @@@ -1,0 -1,0 +1,14 @@@ ++--- openjdk/jdk/src/solaris/bin/jexec.c +++++ openjdk/jdk/src/solaris/bin/jexec.c ++@@ -164,9 +164,10 @@ ++ ++ /* Get the path to the java binary, which is in a known position relative ++ * to our current position, which is in argv[0]. */ ++- if (getJavaPath(argv[argi++], java, RELATIVE_DEPTH) != 0) { +++ if (getJavaPath("/@basedir@/jre/lib/jexec", java, RELATIVE_DEPTH) != 0) { ++ errorExit(errno, MISSING_JAVA_MSG); ++ } +++ argi++; ++ ++ nargv = (const char **) malloc((argc + 2) * (sizeof (const char *))); ++ nargv[nargc++] = java; diff --cc debian/patches/kfreebsd-support-corba.diff index 0000000,0000000..d7c9efd new file mode 100644 --- /dev/null +++ b/debian/patches/kfreebsd-support-corba.diff @@@ -1,0 -1,0 +1,18 @@@ ++Description: Initial GNU/kFreeBSD support for openjdk-7 (Corba part) ++ - Alter build system to consider GNU/kFreeBSD like linux ++ since this port is libc based. ++ openjdk/corba/make/common/shared/Platform.gmk ++Author: Damien Raude-Morvan ++Last-Update: 2011-06-28 ++Forwarded: no ++--- openjdk/corba/make/common/shared/Platform.gmk.orig +++++ openjdk/corba/make/common/shared/Platform.gmk ++@@ -147,7 +147,7 @@ ifeq ($(SYSTEM_UNAME), SunOS) ++ endif ++ ++ # Platform settings specific to Linux ++-ifeq ($(SYSTEM_UNAME), Linux) +++ifneq (,$(filter Linux GNU/kFreeBSD, $(SYSTEM_UNAME))) ++ PLATFORM = linux ++ OS_NAME = linux ++ OS_VERSION := $(shell uname -r) diff --cc debian/patches/kfreebsd-support-hotspot.diff index 0000000,0000000..21ea15a new file mode 100644 --- /dev/null +++ b/debian/patches/kfreebsd-support-hotspot.diff @@@ -1,0 -1,0 +1,872 @@@ ++--- openjdk/hotspot/src/os/posix/launcher/java_md.c.orig +++++ openjdk/hotspot/src/os/posix/launcher/java_md.c ++@@ -41,7 +41,7 @@ ++ #include "version_comp.h" ++ #endif ++ ++-#if defined(__linux__) || defined(_ALLBSD_SOURCE) +++#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined(__GLIBC__) ++ #include ++ #else ++ #include ++@@ -107,7 +107,7 @@ extern char **environ; ++ * 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__ +++#if defined(__linux__) || defined(__GLIBC__) ++ static const char *system_dir = "/usr/java"; ++ static const char *user_dir = "/java"; ++ #else /* Solaris */ ++@@ -444,7 +444,7 @@ CreateExecutionEnvironment(int *_argcp, ++ runpath = getenv(LD_LIBRARY_PATH); ++ #endif /* __sun */ ++ ++-#if defined(__linux__) +++#if defined(__linux__) || defined(__GLIBC__) ++ /* ++ * On linux, if a binary is running as sgid or suid, glibc sets ++ * LD_LIBRARY_PATH to the empty string for security purposes. (In ++@@ -834,7 +834,7 @@ error: ++ jboolean ++ GetApplicationHome(char *buf, jint bufsize) ++ { ++-#if defined(__linux__) || defined(_ALLBSD_SOURCE) +++#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined(__GLIBC__) ++ char *execname = GetExecname(); ++ if (execname) { ++ strncpy(buf, execname, bufsize-1); ++@@ -1003,7 +1003,7 @@ SetExecname(char **argv) ++ } ++ } ++ } ++-#elif defined(__linux__) +++#elif defined(__linux__) || defined(__GLIBC__) ++ { ++ const char* self = "/proc/self/exe"; ++ char buf[PATH_MAX+1]; ++@@ -1898,7 +1898,7 @@ jlong_format_specifier() { ++ int ++ ContinueInNewThread(int (JNICALL *continuation)(void *), jlong stack_size, void * args) { ++ int rslt; ++-#if defined(__linux__) || defined(AIX) || defined(_ALLBSD_SOURCE) +++#if defined(__linux__) || defined(AIX) || defined(_ALLBSD_SOURCE) || defined(__GLIBC__) ++ pthread_t tid; ++ pthread_attr_t attr; ++ pthread_attr_init(&attr); ++--- openjdk/hotspot/src/os/linux/vm/decoder_linux.cpp.orig +++++ openjdk/hotspot/src/os/linux/vm/decoder_linux.cpp ++@@ -22,6 +22,7 @@ ++ * ++ */ ++ +++#include "utilities/globalDefinitions.hpp" ++ #include "prims/jvm.h" ++ #include "utilities/decoder_elf.hpp" ++ ++--- openjdk/hotspot/src/os/linux/vm/attachListener_linux.cpp.orig +++++ openjdk/hotspot/src/os/linux/vm/attachListener_linux.cpp ++@@ -39,6 +39,10 @@ ++ #define UNIX_PATH_MAX sizeof(((struct sockaddr_un *)0)->sun_path) ++ #endif ++ +++#if defined(__FreeBSD_kernel__) +++#include +++#endif +++ ++ // The attach mechanism on Linux uses a UNIX domain socket. An attach listener ++ // thread is created at startup or is created on-demand via a signal from ++ // the client tool. The attach listener creates a socket and binds it to a file ++@@ -337,9 +341,15 @@ LinuxAttachOperation* LinuxAttachListene ++ ++ // get the credentials of the peer and check the effective uid/guid ++ // - check with jeff on this. +++#if defined(LOCAL_PEERCRED) /* GNU/kFreeBSD */ +++ struct xucred cred_info; +++ socklen_t optlen = sizeof(cred_info); +++ if (::getsockopt(s, SOL_SOCKET, LOCAL_PEERCRED, (void*)&cred_info, &optlen) == -1) { +++#else ++ struct ucred cred_info; ++ socklen_t optlen = sizeof(cred_info); ++ if (::getsockopt(s, SOL_SOCKET, SO_PEERCRED, (void*)&cred_info, &optlen) == -1) { +++#endif ++ int res; ++ RESTARTABLE(::close(s), res); ++ continue; ++@@ -347,7 +357,11 @@ LinuxAttachOperation* LinuxAttachListene ++ uid_t euid = geteuid(); ++ gid_t egid = getegid(); ++ +++#if defined(LOCAL_PEERCRED) /* GNU/kFreeBSD */ +++ if (cred_info.cr_uid != euid || cred_info.cr_gid != egid) { +++#else ++ if (cred_info.uid != euid || cred_info.gid != egid) { +++#endif ++ int res; ++ RESTARTABLE(::close(s), res); ++ continue; ++--- openjdk/hotspot/src/os/linux/vm/jvm_linux.cpp.orig +++++ openjdk/hotspot/src/os/linux/vm/jvm_linux.cpp ++@@ -169,7 +169,9 @@ struct siglabel siglabels[] = { ++ "WINCH", SIGWINCH, /* Window size change (4.3 BSD, Sun). */ ++ "POLL", SIGPOLL, /* Pollable event occurred (System V). */ ++ "IO", SIGIO, /* I/O now possible (4.2 BSD). */ +++#ifdef SIGPWR ++ "PWR", SIGPWR, /* Power failure restart (System V). */ +++#endif ++ #ifdef SIGSYS ++ "SYS", SIGSYS /* Bad system call. Only on some Linuxen! */ ++ #endif ++--- openjdk/hotspot/src/os/linux/vm/os_linux.cpp.orig +++++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp ++@@ -22,6 +22,7 @@ ++ * ++ */ ++ +++#include "utilities/globalDefinitions.hpp" ++ // no precompiled headers ++ #include "classfile/classLoader.hpp" ++ #include "classfile/systemDictionary.hpp" ++@@ -114,8 +115,16 @@ ++ # include ++ # include ++ # include +++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) +++# include +++# include +++#ifndef ETIME +++# define ETIME ETIMEDOUT +++#endif +++#else ++ # include ++ # include +++#endif ++ # include ++ # include ++ # include ++@@ -224,11 +233,22 @@ julong os::available_memory() { ++ } ++ ++ julong os::Linux::available_memory() { +++#ifndef __FreeBSD_kernel__ ++ // values in struct sysinfo are "unsigned long" ++ struct sysinfo si; ++ sysinfo(&si); ++ ++ return (julong)si.freeram * si.mem_unit; +++#else +++ int mib[2] = {CTL_HW, HW_USERMEM}, mem; +++ size_t len; +++ len = sizeof(mem); +++ if (sysctl(mib, 2, &mem, &len, NULL, 0) == 0) { +++ return (julong) mem; +++ } else { +++ return 0; +++ } +++#endif ++ } ++ ++ julong os::physical_memory() { ++@@ -2325,18 +2345,22 @@ void os::print_memory_info(outputStream* ++ st->print("Memory:"); ++ st->print(" %dk page", os::vm_page_size()>>10); ++ +++#ifndef __FreeBSD_kernel__ ++ // values in struct sysinfo are "unsigned long" ++ struct sysinfo si; ++ sysinfo(&si); +++#endif ++ ++ st->print(", physical " UINT64_FORMAT "k", ++ os::physical_memory() >> 10); ++ st->print("(" UINT64_FORMAT "k free)", ++ os::available_memory() >> 10); +++#ifndef __FreeBSD_kernel__ ++ 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(); ++ } ++ ++@@ -6218,8 +6242,12 @@ int os::fork_and_exec(char* cmd) { ++ #if defined(SPARC) ++ sparc_fork(__NR_fork, &pid, &is_child); ++ #else +++#ifdef __linux__ ++ pid = NOT_IA64(syscall(__NR_fork);) ++ IA64_ONLY(fork();) +++#else +++ pid = fork(); +++#endif ++ ++ // set the is_child flag by checking the pid ++ if (pid == 0) { ++@@ -6236,6 +6264,7 @@ int os::fork_and_exec(char* cmd) { ++ } else if (is_child) { ++ // child process ++ +++#ifdef __linux__ ++ // execve() in LinuxThreads will call pthread_kill_other_threads_np() ++ // first to kill every thread on the thread list. Because this list is ++ // not reset by fork() (see notes above), execve() will instead kill ++@@ -6245,6 +6274,9 @@ int os::fork_and_exec(char* cmd) { ++ // above. ++ NOT_IA64(syscall(__NR_execve, "/bin/sh", argv, environ);) ++ IA64_ONLY(execve("/bin/sh", (char* const*)argv, environ);) +++#else +++ execve("/bin/sh", (char* const*)argv, environ); +++#endif ++ ++ // execve failed ++ _exit(-1); ++--- openjdk/hotspot/src/os/linux/vm/osThread_linux.cpp.orig +++++ openjdk/hotspot/src/os/linux/vm/osThread_linux.cpp ++@@ -22,6 +22,7 @@ ++ * ++ */ ++ +++#include "utilities/globalDefinitions.hpp" ++ // no precompiled headers ++ #include "runtime/atomic.hpp" ++ #include "runtime/handles.inline.hpp" ++--- openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp.orig +++++ openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp ++@@ -22,6 +22,7 @@ ++ * ++ */ ++ +++#include "utilities/globalDefinitions.hpp" ++ // no precompiled headers ++ #include "assembler_x86.inline.hpp" ++ #include "classfile/classLoader.hpp" ++@@ -75,6 +76,7 @@ ++ # include ++ # include ++ +++#ifdef __linux__ ++ #ifdef AMD64 ++ #define REG_SP REG_RSP ++ #define REG_PC REG_RIP ++@@ -88,6 +90,54 @@ ++ #define SPELL_REG_SP "esp" ++ #define SPELL_REG_FP "ebp" ++ #endif // AMD64 +++#endif +++ +++#if defined(__FreeBSD_kernel__) +++#define context_trapno uc_mcontext.mc_trapno +++#ifdef AMD64 +++#define SPELL_REG_SP "rsp" +++#define SPELL_REG_FP "rbp" +++#define context_sp uc_mcontext.mc_rsp +++#define context_pc uc_mcontext.mc_rip +++#define context_fp uc_mcontext.mc_rbp +++#define context_rip uc_mcontext.mc_rip +++#define context_rsp uc_mcontext.mc_rsp +++#define context_rbp uc_mcontext.mc_rbp +++#define context_flags uc_mcontext.mc_flags +++#define context_err uc_mcontext.mc_err +++#define context_rax uc_mcontext.mc_rax +++#define context_rbx uc_mcontext.mc_rbx +++#define context_rcx uc_mcontext.mc_rcx +++#define context_rdx uc_mcontext.mc_rdx +++#define context_rsi uc_mcontext.mc_rsi +++#define context_rdi uc_mcontext.mc_rdi +++#define context_r8 uc_mcontext.mc_r8 +++#define context_r9 uc_mcontext.mc_r9 +++#define context_r10 uc_mcontext.mc_r10 +++#define context_r11 uc_mcontext.mc_r11 +++#define context_r12 uc_mcontext.mc_r12 +++#define context_r13 uc_mcontext.mc_r13 +++#define context_r14 uc_mcontext.mc_r14 +++#define context_r15 uc_mcontext.mc_r15 +++#else +++#define SPELL_REG_SP "esp" +++#define SPELL_REG_FP "ebp" +++#define context_sp uc_mcontext.mc_esp +++#define context_pc uc_mcontext.mc_eip +++#define context_fp uc_mcontext.mc_ebp +++#define context_eip uc_mcontext.mc_eip +++#define context_esp uc_mcontext.mc_esp +++#define context_eax uc_mcontext.mc_eax +++#define context_ebx uc_mcontext.mc_ebx +++#define context_ecx uc_mcontext.mc_ecx +++#define context_edx uc_mcontext.mc_edx +++#define context_ebp uc_mcontext.mc_ebp +++#define context_esi uc_mcontext.mc_esi +++#define context_edi uc_mcontext.mc_edi +++#define context_eflags uc_mcontext.mc_eflags +++#define context_trapno uc_mcontext.mc_trapno +++#endif // AMD64 +++#endif ++ ++ address os::current_stack_pointer() { ++ #ifdef SPARC_WORKS ++@@ -113,15 +163,27 @@ void os::initialize_thread(Thread* thr) ++ } ++ ++ address os::Linux::ucontext_get_pc(ucontext_t * uc) { +++#if defined(__FreeBSD_kernel__) +++ return (address)uc->context_pc; +++#else ++ return (address)uc->uc_mcontext.gregs[REG_PC]; +++#endif ++ } ++ ++ intptr_t* os::Linux::ucontext_get_sp(ucontext_t * uc) { +++#if defined(__FreeBSD_kernel__) +++ return (intptr_t*)uc->context_sp; +++#else ++ return (intptr_t*)uc->uc_mcontext.gregs[REG_SP]; +++#endif ++ } ++ ++ intptr_t* os::Linux::ucontext_get_fp(ucontext_t * uc) { +++#if defined(__FreeBSD_kernel__) +++ return (intptr_t*)uc->context_fp; +++#else ++ return (intptr_t*)uc->uc_mcontext.gregs[REG_FP]; +++#endif ++ } ++ ++ // For Forte Analyzer AsyncGetCallTrace profiling support - thread ++@@ -277,12 +339,20 @@ JVM_handle_linux_signal(int sig, ++ pc = (address) os::Linux::ucontext_get_pc(uc); ++ ++ if (pc == (address) Fetch32PFI) { +++#if defined(__FreeBSD_kernel__) +++ uc->context_pc = intptr_t(Fetch32Resume) ; +++#else ++ uc->uc_mcontext.gregs[REG_PC] = intptr_t(Fetch32Resume) ; +++#endif ++ return 1 ; ++ } ++ #ifdef AMD64 ++ if (pc == (address) FetchNPFI) { +++#if defined(__FreeBSD_kernel__) +++ uc->context_pc = intptr_t (FetchNResume) ; +++#else ++ uc->uc_mcontext.gregs[REG_PC] = intptr_t (FetchNResume) ; +++#endif ++ return 1 ; ++ } ++ #endif // AMD64 ++@@ -433,7 +503,11 @@ JVM_handle_linux_signal(int sig, ++ // Furthermore, a false-positive should be harmless. ++ if (UnguardOnExecutionViolation > 0 && ++ (sig == SIGSEGV || sig == SIGBUS) && +++#if defined(__FreeBSD_kernel__) +++ uc->context_trapno == trap_page_fault) { +++#else ++ uc->uc_mcontext.gregs[REG_TRAPNO] == trap_page_fault) { +++#endif ++ int page_size = os::vm_page_size(); ++ address addr = (address) info->si_addr; ++ address pc = os::Linux::ucontext_get_pc(uc); ++@@ -503,7 +577,11 @@ JVM_handle_linux_signal(int sig, ++ // save all thread context in case we need to restore it ++ if (thread != NULL) thread->set_saved_exception_pc(pc); ++ +++#if defined(__FreeBSD_kernel__) +++ uc->context_pc = (intptr_t)stub; +++#else ++ uc->uc_mcontext.gregs[REG_PC] = (greg_t)stub; +++#endif ++ return true; ++ } ++ ++@@ -755,6 +833,7 @@ void os::print_context(outputStream *st, ++ ++ ucontext_t *uc = (ucontext_t*)context; ++ st->print_cr("Registers:"); +++#ifdef __linux__ ++ #ifdef AMD64 ++ st->print( "RAX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RAX]); ++ st->print(", RBX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RBX]); ++@@ -797,6 +876,48 @@ void os::print_context(outputStream *st, ++ st->print(", EFLAGS=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_EFL]); ++ st->print(", CR2=" INTPTR_FORMAT, uc->uc_mcontext.cr2); ++ #endif // AMD64 +++#elif defined(__FreeBSD_kernel__) +++#ifdef AMD64 +++ st->print( "RAX=" INTPTR_FORMAT, uc->context_rax); +++ st->print(", RBX=" INTPTR_FORMAT, uc->context_rbx); +++ st->print(", RCX=" INTPTR_FORMAT, uc->context_rcx); +++ st->print(", RDX=" INTPTR_FORMAT, uc->context_rdx); +++ st->cr(); +++ st->print( "RSP=" INTPTR_FORMAT, uc->context_rsp); +++ st->print(", RBP=" INTPTR_FORMAT, uc->context_rbp); +++ st->print(", RSI=" INTPTR_FORMAT, uc->context_rsi); +++ st->print(", RDI=" INTPTR_FORMAT, uc->context_rdi); +++ st->cr(); +++ st->print( "R8 =" INTPTR_FORMAT, uc->context_r8); +++ st->print(", R9 =" INTPTR_FORMAT, uc->context_r9); +++ st->print(", R10=" INTPTR_FORMAT, uc->context_r10); +++ st->print(", R11=" INTPTR_FORMAT, uc->context_r11); +++ st->cr(); +++ st->print( "R12=" INTPTR_FORMAT, uc->context_r12); +++ st->print(", R13=" INTPTR_FORMAT, uc->context_r13); +++ st->print(", R14=" INTPTR_FORMAT, uc->context_r14); +++ st->print(", R15=" INTPTR_FORMAT, uc->context_r15); +++ st->cr(); +++ st->print( "RIP=" INTPTR_FORMAT, uc->context_rip); +++ st->print(", EFLAGS=" INTPTR_FORMAT, uc->context_flags); +++ st->print(", ERR=" INTPTR_FORMAT, uc->context_err); +++ st->cr(); +++ st->print(" TRAPNO=" INTPTR_FORMAT, uc->context_trapno); +++#else +++ st->print( "EAX=" INTPTR_FORMAT, uc->context_eax); +++ st->print(", EBX=" INTPTR_FORMAT, uc->context_ebx); +++ st->print(", ECX=" INTPTR_FORMAT, uc->context_ecx); +++ st->print(", EDX=" INTPTR_FORMAT, uc->context_edx); +++ st->cr(); +++ st->print( "ESP=" INTPTR_FORMAT, uc->context_esp); +++ st->print(", EBP=" INTPTR_FORMAT, uc->context_ebp); +++ st->print(", ESI=" INTPTR_FORMAT, uc->context_esi); +++ st->print(", EDI=" INTPTR_FORMAT, uc->context_edi); +++ st->cr(); +++ st->print( "EIP=" INTPTR_FORMAT, uc->context_eip); +++ st->print(", EFLAGS=" INTPTR_FORMAT, uc->context_eflags); +++#endif // AMD64 +++#endif ++ st->cr(); ++ st->cr(); ++ ++@@ -827,6 +948,7 @@ void os::print_register_info(outputStrea ++ ++ // this is only for the "general purpose" registers ++ +++#ifdef __linux__ ++ #ifdef AMD64 ++ st->print("RAX="); print_location(st, uc->uc_mcontext.gregs[REG_RAX]); ++ st->print("RBX="); print_location(st, uc->uc_mcontext.gregs[REG_RBX]); ++@@ -854,6 +976,35 @@ void os::print_register_info(outputStrea ++ st->print("ESI="); print_location(st, uc->uc_mcontext.gregs[REG_ESI]); ++ st->print("EDI="); print_location(st, uc->uc_mcontext.gregs[REG_EDI]); ++ #endif // AMD64 +++#elif defined(__FreeBSD_kernel__) +++#ifdef AMD64 +++ st->print("RAX="); print_location(st, uc->context_rax); +++ st->print("RBX="); print_location(st, uc->context_rbx); +++ st->print("RCX="); print_location(st, uc->context_rcx); +++ st->print("RDX="); print_location(st, uc->context_rdx); +++ st->print("RSP="); print_location(st, uc->context_rsp); +++ st->print("RBP="); print_location(st, uc->context_rbp); +++ st->print("RSI="); print_location(st, uc->context_rsi); +++ st->print("RDI="); print_location(st, uc->context_rdi); +++ st->print("R8 ="); print_location(st, uc->context_r8); +++ st->print("R9 ="); print_location(st, uc->context_r9); +++ st->print("R10="); print_location(st, uc->context_r10); +++ st->print("R11="); print_location(st, uc->context_r11); +++ st->print("R12="); print_location(st, uc->context_r12); +++ st->print("R13="); print_location(st, uc->context_r13); +++ st->print("R14="); print_location(st, uc->context_r14); +++ st->print("R15="); print_location(st, uc->context_r15); +++#else +++ st->print("EAX="); print_location(st, uc->context_eax); +++ st->print("EBX="); print_location(st, uc->context_ebx); +++ st->print("ECX="); print_location(st, uc->context_ecx); +++ st->print("EDX="); print_location(st, uc->context_edx); +++ st->print("ESP="); print_location(st, uc->context_esp); +++ st->print("EBP="); print_location(st, uc->context_ebp); +++ st->print("ESI="); print_location(st, uc->context_esi); +++ st->print("EDI="); print_location(st, uc->context_edi); +++#endif // AMD64 +++#endif ++ ++ st->cr(); ++ } ++--- openjdk/hotspot/src/share/vm/memory/allocation.hpp.orig +++++ openjdk/hotspot/src/share/vm/memory/allocation.hpp ++@@ -25,8 +25,8 @@ ++ #ifndef SHARE_VM_MEMORY_ALLOCATION_HPP ++ #define SHARE_VM_MEMORY_ALLOCATION_HPP ++ ++-#include "runtime/globals.hpp" ++ #include "utilities/globalDefinitions.hpp" +++#include "runtime/globals.hpp" ++ #ifdef COMPILER1 ++ #include "c1/c1_globals.hpp" ++ #endif ++--- openjdk/hotspot/src/share/vm/ci/ciObject.hpp.orig +++++ openjdk/hotspot/src/share/vm/ci/ciObject.hpp ++@@ -25,6 +25,7 @@ ++ #ifndef SHARE_VM_CI_CIOBJECT_HPP ++ #define SHARE_VM_CI_CIOBJECT_HPP ++ +++#include "utilities/globalDefinitions.hpp" ++ #include "ci/ciClassList.hpp" ++ #include "memory/allocation.hpp" ++ #include "runtime/handles.hpp" ++--- openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp.orig +++++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp ++@@ -22,6 +22,7 @@ ++ * ++ */ ++ +++#include "utilities/globalDefinitions.hpp" ++ // no precompiled headers ++ #include "classfile/vmSymbols.hpp" ++ #include "gc_interface/collectedHeap.hpp" ++--- openjdk/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp.orig +++++ openjdk/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp ++@@ -76,7 +76,7 @@ ++ # include ++ # endif ++ ++-#if defined(LINUX) || defined(_ALLBSD_SOURCE) +++#if defined(LINUX) || defined(_ALLBSD_SOURCE) || defined(__FreeBSD_kernel__) ++ #ifndef __STDC_LIMIT_MACROS ++ #define __STDC_LIMIT_MACROS ++ #endif // __STDC_LIMIT_MACROS ++--- openjdk/hotspot/make/defs.make.orig +++++ openjdk/hotspot/make/defs.make ++@@ -152,9 +152,6 @@ endif ++ # Windows should have OS predefined ++ ifeq ($(OS),) ++ OS := $(shell uname -s) ++- ifneq ($(findstring BSD,$(OS)),) ++- OS=bsd ++- endif ++ ifeq ($(OS), Darwin) ++ OS=bsd ++ endif ++@@ -180,6 +177,10 @@ else ++ OSNAME=linux ++ endif ++ +++ifeq ($(OS), GNU/kFreeBSD) +++ OSNAME=linux +++endif +++ ++ # Determinations of default make arguments and platform specific settings ++ MAKE_ARGS= ++ ++--- openjdk/hotspot/make/linux/Makefile.orig +++++ openjdk/hotspot/make/linux/Makefile ++@@ -258,6 +258,9 @@ checks: check_os_version check_j2se_vers ++ SUPPORTED_OS_VERSION = 2.4% 2.5% 2.6% 3% 4% ++ OS_VERSION := $(shell uname -r) ++ EMPTY_IF_NOT_SUPPORTED = $(filter $(SUPPORTED_OS_VERSION),$(OS_VERSION)) +++ifeq ($(shell uname -s), GNU/kFreeBSD) +++EMPTY_IF_NOT_SUPPORTED = supported +++endif ++ ++ check_os_version: ++ ifeq ($(DISABLE_HOTSPOT_OS_VERSION_CHECK)$(EMPTY_IF_NOT_SUPPORTED),) ++--- openjdk/hotspot/make/linux/makefiles/defs.make.orig +++++ openjdk/hotspot/make/linux/makefiles/defs.make ++@@ -91,7 +91,7 @@ ifeq ($(ARCH), x86_64) ++ endif ++ ++ # i686 ++-ifeq ($(ARCH), i686) +++ifneq (,$(filter i686 i386, $(ARCH))) ++ ARCH_DATA_MODEL = 32 ++ PLATFORM = linux-i586 ++ VM_PLATFORM = linux_i486 ++--- openjdk/hotspot/agent/src/os/linux/ps_core.c.orig +++++ openjdk/hotspot/agent/src/os/linux/ps_core.c ++@@ -539,11 +539,16 @@ static bool core_handle_prstatus(struct ++ return false; ++ ++ // copy regs +++#if defined(__FreeBSD_kernel__) +++ memcpy(&newthr->regs, &prstat->pr_reg, sizeof(struct user_regs_struct)); +++#else ++ memcpy(&newthr->regs, prstat->pr_reg, sizeof(struct user_regs_struct)); +++#endif ++ ++ if (is_debug()) { ++ print_debug("integer regset\n"); ++ #ifdef i386 +++#ifdef __linux__ ++ // print the regset ++ print_debug("\teax = 0x%x\n", newthr->regs.eax); ++ print_debug("\tebx = 0x%x\n", newthr->regs.ebx); ++@@ -554,9 +559,21 @@ static bool core_handle_prstatus(struct ++ print_debug("\tesi = 0x%x\n", newthr->regs.esi); ++ print_debug("\tedi = 0x%x\n", newthr->regs.edi); ++ print_debug("\teip = 0x%x\n", newthr->regs.eip); +++#elif defined(__FreeBSD_kernel__) +++ print_debug("\teax = 0x%x\n", newthr->regs.r_eax); +++ print_debug("\tebx = 0x%x\n", newthr->regs.r_ebx); +++ print_debug("\tecx = 0x%x\n", newthr->regs.r_ecx); +++ print_debug("\tedx = 0x%x\n", newthr->regs.r_edx); +++ print_debug("\tesp = 0x%x\n", newthr->regs.r_esp); +++ print_debug("\tebp = 0x%x\n", newthr->regs.r_ebp); +++ print_debug("\tesi = 0x%x\n", newthr->regs.r_esi); +++ print_debug("\tedi = 0x%x\n", newthr->regs.r_edi); +++ print_debug("\teip = 0x%x\n", newthr->regs.r_eip); +++#endif ++ #endif ++ ++ #if defined(amd64) || defined(x86_64) +++#ifdef __linux__ ++ // print the regset ++ print_debug("\tr15 = 0x%lx\n", newthr->regs.r15); ++ print_debug("\tr14 = 0x%lx\n", newthr->regs.r14); ++@@ -585,6 +602,27 @@ static bool core_handle_prstatus(struct ++ print_debug("\tes = 0x%lx\n", newthr->regs.es); ++ print_debug("\tfs = 0x%lx\n", newthr->regs.fs); ++ print_debug("\tgs = 0x%lx\n", newthr->regs.gs); +++#elif defined(__FreeBSD_kernel__) +++ print_debug("\tr15 = 0x%lx\n", newthr->regs.r_r15); +++ print_debug("\tr14 = 0x%lx\n", newthr->regs.r_r14); +++ print_debug("\tr13 = 0x%lx\n", newthr->regs.r_r13); +++ print_debug("\tr12 = 0x%lx\n", newthr->regs.r_r12); +++ print_debug("\trbp = 0x%lx\n", newthr->regs.r_rbp); +++ print_debug("\trbx = 0x%lx\n", newthr->regs.r_rbx); +++ print_debug("\tr11 = 0x%lx\n", newthr->regs.r_r11); +++ print_debug("\tr10 = 0x%lx\n", newthr->regs.r_r10); +++ print_debug("\tr9 = 0x%lx\n", newthr->regs.r_r9); +++ print_debug("\tr8 = 0x%lx\n", newthr->regs.r_r8); +++ print_debug("\trax = 0x%lx\n", newthr->regs.r_rax); +++ print_debug("\trcx = 0x%lx\n", newthr->regs.r_rcx); +++ print_debug("\trdx = 0x%lx\n", newthr->regs.r_rdx); +++ print_debug("\trsi = 0x%lx\n", newthr->regs.r_rsi); +++ print_debug("\trdi = 0x%lx\n", newthr->regs.r_rdi); +++ print_debug("\trip = 0x%lx\n", newthr->regs.r_rip); +++ print_debug("\tcs = 0x%lx\n", newthr->regs.r_cs); +++ print_debug("\trsp = 0x%lx\n", newthr->regs.r_rsp); +++ print_debug("\tss = 0x%lx\n", newthr->regs.r_ss); +++#endif ++ #endif ++ } ++ ++--- openjdk/hotspot/agent/src/os/linux/ps_proc.c.orig +++++ openjdk/hotspot/agent/src/os/linux/ps_proc.c ++@@ -40,6 +40,22 @@ ++ #define __WALL 0x40000000 // Copied from /usr/include/linux/wait.h ++ #endif ++ +++#ifndef PTRACE_PEEKDATA +++#define PTRACE_PEEKDATA PT_READ_D +++#endif +++ +++#ifndef PTRACE_ATTACH +++#define PTRACE_ATTACH PT_ATTACH +++#endif +++ +++#ifndef PTRACE_DETACH +++#define PTRACE_DETACH PT_DETACH +++#endif +++ +++#ifndef PTRACE_CONT +++#define PTRACE_CONT PT_CONTINUE +++#endif +++ ++ // This file has the libproc implementation specific to live process ++ // For core files, refer to ps_core.c ++ ++@@ -57,7 +73,11 @@ static inline uintptr_t align(uintptr_t ++ // before calling process_read_data. ++ ++ static bool process_read_data(struct ps_prochandle* ph, uintptr_t addr, char *buf, size_t size) { +++#if defined(__FreeBSD_kernel__) +++ int rslt; +++#else ++ long rslt; +++#endif ++ size_t i, words; ++ uintptr_t end_addr = addr + size; ++ uintptr_t aligned_addr = align(addr, sizeof(long)); ++@@ -65,36 +85,62 @@ static bool process_read_data(struct ps_ ++ if (aligned_addr != addr) { ++ char *ptr = (char *)&rslt; ++ errno = 0; +++#if defined(__FreeBSD_kernel__) +++ rslt = ptrace(PTRACE_PEEKDATA, ph->pid, (caddr_t) aligned_addr, 0); +++#else ++ rslt = ptrace(PTRACE_PEEKDATA, ph->pid, aligned_addr, 0); +++#endif ++ if (errno) { ++ print_debug("ptrace(PTRACE_PEEKDATA, ..) failed for %d bytes @ %lx\n", size, addr); ++ return false; ++ } ++ for (; aligned_addr != addr; aligned_addr++, ptr++); +++#if defined(__FreeBSD_kernel__) +++ for (; ((intptr_t)aligned_addr % sizeof(int)) && aligned_addr < end_addr; +++#else ++ for (; ((intptr_t)aligned_addr % sizeof(long)) && aligned_addr < end_addr; +++#endif ++ aligned_addr++) ++ *(buf++) = *(ptr++); ++ } ++ +++#if defined(__FreeBSD_kernel__) +++ words = (end_addr - aligned_addr) / sizeof(int); +++#else ++ words = (end_addr - aligned_addr) / sizeof(long); +++#endif ++ ++ // assert((intptr_t)aligned_addr % sizeof(long) == 0); ++ for (i = 0; i < words; i++) { ++ errno = 0; +++#if defined(__FreeBSD_kernel__) +++ rslt = ptrace(PTRACE_PEEKDATA, ph->pid, (caddr_t) aligned_addr, 0); +++#else ++ rslt = ptrace(PTRACE_PEEKDATA, ph->pid, aligned_addr, 0); +++#endif ++ if (errno) { ++ print_debug("ptrace(PTRACE_PEEKDATA, ..) failed for %d bytes @ %lx\n", size, addr); ++ return false; ++ } +++#if defined(__FreeBSD_kernel__) +++ *(int *)buf = rslt; +++ buf += sizeof(int); +++ aligned_addr += sizeof(int); +++#else ++ *(long *)buf = rslt; ++ buf += sizeof(long); ++ aligned_addr += sizeof(long); +++#endif ++ } ++ ++ if (aligned_addr != end_addr) { ++ char *ptr = (char *)&rslt; ++ errno = 0; +++#if defined(__FreeBSD_kernel__) +++ rslt = ptrace(PTRACE_PEEKDATA, ph->pid, (caddr_t) aligned_addr, 0); +++#else ++ rslt = ptrace(PTRACE_PEEKDATA, ph->pid, aligned_addr, 0); +++#endif ++ if (errno) { ++ print_debug("ptrace(PTRACE_PEEKDATA, ..) failed for %d bytes @ %lx\n", size, addr); ++ return false; ++@@ -133,7 +179,11 @@ static bool process_get_lwp_regs(struct ++ #endif ++ ++ #ifdef PTRACE_GETREGS_REQ +++#if defined(__FreeBSD_kernel__) +++ if (ptrace_getregs(PTRACE_GETREGS_REQ, pid, (caddr_t) user, 0) < 0) { +++#else ++ if (ptrace_getregs(PTRACE_GETREGS_REQ, pid, user, NULL) < 0) { +++#endif ++ print_debug("ptrace(PTRACE_GETREGS, ...) failed for lwp %d\n", pid); ++ return false; ++ } ++@@ -205,7 +255,11 @@ static bool ptrace_waitpid(pid_t pid) { ++ ++ // attach to a process/thread specified by "pid" ++ static bool ptrace_attach(pid_t pid) { +++#if defined(__FreeBSD_kernel__) +++ if (ptrace(PTRACE_ATTACH, pid, NULL, 0) < 0) { +++#else ++ if (ptrace(PTRACE_ATTACH, pid, NULL, NULL) < 0) { +++#endif ++ print_debug("ptrace(PTRACE_ATTACH, ..) failed for %d\n", pid); ++ return false; ++ } else { ++@@ -341,7 +395,11 @@ static bool read_lib_info(struct ps_proc ++ ++ // detach a given pid ++ static bool ptrace_detach(pid_t pid) { +++#if defined(__FreeBSD_kernel__) +++ if (pid && ptrace(PTRACE_DETACH, pid, NULL, 0) < 0) { +++#else ++ if (pid && ptrace(PTRACE_DETACH, pid, NULL, NULL) < 0) { +++#endif ++ print_debug("ptrace(PTRACE_DETACH, ..) failed for %d\n", pid); ++ return false; ++ } else { ++--- openjdk/hotspot/agent/src/os/linux/libproc.h.orig +++++ openjdk/hotspot/agent/src/os/linux/libproc.h ++@@ -28,6 +28,10 @@ ++ #include ++ #include ++ #include +++#if defined(__FreeBSD_kernel__) +++#include +++#include +++#endif ++ #include "proc_service.h" ++ ++ #if defined(arm) || defined(ppc) ++@@ -80,6 +84,10 @@ unsigned long regs[IA64_REG_COUNT]; ++ #define user_regs_struct pt_regs ++ #endif ++ +++#if defined(__FreeBSD_kernel__) +++#define user_regs_struct reg +++#endif +++ ++ // This C bool type must be int for compatibility with Linux calls and ++ // it would be a mistake to equivalence it to C++ bool on many platforms ++ ++--- openjdk/hotspot/agent/src/os/linux/LinuxDebuggerLocal.c.orig +++++ openjdk/hotspot/agent/src/os/linux/LinuxDebuggerLocal.c ++@@ -318,7 +318,7 @@ JNIEXPORT jlongArray JNICALL Java_sun_jv ++ ++ #ifdef i386 ++ #define REG_INDEX(reg) sun_jvm_hotspot_debugger_x86_X86ThreadContext_##reg ++- +++#ifdef __linux__ ++ regs[REG_INDEX(GS)] = (uintptr_t) gregs.xgs; ++ regs[REG_INDEX(FS)] = (uintptr_t) gregs.xfs; ++ regs[REG_INDEX(ES)] = (uintptr_t) gregs.xes; ++@@ -334,7 +334,23 @@ JNIEXPORT jlongArray JNICALL Java_sun_jv ++ regs[REG_INDEX(PC)] = (uintptr_t) gregs.eip; ++ regs[REG_INDEX(CS)] = (uintptr_t) gregs.xcs; ++ regs[REG_INDEX(SS)] = (uintptr_t) gregs.xss; ++- +++#elif defined(__FreeBSD_kernel__) +++ regs[REG_INDEX(GS)] = (uintptr_t) gregs.r_gs; +++ regs[REG_INDEX(FS)] = (uintptr_t) gregs.r_fs; +++ regs[REG_INDEX(ES)] = (uintptr_t) gregs.r_es; +++ regs[REG_INDEX(DS)] = (uintptr_t) gregs.r_ds; +++ regs[REG_INDEX(EDI)] = (uintptr_t) gregs.r_edi; +++ regs[REG_INDEX(ESI)] = (uintptr_t) gregs.r_esi; +++ regs[REG_INDEX(FP)] = (uintptr_t) gregs.r_ebp; +++ regs[REG_INDEX(SP)] = (uintptr_t) gregs.r_isp; +++ regs[REG_INDEX(EBX)] = (uintptr_t) gregs.r_ebx; +++ regs[REG_INDEX(EDX)] = (uintptr_t) gregs.r_edx; +++ regs[REG_INDEX(ECX)] = (uintptr_t) gregs.r_ecx; +++ regs[REG_INDEX(EAX)] = (uintptr_t) gregs.r_eax; +++ regs[REG_INDEX(PC)] = (uintptr_t) gregs.r_eip; +++ regs[REG_INDEX(CS)] = (uintptr_t) gregs.r_cs; +++ regs[REG_INDEX(SS)] = (uintptr_t) gregs.r_ss; +++#endif ++ #endif /* i386 */ ++ ++ #if ia64 ++@@ -346,7 +362,7 @@ JNIEXPORT jlongArray JNICALL Java_sun_jv ++ ++ #ifdef amd64 ++ #define REG_INDEX(reg) sun_jvm_hotspot_debugger_amd64_AMD64ThreadContext_##reg ++- +++#ifdef __linux__ ++ regs[REG_INDEX(R15)] = gregs.r15; ++ regs[REG_INDEX(R14)] = gregs.r14; ++ regs[REG_INDEX(R13)] = gregs.r13; ++@@ -372,7 +388,27 @@ JNIEXPORT jlongArray JNICALL Java_sun_jv ++ regs[REG_INDEX(ES)] = gregs.es; ++ regs[REG_INDEX(FS)] = gregs.fs; ++ regs[REG_INDEX(GS)] = gregs.gs; ++- +++#elif defined(__FreeBSD_kernel__) +++ regs[REG_INDEX(R15)] = gregs.r_r15; +++ regs[REG_INDEX(R14)] = gregs.r_r14; +++ regs[REG_INDEX(R13)] = gregs.r_r13; +++ regs[REG_INDEX(R12)] = gregs.r_r12; +++ regs[REG_INDEX(RBP)] = gregs.r_rbp; +++ regs[REG_INDEX(RBX)] = gregs.r_rbx; +++ regs[REG_INDEX(R11)] = gregs.r_r11; +++ regs[REG_INDEX(R10)] = gregs.r_r10; +++ regs[REG_INDEX(R9)] = gregs.r_r9; +++ regs[REG_INDEX(R8)] = gregs.r_r8; +++ regs[REG_INDEX(RAX)] = gregs.r_rax; +++ regs[REG_INDEX(RCX)] = gregs.r_rcx; +++ regs[REG_INDEX(RDX)] = gregs.r_rdx; +++ regs[REG_INDEX(RSI)] = gregs.r_rsi; +++ regs[REG_INDEX(RDI)] = gregs.r_rdi; +++ regs[REG_INDEX(RIP)] = gregs.r_rip; +++ regs[REG_INDEX(CS)] = gregs.r_cs; +++ regs[REG_INDEX(RSP)] = gregs.r_rsp; +++ regs[REG_INDEX(SS)] = gregs.r_ss; +++#endif ++ #endif /* amd64 */ ++ ++ #if defined(sparc) || defined(sparcv9) diff --cc debian/patches/kfreebsd-support-jamvm.diff index 0000000,0000000..c3464ff new file mode 100644 --- /dev/null +++ b/debian/patches/kfreebsd-support-jamvm.diff @@@ -1,0 -1,0 +1,41 @@@ ++Description: ++ - Add iddef TIOCINQ = FIONREAD ++ jamvm/src/classlib/openjdk/jvm.c ++ - Update configure for kfreebsd-amd64 ++ jamvm/jamvm/configure.ac ++Author: Damien Raude-Morvan ++Last-Update: 2011-08-05 ++Forwarded: no ++--- jamvm/jamvm/configure.ac.orig +++++ jamvm/jamvm/configure.ac ++@@ -39,6 +39,7 @@ i386-*-openbsd*) host_os=bsd libdl_neede ++ i386-*-freebsd*) host_os=bsd libdl_needed=no ;; ++ i386-*-solaris*) host_cpu=x86 host_os=solaris ;; ++ x86_64-*-linux*) host_os=linux ;; +++x86_64-*-kfreebsd*) host_os=linux ;; ++ hppa*-*-linux*) host_cpu=parisc host_os=linux ;; ++ mips*-*-linux*) host_cpu=mips host_os=linux ;; ++ x86_64-*-openbsd*) host_os=bsd libdl_needed=no ;; ++--- jamvm/jamvm/configure.orig +++++ jamvm/jamvm/configure ++@@ -2926,6 +2926,7 @@ i386-*-openbsd*) host_os=bsd libdl_neede ++ i386-*-freebsd*) host_os=bsd libdl_needed=no ;; ++ i386-*-solaris*) host_cpu=x86 host_os=solaris ;; ++ x86_64-*-linux*) host_os=linux ;; +++x86_64-*-kfreebsd*) host_os=linux ;; ++ hppa*-*-linux*) host_cpu=parisc host_os=linux ;; ++ mips*-*-linux*) host_cpu=mips host_os=linux ;; ++ x86_64-*-openbsd*) host_os=bsd libdl_needed=no ;; ++--- jamvm/jamvm/src/classlib/openjdk/jvm.c.orig +++++ jamvm/jamvm/src/classlib/openjdk/jvm.c ++@@ -63,6 +63,10 @@ ++ static int have_monotonic_clock; ++ #endif ++ +++#ifndef TIOCINQ +++#define TIOCINQ FIONREAD +++#endif +++ ++ static Class *cloneable_class, *constant_pool_class; ++ static Class *exception_class, *runtime_excp_class; ++ diff --cc debian/patches/kfreebsd-support-jdk.diff index 0000000,0000000..9f15c24 new file mode 100644 --- /dev/null +++ b/debian/patches/kfreebsd-support-jdk.diff @@@ -1,0 -1,0 +1,1665 @@@ ++Description: Initial GNU/kFreeBSD support for openjdk-7 (JDK part) ++ - Alter build system to consider GNU/kFreeBSD like linux ++ since this port is libc based. ++ openjdk/jdk/make/common/shared/Platform.gmk ++ - ENODATA is undefined : ++ openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileStore.java ++ openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxDosFileAttributeView.java ++ - sendfile implementation : ++ openjdk/jdk/src/solaris/native/sun/nio/ch/FileChannelImpl.c ++ (from bsd-port) ++ - BSD network stack usage : ++ openjdk/jdk/src/solaris/native/java/net/* ++ (from bsd-port) ++ - Don't build sctp protocol ++ openjdk/jdk/make/com/sun/nio/Makefile ++ - Don't build jsoundalsa ++ openjdk/jdk/make/javax/sound/Makefile ++ - Disable epoll feature and so LinuxWatchService ++ openjdk/jdk/make/java/nio/Makefile ++Author: Damien Raude-Morvan ++Author: Guido Günther ++Author: Steven Chamberlain ++Last-Update: 2014-07-08 ++Forwarded: no ++ ++--- openjdk/jdk/src/solaris/bin/ergo_i586.c.orig +++++ openjdk/jdk/src/solaris/bin/ergo_i586.c ++@@ -106,7 +106,7 @@ ServerClassMachineImpl(void) { ++ ++ #endif /* __solaris__ */ ++ ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ ++ /* ++ * A utility method for asking the CPU about itself. ++--- openjdk/jdk/src/solaris/bin/jexec.c.orig +++++ openjdk/jdk/src/solaris/bin/jexec.c ++@@ -76,7 +76,7 @@ ++ #include ++ #include ++ #include ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ # include ++ # include ++ # include ++@@ -89,7 +89,7 @@ static const int BAD_MAGIC = ENOEXEC; ++ static const char * BAD_EXEC_MSG = "jexec failed"; ++ static const char * CRAZY_EXEC_MSG = "missing args"; ++ static const char * MISSING_JAVA_MSG = "can't locate java"; ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ static const char * BAD_PATHNAME_MSG = "invalid path"; ++ static const char * BAD_FILE_MSG = "invalid file"; ++ static const char * BAD_MAGIC_MSG = "invalid file (bad magic number)"; ++@@ -98,7 +98,7 @@ static const char * UNKNOWN_ERROR = " ++ ++ /* Define a constant that represents the number of directories to pop off the ++ * current location to find the java binary */ ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ static const int RELATIVE_DEPTH = 2; ++ #else /* Solaris */ ++ static const int RELATIVE_DEPTH = 3; ++@@ -111,7 +111,7 @@ static const char * BIN_PATH = "/bin/jav ++ static const char * JAR_FLAG = "-jar"; ++ ++ ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ /* largest possible size for a local file header */ ++ static const size_t CHUNK_SIZE = 65535; ++ ++@@ -123,7 +123,7 @@ static const ssize_t MIN_SIZE = LOCHDR + ++ int main(int argc, const char * argv[]); ++ void errorExit(int error, const char * message); ++ int getJavaPath(const char * path, char * buf, int depth); ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ const char * isJar(const char * path); ++ #endif ++ ++@@ -172,7 +172,7 @@ int main(int argc, const char * argv[]) ++ nargv = (const char **) malloc((argc + 2) * (sizeof (const char *))); ++ nargv[nargc++] = java; ++ ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ /* The "-jar" flag is already in the original args list on Solaris, ++ * so it only needs to be added on Linux. */ ++ nargv[nargc++] = JAR_FLAG; ++@@ -182,7 +182,7 @@ int main(int argc, const char * argv[]) ++ const char * jarfile = argv[argi++]; ++ const char * message = NULL; ++ ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ /* On Linux we also need to make sure argv[1] is really a JAR ++ * file (this will also resolve any symlinks, which helps). */ ++ char jarPath[PATH_MAX + 1]; ++@@ -291,7 +291,7 @@ int getJavaPath(const char * path, char ++ } ++ ++ ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ /* ++ * Check if the given file is a JAR file. ++ * ++--- openjdk/jdk/src/solaris/native/com/sun/management/UnixOperatingSystem_md.c.orig +++++ openjdk/jdk/src/solaris/native/com/sun/management/UnixOperatingSystem_md.c ++@@ -216,7 +216,7 @@ Java_com_sun_management_UnixOperatingSys ++ ++ JVM_Close(fd); ++ return (jlong) psinfo.pr_size * 1024; ++-#elif defined(__linux__) +++#elif defined(__linux__) || defined(__FreeBSD_kernel__) ++ FILE *fp; ++ unsigned long vsize = 0; ++ ++--- openjdk/jdk/src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c.orig +++++ openjdk/jdk/src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c ++@@ -26,7 +26,7 @@ ++ /** ++ * fstatat in glibc requires _ATFILE_SOURCE to be defined. ++ */ ++-#if defined(__linux__) +++#if defined(__linux__) || defined(__GLIBC__) ++ #define _ATFILE_SOURCE ++ #endif ++ ++@@ -49,7 +49,7 @@ ++ #include ++ #endif ++ ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ #include ++ #endif ++ ++--- openjdk/jdk/src/solaris/native/sun/nio/fs/GnomeFileTypeDetector.c.orig +++++ openjdk/jdk/src/solaris/native/sun/nio/fs/GnomeFileTypeDetector.c ++@@ -35,7 +35,7 @@ ++ #include ++ #endif ++ ++-#if defined(__linux__) +++#if defined(__linux__) || defined(__GLIBC__) ++ #include ++ #endif ++ ++--- openjdk/jdk/src/solaris/native/sun/nio/ch/FileChannelImpl.c.orig +++++ openjdk/jdk/src/solaris/native/sun/nio/ch/FileChannelImpl.c ++@@ -39,7 +39,7 @@ ++ ++ #if defined(__linux__) || defined(__solaris__) ++ #include ++-#elif defined(_ALLBSD_SOURCE) +++#elif defined(_ALLBSD_SOURCE) || defined(__FreeBSD_kernel__) ++ #include ++ #include ++ #include ++@@ -216,6 +216,31 @@ Java_sun_nio_ch_FileChannelImpl_transfer ++ ++ 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; +++#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) +++ off_t numBytes; +++ int result; +++ +++ numBytes = count; +++ +++ result = sendfile(srcFD, dstFD, position, count, NULL, &numBytes, 0); +++ +++ if (numBytes > 0) +++ return numBytes; ++ ++ if (result == -1) { ++ if (errno == EAGAIN) ++--- openjdk/jdk/src/solaris/native/sun/nio/ch/SctpChannelImpl.c.orig +++++ openjdk/jdk/src/solaris/native/sun/nio/ch/SctpChannelImpl.c ++@@ -440,7 +440,7 @@ JNIEXPORT jint JNICALL Java_sun_nio_ch_S ++ } else if (errno == EINTR) { ++ return IOS_INTERRUPTED; ++ ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ } else if (errno == ENOTCONN) { ++ /* ENOTCONN when EOF reached */ ++ rv = 0; ++--- openjdk/jdk/src/solaris/native/sun/nio/ch/DatagramChannelImpl.c.orig +++++ openjdk/jdk/src/solaris/native/sun/nio/ch/DatagramChannelImpl.c ++@@ -35,7 +35,7 @@ ++ #include ++ #include ++ ++-#if defined(__linux__) || defined(_ALLBSD_SOURCE) +++#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined(__GLIBC__) ++ #include ++ #endif ++ ++@@ -81,7 +81,7 @@ Java_sun_nio_ch_DatagramChannelImpl_disc ++ rv = connect(fd, 0, 0); ++ #endif ++ ++-#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined(_AIX) +++#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined(_AIX) || defined(__GLIBC__) ++ { ++ int len; ++ SOCKADDR sa; ++--- openjdk/jdk/src/solaris/native/sun/nio/ch/Net.c.orig +++++ openjdk/jdk/src/solaris/native/sun/nio/ch/Net.c ++@@ -251,7 +251,7 @@ Java_sun_nio_ch_Net_socket0(JNIEnv *env, ++ return -1; ++ } ++ } ++-#if defined(__linux__) && defined(AF_INET6) +++#if ( defined(__linux__) || defined(__GLIBC__) ) && defined(AF_INET6) ++ /* By default, Linux uses the route default */ ++ if (domain == AF_INET6 && type == SOCK_DGRAM) { ++ int arg = 1; ++--- openjdk/jdk/src/solaris/native/sun/nio/ch/NativeThread.c.orig +++++ openjdk/jdk/src/solaris/native/sun/nio/ch/NativeThread.c ++@@ -33,7 +33,7 @@ ++ #include "nio_util.h" ++ ++ ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ #include ++ #include ++ ++@@ -51,7 +51,7 @@ nullHandler(int sig) ++ JNIEXPORT void JNICALL ++ Java_sun_nio_ch_NativeThread_init(JNIEnv *env, jclass cl) ++ { ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ ++ /* 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 +74,7 @@ Java_sun_nio_ch_NativeThread_init(JNIEnv ++ JNIEXPORT jlong JNICALL ++ Java_sun_nio_ch_NativeThread_current(JNIEnv *env, jclass cl) ++ { ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ return (long)pthread_self(); ++ #else ++ return -1; ++@@ -84,7 +84,7 @@ Java_sun_nio_ch_NativeThread_current(JNI ++ JNIEXPORT void JNICALL ++ Java_sun_nio_ch_NativeThread_signal(JNIEnv *env, jclass cl, jlong thread) ++ { ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ if (pthread_kill((pthread_t)thread, INTERRUPT_SIGNAL)) ++ JNU_ThrowIOExceptionWithLastError(env, "Thread signal failed"); ++ #endif ++--- openjdk/jdk/src/solaris/native/sun/nio/ch/SocketChannelImpl.c.orig +++++ openjdk/jdk/src/solaris/native/sun/nio/ch/SocketChannelImpl.c ++@@ -31,7 +31,7 @@ ++ #include ++ #include ++ ++-#if __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ #include ++ #endif ++ ++--- openjdk/jdk/src/solaris/native/sun/nio/ch/ServerSocketChannelImpl.c.orig +++++ openjdk/jdk/src/solaris/native/sun/nio/ch/ServerSocketChannelImpl.c ++@@ -28,7 +28,7 @@ ++ #include ++ #include ++ ++-#if __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ #include ++ #endif ++ ++--- openjdk/jdk/src/solaris/native/sun/awt/awt_util.h.orig +++++ openjdk/jdk/src/solaris/native/sun/awt/awt_util.h ++@@ -200,7 +200,7 @@ Widget awt_util_getXICStatusAreaWindow(W ++ ++ ++ ++-#if defined(__linux__) || defined(MACOSX) +++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__) ++ typedef struct _XmImRefRec { ++ Cardinal num_refs; /* Number of referencing widgets. */ ++ Cardinal max_refs; /* Maximum length of refs array. */ ++--- openjdk/jdk/src/solaris/native/sun/awt/awt_util.c.orig +++++ openjdk/jdk/src/solaris/native/sun/awt/awt_util.c ++@@ -603,7 +603,7 @@ awt_WidgetAtXY(Widget root, Position poi ++ ++ return answer; ++ } ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ ++ ++ #define MAXARGS 10 ++@@ -674,7 +674,7 @@ awt_util_getXICStatusAreaWindow(Widget w ++ return w; ++ } ++ ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ static XRectangle geometryRect; ++ XVaNestedList awt_util_getXICStatusAreaList(Widget w) ++ { ++--- openjdk/jdk/src/solaris/native/sun/awt/multi_font.c.orig +++++ openjdk/jdk/src/solaris/native/sun/awt/multi_font.c ++@@ -348,7 +348,7 @@ awtJNI_IsMultiFontMetrics(JNIEnv * env, ++ return JNI_TRUE; ++ } ++ #ifndef XAWT ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ XmString ++ unicodeXmStringCreate(char* text, char* tag, int len) { ++ XmString ret_val; ++@@ -433,7 +433,7 @@ awtJNI_MakeMultiFontString(JNIEnv * env, ++ char *offsetStringData; ++ ++ offsetStringData = stringData + (4 * sizeof(char)); ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ len = buf[0] << 24 | buf[1] << 16 | buf[2] << 8 | buf[3]; ++ /* Motif XmStringCreate() API requests "text must be a NULL-terminated ++ string" and its implementation uses "strlen()" to calculate the length ++--- openjdk/jdk/src/solaris/native/sun/awt/extutil.h.orig +++++ openjdk/jdk/src/solaris/native/sun/awt/extutil.h ++@@ -58,7 +58,7 @@ in this Software without prior written a ++ */ ++ /* $XFree86: xc/include/extensions/extutil.h,v 1.5 2001/01/17 17:53:20 dawes Exp $ */ ++ ++-#if defined(__linux__) || defined(MACOSX) +++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__) ++ ++ #ifndef _EXTUTIL_H_ ++ #define _EXTUTIL_H_ ++--- openjdk/jdk/src/solaris/native/sun/awt/VDrawingArea.c.orig +++++ openjdk/jdk/src/solaris/native/sun/awt/VDrawingArea.c ++@@ -33,7 +33,7 @@ ++ #include ++ #include ++ ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ /* XXX: Shouldn't be necessary. */ ++ #include "awt_p.h" ++ #endif /* __linux__ */ ++--- openjdk/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c.orig +++++ openjdk/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c ++@@ -123,7 +123,8 @@ static char *x11GraphicsConfigClassName ++ */ ++ ++ #define MAXFRAMEBUFFERS 16 ++-#if defined(__linux__) || defined(MACOSX) +++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__) +++ ++ typedef struct { ++ int screen_number; ++ short x_org; ++@@ -439,7 +440,7 @@ getAllConfigs (JNIEnv *env, int screen, ++ RTLD_LAZY | RTLD_GLOBAL); ++ } ++ ++-#ifndef __linux__ /* SOLARIS */ +++#if ! defined(__linux__) && ! defined(__GLIBC__) /* SOLARIS */ ++ if (xrenderLibHandle == NULL) { ++ xrenderLibHandle = dlopen("/usr/sfw/lib/libXrender.so.1", ++ RTLD_LAZY | RTLD_GLOBAL); ++@@ -652,7 +653,8 @@ void checkNewXineramaScreen(JNIEnv* env, ++ #endif /* HEADLESS */ ++ ++ #ifndef HEADLESS ++-#if defined(__linux__) || defined(MACOSX) +++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__) +++ ++ static void xinerama_init_linux() ++ { ++ void* libHandle = NULL; ++@@ -703,7 +705,7 @@ static void xinerama_init_linux() ++ } ++ } ++ #endif ++-#if !defined(__linux__) && !defined(MACOSX) /* Solaris */ +++#if !defined(__linux__) && !defined(MACOSX) && !defined(__GLIBC__) /* Solaris */ ++ static void xinerama_init_solaris() ++ { ++ void* libHandle = NULL; ++@@ -763,11 +765,11 @@ static void xineramaInit(void) { ++ } ++ ++ DTRACE_PRINTLN("Xinerama extension is available"); ++-#if defined(__linux__) || defined(MACOSX) +++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__) ++ xinerama_init_linux(); ++ #else /* Solaris */ ++ xinerama_init_solaris(); ++-#endif /* __linux__ || MACOSX */ +++#endif /* __linux__ || MACOSX || __GLIBC__ */ ++ } ++ #endif /* HEADLESS */ ++ ++@@ -1644,7 +1646,7 @@ Java_sun_awt_X11GraphicsEnvironment_getX ++ { ++ jobject point = NULL; ++ #ifndef HEADLESS /* return NULL in HEADLESS, Linux */ ++-#if !defined(__linux__) && !defined(MACOSX) +++#if !defined(__linux__) && !defined(MACOSX) && !defined(__GLIBC__) ++ int x,y; ++ ++ AWT_LOCK(); ++--- openjdk/jdk/src/solaris/native/sun/awt/awt_Font.c.orig +++++ openjdk/jdk/src/solaris/native/sun/awt/awt_Font.c ++@@ -334,7 +334,7 @@ loadFont(Display * display, char *name, ++ if (strcmp(style, "regular") == 0) { ++ altstyle = "roman"; ++ } ++-#if defined(__linux__) || defined(MACOSX) +++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__) ++ if (!strcmp(family, "lucidasans")) { ++ family = "lucida"; ++ } ++--- openjdk/jdk/src/solaris/native/sun/awt/awt_InputMethod.c.orig +++++ openjdk/jdk/src/solaris/native/sun/awt/awt_InputMethod.c ++@@ -67,7 +67,7 @@ static void PreeditDrawCallback(XIC, XPo ++ XIMPreeditDrawCallbackStruct *); ++ static void PreeditCaretCallback(XIC, XPointer, ++ XIMPreeditCaretCallbackStruct *); ++-#if defined(__linux__) || defined(MACOSX) +++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__) ++ static void StatusStartCallback(XIC, XPointer, XPointer); ++ static void StatusDoneCallback(XIC, XPointer, XPointer); ++ static void StatusDrawCallback(XIC, XPointer, ++@@ -81,7 +81,7 @@ static void StatusDrawCallback(XIC, XPoi ++ #define PreeditDoneIndex 1 ++ #define PreeditDrawIndex 2 ++ #define PreeditCaretIndex 3 ++-#if defined(__linux__) || defined(MACOSX) +++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__) ++ #define StatusStartIndex 4 ++ #define StatusDoneIndex 5 ++ #define StatusDrawIndex 6 ++@@ -99,14 +99,14 @@ static XIMProc callback_funcs[NCALLBACKS ++ (XIMProc)PreeditDoneCallback, ++ (XIMProc)PreeditDrawCallback, ++ (XIMProc)PreeditCaretCallback, ++-#if defined(__linux__) || defined(MACOSX) +++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__) ++ (XIMProc)StatusStartCallback, ++ (XIMProc)StatusDoneCallback, ++ (XIMProc)StatusDrawCallback, ++ #endif ++ }; ++ ++-#if defined(__linux__) || defined(MACOSX) +++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__) ++ #define MAX_STATUS_LEN 100 ++ typedef struct { ++ Window w; /*status window id */ ++@@ -146,7 +146,7 @@ typedef struct _X11InputMethodData { ++ #endif /* XAWT */ ++ jobject x11inputmethod; /* global ref to X11InputMethod instance */ ++ /* associated with the XIC */ ++-#if defined(__linux__) || defined(MACOSX) +++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__) ++ StatusWindow *statusWindow; /* our own status window */ ++ #else ++ #ifndef XAWT ++@@ -425,7 +425,7 @@ destroyX11InputMethodData(JNIEnv *env, X ++ static void ++ freeX11InputMethodData(JNIEnv *env, X11InputMethodData *pX11IMData) ++ { ++-#if defined(__linux__) || defined(MACOSX) +++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__) ++ if (pX11IMData->statusWindow != NULL){ ++ StatusWindow *sw = pX11IMData->statusWindow; ++ XFreeGC(awt_display, sw->lightGC); ++@@ -531,7 +531,7 @@ awt_x11inputmethod_lookupString(XKeyPres ++ pX11IMData = getX11InputMethodData(env, currentX11InputMethodInstance); ++ ++ if (pX11IMData == NULL) { ++-#if defined(__linux__) || defined(MACOSX) +++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__) ++ return False; ++ #else ++ return result; ++@@ -539,7 +539,7 @@ awt_x11inputmethod_lookupString(XKeyPres ++ } ++ ++ if ((ic = pX11IMData->current_ic) == (XIC)0){ ++-#if defined(__linux__) || defined(MACOSX) +++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__) ++ return False; ++ #else ++ return result; ++@@ -648,7 +648,7 @@ awt_x11inputmethod_lookupString(XKeyPres ++ return result; ++ } ++ ++-#if defined(__linux__) || defined(MACOSX) +++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__) ++ static StatusWindow *createStatusWindow( ++ #ifdef XAWT ++ Window parent) { ++@@ -993,7 +993,7 @@ void adjustStatusWindow(Widget shell){ ++ } ++ } ++ } ++-#endif /* __linux__ || MACOSX */ +++#endif /* __linux__ || MACOSX || __GLIBC__ */ ++ /* ++ * 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 @@ createXIC(Widget w, X11InputMethodData * ++ return FALSE ; ++ } ++ ++-#if defined(__linux__) || defined(MACOSX) +++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__) ++ on_the_spot_styles |= XIMStatusNothing; ++ ++ /*kinput does not support XIMPreeditCallbacks and XIMStatusArea ++@@ -1063,7 +1063,7 @@ createXIC(Widget w, X11InputMethodData * ++ break; ++ } ++ } ++-#else /*! __linux__ && !MACOSX */ +++#else /*! __linux__ && !MACOSX && !__GLIBC__ */ ++ #ifdef XAWT ++ on_the_spot_styles |= XIMStatusNothing; ++ #else /* !XAWT */ ++@@ -1086,7 +1086,7 @@ createXIC(Widget w, X11InputMethodData * ++ on_the_spot_styles |= XIMStatusNothing; ++ ++ #endif /* XAWT */ ++-#endif /* __linux__ || MACOSX */ +++#endif /* __linux__ || MACOSX || __GLIBC__ */ ++ ++ for (i = 0; i < im_styles->count_styles; i++) { ++ active_styles |= im_styles->supported_styles[i] & on_the_spot_styles; ++@@ -1134,7 +1134,7 @@ createXIC(Widget w, X11InputMethodData * ++ NULL); ++ if (preedit == (XVaNestedList)NULL) ++ goto err; ++-#if defined(__linux__) || defined(MACOSX) +++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__) ++ /*always try XIMStatusCallbacks for active client...*/ ++ { ++ status = (XVaNestedList)XVaCreateNestedList(0, ++@@ -1156,7 +1156,7 @@ createXIC(Widget w, X11InputMethodData * ++ XFree((void *)status); ++ XFree((void *)preedit); ++ } ++-#else /* !__linux__ && !MACOSX */ +++#else /* !__linux__ && !MACOSX && !__GLIBC__ */ ++ #ifndef XAWT ++ if (on_the_spot_styles & XIMStatusArea) { ++ Widget parent; ++@@ -1184,7 +1184,7 @@ createXIC(Widget w, X11InputMethodData * ++ } ++ #endif /* XAWT */ ++ XFree((void *)preedit); ++-#endif /* __linux__ || MACOSX */ +++#endif /* __linux__ || MACOSX || __GLIBC__ */ ++ pX11IMData->ic_passive = XCreateIC(X11im, ++ XNClientWindow, w, ++ XNFocusWindow, w, ++@@ -1343,7 +1343,7 @@ PreeditCaretCallback(XIC ic, XPointer cl ++ ++ } ++ ++-#if defined(__linux__) || defined(MACOSX) +++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__) ++ static void ++ StatusStartCallback(XIC ic, XPointer client_data, XPointer call_data) ++ { ++@@ -1411,7 +1411,7 @@ StatusDrawCallback(XIC ic, XPointer clie ++ finally: ++ AWT_UNLOCK(); ++ } ++-#endif /* __linux__ || MACOSX */ +++#endif /* __linux__ || MACOSX || __GLIBC__ */ ++ ++ static void CommitStringCallback(XIC ic, XPointer client_data, XPointer call_data) { ++ JNIEnv *env = GetJNIEnv(); ++@@ -1517,14 +1517,14 @@ Java_sun_awt_motif_MInputMethod_openXIMN ++ /* Use IMInstantiate call back only on Linux, as there is a bug in Solaris ++ (4768335) ++ */ ++-#if defined(__linux__) || defined(MACOSX) +++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__) ++ registered = XRegisterIMInstantiateCallback(dpy, NULL, NULL, ++ NULL, (XIDProc)OpenXIMCallback, NULL); ++ if (!registered) { ++ /* directly call openXIM callback */ ++ #endif ++ OpenXIMCallback(dpy, NULL, NULL); ++-#if defined(__linux__) || defined(MACOSX) +++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__) ++ } ++ #endif ++ ++@@ -1588,13 +1588,13 @@ Java_sun_awt_motif_MInputMethod_createXI ++ #endif /* XAWT */ ++ globalRef = (*env)->NewGlobalRef(env, this); ++ pX11IMData->x11inputmethod = globalRef; ++-#if defined(__linux__) || defined(MACOSX) +++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__) ++ pX11IMData->statusWindow = NULL; ++-#else /* !__linux__ && !MACOSX */ +++#else /* !__linux__ && !MACOSX && !__GLIBC__ */ ++ #ifndef XAWT ++ pX11IMData->statusWidget = (Widget) NULL; ++ #endif /* XAWT */ ++-#endif /* __linux__ || MACOSX */ +++#endif /* __linux__ || MACOSX || __GLIBC__ */ ++ ++ pX11IMData->lookup_buf = 0; ++ pX11IMData->lookup_buf_len = 0; ++@@ -1741,14 +1741,14 @@ Java_sun_awt_X11_XInputMethod_setXICFocu ++ setXICFocus(pX11IMData->current_ic, req); ++ currentX11InputMethodInstance = pX11IMData->x11inputmethod; ++ currentFocusWindow = w; ++-#if defined(__linux__) || defined(MACOSX) +++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__) ++ if (active && pX11IMData->statusWindow && pX11IMData->statusWindow->on) ++ onoffStatusWindow(pX11IMData, w, True); ++ #endif ++ } else { ++ currentX11InputMethodInstance = NULL; ++ currentFocusWindow = 0; ++-#if defined(__linux__) || defined(MACOSX) +++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__) ++ onoffStatusWindow(pX11IMData, 0, False); ++ if (pX11IMData->current_ic != NULL) ++ #endif ++@@ -1765,7 +1765,7 @@ JNIEXPORT void JNICALL ++ Java_sun_awt_X11InputMethod_turnoffStatusWindow(JNIEnv *env, ++ jobject this) ++ { ++-#if defined(__linux__) || defined(MACOSX) +++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__) ++ X11InputMethodData *pX11IMData; ++ StatusWindow *statusWindow; ++ ++@@ -1862,7 +1862,7 @@ Java_sun_awt_motif_MInputMethod_configur ++ X11InputMethodData *pX11IMData; ++ XVaNestedList status; ++ ++-#if defined(__linux__) || defined(MACOSX) +++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__) ++ /*do nothing for linux? */ ++ #else ++ AWT_LOCK(); ++@@ -1968,7 +1968,7 @@ JNIEXPORT jboolean JNICALL Java_sun_awt_ ++ JNIEXPORT void JNICALL Java_sun_awt_X11_XInputMethod_adjustStatusWindow ++ (JNIEnv *env, jobject this, jlong window) ++ { ++-#if defined(__linux__) || defined(MACOSX) +++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__) ++ AWT_LOCK(); ++ adjustStatusWindow(window); ++ AWT_UNLOCK(); ++--- openjdk/jdk/src/solaris/native/sun/awt/awt_MToolkit.c.orig +++++ openjdk/jdk/src/solaris/native/sun/awt/awt_MToolkit.c ++@@ -63,7 +63,7 @@ ++ extern JavaVM *jvm; ++ ++ #ifndef HEADLESS ++-#if defined(__linux__) || defined(MACOSX) +++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__) ++ extern void statusWindowEventHandler(XEvent event); ++ Boolean awt_dnd_process_event(XEvent* event); ++ #endif ++@@ -1643,7 +1643,7 @@ processOneEvent(XtInputMask iMask) { ++ */ ++ Widget widget=XtWindowToWidget(awt_display, xev.xany.window); ++ eventNumber++; ++-#if defined(__linux__) || defined(MACOSX) +++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__) ++ statusWindowEventHandler(xev); ++ #endif ++ xembed_eventHandler(&xev); ++--- openjdk/jdk/src/solaris/native/sun/awt/awt_xembed_server.c.orig +++++ openjdk/jdk/src/solaris/native/sun/awt/awt_xembed_server.c ++@@ -35,7 +35,7 @@ ++ #include ++ #include ++ #include ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ #include ++ #endif ++ #include ++@@ -842,7 +842,7 @@ Java_sun_awt_motif_GrabbedKey_initKeySym ++ AWT_UNLOCK(); ++ } ++ ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ void ++ print_stack (void) ++ { ++--- openjdk/jdk/src/solaris/native/sun/awt/fontpath.c.orig +++++ openjdk/jdk/src/solaris/native/sun/awt/fontpath.c ++@@ -23,7 +23,7 @@ ++ * questions. ++ */ ++ ++-#if defined(__linux__) || defined(MACOSX) +++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__) ++ #include ++ #endif /* __linux__ */ ++ #include ++@@ -52,7 +52,7 @@ ++ #define AWT_UNLOCK() ++ #endif /* !HEADLESS */ ++ ++-#if defined(__linux__) && !defined(MAP_FAILED) +++#if !defined(MAP_FAILED) ++ #define MAP_FAILED ((caddr_t)-1) ++ #endif ++ ++@@ -132,9 +132,9 @@ static char *full_MACOSX_X11FontPath[] = ++ PACKAGE_PATH "/share/fonts/Type1", ++ NULL, /* terminates the list */ ++ }; ++-#elif defined( __linux__) +++#elif defined( __linux__) || defined(__GLIBC__) ++ /* All the known interesting locations we have discovered on ++- * various flavors of Linux +++ * various flavors of GNU/Linux ++ */ ++ static char *fullLinuxFontPath[] = { ++ "/usr/X11R6/lib/X11/fonts/TrueType", /* RH 7.1+ */ ++@@ -396,7 +396,7 @@ static char **getX11FontPath () ++ ++ #endif /* !HEADLESS */ ++ ++-#if defined(__linux__) || defined(MACOSX) +++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__) ++ /* from awt_LoadLibrary.c */ ++ JNIEXPORT jboolean JNICALL AWTIsHeadless(); ++ #endif ++@@ -521,7 +521,7 @@ static char *getPlatformFontPathChars(JN ++ */ ++ fcdirs = getFontConfigLocations(); ++ ++-#if defined(__linux__) +++#if defined(__linux__) || defined(__GLIBC__) ++ knowndirs = fullLinuxFontPath; ++ #elif defined(MACOSX) ++ knowndirs = full_MACOSX_X11FontPath; ++@@ -537,7 +537,7 @@ static char *getPlatformFontPathChars(JN ++ * be initialised. ++ */ ++ #ifndef HEADLESS ++-#if defined(__linux__) || defined(MACOSX) +++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__) ++ /* There's no headless build on linux ... */ ++ if (!AWTIsHeadless()) { /* .. so need to call a function to check */ ++ #endif ++@@ -553,7 +553,7 @@ static char *getPlatformFontPathChars(JN ++ x11dirs = getX11FontPath(); ++ } ++ AWT_UNLOCK(); ++-#if defined(__linux__) || defined(MACOSX) +++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__) ++ } ++ #endif ++ #endif /* !HEADLESS */ ++--- openjdk/jdk/src/solaris/native/sun/awt/awt_Robot.c.orig +++++ openjdk/jdk/src/solaris/native/sun/awt/awt_Robot.c ++@@ -46,7 +46,7 @@ ++ #include "wsutils.h" ++ #include "list.h" ++ #include "multiVis.h" ++-#if defined(__linux__) || defined(MACOSX) +++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__) ++ #include ++ #endif ++ ++--- openjdk/jdk/src/solaris/native/sun/java2d/j2d_md.h.orig +++++ openjdk/jdk/src/solaris/native/sun/java2d/j2d_md.h ++@@ -30,7 +30,8 @@ ++ /* ++ * Linux and MACOSX's version of does not define intptr_t ++ */ ++-#if defined(__linux__) || defined(MACOSX) +++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__) +++ ++ #include ++ #endif /* __linux__ || MACOSX */ ++ ++--- openjdk/jdk/src/solaris/native/sun/java2d/loops/vis_FuncArray.c.orig +++++ openjdk/jdk/src/solaris/native/sun/java2d/loops/vis_FuncArray.c ++@@ -804,7 +804,7 @@ static AnyFunc* hash_table_vis[HASH_SIZE ++ static int initialized; ++ static int usevis = JNI_TRUE; ++ ++-#if defined(__linux__) || defined(MACOSX) +++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__) ++ # define ULTRA_CHIP "sparc64" ++ #else ++ # define ULTRA_CHIP "sun4u" ++--- openjdk/jdk/src/solaris/native/sun/net/dns/ResolverConfigurationImpl.c.orig +++++ openjdk/jdk/src/solaris/native/sun/net/dns/ResolverConfigurationImpl.c ++@@ -33,7 +33,7 @@ ++ #include ++ #endif ++ ++-#if defined(__linux__) || defined(_ALLBSD_SOURCE) +++#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined(__GLIBC__) ++ #include ++ #endif ++ ++--- openjdk/jdk/src/solaris/native/sun/net/spi/DefaultProxySelector.c.orig +++++ openjdk/jdk/src/solaris/native/sun/net/spi/DefaultProxySelector.c ++@@ -29,7 +29,7 @@ ++ #include "jlong.h" ++ #include "sun_net_spi_DefaultProxySelector.h" ++ #include ++-#if defined(__linux__) || defined(_ALLBSD_SOURCE) +++#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined(__GLIBC__) ++ #include ++ #else ++ #include ++--- openjdk/jdk/src/solaris/native/sun/xawt/XToolkit.c.orig +++++ openjdk/jdk/src/solaris/native/sun/xawt/XToolkit.c ++@@ -27,7 +27,7 @@ ++ #include ++ #include ++ #include ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ #include ++ #endif ++ ++@@ -785,7 +785,7 @@ JNIEXPORT jstring JNICALL Java_sun_awt_X ++ return ret; ++ } ++ ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ void print_stack(void) ++ { ++ void *array[10]; ++--- openjdk/jdk/src/solaris/native/java/nio/MappedByteBuffer.c.orig +++++ openjdk/jdk/src/solaris/native/java/nio/MappedByteBuffer.c ++@@ -40,7 +40,7 @@ Java_java_nio_MappedByteBuffer_isLoaded0 ++ int result = 0; ++ int i = 0; ++ void *a = (void *) jlong_to_ptr(address); ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ unsigned char *vec = (unsigned char *)malloc(numPages * sizeof(char)); ++ #else ++ char *vec = (char *)malloc(numPages * sizeof(char)); ++--- openjdk/jdk/src/solaris/native/java/util/TimeZone_md.c.orig +++++ openjdk/jdk/src/solaris/native/java/util/TimeZone_md.c ++@@ -49,7 +49,7 @@ ++ #define fileclose fclose ++ #endif ++ ++-#if defined(__linux__) || defined(_ALLBSD_SOURCE) +++#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined(__GLIBC__) ++ ++ ++ static const char *ETC_TIMEZONE_FILE = "/etc/timezone"; ++@@ -124,7 +124,7 @@ findZoneinfoFile(char *buf, size_t size, ++ return NULL; ++ } ++ ++-#if defined(AIX) || defined(__linux__) || defined(MACOSX) || (defined(__solaris__) \ +++#if defined(AIX) || defined(__linux__) || defined(__GLIBC__) || defined(MACOSX) || (defined(__solaris__) \ ++ && (defined(_POSIX_PTHREAD_SEMANTICS) || defined(_LP64))) ++ while (readdir_r(dirp, entry, &dp) == 0 && dp != NULL) { ++ #else ++@@ -212,7 +212,7 @@ findZoneinfoFile(char *buf, size_t size, ++ return tz; ++ } ++ ++-#if defined(__linux__) || defined(MACOSX) +++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__) ++ ++ /* ++ * Performs Linux specific mapping and returns a zone ID ++@@ -228,7 +228,7 @@ getPlatformTimeZoneID() ++ char *buf; ++ size_t size; ++ ++-#ifdef __linux__ +++#ifdef __linux__ || defined(__GLIBC__) ++ /* ++ * Try reading the /etc/timezone file for Debian distros. There's ++ * no spec of the file format available. This parsing assumes that ++@@ -698,7 +698,7 @@ findJavaTZ_md(const char *java_home_dir, ++ ++ tz = getenv("TZ"); ++ ++-#if defined(__linux__) || defined(_ALLBSD_SOURCE) +++#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined(__GLIBC__) ++ if (tz == NULL) { ++ #else ++ #if defined (__solaris__) || defined(AIX) ++@@ -724,7 +724,7 @@ findJavaTZ_md(const char *java_home_dir, ++ #endif ++ ++ if (tz != NULL) { ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ /* ++ * Ignore "posix/" prefix. ++ */ ++--- openjdk/jdk/src/solaris/native/java/io/io_util_md.c.orig +++++ openjdk/jdk/src/solaris/native/java/io/io_util_md.c ++@@ -68,7 +68,7 @@ fileOpen(JNIEnv *env, jobject this, jstr ++ WITH_PLATFORM_STRING(env, path, ps) { ++ FD fd; ++ ++-#if defined(__linux__) || defined(_ALLBSD_SOURCE) +++#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined(__GLIBC__) ++ /* Remove trailing slashes, since the kernel won't */ ++ char *p = (char *)ps + strlen(ps) - 1; ++ while ((p > ps) && (*p == '/')) ++--- openjdk/jdk/src/solaris/native/java/lang/locale_str.h.orig +++++ openjdk/jdk/src/solaris/native/java/lang/locale_str.h ++@@ -48,7 +48,7 @@ ++ "gl", "gl_ES", ++ "he", "iw_IL", ++ "hr", "hr_HR", ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ "hs", "en_US", // used on Linux, not clear what it stands for ++ #endif ++ "hu", "hu_HU", ++@@ -78,14 +78,14 @@ ++ "sv", "sv_SE", ++ "th", "th_TH", ++ "tr", "tr_TR", ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ "ua", "en_US", // used on Linux, not clear what it stands for ++ #endif ++ "uk", "uk_UA", ++ "vi", "vi_VN", ++ "wa", "wa_BE", ++ "zh", "zh_CN", ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ "bokmal", "nb_NO", ++ "bokm\xE5l", "nb_NO", ++ "catalan", "ca_ES", ++@@ -146,13 +146,13 @@ static char *language_names[] = { ++ "POSIX", "en", ++ "cz", "cs", ++ "he", "iw", ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ "hs", "en", // used on Linux, not clear what it stands for ++ #endif ++ "id", "in", ++ "sh", "sr", // sh is deprecated ++ "su", "fi", ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ "ua", "en", // used on Linux, not clear what it stands for ++ "catalan", "ca", ++ "croatian", "hr", ++@@ -195,7 +195,7 @@ static char *language_names[] = { ++ * Linux/Solaris script string to Java script name mapping table. ++ */ ++ static char *script_names[] = { ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ "cyrillic", "Cyrl", ++ "devanagari", "Deva", ++ "iqtelif", "Latn", ++@@ -208,7 +208,7 @@ static char *script_names[] = { ++ * Linux/Solaris country string to ISO3166 string mapping table. ++ */ ++ static char *country_names[] = { ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ "RN", "US", // used on Linux, not clear what it stands for ++ #endif ++ "YU", "CS", // YU has been removed from ISO 3166 ++--- openjdk/jdk/src/solaris/native/java/lang/UNIXProcess_md.c.orig +++++ openjdk/jdk/src/solaris/native/java/lang/UNIXProcess_md.c ++@@ -400,7 +400,7 @@ __attribute_noinline__ ++ #ifdef START_CHILD_USE_CLONE ++ static pid_t ++ cloneChild(ChildStuff *c) { ++-#ifdef __linux__ +++#ifdef __linux__ || defined(__GLIBC__) ++ #define START_CHILD_CLONE_STACK_SIZE (64 * 1024) ++ /* ++ * See clone(2). ++--- openjdk/jdk/src/solaris/native/java/lang/java_props_md.c.orig +++++ openjdk/jdk/src/solaris/native/java/lang/java_props_md.c ++@@ -23,7 +23,7 @@ ++ * questions. ++ */ ++ ++-#if defined(__linux__) || defined(_ALLBSD_SOURCE) +++#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined(__GLIBC__) ++ #include ++ #include ++ #endif ++@@ -57,7 +57,7 @@ ++ #include "java_props.h" ++ ++ #if !defined(_ALLBSD_SOURCE) ++-#ifdef __linux__ +++#ifdef __linux__ || defined(__GLIBC__) ++ #ifndef CODESET ++ #define CODESET _NL_CTYPE_CODESET_NAME ++ #endif ++@@ -151,7 +151,7 @@ static int ParseLocale(int cat, char ** ++ lc = setlocale(cat, NULL); ++ #endif ++ ++-#ifndef __linux__ +++#if !defined(__linux__) && !defined(__GLIBC__) ++ if (lc == NULL) { ++ return 0; ++ } ++@@ -293,7 +293,7 @@ static int ParseLocale(int cat, char ** ++ * in order to use optimizations. */ ++ *std_encoding = (*p != '\0') ? p : "ISO8859-1"; ++ ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ /* ++ * Remap the encoding string to a different value for japanese ++ * locales on linux so that customized converters are used instead ++@@ -536,7 +536,7 @@ GetJavaProperties(JNIEnv *env) ++ sprops.unicode_encoding = "UnicodeBig"; ++ #endif ++ #else /* !_ALLBSD_SOURCE */ ++-#ifdef __linux__ +++#ifdef __linux__ || defined(__GLIBC__) ++ #if __BYTE_ORDER == __LITTLE_ENDIAN ++ sprops.unicode_encoding = "UnicodeLittle"; ++ #else ++--- openjdk/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c.orig +++++ openjdk/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c ++@@ -33,7 +33,7 @@ ++ #ifdef __solaris__ ++ #include ++ #endif ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ #include ++ #include ++ #include ++@@ -335,7 +335,7 @@ Java_java_net_PlainDatagramSocketImpl_di ++ /* The fdObj'fd */ ++ jint fd; ++ ++-#if defined(__linux__) || defined(_ALLBSD_SOURCE) +++#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined(__GLIBC__) ++ SOCKADDR addr; ++ int len; ++ #endif ++@@ -345,7 +345,7 @@ Java_java_net_PlainDatagramSocketImpl_di ++ } ++ fd = (*env)->GetIntField(env, fdObj, IO_fd_fdID); ++ ++-#if defined(__linux__) || defined(_ALLBSD_SOURCE) +++#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined(__GLIBC__) ++ #ifdef __linux__ ++ if (isOldKernel) { ++ int t = 1; ++@@ -356,14 +356,21 @@ Java_java_net_PlainDatagramSocketImpl_di ++ #ifdef AF_INET6 ++ if (ipv6_available()) { ++ struct sockaddr_in6 *him6 = (struct sockaddr_in6 *)&addr; +++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) +++ 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; +++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) ++ him4->sin_family = AF_UNSPEC; +++#else ++ len = sizeof(struct sockaddr_in); +++#endif ++ } ++ JVM_Connect(fd, (struct sockaddr *)&addr, len); ++ ++--- openjdk/jdk/src/solaris/native/java/net/Inet6AddressImpl.c.orig +++++ openjdk/jdk/src/solaris/native/java/net/Inet6AddressImpl.c ++@@ -75,7 +75,7 @@ Java_java_net_Inet6AddressImpl_getLocalH ++ } else { ++ // ensure null-terminated ++ hostname[NI_MAXHOST] = '\0'; ++-#if defined(__linux__) || defined(_ALLBSD_SOURCE) +++#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined(__GLIBC__) ++ /* On Linux/FreeBSD gethostname() says "host.domain.sun.com". On ++ * Solaris gethostname() says "host", so extra work is needed. ++ */ ++@@ -807,7 +807,7 @@ Java_java_net_Inet6AddressImpl_isReachab ++ case ENETUNREACH: /* Network Unreachable */ ++ case EAFNOSUPPORT: /* Address Family not supported */ ++ case EADDRNOTAVAIL: /* address is not available on the remote machine */ ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ case EINVAL: ++ case EHOSTUNREACH: ++ /* ++--- openjdk/jdk/src/solaris/native/java/net/Inet4AddressImpl.c.orig +++++ openjdk/jdk/src/solaris/native/java/net/Inet4AddressImpl.c ++@@ -358,7 +358,7 @@ Java_java_net_Inet4AddressImpl_getLocalH ++ /* Something went wrong, maybe networking is not setup? */ ++ strcpy(hostname, "localhost"); ++ } else { ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ /* On Linux gethostname() says "host.domain.sun.com". On ++ * Solaris gethostname() says "host", so extra work is needed. ++ */ ++@@ -888,7 +888,7 @@ Java_java_net_Inet4AddressImpl_isReachab ++ * EHOSTUNREACH which is not an error, but the answer to our question. ++ */ ++ #endif ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ case EINVAL: ++ case EHOSTUNREACH: ++ /* ++--- openjdk/jdk/src/solaris/native/java/net/NetworkInterface.c.orig +++++ openjdk/jdk/src/solaris/native/java/net/NetworkInterface.c ++@@ -63,17 +63,17 @@ ++ #define _PATH_PROCNET_IFINET6 "/proc/net/if_inet6" ++ #endif ++ ++-#if defined(_ALLBSD_SOURCE) +++#if defined(_ALLBSD_SOURCE) || defined(__FreeBSD_kernel__) ++ #include ++ #include ++ #include ++-#if defined(__APPLE__) +++#if defined(__APPLE__) || defined(__FreeBSD_kernel__) ++ #include ++ #include ++ #include ++ #include ++-#include ++ #endif +++#include ++ #endif ++ ++ #include "jvm.h" ++@@ -1039,7 +1039,7 @@ static int openSocket(JNIEnv *env, int ++ ++ ++ /** Linux, AIX. For Solaris and BSD there are similar sections below. **/ ++-#if !defined(__solaris__) && !defined(_ALLBSD_SOURCE) +++#if !defined(__solaris__) && !defined(_ALLBSD_SOURCE) && !defined(__FreeBSD_kernel__) ++ ++ /* Open socket for further ioct calls, try v4 socket first and ++ * if it falls return v6 socket ++@@ -1771,7 +1771,11 @@ static int getMacAddress(JNIEnv *env, in ++ * try the old way. ++ */ ++ memset(&lif, 0, sizeof(lif)); +++#if defined(__FreeBSD_kernel__) +++ strcpy(lif.lifr_name, ifname); +++#else ++ strlcpy(lif.lifr_name, ifname, sizeof(lif.lifr_name)); +++#endif ++ ++ if (ioctl(sock, SIOCGLIFHWADDR, &lif) != -1) { ++ struct sockaddr_dl *sp; ++@@ -1857,7 +1861,7 @@ static int getFlags(int sock, const char ++ ++ ++ /** BSD **/ ++-#ifdef _ALLBSD_SOURCE +++#if defined(_ALLBSD_SOURCE) || defined(__FreeBSD_kernel__) ++ /* Open socket for further ioct calls, try v4 socket first and ++ * if it falls return v6 socket ++ */ ++@@ -1986,7 +1990,11 @@ static netif *enumIPv6Interfaces(JNIEnv ++ continue; ++ ++ memset(&ifr6, 0, sizeof(ifr6)); +++#if defined(__FreeBSD_kernel__) +++ strcpy(ifr6.ifr_name, ifa->ifa_name); +++#else ++ strlcpy(ifr6.ifr_name, ifa->ifa_name, sizeof(ifr6.ifr_name)); +++#endif ++ memcpy(&ifr6.ifr_addr, ifa->ifa_addr, MIN(sizeof(ifr6.ifr_addr), ifa->ifa_addr->sa_len)); ++ ++ if (ioctl(sock, SIOCGIFNETMASK_IN6, (caddr_t)&ifr6) < 0) { ++--- openjdk/jdk/src/solaris/native/java/net/net_util_md.c.orig +++++ openjdk/jdk/src/solaris/native/java/net/net_util_md.c ++@@ -56,6 +56,11 @@ ++ #include ++ #include ++ +++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) +++#include +++#include +++#endif +++ ++ #ifndef IPV6_FLOWINFO_SEND ++ #define IPV6_FLOWINFO_SEND 33 ++ #endif ++--- openjdk/jdk/src/solaris/native/java/net/PlainSocketImpl.c.orig +++++ openjdk/jdk/src/solaris/native/java/net/PlainSocketImpl.c ++@@ -32,7 +32,7 @@ ++ #endif ++ #include /* Defines TCP_NODELAY, needed for 2.6 */ ++ #include ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ #include ++ #endif ++ #include ++@@ -41,7 +41,7 @@ ++ #ifdef __solaris__ ++ #include ++ #endif ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ #include ++ #endif ++ ++@@ -467,7 +467,7 @@ Java_java_net_PlainSocketImpl_socketConn ++ /* report the appropriate exception */ ++ if (connect_rv < 0) { ++ ++-#ifdef __linux__ +++#if defined(__linux__) || defined(__GLIBC__) ++ /* ++ * Linux/GNU distribution setup /etc/hosts so that ++ * InetAddress.getLocalHost gets back the loopback address ++--- openjdk/jdk/src/solaris/native/java/net/net_util_md.h.orig +++++ openjdk/jdk/src/solaris/native/java/net/net_util_md.h ++@@ -46,7 +46,7 @@ ++ close subroutine does not return until the select call returns. ++ ... ++ */ ++-#if defined(__linux__) || defined(MACOSX) || defined (_AIX) +++#if defined(__linux__) || defined(MACOSX) || defined (_AIX) || defined(__GLIBC__) ++ 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, ++@@ -198,7 +198,7 @@ extern jint NET_Wait(JNIEnv *env, jint f ++ /************************************************************************ ++ * Utilities ++ */ ++-#ifdef __linux__ +++#if defined(__linux__) ++ extern int kernelIsV22(); ++ extern int kernelIsV24(); ++ #endif ++--- openjdk/jdk/src/solaris/classes/sun/font/FcFontConfiguration.java.orig +++++ openjdk/jdk/src/solaris/classes/sun/font/FcFontConfiguration.java ++@@ -306,7 +306,7 @@ public class FcFontConfiguration extends ++ ++ super.setOsNameAndVersion(); ++ ++- if (!osName.equals("Linux")) { +++ if (!(osName.equals("Linux") || osName.equals("GNU/kFreeBSD"))) { ++ return; ++ } ++ try { ++--- openjdk/jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java.orig +++++ openjdk/jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java ++@@ -170,6 +170,7 @@ public class UnixPrintServiceLookup exte ++ ++ static boolean isBSD() { ++ return (osname.equals("Linux") || +++ osname.equals("GNU/kFreeBSD") || ++ osname.contains("OS X")); ++ } ++ ++--- openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileStore.java.orig +++++ openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileStore.java ++@@ -101,9 +101,7 @@ class LinuxFileStore ++ LinuxNativeDispatcher.fgetxattr(fd, "user.java".getBytes(), 0L, 0); ++ return true; ++ } catch (UnixException e) { ++- // attribute does not exist ++- if (e.errno() == UnixConstants.ENODATA) ++- return true; +++ return false; ++ } finally { ++ UnixNativeDispatcher.close(fd); ++ } ++--- openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxDosFileAttributeView.java.orig +++++ openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxDosFileAttributeView.java ++@@ -238,9 +238,6 @@ class LinuxDosFileAttributeView ++ } ++ throw new UnixException("Value of " + DOS_XATTR_NAME + " attribute is invalid"); ++ } catch (UnixException x) { ++- // default value when attribute does not exist ++- if (x.errno() == ENODATA) ++- return 0; ++ throw x; ++ } finally { ++ buffer.release(); ++--- openjdk/jdk/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java.orig +++++ openjdk/jdk/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java ++@@ -66,7 +66,7 @@ public class DefaultFileSystemProvider { ++ .doPrivileged(new GetPropertyAction("os.name")); ++ if (osname.equals("SunOS")) ++ return createProvider("sun.nio.fs.SolarisFileSystemProvider"); ++- if (osname.equals("Linux")) +++ if (osname.equals("Linux") || osname.equals("GNU/kFreeBSD")) ++ return createProvider("sun.nio.fs.LinuxFileSystemProvider"); ++ if (osname.equals("Darwin") || osname.contains("OS X")) ++ return createProvider("sun.nio.fs.MacOSXFileSystemProvider"); ++--- openjdk/jdk/src/solaris/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java.orig +++++ openjdk/jdk/src/solaris/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java ++@@ -48,7 +48,7 @@ public class DefaultAsynchronousChannelP ++ .doPrivileged(new GetPropertyAction("os.name")); ++ if (osname.equals("SunOS")) ++ return new SolarisAsynchronousChannelProvider(); ++- if (osname.equals("Linux")) +++ if (osname.equals("Linux") || osname.equals("GNU/kFreeBSD")) ++ return new LinuxAsynchronousChannelProvider(); ++ if (osname.contains("OS X")) ++ return new BsdAsynchronousChannelProvider(); ++--- openjdk/jdk/src/solaris/classes/sun/awt/X11/XScrollbarPeer.java.orig +++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XScrollbarPeer.java ++@@ -74,7 +74,7 @@ class XScrollbarPeer extends XComponentP ++ * Currently uses hardcoded values ++ */ ++ private int getDefaultDimension() { ++- if (System.getProperty("os.name").equals("Linux")) { +++ if (System.getProperty("os.name").equals("Linux") || System.getProperty("os.name").equals("GNU/kFreeBSD")) { ++ return DEFAULT_WIDTH_LINUX; ++ } else { ++ return DEFAULT_WIDTH_SOLARIS; ++--- openjdk/jdk/src/share/native/java/lang/fdlibm/include/jfdlibm.h.orig +++++ openjdk/jdk/src/share/native/java/lang/fdlibm/include/jfdlibm.h ++@@ -61,7 +61,7 @@ ++ #define log1p jlog1p ++ #define expm1 jexpm1 ++ ++-#if defined(__linux__) || defined(_ALLBSD_SOURCE) +++#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined(__GLIBC__) ++ #define __ieee754_sqrt __j__ieee754_sqrt ++ #define __ieee754_acos __j__ieee754_acos ++ #define __ieee754_acosh __j__ieee754_acosh ++--- openjdk/jdk/src/share/classes/sun/font/FontUtilities.java.orig +++++ openjdk/jdk/src/share/classes/sun/font/FontUtilities.java ++@@ -76,7 +76,7 @@ public final class FontUtilities { ++ String osName = System.getProperty("os.name", "unknownOS"); ++ isSolaris = osName.startsWith("SunOS"); ++ ++- isLinux = osName.startsWith("Linux"); +++ isLinux = osName.startsWith("Linux") || osName.equals("GNU/kFreeBSD"); ++ ++ isMacOSX = osName.contains("OS X"); // TODO: MacOSX ++ ++--- openjdk/jdk/src/share/classes/sun/print/PSPrinterJob.java.orig +++++ openjdk/jdk/src/share/classes/sun/print/PSPrinterJob.java ++@@ -1568,7 +1568,9 @@ public class PSPrinterJob extends Raster ++ } ++ ++ String osname = System.getProperty("os.name"); ++- if (osname.equals("Linux") || osname.contains("OS X")) { +++ if (osname.equals("Linux") || +++ osname.equals("GNU/kFreeBSD") || +++ osname.contains("OS X")) { ++ execCmd = new String[ncomps]; ++ execCmd[n++] = "/usr/bin/lpr"; ++ if ((pFlags & PRINTER) != 0) { ++--- openjdk/jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java.orig +++++ openjdk/jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java ++@@ -1298,6 +1298,7 @@ public class ExtendedCharsets ++ String osName = AccessController.doPrivileged( ++ new GetPropertyAction("os.name")); ++ if ("SunOS".equals(osName) || "Linux".equals(osName) +++ || "GNU/kFreeBSD".equals(osName) ++ || osName.contains("OS X") || osName.contains("AIX")) { ++ charset("x-COMPOUND_TEXT", "COMPOUND_TEXT", ++ new String[] { ++--- openjdk/jdk/src/share/classes/sun/security/jgss/GSSManagerImpl.java.orig +++++ openjdk/jdk/src/share/classes/sun/security/jgss/GSSManagerImpl.java ++@@ -48,6 +48,7 @@ public class GSSManagerImpl extends GSSM ++ public Boolean run() { ++ String osname = System.getProperty("os.name"); ++ if (osname.startsWith("SunOS") || +++ osname.startsWith("GNU/kFreeBSD") || ++ osname.startsWith("Linux")) { ++ return new Boolean(System.getProperty ++ (USE_NATIVE_PROP)); ++--- openjdk/jdk/src/share/classes/java/awt/GraphicsEnvironment.java.orig +++++ openjdk/jdk/src/share/classes/java/awt/GraphicsEnvironment.java ++@@ -178,6 +178,7 @@ public abstract class GraphicsEnvironmen ++ } else { ++ headless = defaultHeadless = ++ Boolean.valueOf(("Linux".equals(osName) || +++ "GNU/kFreeBSD".equals(osName) || ++ "SunOS".equals(osName) || ++ "FreeBSD".equals(osName) || ++ "NetBSD".equals(osName) || ++--- openjdk/jdk/make/com/sun/nio/Makefile.orig +++++ openjdk/jdk/make/com/sun/nio/Makefile ++@@ -38,7 +38,7 @@ endif ++ ++ ++ all build clean clobber:: ++- $(SUBDIRS-loop) +++# $(SUBDIRS-loop) ++ ++ clean clobber:: ++- $(RM) -r $(CLASSDESTDIR)/com/sun/nio +++# $(RM) -r $(CLASSDESTDIR)/com/sun/nio ++--- openjdk/jdk/make/java/nio/Makefile.orig +++++ openjdk/jdk/make/java/nio/Makefile ++@@ -94,6 +94,70 @@ FILES_export += \ ++ ++ else ++ +++ifeq ($(SYSTEM_UNAME),GNU/kFreeBSD) +++ +++FILES_java += \ +++ sun/nio/ch/AbstractPollSelectorImpl.java \ +++ sun/nio/ch/DevPollArrayWrapper.java \ +++ sun/nio/ch/DevPollSelectorImpl.java \ +++ sun/nio/ch/DevPollSelectorProvider.java \ +++ sun/nio/ch/InheritedChannel.java \ +++ sun/nio/ch/LinuxAsynchronousChannelProvider.java \ +++ sun/nio/ch/PollSelectorProvider.java \ +++ sun/nio/ch/PollSelectorImpl.java \ +++ sun/nio/ch/Port.java \ +++ sun/nio/ch/SimpleAsynchronousFileChannelImpl.java \ +++ sun/nio/ch/SolarisAsynchronousChannelProvider.java \ +++ sun/nio/ch/SolarisEventPort.java \ +++ sun/nio/ch/UnixAsynchronousServerSocketChannelImpl.java \ +++ sun/nio/ch/UnixAsynchronousSocketChannelImpl.java \ +++ \ +++ sun/nio/fs/GnomeFileTypeDetector.java \ +++ sun/nio/fs/LinuxDosFileAttributeView.java \ +++ sun/nio/fs/LinuxFileStore.java \ +++ sun/nio/fs/LinuxFileSystem.java \ +++ sun/nio/fs/LinuxFileSystemProvider.java \ +++ sun/nio/fs/LinuxUserDefinedFileAttributeView.java \ +++ sun/nio/fs/LinuxNativeDispatcher.java \ +++ sun/nio/fs/PollingWatchService.java \ +++ sun/nio/fs/SolarisNativeDispatcher.java \ +++ sun/nio/fs/SolarisWatchService.java \ +++ sun/nio/fs/UnixChannelFactory.java \ +++ sun/nio/fs/UnixCopyFile.java \ +++ sun/nio/fs/UnixDirectoryStream.java \ +++ sun/nio/fs/UnixException.java \ +++ sun/nio/fs/UnixFileAttributeViews.java \ +++ sun/nio/fs/UnixFileAttributes.java \ +++ sun/nio/fs/UnixFileKey.java \ +++ sun/nio/fs/UnixFileModeAttribute.java \ +++ sun/nio/fs/UnixFileStore.java \ +++ sun/nio/fs/UnixFileStoreAttributes.java \ +++ sun/nio/fs/UnixFileSystem.java \ +++ sun/nio/fs/UnixFileSystemProvider.java \ +++ sun/nio/fs/UnixMountEntry.java \ +++ sun/nio/fs/UnixNativeDispatcher.java \ +++ sun/nio/fs/UnixPath.java \ +++ sun/nio/fs/UnixSecureDirectoryStream.java \ +++ sun/nio/fs/UnixUriUtils.java \ +++ sun/nio/fs/UnixUserPrincipals.java +++ +++FILES_export += \ +++ sun/nio/ch/DevPollArrayWrapper.java \ +++ sun/nio/ch/InheritedChannel.java \ +++ sun/nio/ch/NativeThread.java \ +++ sun/nio/ch/SolarisEventPort.java \ +++ sun/nio/ch/UnixAsynchronousServerSocketChannelImpl.java \ +++ sun/nio/ch/UnixAsynchronousSocketChannelImpl.java \ +++ \ +++ sun/nio/fs/GnomeFileTypeDetector.java \ +++ sun/nio/fs/LinuxNativeDispatcher.java \ +++ sun/nio/fs/SolarisNativeDispatcher.java \ +++ sun/nio/fs/SolarisWatchService.java \ +++ sun/nio/fs/UnixCopyFile.java \ +++ sun/nio/fs/UnixNativeDispatcher.java +++ +++else +++ ++ FILES_java += \ ++ sun/nio/ch/AbstractPollSelectorImpl.java \ ++ sun/nio/ch/DevPollArrayWrapper.java \ ++@@ -164,6 +228,8 @@ FILES_export += \ ++ sun/nio/fs/UnixCopyFile.java \ ++ sun/nio/fs/UnixNativeDispatcher.java ++ +++endif # kFreeBSD +++ ++ FILES_gen += \ ++ sun/nio/fs/UnixConstants.java ++ ++@@ -172,7 +238,7 @@ FILES_c += \ ++ syscalls_fp.c ++ endif ++ ++-endif +++endif # else ++ ++ ifeq ($(PLATFORM), solaris) ++ ++@@ -221,6 +287,22 @@ endif # PLATFORM = windows ++ ++ ifeq ($(PLATFORM), linux) ++ +++ifeq ($(SYSTEM_UNAME),GNU/kFreeBSD) +++ +++FILES_c += \ +++ InheritedChannel.c \ +++ NativeThread.c \ +++ PollArrayWrapper.c \ +++ UnixAsynchronousServerSocketChannelImpl.c \ +++ UnixAsynchronousSocketChannelImpl.c \ +++ \ +++ GnomeFileTypeDetector.c \ +++ LinuxNativeDispatcher.c \ +++ UnixCopyFile.c \ +++ UnixNativeDispatcher.c +++ +++else +++ ++ FILES_c += \ ++ EPoll.c \ ++ EPollArrayWrapper.c \ ++@@ -345,6 +427,7 @@ FILES_export += \ ++ ++ endif # PLATFORM = aix ++ +++endif # kFreeBSD ++ ++ ifeq ($(PLATFORM), macosx) ++ FILES_java += \ ++--- openjdk/jdk/make/common/shared/Sanity.gmk.orig +++++ openjdk/jdk/make/common/shared/Sanity.gmk ++@@ -114,12 +114,14 @@ ifeq ($(PLATFORM), linux) ++ elif [ -f /etc/lsb-release ] ; then \ ++ $(EGREP) DISTRIB_RELEASE /etc/lsb-release | $(SED) -e 's@.*DISTRIB_RELEASE=\(.*\)@\1@'; \ ++ fi) +++ifneq ($(SYSTEM_UNAME),GNU/kFreeBSD) ++ ALSA_INCLUDE=/usr/include/alsa/version.h ++ ALSA_LIBRARY=/usr/lib/libasound.so ++ _ALSA_VERSION := $(shell $(EGREP) SND_LIB_VERSION_STR $(ALSA_INCLUDE) | \ ++ $(SED) -e 's@.*"\(.*\)".*@\1@' ) ++ ALSA_VERSION := $(call GetVersion,$(_ALSA_VERSION)) ++ endif +++endif ++ ++ ifeq ($(PLATFORM), macosx) ++ # What kind of system we are using ++--- openjdk/jdk/make/common/shared/Defs-versions.gmk.orig +++++ openjdk/jdk/make/common/shared/Defs-versions.gmk ++@@ -158,7 +158,9 @@ ifeq ($(PLATFORM), linux) ++ REQUIRED_OS_VERSION = 2.6 ++ REQUIRED_OS_VARIANT_NAME = Fedora ++ REQUIRED_OS_VARIANT_VERSION = 9 ++- REQUIRED_ALSA_VERSION = 0.9.1 +++ifneq ($(SYSTEM_UNAME),GNU/kFreeBSD) +++ REQUIRED_ALSA_VERSION = 0.9.1 +++endif ++ REQUIRED_COMPILER_NAME = GCC4 ++ REQUIRED_COMPILER_VERSION = GCC4 ++ REQUIRED_GCC_VER = 2.95 ++--- openjdk/jdk/make/common/shared/Platform.gmk.orig +++++ openjdk/jdk/make/common/shared/Platform.gmk ++@@ -162,7 +162,7 @@ endif ++ ++ ++ # Platform settings specific to Linux ++-ifeq ($(SYSTEM_UNAME), Linux) +++ifneq (,$(filter Linux GNU/kFreeBSD, $(SYSTEM_UNAME))) ++ PLATFORM = linux ++ # Arch and OS name/version ++ ifdef CROSS_COMPILE_ARCH ++--- openjdk/jdk/make/common/shared/Sanity-Settings.gmk.orig +++++ openjdk/jdk/make/common/shared/Sanity-Settings.gmk ++@@ -186,8 +186,10 @@ ifeq ($(PLATFORM),windows) ++ endif ++ ifeq ($(PLATFORM),linux) ++ ifdef REQUIRED_ALSA_VERSION +++ ifneq ($(SYSTEM_UNAME),GNU/kFreeBSD) ++ ALL_SETTINGS+=$(call addRequiredSetting,ALSA_VERSION) ++ endif +++ endif ++ endif ++ ALL_SETTINGS+=$(call addRequiredVersionSetting,OS_VERSION) ++ ALL_SETTINGS+=$(call addOptionalSetting,OS_VARIANT_NAME) ++--- openjdk/jdk/make/javax/sound/Makefile.orig +++++ openjdk/jdk/make/javax/sound/Makefile ++@@ -105,10 +105,12 @@ ifeq ($(PLATFORM), windows) ++ endif # PLATFORM win32 ++ ++ ifeq ($(PLATFORM), linux) +++ifneq ($(SYSTEM_UNAME),GNU/kFreeBSD) ++ # ALSA handles directaudio, ports, and MIDI ++ SUBDIRS += jsoundalsa ++ EXTRA_SOUND_JNI_LIBS += jsoundalsa ++ #MXSPP_ADD = $(PLATFORM)-$(ARCH)/ +++endif # kFreeBSD ++ endif # PLATFORM linux ++ ++ ifeq ($(PLATFORM), macosx) ++--- openjdk/jdk/src/solaris/native/sun/net/portconfig.c.orig +++++ openjdk/jdk/src/solaris/native/sun/net/portconfig.c ++@@ -28,7 +28,7 @@ ++ #include ++ #include ++ ++-#if defined(_ALLBSD_SOURCE) +++#if defined(_ALLBSD_SOURCE) || defined (__FreeBSD_kernel__) ++ #include ++ #endif ++ ++@@ -66,7 +66,7 @@ static int getPortRange(struct portrange ++ range->higher = net_getParam("/dev/tcp", "tcp_largest_anon_port"); ++ return 0; ++ } ++-#elif defined(_ALLBSD_SOURCE) +++#elif defined(_ALLBSD_SOURCE) || defined (__FreeBSD_kernel__) ++ { ++ int ret; ++ size_t size = sizeof(range->lower); ++--- openjdk/jdk/src/solaris/classes/sun/net/PortConfig.java.orig +++++ openjdk/jdk/src/solaris/classes/sun/net/PortConfig.java ++@@ -62,6 +62,9 @@ public final class PortConfig { ++ } else if (os.contains("OS X")) { ++ defaultLower = 49152; ++ defaultUpper = 65535; +++ } else if (os.contains("FreeBSD")) { +++ defaultLower = 10000; +++ defaultUpper = 65535; ++ } else { ++ throw new InternalError( ++ "sun.net.PortConfig: unknown OS"); diff --cc debian/patches/ld-symbolic-functions-aarch64.diff index 0000000,0000000..19c02f0 new file mode 100644 --- /dev/null +++ b/debian/patches/ld-symbolic-functions-aarch64.diff @@@ -1,0 -1,0 +1,33 @@@ ++--- openjdk/hotspot/agent/src/os/linux/Makefile.orig 2008-07-26 23:40:27.434474148 +0200 +++++ openjdk/hotspot/agent/src/os/linux/Makefile 2008-07-26 23:42:08.776002862 +0200 ++@@ -62,7 +62,7 @@ ++ ++ $(LIBSA): $(OBJS) mapfile ++ if [ ! -d $(ARCH) ] ; then mkdir $(ARCH) ; fi ++- $(GCC) -shared $(LFLAGS_LIBSA) -o $(LIBSA) $(OBJS) $(LIBS) +++ $(GCC) -shared -Wl,-Bsymbolic-functions $(LFLAGS_LIBSA) -o $(LIBSA) $(OBJS) $(LIBS) ++ ++ test.o: test.c ++ $(GCC) -c -o test.o -g -D_GNU_SOURCE -D_$(ARCH)_ $(if $(filter $(ARCH),alpha),,-D$(ARCH)) $(INCLUDES) test.c ++--- openjdk/hotspot/make/linux/makefiles/gcc.make.orig 2008-07-26 23:40:27.464474601 +0200 +++++ openjdk/hotspot/make/linux/makefiles/gcc.make 2008-07-26 23:42:08.776002862 +0200 ++@@ -150,6 +150,7 @@ ++ ++ # Enable linker optimization ++ LFLAGS += -Xlinker -O1 +++LFLAGS += -Wl,-Bsymbolic-functions ++ ++ # If this is a --hash-style=gnu system, use --hash-style=both ++ # The gnu .hash section won't work on some Linux systems like SuSE 10. ++ ++--- openjdk/jdk/make/common/Defs-linux.gmk.orig 2008-07-26 23:40:27.444474299 +0200 +++++ openjdk/jdk/make/common/Defs-linux.gmk 2008-07-26 23:42:08.776002862 +0200 ++@@ -215,7 +215,7 @@ ++ ++ EXTRA_LIBS += -lc ++ ++-LDFLAGS_DEFS_OPTION = -Xlinker -z -Xlinker defs +++LDFLAGS_DEFS_OPTION = -Xlinker -z -Xlinker defs -Wl,-Bsymbolic-functions ++ LDFLAGS_COMMON += $(LDFLAGS_DEFS_OPTION) ++ ++ # diff --cc debian/patches/ld-symbolic-functions-default.diff index 0000000,0000000..841a37d new file mode 100644 --- /dev/null +++ b/debian/patches/ld-symbolic-functions-default.diff @@@ -1,0 -1,0 +1,38 @@@ ++Index: openjdk/hotspot/agent/src/os/linux/Makefile ++=================================================================== ++--- openjdk/hotspot/agent/src/os/linux/Makefile +++++ openjdk/hotspot/agent/src/os/linux/Makefile ++@@ -75,7 +75,7 @@ LFLAGS_LIBSA += $(LDFLAGS_HASH_STYLE) ++ ++ $(LIBSA): $(OBJS) mapfile ++ if [ ! -d $(ARCH) ] ; then mkdir $(ARCH) ; fi ++- $(GCC) -shared $(LFLAGS_LIBSA) -o $(LIBSA) $(OBJS) $(LIBS) +++ $(GCC) -shared -Wl,-Bsymbolic-functions $(LFLAGS_LIBSA) -o $(LIBSA) $(OBJS) $(LIBS) ++ ++ test.o: test.c ++ $(GCC) -c -o test.o -g -D_GNU_SOURCE -D_$(ARCH)_ $(if $(filter $(ARCH),alpha),,-D$(ARCH)) $(INCLUDES) test.c ++Index: openjdk/hotspot/make/linux/makefiles/gcc.make ++=================================================================== ++--- openjdk/hotspot/make/linux/makefiles/gcc.make +++++ openjdk/hotspot/make/linux/makefiles/gcc.make ++@@ -229,6 +229,7 @@ endif ++ ++ # Enable linker optimization ++ LFLAGS += -Xlinker -O1 +++LFLAGS += -Wl,-Bsymbolic-functions ++ ++ # If this is a --hash-style=gnu system, use --hash-style=both ++ # The gnu .hash section won't work on some Linux systems like SuSE 10. ++Index: openjdk/jdk/make/common/Defs-linux.gmk ++=================================================================== ++--- openjdk/jdk/make/common/Defs-linux.gmk +++++ openjdk/jdk/make/common/Defs-linux.gmk ++@@ -383,7 +383,7 @@ endif ++ ++ EXTRA_LIBS += -lc ++ ++-LDFLAGS_DEFS_OPTION = -Xlinker -z -Xlinker defs +++LDFLAGS_DEFS_OPTION = -Xlinker -z -Xlinker defs -Wl,-Bsymbolic-functions ++ LDFLAGS_COMMON += $(LDFLAGS_DEFS_OPTION) ++ ++ # diff --cc debian/patches/libpcsclite-dlopen.diff index 0000000,0000000..42569b0 new file mode 100644 --- /dev/null +++ b/debian/patches/libpcsclite-dlopen.diff @@@ -1,0 -1,0 +1,58 @@@ ++Index: openjdk/jdk/src/solaris/classes/sun/security/smartcardio/PlatformPCSC.java ++=================================================================== ++--- openjdk/jdk/src/solaris/classes/sun/security/smartcardio/PlatformPCSC.java.orig +++++ openjdk/jdk/src/solaris/classes/sun/security/smartcardio/PlatformPCSC.java ++@@ -48,6 +48,7 @@ class PlatformPCSC { ++ ++ private final static String PROP_NAME = "sun.security.smartcardio.library"; ++ +++ private final static String LIB0 = "libpcsclite.so.1"; ++ private final static String LIB1 = "/usr/$LIBISA/libpcsclite.so.1"; ++ private final static String LIB2 = "/usr/local/$LIBISA/libpcsclite.so.1"; ++ private final static String LIB3 = "/usr/lib/$ARCH-linux-gnu/libpcsclite.so.1"; ++@@ -137,42 +138,9 @@ class PlatformPCSC { ++ if (lib.length() != 0) { ++ return lib; ++ } ++- lib = expand(LIB1); ++- if (new File(lib).isFile()) { ++- // if LIB1 exists, use that ++- return lib; ++- } ++- lib = expand(LIB2); ++- if (new File(lib).isFile()) { ++- // if LIB2 exists, use that ++- return lib; ++- } ++- lib = expand(LIB3); ++- if (new File(lib).isFile()) { ++- // if LIB3 exists, use that ++- return lib; ++- } ++- lib = LIB4; // Debian armel special case ++- if (new File(lib).isFile()) { ++- // if LIB4 exists, use that ++- return lib; ++- } ++- lib = LIB5; // Debian armhf special case ++- if (new File(lib).isFile()) { ++- // if LIB5 exists, use that ++- return lib; ++- } ++- lib = expand(LIB6); ++- if (new File(lib).isFile()) { ++- // if LIB6 exists, use that ++- return lib; ++- } ++- lib = PCSC_FRAMEWORK; ++- if (new File(lib).isFile()) { ++- // if PCSC.framework exists, use that ++- return lib; ++- } ++- throw new IOException("No PC/SC library found on this system"); +++ // let dlopen do the work +++ lib = LIB0; +++ return lib; ++ } ++ ++ private static native void initialize(String libraryName); diff --cc debian/patches/no-pch-build.diff index 0000000,0000000..37fd245 new file mode 100644 --- /dev/null +++ b/debian/patches/no-pch-build.diff @@@ -1,0 -1,0 +1,132 @@@ ++Index: openjdk/hotspot/src/share/vm/oops/arrayKlassKlass.cpp ++=================================================================== ++--- openjdk/hotspot/src/share/vm/oops/arrayKlassKlass.cpp +++++ openjdk/hotspot/src/share/vm/oops/arrayKlassKlass.cpp ++@@ -30,6 +30,7 @@ ++ #include "runtime/handles.inline.hpp" ++ #ifndef SERIALGC ++ #include "gc_implementation/parNew/parOopClosures.inline.hpp" +++#include "gc_implementation/parallelScavenge/psOldGen.hpp" ++ #include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp" ++ #include "gc_implementation/parallelScavenge/psScavenge.inline.hpp" ++ #include "memory/cardTableRS.hpp" ++Index: openjdk/hotspot/src/share/vm/oops/constantPoolKlass.cpp ++=================================================================== ++--- openjdk/hotspot/src/share/vm/oops/constantPoolKlass.cpp +++++ openjdk/hotspot/src/share/vm/oops/constantPoolKlass.cpp ++@@ -52,6 +52,7 @@ ++ #endif ++ #ifndef SERIALGC ++ #include "gc_implementation/parNew/parOopClosures.inline.hpp" +++#include "gc_implementation/parallelScavenge/psOldGen.hpp" ++ #include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp" ++ #include "gc_implementation/parallelScavenge/psScavenge.inline.hpp" ++ #include "memory/cardTableRS.hpp" ++Index: openjdk/hotspot/src/share/vm/oops/cpCacheKlass.cpp ++=================================================================== ++--- openjdk/hotspot/src/share/vm/oops/cpCacheKlass.cpp +++++ openjdk/hotspot/src/share/vm/oops/cpCacheKlass.cpp ++@@ -35,6 +35,7 @@ ++ #include "runtime/handles.inline.hpp" ++ #ifndef SERIALGC ++ #include "gc_implementation/parNew/parOopClosures.inline.hpp" +++#include "gc_implementation/parallelScavenge/psOldGen.hpp" ++ #include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp" ++ #include "gc_implementation/parallelScavenge/psScavenge.inline.hpp" ++ #include "memory/cardTableRS.hpp" ++Index: openjdk/hotspot/src/share/vm/oops/instanceKlass.cpp ++=================================================================== ++--- openjdk/hotspot/src/share/vm/oops/instanceKlass.cpp +++++ openjdk/hotspot/src/share/vm/oops/instanceKlass.cpp ++@@ -73,6 +73,7 @@ ++ #include "gc_implementation/g1/g1RemSet.inline.hpp" ++ #include "gc_implementation/g1/heapRegionSeq.inline.hpp" ++ #include "gc_implementation/parNew/parOopClosures.inline.hpp" +++#include "gc_implementation/parallelScavenge/psOldGen.hpp" ++ #include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp" ++ #include "gc_implementation/parallelScavenge/psScavenge.inline.hpp" ++ #include "oops/oop.pcgc.inline.hpp" ++Index: openjdk/hotspot/src/share/vm/oops/instanceKlassKlass.cpp ++=================================================================== ++--- openjdk/hotspot/src/share/vm/oops/instanceKlassKlass.cpp +++++ openjdk/hotspot/src/share/vm/oops/instanceKlassKlass.cpp ++@@ -44,6 +44,7 @@ ++ #include "runtime/fieldDescriptor.hpp" ++ #ifndef SERIALGC ++ #include "gc_implementation/parNew/parOopClosures.inline.hpp" +++#include "gc_implementation/parallelScavenge/psOldGen.hpp" ++ #include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp" ++ #include "gc_implementation/parallelScavenge/psScavenge.inline.hpp" ++ #include "memory/cardTableRS.hpp" ++Index: openjdk/hotspot/src/share/vm/oops/instanceMirrorKlass.cpp ++=================================================================== ++--- openjdk/hotspot/src/share/vm/oops/instanceMirrorKlass.cpp +++++ openjdk/hotspot/src/share/vm/oops/instanceMirrorKlass.cpp ++@@ -42,6 +42,7 @@ ++ #include "gc_implementation/g1/g1RemSet.inline.hpp" ++ #include "gc_implementation/g1/heapRegionSeq.inline.hpp" ++ #include "gc_implementation/parNew/parOopClosures.inline.hpp" +++#include "gc_implementation/parallelScavenge/psOldGen.hpp" ++ #include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp" ++ #include "gc_implementation/parallelScavenge/psScavenge.inline.hpp" ++ #include "oops/oop.pcgc.inline.hpp" ++Index: openjdk/hotspot/src/share/vm/oops/instanceRefKlass.cpp ++=================================================================== ++--- openjdk/hotspot/src/share/vm/oops/instanceRefKlass.cpp +++++ openjdk/hotspot/src/share/vm/oops/instanceRefKlass.cpp ++@@ -39,6 +39,7 @@ ++ #include "gc_implementation/g1/g1RemSet.inline.hpp" ++ #include "gc_implementation/g1/heapRegionSeq.inline.hpp" ++ #include "gc_implementation/parNew/parOopClosures.inline.hpp" +++#include "gc_implementation/parallelScavenge/psOldGen.hpp" ++ #include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp" ++ #include "gc_implementation/parallelScavenge/psScavenge.inline.hpp" ++ #include "oops/oop.pcgc.inline.hpp" ++Index: openjdk/hotspot/src/share/vm/oops/klassKlass.cpp ++=================================================================== ++--- openjdk/hotspot/src/share/vm/oops/klassKlass.cpp +++++ openjdk/hotspot/src/share/vm/oops/klassKlass.cpp ++@@ -42,6 +42,7 @@ ++ #include "runtime/handles.inline.hpp" ++ #ifndef SERIALGC ++ #include "gc_implementation/parNew/parOopClosures.inline.hpp" +++#include "gc_implementation/parallelScavenge/psOldGen.hpp" ++ #include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp" ++ #include "gc_implementation/parallelScavenge/psScavenge.inline.hpp" ++ #include "memory/cardTableRS.hpp" ++Index: openjdk/hotspot/src/share/vm/oops/objArrayKlass.cpp ++=================================================================== ++--- openjdk/hotspot/src/share/vm/oops/objArrayKlass.cpp +++++ openjdk/hotspot/src/share/vm/oops/objArrayKlass.cpp ++@@ -47,6 +47,7 @@ ++ #include "gc_implementation/g1/g1RemSet.inline.hpp" ++ #include "gc_implementation/g1/heapRegionSeq.inline.hpp" ++ #include "gc_implementation/parNew/parOopClosures.inline.hpp" +++#include "gc_implementation/parallelScavenge/psOldGen.hpp" ++ #include "gc_implementation/parallelScavenge/psCompactionManager.hpp" ++ #include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp" ++ #include "gc_implementation/parallelScavenge/psScavenge.inline.hpp" ++Index: openjdk/hotspot/src/share/vm/oops/objArrayKlassKlass.cpp ++=================================================================== ++--- openjdk/hotspot/src/share/vm/oops/objArrayKlassKlass.cpp +++++ openjdk/hotspot/src/share/vm/oops/objArrayKlassKlass.cpp ++@@ -33,6 +33,7 @@ ++ #include "oops/oop.inline2.hpp" ++ #ifndef SERIALGC ++ #include "gc_implementation/parNew/parOopClosures.inline.hpp" +++#include "gc_implementation/parallelScavenge/psOldGen.hpp" ++ #include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp" ++ #include "gc_implementation/parallelScavenge/psScavenge.inline.hpp" ++ #include "memory/cardTableRS.hpp" ++Index: openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psTasks.cpp ++=================================================================== ++--- openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psTasks.cpp +++++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psTasks.cpp ++@@ -28,6 +28,7 @@ ++ #include "gc_implementation/parallelScavenge/cardTableExtension.hpp" ++ #include "gc_implementation/parallelScavenge/gcTaskManager.hpp" ++ #include "gc_implementation/parallelScavenge/psMarkSweep.hpp" +++#include "gc_implementation/parallelScavenge/psOldGen.hpp" ++ #include "gc_implementation/parallelScavenge/psPromotionManager.hpp" ++ #include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp" ++ #include "gc_implementation/parallelScavenge/psScavenge.inline.hpp" diff --cc debian/patches/nonreparenting-wm.diff index 0000000,0000000..ff14c5e new file mode 100644 --- /dev/null +++ b/debian/patches/nonreparenting-wm.diff @@@ -1,0 -1,0 +1,60 @@@ ++Index: openjdk/jdk/src/solaris/classes/sun/awt/X11/XWM.java ++=================================================================== ++--- openjdk/jdk/src/solaris/classes/sun/awt/X11/XWM.java +++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XWM.java ++@@ -105,7 +105,8 @@ final class XWM ++ LG3D_WM = 13, ++ CWM_WM = 14, ++ MUTTER_WM = 15, ++- MARCO_WM = 16; +++ MARCO_WM = 16, +++ OTHER_NONREPARENTING_WM = 17; ++ public String toString() { ++ switch (WMID) { ++ case NO_WM: ++@@ -605,7 +606,7 @@ final class XWM ++ // TODO: according to wikipedia, compiz is now reparenting. This should ++ // probably be updated. ++ static boolean isNonReparentingWM() { ++- return (XWM.getWMID() == XWM.COMPIZ_WM || XWM.getWMID() == XWM.LG3D_WM || XWM.getWMID() == XWM.CWM_WM); +++ return (XWM.getWMID() == XWM.COMPIZ_WM || XWM.getWMID() == XWM.LG3D_WM || XWM.getWMID() == XWM.CWM_WM || XWM.getWMID() == XWM.OTHER_NONREPARENTING_WM); ++ } ++ ++ /* ++@@ -802,9 +803,17 @@ final class XWM ++ * supports WIN or _NET wm spec. ++ */ ++ else if (l_net_protocol.active()) { ++- awt_wmgr = XWM.OTHER_WM; +++ if (XToolkit.getEnv("_JAVA_AWT_WM_NONREPARENTING") != null) { +++ awt_wmgr = XWM.OTHER_NONREPARENTING_WM; +++ } else { +++ awt_wmgr = XWM.OTHER_WM; +++ } ++ } else if (win.active()) { ++- awt_wmgr = XWM.OTHER_WM; +++ if (XToolkit.getEnv("_JAVA_AWT_WM_NONREPARENTING") != null) { +++ awt_wmgr = XWM.OTHER_NONREPARENTING_WM; +++ } else { +++ awt_wmgr = XWM.OTHER_WM; +++ } ++ } ++ /* ++ * Check for legacy WMs. ++@@ -815,6 +824,8 @@ final class XWM ++ awt_wmgr = XWM.MOTIF_WM; ++ } else if (isOpenLook()) { ++ awt_wmgr = XWM.OPENLOOK_WM; +++ } else if (XToolkit.getEnv("_JAVA_AWT_WM_NONREPARENTING") != null) { +++ awt_wmgr = XWM.OTHER_NONREPARENTING_WM; ++ } else { ++ awt_wmgr = XWM.OTHER_WM; ++ } ++@@ -1346,6 +1357,7 @@ final class XWM ++ res = new Insets(28, 6, 6, 6); ++ break; ++ case NO_WM: +++ case OTHER_NONREPARENTING_WM: ++ case LG3D_WM: ++ res = zeroInsets; ++ break; diff --cc debian/patches/openjdk-jdk7u191-b01-jaxp.patch index 0000000,0000000..d911721 new file mode 100644 --- /dev/null +++ b/debian/patches/openjdk-jdk7u191-b01-jaxp.patch @@@ -1,0 -1,0 +1,88 @@@ ++# HG changeset patch ++# User ljiang ++# Date 1525707850 25200 ++# Mon May 07 08:44:10 2018 -0700 ++# Node ID 7edc1ac946838379341ef046d8787ada2bf818e4 ++# Parent 3389db799eb12c4efb9a05ec79d3ce618fd5e197 ++8202585: JDK 8u181 l10n resource file update ++Reviewed-by: coffeys ++ ++diff --git openjdk/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages_de.java openjdk/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages_de.java ++--- openjdk/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages_de.java +++++ openjdk/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages_de.java ++@@ -257,7 +257,7 @@ ++ * text. ++ */ ++ {ErrorMsg.ILLEGAL_ATTRIBUTE_ERR, ++- "Ung\u00FCltiges Attribut \"{0}\"."}, +++ "Unzul\u00E4ssiges Attribut \"{0}\"."}, ++ ++ /* ++ * Note to translators: "import" and "include" are keywords that should ++@@ -310,7 +310,7 @@ ++ * function has too many or too few arguments. ++ */ ++ {ErrorMsg.ILLEGAL_ARG_ERR, ++- "Ung\u00FCltige Argumente f\u00FCr Funktionsaufruf."}, +++ "Unzul\u00E4ssige Argumente f\u00FCr Funktionsaufruf."}, ++ ++ /* ++ * Note to translators: "document()" is the name of function and must ++diff --git openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/DOMMessages_de.properties openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/DOMMessages_de.properties ++--- openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/DOMMessages_de.properties +++++ openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/DOMMessages_de.properties ++@@ -16,7 +16,7 @@ ++ INDEX_SIZE_ERR = Index oder Gr\u00F6\u00DFe ist negativ oder gr\u00F6\u00DFer als der zul\u00E4ssige Wert. ++ INUSE_ATTRIBUTE_ERR = Es wurde versucht, ein Attribut hinzuzuf\u00FCgen, das bereits an einer anderen Stelle verwendet wird. ++ INVALID_ACCESS_ERR = Ein Parameter oder Vorgang wird nicht vom zugrunde liegenden Objekt unterst\u00FCtzt. ++-INVALID_CHARACTER_ERR = Ung\u00FCltiges XML-Zeichen angegeben. +++INVALID_CHARACTER_ERR = Ung\u00FCltiges oder unzul\u00E4ssiges XML-Zeichen angegeben. ++ INVALID_MODIFICATION_ERR = Es wurde versucht, den Typ des zugrunde liegenden Objekts zu \u00E4ndern. ++ INVALID_STATE_ERR = Es wurde versucht, ein Objekt zu \u00E4ndern, das nicht verwendet werden kann. ++ NAMESPACE_ERR = Es wurde versucht, ein Objekt auf eine Weise zu erstellen oder zu \u00E4ndern, die falsch in Bezug auf Namespaces ist. ++@@ -24,7 +24,7 @@ ++ NOT_SUPPORTED_ERR = Der angeforderte Typ des Objekts oder Vorgangs wird nicht von der Implementierung unterst\u00FCtzt. ++ NO_DATA_ALLOWED_ERR = Daten wurden f\u00FCr einen Knoten angegeben, der keine Daten unterst\u00FCtzt. ++ NO_MODIFICATION_ALLOWED_ERR = Es wurde versucht, ein Objekt zu \u00E4ndern, bei dem \u00C4nderungen nicht zul\u00E4ssig sind. ++-SYNTAX_ERR = Ung\u00FCltige Zeichenfolge angegeben. +++SYNTAX_ERR = Ung\u00FCltige oder unzul\u00E4ssige Zeichenfolge angegeben. ++ VALIDATION_ERR = Aufruf einer Methode wie insertBefore oder removeChild w\u00FCrde die Dokumentgrammatik des Knotens ung\u00FCltig machen. ++ WRONG_DOCUMENT_ERR = Ein Knoten wird in einem anderen Dokument verwendet als dem, von dem er erstellt wurde. ++ TYPE_MISMATCH_ERR = Der Werttyp f\u00FCr diesen Parameternamen ist nicht mit dem erwarteten Werttyp kompatibel. ++diff --git openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_de.properties openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_de.properties ++--- openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_de.properties +++++ openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_de.properties ++@@ -123,7 +123,7 @@ ++ InvalidHighSurrogate = High-Surrogate-Bits in UTF-8-Sequenz d\u00FCrfen 0x10 nicht \u00FCberschreiten, gefunden wurde aber 0x{0}. ++ OperationNotSupported = Vorgang "{0}" nicht unterst\u00FCtzt von {1}-Reader. ++ InvalidASCII = Byte "{0}" geh\u00F6rt nicht zum (7-Bit) ASCII-Zeichensatz. ++- CharConversionFailure = Eine Entity, f\u00FCr die eine bestimmte Codierung ermittelt wurde, darf keine Sequenzen enthalten, die in dieser Codierung ung\u00FCltig sind. +++ CharConversionFailure = Eine Entity, f\u00FCr die eine bestimmte Codierung ermittelt wurde, darf keine Sequenzen enthalten, die in dieser Codierung unzul\u00E4ssig sind. ++ ++ # DTD Messages ++ # 2.2 Characters ++diff --git openjdk/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_de.java openjdk/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_de.java ++--- openjdk/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_de.java +++++ openjdk/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_de.java ++@@ -432,7 +432,7 @@ ++ "ERROR. Unbekannter Vorgangscode: {0}"}, ++ ++ { ER_EXTRA_ILLEGAL_TOKENS, ++- "Zus\u00E4tzliche ung\u00FCltige Tokens: {0}"}, +++ "Zus\u00E4tzliche unzul\u00E4ssige Tokens: {0}"}, ++ ++ { ER_EXPECTED_DOUBLE_QUOTE, ++ "Literal in falschen Anf\u00FChrungszeichen... Doppelte Anf\u00FChrungszeichen erwartet."}, ++@@ -459,10 +459,10 @@ ++ "\",\" gefunden, aber kein folgendes Argument vorhanden."}, ++ ++ { ER_PREDICATE_ILLEGAL_SYNTAX, ++- "\"..[predicate]\" oder \".[predicate]\" ist ung\u00FCltige Syntax. Verwenden Sie stattdessen \"self::node()[predicate]\"."}, +++ "\"..[predicate]\" oder \".[predicate]\" ist unzul\u00E4ssige Syntax. Verwenden Sie stattdessen \"self::node()[predicate]\"."}, ++ ++ { ER_ILLEGAL_AXIS_NAME, ++- "Ung\u00FCltiger Achsenname: {0}"}, +++ "Unzul\u00E4ssiger Achsenname: {0}"}, ++ ++ { ER_UNKNOWN_NODETYPE, ++ "Unbekannter Knotentyp: {0}"}, diff --cc debian/patches/openjdk-jdk7u191-b01-jdk.patch index 0000000,0000000..d1c9e1c new file mode 100644 --- /dev/null +++ b/debian/patches/openjdk-jdk7u191-b01-jdk.patch @@@ -1,0 -1,0 +1,4750 @@@ ++# HG changeset patch ++# User serb ++# Date 1529706681 -3600 ++# Fri Jun 22 23:31:21 2018 +0100 ++# Node ID bfb247488c814ef3c8ce20585258ecb138768524 ++# Parent e146e0fb6dee654e0ff39bb41d69a7a260b1c1da ++8191239: Improve desktop file usage ++Reviewed-by: duke ++ ++diff --git openjdk/jdk/src/share/classes/java/awt/Desktop.java openjdk/jdk/src/share/classes/java/awt/Desktop.java ++--- openjdk/jdk/src/share/classes/java/awt/Desktop.java +++++ openjdk/jdk/src/share/classes/java/awt/Desktop.java ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -202,15 +202,11 @@ ++ * @throws NullPointerException if file is null ++ * @throws IllegalArgumentException if file doesn't exist ++ */ ++- private static void checkFileValidation(File file){ ++- if (file == null) throw new NullPointerException("File must not be null"); ++- +++ private static void checkFileValidation(File file) { ++ if (!file.exists()) { ++ throw new IllegalArgumentException("The file: " ++ + file.getPath() + " doesn't exist."); ++ } ++- ++- file.canRead(); ++ } ++ ++ /** ++@@ -264,6 +260,7 @@ ++ * @see java.awt.AWTPermission ++ */ ++ public void open(File file) throws IOException { +++ file = new File(file.getPath()); ++ checkAWTPermission(); ++ checkExec(); ++ checkActionSupport(Action.OPEN); ++@@ -295,6 +292,7 @@ ++ * @see java.awt.AWTPermission ++ */ ++ public void edit(File file) throws IOException { +++ file = new File(file.getPath()); ++ checkAWTPermission(); ++ checkExec(); ++ checkActionSupport(Action.EDIT); ++@@ -325,6 +323,7 @@ ++ * allowed to create a subprocess ++ */ ++ public void print(File file) throws IOException { +++ file = new File(file.getPath()); ++ checkExec(); ++ SecurityManager sm = System.getSecurityManager(); ++ if (sm != null) { ++# HG changeset patch ++# User andrew ++# Date 1529891577 -3600 ++# Mon Jun 25 02:52:57 2018 +0100 ++# Node ID fa37579539675592e1c1fe8be6c81bb96089b8e3 ++# Parent bfb247488c814ef3c8ce20585258ecb138768524 ++8205587: Implicit function declaration in jni_util.c ++Reviewed-by: duke ++ ++diff --git openjdk/jdk/src/share/native/common/jni_util.c openjdk/jdk/src/share/native/common/jni_util.c ++--- openjdk/jdk/src/share/native/common/jni_util.c +++++ openjdk/jdk/src/share/native/common/jni_util.c ++@@ -27,8 +27,7 @@ ++ #include ++ ++ #include "jvm.h" ++-#include "jni.h" ++-#include "jni_util.h" +++#include "io_util.h" ++ ++ /* Due to a bug in the win32 C runtime library strings ++ * such as "z:" need to be appended with a "." so we ++# HG changeset patch ++# User alanb ++# Date 1529985575 -3600 ++# Tue Jun 26 04:59:35 2018 +0100 ++# Node ID 71a0056c1362d7c9430a0fab57eeae0cb1522e49 ++# Parent fa37579539675592e1c1fe8be6c81bb96089b8e3 ++8034856: gcc warnings compiling src/solaris/native/sun/security/pkcs11 ++8034857: gcc warnings compiling src/solaris/native/sun/management ++Reviewed-by: sla, mullan ++ ++diff --git openjdk/jdk/src/share/instrument/JarFacade.c openjdk/jdk/src/share/instrument/JarFacade.c ++--- openjdk/jdk/src/share/instrument/JarFacade.c +++++ openjdk/jdk/src/share/instrument/JarFacade.c ++@@ -33,6 +33,7 @@ ++ #endif /* __solaris__ */ ++ #include ++ #include +++#include ++ ++ #include "jni.h" ++ #include "manifest_info.h" ++diff --git openjdk/jdk/src/share/native/sun/security/pkcs11/wrapper/pkcs11wrapper.h openjdk/jdk/src/share/native/sun/security/pkcs11/wrapper/pkcs11wrapper.h ++--- openjdk/jdk/src/share/native/sun/security/pkcs11/wrapper/pkcs11wrapper.h +++++ openjdk/jdk/src/share/native/sun/security/pkcs11/wrapper/pkcs11wrapper.h ++@@ -55,6 +55,9 @@ ++ * @author Martin Schlaeffer ++ */ ++ +++#ifndef _PKCS11WRAPPER_H +++#define _PKCS11WRAPPER_H 1 +++ ++ /* disable asserts in product mode */ ++ #ifndef DEBUG ++ #ifndef NDEBUG ++@@ -455,3 +458,5 @@ ++ #define free(c) (p11free((c), __FILE__, __LINE__)) ++ ++ #endif +++ +++#endif /* _PKCS11WRAPPER_H */ ++diff --git openjdk/jdk/src/solaris/native/com/sun/management/LinuxOperatingSystem.c openjdk/jdk/src/solaris/native/com/sun/management/LinuxOperatingSystem.c ++--- openjdk/jdk/src/solaris/native/com/sun/management/LinuxOperatingSystem.c +++++ openjdk/jdk/src/solaris/native/com/sun/management/LinuxOperatingSystem.c ++@@ -35,6 +35,7 @@ ++ #include ++ #include ++ #include +++#include ++ #include "com_sun_management_UnixOperatingSystem.h" ++ ++ struct ticks { ++@@ -57,7 +58,7 @@ ++ ticks *cpus; ++ } counters; ++ ++-#define DEC_64 "%lld" +++#define DEC_64 "%"SCNd64 ++ ++ static void next_line(FILE *f) { ++ while (fgetc(f) != '\n'); ++diff --git openjdk/jdk/src/solaris/native/sun/security/pkcs11/j2secmod_md.c openjdk/jdk/src/solaris/native/sun/security/pkcs11/j2secmod_md.c ++--- openjdk/jdk/src/solaris/native/sun/security/pkcs11/j2secmod_md.c +++++ openjdk/jdk/src/solaris/native/sun/security/pkcs11/j2secmod_md.c ++@@ -32,8 +32,8 @@ ++ ++ #include ++ ++-#include "pkcs11wrapper.h" ++ #include "j2secmod.h" +++#include "wrapper/pkcs11wrapper.h" ++ ++ void *findFunction(JNIEnv *env, jlong jHandle, const char *functionName) { ++ void *hModule = (void*)jlong_to_ptr(jHandle); ++# HG changeset patch ++# User mikael ++# Date 1393269883 28800 ++# Mon Feb 24 11:24:43 2014 -0800 ++# Node ID 8613e236aef2c0eefac079bf3a6b84e0e283d298 ++# Parent 71a0056c1362d7c9430a0fab57eeae0cb1522e49 ++8035054: JarFacade.c should not include ctype.h ++Reviewed-by: alanb ++ ++diff --git openjdk/jdk/src/share/instrument/JarFacade.c openjdk/jdk/src/share/instrument/JarFacade.c ++--- openjdk/jdk/src/share/instrument/JarFacade.c +++++ openjdk/jdk/src/share/instrument/JarFacade.c ++@@ -23,17 +23,8 @@ ++ * questions. ++ */ ++ ++-#ifndef __solaris__ ++-/* ++- * Win* needs this include. However, Linux and Solaris do not. ++- * Having this include on Solaris SPARC breaks having non US-ASCII ++- * characters in the value of the Premain-Class attribute. ++- */ ++-#include ++-#endif /* __solaris__ */ ++ #include ++ #include ++-#include ++ ++ #include "jni.h" ++ #include "manifest_info.h" ++@@ -59,13 +50,13 @@ ++ size_t value_len; ++ ++ /* skip any leading white space */ ++- while (isspace(*begin)) { +++ while (*begin == ' ') { ++ begin++; ++ } ++ ++ /* skip any trailing white space */ ++ end = &begin[strlen(begin)]; ++- while (end > begin && isspace(end[-1])) { +++ while (end > begin && end[-1] == ' ') { ++ end--; ++ } ++ ++# HG changeset patch ++# User pchelko ++# Date 1529987398 -3600 ++# Tue Jun 26 05:29:58 2018 +0100 ++# Node ID 17c67bc36e672ee4141c82b0b784c5a885a38220 ++# Parent 8613e236aef2c0eefac079bf3a6b84e0e283d298 ++8005661: [parfait] Possible buffer overrun in jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c ++8005695: [parfait] Format string argument mismatch in jdk/src/solaris/native/sun/xawt/XToolkit.c ++8005752: [parfait] False positive function call mismatch at jdk/src/solaris/native/sun/xawt/XWindow.c ++Reviewed-by: art, serb ++ ++diff --git openjdk/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c openjdk/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c ++--- openjdk/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c +++++ openjdk/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c ++@@ -1444,12 +1444,18 @@ ++ mid = (*env)->GetMethodID(env, clazz, "", "(IIII)V"); ++ if (mid != NULL) { ++ if (usingXinerama) { ++- bounds = (*env)->NewObject(env, clazz, mid, fbrects[screen].x, ++- fbrects[screen].y, ++- fbrects[screen].width, ++- fbrects[screen].height); ++- } ++- else { +++ if (0 <= screen && screen < awt_numScreens) { +++ bounds = (*env)->NewObject(env, clazz, mid, fbrects[screen].x, +++ fbrects[screen].y, +++ fbrects[screen].width, +++ fbrects[screen].height); +++ } else { +++ jclass exceptionClass = (*env)->FindClass(env, "java/lang/IllegalArgumentException"); +++ if (exceptionClass != NULL) { +++ (*env)->ThrowNew(env, exceptionClass, "Illegal screen index"); +++ } +++ } +++ } else { ++ bounds = (*env)->NewObject(env, clazz, mid, 0, 0, ++ DisplayWidth(awt_display, ++ adata->awt_visInfo.screen), ++diff --git openjdk/jdk/src/solaris/native/sun/awt/awt_InputMethod.c openjdk/jdk/src/solaris/native/sun/awt/awt_InputMethod.c ++--- openjdk/jdk/src/solaris/native/sun/awt/awt_InputMethod.c +++++ openjdk/jdk/src/solaris/native/sun/awt/awt_InputMethod.c ++@@ -506,7 +506,7 @@ ++ */ ++ #define INITIAL_LOOKUP_BUF_SIZE 512 ++ ++-Bool +++Boolean ++ awt_x11inputmethod_lookupString(XKeyPressedEvent *event, KeySym *keysymp) ++ { ++ JNIEnv *env = GetJNIEnv(); ++@@ -516,8 +516,8 @@ ++ int mblen; ++ jstring javastr; ++ XIC ic; ++- Bool result = True; ++- static Bool composing = False; +++ Boolean result = True; +++ static Boolean composing = False; ++ ++ /* ++ printf("lookupString: entering...\n"); ++diff --git openjdk/jdk/src/solaris/native/sun/xawt/XToolkit.c openjdk/jdk/src/solaris/native/sun/xawt/XToolkit.c ++--- openjdk/jdk/src/solaris/native/sun/xawt/XToolkit.c +++++ openjdk/jdk/src/solaris/native/sun/xawt/XToolkit.c ++@@ -688,8 +688,7 @@ ++ if (result == 0) { ++ /* poll() timed out -- update timeout value */ ++ update_poll_timeout(TIMEOUT_TIMEDOUT); ++- PRINT2("%s(): TIMEOUT_TIMEDOUT curPollTimeout = %d \n", ++- performPoll, curPollTimeout); +++ PRINT2("performPoll(): TIMEOUT_TIMEDOUT curPollTimeout = %d \n", curPollTimeout); ++ } ++ if (pollFds[1].revents) { ++ int count; ++@@ -698,14 +697,12 @@ ++ do { ++ count = read(AWT_READPIPE, read_buf, AWT_POLL_BUFSIZE ); ++ } while (count == AWT_POLL_BUFSIZE ); ++- PRINT2("%s(): data on the AWT pipe: curPollTimeout = %d \n", ++- performPoll, curPollTimeout); +++ PRINT2("performPoll(): data on the AWT pipe: curPollTimeout = %d \n", curPollTimeout); ++ } ++ if (pollFds[0].revents) { ++ // Events in X pipe ++ update_poll_timeout(TIMEOUT_EVENTS); ++- PRINT2("%s(): TIMEOUT_EVENTS curPollTimeout = %ld \n", ++- performPoll, curPollTimeout); +++ PRINT2("performPoll(): TIMEOUT_EVENTS curPollTimeout = %ld \n", curPollTimeout); ++ } ++ return; ++ ++# HG changeset patch ++# User mikael ++# Date 1529990843 -3600 ++# Tue Jun 26 06:27:23 2018 +0100 ++# Node ID b7bcbd8bd234548a2034ced3e61a8173dfb19463 ++# Parent 17c67bc36e672ee4141c82b0b784c5a885a38220 ++8035287: gcc warnings compiling various libraries files ++Reviewed-by: prr ++ ++diff --git openjdk/jdk/src/share/native/com/sun/java/util/jar/pack/bands.cpp openjdk/jdk/src/share/native/com/sun/java/util/jar/pack/bands.cpp ++--- openjdk/jdk/src/share/native/com/sun/java/util/jar/pack/bands.cpp +++++ openjdk/jdk/src/share/native/com/sun/java/util/jar/pack/bands.cpp ++@@ -291,7 +291,7 @@ ++ cspec, ix } ++ #endif ++ ++-const band_init all_band_inits[] = { +++const band_init all_band_inits[BAND_LIMIT+1] = { ++ //BAND_INIT(archive_magic, BYTE1_spec, 0), ++ //BAND_INIT(archive_header, UNSIGNED5_spec, 0), ++ //BAND_INIT(band_headers, BYTE1_spec, 0), ++@@ -439,13 +439,11 @@ ++ BAND_INIT(file_options, UNSIGNED5_spec, 0), ++ //BAND_INIT(file_bits, BYTE1_spec, 0), ++ #ifndef PRODUCT ++- { 0, 0, 0, 0 } +++ { 0, NULL, 0, 0 } ++ #else ++ { 0, 0 } ++ #endif ++ }; ++-#define NUM_BAND_INITS \ ++- (sizeof(all_band_inits)/sizeof(all_band_inits[0])) ++ ++ band* band::makeBands(unpacker* u) { ++ band* tmp_all_bands = U_NEW(band, BAND_LIMIT); ++diff --git openjdk/jdk/src/share/native/sun/java2d/opengl/OGLContext.c openjdk/jdk/src/share/native/sun/java2d/opengl/OGLContext.c ++--- openjdk/jdk/src/share/native/sun/java2d/opengl/OGLContext.c +++++ openjdk/jdk/src/share/native/sun/java2d/opengl/OGLContext.c ++@@ -38,7 +38,7 @@ ++ #include "GraphicsPrimitiveMgr.h" ++ #include "Region.h" ++ ++-#include +++#include "jvm.h" ++ ++ /** ++ * The following methods are implemented in the windowing system (i.e. GLX ++diff --git openjdk/jdk/src/solaris/native/sun/awt/awt_Font.c openjdk/jdk/src/solaris/native/sun/awt/awt_Font.c ++--- openjdk/jdk/src/solaris/native/sun/awt/awt_Font.c +++++ openjdk/jdk/src/solaris/native/sun/awt/awt_Font.c ++@@ -526,6 +526,7 @@ ++ int32_t i, size; ++ char *fontsetname = NULL; ++ char *nativename = NULL; +++ Boolean doFree = FALSE; ++ jobjectArray componentFonts = NULL; ++ jobject peer = NULL; ++ jobject fontDescriptor = NULL; ++@@ -565,8 +566,10 @@ ++ ++ if (!JNU_IsNull(env, fontDescriptorName)) { ++ nativename = (char *) JNU_GetStringPlatformChars(env, fontDescriptorName, NULL); +++ doFree = TRUE; ++ } else { ++ nativename = ""; +++ doFree = FALSE; ++ } ++ ++ fdata->flist[i].xlfd = malloc(strlen(nativename) ++@@ -574,7 +577,7 @@ ++ jio_snprintf(fdata->flist[i].xlfd, strlen(nativename) + 10, ++ nativename, size * 10); ++ ++- if (nativename != NULL && *nativename != '\0') +++ if (nativename != NULL && doFree) ++ JNU_ReleaseStringPlatformChars(env, fontDescriptorName, (const char *) nativename); ++ ++ /* ++diff --git openjdk/jdk/src/solaris/native/sun/awt/awt_LoadLibrary.c openjdk/jdk/src/solaris/native/sun/awt/awt_LoadLibrary.c ++--- openjdk/jdk/src/solaris/native/sun/awt/awt_LoadLibrary.c +++++ openjdk/jdk/src/solaris/native/sun/awt/awt_LoadLibrary.c ++@@ -276,7 +276,7 @@ ++ ++ ++ #define REFLECT_VOID_FUNCTION(name, arglist, paramlist) \ ++-typedef name##_type arglist; \ +++typedef void name##_type arglist; \ ++ void name arglist \ ++ { \ ++ static name##_type *name##_ptr = NULL; \ ++diff --git openjdk/jdk/src/solaris/native/sun/java2d/x11/X11SurfaceData.c openjdk/jdk/src/solaris/native/sun/java2d/x11/X11SurfaceData.c ++--- openjdk/jdk/src/solaris/native/sun/java2d/x11/X11SurfaceData.c +++++ openjdk/jdk/src/solaris/native/sun/java2d/x11/X11SurfaceData.c ++@@ -537,7 +537,7 @@ ++ xsdo->cData = xsdo->configData->color_data; ++ ++ XShared_initSurface(env, xsdo, depth, width, height, drawable); ++- xsdo->xrPic = NULL; +++ xsdo->xrPic = None; ++ #endif /* !HEADLESS */ ++ } ++ ++diff --git openjdk/jdk/src/solaris/native/sun/xawt/XToolkit.c openjdk/jdk/src/solaris/native/sun/xawt/XToolkit.c ++--- openjdk/jdk/src/solaris/native/sun/xawt/XToolkit.c +++++ openjdk/jdk/src/solaris/native/sun/xawt/XToolkit.c ++@@ -702,7 +702,7 @@ ++ if (pollFds[0].revents) { ++ // Events in X pipe ++ update_poll_timeout(TIMEOUT_EVENTS); ++- PRINT2("performPoll(): TIMEOUT_EVENTS curPollTimeout = %ld \n", curPollTimeout); +++ PRINT2("performPoll(): TIMEOUT_EVENTS curPollTimeout = %d \n", curPollTimeout); ++ } ++ return; ++ ++# HG changeset patch ++# User igerasim ++# Date 1530062469 -3600 ++# Wed Jun 27 02:21:09 2018 +0100 ++# Node ID fde0a554135afd60f721ee05ad1a682797c68116 ++# Parent b7bcbd8bd234548a2034ced3e61a8173dfb19463 ++8193419: Better Internet address support ++Reviewed-by: duke ++ ++diff --git openjdk/jdk/src/share/native/common/jni_util.h openjdk/jdk/src/share/native/common/jni_util.h ++--- openjdk/jdk/src/share/native/common/jni_util.h +++++ openjdk/jdk/src/share/native/common/jni_util.h ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 1997, 2004, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -297,6 +297,22 @@ ++ } \ ++ } while (0) \ ++ +++#define CHECK_NULL_THROW_NPE(env, x, msg) \ +++ do { \ +++ if ((x) == NULL) { \ +++ JNU_ThrowNullPointerException((env), (msg));\ +++ return; \ +++ } \ +++ } while(0) \ +++ +++#define CHECK_NULL_THROW_NPE_RETURN(env, x, msg, z)\ +++ do { \ +++ if ((x) == NULL) { \ +++ JNU_ThrowNullPointerException((env), (msg));\ +++ return (z); \ +++ } \ +++ } while(0) \ +++ ++ #define CHECK_NULL_RETURN(x, y) \ ++ do { \ ++ if ((x) == NULL) { \ ++diff --git openjdk/jdk/src/share/native/java/net/net_util.c openjdk/jdk/src/share/native/java/net/net_util.c ++--- openjdk/jdk/src/share/native/java/net/net_util.c +++++ openjdk/jdk/src/share/native/java/net/net_util.c ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -212,6 +212,7 @@ ++ jobject holder; ++ initInetAddrs(env); ++ holder = (*env)->GetObjectField(env, iaObj, ia_holderID); +++ CHECK_NULL_THROW_NPE(env, holder, "InetAddress holder is null"); ++ (*env)->SetIntField(env, holder, iac_addressID, address); ++ } ++ ++@@ -219,6 +220,7 @@ ++ jobject holder; ++ initInetAddrs(env); ++ holder = (*env)->GetObjectField(env, iaObj, ia_holderID); +++ CHECK_NULL_THROW_NPE(env, holder, "InetAddress holder is null"); ++ (*env)->SetIntField(env, holder, iac_familyID, family); ++ } ++ ++@@ -226,6 +228,7 @@ ++ jobject holder; ++ initInetAddrs(env); ++ holder = (*env)->GetObjectField(env, iaObj, ia_holderID); +++ CHECK_NULL_THROW_NPE(env, holder, "InetAddress holder is null"); ++ (*env)->SetObjectField(env, holder, iac_hostNameID, host); ++ (*env)->SetObjectField(env, holder, iac_origHostNameID, host); ++ } ++@@ -233,6 +236,7 @@ ++ jobject holder; ++ initInetAddrs(env); ++ holder = (*env)->GetObjectField(env, iaObj, ia_holderID); +++ CHECK_NULL_THROW_NPE_RETURN(env, holder, "InetAddress holder is null", -1); ++ return (*env)->GetIntField(env, holder, iac_addressID); ++ } ++ ++@@ -241,6 +245,7 @@ ++ ++ initInetAddrs(env); ++ holder = (*env)->GetObjectField(env, iaObj, ia_holderID); +++ CHECK_NULL_THROW_NPE_RETURN(env, holder, "InetAddress holder is null", -1); ++ return (*env)->GetIntField(env, holder, iac_familyID); ++ } ++ ++@@ -248,6 +253,7 @@ ++ jobject holder; ++ initInetAddrs(env); ++ holder = (*env)->GetObjectField(env, iaObj, ia_holderID); +++ CHECK_NULL_THROW_NPE_RETURN(env, holder, "InetAddress holder is null", NULL); ++ return (*env)->GetObjectField(env, holder, iac_hostNameID); ++ } ++ ++@@ -278,7 +284,9 @@ ++ CHECK_NULL_RETURN(iaObj, NULL); ++ address = NET_IPv4MappedToIPv4(caddr); ++ setInetAddress_addr(env, iaObj, address); +++ JNU_CHECK_EXCEPTION_RETURN(env, NULL); ++ setInetAddress_family(env, iaObj, IPv4); +++ JNU_CHECK_EXCEPTION_RETURN(env, NULL); ++ } else { ++ static jclass inet6Cls = 0; ++ jint scope; ++@@ -295,6 +303,7 @@ ++ ret = setInet6Address_ipaddress(env, iaObj, (char *)&(him6->sin6_addr)); ++ CHECK_NULL_RETURN(ret, NULL); ++ setInetAddress_family(env, iaObj, IPv6); +++ JNU_CHECK_EXCEPTION_RETURN(env, NULL); ++ scope = getScopeID(him); ++ setInet6Address_scopeid(env, iaObj, scope); ++ } ++@@ -315,7 +324,9 @@ ++ iaObj = (*env)->NewObject(env, inet4Cls, ia4_ctrID); ++ CHECK_NULL_RETURN(iaObj, NULL); ++ setInetAddress_family(env, iaObj, IPv4); +++ JNU_CHECK_EXCEPTION_RETURN(env, NULL); ++ setInetAddress_addr(env, iaObj, ntohl(him4->sin_addr.s_addr)); +++ JNU_CHECK_EXCEPTION_RETURN(env, NULL); ++ *port = ntohs(him4->sin_port); ++ } ++ return iaObj; ++@@ -328,6 +339,7 @@ ++ ++ #ifdef AF_INET6 ++ family = getInetAddress_family(env, iaObj) == IPv4? AF_INET : AF_INET6; +++ JNU_CHECK_EXCEPTION_RETURN(env, JNI_FALSE); ++ if (him->sa_family == AF_INET6) { ++ #ifdef WIN32 ++ struct SOCKADDR_IN6 *him6 = (struct SOCKADDR_IN6 *)him; ++@@ -343,6 +355,7 @@ ++ } ++ addrNew = NET_IPv4MappedToIPv4(caddrNew); ++ addrCur = getInetAddress_addr(env, iaObj); +++ JNU_CHECK_EXCEPTION_RETURN(env, JNI_FALSE); ++ if (addrNew == addrCur) { ++ return JNI_TRUE; ++ } else { ++@@ -374,6 +387,7 @@ ++ } ++ addrNew = ntohl(him4->sin_addr.s_addr); ++ addrCur = getInetAddress_addr(env, iaObj); +++ JNU_CHECK_EXCEPTION_RETURN(env, JNI_FALSE); ++ if (addrNew == addrCur) { ++ return JNI_TRUE; ++ } else { ++diff --git openjdk/jdk/src/solaris/native/java/net/Inet4AddressImpl.c openjdk/jdk/src/solaris/native/java/net/Inet4AddressImpl.c ++--- openjdk/jdk/src/solaris/native/java/net/Inet4AddressImpl.c +++++ openjdk/jdk/src/solaris/native/java/net/Inet4AddressImpl.c ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -258,7 +258,11 @@ ++ goto cleanupAndReturn; ++ } ++ setInetAddress_addr(env, iaObj, ntohl(((struct sockaddr_in*)(iterator->ai_addr))->sin_addr.s_addr)); +++ if ((*env)->ExceptionCheck(env)) +++ goto cleanupAndReturn; ++ setInetAddress_hostName(env, iaObj, name); +++ if ((*env)->ExceptionCheck(env)) +++ goto cleanupAndReturn; ++ (*env)->SetObjectArrayElement(env, ret, retLen - i -1, iaObj); ++ i++; ++ iterator = iterator->ai_next; ++@@ -535,7 +539,11 @@ ++ goto cleanupAndReturn; ++ } ++ setInetAddress_addr(env, iaObj, ntohl((*addrp)->s_addr)); +++ if ((*env)->ExceptionCheck(env)) +++ goto cleanupAndReturn; ++ setInetAddress_hostName(env, iaObj, host); +++ if ((*env)->ExceptionCheck(env)) +++ goto cleanupAndReturn; ++ (*env)->SetObjectArrayElement(env, ret, i, iaObj); ++ addrp++; ++ i++; ++diff --git openjdk/jdk/src/solaris/native/java/net/Inet6AddressImpl.c openjdk/jdk/src/solaris/native/java/net/Inet6AddressImpl.c ++--- openjdk/jdk/src/solaris/native/java/net/Inet6AddressImpl.c +++++ openjdk/jdk/src/solaris/native/java/net/Inet6AddressImpl.c ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -262,6 +262,8 @@ ++ return NULL; ++ } ++ setInetAddress_hostName(env, o, name); +++ if ((*env)->ExceptionCheck(env)) +++ goto done; ++ (*env)->SetObjectArrayElement(env, result, index, o); ++ (*env)->DeleteLocalRef(env, o); ++ } ++@@ -449,7 +451,11 @@ ++ goto cleanupAndReturn; ++ } ++ setInetAddress_addr(env, iaObj, ntohl(((struct sockaddr_in*)iterator->ai_addr)->sin_addr.s_addr)); +++ if ((*env)->ExceptionCheck(env)) +++ goto cleanupAndReturn; ++ setInetAddress_hostName(env, iaObj, host); +++ if ((*env)->ExceptionCheck(env)) +++ goto cleanupAndReturn; ++ (*env)->SetObjectArrayElement(env, ret, inetIndex, iaObj); ++ inetIndex++; ++ } else if (iterator->ai_family == AF_INET6) { ++@@ -476,6 +482,8 @@ ++ setInet6Address_scopeid(env, iaObj, scope); ++ } ++ setInetAddress_hostName(env, iaObj, host); +++ if ((*env)->ExceptionCheck(env)) +++ goto cleanupAndReturn; ++ (*env)->SetObjectArrayElement(env, ret, inet6Index, iaObj); ++ inet6Index++; ++ } ++diff --git openjdk/jdk/src/solaris/native/java/net/NetworkInterface.c openjdk/jdk/src/solaris/native/java/net/NetworkInterface.c ++--- openjdk/jdk/src/solaris/native/java/net/NetworkInterface.c +++++ openjdk/jdk/src/solaris/native/java/net/NetworkInterface.c ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -301,16 +301,16 @@ ++ (JNIEnv *env, jclass cls, jobject iaObj) { ++ ++ netif *ifs, *curr; +++ jobject obj = NULL; +++ jboolean match = JNI_FALSE; ++ ++ #ifdef AF_INET6 ++ int family = (getInetAddress_family(env, iaObj) == IPv4) ? AF_INET : AF_INET6; +++ JNU_CHECK_EXCEPTION_RETURN(env, NULL); ++ #else ++ int family = AF_INET; ++ #endif ++ ++- jobject obj = NULL; ++- jboolean match = JNI_FALSE; ++- ++ ifs = enumInterfaces(env); ++ if (ifs == NULL) { ++ return NULL; ++@@ -329,7 +329,7 @@ ++ if (family == AF_INET) { ++ int address1 = htonl(((struct sockaddr_in*)addrP->addr)->sin_addr.s_addr); ++ int address2 = getInetAddress_addr(env, iaObj); ++- +++ JNU_CHECK_EXCEPTION_RETURN(env, NULL); ++ if (address1 == address2) { ++ match = JNI_TRUE; ++ break; ++@@ -661,6 +661,7 @@ ++ iaObj = (*env)->NewObject(env, ni_ia4cls, ni_ia4ctrID); ++ if (iaObj) { ++ setInetAddress_addr(env, iaObj, htonl(((struct sockaddr_in*)addrP->addr)->sin_addr.s_addr)); +++ JNU_CHECK_EXCEPTION_RETURN(env, NULL); ++ } ++ ibObj = (*env)->NewObject(env, ni_ibcls, ni_ibctrID); ++ if (ibObj) { ++@@ -670,6 +671,7 @@ ++ ia2Obj = (*env)->NewObject(env, ni_ia4cls, ni_ia4ctrID); ++ if (ia2Obj) { ++ setInetAddress_addr(env, ia2Obj, htonl(((struct sockaddr_in*)addrP->brdcast)->sin_addr.s_addr)); +++ JNU_CHECK_EXCEPTION_RETURN(env, NULL); ++ (*env)->SetObjectField(env, ibObj, ni_ib4broadcastID, ia2Obj); ++ (*env)->SetShortField(env, ibObj, ni_ib4maskID, addrP->mask); ++ } ++diff --git openjdk/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c openjdk/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c ++--- openjdk/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c +++++ openjdk/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -619,12 +619,15 @@ ++ iaObj = NET_SockaddrToInetAddress(env, (struct sockaddr *)&remote_addr, &port); ++ #ifdef AF_INET6 ++ family = getInetAddress_family(env, iaObj) == IPv4? AF_INET : AF_INET6; +++ JNU_CHECK_EXCEPTION_RETURN(env, -1); ++ #else ++ family = AF_INET; ++ #endif ++ if (family == AF_INET) { /* this api can't handle IPV6 addresses */ ++ int address = getInetAddress_addr(env, iaObj); +++ JNU_CHECK_EXCEPTION_RETURN(env, -1); ++ setInetAddress_addr(env, addressObj, address); +++ JNU_CHECK_EXCEPTION_RETURN(env, -1); ++ } ++ return port; ++ } ++@@ -1210,7 +1213,9 @@ ++ for (i = 0; i < len; i++) { ++ addr = (*env)->GetObjectArrayElement(env, addrArray, i); ++ if (getInetAddress_family(env, addr) == IPv4) { +++ JNU_CHECK_EXCEPTION(env); ++ in.s_addr = htonl(getInetAddress_addr(env, addr)); +++ JNU_CHECK_EXCEPTION(env); ++ break; ++ } ++ } ++@@ -1274,6 +1279,7 @@ ++ ++ in.s_addr = htonl( getInetAddress_addr(env, value) ); ++ +++ JNU_CHECK_EXCEPTION(env); ++ if (JVM_SetSockOpt(fd, IPPROTO_IP, IP_MULTICAST_IF, ++ (const char*)&in, sizeof(in)) < 0) { ++ NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", ++@@ -1668,8 +1674,10 @@ ++ #ifdef __linux__ ++ setInetAddress_addr(env, addr, (isOldKernel ? ++ ntohl(mreqn.imr_address.s_addr) : ntohl(in.s_addr))); +++ JNU_CHECK_EXCEPTION_RETURN(env, NULL); ++ #else ++ setInetAddress_addr(env, addr, ntohl(in.s_addr)); +++ JNU_CHECK_EXCEPTION_RETURN(env, NULL); ++ #endif ++ ++ /* ++@@ -2167,6 +2175,7 @@ ++ ++ #ifdef __linux__ ++ if (getInetAddress_family(env, iaObj) == IPv4) { +++ JNU_CHECK_EXCEPTION(env); ++ ipv6_join_leave = JNI_FALSE; ++ } ++ #endif ++@@ -2214,6 +2223,7 @@ ++ } ++ ++ mname.imr_multiaddr.s_addr = htonl(getInetAddress_addr(env, iaObj)); +++ JNU_CHECK_EXCEPTION(env); ++ mname.imr_address.s_addr = 0; ++ mname.imr_ifindex = (*env)->GetIntField(env, niObj, ni_indexID); ++ mname_len = sizeof(struct ip_mreqn); ++@@ -2232,10 +2242,13 @@ ++ addr = (*env)->GetObjectArrayElement(env, addrArray, 0); ++ ++ mname.imr_multiaddr.s_addr = htonl(getInetAddress_addr(env, iaObj)); +++ JNU_CHECK_EXCEPTION(env); ++ #ifdef __linux__ ++ mname.imr_address.s_addr = htonl(getInetAddress_addr(env, addr)); +++ JNU_CHECK_EXCEPTION(env); ++ #else ++ mname.imr_interface.s_addr = htonl(getInetAddress_addr(env, addr)); +++ JNU_CHECK_EXCEPTION(env); ++ #endif ++ mname_len = sizeof(struct ip_mreq); ++ } ++@@ -2275,6 +2288,7 @@ ++ } ++ ++ mname.imr_multiaddr.s_addr = htonl(getInetAddress_addr(env, iaObj)); +++ JNU_CHECK_EXCEPTION(env); ++ mname.imr_address.s_addr = 0 ; ++ mname.imr_ifindex = index; ++ mname_len = sizeof(struct ip_mreqn); ++@@ -2305,6 +2319,7 @@ ++ mname.imr_interface.s_addr = in.s_addr; ++ #endif ++ mname.imr_multiaddr.s_addr = htonl(getInetAddress_addr(env, iaObj)); +++ JNU_CHECK_EXCEPTION(env); ++ mname_len = sizeof(struct ip_mreq); ++ } ++ } ++@@ -2370,10 +2385,12 @@ ++ jint family; ++ jint address; ++ family = getInetAddress_family(env, iaObj) == IPv4? AF_INET : AF_INET6; +++ JNU_CHECK_EXCEPTION(env); ++ if (family == AF_INET) { /* will convert to IPv4-mapped address */ ++ memset((char *) caddr, 0, 16); ++ address = getInetAddress_addr(env, iaObj); ++ +++ JNU_CHECK_EXCEPTION(env); ++ caddr[10] = 0xff; ++ caddr[11] = 0xff; ++ ++diff --git openjdk/jdk/src/solaris/native/java/net/net_util_md.c openjdk/jdk/src/solaris/native/java/net/net_util_md.c ++--- openjdk/jdk/src/solaris/native/java/net/net_util_md.c +++++ openjdk/jdk/src/solaris/native/java/net/net_util_md.c ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -824,6 +824,7 @@ ++ int *len, jboolean v4MappedAddress) { ++ jint family; ++ family = getInetAddress_family(env, iaObj); +++ JNU_CHECK_EXCEPTION_RETURN(env, -1); ++ #ifdef AF_INET6 ++ /* needs work. 1. family 2. clean up him6 etc deallocate memory */ ++ if (ipv6_available() && !(family == IPv4 && v4MappedAddress == JNI_FALSE)) { ++@@ -835,6 +836,7 @@ ++ if (family == IPv4) { /* will convert to IPv4-mapped address */ ++ memset((char *) caddr, 0, 16); ++ address = getInetAddress_addr(env, iaObj); +++ JNU_CHECK_EXCEPTION_RETURN(env, -1); ++ if (address == INADDR_ANY) { ++ /* we would always prefer IPv6 wildcard address ++ caddr[10] = 0xff; ++@@ -946,6 +948,7 @@ ++ } ++ memset((char *) him4, 0, sizeof(struct sockaddr_in)); ++ address = getInetAddress_addr(env, iaObj); +++ JNU_CHECK_EXCEPTION_RETURN(env, -1); ++ him4->sin_port = htons((short) port); ++ him4->sin_addr.s_addr = (uint32_t) htonl(address); ++ him4->sin_family = AF_INET; ++diff --git openjdk/jdk/src/windows/native/java/net/Inet4AddressImpl.c openjdk/jdk/src/windows/native/java/net/Inet4AddressImpl.c ++--- openjdk/jdk/src/windows/native/java/net/Inet4AddressImpl.c +++++ openjdk/jdk/src/windows/native/java/net/Inet4AddressImpl.c ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -208,6 +208,8 @@ ++ goto cleanupAndReturn; ++ } ++ setInetAddress_addr(env, iaObj, ntohl(address)); +++ if ((*env)->ExceptionCheck(env)) +++ goto cleanupAndReturn; ++ (*env)->SetObjectArrayElement(env, ret, 0, iaObj); ++ JNU_ReleaseStringPlatformChars(env, host, hostname); ++ return ret; ++@@ -241,7 +243,11 @@ ++ goto cleanupAndReturn; ++ } ++ setInetAddress_addr(env, iaObj, ntohl((*addrp)->s_addr)); +++ if ((*env)->ExceptionCheck(env)) +++ goto cleanupAndReturn; ++ setInetAddress_hostName(env, iaObj, host); +++ if ((*env)->ExceptionCheck(env)) +++ goto cleanupAndReturn; ++ (*env)->SetObjectArrayElement(env, ret, i, iaObj); ++ addrp++; ++ i++; ++diff --git openjdk/jdk/src/windows/native/java/net/Inet6AddressImpl.c openjdk/jdk/src/windows/native/java/net/Inet6AddressImpl.c ++--- openjdk/jdk/src/windows/native/java/net/Inet6AddressImpl.c +++++ openjdk/jdk/src/windows/native/java/net/Inet6AddressImpl.c ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -250,7 +250,11 @@ ++ goto cleanupAndReturn; ++ } ++ setInetAddress_addr(env, iaObj, ntohl(((struct sockaddr_in*)iterator->ai_addr)->sin_addr.s_addr)); +++ if ((*env)->ExceptionCheck(env)) +++ goto cleanupAndReturn; ++ setInetAddress_hostName(env, iaObj, host); +++ if ((*env)->ExceptionCheck(env)) +++ goto cleanupAndReturn; ++ (*env)->SetObjectArrayElement(env, ret, inetIndex, iaObj); ++ inetIndex ++; ++ } else if (iterator->ai_family == AF_INET6) { ++@@ -271,6 +275,8 @@ ++ setInet6Address_scopeid(env, iaObj, scope); ++ } ++ setInetAddress_hostName(env, iaObj, host); +++ if ((*env)->ExceptionCheck(env)) +++ goto cleanupAndReturn; ++ (*env)->SetObjectArrayElement(env, ret, inet6Index, iaObj); ++ inet6Index ++; ++ } ++diff --git openjdk/jdk/src/windows/native/java/net/NetworkInterface.c openjdk/jdk/src/windows/native/java/net/NetworkInterface.c ++--- openjdk/jdk/src/windows/native/java/net/NetworkInterface.c +++++ openjdk/jdk/src/windows/native/java/net/NetworkInterface.c ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -564,6 +564,7 @@ ++ /* default ctor will set family to AF_INET */ ++ ++ setInetAddress_addr(env, iaObj, ntohl(addrs->addr.him4.sin_addr.s_addr)); +++ JNU_CHECK_EXCEPTION_RETURN(env, NULL); ++ if (addrs->mask != -1) { ++ ibObj = (*env)->NewObject(env, ni_ibcls, ni_ibctrID); ++ if (ibObj == NULL) { ++@@ -577,6 +578,7 @@ ++ return NULL; ++ } ++ setInetAddress_addr(env, ia2Obj, ntohl(addrs->brdcast.him4.sin_addr.s_addr)); +++ JNU_CHECK_EXCEPTION_RETURN(env, NULL); ++ (*env)->SetObjectField(env, ibObj, ni_ibbroadcastID, ia2Obj); ++ (*env)->SetShortField(env, ibObj, ni_ibmaskID, addrs->mask); ++ (*env)->SetObjectArrayElement(env, bindsArr, bind_index++, ibObj); ++@@ -727,8 +729,9 @@ ++ (JNIEnv *env, jclass cls, jobject iaObj) ++ { ++ netif *ifList, *curr; +++ jobject netifObj = NULL; ++ jint addr = getInetAddress_addr(env, iaObj); ++- jobject netifObj = NULL; +++ JNU_CHECK_EXCEPTION_RETURN(env, NULL); ++ ++ // Retained for now to support IPv4 only stack, java.net.preferIPv4Stack ++ if (ipv6_available()) { ++diff --git openjdk/jdk/src/windows/native/java/net/NetworkInterface_winXP.c openjdk/jdk/src/windows/native/java/net/NetworkInterface_winXP.c ++--- openjdk/jdk/src/windows/native/java/net/NetworkInterface_winXP.c +++++ openjdk/jdk/src/windows/native/java/net/NetworkInterface_winXP.c ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -486,6 +486,7 @@ ++ ++ setInetAddress_addr(env, iaObj, ntohl(addrs->addr.him4.sin_addr.s_addr)); ++ +++ JNU_CHECK_EXCEPTION_RETURN(env, NULL); ++ ibObj = (*env)->NewObject(env, ni_ibcls, ni_ibctrID); ++ if (ibObj == NULL) { ++ free_netaddr(netaddrP); ++@@ -498,6 +499,7 @@ ++ return NULL; ++ } ++ setInetAddress_addr(env, ia2Obj, ntohl(addrs->brdcast.him4.sin_addr.s_addr)); +++ JNU_CHECK_EXCEPTION_RETURN(env, NULL); ++ (*env)->SetObjectField(env, ibObj, ni_ibbroadcastID, ia2Obj); ++ (*env)->SetShortField(env, ibObj, ni_ibmaskID, addrs->mask); ++ (*env)->SetObjectArrayElement(env, bindsArr, bind_index++, ibObj); ++diff --git openjdk/jdk/src/windows/native/java/net/TwoStacksPlainDatagramSocketImpl.c openjdk/jdk/src/windows/native/java/net/TwoStacksPlainDatagramSocketImpl.c ++--- openjdk/jdk/src/windows/native/java/net/TwoStacksPlainDatagramSocketImpl.c +++++ openjdk/jdk/src/windows/native/java/net/TwoStacksPlainDatagramSocketImpl.c ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -435,12 +435,13 @@ ++ int address; ++ ++ family = getInetAddress_family(env, addressObj); +++ JNU_CHECK_EXCEPTION(env); ++ if (family == IPv6 && !ipv6_supported) { ++ JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", ++ "Protocol family not supported"); ++ return; ++ } ++- +++ JNU_CHECK_EXCEPTION(env); ++ if (IS_NULL(fdObj) || (ipv6_supported && IS_NULL(fd1Obj))) { ++ JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", "socket closed"); ++ return; ++@@ -455,6 +456,7 @@ ++ return; ++ } else { ++ address = getInetAddress_addr(env, addressObj); +++ JNU_CHECK_EXCEPTION(env); ++ } ++ ++ if (NET_InetAddressToSockaddr(env, addressObj, port, (struct sockaddr *)&lcladdr, &lcladdrlen, JNI_FALSE) != 0) { ++@@ -558,8 +560,9 @@ ++ } ++ ++ addr = getInetAddress_addr(env, address); ++- +++ JNU_CHECK_EXCEPTION(env); ++ family = getInetAddress_family(env, address); +++ JNU_CHECK_EXCEPTION(env); ++ if (family == IPv6 && !ipv6_supported) { ++ JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", ++ "Protocol family not supported"); ++@@ -676,6 +679,7 @@ ++ } ++ ++ family = getInetAddress_family(env, iaObj); +++ JNU_CHECK_EXCEPTION(env); ++ if (family == IPv4) { ++ fdObj = (*env)->GetObjectField(env, this, pdsi_fdID); ++ } else { ++@@ -720,6 +724,7 @@ ++ * Check is not necessary on these OSes */ ++ if (connected) { ++ address = getInetAddress_addr(env, iaObj); +++ JNU_CHECK_EXCEPTION(env); ++ } else { ++ address = ntohl(rmtaddr.him4.sin_addr.s_addr); ++ } ++@@ -829,6 +834,7 @@ ++ JNU_ThrowNullPointerException(env, "Null address in peek()"); ++ } else { ++ address = getInetAddress_addr(env, addressObj); +++ JNU_CHECK_EXCEPTION_RETURN(env, -1); ++ /* We only handle IPv4 for now. Will support IPv6 once its in the os */ ++ family = AF_INET; ++ } ++@@ -911,7 +917,9 @@ ++ return 0; ++ } ++ setInetAddress_addr(env, addressObj, ntohl(remote_addr.sin_addr.s_addr)); +++ JNU_CHECK_EXCEPTION_RETURN(env, -1); ++ setInetAddress_family(env, addressObj, IPv4); +++ JNU_CHECK_EXCEPTION_RETURN(env, -1); ++ ++ /* return port */ ++ return ntohs(remote_addr.sin_port); ++@@ -1606,6 +1614,7 @@ ++ int fam; ++ addr = (*env)->GetObjectArrayElement(env, addrArray, i); ++ fam = getInetAddress_family(env, addr); +++ JNU_CHECK_EXCEPTION_RETURN(env, -1); ++ if (fam == family) { ++ *iaddr = addr; ++ return 0; ++@@ -1624,6 +1633,7 @@ ++ } ++ ++ iaddr->s_addr = htonl(getInetAddress_addr(env, addr)); +++ JNU_CHECK_EXCEPTION_RETURN(env, -1); ++ return 0; ++ } ++ ++@@ -1728,6 +1738,7 @@ ++ struct in_addr in; ++ ++ in.s_addr = htonl(getInetAddress_addr(env, value)); +++ JNU_CHECK_EXCEPTION(env); ++ if (setsockopt(fd, IPPROTO_IP, IP_MULTICAST_IF, ++ (const char*)&in, sizeof(in)) < 0) { ++ NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", ++@@ -1969,7 +1980,7 @@ ++ CHECK_NULL_RETURN(addr, NULL); ++ ++ setInetAddress_addr(env, addr, ntohl(in.s_addr)); ++- +++ JNU_CHECK_EXCEPTION_RETURN(env, NULL); ++ /* ++ * For IP_MULTICAST_IF return InetAddress ++ */ ++diff --git openjdk/jdk/src/windows/native/java/net/TwoStacksPlainSocketImpl.c openjdk/jdk/src/windows/native/java/net/TwoStacksPlainSocketImpl.c ++--- openjdk/jdk/src/windows/native/java/net/TwoStacksPlainSocketImpl.c +++++ openjdk/jdk/src/windows/native/java/net/TwoStacksPlainSocketImpl.c ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -414,6 +414,7 @@ ++ fd1Obj = (*env)->GetObjectField(env, this, psi_fd1ID); ++ ++ family = getInetAddress_family(env, iaObj); +++ JNU_CHECK_EXCEPTION(env); ++ ++ if (family == IPv6 && !ipv6_supported) { ++ JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", ++@@ -730,7 +731,9 @@ ++ } ++ ++ setInetAddress_addr(env, socketAddressObj, ntohl(him.him4.sin_addr.s_addr)); +++ JNU_CHECK_EXCEPTION(env); ++ setInetAddress_family(env, socketAddressObj, IPv4); +++ JNU_CHECK_EXCEPTION(env); ++ (*env)->SetObjectField(env, socket, psi_addressID, socketAddressObj); ++ } else { ++ /* AF_INET6 -> Inet6Address */ ++@@ -757,6 +760,7 @@ ++ } ++ setInet6Address_ipaddress(env, socketAddressObj, (const char *)&him.him6.sin6_addr); ++ setInetAddress_family(env, socketAddressObj, IPv6); +++ JNU_CHECK_EXCEPTION(env); ++ scope = him.him6.sin6_scope_id; ++ (*env)->SetIntField(env, socketAddressObj, ia6_scopeidID, scope); ++ if(scope>0) { ++diff --git openjdk/jdk/src/windows/native/java/net/net_util_md.c openjdk/jdk/src/windows/native/java/net/net_util_md.c ++--- openjdk/jdk/src/windows/native/java/net/net_util_md.c +++++ openjdk/jdk/src/windows/native/java/net/net_util_md.c ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -875,6 +875,7 @@ ++ int *len, jboolean v4MappedAddress) { ++ jint family, iafam; ++ iafam = getInetAddress_family(env, iaObj); +++ JNU_CHECK_EXCEPTION_RETURN(env, -1); ++ family = (iafam == IPv4)? AF_INET : AF_INET6; ++ if (ipv6_available() && !(family == AF_INET && v4MappedAddress == JNI_FALSE)) { ++ struct SOCKADDR_IN6 *him6 = (struct SOCKADDR_IN6 *)him; ++@@ -885,6 +886,7 @@ ++ if (family == AF_INET) { /* will convert to IPv4-mapped address */ ++ memset((char *) caddr, 0, 16); ++ address = getInetAddress_addr(env, iaObj); +++ JNU_CHECK_EXCEPTION_RETURN(env, -1); ++ if (address == INADDR_ANY) { ++ /* we would always prefer IPv6 wildcard address ++ caddr[10] = 0xff; ++@@ -923,6 +925,7 @@ ++ } ++ memset((char *) him4, 0, sizeof(struct sockaddr_in)); ++ address = getInetAddress_addr(env, iaObj); +++ JNU_CHECK_EXCEPTION_RETURN(env, -1); ++ him4->sin_port = htons((short) port); ++ him4->sin_addr.s_addr = (u_long) htonl(address); ++ him4->sin_family = AF_INET; ++# HG changeset patch ++# User asemenyuk ++# Date 1530064137 -3600 ++# Wed Jun 27 02:48:57 2018 +0100 ++# Node ID f6a4597a378a2ab6842b77df24024922c4ce5ea5 ++# Parent fde0a554135afd60f721ee05ad1a682797c68116 ++8197871: Support Derby connections ++Reviewed-by: duke ++ ++diff --git openjdk/jdk/make/common/Release.gmk openjdk/jdk/make/common/Release.gmk ++--- openjdk/jdk/make/common/Release.gmk +++++ openjdk/jdk/make/common/Release.gmk ++@@ -985,40 +985,12 @@ ++ initial-image-jdk-sol64:: initial-image-jdk-setup \ ++ initial-image-jdk64-bindemos ++ ++-# DB files to add ++-ifdef OPENJDK ++- ++-initial-image-jdk-db: ++- ++-else ++- ++-# Create the list of db *.zip files to bundle with jdk ++-ABS_DB_PATH :=$(call FullPath,$(CLOSED_SHARE_SRC)/db) ++-DB_ZIP_LIST = $(shell $(LS) $(ABS_DB_PATH)/*.zip 2>/dev/null) ++- ++-# Java DB image. Move the Java DB demo directory into the JDK's demo ++-# dir and in the process, rename it to db. Also remove index.html, ++-# since it presumes docs are co-located. Also remove register.html (no ++-# longer relevant). ++-initial-image-jdk-db: $(DB_ZIP_LIST) ++- $(MKDIR) -p $(JDK_IMAGE_DIR)/db ++- for d in $(DB_ZIP_LIST); do \ ++- ($(CD) $(JDK_IMAGE_DIR)/db && $(UNZIP) -o $$d); \ ++- done ++- $(CP) $(ABS_DB_PATH)/README-JDK.html $(JDK_IMAGE_DIR)/db ++- $(RM) -rf $(DEMODIR)/db ++- $(MV) $(JDK_IMAGE_DIR)/db/demo $(DEMODIR)/db ++- $(CP) $(ABS_DB_PATH)/README-JDK-DEMOS.html $(DEMODIR)/db/ ++- $(RM) $(JDK_IMAGE_DIR)/db/index.html $(JDK_IMAGE_DIR)/db/register.html ++-endif ++- ++ # The launcher source files we need for src.zip ++ FILES_launcher = $(wildcard $(SHARE_SRC)/bin/*) \ ++ $(wildcard $(PLATFORM_SRC)/bin/java_md*) ++ ++ # Standard jdk image ++ initial-image-jdk:: initial-image-jdk-setup \ ++- initial-image-jdk-db \ ++ $(JDK_DOCFILES) \ ++ $(JDK_DEMOS_AND_SAMPLES_DOCFILES) ++ $(MKDIR) -p $(JDK_IMAGE_DIR)/lib ++# HG changeset patch ++# User igerasim ++# Date 1530119229 -3600 ++# Wed Jun 27 18:07:09 2018 +0100 ++# Node ID 7a50de316fecbd586cf1481d8c3302f967aa1c17 ++# Parent f6a4597a378a2ab6842b77df24024922c4ce5ea5 ++8197925: Better stack walking ++Reviewed-by: duke ++ ++diff --git openjdk/jdk/src/share/classes/java/io/ObjectStreamClass.java openjdk/jdk/src/share/classes/java/io/ObjectStreamClass.java ++--- openjdk/jdk/src/share/classes/java/io/ObjectStreamClass.java +++++ openjdk/jdk/src/share/classes/java/io/ObjectStreamClass.java ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 1996, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -86,6 +86,18 @@ ++ private static final ObjectStreamField[] serialPersistentFields = ++ NO_FIELDS; ++ +++ /** true if deserialization constructor checking is disabled */ +++ private static boolean disableSerialConstructorChecks = +++ AccessController.doPrivileged( +++ new PrivilegedAction() { +++ public Boolean run() { +++ String prop = "jdk.disableSerialConstructorChecks"; +++ return "true".equals(System.getProperty(prop)) +++ ? Boolean.TRUE : Boolean.FALSE; +++ } +++ } +++ ).booleanValue(); +++ ++ /** reflection factory for obtaining serialization constructors */ ++ private static final ReflectionFactory reflFactory = ++ AccessController.doPrivileged( ++@@ -1500,6 +1512,46 @@ ++ } ++ ++ /** +++ * Given a class, determines whether its superclass has +++ * any constructors that are accessible from the class. +++ * This is a special purpose method intended to do access +++ * checking for a serializable class and its superclasses +++ * up to, but not including, the first non-serializable +++ * superclass. This also implies that the superclass is +++ * always non-null, because a serializable class must be a +++ * class (not an interface) and Object is not serializable. +++ * +++ * @param cl the class from which access is checked +++ * @return whether the superclass has a constructor accessible from cl +++ */ +++ private static boolean superHasAccessibleConstructor(Class cl) { +++ Class superCl = cl.getSuperclass(); +++ assert Serializable.class.isAssignableFrom(cl); +++ assert superCl != null; +++ if (packageEquals(cl, superCl)) { +++ // accessible if any non-private constructor is found +++ for (Constructor ctor : superCl.getDeclaredConstructors()) { +++ if ((ctor.getModifiers() & Modifier.PRIVATE) == 0) { +++ return true; +++ } +++ } +++ return false; +++ } else { +++ // accessible if the parent is public and any constructor +++ // is protected or public +++ if ((superCl.getModifiers() & Modifier.PUBLIC) == 0) { +++ return false; +++ } +++ for (Constructor ctor : superCl.getDeclaredConstructors()) { +++ if ((ctor.getModifiers() & (Modifier.PROTECTED | Modifier.PUBLIC)) != 0) { +++ return true; +++ } +++ } +++ return false; +++ } +++ } +++ +++ /** ++ * Returns subclass-accessible no-arg constructor of first non-serializable ++ * superclass, or null if none found. Access checks are disabled on the ++ * returned constructor (if any). ++@@ -1507,7 +1559,9 @@ ++ private static Constructor getSerializableConstructor(Class cl) { ++ Class initCl = cl; ++ while (Serializable.class.isAssignableFrom(initCl)) { ++- if ((initCl = initCl.getSuperclass()) == null) { +++ Class prev = initCl; +++ if ((initCl = initCl.getSuperclass()) == null || +++ (!disableSerialConstructorChecks && !superHasAccessibleConstructor(prev))) { ++ return null; ++ } ++ } ++# HG changeset patch ++# User igerasim ++# Date 1529716424 -3600 ++# Sat Jun 23 02:13:44 2018 +0100 ++# Node ID 81acbbcf9caf0193854ead5ef2d2b56b0e56f310 ++# Parent 7a50de316fecbd586cf1481d8c3302f967aa1c17 ++8199547: Exception to Pattern Syntax ++Reviewed-by: duke ++ ++diff --git openjdk/jdk/src/share/classes/java/util/regex/PatternSyntaxException.java openjdk/jdk/src/share/classes/java/util/regex/PatternSyntaxException.java ++--- openjdk/jdk/src/share/classes/java/util/regex/PatternSyntaxException.java +++++ openjdk/jdk/src/share/classes/java/util/regex/PatternSyntaxException.java ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -113,7 +113,7 @@ ++ } ++ sb.append(nl); ++ sb.append(pattern); ++- if (index >= 0) { +++ if (index >= 0 && pattern != null && index < pattern.length()) { ++ sb.append(nl); ++ for (int i = 0; i < index; i++) sb.append(' '); ++ sb.append('^'); ++# HG changeset patch ++# User rpatil ++# Date 1530150897 -3600 ++# Thu Jun 28 02:54:57 2018 +0100 ++# Node ID d0cdea623a1120ae95e6f518fe43f3a1f0ca4670 ++# Parent 81acbbcf9caf0193854ead5ef2d2b56b0e56f310 ++8200666: Improve LDAP support ++Reviewed-by: duke ++ ++diff --git openjdk/jdk/src/share/classes/com/sun/jndi/ldap/Connection.java openjdk/jdk/src/share/classes/com/sun/jndi/ldap/Connection.java ++--- openjdk/jdk/src/share/classes/com/sun/jndi/ldap/Connection.java +++++ openjdk/jdk/src/share/classes/com/sun/jndi/ldap/Connection.java ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -27,26 +27,27 @@ ++ ++ import java.io.BufferedInputStream; ++ import java.io.BufferedOutputStream; +++import java.io.IOException; +++import java.io.InputStream; ++ import java.io.InterruptedIOException; ++-import java.io.IOException; ++ import java.io.OutputStream; ++-import java.io.InputStream; +++import java.lang.reflect.Constructor; +++import java.lang.reflect.InvocationTargetException; +++import java.lang.reflect.Method; ++ import java.net.Socket; ++-import javax.net.ssl.SSLSocket; +++import java.security.AccessController; +++import java.security.PrivilegedAction; +++import java.util.Arrays; ++ ++ import javax.naming.CommunicationException; ++-import javax.naming.ServiceUnavailableException; +++import javax.naming.InterruptedNamingException; ++ import javax.naming.NamingException; ++-import javax.naming.InterruptedNamingException; ++- +++import javax.naming.ServiceUnavailableException; ++ import javax.naming.ldap.Control; +++import javax.net.ssl.SSLParameters; +++import javax.net.ssl.SSLSocket; ++ ++-import java.lang.reflect.Method; ++-import java.lang.reflect.Constructor; ++-import java.lang.reflect.InvocationTargetException; ++-import java.util.Arrays; ++ import sun.misc.IOUtils; ++-//import javax.net.SocketFactory; ++ ++ /** ++ * A thread that creates a connection to an LDAP server. ++@@ -159,7 +160,22 @@ ++ ++ int readTimeout; ++ int connectTimeout; +++ private static final boolean IS_HOSTNAME_VERIFICATION_DISABLED +++ = hostnameVerificationDisabledValue(); ++ +++ private static boolean hostnameVerificationDisabledValue() { +++ PrivilegedAction act = new PrivilegedAction() { +++ @Override +++ public String run() { +++ return System.getProperty("com.sun.jndi.ldap.object.disableEndpointIdentification"); +++ } +++ }; +++ String prop = AccessController.doPrivileged(act); +++ if (prop == null) { +++ return false; +++ } +++ return prop.isEmpty() ? true : Boolean.parseBoolean(prop); +++ } ++ // true means v3; false means v2 ++ // Called in LdapClient.authenticate() (which is synchronized) ++ // when connection is "quiet" and not shared; no need to synchronize ++@@ -368,15 +384,20 @@ ++ // the SSL handshake following socket connection as part of the timeout. ++ // So explicitly set a socket read timeout, trigger the SSL handshake, ++ // then reset the timeout. ++- if (connectTimeout > 0 && socket instanceof SSLSocket) { +++ if (socket instanceof SSLSocket) { ++ SSLSocket sslSocket = (SSLSocket) socket; ++ int socketTimeout = sslSocket.getSoTimeout(); ++- ++- sslSocket.setSoTimeout(connectTimeout); // reuse full timeout value +++ if (!IS_HOSTNAME_VERIFICATION_DISABLED) { +++ SSLParameters param = sslSocket.getSSLParameters(); +++ param.setEndpointIdentificationAlgorithm("LDAPS"); +++ sslSocket.setSSLParameters(param); +++ } +++ if (connectTimeout > 0) { +++ sslSocket.setSoTimeout(connectTimeout); // reuse full timeout value +++ } ++ sslSocket.startHandshake(); ++ sslSocket.setSoTimeout(socketTimeout); ++ } ++- ++ return socket; ++ } ++ ++# HG changeset patch ++# User igerasim ++# Date 1530053915 -3600 ++# Tue Jun 26 23:58:35 2018 +0100 ++# Node ID a79a4ba615278d99d93dbc1e1a892978050885b4 ++# Parent d0cdea623a1120ae95e6f518fe43f3a1f0ca4670 ++8205491: adjust reflective access checks ++Reviewed-by: duke ++ ++diff --git openjdk/jdk/src/share/classes/java/io/ObjectStreamClass.java openjdk/jdk/src/share/classes/java/io/ObjectStreamClass.java ++--- openjdk/jdk/src/share/classes/java/io/ObjectStreamClass.java +++++ openjdk/jdk/src/share/classes/java/io/ObjectStreamClass.java ++@@ -1537,11 +1537,11 @@ ++ } ++ return false; ++ } else { ++- // accessible if the parent is public and any constructor ++- // is protected or public ++- if ((superCl.getModifiers() & Modifier.PUBLIC) == 0) { +++ // sanity check to ensure the parent is protected or public +++ if ((superCl.getModifiers() & (Modifier.PROTECTED | Modifier.PUBLIC)) == 0) { ++ return false; ++ } +++ // accessible if any constructor is protected or public ++ for (Constructor ctor : superCl.getDeclaredConstructors()) { ++ if ((ctor.getModifiers() & (Modifier.PROTECTED | Modifier.PUBLIC)) != 0) { ++ return true; ++# HG changeset patch ++# User igerasim ++# Date 1531880177 -3600 ++# Wed Jul 18 03:16:17 2018 +0100 ++# Node ID feae126dd9fd4c16f4706d3ceff8fd48f52475b6 ++# Parent b2ab4a83ede0068af40db974c6b2ea2de598f8fe ++8051972: sun/security/pkcs11/ec/ReadCertificates.java fails intermittently ++Reviewed-by: mullan ++ ++diff --git openjdk/jdk/test/sun/security/pkcs11/ec/ReadCertificates.java openjdk/jdk/test/sun/security/pkcs11/ec/ReadCertificates.java ++--- openjdk/jdk/test/sun/security/pkcs11/ec/ReadCertificates.java +++++ openjdk/jdk/test/sun/security/pkcs11/ec/ReadCertificates.java ++@@ -23,7 +23,7 @@ ++ ++ /** ++ * @test ++- * @bug 6405536 6414980 +++ * @bug 6405536 6414980 8051972 ++ * @summary Make sure that we can parse certificates using various named curves ++ * and verify their signatures ++ * @author Andreas Sterbenz ++@@ -127,8 +127,14 @@ ++ signer = getRandomCert(certList); ++ } while (cert.getIssuerX500Principal().equals(signer.getSubjectX500Principal())); ++ try { ++- cert.verify(signer.getPublicKey()); ++- throw new Exception("Verified invalid signature"); +++ PublicKey signerPublicKey = signer.getPublicKey(); +++ cert.verify(signerPublicKey); +++ // Ignore false positives +++ if (cert.getPublicKey().equals(signerPublicKey)) { +++ System.out.println("OK: self-signed certificate detected"); +++ } else { +++ throw new Exception("Verified invalid signature"); +++ } ++ } catch (SignatureException | InvalidKeyException e) { ++ System.out.println("OK: " + e); ++ } ++# HG changeset patch ++# User igerasim ++# Date 1518802994 28800 ++# Fri Feb 16 09:43:14 2018 -0800 ++# Node ID 86c11017bc5cf0c60187a1d028f7f319de7ff626 ++# Parent feae126dd9fd4c16f4706d3ceff8fd48f52475b6 ++8076117: EndEntityChecker should not process custom extensions after PKIX validation ++Reviewed-by: xuelei, mullan ++ ++diff --git openjdk/jdk/src/share/classes/sun/security/validator/EndEntityChecker.java openjdk/jdk/src/share/classes/sun/security/validator/EndEntityChecker.java ++--- openjdk/jdk/src/share/classes/sun/security/validator/EndEntityChecker.java +++++ openjdk/jdk/src/share/classes/sun/security/validator/EndEntityChecker.java ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -132,26 +132,33 @@ ++ return new EndEntityChecker(type, variant); ++ } ++ ++- void check(X509Certificate cert, Object parameter) ++- throws CertificateException { +++ void check(X509Certificate cert, Object parameter, +++ boolean checkUnresolvedCritExts) throws CertificateException { ++ if (variant.equals(Validator.VAR_GENERIC)) { ++- // no checks ++- return; ++- } else if (variant.equals(Validator.VAR_TLS_SERVER)) { ++- checkTLSServer(cert, (String)parameter); +++ return; // no checks +++ } +++ +++ Set exts = getCriticalExtensions(cert); +++ if (variant.equals(Validator.VAR_TLS_SERVER)) { +++ checkTLSServer(cert, (String)parameter, exts); ++ } else if (variant.equals(Validator.VAR_TLS_CLIENT)) { ++- checkTLSClient(cert); +++ checkTLSClient(cert, exts); ++ } else if (variant.equals(Validator.VAR_CODE_SIGNING)) { ++- checkCodeSigning(cert); +++ checkCodeSigning(cert, exts); ++ } else if (variant.equals(Validator.VAR_JCE_SIGNING)) { ++- checkCodeSigning(cert); +++ checkCodeSigning(cert, exts); ++ } else if (variant.equals(Validator.VAR_PLUGIN_CODE_SIGNING)) { ++- checkCodeSigning(cert); +++ checkCodeSigning(cert, exts); ++ } else if (variant.equals(Validator.VAR_TSA_SERVER)) { ++- checkTSAServer(cert); +++ checkTSAServer(cert, exts); ++ } else { ++ throw new CertificateException("Unknown variant: " + variant); ++ } +++ +++ // if neither VAR_GENERIC variant nor unknown variant +++ if (checkUnresolvedCritExts) { +++ checkRemainingExtensions(exts); +++ } ++ } ++ ++ /** ++@@ -219,10 +226,8 @@ ++ * authentication. ++ * @throws CertificateException if not. ++ */ ++- private void checkTLSClient(X509Certificate cert) +++ private void checkTLSClient(X509Certificate cert, Set exts) ++ throws CertificateException { ++- Set exts = getCriticalExtensions(cert); ++- ++ if (checkKeyUsage(cert, KU_SIGNATURE) == false) { ++ throw new ValidatorException ++ ("KeyUsage does not allow digital signatures", ++@@ -245,8 +250,6 @@ ++ exts.remove(SimpleValidator.OID_KEY_USAGE); ++ exts.remove(SimpleValidator.OID_EXTENDED_KEY_USAGE); ++ exts.remove(SimpleValidator.OID_NETSCAPE_CERT_TYPE); ++- ++- checkRemainingExtensions(exts); ++ } ++ ++ /** ++@@ -255,10 +258,8 @@ ++ * specification for details. ++ * @throws CertificateException if not. ++ */ ++- private void checkTLSServer(X509Certificate cert, String parameter) ++- throws CertificateException { ++- Set exts = getCriticalExtensions(cert); ++- +++ private void checkTLSServer(X509Certificate cert, String parameter, +++ Set exts) throws CertificateException { ++ if (KU_SERVER_ENCRYPTION.contains(parameter)) { ++ if (checkKeyUsage(cert, KU_KEY_ENCIPHERMENT) == false) { ++ throw new ValidatorException ++@@ -303,18 +304,14 @@ ++ exts.remove(SimpleValidator.OID_KEY_USAGE); ++ exts.remove(SimpleValidator.OID_EXTENDED_KEY_USAGE); ++ exts.remove(SimpleValidator.OID_NETSCAPE_CERT_TYPE); ++- ++- checkRemainingExtensions(exts); ++ } ++ ++ /** ++ * Check whether this certificate can be used for code signing. ++ * @throws CertificateException if not. ++ */ ++- private void checkCodeSigning(X509Certificate cert) +++ private void checkCodeSigning(X509Certificate cert, Set exts) ++ throws CertificateException { ++- Set exts = getCriticalExtensions(cert); ++- ++ if (checkKeyUsage(cert, KU_SIGNATURE) == false) { ++ throw new ValidatorException ++ ("KeyUsage does not allow digital signatures", ++@@ -341,8 +338,6 @@ ++ // remove extensions we checked ++ exts.remove(SimpleValidator.OID_KEY_USAGE); ++ exts.remove(SimpleValidator.OID_EXTENDED_KEY_USAGE); ++- ++- checkRemainingExtensions(exts); ++ } ++ ++ /** ++@@ -350,10 +345,8 @@ ++ * server (see RFC 3161, section 2.3). ++ * @throws CertificateException if not. ++ */ ++- private void checkTSAServer(X509Certificate cert) +++ private void checkTSAServer(X509Certificate cert, Set exts) ++ throws CertificateException { ++- Set exts = getCriticalExtensions(cert); ++- ++ if (checkKeyUsage(cert, KU_SIGNATURE) == false) { ++ throw new ValidatorException ++ ("KeyUsage does not allow digital signatures", ++@@ -376,7 +369,5 @@ ++ // remove extensions we checked ++ exts.remove(SimpleValidator.OID_KEY_USAGE); ++ exts.remove(SimpleValidator.OID_EXTENDED_KEY_USAGE); ++- ++- checkRemainingExtensions(exts); ++ } ++ } ++diff --git openjdk/jdk/src/share/classes/sun/security/validator/Validator.java openjdk/jdk/src/share/classes/sun/security/validator/Validator.java ++--- openjdk/jdk/src/share/classes/sun/security/validator/Validator.java +++++ openjdk/jdk/src/share/classes/sun/security/validator/Validator.java ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -143,6 +143,7 @@ ++ */ ++ public final static String VAR_PLUGIN_CODE_SIGNING = "plugin code signing"; ++ +++ private final String type; ++ final EndEntityChecker endEntityChecker; ++ final String variant; ++ ++@@ -154,6 +155,7 @@ ++ volatile Date validationDate; ++ ++ Validator(String type, String variant) { +++ this.type = type; ++ this.variant = variant; ++ endEntityChecker = EndEntityChecker.getInstance(type, variant); ++ } ++@@ -261,7 +263,16 @@ ++ ++ // omit EE extension check if EE cert is also trust anchor ++ if (chain.length > 1) { ++- endEntityChecker.check(chain[0], parameter); +++ // EndEntityChecker does not need to check unresolved critical +++ // extensions when validating with a TYPE_PKIX Validator. +++ // A TYPE_PKIX Validator will already have run checks on all +++ // certs' extensions, including checks by any PKIXCertPathCheckers +++ // included in the PKIXParameters, so the extra checks would be +++ // redundant. +++ boolean checkUnresolvedCritExts = +++ (type == TYPE_PKIX) ? false : true; +++ endEntityChecker.check(chain[0], parameter, +++ checkUnresolvedCritExts); ++ } ++ ++ return chain; ++diff --git openjdk/jdk/test/sun/security/validator/EndEntityExtensionCheck.java openjdk/jdk/test/sun/security/validator/EndEntityExtensionCheck.java ++new file mode 100644 ++--- /dev/null +++++ openjdk/jdk/test/sun/security/validator/EndEntityExtensionCheck.java ++@@ -0,0 +1,221 @@ +++/* +++ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. +++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +++ * +++ * This code is free software; you can redistribute it and/or modify it +++ * under the terms of the GNU General Public License version 2 only, as +++ * published by the Free Software Foundation. +++ * +++ * This code is distributed in the hope that it will be useful, but WITHOUT +++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +++ * version 2 for more details (a copy is included in the LICENSE file that +++ * accompanied this code). +++ * +++ * You should have received a copy of the GNU General Public License version +++ * 2 along with this work; if not, write to the Free Software Foundation, +++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +++ * +++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +++ * or visit www.oracle.com if you need additional information or have any +++ * questions. +++ */ +++ +++/* +++ * @test +++ * @bug 8076117 +++ * @summary EndEntityChecker should not process custom extensions +++ * after PKIX validation +++ */ +++ +++import java.io.ByteArrayInputStream; +++import java.io.File; +++import java.io.FileInputStream; +++import java.security.KeyStore; +++import java.security.cert.CertPathValidatorException; +++import java.security.cert.Certificate; +++import java.security.cert.CertificateException; +++import java.security.cert.CertificateFactory; +++import java.security.cert.PKIXBuilderParameters; +++import java.security.cert.PKIXCertPathChecker; +++import java.security.cert.TrustAnchor; +++import java.security.cert.X509Certificate; +++import java.util.Collection; +++import java.util.Date; +++import java.util.HashSet; +++import java.util.Set; +++import sun.security.validator.KeyStores; +++import sun.security.validator.Validator; +++ +++ +++public class EndEntityExtensionCheck { +++ +++ /* +++ * Owner: CN=TestCA +++ * Issuer: CN=TestCA +++ */ +++ private static final String CA = +++ "-----BEGIN CERTIFICATE-----\n" + +++ "MIICgDCCAj2gAwIBAgIEC18hWjALBgcqhkjOOAQDBQAwETEPMA0GA1UEAxMGVGVz\n" + +++ "dENBMB4XDTE1MDQwNzIyMzUyMFoXDTI1MDQwNjIyMzUyMFowETEPMA0GA1UEAxMG\n" + +++ "VGVzdENBMIIBuDCCASwGByqGSM44BAEwggEfAoGBAP1/U4EddRIpUt9KnC7s5Of2\n" + +++ "EbdSPO9EAMMeP4C2USZpRV1AIlH7WT2NWPq/xfW6MPbLm1Vs14E7gB00b/JmYLdr\n" + +++ "mVClpJ+f6AR7ECLCT7up1/63xhv4O1fnxqimFQ8E+4P208UewwI1VBNaFpEy9nXz\n" + +++ "rith1yrv8iIDGZ3RSAHHAhUAl2BQjxUjC8yykrmCouuEC/BYHPUCgYEA9+Gghdab\n" + +++ "Pd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6Ewo\n" + +++ "FhO3zwkyjMim4TwWeotUfI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhR\n" + +++ "kImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoDgYUAAoGBAJOWy2hVy4iNwsi/idWG\n" + +++ "oksr9IZxQIFR2YavoUmD+rIgfYUpiCihzftDLMMaNYqp9PPxuOyoIPGPbwmKpAs5\n" + +++ "nq6gLwH2lSsN+EwyV2SJ0J26PHiMuRNZWWfKR3cpEqbQVb0CmvqSpj8zYfamPzp7\n" + +++ "eXSWwahzgLCGJM3SgCfDFC0uoyEwHzAdBgNVHQ4EFgQU7tLD8FnWM+r6jBr+mCXs\n" + +++ "8G5yBpgwCwYHKoZIzjgEAwUAAzAAMC0CFQCHCtzC3S0ST0EZBucikVui4WXD8QIU\n" + +++ "L3Oxy6989/FhZlZWJlhqc1ungEQ=\n" + +++ "-----END CERTIFICATE-----"; +++ +++ /* +++ * Owner: CN=TestEE +++ * Issuer: CN=TestCA +++ * Contains a custom critical extension with OID 1.2.3.4: +++ * #1: ObjectId: 1.2.3.4 Criticality=true +++ * 0000: 00 00 +++ */ +++ private static final String EE = +++ "-----BEGIN CERTIFICATE-----\n" + +++ "MIICrTCCAmugAwIBAgIELjciKzALBgcqhkjOOAQDBQAwETEPMA0GA1UEAxMGVGVz\n" + +++ "dENBMB4XDTE1MDQwNzIzMDA1OFoXDTE1MDcwNjIzMDA1OFowETEPMA0GA1UEAxMG\n" + +++ "VGVzdEVFMIIBtzCCASwGByqGSM44BAEwggEfAoGBAP1/U4EddRIpUt9KnC7s5Of2\n" + +++ "EbdSPO9EAMMeP4C2USZpRV1AIlH7WT2NWPq/xfW6MPbLm1Vs14E7gB00b/JmYLdr\n" + +++ "mVClpJ+f6AR7ECLCT7up1/63xhv4O1fnxqimFQ8E+4P208UewwI1VBNaFpEy9nXz\n" + +++ "rith1yrv8iIDGZ3RSAHHAhUAl2BQjxUjC8yykrmCouuEC/BYHPUCgYEA9+Gghdab\n" + +++ "Pd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6Ewo\n" + +++ "FhO3zwkyjMim4TwWeotUfI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhR\n" + +++ "kImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoDgYQAAoGAN97otrAJEuUg/O97vScI\n" + +++ "01xs1jqTz5o0PGpKiDDJNB3tCCUbLqXoBQBvSefQ8vYL3mmlEJLxlwfbajRmJQp0\n" + +++ "tUy5SUCZHk3MdoKxSvrqYnVpYwJHFXKWs6lAawxfuWbkm9SREuepOWnVzy2ecf5z\n" + +++ "hvy9mgEBfi4E9Cy8Byq2TpyjUDBOMAwGAyoDBAEB/wQCAAAwHwYDVR0jBBgwFoAU\n" + +++ "7tLD8FnWM+r6jBr+mCXs8G5yBpgwHQYDVR0OBBYEFNRVqt5F+EAuJ5x1IZLDkoMs\n" + +++ "mDj4MAsGByqGSM44BAMFAAMvADAsAhQyNGhxIp5IshN1zqLs4pUY214IMAIUMmTL\n" + +++ "3ZMpMAjITbuHHlFNUqZ7A9s=\n" + +++ "-----END CERTIFICATE-----"; +++ +++ public static void main(String[] args) throws Exception { +++ X509Certificate[] chain = createChain(); +++ +++ /* Test 1: Test SimpleValidator +++ * SimpleValidator doesn't check for unsupported critical +++ * extensions in the end entity certificate, and leaves that up +++ * to EndEntityChecker, which should catch such extensions. +++ */ +++ KeyStore ks = KeyStore.getInstance("JKS"); +++ ks.load(null, null); +++ ks.setCertificateEntry("testca", chain[chain.length - 1]); +++ +++ Validator v = Validator.getInstance(Validator.TYPE_SIMPLE, +++ Validator.VAR_TLS_CLIENT, +++ KeyStores.getTrustedCerts(ks)); +++ try { +++ v.validate(chain); +++ throw new Exception("Chain should not have validated " + +++ "successfully."); +++ } catch (CertificateException ex) { +++ // EE cert has an unsupported critical extension that is not +++ // checked by SimpleValidator's extension checks, so this +++ // failure is expected +++ } +++ +++ /* Test 2: Test PKIXValidator without custom checker +++ * PKIXValidator accepts PKIXParameters that can contain +++ * custom PKIXCertPathCheckers, which would be run against +++ * each cert in the chain, including EE certs. +++ * Check that if PKIXValidator is not provided a custom +++ * PKIXCertPathChecker for an unknown critical extension in +++ * the EE cert, chain validation will fail. +++ */ +++ TrustAnchor ta = new TrustAnchor(chain[chain.length - 1], null); +++ Set tas = new HashSet<>(); +++ tas.add(ta); +++ PKIXBuilderParameters params = new PKIXBuilderParameters(tas, null); +++ params.setDate(new Date(115, 5, 1)); // 2015-05-01 +++ params.setRevocationEnabled(false); +++ +++ v = Validator.getInstance(Validator.TYPE_PKIX, +++ Validator.VAR_TLS_CLIENT, +++ params); +++ try { +++ v.validate(chain); +++ throw new Exception("Chain should not have validated " + +++ "successfully."); +++ } catch (CertificateException ex) { +++ // EE cert has an unsupported critical extension and +++ // PKIXValidator was not provided any custom checker +++ // for it, so this failure ie expected. +++ } +++ +++ /* Test 3: Test PKIXValidator with custom checker +++ * Check that PKIXValidator will successfully validate a chain +++ * containing an EE cert with a critical custom extension, given +++ * a corresponding PKIXCertPathChecker for the extension. +++ */ +++ params = new PKIXBuilderParameters(tas, null); +++ params.addCertPathChecker(new CustomChecker()); +++ params.setDate(new Date(115, 5, 1)); // 2015-05-01 +++ params.setRevocationEnabled(false); +++ +++ v = Validator.getInstance(Validator.TYPE_PKIX, +++ Validator.VAR_TLS_CLIENT, +++ params); +++ v.validate(chain); // This should validate successfully +++ +++ System.out.println("Tests passed."); +++ } +++ +++ public static X509Certificate[] createChain() throws Exception { +++ CertificateFactory cf = CertificateFactory.getInstance("X.509"); +++ X509Certificate ee = (X509Certificate) +++ cf.generateCertificate((new ByteArrayInputStream(EE.getBytes()))); +++ X509Certificate ca = (X509Certificate) +++ cf.generateCertificate((new ByteArrayInputStream(CA.getBytes()))); +++ +++ X509Certificate[] chain = {ee, ca}; +++ return chain; +++ } +++ +++ /* +++ * A custom PKIXCertPathChecker. Looks for a critical extension +++ * in an end entity certificate with the OID 1.2.3.4. +++ */ +++ static class CustomChecker extends PKIXCertPathChecker { +++ +++ @Override +++ public void init(boolean forward) throws CertPathValidatorException { +++ // nothing to do +++ } +++ +++ @Override +++ public boolean isForwardCheckingSupported() { +++ return false; +++ } +++ +++ @Override +++ public Set getSupportedExtensions() { +++ Set exts = new HashSet<>(); +++ exts.add("1.2.3.4"); +++ return exts; +++ } +++ +++ @Override +++ public void check(Certificate cert, +++ Collection unresolvedCritExts) +++ throws CertPathValidatorException { +++ X509Certificate currCert = (X509Certificate)cert; +++ // check that this is an EE cert +++ if (currCert.getBasicConstraints() == -1) { +++ if (unresolvedCritExts != null && +++ !unresolvedCritExts.isEmpty()) { +++ unresolvedCritExts.remove("1.2.3.4"); +++ } +++ } +++ } +++ +++ } +++} ++# HG changeset patch ++# User igerasim ++# Date 1518134350 28800 ++# Thu Feb 08 15:59:10 2018 -0800 ++# Node ID c2063e75149ab33d32a9c9f0a166103818fbb03e ++# Parent 86c11017bc5cf0c60187a1d028f7f319de7ff626 ++8157898: SupportedDSAParamGen.java failed with timeout ++Reviewed-by: xuelei ++ ++diff --git openjdk/jdk/test/sun/security/provider/DSA/SupportedDSAParamGen.java openjdk/jdk/test/sun/security/provider/DSA/SupportedDSAParamGen.java ++--- openjdk/jdk/test/sun/security/provider/DSA/SupportedDSAParamGen.java +++++ openjdk/jdk/test/sun/security/provider/DSA/SupportedDSAParamGen.java ++@@ -29,7 +29,7 @@ ++ * @run main/timeout=300 SupportedDSAParamGen 1024 160 ++ * @run main/timeout=300 SupportedDSAParamGen 2048 224 ++ * @run main/timeout=300 SupportedDSAParamGen 2048 256 ++- * @run main/timeout=450 SupportedDSAParamGen 3072 256 +++ * @run main/timeout=700 SupportedDSAParamGen 3072 256 ++ */ ++ import java.security.*; ++ import java.security.spec.*; ++# HG changeset patch ++# User jnimeh ++# Date 1479876872 28800 ++# Tue Nov 22 20:54:32 2016 -0800 ++# Node ID b15e9dfb01fb1abe36192cf555085787e932950c ++# Parent c2063e75149ab33d32a9c9f0a166103818fbb03e ++8170035: When determining the ciphersuite lists, there is no debug output for disabled suites. ++Summary: Provide extra debugging output for JSSE that displays disabled cipher suites ++Reviewed-by: vinnie, wetmore ++ ++diff --git openjdk/jdk/src/share/classes/sun/security/ssl/SSLContextImpl.java openjdk/jdk/src/share/classes/sun/security/ssl/SSLContextImpl.java ++--- openjdk/jdk/src/share/classes/sun/security/ssl/SSLContextImpl.java +++++ openjdk/jdk/src/share/classes/sun/security/ssl/SSLContextImpl.java ++@@ -344,6 +344,13 @@ ++ EnumSet.of(CryptoPrimitive.KEY_AGREEMENT), ++ suite.name, null)) { ++ suites.add(suite); +++ } else { +++ if (debug != null && Debug.isOn("sslctx") && +++ Debug.isOn("verbose")) { +++ System.out.println( +++ "Ignoring disabled cipher suite: " + +++ suite.name); +++ } ++ } ++ } else if (debug != null && ++ Debug.isOn("sslctx") && Debug.isOn("verbose")) { ++# HG changeset patch ++# User igerasim ++# Date 1518631486 28800 ++# Wed Feb 14 10:04:46 2018 -0800 ++# Node ID f6d1518860ad656fa4a41f0ab4e8de7bfff948be ++# Parent b15e9dfb01fb1abe36192cf555085787e932950c ++8176183: sun/security/mscapi/SignedObjectChain.java fails on Windows ++Reviewed-by: weijun ++ ++diff --git openjdk/jdk/test/java/security/SignedObject/Chain.java openjdk/jdk/test/java/security/SignedObject/Chain.java ++--- openjdk/jdk/test/java/security/SignedObject/Chain.java +++++ openjdk/jdk/test/java/security/SignedObject/Chain.java ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -151,8 +151,17 @@ ++ PrivateKey[] privKeys = new PrivateKey[N]; ++ PublicKey[] pubKeys = new PublicKey[N]; ++ PublicKey[] anotherPubKeys = new PublicKey[N]; ++- KeyPairGenerator kpg = KeyPairGenerator.getInstance( ++- test.keyAlg.name); +++ Signature signature; +++ KeyPairGenerator kpg; +++ if (test.provider != Provider.Default) { +++ signature = Signature.getInstance(test.sigAlg.name, +++ test.provider.name); +++ kpg = KeyPairGenerator.getInstance( +++ test.keyAlg.name, test.provider.name); +++ } else { +++ signature = Signature.getInstance(test.sigAlg.name); +++ kpg = KeyPairGenerator.getInstance(test.keyAlg.name); +++ } ++ for (int j=0; j < N; j++) { ++ if (test.keySize != -1) { ++ kpg.initialize(test.keySize); ++@@ -171,14 +180,6 @@ ++ } ++ } ++ ++- Signature signature; ++- if (test.provider != Provider.Default) { ++- signature = Signature.getInstance(test.sigAlg.name, ++- test.provider.name); ++- } else { ++- signature = Signature.getInstance(test.sigAlg.name); ++- } ++- ++ // Create a chain of signed objects ++ SignedObject[] objects = new SignedObject[N]; ++ objects[0] = new SignedObject(str, privKeys[0], signature); ++# HG changeset patch ++# User dmarkov ++# Date 1519919855 0 ++# Thu Mar 01 15:57:35 2018 +0000 ++# Node ID 113a3deba750d62fd0fc9e6be7ce8837d1f0476b ++# Parent f6d1518860ad656fa4a41f0ab4e8de7bfff948be ++8187635: On Windows Swing changes keyboard layout on a window activation ++Reviewed-by: serb, ssadetsky ++ ++diff --git openjdk/jdk/src/windows/native/sun/windows/awt_Component.cpp openjdk/jdk/src/windows/native/sun/windows/awt_Component.cpp ++--- openjdk/jdk/src/windows/native/sun/windows/awt_Component.cpp +++++ openjdk/jdk/src/windows/native/sun/windows/awt_Component.cpp ++@@ -1789,6 +1789,7 @@ ++ "new = 0x%08X", ++ GetHWnd(), GetClassName(), (UINT)lParam); ++ mr = WmInputLangChange(static_cast(wParam), reinterpret_cast(lParam)); +++ g_bUserHasChangedInputLang = TRUE; ++ CallProxyDefWindowProc(message, wParam, lParam, retValue, mr); ++ // should return non-zero if we process this message ++ retValue = 1; ++# HG changeset patch ++# User igerasim ++# Date 1517872813 28800 ++# Mon Feb 05 15:20:13 2018 -0800 ++# Node ID c802f9e517a9b77746ca6b986f0123ccd51daaab ++# Parent 113a3deba750d62fd0fc9e6be7ce8837d1f0476b ++8196224: Even better Internet address support ++Reviewed-by: chegar, rriggs, rhalade, vtewari ++ ++diff --git openjdk/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c openjdk/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c ++--- openjdk/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c +++++ openjdk/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c ++@@ -1183,6 +1183,7 @@ ++ struct in_addr in; ++ jobjectArray addrArray; ++ jsize len; +++ jint family; ++ jobject addr; ++ int i; ++ ++@@ -1212,7 +1213,9 @@ ++ */ ++ for (i = 0; i < len; i++) { ++ addr = (*env)->GetObjectArrayElement(env, addrArray, i); ++- if (getInetAddress_family(env, addr) == IPv4) { +++ family = getInetAddress_family(env, addr); +++ JNU_CHECK_EXCEPTION(env); +++ if (family == IPv4) { ++ JNU_CHECK_EXCEPTION(env); ++ in.s_addr = htonl(getInetAddress_addr(env, addr)); ++ JNU_CHECK_EXCEPTION(env); ++@@ -2153,6 +2156,7 @@ ++ ++ jobject fdObj = (*env)->GetObjectField(env, this, pdsi_fdID); ++ jint fd; +++ jint family; ++ jint ipv6_join_leave; ++ ++ if (IS_NULL(fdObj)) { ++@@ -2174,7 +2178,9 @@ ++ ipv6_join_leave = ipv6_available(); ++ ++ #ifdef __linux__ ++- if (getInetAddress_family(env, iaObj) == IPv4) { +++ family = getInetAddress_family(env, iaObj); +++ JNU_CHECK_EXCEPTION(env); +++ if (family == IPv4) { ++ JNU_CHECK_EXCEPTION(env); ++ ipv6_join_leave = JNI_FALSE; ++ } ++# HG changeset patch ++# User coffeys ++# Date 1518104975 0 ++# Thu Feb 08 15:49:35 2018 +0000 ++# Node ID 70d7fb5d887f42f5d62de3235f78bcd9cb76bf8c ++# Parent c802f9e517a9b77746ca6b986f0123ccd51daaab ++8196854: TestFlushableGZIPOutputStream failing with IndexOutOfBoundsException ++Reviewed-by: sherman, rriggs ++ ++diff --git openjdk/jdk/test/java/util/zip/InflateIn_DeflateOut.java openjdk/jdk/test/java/util/zip/InflateIn_DeflateOut.java ++--- openjdk/jdk/test/java/util/zip/InflateIn_DeflateOut.java +++++ openjdk/jdk/test/java/util/zip/InflateIn_DeflateOut.java ++@@ -23,7 +23,7 @@ ++ ++ /** ++ * @test ++- * @bug 4206909 4813885 8189789 +++ * @bug 4206909 4813885 8189789 8196854 ++ * @summary Test basic functionality of DeflaterOutputStream/InflaterInputStream and GZIPOutputStream/GZIPInputStream, including flush ++ * @key randomness ++ */ ++@@ -153,7 +153,6 @@ ++ OutputStream output = new FlushableGZIPOutputStream(byteOutStream); ++ ++ byte[] data = new byte[random.nextInt(1024 * 1024)]; ++- byte[] buf = new byte[data.length]; ++ random.nextBytes(data); ++ ++ output.write(data); ++@@ -175,7 +174,7 @@ ++ int numRead; ++ byte[] b = new byte[4 * 1024]; ++ try { ++- while ((numRead = gzis.read(buf)) >= 0) { +++ while ((numRead = gzis.read(b)) >= 0) { ++ baos.write(b, 0, numRead); ++ } ++ } finally { ++# HG changeset patch ++# User clanger ++# Date 1531896945 -3600 ++# Wed Jul 18 07:55:45 2018 +0100 ++# Node ID a0f53c230f47a44fabde6dc5dde342297b009357 ++# Parent 70d7fb5d887f42f5d62de3235f78bcd9cb76bf8c ++8197943: Unable to use JDWP API in JDK 8 to debug JDK 9 VM ++Reviewed-by: simonis, cjplummer ++ ++diff --git openjdk/jdk/src/share/classes/com/sun/tools/jdi/VirtualMachineImpl.java openjdk/jdk/src/share/classes/com/sun/tools/jdi/VirtualMachineImpl.java ++--- openjdk/jdk/src/share/classes/com/sun/tools/jdi/VirtualMachineImpl.java +++++ openjdk/jdk/src/share/classes/com/sun/tools/jdi/VirtualMachineImpl.java ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -674,20 +674,18 @@ ++ versionInfo().jdwpMinor >= 6; ++ } ++ public boolean canGetInstanceInfo() { ++- if (versionInfo().jdwpMajor < 1 || ++- versionInfo().jdwpMinor < 6) { +++ if (versionInfo().jdwpMajor > 1 || +++ versionInfo().jdwpMinor >= 6) { +++ validateVM(); +++ return hasNewCapabilities() && +++ capabilitiesNew().canGetInstanceInfo; +++ } else { ++ return false; ++ } ++- validateVM(); ++- return hasNewCapabilities() && ++- capabilitiesNew().canGetInstanceInfo; ++ } ++ public boolean canUseSourceNameFilters() { ++- if (versionInfo().jdwpMajor < 1 || ++- versionInfo().jdwpMinor < 6) { ++- return false; ++- } ++- return true; +++ return versionInfo().jdwpMajor > 1 || +++ versionInfo().jdwpMinor >= 6; ++ } ++ public boolean canForceEarlyReturn() { ++ validateVM(); ++@@ -703,12 +701,8 @@ ++ capabilitiesNew().canGetSourceDebugExtension; ++ } ++ public boolean canGetClassFileVersion() { ++- if ( versionInfo().jdwpMajor < 1 && ++- versionInfo().jdwpMinor < 6) { ++- return false; ++- } else { ++- return true; ++- } +++ return versionInfo().jdwpMajor > 1 || +++ versionInfo().jdwpMinor >= 6; ++ } ++ public boolean canGetConstantPool() { ++ validateVM(); ++# HG changeset patch ++# User rpatil ++# Date 1524150049 25200 ++# Thu Apr 19 08:00:49 2018 -0700 ++# Node ID 9c9ccc335ec353419a8190b3f71f3744d0c6c46a ++# Parent a0f53c230f47a44fabde6dc5dde342297b009357 ++8200359: (tz) Upgrade time-zone data to tzdata2018d ++Reviewed-by: naoto ++ ++diff --git openjdk/jdk/make/sun/javazic/tzdata/VERSION openjdk/jdk/make/sun/javazic/tzdata/VERSION ++--- openjdk/jdk/make/sun/javazic/tzdata/VERSION +++++ openjdk/jdk/make/sun/javazic/tzdata/VERSION ++@@ -21,4 +21,4 @@ ++ # or visit www.oracle.com if you need additional information or have any ++ # questions. ++ # ++-tzdata2018c +++tzdata2018d ++diff --git openjdk/jdk/make/sun/javazic/tzdata/africa openjdk/jdk/make/sun/javazic/tzdata/africa ++--- openjdk/jdk/make/sun/javazic/tzdata/africa +++++ openjdk/jdk/make/sun/javazic/tzdata/africa ++@@ -138,13 +138,13 @@ ++ ++ # Cape Verde / Cabo Verde ++ # +++# From Paul Eggert (2018-02-16): ++ # Shanks gives 1907 for the transition to +02. ++-# Perhaps the 1911-05-26 Portuguese decree ++-# https://dre.pt/pdf1sdip/1911/05/12500/23132313.pdf ++-# merely made it official? +++# For now, ignore that and follow the 1911-05-26 Portuguese decree +++# (see Europe/Lisbon). ++ # ++ # Zone NAME GMTOFF RULES FORMAT [UNTIL] ++-Zone Atlantic/Cape_Verde -1:34:04 - LMT 1907 # Praia +++Zone Atlantic/Cape_Verde -1:34:04 - LMT 1912 Jan 01 2:00u # Praia ++ -2:00 - -02 1942 Sep ++ -2:00 1:00 -01 1945 Oct 15 ++ -2:00 - -02 1975 Nov 25 2:00 ++@@ -393,15 +393,34 @@ ++ # See Africa/Abidjan. ++ ++ # Ghana ++-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +++ +++# From Paul Eggert (2018-01-30): ++ # Whitman says DST was observed from 1931 to "the present"; ++-# Shanks & Pottenger say 1936 to 1942; ++-# and September 1 to January 1 is given by: ++-# Scott Keltie J, Epstein M (eds), The Statesman's Year-Book, ++-# 57th ed. Macmillan, London (1920), OCLC 609408015, pp xxviii. ++-# For lack of better info, assume DST was observed from 1920 to 1942. ++-Rule Ghana 1920 1942 - Sep 1 0:00 0:20 GHST ++-Rule Ghana 1920 1942 - Dec 31 0:00 0 GMT +++# Shanks & Pottenger say 1936 to 1942 with 20 minutes of DST, +++# with transitions on 09-01 and 12-31 at 00:00. +++# Page 33 of Parish GCB, Colonial Reports - Annual. No. 1066. Gold +++# Coast. Report for 1919. (March 1921), OCLC 784024077 +++# http://libsysdigi.library.illinois.edu/ilharvest/africana/books2011-05/5530214/5530214_1919/5530214_1919_opt.pdf +++# lists the Determination of the Time Ordinance, 1919, No. 18, +++# "to advance the time observed locally by the space of twenty minutes +++# during the last four months of each year; the object in view being +++# to extend during those months the period of daylight-time available +++# for evening recreation after office hours." +++# Vanessa Ogle, The Global Transformation of Time, 1870-1950 (2015), p 33, +++# writes "In 1919, the Gold Coast (Ghana as of 1957) made Greenwich +++# time its legal time and simultaneously legalized a summer time of +++# UTC - 00:20 minutes from March to October."; a footnote lists +++# the ordinance as being dated 1919-11-24. +++# The Crown Colonist, Volume 12 (1942), p 176, says "the Government +++# intend advancing Gold Coast time half an hour ahead of G.M.T. +++# The actual date of the alteration has not yet been announced." +++# These sources are incomplete and contradictory. Possibly what is +++# now Ghana observed different DST regimes in different years. For +++# lack of better info, use Shanks except treat the minus sign as a +++# typo, and assume DST started in 1920 not 1936. +++# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +++Rule Ghana 1920 1942 - Sep 1 0:00 0:20 - +++Rule Ghana 1920 1942 - Dec 31 0:00 0 - ++ # Zone NAME GMTOFF RULES FORMAT [UNTIL] ++ Zone Africa/Accra -0:00:52 - LMT 1918 ++ 0:00 Ghana GMT/+0020 ++@@ -411,13 +430,13 @@ ++ ++ # Guinea-Bissau ++ # +++# From Paul Eggert (2018-02-16): ++ # Shanks gives 1911-05-26 for the transition to WAT, ++ # evidently confusing the date of the Portuguese decree ++-# https://dre.pt/pdf1sdip/1911/05/12500/23132313.pdf ++-# with the date that it took effect, namely 1912-01-01. +++# (see Europe/Lisbon) with the date that it took effect. ++ # ++ # Zone NAME GMTOFF RULES FORMAT [UNTIL] ++-Zone Africa/Bissau -1:02:20 - LMT 1912 Jan 1 +++Zone Africa/Bissau -1:02:20 - LMT 1912 Jan 1 1:00u ++ -1:00 - -01 1975 ++ 0:00 - GMT ++ ++@@ -613,9 +632,9 @@ ++ # at 2am (or 02:00) local time..." ++ ++ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ++-Rule Mauritius 1982 only - Oct 10 0:00 1:00 S +++Rule Mauritius 1982 only - Oct 10 0:00 1:00 - ++ Rule Mauritius 1983 only - Mar 21 0:00 0 - ++-Rule Mauritius 2008 only - Oct lastSun 2:00 1:00 S +++Rule Mauritius 2008 only - Oct lastSun 2:00 1:00 - ++ Rule Mauritius 2009 only - Mar lastSun 2:00 0 - ++ # Zone NAME GMTOFF RULES FORMAT [UNTIL] ++ Zone Indian/Mauritius 3:50:00 - LMT 1907 # Port Louis ++@@ -1060,6 +1079,8 @@ ++ ++ # São Tomé and Príncipe ++ +++# See Europe/Lisbon for info about the 1912 transition. +++ ++ # From Steffen Thorsen (2018-01-08): ++ # Multiple sources tell that São Tomé changed from UTC to UTC+1 as ++ # they entered the year 2018. ++@@ -1068,7 +1089,7 @@ ++ # http://www.mnec.gov.st/index.php/publicacoes/documentos/file/90-decreto-lei-n-25-2017 ++ ++ Zone Africa/Sao_Tome 0:26:56 - LMT 1884 ++- -0:36:45 - LMT 1912 # Lisbon Mean Time +++ -0:36:45 - LMT 1912 Jan 1 00:00u # Lisbon MT ++ 0:00 - GMT 2018 Jan 1 01:00 ++ 1:00 - WAT ++ ++diff --git openjdk/jdk/make/sun/javazic/tzdata/antarctica openjdk/jdk/make/sun/javazic/tzdata/antarctica ++--- openjdk/jdk/make/sun/javazic/tzdata/antarctica +++++ openjdk/jdk/make/sun/javazic/tzdata/antarctica ++@@ -98,7 +98,8 @@ ++ 8:00 - +08 2011 Oct 28 2:00 ++ 11:00 - +11 2012 Feb 21 17:00u ++ 8:00 - +08 2016 Oct 22 ++- 11:00 - +11 +++ 11:00 - +11 2018 Mar 11 4:00 +++ 8:00 - +08 ++ Zone Antarctica/Davis 0 - -00 1957 Jan 13 ++ 7:00 - +07 1964 Nov ++ 0 - -00 1969 Feb ++diff --git openjdk/jdk/make/sun/javazic/tzdata/asia openjdk/jdk/make/sun/javazic/tzdata/asia ++--- openjdk/jdk/make/sun/javazic/tzdata/asia +++++ openjdk/jdk/make/sun/javazic/tzdata/asia ++@@ -92,13 +92,13 @@ ++ Rule EUAsia 1981 max - Mar lastSun 1:00u 1:00 S ++ Rule EUAsia 1979 1995 - Sep lastSun 1:00u 0 - ++ Rule EUAsia 1996 max - Oct lastSun 1:00u 0 - ++-Rule E-EurAsia 1981 max - Mar lastSun 0:00 1:00 S +++Rule E-EurAsia 1981 max - Mar lastSun 0:00 1:00 - ++ Rule E-EurAsia 1979 1995 - Sep lastSun 0:00 0 - ++ Rule E-EurAsia 1996 max - Oct lastSun 0:00 0 - ++-Rule RussiaAsia 1981 1984 - Apr 1 0:00 1:00 S +++Rule RussiaAsia 1981 1984 - Apr 1 0:00 1:00 - ++ Rule RussiaAsia 1981 1983 - Oct 1 0:00 0 - ++ Rule RussiaAsia 1984 1995 - Sep lastSun 2:00s 0 - ++-Rule RussiaAsia 1985 2010 - Mar lastSun 2:00s 1:00 S +++Rule RussiaAsia 1985 2010 - Mar lastSun 2:00s 1:00 - ++ Rule RussiaAsia 1996 2010 - Oct lastSun 2:00s 0 - ++ ++ # Afghanistan ++@@ -133,7 +133,7 @@ ++ # (brief) ++ # http://www.worldtimezone.com/dst_news/dst_news_armenia03.html ++ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ++-Rule Armenia 2011 only - Mar lastSun 2:00s 1:00 S +++Rule Armenia 2011 only - Mar lastSun 2:00s 1:00 - ++ Rule Armenia 2011 only - Oct lastSun 2:00s 0 - ++ # Zone NAME GMTOFF RULES FORMAT [UNTIL] ++ Zone Asia/Yerevan 2:58:00 - LMT 1924 May 2 ++@@ -159,7 +159,7 @@ ++ # http://en.apa.az/xeber_azerbaijan_abolishes_daylight_savings_ti_240862.html ++ ++ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ++-Rule Azer 1997 2015 - Mar lastSun 4:00 1:00 S +++Rule Azer 1997 2015 - Mar lastSun 4:00 1:00 - ++ Rule Azer 1997 2015 - Oct lastSun 5:00 0 - ++ # Zone NAME GMTOFF RULES FORMAT [UNTIL] ++ Zone Asia/Baku 3:19:24 - LMT 1924 May 2 ++@@ -246,7 +246,7 @@ ++ # http://www.worldtimezone.com/dst_news/dst_news_bangladesh06.html ++ ++ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ++-Rule Dhaka 2009 only - Jun 19 23:00 1:00 S +++Rule Dhaka 2009 only - Jun 19 23:00 1:00 - ++ Rule Dhaka 2009 only - Dec 31 24:00 0 - ++ ++ # Zone NAME GMTOFF RULES FORMAT [UNTIL] ++@@ -787,8 +787,9 @@ ++ Rule Macau 1975 1977 - Apr Sun>=15 3:30 1:00 D ++ Rule Macau 1978 1980 - Apr Sun>=15 0:00 1:00 D ++ Rule Macau 1978 1980 - Oct Sun>=15 0:00 0 S +++# See Europe/Lisbon for info about the 1912 transition. ++ # Zone NAME GMTOFF RULES FORMAT [UNTIL] ++-Zone Asia/Macau 7:34:20 - LMT 1912 Jan 1 +++Zone Asia/Macau 7:34:20 - LMT 1911 Dec 31 16:00u ++ 8:00 Macau C%sT ++ ++ ++@@ -1129,61 +1130,61 @@ ++ # thirtieth day of Shahrivar. ++ # ++ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ++-Rule Iran 1978 1980 - Mar 21 0:00 1:00 D ++-Rule Iran 1978 only - Oct 21 0:00 0 S ++-Rule Iran 1979 only - Sep 19 0:00 0 S ++-Rule Iran 1980 only - Sep 23 0:00 0 S ++-Rule Iran 1991 only - May 3 0:00 1:00 D ++-Rule Iran 1992 1995 - Mar 22 0:00 1:00 D ++-Rule Iran 1991 1995 - Sep 22 0:00 0 S ++-Rule Iran 1996 only - Mar 21 0:00 1:00 D ++-Rule Iran 1996 only - Sep 21 0:00 0 S ++-Rule Iran 1997 1999 - Mar 22 0:00 1:00 D ++-Rule Iran 1997 1999 - Sep 22 0:00 0 S ++-Rule Iran 2000 only - Mar 21 0:00 1:00 D ++-Rule Iran 2000 only - Sep 21 0:00 0 S ++-Rule Iran 2001 2003 - Mar 22 0:00 1:00 D ++-Rule Iran 2001 2003 - Sep 22 0:00 0 S ++-Rule Iran 2004 only - Mar 21 0:00 1:00 D ++-Rule Iran 2004 only - Sep 21 0:00 0 S ++-Rule Iran 2005 only - Mar 22 0:00 1:00 D ++-Rule Iran 2005 only - Sep 22 0:00 0 S ++-Rule Iran 2008 only - Mar 21 0:00 1:00 D ++-Rule Iran 2008 only - Sep 21 0:00 0 S ++-Rule Iran 2009 2011 - Mar 22 0:00 1:00 D ++-Rule Iran 2009 2011 - Sep 22 0:00 0 S ++-Rule Iran 2012 only - Mar 21 0:00 1:00 D ++-Rule Iran 2012 only - Sep 21 0:00 0 S ++-Rule Iran 2013 2015 - Mar 22 0:00 1:00 D ++-Rule Iran 2013 2015 - Sep 22 0:00 0 S ++-Rule Iran 2016 only - Mar 21 0:00 1:00 D ++-Rule Iran 2016 only - Sep 21 0:00 0 S ++-Rule Iran 2017 2019 - Mar 22 0:00 1:00 D ++-Rule Iran 2017 2019 - Sep 22 0:00 0 S ++-Rule Iran 2020 only - Mar 21 0:00 1:00 D ++-Rule Iran 2020 only - Sep 21 0:00 0 S ++-Rule Iran 2021 2023 - Mar 22 0:00 1:00 D ++-Rule Iran 2021 2023 - Sep 22 0:00 0 S ++-Rule Iran 2024 only - Mar 21 0:00 1:00 D ++-Rule Iran 2024 only - Sep 21 0:00 0 S ++-Rule Iran 2025 2027 - Mar 22 0:00 1:00 D ++-Rule Iran 2025 2027 - Sep 22 0:00 0 S ++-Rule Iran 2028 2029 - Mar 21 0:00 1:00 D ++-Rule Iran 2028 2029 - Sep 21 0:00 0 S ++-Rule Iran 2030 2031 - Mar 22 0:00 1:00 D ++-Rule Iran 2030 2031 - Sep 22 0:00 0 S ++-Rule Iran 2032 2033 - Mar 21 0:00 1:00 D ++-Rule Iran 2032 2033 - Sep 21 0:00 0 S ++-Rule Iran 2034 2035 - Mar 22 0:00 1:00 D ++-Rule Iran 2034 2035 - Sep 22 0:00 0 S +++Rule Iran 1978 1980 - Mar 21 0:00 1:00 - +++Rule Iran 1978 only - Oct 21 0:00 0 - +++Rule Iran 1979 only - Sep 19 0:00 0 - +++Rule Iran 1980 only - Sep 23 0:00 0 - +++Rule Iran 1991 only - May 3 0:00 1:00 - +++Rule Iran 1992 1995 - Mar 22 0:00 1:00 - +++Rule Iran 1991 1995 - Sep 22 0:00 0 - +++Rule Iran 1996 only - Mar 21 0:00 1:00 - +++Rule Iran 1996 only - Sep 21 0:00 0 - +++Rule Iran 1997 1999 - Mar 22 0:00 1:00 - +++Rule Iran 1997 1999 - Sep 22 0:00 0 - +++Rule Iran 2000 only - Mar 21 0:00 1:00 - +++Rule Iran 2000 only - Sep 21 0:00 0 - +++Rule Iran 2001 2003 - Mar 22 0:00 1:00 - +++Rule Iran 2001 2003 - Sep 22 0:00 0 - +++Rule Iran 2004 only - Mar 21 0:00 1:00 - +++Rule Iran 2004 only - Sep 21 0:00 0 - +++Rule Iran 2005 only - Mar 22 0:00 1:00 - +++Rule Iran 2005 only - Sep 22 0:00 0 - +++Rule Iran 2008 only - Mar 21 0:00 1:00 - +++Rule Iran 2008 only - Sep 21 0:00 0 - +++Rule Iran 2009 2011 - Mar 22 0:00 1:00 - +++Rule Iran 2009 2011 - Sep 22 0:00 0 - +++Rule Iran 2012 only - Mar 21 0:00 1:00 - +++Rule Iran 2012 only - Sep 21 0:00 0 - +++Rule Iran 2013 2015 - Mar 22 0:00 1:00 - +++Rule Iran 2013 2015 - Sep 22 0:00 0 - +++Rule Iran 2016 only - Mar 21 0:00 1:00 - +++Rule Iran 2016 only - Sep 21 0:00 0 - +++Rule Iran 2017 2019 - Mar 22 0:00 1:00 - +++Rule Iran 2017 2019 - Sep 22 0:00 0 - +++Rule Iran 2020 only - Mar 21 0:00 1:00 - +++Rule Iran 2020 only - Sep 21 0:00 0 - +++Rule Iran 2021 2023 - Mar 22 0:00 1:00 - +++Rule Iran 2021 2023 - Sep 22 0:00 0 - +++Rule Iran 2024 only - Mar 21 0:00 1:00 - +++Rule Iran 2024 only - Sep 21 0:00 0 - +++Rule Iran 2025 2027 - Mar 22 0:00 1:00 - +++Rule Iran 2025 2027 - Sep 22 0:00 0 - +++Rule Iran 2028 2029 - Mar 21 0:00 1:00 - +++Rule Iran 2028 2029 - Sep 21 0:00 0 - +++Rule Iran 2030 2031 - Mar 22 0:00 1:00 - +++Rule Iran 2030 2031 - Sep 22 0:00 0 - +++Rule Iran 2032 2033 - Mar 21 0:00 1:00 - +++Rule Iran 2032 2033 - Sep 21 0:00 0 - +++Rule Iran 2034 2035 - Mar 22 0:00 1:00 - +++Rule Iran 2034 2035 - Sep 22 0:00 0 - ++ # ++ # The following rules are approximations starting in the year 2038. ++ # These are the best post-2037 approximations available, given the ++ # restrictions of a single rule using a Gregorian-based data format. ++ # At some point this table will need to be extended, though quite ++ # possibly Iran will change the rules first. ++-Rule Iran 2036 max - Mar 21 0:00 1:00 D ++-Rule Iran 2036 max - Sep 21 0:00 0 S +++Rule Iran 2036 max - Mar 21 0:00 1:00 - +++Rule Iran 2036 max - Sep 21 0:00 0 - ++ ++ # Zone NAME GMTOFF RULES FORMAT [UNTIL] ++ Zone Asia/Tehran 3:25:44 - LMT 1916 ++@@ -1219,17 +1220,17 @@ ++ # https://www.timeanddate.com/news/time/iraq-dumps-daylight-saving.html ++ ++ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ++-Rule Iraq 1982 only - May 1 0:00 1:00 D ++-Rule Iraq 1982 1984 - Oct 1 0:00 0 S ++-Rule Iraq 1983 only - Mar 31 0:00 1:00 D ++-Rule Iraq 1984 1985 - Apr 1 0:00 1:00 D ++-Rule Iraq 1985 1990 - Sep lastSun 1:00s 0 S ++-Rule Iraq 1986 1990 - Mar lastSun 1:00s 1:00 D +++Rule Iraq 1982 only - May 1 0:00 1:00 - +++Rule Iraq 1982 1984 - Oct 1 0:00 0 - +++Rule Iraq 1983 only - Mar 31 0:00 1:00 - +++Rule Iraq 1984 1985 - Apr 1 0:00 1:00 - +++Rule Iraq 1985 1990 - Sep lastSun 1:00s 0 - +++Rule Iraq 1986 1990 - Mar lastSun 1:00s 1:00 - ++ # IATA SSIM (1991/1996) says Apr 1 12:01am UTC; guess the ':01' is a typo. ++ # Shanks & Pottenger say Iraq did not observe DST 1992/1997; ignore this. ++ # ++-Rule Iraq 1991 2007 - Apr 1 3:00s 1:00 D ++-Rule Iraq 1991 2007 - Oct 1 3:00s 0 S +++Rule Iraq 1991 2007 - Apr 1 3:00s 1:00 - +++Rule Iraq 1991 2007 - Oct 1 3:00s 0 - ++ # Zone NAME GMTOFF RULES FORMAT [UNTIL] ++ Zone Asia/Baghdad 2:57:40 - LMT 1890 ++ 2:57:36 - BMT 1918 # Baghdad Mean Time? ++@@ -1501,8 +1502,7 @@ ++ ++ # From Hideyuki Suzuki (1998-11-09): ++ # 'Tokyo' usually stands for the former location of Tokyo Astronomical ++-# Observatory: 139 degrees 44' 40.90" E (9h 18m 58.727s), ++-# 35 degrees 39' 16.0" N. +++# Observatory: 139° 44' 40.90" E (9h 18m 58.727s), 35° 39' 16.0" N. ++ # This data is from 'Rika Nenpyou (Chronological Scientific Tables) 1996' ++ # edited by National Astronomical Observatory of Japan.... ++ # JST (Japan Standard Time) has been used since 1888-01-01 00:00 (JST). ++@@ -1510,10 +1510,10 @@ ++ ++ # From Hideyuki Suzuki (1998-11-16): ++ # The ordinance No. 51 (1886) established "standard time" in Japan, ++-# which stands for the time on 135 degrees E. +++# which stands for the time on 135° E. ++ # In the ordinance No. 167 (1895), "standard time" was renamed to "central ++ # standard time". And the same ordinance also established "western standard ++-# time", which stands for the time on 120 degrees E.... But "western standard +++# time", which stands for the time on 120° E.... But "western standard ++ # time" was abolished in the ordinance No. 529 (1937). In the ordinance No. ++ # 167, there is no mention regarding for what place western standard time is ++ # standard.... ++@@ -1926,9 +1926,9 @@ ++ # From 2005-08-12 our GMT-offset is +6, w/o any daylight saving. ++ ++ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ++-Rule Kyrgyz 1992 1996 - Apr Sun>=7 0:00s 1:00 S +++Rule Kyrgyz 1992 1996 - Apr Sun>=7 0:00s 1:00 - ++ Rule Kyrgyz 1992 1996 - Sep lastSun 0:00 0 - ++-Rule Kyrgyz 1997 2005 - Mar lastSun 2:30 1:00 S +++Rule Kyrgyz 1997 2005 - Mar lastSun 2:30 1:00 - ++ Rule Kyrgyz 1997 2004 - Oct lastSun 2:30 0 - ++ # Zone NAME GMTOFF RULES FORMAT [UNTIL] ++ Zone Asia/Bishkek 4:58:24 - LMT 1924 May 2 ++@@ -2060,7 +2060,7 @@ ++ ++ # Malaysia ++ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ++-Rule NBorneo 1935 1941 - Sep 14 0:00 0:20 TS # one-Third Summer +++Rule NBorneo 1935 1941 - Sep 14 0:00 0:20 - ++ Rule NBorneo 1935 1941 - Dec 14 0:00 0 - ++ # ++ # peninsular Malaysia ++@@ -2205,7 +2205,7 @@ ++ # http://zasag.mn/news/view/8969 ++ ++ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ++-Rule Mongol 1983 1984 - Apr 1 0:00 1:00 S +++Rule Mongol 1983 1984 - Apr 1 0:00 1:00 - ++ Rule Mongol 1983 only - Oct 1 0:00 0 - ++ # Shanks & Pottenger and IATA SSIM say 1990s switches occurred at 00:00, ++ # but McDow says the 2001 switches occurred at 02:00. Also, IATA SSIM ++@@ -2222,13 +2222,13 @@ ++ # Mongolian Government meeting has concluded today to cancel daylight ++ # saving time adoption in Mongolia. Source: http://zasag.mn/news/view/16192 ++ ++-Rule Mongol 1985 1998 - Mar lastSun 0:00 1:00 S +++Rule Mongol 1985 1998 - Mar lastSun 0:00 1:00 - ++ Rule Mongol 1984 1998 - Sep lastSun 0:00 0 - ++ # IATA SSIM (1999-09) says Mongolia no longer observes DST. ++-Rule Mongol 2001 only - Apr lastSat 2:00 1:00 S +++Rule Mongol 2001 only - Apr lastSat 2:00 1:00 - ++ Rule Mongol 2001 2006 - Sep lastSat 2:00 0 - ++-Rule Mongol 2002 2006 - Mar lastSat 2:00 1:00 S ++-Rule Mongol 2015 2016 - Mar lastSat 2:00 1:00 S +++Rule Mongol 2002 2006 - Mar lastSat 2:00 1:00 - +++Rule Mongol 2015 2016 - Mar lastSat 2:00 1:00 - ++ Rule Mongol 2015 2016 - Sep lastSat 0:00 0 - ++ ++ # Zone NAME GMTOFF RULES FORMAT [UNTIL] ++@@ -2662,9 +2662,6 @@ ++ # [Google translation]: "The Council also decided to start daylight ++ # saving in Palestine as of one o'clock on Saturday morning, ++ # 2016-03-26, to provide the clock 60 minutes ahead." ++-# ++-# From Paul Eggert (2016-03-12): ++-# Predict spring transitions on March's last Saturday at 01:00 from now on. ++ ++ # From Sharef Mustafa (2016-10-19): ++ # [T]he Palestinian cabinet decision (Mar 8th 2016) published on ++@@ -2681,6 +2678,16 @@ ++ # https://www.timeanddate.com/time/change/gaza-strip/gaza ++ # https://www.timeanddate.com/time/change/west-bank/hebron ++ +++# From Sharef Mustafa (2018-03-16): +++# Palestine summer time will start on Mar 24th 2018 by advancing the +++# clock by 60 minutes as per Palestinian cabinet decision published on +++# the offical website, though the decree did not specify the exact +++# time of the time shift. +++# http://www.palestinecabinet.gov.ps/Website/AR/NDecrees/ViewFile.ashx?ID=e7a42ab7-ee23-435a-b9c8-a4f7e81f3817 +++# +++# From Paul Eggert (2018-03-16): +++# For 2016 on, predict spring transitions on March's fourth Saturday at 01:00. +++ ++ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ++ Rule EgyptAsia 1957 only - May 10 0:00 1:00 S ++ Rule EgyptAsia 1957 1958 - Oct 1 0:00 0 - ++@@ -2710,7 +2717,7 @@ ++ Rule Palestine 2013 only - Sep Fri>=21 0:00 0 - ++ Rule Palestine 2014 2015 - Oct Fri>=21 0:00 0 - ++ Rule Palestine 2015 only - Mar lastFri 24:00 1:00 S ++-Rule Palestine 2016 max - Mar lastSat 1:00 1:00 S +++Rule Palestine 2016 max - Mar Sat>=22 1:00 1:00 S ++ Rule Palestine 2016 max - Oct lastSat 1:00 0 - ++ ++ # Zone NAME GMTOFF RULES FORMAT [UNTIL] ++@@ -2760,11 +2767,11 @@ ++ # http://www.philstar.com/headlines/2014/08/05/1354152/pnoy-urged-declare-use-daylight-saving-time ++ ++ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ++-Rule Phil 1936 only - Nov 1 0:00 1:00 S +++Rule Phil 1936 only - Nov 1 0:00 1:00 - ++ Rule Phil 1937 only - Feb 1 0:00 0 - ++-Rule Phil 1954 only - Apr 12 0:00 1:00 S +++Rule Phil 1954 only - Apr 12 0:00 1:00 - ++ Rule Phil 1954 only - Jul 1 0:00 0 - ++-Rule Phil 1978 only - Mar 22 0:00 1:00 S +++Rule Phil 1978 only - Mar 22 0:00 1:00 - ++ Rule Phil 1978 only - Sep 21 0:00 0 - ++ # Zone NAME GMTOFF RULES FORMAT [UNTIL] ++ Zone Asia/Manila -15:56:00 - LMT 1844 Dec 31 ++@@ -3120,9 +3127,9 @@ ++ # and is the basis for the information below. ++ # ++ # The 1906 transition was effective July 1 and standardized Indochina to ++-# Phù Liễn Observatory, legally 104 deg. 17'17" east of Paris. +++# Phù Liễn Observatory, legally 104° 17' 17" east of Paris. ++ # It's unclear whether this meant legal Paris Mean Time (00:09:21) or ++-# the Paris Meridian (2 deg. 20'14.03" E); the former yields 07:06:30.1333... +++# the Paris Meridian (2° 20' 14.03" E); the former yields 07:06:30.1333... ++ # and the latter 07:06:29.333... so either way it rounds to 07:06:30, ++ # which is used below even though the modern-day Phù Liễn Observatory ++ # is closer to 07:06:31. Abbreviate Phù Liễn Mean Time as PLMT. ++diff --git openjdk/jdk/make/sun/javazic/tzdata/australasia openjdk/jdk/make/sun/javazic/tzdata/australasia ++--- openjdk/jdk/make/sun/javazic/tzdata/australasia +++++ openjdk/jdk/make/sun/javazic/tzdata/australasia ++@@ -219,20 +219,20 @@ ++ ++ # Lord Howe Island ++ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ++-Rule LH 1981 1984 - Oct lastSun 2:00 1:00 D ++-Rule LH 1982 1985 - Mar Sun>=1 2:00 0 S ++-Rule LH 1985 only - Oct lastSun 2:00 0:30 D ++-Rule LH 1986 1989 - Mar Sun>=15 2:00 0 S ++-Rule LH 1986 only - Oct 19 2:00 0:30 D ++-Rule LH 1987 1999 - Oct lastSun 2:00 0:30 D ++-Rule LH 1990 1995 - Mar Sun>=1 2:00 0 S ++-Rule LH 1996 2005 - Mar lastSun 2:00 0 S ++-Rule LH 2000 only - Aug lastSun 2:00 0:30 D ++-Rule LH 2001 2007 - Oct lastSun 2:00 0:30 D ++-Rule LH 2006 only - Apr Sun>=1 2:00 0 S ++-Rule LH 2007 only - Mar lastSun 2:00 0 S ++-Rule LH 2008 max - Apr Sun>=1 2:00 0 S ++-Rule LH 2008 max - Oct Sun>=1 2:00 0:30 D +++Rule LH 1981 1984 - Oct lastSun 2:00 1:00 - +++Rule LH 1982 1985 - Mar Sun>=1 2:00 0 - +++Rule LH 1985 only - Oct lastSun 2:00 0:30 - +++Rule LH 1986 1989 - Mar Sun>=15 2:00 0 - +++Rule LH 1986 only - Oct 19 2:00 0:30 - +++Rule LH 1987 1999 - Oct lastSun 2:00 0:30 - +++Rule LH 1990 1995 - Mar Sun>=1 2:00 0 - +++Rule LH 1996 2005 - Mar lastSun 2:00 0 - +++Rule LH 2000 only - Aug lastSun 2:00 0:30 - +++Rule LH 2001 2007 - Oct lastSun 2:00 0:30 - +++Rule LH 2006 only - Apr Sun>=1 2:00 0 - +++Rule LH 2007 only - Mar lastSun 2:00 0 - +++Rule LH 2008 max - Apr Sun>=1 2:00 0 - +++Rule LH 2008 max - Oct Sun>=1 2:00 0:30 - ++ Zone Australia/Lord_Howe 10:36:20 - LMT 1895 Feb ++ 10:00 - AEST 1981 Mar ++ 10:30 LH +1030/+1130 1985 Jul ++@@ -390,15 +390,15 @@ ++ # practice than guessing no DST. ++ ++ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ++-Rule Fiji 1998 1999 - Nov Sun>=1 2:00 1:00 S +++Rule Fiji 1998 1999 - Nov Sun>=1 2:00 1:00 - ++ Rule Fiji 1999 2000 - Feb lastSun 3:00 0 - ++-Rule Fiji 2009 only - Nov 29 2:00 1:00 S +++Rule Fiji 2009 only - Nov 29 2:00 1:00 - ++ Rule Fiji 2010 only - Mar lastSun 3:00 0 - ++-Rule Fiji 2010 2013 - Oct Sun>=21 2:00 1:00 S +++Rule Fiji 2010 2013 - Oct Sun>=21 2:00 1:00 - ++ Rule Fiji 2011 only - Mar Sun>=1 3:00 0 - ++ Rule Fiji 2012 2013 - Jan Sun>=18 3:00 0 - ++ Rule Fiji 2014 only - Jan Sun>=18 2:00 0 - ++-Rule Fiji 2014 max - Nov Sun>=1 2:00 1:00 S +++Rule Fiji 2014 max - Nov Sun>=1 2:00 1:00 - ++ Rule Fiji 2015 max - Jan Sun>=14 3:00 0 - ++ # Zone NAME GMTOFF RULES FORMAT [UNTIL] ++ Zone Pacific/Fiji 11:55:44 - LMT 1915 Oct 26 # Suva ++@@ -429,11 +429,11 @@ ++ 12:00 - +12 ++ Zone Pacific/Enderbury -11:24:20 - LMT 1901 ++ -12:00 - -12 1979 Oct ++- -11:00 - -11 1995 +++ -11:00 - -11 1994 Dec 31 ++ 13:00 - +13 ++ Zone Pacific/Kiritimati -10:29:20 - LMT 1901 ++ -10:40 - -1040 1979 Oct ++- -10:00 - -10 1995 +++ -10:00 - -10 1994 Dec 31 ++ 14:00 - +14 ++ ++ # N Mariana Is ++@@ -470,9 +470,9 @@ ++ ++ # New Caledonia ++ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ++-Rule NC 1977 1978 - Dec Sun>=1 0:00 1:00 S +++Rule NC 1977 1978 - Dec Sun>=1 0:00 1:00 - ++ Rule NC 1978 1979 - Feb 27 0:00 0 - ++-Rule NC 1996 only - Dec 1 2:00s 1:00 S +++Rule NC 1996 only - Dec 1 2:00s 1:00 - ++ # Shanks & Pottenger say the following was at 2:00; go with IATA. ++ Rule NC 1997 only - Mar 2 2:00s 0 - ++ # Zone NAME GMTOFF RULES FORMAT [UNTIL] ++@@ -492,27 +492,28 @@ ++ Rule NZ 1934 1940 - Apr lastSun 2:00 0 M ++ Rule NZ 1934 1940 - Sep lastSun 2:00 0:30 S ++ Rule NZ 1946 only - Jan 1 0:00 0 S ++-# Since 1957 Chatham has been 45 minutes ahead of NZ, but there's no ++-# convenient single notation for the date and time of this transition ++-# so we must duplicate the Rule lines. +++# Since 1957 Chatham has been 45 minutes ahead of NZ, but until 2018a +++# there was no documented single notation for the date and time of this +++# transition. Duplicate the Rule lines for now, to give the 2018a change +++# time to percolate out. ++ Rule NZ 1974 only - Nov Sun>=1 2:00s 1:00 D ++-Rule Chatham 1974 only - Nov Sun>=1 2:45s 1:00 D +++Rule Chatham 1974 only - Nov Sun>=1 2:45s 1:00 - ++ Rule NZ 1975 only - Feb lastSun 2:00s 0 S ++-Rule Chatham 1975 only - Feb lastSun 2:45s 0 S +++Rule Chatham 1975 only - Feb lastSun 2:45s 0 - ++ Rule NZ 1975 1988 - Oct lastSun 2:00s 1:00 D ++-Rule Chatham 1975 1988 - Oct lastSun 2:45s 1:00 D +++Rule Chatham 1975 1988 - Oct lastSun 2:45s 1:00 - ++ Rule NZ 1976 1989 - Mar Sun>=1 2:00s 0 S ++-Rule Chatham 1976 1989 - Mar Sun>=1 2:45s 0 S +++Rule Chatham 1976 1989 - Mar Sun>=1 2:45s 0 - ++ Rule NZ 1989 only - Oct Sun>=8 2:00s 1:00 D ++-Rule Chatham 1989 only - Oct Sun>=8 2:45s 1:00 D +++Rule Chatham 1989 only - Oct Sun>=8 2:45s 1:00 - ++ Rule NZ 1990 2006 - Oct Sun>=1 2:00s 1:00 D ++-Rule Chatham 1990 2006 - Oct Sun>=1 2:45s 1:00 D +++Rule Chatham 1990 2006 - Oct Sun>=1 2:45s 1:00 - ++ Rule NZ 1990 2007 - Mar Sun>=15 2:00s 0 S ++-Rule Chatham 1990 2007 - Mar Sun>=15 2:45s 0 S +++Rule Chatham 1990 2007 - Mar Sun>=15 2:45s 0 - ++ Rule NZ 2007 max - Sep lastSun 2:00s 1:00 D ++-Rule Chatham 2007 max - Sep lastSun 2:45s 1:00 D +++Rule Chatham 2007 max - Sep lastSun 2:45s 1:00 - ++ Rule NZ 2008 max - Apr Sun>=1 2:00s 0 S ++-Rule Chatham 2008 max - Apr Sun>=1 2:45s 0 S +++Rule Chatham 2008 max - Apr Sun>=1 2:45s 0 - ++ # Zone NAME GMTOFF RULES FORMAT [UNTIL] ++ Zone Pacific/Auckland 11:39:04 - LMT 1868 Nov 2 ++ 11:30 NZ NZ%sT 1946 Jan 1 ++@@ -536,9 +537,9 @@ ++ # Cook Is ++ # From Shanks & Pottenger: ++ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ++-Rule Cook 1978 only - Nov 12 0:00 0:30 HS +++Rule Cook 1978 only - Nov 12 0:00 0:30 - ++ Rule Cook 1979 1991 - Mar Sun>=1 0:00 0 - ++-Rule Cook 1979 1990 - Oct lastSun 0:00 0:30 HS +++Rule Cook 1979 1990 - Oct lastSun 0:00 0:30 - ++ # Zone NAME GMTOFF RULES FORMAT [UNTIL] ++ Zone Pacific/Rarotonga -10:39:04 - LMT 1901 # Avarua ++ -10:30 - -1030 1978 Nov 12 ++@@ -679,11 +680,11 @@ ++ # Assume the pattern instituted in 2012 will continue indefinitely. ++ ++ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ++-Rule WS 2010 only - Sep lastSun 0:00 1 D ++-Rule WS 2011 only - Apr Sat>=1 4:00 0 S ++-Rule WS 2011 only - Sep lastSat 3:00 1 D ++-Rule WS 2012 max - Apr Sun>=1 4:00 0 S ++-Rule WS 2012 max - Sep lastSun 3:00 1 D +++Rule WS 2010 only - Sep lastSun 0:00 1 - +++Rule WS 2011 only - Apr Sat>=1 4:00 0 - +++Rule WS 2011 only - Sep lastSat 3:00 1 - +++Rule WS 2012 max - Apr Sun>=1 4:00 0 - +++Rule WS 2012 max - Sep lastSun 3:00 1 - ++ # Zone NAME GMTOFF RULES FORMAT [UNTIL] ++ Zone Pacific/Apia 12:33:04 - LMT 1892 Jul 5 ++ -11:26:56 - LMT 1911 ++@@ -723,11 +724,11 @@ ++ ++ # Tonga ++ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ++-Rule Tonga 1999 only - Oct 7 2:00s 1:00 S +++Rule Tonga 1999 only - Oct 7 2:00s 1:00 - ++ Rule Tonga 2000 only - Mar 19 2:00s 0 - ++-Rule Tonga 2000 2001 - Nov Sun>=1 2:00 1:00 S +++Rule Tonga 2000 2001 - Nov Sun>=1 2:00 1:00 - ++ Rule Tonga 2001 2002 - Jan lastSun 2:00 0 - ++-Rule Tonga 2016 only - Nov Sun>=1 2:00 1:00 S +++Rule Tonga 2016 only - Nov Sun>=1 2:00 1:00 - ++ Rule Tonga 2017 only - Jan Sun>=15 3:00 0 - ++ # Zone NAME GMTOFF RULES FORMAT [UNTIL] ++ Zone Pacific/Tongatapu 12:19:20 - LMT 1901 ++@@ -804,12 +805,12 @@ ++ ++ # Vanuatu ++ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ++-Rule Vanuatu 1983 only - Sep 25 0:00 1:00 S +++Rule Vanuatu 1983 only - Sep 25 0:00 1:00 - ++ Rule Vanuatu 1984 1991 - Mar Sun>=23 0:00 0 - ++-Rule Vanuatu 1984 only - Oct 23 0:00 1:00 S ++-Rule Vanuatu 1985 1991 - Sep Sun>=23 0:00 1:00 S +++Rule Vanuatu 1984 only - Oct 23 0:00 1:00 - +++Rule Vanuatu 1985 1991 - Sep Sun>=23 0:00 1:00 - ++ Rule Vanuatu 1992 1993 - Jan Sun>=23 0:00 0 - ++-Rule Vanuatu 1992 only - Oct Sun>=23 0:00 1:00 S +++Rule Vanuatu 1992 only - Oct Sun>=23 0:00 1:00 - ++ # Zone NAME GMTOFF RULES FORMAT [UNTIL] ++ Zone Pacific/Efate 11:13:16 - LMT 1912 Jan 13 # Vila ++ 11:00 Vanuatu +11/+12 ++@@ -1108,6 +1109,13 @@ ++ # South Australian time even though it's located in Western Australia. ++ ++ # Queensland +++ +++# From Paul Eggert (2018-02-26): +++# I lack access to the following source for Queensland DST: +++# Pearce C. History of daylight saving time in Queensland. +++# Queensland Hist J. 2017 Aug;23(6):389-403 +++# https://search.informit.com.au/documentSummary;dn=994682348436426;res=IELHSS +++ ++ # From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06): ++ # # The state of QUEENSLAND.. [ Courtesy Qld. Dept Premier Econ&Trade Devel ] ++ # # [ Dec 1990 ] ++@@ -1534,6 +1542,12 @@ ++ # "declared it the same day [throughout] the country as of Jan. 1, 1995" ++ # as part of the competition to be first into the 21st century. ++ +++# From Kerry Shetline (2018-02-03): +++# December 31 was the day that was skipped, so that the transition +++# would be from Friday December 30, 1994 to Sunday January 1, 1995. +++# From Paul Eggert (2018-02-04): +++# One source for this is page 202 of: Bartky IR. One Time Fits All: +++# The Campaigns for Global Uniformity (2007). ++ ++ # Kwajalein ++ ++@@ -1626,7 +1640,7 @@ ++ ++ # From Howie Phelps (1999-11-10), who talked to a Pitcairner via shortwave: ++ # Betty Christian told me yesterday that their local time is the same as ++-# Pacific Standard Time. They used to be 1/2 hour different from us here in +++# Pacific Standard Time. They used to be ½ hour different from us here in ++ # Sacramento but it was changed a couple of years ago. ++ ++ ++@@ -1665,7 +1679,7 @@ ++ # 12 hours and 20 minutes ahead of GMT. When New Zealand adjusted its ++ # standard time in 1940s, Tonga had the choice of subtracting from its ++ # local time to come on the same standard time as New Zealand or of ++-# advancing its time to maintain the differential of 13 degrees +++# advancing its time to maintain the differential of 13° ++ # (approximately 50 minutes ahead of New Zealand time). ++ # ++ # Because His Majesty King Tāufaʻāhau Tupou IV, then Crown Prince ++diff --git openjdk/jdk/make/sun/javazic/tzdata/europe openjdk/jdk/make/sun/javazic/tzdata/europe ++--- openjdk/jdk/make/sun/javazic/tzdata/europe +++++ openjdk/jdk/make/sun/javazic/tzdata/europe ++@@ -140,8 +140,8 @@ ++ # along the towpath within a few yards of it.' ++ # ++ # I have a one inch to one mile map of London and my estimate of the stone's ++-# position is 51 degrees 28' 30" N, 0 degrees 18' 45" W. The longitude should ++-# be within about +-2". The Ordnance Survey grid reference is TQ172761. +++# position is 51° 28' 30" N, 0° 18' 45" W. The longitude should +++# be within about ±2". The Ordnance Survey grid reference is TQ172761. ++ # ++ # [This yields GMTOFF = -0:01:15 for London LMT in the 18th century.] ++ ++@@ -181,7 +181,7 @@ ++ # after-hours daylight in which to pursue his research. ++ # In 1895 he presented a paper to the Wellington Philosophical Society ++ # that proposed a two-hour daylight-saving shift. See: ++-# Hudson GV. On seasonal time-adjustment in countries south of lat. 30 deg. +++# Hudson GV. On seasonal time-adjustment in countries south of lat. 30°. ++ # Transactions and Proceedings of the New Zealand Institute. 1895;28:734 ++ # http://rsnz.natlib.govt.nz/volume/rsnz_28/rsnz_28_00_006110.html ++ # Although some interest was expressed in New Zealand, his proposal ++@@ -531,11 +531,25 @@ ++ Link Europe/London Europe/Guernsey ++ Link Europe/London Europe/Isle_of_Man ++ ++-# From Paul Eggert (2018-01-19): +++# From Paul Eggert (2018-02-15): +++# In January 2018 we discovered that the negative SAVE values in the +++# Eire rules cause problems with tests for ICU: +++# https://mm.icann.org/pipermail/tz/2018-January/025825.html +++# and with tests for OpenJDK: +++# https://mm.icann.org/pipermail/tz/2018-January/025822.html +++# +++# To work around this problem, the build procedure can translate the +++# following data into two forms, one with negative SAVE values and the +++# other form with a traditional approximation for Irish time stamps +++# after 1971-10-31 02:00 UTC; although this approximation has tm_isdst +++# flags that are reversed, its UTC offsets are correct and this often +++# suffices. This source file currently uses only nonnegative SAVE +++# values, but this is intended to change and downstream code should +++# not rely on it. +++# ++ # The following is like GB-Eire and EU, except with standard time in ++-# summer and negative daylight saving time in winter. ++-# Although currently commented out, this will need to become uncommented ++-# once the ICU/OpenJDK workaround is removed; see below. +++# summer and negative daylight saving time in winter. It is for when +++# negative SAVE values are used. ++ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ++ #Rule Eire 1971 only - Oct 31 2:00u -1:00 GMT ++ #Rule Eire 1972 1980 - Mar Sun>=16 2:00u 0 IST ++@@ -556,24 +570,12 @@ ++ 0:00 1:00 IST 1947 Nov 2 2:00s ++ 0:00 - GMT 1948 Apr 18 2:00s ++ 0:00 GB-Eire GMT/IST 1968 Oct 27 ++-# From Paul Eggert (2018-01-18): ++-# The next line should look like this: +++# The next line is for when negative SAVE values are used. ++ # 1:00 Eire IST/GMT ++-# However, in January 2018 we discovered that the Eire rules cause ++-# problems with tests for ICU: ++-# https://mm.icann.org/pipermail/tz/2018-January/025825.html ++-# and with tests for OpenJDK: ++-# https://mm.icann.org/pipermail/tz/2018-January/025822.html ++-# To work around this problem, use a traditional approximation for ++-# time stamps after 1971-10-31 02:00 UTC, to give ICU and OpenJDK ++-# developers breathing room to fix bugs. This approximation has ++-# correct UTC offsets, but results in tm_isdst flags are the reverse ++-# of what they should be. This workaround is temporary and should be ++-# removed reasonably soon. +++# These three lines are for when SAVE values are always nonnegative. ++ 1:00 - IST 1971 Oct 31 2:00u ++ 0:00 GB-Eire GMT/IST 1996 ++ 0:00 EU GMT/IST ++-# End of workaround for ICU and OpenJDK bugs. ++ ++ ++ ############################################################################### ++@@ -1557,21 +1559,21 @@ ++ # http://www.almanak.hi.is/klukkan.html ++ # ++ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ++-Rule Iceland 1917 1919 - Feb 19 23:00 1:00 S +++Rule Iceland 1917 1919 - Feb 19 23:00 1:00 - ++ Rule Iceland 1917 only - Oct 21 1:00 0 - ++ Rule Iceland 1918 1919 - Nov 16 1:00 0 - ++-Rule Iceland 1921 only - Mar 19 23:00 1:00 S +++Rule Iceland 1921 only - Mar 19 23:00 1:00 - ++ Rule Iceland 1921 only - Jun 23 1:00 0 - ++-Rule Iceland 1939 only - Apr 29 23:00 1:00 S +++Rule Iceland 1939 only - Apr 29 23:00 1:00 - ++ Rule Iceland 1939 only - Oct 29 2:00 0 - ++-Rule Iceland 1940 only - Feb 25 2:00 1:00 S +++Rule Iceland 1940 only - Feb 25 2:00 1:00 - ++ Rule Iceland 1940 1941 - Nov Sun>=2 1:00s 0 - ++-Rule Iceland 1941 1942 - Mar Sun>=2 1:00s 1:00 S +++Rule Iceland 1941 1942 - Mar Sun>=2 1:00s 1:00 - ++ # 1943-1946 - first Sunday in March until first Sunday in winter ++-Rule Iceland 1943 1946 - Mar Sun>=1 1:00s 1:00 S +++Rule Iceland 1943 1946 - Mar Sun>=1 1:00s 1:00 - ++ Rule Iceland 1942 1948 - Oct Sun>=22 1:00s 0 - ++ # 1947-1967 - first Sunday in April until first Sunday in winter ++-Rule Iceland 1947 1967 - Apr Sun>=1 1:00s 1:00 S +++Rule Iceland 1947 1967 - Apr Sun>=1 1:00s 1:00 - ++ # 1949 and 1967 Oct transitions delayed by 1 week ++ Rule Iceland 1949 only - Oct 30 1:00s 0 - ++ Rule Iceland 1950 1966 - Oct Sun>=22 1:00s 0 - ++@@ -2161,15 +2163,19 @@ ++ 1:00 EU CE%sT ++ ++ # Portugal ++-# +++ ++ # From Paul Eggert (2014-08-11), after a heads-up from Stephen Colebourne: ++ # According to a Portuguese decree (1911-05-26) ++ # https://dre.pt/application/dir/pdf1sdip/1911/05/12500/23132313.pdf ++ # Lisbon was at -0:36:44.68, but switched to GMT on 1912-01-01 at 00:00. ++-# Round the old offset to -0:36:45. This agrees with Willett but disagrees ++-# with Shanks, who says the transition occurred on 1911-05-24 at 00:00 for ++-# Europe/Lisbon, Atlantic/Azores, and Atlantic/Madeira. +++# Round the old offset to -0:36:45. This agrees with Willett.... ++ # +++# From Michael Deckers (2018-02-15): +++# article 5 [of the 1911 decree; Deckers's translation] ...: +++# These dispositions shall enter into force at the instant at which, +++# according to the 2nd article, the civil day January 1, 1912 begins, +++# all clocks therefore having to be advanced or set back correspondingly ... +++ ++ # From Rui Pedro Salgueiro (1992-11-12): ++ # Portugal has recently (September, 27) changed timezone ++ # (from WET to MET or CET) to harmonize with EEC. ++@@ -2252,7 +2258,7 @@ ++ # ++ # Zone NAME GMTOFF RULES FORMAT [UNTIL] ++ Zone Europe/Lisbon -0:36:45 - LMT 1884 ++- -0:36:45 - LMT 1912 Jan 1 # Lisbon Mean Time +++ -0:36:45 - LMT 1912 Jan 1 0:00u # Lisbon MT ++ 0:00 Port WE%sT 1966 Apr 3 2:00 ++ 1:00 - CET 1976 Sep 26 1:00 ++ 0:00 Port WE%sT 1983 Sep 25 1:00s ++@@ -2261,7 +2267,7 @@ ++ 0:00 EU WE%sT ++ # This Zone can be simplified once we assume zic %z. ++ Zone Atlantic/Azores -1:42:40 - LMT 1884 # Ponta Delgada ++- -1:54:32 - HMT 1912 Jan 1 # Horta Mean Time +++ -1:54:32 - HMT 1912 Jan 1 2:00u # Horta MT ++ -2:00 Port -02/-01 1942 Apr 25 22:00s ++ -2:00 Port +00 1942 Aug 15 22:00s ++ -2:00 Port -02/-01 1943 Apr 17 22:00s ++@@ -2277,7 +2283,7 @@ ++ -1:00 EU -01/+00 ++ # This Zone can be simplified once we assume zic %z. ++ Zone Atlantic/Madeira -1:07:36 - LMT 1884 # Funchal ++- -1:07:36 - FMT 1912 Jan 1 # Funchal Mean Time +++ -1:07:36 - FMT 1912 Jan 1 1:00u # Funchal MT ++ -1:00 Port -01/+00 1942 Apr 25 22:00s ++ -1:00 Port +01 1942 Aug 15 22:00s ++ -1:00 Port -01/+00 1943 Apr 17 22:00s ++@@ -2615,13 +2621,13 @@ ++ ++ # From Vladimir Karpinsky (2014-07-08): ++ # LMT in Moscow (before Jul 3, 1916) is 2:30:17, that was defined by Moscow ++-# Observatory (coordinates: 55 deg. 45'29.70", 37 deg. 34'05.30").... +++# Observatory (coordinates: 55° 45' 29.70", 37° 34' 05.30").... ++ # LMT in Moscow since Jul 3, 1916 is 2:31:01 as a result of new standard. ++ # (The info is from the book by Byalokoz ... p. 18.) ++ # The time in St. Petersburg as capital of Russia was defined by ++ # Pulkov observatory, near St. Petersburg. In 1916 LMT Moscow ++ # was synchronized with LMT St. Petersburg (+30 minutes), (Pulkov observatory ++-# coordinates: 59 deg. 46'18.70", 30 deg. 19'40.70") so 30 deg. 19'40.70" > +++# coordinates: 59° 46' 18.70", 30° 19' 40.70") so 30° 19' 40.70" > ++ # 2h01m18.7s = 2:01:19. LMT Moscow = LMT St.Petersburg + 30m 2:01:19 + 0:30 = ++ # 2:31:19 ... ++ # ++@@ -3450,7 +3456,7 @@ ++ # three degrees, or twelve minutes of time, to the west of the ++ # meridian of the Observatory of Stockholm". The law is dated 1878-05-31. ++ # ++-# The observatory at that time had the meridian 18 degrees 03' 30" +++# The observatory at that time had the meridian 18° 03' 30" ++ # eastern longitude = 01:12:14 in time. Less 12 minutes gives the ++ # national standard time as 01:00:14 ahead of GMT.... ++ # ++@@ -3554,7 +3560,7 @@ ++ # From Alois Treindl (2013-09-11): ++ # The Federal regulations say ++ # https://www.admin.ch/opc/de/classified-compilation/20071096/index.html ++-# ... the meridian for Bern mean time ... is 7 degrees 26' 22.50". +++# ... the meridian for Bern mean time ... is 7° 26' 22.50". ++ # Expressed in time, it is 0h29m45.5s. ++ ++ # From Pierre-Yves Berger (2013-09-11): ++diff --git openjdk/jdk/make/sun/javazic/tzdata/northamerica openjdk/jdk/make/sun/javazic/tzdata/northamerica ++--- openjdk/jdk/make/sun/javazic/tzdata/northamerica +++++ openjdk/jdk/make/sun/javazic/tzdata/northamerica ++@@ -48,7 +48,7 @@ ++ # in New York City (1869-10). His 1870 proposal was based on Washington, DC, ++ # but in 1872-05 he moved the proposed origin to Greenwich. ++ ++-# From Paul Eggert (2016-09-21): +++# From Paul Eggert (2018-03-20): ++ # Dowd's proposal left many details unresolved, such as where to draw ++ # lines between time zones. The key individual who made time zones ++ # work in the US was William Frederick Allen - railway engineer, ++@@ -59,10 +59,9 @@ ++ # to the General Time Convention on 1883-04-11, saying that his plan ++ # meant "local time would be practically abolished" - a plus for ++ # railway scheduling. By the next convention on 1883-10-11 nearly all ++-# railroads had agreed and it took effect on 1883-11-18 at 12:00. ++-# That Sunday was called the "day of two noons", as the eastern parts ++-# of the new zones observed noon twice. Allen witnessed the ++-# transition in New York City, writing: +++# railroads had agreed and it took effect on 1883-11-18. That Sunday +++# was called the "day of two noons", as some locations observed noon +++# twice. Allen witnessed the transition in New York City, writing: ++ # ++ # I heard the bells of St. Paul's strike on the old time. Four ++ # minutes later, obedient to the electrical signal from the Naval ++@@ -447,8 +446,7 @@ ++ # ...according to the Census Bureau, the largest city is Beulah (although ++ # it's commonly referred to as Beulah-Hazen, with Hazen being the next ++ # largest city in Mercer County). Google Maps places Beulah's city hall ++-# at 47 degrees 15' 51" N, 101 degrees 46' 40" W, which yields an offset ++-# of 6h47'07". +++# at 47° 15' 51" N, 101° 46' 40" W, which yields an offset of 6h47'07". ++ ++ Zone America/North_Dakota/Beulah -6:47:07 - LMT 1883 Nov 18 12:12:53 ++ -7:00 US M%sT 2010 Nov 7 2:00 ++@@ -481,7 +479,7 @@ ++ # California, northern Idaho (Benewah, Bonner, Boundary, Clearwater, ++ # Kootenai, Latah, Lewis, Nez Perce, and Shoshone counties, Idaho county ++ # north of the Salmon River, and the towns of Burgdorf and Warren), ++-# Nevada (except West Wendover), Oregon (except the northern 3/4 of +++# Nevada (except West Wendover), Oregon (except the northern ¾ of ++ # Malheur county), and Washington ++ ++ # From Paul Eggert (2016-08-20): ++@@ -979,6 +977,13 @@ ++ -5:00 - EST 2006 ++ -5:00 US E%sT ++ +++# From Paul Eggert (2018-03-20): +++# The Louisville & Nashville Railroad's 1883-11-18 change occurred at +++# 10:00 old local time; train were supposed to come to a standstill +++# for precisely 18 minutes. See Bartky Fig. 1 (page 50). It is not +++# clear how this matched civil time in Louisville, so for now continue +++# to assume Louisville switched at noon new local time, like New York. +++# ++ # Part of Kentucky left its clocks alone in 1974. ++ # This also includes Clark, Floyd, and Harrison counties in Indiana. ++ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER ++@@ -3287,8 +3292,8 @@ ++ # http://www.jamaicaobserver.com/columns/The-politician-in-all-of-us_17573647 ++ # ++ # Zone NAME GMTOFF RULES FORMAT [UNTIL] ++-Zone America/Jamaica -5:07:11 - LMT 1890 # Kingston ++- -5:07:11 - KMT 1912 Feb # Kingston Mean Time +++Zone America/Jamaica -5:07:10 - LMT 1890 # Kingston +++ -5:07:10 - KMT 1912 Feb # Kingston Mean Time ++ -5:00 - EST 1974 ++ -5:00 US E%sT 1984 ++ -5:00 - EST ++@@ -3438,7 +3443,7 @@ ++ # ++ # Zone NAME GMTOFF RULES FORMAT [UNTIL] ++ Zone America/Grand_Turk -4:44:32 - LMT 1890 ++- -5:07:11 - KMT 1912 Feb # Kingston Mean Time +++ -5:07:10 - KMT 1912 Feb # Kingston Mean Time ++ -5:00 - EST 1979 ++ -5:00 US E%sT 2015 Nov Sun>=1 2:00 ++ -4:00 - AST 2018 Mar 11 3:00 ++diff --git openjdk/jdk/make/sun/javazic/tzdata/southamerica openjdk/jdk/make/sun/javazic/tzdata/southamerica ++--- openjdk/jdk/make/sun/javazic/tzdata/southamerica +++++ openjdk/jdk/make/sun/javazic/tzdata/southamerica ++@@ -70,28 +70,28 @@ ++ # AR was chosen because they are the ISO letters that represent Argentina. ++ ++ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ++-Rule Arg 1930 only - Dec 1 0:00 1:00 S +++Rule Arg 1930 only - Dec 1 0:00 1:00 - ++ Rule Arg 1931 only - Apr 1 0:00 0 - ++-Rule Arg 1931 only - Oct 15 0:00 1:00 S +++Rule Arg 1931 only - Oct 15 0:00 1:00 - ++ Rule Arg 1932 1940 - Mar 1 0:00 0 - ++-Rule Arg 1932 1939 - Nov 1 0:00 1:00 S ++-Rule Arg 1940 only - Jul 1 0:00 1:00 S +++Rule Arg 1932 1939 - Nov 1 0:00 1:00 - +++Rule Arg 1940 only - Jul 1 0:00 1:00 - ++ Rule Arg 1941 only - Jun 15 0:00 0 - ++-Rule Arg 1941 only - Oct 15 0:00 1:00 S +++Rule Arg 1941 only - Oct 15 0:00 1:00 - ++ Rule Arg 1943 only - Aug 1 0:00 0 - ++-Rule Arg 1943 only - Oct 15 0:00 1:00 S +++Rule Arg 1943 only - Oct 15 0:00 1:00 - ++ Rule Arg 1946 only - Mar 1 0:00 0 - ++-Rule Arg 1946 only - Oct 1 0:00 1:00 S +++Rule Arg 1946 only - Oct 1 0:00 1:00 - ++ Rule Arg 1963 only - Oct 1 0:00 0 - ++-Rule Arg 1963 only - Dec 15 0:00 1:00 S +++Rule Arg 1963 only - Dec 15 0:00 1:00 - ++ Rule Arg 1964 1966 - Mar 1 0:00 0 - ++-Rule Arg 1964 1966 - Oct 15 0:00 1:00 S +++Rule Arg 1964 1966 - Oct 15 0:00 1:00 - ++ Rule Arg 1967 only - Apr 2 0:00 0 - ++-Rule Arg 1967 1968 - Oct Sun>=1 0:00 1:00 S +++Rule Arg 1967 1968 - Oct Sun>=1 0:00 1:00 - ++ Rule Arg 1968 1969 - Apr Sun>=1 0:00 0 - ++-Rule Arg 1974 only - Jan 23 0:00 1:00 S +++Rule Arg 1974 only - Jan 23 0:00 1:00 - ++ Rule Arg 1974 only - May 1 0:00 0 - ++-Rule Arg 1988 only - Dec 1 0:00 1:00 S +++Rule Arg 1988 only - Dec 1 0:00 1:00 - ++ # ++ # From Hernan G. Otero (1995-06-26): ++ # These corrections were contributed by InterSoft Argentina S.A., ++@@ -99,7 +99,7 @@ ++ # Talleres de Hidrografía Naval Argentina ++ # (Argentine Naval Hydrography Institute) ++ Rule Arg 1989 1993 - Mar Sun>=1 0:00 0 - ++-Rule Arg 1989 1992 - Oct Sun>=15 0:00 1:00 S +++Rule Arg 1989 1992 - Oct Sun>=15 0:00 1:00 - ++ # ++ # From Hernan G. Otero (1995-06-26): ++ # From this moment on, the law that mandated the daylight saving ++@@ -110,7 +110,7 @@ ++ # On October 3, 1999, 0:00 local, Argentina implemented daylight savings time, ++ # which did not result in the switch of a time zone, as they stayed 9 hours ++ # from the International Date Line. ++-Rule Arg 1999 only - Oct Sun>=1 0:00 1:00 S +++Rule Arg 1999 only - Oct Sun>=1 0:00 1:00 - ++ # From Paul Eggert (2007-12-28): ++ # DST was set to expire on March 5, not March 3, but since it was converted ++ # to standard time on March 3 it's more convenient for us to pretend that ++@@ -213,9 +213,9 @@ ++ # la modificación del huso horario, ya que 2009 nos encuentra con ++ # crecimiento en la producción y distribución energética." ++ ++-Rule Arg 2007 only - Dec 30 0:00 1:00 S +++Rule Arg 2007 only - Dec 30 0:00 1:00 - ++ Rule Arg 2008 2009 - Mar Sun>=15 0:00 0 - ++-Rule Arg 2008 only - Oct Sun>=15 0:00 1:00 S +++Rule Arg 2008 only - Oct Sun>=15 0:00 1:00 - ++ ++ # From Mariano Absatz (2004-05-21): ++ # Today it was officially published that the Province of Mendoza is changing ++@@ -225,12 +225,14 @@ ++ # It's Law No. 7,210. This change is due to a public power emergency, so for ++ # now we'll assume it's for this year only. ++ # ++-# From Paul Eggert (2014-08-09): +++# From Paul Eggert (2018-01-31): ++ # Hora de verano para la República Argentina ++ # http://buenasiembra.com.ar/esoterismo/astrologia/hora-de-verano-de-la-republica-argentina-27.html ++ # says that standard time in Argentina from 1894-10-31 ++ # to 1920-05-01 was -4:16:48.25. Go with this more-precise value ++-# over Shanks & Pottenger. +++# over Shanks & Pottenger. It is upward compatible with Milne, who +++# says Córdoba time was -4:16:48.2. +++ ++ # ++ # From Mariano Absatz (2004-06-05): ++ # These media articles from a major newspaper mostly cover the current state: ++@@ -404,9 +406,9 @@ ++ # rules...San Luis is still using "Western ARgentina Time" and it got ++ # stuck on Summer daylight savings time even though the summer is over. ++ ++-# From Paul Eggert (2013-09-05): +++# From Paul Eggert (2018-01-23): ++ # Perhaps San Luis operates on the legal fiction that it is at -04 ++-# with perpetual summer time, but ordinary usage typically seems to +++# with perpetual daylight saving time, but ordinary usage typically seems to ++ # just say it's at -03; see, for example, ++ # https://es.wikipedia.org/wiki/Hora_oficial_argentina ++ # We've documented similar situations as being plain changes to ++@@ -415,9 +417,6 @@ ++ # plus is that this silences a zic complaint that there's no POSIX TZ ++ # setting for time stamps past 2038. ++ ++-# From Paul Eggert (2013-02-21): ++-# Milne says Córdoba time was -4:16:48.2. Round to the nearest second. ++- ++ # Zone NAME GMTOFF RULES FORMAT [UNTIL] ++ # ++ # Buenos Aires (BA), Capital Federal (CF), ++@@ -552,7 +551,7 @@ ++ # San Luis (SL) ++ ++ Rule SanLuis 2008 2009 - Mar Sun>=8 0:00 0 - ++-Rule SanLuis 2007 2008 - Oct Sun>=8 0:00 1:00 S +++Rule SanLuis 2007 2008 - Oct Sun>=8 0:00 1:00 - ++ ++ Zone America/Argentina/San_Luis -4:25:24 - LMT 1894 Oct 31 ++ -4:16:48 - CMT 1920 May ++@@ -794,14 +793,14 @@ ++ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ++ # Decree 20,466 (1931-10-01) ++ # Decree 21,896 (1932-01-10) ++-Rule Brazil 1931 only - Oct 3 11:00 1:00 S +++Rule Brazil 1931 only - Oct 3 11:00 1:00 - ++ Rule Brazil 1932 1933 - Apr 1 0:00 0 - ++-Rule Brazil 1932 only - Oct 3 0:00 1:00 S +++Rule Brazil 1932 only - Oct 3 0:00 1:00 - ++ # Decree 23,195 (1933-10-10) ++ # revoked DST. ++ # Decree 27,496 (1949-11-24) ++ # Decree 27,998 (1950-04-13) ++-Rule Brazil 1949 1952 - Dec 1 0:00 1:00 S +++Rule Brazil 1949 1952 - Dec 1 0:00 1:00 - ++ Rule Brazil 1950 only - Apr 16 1:00 0 - ++ Rule Brazil 1951 1952 - Apr 1 0:00 0 - ++ # Decree 32,308 (1953-02-24) ++@@ -813,51 +812,51 @@ ++ # in SP, RJ, GB, MG, ES, due to the prolongation of the drought. ++ # Decree 53,071 (1963-12-03) ++ # extended the above decree to all of the national territory on 12-09. ++-Rule Brazil 1963 only - Dec 9 0:00 1:00 S +++Rule Brazil 1963 only - Dec 9 0:00 1:00 - ++ # Decree 53,604 (1964-02-25) ++ # extended summer time by one day to 1964-03-01 00:00 (start of school). ++ Rule Brazil 1964 only - Mar 1 0:00 0 - ++ # Decree 55,639 (1965-01-27) ++-Rule Brazil 1965 only - Jan 31 0:00 1:00 S +++Rule Brazil 1965 only - Jan 31 0:00 1:00 - ++ Rule Brazil 1965 only - Mar 31 0:00 0 - ++ # Decree 57,303 (1965-11-22) ++-Rule Brazil 1965 only - Dec 1 0:00 1:00 S +++Rule Brazil 1965 only - Dec 1 0:00 1:00 - ++ # Decree 57,843 (1966-02-18) ++ Rule Brazil 1966 1968 - Mar 1 0:00 0 - ++-Rule Brazil 1966 1967 - Nov 1 0:00 1:00 S +++Rule Brazil 1966 1967 - Nov 1 0:00 1:00 - ++ # Decree 63,429 (1968-10-15) ++ # revoked DST. ++ # Decree 91,698 (1985-09-27) ++-Rule Brazil 1985 only - Nov 2 0:00 1:00 S +++Rule Brazil 1985 only - Nov 2 0:00 1:00 - ++ # Decree 92,310 (1986-01-21) ++ # Decree 92,463 (1986-03-13) ++ Rule Brazil 1986 only - Mar 15 0:00 0 - ++ # Decree 93,316 (1986-10-01) ++-Rule Brazil 1986 only - Oct 25 0:00 1:00 S +++Rule Brazil 1986 only - Oct 25 0:00 1:00 - ++ Rule Brazil 1987 only - Feb 14 0:00 0 - ++ # Decree 94,922 (1987-09-22) ++-Rule Brazil 1987 only - Oct 25 0:00 1:00 S +++Rule Brazil 1987 only - Oct 25 0:00 1:00 - ++ Rule Brazil 1988 only - Feb 7 0:00 0 - ++ # Decree 96,676 (1988-09-12) ++ # except for the states of AC, AM, PA, RR, RO, and AP (then a territory) ++-Rule Brazil 1988 only - Oct 16 0:00 1:00 S +++Rule Brazil 1988 only - Oct 16 0:00 1:00 - ++ Rule Brazil 1989 only - Jan 29 0:00 0 - ++ # Decree 98,077 (1989-08-21) ++ # with the same exceptions ++-Rule Brazil 1989 only - Oct 15 0:00 1:00 S +++Rule Brazil 1989 only - Oct 15 0:00 1:00 - ++ Rule Brazil 1990 only - Feb 11 0:00 0 - ++ # Decree 99,530 (1990-09-17) ++ # adopted by RS, SC, PR, SP, RJ, ES, MG, GO, MS, DF. ++ # Decree 99,629 (1990-10-19) adds BA, MT. ++-Rule Brazil 1990 only - Oct 21 0:00 1:00 S +++Rule Brazil 1990 only - Oct 21 0:00 1:00 - ++ Rule Brazil 1991 only - Feb 17 0:00 0 - ++ # Unnumbered decree (1991-09-25) ++ # adopted by RS, SC, PR, SP, RJ, ES, MG, BA, GO, MT, MS, DF. ++-Rule Brazil 1991 only - Oct 20 0:00 1:00 S +++Rule Brazil 1991 only - Oct 20 0:00 1:00 - ++ Rule Brazil 1992 only - Feb 9 0:00 0 - ++ # Unnumbered decree (1992-10-16) ++ # adopted by same states. ++-Rule Brazil 1992 only - Oct 25 0:00 1:00 S +++Rule Brazil 1992 only - Oct 25 0:00 1:00 - ++ Rule Brazil 1993 only - Jan 31 0:00 0 - ++ # Decree 942 (1993-09-28) ++ # adopted by same states, plus AM. ++@@ -867,12 +866,12 @@ ++ # adopted by same states, plus MT and TO. ++ # Decree 1,674 (1995-10-13) ++ # adds AL, SE. ++-Rule Brazil 1993 1995 - Oct Sun>=11 0:00 1:00 S +++Rule Brazil 1993 1995 - Oct Sun>=11 0:00 1:00 - ++ Rule Brazil 1994 1995 - Feb Sun>=15 0:00 0 - ++ Rule Brazil 1996 only - Feb 11 0:00 0 - ++ # Decree 2,000 (1996-09-04) ++ # adopted by same states, minus AL, SE. ++-Rule Brazil 1996 only - Oct 6 0:00 1:00 S +++Rule Brazil 1996 only - Oct 6 0:00 1:00 - ++ Rule Brazil 1997 only - Feb 16 0:00 0 - ++ # From Daniel C. Sobral (1998-02-12): ++ # In 1997, the DS began on October 6. The stated reason was that ++@@ -882,19 +881,19 @@ ++ # to help dealing with the shortages of electric power. ++ # ++ # Decree 2,317 (1997-09-04), adopted by same states. ++-Rule Brazil 1997 only - Oct 6 0:00 1:00 S +++Rule Brazil 1997 only - Oct 6 0:00 1:00 - ++ # Decree 2,495 ++ # (1998-02-10) ++ Rule Brazil 1998 only - Mar 1 0:00 0 - ++ # Decree 2,780 (1998-09-11) ++ # adopted by the same states as before. ++-Rule Brazil 1998 only - Oct 11 0:00 1:00 S +++Rule Brazil 1998 only - Oct 11 0:00 1:00 - ++ Rule Brazil 1999 only - Feb 21 0:00 0 - ++ # Decree 3,150 ++ # (1999-08-23) adopted by same states. ++ # Decree 3,188 (1999-09-30) ++ # adds SE, AL, PB, PE, RN, CE, PI, MA and RR. ++-Rule Brazil 1999 only - Oct 3 0:00 1:00 S +++Rule Brazil 1999 only - Oct 3 0:00 1:00 - ++ Rule Brazil 2000 only - Feb 27 0:00 0 - ++ # Decree 3,592 (2000-09-06) ++ # adopted by the same states as before. ++@@ -904,34 +903,34 @@ ++ # repeals DST in SE, AL, PB, RN, CE, PI and MA, effective 2000-10-22 00:00. ++ # Decree 3,916 ++ # (2001-09-13) reestablishes DST in AL, CE, MA, PB, PE, PI, RN, SE. ++-Rule Brazil 2000 2001 - Oct Sun>=8 0:00 1:00 S +++Rule Brazil 2000 2001 - Oct Sun>=8 0:00 1:00 - ++ Rule Brazil 2001 2006 - Feb Sun>=15 0:00 0 - ++ # Decree 4,399 (2002-10-01) repeals DST in AL, CE, MA, PB, PE, PI, RN, SE. ++ # 4,399 ++-Rule Brazil 2002 only - Nov 3 0:00 1:00 S +++Rule Brazil 2002 only - Nov 3 0:00 1:00 - ++ # Decree 4,844 (2003-09-24; corrected 2003-09-26) repeals DST in BA, MT, TO. ++ # 4,844 ++-Rule Brazil 2003 only - Oct 19 0:00 1:00 S +++Rule Brazil 2003 only - Oct 19 0:00 1:00 - ++ # Decree 5,223 (2004-10-01) reestablishes DST in MT. ++ # 5,223 ++-Rule Brazil 2004 only - Nov 2 0:00 1:00 S +++Rule Brazil 2004 only - Nov 2 0:00 1:00 - ++ # Decree 5,539 (2005-09-19), ++ # adopted by the same states as before. ++-Rule Brazil 2005 only - Oct 16 0:00 1:00 S +++Rule Brazil 2005 only - Oct 16 0:00 1:00 - ++ # Decree 5,920 (2006-10-03), ++ # adopted by the same states as before. ++-Rule Brazil 2006 only - Nov 5 0:00 1:00 S +++Rule Brazil 2006 only - Nov 5 0:00 1:00 - ++ Rule Brazil 2007 only - Feb 25 0:00 0 - ++ # Decree 6,212 (2007-09-26), ++ # adopted by the same states as before. ++-Rule Brazil 2007 only - Oct Sun>=8 0:00 1:00 S +++Rule Brazil 2007 only - Oct Sun>=8 0:00 1:00 - ++ # From Frederico A. C. Neves (2008-09-10): ++ # According to this decree ++ # http://www.planalto.gov.br/ccivil_03/_Ato2007-2010/2008/Decreto/D6558.htm ++ # [t]he DST period in Brazil now on will be from the 3rd Oct Sunday to the ++ # 3rd Feb Sunday. There is an exception on the return date when this is ++ # the Carnival Sunday then the return date will be the next Sunday... ++-Rule Brazil 2008 2017 - Oct Sun>=15 0:00 1:00 S +++Rule Brazil 2008 2017 - Oct Sun>=15 0:00 1:00 - ++ Rule Brazil 2008 2011 - Feb Sun>=15 0:00 0 - ++ # Decree 7,584 (2011-10-13) ++ # added Bahia. ++@@ -949,7 +948,7 @@ ++ # ... https://www.timeanddate.com/news/time/brazil-delays-dst-2018.html ++ # From Steffen Thorsen (2017-12-20): ++ # http://www.planalto.gov.br/ccivil_03/_ato2015-2018/2017/decreto/D9242.htm ++-Rule Brazil 2018 max - Nov Sun>=1 0:00 1:00 S +++Rule Brazil 2018 max - Nov Sun>=1 0:00 1:00 - ++ Rule Brazil 2023 only - Feb Sun>=22 0:00 0 - ++ Rule Brazil 2024 2025 - Feb Sun>=15 0:00 0 - ++ Rule Brazil 2026 only - Feb Sun>=22 0:00 0 - ++@@ -1256,28 +1255,28 @@ ++ # For now, assume that they will not revert. ++ ++ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ++-Rule Chile 1927 1931 - Sep 1 0:00 1:00 S +++Rule Chile 1927 1931 - Sep 1 0:00 1:00 - ++ Rule Chile 1928 1932 - Apr 1 0:00 0 - ++-Rule Chile 1968 only - Nov 3 4:00u 1:00 S +++Rule Chile 1968 only - Nov 3 4:00u 1:00 - ++ Rule Chile 1969 only - Mar 30 3:00u 0 - ++-Rule Chile 1969 only - Nov 23 4:00u 1:00 S +++Rule Chile 1969 only - Nov 23 4:00u 1:00 - ++ Rule Chile 1970 only - Mar 29 3:00u 0 - ++ Rule Chile 1971 only - Mar 14 3:00u 0 - ++-Rule Chile 1970 1972 - Oct Sun>=9 4:00u 1:00 S +++Rule Chile 1970 1972 - Oct Sun>=9 4:00u 1:00 - ++ Rule Chile 1972 1986 - Mar Sun>=9 3:00u 0 - ++-Rule Chile 1973 only - Sep 30 4:00u 1:00 S ++-Rule Chile 1974 1987 - Oct Sun>=9 4:00u 1:00 S +++Rule Chile 1973 only - Sep 30 4:00u 1:00 - +++Rule Chile 1974 1987 - Oct Sun>=9 4:00u 1:00 - ++ Rule Chile 1987 only - Apr 12 3:00u 0 - ++ Rule Chile 1988 1990 - Mar Sun>=9 3:00u 0 - ++-Rule Chile 1988 1989 - Oct Sun>=9 4:00u 1:00 S ++-Rule Chile 1990 only - Sep 16 4:00u 1:00 S +++Rule Chile 1988 1989 - Oct Sun>=9 4:00u 1:00 - +++Rule Chile 1990 only - Sep 16 4:00u 1:00 - ++ Rule Chile 1991 1996 - Mar Sun>=9 3:00u 0 - ++-Rule Chile 1991 1997 - Oct Sun>=9 4:00u 1:00 S +++Rule Chile 1991 1997 - Oct Sun>=9 4:00u 1:00 - ++ Rule Chile 1997 only - Mar 30 3:00u 0 - ++ Rule Chile 1998 only - Mar Sun>=9 3:00u 0 - ++-Rule Chile 1998 only - Sep 27 4:00u 1:00 S +++Rule Chile 1998 only - Sep 27 4:00u 1:00 - ++ Rule Chile 1999 only - Apr 4 3:00u 0 - ++-Rule Chile 1999 2010 - Oct Sun>=9 4:00u 1:00 S +++Rule Chile 1999 2010 - Oct Sun>=9 4:00u 1:00 - ++ Rule Chile 2000 2007 - Mar Sun>=9 3:00u 0 - ++ # N.B.: the end of March 29 in Chile is March 30 in Universal time, ++ # which is used below in specifying the transition. ++@@ -1285,11 +1284,11 @@ ++ Rule Chile 2009 only - Mar Sun>=9 3:00u 0 - ++ Rule Chile 2010 only - Apr Sun>=1 3:00u 0 - ++ Rule Chile 2011 only - May Sun>=2 3:00u 0 - ++-Rule Chile 2011 only - Aug Sun>=16 4:00u 1:00 S +++Rule Chile 2011 only - Aug Sun>=16 4:00u 1:00 - ++ Rule Chile 2012 2014 - Apr Sun>=23 3:00u 0 - ++-Rule Chile 2012 2014 - Sep Sun>=2 4:00u 1:00 S +++Rule Chile 2012 2014 - Sep Sun>=2 4:00u 1:00 - ++ Rule Chile 2016 max - May Sun>=9 3:00u 0 - ++-Rule Chile 2016 max - Aug Sun>=9 4:00u 1:00 S +++Rule Chile 2016 max - Aug Sun>=9 4:00u 1:00 - ++ # IATA SSIM anomalies: (1992-02) says 1992-03-14; ++ # (1996-09) says 1998-03-08. Ignore these. ++ # Zone NAME GMTOFF RULES FORMAT [UNTIL] ++@@ -1354,7 +1353,7 @@ ++ # "A variation of fifteen minutes in the public clocks of Bogota is not rare." ++ ++ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ++-Rule CO 1992 only - May 3 0:00 1:00 S +++Rule CO 1992 only - May 3 0:00 1:00 - ++ Rule CO 1993 only - Apr 4 0:00 0 - ++ # Zone NAME GMTOFF RULES FORMAT [UNTIL] ++ Zone America/Bogota -4:56:16 - LMT 1884 Mar 13 ++@@ -1414,7 +1413,7 @@ ++ # repeated. For now, assume transitions were at 00:00 local time country-wide. ++ # ++ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ++-Rule Ecuador 1992 only - Nov 28 0:00 1:00 S +++Rule Ecuador 1992 only - Nov 28 0:00 1:00 - ++ Rule Ecuador 1993 only - Feb 5 0:00 0 - ++ # ++ # Zone NAME GMTOFF RULES FORMAT [UNTIL] ++@@ -1504,22 +1503,22 @@ ++ # the maintainers of the database to inform them we're adopting ++ # the same policy this year and suggest recommendations for future years. ++ # ++-# For now we will assume permanent summer time for the Falklands +++# For now we will assume permanent -03 for the Falklands ++ # until advised differently (to apply for 2012 and beyond, after the 2011 ++ # experiment was apparently successful.) ++ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ++-Rule Falk 1937 1938 - Sep lastSun 0:00 1:00 S +++Rule Falk 1937 1938 - Sep lastSun 0:00 1:00 - ++ Rule Falk 1938 1942 - Mar Sun>=19 0:00 0 - ++-Rule Falk 1939 only - Oct 1 0:00 1:00 S ++-Rule Falk 1940 1942 - Sep lastSun 0:00 1:00 S +++Rule Falk 1939 only - Oct 1 0:00 1:00 - +++Rule Falk 1940 1942 - Sep lastSun 0:00 1:00 - ++ Rule Falk 1943 only - Jan 1 0:00 0 - ++-Rule Falk 1983 only - Sep lastSun 0:00 1:00 S +++Rule Falk 1983 only - Sep lastSun 0:00 1:00 - ++ Rule Falk 1984 1985 - Apr lastSun 0:00 0 - ++-Rule Falk 1984 only - Sep 16 0:00 1:00 S ++-Rule Falk 1985 2000 - Sep Sun>=9 0:00 1:00 S +++Rule Falk 1984 only - Sep 16 0:00 1:00 - +++Rule Falk 1985 2000 - Sep Sun>=9 0:00 1:00 - ++ Rule Falk 1986 2000 - Apr Sun>=16 0:00 0 - ++ Rule Falk 2001 2010 - Apr Sun>=15 2:00 0 - ++-Rule Falk 2001 2010 - Sep Sun>=1 2:00 1:00 S +++Rule Falk 2001 2010 - Sep Sun>=1 2:00 1:00 - ++ # Zone NAME GMTOFF RULES FORMAT [UNTIL] ++ Zone Atlantic/Stanley -3:51:24 - LMT 1890 ++ -3:51:24 - SMT 1912 Mar 12 # Stanley Mean Time ++@@ -1554,16 +1553,16 @@ ++ # adjust their clocks at 0 hour of the given dates. ++ # ++ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ++-Rule Para 1975 1988 - Oct 1 0:00 1:00 S +++Rule Para 1975 1988 - Oct 1 0:00 1:00 - ++ Rule Para 1975 1978 - Mar 1 0:00 0 - ++ Rule Para 1979 1991 - Apr 1 0:00 0 - ++-Rule Para 1989 only - Oct 22 0:00 1:00 S ++-Rule Para 1990 only - Oct 1 0:00 1:00 S ++-Rule Para 1991 only - Oct 6 0:00 1:00 S +++Rule Para 1989 only - Oct 22 0:00 1:00 - +++Rule Para 1990 only - Oct 1 0:00 1:00 - +++Rule Para 1991 only - Oct 6 0:00 1:00 - ++ Rule Para 1992 only - Mar 1 0:00 0 - ++-Rule Para 1992 only - Oct 5 0:00 1:00 S +++Rule Para 1992 only - Oct 5 0:00 1:00 - ++ Rule Para 1993 only - Mar 31 0:00 0 - ++-Rule Para 1993 1995 - Oct 1 0:00 1:00 S +++Rule Para 1993 1995 - Oct 1 0:00 1:00 - ++ Rule Para 1994 1995 - Feb lastSun 0:00 0 - ++ Rule Para 1996 only - Mar 1 0:00 0 - ++ # IATA SSIM (2000-02) says 1999-10-10; ignore this for now. ++@@ -1581,7 +1580,7 @@ ++ # year, the time will change on the first Sunday of October; likewise, the ++ # clock will be set back on the first Sunday of March. ++ # ++-Rule Para 1996 2001 - Oct Sun>=1 0:00 1:00 S +++Rule Para 1996 2001 - Oct Sun>=1 0:00 1:00 - ++ # IATA SSIM (1997-09) says Mar 1; go with Shanks & Pottenger. ++ Rule Para 1997 only - Feb lastSun 0:00 0 - ++ # Shanks & Pottenger say 1999-02-28; IATA SSIM (1999-02) says 1999-02-27, but ++@@ -1592,7 +1591,7 @@ ++ # dst method to be from the first Sunday in September to the first Sunday in ++ # April. ++ Rule Para 2002 2004 - Apr Sun>=1 0:00 0 - ++-Rule Para 2002 2003 - Sep Sun>=1 0:00 1:00 S +++Rule Para 2002 2003 - Sep Sun>=1 0:00 1:00 - ++ # ++ # From Jesper Nørgaard Welen (2005-01-02): ++ # There are several sources that claim that Paraguay made ++@@ -1601,7 +1600,7 @@ ++ # Decree 1,867 (2004-03-05) ++ # From Carlos Raúl Perasso via Jesper Nørgaard Welen (2006-10-13) ++ # http://www.presidencia.gov.py/decretos/D1867.pdf ++-Rule Para 2004 2009 - Oct Sun>=15 0:00 1:00 S +++Rule Para 2004 2009 - Oct Sun>=15 0:00 1:00 - ++ Rule Para 2005 2009 - Mar Sun>=8 0:00 0 - ++ # From Carlos Raúl Perasso (2010-02-18): ++ # By decree number 3958 issued yesterday ++@@ -1614,7 +1613,7 @@ ++ # and that on the first Sunday of the month of October, it is to be set ++ # forward 60 minutes, in all the territory of the Paraguayan Republic. ++ # ... ++-Rule Para 2010 max - Oct Sun>=1 0:00 1:00 S +++Rule Para 2010 max - Oct Sun>=1 0:00 1:00 - ++ Rule Para 2010 2012 - Apr Sun>=8 0:00 0 - ++ # ++ # From Steffen Thorsen (2013-03-07): ++@@ -1647,16 +1646,16 @@ ++ # Shanks & Pottenger don't have this transition. Assume 1986 was like 1987. ++ ++ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ++-Rule Peru 1938 only - Jan 1 0:00 1:00 S +++Rule Peru 1938 only - Jan 1 0:00 1:00 - ++ Rule Peru 1938 only - Apr 1 0:00 0 - ++-Rule Peru 1938 1939 - Sep lastSun 0:00 1:00 S +++Rule Peru 1938 1939 - Sep lastSun 0:00 1:00 - ++ Rule Peru 1939 1940 - Mar Sun>=24 0:00 0 - ++-Rule Peru 1986 1987 - Jan 1 0:00 1:00 S +++Rule Peru 1986 1987 - Jan 1 0:00 1:00 - ++ Rule Peru 1986 1987 - Apr 1 0:00 0 - ++-Rule Peru 1990 only - Jan 1 0:00 1:00 S +++Rule Peru 1990 only - Jan 1 0:00 1:00 - ++ Rule Peru 1990 only - Apr 1 0:00 0 - ++ # IATA is ambiguous for 1993/1995; go with Shanks & Pottenger. ++-Rule Peru 1994 only - Jan 1 0:00 1:00 S +++Rule Peru 1994 only - Jan 1 0:00 1:00 - ++ Rule Peru 1994 only - Apr 1 0:00 0 - ++ # Zone NAME GMTOFF RULES FORMAT [UNTIL] ++ Zone America/Lima -5:08:12 - LMT 1890 ++@@ -1702,72 +1701,201 @@ ++ # Uruguay ++ # From Paul Eggert (1993-11-18): ++ # Uruguay wins the prize for the strangest peacetime manipulation of the rules. ++-# From Shanks & Pottenger: +++# +++# From Tim Parenti (2018-02-20), per Jeremie Bonjour (2018-01-31) and Michael +++# Deckers (2018-02-20): +++# ... At least they kept good records... +++# +++# http://www.armada.mil.uy/ContenidosPDFs/sohma/web/almanaque/almanaque_2018.pdf#page=36 +++# Page 36 of Almanaque 2018, published by the Oceanography, Hydrography, and +++# Meteorology Service of the Uruguayan Navy, seems to give many transitions +++# with greater clarity than we've had before. It directly references many laws +++# and decrees which are, in turn, referenced below. They can be viewed in the +++# public archives of the Diario Oficial (in Spanish) at +++# http://www.impo.com.uy/diariooficial/ +++# +++# Ley No. 3920 of 1908-06-10 placed the determination of legal time under the +++# auspices of the National Institute for the Prediction of Time. It is unclear +++# exactly what offset was used during this period, though Ley No. 7200 of +++# 1920-04-23 used the Observatory of the National Meteorological Institute in +++# Montevideo (34° 54' 33" S, 56° 12' 45" W) as its reference meridian, +++# retarding legal time by 15 minutes 9 seconds from 1920-04-30 24:00, +++# resulting in UT-04. Assume the corresponding LMT of UT-03:44:51 (given on +++# page 725 of the Proceedings of the Second Pan-American Scientific Congress, +++# 1915-1916) was in use, and merely became official from 1908-06-10. +++# https://www.impo.com.uy/diariooficial/1908/06/18/12 +++# https://www.impo.com.uy/diariooficial/1920/04/27/9 +++# +++# Ley No. 7594 of 1923-06-28 specified legal time as Observatory time advanced +++# by 44 minutes 51 seconds (UT-03) "from 30 September to 31 March", and by 14 +++# minutes 51 seconds (UT-03:30) "the rest of the year"; a message from the +++# National Council of Administration the same day, published directly below the +++# law in the Diario Oficial, specified the first transition to be 1923-09-30 +++# 24:00. This effectively established standard time at UT-03:30 with 30 +++# minutes DST. Assume transitions at 24:00 on the specified days until Ley No. +++# 7919 of 1926-03-05 ended this arrangement, repealing all "laws and other +++# provisions which oppose" it, resulting in year-round UT-03:30; a Resolución +++# of 1926-03-11 puts the final transition at 1926-03-31 24:00, the same as it +++# would have been under the previous law. +++# https://www.impo.com.uy/diariooficial/1923/07/02/2 +++# https://www.impo.com.uy/diariooficial/1926/03/10/2 +++# https://www.impo.com.uy/diariooficial/1926/03/18/2 +++# ++ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ++-# Whitman gives 1923 Oct 1; go with Shanks & Pottenger. ++-Rule Uruguay 1923 only - Oct 2 0:00 0:30 HS +++Rule Uruguay 1923 1925 - Oct 1 0:00 0:30 - ++ Rule Uruguay 1924 1926 - Apr 1 0:00 0 - ++-Rule Uruguay 1924 1925 - Oct 1 0:00 0:30 HS ++-Rule Uruguay 1933 1935 - Oct lastSun 0:00 0:30 HS ++-# Shanks & Pottenger give 1935 Apr 1 0:00 & 1936 Mar 30 0:00; go with Whitman. ++-Rule Uruguay 1934 1936 - Mar Sat>=25 23:30s 0 - ++-Rule Uruguay 1936 only - Nov 1 0:00 0:30 HS ++-Rule Uruguay 1937 1941 - Mar lastSun 0:00 0 - ++-# Whitman gives 1937 Oct 3; go with Shanks & Pottenger. ++-Rule Uruguay 1937 1940 - Oct lastSun 0:00 0:30 HS ++-# Whitman gives 1941 Oct 24 - 1942 Mar 27, 1942 Dec 14 - 1943 Apr 13, ++-# and 1943 Apr 13 "to present time"; go with Shanks & Pottenger. ++-Rule Uruguay 1941 only - Aug 1 0:00 0:30 HS ++-Rule Uruguay 1942 only - Jan 1 0:00 0 - ++-Rule Uruguay 1942 only - Dec 14 0:00 1:00 S +++# From Tim Parenti (2018-02-15): +++# http://www.impo.com.uy/diariooficial/1933/10/27/6 +++# +++# It appears Ley No. 9122 of 1933 was never published as such in the Diario +++# Oficial, but instead appeared as Document 26 in the Diario on Friday +++# 1933-10-27 as a decree made Monday 1933-10-23 and filed under the Ministry of +++# National Defense. It reinstituted a DST of 30 minutes (to UT-03) "from the +++# last Sunday of October...until the last Saturday of March." In accordance +++# with this provision, the first transition was explicitly specified in Article +++# 2 of the decree as Saturday 1933-10-28 at 24:00; that is, Sunday 1933-10-29 +++# at 00:00. Assume transitions at 00:00 Sunday throughout. +++# +++# Departing from the matter-of-fact nature of previous timekeeping laws, the +++# 1933 decree "consider[s] the advantages of...the advance of legal time": +++# +++# "Whereas: The measure adopted by almost all nations at the time of the last +++# World War still persists in North America and Europe, precisely because of +++# the economic, hygienic, and social advantages derived from such an +++# emergency measure... +++# +++# Whereas: The advance of the legal time during the summer seasons, by +++# displacing social activity near sunrise, favors the citizen populations +++# and especially the society that creates and works..." +++# +++# It further specified that "necessary measures" be taken to ensure that +++# "public spectacles finish, in general, before [01:00]." +++Rule Uruguay 1933 1938 - Oct lastSun 0:00 0:30 - +++Rule Uruguay 1934 1941 - Mar lastSat 24:00 0 - +++# From Tim Parenti (2018-02-15): +++# Most of the Rules below, and their contemporaneous Zone lines, have been +++# updated simply to match the Almanaque 2018. Although the document does not +++# list exact transition times, midnight transitions were already present in our +++# data here for all transitions through 2004-09, and this is both consistent +++# with prior transitions and verified in several decrees marked below between +++# 1939-09 and 2004-09, wherein the relevant text was typically of the form: +++# +++# "From 0 hours on [date], the legal time of the entire Republic will be... +++# +++# In accordance with [the preceding], on [previous date] at 24 hours, all +++# clocks throughout the Republic will be [advanced/retarded] by..." +++# +++# It is possible that there is greater specificity to be found for the Rules +++# below, but it is buried in no fewer than 40 different decrees individually +++# referenced by the Almanaque for the period from 1939-09 to 2014-09. +++# Four-fifths of these were promulgated less than two weeks before taking +++# effect; more than half within a week and none more than 5 weeks. Only the +++# handful with comments below have been checked with any thoroughness. +++Rule Uruguay 1939 only - Oct 1 0:00 0:30 - +++Rule Uruguay 1940 only - Oct 27 0:00 0:30 - +++# From Tim Parenti (2018-02-15): +++# Decreto 1145 of the Ministry of National Defense, dated 1941-07-26, specified +++# UT-03 from Friday 1941-08-01 00:00, citing an "urgent...need to save fuel". +++# http://www.impo.com.uy/diariooficial/1941/08/04/1 +++Rule Uruguay 1941 only - Aug 1 0:00 0:30 - +++# From Tim Parenti (2018-02-15): +++# Decreto 1866 of the Ministry of National Defense, dated 1942-12-09, specified +++# further advancement (to UT-02:30) from Sunday 1942-12-13 24:00. Since clocks +++# never went back to UT-03:30 thereafter, this is modeled as advancing standard +++# time by 30 minutes to UT-03, while retaining 30 minutes of DST. +++# http://www.impo.com.uy/diariooficial/1942/12/16/3 +++Rule Uruguay 1942 only - Dec 14 0:00 0:30 - ++ Rule Uruguay 1943 only - Mar 14 0:00 0 - ++-Rule Uruguay 1959 only - May 24 0:00 1:00 S +++Rule Uruguay 1959 only - May 24 0:00 0:30 - ++ Rule Uruguay 1959 only - Nov 15 0:00 0 - ++-Rule Uruguay 1960 only - Jan 17 0:00 1:00 S +++Rule Uruguay 1960 only - Jan 17 0:00 1:00 - ++ Rule Uruguay 1960 only - Mar 6 0:00 0 - ++-Rule Uruguay 1965 1967 - Apr Sun>=1 0:00 1:00 S +++Rule Uruguay 1965 only - Apr 4 0:00 1:00 - ++ Rule Uruguay 1965 only - Sep 26 0:00 0 - ++-Rule Uruguay 1966 1967 - Oct 31 0:00 0 - ++-Rule Uruguay 1968 1970 - May 27 0:00 0:30 HS ++-Rule Uruguay 1968 1970 - Dec 2 0:00 0 - ++-Rule Uruguay 1972 only - Apr 24 0:00 1:00 S ++-Rule Uruguay 1972 only - Aug 15 0:00 0 - ++-Rule Uruguay 1974 only - Mar 10 0:00 0:30 HS ++-Rule Uruguay 1974 only - Dec 22 0:00 1:00 S ++-Rule Uruguay 1976 only - Oct 1 0:00 0 - ++-Rule Uruguay 1977 only - Dec 4 0:00 1:00 S ++-Rule Uruguay 1978 only - Apr 1 0:00 0 - ++-Rule Uruguay 1979 only - Oct 1 0:00 1:00 S ++-Rule Uruguay 1980 only - May 1 0:00 0 - ++-Rule Uruguay 1987 only - Dec 14 0:00 1:00 S ++-Rule Uruguay 1988 only - Mar 14 0:00 0 - ++-Rule Uruguay 1988 only - Dec 11 0:00 1:00 S ++-Rule Uruguay 1989 only - Mar 12 0:00 0 - ++-Rule Uruguay 1989 only - Oct 29 0:00 1:00 S ++-# Shanks & Pottenger say no DST was observed in 1990/1 and 1991/2, ++-# and that 1992/3's DST was from 10-25 to 03-01. Go with IATA. ++-Rule Uruguay 1990 1992 - Mar Sun>=1 0:00 0 - ++-Rule Uruguay 1990 1991 - Oct Sun>=21 0:00 1:00 S ++-Rule Uruguay 1992 only - Oct 18 0:00 1:00 S +++# From Tim Parenti (2018-02-15): +++# Decreto 321/968 of 1968-05-25, citing emergency drought measures decreed the +++# day before, brought clocks forward 30 minutes from Monday 1968-05-27 00:00. +++# http://www.impo.com.uy/diariooficial/1968/05/30/5 +++Rule Uruguay 1968 only - May 27 0:00 0:30 - +++Rule Uruguay 1968 only - Dec 1 0:00 0 - +++# From Tim Parenti (2018-02-15): +++# Decreto 188/970 of 1970-04-23 instituted restrictions on electricity +++# consumption "as a consequence of the current rainfall regime in the country". +++# Articles 13 and 14 advanced clocks by an hour from Saturday 1970-04-25 00:00. +++# http://www.impo.com.uy/diariooficial/1970/04/29/4 +++Rule Uruguay 1970 only - Apr 25 0:00 1:00 - +++Rule Uruguay 1970 only - Jun 14 0:00 0 - +++Rule Uruguay 1972 only - Apr 23 0:00 1:00 - +++Rule Uruguay 1972 only - Jul 16 0:00 0 - +++# From Tim Parenti (2018-02-15): +++# Decreto 29/974 of 1974-01-11, citing "the international rise in the price of +++# oil", advanced clocks by 90 minutes (to UT-01:30). Decreto 163/974 of +++# 1974-03-04 returned 60 of those minutes (to UT-02:30), and the remaining 30 +++# minutes followed in Decreto 679/974 of 1974-08-29. +++# http://www.impo.com.uy/diariooficial/1974/01/22/11 +++# http://www.impo.com.uy/diariooficial/1974/03/14/3 +++# http://www.impo.com.uy/diariooficial/1974/09/04/6 +++Rule Uruguay 1974 only - Jan 13 0:00 1:30 - +++Rule Uruguay 1974 only - Mar 10 0:00 0:30 - +++Rule Uruguay 1974 only - Sep 1 0:00 0 - +++Rule Uruguay 1974 only - Dec 22 0:00 1:00 - +++Rule Uruguay 1975 only - Mar 30 0:00 0 - +++Rule Uruguay 1976 only - Dec 19 0:00 1:00 - +++Rule Uruguay 1977 only - Mar 6 0:00 0 - +++Rule Uruguay 1977 only - Dec 4 0:00 1:00 - +++Rule Uruguay 1978 1979 - Mar Sun>=1 0:00 0 - +++Rule Uruguay 1978 only - Dec 17 0:00 1:00 - +++Rule Uruguay 1979 only - Apr 29 0:00 1:00 - +++Rule Uruguay 1980 only - Mar 16 0:00 0 - +++# From Tim Parenti (2018-02-15): +++# Decreto 725/987 of 1987-12-04 cited "better use of national tourist +++# attractions" to advance clocks one hour from Monday 1987-12-14 00:00. +++# http://www.impo.com.uy/diariooficial/1988/01/25/1 +++Rule Uruguay 1987 only - Dec 14 0:00 1:00 - +++Rule Uruguay 1988 only - Feb 28 0:00 0 - +++Rule Uruguay 1988 only - Dec 11 0:00 1:00 - +++Rule Uruguay 1989 only - Mar 5 0:00 0 - +++Rule Uruguay 1989 only - Oct 29 0:00 1:00 - +++Rule Uruguay 1990 only - Feb 25 0:00 0 - +++# From Tim Parenti (2018-02-15), per Paul Eggert (1999-11-04): +++# IATA agrees as below for 1990-10 through 1993-02. Per Almanaque 2018, the +++# 1992/1993 season appears to be the first in over half a century where DST +++# both began and ended pursuant to the same decree. +++Rule Uruguay 1990 1991 - Oct Sun>=21 0:00 1:00 - +++Rule Uruguay 1991 1992 - Mar Sun>=1 0:00 0 - +++Rule Uruguay 1992 only - Oct 18 0:00 1:00 - ++ Rule Uruguay 1993 only - Feb 28 0:00 0 - ++ # From Eduardo Cota (2004-09-20): ++ # The Uruguayan government has decreed a change in the local time.... ++-# http://www.presidencia.gub.uy/decretos/2004091502.htm ++-Rule Uruguay 2004 only - Sep 19 0:00 1:00 S +++# From Tim Parenti (2018-02-15): +++# Decreto 328/004 of 2004-09-15. +++# http://www.impo.com.uy/diariooficial/2004/09/23/documentos.pdf#page=1 +++Rule Uruguay 2004 only - Sep 19 0:00 1:00 - ++ # From Steffen Thorsen (2005-03-11): ++ # Uruguay's DST was scheduled to end on Sunday, 2005-03-13, but in order to ++ # save energy ... it was postponed two weeks.... ++-# http://www.presidencia.gub.uy/_Web/noticias/2005/03/2005031005.htm +++# From Tim Parenti (2018-02-15): +++# This 2005 postponement is not in Almanaque 2018. Go with the contemporaneous +++# reporting, which is confirmed by Decreto 107/005 of 2005-03-10 amending +++# Decreto 328/004: +++# http://www.impo.com.uy/diariooficial/2005/03/15/documentos.pdf#page=1 +++# The original decree specified a transition of 2005-03-12 24:00, but the new +++# one specified 2005-03-27 02:00. ++ Rule Uruguay 2005 only - Mar 27 2:00 0 - ++ # From Eduardo Cota (2005-09-27): ++-# http://www.presidencia.gub.uy/_Web/decretos/2005/09/CM%20119_09%2009%202005_00001.PDF ++-# This means that from 2005-10-09 at 02:00 local time, until 2006-03-12 at ++-# 02:00 local time, official time in Uruguay will be at GMT -2. ++-Rule Uruguay 2005 only - Oct 9 2:00 1:00 S ++-Rule Uruguay 2006 only - Mar 12 2:00 0 - ++-# From Jesper Nørgaard Welen (2006-09-06): ++-# http://www.presidencia.gub.uy/_web/decretos/2006/09/CM%20210_08%2006%202006_00001.PDF ++-# +++# ...from 2005-10-09 at 02:00 local time, until 2006-03-12 at 02:00 local time, +++# official time in Uruguay will be at GMT -2. +++# From Tim Parenti (2018-02-15): +++# Decreto 318/005 of 2005-09-19. +++# http://www.impo.com.uy/diariooficial/2005/09/23/documentos.pdf#page=1 +++Rule Uruguay 2005 only - Oct 9 2:00 1:00 - +++Rule Uruguay 2006 2015 - Mar Sun>=8 2:00 0 - +++# From Tim Parenti (2018-02-15), per Jesper Nørgaard Welen (2006-09-06): +++# Decreto 311/006 of 2006-09-04 established regular DST from the first Sunday +++# of October at 02:00 through the second Sunday of March at 02:00. Almanaque +++# 2018 appears to have a few typoed dates through this period; ignore them. +++# http://www.impo.com.uy/diariooficial/2006/09/08/documentos.pdf#page=1 +++Rule Uruguay 2006 2014 - Oct Sun>=1 2:00 1:00 - ++ # From Steffen Thorsen (2015-06-30): ++ # ... it looks like they will not be using DST the coming summer: ++ # http://www.elobservador.com.uy/gobierno-resolvio-que-no-habra-cambio-horario-verano-n656787 ++@@ -1777,17 +1905,19 @@ ++ # instead of out to dinner. ++ # From Pablo Camargo (2015-07-13): ++ # http://archivo.presidencia.gub.uy/sci/decretos/2015/06/cons_min_201.pdf ++-# [dated 2015-06-29; repeals Decree 311/006 dated 2006-09-04] ++-Rule Uruguay 2006 2014 - Oct Sun>=1 2:00 1:00 S ++-Rule Uruguay 2007 2015 - Mar Sun>=8 2:00 0 - +++# From Tim Parenti (2018-02-15): +++# Decreto 178/015 of 2015-06-29; repeals Decreto 311/006. ++ ++ # This Zone can be simplified once we assume zic %z. ++-Zone America/Montevideo -3:44:44 - LMT 1898 Jun 28 ++- -3:44:44 - MMT 1920 May 1 # Montevideo MT +++Zone America/Montevideo -3:44:51 - LMT 1908 Jun 10 +++ -3:44:51 - MMT 1920 May 1 # Montevideo MT +++ -4:00 - -04 1923 Oct 1 ++ -3:30 Uruguay -0330/-03 1942 Dec 14 +++ -3:00 Uruguay -03/-0230 1960 ++ -3:00 Uruguay -03/-02 1968 ++- -3:00 Uruguay -03/-0230 1971 +++ -3:00 Uruguay -03/-0230 1970 ++ -3:00 Uruguay -03/-02 1974 +++ -3:00 Uruguay -03/-0130 1974 Mar 10 ++ -3:00 Uruguay -03/-0230 1974 Dec 22 ++ -3:00 Uruguay -03/-02 ++ ++diff --git openjdk/jdk/make/sun/javazic/tzdata/zone.tab openjdk/jdk/make/sun/javazic/tzdata/zone.tab ++--- openjdk/jdk/make/sun/javazic/tzdata/zone.tab +++++ openjdk/jdk/make/sun/javazic/tzdata/zone.tab ++@@ -452,7 +452,7 @@ ++ US +643004-1652423 America/Nome Alaska (west) ++ US +515248-1763929 America/Adak Aleutian Islands ++ US +211825-1575130 Pacific/Honolulu Hawaii ++-UY -3453-05611 America/Montevideo +++UY -345433-0561245 America/Montevideo ++ UZ +3940+06648 Asia/Samarkand Uzbekistan (west) ++ UZ +4120+06918 Asia/Tashkent Uzbekistan (east) ++ VA +415408+0122711 Europe/Vatican ++diff --git openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames.java openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames.java ++--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames.java +++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames.java ++@@ -362,7 +362,7 @@ ++ {"America/Godthab", new String[] {"Western Greenland Time", "WGT", ++ "Western Greenland Summer Time", "WGST"}}, ++ {"America/Goose_Bay", AST}, ++- {"America/Grand_Turk", AST}, +++ {"America/Grand_Turk", EST}, ++ {"America/Grenada", AST}, ++ {"America/Guadeloupe", AST}, ++ {"America/Guatemala", CST}, ++diff --git openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_de.java openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_de.java ++--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_de.java +++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_de.java ++@@ -362,7 +362,7 @@ ++ {"America/Godthab", new String[] {"Westgr\u00f6nl\u00e4ndische Zeit", "WGT", ++ "Westgr\u00f6nl\u00e4ndische Sommerzeit", "WGST"}}, ++ {"America/Goose_Bay", AST}, ++- {"America/Grand_Turk", AST}, +++ {"America/Grand_Turk", EST}, ++ {"America/Grenada", AST}, ++ {"America/Guadeloupe", AST}, ++ {"America/Guatemala", CST}, ++diff --git openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_es.java openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_es.java ++--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_es.java +++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_es.java ++@@ -362,7 +362,7 @@ ++ {"America/Godthab", new String[] {"Hora de Groenlandia Occidental", "WGT", ++ "Hora de verano de Groenlandia Occidental", "WGST"}}, ++ {"America/Goose_Bay", AST}, ++- {"America/Grand_Turk", AST}, +++ {"America/Grand_Turk", EST}, ++ {"America/Grenada", AST}, ++ {"America/Guadeloupe", AST}, ++ {"America/Guatemala", CST}, ++diff --git openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_fr.java openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_fr.java ++--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_fr.java +++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_fr.java ++@@ -362,7 +362,7 @@ ++ {"America/Godthab", new String[] {"Heure du Groenland de l'Ouest", "WGT", ++ "Heure d'\u00e9t\u00e9 du Groenland de l'Ouest", "WGST"}}, ++ {"America/Goose_Bay", AST}, ++- {"America/Grand_Turk", AST}, +++ {"America/Grand_Turk", EST}, ++ {"America/Grenada", AST}, ++ {"America/Guadeloupe", AST}, ++ {"America/Guatemala", CST}, ++diff --git openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_it.java openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_it.java ++--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_it.java +++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_it.java ++@@ -362,7 +362,7 @@ ++ {"America/Godthab", new String[] {"Ora della Groenlandia occidentale", "WGT", ++ "Ora estiva della Groenlandia occidentale", "WGST"}}, ++ {"America/Goose_Bay", AST}, ++- {"America/Grand_Turk", AST}, +++ {"America/Grand_Turk", EST}, ++ {"America/Grenada", AST}, ++ {"America/Guadeloupe", AST}, ++ {"America/Guatemala", CST}, ++diff --git openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ja.java openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ja.java ++--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ja.java +++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ja.java ++@@ -362,7 +362,7 @@ ++ {"America/Godthab", new String[] {"\u897f\u30b0\u30ea\u30fc\u30f3\u30e9\u30f3\u30c9\u6642\u9593", "WGT", ++ "\u897f\u30b0\u30ea\u30fc\u30f3\u30e9\u30f3\u30c9\u590f\u6642\u9593", "WGST"}}, ++ {"America/Goose_Bay", AST}, ++- {"America/Grand_Turk", AST}, +++ {"America/Grand_Turk", EST}, ++ {"America/Grenada", AST}, ++ {"America/Guadeloupe", AST}, ++ {"America/Guatemala", CST}, ++diff --git openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ko.java openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ko.java ++--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ko.java +++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ko.java ++@@ -362,7 +362,7 @@ ++ {"America/Godthab", new String[] {"\uc11c\ubd80 \uadf8\ub9b0\ub79c\ub4dc \uc2dc\uac04", "WGT", ++ "\uc11c\ubd80 \uadf8\ub9b0\ub79c\ub4dc \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WGST"}}, ++ {"America/Goose_Bay", AST}, ++- {"America/Grand_Turk", AST}, +++ {"America/Grand_Turk", EST}, ++ {"America/Grenada", AST}, ++ {"America/Guadeloupe", AST}, ++ {"America/Guatemala", CST}, ++diff --git openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_pt_BR.java openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_pt_BR.java ++--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_pt_BR.java +++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_pt_BR.java ++@@ -362,7 +362,7 @@ ++ {"America/Godthab", new String[] {"Fuso hor\u00e1rio da Groenl\u00e2ndia Ocidental", "WGT", ++ "Fuso hor\u00e1rio de ver\u00e3o da Groenl\u00e2ndia Ocidental", "WGST"}}, ++ {"America/Goose_Bay", AST}, ++- {"America/Grand_Turk", AST}, +++ {"America/Grand_Turk", EST}, ++ {"America/Grenada", AST}, ++ {"America/Guadeloupe", AST}, ++ {"America/Guatemala", CST}, ++diff --git openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_sv.java openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_sv.java ++--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_sv.java +++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_sv.java ++@@ -362,7 +362,7 @@ ++ {"America/Godthab", new String[] {"V\u00e4stra Gr\u00f6nland, normaltid", "WGT", ++ "V\u00e4stra Gr\u00f6nland, sommartid", "WGST"}}, ++ {"America/Goose_Bay", AST}, ++- {"America/Grand_Turk", AST}, +++ {"America/Grand_Turk", EST}, ++ {"America/Grenada", AST}, ++ {"America/Guadeloupe", AST}, ++ {"America/Guatemala", CST}, ++diff --git openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_CN.java openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_CN.java ++--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_CN.java +++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_CN.java ++@@ -362,7 +362,7 @@ ++ {"America/Godthab", new String[] {"\u897f\u683c\u6797\u5170\u5c9b\u65f6\u95f4", "WGT", ++ "\u897f\u683c\u6797\u5170\u5c9b\u590f\u4ee4\u65f6", "WGST"}}, ++ {"America/Goose_Bay", AST}, ++- {"America/Grand_Turk", AST}, +++ {"America/Grand_Turk", EST}, ++ {"America/Grenada", AST}, ++ {"America/Guadeloupe", AST}, ++ {"America/Guatemala", CST}, ++diff --git openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_TW.java openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_TW.java ++--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_TW.java +++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_TW.java ++@@ -362,7 +362,7 @@ ++ {"America/Godthab", new String[] {"\u897f\u683c\u6797\u862d\u5cf6\u6642\u9593", "WGT", ++ "\u897f\u683c\u6797\u862d\u5cf6\u590f\u4ee4\u6642\u9593", "WGST"}}, ++ {"America/Goose_Bay", AST}, ++- {"America/Grand_Turk", AST}, +++ {"America/Grand_Turk", EST}, ++ {"America/Grenada", AST}, ++ {"America/Guadeloupe", AST}, ++ {"America/Guatemala", CST}, ++# HG changeset patch ++# User aivanov ++# Date 1524565414 -3600 ++# Tue Apr 24 11:23:34 2018 +0100 ++# Node ID 300736f6839f3598665a3901d1cda7ffc6b9c08c ++# Parent 9c9ccc335ec353419a8190b3f71f3744d0c6c46a ++8201433: Fix potential crash in BufImg_SetupICM ++Reviewed-by: prr, serb ++ ++diff --git openjdk/jdk/src/share/native/sun/awt/image/BufImgSurfaceData.c openjdk/jdk/src/share/native/sun/awt/image/BufImgSurfaceData.c ++--- openjdk/jdk/src/share/native/sun/awt/image/BufImgSurfaceData.c +++++ openjdk/jdk/src/share/native/sun/awt/image/BufImgSurfaceData.c ++@@ -293,6 +293,10 @@ ++ ((*env)->GetPrimitiveArrayCritical(env, bisdo->lutarray, NULL)); ++ CHECK_NULL_RETURN(pRgb, (ColorData*)NULL); ++ cData->img_clr_tbl = initCubemap(pRgb, bisdo->lutsize, 32); +++ if (cData->img_clr_tbl == NULL) { +++ free(cData); +++ return (ColorData*)NULL; +++ } ++ if (allGray == JNI_TRUE) { ++ initInverseGrayLut(pRgb, bisdo->lutsize, cData); ++ } ++diff --git openjdk/jdk/test/java/awt/image/BufferedImage/ICMColorDataTest/ICMColorDataTest.java openjdk/jdk/test/java/awt/image/BufferedImage/ICMColorDataTest/ICMColorDataTest.java ++new file mode 100644 ++--- /dev/null +++++ openjdk/jdk/test/java/awt/image/BufferedImage/ICMColorDataTest/ICMColorDataTest.java ++@@ -0,0 +1,85 @@ +++/* +++ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. +++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +++ * +++ * This code is free software; you can redistribute it and/or modify it +++ * under the terms of the GNU General Public License version 2 only, as +++ * published by the Free Software Foundation. +++ * +++ * This code is distributed in the hope that it will be useful, but WITHOUT +++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +++ * version 2 for more details (a copy is included in the LICENSE file that +++ * accompanied this code). +++ * +++ * You should have received a copy of the GNU General Public License version +++ * 2 along with this work; if not, write to the Free Software Foundation, +++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +++ * +++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +++ * or visit www.oracle.com if you need additional information or have any +++ * questions. +++ */ +++ +++import java.awt.Graphics; +++import java.awt.image.BufferedImage; +++import java.awt.image.DataBuffer; +++import java.awt.image.DataBufferByte; +++import java.awt.image.IndexColorModel; +++import java.awt.image.MultiPixelPackedSampleModel; +++import java.awt.image.Raster; +++import java.awt.image.SampleModel; +++import java.awt.image.WritableRaster; +++ +++/* +++ * @test +++ * @bug 8201433 +++ * @summary This test may throw OOME or NPE from native code, +++ * it should not crash +++ * @requires os.maxMemory >= 2G +++ * @run main/othervm/timeout=300000 -Xms1000m -Xmx1000m ICMColorDataTest +++ */ +++public class ICMColorDataTest { +++ private static final int WIDTH = 90; +++ private static final int HEIGHT = 90; +++ private static final int BITS_PER_PIXEL = 1; +++ private static final int PIXELS_IN_BYTE = 8; +++ +++ // Color model components +++ private static final byte[] RED = { (byte) 255, 0 }; +++ private static final byte[] GREEN = { (byte) 255, 0 }; +++ private static final byte[] BLUE = { (byte) 255, 0 }; +++ +++ public static void main(String[] args) { +++ try { +++ for (long i = 0; i < 300_000; i++) { +++ makeImage(); +++ } +++ } catch (OutOfMemoryError | NullPointerException e) { +++ System.err.println("Caught expected exception:\n" + +++ e.getClass() + ": " + e.getMessage()); +++ } +++ System.err.println("Test passed"); +++ } +++ +++ private static void makeImage() { +++ int scanLineBytes = WIDTH / PIXELS_IN_BYTE; +++ if ((WIDTH & (PIXELS_IN_BYTE - 1)) != 0) { +++ // Make sure all the pixels in a scan line fit +++ scanLineBytes += 1; +++ } +++ +++ byte[] bits = new byte[scanLineBytes * HEIGHT]; +++ DataBuffer dataBuf = new DataBufferByte(bits, bits.length, 0); +++ SampleModel sampleModel = new MultiPixelPackedSampleModel(DataBuffer.TYPE_BYTE, +++ WIDTH, HEIGHT, BITS_PER_PIXEL); +++ WritableRaster raster = Raster.createWritableRaster(sampleModel, dataBuf, null); +++ IndexColorModel indexModel = new IndexColorModel(2, 2, RED, GREEN, BLUE); +++ BufferedImage bufImage = new BufferedImage(indexModel, raster, +++ indexModel.isAlphaPremultiplied(), null); +++ +++ Graphics g = bufImage.getGraphics(); +++ g.drawRect(0, 0, WIDTH - 1, HEIGHT - 1); +++ g.dispose(); +++ } +++} ++# HG changeset patch ++# User ljiang ++# Date 1531897596 -3600 ++# Wed Jul 18 08:06:36 2018 +0100 ++# Node ID 731678709ecd5f9539fb539b5546a4aa2b7e35e8 ++# Parent 300736f6839f3598665a3901d1cda7ffc6b9c08c ++8202585: JDK 8u181 l10n resource file update ++Reviewed-by: coffeys ++ ++diff --git openjdk/jdk/src/macosx/classes/com/apple/laf/resources/aqua_de.properties openjdk/jdk/src/macosx/classes/com/apple/laf/resources/aqua_de.properties ++--- openjdk/jdk/src/macosx/classes/com/apple/laf/resources/aqua_de.properties +++++ openjdk/jdk/src/macosx/classes/com/apple/laf/resources/aqua_de.properties ++@@ -1,5 +1,5 @@ ++ # ++-# Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved. +++# Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved. ++ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ # ++ # This code is free software; you can redistribute it and/or modify it ++@@ -59,7 +59,7 @@ ++ FileChooser.saveTitle.textAndMnemonic=Speichern ++ FileChooser.openTitle.textAndMnemonic=\u00D6ffnen ++ FileChooser.newFolderExistsError.textAndMnemonic=Dieser Name ist bereits vergeben ++-FileChooser.chooseButton.textAndMnemonic=W\u00E4hlen +++FileChooser.chooseButton.textAndMnemonic=Ausw\u00E4hlen ++ ++ FileChooser.newFolderButton.textAndMnemonic=Neuer Ordner ++ FileChooser.newFolderTitle.textAndMnemonic=Neuer Ordner ++diff --git openjdk/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_de.properties openjdk/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_de.properties ++--- openjdk/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_de.properties +++++ openjdk/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_de.properties ++@@ -1,5 +1,5 @@ ++ # ++-# Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved. +++# Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved. ++ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ # ++ # This code is free software; you can redistribute it and/or modify it ++@@ -30,7 +30,7 @@ ++ cachedrowsetimpl.invalidop = Ung\u00FCltiger Vorgang beim Zeileneinf\u00FCgen ++ cachedrowsetimpl.accfailed = acceptChanges nicht erfolgreich ++ cachedrowsetimpl.invalidcp = Ung\u00FCltige Cursorposition ++-cachedrowsetimpl.illegalop = Ung\u00FCltiger Vorgang bei nicht eingef\u00FCgter Zeile +++cachedrowsetimpl.illegalop = Unzul\u00E4ssiger Vorgang bei nicht eingef\u00FCgter Zeile ++ cachedrowsetimpl.clonefail = Klonen nicht erfolgreich: {0} ++ cachedrowsetimpl.invalidcol = Ung\u00FCltiger Spaltenindex ++ cachedrowsetimpl.invalcolnm = Ung\u00FCltiger Spaltenname ++diff --git openjdk/jdk/src/share/classes/sun/rmi/server/resources/rmid_de.properties openjdk/jdk/src/share/classes/sun/rmi/server/resources/rmid_de.properties ++--- openjdk/jdk/src/share/classes/sun/rmi/server/resources/rmid_de.properties +++++ openjdk/jdk/src/share/classes/sun/rmi/server/resources/rmid_de.properties ++@@ -1,6 +1,6 @@ ++ # ++ # ++-# Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved. +++# Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved. ++ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ # ++ # This code is free software; you can redistribute it and/or modify it ++@@ -43,7 +43,7 @@ ++ rmid.syntax.log.required=Option -log ist erforderlich ++ ++ # {0} = the (string) illegal argument in question ++-rmid.syntax.illegal.option=Ung\u00FCltige Option: {0} +++rmid.syntax.illegal.option=Unzul\u00E4ssige Option: {0} ++ ++ # {0} = the (string) reason text that came with a thrown exception ++ # "Activation.main" should not be translated, because it's a codepoint ++diff --git openjdk/jdk/src/share/classes/sun/security/tools/keytool/Resources_de.java openjdk/jdk/src/share/classes/sun/security/tools/keytool/Resources_de.java ++--- openjdk/jdk/src/share/classes/sun/security/tools/keytool/Resources_de.java +++++ openjdk/jdk/src/share/classes/sun/security/tools/keytool/Resources_de.java ++@@ -99,7 +99,7 @@ ++ {"destination.alias", ++ "Zielalias"}, //-destalias ++ {"destination.key.password", ++- "Zielschl\u00FCssel-Kennwort"}, //-destkeypass +++ "Zielschl\u00FCsselkennwort"}, //-destkeypass ++ {"destination.keystore.name", ++ "Ziel-Keystore-Name"}, //-destkeystore ++ {"destination.keystore.password.protected", ++@@ -147,7 +147,7 @@ ++ {"source.alias", ++ "Quellalias"}, //-srcalias ++ {"source.key.password", ++- "Quellschl\u00FCssel-Kennwort"}, //-srckeypass +++ "Quellschl\u00FCsselkennwort"}, //-srckeypass ++ {"source.keystore.name", ++ "Quell-Keystore-Name"}, //-srckeystore ++ {"source.keystore.password.protected", ++@@ -178,8 +178,8 @@ ++ "Serielle ID des zu entziehenden Certs"}, //-id ++ // keytool: Running part ++ {"keytool.error.", "Keytool-Fehler: "}, ++- {"Illegal.option.", "Ung\u00FCltige Option: "}, ++- {"Illegal.value.", "Ung\u00FCltiger Wert: "}, +++ {"Illegal.option.", "Unzul\u00E4ssige Option: "}, +++ {"Illegal.value.", "Unzul\u00E4ssiger Wert: "}, ++ {"Unknown.password.type.", "Unbekannter Kennworttyp: "}, ++ {"Cannot.find.environment.variable.", ++ "Umgebungsvariable kann nicht gefunden werden: "}, ++@@ -205,7 +205,7 @@ ++ "Wenn der Keystore nicht kennwortgesch\u00FCtzt ist, d\u00FCrfen -storepass, -keypass und -new nicht angegeben werden"}, ++ {"if.source.keystore.is.not.password.protected.then.srcstorepass.and.srckeypass.must.not.be.specified", ++ "Wenn der Quell-Keystore nicht kennwortgesch\u00FCtzt ist, d\u00FCrfen -srcstorepass und -srckeypass nicht angegeben werden"}, ++- {"Illegal.startdate.value", "Ung\u00FCltiger Wert f\u00FCr Anfangsdatum"}, +++ {"Illegal.startdate.value", "Unzul\u00E4ssiger Wert f\u00FCr Anfangsdatum"}, ++ {"Validity.must.be.greater.than.zero", ++ "G\u00FCltigkeit muss gr\u00F6\u00DFer als null sein"}, ++ {"provName.not.a.provider", "{0} kein Provider"}, ++diff --git openjdk/jdk/src/share/classes/sun/security/tools/policytool/Resources_de.java openjdk/jdk/src/share/classes/sun/security/tools/policytool/Resources_de.java ++--- openjdk/jdk/src/share/classes/sun/security/tools/policytool/Resources_de.java +++++ openjdk/jdk/src/share/classes/sun/security/tools/policytool/Resources_de.java ++@@ -39,8 +39,8 @@ ++ {"Warning.Class.not.found.class", "Warnung: Klasse nicht gefunden: {0}"}, ++ {"Warning.Invalid.argument.s.for.constructor.arg", ++ "Warnung: Ung\u00FCltige(s) Argument(e) f\u00FCr Constructor: {0}"}, ++- {"Illegal.Principal.Type.type", "Ung\u00FCltiger Principal-Typ: {0}"}, ++- {"Illegal.option.option", "Ung\u00FCltige Option: {0}"}, +++ {"Illegal.Principal.Type.type", "Unzul\u00E4ssiger Principal-Typ: {0}"}, +++ {"Illegal.option.option", "Unzul\u00E4ssige Option: {0}"}, ++ {"Usage.policytool.options.", "Verwendung: policytool [Optionen]"}, ++ {".file.file.policy.file.location", ++ " [-file ] Policy-Dateiverzeichnis"}, ++diff --git openjdk/jdk/src/share/classes/sun/security/util/AuthResources_sv.java openjdk/jdk/src/share/classes/sun/security/util/AuthResources_sv.java ++--- openjdk/jdk/src/share/classes/sun/security/util/AuthResources_sv.java +++++ openjdk/jdk/src/share/classes/sun/security/util/AuthResources_sv.java ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -88,7 +88,7 @@ ++ {"Keystore.alias.","Nyckellageralias: "}, ++ {"Keystore.password.","Nyckellagerl\u00F6senord: "}, ++ {"Private.key.password.optional.", ++- "L\u00F6senord f\u00F6r personlig nyckel (valfritt): "}, +++ "L\u00F6senord f\u00F6r privat nyckel (valfritt): "}, ++ ++ // com.sun.security.auth.module.Krb5LoginModule ++ {"Kerberos.username.defUsername.", ++diff --git openjdk/jdk/src/share/classes/sun/tools/jar/resources/jar_de.properties openjdk/jdk/src/share/classes/sun/tools/jar/resources/jar_de.properties ++--- openjdk/jdk/src/share/classes/sun/tools/jar/resources/jar_de.properties +++++ openjdk/jdk/src/share/classes/sun/tools/jar/resources/jar_de.properties ++@@ -1,5 +1,5 @@ ++ # ++-# Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved. +++# Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved. ++ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ # ++ # This code is free software; you can redistribute it and/or modify it ++@@ -24,7 +24,7 @@ ++ # ++ ++ error.cant.open=\u00D6ffnen nicht m\u00F6glich: {0} ++-error.illegal.option=Ung\u00FCltige Option: {0} +++error.illegal.option=Unzul\u00E4ssige Option: {0} ++ error.bad.option=Eine der Optionen -{ctxu} muss angegeben werden. ++ error.bad.cflag=Kennzeichen "c" erfordert Angabe von Manifest oder Eingabedateien. ++ error.bad.uflag=Kennzeichen "u" erfordert Angabe von Manifest, Kennzeichen "e" oder Eingabedateien. ++# HG changeset patch ++# User robm ++# Date 1526342578 -3600 ++# Tue May 15 01:02:58 2018 +0100 ++# Node ID 3e4fee8c9a4218854096354c4c9d0cf90e632c17 ++# Parent 731678709ecd5f9539fb539b5546a4aa2b7e35e8 ++8202996: Remove debug print statements from RMI fix ++Reviewed-by: coffeys ++ ++diff --git openjdk/jdk/src/share/classes/sun/rmi/transport/tcp/TCPTransport.java openjdk/jdk/src/share/classes/sun/rmi/transport/tcp/TCPTransport.java ++--- openjdk/jdk/src/share/classes/sun/rmi/transport/tcp/TCPTransport.java +++++ openjdk/jdk/src/share/classes/sun/rmi/transport/tcp/TCPTransport.java ++@@ -730,7 +730,6 @@ ++ int magic = in.readInt(); ++ ++ if (magic == POST) { ++- System.err.println("DISABLED: " + disableIncomingHttp); ++ if (disableIncomingHttp) { ++ throw new RemoteException("RMI over HTTP is disabled"); ++ } ++# HG changeset patch ++# User rpatil ++# Date 1528190256 25200 ++# Tue Jun 05 02:17:36 2018 -0700 ++# Node ID 98b5499e65967e009c87e3f72d67010f410d5022 ++# Parent 3e4fee8c9a4218854096354c4c9d0cf90e632c17 ++8203233: (tz) Upgrade time-zone data to tzdata2018e ++Reviewed-by: martin, naoto ++ ++diff --git openjdk/jdk/make/sun/javazic/tzdata/VERSION openjdk/jdk/make/sun/javazic/tzdata/VERSION ++--- openjdk/jdk/make/sun/javazic/tzdata/VERSION +++++ openjdk/jdk/make/sun/javazic/tzdata/VERSION ++@@ -21,4 +21,4 @@ ++ # or visit www.oracle.com if you need additional information or have any ++ # questions. ++ # ++-tzdata2018d +++tzdata2018e ++diff --git openjdk/jdk/make/sun/javazic/tzdata/africa openjdk/jdk/make/sun/javazic/tzdata/africa ++--- openjdk/jdk/make/sun/javazic/tzdata/africa +++++ openjdk/jdk/make/sun/javazic/tzdata/africa ++@@ -29,7 +29,7 @@ ++ # tz@iana.org for general use in the future). For more, please see ++ # the file CONTRIBUTING in the tz distribution. ++ ++-# From Paul Eggert (2017-02-20): +++# From Paul Eggert (2017-04-09): ++ # ++ # Unless otherwise specified, the source for data through 1990 is: ++ # Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition), ++@@ -75,7 +75,7 @@ ++ # cannot now come up with solid citations. ++ # ++ # I invented the following abbreviations; corrections are welcome! ++-# +02 WAST West Africa Summer Time +++# +02 WAST West Africa Summer Time (no longer used) ++ # +03 CAST Central Africa Summer Time (no longer used) ++ # +03 SAST South Africa Summer Time (no longer used) ++ # +03 EAT East Africa Time ++@@ -990,6 +990,10 @@ ++ # commence at OOhOO on Monday 21 March 1994 and shall end at 02h00 on ++ # Sunday 4 September 1994. ++ +++# From Michael Deckers (2017-04-06): +++# ... both summer and winter time are called "standard" +++# (which differs from the use in Ireland) ... +++ ++ # From Petronella Sibeene (2007-03-30): ++ # http://allafrica.com/stories/200703300178.html ++ # While the entire country changes its time, Katima Mulilo and other ++@@ -1015,19 +1019,42 @@ ++ # the same time they would normally start DST, the first Sunday in September: ++ # https://www.timeanddate.com/news/time/namibia-new-time-zone.html ++ +++# From Paul Eggert (2017-04-09): +++# Before the change, summer and winter time were both standard time legally. +++# However in common parlance, winter time was considered to be DST. See, e.g.: +++# http://www.nbc.na/news/namibias-winter-time-could-be-scrapped.2706 +++# https://zone.my.na/news/times-are-changing-in-namibia +++# https://www.newera.com.na/2017/02/23/namibias-winter-time-might-be-repealed/ +++# Use plain "WAT" and "CAT" for the time zone abbreviations, to be compatible +++# with Namibia's neighbors. +++ ++ # RULE NAME FROM TO TYPE IN ON AT SAVE LETTER/S ++-Rule Namibia 1994 only - Mar 21 0:00 0 - ++-Rule Namibia 1994 2016 - Sep Sun>=1 2:00 1:00 S ++-Rule Namibia 1995 2017 - Apr Sun>=1 2:00 0 - +++# Vanguard section, for zic and other parsers that support negative DST. +++#Rule Namibia 1994 only - Mar 21 0:00 -1:00 WAT +++#Rule Namibia 1994 2017 - Sep Sun>=1 2:00 0 CAT +++#Rule Namibia 1995 2017 - Apr Sun>=1 2:00 -1:00 WAT +++# Rearguard section, for parsers that do not support negative DST. +++Rule Namibia 1994 only - Mar 21 0:00 0 WAT +++Rule Namibia 1994 2017 - Sep Sun>=1 2:00 1:00 CAT +++Rule Namibia 1995 2017 - Apr Sun>=1 2:00 0 WAT +++# End of rearguard section. +++ ++ # Zone NAME GMTOFF RULES FORMAT [UNTIL] ++ Zone Africa/Windhoek 1:08:24 - LMT 1892 Feb 8 ++ 1:30 - +0130 1903 Mar ++ 2:00 - SAST 1942 Sep 20 2:00 ++ 2:00 1:00 SAST 1943 Mar 21 2:00 ++ 2:00 - SAST 1990 Mar 21 # independence +++# Vanguard section, for zic and other parsers that support negative DST. +++# 2:00 Namibia %s +++# Rearguard section, for parsers that do not support negative DST. ++ 2:00 - CAT 1994 Mar 21 0:00 ++- 1:00 Namibia WA%sT 2017 Sep 3 2:00 +++# From Paul Eggert (2017-04-07): +++# The official date of the 2017 rule change was 2017-10-24. See: +++# http://www.lac.org.na/laws/annoSTAT/Namibian%20Time%20Act%209%20of%202017.pdf +++ 1:00 Namibia %s 2017 Oct 24 ++ 2:00 - CAT +++# End of rearguard section. ++ ++ # Niger ++ # See Africa/Lagos. ++diff --git openjdk/jdk/make/sun/javazic/tzdata/asia openjdk/jdk/make/sun/javazic/tzdata/asia ++--- openjdk/jdk/make/sun/javazic/tzdata/asia +++++ openjdk/jdk/make/sun/javazic/tzdata/asia ++@@ -2006,6 +2006,19 @@ ++ # There is no common English-language abbreviation for this time zone. ++ # Use KST, as that's what we already use for 1954-1961 in ROK. ++ +++# From Kang Seonghoon (2018-04-29): +++# North Korea will revert its time zone from UTC+8:30 (PYT; Pyongyang +++# Time) back to UTC+9 (KST; Korea Standard Time). +++# +++# From Seo Sanghyeon (2018-04-30): +++# Rodong Sinmun 2018-04-30 announced Pyongyang Time transition plan. +++# https://www.nknews.org/kcna/wp-content/uploads/sites/5/2018/04/rodong-2018-04-30.pdf +++# ... the transition date is 2018-05-05 ... Citation should be Decree +++# No. 2232 of April 30, 2018, of the Presidium of the Supreme People's +++# Assembly, as published in Rodong Sinmun. +++# From Tim Parenti (2018-04-29): +++# It appears to be the front page story at the top in the right-most column. +++ ++ # Zone NAME GMTOFF RULES FORMAT [UNTIL] ++ Zone Asia/Seoul 8:27:52 - LMT 1908 Apr 1 ++ 8:30 - KST 1912 Jan 1 ++@@ -2017,7 +2030,8 @@ ++ 8:30 - KST 1912 Jan 1 ++ 9:00 - JST 1945 Aug 24 ++ 9:00 - KST 2015 Aug 15 00:00 ++- 8:30 - KST +++ 8:30 - KST 2018 May 5 +++ 9:00 - KST ++ ++ ############################################################################### ++ ++@@ -2681,7 +2695,7 @@ ++ # From Sharef Mustafa (2018-03-16): ++ # Palestine summer time will start on Mar 24th 2018 by advancing the ++ # clock by 60 minutes as per Palestinian cabinet decision published on ++-# the offical website, though the decree did not specify the exact +++# the official website, though the decree did not specify the exact ++ # time of the time shift. ++ # http://www.palestinecabinet.gov.ps/Website/AR/NDecrees/ViewFile.ashx?ID=e7a42ab7-ee23-435a-b9c8-a4f7e81f3817 ++ # ++diff --git openjdk/jdk/make/sun/javazic/tzdata/australasia openjdk/jdk/make/sun/javazic/tzdata/australasia ++--- openjdk/jdk/make/sun/javazic/tzdata/australasia +++++ openjdk/jdk/make/sun/javazic/tzdata/australasia ++@@ -1108,6 +1108,15 @@ ++ # (1999-09-27) writes that Giles Meteorological Station uses ++ # South Australian time even though it's located in Western Australia. ++ +++# From Paul Eggert (2018-04-01): +++# The Guardian Express of Perth, Australia reported today that the +++# government decided to advance the clocks permanently on January 1, +++# 2019, from UT +08 to UT +09. The article noted that an exemption +++# would be made for people aged 61 and over, who "can apply in writing +++# to have the extra hour of sunshine removed from their area." See: +++# Daylight saving coming to WA in 2019. Guardian Express. 2018-04-01. +++# https://www.communitynews.com.au/guardian-express/news/exclusive-daylight-savings-coming-wa-summer-2018/ +++ ++ # Queensland ++ ++ # From Paul Eggert (2018-02-26): ++diff --git openjdk/jdk/make/sun/javazic/tzdata/europe openjdk/jdk/make/sun/javazic/tzdata/europe ++--- openjdk/jdk/make/sun/javazic/tzdata/europe +++++ openjdk/jdk/make/sun/javazic/tzdata/europe ++@@ -551,13 +551,13 @@ ++ # summer and negative daylight saving time in winter. It is for when ++ # negative SAVE values are used. ++ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ++-#Rule Eire 1971 only - Oct 31 2:00u -1:00 GMT ++-#Rule Eire 1972 1980 - Mar Sun>=16 2:00u 0 IST ++-#Rule Eire 1972 1980 - Oct Sun>=23 2:00u -1:00 GMT ++-#Rule Eire 1981 max - Mar lastSun 1:00u 0 IST ++-#Rule Eire 1981 1989 - Oct Sun>=23 1:00u -1:00 GMT ++-#Rule Eire 1990 1995 - Oct Sun>=22 1:00u -1:00 GMT ++-#Rule Eire 1996 max - Oct lastSun 1:00u -1:00 GMT +++#Rule Eire 1971 only - Oct 31 2:00u -1:00 - +++#Rule Eire 1972 1980 - Mar Sun>=16 2:00u 0 - +++#Rule Eire 1972 1980 - Oct Sun>=23 2:00u -1:00 - +++#Rule Eire 1981 max - Mar lastSun 1:00u 0 - +++#Rule Eire 1981 1989 - Oct Sun>=23 1:00u -1:00 - +++#Rule Eire 1990 1995 - Oct Sun>=22 1:00u -1:00 - +++#Rule Eire 1996 max - Oct lastSun 1:00u -1:00 - ++ ++ # Zone NAME GMTOFF RULES FORMAT [UNTIL] ++ Zone Europe/Dublin -0:25:00 - LMT 1880 Aug 2 ++@@ -993,18 +993,30 @@ ++ # Please see the 'asia' file for Asia/Nicosia. ++ ++ # Czech Republic / Czechia +++# +++# From Paul Eggert (2018-04-15): +++# The source for Czech data is: Kdy začíná a končí letní čas. 2018-04-15. +++# https://kalendar.beda.cz/kdy-zacina-a-konci-letni-cas +++# We know of no English-language name for historical Czech winter time; +++# abbreviate it as "GMT", as it happened to be GMT. +++# ++ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ++-Rule Czech 1945 only - Apr 8 2:00s 1:00 S ++-Rule Czech 1945 only - Nov 18 2:00s 0 - +++Rule Czech 1945 only - Apr Mon>=1 2:00s 1:00 S +++Rule Czech 1945 only - Oct 1 2:00s 0 - ++ Rule Czech 1946 only - May 6 2:00s 1:00 S ++ Rule Czech 1946 1949 - Oct Sun>=1 2:00s 0 - ++-Rule Czech 1947 only - Apr 20 2:00s 1:00 S ++-Rule Czech 1948 only - Apr 18 2:00s 1:00 S +++Rule Czech 1947 1948 - Apr Sun>=15 2:00s 1:00 S ++ Rule Czech 1949 only - Apr 9 2:00s 1:00 S ++ # Zone NAME GMTOFF RULES FORMAT [UNTIL] ++ Zone Europe/Prague 0:57:44 - LMT 1850 ++ 0:57:44 - PMT 1891 Oct # Prague Mean Time ++- 1:00 C-Eur CE%sT 1944 Sep 17 2:00s +++ 1:00 C-Eur CE%sT 1945 May 9 +++ 1:00 Czech CE%sT 1946 Dec 1 3:00 +++# Vanguard section, for zic and other parsers that support negative DST. +++# 1:00 -1:00 GMT 1947 Feb 23 2:00 +++# Rearguard section, for parsers that do not support negative DST. +++ 0:00 - GMT 1947 Feb 23 2:00 +++# End of rearguard section. ++ 1:00 Czech CE%sT 1979 ++ 1:00 EU CE%sT ++ # Use Europe/Prague also for Slovakia. ++@@ -2039,7 +2051,7 @@ ++ Rule Neth 1945 only - Apr 2 2:00s 1:00 S ++ Rule Neth 1945 only - Sep 16 2:00s 0 - ++ # ++-# Amsterdam Mean Time was +00:19:32.13 exactly, but the .13 is omitted +++# Amsterdam Mean Time was +00:19:32.13, but the .13 is omitted ++ # below because the current format requires GMTOFF to be an integer. ++ # Zone NAME GMTOFF RULES FORMAT [UNTIL] ++ Zone Europe/Amsterdam 0:19:32 - LMT 1835 ++# HG changeset patch ++# User igerasim ++# Date 1527785704 25200 ++# Thu May 31 09:55:04 2018 -0700 ++# Node ID 4a000ad25b081dc0aa494ee8e0299ab238607538 ++# Parent 98b5499e65967e009c87e3f72d67010f410d5022 ++8203368: ObjectInputStream filterCheck method throws NullPointerException ++Reviewed-by: bpb, smarks ++ ++diff --git openjdk/jdk/src/share/classes/java/io/ObjectInputStream.java openjdk/jdk/src/share/classes/java/io/ObjectInputStream.java ++--- openjdk/jdk/src/share/classes/java/io/ObjectInputStream.java +++++ openjdk/jdk/src/share/classes/java/io/ObjectInputStream.java ++@@ -1230,9 +1230,11 @@ ++ if (serialFilter != null) { ++ RuntimeException ex = null; ++ ObjectInputFilter.Status status; +++ // Info about the stream is not available if overridden by subclass, return 0 +++ long bytesRead = (bin == null) ? 0 : bin.getBytesRead(); ++ try { ++ status = serialFilter.checkInput(new FilterValues(clazz, arrayLength, ++- totalObjectRefs, depth, bin.getBytesRead())); +++ totalObjectRefs, depth, bytesRead)); ++ } catch (RuntimeException e) { ++ // Preventive interception of an exception to log ++ status = ObjectInputFilter.Status.REJECTED; ++@@ -1244,7 +1246,7 @@ ++ if (Logging.infoLogger != null) { ++ Logging.infoLogger.info( ++ "ObjectInputFilter {0}: {1}, array length: {2}, nRefs: {3}, depth: {4}, bytes: {5}, ex: {6}", ++- status, clazz, arrayLength, totalObjectRefs, depth, bin.getBytesRead(), +++ status, clazz, arrayLength, totalObjectRefs, depth, bytesRead, ++ Objects.toString(ex, "n/a")); ++ } ++ InvalidClassException ice = new InvalidClassException("filter status: " + status); ++@@ -1255,7 +1257,7 @@ ++ if (Logging.traceLogger != null) { ++ Logging.traceLogger.finer( ++ "ObjectInputFilter {0}: {1}, array length: {2}, nRefs: {3}, depth: {4}, bytes: {5}, ex: {6}", ++- status, clazz, arrayLength, totalObjectRefs, depth, bin.getBytesRead(), +++ status, clazz, arrayLength, totalObjectRefs, depth, bytesRead, ++ Objects.toString(ex, "n/a")); ++ } ++ } ++diff --git openjdk/jdk/test/java/io/Serializable/serialFilter/CheckArrayTest.java openjdk/jdk/test/java/io/Serializable/serialFilter/CheckArrayTest.java ++new file mode 100644 ++--- /dev/null +++++ openjdk/jdk/test/java/io/Serializable/serialFilter/CheckArrayTest.java ++@@ -0,0 +1,123 @@ +++/* +++ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. +++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +++ * +++ * This code is free software; you can redistribute it and/or modify it +++ * under the terms of the GNU General Public License version 2 only, as +++ * published by the Free Software Foundation. +++ * +++ * This code is distributed in the hope that it will be useful, but WITHOUT +++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +++ * version 2 for more details (a copy is included in the LICENSE file that +++ * accompanied this code). +++ * +++ * You should have received a copy of the GNU General Public License version +++ * 2 along with this work; if not, write to the Free Software Foundation, +++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +++ * +++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +++ * or visit www.oracle.com if you need additional information or have any +++ * questions. +++ */ +++ +++import java.io.ByteArrayInputStream; +++import java.io.IOException; +++import java.io.InputStream; +++import java.io.ObjectInputStream; +++import java.io.InvalidClassException; +++ +++import java.util.Hashtable; +++ +++import sun.misc.ObjectInputFilter; +++import sun.misc.SharedSecrets; +++ +++import org.testng.annotations.BeforeClass; +++import org.testng.annotations.DataProvider; +++import org.testng.annotations.Test; +++import org.testng.Assert; +++ +++/* @test +++ * @build CheckArrayTest SerialFilterTest +++ * @bug 8203368 +++ * @modules java.base/jdk.internal.misc +++ * @run testng CheckArrayTest +++ * +++ * @summary Test the SharedSecret access to ObjectInputStream.checkArray works +++ * with overridden subclasses. +++ */ +++ +++/** +++ * Verify that the SharedSecret access to the OIS checkAccess method +++ * does not fail with NPE in the case where ObjectInputStream is subclassed. +++ * The checkAccess method is called from various aggregate types in java.util +++ * to check array sizes during deserialization via the ObjectInputFilter attached the stream. +++ * The filterCheck must be resilent to an InputStream not being available (only the subclass knows). +++ */ +++public class CheckArrayTest { +++ +++ @DataProvider(name = "Patterns") +++ Object[][] patterns() { +++ return new Object[][]{ +++ new Object[]{"maxarray=10", 10, new String[10]}, // successful +++ new Object[]{"maxarray=10", 11, new String[11]}, // exception expected +++ }; +++ } +++ +++ /** +++ * Test SharedSecrets checkArray with unmodified ObjectInputStream. +++ */ +++ @Test(dataProvider = "Patterns") +++ public void normalOIS(String pattern, int arraySize, Object[] array) throws IOException { +++ ObjectInputFilter filter = ObjectInputFilter.Config.createFilter(pattern); +++ byte[] bytes = SerialFilterTest.writeObjects(array); +++ try (ByteArrayInputStream bais = new ByteArrayInputStream(bytes); +++ ObjectInputStream ois = new ObjectInputStream(bais)) { +++ // Check the arraysize against the filter +++ try { +++ ObjectInputFilter.Config.setObjectInputFilter(ois, filter); +++ SharedSecrets.getJavaOISAccess() +++ .checkArray(ois, array.getClass(), arraySize); +++ Assert.assertTrue(array.length >= arraySize, +++ "Should have thrown InvalidClassException due to array size"); +++ } catch (InvalidClassException ice) { +++ Assert.assertFalse(array.length > arraySize, +++ "Should NOT have thrown InvalidClassException due to array size"); +++ } +++ } +++ } +++ +++ /** +++ * Test SharedSecrets checkArray with an ObjectInputStream subclassed to +++ * handle all input stream functions. +++ */ +++ @Test(dataProvider = "Patterns") +++ public void subclassedOIS(String pattern, int arraySize, Object[] array) throws IOException { +++ byte[] bytes = SerialFilterTest.writeObjects(array); +++ try (ByteArrayInputStream bais = new ByteArrayInputStream(bytes); +++ ObjectInputStream ois = new MyInputStream(bais)) { +++ // Check the arraysize against the filter +++ ObjectInputFilter filter = ObjectInputFilter.Config.createFilter(pattern); +++ ObjectInputFilter.Config.setObjectInputFilter(ois, filter); +++ SharedSecrets.getJavaOISAccess() +++ .checkArray(ois, array.getClass(), arraySize); +++ Assert.assertTrue(array.length >= arraySize, +++ "Should have thrown InvalidClassException due to array size"); +++ } catch (InvalidClassException ice) { +++ Assert.assertFalse(array.length > arraySize, +++ "Should NOT have thrown InvalidClassException due to array size"); +++ } +++ } +++ +++ /** +++ * Subclass OIS to disable all input stream functions of the OIS. +++ */ +++ static class MyInputStream extends ObjectInputStream { +++ MyInputStream(InputStream is) throws IOException { +++ super(); +++ } +++ +++ public void close() { +++ } +++ } +++} diff --cc debian/patches/openjdk-jdk7u201-b00-hotspot.patch index 0000000,0000000..db002a9 new file mode 100644 --- /dev/null +++ b/debian/patches/openjdk-jdk7u201-b00-hotspot.patch @@@ -1,0 -1,0 +1,238 @@@ ++# HG changeset patch ++# User mbalao ++# Date 1539568060 -3600 ++# Mon Oct 15 02:47:40 2018 +0100 ++# Node ID 3e3da27b653d5eed2303d87f2898bd3ca03a5e29 ++# Parent ef476a2e3cc71b450610d7c6a8e1aec84d7b7ee0 ++8199226: Improve field accesses ++Reviewed-by: andrew ++ ++diff --git openjdk/hotspot/src/share/vm/interpreter/linkResolver.cpp openjdk/hotspot/src/share/vm/interpreter/linkResolver.cpp ++--- openjdk/hotspot/src/share/vm/interpreter/linkResolver.cpp +++++ openjdk/hotspot/src/share/vm/interpreter/linkResolver.cpp ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -582,6 +582,37 @@ ++ } ++ } ++ +++void LinkResolver::check_field_loader_constraints(KlassHandle ref_klass, +++ KlassHandle sel_klass, +++ Symbol* name, +++ Symbol* sig, TRAPS) { +++ HandleMark hm(THREAD); +++ Handle ref_loader (THREAD, instanceKlass::cast(ref_klass())->class_loader()); +++ Handle sel_loader (THREAD, instanceKlass::cast(sel_klass())->class_loader()); +++ { +++ ResourceMark rm(THREAD); +++ char* failed_type_name = +++ SystemDictionary::check_signature_loaders(sig, ref_loader, sel_loader, +++ false, CHECK); +++ if (failed_type_name != NULL) { +++ const char* msg = "loader constraint violation: when resolving field" +++ " \"%s\" the class loader (instance of %s) of the referring class, " +++ "%s, and the class loader (instance of %s) for the field's resolved " +++ "type, %s, have different Class objects for that type"; +++ char* field_name = name->as_C_string(); +++ const char* loader1 = SystemDictionary::loader_name(ref_loader()); +++ char* sel = instanceKlass::cast(sel_klass())->name()->as_C_string(); +++ const char* loader2 = SystemDictionary::loader_name(sel_loader()); +++ size_t buflen = strlen(msg) + strlen(field_name) + strlen(loader1) + +++ strlen(sel) + strlen(loader2) + strlen(failed_type_name); +++ char* buf = NEW_RESOURCE_ARRAY_IN_THREAD(THREAD, char, buflen); +++ jio_snprintf(buf, buflen, msg, field_name, loader1, sel, loader2, +++ failed_type_name); +++ THROW_MSG(vmSymbols::java_lang_LinkageError(), buf); +++ } +++ } +++} +++ ++ void LinkResolver::resolve_field(FieldAccessInfo& result, constantPoolHandle pool, int index, Bytecodes::Code byte, bool check_only, TRAPS) { ++ resolve_field(result, pool, index, byte, check_only, true, CHECK); ++ } ++@@ -644,37 +675,7 @@ ++ if (is_static && !check_only) { ++ sel_klass->initialize(CHECK); ++ } ++- ++- { ++- HandleMark hm(THREAD); ++- Handle ref_loader (THREAD, instanceKlass::cast(ref_klass())->class_loader()); ++- Handle sel_loader (THREAD, instanceKlass::cast(sel_klass())->class_loader()); ++- Symbol* signature_ref = pool->signature_ref_at(index); ++- { ++- ResourceMark rm(THREAD); ++- char* failed_type_name = ++- SystemDictionary::check_signature_loaders(signature_ref, ++- ref_loader, sel_loader, ++- false, ++- CHECK); ++- if (failed_type_name != NULL) { ++- const char* msg = "loader constraint violation: when resolving field" ++- " \"%s\" the class loader (instance of %s) of the referring class, " ++- "%s, and the class loader (instance of %s) for the field's resolved " ++- "type, %s, have different Class objects for that type"; ++- char* field_name = field->as_C_string(); ++- const char* loader1 = SystemDictionary::loader_name(ref_loader()); ++- char* sel = instanceKlass::cast(sel_klass())->name()->as_C_string(); ++- const char* loader2 = SystemDictionary::loader_name(sel_loader()); ++- size_t buflen = strlen(msg) + strlen(field_name) + strlen(loader1) + ++- strlen(sel) + strlen(loader2) + strlen(failed_type_name); ++- char* buf = NEW_RESOURCE_ARRAY_IN_THREAD(THREAD, char, buflen); ++- jio_snprintf(buf, buflen, msg, field_name, loader1, sel, loader2, ++- failed_type_name); ++- THROW_MSG(vmSymbols::java_lang_LinkageError(), buf); ++- } ++- } ++- } +++ LinkResolver::check_field_loader_constraints(ref_klass, sel_klass, field, sig, CHECK); ++ ++ // return information. note that the klass is set to the actual klass containing the ++ // field, otherwise access of static fields in superclasses will not work. ++diff --git openjdk/hotspot/src/share/vm/interpreter/linkResolver.hpp openjdk/hotspot/src/share/vm/interpreter/linkResolver.hpp ++--- openjdk/hotspot/src/share/vm/interpreter/linkResolver.hpp +++++ openjdk/hotspot/src/share/vm/interpreter/linkResolver.hpp ++@@ -188,6 +188,7 @@ ++ static void resolve_invokehandle (CallInfo& result, constantPoolHandle pool, int index, TRAPS); ++ ++ static void resolve_invoke (CallInfo& result, Handle recv, constantPoolHandle pool, int index, Bytecodes::Code byte, TRAPS); +++ static void check_field_loader_constraints(KlassHandle ref_klass, KlassHandle sel_klass, Symbol* name, Symbol* sig, TRAPS); ++ }; ++ ++ #endif // SHARE_VM_INTERPRETER_LINKRESOLVER_HPP ++diff --git openjdk/hotspot/src/share/vm/prims/methodHandles.cpp openjdk/hotspot/src/share/vm/prims/methodHandles.cpp ++--- openjdk/hotspot/src/share/vm/prims/methodHandles.cpp +++++ openjdk/hotspot/src/share/vm/prims/methodHandles.cpp ++@@ -767,6 +767,12 @@ ++ KlassHandle sel_klass(THREAD, instanceKlass::cast(defc())->find_field(name, type, &fd)); ++ // check if field exists; i.e., if a klass containing the field def has been selected ++ if (sel_klass.is_null()) return empty; // should not happen +++ if (sel_klass() != caller() && caller.not_null()) { +++ LinkResolver::check_field_loader_constraints(caller, sel_klass, name, type, THREAD); +++ if (HAS_PENDING_EXCEPTION) { +++ return empty; +++ } +++ } ++ oop type = field_signature_type_or_null(fd.signature()); ++ oop name = field_name_or_null(fd.name()); ++ bool is_setter = (ref_kind_is_valid(ref_kind) && ref_kind_is_setter(ref_kind)); ++# HG changeset patch ++# User shshahma ++# Date 1540182152 -3600 ++# Mon Oct 22 05:22:32 2018 +0100 ++# Node ID a04d398041938b47a3eed225c71f298a3e9410f9 ++# Parent 3e3da27b653d5eed2303d87f2898bd3ca03a5e29 ++8164480: Crash with assert(handler_address == SharedRuntime::compute_compiled_exc_handler(..) failed: Must be the same ++Summary: Exception checking code needs to handle pre-allocated exceptions. ++Reviewed-by: thartmann, kvn ++ ++diff --git openjdk/hotspot/src/share/vm/c1/c1_Runtime1.cpp openjdk/hotspot/src/share/vm/c1/c1_Runtime1.cpp ++--- openjdk/hotspot/src/share/vm/c1/c1_Runtime1.cpp +++++ openjdk/hotspot/src/share/vm/c1/c1_Runtime1.cpp ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -544,13 +544,14 @@ ++ thread->set_exception_oop(NULL); ++ thread->set_exception_pc(NULL); ++ ++- continuation = SharedRuntime::compute_compiled_exc_handler(nm, pc, exception, false, false); +++ bool recursive_exception = false; +++ continuation = SharedRuntime::compute_compiled_exc_handler(nm, pc, exception, false, false, recursive_exception); ++ // If an exception was thrown during exception dispatch, the exception oop may have changed ++ thread->set_exception_oop(exception()); ++ thread->set_exception_pc(pc); ++ ++ // the exception cache is used only by non-implicit exceptions ++- if (continuation != NULL) { +++ if (continuation != NULL && !recursive_exception) { ++ nm->add_handler_for_exception_and_pc(exception, pc, continuation); ++ } ++ } ++diff --git openjdk/hotspot/src/share/vm/opto/runtime.cpp openjdk/hotspot/src/share/vm/opto/runtime.cpp ++--- openjdk/hotspot/src/share/vm/opto/runtime.cpp +++++ openjdk/hotspot/src/share/vm/opto/runtime.cpp ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -1042,17 +1042,23 @@ ++ force_unwind ? NULL : nm->handler_for_exception_and_pc(exception, pc); ++ ++ if (handler_address == NULL) { ++- Handle original_exception(thread, exception()); ++- handler_address = SharedRuntime::compute_compiled_exc_handler(nm, pc, exception, force_unwind, true); +++ bool recursive_exception = false; +++ handler_address = SharedRuntime::compute_compiled_exc_handler(nm, pc, exception, force_unwind, true, recursive_exception); ++ assert (handler_address != NULL, "must have compiled handler"); ++ // Update the exception cache only when the unwind was not forced ++ // and there didn't happen another exception during the computation of the ++- // compiled exception handler. ++- if (!force_unwind && original_exception() == exception()) { +++ // compiled exception handler. Checking for exception oop equality is not +++ // sufficient because some exceptions are pre-allocated and reused. +++ if (!force_unwind && !recursive_exception) { ++ nm->add_handler_for_exception_and_pc(exception,pc,handler_address); ++ } ++ } else { ++- assert(handler_address == SharedRuntime::compute_compiled_exc_handler(nm, pc, exception, force_unwind, true), "Must be the same"); +++#ifdef ASSERT +++ bool recursive_exception = false; +++ address computed_address = SharedRuntime::compute_compiled_exc_handler(nm, pc, exception, force_unwind, true, recursive_exception); +++ assert(recursive_exception || (handler_address == computed_address), err_msg("Handler address inconsistency: " PTR_FORMAT " != " PTR_FORMAT, +++ p2i(handler_address), p2i(computed_address))); +++#endif ++ } ++ } ++ ++diff --git openjdk/hotspot/src/share/vm/runtime/sharedRuntime.cpp openjdk/hotspot/src/share/vm/runtime/sharedRuntime.cpp ++--- openjdk/hotspot/src/share/vm/runtime/sharedRuntime.cpp +++++ openjdk/hotspot/src/share/vm/runtime/sharedRuntime.cpp ++@@ -625,7 +625,7 @@ ++ // ret_pc points into caller; we are returning caller's exception handler ++ // for given exception ++ address SharedRuntime::compute_compiled_exc_handler(nmethod* nm, address ret_pc, Handle& exception, ++- bool force_unwind, bool top_frame_only) { +++ bool force_unwind, bool top_frame_only, bool& recursive_exception_occurred) { ++ assert(nm != NULL, "must exist"); ++ ResourceMark rm; ++ ++@@ -652,6 +652,7 @@ ++ // BCI of the exception handler which caused the exception to be ++ // thrown (bugs 4307310 and 4546590). Set "exception" reference ++ // argument to ensure that the correct exception is thrown (4870175). +++ recursive_exception_occurred = true; ++ exception = Handle(THREAD, PENDING_EXCEPTION); ++ CLEAR_PENDING_EXCEPTION; ++ if (handler_bci >= 0) { ++diff --git openjdk/hotspot/src/share/vm/runtime/sharedRuntime.hpp openjdk/hotspot/src/share/vm/runtime/sharedRuntime.hpp ++--- openjdk/hotspot/src/share/vm/runtime/sharedRuntime.hpp +++++ openjdk/hotspot/src/share/vm/runtime/sharedRuntime.hpp ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -176,7 +176,7 @@ ++ ++ // exception handling and implicit exceptions ++ static address compute_compiled_exc_handler(nmethod* nm, address ret_pc, Handle& exception, ++- bool force_unwind, bool top_frame_only); +++ bool force_unwind, bool top_frame_only, bool& recursive_exception_occurred); ++ enum ImplicitExceptionKind { ++ IMPLICIT_NULL, ++ IMPLICIT_DIVIDE_BY_ZERO, diff --cc debian/patches/openjdk-jdk7u201-b00-jaxp.patch index 0000000,0000000..dff9eeb new file mode 100644 --- /dev/null +++ b/debian/patches/openjdk-jdk7u201-b00-jaxp.patch @@@ -1,0 -1,0 +1,36 @@@ ++# HG changeset patch ++# User aefimov ++# Date 1538965553 -3600 ++# Mon Oct 08 03:25:53 2018 +0100 ++# Node ID 0c33ad53c77b27402900edbc65c9fca3e2fd667e ++# Parent 3210078eedc53eab152d941686f4a50a5ce8a607 ++8204497: Better formatting of decimals ++Reviewed-by: joehw ++ ++diff --git openjdk/jaxp/src/com/sun/org/apache/xerces/internal/jaxp/datatype/XMLGregorianCalendarImpl.java openjdk/jaxp/src/com/sun/org/apache/xerces/internal/jaxp/datatype/XMLGregorianCalendarImpl.java ++--- openjdk/jaxp/src/com/sun/org/apache/xerces/internal/jaxp/datatype/XMLGregorianCalendarImpl.java +++++ openjdk/jaxp/src/com/sun/org/apache/xerces/internal/jaxp/datatype/XMLGregorianCalendarImpl.java ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 2004, 2006, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 2004, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -189,6 +189,7 @@ ++ * @version $Revision: 1.14 $, $Date: 2010-11-10 07:41:41 $ ++ * @see javax.xml.datatype.Duration ++ * @since 1.5 +++ * @LastModified: June 2018 ++ */ ++ ++ public class XMLGregorianCalendarImpl ++@@ -2727,7 +2728,7 @@ ++ if ((fractional.compareTo(DECIMAL_ZERO) < 0) || ++ (fractional.compareTo(DECIMAL_ONE) > 0)) { ++ throw new IllegalArgumentException(DatatypeMessageFormatter.formatMessage(null, ++- "InvalidFractional", new Object[]{fractional})); +++ "InvalidFractional", new Object[]{fractional.toString()})); ++ } ++ } ++ this.fractionalSecond = fractional; diff --cc debian/patches/openjdk-jdk7u201-b00-jdk.patch index 0000000,0000000..4cd59f0 new file mode 100644 --- /dev/null +++ b/debian/patches/openjdk-jdk7u201-b00-jdk.patch @@@ -1,0 -1,0 +1,9777 @@@ ++# HG changeset patch ++# User smarks ++# Date 1539569134 -3600 ++# Mon Oct 15 03:05:34 2018 +0100 ++# Node ID 0599e947a9dbcbcf7374234b7fb9e6d2308e7242 ++# Parent 2585b0e574ebb2625bebfa6345ace38c06b0fe5a ++7117249: fix warnings in java.util.jar, .logging, .prefs, .zip ++Reviewed-by: alanb, dholmes, forax, sherman, smarks ++Contributed-by: Prasannaa , Martijn Verburg , Goerge_Albrecht , Graham Allan , Michael Barker ++ ++diff --git openjdk/jdk/src/share/classes/java/util/jar/JarFile.java openjdk/jdk/src/share/classes/java/util/jar/JarFile.java ++--- openjdk/jdk/src/share/classes/java/util/jar/JarFile.java +++++ openjdk/jdk/src/share/classes/java/util/jar/JarFile.java ++@@ -185,7 +185,7 @@ ++ } else { ++ man = new Manifest(super.getInputStream(manEntry)); ++ } ++- manRef = new SoftReference(man); +++ manRef = new SoftReference<>(man); ++ } ++ } ++ return man; ++@@ -235,13 +235,13 @@ ++ * Returns an enumeration of the zip file entries. ++ */ ++ public Enumeration entries() { ++- final Enumeration enum_ = super.entries(); +++ final Enumeration enum_ = super.entries(); ++ return new Enumeration() { ++ public boolean hasMoreElements() { ++ return enum_.hasMoreElements(); ++ } ++ public JarFileEntry nextElement() { ++- ZipEntry ze = (ZipEntry)enum_.nextElement(); +++ ZipEntry ze = enum_.nextElement(); ++ return new JarFileEntry(ze); ++ } ++ }; ++@@ -612,7 +612,7 @@ ++ } ++ ++ // screen out entries which are never signed ++- final Enumeration enum_ = super.entries(); +++ final Enumeration enum_ = super.entries(); ++ return new Enumeration() { ++ ++ ZipEntry entry; ++@@ -622,7 +622,7 @@ ++ return true; ++ } ++ while (enum_.hasMoreElements()) { ++- ZipEntry ze = (ZipEntry) enum_.nextElement(); +++ ZipEntry ze = enum_.nextElement(); ++ if (JarVerifier.isSigningRelated(ze.getName())) { ++ continue; ++ } ++@@ -653,7 +653,7 @@ ++ * JAR file has no signed content. Is there a non-signing ++ * code source? ++ */ ++- Enumeration unsigned = unsignedEntryNames(); +++ Enumeration unsigned = unsignedEntryNames(); ++ if (unsigned.hasMoreElements()) { ++ return new CodeSource[]{JarVerifier.getUnsignedCS(url)}; ++ } else { ++@@ -662,7 +662,7 @@ ++ } ++ ++ private Enumeration unsignedEntryNames() { ++- final Enumeration entries = entries(); +++ final Enumeration entries = entries(); ++ return new Enumeration() { ++ ++ String name; ++@@ -677,7 +677,7 @@ ++ } ++ while (entries.hasMoreElements()) { ++ String value; ++- ZipEntry e = (ZipEntry) entries.nextElement(); +++ ZipEntry e = entries.nextElement(); ++ value = e.getName(); ++ if (e.isDirectory() || JarVerifier.isSigningRelated(value)) { ++ continue; ++@@ -730,11 +730,11 @@ ++ } ++ } ++ ++- List getManifestDigests() { +++ List getManifestDigests() { ++ ensureInitialization(); ++ if (jv != null) { ++ return jv.getManifestDigests(); ++ } ++- return new ArrayList(); +++ return new ArrayList(); ++ } ++ } ++diff --git openjdk/jdk/src/share/classes/java/util/jar/Manifest.java openjdk/jdk/src/share/classes/java/util/jar/Manifest.java ++--- openjdk/jdk/src/share/classes/java/util/jar/Manifest.java +++++ openjdk/jdk/src/share/classes/java/util/jar/Manifest.java ++@@ -51,7 +51,7 @@ ++ private Attributes attr = new Attributes(); ++ ++ // manifest entries ++- private Map entries = new HashMap(); +++ private Map entries = new HashMap<>(); ++ ++ /** ++ * Constructs a new, empty Manifest. ++@@ -148,11 +148,11 @@ ++ // Write out the main attributes for the manifest ++ attr.writeMain(dos); ++ // Now write out the pre-entry attributes ++- Iterator it = entries.entrySet().iterator(); +++ Iterator> it = entries.entrySet().iterator(); ++ while (it.hasNext()) { ++- Map.Entry e = (Map.Entry)it.next(); +++ Map.Entry e = it.next(); ++ StringBuffer buffer = new StringBuffer("Name: "); ++- String value = (String)e.getKey(); +++ String value = e.getKey(); ++ if (value != null) { ++ byte[] vb = value.getBytes("UTF8"); ++ value = new String(vb, 0, 0, vb.length); ++@@ -161,7 +161,7 @@ ++ buffer.append("\r\n"); ++ make72Safe(buffer); ++ dos.writeBytes(buffer.toString()); ++- ((Attributes)e.getValue()).write(dos); +++ e.getValue().write(dos); ++ } ++ dos.flush(); ++ } ++diff --git openjdk/jdk/src/share/classes/java/util/logging/LogManager.java openjdk/jdk/src/share/classes/java/util/logging/LogManager.java ++--- openjdk/jdk/src/share/classes/java/util/logging/LogManager.java +++++ openjdk/jdk/src/share/classes/java/util/logging/LogManager.java ++@@ -185,10 +185,10 @@ ++ cname = System.getProperty("java.util.logging.manager"); ++ if (cname != null) { ++ try { ++- Class clz = ClassLoader.getSystemClassLoader().loadClass(cname); +++ Class clz = ClassLoader.getSystemClassLoader().loadClass(cname); ++ manager = (LogManager) clz.newInstance(); ++ } catch (ClassNotFoundException ex) { ++- Class clz = Thread.currentThread().getContextClassLoader().loadClass(cname); +++ Class clz = Thread.currentThread().getContextClassLoader().loadClass(cname); ++ manager = (LogManager) clz.newInstance(); ++ } ++ } ++@@ -212,10 +212,10 @@ ++ ++ // Adding the global Logger. Doing so in the Logger. ++ // would deadlock with the LogManager.. ++- Logger.global.setLogManager(manager); +++ Logger.getGlobal().setLogManager(manager); ++ // Make sure the global logger will be registered in the ++ // global manager's default contexts. ++- manager.addLogger(Logger.global); +++ manager.addLogger(Logger.getGlobal()); ++ manager.systemContext.addLocalLogger(Logger.global, false); ++ manager.userContext.addLocalLogger(Logger.global, false); ++ ++@@ -805,8 +805,8 @@ ++ for (int i = 0; i < names.length; i++) { ++ String word = names[i]; ++ try { ++- Class clz = ClassLoader.getSystemClassLoader().loadClass(word); ++- Handler hdl = (Handler) clz.newInstance(); +++ Class clz = ClassLoader.getSystemClassLoader().loadClass(word); +++ Handler hdl = (Handler) clz.newInstance(); ++ // Check if there is a property defining the ++ // this handler's level. ++ String levs = getProperty(word + ".level"); ++@@ -1114,11 +1114,11 @@ ++ // responsibility to initialize the logging configuration, by ++ // calling readConfiguration(InputStream) with a suitable stream. ++ try { ++- Class clz = ClassLoader.getSystemClassLoader().loadClass(cname); +++ Class clz = ClassLoader.getSystemClassLoader().loadClass(cname); ++ clz.newInstance(); ++ return; ++ } catch (ClassNotFoundException ex) { ++- Class clz = Thread.currentThread().getContextClassLoader().loadClass(cname); +++ Class clz = Thread.currentThread().getContextClassLoader().loadClass(cname); ++ clz.newInstance(); ++ return; ++ } ++@@ -1259,7 +1259,7 @@ ++ for (int i = 0; i < names.length; i++) { ++ String word = names[i]; ++ try { ++- Class clz = ClassLoader.getSystemClassLoader().loadClass(word); +++ Class clz = ClassLoader.getSystemClassLoader().loadClass(word); ++ clz.newInstance(); ++ } catch (Exception ex) { ++ System.err.println("Can't load config class \"" + word + "\""); ++@@ -1354,7 +1354,7 @@ ++ String val = getProperty(name); ++ try { ++ if (val != null) { ++- Class clz = ClassLoader.getSystemClassLoader().loadClass(val); +++ Class clz = ClassLoader.getSystemClassLoader().loadClass(val); ++ return (Filter) clz.newInstance(); ++ } ++ } catch (Exception ex) { ++@@ -1375,7 +1375,7 @@ ++ String val = getProperty(name); ++ try { ++ if (val != null) { ++- Class clz = ClassLoader.getSystemClassLoader().loadClass(val); +++ Class clz = ClassLoader.getSystemClassLoader().loadClass(val); ++ return (Formatter) clz.newInstance(); ++ } ++ } catch (Exception ex) { ++diff --git openjdk/jdk/src/share/classes/java/util/prefs/Preferences.java openjdk/jdk/src/share/classes/java/util/prefs/Preferences.java ++--- openjdk/jdk/src/share/classes/java/util/prefs/Preferences.java +++++ openjdk/jdk/src/share/classes/java/util/prefs/Preferences.java ++@@ -422,7 +422,7 @@ ++ * @throws IllegalArgumentException if the package has node preferences ++ * node associated with it. ++ */ ++- private static String nodeName(Class c) { +++ private static String nodeName(Class c) { ++ if (c.isArray()) ++ throw new IllegalArgumentException( ++ "Arrays have no associated preferences node."); ++diff --git openjdk/jdk/src/share/classes/java/util/prefs/XmlSupport.java openjdk/jdk/src/share/classes/java/util/prefs/XmlSupport.java ++--- openjdk/jdk/src/share/classes/java/util/prefs/XmlSupport.java +++++ openjdk/jdk/src/share/classes/java/util/prefs/XmlSupport.java ++@@ -106,7 +106,7 @@ ++ xmlRoot.setAttribute("type", (p.isUserNode() ? "user" : "system")); ++ ++ // Get bottom-up list of nodes from p to root, excluding root ++- List ancestors = new ArrayList(); +++ List ancestors = new ArrayList<>(); ++ ++ for (Preferences kid = p, dad = kid.parent(); dad != null; ++ kid = dad, dad = kid.parent()) { ++@@ -116,7 +116,7 @@ ++ for (int i=ancestors.size()-1; i >= 0; i--) { ++ e.appendChild(doc.createElement("map")); ++ e = (Element) e.appendChild(doc.createElement("node")); ++- e.setAttribute("name", ((Preferences)ancestors.get(i)).name()); +++ e.setAttribute("name", ancestors.get(i).name()); ++ } ++ putPreferencesInXml(e, doc, p, subTree); ++ ++@@ -339,17 +339,17 @@ ++ * @throws IOException if writing to the specified output stream ++ * results in an IOException. ++ */ ++- static void exportMap(OutputStream os, Map map) throws IOException { +++ static void exportMap(OutputStream os, Map map) throws IOException { ++ Document doc = createPrefsDoc("map"); ++ Element xmlMap = doc.getDocumentElement( ) ; ++ xmlMap.setAttribute("MAP_XML_VERSION", MAP_XML_VERSION); ++ ++- for (Iterator i = map.entrySet().iterator(); i.hasNext(); ) { ++- Map.Entry e = (Map.Entry) i.next(); +++ for (Iterator> i = map.entrySet().iterator(); i.hasNext(); ) { +++ Map.Entry e = i.next(); ++ Element xe = (Element) ++ xmlMap.appendChild(doc.createElement("entry")); ++- xe.setAttribute("key", (String) e.getKey()); ++- xe.setAttribute("value", (String) e.getValue()); +++ xe.setAttribute("key", e.getKey()); +++ xe.setAttribute("value", e.getValue()); ++ } ++ ++ writeDoc(doc, os); ++@@ -368,7 +368,7 @@ ++ * @throws InvalidPreferencesFormatException Data on input stream does not ++ * constitute a valid XML document with the mandated document type. ++ */ ++- static void importMap(InputStream is, Map m) +++ static void importMap(InputStream is, Map m) ++ throws IOException, InvalidPreferencesFormatException ++ { ++ try { ++diff --git openjdk/jdk/src/share/classes/java/util/zip/ZipEntry.java openjdk/jdk/src/share/classes/java/util/zip/ZipEntry.java ++--- openjdk/jdk/src/share/classes/java/util/zip/ZipEntry.java +++++ openjdk/jdk/src/share/classes/java/util/zip/ZipEntry.java ++@@ -281,6 +281,7 @@ ++ * Converts DOS time to Java time (number of milliseconds since epoch). ++ */ ++ private static long dosToJavaTime(long dtime) { +++ @SuppressWarnings("deprecation") // Use of date constructor. ++ Date d = new Date((int)(((dtime >> 25) & 0x7f) + 80), ++ (int)(((dtime >> 21) & 0x0f) - 1), ++ (int)((dtime >> 16) & 0x1f), ++@@ -293,6 +294,7 @@ ++ /* ++ * Converts Java time to DOS time. ++ */ +++ @SuppressWarnings("deprecation") // Use of date methods ++ private static long javaToDosTime(long time) { ++ Date d = new Date(time); ++ int year = d.getYear() + 1900; ++# HG changeset patch ++# User chegar ++# Date 1539569644 -3600 ++# Mon Oct 15 03:14:04 2018 +0100 ++# Node ID d41841c1c210b9e7b551a33d71c9418aedb9f7d3 ++# Parent 0599e947a9dbcbcf7374234b7fb9e6d2308e7242 ++7098755: test/sun/misc/JarIndex/metaInfFilenames/Basic.java should use supported compiler interface ++Reviewed-by: mcimadamore ++ ++diff --git openjdk/jdk/test/sun/misc/JarIndex/metaInfFilenames/Basic.java openjdk/jdk/test/sun/misc/JarIndex/metaInfFilenames/Basic.java ++--- openjdk/jdk/test/sun/misc/JarIndex/metaInfFilenames/Basic.java +++++ openjdk/jdk/test/sun/misc/JarIndex/metaInfFilenames/Basic.java ++@@ -154,7 +154,7 @@ ++ /* run javac */ ++ static void compile(String... args) { ++ debug("Running: javac " + Arrays.toString(args)); ++- com.sun.tools.javac.main.Main compiler = new com.sun.tools.javac.main.Main("javac"); +++ com.sun.tools.javac.Main compiler = new com.sun.tools.javac.Main(); ++ if (compiler.compile(args) != 0) { ++ throw new RuntimeException("javac failed: args=" + Arrays.toString(args)); ++ } ++# HG changeset patch ++# User chegar ++# Date 1539570337 -3600 ++# Mon Oct 15 03:25:37 2018 +0100 ++# Node ID 95795f5c8541f87bdcf2b4af267d13853b197fbe ++# Parent d41841c1c210b9e7b551a33d71c9418aedb9f7d3 ++7104650: rawtype warnings in several net, nio and security source files ++Summary: Also reviewed by Ulf.Zibis@gmx.de ++Reviewed-by: mcimadamore, alanb, dholmes ++ ++diff --git openjdk/jdk/make/sun/net/Makefile openjdk/jdk/make/sun/net/Makefile ++--- openjdk/jdk/make/sun/net/Makefile +++++ openjdk/jdk/make/sun/net/Makefile ++@@ -27,6 +27,7 @@ ++ PACKAGE = sun.net ++ PRODUCT = sun ++ SUBDIRS_MAKEFLAGS += JAVAC_MAX_WARNINGS=true +++SUBDIRS_MAKEFLAGS += JAVAC_LINT_OPTIONS=-Xlint:all,-deprecation,-path ++ include $(BUILDDIR)/common/Defs.gmk ++ ++ SUBDIRS = others spi ++diff --git openjdk/jdk/src/share/classes/java/net/InetAddress.java openjdk/jdk/src/share/classes/java/net/InetAddress.java ++--- openjdk/jdk/src/share/classes/java/net/InetAddress.java +++++ openjdk/jdk/src/share/classes/java/net/InetAddress.java ++@@ -932,10 +932,12 @@ ++ nameService = java.security.AccessController.doPrivileged( ++ new java.security.PrivilegedExceptionAction() { ++ public NameService run() { ++- Iterator itr = Service.providers(NameServiceDescriptor.class); +++ // sun.misc.Service.providers returns a raw Iterator +++ @SuppressWarnings("unchecked") +++ Iterator itr = +++ Service.providers(NameServiceDescriptor.class); ++ while (itr.hasNext()) { ++- NameServiceDescriptor nsd ++- = (NameServiceDescriptor)itr.next(); +++ NameServiceDescriptor nsd = itr.next(); ++ if (providerName. ++ equalsIgnoreCase(nsd.getType()+"," ++ +nsd.getProviderName())) { ++diff --git openjdk/jdk/src/share/classes/java/net/ServerSocket.java openjdk/jdk/src/share/classes/java/net/ServerSocket.java ++--- openjdk/jdk/src/share/classes/java/net/ServerSocket.java +++++ openjdk/jdk/src/share/classes/java/net/ServerSocket.java ++@@ -267,10 +267,9 @@ ++ AccessController.doPrivileged( ++ new PrivilegedExceptionAction() { ++ public Void run() throws NoSuchMethodException { ++- Class[] cl = new Class[2]; ++- cl[0] = SocketAddress.class; ++- cl[1] = Integer.TYPE; ++- impl.getClass().getDeclaredMethod("connect", cl); +++ impl.getClass().getDeclaredMethod("connect", +++ SocketAddress.class, +++ int.class); ++ return null; ++ } ++ }); ++diff --git openjdk/jdk/src/share/classes/java/security/Security.java openjdk/jdk/src/share/classes/java/security/Security.java ++--- openjdk/jdk/src/share/classes/java/security/Security.java +++++ openjdk/jdk/src/share/classes/java/security/Security.java ++@@ -814,7 +814,7 @@ ++ public Void run() { ++ try { ++ /* Get the class via the bootstrap class loader. */ ++- Class cl = Class.forName( +++ Class cl = Class.forName( ++ "java.lang.SecurityManager", false, null); ++ Field f = null; ++ boolean accessible = false; ++diff --git openjdk/jdk/src/share/classes/sun/nio/ch/Util.java openjdk/jdk/src/share/classes/sun/nio/ch/Util.java ++--- openjdk/jdk/src/share/classes/sun/nio/ch/Util.java +++++ openjdk/jdk/src/share/classes/sun/nio/ch/Util.java ++@@ -363,10 +363,10 @@ ++ try { ++ Class cl = Class.forName("java.nio.DirectByteBuffer"); ++ Constructor ctor = cl.getDeclaredConstructor( ++- new Class[] { int.class, ++- long.class, ++- FileDescriptor.class, ++- Runnable.class }); +++ new Class[] { int.class, +++ long.class, +++ FileDescriptor.class, +++ Runnable.class }); ++ ctor.setAccessible(true); ++ directByteBufferConstructor = ctor; ++ } catch (ClassNotFoundException x) { ++@@ -413,10 +413,10 @@ ++ try { ++ Class cl = Class.forName("java.nio.DirectByteBufferR"); ++ Constructor ctor = cl.getDeclaredConstructor( ++- new Class[] { int.class, ++- long.class, ++- FileDescriptor.class, ++- Runnable.class }); +++ new Class[] { int.class, +++ long.class, +++ FileDescriptor.class, +++ Runnable.class }); ++ ctor.setAccessible(true); ++ directByteBufferRConstructor = ctor; ++ } catch (ClassNotFoundException x) { ++# HG changeset patch ++# User chegar ++# Date 1539570893 -3600 ++# Mon Oct 15 03:34:53 2018 +0100 ++# Node ID 27a49c2cf31e70b6c770346306f308a42ab455f7 ++# Parent 95795f5c8541f87bdcf2b4af267d13853b197fbe ++7116722: Miscellaneous warnings sun.misc ( and related classes ) ++Reviewed-by: alanb, darcy, forax, hawtin, lancea ++ ++diff --git openjdk/jdk/src/share/classes/com/sun/net/httpserver/spi/HttpServerProvider.java openjdk/jdk/src/share/classes/com/sun/net/httpserver/spi/HttpServerProvider.java ++--- openjdk/jdk/src/share/classes/com/sun/net/httpserver/spi/HttpServerProvider.java +++++ openjdk/jdk/src/share/classes/com/sun/net/httpserver/spi/HttpServerProvider.java ++@@ -31,7 +31,7 @@ ++ import java.security.AccessController; ++ import java.security.PrivilegedAction; ++ import java.util.Iterator; ++-import sun.misc.Service; +++import java.util.ServiceLoader; ++ import sun.misc.ServiceConfigurationError; ++ import sun.security.action.GetPropertyAction; ++ import com.sun.net.httpserver.*; ++@@ -94,9 +94,10 @@ ++ } ++ ++ private static boolean loadProviderAsService() { ++- @SuppressWarnings("unchecked") ++- Iterator i = Service.providers(HttpServerProvider.class, ++- ClassLoader.getSystemClassLoader()); +++ Iterator i = +++ ServiceLoader.load(HttpServerProvider.class, +++ ClassLoader.getSystemClassLoader()) +++ .iterator(); ++ for (;;) { ++ try { ++ if (!i.hasNext()) ++diff --git openjdk/jdk/src/share/classes/java/net/InetAddress.java openjdk/jdk/src/share/classes/java/net/InetAddress.java ++--- openjdk/jdk/src/share/classes/java/net/InetAddress.java +++++ openjdk/jdk/src/share/classes/java/net/InetAddress.java ++@@ -32,6 +32,7 @@ ++ import java.util.LinkedList; ++ import java.util.List; ++ import java.util.ArrayList; +++import java.util.ServiceLoader; ++ import java.security.AccessController; ++ import java.io.ObjectStreamException; ++ import java.io.ObjectStreamField; ++@@ -43,7 +44,6 @@ ++ import sun.security.action.*; ++ import sun.net.InetAddressCachePolicy; ++ import sun.net.util.IPAddressUtil; ++-import sun.misc.Service; ++ import sun.net.spi.nameservice.*; ++ ++ /** ++@@ -932,10 +932,9 @@ ++ nameService = java.security.AccessController.doPrivileged( ++ new java.security.PrivilegedExceptionAction() { ++ public NameService run() { ++- // sun.misc.Service.providers returns a raw Iterator ++- @SuppressWarnings("unchecked") ++ Iterator itr = ++- Service.providers(NameServiceDescriptor.class); +++ ServiceLoader.load(NameServiceDescriptor.class) +++ .iterator(); ++ while (itr.hasNext()) { ++ NameServiceDescriptor nsd = itr.next(); ++ if (providerName. ++diff --git openjdk/jdk/src/share/classes/java/util/jar/JarVerifier.java openjdk/jdk/src/share/classes/java/util/jar/JarVerifier.java ++--- openjdk/jdk/src/share/classes/java/util/jar/JarVerifier.java +++++ openjdk/jdk/src/share/classes/java/util/jar/JarVerifier.java ++@@ -91,7 +91,7 @@ ++ private Object csdomain = new Object(); ++ ++ /** collect -DIGEST-MANIFEST values for blacklist */ ++- private List manifestDigests; +++ private List manifestDigests; ++ ++ public JarVerifier(byte rawBytes[]) { ++ manifestRawBytes = rawBytes; ++@@ -100,7 +100,7 @@ ++ sigFileData = new Hashtable<>(11); ++ pendingBlocks = new ArrayList<>(); ++ baos = new ByteArrayOutputStream(); ++- manifestDigests = new ArrayList(); +++ manifestDigests = new ArrayList<>(); ++ } ++ ++ /** ++@@ -871,7 +871,7 @@ ++ eagerValidation = eager; ++ } ++ ++- public synchronized List getManifestDigests() { +++ public synchronized List getManifestDigests() { ++ return Collections.unmodifiableList(manifestDigests); ++ } ++ ++diff --git openjdk/jdk/src/share/classes/java/util/jar/JavaUtilJarAccessImpl.java openjdk/jdk/src/share/classes/java/util/jar/JavaUtilJarAccessImpl.java ++--- openjdk/jdk/src/share/classes/java/util/jar/JavaUtilJarAccessImpl.java +++++ openjdk/jdk/src/share/classes/java/util/jar/JavaUtilJarAccessImpl.java ++@@ -57,7 +57,7 @@ ++ jar.setEagerValidation(eager); ++ } ++ ++- public List getManifestDigests(JarFile jar) { +++ public List getManifestDigests(JarFile jar) { ++ return jar.getManifestDigests(); ++ } ++ } ++diff --git openjdk/jdk/src/share/classes/javax/script/ScriptEngineManager.java openjdk/jdk/src/share/classes/javax/script/ScriptEngineManager.java ++--- openjdk/jdk/src/share/classes/javax/script/ScriptEngineManager.java +++++ openjdk/jdk/src/share/classes/javax/script/ScriptEngineManager.java ++@@ -97,7 +97,7 @@ ++ } ++ ++ private List initEngines(final ClassLoader loader) { ++- Iterator itr = null; +++ Iterator itr = null; ++ try { ++ if (loader != null) { ++ itr = Service.providers(ScriptEngineFactory.class, loader); ++@@ -120,7 +120,7 @@ ++ try { ++ while (itr.hasNext()) { ++ try { ++- ScriptEngineFactory fact = (ScriptEngineFactory) itr.next(); +++ ScriptEngineFactory fact = itr.next(); ++ facList.add(fact); ++ } catch (ServiceConfigurationError err) { ++ System.err.println("ScriptEngineManager providers.next(): " ++diff --git openjdk/jdk/src/share/classes/sun/misc/BASE64Decoder.java openjdk/jdk/src/share/classes/sun/misc/BASE64Decoder.java ++--- openjdk/jdk/src/share/classes/sun/misc/BASE64Decoder.java +++++ openjdk/jdk/src/share/classes/sun/misc/BASE64Decoder.java ++@@ -102,6 +102,7 @@ ++ /** ++ * Decode one BASE64 atom into 1, 2, or 3 bytes of data. ++ */ +++ @SuppressWarnings("fallthrough") ++ protected void decodeAtom(PushbackInputStream inStream, OutputStream outStream, int rem) ++ throws java.io.IOException ++ { ++diff --git openjdk/jdk/src/share/classes/sun/misc/ExtensionDependency.java openjdk/jdk/src/share/classes/sun/misc/ExtensionDependency.java ++--- openjdk/jdk/src/share/classes/sun/misc/ExtensionDependency.java +++++ openjdk/jdk/src/share/classes/sun/misc/ExtensionDependency.java ++@@ -70,7 +70,7 @@ ++ public class ExtensionDependency { ++ ++ /* Callbak interfaces to delegate installation of missing extensions */ ++- private static Vector providers; +++ private static Vector providers; ++ ++ /** ++ *

++@@ -83,7 +83,7 @@ ++ (ExtensionInstallationProvider eip) ++ { ++ if (providers == null) { ++- providers = new Vector(); +++ providers = new Vector<>(); ++ } ++ providers.add(eip); ++ } ++@@ -93,7 +93,7 @@ ++ * Unregister a previously installed installation provider ++ *

++ */ ++- public synchronized static void removeExtensionInstallationProvider +++ public synchronized static void removeExtensionInstallationProvider ++ (ExtensionInstallationProvider eip) ++ { ++ providers.remove(eip); ++@@ -348,14 +348,16 @@ ++ ExtensionInfo instInfo) ++ throws ExtensionInstallationException ++ { ++- ++- Vector currentProviders; +++ Vector currentProviders; ++ synchronized(providers) { ++- currentProviders = (Vector) providers.clone(); +++ @SuppressWarnings("unchecked") +++ Vector tmp = +++ (Vector) providers.clone(); +++ currentProviders = tmp; ++ } ++- for (Enumeration e=currentProviders.elements();e.hasMoreElements();) { ++- ExtensionInstallationProvider eip = ++- (ExtensionInstallationProvider) e.nextElement(); +++ for (Enumeration e = currentProviders.elements(); +++ e.hasMoreElements();) { +++ ExtensionInstallationProvider eip = e.nextElement(); ++ ++ if (eip!=null) { ++ // delegate the installation to the provider ++diff --git openjdk/jdk/src/share/classes/sun/misc/JarIndex.java openjdk/jdk/src/share/classes/sun/misc/JarIndex.java ++--- openjdk/jdk/src/share/classes/sun/misc/JarIndex.java +++++ openjdk/jdk/src/share/classes/sun/misc/JarIndex.java ++@@ -50,13 +50,13 @@ ++ * The hash map that maintains mappings from ++ * package/classe/resource to jar file list(s) ++ */ ++- private HashMap indexMap; +++ private HashMap> indexMap; ++ ++ /** ++ * The hash map that maintains mappings from ++ * jar file to package/class/resource lists ++ */ ++- private HashMap jarMap; +++ private HashMap> jarMap; ++ ++ /* ++ * An ordered list of jar file names. ++@@ -81,8 +81,8 @@ ++ * Constructs a new, empty jar index. ++ */ ++ public JarIndex() { ++- indexMap = new HashMap(); ++- jarMap = new HashMap(); +++ indexMap = new HashMap<>(); +++ jarMap = new HashMap<>(); ++ } ++ ++ /** ++@@ -153,10 +153,11 @@ ++ * Add the key, value pair to the hashmap, the value will ++ * be put in a linked list which is created if necessary. ++ */ ++- private void addToList(String key, String value, HashMap t) { ++- LinkedList list = (LinkedList)t.get(key); +++ private void addToList(String key, String value, +++ HashMap> t) { +++ LinkedList list = t.get(key); ++ if (list == null) { ++- list = new LinkedList(); +++ list = new LinkedList<>(); ++ list.add(value); ++ t.put(key, list); ++ } else if (!list.contains(value)) { ++@@ -169,13 +170,13 @@ ++ * ++ * @param fileName the key of the mapping ++ */ ++- public LinkedList get(String fileName) { ++- LinkedList jarFiles = null; ++- if ((jarFiles = (LinkedList)indexMap.get(fileName)) == null) { +++ public LinkedList get(String fileName) { +++ LinkedList jarFiles = null; +++ if ((jarFiles = indexMap.get(fileName)) == null) { ++ /* try the package name again */ ++ int pos; ++ if((pos = fileName.lastIndexOf("/")) != -1) { ++- jarFiles = (LinkedList)indexMap.get(fileName.substring(0, pos)); +++ jarFiles = indexMap.get(fileName.substring(0, pos)); ++ } ++ } ++ return jarFiles; ++@@ -238,9 +239,9 @@ ++ ZipFile zrf = new ZipFile(currentJar.replace ++ ('/', File.separatorChar)); ++ ++- Enumeration entries = zrf.entries(); +++ Enumeration entries = zrf.entries(); ++ while(entries.hasMoreElements()) { ++- ZipEntry entry = (ZipEntry) entries.nextElement(); +++ ZipEntry entry = entries.nextElement(); ++ String fileName = entry.getName(); ++ ++ // Skip the META-INF directory, the index, and manifest. ++@@ -285,11 +286,11 @@ ++ /* print out the jar file name */ ++ String jar = jarFiles[i]; ++ bw.write(jar + "\n"); ++- LinkedList jarlist = (LinkedList)jarMap.get(jar); +++ LinkedList jarlist = jarMap.get(jar); ++ if (jarlist != null) { ++- Iterator listitr = jarlist.iterator(); +++ Iterator listitr = jarlist.iterator(); ++ while(listitr.hasNext()) { ++- bw.write((String)(listitr.next()) + "\n"); +++ bw.write(listitr.next() + "\n"); ++ } ++ } ++ bw.write("\n"); ++@@ -312,7 +313,7 @@ ++ String currentJar = null; ++ ++ /* an ordered list of jar file names */ ++- Vector jars = new Vector(); +++ Vector jars = new Vector<>(); ++ ++ /* read until we see a .jar line */ ++ while((line = br.readLine()) != null && !line.endsWith(".jar")); ++@@ -331,7 +332,7 @@ ++ } ++ } ++ ++- jarFiles = (String[])jars.toArray(new String[jars.size()]); +++ jarFiles = jars.toArray(new String[jars.size()]); ++ } ++ ++ /** ++@@ -345,14 +346,14 @@ ++ * ++ */ ++ public void merge(JarIndex toIndex, String path) { ++- Iterator itr = indexMap.entrySet().iterator(); +++ Iterator>> itr = indexMap.entrySet().iterator(); ++ while(itr.hasNext()) { ++- Map.Entry e = (Map.Entry)itr.next(); ++- String packageName = (String)e.getKey(); ++- LinkedList from_list = (LinkedList)e.getValue(); ++- Iterator listItr = from_list.iterator(); +++ Map.Entry> e = itr.next(); +++ String packageName = e.getKey(); +++ LinkedList from_list = e.getValue(); +++ Iterator listItr = from_list.iterator(); ++ while(listItr.hasNext()) { ++- String jarName = (String)listItr.next(); +++ String jarName = listItr.next(); ++ if (path != null) { ++ jarName = path.concat(jarName); ++ } ++diff --git openjdk/jdk/src/share/classes/sun/misc/JavaUtilJarAccess.java openjdk/jdk/src/share/classes/sun/misc/JavaUtilJarAccess.java ++--- openjdk/jdk/src/share/classes/sun/misc/JavaUtilJarAccess.java +++++ openjdk/jdk/src/share/classes/sun/misc/JavaUtilJarAccess.java ++@@ -40,5 +40,5 @@ ++ public Enumeration entryNames(JarFile jar, CodeSource[] cs); ++ public Enumeration entries2(JarFile jar); ++ public void setEagerValidation(JarFile jar, boolean eager); ++- public List getManifestDigests(JarFile jar); +++ public List getManifestDigests(JarFile jar); ++ } ++diff --git openjdk/jdk/src/share/classes/sun/misc/ProxyGenerator.java openjdk/jdk/src/share/classes/sun/misc/ProxyGenerator.java ++--- openjdk/jdk/src/share/classes/sun/misc/ProxyGenerator.java +++++ openjdk/jdk/src/share/classes/sun/misc/ProxyGenerator.java ++@@ -361,7 +361,7 @@ ++ try { ++ hashCodeMethod = Object.class.getMethod("hashCode"); ++ equalsMethod = ++- Object.class.getMethod("equals", new Class[] { Object.class }); +++ Object.class.getMethod("equals", new Class[] { Object.class }); ++ toStringMethod = Object.class.getMethod("toString"); ++ } catch (NoSuchMethodException e) { ++ throw new NoSuchMethodError(e.getMessage()); ++@@ -569,11 +569,11 @@ ++ * passed to the invocation handler's "invoke" method for a given ++ * set of duplicate methods. ++ */ ++- private void addProxyMethod(Method m, Class fromClass) { +++ private void addProxyMethod(Method m, Class fromClass) { ++ String name = m.getName(); ++- Class[] parameterTypes = m.getParameterTypes(); ++- Class returnType = m.getReturnType(); ++- Class[] exceptionTypes = m.getExceptionTypes(); +++ Class[] parameterTypes = m.getParameterTypes(); +++ Class returnType = m.getReturnType(); +++ Class[] exceptionTypes = m.getExceptionTypes(); ++ ++ String sig = name + getParameterDescriptors(parameterTypes); ++ List sigmethods = proxyMethods.get(sig); ++@@ -591,7 +591,7 @@ ++ exceptionTypes, pm.exceptionTypes, legalExceptions); ++ collectCompatibleTypes( ++ pm.exceptionTypes, exceptionTypes, legalExceptions); ++- pm.exceptionTypes = new Class[legalExceptions.size()]; +++ pm.exceptionTypes = new Class[legalExceptions.size()]; ++ pm.exceptionTypes = ++ legalExceptions.toArray(pm.exceptionTypes); ++ return; ++@@ -858,15 +858,15 @@ ++ private class ProxyMethod { ++ ++ public String methodName; ++- public Class[] parameterTypes; ++- public Class returnType; ++- public Class[] exceptionTypes; ++- public Class fromClass; +++ public Class[] parameterTypes; +++ public Class returnType; +++ public Class[] exceptionTypes; +++ public Class fromClass; ++ public String methodFieldName; ++ ++- private ProxyMethod(String methodName, Class[] parameterTypes, ++- Class returnType, Class[] exceptionTypes, ++- Class fromClass) +++ private ProxyMethod(String methodName, Class[] parameterTypes, +++ Class returnType, Class[] exceptionTypes, +++ Class fromClass) ++ { ++ this.methodName = methodName; ++ this.parameterTypes = parameterTypes; ++@@ -1011,7 +1011,7 @@ ++ * invocation handler's "invoke" method. The code is written ++ * to the supplied stream. ++ */ ++- private void codeWrapArgument(Class type, int slot, +++ private void codeWrapArgument(Class type, int slot, ++ DataOutputStream out) ++ throws IOException ++ { ++@@ -1052,7 +1052,7 @@ ++ * Object) to its correct type. The code is written to the ++ * supplied stream. ++ */ ++- private void codeUnwrapReturnValue(Class type, DataOutputStream out) +++ private void codeUnwrapReturnValue(Class type, DataOutputStream out) ++ throws IOException ++ { ++ if (type.isPrimitive()) { ++@@ -1401,7 +1401,7 @@ ++ * the supplied stream. Note that the code generated by this method ++ * may caused the checked ClassNotFoundException to be thrown. ++ */ ++- private void codeClassForName(Class cl, DataOutputStream out) +++ private void codeClassForName(Class cl, DataOutputStream out) ++ throws IOException ++ { ++ code_ldc(cp.getString(cl.getName()), out); ++@@ -1432,8 +1432,8 @@ ++ * Return the "method descriptor" string for a method with the given ++ * parameter types and return type. See JVMS section 4.3.3. ++ */ ++- private static String getMethodDescriptor(Class[] parameterTypes, ++- Class returnType) +++ private static String getMethodDescriptor(Class[] parameterTypes, +++ Class returnType) ++ { ++ return getParameterDescriptors(parameterTypes) + ++ ((returnType == void.class) ? "V" : getFieldType(returnType)); ++@@ -1446,7 +1446,7 @@ ++ * string is useful for constructing string keys for methods without ++ * regard to their return type. ++ */ ++- private static String getParameterDescriptors(Class[] parameterTypes) { +++ private static String getParameterDescriptors(Class[] parameterTypes) { ++ StringBuilder desc = new StringBuilder("("); ++ for (int i = 0; i < parameterTypes.length; i++) { ++ desc.append(getFieldType(parameterTypes[i])); ++@@ -1460,7 +1460,7 @@ ++ * a field descriptor, a parameter descriptor, or a return descriptor ++ * other than "void". See JVMS section 4.3.2. ++ */ ++- private static String getFieldType(Class type) { +++ private static String getFieldType(Class type) { ++ if (type.isPrimitive()) { ++ return PrimitiveTypeInfo.get(type).baseTypeString; ++ } else if (type.isArray()) { ++@@ -1482,7 +1482,7 @@ ++ * method with the given name and parameter types. ++ */ ++ private static String getFriendlyMethodSignature(String name, ++- Class[] parameterTypes) +++ Class[] parameterTypes) ++ { ++ StringBuilder sig = new StringBuilder(name); ++ sig.append('('); ++@@ -1490,7 +1490,7 @@ ++ if (i > 0) { ++ sig.append(','); ++ } ++- Class parameterType = parameterTypes[i]; +++ Class parameterType = parameterTypes[i]; ++ int dimensions = 0; ++ while (parameterType.isArray()) { ++ parameterType = parameterType.getComponentType(); ++@@ -1514,7 +1514,7 @@ ++ * this abstract notion of a "word" in section 3.4, but that definition ++ * was removed for the second edition. ++ */ ++- private static int getWordsPerType(Class type) { +++ private static int getWordsPerType(Class type) { ++ if (type == long.class || type == double.class) { ++ return 2; ++ } else { ++@@ -1642,8 +1642,7 @@ ++ /** descriptor of same method */ ++ public String unwrapMethodDesc; ++ ++- private static Map table = ++- new HashMap(); +++ private static Map,PrimitiveTypeInfo> table = new HashMap<>(); ++ static { ++ add(byte.class, Byte.class); ++ add(char.class, Character.class); ++@@ -1655,12 +1654,12 @@ ++ add(boolean.class, Boolean.class); ++ } ++ ++- private static void add(Class primitiveClass, Class wrapperClass) { +++ private static void add(Class primitiveClass, Class wrapperClass) { ++ table.put(primitiveClass, ++ new PrimitiveTypeInfo(primitiveClass, wrapperClass)); ++ } ++ ++- private PrimitiveTypeInfo(Class primitiveClass, Class wrapperClass) { +++ private PrimitiveTypeInfo(Class primitiveClass, Class wrapperClass) { ++ assert primitiveClass.isPrimitive(); ++ ++ baseTypeString = ++@@ -1673,7 +1672,7 @@ ++ unwrapMethodDesc = "()" + baseTypeString; ++ } ++ ++- public static PrimitiveTypeInfo get(Class cl) { +++ public static PrimitiveTypeInfo get(Class cl) { ++ return table.get(cl); ++ } ++ } ++@@ -1704,7 +1703,7 @@ ++ * and for assigning the next index value. Note that element 0 ++ * of this list corresponds to constant pool index 1. ++ */ ++- private List pool = new ArrayList(32); +++ private List pool = new ArrayList<>(32); ++ ++ /** ++ * maps constant pool data of all types to constant pool indexes. ++@@ -1712,7 +1711,7 @@ ++ * This map is used to look up the index of an existing entry for ++ * values of all types. ++ */ ++- private Map map = new HashMap(16); +++ private Map map = new HashMap<>(16); ++ ++ /** true if no new constant pool entries may be added */ ++ private boolean readOnly = false; ++diff --git openjdk/jdk/src/share/classes/sun/misc/Service.java openjdk/jdk/src/share/classes/sun/misc/Service.java ++--- openjdk/jdk/src/share/classes/sun/misc/Service.java +++++ openjdk/jdk/src/share/classes/sun/misc/Service.java ++@@ -125,13 +125,13 @@ ++ * @since 1.3 ++ */ ++ ++-public final class Service { +++public final class Service { ++ ++ private static final String prefix = "META-INF/services/"; ++ ++ private Service() { } ++ ++- private static void fail(Class service, String msg, Throwable cause) +++ private static void fail(Class service, String msg, Throwable cause) ++ throws ServiceConfigurationError ++ { ++ ServiceConfigurationError sce ++@@ -140,13 +140,13 @@ ++ throw sce; ++ } ++ ++- private static void fail(Class service, String msg) +++ private static void fail(Class service, String msg) ++ throws ServiceConfigurationError ++ { ++ throw new ServiceConfigurationError(service.getName() + ": " + msg); ++ } ++ ++- private static void fail(Class service, URL u, int line, String msg) +++ private static void fail(Class service, URL u, int line, String msg) ++ throws ServiceConfigurationError ++ { ++ fail(service, u + ":" + line + ": " + msg); ++@@ -157,8 +157,8 @@ ++ * on the line to both the names list and the returned set iff the name is ++ * not already a member of the returned set. ++ */ ++- private static int parseLine(Class service, URL u, BufferedReader r, int lc, ++- List names, Set returned) +++ private static int parseLine(Class service, URL u, BufferedReader r, int lc, +++ List names, Set returned) ++ throws IOException, ServiceConfigurationError ++ { ++ String ln = r.readLine(); ++@@ -211,12 +211,12 @@ ++ * If an I/O error occurs while reading from the given URL, or ++ * if a configuration-file format error is detected ++ */ ++- private static Iterator parse(Class service, URL u, Set returned) +++ private static Iterator parse(Class service, URL u, Set returned) ++ throws ServiceConfigurationError ++ { ++ InputStream in = null; ++ BufferedReader r = null; ++- ArrayList names = new ArrayList(); +++ ArrayList names = new ArrayList<>(); ++ try { ++ in = u.openStream(); ++ r = new BufferedReader(new InputStreamReader(in, "utf-8")); ++@@ -239,16 +239,16 @@ ++ /** ++ * Private inner class implementing fully-lazy provider lookup ++ */ ++- private static class LazyIterator implements Iterator { +++ private static class LazyIterator implements Iterator { ++ ++- Class service; +++ Class service; ++ ClassLoader loader; ++- Enumeration configs = null; ++- Iterator pending = null; ++- Set returned = new TreeSet(); +++ Enumeration configs = null; +++ Iterator pending = null; +++ Set returned = new TreeSet<>(); ++ String nextName = null; ++ ++- private LazyIterator(Class service, ClassLoader loader) { +++ private LazyIterator(Class service, ClassLoader loader) { ++ this.service = service; ++ this.loader = loader; ++ } ++@@ -272,13 +272,13 @@ ++ if (!configs.hasMoreElements()) { ++ return false; ++ } ++- pending = parse(service, (URL)configs.nextElement(), returned); +++ pending = parse(service, configs.nextElement(), returned); ++ } ++- nextName = (String)pending.next(); +++ nextName = pending.next(); ++ return true; ++ } ++ ++- public Object next() throws ServiceConfigurationError { +++ public S next() throws ServiceConfigurationError { ++ if (!hasNext()) { ++ throw new NoSuchElementException(); ++ } ++@@ -350,10 +350,10 @@ ++ * @see #providers(java.lang.Class) ++ * @see #installedProviders(java.lang.Class) ++ */ ++- public static Iterator providers(Class service, ClassLoader loader) +++ public static Iterator providers(Class service, ClassLoader loader) ++ throws ServiceConfigurationError ++ { ++- return new LazyIterator(service, loader); +++ return new LazyIterator(service, loader); ++ } ++ ++ ++@@ -382,7 +382,7 @@ ++ * ++ * @see #providers(java.lang.Class, java.lang.ClassLoader) ++ */ ++- public static Iterator providers(Class service) +++ public static Iterator providers(Class service) ++ throws ServiceConfigurationError ++ { ++ ClassLoader cl = Thread.currentThread().getContextClassLoader(); ++@@ -419,7 +419,7 @@ ++ * ++ * @see #providers(java.lang.Class, java.lang.ClassLoader) ++ */ ++- public static Iterator installedProviders(Class service) +++ public static Iterator installedProviders(Class service) ++ throws ServiceConfigurationError ++ { ++ ClassLoader cl = ClassLoader.getSystemClassLoader(); ++diff --git openjdk/jdk/src/share/classes/sun/misc/Signal.java openjdk/jdk/src/share/classes/sun/misc/Signal.java ++--- openjdk/jdk/src/share/classes/sun/misc/Signal.java +++++ openjdk/jdk/src/share/classes/sun/misc/Signal.java ++@@ -72,8 +72,8 @@ ++ * @since 1.2 ++ */ ++ public final class Signal { ++- private static Hashtable handlers = new Hashtable(4); ++- private static Hashtable signals = new Hashtable(4); +++ private static Hashtable handlers = new Hashtable<>(4); +++ private static Hashtable signals = new Hashtable<>(4); ++ ++ private int number; ++ private String name; ++@@ -166,9 +166,9 @@ ++ throw new IllegalArgumentException ++ ("Signal already used by VM or OS: " + sig); ++ } ++- signals.put(new Integer(sig.number), sig); +++ signals.put(sig.number, sig); ++ synchronized (handlers) { ++- SignalHandler oldHandler = (SignalHandler)handlers.get(sig); +++ SignalHandler oldHandler = handlers.get(sig); ++ handlers.remove(sig); ++ if (newH == 2) { ++ handlers.put(sig, handler); ++@@ -200,8 +200,8 @@ ++ ++ /* Called by the VM to execute Java signal handlers. */ ++ private static void dispatch(final int number) { ++- final Signal sig = (Signal)signals.get(new Integer(number)); ++- final SignalHandler handler = (SignalHandler)handlers.get(sig); +++ final Signal sig = signals.get(number); +++ final SignalHandler handler = handlers.get(sig); ++ ++ Runnable runnable = new Runnable () { ++ public void run() { ++diff --git openjdk/jdk/test/sun/misc/JarIndex/metaInfFilenames/Basic.java openjdk/jdk/test/sun/misc/JarIndex/metaInfFilenames/Basic.java ++--- openjdk/jdk/test/sun/misc/JarIndex/metaInfFilenames/Basic.java +++++ openjdk/jdk/test/sun/misc/JarIndex/metaInfFilenames/Basic.java ++@@ -154,8 +154,7 @@ ++ /* run javac */ ++ static void compile(String... args) { ++ debug("Running: javac " + Arrays.toString(args)); ++- com.sun.tools.javac.Main compiler = new com.sun.tools.javac.Main(); ++- if (compiler.compile(args) != 0) { +++ if (com.sun.tools.javac.Main.compile(args) != 0) { ++ throw new RuntimeException("javac failed: args=" + Arrays.toString(args)); ++ } ++ } ++@@ -259,7 +258,7 @@ ++ URLClassLoader loader = getLoader(baseURL); ++ httpServer.reset(); ++ ++- Class messageServiceClass = null; +++ Class messageServiceClass = null; ++ try { ++ messageServiceClass = loader.loadClass(serviceClass); ++ } catch (ClassNotFoundException cnfe) { ++@@ -267,7 +266,7 @@ ++ throw new RuntimeException("Error in test: " + cnfe); ++ } ++ ++- Iterator> iterator = sun.misc.Service.providers(messageServiceClass, loader); +++ Iterator iterator = sun.misc.Service.providers(messageServiceClass, loader); ++ if (expectToFind && !iterator.hasNext()) { ++ debug(messageServiceClass + " NOT found."); ++ return false; ++@@ -301,7 +300,7 @@ ++ URLClassLoader loader = getLoader(baseURL); ++ httpServer.reset(); ++ ++- Class messageServiceClass = null; +++ Class messageServiceClass = null; ++ try { ++ messageServiceClass = loader.loadClass(serviceClass); ++ } catch (ClassNotFoundException cnfe) { ++@@ -309,7 +308,7 @@ ++ throw new RuntimeException("Error in test: " + cnfe); ++ } ++ ++- Iterator> iterator = (ServiceLoader.load(messageServiceClass, loader)).iterator(); +++ Iterator iterator = (ServiceLoader.load(messageServiceClass, loader)).iterator(); ++ if (expectToFind && !iterator.hasNext()) { ++ debug(messageServiceClass + " NOT found."); ++ return false; ++@@ -345,7 +344,7 @@ ++ URLClassLoader loader = getLoader(baseURL); ++ httpServer.reset(); ++ ++- Class ADotAKlass = null; +++ Class ADotAKlass = null; ++ try { ++ ADotAKlass = loader.loadClass("a.A"); ++ } catch (ClassNotFoundException cnfe) { ++# HG changeset patch ++# User igerasim ++# Date 1539570966 -3600 ++# Mon Oct 15 03:36:06 2018 +0100 ++# Node ID 45f1ac6cf8b6fb1df69c970113a0001d3b61fc06 ++# Parent 27a49c2cf31e70b6c770346306f308a42ab455f7 ++8194534: Manifest better support ++Reviewed-by: mchung, igerasim ++ ++diff --git openjdk/jdk/src/share/classes/java/net/URLClassLoader.java openjdk/jdk/src/share/classes/java/net/URLClassLoader.java ++--- openjdk/jdk/src/share/classes/java/net/URLClassLoader.java +++++ openjdk/jdk/src/share/classes/java/net/URLClassLoader.java ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -41,6 +41,7 @@ ++ import java.security.Permission; ++ import java.security.PermissionCollection; ++ import sun.misc.Resource; +++import sun.misc.SharedSecrets; ++ import sun.misc.URLClassPath; ++ import sun.net.www.ParseUtil; ++ import sun.security.util.SecurityConstants; ++@@ -461,13 +462,13 @@ ++ protected Package definePackage(String name, Manifest man, URL url) ++ throws IllegalArgumentException ++ { ++- String path = name.replace('.', '/').concat("/"); ++ String specTitle = null, specVersion = null, specVendor = null; ++ String implTitle = null, implVersion = null, implVendor = null; ++ String sealed = null; ++ URL sealBase = null; ++ ++- Attributes attr = man.getAttributes(path); +++ Attributes attr = SharedSecrets.javaUtilJarAccess() +++ .getTrustedAttributes(man, name.replace('.', '/').concat("/")); ++ if (attr != null) { ++ specTitle = attr.getValue(Name.SPECIFICATION_TITLE); ++ specVersion = attr.getValue(Name.SPECIFICATION_VERSION); ++@@ -511,10 +512,12 @@ ++ /* ++ * Returns true if the specified package name is sealed according to the ++ * given manifest. +++ * +++ * @throws SecurityException if the package name is untrusted in the manifest ++ */ ++ private boolean isSealed(String name, Manifest man) { ++- String path = name.replace('.', '/').concat("/"); ++- Attributes attr = man.getAttributes(path); +++ Attributes attr = SharedSecrets.javaUtilJarAccess() +++ .getTrustedAttributes(man, name.replace('.', '/').concat("/")); ++ String sealed = null; ++ if (attr != null) { ++ sealed = attr.getValue(Name.SEALED); ++diff --git openjdk/jdk/src/share/classes/java/util/jar/JarFile.java openjdk/jdk/src/share/classes/java/util/jar/JarFile.java ++--- openjdk/jdk/src/share/classes/java/util/jar/JarFile.java +++++ openjdk/jdk/src/share/classes/java/util/jar/JarFile.java ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -178,10 +178,10 @@ ++ if (manEntry != null) { ++ if (verify) { ++ byte[] b = getBytes(manEntry); ++- man = new Manifest(new ByteArrayInputStream(b)); ++ if (!jvInitialized) { ++ jv = new JarVerifier(b); ++ } +++ man = new Manifest(jv, new ByteArrayInputStream(b)); ++ } else { ++ man = new Manifest(super.getInputStream(manEntry)); ++ } ++diff --git openjdk/jdk/src/share/classes/java/util/jar/JarVerifier.java openjdk/jdk/src/share/classes/java/util/jar/JarVerifier.java ++--- openjdk/jdk/src/share/classes/java/util/jar/JarVerifier.java +++++ openjdk/jdk/src/share/classes/java/util/jar/JarVerifier.java ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -878,4 +878,24 @@ ++ static CodeSource getUnsignedCS(URL url) { ++ return new VerifierCodeSource(null, url, (java.security.cert.Certificate[]) null); ++ } +++ +++ /** +++ * Returns whether the name is trusted. Used by +++ * {@link Manifest#getTrustedAttributes(String)}. +++ */ +++ boolean isTrustedManifestEntry(String name) { +++ // How many signers? MANIFEST.MF is always verified +++ CodeSigner[] forMan = verifiedSigners.get(JarFile.MANIFEST_NAME); +++ if (forMan == null) { +++ return true; +++ } +++ // Check sigFileSigners first, because we are mainly dealing with +++ // non-file entries which will stay in sigFileSigners forever. +++ CodeSigner[] forName = sigFileSigners.get(name); +++ if (forName == null) { +++ forName = verifiedSigners.get(name); +++ } +++ // Returns trusted if all signers sign the entry +++ return forName != null && forName.length == forMan.length; +++ } ++ } ++diff --git openjdk/jdk/src/share/classes/java/util/jar/JavaUtilJarAccessImpl.java openjdk/jdk/src/share/classes/java/util/jar/JavaUtilJarAccessImpl.java ++--- openjdk/jdk/src/share/classes/java/util/jar/JavaUtilJarAccessImpl.java +++++ openjdk/jdk/src/share/classes/java/util/jar/JavaUtilJarAccessImpl.java ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 2002, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -60,4 +60,9 @@ ++ public List getManifestDigests(JarFile jar) { ++ return jar.getManifestDigests(); ++ } +++ +++ public Attributes getTrustedAttributes(Manifest man, String name) { +++ return man.getTrustedAttributes(name); +++ } +++ ++ } ++diff --git openjdk/jdk/src/share/classes/java/util/jar/Manifest.java openjdk/jdk/src/share/classes/java/util/jar/Manifest.java ++--- openjdk/jdk/src/share/classes/java/util/jar/Manifest.java +++++ openjdk/jdk/src/share/classes/java/util/jar/Manifest.java ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -48,15 +48,19 @@ ++ */ ++ public class Manifest implements Cloneable { ++ // manifest main attributes ++- private Attributes attr = new Attributes(); +++ private final Attributes attr = new Attributes(); ++ ++ // manifest entries ++- private Map entries = new HashMap<>(); +++ private final Map entries = new HashMap<>(); +++ +++ // associated JarVerifier, not null when called by JarFile::getManifest. +++ private final JarVerifier jv; ++ ++ /** ++ * Constructs a new, empty Manifest. ++ */ ++ public Manifest() { +++ jv = null; ++ } ++ ++ /** ++@@ -66,7 +70,16 @@ ++ * @throws IOException if an I/O error has occurred ++ */ ++ public Manifest(InputStream is) throws IOException { +++ this(null, is); +++ } +++ +++ /** +++ * Constructs a new Manifest from the specified input stream +++ * and associates it with a JarVerifier. +++ */ +++ Manifest(JarVerifier jv, InputStream is) throws IOException { ++ read(is); +++ this.jv = jv; ++ } ++ ++ /** ++@@ -77,6 +90,7 @@ ++ public Manifest(Manifest man) { ++ attr.putAll(man.getMainAttributes()); ++ entries.putAll(man.getEntries()); +++ jv = man.jv; ++ } ++ ++ /** ++@@ -127,6 +141,23 @@ ++ } ++ ++ /** +++ * Returns the Attributes for the specified entry name, if trusted. +++ * +++ * @param name entry name +++ * @return returns the same result as {@link #getAttributes(String)} +++ * @throws SecurityException if the associated jar is signed but this entry +++ * has been modified after signing (i.e. the section in the manifest +++ * does not exist in SF files of all signers). +++ */ +++ Attributes getTrustedAttributes(String name) { +++ Attributes result = getAttributes(name); +++ if (result != null && jv != null && ! jv.isTrustedManifestEntry(name)) { +++ throw new SecurityException("Untrusted manifest entry: " + name); +++ } +++ return result; +++ } +++ +++ /** ++ * Clears the main Attributes as well as the entries in this Manifest. ++ */ ++ public void clear() { ++diff --git openjdk/jdk/src/share/classes/sun/misc/JavaUtilJarAccess.java openjdk/jdk/src/share/classes/sun/misc/JavaUtilJarAccess.java ++--- openjdk/jdk/src/share/classes/sun/misc/JavaUtilJarAccess.java +++++ openjdk/jdk/src/share/classes/sun/misc/JavaUtilJarAccess.java ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 2002, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -30,8 +30,10 @@ ++ import java.security.CodeSource; ++ import java.util.Enumeration; ++ import java.util.List; +++import java.util.jar.Attributes; ++ import java.util.jar.JarEntry; ++ import java.util.jar.JarFile; +++import java.util.jar.Manifest; ++ ++ public interface JavaUtilJarAccess { ++ public boolean jarFileHasClassPathAttribute(JarFile jar) throws IOException; ++@@ -41,4 +43,5 @@ ++ public Enumeration entries2(JarFile jar); ++ public void setEagerValidation(JarFile jar, boolean eager); ++ public List getManifestDigests(JarFile jar); +++ public Attributes getTrustedAttributes(Manifest man, String name); ++ } ++# HG changeset patch ++# User kaddepalli ++# Date 1539574038 -3600 ++# Mon Oct 15 04:27:18 2018 +0100 ++# Node ID 4b272a7a3e6fe4fbb83ee07f01af37b7f95fc12d ++# Parent 45f1ac6cf8b6fb1df69c970113a0001d3b61fc06 ++8194546: Choosier FileManagers ++8207336: Build failure in JDK8u on Windows after fix 8207260 ++Reviewed-by: prr, serb, skoivu, rhalade ++ ++diff --git openjdk/jdk/src/windows/classes/sun/awt/shell/Win32ShellFolder2.java openjdk/jdk/src/windows/classes/sun/awt/shell/Win32ShellFolder2.java ++--- openjdk/jdk/src/windows/classes/sun/awt/shell/Win32ShellFolder2.java +++++ openjdk/jdk/src/windows/classes/sun/awt/shell/Win32ShellFolder2.java ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -677,7 +677,7 @@ ++ } ++ ++ try { ++- return invoke(new Callable() { +++ File[] files = invoke(new Callable() { ++ public File[] call() throws InterruptedException { ++ if (!isDirectory()) { ++ return null; ++@@ -732,6 +732,9 @@ ++ : list.toArray(new ShellFolder[list.size()]); ++ } ++ }, InterruptedException.class); +++ +++ return Win32ShellFolderManager2.checkFiles(files); +++ ++ } catch (InterruptedException e) { ++ return new File[0]; ++ } ++diff --git openjdk/jdk/src/windows/classes/sun/awt/shell/Win32ShellFolderManager2.java openjdk/jdk/src/windows/classes/sun/awt/shell/Win32ShellFolderManager2.java ++--- openjdk/jdk/src/windows/classes/sun/awt/shell/Win32ShellFolderManager2.java +++++ openjdk/jdk/src/windows/classes/sun/awt/shell/Win32ShellFolderManager2.java ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -380,21 +380,30 @@ ++ return null; ++ } ++ ++- private File checkFile(File file) { +++ private static File checkFile(File file) { ++ SecurityManager sm = System.getSecurityManager(); ++ return (sm == null || file == null) ? file : checkFile(file, sm); ++ } ++ ++- private File checkFile(File file, SecurityManager sm) { +++ private static File checkFile(File file, SecurityManager sm) { ++ try { ++ sm.checkRead(file.getPath()); +++ +++ if (file instanceof Win32ShellFolder2) { +++ Win32ShellFolder2 f = (Win32ShellFolder2)file; +++ if (f.isLink()) { +++ Win32ShellFolder2 link = (Win32ShellFolder2)f.getLinkLocation(); +++ if (link != null) +++ sm.checkRead(link.getPath()); +++ } +++ } ++ return file; ++ } catch (SecurityException se) { ++ return null; ++ } ++ } ++ ++- private File[] checkFiles(File[] files) { +++ static File[] checkFiles(File[] files) { ++ SecurityManager sm = System.getSecurityManager(); ++ if (sm == null || files == null || files.length == 0) { ++ return files; ++@@ -402,7 +411,7 @@ ++ return checkFiles(Arrays.asList(files), sm); ++ } ++ ++- private File[] checkFiles(List files) { +++ private static File[] checkFiles(List files) { ++ SecurityManager sm = System.getSecurityManager(); ++ if (sm == null || files.isEmpty()) { ++ return files.toArray(new File[files.size()]); ++@@ -410,7 +419,7 @@ ++ return checkFiles(files, sm); ++ } ++ ++- private File[] checkFiles(List files, SecurityManager sm) { +++ private static File[] checkFiles(List files, SecurityManager sm) { ++ List checkedFiles = new ArrayList(files.size()); ++ for (File file: files) { ++ if(checkFile(file, sm) != null){ ++# HG changeset patch ++# User igerasim ++# Date 1539579305 -3600 ++# Mon Oct 15 05:55:05 2018 +0100 ++# Node ID ca7454deac63b4b3053a3cd8e7f740118d47a67c ++# Parent 4b272a7a3e6fe4fbb83ee07f01af37b7f95fc12d ++8195868: Address Internet Addresses ++Reviewed-by: chegar, rriggs, igerasim, skoivu, rhalade ++ ++diff --git openjdk/jdk/src/share/classes/java/net/InetAddress.java openjdk/jdk/src/share/classes/java/net/InetAddress.java ++--- openjdk/jdk/src/share/classes/java/net/InetAddress.java +++++ openjdk/jdk/src/share/classes/java/net/InetAddress.java ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 1995, 2015, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 1995, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -37,6 +37,7 @@ ++ import java.io.ObjectStreamException; ++ import java.io.ObjectStreamField; ++ import java.io.IOException; +++import java.io.InvalidObjectException; ++ import java.io.ObjectInputStream; ++ import java.io.ObjectInputStream.GetField; ++ import java.io.ObjectOutputStream; ++@@ -1596,8 +1597,11 @@ ++ } ++ GetField gf = s.readFields(); ++ String host = (String)gf.get("hostName", null); ++- int address= gf.get("address", 0); ++- int family= gf.get("family", 0); +++ int address = gf.get("address", 0); +++ int family = gf.get("family", 0); +++ if (family != IPv4 && family != IPv6) { +++ throw new InvalidObjectException("invalid address family type: " + family); +++ } ++ InetAddressHolder h = new InetAddressHolder(host, address, family); ++ UNSAFE.putObject(this, FIELDS_OFFSET, h); ++ } ++diff --git openjdk/jdk/src/share/classes/java/net/NetworkInterface.java openjdk/jdk/src/share/classes/java/net/NetworkInterface.java ++--- openjdk/jdk/src/share/classes/java/net/NetworkInterface.java +++++ openjdk/jdk/src/share/classes/java/net/NetworkInterface.java ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -312,8 +312,20 @@ ++ if (addr == null) { ++ throw new NullPointerException(); ++ } ++- if (!(addr instanceof Inet4Address || addr instanceof Inet6Address)) { ++- throw new IllegalArgumentException ("invalid address type"); +++ if (addr instanceof Inet4Address) { +++ Inet4Address inet4Address = (Inet4Address) addr; +++ if (inet4Address.holder.family != InetAddress.IPv4) { +++ throw new IllegalArgumentException("invalid family type: " +++ + inet4Address.holder.family); +++ } +++ } else if (addr instanceof Inet6Address) { +++ Inet6Address inet6Address = (Inet6Address) addr; +++ if (inet6Address.holder.family != InetAddress.IPv6) { +++ throw new IllegalArgumentException("invalid family type: " +++ + inet6Address.holder.family); +++ } +++ } else { +++ throw new IllegalArgumentException("invalid address type: " + addr); ++ } ++ return getByInetAddress0(addr); ++ } ++diff --git openjdk/jdk/src/solaris/native/java/net/NetworkInterface.c openjdk/jdk/src/solaris/native/java/net/NetworkInterface.c ++--- openjdk/jdk/src/solaris/native/java/net/NetworkInterface.c +++++ openjdk/jdk/src/solaris/native/java/net/NetworkInterface.c ++@@ -305,10 +305,18 @@ ++ jboolean match = JNI_FALSE; ++ ++ #ifdef AF_INET6 ++- int family = (getInetAddress_family(env, iaObj) == IPv4) ? AF_INET : AF_INET6; +++ int family = getInetAddress_family(env, iaObj); ++ JNU_CHECK_EXCEPTION_RETURN(env, NULL); +++ +++ if (family == IPv4) { +++ family = AF_INET; +++ } else if (family == IPv6) { +++ family = AF_INET6; +++ } else { +++ return NULL; // Invalid family +++ } ++ #else ++- int family = AF_INET; +++ int family = AF_INET; ++ #endif ++ ++ ifs = enumInterfaces(env); ++# HG changeset patch ++# User igerasim ++# Date 1539581376 -3600 ++# Mon Oct 15 06:29:36 2018 +0100 ++# Node ID 4479aa0c6dba0aaf46175c9cd6cd4b7aea3934ee ++# Parent ca7454deac63b4b3053a3cd8e7f740118d47a67c ++8195874: Improve jar specification adherence ++Summary: Also reviewed by Chris Ries ++Reviewed-by: alanb, mchung, rriggs ++ ++diff --git openjdk/jdk/src/share/classes/sun/misc/URLClassPath.java openjdk/jdk/src/share/classes/sun/misc/URLClassPath.java ++--- openjdk/jdk/src/share/classes/sun/misc/URLClassPath.java +++++ openjdk/jdk/src/share/classes/sun/misc/URLClassPath.java ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -37,6 +37,7 @@ ++ import java.util.jar.Attributes.Name; ++ import java.net.JarURLConnection; ++ import java.net.MalformedURLException; +++import java.net.URI; ++ import java.net.URL; ++ import java.net.URLConnection; ++ import java.net.HttpURLConnection; ++@@ -53,6 +54,7 @@ ++ import java.security.cert.Certificate; ++ import sun.misc.FileURLMapper; ++ import sun.net.util.URLUtil; +++import sun.security.action.GetPropertyAction; ++ ++ /** ++ * This class is used to maintain a search path of URLs for loading classes ++@@ -66,19 +68,28 @@ ++ private static final boolean DEBUG; ++ private static final boolean DISABLE_JAR_CHECKING; ++ private static final boolean DISABLE_ACC_CHECKING; +++ private static final boolean DISABLE_CP_URL_CHECK; +++ private static final boolean DEBUG_CP_URL_CHECK; ++ ++ static { ++ JAVA_VERSION = java.security.AccessController.doPrivileged( ++- new sun.security.action.GetPropertyAction("java.version")); +++ new GetPropertyAction("java.version")); ++ DEBUG = (java.security.AccessController.doPrivileged( ++- new sun.security.action.GetPropertyAction("sun.misc.URLClassPath.debug")) != null); +++ new GetPropertyAction("sun.misc.URLClassPath.debug")) != null); ++ String p = java.security.AccessController.doPrivileged( ++- new sun.security.action.GetPropertyAction("sun.misc.URLClassPath.disableJarChecking")); +++ new GetPropertyAction("sun.misc.URLClassPath.disableJarChecking")); ++ DISABLE_JAR_CHECKING = p != null ? p.equals("true") || p.equals("") : false; ++ ++ p = AccessController.doPrivileged( ++- new sun.security.action.GetPropertyAction("jdk.net.URLClassPath.disableRestrictedPermissions")); +++ new GetPropertyAction("jdk.net.URLClassPath.disableRestrictedPermissions")); ++ DISABLE_ACC_CHECKING = p != null ? p.equals("true") || p.equals("") : false; +++ +++ // This property will be removed in a later release +++ p = AccessController.doPrivileged( +++ new GetPropertyAction("jdk.net.URLClassPath.disableClassPathURLCheck")); +++ +++ DISABLE_CP_URL_CHECK = p != null ? p.equals("true") || p.isEmpty() : false; +++ DEBUG_CP_URL_CHECK = "debug".equals(p); ++ } ++ ++ /* The original search path of URLs. */ ++@@ -1052,11 +1063,51 @@ ++ int i = 0; ++ while (st.hasMoreTokens()) { ++ String path = st.nextToken(); ++- urls[i] = new URL(base, path); ++- i++; +++ URL url = DISABLE_CP_URL_CHECK ? new URL(base, path) : safeResolve(base, path); +++ if (url != null) { +++ urls[i] = url; +++ i++; +++ } +++ } +++ if (i == 0) { +++ urls = null; +++ } else if (i != urls.length) { +++ // Truncate nulls from end of array +++ urls = Arrays.copyOf(urls, i); ++ } ++ return urls; ++ } +++ +++ /* +++ * Return a URL for the given path resolved against the base URL, or +++ * null if the resulting URL is invalid. +++ */ +++ static URL safeResolve(URL base, String path) { +++ String child = path.replace(File.separatorChar, '/'); +++ try { +++ if (!URI.create(child).isAbsolute()) { +++ URL url = new URL(base, child); +++ if (base.getProtocol().equalsIgnoreCase("file")) { +++ return url; +++ } else { +++ String bp = base.getPath(); +++ String urlp = url.getPath(); +++ int pos = bp.lastIndexOf('/'); +++ if (pos == -1) { +++ pos = bp.length() - 1; +++ } +++ if (urlp.regionMatches(0, bp, 0, pos + 1) +++ && urlp.indexOf("..", pos) == -1) { +++ return url; +++ } +++ } +++ } +++ } catch (MalformedURLException | IllegalArgumentException e) {} +++ if (DEBUG_CP_URL_CHECK) { +++ System.err.println("Class-Path entry: \"" + path + "\" ignored in JAR file " + base); +++ } +++ return null; +++ } ++ } ++ ++ /* ++# HG changeset patch ++# User igerasim ++# Date 1523346960 25200 ++# Tue Apr 10 00:56:00 2018 -0700 ++# Node ID 760e41df7bc648ccb23520ccf9f1642d4c2b96ba ++# Parent 4479aa0c6dba0aaf46175c9cd6cd4b7aea3934ee ++8196897: Improve PRNG support ++Reviewed-by: weijun ++ ++diff --git openjdk/jdk/src/windows/native/sun/security/mscapi/security.cpp openjdk/jdk/src/windows/native/sun/security/mscapi/security.cpp ++--- openjdk/jdk/src/windows/native/sun/security/mscapi/security.cpp +++++ openjdk/jdk/src/windows/native/sun/security/mscapi/security.cpp ++@@ -153,7 +153,6 @@ ++ { ++ ++ HCRYPTPROV hCryptProv = NULL; ++- BYTE* pbData = NULL; ++ jbyte* reseedBytes = NULL; ++ jbyte* seedBytes = NULL; ++ jbyteArray result = NULL; ++@@ -197,25 +196,17 @@ ++ ++ result = NULL; ++ ++- } else if (length > 0) { ++- ++- pbData = new BYTE[length]; +++ } else { ++ ++- if (::CryptGenRandom( ++- hCryptProv, ++- length, ++- pbData) == FALSE) { ++- ++- ThrowException(env, PROVIDER_EXCEPTION, GetLastError()); ++- __leave; +++ if (length > 0) { +++ seed = env->NewByteArray(length); +++ if (seed == NULL) { +++ __leave; +++ } +++ } else { +++ length = env->GetArrayLength(seed); ++ } ++ ++- result = env->NewByteArray(length); ++- env->SetByteArrayRegion(result, 0, length, (jbyte*) pbData); ++- ++- } else { // length == 0 ++- ++- length = env->GetArrayLength(seed); ++ if ((seedBytes = env->GetByteArrayElements(seed, 0)) == NULL) { ++ __leave; ++ } ++@@ -240,9 +231,6 @@ ++ if (reseedBytes) ++ env->ReleaseByteArrayElements(seed, reseedBytes, JNI_ABORT); ++ ++- if (pbData) ++- delete [] pbData; ++- ++ if (seedBytes) ++ env->ReleaseByteArrayElements(seed, seedBytes, 0); // update orig ++ ++# HG changeset patch ++# User robm ++# Date 1531957065 25200 ++# Wed Jul 18 16:37:45 2018 -0700 ++# Node ID fc7acc076b848f547936353b19544e7da56146ec ++# Parent 760e41df7bc648ccb23520ccf9f1642d4c2b96ba ++8196902: Better HTTP redirection support ++Reviewed-by: michaelm ++ ++diff --git openjdk/jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java openjdk/jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java ++--- openjdk/jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java +++++ openjdk/jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 1995, 2013, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 1995, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -2456,6 +2456,8 @@ ++ // doesn't know about proxy. ++ useProxyResponseCode = true; ++ } else { +++ final URL prevURL = url; +++ ++ // maintain previous headers, just change the name ++ // of the file we're getting ++ url = locUrl; ++@@ -2484,6 +2486,14 @@ ++ poster = null; ++ if (!checkReuseConnection()) ++ connect(); +++ +++ if (!sameDestination(prevURL, url)) { +++ // Ensures pre-redirect user-set cookie will not be reset. +++ // CookieHandler, if any, will be queried to determine +++ // cookies for redirected URL, if any. +++ userCookies = null; +++ userCookies2 = null; +++ } ++ } else { ++ if (!checkReuseConnection()) ++ connect(); ++@@ -2506,11 +2516,52 @@ ++ } ++ requests.set("Host", host); ++ } +++ +++ if (!sameDestination(prevURL, url)) { +++ // Redirecting to a different destination will drop any +++ // security-sensitive headers, regardless of whether +++ // they are user-set or not. CookieHandler, if any, will be +++ // queried to determine cookies for redirected URL, if any. +++ userCookies = null; +++ userCookies2 = null; +++ requests.remove("Cookie"); +++ requests.remove("Cookie2"); +++ requests.remove("Authorization"); +++ +++ // check for preemptive authorization +++ AuthenticationInfo sauth = +++ AuthenticationInfo.getServerAuth(url); +++ if (sauth != null && sauth.supportsPreemptiveAuthorization() ) { +++ // Sets "Authorization" +++ requests.setIfNotSet(sauth.getHeaderName(), sauth.getHeaderValue(url,method)); +++ currentServerCredentials = sauth; +++ } +++ } ++ } ++ } ++ return true; ++ } ++ +++ /* Returns true iff the given URLs have the same host and effective port. */ +++ private static boolean sameDestination(URL firstURL, URL secondURL) { +++ assert firstURL.getProtocol().equalsIgnoreCase(secondURL.getProtocol()): +++ "protocols not equal: " + firstURL + " - " + secondURL; +++ +++ if (!firstURL.getHost().equalsIgnoreCase(secondURL.getHost())) +++ return false; +++ +++ int firstPort = firstURL.getPort(); +++ if (firstPort == -1) +++ firstPort = firstURL.getDefaultPort(); +++ int secondPort = secondURL.getPort(); +++ if (secondPort == -1) +++ secondPort = secondURL.getDefaultPort(); +++ if (firstPort != secondPort) +++ return false; +++ +++ return true; +++ } +++ ++ /* dummy byte buffer for reading off socket prior to closing */ ++ byte[] cdata = new byte [128]; ++ ++# HG changeset patch ++# User robm ++# Date 1539621418 -3600 ++# Mon Oct 15 17:36:58 2018 +0100 ++# Node ID 85a6e872bff8ef3ce5d0f9472f83af68c96d94e4 ++# Parent fc7acc076b848f547936353b19544e7da56146ec ++8199177: Enhance JNDI lookups ++Reviewed-by: vtewari ++ ++diff --git openjdk/jdk/src/share/classes/com/sun/naming/internal/VersionHelper12.java openjdk/jdk/src/share/classes/com/sun/naming/internal/VersionHelper12.java ++--- openjdk/jdk/src/share/classes/com/sun/naming/internal/VersionHelper12.java +++++ openjdk/jdk/src/share/classes/com/sun/naming/internal/VersionHelper12.java ++@@ -62,6 +62,25 @@ ++ } ++ ++ /** +++ * Determines whether classes may be loaded from an arbitrary URL code base. +++ */ +++ private static final String TRUST_URL_CODEBASE_PROPERTY = +++ "com.sun.jndi.ldap.object.trustURLCodebase"; +++ private static final String trustURLCodebase = +++ AccessController.doPrivileged( +++ new PrivilegedAction() { +++ public String run() { +++ try { +++ return System.getProperty(TRUST_URL_CODEBASE_PROPERTY, +++ "false"); +++ } catch (SecurityException e) { +++ return "false"; +++ } +++ } +++ } +++ ); +++ +++ /** ++ * Package private. ++ * ++ * This internal method is used with Thread Context Class Loader (TCCL), ++@@ -79,12 +98,15 @@ ++ */ ++ public Class loadClass(String className, String codebase) ++ throws ClassNotFoundException, MalformedURLException { +++ if ("true".equalsIgnoreCase(trustURLCodebase)) { +++ ClassLoader parent = getContextClassLoader(); +++ ClassLoader cl = +++ URLClassLoader.newInstance(getUrlArray(codebase), parent); ++ ++- ClassLoader parent = getContextClassLoader(); ++- ClassLoader cl = ++- URLClassLoader.newInstance(getUrlArray(codebase), parent); ++- ++- return loadClass(className, cl); +++ return loadClass(className, cl); +++ } else { +++ return null; +++ } ++ } ++ ++ String getJndiProperty(final int i) { ++# HG changeset patch ++# User apetcher ++# Date 1524499306 14400 ++# Mon Apr 23 12:01:46 2018 -0400 ++# Node ID 6462dee4b518d8482b42ead4f3830200b0f189d2 ++# Parent 85a6e872bff8ef3ce5d0f9472f83af68c96d94e4 ++8201756: Improve cipher inputs ++Summary: Clarify spec of CipherInputStream in Javadoc comments ++Reviewed-by: ascarpino ++ ++diff --git openjdk/jdk/src/share/classes/javax/crypto/CipherInputStream.java openjdk/jdk/src/share/classes/javax/crypto/CipherInputStream.java ++--- openjdk/jdk/src/share/classes/javax/crypto/CipherInputStream.java +++++ openjdk/jdk/src/share/classes/javax/crypto/CipherInputStream.java ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -50,6 +50,13 @@ ++ * that are not thrown by its ancestor classes. In particular, the ++ * skip method skips, and the available ++ * method counts only data that have been processed by the encapsulated Cipher. +++ * This class may catch BadPaddingException and other exceptions thrown by +++ * failed integrity checks during decryption. These exceptions are not +++ * re-thrown, so the client may not be informed that integrity checks +++ * failed. Because of this behavior, this class may not be suitable +++ * for use with decryption in an authenticated mode of operation (e.g. GCM). +++ * Applications that require authenticated encryption can use the Cipher API +++ * directly as an alternative to using this class. ++ * ++ *

It is crucial for a programmer using this class not to use ++ * methods that are not defined or overriden in this class (such as a ++# HG changeset patch ++# User igerasim ++# Date 1539654100 -3600 ++# Tue Oct 16 02:41:40 2018 +0100 ++# Node ID e2125a9b0933738f5a190a20c63f5a8d0bbac0a6 ++# Parent 6462dee4b518d8482b42ead4f3830200b0f189d2 ++8202613: Improve TLS connections stability ++Reviewed-by: xuelei, wetmore ++ ++diff --git openjdk/jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java openjdk/jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java ++--- openjdk/jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java +++++ openjdk/jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 1996, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -704,7 +704,8 @@ ++ session = new SSLSessionImpl(protocolVersion, cipherSuite, ++ getLocalSupportedSignAlgs(), ++ mesg.sessionId, getHostSE(), getPortSE(), ++- (extendedMasterSecretExt != null)); +++ (extendedMasterSecretExt != null), +++ getEndpointIdentificationAlgorithmSE()); ++ setHandshakeSessionSE(session); ++ if (debug != null && Debug.isOn("handshake")) { ++ System.out.println("** " + cipherSuite); ++@@ -1344,6 +1345,24 @@ ++ } ++ } ++ +++ // ensure that the endpoint identification algorithm matches the +++ // one in the session +++ String identityAlg = getEndpointIdentificationAlgorithmSE(); +++ if (session != null && identityAlg != null) { +++ +++ String sessionIdentityAlg = +++ session.getEndpointIdentificationAlgorithm(); +++ if (!Objects.equals(identityAlg, sessionIdentityAlg)) { +++ +++ if (debug != null && Debug.isOn("session")) { +++ System.out.println("%% can't resume, endpoint id" + +++ " algorithm does not match, requested: " + +++ identityAlg + ", cached: " + sessionIdentityAlg); +++ } +++ session = null; +++ } +++ } +++ ++ if (session != null) { ++ if (debug != null) { ++ if (Debug.isOn("handshake") || Debug.isOn("session")) { ++diff --git openjdk/jdk/src/share/classes/sun/security/ssl/SSLSessionImpl.java openjdk/jdk/src/share/classes/sun/security/ssl/SSLSessionImpl.java ++--- openjdk/jdk/src/share/classes/sun/security/ssl/SSLSessionImpl.java +++++ openjdk/jdk/src/share/classes/sun/security/ssl/SSLSessionImpl.java ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 1996, 2017, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 1996, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -117,6 +117,10 @@ ++ private Principal peerPrincipal; ++ private Principal localPrincipal; ++ +++ // The endpoint identification algorithm used to check certificates +++ // in this session. +++ private final String endpointIdentificationAlgorithm; +++ ++ /* ++ * Is the session currently re-established with a session-resumption ++ * abbreviated initial handshake? ++@@ -148,7 +152,7 @@ ++ */ ++ private SSLSessionImpl() { ++ this(ProtocolVersion.NONE, CipherSuite.C_NULL, null, ++- new SessionId(false, null), null, -1, false); +++ new SessionId(false, null), null, -1, false, null); ++ } ++ ++ /* ++@@ -159,10 +163,10 @@ ++ SSLSessionImpl(ProtocolVersion protocolVersion, CipherSuite cipherSuite, ++ Collection algorithms, ++ SecureRandom generator, String host, int port, ++- boolean useExtendedMasterSecret) { +++ boolean useExtendedMasterSecret, String endpointIdAlgorithm) { ++ this(protocolVersion, cipherSuite, algorithms, ++ new SessionId(defaultRejoinable, generator), host, port, ++- useExtendedMasterSecret); +++ useExtendedMasterSecret, endpointIdAlgorithm); ++ } ++ ++ /* ++@@ -171,7 +175,8 @@ ++ SSLSessionImpl(ProtocolVersion protocolVersion, CipherSuite cipherSuite, ++ Collection algorithms, ++ SessionId id, String host, int port, ++- boolean useExtendedMasterSecret) { +++ boolean useExtendedMasterSecret, +++ String endpointIdAlgorithm){ ++ this.protocolVersion = protocolVersion; ++ sessionId = id; ++ peerCerts = null; ++@@ -184,6 +189,7 @@ ++ localSupportedSignAlgs = ++ SignatureAndHashAlgorithm.getAlgorithmNames(algorithms); ++ this.useExtendedMasterSecret = useExtendedMasterSecret; +++ this.endpointIdentificationAlgorithm = endpointIdAlgorithm; ++ ++ if (debug != null && Debug.isOn("session")) { ++ System.out.println("%% Initialized: " + this); ++@@ -245,6 +251,10 @@ ++ localPrincipal = principal; ++ } ++ +++ String getEndpointIdentificationAlgorithm() { +++ return this.endpointIdentificationAlgorithm; +++ } +++ ++ /** ++ * Returns true iff this session may be resumed ... sessions are ++ * usually resumable. Security policies may suggest otherwise, ++diff --git openjdk/jdk/src/share/classes/sun/security/ssl/ServerHandshaker.java openjdk/jdk/src/share/classes/sun/security/ssl/ServerHandshaker.java ++--- openjdk/jdk/src/share/classes/sun/security/ssl/ServerHandshaker.java +++++ openjdk/jdk/src/share/classes/sun/security/ssl/ServerHandshaker.java ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 1996, 2017, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 1996, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -664,6 +664,25 @@ ++ } ++ } ++ +++ // ensure that the endpoint identification algorithm matches the +++ // one in the session +++ String identityAlg = getEndpointIdentificationAlgorithmSE(); +++ if (resumingSession && identityAlg != null) { +++ +++ String sessionIdentityAlg = +++ previous.getEndpointIdentificationAlgorithm(); +++ if (!Objects.equals(identityAlg, sessionIdentityAlg)) { +++ +++ if (debug != null && Debug.isOn("session")) { +++ System.out.println("%% can't resume, endpoint id" +++ + " algorithm does not match, requested: " + +++ identityAlg + ", cached: " + +++ sessionIdentityAlg); +++ } +++ resumingSession = false; +++ } +++ } +++ ++ if (resumingSession) { ++ CipherSuite suite = previous.getSuite(); ++ // verify that the ciphersuite from the cached session ++@@ -735,7 +754,8 @@ ++ sslContext.getSecureRandom(), ++ getHostAddressSE(), getPortSE(), ++ (requestedToUseEMS && ++- (protocolVersion.v >= ProtocolVersion.TLS10.v))); +++ (protocolVersion.v >= ProtocolVersion.TLS10.v)), +++ getEndpointIdentificationAlgorithmSE()); ++ ++ if (protocolVersion.v >= ProtocolVersion.TLS12.v) { ++ if (peerSupportedSignAlgs != null) { ++# HG changeset patch ++# User igerasim ++# Date 1539655093 -3600 ++# Tue Oct 16 02:58:13 2018 +0100 ++# Node ID 55bc4bdd33fd1b470dcfba0230c3ad87d0344280 ++# Parent e2125a9b0933738f5a190a20c63f5a8d0bbac0a6 ++8203654: Improve cypher state updates ++Reviewed-by: ascarpino ++ ++diff --git openjdk/jdk/src/share/classes/javax/crypto/Cipher.java openjdk/jdk/src/share/classes/javax/crypto/Cipher.java ++--- openjdk/jdk/src/share/classes/javax/crypto/Cipher.java +++++ openjdk/jdk/src/share/classes/javax/crypto/Cipher.java ++@@ -2660,7 +2660,7 @@ ++ ++ // Input sanity check ++ if ((src == null) || (offset < 0) || (len < 0) ++- || ((len + offset) > src.length)) { +++ || (len > (src.length - offset))) { ++ throw new IllegalArgumentException("Bad arguments"); ++ } ++ ++diff --git openjdk/jdk/src/share/classes/javax/crypto/spec/GCMParameterSpec.java openjdk/jdk/src/share/classes/javax/crypto/spec/GCMParameterSpec.java ++--- openjdk/jdk/src/share/classes/javax/crypto/spec/GCMParameterSpec.java +++++ openjdk/jdk/src/share/classes/javax/crypto/spec/GCMParameterSpec.java ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -120,7 +120,7 @@ ++ ++ // Input sanity check ++ if ((src == null) ||(len < 0) || (offset < 0) ++- || ((len + offset) > src.length)) { +++ || (len > (src.length - offset))) { ++ throw new IllegalArgumentException("Invalid buffer arguments"); ++ } ++ ++# HG changeset patch ++# User serb ++# Date 1406837392 -3600 ++# Thu Jul 31 21:09:52 2014 +0100 ++# Node ID 5434e3f19a390f214c3b3af4d2a3ac2fc8290359 ++# Parent 55bc4bdd33fd1b470dcfba0230c3ad87d0344280 ++7058700: Unexpected exceptions and timeouts in SF2 parser code ++Reviewed-by: prr, pchelko ++ ++diff --git openjdk/jdk/src/share/classes/com/sun/media/sound/RIFFReader.java openjdk/jdk/src/share/classes/com/sun/media/sound/RIFFReader.java ++--- openjdk/jdk/src/share/classes/com/sun/media/sound/RIFFReader.java +++++ openjdk/jdk/src/share/classes/com/sun/media/sound/RIFFReader.java ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 2007, 2014, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -39,21 +39,20 @@ ++ private long filepointer = 0; ++ private final String fourcc; ++ private String riff_type = null; ++- private long ckSize = 0; +++ private long ckSize = Integer.MAX_VALUE; ++ private InputStream stream; ++- private long avail; +++ private long avail = Integer.MAX_VALUE; ++ private RIFFReader lastiterator = null; ++ ++ public RIFFReader(InputStream stream) throws IOException { ++ ++- if (stream instanceof RIFFReader) ++- root = ((RIFFReader)stream).root; ++- else +++ if (stream instanceof RIFFReader) { +++ root = ((RIFFReader) stream).root; +++ } else { ++ root = this; +++ } ++ ++ this.stream = stream; ++- avail = Integer.MAX_VALUE; ++- ckSize = Integer.MAX_VALUE; ++ ++ // Check for RIFF null paddings, ++ int b; ++@@ -75,9 +74,12 @@ ++ fourcc[0] = (byte) b; ++ readFully(fourcc, 1, 3); ++ this.fourcc = new String(fourcc, "ascii"); ++- ckSize = readUnsignedInt(); ++- ++- avail = this.ckSize; +++ final long size = readUnsignedInt(); +++ if (size > Integer.MAX_VALUE) { +++ throw new RIFFInvalidDataException("Chunk size too big"); +++ } +++ ckSize = size; +++ avail = size; ++ ++ if (getFormat().equals("RIFF") || getFormat().equals("LIST")) { ++ byte[] format = new byte[4]; ++@@ -118,19 +120,23 @@ ++ } ++ ++ public int read() throws IOException { ++- if (avail == 0) +++ if (avail == 0) { ++ return -1; +++ } ++ int b = stream.read(); ++- if (b == -1) +++ if (b == -1) { +++ avail = 0; ++ return -1; +++ } ++ avail--; ++ filepointer++; ++ return b; ++ } ++ ++ public int read(byte[] b, int offset, int len) throws IOException { ++- if (avail == 0) +++ if (avail == 0) { ++ return -1; +++ } ++ if (len > avail) { ++ int rlen = stream.read(b, offset, (int)avail); ++ if (rlen != -1) ++@@ -139,8 +145,10 @@ ++ return rlen; ++ } else { ++ int ret = stream.read(b, offset, len); ++- if (ret == -1) +++ if (ret == -1) { +++ avail = 0; ++ return -1; +++ } ++ avail -= ret; ++ filepointer += ret; ++ return ret; ++@@ -191,8 +199,10 @@ ++ return len; ++ } else { ++ long ret = stream.skip(n); ++- if (ret == -1) +++ if (ret == -1) { +++ avail = 0; ++ return -1; +++ } ++ avail -= ret; ++ filepointer += ret; ++ return ret; ++@@ -210,8 +220,13 @@ ++ } ++ ++ // Read ASCII chars from stream ++- public String readString(int len) throws IOException { ++- byte[] buff = new byte[len]; +++ public String readString(final int len) throws IOException { +++ final byte[] buff; +++ try { +++ buff = new byte[len]; +++ } catch (final OutOfMemoryError oom) { +++ throw new IOException("Length too big", oom); +++ } ++ readFully(buff); ++ for (int i = 0; i < buff.length; i++) { ++ if (buff[i] == 0) { ++diff --git openjdk/jdk/src/share/classes/com/sun/media/sound/SF2Soundbank.java openjdk/jdk/src/share/classes/com/sun/media/sound/SF2Soundbank.java ++--- openjdk/jdk/src/share/classes/com/sun/media/sound/SF2Soundbank.java +++++ openjdk/jdk/src/share/classes/com/sun/media/sound/SF2Soundbank.java ++@@ -276,6 +276,9 @@ ++ count--; ++ } ++ +++ if (presets_bagNdx.isEmpty()) { +++ throw new RIFFInvalidDataException(); +++ } ++ int offset = presets_bagNdx.get(0); ++ // Offset should be 0 (but just case) ++ for (int i = 0; i < offset; i++) { ++@@ -360,6 +363,9 @@ ++ count--; ++ } ++ +++ if (instruments_bagNdx.isEmpty()) { +++ throw new RIFFInvalidDataException(); +++ } ++ int offset = instruments_bagNdx.get(0); ++ // Offset should be 0 (but just case) ++ for (int i = 0; i < offset; i++) { ++@@ -401,6 +407,9 @@ ++ modulator.amount = chunk.readShort(); ++ modulator.amountSourceOperator = chunk.readUnsignedShort(); ++ modulator.transportOperator = chunk.readUnsignedShort(); +++ if (i < 0 || i >= instruments_splits_gen.size()) { +++ throw new RIFFInvalidDataException(); +++ } ++ SF2LayerRegion split = instruments_splits_gen.get(i); ++ if (split != null) ++ split.modulators.add(modulator); ++@@ -424,7 +433,8 @@ ++ sample.name = chunk.readString(20); ++ long start = chunk.readUnsignedInt(); ++ long end = chunk.readUnsignedInt(); ++- sample.data = sampleData.subbuffer(start * 2, end * 2, true); +++ if (sampleData != null) +++ sample.data = sampleData.subbuffer(start * 2, end * 2, true); ++ if (sampleData24 != null) ++ sample.data24 = sampleData24.subbuffer(start, end, true); ++ /* ++@@ -462,6 +472,9 @@ ++ int sampleid = split.generators.get( ++ SF2LayerRegion.GENERATOR_SAMPLEID); ++ split.generators.remove(SF2LayerRegion.GENERATOR_SAMPLEID); +++ if (sampleid < 0 || sampleid >= samples.size()) { +++ throw new RIFFInvalidDataException(); +++ } ++ split.sample = samples.get(sampleid); ++ } else { ++ globalsplit = split; ++@@ -488,6 +501,9 @@ ++ int instrumentid = split.generators.get( ++ SF2InstrumentRegion.GENERATOR_INSTRUMENT); ++ split.generators.remove(SF2LayerRegion.GENERATOR_INSTRUMENT); +++ if (instrumentid < 0 || instrumentid >= layers.size()) { +++ throw new RIFFInvalidDataException(); +++ } ++ split.layer = layers.get(instrumentid); ++ } else { ++ globalsplit = split; ++# HG changeset patch ++# User serb ++# Date 1407519646 -14400 ++# Fri Aug 08 21:40:46 2014 +0400 ++# Node ID 141854bbbd7346cce3dbcc6555fff7469dde5761 ++# Parent 5434e3f19a390f214c3b3af4d2a3ac2fc8290359 ++8054431: Some of the input validation in the javasound is too strict ++Reviewed-by: azvegint, alexsch ++ ++diff --git openjdk/jdk/src/share/classes/com/sun/media/sound/RIFFReader.java openjdk/jdk/src/share/classes/com/sun/media/sound/RIFFReader.java ++--- openjdk/jdk/src/share/classes/com/sun/media/sound/RIFFReader.java +++++ openjdk/jdk/src/share/classes/com/sun/media/sound/RIFFReader.java ++@@ -74,14 +74,13 @@ ++ fourcc[0] = (byte) b; ++ readFully(fourcc, 1, 3); ++ this.fourcc = new String(fourcc, "ascii"); ++- final long size = readUnsignedInt(); ++- if (size > Integer.MAX_VALUE) { ++- throw new RIFFInvalidDataException("Chunk size too big"); ++- } ++- ckSize = size; ++- avail = size; +++ ckSize = readUnsignedInt(); +++ avail = ckSize; ++ ++ if (getFormat().equals("RIFF") || getFormat().equals("LIST")) { +++ if (avail > Integer.MAX_VALUE) { +++ throw new RIFFInvalidDataException("Chunk size too big"); +++ } ++ byte[] format = new byte[4]; ++ readFully(format); ++ this.riff_type = new String(format, "ascii"); ++# HG changeset patch ++# User serb ++# Date 1531228845 -10800 ++# Tue Jul 10 16:20:45 2018 +0300 ++# Node ID 42d95ffe1c5e81dabe54bc7eebe225c945b4d219 ++# Parent 141854bbbd7346cce3dbcc6555fff7469dde5761 ++8205361: Better RIFF reading support ++Reviewed-by: prr, rhalade, mschoene ++ ++diff --git openjdk/jdk/src/share/classes/com/sun/media/sound/DLSSoundbank.java openjdk/jdk/src/share/classes/com/sun/media/sound/DLSSoundbank.java ++--- openjdk/jdk/src/share/classes/com/sun/media/sound/DLSSoundbank.java +++++ openjdk/jdk/src/share/classes/com/sun/media/sound/DLSSoundbank.java ++@@ -548,7 +548,7 @@ ++ long count = riff.readUnsignedInt(); ++ ++ if (size - 8 != 0) ++- riff.skipBytes(size - 8); +++ riff.skip(size - 8); ++ ++ for (int i = 0; i < count; i++) { ++ DLSModulator modulator = new DLSModulator(); ++@@ -568,7 +568,7 @@ ++ long count = riff.readUnsignedInt(); ++ ++ if (size - 8 != 0) ++- riff.skipBytes(size - 8); +++ riff.skip(size - 8); ++ ++ for (int i = 0; i < count; i++) { ++ DLSModulator modulator = new DLSModulator(); ++@@ -661,7 +661,7 @@ ++ long loops = riff.readInt(); ++ ++ if (size > 20) ++- riff.skipBytes(size - 20); +++ riff.skip(size - 20); ++ ++ for (int i = 0; i < loops; i++) { ++ DLSSampleLoop loop = new DLSSampleLoop(); ++@@ -671,7 +671,7 @@ ++ loop.length = riff.readUnsignedInt(); ++ sampleOptions.loops.add(loop); ++ if (size2 > 16) ++- riff.skipBytes(size2 - 16); +++ riff.skip(size2 - 16); ++ } ++ } ++ ++diff --git openjdk/jdk/src/share/classes/com/sun/media/sound/RIFFReader.java openjdk/jdk/src/share/classes/com/sun/media/sound/RIFFReader.java ++--- openjdk/jdk/src/share/classes/com/sun/media/sound/RIFFReader.java +++++ openjdk/jdk/src/share/classes/com/sun/media/sound/RIFFReader.java ++@@ -172,49 +172,41 @@ ++ } ++ } ++ ++- public final long skipBytes(long n) throws IOException { ++- if (n < 0) +++ @Override +++ public long skip(final long n) throws IOException { +++ if (n <= 0 || avail == 0) { ++ return 0; ++- long skipped = 0; ++- while (skipped != n) { ++- long s = skip(n - skipped); ++- if (s < 0) ++- break; ++- if (s == 0) +++ } +++ // will not skip more than +++ long remaining = Math.min(n, avail); +++ while (remaining > 0) { +++ // Some input streams like FileInputStream can return more bytes, +++ // when EOF is reached. +++ long ret = Math.min(stream.skip(remaining), remaining); +++ if (ret == 0) { +++ // EOF or not? we need to check. ++ Thread.yield(); ++- skipped += s; +++ if (stream.read() == -1) { +++ avail = 0; +++ break; +++ } +++ ret = 1; +++ } +++ remaining -= ret; +++ avail -= ret; +++ filepointer += ret; ++ } ++- return skipped; +++ return n - remaining; ++ } ++ ++- public long skip(long n) throws IOException { ++- if (avail == 0) ++- return -1; ++- if (n > avail) { ++- long len = stream.skip(avail); ++- if (len != -1) ++- filepointer += len; ++- avail = 0; ++- return len; ++- } else { ++- long ret = stream.skip(n); ++- if (ret == -1) { ++- avail = 0; ++- return -1; ++- } ++- avail -= ret; ++- filepointer += ret; ++- return ret; ++- } ++- } ++- +++ @Override ++ public int available() { ++ return (int)avail; ++ } ++ ++ public void finish() throws IOException { ++ if (avail != 0) { ++- skipBytes(avail); +++ skip(avail); ++ } ++ } ++ ++@@ -337,6 +329,7 @@ ++ return ch1 + (ch2 << 8) | (ch3 << 16) | (ch4 << 24); ++ } ++ +++ @Override ++ public void close() throws IOException { ++ finish(); ++ if (this == root) ++# HG changeset patch ++# User igerasim ++# Date 1516239578 28800 ++# Wed Jan 17 17:39:38 2018 -0800 ++# Node ID 2063b55bf83ce93cef76eb49d767982f3b07679a ++# Parent 42d95ffe1c5e81dabe54bc7eebe225c945b4d219 ++8049834: Two security tools tests do not run with only JRE ++Reviewed-by: mullan ++ ++diff --git openjdk/jdk/test/sun/security/tools/jarsigner/weaksize.sh openjdk/jdk/test/sun/security/tools/jarsigner/weaksize.sh ++new file mode 100644 ++--- /dev/null +++++ openjdk/jdk/test/sun/security/tools/jarsigner/weaksize.sh ++@@ -0,0 +1,60 @@ +++# +++# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. +++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +++# +++# This code is free software; you can redistribute it and/or modify it +++# under the terms of the GNU General Public License version 2 only, as +++# published by the Free Software Foundation. +++# +++# This code is distributed in the hope that it will be useful, but WITHOUT +++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +++# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +++# version 2 for more details (a copy is included in the LICENSE file that +++# accompanied this code). +++# +++# You should have received a copy of the GNU General Public License version +++# 2 along with this work; if not, write to the Free Software Foundation, +++# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +++# +++# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +++# or visit www.oracle.com if you need additional information or have any +++# questions. +++# +++ +++# @test +++# @bug 8044755 +++# @summary Add a test for algorithm constraints check in jarsigner +++# +++ +++if [ "${TESTJAVA}" = "" ] ; then +++ JAVAC_CMD=`which javac` +++ TESTJAVA=`dirname $JAVAC_CMD`/.. +++fi +++ +++# The sigalg used is MD2withRSA, which is obsolete. +++ +++KT="$TESTJAVA/bin/keytool ${TESTTOOLVMOPTS} -keystore ks +++ -storepass changeit -keypass changeit +++ -keyalg rsa -sigalg MD2withRSA -debug" +++JS="$TESTJAVA/bin/jarsigner ${TESTTOOLVMOPTS} -keystore ks +++ -storepass changeit -strict -debug" +++JAR="$TESTJAVA/bin/jar ${TESTTOOLVMOPTS}" +++ +++rm ks 2> /dev/null +++ +++$KT -genkeypair -alias ca -dname CN=CA -ext bc +++$KT -genkeypair -alias signer -dname CN=Signer +++ +++$KT -certreq -alias signer | \ +++ $KT -gencert -alias ca -ext ku=dS -rfc | \ +++ $KT -importcert -alias signer +++ +++$JAR cvf a.jar ks +++ +++# We always trust a TrustedCertificateEntry +++$JS a.jar ca || exit 1 +++ +++# An end-entity cert must follow algorithm constraints +++$JS a.jar signer && exit 2 +++ +++exit 0 ++# HG changeset patch ++# User igerasim ++# Date 1539662613 -3600 ++# Tue Oct 16 05:03:33 2018 +0100 ++# Node ID 3e354d6e1478fb657f20cbf0d7a7e67c2ebff72a ++# Parent 2063b55bf83ce93cef76eb49d767982f3b07679a ++8044860: Vectors and fixed length fields should be verified for allowed sizes. ++Reviewed-by: xuelei ++ ++diff --git openjdk/jdk/src/share/classes/sun/security/ssl/HandshakeMessage.java openjdk/jdk/src/share/classes/sun/security/ssl/HandshakeMessage.java ++--- openjdk/jdk/src/share/classes/sun/security/ssl/HandshakeMessage.java +++++ openjdk/jdk/src/share/classes/sun/security/ssl/HandshakeMessage.java ++@@ -234,6 +234,7 @@ ++ protocolVersion = ProtocolVersion.valueOf(s.getInt8(), s.getInt8()); ++ clnt_random = new RandomCookie(s); ++ sessionId = new SessionId(s.getBytes8()); +++ sessionId.checkLength(protocolVersion); ++ cipherSuites = new CipherSuiteList(s); ++ compression_methods = s.getBytes8(); ++ if (messageLength() != messageLength) { ++@@ -353,6 +354,7 @@ ++ input.getInt8()); ++ svr_random = new RandomCookie(input); ++ sessionId = new SessionId(input.getBytes8()); +++ sessionId.checkLength(protocolVersion); ++ cipherSuite = CipherSuite.valueOf(input.getInt8(), input.getInt8()); ++ compression_method = (byte)input.getInt8(); ++ if (messageLength() != messageLength) { ++diff --git openjdk/jdk/src/share/classes/sun/security/ssl/SessionId.java openjdk/jdk/src/share/classes/sun/security/ssl/SessionId.java ++--- openjdk/jdk/src/share/classes/sun/security/ssl/SessionId.java +++++ openjdk/jdk/src/share/classes/sun/security/ssl/SessionId.java ++@@ -27,6 +27,7 @@ ++ package sun.security.ssl; ++ ++ import java.security.SecureRandom; +++import javax.net.ssl.SSLProtocolException; ++ ++ /** ++ * Encapsulates an SSL session ID. SSL Session IDs are not reused by ++@@ -41,6 +42,7 @@ ++ final ++ class SessionId ++ { +++ static int MAX_LENGTH = 32; ++ private byte sessionId []; // max 32 bytes ++ ++ /** Constructs a new session ID ... perhaps for a rejoinable session */ ++@@ -111,4 +113,19 @@ ++ } ++ return true; ++ } +++ +++ /** +++ * Checks the length of the session ID to make sure it sits within +++ * the range called out in the specification +++ */ +++ void checkLength(ProtocolVersion pv) throws SSLProtocolException { +++ // As of today all versions of TLS have a 32-byte maximum length. +++ // In the future we can do more here to support protocol versions +++ // that may have longer max lengths. +++ if (sessionId.length > MAX_LENGTH) { +++ throw new SSLProtocolException("Invalid session ID length (" + +++ sessionId.length + " bytes)"); +++ } +++ } +++ ++ } ++diff --git openjdk/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/ClientHandshaker/LengthCheckTest.java openjdk/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/ClientHandshaker/LengthCheckTest.java ++new file mode 100644 ++--- /dev/null +++++ openjdk/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/ClientHandshaker/LengthCheckTest.java ++@@ -0,0 +1,855 @@ +++/* +++ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. +++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +++ * +++ * This code is free software; you can redistribute it and/or modify it +++ * under the terms of the GNU General Public License version 2 only, as +++ * published by the Free Software Foundation. +++ * +++ * This code is distributed in the hope that it will be useful, but WITHOUT +++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +++ * version 2 for more details (a copy is included in the LICENSE file that +++ * accompanied this code). +++ * +++ * You should have received a copy of the GNU General Public License version +++ * 2 along with this work; if not, write to the Free Software Foundation, +++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +++ * +++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +++ * or visit www.oracle.com if you need additional information or have any +++ * questions. +++ */ +++ +++/* +++ * @test +++ * @bug 8044860 +++ * @summary Vectors and fixed length fields should be verified +++ * for allowed sizes. +++ * @run main/othervm LengthCheckTest +++ */ +++ +++/** +++ * A SSLEngine usage example which simplifies the presentation +++ * by removing the I/O and multi-threading concerns. +++ * +++ * The test creates two SSLEngines, simulating a client and server. +++ * The "transport" layer consists two byte buffers: think of them +++ * as directly connected pipes. +++ * +++ * Note, this is a *very* simple example: real code will be much more +++ * involved. For example, different threading and I/O models could be +++ * used, transport mechanisms could close unexpectedly, and so on. +++ * +++ * When this application runs, notice that several messages +++ * (wrap/unwrap) pass before any application data is consumed or +++ * produced. (For more information, please see the SSL/TLS +++ * specifications.) There may several steps for a successful handshake, +++ * so it's typical to see the following series of operations: +++ * +++ * client server message +++ * ====== ====== ======= +++ * wrap() ... ClientHello +++ * ... unwrap() ClientHello +++ * ... wrap() ServerHello/Certificate +++ * unwrap() ... ServerHello/Certificate +++ * wrap() ... ClientKeyExchange +++ * wrap() ... ChangeCipherSpec +++ * wrap() ... Finished +++ * ... unwrap() ClientKeyExchange +++ * ... unwrap() ChangeCipherSpec +++ * ... unwrap() Finished +++ * ... wrap() ChangeCipherSpec +++ * ... wrap() Finished +++ * unwrap() ... ChangeCipherSpec +++ * unwrap() ... Finished +++ */ +++ +++import javax.net.ssl.*; +++import javax.net.ssl.SSLEngineResult.*; +++import java.io.*; +++import java.security.*; +++import java.nio.*; +++import java.util.List; +++import java.util.ArrayList; +++import sun.security.ssl.ProtocolVersion; +++ +++public class LengthCheckTest { +++ +++ /* +++ * Enables logging of the SSLEngine operations. +++ */ +++ private static final boolean logging = true; +++ +++ /* +++ * Enables the JSSE system debugging system property: +++ * +++ * -Djavax.net.debug=all +++ * +++ * This gives a lot of low-level information about operations underway, +++ * including specific handshake messages, and might be best examined +++ * after gaining some familiarity with this application. +++ */ +++ private static final boolean debug = false; +++ private static final boolean dumpBufs = true; +++ +++ private final SSLContext sslc; +++ +++ private SSLEngine clientEngine; // client Engine +++ private ByteBuffer clientOut; // write side of clientEngine +++ private ByteBuffer clientIn; // read side of clientEngine +++ +++ private SSLEngine serverEngine; // server Engine +++ private ByteBuffer serverOut; // write side of serverEngine +++ private ByteBuffer serverIn; // read side of serverEngine +++ +++ private HandshakeTest handshakeTest; +++ +++ /* +++ * For data transport, this example uses local ByteBuffers. This +++ * isn't really useful, but the purpose of this example is to show +++ * SSLEngine concepts, not how to do network transport. +++ */ +++ private ByteBuffer cTOs; // "reliable" transport client->server +++ private ByteBuffer sTOc; // "reliable" transport server->client +++ +++ /* +++ * The following is to set up the keystores. +++ */ +++ private static final String pathToStores = "/../../../../../../../etc"; +++ private static final String keyStoreFile = "keystore"; +++ private static final String trustStoreFile = "truststore"; +++ private static final String passwd = "passphrase"; +++ +++ private static final String keyFilename = +++ System.getProperty("test.src", ".") + "/" + pathToStores + +++ "/" + keyStoreFile; +++ private static final String trustFilename = +++ System.getProperty("test.src", ".") + "/" + pathToStores + +++ "/" + trustStoreFile; +++ +++ // Define a few basic TLS record and message types we might need +++ private static final int TLS_RECTYPE_CCS = 0x14; +++ private static final int TLS_RECTYPE_ALERT = 0x15; +++ private static final int TLS_RECTYPE_HANDSHAKE = 0x16; +++ private static final int TLS_RECTYPE_APPDATA = 0x17; +++ +++ private static final int TLS_HS_HELLO_REQUEST = 0x00; +++ private static final int TLS_HS_CLIENT_HELLO = 0x01; +++ private static final int TLS_HS_SERVER_HELLO = 0x02; +++ private static final int TLS_HS_CERTIFICATE = 0x0B; +++ private static final int TLS_HS_SERVER_KEY_EXCHG = 0x0C; +++ private static final int TLS_HS_CERT_REQUEST = 0x0D; +++ private static final int TLS_HS_SERVER_HELLO_DONE = 0x0E; +++ private static final int TLS_HS_CERT_VERIFY = 0x0F; +++ private static final int TLS_HS_CLIENT_KEY_EXCHG = 0x10; +++ private static final int TLS_HS_FINISHED = 0x14; +++ +++ // We're not going to define all the alert types in TLS, just +++ // the ones we think we'll need to reference by name. +++ private static final int TLS_ALERT_LVL_WARNING = 0x01; +++ private static final int TLS_ALERT_LVL_FATAL = 0x02; +++ +++ private static final int TLS_ALERT_UNEXPECTED_MSG = 0x0A; +++ private static final int TLS_ALERT_HANDSHAKE_FAILURE = 0x28; +++ private static final int TLS_ALERT_INTERNAL_ERROR = 0x50; +++ +++ public interface HandshakeTest { +++ void execTest() throws Exception; +++ } +++ +++ public final HandshakeTest servSendLongID = new HandshakeTest() { +++ @Override +++ public void execTest() throws Exception { +++ boolean gotException = false; +++ SSLEngineResult clientResult; // results from client's last op +++ SSLEngineResult serverResult; // results from server's last op +++ +++ log("\n==== Test: Client receives 64-byte session ID ===="); +++ +++ // Send Client Hello +++ clientResult = clientEngine.wrap(clientOut, cTOs); +++ log("client wrap: ", clientResult); +++ runDelegatedTasks(clientResult, clientEngine); +++ cTOs.flip(); +++ dumpByteBuffer("CLIENT-TO-SERVER", cTOs); +++ +++ // Server consumes Client Hello +++ serverResult = serverEngine.unwrap(cTOs, serverIn); +++ log("server unwrap: ", serverResult); +++ runDelegatedTasks(serverResult, serverEngine); +++ cTOs.compact(); +++ +++ // Server generates ServerHello/Cert/Done record +++ serverResult = serverEngine.wrap(serverOut, sTOc); +++ log("server wrap: ", serverResult); +++ runDelegatedTasks(serverResult, serverEngine); +++ sTOc.flip(); +++ +++ // Intercept the ServerHello messages and instead send +++ // one that has a 64-byte session ID. +++ if (isTlsMessage(sTOc, TLS_RECTYPE_HANDSHAKE, +++ TLS_HS_SERVER_HELLO)) { +++ ArrayList recList = splitRecord(sTOc); +++ +++ // Use the original ServerHello as a template to craft one +++ // with a longer-than-allowed session ID. +++ ByteBuffer servHelloBuf = +++ createEvilServerHello(recList.get(0), 64); +++ +++ recList.set(0, servHelloBuf); +++ +++ // Now send each ByteBuffer (each being a complete +++ // TLS record) into the client-side unwrap. +++ for (ByteBuffer bBuf : recList) { +++ dumpByteBuffer("SERVER-TO-CLIENT", bBuf); +++ try { +++ clientResult = clientEngine.unwrap(bBuf, clientIn); +++ } catch (SSLProtocolException e) { +++ log("Received expected SSLProtocolException: " + e); +++ gotException = true; +++ } +++ log("client unwrap: ", clientResult); +++ runDelegatedTasks(clientResult, clientEngine); +++ } +++ } else { +++ dumpByteBuffer("SERVER-TO-CLIENT", sTOc); +++ log("client unwrap: ", clientResult); +++ runDelegatedTasks(clientResult, clientEngine); +++ } +++ sTOc.compact(); +++ +++ // The Client should now send a TLS Alert +++ clientResult = clientEngine.wrap(clientOut, cTOs); +++ log("client wrap: ", clientResult); +++ runDelegatedTasks(clientResult, clientEngine); +++ cTOs.flip(); +++ dumpByteBuffer("CLIENT-TO-SERVER", cTOs); +++ +++ // At this point we can verify that both an exception +++ // was thrown and the proper action (a TLS alert) was +++ // sent back to the server. +++ if (gotException == false || +++ !isTlsMessage(cTOs, TLS_RECTYPE_ALERT, TLS_ALERT_LVL_FATAL, +++ TLS_ALERT_INTERNAL_ERROR)) { +++ throw new SSLException( +++ "Client failed to throw Alert:fatal:internal_error"); +++ } +++ } +++ }; +++ +++ public final HandshakeTest clientSendLongID = new HandshakeTest() { +++ @Override +++ public void execTest() throws Exception { +++ boolean gotException = false; +++ SSLEngineResult clientResult; // results from client's last op +++ SSLEngineResult serverResult; // results from server's last op +++ +++ log("\n==== Test: Server receives 64-byte session ID ===="); +++ +++ // Send Client Hello +++ ByteBuffer evilClientHello = createEvilClientHello(64); +++ dumpByteBuffer("CLIENT-TO-SERVER", evilClientHello); +++ +++ try { +++ // Server consumes Client Hello +++ serverResult = serverEngine.unwrap(evilClientHello, serverIn); +++ log("server unwrap: ", serverResult); +++ runDelegatedTasks(serverResult, serverEngine); +++ evilClientHello.compact(); +++ +++ // Under normal circumstances this should be a ServerHello +++ // But should throw an exception instead due to the invalid +++ // session ID. +++ serverResult = serverEngine.wrap(serverOut, sTOc); +++ log("server wrap: ", serverResult); +++ runDelegatedTasks(serverResult, serverEngine); +++ sTOc.flip(); +++ dumpByteBuffer("SERVER-TO-CLIENT", sTOc); +++ } catch (SSLProtocolException ssle) { +++ log("Received expected SSLProtocolException: " + ssle); +++ gotException = true; +++ } +++ +++ // We expect to see the server generate an alert here +++ serverResult = serverEngine.wrap(serverOut, sTOc); +++ log("server wrap: ", serverResult); +++ runDelegatedTasks(serverResult, serverEngine); +++ sTOc.flip(); +++ dumpByteBuffer("SERVER-TO-CLIENT", sTOc); +++ +++ // At this point we can verify that both an exception +++ // was thrown and the proper action (a TLS alert) was +++ // sent back to the client. +++ if (gotException == false || +++ !isTlsMessage(sTOc, TLS_RECTYPE_ALERT, TLS_ALERT_LVL_FATAL, +++ TLS_ALERT_INTERNAL_ERROR)) { +++ throw new SSLException( +++ "Server failed to throw Alert:fatal:internal_error"); +++ } +++ } +++ }; +++ +++ +++ /* +++ * Main entry point for this test. +++ */ +++ public static void main(String args[]) throws Exception { +++ List ccsTests = new ArrayList<>(); +++ +++ if (debug) { +++ System.setProperty("javax.net.debug", "ssl"); +++ } +++ +++ ccsTests.add(new LengthCheckTest("ServSendLongID")); +++ ccsTests.add(new LengthCheckTest("ClientSendLongID")); +++ +++ for (LengthCheckTest test : ccsTests) { +++ test.runTest(); +++ } +++ +++ System.out.println("Test Passed."); +++ } +++ +++ /* +++ * Create an initialized SSLContext to use for these tests. +++ */ +++ public LengthCheckTest(String testName) throws Exception { +++ +++ KeyStore ks = KeyStore.getInstance("JKS"); +++ KeyStore ts = KeyStore.getInstance("JKS"); +++ +++ char[] passphrase = "passphrase".toCharArray(); +++ +++ ks.load(new FileInputStream(keyFilename), passphrase); +++ ts.load(new FileInputStream(trustFilename), passphrase); +++ +++ KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509"); +++ kmf.init(ks, passphrase); +++ +++ TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509"); +++ tmf.init(ts); +++ +++ SSLContext sslCtx = SSLContext.getInstance("TLS"); +++ +++ sslCtx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); +++ +++ sslc = sslCtx; +++ +++ switch (testName) { +++ case "ServSendLongID": +++ handshakeTest = servSendLongID; +++ break; +++ case "ClientSendLongID": +++ handshakeTest = clientSendLongID; +++ break; +++ default: +++ throw new IllegalArgumentException("Unknown test name: " + +++ testName); +++ } +++ } +++ +++ /* +++ * Run the test. +++ * +++ * Sit in a tight loop, both engines calling wrap/unwrap regardless +++ * of whether data is available or not. We do this until both engines +++ * report back they are closed. +++ * +++ * The main loop handles all of the I/O phases of the SSLEngine's +++ * lifetime: +++ * +++ * initial handshaking +++ * application data transfer +++ * engine closing +++ * +++ * One could easily separate these phases into separate +++ * sections of code. +++ */ +++ private void runTest() throws Exception { +++ boolean dataDone = false; +++ +++ createSSLEngines(); +++ createBuffers(); +++ +++ handshakeTest.execTest(); +++ } +++ +++ /* +++ * Using the SSLContext created during object creation, +++ * create/configure the SSLEngines we'll use for this test. +++ */ +++ private void createSSLEngines() throws Exception { +++ /* +++ * Configure the serverEngine to act as a server in the SSL/TLS +++ * handshake. Also, require SSL client authentication. +++ */ +++ serverEngine = sslc.createSSLEngine(); +++ serverEngine.setUseClientMode(false); +++ serverEngine.setNeedClientAuth(false); +++ +++ /* +++ * Similar to above, but using client mode instead. +++ */ +++ clientEngine = sslc.createSSLEngine("client", 80); +++ clientEngine.setUseClientMode(true); +++ +++ // In order to make a test that will be backwards compatible +++ // going back to JDK 5, force the handshake to be TLS 1.0 and +++ // use one of the older cipher suites. +++ clientEngine.setEnabledProtocols(new String[]{"TLSv1"}); +++ clientEngine.setEnabledCipherSuites( +++ new String[]{"TLS_RSA_WITH_AES_128_CBC_SHA"}); +++ } +++ +++ /* +++ * Create and size the buffers appropriately. +++ */ +++ private void createBuffers() { +++ +++ /* +++ * We'll assume the buffer sizes are the same +++ * between client and server. +++ */ +++ SSLSession session = clientEngine.getSession(); +++ int appBufferMax = session.getApplicationBufferSize(); +++ int netBufferMax = session.getPacketBufferSize(); +++ +++ /* +++ * We'll make the input buffers a bit bigger than the max needed +++ * size, so that unwrap()s following a successful data transfer +++ * won't generate BUFFER_OVERFLOWS. +++ * +++ * We'll use a mix of direct and indirect ByteBuffers for +++ * tutorial purposes only. In reality, only use direct +++ * ByteBuffers when they give a clear performance enhancement. +++ */ +++ clientIn = ByteBuffer.allocate(appBufferMax + 50); +++ serverIn = ByteBuffer.allocate(appBufferMax + 50); +++ +++ cTOs = ByteBuffer.allocateDirect(netBufferMax); +++ sTOc = ByteBuffer.allocateDirect(netBufferMax); +++ +++ clientOut = ByteBuffer.wrap("Hi Server, I'm Client".getBytes()); +++ serverOut = ByteBuffer.wrap("Hello Client, I'm Server".getBytes()); +++ } +++ +++ /* +++ * If the result indicates that we have outstanding tasks to do, +++ * go ahead and run them in this thread. +++ */ +++ private static void runDelegatedTasks(SSLEngineResult result, +++ SSLEngine engine) throws Exception { +++ +++ if (result.getHandshakeStatus() == HandshakeStatus.NEED_TASK) { +++ Runnable runnable; +++ while ((runnable = engine.getDelegatedTask()) != null) { +++ log("\trunning delegated task..."); +++ runnable.run(); +++ } +++ HandshakeStatus hsStatus = engine.getHandshakeStatus(); +++ if (hsStatus == HandshakeStatus.NEED_TASK) { +++ throw new Exception( +++ "handshake shouldn't need additional tasks"); +++ } +++ log("\tnew HandshakeStatus: " + hsStatus); +++ } +++ } +++ +++ private static boolean isEngineClosed(SSLEngine engine) { +++ return (engine.isOutboundDone() && engine.isInboundDone()); +++ } +++ +++ /* +++ * Simple check to make sure everything came across as expected. +++ */ +++ private static void checkTransfer(ByteBuffer a, ByteBuffer b) +++ throws Exception { +++ a.flip(); +++ b.flip(); +++ +++ if (!a.equals(b)) { +++ throw new Exception("Data didn't transfer cleanly"); +++ } else { +++ log("\tData transferred cleanly"); +++ } +++ +++ a.position(a.limit()); +++ b.position(b.limit()); +++ a.limit(a.capacity()); +++ b.limit(b.capacity()); +++ } +++ +++ /* +++ * Logging code +++ */ +++ private static boolean resultOnce = true; +++ +++ private static void log(String str, SSLEngineResult result) { +++ if (!logging) { +++ return; +++ } +++ if (resultOnce) { +++ resultOnce = false; +++ System.out.println("The format of the SSLEngineResult is: \n" + +++ "\t\"getStatus() / getHandshakeStatus()\" +\n" + +++ "\t\"bytesConsumed() / bytesProduced()\"\n"); +++ } +++ HandshakeStatus hsStatus = result.getHandshakeStatus(); +++ log(str + +++ result.getStatus() + "/" + hsStatus + ", " + +++ result.bytesConsumed() + "/" + result.bytesProduced() + +++ " bytes"); +++ if (hsStatus == HandshakeStatus.FINISHED) { +++ log("\t...ready for application data"); +++ } +++ } +++ +++ private static void log(String str) { +++ if (logging) { +++ System.out.println(str); +++ } +++ } +++ +++ /** +++ * Split a record consisting of multiple TLS handshake messages +++ * into individual TLS records, each one in a ByteBuffer of its own. +++ * +++ * @param tlsRecord A ByteBuffer containing the tls record data. +++ * The position of the buffer should be at the first byte +++ * in the TLS record data. +++ * +++ * @return An ArrayList consisting of one or more ByteBuffers. Each +++ * ByteBuffer will contain a single TLS record with one message. +++ * That message will be taken from the input record. The order +++ * of the messages in the ArrayList will be the same as they +++ * were in the input record. +++ */ +++ private ArrayList splitRecord(ByteBuffer tlsRecord) { +++ SSLSession session = clientEngine.getSession(); +++ int netBufferMax = session.getPacketBufferSize(); +++ ArrayList recordList = new ArrayList<>(); +++ +++ if (tlsRecord.hasRemaining()) { +++ int type = byteToUnsignedInt(tlsRecord.get()); +++ byte ver_major = tlsRecord.get(); +++ byte ver_minor = tlsRecord.get(); +++ int recLen = shortToUnsignedInt(tlsRecord.getShort()); +++ byte[] newMsgData = null; +++ while (tlsRecord.hasRemaining()) { +++ ByteBuffer newRecord = ByteBuffer.allocateDirect(netBufferMax); +++ switch (type) { +++ case TLS_RECTYPE_CCS: +++ case TLS_RECTYPE_ALERT: +++ case TLS_RECTYPE_APPDATA: +++ // None of our tests have multiple non-handshake +++ // messages coalesced into a single record. +++ break; +++ case TLS_RECTYPE_HANDSHAKE: +++ newMsgData = getHandshakeMessage(tlsRecord); +++ break; +++ } +++ +++ // Put a new TLS record on the destination ByteBuffer +++ newRecord.put((byte)type); +++ newRecord.put(ver_major); +++ newRecord.put(ver_minor); +++ newRecord.putShort((short)newMsgData.length); +++ +++ // Now add the message content itself and attach to the +++ // returned ArrayList +++ newRecord.put(newMsgData); +++ newRecord.flip(); +++ recordList.add(newRecord); +++ } +++ } +++ +++ return recordList; +++ } +++ +++ private static ByteBuffer createEvilClientHello(int sessIdLen) { +++ ByteBuffer newRecord = ByteBuffer.allocateDirect(4096); +++ +++ // Lengths will initially be place holders until we determine the +++ // finished length of the ByteBuffer. Then we'll go back and scribble +++ // in the correct lengths. +++ +++ newRecord.put((byte)TLS_RECTYPE_HANDSHAKE); // Record type +++ newRecord.putShort((short)0x0301); // Protocol (TLS 1.0) +++ newRecord.putShort((short)0); // Length place holder +++ +++ newRecord.putInt(TLS_HS_CLIENT_HELLO << 24); // HS type and length +++ newRecord.putShort((short)0x0301); +++ newRecord.putInt((int)(System.currentTimeMillis() / 1000)); +++ SecureRandom sr = new SecureRandom(); +++ byte[] randBuf = new byte[28]; +++ sr.nextBytes(randBuf); +++ newRecord.put(randBuf); // Client Random +++ newRecord.put((byte)sessIdLen); // Session ID length +++ if (sessIdLen > 0) { +++ byte[] sessId = new byte[sessIdLen]; +++ sr.nextBytes(sessId); +++ newRecord.put(sessId); // Session ID +++ } +++ newRecord.putShort((short)2); // 2 bytes of ciphers +++ newRecord.putShort((short)0x002F); // TLS_RSA_AES_CBC_SHA +++ newRecord.putShort((short)0x0100); // only null compression +++ newRecord.putShort((short)5); // 5 bytes of extensions +++ newRecord.putShort((short)0xFF01); // Renegotiation info +++ newRecord.putShort((short)1); +++ newRecord.put((byte)0); // No reneg info exts +++ +++ // Go back and fill in the correct length values for the record +++ // and handshake message headers. +++ int recordLength = newRecord.position(); +++ newRecord.putShort(3, (short)(recordLength - 5)); +++ int newTypeAndLen = (newRecord.getInt(5) & 0xFF000000) | +++ ((recordLength - 9) & 0x00FFFFFF); +++ newRecord.putInt(5, newTypeAndLen); +++ +++ newRecord.flip(); +++ return newRecord; +++ } +++ +++ private static ByteBuffer createEvilServerHello(ByteBuffer origHello, +++ int newSessIdLen) { +++ if (newSessIdLen < 0 || newSessIdLen > Byte.MAX_VALUE) { +++ throw new RuntimeException("Length must be 0 <= X <= 127"); +++ } +++ +++ ByteBuffer newRecord = ByteBuffer.allocateDirect(4096); +++ // Copy the bytes from the old hello to the new up to the session ID +++ // field. We will go back later and fill in a new length field in +++ // the record header. This includes the record header (5 bytes), the +++ // Handshake message header (4 bytes), protocol version (2 bytes), +++ // and the random (32 bytes). +++ ByteBuffer scratchBuffer = origHello.slice(); +++ scratchBuffer.limit(43); +++ newRecord.put(scratchBuffer); +++ +++ // Advance the position in the originial hello buffer past the +++ // session ID. +++ origHello.position(43); +++ int origIDLen = byteToUnsignedInt(origHello.get()); +++ if (origIDLen > 0) { +++ // Skip over the session ID +++ origHello.position(origHello.position() + origIDLen); +++ } +++ +++ // Now add our own sessionID to the new record +++ SecureRandom sr = new SecureRandom(); +++ byte[] sessId = new byte[newSessIdLen]; +++ sr.nextBytes(sessId); +++ newRecord.put((byte)newSessIdLen); +++ newRecord.put(sessId); +++ +++ // Create another slice in the original buffer, based on the position +++ // past the session ID. Copy the remaining bytes into the new +++ // hello buffer. Then go back and fix up the length +++ newRecord.put(origHello.slice()); +++ +++ // Go back and fill in the correct length values for the record +++ // and handshake message headers. +++ int recordLength = newRecord.position(); +++ newRecord.putShort(3, (short)(recordLength - 5)); +++ int newTypeAndLen = (newRecord.getInt(5) & 0xFF000000) | +++ ((recordLength - 9) & 0x00FFFFFF); +++ newRecord.putInt(5, newTypeAndLen); +++ +++ newRecord.flip(); +++ return newRecord; +++ } +++ +++ /** +++ * Look at an incoming TLS record and see if it is the desired +++ * record type, and where appropriate the correct subtype. +++ * +++ * @param srcRecord The input TLS record to be evaluated. This +++ * method will only look at the leading message if multiple +++ * TLS handshake messages are coalesced into a single record. +++ * @param reqRecType The requested TLS record type +++ * @param recParams Zero or more integer sub type fields. For CCS +++ * and ApplicationData, no params are used. For handshake records, +++ * one value corresponding to the HandshakeType is required. +++ * For Alerts, two values corresponding to AlertLevel and +++ * AlertDescription are necessary. +++ * +++ * @return true if the proper handshake message is the first one +++ * in the input record, false otherwise. +++ */ +++ private boolean isTlsMessage(ByteBuffer srcRecord, int reqRecType, +++ int... recParams) { +++ boolean foundMsg = false; +++ +++ if (srcRecord.hasRemaining()) { +++ srcRecord.mark(); +++ +++ // Grab the fields from the TLS Record +++ int recordType = byteToUnsignedInt(srcRecord.get()); +++ byte ver_major = srcRecord.get(); +++ byte ver_minor = srcRecord.get(); +++ int recLen = shortToUnsignedInt(srcRecord.getShort()); +++ +++ if (recordType == reqRecType) { +++ // For any zero-length recParams, making sure the requested +++ // type is sufficient. +++ if (recParams.length == 0) { +++ foundMsg = true; +++ } else { +++ switch (recordType) { +++ case TLS_RECTYPE_CCS: +++ case TLS_RECTYPE_APPDATA: +++ // We really shouldn't find ourselves here, but +++ // if someone asked for these types and had more +++ // recParams we can ignore them. +++ foundMsg = true; +++ break; +++ case TLS_RECTYPE_ALERT: +++ // Needs two params, AlertLevel and AlertDescription +++ if (recParams.length != 2) { +++ throw new RuntimeException( +++ "Test for Alert requires level and desc."); +++ } else { +++ int level = byteToUnsignedInt(srcRecord.get()); +++ int desc = byteToUnsignedInt(srcRecord.get()); +++ if (level == recParams[0] && +++ desc == recParams[1]) { +++ foundMsg = true; +++ } +++ } +++ break; +++ case TLS_RECTYPE_HANDSHAKE: +++ // Needs one parameter, HandshakeType +++ if (recParams.length != 1) { +++ throw new RuntimeException( +++ "Test for Handshake requires only HS type"); +++ } else { +++ // Go into the first handhshake message in the +++ // record and grab the handshake message header. +++ // All we need to do is parse out the leading +++ // byte. +++ int msgHdr = srcRecord.getInt(); +++ int msgType = (msgHdr >> 24) & 0x000000FF; +++ if (msgType == recParams[0]) { +++ foundMsg = true; +++ } +++ } +++ break; +++ } +++ } +++ } +++ +++ srcRecord.reset(); +++ } +++ +++ return foundMsg; +++ } +++ +++ private byte[] getHandshakeMessage(ByteBuffer srcRecord) { +++ // At the start of this routine, the position should be lined up +++ // at the first byte of a handshake message. Mark this location +++ // so we can return to it after reading the type and length. +++ srcRecord.mark(); +++ int msgHdr = srcRecord.getInt(); +++ int type = (msgHdr >> 24) & 0x000000FF; +++ int length = msgHdr & 0x00FFFFFF; +++ +++ // Create a byte array that has enough space for the handshake +++ // message header and body. +++ byte[] data = new byte[length + 4]; +++ srcRecord.reset(); +++ srcRecord.get(data, 0, length + 4); +++ +++ return (data); +++ } +++ +++ /** +++ * Hex-dumps a ByteBuffer to stdout. +++ */ +++ private static void dumpByteBuffer(String header, ByteBuffer bBuf) { +++ if (dumpBufs == false) { +++ return; +++ } +++ +++ int bufLen = bBuf.remaining(); +++ if (bufLen > 0) { +++ bBuf.mark(); +++ +++ // We expect the position of the buffer to be at the +++ // beginning of a TLS record. Get the type, version and length. +++ int type = byteToUnsignedInt(bBuf.get()); +++ int ver_major = byteToUnsignedInt(bBuf.get()); +++ int ver_minor = byteToUnsignedInt(bBuf.get()); +++ int recLen = shortToUnsignedInt(bBuf.getShort()); +++ ProtocolVersion pv = ProtocolVersion.valueOf(ver_major, ver_minor); +++ +++ log("===== " + header + " (" + tlsRecType(type) + " / " + +++ pv + " / " + bufLen + " bytes) ====="); +++ bBuf.reset(); +++ for (int i = 0; i < bufLen; i++) { +++ if (i != 0 && i % 16 == 0) { +++ System.out.print("\n"); +++ } +++ System.out.format("%02X ", bBuf.get(i)); +++ } +++ log("\n==============================================="); +++ bBuf.reset(); +++ } +++ } +++ +++ private static String tlsRecType(int type) { +++ switch (type) { +++ case 20: +++ return "Change Cipher Spec"; +++ case 21: +++ return "Alert"; +++ case 22: +++ return "Handshake"; +++ case 23: +++ return "Application Data"; +++ default: +++ return ("Unknown (" + type + ")"); +++ } +++ } +++ +++ /** +++ * Converts the argument to an {@code int} by an unsigned +++ * conversion. In an unsigned conversion to an {@code int}, the +++ * high-order 24 bits of the {@code int} are zero and the +++ * low-order 8 bits are equal to the bits of the {@code byte} argument. +++ * +++ * Consequently, zero and positive {@code byte} values are mapped +++ * to a numerically equal {@code int} value and negative {@code +++ * byte} values are mapped to an {@code int} value equal to the +++ * input plus 28. +++ * +++ * @param x the value to convert to an unsigned {@code int} +++ * @return the argument converted to {@code int} by an unsigned +++ * conversion +++ * @since 1.8 +++ */ +++ private static int byteToUnsignedInt(byte x) { +++ return ((int) x) & 0xff; +++ } +++ +++ /** +++ * Converts the argument to an {@code int} by an unsigned +++ * conversion. In an unsigned conversion to an {@code int}, the +++ * high-order 16 bits of the {@code int} are zero and the +++ * low-order 16 bits are equal to the bits of the {@code short} argument. +++ * +++ * Consequently, zero and positive {@code short} values are mapped +++ * to a numerically equal {@code int} value and negative {@code +++ * short} values are mapped to an {@code int} value equal to the +++ * input plus 216. +++ * +++ * @param x the value to convert to an unsigned {@code int} +++ * @return the argument converted to {@code int} by an unsigned +++ * conversion +++ * @since 1.8 +++ */ +++ private static int shortToUnsignedInt(short x) { +++ return ((int) x) & 0xffff; +++ } +++ +++} ++# HG changeset patch ++# User pkoppula ++# Date 1539692622 -3600 ++# Tue Oct 16 13:23:42 2018 +0100 ++# Node ID 57dacd96afff4d20780720171a233123fa01d62a ++# Parent 3e354d6e1478fb657f20cbf0d7a7e67c2ebff72a ++8074462: Handshake messages can be strictly ordered ++Reviewed-by: xuelei ++Contributed-by: prasadarao.koppula@oracle.com, sean.coffey@oracle.com ++ ++diff --git openjdk/jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java openjdk/jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java ++--- openjdk/jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java +++++ openjdk/jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java ++@@ -184,19 +184,24 @@ ++ * in the constructor. ++ */ ++ void processMessage(byte type, int messageLen) throws IOException { ++- if (state >= type ++- && (type != HandshakeMessage.ht_hello_request)) { ++- throw new SSLProtocolException( ++- "Handshake message sequence violation, " + type); ++- } +++ +++ // check the handshake state +++ List ignoredOptStates = handshakeState.check(type); ++ ++ switch (type) { ++ case HandshakeMessage.ht_hello_request: ++- this.serverHelloRequest(new HelloRequest(input)); +++ HelloRequest helloRequest = new HelloRequest(input); +++ handshakeState.update(helloRequest, resumingSession); +++ this.serverHelloRequest(helloRequest); ++ break; ++ ++ case HandshakeMessage.ht_server_hello: ++- this.serverHello(new ServerHello(input, messageLen)); +++ ServerHello serverHello = new ServerHello(input, messageLen); +++ this.serverHello(serverHello); +++ +++ // This handshake state update needs the resumingSession value +++ // set by serverHello(). +++ handshakeState.update(serverHello, resumingSession); ++ break; ++ ++ case HandshakeMessage.ht_certificate: ++@@ -206,7 +211,9 @@ ++ "unexpected server cert chain"); ++ // NOTREACHED ++ } ++- this.serverCertificate(new CertificateMsg(input)); +++ CertificateMsg certificateMsg = new CertificateMsg(input); +++ handshakeState.update(certificateMsg, resumingSession); +++ this.serverCertificate(certificateMsg); ++ serverKey = ++ session.getPeerCertificates()[0].getPublicKey(); ++ break; ++@@ -242,15 +249,20 @@ ++ } ++ ++ try { ++- this.serverKeyExchange(new RSA_ServerKeyExchange(input)); +++ RSA_ServerKeyExchange rsaSrvKeyExchange = +++ new RSA_ServerKeyExchange(input); +++ handshakeState.update(rsaSrvKeyExchange, resumingSession); +++ this.serverKeyExchange(rsaSrvKeyExchange); ++ } catch (GeneralSecurityException e) { ++ throwSSLException("Server key", e); ++ } ++ break; ++ case K_DH_ANON: ++ try { ++- this.serverKeyExchange(new DH_ServerKeyExchange( ++- input, protocolVersion)); +++ DH_ServerKeyExchange dhSrvKeyExchange = +++ new DH_ServerKeyExchange(input, protocolVersion); +++ handshakeState.update(dhSrvKeyExchange, resumingSession); +++ this.serverKeyExchange(dhSrvKeyExchange); ++ } catch (GeneralSecurityException e) { ++ throwSSLException("Server key", e); ++ } ++@@ -258,11 +270,14 @@ ++ case K_DHE_DSS: ++ case K_DHE_RSA: ++ try { ++- this.serverKeyExchange(new DH_ServerKeyExchange( +++ DH_ServerKeyExchange dhSrvKeyExchange = +++ new DH_ServerKeyExchange( ++ input, serverKey, ++ clnt_random.random_bytes, svr_random.random_bytes, ++ messageLen, ++- getLocalSupportedSignAlgs(), protocolVersion)); +++ getLocalSupportedSignAlgs(), protocolVersion); +++ handshakeState.update(dhSrvKeyExchange, resumingSession); +++ this.serverKeyExchange(dhSrvKeyExchange); ++ } catch (GeneralSecurityException e) { ++ throwSSLException("Server key", e); ++ } ++@@ -271,10 +286,13 @@ ++ case K_ECDHE_RSA: ++ case K_ECDH_ANON: ++ try { ++- this.serverKeyExchange(new ECDH_ServerKeyExchange +++ ECDH_ServerKeyExchange ecdhSrvKeyExchange = +++ new ECDH_ServerKeyExchange ++ (input, serverKey, clnt_random.random_bytes, ++ svr_random.random_bytes, ++- getLocalSupportedSignAlgs(), protocolVersion)); +++ getLocalSupportedSignAlgs(), protocolVersion); +++ handshakeState.update(ecdhSrvKeyExchange, resumingSession); +++ this.serverKeyExchange(ecdhSrvKeyExchange); ++ } catch (GeneralSecurityException e) { ++ throwSSLException("Server key", e); ++ } ++@@ -313,6 +331,7 @@ ++ if (debug != null && Debug.isOn("handshake")) { ++ certRequest.print(System.out); ++ } +++ handshakeState.update(certRequest, resumingSession); ++ ++ if (protocolVersion.v >= ProtocolVersion.TLS12.v) { ++ Collection peerSignAlgs = ++@@ -338,33 +357,23 @@ ++ break; ++ ++ case HandshakeMessage.ht_server_hello_done: ++- this.serverHelloDone(new ServerHelloDone(input)); +++ ServerHelloDone serverHelloDone = new ServerHelloDone(input); +++ handshakeState.update(serverHelloDone, resumingSession); +++ this.serverHelloDone(serverHelloDone); ++ break; ++ ++ case HandshakeMessage.ht_finished: ++- // A ChangeCipherSpec record must have been received prior to ++- // reception of the Finished message (RFC 5246, 7.4.9). ++- if (!receivedChangeCipherSpec()) { ++- fatalSE(Alerts.alert_handshake_failure, ++- "Received Finished message before ChangeCipherSpec"); ++- } +++ Finished serverFinished = +++ new Finished(protocolVersion, input, cipherSuite); +++ handshakeState.update(serverFinished, resumingSession); +++ this.serverFinished(serverFinished); ++ ++- this.serverFinished( ++- new Finished(protocolVersion, input, cipherSuite)); ++ break; ++ ++ default: ++ throw new SSLProtocolException( ++ "Illegal client handshake msg, " + type); ++ } ++- ++- // ++- // Move state machine forward if the message handling ++- // code didn't already do so ++- // ++- if (state < type) { ++- state = type; ++- } ++ } ++ ++ /* ++@@ -382,7 +391,7 @@ ++ // Could be (e.g. at connection setup) that we already ++ // sent the "client hello" but the server's not seen it. ++ // ++- if (state < HandshakeMessage.ht_client_hello) { +++ if (!clientHelloDelivered) { ++ if (!secureRenegotiation && !allowUnsafeRenegotiation) { ++ // renegotiation is not allowed. ++ if (activeProtocolVersion.v >= ProtocolVersion.TLS10.v) { ++@@ -605,7 +614,6 @@ ++ ++ // looks fine; resume it, and update the state machine. ++ resumingSession = true; ++- state = HandshakeMessage.ht_finished - 1; ++ calculateConnectionKeys(session.getMasterSecret()); ++ if (debug != null && Debug.isOn("session")) { ++ System.out.println("%% Server resumed " + session); ++@@ -891,6 +899,7 @@ ++ m1.print(System.out); ++ } ++ m1.write(output); +++ handshakeState.update(m1, resumingSession); ++ } ++ } ++ ++@@ -1023,6 +1032,7 @@ ++ } ++ m2.write(output); ++ +++ handshakeState.update(m2, resumingSession); ++ ++ /* ++ * THIRD, send a "change_cipher_spec" record followed by the ++@@ -1127,6 +1137,7 @@ ++ m3.print(System.out); ++ } ++ m3.write(output); +++ handshakeState.update(m3, resumingSession); ++ output.doHashes(); ++ } else { ++ if (protocolVersion.v >= ProtocolVersion.TLS12.v) { ++@@ -1188,6 +1199,8 @@ ++ if (resumingSession) { ++ input.digestNow(); ++ sendChangeCipherAndFinish(true); +++ } else { +++ handshakeFinished = true; ++ } ++ session.setLastAccessedTime(System.currentTimeMillis()); ++ ++@@ -1233,13 +1246,6 @@ ++ if (secureRenegotiation) { ++ clientVerifyData = mesg.getVerifyData(); ++ } ++- ++- /* ++- * Update state machine so server MUST send 'finished' next. ++- * (In "long" handshake case; in short case, we're responding ++- * to its message.) ++- */ ++- state = HandshakeMessage.ht_finished - 1; ++ } ++ ++ ++diff --git openjdk/jdk/src/share/classes/sun/security/ssl/HandshakeMessage.java openjdk/jdk/src/share/classes/sun/security/ssl/HandshakeMessage.java ++--- openjdk/jdk/src/share/classes/sun/security/ssl/HandshakeMessage.java +++++ openjdk/jdk/src/share/classes/sun/security/ssl/HandshakeMessage.java ++@@ -89,6 +89,8 @@ ++ ++ static final byte ht_finished = 20; ++ +++ static final byte ht_not_applicable = -1; // N/A +++ ++ /* Class and subclass dynamic debugging support */ ++ public static final Debug debug = Debug.getInstance("ssl"); ++ ++diff --git openjdk/jdk/src/share/classes/sun/security/ssl/HandshakeStateManager.java openjdk/jdk/src/share/classes/sun/security/ssl/HandshakeStateManager.java ++new file mode 100644 ++--- /dev/null +++++ openjdk/jdk/src/share/classes/sun/security/ssl/HandshakeStateManager.java ++@@ -0,0 +1,765 @@ +++/* +++ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. +++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +++ * +++ * This code is free software; you can redistribute it and/or modify it +++ * under the terms of the GNU General Public License version 2 only, as +++ * published by the Free Software Foundation. Oracle designates this +++ * particular file as subject to the "Classpath" exception as provided +++ * by Oracle in the LICENSE file that accompanied this code. +++ * +++ * This code is distributed in the hope that it will be useful, but WITHOUT +++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +++ * version 2 for more details (a copy is included in the LICENSE file that +++ * accompanied this code). +++ * +++ * You should have received a copy of the GNU General Public License version +++ * 2 along with this work; if not, write to the Free Software Foundation, +++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +++ * +++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +++ * or visit www.oracle.com if you need additional information or have any +++ * questions. +++ */ +++ +++package sun.security.ssl; +++ +++import java.util.Collections; +++import java.util.List; +++import java.util.LinkedList; +++import java.util.HashMap; +++import javax.net.ssl.SSLProtocolException; +++ +++import static sun.security.ssl.CipherSuite.KeyExchange; +++import static sun.security.ssl.CipherSuite.KeyExchange.*; +++import static sun.security.ssl.HandshakeStateManager.HandshakeState.*; +++import static sun.security.ssl.HandshakeMessage.*; +++ +++/* +++ * Handshake state manager. +++ * +++ * Messages flow for a full handshake: +++ * +++ * - - +++ * | HelloRequest (No.0, RFC 5246) [*] | +++ * | <-------------------------------------------- | +++ * | | +++ * | ClientHello (No.1, RFC 5246) | +++ * | --------------------------------------------> | +++ * | | +++ * C | ServerHello (No.2, RFC 5246) | S +++ * L | SupplementalData (No.23, RFC4680) [*] | E +++ * I | Certificate (No.11, RFC 5246) [*] | R +++ * E | CertificateStatus (No.22, RFC 6066) [*] | V +++ * N | ServerKeyExchange (No.12, RFC 5246) [*] | E +++ * T | CertificateRequest (No.13, RFC 5246) [*] | R +++ * | ServerHelloDone (No.14, RFC 5246) | +++ * | <-------------------------------------------- | +++ * | | +++ * | SupplementalData (No.23, RFC4680) [*] | +++ * | Certificate (No.11, RFC 5246) [*] Or | +++ * | CertificateURL (No.21, RFC6066) [*] | +++ * | ClientKeyExchange (No.16, RFC 5246) | +++ * | CertificateVerify (No.15, RFC 5246) [*] | +++ * | [ChangeCipherSpec] (RFC 5246) | +++ * | Finished (No.20, RFC 5246) | +++ * | --------------------------------------------> | +++ * | | +++ * | NewSessionTicket (No.4, RFC4507) [*] | +++ * | [ChangeCipherSpec] (RFC 5246) | +++ * | Finished (No.20, RFC 5246) | +++ * | <-------------------------------------------- | +++ * - - +++ * [*] Indicates optional or situation-dependent messages that are not +++ * always sent. +++ * +++ * Message flow for an abbreviated handshake: +++ * - - +++ * | ClientHello (No.1, RFC 5246) | +++ * | --------------------------------------------> | +++ * | | +++ * C | ServerHello (No.2, RFC 5246) | S +++ * L | NewSessionTicket (No.4, RFC4507) [*] | E +++ * I | [ChangeCipherSpec] (RFC 5246) | R +++ * E | Finished (No.20, RFC 5246) | V +++ * N | <-------------------------------------------- | E +++ * T | | R +++ * | [ChangeCipherSpec] (RFC 5246) | +++ * | Finished (No.20, RFC 5246) | +++ * | --------------------------------------------> | +++ * - - +++ * +++ * +++ * State machine of handshake states: +++ * +++ * +--------------+ +++ * START -----> | HelloRequest | +++ * | +--------------+ +++ * | | +++ * v v +++ * +---------------------+ --> +---------------------+ +++ * | ClientHello | | HelloVerifyRequest | +++ * +---------------------+ <-- +---------------------+ +++ * | +++ * | +++ * ========================================================================= +++ * | +++ * v +++ * +---------------------+ +++ * | ServerHello | ----------------------------------+------+ +++ * +---------------------+ --> +-------------------------+ | | +++ * | | Server SupplementalData | | | +++ * | +-------------------------+ | | +++ * | | | | +++ * v v | | +++ * +---------------------+ | | +++ * +---- | Server Certificate | | | +++ * | +---------------------+ | | +++ * | | | | +++ * | | +--------------------+ | | +++ * | +-> | CertificateStatus | | | +++ * | | +--------------------+ v | +++ * | | | | +--------------------+ | +++ * | v v +--> | ServerKeyExchange | | +++ * | +---------------------+ | +--------------------+ | +++ * | | CertificateRequest | | | | +++ * | +---------------------+ <-+---------+ | +++ * | | | | | +++ * v v | | | +++ * +---------------------+ <-------+ | | +++ * | ServerHelloDone | <-----------------+ | +++ * +---------------------+ | +++ * | | | +++ * | | | +++ * | | | +++ * ========================================================================= +++ * | | | +++ * | v | +++ * | +-------------------------+ | +++ * | | Client SupplementalData | --------------+ | +++ * | +-------------------------+ | | +++ * | | | | +++ * | v | | +++ * | +--------------------+ | | +++ * +-> | Client Certificate | ALT. | | +++ * | +--------------------+----------------+ | | +++ * | | CertificateURL | | | +++ * | +----------------+ | | +++ * v | | +++ * +-------------------+ <------------------------+ | +++ * | ClientKeyExchange | | +++ * +-------------------+ | +++ * | | | +++ * | v | +++ * | +-------------------+ | +++ * | | CertificateVerify | | +++ * | +-------------------+ | +++ * | | | +++ * v v | +++ * +-------------------------+ | +++ * | Client ChangeCipherSpec | <---------------+ | +++ * +-------------------------+ | | +++ * | | | +++ * v | | +++ * +-----------------+ (abbreviated) | | +++ * | Client Finished | -------------> END | | +++ * +-----------------+ (Abbreviated handshake) | | +++ * | | | +++ * | (full) | | +++ * | | | +++ * ================================ | | +++ * | | | +++ * | ================================ +++ * | | | +++ * v | | +++ * +------------------+ | (abbreviated) | +++ * | NewSessionTicket | <--------------------------------+ +++ * +------------------+ | | +++ * | | | +++ * v | | +++ * +-------------------------+ | (abbreviated) | +++ * | Server ChangeCipherSpec | <-------------------------------------+ +++ * +-------------------------+ | +++ * | | +++ * v | +++ * +-----------------+ (abbreviated) | +++ * | Server Finished | -------------------------+ +++ * +-----------------+ +++ * | (full) +++ * v +++ * END (Full handshake) +++ * +++ * +++ * The scenarios of the use of this class: +++ * 1. Create an instance of HandshakeStateManager during the initializtion +++ * handshake. +++ * 2. If receiving a handshake message, call HandshakeStateManager.check() +++ * to make sure that the message is of the expected handshake type. And +++ * then call HandshakeStateManager.update() in case handshake states may +++ * be impacted by this new incoming handshake message. +++ * 3. On delivering a handshake message, call HandshakeStateManager.update() +++ * in case handshake states may by thie new outgoing handshake message. +++ * 4. On receiving and delivering ChangeCipherSpec message, call +++ * HandshakeStateManager.changeCipherSpec() to check the present sequence +++ * of this message, and update the states if necessary. +++ */ +++final class HandshakeStateManager { +++ // upcoming handshake states. +++ private LinkedList upcomingStates; +++ private LinkedList alternatives; +++ +++ private static final boolean debugIsOn; +++ +++ private static final HashMap handshakeTypes; +++ +++ static { +++ debugIsOn = (Handshaker.debug != null) && +++ Debug.isOn("handshake") && Debug.isOn("verbose"); +++ handshakeTypes = new HashMap<>(8); +++ +++ handshakeTypes.put(ht_hello_request, "hello_request"); +++ handshakeTypes.put(ht_client_hello, "client_hello"); +++ handshakeTypes.put(ht_server_hello, "server_hello"); +++ handshakeTypes.put(ht_certificate, "certificate"); +++ handshakeTypes.put(ht_server_key_exchange, "server_key_exchange"); +++ handshakeTypes.put(ht_server_hello_done, "server_hello_done"); +++ handshakeTypes.put(ht_certificate_verify, "certificate_verify"); +++ handshakeTypes.put(ht_client_key_exchange, "client_key_exchange"); +++ handshakeTypes.put(ht_finished, "finished"); +++ } +++ +++ HandshakeStateManager() { +++ this.upcomingStates = new LinkedList<>(); +++ this.alternatives = new LinkedList<>(); +++ } +++ +++ // +++ // enumation of handshake type +++ // +++ static enum HandshakeState { +++ HS_HELLO_REQUEST( +++ "hello_request", +++ HandshakeMessage.ht_hello_request), +++ HS_CLIENT_HELLO( +++ "client_hello", +++ HandshakeMessage.ht_client_hello), +++ HS_SERVER_HELLO( +++ "server_hello", +++ HandshakeMessage.ht_server_hello), +++ HS_SERVER_CERTIFICATE( +++ "server certificate", +++ HandshakeMessage.ht_certificate), +++ HS_SERVER_KEY_EXCHANGE( +++ "server_key_exchange", +++ HandshakeMessage.ht_server_key_exchange, true), +++ HS_CERTIFICATE_REQUEST( +++ "certificate_request", +++ HandshakeMessage.ht_certificate_request, true), +++ HS_SERVER_HELLO_DONE( +++ "server_hello_done", +++ HandshakeMessage.ht_server_hello_done), +++ HS_CLIENT_CERTIFICATE( +++ "client certificate", +++ HandshakeMessage.ht_certificate, true), +++ HS_CLIENT_KEY_EXCHANGE( +++ "client_key_exchange", +++ HandshakeMessage.ht_client_key_exchange), +++ HS_CERTIFICATE_VERIFY( +++ "certificate_verify", +++ HandshakeMessage.ht_certificate_verify, true), +++ HS_CLIENT_CHANGE_CIPHER_SPEC( +++ "client change_cipher_spec", +++ HandshakeMessage.ht_not_applicable), +++ HS_CLIENT_FINISHED( +++ "client finished", +++ HandshakeMessage.ht_finished), +++ HS_SERVER_CHANGE_CIPHER_SPEC( +++ "server change_cipher_spec", +++ HandshakeMessage.ht_not_applicable), +++ HS_SERVER_FINISHED( +++ "server finished", +++ HandshakeMessage.ht_finished); +++ +++ final String description; +++ final byte handshakeType; +++ final boolean isOptional; +++ +++ HandshakeState(String description, byte handshakeType) { +++ this.description = description; +++ this.handshakeType = handshakeType; +++ this.isOptional = false; +++ } +++ +++ HandshakeState(String description, +++ byte handshakeType, boolean isOptional) { +++ +++ this.description = description; +++ this.handshakeType = handshakeType; +++ this.isOptional = isOptional; +++ } +++ +++ public String toString() { +++ return description + "[" + handshakeType + "]" + +++ (isOptional ? "(optional)" : ""); +++ } +++ } +++ +++ boolean isEmpty() { +++ return upcomingStates.isEmpty(); +++ } +++ +++ List check(byte handshakeType) throws SSLProtocolException { +++ List ignoredOptional = new LinkedList<>(); +++ String exceptionMsg = +++ "Handshake message sequence violation, " + handshakeType; +++ +++ if (debugIsOn) { +++ System.out.println( +++ "check handshake state: " + toString(handshakeType)); +++ } +++ +++ if (upcomingStates.isEmpty()) { +++ // Is it a kickstart message? +++ if ((handshakeType != HandshakeMessage.ht_hello_request) && +++ (handshakeType != HandshakeMessage.ht_client_hello)) { +++ throw new SSLProtocolException( +++ "Handshake message sequence violation, " + handshakeType); +++ } +++ +++ // It is a kickstart message. +++ return Collections.emptyList(); +++ } +++ +++ // Ignore the checking for HelloRequest messages as they +++ // may be sent by the server at any time. +++ if (handshakeType == HandshakeMessage.ht_hello_request) { +++ return Collections.emptyList(); +++ } +++ +++ for (HandshakeState handshakeState : upcomingStates) { +++ if (handshakeState.handshakeType == handshakeType) { +++ // It's the expected next handshake type. +++ return ignoredOptional; +++ } +++ +++ if (handshakeState.isOptional) { +++ ignoredOptional.add(handshakeState.handshakeType); +++ continue; +++ } else { +++ for (HandshakeState alternative : alternatives) { +++ if (alternative.handshakeType == handshakeType) { +++ return ignoredOptional; +++ } +++ +++ if (alternative.isOptional) { +++ continue; +++ } else { +++ throw new SSLProtocolException(exceptionMsg); +++ } +++ } +++ } +++ throw new SSLProtocolException(exceptionMsg); +++ } +++ +++ // Not an expected Handshake message. +++ throw new SSLProtocolException( +++ "Handshake message sequence violation, " + handshakeType); +++ } +++ +++ void update(HandshakeMessage handshakeMessage, +++ boolean isAbbreviated) throws SSLProtocolException { +++ +++ byte handshakeType = (byte)handshakeMessage.messageType(); +++ String exceptionMsg = +++ "Handshake message sequence violation, " + handshakeType; +++ +++ if (debugIsOn) { +++ System.out.println( +++ "update handshake state: " + toString(handshakeType)); +++ } +++ +++ boolean hasPresentState = false; +++ switch (handshakeType) { +++ case HandshakeMessage.ht_hello_request: +++ // +++ // State machine: +++ // PRESENT: START +++ // TO : ClientHello +++ // +++ +++ // No old state to update. +++ +++ // Add the upcoming states. +++ if (!upcomingStates.isEmpty()) { +++ // A ClientHello message should be followed. +++ upcomingStates.add(HS_CLIENT_HELLO); +++ +++ } // Otherwise, ignore this HelloRequest message. +++ +++ break; +++ +++ case HandshakeMessage.ht_client_hello: +++ // +++ // State machine: +++ // PRESENT: START +++ // HS_CLIENT_HELLO +++ // TO : HS_SERVER_HELLO +++ // +++ +++ // Check and update the present state. +++ if (!upcomingStates.isEmpty()) { +++ // The current state should be HS_CLIENT_HELLO. +++ HandshakeState handshakeState = upcomingStates.pop(); +++ if (handshakeState != HS_CLIENT_HELLO) { +++ throw new SSLProtocolException(exceptionMsg); +++ } +++ } +++ +++ // Add the upcoming states. +++ ClientHello clientHello = (ClientHello)handshakeMessage; +++ upcomingStates.add(HS_SERVER_HELLO); +++ +++ break; +++ +++ case HandshakeMessage.ht_server_hello: +++ // +++ // State machine: +++ // PRESENT: HS_SERVER_HELLO +++ // TO : +++ // Full handshake state stacks +++ // (ServerHello Flight) +++ // HS_SERVER_SUPPLEMENTAL_DATA [optional] +++ // --> HS_SERVER_CERTIFICATE [optional] +++ // --> HS_CERTIFICATE_STATUS [optional] +++ // --> HS_SERVER_KEY_EXCHANGE [optional] +++ // --> HS_CERTIFICATE_REQUEST [optional] +++ // --> HS_SERVER_HELLO_DONE +++ // (Client ClientKeyExchange Flight) +++ // --> HS_CLIENT_SUPPLEMENTAL_DATA [optional] +++ // --> HS_CLIENT_CERTIFICATE or +++ // HS_CERTIFICATE_URL +++ // --> HS_CLIENT_KEY_EXCHANGE +++ // --> HS_CERTIFICATE_VERIFY [optional] +++ // --> HS_CLIENT_CHANGE_CIPHER_SPEC +++ // --> HS_CLIENT_FINISHED +++ // (Server Finished Flight) +++ // --> HS_CLIENT_SUPPLEMENTAL_DATA [optional] +++ // +++ // Abbreviated handshake state stacks +++ // (Server Finished Flight) +++ // HS_NEW_SESSION_TICKET +++ // --> HS_SERVER_CHANGE_CIPHER_SPEC +++ // --> HS_SERVER_FINISHED +++ // (Client Finished Flight) +++ // --> HS_CLIENT_CHANGE_CIPHER_SPEC +++ // --> HS_CLIENT_FINISHED +++ // +++ // Note that this state may have an alternative option. +++ +++ // Check and update the present state. +++ if (!upcomingStates.isEmpty()) { +++ // The current state should be HS_SERVER_HELLO +++ HandshakeState handshakeState = upcomingStates.pop(); +++ HandshakeState alternative = null; +++ if (!alternatives.isEmpty()) { +++ alternative = alternatives.pop(); +++ } +++ +++ if ((handshakeState != HS_SERVER_HELLO) && +++ (alternative != HS_SERVER_HELLO)) { +++ throw new SSLProtocolException(exceptionMsg); +++ } +++ } else { +++ // No present state. +++ throw new SSLProtocolException(exceptionMsg); +++ } +++ +++ // Add the upcoming states. +++ ServerHello serverHello = (ServerHello)handshakeMessage; +++ HelloExtensions hes = serverHello.extensions; +++ +++ +++ // Not support SessionTicket extension yet. +++ // +++ // boolean hasSessionTicketExt = +++ // (hes.get(HandshakeMessage.ht_new_session_ticket) != null); +++ +++ if (isAbbreviated) { +++ // Not support SessionTicket extension yet. +++ // +++ // // Mandatory NewSessionTicket message +++ // if (hasSessionTicketExt) { +++ // upcomingStates.add(HS_NEW_SESSION_TICKET); +++ // } +++ +++ // Mandatory server ChangeCipherSpec and Finished messages +++ upcomingStates.add(HS_SERVER_CHANGE_CIPHER_SPEC); +++ upcomingStates.add(HS_SERVER_FINISHED); +++ +++ // Mandatory client ChangeCipherSpec and Finished messages +++ upcomingStates.add(HS_CLIENT_CHANGE_CIPHER_SPEC); +++ upcomingStates.add(HS_CLIENT_FINISHED); +++ } else { +++ // Not support SupplementalData extension yet. +++ // +++ // boolean hasSupplementalDataExt = +++ // (hes.get(HandshakeMessage.ht_supplemental_data) != null); +++ +++ // Not support CertificateURL extension yet. +++ // +++ // boolean hasCertificateUrlExt = +++ // (hes.get(ExtensionType EXT_CLIENT_CERTIFICATE_URL) +++ // != null); +++ +++ // Not support SupplementalData extension yet. +++ // +++ // // Optional SupplementalData message +++ // if (hasSupplementalDataExt) { +++ // upcomingStates.add(HS_SERVER_SUPPLEMENTAL_DATA); +++ // } +++ +++ // Need server Certificate message or not? +++ KeyExchange keyExchange = serverHello.cipherSuite.keyExchange; +++ if ((keyExchange != K_KRB5) && +++ (keyExchange != K_KRB5_EXPORT) && +++ (keyExchange != K_DH_ANON) && +++ (keyExchange != K_ECDH_ANON)) { +++ // Mandatory Certificate message +++ upcomingStates.add(HS_SERVER_CERTIFICATE); +++ } +++ +++ // Need ServerKeyExchange message or not? +++ if ((keyExchange == K_RSA_EXPORT) || +++ (keyExchange == K_DHE_RSA) || +++ (keyExchange == K_DHE_DSS) || +++ (keyExchange == K_DH_ANON) || +++ (keyExchange == K_ECDHE_RSA) || +++ (keyExchange == K_ECDHE_ECDSA) || +++ (keyExchange == K_ECDH_ANON)) { +++ // Optional ServerKeyExchange message +++ upcomingStates.add(HS_SERVER_KEY_EXCHANGE); +++ } +++ +++ // Optional CertificateRequest message +++ upcomingStates.add(HS_CERTIFICATE_REQUEST); +++ +++ // Mandatory ServerHelloDone message +++ upcomingStates.add(HS_SERVER_HELLO_DONE); +++ +++ // Not support SupplementalData extension yet. +++ // +++ // // Optional SupplementalData message +++ // if (hasSupplementalDataExt) { +++ // upcomingStates.add(HS_CLIENT_SUPPLEMENTAL_DATA); +++ // } +++ +++ // Optional client Certificate message +++ upcomingStates.add(HS_CLIENT_CERTIFICATE); +++ +++ // Not support CertificateURL extension yet. +++ // +++ // // Alternative CertificateURL message, optional too. +++ // // +++ // // Please put CertificateURL rather than Certificate +++ // // message in the alternatives list. So that we can +++ // // simplify the process of this alternative pair later. +++ // if (hasCertificateUrlExt) { +++ // alternatives.add(HS_CERTIFICATE_URL); +++ // } +++ +++ // Mandatory ClientKeyExchange message +++ upcomingStates.add(HS_CLIENT_KEY_EXCHANGE); +++ +++ // Optional CertificateVerify message +++ upcomingStates.add(HS_CERTIFICATE_VERIFY); +++ +++ // Mandatory client ChangeCipherSpec and Finished messages +++ upcomingStates.add(HS_CLIENT_CHANGE_CIPHER_SPEC); +++ upcomingStates.add(HS_CLIENT_FINISHED); +++ +++ // Not support SessionTicket extension yet. +++ // +++ // // Mandatory NewSessionTicket message +++ // if (hasSessionTicketExt) { +++ // upcomingStates.add(HS_NEW_SESSION_TICKET); +++ // } +++ +++ // Mandatory server ChangeCipherSpec and Finished messages +++ upcomingStates.add(HS_SERVER_CHANGE_CIPHER_SPEC); +++ upcomingStates.add(HS_SERVER_FINISHED); +++ } +++ +++ break; +++ +++ case HandshakeMessage.ht_certificate: +++ // +++ // State machine: +++ // PRESENT: HS_CERTIFICATE_URL or +++ // HS_CLIENT_CERTIFICATE +++ // TO : HS_CLIENT_KEY_EXCHANGE +++ // +++ // Or +++ // +++ // PRESENT: HS_SERVER_CERTIFICATE +++ // TO : HS_CERTIFICATE_STATUS [optional] +++ // HS_SERVER_KEY_EXCHANGE [optional] +++ // HS_CERTIFICATE_REQUEST [optional] +++ // HS_SERVER_HELLO_DONE +++ // +++ // Note that this state may have an alternative option. +++ +++ // Check and update the present state. +++ while (!upcomingStates.isEmpty()) { +++ HandshakeState handshakeState = upcomingStates.pop(); +++ if (handshakeState.handshakeType == handshakeType) { +++ hasPresentState = true; +++ +++ // The current state should be HS_CLIENT_CERTIFICATE or +++ // HS_SERVER_CERTIFICATE. +++ // +++ // Note that we won't put HS_CLIENT_CERTIFICATE into +++ // the alternative list. +++ if ((handshakeState != HS_CLIENT_CERTIFICATE) && +++ (handshakeState != HS_SERVER_CERTIFICATE)) { +++ throw new SSLProtocolException(exceptionMsg); +++ } +++ +++ // Is it an expected client Certificate message? +++ boolean isClientMessage = false; +++ if (!upcomingStates.isEmpty()) { +++ // If the next expected message is ClientKeyExchange, +++ // this one should be an expected client Certificate +++ // message. +++ HandshakeState nextState = upcomingStates.getFirst(); +++ if (nextState == HS_CLIENT_KEY_EXCHANGE) { +++ isClientMessage = true; +++ } +++ } +++ +++ if (isClientMessage) { +++ if (handshakeState != HS_CLIENT_CERTIFICATE) { +++ throw new SSLProtocolException(exceptionMsg); +++ } +++ +++ // Not support CertificateURL extension yet. +++ /******************************************* +++ // clear up the alternatives list +++ if (!alternatives.isEmpty()) { +++ HandshakeState alternative = alternatives.pop(); +++ +++ if (alternative != HS_CERTIFICATE_URL) { +++ throw new SSLProtocolException(exceptionMsg); +++ } +++ } +++ ********************************************/ +++ } else { +++ if ((handshakeState != HS_SERVER_CERTIFICATE)) { +++ throw new SSLProtocolException(exceptionMsg); +++ } +++ } +++ +++ break; +++ } else if (!handshakeState.isOptional) { +++ throw new SSLProtocolException(exceptionMsg); +++ } // Otherwise, looking for next state track. +++ } +++ +++ // No present state. +++ if (!hasPresentState) { +++ throw new SSLProtocolException(exceptionMsg); +++ } +++ +++ // no new upcoming states. +++ +++ break; +++ +++ default: +++ // Check and update the present state. +++ while (!upcomingStates.isEmpty()) { +++ HandshakeState handshakeState = upcomingStates.pop(); +++ if (handshakeState.handshakeType == handshakeType) { +++ hasPresentState = true; +++ break; +++ } else if (!handshakeState.isOptional) { +++ throw new SSLProtocolException(exceptionMsg); +++ } // Otherwise, looking for next state track. +++ } +++ +++ // No present state. +++ if (!hasPresentState) { +++ throw new SSLProtocolException(exceptionMsg); +++ } +++ +++ // no new upcoming states. +++ } +++ +++ if (debugIsOn) { +++ for (HandshakeState handshakeState : upcomingStates) { +++ System.out.println( +++ "upcoming handshake states: " + handshakeState); +++ } +++ for (HandshakeState handshakeState : alternatives) { +++ System.out.println( +++ "upcoming handshake alternative state: " + handshakeState); +++ } +++ } +++ } +++ +++ void changeCipherSpec(boolean isInput, +++ boolean isClient) throws SSLProtocolException { +++ +++ if (debugIsOn) { +++ System.out.println( +++ "update handshake state: change_cipher_spec"); +++ } +++ +++ String exceptionMsg = "ChangeCipherSpec message sequence violation"; +++ +++ HandshakeState expectedState; +++ if ((isClient && isInput) || (!isClient && !isInput)) { +++ expectedState = HS_SERVER_CHANGE_CIPHER_SPEC; +++ } else { +++ expectedState = HS_CLIENT_CHANGE_CIPHER_SPEC; +++ } +++ +++ boolean hasPresentState = false; +++ +++ // Check and update the present state. +++ while (!upcomingStates.isEmpty()) { +++ HandshakeState handshakeState = upcomingStates.pop(); +++ if (handshakeState == expectedState) { +++ hasPresentState = true; +++ break; +++ } else if (!handshakeState.isOptional) { +++ throw new SSLProtocolException(exceptionMsg); +++ } // Otherwise, looking for next state track. +++ } +++ +++ // No present state. +++ if (!hasPresentState) { +++ throw new SSLProtocolException(exceptionMsg); +++ } +++ +++ // no new upcoming states. +++ +++ if (debugIsOn) { +++ for (HandshakeState handshakeState : upcomingStates) { +++ System.out.println( +++ "upcoming handshake states: " + handshakeState); +++ } +++ for (HandshakeState handshakeState : alternatives) { +++ System.out.println( +++ "upcoming handshake alternative state: " + handshakeState); +++ } +++ } +++ } +++ +++ private static String toString(byte handshakeType) { +++ String s = handshakeTypes.get(handshakeType); +++ if (s == null) { +++ s = "unknown"; +++ } +++ return (s + "[" + handshakeType + "]"); +++ } +++} ++diff --git openjdk/jdk/src/share/classes/sun/security/ssl/Handshaker.java openjdk/jdk/src/share/classes/sun/security/ssl/Handshaker.java ++--- openjdk/jdk/src/share/classes/sun/security/ssl/Handshaker.java +++++ openjdk/jdk/src/share/classes/sun/security/ssl/Handshaker.java ++@@ -113,10 +113,14 @@ ++ HandshakeHash handshakeHash; ++ HandshakeInStream input; ++ HandshakeOutStream output; ++- int state; ++ SSLContextImpl sslContext; ++ RandomCookie clnt_random, svr_random; ++ SSLSessionImpl session; +++ HandshakeStateManager handshakeState; +++ boolean clientHelloDelivered; +++ boolean serverHelloRequested; +++ boolean handshakeActivated; +++ boolean handshakeFinished; ++ ++ // current CipherSuite. Never null, initially SSL_NULL_WITH_NULL_NULL ++ CipherSuite cipherSuite; ++@@ -130,10 +134,6 @@ ++ // True if it's OK to start a new SSL session ++ boolean enableNewSession; ++ ++- // True if session keys have been calculated and the caller may receive ++- // and process a ChangeCipherSpec message ++- private boolean sessKeysCalculated; ++- ++ // Temporary storage for the individual keys. Set by ++ // calculateConnectionKeys() and cleared once the ciphers are ++ // activated. ++@@ -254,9 +254,13 @@ ++ this.secureRenegotiation = secureRenegotiation; ++ this.clientVerifyData = clientVerifyData; ++ this.serverVerifyData = serverVerifyData; ++- enableNewSession = true; ++- invalidated = false; ++- sessKeysCalculated = false; +++ this.enableNewSession = true; +++ this.invalidated = false; +++ this.handshakeState = new HandshakeStateManager(); +++ this.clientHelloDelivered = false; +++ this.serverHelloRequested = false; +++ this.handshakeActivated = false; +++ this.handshakeFinished = false; ++ ++ setCipherSuite(CipherSuite.C_NULL); ++ setEnabledProtocols(enabledProtocols); ++@@ -266,22 +270,6 @@ ++ } else { // engine != null ++ algorithmConstraints = new SSLAlgorithmConstraints(engine, true); ++ } ++- ++- ++- // ++- // In addition to the connection state machine, controlling ++- // how the connection deals with the different sorts of records ++- // that get sent (notably handshake transitions!), there's ++- // also a handshaking state machine that controls message ++- // sequencing. ++- // ++- // It's a convenient artifact of the protocol that this can, ++- // with only a couple of minor exceptions, be driven by the ++- // type constant for the last message seen: except for the ++- // client's cert verify, those constants are in a convenient ++- // order to drastically simplify state machine checking. ++- // ++- state = -2; // initialized but not activated ++ } ++ ++ /* ++@@ -377,14 +365,6 @@ ++ } ++ } ++ ++- final boolean receivedChangeCipherSpec() { ++- if (conn != null) { ++- return conn.receivedChangeCipherSpec(); ++- } else { ++- return engine.receivedChangeCipherSpec(); ++- } ++- } ++- ++ String getEndpointIdentificationAlgorithmSE() { ++ SSLParameters paras; ++ if (conn != null) { ++@@ -544,8 +524,7 @@ ++ engine.outputRecord.setHelloVersion(helloVersion); ++ } ++ ++- // move state to activated ++- state = -1; +++ handshakeActivated = true; ++ } ++ ++ /** ++@@ -855,10 +834,9 @@ ++ * this freshly created session can become the current one. ++ */ ++ boolean isDone() { ++- return state == HandshakeMessage.ht_finished; +++ return started() && handshakeState.isEmpty() && handshakeFinished; ++ } ++ ++- ++ /* ++ * Returns the session which was created through this ++ * handshake sequence ... should be called after isDone() ++@@ -963,6 +941,13 @@ ++ return; ++ } ++ +++ // Set the flags in the message receiving side. +++ if (messageType == HandshakeMessage.ht_client_hello) { +++ clientHelloDelivered = true; +++ } else if (messageType == HandshakeMessage.ht_hello_request) { +++ serverHelloRequested = true; +++ } +++ ++ /* ++ * Process the message. We require ++ * that processMessage() consumes the entire message. In ++@@ -997,15 +982,14 @@ ++ * In activated state, the handshaker may not send any messages out. ++ */ ++ boolean activated() { ++- return state >= -1; +++ return handshakeActivated; ++ } ++ ++ /** ++ * Returns true iff the handshaker has sent any messages. ++ */ ++ boolean started() { ++- return state >= 0; // 0: HandshakeMessage.ht_hello_request ++- // 1: HandshakeMessage.ht_client_hello +++ return (serverHelloRequested || clientHelloDelivered); ++ } ++ ++ ++@@ -1015,11 +999,13 @@ ++ * the subclass returns. NOP if handshaking's already started. ++ */ ++ void kickstart() throws IOException { ++- if (state >= 0) { +++ if ((isClient && clientHelloDelivered) || +++ (!isClient && serverHelloRequested)) { ++ return; ++ } ++ ++ HandshakeMessage m = getKickstartMessage(); +++ handshakeState.update(m, resumingSession); ++ ++ if (debug != null && Debug.isOn("handshake")) { ++ m.print(System.out); ++@@ -1027,7 +1013,14 @@ ++ m.write(output); ++ output.flush(); ++ ++- state = m.messageType(); +++ // Set the flags in the message delivering side. +++ int handshakeType = m.messageType(); +++ if (handshakeType == HandshakeMessage.ht_hello_request) { +++ serverHelloRequested = true; +++ } else { // HandshakeMessage.ht_client_hello +++ clientHelloDelivered = true; +++ } +++ ++ } ++ ++ /** ++@@ -1059,16 +1052,6 @@ ++ ++ output.flush(); // i.e. handshake data ++ ++- /* ++- * The write cipher state is protected by the connection write lock ++- * so we must grab it while making the change. We also ++- * make sure no writes occur between sending the ChangeCipherSpec ++- * message, installing the new cipher state, and sending the ++- * Finished message. ++- * ++- * We already hold SSLEngine/SSLSocket "this" by virtue ++- * of this being called from the readRecord code. ++- */ ++ OutputRecord r; ++ if (conn != null) { ++ r = new OutputRecord(Record.ct_change_cipher_spec); ++@@ -1079,14 +1062,27 @@ ++ r.setVersion(protocolVersion); ++ r.write(1); // single byte of data ++ +++ /* +++ * The write cipher state is protected by the connection write lock +++ * so we must grab it while making the change. We also +++ * make sure no writes occur between sending the ChangeCipherSpec +++ * message, installing the new cipher state, and sending the +++ * Finished message. +++ * +++ * We already hold SSLEngine/SSLSocket "this" by virtue +++ * of this being called from the readRecord code. +++ */ ++ if (conn != null) { ++ conn.writeLock.lock(); ++ try { +++ handshakeState.changeCipherSpec(false, isClient); ++ conn.writeRecord(r); ++ conn.changeWriteCiphers(); ++ if (debug != null && Debug.isOn("handshake")) { ++ mesg.print(System.out); ++ } +++ +++ handshakeState.update(mesg, resumingSession); ++ mesg.write(output); ++ output.flush(); ++ } finally { ++@@ -1094,19 +1090,28 @@ ++ } ++ } else { ++ synchronized (engine.writeLock) { +++ handshakeState.changeCipherSpec(false, isClient); ++ engine.writeRecord((EngineOutputRecord)r); ++ engine.changeWriteCiphers(); ++ if (debug != null && Debug.isOn("handshake")) { ++ mesg.print(System.out); ++ } +++ +++ handshakeState.update(mesg, resumingSession); ++ mesg.write(output); ++- ++ if (lastMessage) { ++ output.setFinishedMsg(); ++ } ++ output.flush(); ++ } ++ } +++ if (lastMessage) { +++ handshakeFinished = true; +++ } +++ } +++ +++ void receiveChangeCipherSpec() throws IOException { +++ handshakeState.changeCipherSpec(true, isClient); ++ } ++ ++ /* ++@@ -1274,10 +1279,6 @@ ++ throw new ProviderException(e); ++ } ++ ++- // Mark a flag that allows outside entities (like SSLSocket/SSLEngine) ++- // determine if a ChangeCipherSpec message could be processed. ++- sessKeysCalculated = true; ++- ++ // ++ // Dump the connection keys as they're generated. ++ // ++@@ -1328,15 +1329,6 @@ ++ } ++ } ++ ++- /** ++- * Return whether or not the Handshaker has derived session keys for ++- * this handshake. This is used for determining readiness to process ++- * an incoming ChangeCipherSpec message. ++- */ ++- boolean sessionKeysCalculated() { ++- return sessKeysCalculated; ++- } ++- ++ private static void printHex(HexDumpEncoder dump, byte[] bytes) { ++ if (bytes == null) { ++ System.out.println("(key bytes not available)"); ++diff --git openjdk/jdk/src/share/classes/sun/security/ssl/SSLEngineImpl.java openjdk/jdk/src/share/classes/sun/security/ssl/SSLEngineImpl.java ++--- openjdk/jdk/src/share/classes/sun/security/ssl/SSLEngineImpl.java +++++ openjdk/jdk/src/share/classes/sun/security/ssl/SSLEngineImpl.java ++@@ -212,11 +212,6 @@ ++ static final byte clauth_required = 2; ++ ++ /* ++- * Flag indicating that the engine has received a ChangeCipherSpec message. ++- */ ++- private boolean receivedCCS; ++- ++- /* ++ * Flag indicating if the next record we receive MUST be a Finished ++ * message. Temporarily set during the handshake to ensure that ++ * a change cipher spec message is followed by a finished message. ++@@ -365,7 +360,6 @@ ++ */ ++ roleIsServer = true; ++ connectionState = cs_START; ++- receivedCCS = false; ++ ++ /* ++ * default read and write side cipher and MAC support ++@@ -506,7 +500,6 @@ ++ return HandshakeStatus.NEED_UNWRAP; ++ } // else not handshaking ++ } ++- ++ return HandshakeStatus.NOT_HANDSHAKING; ++ } ++ } ++@@ -567,14 +560,6 @@ ++ * Synchronized on "this" from readRecord. ++ */ ++ private void changeReadCiphers() throws SSLException { ++- if (connectionState != cs_HANDSHAKE ++- && connectionState != cs_RENEGOTIATE) { ++- throw new SSLProtocolException( ++- "State error, change cipher specs"); ++- } ++- ++- // ... create decompressor ++- ++ CipherBox oldCipher = readCipher; ++ ++ try { ++@@ -758,6 +743,10 @@ ++ synchronized (unwrapLock) { ++ return readNetRecord(ea); ++ } +++ } catch (SSLProtocolException spe) { +++ // may be an unexpected handshake message +++ fatal(Alerts.alert_unexpected_message, spe.getMessage(), spe); +++ return null; // make compiler happy ++ } catch (Exception e) { ++ /* ++ * Don't reset position so it looks like we didn't ++@@ -982,6 +971,7 @@ ++ * session (new keys exchanged) with just this connection ++ * in it. ++ */ +++ ++ initHandshaker(); ++ if (!handshaker.activated()) { ++ // prior to handshaking, activate the handshake ++@@ -1005,7 +995,6 @@ ++ ++ if (handshaker.invalidated) { ++ handshaker = null; ++- receivedCCS = false; ++ // if state is cs_RENEGOTIATE, revert it to cs_DATA ++ if (connectionState == cs_RENEGOTIATE) { ++ connectionState = cs_DATA; ++@@ -1024,8 +1013,6 @@ ++ } ++ handshaker = null; ++ connectionState = cs_DATA; ++- receivedCCS = false; ++- ++ // No handshakeListeners here. That's a ++ // SSLSocket thing. ++ } else if (handshaker.taskOutstanding()) { ++@@ -1063,14 +1050,11 @@ ++ ++ case Record.ct_change_cipher_spec: ++ if ((connectionState != cs_HANDSHAKE ++- && connectionState != cs_RENEGOTIATE) ++- || !handshaker.sessionKeysCalculated() ++- || receivedCCS) { +++ && connectionState != cs_RENEGOTIATE)) { ++ // For the CCS message arriving in the wrong state ++ fatal(Alerts.alert_unexpected_message, ++ "illegal change cipher spec msg, conn state = " ++- + connectionState + ", handshake state = " ++- + handshaker.state); +++ + connectionState); ++ } else if (inputRecord.available() != 1 ++ || inputRecord.read() != 1) { ++ // For structural/content issues with the CCS ++@@ -1078,11 +1062,6 @@ ++ "Malformed change cipher spec msg"); ++ } ++ ++- // Once we've received CCS, update the flag. ++- // If the remote endpoint sends it again in this handshake ++- // we won't process it. ++- receivedCCS = true; ++- ++ // ++ // The first message after a change_cipher_spec ++ // record MUST be a "Finished" handshake record, ++@@ -1090,6 +1069,7 @@ ++ // to be checked by a minor tweak to the state ++ // machine. ++ // +++ handshaker.receiveChangeCipherSpec(); ++ changeReadCiphers(); ++ // next message MUST be a finished message ++ expectingFinished = true; ++@@ -1128,7 +1108,6 @@ ++ } ++ } // synchronized (this) ++ } ++- ++ return hsStatus; ++ } ++ ++@@ -1161,6 +1140,10 @@ ++ synchronized (wrapLock) { ++ return writeAppRecord(ea); ++ } +++ } catch (SSLProtocolException spe) { +++ // may be an unexpected handshake message +++ fatal(Alerts.alert_unexpected_message, spe.getMessage(), spe); +++ return null; // make compiler happy ++ } catch (Exception e) { ++ ea.resetPos(); ++ ++@@ -1188,7 +1171,6 @@ ++ * See if the handshaker needs to report back some SSLException. ++ */ ++ checkTaskThrown(); ++- ++ /* ++ * short circuit if we're closed/closing. ++ */ ++@@ -1210,7 +1192,6 @@ ++ * without trying to wrap anything. ++ */ ++ hsStatus = getHSStatus(null); ++- ++ if (hsStatus == HandshakeStatus.NEED_UNWRAP) { ++ return new SSLEngineResult(Status.OK, hsStatus, 0, 0); ++ } ++@@ -2074,14 +2055,6 @@ ++ return Thread.currentThread().getName(); ++ } ++ ++- /* ++- * Returns a boolean indicating whether the ChangeCipherSpec message ++- * has been received for this handshake. ++- */ ++- boolean receivedChangeCipherSpec() { ++- return receivedCCS; ++- } ++- ++ /** ++ * Returns a printable representation of this end of the connection. ++ */ ++diff --git openjdk/jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java openjdk/jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java ++--- openjdk/jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java +++++ openjdk/jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java ++@@ -176,12 +176,6 @@ ++ private volatile int connectionState; ++ ++ /* ++- * Flag indicating that the engine's handshaker has done the necessary ++- * steps so the engine may process a ChangeCipherSpec message. ++- */ ++- private boolean receivedCCS; ++- ++- /* ++ * Flag indicating if the next record we receive MUST be a Finished ++ * message. Temporarily set during the handshake to ensure that ++ * a change cipher spec message is followed by a finished message. ++@@ -573,7 +567,6 @@ ++ */ ++ roleIsServer = isServer; ++ connectionState = cs_START; ++- receivedCCS = false; ++ ++ /* ++ * default read and write side cipher and MAC support ++@@ -901,7 +894,6 @@ ++ readRecord(r, true); ++ } ++ ++- ++ /* ++ * Clear the pipeline of records from the peer, optionally returning ++ * application data. Caller is responsible for knowing that it's ++@@ -1035,7 +1027,8 @@ ++ ++ if (handshaker.invalidated) { ++ handshaker = null; ++- receivedCCS = false; +++ inrec.setHandshakeHash(null); +++ ++ // if state is cs_RENEGOTIATE, revert it to cs_DATA ++ if (connectionState == cs_RENEGOTIATE) { ++ connectionState = cs_DATA; ++@@ -1051,7 +1044,6 @@ ++ handshakeSession = null; ++ handshaker = null; ++ connectionState = cs_DATA; ++- receivedCCS = false; ++ ++ // ++ // Tell folk about handshake completion, but do ++@@ -1098,25 +1090,17 @@ ++ ++ case Record.ct_change_cipher_spec: ++ if ((connectionState != cs_HANDSHAKE ++- && connectionState != cs_RENEGOTIATE) ++- || !handshaker.sessionKeysCalculated() ++- || receivedCCS) { +++ && connectionState != cs_RENEGOTIATE)) { ++ // For the CCS message arriving in the wrong state ++ fatal(Alerts.alert_unexpected_message, ++ "illegal change cipher spec msg, conn state = " ++- + connectionState + ", handshake state = " ++- + handshaker.state); +++ + connectionState); ++ } else if (r.available() != 1 || r.read() != 1) { ++ // For structural/content issues with the CCS ++ fatal(Alerts.alert_unexpected_message, ++ "Malformed change cipher spec msg"); ++ } ++ ++- // Once we've received CCS, update the flag. ++- // If the remote endpoint sends it again in this handshake ++- // we won't process it. ++- receivedCCS = true; ++- ++ // ++ // The first message after a change_cipher_spec ++ // record MUST be a "Finished" handshake record, ++@@ -1124,6 +1108,7 @@ ++ // to be checked by a minor tweak to the state ++ // machine. ++ // +++ handshaker.receiveChangeCipherSpec(); ++ changeReadCiphers(); ++ // next message MUST be a finished message ++ expectingFinished = true; ++@@ -1318,13 +1303,10 @@ ++ kickstartHandshake(); ++ ++ /* ++- * All initial handshaking goes through this ++- * InputRecord until we have a valid SSL connection. ++- * Once initial handshaking is finished, AppInputStream's ++- * InputRecord can handle any future renegotiation. +++ * All initial handshaking goes through this operation +++ * until we have a valid SSL connection. ++ * ++- * Keep this local so that it goes out of scope and is ++- * eventually GC'd. +++ * Handle handshake messages only, need no application data. ++ */ ++ if (inrec == null) { ++ inrec = new InputRecord(); ++@@ -2537,14 +2519,6 @@ ++ } ++ } ++ ++- /* ++- * Returns a boolean indicating whether the ChangeCipherSpec message ++- * has been received for this handshake. ++- */ ++- boolean receivedChangeCipherSpec() { ++- return receivedCCS; ++- } ++- ++ // ++ // We allocate a separate thread to deliver handshake completion ++ // events. This ensures that the notifications don't block the ++diff --git openjdk/jdk/src/share/classes/sun/security/ssl/ServerHandshaker.java openjdk/jdk/src/share/classes/sun/security/ssl/ServerHandshaker.java ++--- openjdk/jdk/src/share/classes/sun/security/ssl/ServerHandshaker.java +++++ openjdk/jdk/src/share/classes/sun/security/ssl/ServerHandshaker.java ++@@ -208,21 +208,14 @@ ++ */ ++ void processMessage(byte type, int message_len) ++ throws IOException { ++- // ++- // In SSLv3 and TLS, messages follow strictly increasing ++- // numerical order _except_ for one annoying special case. ++- // ++- if ((state >= type) ++- && (state != HandshakeMessage.ht_client_key_exchange ++- && type != HandshakeMessage.ht_certificate_verify)) { ++- throw new SSLProtocolException( ++- "Handshake message sequence violation, state = " + state ++- + ", type = " + type); ++- } +++ +++ // check the handshake state +++ handshakeState.check(type); ++ ++ switch (type) { ++ case HandshakeMessage.ht_client_hello: ++ ClientHello ch = new ClientHello(input, message_len); +++ handshakeState.update(ch, resumingSession); ++ /* ++ * send it off for processing. ++ */ ++@@ -235,7 +228,9 @@ ++ "client sent unsolicited cert chain"); ++ // NOTREACHED ++ } ++- this.clientCertificate(new CertificateMsg(input)); +++ CertificateMsg certificateMsg = new CertificateMsg(input); +++ handshakeState.update(certificateMsg, resumingSession); +++ this.clientCertificate(certificateMsg); ++ break; ++ ++ case HandshakeMessage.ht_client_key_exchange: ++@@ -253,16 +248,19 @@ ++ protocolVersion, clientRequestedVersion, ++ sslContext.getSecureRandom(), input, ++ message_len, privateKey); +++ handshakeState.update(pms, resumingSession); ++ preMasterSecret = this.clientKeyExchange(pms); ++ break; ++ case K_KRB5: ++ case K_KRB5_EXPORT: ++- preMasterSecret = this.clientKeyExchange( +++ KerberosClientKeyExchange kke = ++ new KerberosClientKeyExchange(protocolVersion, ++ clientRequestedVersion, ++ sslContext.getSecureRandom(), ++ input, ++- kerberosKeys)); +++ kerberosKeys); +++ handshakeState.update(kke, resumingSession); +++ preMasterSecret = this.clientKeyExchange(kke); ++ break; ++ case K_DHE_RSA: ++ case K_DHE_DSS: ++@@ -273,16 +271,19 @@ ++ * protocol difference in these five flavors is in how ++ * the ServerKeyExchange message was constructed! ++ */ ++- preMasterSecret = this.clientKeyExchange( ++- new DHClientKeyExchange(input)); +++ DHClientKeyExchange dhcke = new DHClientKeyExchange(input); +++ handshakeState.update(dhcke, resumingSession); +++ preMasterSecret = this.clientKeyExchange(dhcke); ++ break; ++ case K_ECDH_RSA: ++ case K_ECDH_ECDSA: ++ case K_ECDHE_RSA: ++ case K_ECDHE_ECDSA: ++ case K_ECDH_ANON: ++- preMasterSecret = this.clientKeyExchange ++- (new ECDHClientKeyExchange(input)); +++ ECDHClientKeyExchange ecdhcke = +++ new ECDHClientKeyExchange(input); +++ handshakeState.update(ecdhcke, resumingSession); +++ preMasterSecret = this.clientKeyExchange(ecdhcke); ++ break; ++ default: ++ throw new SSLProtocolException ++@@ -302,38 +303,24 @@ ++ break; ++ ++ case HandshakeMessage.ht_certificate_verify: ++- this.clientCertificateVerify(new CertificateVerify(input, ++- getLocalSupportedSignAlgs(), protocolVersion)); +++ CertificateVerify cvm = +++ new CertificateVerify(input, +++ getLocalSupportedSignAlgs(), protocolVersion); +++ handshakeState.update(cvm, resumingSession); +++ this.clientCertificateVerify(cvm); ++ break; ++ ++ case HandshakeMessage.ht_finished: ++- // A ChangeCipherSpec record must have been received prior to ++- // reception of the Finished message (RFC 5246, 7.4.9). ++- if (!receivedChangeCipherSpec()) { ++- fatalSE(Alerts.alert_handshake_failure, ++- "Received Finished message before ChangeCipherSpec"); ++- } ++- ++- this.clientFinished( ++- new Finished(protocolVersion, input, cipherSuite)); +++ Finished cfm = +++ new Finished(protocolVersion, input, cipherSuite); +++ handshakeState.update(cfm, resumingSession); +++ this.clientFinished(cfm); ++ break; ++ ++ default: ++ throw new SSLProtocolException( ++ "Illegal server handshake msg, " + type); ++ } ++- ++- // ++- // Move state machine forward if the message handling ++- // code didn't already do so ++- // ++- if (state < type) { ++- if(type == HandshakeMessage.ht_certificate_verify) { ++- state = type + 2; // an annoying special case ++- } else { ++- state = type; ++- } ++- } ++ } ++ ++ ++@@ -815,6 +802,7 @@ ++ System.out.println("Cipher suite: " + session.getSuite()); ++ } ++ m1.write(output); +++ handshakeState.update(m1, resumingSession); ++ ++ // ++ // If we are resuming a session, we finish writing handshake ++@@ -854,6 +842,7 @@ ++ m2.print(System.out); ++ } ++ m2.write(output); +++ handshakeState.update(m2, resumingSession); ++ ++ // XXX has some side effects with OS TCP buffering, ++ // leave it out for now ++@@ -949,6 +938,7 @@ ++ m3.print(System.out); ++ } ++ m3.write(output); +++ handshakeState.update(m3, resumingSession); ++ } ++ ++ // ++@@ -999,6 +989,7 @@ ++ m4.print(System.out); ++ } ++ m4.write(output); +++ handshakeState.update(m4, resumingSession); ++ } else { ++ if (protocolVersion.v >= ProtocolVersion.TLS12.v) { ++ handshakeHash.setCertificateVerifyAlg(null); ++@@ -1014,6 +1005,7 @@ ++ m5.print(System.out); ++ } ++ m5.write(output); +++ handshakeState.update(m5, resumingSession); ++ ++ /* ++ * Flush any buffered messages so the client will see them. ++@@ -1751,6 +1743,8 @@ ++ if (!resumingSession) { ++ input.digestNow(); ++ sendChangeCipherAndFinish(true); +++ } else { +++ handshakeFinished = true; ++ } ++ ++ /* ++@@ -1798,16 +1792,6 @@ ++ if (secureRenegotiation) { ++ serverVerifyData = mesg.getVerifyData(); ++ } ++- ++- /* ++- * Update state machine so client MUST send 'finished' next ++- * The update should only take place if it is not in the fast ++- * handshake mode since the server has to wait for a finished ++- * message from the client. ++- */ ++- if (finishedTag) { ++- state = HandshakeMessage.ht_finished; ++- } ++ } ++ ++ ++diff --git openjdk/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/ClientHandshaker/LengthCheckTest.java openjdk/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/ClientHandshaker/LengthCheckTest.java ++--- openjdk/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/ClientHandshaker/LengthCheckTest.java +++++ openjdk/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/ClientHandshaker/LengthCheckTest.java ++@@ -23,7 +23,7 @@ ++ ++ /* ++ * @test ++- * @bug 8044860 +++ * @bug 8044860 8074462 ++ * @summary Vectors and fixed length fields should be verified ++ * for allowed sizes. ++ * @run main/othervm LengthCheckTest ++@@ -231,7 +231,7 @@ ++ // sent back to the server. ++ if (gotException == false || ++ !isTlsMessage(cTOs, TLS_RECTYPE_ALERT, TLS_ALERT_LVL_FATAL, ++- TLS_ALERT_INTERNAL_ERROR)) { +++ TLS_ALERT_UNEXPECTED_MSG)) { ++ throw new SSLException( ++ "Client failed to throw Alert:fatal:internal_error"); ++ } ++@@ -283,7 +283,7 @@ ++ // sent back to the client. ++ if (gotException == false || ++ !isTlsMessage(sTOc, TLS_RECTYPE_ALERT, TLS_ALERT_LVL_FATAL, ++- TLS_ALERT_INTERNAL_ERROR)) { +++ TLS_ALERT_UNEXPECTED_MSG)) { ++ throw new SSLException( ++ "Server failed to throw Alert:fatal:internal_error"); ++ } ++# HG changeset patch ++# User vinnie ++# Date 1329220061 0 ++# Tue Feb 14 11:47:41 2012 +0000 ++# Node ID 008fcc6f481749a6aacf6fca0dc0f736e468b293 ++# Parent 57dacd96afff4d20780720171a233123fa01d62a ++7142888: sun/security/tools/jarsigner/ec.sh fail on sparc ++Reviewed-by: xuelei ++ ++diff --git openjdk/jdk/test/sun/security/tools/jarsigner/ec.sh openjdk/jdk/test/sun/security/tools/jarsigner/ec.sh ++--- openjdk/jdk/test/sun/security/tools/jarsigner/ec.sh +++++ openjdk/jdk/test/sun/security/tools/jarsigner/ec.sh ++@@ -1,5 +1,5 @@ ++ # ++-# Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved. +++# Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved. ++ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ # ++ # This code is free software; you can redistribute it and/or modify it ++@@ -55,7 +55,8 @@ ++ ++ $KT -alias a -dname CN=a -keyalg ec -genkey -validity 300 || exit 11 ++ $KT -alias b -dname CN=b -keyalg ec -genkey -validity 300 || exit 12 ++-$KT -alias c -dname CN=c -keyalg ec -genkey -validity 300 || exit 13 +++# Ensure that key length is sufficient for the intended hash (SHA512withECDSA) +++$KT -alias c -dname CN=c -keyalg ec -genkey -validity 300 -keysize 521 || exit 13 ++ $KT -alias x -dname CN=x -keyalg ec -genkey -validity 300 || exit 14 ++ ++ $JARSIGNER -keystore $KS -storepass changeit $JFILE a -debug -strict || exit 21 ++# HG changeset patch ++# User igerasim ++# Date 1516239486 28800 ++# Wed Jan 17 17:38:06 2018 -0800 ++# Node ID 3068b3093e1073df4e01552f00246bd9cbb349da ++# Parent 008fcc6f481749a6aacf6fca0dc0f736e468b293 ++8142927: Feed some text to STDIN in ProcessTools.executeProcess() ++Reviewed-by: rriggs ++ ++diff --git openjdk/jdk/test/lib/testlibrary/jdk/testlibrary/OutputAnalyzer.java openjdk/jdk/test/lib/testlibrary/jdk/testlibrary/OutputAnalyzer.java ++--- openjdk/jdk/test/lib/testlibrary/jdk/testlibrary/OutputAnalyzer.java +++++ openjdk/jdk/test/lib/testlibrary/jdk/testlibrary/OutputAnalyzer.java ++@@ -36,7 +36,7 @@ ++ ++ private final String stdout; ++ private final String stderr; ++- private final int exitValue; +++ private final int exitValue; // useless now. output contains exit value. ++ ++ /** ++ * Create an OutputAnalyzer, a utility class for verifying output and exit ++diff --git openjdk/jdk/test/lib/testlibrary/jdk/testlibrary/ProcessTools.java openjdk/jdk/test/lib/testlibrary/jdk/testlibrary/ProcessTools.java ++--- openjdk/jdk/test/lib/testlibrary/jdk/testlibrary/ProcessTools.java +++++ openjdk/jdk/test/lib/testlibrary/jdk/testlibrary/ProcessTools.java ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -25,6 +25,7 @@ ++ ++ import java.io.ByteArrayOutputStream; ++ import java.io.IOException; +++import java.io.OutputStream; ++ import java.io.PrintStream; ++ import java.lang.management.ManagementFactory; ++ import java.lang.management.RuntimeMXBean; ++@@ -268,9 +269,31 @@ ++ * @return The output from the process. ++ */ ++ public static OutputAnalyzer executeProcess(ProcessBuilder pb) throws Throwable { +++ return executeProcess(pb, null); +++ } +++ +++ /** +++ * Executes a process, pipe some text into its STDIN, waits for it +++ * to finish and returns the process output. The process will have exited +++ * before this method returns. +++ * @param pb The ProcessBuilder to execute. +++ * @param input The text to pipe into STDIN. Can be null. +++ * @return The {@linkplain OutputAnalyzer} instance wrapping the process. +++ */ +++ public static OutputAnalyzer executeProcess(ProcessBuilder pb, String input) +++ throws Throwable { ++ OutputAnalyzer output = null; +++ Process p = null; ++ try { ++- output = new OutputAnalyzer(pb.start()); +++ p = pb.start(); +++ if (input != null) { +++ try (OutputStream os = p.getOutputStream(); +++ PrintStream ps = new PrintStream(os)) { +++ ps.print(input); +++ ps.flush(); +++ } +++ } +++ output = new OutputAnalyzer(p); ++ return output; ++ } catch (Throwable t) { ++ System.out.println("executeProcess() failed: " + t); ++# HG changeset patch ++# User igerasim ++# Date 1539791631 -3600 ++# Wed Oct 17 16:53:51 2018 +0100 ++# Node ID 2f041dd499d30d2e33db8aa55ba2fa721ab51781 ++# Parent 3068b3093e1073df4e01552f00246bd9cbb349da ++8130132: jarsigner should emit warning if weak algorithms or keysizes are used ++Reviewed-by: mullan ++ ++diff --git openjdk/jdk/src/share/classes/sun/security/tools/KeyStoreUtil.java openjdk/jdk/src/share/classes/sun/security/tools/KeyStoreUtil.java ++--- openjdk/jdk/src/share/classes/sun/security/tools/KeyStoreUtil.java +++++ openjdk/jdk/src/share/classes/sun/security/tools/KeyStoreUtil.java ++@@ -35,6 +35,7 @@ ++ ++ import java.security.KeyStore; ++ +++import java.security.cert.X509Certificate; ++ import java.text.Collator; ++ ++ import java.util.Locale; ++@@ -59,6 +60,25 @@ ++ }; ++ ++ /** +++ * Returns true if the certificate is self-signed, false otherwise. +++ */ +++ public static boolean isSelfSigned(X509Certificate cert) { +++ return signedBy(cert, cert); +++ } +++ +++ public static boolean signedBy(X509Certificate end, X509Certificate ca) { +++ if (!ca.getSubjectX500Principal().equals(end.getIssuerX500Principal())) { +++ return false; +++ } +++ try { +++ end.verify(ca.getPublicKey()); +++ return true; +++ } catch (Exception e) { +++ return false; +++ } +++ } +++ +++ /** ++ * Returns true if KeyStore has a password. This is true except for ++ * MSCAPI KeyStores ++ */ ++diff --git openjdk/jdk/src/share/classes/sun/security/tools/jarsigner/Main.java openjdk/jdk/src/share/classes/sun/security/tools/jarsigner/Main.java ++--- openjdk/jdk/src/share/classes/sun/security/tools/jarsigner/Main.java +++++ openjdk/jdk/src/share/classes/sun/security/tools/jarsigner/Main.java ++@@ -174,6 +174,7 @@ ++ private Date expireDate = new Date(0L); // used in noTimestamp warning ++ ++ // Severe warnings +++ private int weakAlg = 0; // 1. digestalg, 2. sigalg, 4. tsadigestalg ++ private boolean hasExpiredCert = false; ++ private boolean notYetValidCert = false; ++ private boolean chainNotValidated = false; ++@@ -183,6 +184,9 @@ ++ private boolean badKeyUsage = false; ++ private boolean badExtendedKeyUsage = false; ++ private boolean badNetscapeCertType = false; +++ private boolean signerSelfSigned = false; +++ +++ private Throwable chainNotValidatedReason = null; ++ ++ private boolean seeWeak = false; ++ ++@@ -275,7 +279,7 @@ ++ ++ if (strict) { ++ int exitCode = 0; ++- if (chainNotValidated || hasExpiredCert || notYetValidCert) { +++ if (weakAlg != 0 || chainNotValidated || hasExpiredCert || notYetValidCert || signerSelfSigned) { ++ exitCode |= 4; ++ } ++ if (badKeyUsage || badExtendedKeyUsage || badNetscapeCertType) { ++@@ -898,6 +902,12 @@ ++ } ++ System.out.println(); ++ +++ // If signer is a trusted cert or private entry in user's own +++ // keystore, it can be self-signed. +++ if (!aliasNotInStore) { +++ signerSelfSigned = false; +++ } +++ ++ if (!anySigned) { ++ if (seeWeak) { ++ if (verbose != null) { ++@@ -918,7 +928,7 @@ ++ boolean errorAppeared = false; ++ if (badKeyUsage || badExtendedKeyUsage || badNetscapeCertType || ++ notYetValidCert || chainNotValidated || hasExpiredCert || ++- hasUnsignedEntry || +++ hasUnsignedEntry || signerSelfSigned || (weakAlg != 0) || ++ aliasNotInStore || notSignedByAlias) { ++ ++ if (strict) { ++@@ -933,6 +943,12 @@ ++ warningAppeared = true; ++ } ++ +++ if (weakAlg != 0) { +++ // In fact, jarsigner verification did not catch this +++ // since it has not read the JarFile content itself. +++ // Everything is done with JarFile API. +++ } +++ ++ if (badKeyUsage) { ++ System.out.println( ++ rb.getString("This.jar.contains.entries.whose.signer.certificate.s.KeyUsage.extension.doesn.t.allow.code.signing.")); ++@@ -962,8 +978,9 @@ ++ } ++ ++ if (chainNotValidated) { ++- System.out.println( ++- rb.getString("This.jar.contains.entries.whose.certificate.chain.is.not.validated.")); +++ System.out.println(String.format( +++ rb.getString("This.jar.contains.entries.whose.certificate.chain.is.not.validated.reason.1"), +++ chainNotValidatedReason.getLocalizedMessage())); ++ } ++ ++ if (notSignedByAlias) { ++@@ -974,6 +991,11 @@ ++ if (aliasNotInStore) { ++ System.out.println(rb.getString("This.jar.contains.signed.entries.that.s.not.signed.by.alias.in.this.keystore.")); ++ } +++ +++ if (signerSelfSigned) { +++ System.out.println(rb.getString( +++ "This.jar.contains.entries.whose.signer.certificate.is.self.signed.")); +++ } ++ } else { ++ System.out.println(rb.getString("jar.verified.")); ++ } ++@@ -1226,7 +1248,25 @@ ++ } ++ ++ void signJar(String jarName, String alias, String[] args) ++- throws Exception { +++ throws Exception { +++ +++ DisabledAlgorithmConstraints dac = +++ new DisabledAlgorithmConstraints( +++ DisabledAlgorithmConstraints.PROPERTY_CERTPATH_DISABLED_ALGS); +++ +++ if (digestalg != null && !dac.permits( +++ Collections.singleton(CryptoPrimitive.MESSAGE_DIGEST), digestalg, null)) { +++ weakAlg |= 1; +++ } +++ if (tSADigestAlg != null && !dac.permits( +++ Collections.singleton(CryptoPrimitive.MESSAGE_DIGEST), tSADigestAlg, null)) { +++ weakAlg |= 4; +++ } +++ if (sigalg != null && !dac.permits( +++ Collections.singleton(CryptoPrimitive.SIGNATURE), sigalg, null)) { +++ weakAlg |= 2; +++ } +++ ++ boolean aliasUsed = false; ++ X509Certificate tsaCert = null; ++ ++@@ -1596,8 +1636,8 @@ ++ } ++ ++ boolean warningAppeared = false; ++- if (badKeyUsage || badExtendedKeyUsage || badNetscapeCertType || ++- notYetValidCert || chainNotValidated || hasExpiredCert) { +++ if (weakAlg != 0 || badKeyUsage || badExtendedKeyUsage || badNetscapeCertType || +++ notYetValidCert || chainNotValidated || hasExpiredCert || signerSelfSigned) { ++ if (strict) { ++ System.out.println(rb.getString("jar.signed.with.signer.errors.")); ++ System.out.println(); ++@@ -1633,8 +1673,31 @@ ++ } ++ ++ if (chainNotValidated) { +++ System.out.println(String.format( +++ rb.getString("The.signer.s.certificate.chain.is.not.validated.reason.1"), +++ chainNotValidatedReason.getLocalizedMessage())); +++ } +++ +++ if (signerSelfSigned) { ++ System.out.println( ++- rb.getString("The.signer.s.certificate.chain.is.not.validated.")); +++ rb.getString("The.signer.s.certificate.is.self.signed.")); +++ } +++ +++ if ((weakAlg & 1) == 1) { +++ System.out.println(String.format( +++ rb.getString("The.1.algorithm.specified.for.the.2.option.is.considered.a.security.risk."), +++ digestalg, "-digestalg")); +++ } +++ +++ if ((weakAlg & 2) == 2) { +++ System.out.println(String.format( +++ rb.getString("The.1.algorithm.specified.for.the.2.option.is.considered.a.security.risk."), +++ sigalg, "-sigalg")); +++ } +++ if ((weakAlg & 4) == 4) { +++ System.out.println(String.format( +++ rb.getString("The.1.algorithm.specified.for.the.2.option.is.considered.a.security.risk."), +++ tSADigestAlg, "-tsadigestalg")); ++ } ++ } else { ++ System.out.println(rb.getString("jar.signed.")); ++@@ -1747,10 +1810,15 @@ ++ // No more warning, we alreay have hasExpiredCert or notYetValidCert ++ } else { ++ chainNotValidated = true; +++ chainNotValidatedReason = e; ++ s.append(tab + rb.getString(".CertPath.not.validated.") + ++ e.getLocalizedMessage() + "]\n"); // TODO ++ } ++ } +++ if (certs.size() == 1 +++ && KeyStoreUtil.isSelfSigned((X509Certificate)certs.get(0))) { +++ signerSelfSigned = true; +++ } ++ String result = s.toString(); ++ cacheForSignerInfo.put(signer, result); ++ return result; ++@@ -2054,12 +2122,17 @@ ++ if (e.getCause() != null && ++ (e.getCause() instanceof CertificateExpiredException || ++ e.getCause() instanceof CertificateNotYetValidException)) { ++- // No more warning, we alreay have hasExpiredCert or notYetValidCert +++ // No more warning, we already have hasExpiredCert or notYetValidCert ++ } else { ++ chainNotValidated = true; +++ chainNotValidatedReason = e; ++ } ++ } ++ +++ if (KeyStoreUtil.isSelfSigned(certChain[0])) { +++ signerSelfSigned = true; +++ } +++ ++ try { ++ if (!token && keypass == null) ++ key = store.getKey(alias, storepass); ++diff --git openjdk/jdk/src/share/classes/sun/security/tools/jarsigner/Resources.java openjdk/jdk/src/share/classes/sun/security/tools/jarsigner/Resources.java ++--- openjdk/jdk/src/share/classes/sun/security/tools/jarsigner/Resources.java +++++ openjdk/jdk/src/share/classes/sun/security/tools/jarsigner/Resources.java ++@@ -224,6 +224,8 @@ ++ "This jar contains entries whose signer certificate will expire within six months. "}, ++ {"This.jar.contains.entries.whose.signer.certificate.is.not.yet.valid.", ++ "This jar contains entries whose signer certificate is not yet valid. "}, +++ {"This.jar.contains.entries.whose.signer.certificate.is.self.signed.", +++ "This jar contains entries whose signer certificate is self-signed."}, ++ {"Re.run.with.the.verbose.option.for.more.details.", ++ "Re-run with the -verbose option for more details."}, ++ {"Re.run.with.the.verbose.and.certs.options.for.more.details.", ++@@ -248,18 +250,22 @@ ++ "This jar contains entries whose signer certificate's NetscapeCertType extension doesn't allow code signing."}, ++ {".{0}.extension.does.not.support.code.signing.", ++ "[{0} extension does not support code signing]"}, ++- {"The.signer.s.certificate.chain.is.not.validated.", ++- "The signer's certificate chain is not validated."}, ++- {"This.jar.contains.entries.whose.certificate.chain.is.not.validated.", ++- "This jar contains entries whose certificate chain is not validated."}, +++ {"The.signer.s.certificate.chain.is.not.validated.reason.1", +++ "The signer's certificate chain is not validated. Reason: %s"}, +++ {"The.signer.s.certificate.is.self.signed.", +++ "The signer's certificate is self-signed."}, +++ {"The.1.algorithm.specified.for.the.2.option.is.considered.a.security.risk.", +++ "The %1$s algorithm specified for the %2$s option is considered a security risk."}, +++ {"This.jar.contains.entries.whose.certificate.chain.is.not.validated.reason.1", +++ "This jar contains entries whose certificate chain is not validated. Reason: %s"}, +++ {"no.timestamp.signing", +++ "No -tsa or -tsacert is provided and this jar is not timestamped. Without a timestamp, users may not be able to validate this jar after the signer certificate's expiration date (%1$tY-%1$tm-%1$td) or after any future revocation date."}, +++ {"no.timestamp.verifying", +++ "This jar contains signatures that does not include a timestamp. Without a timestamp, users may not be able to validate this jar after the signer certificate's expiration date (%1$tY-%1$tm-%1$td) or after any future revocation date."}, ++ {"Unknown.password.type.", "Unknown password type: "}, ++ {"Cannot.find.environment.variable.", ++ "Cannot find environment variable: "}, ++ {"Cannot.find.file.", "Cannot find file: "}, ++- {"no.timestamp.signing", ++- "No -tsa or -tsacert is provided and this jar is not timestamped. Without a timestamp, users may not be able to validate this jar after the signer certificate's expiration date (%1$tY-%1$tm-%1$td) or after any future revocation date."}, ++- {"no.timestamp.verifying", ++- "This jar contains signatures that does not include a timestamp. Without a timestamp, users may not be able to validate this jar after the signer certificate's expiration date (%1$tY-%1$tm-%1$td) or after any future revocation date."}, ++ }; ++ ++ /** ++diff --git openjdk/jdk/src/share/classes/sun/security/tools/keytool/Main.java openjdk/jdk/src/share/classes/sun/security/tools/keytool/Main.java ++--- openjdk/jdk/src/share/classes/sun/security/tools/keytool/Main.java +++++ openjdk/jdk/src/share/classes/sun/security/tools/keytool/Main.java ++@@ -1342,7 +1342,7 @@ ++ for (Certificate ca: keyStore.getCertificateChain(alias)) { ++ if (ca instanceof X509Certificate) { ++ X509Certificate xca = (X509Certificate)ca; ++- if (!isSelfSigned(xca)) { +++ if (!KeyStoreUtil.isSelfSigned(xca)) { ++ dumpCert(xca, out); ++ } ++ } ++@@ -2748,7 +2748,7 @@ ++ ++ // if certificate is self-signed, make sure it verifies ++ boolean selfSigned = false; ++- if (isSelfSigned(cert)) { +++ if (KeyStoreUtil.isSelfSigned(cert)) { ++ cert.verify(cert.getPublicKey()); ++ selfSigned = true; ++ } ++@@ -3052,25 +3052,6 @@ ++ } ++ ++ /** ++- * Returns true if the certificate is self-signed, false otherwise. ++- */ ++- private boolean isSelfSigned(X509Certificate cert) { ++- return signedBy(cert, cert); ++- } ++- ++- private boolean signedBy(X509Certificate end, X509Certificate ca) { ++- if (!ca.getSubjectDN().equals(end.getIssuerDN())) { ++- return false; ++- } ++- try { ++- end.verify(ca.getPublicKey()); ++- return true; ++- } catch (Exception e) { ++- return false; ++- } ++- } ++- ++- /** ++ * Locates a signer for a given certificate from a given keystore and ++ * returns the signer's certificate. ++ * @param cert the certificate whose signer is searched, not null ++@@ -3411,7 +3392,7 @@ ++ // find a cert in the reply who signs thisCert ++ int j; ++ for (j=i; j certToVerify, ++ Vector> chain, ++ Hashtable>> certs) { ++- if (isSelfSigned(certToVerify.snd)) { +++ if (KeyStoreUtil.isSelfSigned(certToVerify.snd)) { ++ // reached self-signed root cert; ++ // no verification needed because it's trusted. ++ chain.addElement(certToVerify); ++diff --git openjdk/jdk/test/sun/security/tools/jarsigner/TsacertOptionTest.java openjdk/jdk/test/sun/security/tools/jarsigner/TsacertOptionTest.java ++--- openjdk/jdk/test/sun/security/tools/jarsigner/TsacertOptionTest.java +++++ openjdk/jdk/test/sun/security/tools/jarsigner/TsacertOptionTest.java ++@@ -46,6 +46,7 @@ ++ + ".txt"; ++ private static final String PASSWORD = "changeit"; ++ private static final String KEYSTORE = "ks.jks"; +++ private static final String CA_KEY_ALIAS = "ca"; ++ private static final String SIGNING_KEY_ALIAS = "sign_alias"; ++ private static final String TSA_KEY_ALIAS = "ts"; ++ private static final String KEY_ALG = "RSA"; ++@@ -73,20 +74,52 @@ ++ ++ // look for free network port for TSA service ++ int port = jdk.testlibrary.Utils.getFreePort(); ++- String host = jdk.testlibrary.Utils.getHostname(); +++ String host = "127.0.0.1"; ++ String tsaUrl = "http://" + host + ":" + port; ++ ++ // create key pair for jar signing ++ ProcessTools.executeCommand(KEYTOOL, ++ "-genkey", +++ "-alias", CA_KEY_ALIAS, +++ "-keyalg", KEY_ALG, +++ "-keysize", Integer.toString(KEY_SIZE), +++ "-keystore", KEYSTORE, +++ "-storepass", PASSWORD, +++ "-keypass", PASSWORD, +++ "-dname", "CN=CA", +++ "-validity", Integer.toString(VALIDITY)).shouldHaveExitValue(0); +++ ProcessTools.executeCommand(KEYTOOL, +++ "-genkey", ++ "-alias", SIGNING_KEY_ALIAS, ++ "-keyalg", KEY_ALG, ++ "-keysize", Integer.toString(KEY_SIZE), ++ "-keystore", KEYSTORE, ++ "-storepass", PASSWORD, ++ "-keypass", PASSWORD, ++- "-dname", "CN=Test", ++- "-validity", Integer.toString(VALIDITY)).shouldHaveExitValue(0); +++ "-dname", "CN=Test").shouldHaveExitValue(0); +++ ProcessTools.executeCommand(KEYTOOL, +++ "-certreq", +++ "-alias", SIGNING_KEY_ALIAS, +++ "-keystore", KEYSTORE, +++ "-storepass", PASSWORD, +++ "-keypass", PASSWORD, +++ "-file", "certreq").shouldHaveExitValue(0); +++ ProcessTools.executeCommand(KEYTOOL, +++ "-gencert", +++ "-alias", CA_KEY_ALIAS, +++ "-keystore", KEYSTORE, +++ "-storepass", PASSWORD, +++ "-keypass", PASSWORD, +++ "-validity", Integer.toString(VALIDITY), +++ "-infile", "certreq", +++ "-outfile", "cert").shouldHaveExitValue(0); +++ ProcessTools.executeCommand(KEYTOOL, +++ "-importcert", +++ "-alias", SIGNING_KEY_ALIAS, +++ "-keystore", KEYSTORE, +++ "-storepass", PASSWORD, +++ "-keypass", PASSWORD, +++ "-file", "cert").shouldHaveExitValue(0); ++ ++ // create key pair for TSA service ++ // SubjectInfoAccess extension contains URL to TSA service ++diff --git openjdk/jdk/test/sun/security/tools/jarsigner/Warning.java openjdk/jdk/test/sun/security/tools/jarsigner/Warning.java ++new file mode 100644 ++--- /dev/null +++++ openjdk/jdk/test/sun/security/tools/jarsigner/Warning.java ++@@ -0,0 +1,248 @@ +++/* +++ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. +++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +++ * +++ * This code is free software; you can redistribute it and/or modify it +++ * under the terms of the GNU General Public License version 2 only, as +++ * published by the Free Software Foundation. +++ * +++ * This code is distributed in the hope that it will be useful, but WITHOUT +++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +++ * version 2 for more details (a copy is included in the LICENSE file that +++ * accompanied this code). +++ * +++ * You should have received a copy of the GNU General Public License version +++ * 2 along with this work; if not, write to the Free Software Foundation, +++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +++ * +++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +++ * or visit www.oracle.com if you need additional information or have any +++ * questions. +++ */ +++ +++import jdk.testlibrary.JDKToolLauncher; +++import jdk.testlibrary.JarUtils; +++import jdk.testlibrary.OutputAnalyzer; +++import jdk.testlibrary.ProcessTools; +++ +++import java.nio.file.Files; +++import java.nio.file.Paths; +++import java.util.Arrays; +++ +++/** +++ * @test +++ * @bug 8024302 8026037 8130132 +++ * @summary warnings, errors and -strict +++ * @library /lib/testlibrary +++ */ +++public class Warning { +++ +++ public static void main(String[] args) throws Throwable { +++ +++ Files.deleteIfExists(Paths.get("ks")); +++ +++ newCert("ca", "-validity 365000"); +++ +++ recreateJar(); +++ +++ newCert("a"); +++ run("jarsigner", "a.jar a") +++ .shouldContain("is self-signed"); +++ run("jarsigner", "a.jar a -strict") +++ .shouldContain("is self-signed") +++ .shouldHaveExitValue(4); +++ // Trusted entry can be self-signed without a warning +++ run("jarsigner", "-verify a.jar") +++ .shouldNotContain("is self-signed") +++ .shouldNotContain("not signed by alias in this keystore"); +++ run("keytool", "-delete -alias a"); +++ // otherwise a warning will be shown +++ run("jarsigner", "-verify a.jar") +++ .shouldContain("is self-signed") +++ .shouldContain("not signed by alias in this keystore"); +++ +++ recreateJar(); +++ +++ newCert("b"); +++ issueCert("b"); +++ run("jarsigner", "a.jar b") +++ .shouldNotContain("is self-signed"); +++ run("jarsigner", "-verify a.jar") +++ .shouldNotContain("is self-signed"); +++ +++ run("jarsigner", "a.jar b -digestalg MD5") +++ .shouldContain("-digestalg option is considered a security risk."); +++ run("jarsigner", "a.jar b -digestalg MD5 -strict") +++ .shouldHaveExitValue(4) +++ .shouldContain("-digestalg option is considered a security risk."); +++ run("jarsigner", "a.jar b -sigalg MD5withRSA") +++ .shouldContain("-sigalg option is considered a security risk"); +++ +++ issueCert("b", "-sigalg MD5withRSA"); +++ run("jarsigner", "a.jar b") +++ .shouldMatch("chain is not validated. Reason:.*MD5withRSA"); +++ +++ recreateJar(); +++ +++ newCert("c", "-keysize 512"); +++ issueCert("c"); +++ run("jarsigner", "a.jar c") +++ .shouldContain("chain is not validated. " + +++ "Reason: Algorithm constraints check failed"); +++ +++ recreateJar(); +++ +++ newCert("s1"); issueCert("s1", "-startdate 2000/01/01 -validity 36525"); +++ run("jarsigner", "a.jar s1") +++ .shouldHaveExitValue(0) +++ .shouldContain("Warning:") +++ .shouldNotContain("Error:") +++ .shouldContain("timestamp").shouldContain("2100-01-01") +++ .shouldNotContain("with signer errors"); +++ run("jarsigner", "a.jar s1 -strict") +++ .shouldHaveExitValue(0) +++ .shouldContain("Warning:") +++ .shouldNotContain("Error:") +++ .shouldContain("timestamp").shouldContain("2100-01-01") +++ .shouldNotContain("with signer errors"); +++ run("jarsigner", "a.jar s1 -verify") +++ .shouldHaveExitValue(0) +++ .shouldContain("Warning:") +++ .shouldNotContain("Error:") +++ .shouldContain("timestamp").shouldContain("2100-01-01") +++ .shouldNotContain("with signer errors"); +++ run("jarsigner", "a.jar s1 -verify -strict") +++ .shouldHaveExitValue(0) +++ .shouldContain("Warning:") +++ .shouldNotContain("Error:") +++ .shouldContain("timestamp").shouldContain("2100-01-01") +++ .shouldNotContain("with signer errors"); +++ +++ recreateJar(); +++ +++ newCert("s2"); issueCert("s2", "-validity 100"); +++ run("jarsigner", "a.jar s2") +++ .shouldHaveExitValue(0) +++ .shouldContain("Warning:") +++ .shouldNotContain("Error:") +++ .shouldContain("timestamp") +++ .shouldContain("will expire") +++ .shouldNotContain("with signer errors"); +++ run("jarsigner", "a.jar s2 -strict") +++ .shouldHaveExitValue(0) +++ .shouldContain("Warning:") +++ .shouldNotContain("Error:") +++ .shouldContain("timestamp") +++ .shouldContain("will expire") +++ .shouldNotContain("with signer errors"); +++ run("jarsigner", "a.jar s2 -verify") +++ .shouldHaveExitValue(0) +++ .shouldContain("Warning:") +++ .shouldNotContain("Error:") +++ .shouldContain("timestamp") +++ .shouldContain("will expire") +++ .shouldNotContain("with signer errors"); +++ run("jarsigner", "a.jar s2 -verify -strict") +++ .shouldHaveExitValue(0) +++ .shouldContain("Warning:") +++ .shouldNotContain("Error:") +++ .shouldContain("timestamp") +++ .shouldContain("will expire") +++ .shouldNotContain("with signer errors"); +++ +++ recreateJar(); +++ +++ newCert("s3"); issueCert("s3", "-startdate -200d -validity 100"); +++ run("jarsigner", "a.jar s3") +++ .shouldHaveExitValue(0) +++ .shouldContain("Warning:") +++ .shouldContain("has expired") +++ .shouldNotContain("with signer errors") +++ .shouldNotContain("Error:"); +++ run("jarsigner", "a.jar s3 -strict") +++ .shouldHaveExitValue(4) +++ .shouldContain("with signer errors") +++ .shouldMatch("(?s).*Error:.*has expired.*Warning:.*"); +++ run("jarsigner", "a.jar s3 -verify") +++ .shouldHaveExitValue(0) +++ .shouldContain("Warning:") +++ .shouldNotContain("with signer errors") +++ .shouldNotContain("Error:"); +++ run("jarsigner", "a.jar s3 -verify -strict") +++ .shouldHaveExitValue(4) +++ .shouldContain("with signer errors") +++ .shouldMatch("(?s).*Error:.*has expired.*Warning:.*"); +++ } +++ +++ // Creates a new jar without signature +++ static void recreateJar() throws Exception { +++ JarUtils.createJar("a.jar", "ks"); +++ } +++ +++ // Creates a self-signed cert for alias with zero or more -genkey options +++ static void newCert(String alias, String... more) throws Throwable { +++ String args = "-genkeypair -alias " + alias + " -dname CN=" + alias; +++ for (String s: more) { +++ args += " " + s; +++ } +++ run("keytool", args).shouldHaveExitValue(0); +++ } +++ +++ // Asks ca to issue a cert to alias with zero or more -gencert options +++ static void issueCert(String alias, String...more) throws Throwable { +++ String req = run("keytool", "-certreq -alias " + alias) +++ .shouldHaveExitValue(0).getStdout(); +++ String args = "-gencert -alias ca -rfc"; +++ for (String s: more) { +++ args += " " + s; +++ } +++ String cert = run("keytool", args, req) +++ .shouldHaveExitValue(0).getStdout(); +++ run("keytool", "-import -alias " + alias, cert).shouldHaveExitValue(0); +++ } +++ +++ // Runs a java tool with command line arguments +++ static OutputAnalyzer run(String command, String args) +++ throws Throwable { +++ return run(command, args, null); +++ } +++ +++ // Runs a java tool with command line arguments and an optional input block +++ static OutputAnalyzer run(String command, String args, String input) +++ throws Throwable { +++ JDKToolLauncher launcher = JDKToolLauncher.createUsingTestJDK(command); +++ launcher.addVMArg("-Duser.language=en").addVMArg("-Duser.country=US"); +++ switch (command) { +++ case "keytool": +++ for (String s: new String[] { +++ "-keystore", "ks", "-storepass", "changeit", +++ "-storetype", "jks", +++ "-keypass", "changeit", "-keyalg", "rsa", "-debug"}) { +++ launcher.addToolArg(s); +++ } +++ break; +++ case "jarsigner": +++ for (String s: new String[] { +++ "-keystore", "ks", "-storepass", "changeit", +++ "-storetype", "jks"}) { +++ launcher.addToolArg(s); +++ } +++ break; +++ } +++ for (String arg: args.split(" ")) { +++ launcher.addToolArg(arg); +++ } +++ String[] cmd = launcher.getCommand(); +++ ProcessBuilder pb = new ProcessBuilder(cmd); +++ OutputAnalyzer out = ProcessTools.executeProcess(pb, input); +++ System.out.println("======================"); +++ System.out.println(Arrays.toString(cmd)); +++ String msg = " stdout: [" + out.getStdout() + "];\n" +++ + " stderr: [" + out.getStderr() + "]\n" +++ + " exitValue = " + out.getExitValue() + "\n"; +++ System.out.println(msg); +++ return out; +++ } +++} +++ ++diff --git openjdk/jdk/test/sun/security/tools/jarsigner/concise_jarsigner.sh openjdk/jdk/test/sun/security/tools/jarsigner/concise_jarsigner.sh ++--- openjdk/jdk/test/sun/security/tools/jarsigner/concise_jarsigner.sh +++++ openjdk/jdk/test/sun/security/tools/jarsigner/concise_jarsigner.sh ++@@ -136,19 +136,19 @@ ++ # 16 and 32 already covered in the first part ++ # ========================================================== ++ ++-$KT -genkeypair -alias expired -dname CN=expired -startdate -10m ++-$KT -genkeypair -alias notyetvalid -dname CN=notyetvalid -startdate +1m ++-$KT -genkeypair -alias badku -dname CN=badku -ext KU=cRLSign -validity 365 ++-$KT -genkeypair -alias badeku -dname CN=badeku -ext EKU=sa -validity 365 ++-$KT -genkeypair -alias goodku -dname CN=goodku -ext KU=dig -validity 365 ++-$KT -genkeypair -alias goodeku -dname CN=goodeku -ext EKU=codesign -validity 365 ++- ++-# badchain signed by ca, but ca is removed later ++-$KT -genkeypair -alias badchain -dname CN=badchain -validity 365 ++ $KT -genkeypair -alias ca -dname CN=ca -ext bc -validity 365 ++-$KT -certreq -alias badchain | $KT -gencert -alias ca -validity 365 | \ ++- $KT -importcert -alias badchain ++-$KT -delete -alias ca +++$KT -genkeypair -alias expired -dname CN=expired +++$KT -certreq -alias expired | $KT -gencert -alias ca -startdate -10m | $KT -import -alias expired +++$KT -genkeypair -alias notyetvalid -dname CN=notyetvalid +++$KT -certreq -alias notyetvalid | $KT -gencert -alias ca -startdate +1m | $KT -import -alias notyetvalid +++$KT -genkeypair -alias badku -dname CN=badku +++$KT -certreq -alias badku | $KT -gencert -alias ca -ext KU=cRLSign -validity 365 | $KT -import -alias badku +++$KT -genkeypair -alias badeku -dname CN=badeku +++$KT -certreq -alias badeku | $KT -gencert -alias ca -ext EKU=sa -validity 365 | $KT -import -alias badeku +++$KT -genkeypair -alias goodku -dname CN=goodku +++$KT -certreq -alias goodku | $KT -gencert -alias ca -ext KU=dig -validity 365 | $KT -import -alias goodku +++$KT -genkeypair -alias goodeku -dname CN=goodeku +++$KT -certreq -alias goodeku | $KT -gencert -alias ca -ext EKU=codesign -validity 365 | $KT -import -alias goodeku ++ ++ $JARSIGNER -strict -keystore js.jks -storepass changeit a.jar expired ++ [ $? = 4 ] || exit $LINENO ++@@ -168,6 +168,12 @@ ++ $JARSIGNER -strict -keystore js.jks -storepass changeit a.jar goodeku ++ [ $? = 0 ] || exit $LINENO ++ +++# badchain signed by ca, but ca is removed later +++$KT -genkeypair -alias badchain -dname CN=badchain -validity 365 +++$KT -certreq -alias badchain | $KT -gencert -alias ca -validity 365 | \ +++ $KT -importcert -alias badchain +++$KT -delete -alias ca +++ ++ $JARSIGNER -strict -keystore js.jks -storepass changeit a.jar badchain ++ [ $? = 4 ] || exit $LINENO ++ ++@@ -178,18 +184,22 @@ ++ # Third part: -certchain test ++ # ========================================================== ++ ++-# altchain signed by ca2, but ca2 is removed later +++# altchain signed by ca2 ++ $KT -genkeypair -alias altchain -dname CN=altchain -validity 365 ++ $KT -genkeypair -alias ca2 -dname CN=ca2 -ext bc -validity 365 ++ $KT -certreq -alias altchain | $KT -gencert -alias ca2 -validity 365 -rfc > certchain ++ $KT -exportcert -alias ca2 -rfc >> certchain ++-$KT -delete -alias ca2 ++ ++-# Now altchain is still self-signed +++# Self-signed cert does not work ++ $JARSIGNER -strict -keystore js.jks -storepass changeit a.jar altchain +++[ $? = 4 ] || exit $LINENO +++ +++# -certchain works +++$JARSIGNER -strict -keystore $KS -storepass changeit -certchain certchain a.jar altchain ++ [ $? = 0 ] || exit $LINENO ++ ++-# If -certchain is used, then it's bad +++# but if ca2 is removed, -certchain does not work +++$KT -delete -alias ca2 ++ $JARSIGNER -strict -keystore js.jks -storepass changeit -certchain certchain a.jar altchain ++ [ $? = 4 ] || exit $LINENO ++ ++diff --git openjdk/jdk/test/sun/security/tools/jarsigner/ec.sh openjdk/jdk/test/sun/security/tools/jarsigner/ec.sh ++--- openjdk/jdk/test/sun/security/tools/jarsigner/ec.sh +++++ openjdk/jdk/test/sun/security/tools/jarsigner/ec.sh ++@@ -53,11 +53,20 @@ ++ echo A > A ++ $JAR cvf $JFILE A ++ ++-$KT -alias a -dname CN=a -keyalg ec -genkey -validity 300 || exit 11 ++-$KT -alias b -dname CN=b -keyalg ec -genkey -validity 300 || exit 12 +++$KT -alias ca -dname CN=ca -keyalg ec -genkey -validity 300 || exit 11 +++ +++$KT -alias a -dname CN=a -keyalg ec -genkey || exit 11 +++$KT -alias a -certreq | $KT -gencert -alias ca -validity 300 | $KT -import -alias a || exit 111 +++ +++$KT -alias b -dname CN=b -keyalg ec -genkey || exit 12 +++$KT -alias b -certreq | $KT -gencert -alias ca -validity 300 | $KT -import -alias b || exit 121 +++ ++ # Ensure that key length is sufficient for the intended hash (SHA512withECDSA) ++-$KT -alias c -dname CN=c -keyalg ec -genkey -validity 300 -keysize 521 || exit 13 +++$KT -alias c -dname CN=c -keyalg ec -genkey -keysize 521 || exit 13 +++$KT -alias c -certreq | $KT -gencert -alias ca -validity 300 | $KT -import -alias c || exit 131 +++ ++ $KT -alias x -dname CN=x -keyalg ec -genkey -validity 300 || exit 14 +++$KT -alias x -certreq | $KT -gencert -alias ca -validity 300 | $KT -import -alias x || exit 141 ++ ++ $JARSIGNER -keystore $KS -storepass changeit $JFILE a -debug -strict || exit 21 ++ $JARSIGNER -keystore $KS -storepass changeit $JFILE b -debug -strict -sigalg SHA1withECDSA || exit 22 ++diff --git openjdk/jdk/test/sun/security/tools/jarsigner/onlymanifest.sh openjdk/jdk/test/sun/security/tools/jarsigner/onlymanifest.sh ++--- openjdk/jdk/test/sun/security/tools/jarsigner/onlymanifest.sh +++++ openjdk/jdk/test/sun/security/tools/jarsigner/onlymanifest.sh ++@@ -57,12 +57,14 @@ ++ echo "Key: Value" > manifest ++ $JAR cvfm $JFILE manifest ++ ++-$KT -alias a -dname CN=a -genkey -validity 300 || exit 1 ++-$JARSIGNER -keystore $KS -storepass changeit $JFILE a -debug -strict || exit 2 +++$KT -alias ca -dname CN=ca -genkey -validity 300 || exit 1 +++$KT -alias a -dname CN=a -genkey -validity 300 || exit 2 +++$KT -alias a -certreq | $KT -gencert -alias ca -validity 300 | $KT -import -alias a || exit 3 +++$JARSIGNER -keystore $KS -storepass changeit $JFILE a -debug -strict || exit 4 ++ $JARSIGNER -keystore $KS -storepass changeit -verify $JFILE a -debug -strict \ ++- > onlymanifest.out || exit 3 +++ > onlymanifest.out || exit 5 ++ ++-grep unsigned onlymanifest.out && exit 4 +++grep unsigned onlymanifest.out && exit 6 ++ ++ exit 0 ++ ++diff --git openjdk/jdk/test/sun/security/tools/jarsigner/warnings.sh openjdk/jdk/test/sun/security/tools/jarsigner/warnings.sh ++deleted file mode 100644 ++--- openjdk/jdk/test/sun/security/tools/jarsigner/warnings.sh +++++ /dev/null ++@@ -1,119 +0,0 @@ ++-# ++-# Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. ++-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++-# ++-# This code is free software; you can redistribute it and/or modify it ++-# under the terms of the GNU General Public License version 2 only, as ++-# published by the Free Software Foundation. ++-# ++-# This code is distributed in the hope that it will be useful, but WITHOUT ++-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++-# version 2 for more details (a copy is included in the LICENSE file that ++-# accompanied this code). ++-# ++-# You should have received a copy of the GNU General Public License version ++-# 2 along with this work; if not, write to the Free Software Foundation, ++-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++-# ++-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA ++-# or visit www.oracle.com if you need additional information or have any ++-# questions. ++-# ++- ++-# @test ++-# @bug 8024302 ++-# @bug 8026037 ++-# @summary Clarify jar verifications ++-# ++- ++-if [ "${TESTJAVA}" = "" ] ; then ++- JAVAC_CMD=`which javac` ++- TESTJAVA=`dirname $JAVAC_CMD`/.. ++-fi ++- ++-# set platform-dependent variables ++-OS=`uname -s` ++-case "$OS" in ++- Windows_* ) ++- FS="\\" ++- ;; ++- * ) ++- FS="/" ++- ;; ++-esac ++- ++-KS=warnings.jks ++-JFILE=warnings.jar ++- ++-KT="$TESTJAVA${FS}bin${FS}keytool -storepass changeit -keypass changeit \ ++- -keystore $KS" ++-JAR=$TESTJAVA${FS}bin${FS}jar ++-JARSIGNER="$TESTJAVA${FS}bin${FS}jarsigner -keystore $KS -storepass changeit" ++- ++-rm $KS 2> /dev/null ++- ++-LANG=C ++-export LANG ++- ++-echo 12345 > file ++- ++-ERR="" ++- ++-# Normal signer expiring on 2100-01-01 ++-$KT -alias s1 -dname CN=s1 -genkey -startdate 2000/01/01 -validity 36525 || ERR="$ERR keytool s1," ++-# Cert expiring soon, informational warning ++-$KT -alias s2 -dname CN=s2 -genkey -validity 100 || ERR="$ERR keytool s2," ++-# Cert expired, severe warning ++-$KT -alias s3 -dname CN=s3 -genkey -startdate -200d -validity 100 || ERR="$ERR keytool s3," ++- ++-# noTimestamp is informatiional warning and includes a date ++-$JAR cvf $JFILE file ++-$JARSIGNER $JFILE s1 > output1 || ERR="$ERR jarsigner s1," ++-$JARSIGNER -strict $JFILE s1 >> output1 || ERR="$ERR jarsigner s1 strict," ++-$JARSIGNER -verify $JFILE s1 >> output1 || ERR="$ERR jarsigner s1," ++-$JARSIGNER -verify -strict $JFILE s1 >> output1 || ERR="$ERR jarsigner s1 strict," ++- ++-cat output1 | grep Warning || ERR="$ERR s1 warning," ++-cat output1 | grep Error && ERR="$ERR s1 error," ++-cat output1 | grep timestamp | grep 2100-01-01 || ERR="$ERR s1 timestamp," ++-cat output1 | grep "with signer errors" && ERR="$ERR s1 err," ++- ++-# hasExpiringCert is informatiional warning ++-$JAR cvf $JFILE file ++-$JARSIGNER $JFILE s2 > output2 || ERR="$ERR jarsigner s2," ++-$JARSIGNER -strict $JFILE s2 >> output2 || ERR="$ERR jarsigner s2 strict," ++-$JARSIGNER -verify $JFILE s2 >> output2 || ERR="$ERR jarsigner s2," ++-$JARSIGNER -verify -strict $JFILE s2 >> output2 || ERR="$ERR jarsigner s2 strict," ++- ++-cat output2 | grep Warning || ERR="$ERR s2 warning," ++-cat output2 | grep Error && ERR="$ERR s2 error," ++-cat output2 | grep timestamp || ERR="$ERR s2 timestamp," ++-cat output2 | grep "will expire" || ERR="$ERR s2 expiring," ++-cat output2 | grep "with signer errors" && ERR="$ERR s2 err," ++- ++-# hasExpiredCert is severe warning ++-$JAR cvf $JFILE file ++-$JARSIGNER $JFILE s3 > output3 || ERR="$ERR jarsigner s3," ++-$JARSIGNER -strict $JFILE s3 > output3s && ERR="$ERR jarsigner s3 strict," ++-$JARSIGNER -verify $JFILE s3 >> output3 || ERR="$ERR jarsigner s3," ++-$JARSIGNER -verify -strict $JFILE s3 >> output3s && ERR="$ERR jarsigner s3 strict," ++- ++-# warning without -strict ++-cat output3 | grep Warning || ERR="$ERR s3 warning," ++-cat output3 | grep Error && ERR="$ERR s3 error," ++-cat output3 | grep "with signer errors" && ERR="$ERR s3 err," ++- ++-# error with -strict ++-cat output3s | grep Warning || ERR="$ERR s3s warning," ++-cat output3s | grep Error || ERR="$ERR s3s error," ++-cat output3s | grep "with signer errors" || ERR="$ERR s3 err," ++- ++-if [ "$ERR" = "" ]; then ++- exit 0 ++-else ++- echo "ERR is $ERR" ++- exit 1 ++-fi ++- ++- ++diff --git openjdk/jdk/test/sun/security/tools/jarsigner/weaksize.sh openjdk/jdk/test/sun/security/tools/jarsigner/weaksize.sh ++--- openjdk/jdk/test/sun/security/tools/jarsigner/weaksize.sh +++++ openjdk/jdk/test/sun/security/tools/jarsigner/weaksize.sh ++@@ -52,9 +52,9 @@ ++ $JAR cvf a.jar ks ++ ++ # We always trust a TrustedCertificateEntry ++-$JS a.jar ca || exit 1 +++$JS a.jar ca | grep "chain is not validated" && exit 1 ++ ++ # An end-entity cert must follow algorithm constraints ++-$JS a.jar signer && exit 2 +++$JS a.jar signer | grep "chain is not validated" || exit 2 ++ ++ exit 0 ++# HG changeset patch ++# User igerasim ++# Date 1516239752 28800 ++# Wed Jan 17 17:42:32 2018 -0800 ++# Node ID 3e4624d1c974920ab4084bd93af88e37ece4c48b ++# Parent 2f041dd499d30d2e33db8aa55ba2fa721ab51781 ++8146377: test/sun/security/tools/jarsigner/concise_jarsigner.sh failing ++Reviewed-by: xuelei ++ ++diff --git openjdk/jdk/test/sun/security/tools/jarsigner/concise_jarsigner.sh openjdk/jdk/test/sun/security/tools/jarsigner/concise_jarsigner.sh ++--- openjdk/jdk/test/sun/security/tools/jarsigner/concise_jarsigner.sh +++++ openjdk/jdk/test/sun/security/tools/jarsigner/concise_jarsigner.sh ++@@ -65,8 +65,8 @@ ++ # First part: output format ++ # ========================================================== ++ ++-$KT -genkeypair -alias a1 -dname CN=a1 -validity 365 ++-$KT -genkeypair -alias a2 -dname CN=a2 -validity 365 +++$KT -genkeypair -alias a1 -dname CN=a1 -validity 366 +++$KT -genkeypair -alias a2 -dname CN=a2 -validity 366 ++ ++ # a.jar includes 8 unsigned, 2 signed by a1 and a2, 2 signed by a3 ++ $JAR cvf a.jar A1.class A2.class ++# HG changeset patch ++# User igerasim ++# Date 1516239836 28800 ++# Wed Jan 17 17:43:56 2018 -0800 ++# Node ID 8536436fb1412636fd9672e99e107adefa66df78 ++# Parent 3e4624d1c974920ab4084bd93af88e37ece4c48b ++8158887: sun/security/tools/jarsigner/concise_jarsigner.sh timed out ++Reviewed-by: xuelei ++ ++diff --git openjdk/jdk/test/sun/security/tools/jarsigner/concise_jarsigner.sh openjdk/jdk/test/sun/security/tools/jarsigner/concise_jarsigner.sh ++--- openjdk/jdk/test/sun/security/tools/jarsigner/concise_jarsigner.sh +++++ openjdk/jdk/test/sun/security/tools/jarsigner/concise_jarsigner.sh ++@@ -25,7 +25,7 @@ ++ # @bug 6802846 ++ # @summary jarsigner needs enhanced cert validation(options) ++ # ++-# @run shell concise_jarsigner.sh +++# @run shell/timeout=240 concise_jarsigner.sh ++ # ++ ++ if [ "${TESTJAVA}" = "" ] ; then ++# HG changeset patch ++# User igerasim ++# Date 1540061214 -3600 ++# Sat Oct 20 19:46:54 2018 +0100 ++# Node ID e4925f09fe2e0a019a783d297a49ffd062f4ff75 ++# Parent 8536436fb1412636fd9672e99e107adefa66df78 ++8172529: Use PKIXValidator in jarsigner ++Reviewed-by: xuelei, mullan, alanb ++ ++diff --git openjdk/jdk/src/share/classes/sun/security/tools/jarsigner/Main.java openjdk/jdk/src/share/classes/sun/security/tools/jarsigner/Main.java ++--- openjdk/jdk/src/share/classes/sun/security/tools/jarsigner/Main.java +++++ openjdk/jdk/src/share/classes/sun/security/tools/jarsigner/Main.java ++@@ -26,6 +26,8 @@ ++ package sun.security.tools.jarsigner; ++ ++ import java.io.*; +++import java.security.cert.CertPathValidatorException; +++import java.security.cert.PKIXBuilderParameters; ++ import java.util.*; ++ import java.util.zip.*; ++ import java.util.jar.*; ++@@ -46,11 +48,9 @@ ++ import java.net.URL; ++ import java.net.URLClassLoader; ++ import java.security.cert.CertPath; ++-import java.security.cert.CertPathValidator; ++ import java.security.cert.CertificateExpiredException; ++ import java.security.cert.CertificateFactory; ++ import java.security.cert.CertificateNotYetValidException; ++-import java.security.cert.PKIXParameters; ++ import java.security.cert.TrustAnchor; ++ import java.util.Map.Entry; ++ import sun.security.pkcs.PKCS7; ++@@ -58,6 +58,8 @@ ++ import sun.security.timestamp.TimestampToken; ++ import sun.security.tools.KeyStoreUtil; ++ import sun.security.tools.PathList; +++import sun.security.validator.Validator; +++import sun.security.validator.ValidatorException; ++ import sun.security.x509.*; ++ import sun.security.util.*; ++ import sun.misc.BASE64Encoder; ++@@ -190,9 +192,7 @@ ++ ++ private boolean seeWeak = false; ++ ++- CertificateFactory certificateFactory; ++- CertPathValidator validator; ++- PKIXParameters pkixParameters; +++ PKIXBuilderParameters pkixParameters; ++ ++ public void run(String args[]) { ++ try { ++@@ -1801,19 +1801,10 @@ ++ try { ++ validateCertChain(certs); ++ } catch (Exception e) { ++- if (debug) { ++- e.printStackTrace(); ++- } ++- if (e.getCause() != null && ++- (e.getCause() instanceof CertificateExpiredException || ++- e.getCause() instanceof CertificateNotYetValidException)) { ++- // No more warning, we alreay have hasExpiredCert or notYetValidCert ++- } else { ++- chainNotValidated = true; ++- chainNotValidatedReason = e; ++- s.append(tab + rb.getString(".CertPath.not.validated.") + ++- e.getLocalizedMessage() + "]\n"); // TODO ++- } +++ chainNotValidated = true; +++ chainNotValidatedReason = e; +++ s.append(tab).append(rb.getString(".CertPath.not.validated.")) +++ .append(e.getLocalizedMessage()).append("]\n"); // TODO ++ } ++ if (certs.size() == 1 ++ && KeyStoreUtil.isSelfSigned((X509Certificate)certs.get(0))) { ++@@ -1871,9 +1862,6 @@ ++ } ++ ++ try { ++- ++- certificateFactory = CertificateFactory.getInstance("X.509"); ++- validator = CertPathValidator.getInstance("PKIX"); ++ Set tas = new HashSet<>(); ++ try { ++ KeyStore caks = KeyStoreUtil.getCacertsKeyStore(); ++@@ -1949,7 +1937,7 @@ ++ } ++ } finally { ++ try { ++- pkixParameters = new PKIXParameters(tas); +++ pkixParameters = new PKIXBuilderParameters(tas, null); ++ pkixParameters.setRevocationEnabled(false); ++ } catch (InvalidAlgorithmParameterException ex) { ++ // Only if tas is empty ++@@ -2116,17 +2104,8 @@ ++ try { ++ validateCertChain(Arrays.asList(certChain)); ++ } catch (Exception e) { ++- if (debug) { ++- e.printStackTrace(); ++- } ++- if (e.getCause() != null && ++- (e.getCause() instanceof CertificateExpiredException || ++- e.getCause() instanceof CertificateNotYetValidException)) { ++- // No more warning, we already have hasExpiredCert or notYetValidCert ++- } else { ++- chainNotValidated = true; ++- chainNotValidatedReason = e; ++- } +++ chainNotValidated = true; +++ chainNotValidatedReason = e; ++ } ++ ++ if (KeyStoreUtil.isSelfSigned(certChain[0])) { ++@@ -2185,18 +2164,40 @@ ++ } ++ ++ void validateCertChain(List certs) throws Exception { ++- int cpLen = 0; ++- out: for (; cpLen 0) { ++- CertPath cp = certificateFactory.generateCertPath( ++- (cpLen == certs.size())? certs: certs.subList(0, cpLen)); ++- validator.validate(cp, pkixParameters); +++ throw e; ++ } ++ } ++ ++diff --git openjdk/jdk/test/sun/security/tools/jarsigner/concise_jarsigner.sh openjdk/jdk/test/sun/security/tools/jarsigner/concise_jarsigner.sh ++--- openjdk/jdk/test/sun/security/tools/jarsigner/concise_jarsigner.sh +++++ openjdk/jdk/test/sun/security/tools/jarsigner/concise_jarsigner.sh ++@@ -1,5 +1,5 @@ ++ # ++-# Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. +++# Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. ++ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ # ++ # This code is free software; you can redistribute it and/or modify it ++@@ -22,7 +22,7 @@ ++ # ++ ++ # @test ++-# @bug 6802846 +++# @bug 6802846 8172529 ++ # @summary jarsigner needs enhanced cert validation(options) ++ # ++ # @run shell/timeout=240 concise_jarsigner.sh ++@@ -44,12 +44,15 @@ ++ ;; ++ esac ++ ++-KT="$TESTJAVA${FS}bin${FS}keytool -storepass changeit -keypass changeit -keystore js.jks" ++-JAR=$TESTJAVA${FS}bin${FS}jar ++-JARSIGNER=$TESTJAVA${FS}bin${FS}jarsigner ++-JAVAC=$TESTJAVA${FS}bin${FS}javac +++TESTTOOLVMOPTS="$TESTTOOLVMOPTS -J-Duser.language=en -J-Duser.country=US" ++ ++-rm js.jks +++KS=js.ks +++KT="$TESTJAVA${FS}bin${FS}keytool ${TESTTOOLVMOPTS} -storepass changeit -keypass changeit -keystore $KS -keyalg rsa -keysize 1024" +++JAR="$TESTJAVA${FS}bin${FS}jar ${TESTTOOLVMOPTS}" +++JARSIGNER="$TESTJAVA${FS}bin${FS}jarsigner ${TESTTOOLVMOPTS} -debug" +++JAVAC="$TESTJAVA${FS}bin${FS}javac ${TESTTOOLVMOPTS} ${TESTJAVACOPTS}" +++ +++rm $KS ++ ++ echo class A1 {} > A1.java ++ echo class A2 {} > A2.java ++@@ -70,9 +73,9 @@ ++ ++ # a.jar includes 8 unsigned, 2 signed by a1 and a2, 2 signed by a3 ++ $JAR cvf a.jar A1.class A2.class ++-$JARSIGNER -keystore js.jks -storepass changeit a.jar a1 +++$JARSIGNER -keystore $KS -storepass changeit a.jar a1 ++ $JAR uvf a.jar A3.class A4.class ++-$JARSIGNER -keystore js.jks -storepass changeit a.jar a2 +++$JARSIGNER -keystore $KS -storepass changeit a.jar a2 ++ $JAR uvf a.jar A5.class A6.class ++ ++ # Verify OK ++@@ -84,15 +87,15 @@ ++ [ $? = 20 ] || exit $LINENO ++ ++ # 16(hasUnsignedEntry) ++-$JARSIGNER -verify a.jar -strict -keystore js.jks +++$JARSIGNER -verify a.jar -strict -keystore $KS -storepass changeit ++ [ $? = 16 ] || exit $LINENO ++ ++ # 16(hasUnsignedEntry)+32(notSignedByAlias) ++-$JARSIGNER -verify a.jar a1 -strict -keystore js.jks +++$JARSIGNER -verify a.jar a1 -strict -keystore $KS -storepass changeit ++ [ $? = 48 ] || exit $LINENO ++ ++ # 16(hasUnsignedEntry) ++-$JARSIGNER -verify a.jar a1 a2 -strict -keystore js.jks +++$JARSIGNER -verify a.jar a1 a2 -strict -keystore $KS -storepass changeit ++ [ $? = 16 ] || exit $LINENO ++ ++ # 12 entries all together ++@@ -132,7 +135,7 @@ ++ [ $LINES = 4 ] || exit $LINENO ++ ++ # ========================================================== ++-# Second part: exit code 2, 4, 8 +++# Second part: exit code 2, 4, 8. ++ # 16 and 32 already covered in the first part ++ # ========================================================== ++ ++@@ -150,31 +153,34 @@ ++ $KT -genkeypair -alias goodeku -dname CN=goodeku ++ $KT -certreq -alias goodeku | $KT -gencert -alias ca -ext EKU=codesign -validity 365 | $KT -import -alias goodeku ++ ++-$JARSIGNER -strict -keystore js.jks -storepass changeit a.jar expired +++$JARSIGNER -strict -keystore $KS -storepass changeit a.jar expired ++ [ $? = 4 ] || exit $LINENO ++ ++-$JARSIGNER -strict -keystore js.jks -storepass changeit a.jar notyetvalid +++$JARSIGNER -strict -keystore $KS -storepass changeit a.jar notyetvalid ++ [ $? = 4 ] || exit $LINENO ++ ++-$JARSIGNER -strict -keystore js.jks -storepass changeit a.jar badku +++$JARSIGNER -strict -keystore $KS -storepass changeit a.jar badku ++ [ $? = 8 ] || exit $LINENO ++ ++-$JARSIGNER -strict -keystore js.jks -storepass changeit a.jar badeku +++$JARSIGNER -strict -keystore $KS -storepass changeit a.jar badeku ++ [ $? = 8 ] || exit $LINENO ++ ++-$JARSIGNER -strict -keystore js.jks -storepass changeit a.jar goodku +++$JARSIGNER -strict -keystore $KS -storepass changeit a.jar goodku ++ [ $? = 0 ] || exit $LINENO ++ ++-$JARSIGNER -strict -keystore js.jks -storepass changeit a.jar goodeku +++$JARSIGNER -strict -keystore $KS -storepass changeit a.jar goodeku ++ [ $? = 0 ] || exit $LINENO ++ ++-# badchain signed by ca, but ca is removed later +++# badchain signed by ca1, but ca1 is removed later ++ $KT -genkeypair -alias badchain -dname CN=badchain -validity 365 ++-$KT -certreq -alias badchain | $KT -gencert -alias ca -validity 365 | \ +++$KT -genkeypair -alias ca1 -dname CN=ca1 -ext bc -validity 365 +++$KT -certreq -alias badchain | $KT -gencert -alias ca1 -validity 365 | \ ++ $KT -importcert -alias badchain ++-$KT -delete -alias ca +++# save ca1.cert for easy replay +++$KT -exportcert -file ca1.cert -alias ca1 +++$KT -delete -alias ca1 ++ ++-$JARSIGNER -strict -keystore js.jks -storepass changeit a.jar badchain +++$JARSIGNER -strict -keystore $KS -storepass changeit a.jar badchain ++ [ $? = 4 ] || exit $LINENO ++ ++ $JARSIGNER -verify a.jar ++@@ -191,20 +197,48 @@ ++ $KT -exportcert -alias ca2 -rfc >> certchain ++ ++ # Self-signed cert does not work ++-$JARSIGNER -strict -keystore js.jks -storepass changeit a.jar altchain +++$JARSIGNER -strict -keystore $KS -storepass changeit a.jar altchain ++ [ $? = 4 ] || exit $LINENO ++ ++ # -certchain works ++ $JARSIGNER -strict -keystore $KS -storepass changeit -certchain certchain a.jar altchain ++ [ $? = 0 ] || exit $LINENO ++ ++-# but if ca2 is removed, -certchain does not work +++# if ca2 is removed, -certchain still work because altchain is a self-signed entry and +++# it is trusted by jarsigner +++# save ca2.cert for easy replay +++$KT -exportcert -file ca2.cert -alias ca2 ++ $KT -delete -alias ca2 ++-$JARSIGNER -strict -keystore js.jks -storepass changeit -certchain certchain a.jar altchain +++$JARSIGNER -strict -keystore $KS -storepass changeit -certchain certchain a.jar altchain +++[ $? = 0 ] || exit $LINENO +++ +++# if cert is imported, -certchain won't work because this certificate entry is not trusted +++$KT -importcert -file certchain -alias altchain -noprompt +++$JARSIGNER -strict -keystore $KS -storepass changeit -certchain certchain a.jar altchain ++ [ $? = 4 ] || exit $LINENO ++ ++ $JARSIGNER -verify a.jar ++ [ $? = 0 ] || exit $LINENO ++ +++# ========================================================== +++# 8172529 +++# ========================================================== +++ +++$KT -genkeypair -alias ee -dname CN=ee +++$KT -genkeypair -alias caone -dname CN=caone +++$KT -genkeypair -alias catwo -dname CN=catwo +++ +++$KT -certreq -alias ee | $KT -gencert -alias catwo -rfc > ee.cert +++$KT -certreq -alias catwo | $KT -gencert -alias caone -sigalg MD5withRSA -rfc > catwo.cert +++ +++# This certchain contains a cross-signed weak catwo.cert +++cat ee.cert catwo.cert | $KT -importcert -alias ee +++ +++$JAR cvf a.jar A1.class +++$JARSIGNER -strict -keystore $KS -storepass changeit a.jar ee +++[ $? = 0 ] || exit $LINENO +++$JARSIGNER -strict -keystore $KS -storepass changeit -verify a.jar +++[ $? = 0 ] || exit $LINENO +++ ++ echo OK ++ exit 0 ++# HG changeset patch ++# User igerasim ++# Date 1540173939 -3600 ++# Mon Oct 22 03:05:39 2018 +0100 ++# Node ID 52425d2592c852d1fffad572a4e0a05a22f459e1 ++# Parent e4925f09fe2e0a019a783d297a49ffd062f4ff75 ++8180289: jarsigner treats timestamped signed jar invalid after the signer cert expires ++Summary: Includes backported test changes from 8189969 ++Reviewed-by: mullan ++ ++diff --git openjdk/jdk/src/share/classes/sun/security/tools/jarsigner/Main.java openjdk/jdk/src/share/classes/sun/security/tools/jarsigner/Main.java ++--- openjdk/jdk/src/share/classes/sun/security/tools/jarsigner/Main.java +++++ openjdk/jdk/src/share/classes/sun/security/tools/jarsigner/Main.java ++@@ -175,11 +175,20 @@ ++ private boolean noTimestamp = false; ++ private Date expireDate = new Date(0L); // used in noTimestamp warning ++ ++- // Severe warnings +++ // Severe warnings. +++ +++ // jarsigner used to check signer cert chain validity and key usages +++ // itself and set various warnings. Later CertPath validation is +++ // added but chainNotValidated is only flagged when no other existing +++ // warnings are set. TSA cert chain check is added separately and +++ // only tsaChainNotValidated is set, i.e. has no affect on hasExpiredCert, +++ // notYetValidCert, or any badXyzUsage. +++ ++ private int weakAlg = 0; // 1. digestalg, 2. sigalg, 4. tsadigestalg ++ private boolean hasExpiredCert = false; ++ private boolean notYetValidCert = false; ++ private boolean chainNotValidated = false; +++ private boolean tsaChainNotValidated = false; ++ private boolean notSignedByAlias = false; ++ private boolean aliasNotInStore = false; ++ private boolean hasUnsignedEntry = false; ++@@ -189,6 +198,7 @@ ++ private boolean signerSelfSigned = false; ++ ++ private Throwable chainNotValidatedReason = null; +++ private Throwable tsaChainNotValidatedReason = null; ++ ++ private boolean seeWeak = false; ++ ++@@ -279,7 +289,8 @@ ++ ++ if (strict) { ++ int exitCode = 0; ++- if (weakAlg != 0 || chainNotValidated || hasExpiredCert || notYetValidCert || signerSelfSigned) { +++ if (weakAlg != 0 || chainNotValidated +++ || hasExpiredCert || notYetValidCert || signerSelfSigned) { ++ exitCode |= 4; ++ } ++ if (badKeyUsage || badExtendedKeyUsage || badNetscapeCertType) { ++@@ -291,6 +302,9 @@ ++ if (notSignedByAlias || aliasNotInStore) { ++ exitCode |= 32; ++ } +++ if (tsaChainNotValidated) { +++ exitCode |= 64; +++ } ++ if (exitCode != 0) { ++ System.exit(exitCode); ++ } ++@@ -816,6 +830,9 @@ ++ System.out.println(rb.getString("no.manifest.")); ++ } ++ +++ // If there is a time stamp block inside the PKCS7 block file +++ boolean hasTimestampBlock = false; +++ ++ // Even if the verbose option is not specified, all out strings ++ // must be generated so seeWeak can be updated. ++ if (!digestMap.isEmpty() ++@@ -845,6 +862,7 @@ ++ PublicKey key = signer.getPublicKey(); ++ PKCS7 tsToken = si.getTsToken(); ++ if (tsToken != null) { +++ hasTimestampBlock = true; ++ SignerInfo tsSi = tsToken.getSignerInfos()[0]; ++ X509Certificate tsSigner = tsSi.getCertificate(tsToken); ++ byte[] encTsTokenInfo = tsToken.getContentInfo().getData(); ++@@ -929,7 +947,7 @@ ++ if (badKeyUsage || badExtendedKeyUsage || badNetscapeCertType || ++ notYetValidCert || chainNotValidated || hasExpiredCert || ++ hasUnsignedEntry || signerSelfSigned || (weakAlg != 0) || ++- aliasNotInStore || notSignedByAlias) { +++ aliasNotInStore || notSignedByAlias || tsaChainNotValidated) { ++ ++ if (strict) { ++ System.out.println(rb.getString("jar.verified.with.signer.errors.")); ++@@ -979,10 +997,16 @@ ++ ++ if (chainNotValidated) { ++ System.out.println(String.format( ++- rb.getString("This.jar.contains.entries.whose.certificate.chain.is.not.validated.reason.1"), +++ rb.getString("This.jar.contains.entries.whose.certificate.chain.is.invalid.reason.1"), ++ chainNotValidatedReason.getLocalizedMessage())); ++ } ++ +++ if (tsaChainNotValidated) { +++ System.out.println(String.format( +++ rb.getString("This.jar.contains.entries.whose.tsa.certificate.chain.is.invalid.reason.1"), +++ tsaChainNotValidatedReason.getLocalizedMessage())); +++ } +++ ++ if (notSignedByAlias) { ++ System.out.println( ++ rb.getString("This.jar.contains.signed.entries.which.is.not.signed.by.the.specified.alias.es.")); ++@@ -1010,8 +1034,15 @@ ++ "This.jar.contains.entries.whose.signer.certificate.will.expire.within.six.months.")); ++ } ++ if (noTimestamp) { ++- System.out.println( ++- String.format(rb.getString("no.timestamp.verifying"), expireDate)); +++ if (hasTimestampBlock) { +++ // JarSigner API has not seen the timestamp, +++ // might have ignored it due to weak alg, etc. +++ System.out.println( +++ String.format(rb.getString("bad.timestamp.verifying"), expireDate)); +++ } else { +++ System.out.println( +++ String.format(rb.getString("no.timestamp.verifying"), expireDate)); +++ } ++ } ++ } ++ if (warningAppeared || errorAppeared) { ++@@ -1062,16 +1093,23 @@ ++ private static MessageFormat expiredTimeForm = null; ++ private static MessageFormat expiringTimeForm = null; ++ ++- /* ++- * Display some details about a certificate: +++ /** +++ * Returns a string about a certificate: ++ * ++ * [] [", " ] [" (" ")"] ++ * [ | ] +++ * [] ++ * ++- * Note: no newline character at the end +++ * Note: no newline character at the end. +++ * +++ * When isTsCert is true, this method sets global flags like hasExpiredCert, +++ * notYetValidCert, badKeyUsage, badExtendedKeyUsage, badNetscapeCertType. +++ * +++ * @param isTsCert true if c is in the TSA cert chain, false otherwise. +++ * @param checkUsage true to check code signer keyUsage ++ */ ++- String printCert(String tab, Certificate c, boolean checkValidityPeriod, ++- Date timestamp, boolean checkUsage) { +++ String printCert(boolean isTsCert, String tab, Certificate c, +++ Date timestamp, boolean checkUsage) throws Exception { ++ ++ StringBuilder certStr = new StringBuilder(); ++ String space = rb.getString("SPACE"); ++@@ -1091,7 +1129,7 @@ ++ certStr.append(space).append(alias); ++ } ++ ++- if (checkValidityPeriod && x509Cert != null) { +++ if (x509Cert != null) { ++ ++ certStr.append("\n").append(tab).append("["); ++ Date notAfter = x509Cert.getNotAfter(); ++@@ -1104,7 +1142,7 @@ ++ x509Cert.checkValidity(); ++ // test if cert will expire within six months ++ if (notAfter.getTime() < System.currentTimeMillis() + SIX_MONTHS) { ++- hasExpiringCert = true; +++ if (!isTsCert) hasExpiringCert = true; ++ if (expiringTimeForm == null) { ++ expiringTimeForm = new MessageFormat( ++ rb.getString("certificate.will.expire.on")); ++@@ -1125,7 +1163,7 @@ ++ certStr.append(validityTimeForm.format(source)); ++ } ++ } catch (CertificateExpiredException cee) { ++- hasExpiredCert = true; +++ if (!isTsCert) hasExpiredCert = true; ++ ++ if (expiredTimeForm == null) { ++ expiredTimeForm = new MessageFormat( ++@@ -1135,7 +1173,7 @@ ++ certStr.append(expiredTimeForm.format(source)); ++ ++ } catch (CertificateNotYetValidException cnyve) { ++- notYetValidCert = true; +++ if (!isTsCert) notYetValidCert = true; ++ ++ if (notYetTimeForm == null) { ++ notYetTimeForm = new MessageFormat( ++@@ -1544,7 +1582,7 @@ ++ tsaURI); ++ } ++ System.out.println(rb.getString("TSA.certificate.") + ++- printCert("", tsaCert, false, null, false)); +++ printCert(true, "", tsaCert, null, false)); ++ } ++ if (signingMechanism != null) { ++ System.out.println( ++@@ -1607,6 +1645,30 @@ ++ } ++ } ++ +++ // The JarSigner API always accepts the timestamp received. +++ // We need to extract the certs from the signed jar to +++ // validate it. +++ if (!noTimestamp) { +++ try (JarFile check = new JarFile(signedJarFile)) { +++ PKCS7 p7 = new PKCS7(check.getInputStream(check.getEntry( +++ "META-INF/" + sigfile + "." + privateKey.getAlgorithm()))); +++ SignerInfo si = p7.getSignerInfos()[0]; +++ PKCS7 tsToken = si.getTsToken(); +++ SignerInfo tsSi = tsToken.getSignerInfos()[0]; +++ try { +++ validateCertChain(Validator.VAR_TSA_SERVER, +++ tsSi.getCertificateChain(tsToken), null); +++ } catch (Exception e) { +++ tsaChainNotValidated = true; +++ tsaChainNotValidatedReason = e; +++ } +++ } catch (Exception e) { +++ if (debug) { +++ e.printStackTrace(); +++ } +++ } +++ } +++ ++ // no IOException thrown in the follow try clause, so disable ++ // the try clause. ++ // try { ++@@ -1636,8 +1698,10 @@ ++ } ++ ++ boolean warningAppeared = false; ++- if (weakAlg != 0 || badKeyUsage || badExtendedKeyUsage || badNetscapeCertType || ++- notYetValidCert || chainNotValidated || hasExpiredCert || signerSelfSigned) { +++ if (weakAlg != 0 || badKeyUsage || badExtendedKeyUsage +++ || badNetscapeCertType || notYetValidCert +++ || chainNotValidated || tsaChainNotValidated +++ || hasExpiredCert || signerSelfSigned) { ++ if (strict) { ++ System.out.println(rb.getString("jar.signed.with.signer.errors.")); ++ System.out.println(); ++@@ -1674,10 +1738,16 @@ ++ ++ if (chainNotValidated) { ++ System.out.println(String.format( ++- rb.getString("The.signer.s.certificate.chain.is.not.validated.reason.1"), +++ rb.getString("The.signer.s.certificate.chain.is.invalid.reason.1"), ++ chainNotValidatedReason.getLocalizedMessage())); ++ } ++ +++ if (tsaChainNotValidated) { +++ System.out.println(String.format( +++ rb.getString("The.tsa.certificate.chain.is.invalid.reason.1"), +++ tsaChainNotValidatedReason.getLocalizedMessage())); +++ } +++ ++ if (signerSelfSigned) { ++ System.out.println( ++ rb.getString("The.signer.s.certificate.is.self.signed.")); ++@@ -1773,18 +1843,18 @@ ++ /** ++ * Returns a string of singer info, with a newline at the end ++ */ ++- private String signerInfo(CodeSigner signer, String tab) { +++ private String signerInfo(CodeSigner signer, String tab) throws Exception { ++ if (cacheForSignerInfo.containsKey(signer)) { ++ return cacheForSignerInfo.get(signer); ++ } ++- StringBuffer s = new StringBuffer(); +++ StringBuilder sb = new StringBuilder(); ++ List certs = signer.getSignerCertPath().getCertificates(); ++ // display the signature timestamp, if present ++ Date timestamp; ++ Timestamp ts = signer.getTimestamp(); ++ if (ts != null) { ++- s.append(printTimestamp(tab, ts)); ++- s.append('\n'); +++ sb.append(printTimestamp(tab, ts)); +++ sb.append('\n'); ++ timestamp = ts.getTimestamp(); ++ } else { ++ timestamp = null; ++@@ -1793,24 +1863,41 @@ ++ // display the certificate(s). The first one is end-entity cert and ++ // its KeyUsage should be checked. ++ boolean first = true; +++ sb.append(tab).append(rb.getString("...Signer")).append('\n'); ++ for (Certificate c : certs) { ++- s.append(printCert(tab, c, true, timestamp, first)); ++- s.append('\n'); +++ sb.append(printCert(false, tab, c, timestamp, first)); +++ sb.append('\n'); ++ first = false; ++ } ++ try { ++- validateCertChain(certs); +++ validateCertChain(Validator.VAR_CODE_SIGNING, certs, ts); ++ } catch (Exception e) { ++ chainNotValidated = true; ++ chainNotValidatedReason = e; ++- s.append(tab).append(rb.getString(".CertPath.not.validated.")) ++- .append(e.getLocalizedMessage()).append("]\n"); // TODO +++ sb.append(tab).append(rb.getString(".Invalid.certificate.chain.")) +++ .append(e.getLocalizedMessage()).append("]\n"); +++ } +++ if (ts != null) { +++ sb.append(tab).append(rb.getString("...TSA")).append('\n'); +++ for (Certificate c : ts.getSignerCertPath().getCertificates()) { +++ sb.append(printCert(true, tab, c, timestamp, false)); +++ sb.append('\n'); +++ } +++ try { +++ validateCertChain(Validator.VAR_TSA_SERVER, +++ ts.getSignerCertPath().getCertificates(), null); +++ } catch (Exception e) { +++ tsaChainNotValidated = true; +++ tsaChainNotValidatedReason = e; +++ sb.append(tab).append(rb.getString(".Invalid.TSA.certificate.chain.")) +++ .append(e.getLocalizedMessage()).append("]\n"); +++ } ++ } ++ if (certs.size() == 1 ++ && KeyStoreUtil.isSelfSigned((X509Certificate)certs.get(0))) { ++ signerSelfSigned = true; ++ } ++- String result = s.toString(); +++ String result = sb.toString(); ++ cacheForSignerInfo.put(signer, result); ++ return result; ++ } ++@@ -2053,7 +2140,7 @@ ++ } ++ } ++ ++- void getAliasInfo(String alias) { +++ void getAliasInfo(String alias) throws Exception { ++ ++ Key key = null; ++ ++@@ -2099,10 +2186,11 @@ ++ ++ // We don't meant to print anything, the next call ++ // checks validity and keyUsage etc ++- printCert("", certChain[0], true, null, true); +++ printCert(false, "", certChain[0], null, true); ++ ++ try { ++- validateCertChain(Arrays.asList(certChain)); +++ validateCertChain(Validator.VAR_CODE_SIGNING, +++ Arrays.asList(certChain), null); ++ } catch (Exception e) { ++ chainNotValidated = true; ++ chainNotValidatedReason = e; ++@@ -2163,17 +2251,31 @@ ++ System.exit(1); ++ } ++ ++- void validateCertChain(List certs) throws Exception { +++ /** +++ * Validates a cert chain. +++ * +++ * @param parameter this might be a timestamp +++ */ +++ void validateCertChain(String variant, List certs, +++ Object parameter) +++ throws Exception { ++ try { ++ Validator.getInstance(Validator.TYPE_PKIX, ++- Validator.VAR_CODE_SIGNING, +++ variant, ++ pkixParameters) ++- .validate(certs.toArray(new X509Certificate[certs.size()])); +++ .validate(certs.toArray(new X509Certificate[certs.size()]), +++ null, parameter); ++ } catch (Exception e) { ++ if (debug) { ++ e.printStackTrace(); ++ } ++- if (e instanceof ValidatorException) { +++ +++ // Exception might be dismissed if another warning flag +++ // is already set by printCert. This is only done for +++ // code signing certs. +++ +++ if (variant.equals(Validator.VAR_CODE_SIGNING) && +++ e instanceof ValidatorException) { ++ // Throw cause if it's CertPathValidatorException, ++ if (e.getCause() != null && ++ e.getCause() instanceof CertPathValidatorException) { ++diff --git openjdk/jdk/src/share/classes/sun/security/tools/jarsigner/Resources.java openjdk/jdk/src/share/classes/sun/security/tools/jarsigner/Resources.java ++--- openjdk/jdk/src/share/classes/sun/security/tools/jarsigner/Resources.java +++++ openjdk/jdk/src/share/classes/sun/security/tools/jarsigner/Resources.java ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -199,7 +199,8 @@ ++ {"certificate.is.not.valid.until", ++ "certificate is not valid until {0}"}, ++ {"certificate.will.expire.on", "certificate will expire on {0}"}, ++- {".CertPath.not.validated.", "[CertPath not validated: "}, +++ {".Invalid.certificate.chain.", "[Invalid certificate chain: "}, +++ {".Invalid.TSA.certificate.chain.", "[Invalid TSA certificate chain: "}, ++ {"requesting.a.signature.timestamp", ++ "requesting a signature timestamp"}, ++ {"TSA.location.", "TSA location: "}, ++@@ -216,6 +217,8 @@ ++ {"entry.was.signed.on", "entry was signed on {0}"}, ++ {"Warning.", "Warning: "}, ++ {"Error.", "Error: "}, +++ {"...Signer", ">>> Signer"}, +++ {"...TSA", ">>> TSA"}, ++ {"This.jar.contains.unsigned.entries.which.have.not.been.integrity.checked.", ++ "This jar contains unsigned entries which have not been integrity-checked. "}, ++ {"This.jar.contains.entries.whose.signer.certificate.has.expired.", ++@@ -250,18 +253,24 @@ ++ "This jar contains entries whose signer certificate's NetscapeCertType extension doesn't allow code signing."}, ++ {".{0}.extension.does.not.support.code.signing.", ++ "[{0} extension does not support code signing]"}, ++- {"The.signer.s.certificate.chain.is.not.validated.reason.1", ++- "The signer's certificate chain is not validated. Reason: %s"}, +++ {"The.signer.s.certificate.chain.is.invalid.reason.1", +++ "The signer's certificate chain is invalid. Reason: %s"}, +++ {"The.tsa.certificate.chain.is.invalid.reason.1", +++ "The TSA certificate chain is invalid. Reason: %s"}, ++ {"The.signer.s.certificate.is.self.signed.", ++ "The signer's certificate is self-signed."}, ++ {"The.1.algorithm.specified.for.the.2.option.is.considered.a.security.risk.", ++ "The %1$s algorithm specified for the %2$s option is considered a security risk."}, ++- {"This.jar.contains.entries.whose.certificate.chain.is.not.validated.reason.1", ++- "This jar contains entries whose certificate chain is not validated. Reason: %s"}, +++ {"This.jar.contains.entries.whose.certificate.chain.is.invalid.reason.1", +++ "This jar contains entries whose certificate chain is invalid. Reason: %s"}, +++ {"This.jar.contains.entries.whose.tsa.certificate.chain.is.invalid.reason.1", +++ "This jar contains entries whose TSA certificate chain is invalid. Reason: %s"}, ++ {"no.timestamp.signing", ++ "No -tsa or -tsacert is provided and this jar is not timestamped. Without a timestamp, users may not be able to validate this jar after the signer certificate's expiration date (%1$tY-%1$tm-%1$td) or after any future revocation date."}, ++ {"no.timestamp.verifying", ++ "This jar contains signatures that does not include a timestamp. Without a timestamp, users may not be able to validate this jar after the signer certificate's expiration date (%1$tY-%1$tm-%1$td) or after any future revocation date."}, +++ {"bad.timestamp.verifying", +++ "This jar contains signatures that include an invalid timestamp. Without a valid timestamp, users may not be able to validate this jar after any of the signer certificates expire (as early as %1$tY-%1$tm-%1$td).\nRerun jarsigner with -J-Djava.security.debug=jar for more information."}, ++ {"Unknown.password.type.", "Unknown password type: "}, ++ {"Cannot.find.environment.variable.", ++ "Cannot find environment variable: "}, ++diff --git openjdk/jdk/src/share/classes/sun/security/util/SignatureFileVerifier.java openjdk/jdk/src/share/classes/sun/security/util/SignatureFileVerifier.java ++--- openjdk/jdk/src/share/classes/sun/security/util/SignatureFileVerifier.java +++++ openjdk/jdk/src/share/classes/sun/security/util/SignatureFileVerifier.java ++@@ -725,7 +725,8 @@ ++ if (signers == null) { ++ signers = new ArrayList<>(); ++ } ++- // Append the new code signer +++ // Append the new code signer. If timestamp is invalid, this +++ // jar will be treated as unsigned. ++ signers.add(new CodeSigner(certChain, info.getTimestamp())); ++ ++ if (debug != null) { ++diff --git openjdk/jdk/test/lib/testlibrary/jdk/testlibrary/JarUtils.java openjdk/jdk/test/lib/testlibrary/jdk/testlibrary/JarUtils.java ++--- openjdk/jdk/test/lib/testlibrary/jdk/testlibrary/JarUtils.java +++++ openjdk/jdk/test/lib/testlibrary/jdk/testlibrary/JarUtils.java ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -23,15 +23,17 @@ ++ ++ package jdk.testlibrary; ++ ++-import java.io.File; ++ import java.io.FileInputStream; ++ import java.io.FileNotFoundException; ++ import java.io.FileOutputStream; ++ import java.io.IOException; +++import java.nio.file.Files; +++import java.nio.file.InvalidPathException; ++ import java.nio.file.Path; ++-import java.util.ArrayList; +++import java.nio.file.Paths; ++ import java.util.Enumeration; ++-import java.util.List; +++import java.util.HashMap; +++import java.util.Map; ++ import java.util.jar.JarEntry; ++ import java.util.jar.JarFile; ++ import java.util.jar.JarOutputStream; ++@@ -42,31 +44,24 @@ ++ */ ++ public final class JarUtils { ++ ++- ++ /** ++ * Create jar file with specified files. If a specified file does not exist, ++ * a new jar entry will be created with the file name itself as the content. ++ */ ++- public static void createJar(String dest, Path filesLocation, ++- String... fileNames) throws IOException { +++ public static void createJar(String dest, String... files) +++ throws IOException { ++ try (JarOutputStream jos = new JarOutputStream( ++ new FileOutputStream(dest), new Manifest())) { ++- for (String fileName : fileNames) { +++ for (String file : files) { ++ System.out.println(String.format("Adding %s to %s", ++- fileName, dest)); +++ file, dest)); ++ ++ // add an archive entry, and write a file ++- jos.putNextEntry(new JarEntry(fileName)); ++- File file; ++- if (filesLocation != null) { ++- file = filesLocation.resolve(fileName).toFile(); ++- } else { ++- file = new File(fileName); ++- } +++ jos.putNextEntry(new JarEntry(file)); ++ try (FileInputStream fis = new FileInputStream(file)) { ++- Utils.transferBetweenStreams(fis, jos); +++ Utils.transferTo(fis, jos); ++ } catch (FileNotFoundException e) { ++- jos.write(fileName.getBytes()); +++ jos.write(file.getBytes()); ++ } ++ } ++ } ++@@ -74,14 +69,6 @@ ++ } ++ ++ /** ++- * Create jar file with specified files from current directory. ++- */ ++- public static void createJar(String dest, String... files) ++- throws IOException { ++- createJar(dest, null, files); ++- } ++- ++- /** ++ * Add or remove specified files to existing jar file. If a specified file ++ * to be updated or added does not exist, the jar entry will be created ++ * with the file name itself as the content. ++@@ -96,70 +83,93 @@ ++ */ ++ public static void updateJar(String src, String dest, String... files) ++ throws IOException { +++ Map changes = new HashMap<>(); +++ boolean update = true; +++ for (String file : files) { +++ if (file.equals("-")) { +++ update = false; +++ } else if (update) { +++ try { +++ Path p = Paths.get(file); +++ if (Files.exists(p)) { +++ changes.put(file, p); +++ } else { +++ changes.put(file, file); +++ } +++ } catch (InvalidPathException e) { +++ // Fallback if file not a valid Path. +++ changes.put(file, file); +++ } +++ } else { +++ changes.put(file, Boolean.FALSE); +++ } +++ } +++ updateJar(src, dest, changes); +++ } +++ +++ /** +++ * Update content of a jar file. +++ * +++ * @param src the original jar file name +++ * @param dest the new jar file name +++ * @param changes a map of changes, key is jar entry name, value is content. +++ * Value can be Path, byte[] or String. If key exists in +++ * src but value is Boolean FALSE. The entry is removed. +++ * Existing entries in src not a key is unmodified. +++ * @throws IOException +++ */ +++ public static void updateJar(String src, String dest, +++ Map changes) +++ throws IOException { +++ +++ // What if input changes is immutable? +++ changes = new HashMap<>(changes); +++ +++ System.out.printf("Creating %s from %s...\n", dest, src); ++ try (JarOutputStream jos = new JarOutputStream( ++ new FileOutputStream(dest))) { ++ ++- // copy each old entry into destination unless the entry name ++- // is in the updated list ++- List updatedFiles = new ArrayList<>(); ++ try (JarFile srcJarFile = new JarFile(src)) { ++ Enumeration entries = srcJarFile.entries(); ++ while (entries.hasMoreElements()) { ++ JarEntry entry = entries.nextElement(); ++ String name = entry.getName(); ++- boolean found = false; ++- boolean update = true; ++- for (String file : files) { ++- if (file.equals("-")) { ++- update = false; ++- } else if (name.equals(file)) { ++- updatedFiles.add(file); ++- found = true; ++- break; ++- } ++- } ++- ++- if (found) { ++- if (update) { ++- System.out.println(String.format("Updating %s with %s", ++- dest, name)); ++- jos.putNextEntry(new JarEntry(name)); ++- try (FileInputStream fis = new FileInputStream(name)) { ++- Utils.transferBetweenStreams(fis, jos); ++- } catch (FileNotFoundException e) { ++- jos.write(name.getBytes()); ++- } ++- } else { ++- System.out.println(String.format("Removing %s from %s", ++- name, dest)); ++- } +++ if (changes.containsKey(name)) { +++ System.out.println(String.format("- Update %s", name)); +++ updateEntry(jos, name, changes.get(name)); +++ changes.remove(name); ++ } else { ++- System.out.println(String.format("Copying %s to %s", ++- name, dest)); +++ System.out.println(String.format("- Copy %s", name)); ++ jos.putNextEntry(entry); ++- Utils.transferBetweenStreams(srcJarFile. ++- getInputStream(entry), jos); +++ Utils.transferTo(srcJarFile.getInputStream(entry), jos); ++ } ++ } ++ } ++- ++- // append new files ++- for (String file : files) { ++- if (file.equals("-")) { ++- break; ++- } ++- if (!updatedFiles.contains(file)) { ++- System.out.println(String.format("Adding %s with %s", ++- dest, file)); ++- jos.putNextEntry(new JarEntry(file)); ++- try (FileInputStream fis = new FileInputStream(file)) { ++- Utils.transferBetweenStreams(fis, jos); ++- } catch (FileNotFoundException e) { ++- jos.write(file.getBytes()); ++- } ++- } +++ for (Map.Entry e : changes.entrySet()) { +++ System.out.println(String.format("- Add %s", e.getKey())); +++ updateEntry(jos, e.getKey(), e.getValue()); ++ } ++ } ++ System.out.println(); ++ } ++-} ++\ No newline at end of file +++ +++ private static void updateEntry(JarOutputStream jos, String name, Object content) +++ throws IOException { +++ if (content instanceof Boolean) { +++ if (((Boolean) content).booleanValue()) { +++ throw new RuntimeException("Boolean value must be FALSE"); +++ } +++ } else { +++ jos.putNextEntry(new JarEntry(name)); +++ if (content instanceof Path) { +++ Utils.transferTo(Files.newInputStream((Path) content), jos); +++ } else if (content instanceof byte[]) { +++ jos.write((byte[]) content); +++ } else if (content instanceof String) { +++ jos.write(((String) content).getBytes()); +++ } else { +++ throw new RuntimeException("Unknown type " + content.getClass()); +++ } +++ } +++ } +++} ++diff --git openjdk/jdk/test/lib/testlibrary/jdk/testlibrary/OutputAnalyzer.java openjdk/jdk/test/lib/testlibrary/jdk/testlibrary/OutputAnalyzer.java ++--- openjdk/jdk/test/lib/testlibrary/jdk/testlibrary/OutputAnalyzer.java +++++ openjdk/jdk/test/lib/testlibrary/jdk/testlibrary/OutputAnalyzer.java ++@@ -362,6 +362,21 @@ ++ } ++ ++ /** +++ * Verify the exit value of the process +++ * +++ * @param notExpectedExitValue Unexpected exit value from process +++ * @throws RuntimeException If the exit value from the process did match the expected value +++ */ +++ public OutputAnalyzer shouldNotHaveExitValue(int notExpectedExitValue) { +++ if (getExitValue() == notExpectedExitValue) { +++ reportDiagnosticSummary(); +++ throw new RuntimeException("Unexpected to get exit value of [" +++ + notExpectedExitValue + "]\n"); +++ } +++ return this; +++ } +++ +++ /** ++ * Report summary that will help to diagnose the problem Currently includes: ++ * - standard input produced by the process under test - standard output - ++ * exit code Note: the command line is printed by the ProcessTools ++diff --git openjdk/jdk/test/lib/testlibrary/jdk/testlibrary/SecurityTools.java openjdk/jdk/test/lib/testlibrary/jdk/testlibrary/SecurityTools.java ++--- openjdk/jdk/test/lib/testlibrary/jdk/testlibrary/SecurityTools.java +++++ openjdk/jdk/test/lib/testlibrary/jdk/testlibrary/SecurityTools.java ++@@ -47,10 +47,7 @@ ++ launcher.addToolArg(arg); ++ } ++ } ++- String[] cmds = launcher.getCommand(); ++- String cmdLine = joiner(" ", (Object[]) cmds); ++- System.out.println("Command line: [" + cmdLine + "]"); ++- return new ProcessBuilder(cmds); +++ return new ProcessBuilder(launcher.getCommand()); ++ } ++ ++ // keytool ++@@ -67,7 +64,7 @@ ++ pb.redirectInput(ProcessBuilder.Redirect.from(new File(RESPONSE_FILE))); ++ ++ try { ++- return ProcessTools.executeProcess(pb); +++ return execute(pb); ++ } catch (Throwable t) { ++ throw new RuntimeException("keytool failure: " + t); ++ } finally { ++@@ -98,11 +95,20 @@ ++ ++ public static OutputAnalyzer jarsigner(List args) ++ throws Exception { +++ return execute(getProcessBuilder("jarsigner", args)); +++ } +++ +++ private static OutputAnalyzer execute(ProcessBuilder pb) throws Exception { ++ try { ++- return ProcessTools.executeProcess( ++- getProcessBuilder("jarsigner", args)); +++ OutputAnalyzer oa = ProcessTools.executeCommand(pb); +++ System.out.println("Exit value: " + oa.getExitValue()); +++ return oa; ++ } catch (Throwable t) { ++- throw new RuntimeException("jarsigner error: " + t); +++ if (t instanceof Exception) { +++ throw (Exception) t; +++ } else { +++ throw new Exception(t); +++ } ++ } ++ } ++ ++diff --git openjdk/jdk/test/lib/testlibrary/jdk/testlibrary/Utils.java openjdk/jdk/test/lib/testlibrary/jdk/testlibrary/Utils.java ++--- openjdk/jdk/test/lib/testlibrary/jdk/testlibrary/Utils.java +++++ openjdk/jdk/test/lib/testlibrary/jdk/testlibrary/Utils.java ++@@ -35,6 +35,7 @@ ++ import java.util.List; ++ import java.util.Arrays; ++ import java.util.Collections; +++import java.util.Objects; ++ import java.util.regex.Pattern; ++ import java.util.regex.Matcher; ++ import java.util.concurrent.TimeUnit; ++@@ -59,6 +60,9 @@ ++ public static final String JAVA_OPTIONS = System.getProperty("test.java.opts", "").trim(); ++ ++ +++ private static final int MAX_BUFFER_SIZE = Integer.MAX_VALUE - 8; +++ private static final int DEFAULT_BUFFER_SIZE = 8192; +++ ++ /** ++ * Returns the value of 'test.timeout.factor' system property ++ * converted to {@code double}. ++@@ -232,6 +236,40 @@ ++ return Math.round(tOut * Utils.TIMEOUT_FACTOR); ++ } ++ +++ /** +++ * Helper method to read all bytes from InputStream +++ * +++ * @param is InputStream to read from +++ * @return array of bytes +++ * @throws IOException +++ */ +++ public static byte[] readAllBytes(InputStream is) throws IOException { +++ byte[] buf = new byte[DEFAULT_BUFFER_SIZE]; +++ int capacity = buf.length; +++ int nread = 0; +++ int n; +++ for (;;) { +++ // read to EOF which may read more or less than initial buffer size +++ while ((n = is.read(buf, nread, capacity - nread)) > 0) +++ nread += n; +++ +++ // if the last call to read returned -1, then we're done +++ if (n < 0) +++ break; +++ +++ // need to allocate a larger buffer +++ if (capacity <= MAX_BUFFER_SIZE - capacity) { +++ capacity = capacity << 1; +++ } else { +++ if (capacity == MAX_BUFFER_SIZE) +++ throw new OutOfMemoryError("Required array size too large"); +++ capacity = MAX_BUFFER_SIZE; +++ } +++ buf = Arrays.copyOf(buf, capacity); +++ } +++ return (capacity == nread) ? buf : Arrays.copyOf(buf, nread); +++ } +++ ++ private static final int BUFFER_SIZE = 1024; ++ ++ /** ++@@ -259,7 +297,7 @@ ++ * @throws NullPointerException if {@code in} or {@code out} is {@code null} ++ * ++ */ ++- public static long transferBetweenStreams(InputStream in, OutputStream out) +++ public static long transferTo(InputStream in, OutputStream out) ++ throws IOException { ++ long transferred = 0; ++ byte[] buffer = new byte[BUFFER_SIZE]; ++diff --git openjdk/jdk/test/sun/security/tools/jarsigner/TimestampCheck.java openjdk/jdk/test/sun/security/tools/jarsigner/TimestampCheck.java ++--- openjdk/jdk/test/sun/security/tools/jarsigner/TimestampCheck.java +++++ openjdk/jdk/test/sun/security/tools/jarsigner/TimestampCheck.java ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -22,6 +22,8 @@ ++ */ ++ ++ import com.sun.net.httpserver.*; +++ +++import java.io.ByteArrayInputStream; ++ import java.io.ByteArrayOutputStream; ++ import java.io.File; ++ import java.io.FileInputStream; ++@@ -36,16 +38,21 @@ ++ import java.security.PrivateKey; ++ import java.security.Signature; ++ import java.security.cert.Certificate; +++import java.security.cert.CertificateException; +++import java.security.cert.CertificateFactory; ++ import java.security.cert.X509Certificate; ++ import java.util.ArrayList; ++ import java.util.Arrays; ++ import java.util.Calendar; +++import java.util.Collections; ++ import java.util.List; +++import java.util.Map; ++ import java.util.jar.JarEntry; ++ import java.util.jar.JarFile; ++ ++ import sun.misc.IOUtils; ++-import jdk.testlibrary.*; +++import jdk.testlibrary.SecurityTools; +++import jdk.testlibrary.OutputAnalyzer; ++ import jdk.testlibrary.JarUtils; ++ import sun.security.pkcs.ContentInfo; ++ import sun.security.pkcs.PKCS7; ++@@ -58,9 +65,12 @@ ++ import sun.security.x509.AlgorithmId; ++ import sun.security.x509.X500Name; ++ +++import jdk.testlibrary.Utils; +++ ++ /* ++ * @test ++ * @bug 6543842 6543440 6939248 8009636 8024302 8163304 8169911 8169688 8171121 +++ * 8180289 ++ * @summary checking response of timestamp ++ * @modules java.base/sun.security.pkcs ++ * java.base/sun.security.timestamp ++@@ -68,7 +78,7 @@ ++ * java.base/sun.security.util ++ * java.base/sun.security.tools.keytool ++ * @library /lib/testlibrary ++- * @run main/timeout=600 TimestampCheck +++ * @run main/othervm/timeout=600 TimestampCheck ++ */ ++ public class TimestampCheck { ++ ++@@ -114,12 +124,12 @@ ++ */ ++ byte[] sign(byte[] input, String path) throws Exception { ++ DerValue value = new DerValue(input); ++- System.err.println("\nIncoming Request\n==================="); ++- System.err.println("Version: " + value.data.getInteger()); +++ System.out.println("\nIncoming Request\n==================="); +++ System.out.println("Version: " + value.data.getInteger()); ++ DerValue messageImprint = value.data.getDerValue(); ++ AlgorithmId aid = AlgorithmId.parse( ++ messageImprint.data.getDerValue()); ++- System.err.println("AlgorithmId: " + aid); +++ System.out.println("AlgorithmId: " + aid); ++ ++ ObjectIdentifier policyId = new ObjectIdentifier(defaultPolicyId); ++ BigInteger nonce = null; ++@@ -127,25 +137,24 @@ ++ DerValue v = value.data.getDerValue(); ++ if (v.tag == DerValue.tag_Integer) { ++ nonce = v.getBigInteger(); ++- System.err.println("nonce: " + nonce); +++ System.out.println("nonce: " + nonce); ++ } else if (v.tag == DerValue.tag_Boolean) { ++- System.err.println("certReq: " + v.getBoolean()); +++ System.out.println("certReq: " + v.getBoolean()); ++ } else if (v.tag == DerValue.tag_ObjectId) { ++ policyId = v.getOID(); ++- System.err.println("PolicyID: " + policyId); +++ System.out.println("PolicyID: " + policyId); ++ } ++ } ++ ++- System.err.println("\nResponse\n==================="); +++ System.out.println("\nResponse\n==================="); ++ FileInputStream is = new FileInputStream(keystore); ++ KeyStore ks = KeyStore.getInstance("JCEKS"); ++ ks.load(is, "changeit".toCharArray()); ++ is.close(); ++ ++- String alias = "ts"; ++- if (path.startsWith("bad") || path.equals("weak")) { ++- alias = "ts" + path; ++- } +++ // If path starts with "ts", use the TSA it points to. +++ // Otherwise, always use "ts". +++ String alias = path.startsWith("ts") ? path : "ts"; ++ ++ if (path.equals("diffpolicy")) { ++ policyId = new ObjectIdentifier(defaultPolicyId); ++@@ -196,6 +205,9 @@ ++ tst.putInteger(1); ++ ++ Calendar cal = Calendar.getInstance(); +++ if (path.equals("tsold")) { +++ cal.add(Calendar.DAY_OF_MONTH, -20); +++ } ++ tst.putGeneralizedTime(cal.getTime()); ++ ++ if (path.equals("diffnonce")) { ++@@ -223,10 +235,10 @@ ++ "1.2.840.113549.1.9.16.1.4"), ++ new DerValue(tstInfo2.toByteArray())); ++ ++- System.err.println("Signing..."); ++- System.err.println(new X500Name(signer +++ System.out.println("Signing..."); +++ System.out.println(new X500Name(signer ++ .getIssuerX500Principal().getName())); ++- System.err.println(signer.getSerialNumber()); +++ System.out.println(signer.getSerialNumber()); ++ ++ SignerInfo signerInfo = new SignerInfo( ++ new X500Name(signer.getIssuerX500Principal().getName()), ++@@ -299,24 +311,52 @@ ++ ++ prepare(); ++ ++- try (Handler tsa = Handler.init(0, "tsks");) { +++ try (Handler tsa = Handler.init(0, "ks");) { ++ tsa.start(); ++ int port = tsa.getPort(); ++ ++ host = "http://localhost:" + port + "/"; ++ ++ if (args.length == 0) { // Run this test ++- sign("none") +++ +++ sign("normal") +++ .shouldNotContain("Warning") +++ .shouldHaveExitValue(0); +++ +++ verify("normal.jar") +++ .shouldNotContain("Warning") +++ .shouldHaveExitValue(0); +++ +++ // Simulate signing at a previous date: +++ // 1. tsold will create a timestamp of 20 days ago. +++ // 2. oldsigner expired 10 days ago. +++ // jarsigner will show a warning at signing. +++ signVerbose("tsold", "unsigned.jar", "tsold.jar", "oldsigner") +++ .shouldHaveExitValue(4); +++ +++ // It verifies perfectly. +++ verify("tsold.jar", "-verbose", "-certs") +++ .shouldNotContain("Warning") +++ .shouldHaveExitValue(0); +++ +++ signVerbose(null, "unsigned.jar", "none.jar", "signer") ++ .shouldContain("is not timestamped") ++ .shouldHaveExitValue(0); ++ ++- sign("badku") ++- .shouldHaveExitValue(0); +++ signVerbose(null, "unsigned.jar", "badku.jar", "badku") +++ .shouldHaveExitValue(8); ++ checkBadKU("badku.jar"); ++ ++- sign("normal") ++- .shouldNotContain("is not timestamped") ++- .shouldHaveExitValue(0); +++ // 8180289: unvalidated TSA cert chain +++ sign("tsnoca") +++ .shouldContain("TSA certificate chain is invalid") +++ .shouldHaveExitValue(64); +++ +++ verify("tsnoca.jar", "-verbose", "-certs") +++ .shouldHaveExitValue(64) +++ .shouldContain("jar verified") +++ .shouldContain("Invalid TSA certificate chain") +++ .shouldContain("TSA certificate chain is invalid"); ++ ++ sign("nononce") ++ .shouldHaveExitValue(1); ++@@ -328,11 +368,11 @@ ++ .shouldHaveExitValue(1); ++ sign("fullchain") ++ .shouldHaveExitValue(0); // Success, 6543440 solved. ++- sign("bad1") +++ sign("tsbad1") ++ .shouldHaveExitValue(1); ++- sign("bad2") +++ sign("tsbad2") ++ .shouldHaveExitValue(1); ++- sign("bad3") +++ sign("tsbad3") ++ .shouldHaveExitValue(1); ++ sign("nocert") ++ .shouldHaveExitValue(1); ++@@ -344,119 +384,171 @@ ++ sign("diffpolicy", "-tsapolicyid", "1.2.3") ++ .shouldHaveExitValue(1); ++ ++- sign("tsaalg", "-tsadigestalg", "SHA") +++ sign("sha1alg", "-tsadigestalg", "SHA") ++ .shouldHaveExitValue(0); ++- checkTimestamp("tsaalg.jar", defaultPolicyId, "SHA-1"); +++ checkTimestamp("sha1alg.jar", defaultPolicyId, "SHA-1"); ++ ++- sign("weak", "-digestalg", "MD5", +++ sign("tsweak", "-digestalg", "MD5", ++ "-sigalg", "MD5withRSA", "-tsadigestalg", "MD5") ++- .shouldHaveExitValue(0); ++- checkWeak("weak.jar"); +++ .shouldHaveExitValue(68); +++ checkWeak("tsweak.jar"); +++ +++ signVerbose("tsweak", "unsigned.jar", "tsweak2.jar", "signer") +++ .shouldHaveExitValue(64) +++ .shouldContain("TSA certificate chain is invalid"); ++ ++- signWithAliasAndTsa("halfWeak", "old.jar", "old", "-digestalg", "MD5") ++- .shouldHaveExitValue(0); +++ // Weak timestamp is an error and jar treated unsigned +++ verify("tsweak2.jar", "-verbose") +++ .shouldHaveExitValue(16) +++ .shouldContain("treated as unsigned") +++ .shouldMatch("Timestamp.*512.*weak"); +++ +++ signVerbose("normal", "unsigned.jar", "halfWeak.jar", "signer", +++ "-digestalg", "MD5") +++ .shouldHaveExitValue(4); ++ checkHalfWeak("halfWeak.jar"); ++ ++ // sign with DSA key ++- signWithAliasAndTsa("sign1", "old.jar", "dsakey") +++ signVerbose("normal", "unsigned.jar", "sign1.jar", "dsakey") ++ .shouldHaveExitValue(0); ++ // sign with RSAkeysize < 1024 ++- signWithAliasAndTsa("sign2", "sign1.jar", "weakkeysize") ++- .shouldHaveExitValue(0); +++ signVerbose("normal", "sign1.jar", "sign2.jar", "weakkeysize") +++ .shouldHaveExitValue(4); ++ checkMultiple("sign2.jar"); ++ ++ // When .SF or .RSA is missing or invalid ++ checkMissingOrInvalidFiles("normal.jar"); +++ +++ if (Files.exists(Paths.get("ts2.cert"))) { +++ checkInvalidTsaCertKeyUsage(); +++ } ++ } else { // Run as a standalone server ++- System.err.println("Press Enter to quit server"); +++ System.out.println("Press Enter to quit server"); ++ System.in.read(); ++ } ++ } ++ } ++ +++ private static void checkInvalidTsaCertKeyUsage() throws Exception { +++ +++ // Hack: Rewrite the TSA cert inside normal.jar into ts2.jar. +++ +++ // Both the cert and the serial number must be rewritten. +++ byte[] tsCert = Files.readAllBytes(Paths.get("ts.cert")); +++ byte[] ts2Cert = Files.readAllBytes(Paths.get("ts2.cert")); +++ byte[] tsSerial = getCert(tsCert) +++ .getSerialNumber().toByteArray(); +++ byte[] ts2Serial = getCert(ts2Cert) +++ .getSerialNumber().toByteArray(); +++ +++ byte[] oldBlock; +++ try (JarFile normal = new JarFile("normal.jar")) { +++ oldBlock = Utils.readAllBytes(normal.getInputStream( +++ normal.getJarEntry("META-INF/SIGNER.RSA"))); +++ } +++ +++ JarUtils.updateJar("normal.jar", "ts2.jar", +++ mapOf("META-INF/SIGNER.RSA", +++ updateBytes(updateBytes(oldBlock, tsCert, ts2Cert), +++ tsSerial, ts2Serial))); +++ +++ verify("ts2.jar", "-verbose", "-certs") +++ .shouldHaveExitValue(64) +++ .shouldContain("jar verified") +++ .shouldContain("Invalid TSA certificate chain: Extended key usage does not permit use for TSA server"); +++ } +++ +++ public static X509Certificate getCert(byte[] data) +++ throws CertificateException, IOException { +++ return (X509Certificate) +++ CertificateFactory.getInstance("X.509") +++ .generateCertificate(new ByteArrayInputStream(data)); +++ } +++ +++ private static byte[] updateBytes(byte[] old, byte[] from, byte[] to) { +++ int pos = 0; +++ while (true) { +++ if (pos + from.length > old.length) { +++ return null; +++ } +++ if (Arrays.equals(Arrays.copyOfRange(old, pos, pos+from.length), from)) { +++ byte[] result = old.clone(); +++ System.arraycopy(to, 0, result, pos, from.length); +++ return result; +++ } +++ pos++; +++ } +++ } +++ ++ private static void checkMissingOrInvalidFiles(String s) ++ throws Throwable { ++- JarUtils.updateJar(s, "1.jar", "-", "META-INF/OLD.SF"); +++ +++ JarUtils.updateJar(s, "1.jar", mapOf("META-INF/SIGNER.SF", Boolean.FALSE)); ++ verify("1.jar", "-verbose") ++- .shouldHaveExitValue(0) +++ .shouldHaveExitValue(16) ++ .shouldContain("treated as unsigned") ++- .shouldContain("Missing signature-related file META-INF/OLD.SF"); ++- JarUtils.updateJar(s, "2.jar", "-", "META-INF/OLD.RSA"); +++ .shouldContain("Missing signature-related file META-INF/SIGNER.SF"); +++ JarUtils.updateJar(s, "2.jar", mapOf("META-INF/SIGNER.RSA", Boolean.FALSE)); ++ verify("2.jar", "-verbose") ++- .shouldHaveExitValue(0) +++ .shouldHaveExitValue(16) ++ .shouldContain("treated as unsigned") ++- .shouldContain("Missing block file for signature-related file META-INF/OLD.SF"); ++- JarUtils.updateJar(s, "3.jar", "META-INF/OLD.SF"); +++ .shouldContain("Missing block file for signature-related file META-INF/SIGNER.SF"); +++ JarUtils.updateJar(s, "3.jar", mapOf("META-INF/SIGNER.SF", "dummy")); ++ verify("3.jar", "-verbose") ++- .shouldHaveExitValue(0) +++ .shouldHaveExitValue(16) ++ .shouldContain("treated as unsigned") ++- .shouldContain("Unparsable signature-related file META-INF/OLD.SF"); ++- JarUtils.updateJar(s, "4.jar", "META-INF/OLD.RSA"); +++ .shouldContain("Unparsable signature-related file META-INF/SIGNER.SF"); +++ JarUtils.updateJar(s, "4.jar", mapOf("META-INF/SIGNER.RSA", "dummy")); ++ verify("4.jar", "-verbose") ++- .shouldHaveExitValue(0) +++ .shouldHaveExitValue(16) ++ .shouldContain("treated as unsigned") ++- .shouldContain("Unparsable signature-related file META-INF/OLD.RSA"); +++ .shouldContain("Unparsable signature-related file META-INF/SIGNER.RSA"); ++ } ++ ++ static OutputAnalyzer jarsigner(List extra) ++- throws Throwable { ++- JDKToolLauncher launcher = JDKToolLauncher.createUsingTestJDK("jarsigner") ++- .addVMArg("-Duser.language=en") ++- .addVMArg("-Duser.country=US") ++- .addToolArg("-keystore") ++- .addToolArg("tsks") ++- .addToolArg("-storepass") ++- .addToolArg("changeit"); ++- for (String s : extra) { ++- if (s.startsWith("-J")) { ++- launcher.addVMArg(s.substring(2)); ++- } else { ++- launcher.addToolArg(s); ++- } ++- } ++- System.err.println("COMMAND: "); ++- for (String cmd : launcher.getCommand()) { ++- System.err.print(cmd + " "); ++- } ++- System.err.println(); ++- return ProcessTools.executeCommand(launcher.getCommand()); +++ throws Exception { +++ List args = new ArrayList<>( +++ listOf("-keystore", "ks", "-storepass", "changeit")); +++ args.addAll(extra); +++ return SecurityTools.jarsigner(args); ++ } ++ ++ static OutputAnalyzer verify(String file, String... extra) ++- throws Throwable { +++ throws Exception { ++ List args = new ArrayList<>(); ++ args.add("-verify"); +++ args.add("-strict"); ++ args.add(file); ++ args.addAll(Arrays.asList(extra)); ++ return jarsigner(args); ++ } ++ ++- static void checkBadKU(String file) throws Throwable { +++ static void checkBadKU(String file) throws Exception { ++ System.err.println("BadKU: " + file); ++ verify(file) ++- .shouldHaveExitValue(0) +++ .shouldHaveExitValue(16) ++ .shouldContain("treated as unsigned") ++ .shouldContain("re-run jarsigner with debug enabled"); ++ verify(file, "-verbose") ++- .shouldHaveExitValue(0) +++ .shouldHaveExitValue(16) ++ .shouldContain("Signed by") ++ .shouldContain("treated as unsigned") ++ .shouldContain("re-run jarsigner with debug enabled"); ++ verify(file, "-J-Djava.security.debug=jar") ++- .shouldHaveExitValue(0) +++ .shouldHaveExitValue(16) ++ .shouldContain("SignatureException: Key usage restricted") ++ .shouldContain("treated as unsigned") ++ .shouldContain("re-run jarsigner with debug enabled"); ++ } ++ ++- static void checkWeak(String file) throws Throwable { +++ static void checkWeak(String file) throws Exception { ++ verify(file) ++- .shouldHaveExitValue(0) +++ .shouldHaveExitValue(16) ++ .shouldContain("treated as unsigned") ++ .shouldMatch("weak algorithm that is now disabled.") ++ .shouldMatch("Re-run jarsigner with the -verbose option for more details"); ++ verify(file, "-verbose") ++- .shouldHaveExitValue(0) +++ .shouldHaveExitValue(16) ++ .shouldContain("treated as unsigned") ++ .shouldMatch("weak algorithm that is now disabled by") ++ .shouldMatch("Digest algorithm: .*weak") ++@@ -465,18 +557,18 @@ ++ .shouldNotMatch("Timestamp signature algorithm: .*weak.*weak") ++ .shouldMatch("Timestamp signature algorithm: .*key.*weak"); ++ verify(file, "-J-Djava.security.debug=jar") ++- .shouldHaveExitValue(0) +++ .shouldHaveExitValue(16) ++ .shouldMatch("SignatureException:.*disabled"); ++ } ++ ++- static void checkHalfWeak(String file) throws Throwable { +++ static void checkHalfWeak(String file) throws Exception { ++ verify(file) ++- .shouldHaveExitValue(0) +++ .shouldHaveExitValue(16) ++ .shouldContain("treated as unsigned") ++ .shouldMatch("weak algorithm that is now disabled.") ++ .shouldMatch("Re-run jarsigner with the -verbose option for more details"); ++ verify(file, "-verbose") ++- .shouldHaveExitValue(0) +++ .shouldHaveExitValue(16) ++ .shouldContain("treated as unsigned") ++ .shouldMatch("weak algorithm that is now disabled by") ++ .shouldMatch("Digest algorithm: .*weak") ++@@ -486,7 +578,7 @@ ++ .shouldNotMatch("Timestamp signature algorithm: .*key.*weak"); ++ } ++ ++- static void checkMultiple(String file) throws Throwable { +++ static void checkMultiple(String file) throws Exception { ++ verify(file) ++ .shouldHaveExitValue(0) ++ .shouldContain("jar verified"); ++@@ -503,7 +595,7 @@ ++ static void checkTimestamp(String file, String policyId, String digestAlg) ++ throws Exception { ++ try (JarFile jf = new JarFile(file)) { ++- JarEntry je = jf.getJarEntry("META-INF/OLD.RSA"); +++ JarEntry je = jf.getJarEntry("META-INF/SIGNER.RSA"); ++ try (InputStream is = jf.getInputStream(je)) { ++ byte[] content = IOUtils.readFully(is, -1, true); ++ PKCS7 p7 = new PKCS7(content); ++@@ -529,26 +621,38 @@ ++ static int which = 0; ++ ++ /** +++ * Sign with a TSA path. Always use alias "signer" to sign "unsigned.jar". +++ * The signed jar name is always path.jar. +++ * ++ * @param extra more args given to jarsigner ++ */ ++ static OutputAnalyzer sign(String path, String... extra) ++- throws Throwable { ++- String alias = path.equals("badku") ? "badku" : "old"; ++- return signWithAliasAndTsa(path, "old.jar", alias, extra); +++ throws Exception { +++ return signVerbose( +++ path, +++ "unsigned.jar", +++ path + ".jar", +++ "signer", +++ extra); ++ } ++ ++- static OutputAnalyzer signWithAliasAndTsa (String path, String jar, ++- String alias, String...extra) throws Throwable { +++ static OutputAnalyzer signVerbose( +++ String path, // TSA URL path +++ String oldJar, +++ String newJar, +++ String alias, // signer +++ String...extra) throws Exception { ++ which++; ++- System.err.println("\n>> Test #" + which + ": " + Arrays.toString(extra)); +++ System.out.println("\n>> Test #" + which); ++ List args = new ArrayList<>(); ++- args.add("-J-Djava.security.egd=file:/dev/./urandom"); +++ args.add("-strict"); +++ args.add("-verbose"); ++ args.add("-debug"); ++ args.add("-signedjar"); ++- args.add(path + ".jar"); ++- args.add(jar); +++ args.add(newJar); +++ args.add(oldJar); ++ args.add(alias); ++- if (!path.equals("none") && !path.equals("badku")) { +++ if (path != null) { ++ args.add("-tsa"); ++ args.add(host + path); ++ } ++@@ -557,24 +661,50 @@ ++ } ++ ++ static void prepare() throws Exception { ++- jdk.testlibrary.JarUtils.createJar("old.jar", "A"); ++- Files.deleteIfExists(Paths.get("tsks")); ++- keytool("-alias ca -genkeypair -ext bc -dname CN=CA"); ++- keytool("-alias old -genkeypair -dname CN=old"); +++ JarUtils.createJar("unsigned.jar", "A"); +++ Files.deleteIfExists(Paths.get("ks")); +++ keytool("-alias signer -genkeypair -ext bc -dname CN=signer"); +++ keytool("-alias oldsigner -genkeypair -dname CN=oldsigner"); ++ keytool("-alias dsakey -genkeypair -keyalg DSA -dname CN=dsakey"); ++ keytool("-alias weakkeysize -genkeypair -keysize 512 -dname CN=weakkeysize"); ++ keytool("-alias badku -genkeypair -dname CN=badku"); ++ keytool("-alias ts -genkeypair -dname CN=ts"); ++- keytool("-alias tsweak -genkeypair -keysize 512 -dname CN=tsbad1"); +++ keytool("-alias tsold -genkeypair -dname CN=tsold"); +++ keytool("-alias tsweak -genkeypair -keysize 512 -dname CN=tsweak"); ++ keytool("-alias tsbad1 -genkeypair -dname CN=tsbad1"); ++ keytool("-alias tsbad2 -genkeypair -dname CN=tsbad2"); ++ keytool("-alias tsbad3 -genkeypair -dname CN=tsbad3"); +++ keytool("-alias tsnoca -genkeypair -dname CN=tsnoca"); ++ ++- gencert("old"); +++ // tsnoca's issuer will be removed from keystore later +++ keytool("-alias ca -genkeypair -ext bc -dname CN=CA"); +++ gencert("tsnoca", "-ext eku:critical=ts"); +++ keytool("-delete -alias ca"); +++ keytool("-alias ca -genkeypair -ext bc -dname CN=CA -startdate -40d"); +++ +++ gencert("signer"); +++ gencert("oldsigner", "-startdate -30d -validity 20"); ++ gencert("dsakey"); ++ gencert("weakkeysize"); ++ gencert("badku", "-ext ku:critical=keyAgreement"); ++ gencert("ts", "-ext eku:critical=ts"); +++ +++ +++ // Issue another cert for "ts" with a different EKU. +++ // Length should be the same. Try several times. +++ keytool("-gencert -alias ca -infile ts.req -outfile ts2.cert " + +++ "-ext eku:critical=1.3.6.1.5.5.7.3.9"); +++ for (int i = 0; i < 5; i++) { +++ if (Files.size(Paths.get("ts.cert")) != Files.size(Paths.get("ts2.cert"))) { +++ Files.delete(Paths.get("ts2.cert")); +++ System.out.println("Warning: cannot create same length"); +++ } else { +++ break; +++ } +++ } +++ +++ gencert("tsold", "-ext eku:critical=ts -startdate -40d -validity 45"); +++ ++ gencert("tsweak", "-ext eku:critical=ts"); ++ gencert("tsbad1"); ++ gencert("tsbad2", "-ext eku=ts"); ++@@ -593,8 +723,16 @@ ++ } ++ ++ static void keytool(String cmd) throws Exception { ++- cmd = "-keystore tsks -storepass changeit -keypass changeit " + +++ cmd = "-keystore ks -storepass changeit -keypass changeit " + ++ "-keyalg rsa -validity 200 " + cmd; ++ sun.security.tools.keytool.Main.main(cmd.split(" ")); ++ } +++ +++ static Map mapOf(K k1, Object v1) { +++ return Collections.singletonMap(k1, v1); +++ } +++ +++ static List listOf(E... elements) { +++ return Arrays.asList(elements); +++ } ++ } ++diff --git openjdk/jdk/test/sun/security/tools/jarsigner/Warning.java openjdk/jdk/test/sun/security/tools/jarsigner/Warning.java ++--- openjdk/jdk/test/sun/security/tools/jarsigner/Warning.java +++++ openjdk/jdk/test/sun/security/tools/jarsigner/Warning.java ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -81,14 +81,14 @@ ++ ++ issueCert("b", "-sigalg MD5withRSA"); ++ run("jarsigner", "a.jar b") ++- .shouldMatch("chain is not validated. Reason:.*MD5withRSA"); +++ .shouldMatch("chain is invalid. Reason:.*MD5withRSA"); ++ ++ recreateJar(); ++ ++ newCert("c", "-keysize 512"); ++ issueCert("c"); ++ run("jarsigner", "a.jar c") ++- .shouldContain("chain is not validated. " + +++ .shouldContain("chain is invalid. " + ++ "Reason: Algorithm constraints check failed"); ++ ++ recreateJar(); ++diff --git openjdk/jdk/test/sun/security/tools/jarsigner/checkusage.sh openjdk/jdk/test/sun/security/tools/jarsigner/checkusage.sh ++--- openjdk/jdk/test/sun/security/tools/jarsigner/checkusage.sh +++++ openjdk/jdk/test/sun/security/tools/jarsigner/checkusage.sh ++@@ -1,5 +1,5 @@ ++ # ++-# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. +++# Copyright (c) 2010, 2017, Oracle and/or its affiliates. All rights reserved. ++ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ # ++ # This code is free software; you can redistribute it and/or modify it ++@@ -91,7 +91,7 @@ ++ #[ $RESULT = 0 ] || exit 2 ++ ++ # Test 3: When no keystore is specified, the error is only ++-# "chain not validated" +++# "chain invalid" ++ ++ $JARSIGNER -strict -verify a.jar ++ RESULT=$? ++@@ -99,7 +99,7 @@ ++ #[ $RESULT = 4 ] || exit 3 ++ ++ # Test 4: When unrelated keystore is specified, the error is ++-# "chain not validated" and "not alias in keystore" +++# "chain invalid" and "not alias in keystore" ++ ++ $JARSIGNER -keystore unrelated.jks -strict -verify a.jar ++ RESULT=$? ++diff --git openjdk/jdk/test/sun/security/tools/jarsigner/warnings/Test.java openjdk/jdk/test/sun/security/tools/jarsigner/warnings/Test.java ++--- openjdk/jdk/test/sun/security/tools/jarsigner/warnings/Test.java +++++ openjdk/jdk/test/sun/security/tools/jarsigner/warnings/Test.java ++@@ -1,5 +1,5 @@ ++ /* ++- * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved. +++ * Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++@@ -63,7 +63,7 @@ ++ ++ static final String CHAIN_NOT_VALIDATED_VERIFYING_WARNING ++ = "This jar contains entries " ++- + "whose certificate chain is not validated."; +++ + "whose certificate chain is invalid."; ++ ++ static final String ALIAS_NOT_IN_STORE_VERIFYING_WARNING ++ = "This jar contains signed entries " ++@@ -95,7 +95,7 @@ ++ + "doesn't allow code signing."; ++ ++ static final String CHAIN_NOT_VALIDATED_SIGNING_WARNING ++- = "The signer's certificate chain is not validated."; +++ = "The signer's certificate chain is invalid."; ++ ++ static final String HAS_EXPIRING_CERT_SIGNING_WARNING ++ = "The signer certificate will expire within six months."; ++diff --git openjdk/jdk/test/sun/security/tools/jarsigner/weaksize.sh openjdk/jdk/test/sun/security/tools/jarsigner/weaksize.sh ++--- openjdk/jdk/test/sun/security/tools/jarsigner/weaksize.sh +++++ openjdk/jdk/test/sun/security/tools/jarsigner/weaksize.sh ++@@ -1,5 +1,5 @@ ++ # ++-# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. +++# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. ++ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ # ++ # This code is free software; you can redistribute it and/or modify it ++@@ -52,9 +52,9 @@ ++ $JAR cvf a.jar ks ++ ++ # We always trust a TrustedCertificateEntry ++-$JS a.jar ca | grep "chain is not validated" && exit 1 +++$JS a.jar ca | grep "chain is invalid" && exit 1 ++ ++ # An end-entity cert must follow algorithm constraints ++-$JS a.jar signer | grep "chain is not validated" || exit 2 +++$JS a.jar signer | grep "chain is invalid" || exit 2 ++ ++ exit 0 ++# HG changeset patch ++# User igerasim ++# Date 1516240036 28800 ++# Wed Jan 17 17:47:16 2018 -0800 ++# Node ID 6ec37856c7e5b7ae7a6e5aa9069c789e464a102c ++# Parent 52425d2592c852d1fffad572a4e0a05a22f459e1 ++8190674: sun/security/tools/jarsigner/TimestampCheck.java failed with java.nio.file.NoSuchFileException: ts2.cert ++Reviewed-by: mullan ++ ++diff --git openjdk/jdk/test/sun/security/tools/jarsigner/TimestampCheck.java openjdk/jdk/test/sun/security/tools/jarsigner/TimestampCheck.java ++--- openjdk/jdk/test/sun/security/tools/jarsigner/TimestampCheck.java +++++ openjdk/jdk/test/sun/security/tools/jarsigner/TimestampCheck.java ++@@ -690,11 +690,15 @@ ++ gencert("ts", "-ext eku:critical=ts"); ++ ++ ++- // Issue another cert for "ts" with a different EKU. ++- // Length should be the same. Try several times. ++- keytool("-gencert -alias ca -infile ts.req -outfile ts2.cert " + ++- "-ext eku:critical=1.3.6.1.5.5.7.3.9"); ++ for (int i = 0; i < 5; i++) { +++ // Issue another cert for "ts" with a different EKU. +++ // Length might be different because serial number is +++ // random. Try several times until a cert with the same +++ // length is generated so we can substitute ts.cert +++ // embedded in the PKCS7 block with ts2.cert. +++ // If cannot create one, related test will be ignored. +++ keytool("-gencert -alias ca -infile ts.req -outfile ts2.cert " + +++ "-ext eku:critical=1.3.6.1.5.5.7.3.9"); ++ if (Files.size(Paths.get("ts.cert")) != Files.size(Paths.get("ts2.cert"))) { ++ Files.delete(Paths.get("ts2.cert")); ++ System.out.println("Warning: cannot create same length"); ++# HG changeset patch ++# User coffeys ++# Date 1540174333 -3600 ++# Mon Oct 22 03:12:13 2018 +0100 ++# Node ID e79b91c897333f1075cf5acf74570cf33fd9b83e ++# Parent 6ec37856c7e5b7ae7a6e5aa9069c789e464a102c ++8193892: Impact of noncloneable MessageDigest implementation ++Reviewed-by: wetmore ++ ++diff --git openjdk/jdk/test/sun/security/ssl/HandshakeHash/DigestBase.java openjdk/jdk/test/sun/security/ssl/HandshakeHash/DigestBase.java ++new file mode 100644 ++--- /dev/null +++++ openjdk/jdk/test/sun/security/ssl/HandshakeHash/DigestBase.java ++@@ -0,0 +1,71 @@ +++/* +++ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. +++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +++ * +++ * This code is free software; you can redistribute it and/or modify it +++ * under the terms of the GNU General Public License version 2 only, as +++ * published by the Free Software Foundation. +++ * +++ * This code is distributed in the hope that it will be useful, but WITHOUT +++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +++ * version 2 for more details (a copy is included in the LICENSE file that +++ * accompanied this code). +++ * +++ * You should have received a copy of the GNU General Public License version +++ * 2 along with this work; if not, write to the Free Software Foundation, +++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +++ * +++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +++ * or visit www.oracle.com if you need additional information or have any +++ * questions. +++ */ +++ +++import java.security.*; +++ +++class DigestBase extends MessageDigestSpi { +++ +++ private MessageDigest digest = null; +++ +++ public DigestBase(String alg, String provider) throws Exception { +++ digest = MessageDigest.getInstance(alg, provider); +++ } +++ +++ @Override +++ protected void engineUpdate(byte input) { +++ digest.update(input); +++ } +++ +++ @Override +++ protected void engineUpdate(byte[] input, int offset, int len) { +++ digest.update(input, offset, len); +++ } +++ +++ @Override +++ protected byte[] engineDigest() { +++ return digest.digest(); +++ } +++ +++ @Override +++ protected void engineReset() { +++ digest.reset(); +++ } +++ +++ public static final class MD5 extends DigestBase { +++ public MD5() throws Exception { +++ super("MD5", "SUN"); +++ } +++ } +++ +++ public static final class SHA extends DigestBase { +++ public SHA() throws Exception { +++ super("SHA", "SUN"); +++ } +++ } +++ +++ public static final class SHA256 extends DigestBase { +++ public SHA256() throws Exception { +++ super("SHA-256", "SUN"); +++ } +++ } +++} ++diff --git openjdk/jdk/test/sun/security/ssl/HandshakeHash/HandshakeHashCloneExhaustion.java openjdk/jdk/test/sun/security/ssl/HandshakeHash/HandshakeHashCloneExhaustion.java ++new file mode 100644 ++--- /dev/null +++++ openjdk/jdk/test/sun/security/ssl/HandshakeHash/HandshakeHashCloneExhaustion.java ++@@ -0,0 +1,105 @@ +++/* +++ * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. +++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +++ * +++ * This code is free software; you can redistribute it and/or modify it +++ * under the terms of the GNU General Public License version 2 only, as +++ * published by the Free Software Foundation. +++ * +++ * This code is distributed in the hope that it will be useful, but WITHOUT +++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +++ * version 2 for more details (a copy is included in the LICENSE file that +++ * accompanied this code). +++ * +++ * You should have received a copy of the GNU General Public License version +++ * 2 along with this work; if not, write to the Free Software Foundation, +++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +++ * +++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +++ * or visit www.oracle.com if you need additional information or have any +++ * questions. +++ */ +++ +++// +++// Please run in othervm mode. SunJSSE does not support dynamic system +++// properties, no way to re-use system properties in samevm/agentvm mode. +++// +++ +++/* +++ * @test +++ * @bug 8148421 8193683 +++ * @summary Transport Layer Security (TLS) Session Hash and Extended +++ * Master Secret Extension +++ * @summary Increase the number of clones in the CloneableDigest +++ * @library /javax/net/ssl/templates +++ * @compile DigestBase.java +++ * @run main/othervm HandshakeHashCloneExhaustion +++ * TLSv1.1 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA +++ */ +++ +++import java.io.InputStream; +++import java.io.OutputStream; +++import java.security.MessageDigest; +++import java.security.Security; +++import javax.net.ssl.SSLSocket; +++ +++public class HandshakeHashCloneExhaustion extends SSLSocketTemplate { +++ +++ private static String[] protocol; +++ private static String[] ciphersuite; +++ private static String[] mds = { "SHA", "MD5", "SHA-256" }; +++ +++ /* +++ * ================== +++ * Run the test case. +++ */ +++ public static void main(String[] args) throws Exception { +++ // Add in a non-cloneable MD5/SHA1/SHA-256 implementation +++ Security.insertProviderAt(new MyProvider(), 1); +++ // make sure our provider is functioning +++ for (String s : mds) { +++ MessageDigest md = MessageDigest.getInstance(s); +++ String p = md.getProvider().getName(); +++ if (!p.equals("MyProvider")) { +++ throw new RuntimeException("Unexpected provider: " + p); +++ } +++ } +++ +++ if (args.length != 2) { +++ throw new Exception( +++ "Usage: HandshakeHashCloneExhaustion protocol ciphersuite"); +++ } +++ +++ System.out.println("Testing: " + args[0] + " " + args[1]); +++ protocol = new String [] { args[0] }; +++ ciphersuite = new String[] { args[1] }; +++ +++ (new HandshakeHashCloneExhaustion()).run(); +++ } +++ +++ @Override +++ protected void runServerApplication(SSLSocket socket) throws Exception { +++ socket.setNeedClientAuth(true); +++ socket.setEnabledProtocols(protocol); +++ socket.setEnabledCipherSuites(ciphersuite); +++ +++ // here comes the test logic +++ InputStream sslIS = socket.getInputStream(); +++ OutputStream sslOS = socket.getOutputStream(); +++ +++ sslIS.read(); +++ sslOS.write(85); +++ sslOS.flush(); +++ } +++ +++ @Override +++ protected void runClientApplication(SSLSocket socket) throws Exception { +++ InputStream sslIS = socket.getInputStream(); +++ OutputStream sslOS = socket.getOutputStream(); +++ +++ sslOS.write(280); +++ sslOS.flush(); +++ sslIS.read(); +++ } +++} ++diff --git openjdk/jdk/test/sun/security/ssl/HandshakeHash/MyProvider.java openjdk/jdk/test/sun/security/ssl/HandshakeHash/MyProvider.java ++new file mode 100644 ++--- /dev/null +++++ openjdk/jdk/test/sun/security/ssl/HandshakeHash/MyProvider.java ++@@ -0,0 +1,35 @@ +++/* +++ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. +++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +++ * +++ * This code is free software; you can redistribute it and/or modify it +++ * under the terms of the GNU General Public License version 2 only, as +++ * published by the Free Software Foundation. +++ * +++ * This code is distributed in the hope that it will be useful, but WITHOUT +++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +++ * version 2 for more details (a copy is included in the LICENSE file that +++ * accompanied this code). +++ * +++ * You should have received a copy of the GNU General Public License version +++ * 2 along with this work; if not, write to the Free Software Foundation, +++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +++ * +++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +++ * or visit www.oracle.com if you need additional information or have any +++ * questions. +++ */ +++ +++import java.security.*; +++ +++public final class MyProvider extends Provider { +++ +++ public MyProvider() { +++ super("MyProvider", 1.0d, +++ "Test Provider: SHA1/MD5/SHA256 exhaustion testing"); +++ put("MessageDigest.SHA", "DigestBase$SHA"); +++ put("MessageDigest.MD5", "DigestBase$MD5"); +++ put("MessageDigest.SHA-256", "DigestBase$SHA256"); +++ } +++} ++# HG changeset patch ++# User prappo ++# Date 1540176544 -3600 ++# Mon Oct 22 03:49:04 2018 +0100 ++# Node ID 9ee218963c38c82fd5c034155196d1a721426a43 ++# Parent e79b91c897333f1075cf5acf74570cf33fd9b83e ++8168405: Pending exceptions in java.base/windows/native ++Reviewed-by: chegar, clanger ++ ++diff --git openjdk/jdk/src/windows/native/java/net/NetworkInterface_winXP.c openjdk/jdk/src/windows/native/java/net/NetworkInterface_winXP.c ++--- openjdk/jdk/src/windows/native/java/net/NetworkInterface_winXP.c +++++ openjdk/jdk/src/windows/native/java/net/NetworkInterface_winXP.c ++@@ -436,14 +436,20 @@ ++ * Create a NetworkInterface object and populate it ++ */ ++ netifObj = (*env)->NewObject(env, ni_class, ni_ctor); +++ if (netifObj == NULL) { +++ return NULL; +++ } ++ name = (*env)->NewStringUTF(env, ifs->name); +++ if (name == NULL) { +++ return NULL; +++ } ++ if (ifs->dNameIsUnicode) { ++ displayName = (*env)->NewString(env, (PWCHAR)ifs->displayName, ++ (jsize)wcslen ((PWCHAR)ifs->displayName)); ++ } else { ++ displayName = (*env)->NewStringUTF(env, ifs->displayName); ++ } ++- if (netifObj == NULL || name == NULL || displayName == NULL) { +++ if (displayName == NULL) { ++ return NULL; ++ } ++ (*env)->SetObjectField(env, netifObj, ni_nameID, name); ++@@ -505,26 +511,28 @@ ++ (*env)->SetObjectArrayElement(env, bindsArr, bind_index++, ibObj); ++ } else /* AF_INET6 */ { ++ int scope; +++ int ret; ++ iaObj = (*env)->NewObject(env, ni_ia6cls, ni_ia6ctrID); ++- if (iaObj) { ++- int ret = setInet6Address_ipaddress(env, iaObj, (jbyte *)&(addrs->addr.him6.sin6_addr.s6_addr)); ++- if (ret == JNI_FALSE) { ++- return NULL; ++- } ++- scope = addrs->addr.him6.sin6_scope_id; ++- if (scope != 0) { /* zero is default value, no need to set */ ++- setInet6Address_scopeid(env, iaObj, scope); ++- setInet6Address_scopeifname(env, iaObj, netifObj); ++- } ++- ibObj = (*env)->NewObject(env, ni_ibcls, ni_ibctrID); ++- if (ibObj == NULL) { ++- free_netaddr(netaddrP); ++- return NULL; ++- } ++- (*env)->SetObjectField(env, ibObj, ni_ibaddressID, iaObj); ++- (*env)->SetShortField(env, ibObj, ni_ibmaskID, addrs->mask); ++- (*env)->SetObjectArrayElement(env, bindsArr, bind_index++, ibObj); +++ if (iaObj == NULL) { +++ return NULL; +++ } +++ ret = setInet6Address_ipaddress(env, iaObj, (jbyte *)&(addrs->addr.him6.sin6_addr.s6_addr)); +++ if (ret == JNI_FALSE) { +++ return NULL; ++ } +++ scope = addrs->addr.him6.sin6_scope_id; +++ if (scope != 0) { /* zero is default value, no need to set */ +++ setInet6Address_scopeid(env, iaObj, scope); +++ setInet6Address_scopeifname(env, iaObj, netifObj); +++ } +++ ibObj = (*env)->NewObject(env, ni_ibcls, ni_ibctrID); +++ if (ibObj == NULL) { +++ free_netaddr(netaddrP); +++ return NULL; +++ } +++ (*env)->SetObjectField(env, ibObj, ni_ibaddressID, iaObj); +++ (*env)->SetShortField(env, ibObj, ni_ibmaskID, addrs->mask); +++ (*env)->SetObjectArrayElement(env, bindsArr, bind_index++, ibObj); ++ } ++ (*env)->SetObjectArrayElement(env, addrArr, addr_index, iaObj); ++ addrs = addrs->next; ++diff --git openjdk/jdk/src/windows/native/java/net/TwoStacksPlainDatagramSocketImpl.c openjdk/jdk/src/windows/native/java/net/TwoStacksPlainDatagramSocketImpl.c ++--- openjdk/jdk/src/windows/native/java/net/TwoStacksPlainDatagramSocketImpl.c +++++ openjdk/jdk/src/windows/native/java/net/TwoStacksPlainDatagramSocketImpl.c ++@@ -832,6 +832,7 @@ ++ } ++ if (IS_NULL(addressObj)) { ++ JNU_ThrowNullPointerException(env, "Null address in peek()"); +++ return -1; ++ } else { ++ address = getInetAddress_addr(env, addressObj); ++ JNU_CHECK_EXCEPTION_RETURN(env, -1); ++@@ -1147,11 +1148,23 @@ ++ } ++ if (n == -1) { ++ JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", "socket closed"); +++ if (packetBufferLen > MAX_BUFFER_LEN) { +++ free(fullPacket); +++ } +++ return -1; ++ } else if (n == -2) { ++ JNU_ThrowByName(env, JNU_JAVAIOPKG "InterruptedIOException", ++ "operation interrupted"); +++ if (packetBufferLen > MAX_BUFFER_LEN) { +++ free(fullPacket); +++ } +++ return -1; ++ } else if (n < 0) { ++ NET_ThrowCurrent(env, "Datagram receive failed"); +++ if (packetBufferLen > MAX_BUFFER_LEN) { +++ free(fullPacket); +++ } +++ return -1; ++ } else { ++ jobject packetAddress; ++ ++@@ -1914,7 +1927,7 @@ ++ default : ++ JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", ++ "Socket option not supported by PlainDatagramSocketImp"); ++- break; +++ return; ++ ++ } ++ ++@@ -2323,6 +2336,7 @@ ++ if (NET_SetSockOpt(fd, IPPROTO_IP, IP_MULTICAST_TTL, (char*)&ittl, ++ sizeof (ittl)) < 0) { ++ NET_ThrowCurrent(env, "set IP_MULTICAST_TTL failed"); +++ return; ++ } ++ } ++ ++@@ -2513,6 +2527,9 @@ ++ } else { ++ ifindex = getIndexFromIf (env, niObj); ++ if (ifindex == -1) { +++ if ((*env)->ExceptionOccurred(env)) { +++ return; +++ } ++ NET_ThrowCurrent(env, "get ifindex failed"); ++ return; ++ } ++diff --git openjdk/jdk/src/windows/native/java/net/TwoStacksPlainSocketImpl.c openjdk/jdk/src/windows/native/java/net/TwoStacksPlainSocketImpl.c ++--- openjdk/jdk/src/windows/native/java/net/TwoStacksPlainSocketImpl.c +++++ openjdk/jdk/src/windows/native/java/net/TwoStacksPlainSocketImpl.c ++@@ -110,7 +110,7 @@ ++ psi_portID = (*env)->GetFieldID(env, cls, "port", "I"); ++ CHECK_NULL(psi_portID); ++ psi_lastfdID = (*env)->GetFieldID(env, cls, "lastfd", "I"); ++- CHECK_NULL(psi_portID); +++ CHECK_NULL(psi_lastfdID); ++ psi_localportID = (*env)->GetFieldID(env, cls, "localport", "I"); ++ CHECK_NULL(psi_localportID); ++ psi_timeoutID = (*env)->GetFieldID(env, cls, "timeout", "I"); ++@@ -155,17 +155,17 @@ ++ fd1Obj = (*env)->GetObjectField(env, this, psi_fd1ID); ++ ++ if (IS_NULL(fd1Obj)) { +++ (*env)->SetIntField(env, fdObj, IO_fd_fdID, -1); +++ NET_SocketClose(fd); ++ JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", ++ "null fd1 object"); ++- (*env)->SetIntField(env, fdObj, IO_fd_fdID, -1); ++- NET_SocketClose(fd); ++ return; ++ } ++ fd1 = socket(AF_INET6, (stream ? SOCK_STREAM: SOCK_DGRAM), 0); ++ if (fd1 == -1) { ++- NET_ThrowCurrent(env, "create"); ++ (*env)->SetIntField(env, fdObj, IO_fd_fdID, -1); ++ NET_SocketClose(fd); +++ NET_ThrowCurrent(env, "create"); ++ return; ++ } else { ++ /* Set socket attribute so it is not passed to any child process */ ++@@ -916,6 +916,7 @@ ++ isRcvTimeoutSupported = JNI_FALSE; ++ } else { ++ NET_ThrowCurrent(env, "setsockopt SO_RCVTIMEO"); +++ return; ++ } ++ } ++ if (fd1 != -1) { ++# HG changeset patch ++# User igerasim ++# Date 1540177513 -3600 ++# Mon Oct 22 04:05:13 2018 +0100 ++# Node ID 6198ee2d85af2eb67a5270f3028b5fc0bbb3db1f ++# Parent 9ee218963c38c82fd5c034155196d1a721426a43 ++8204667: Resources not freed on exception ++Reviewed-by: skoivu, chegar ++ ++diff --git openjdk/jdk/src/solaris/native/java/net/NetworkInterface.c openjdk/jdk/src/solaris/native/java/net/NetworkInterface.c ++--- openjdk/jdk/src/solaris/native/java/net/NetworkInterface.c +++++ openjdk/jdk/src/solaris/native/java/net/NetworkInterface.c ++@@ -337,7 +337,9 @@ ++ if (family == AF_INET) { ++ int address1 = htonl(((struct sockaddr_in*)addrP->addr)->sin_addr.s_addr); ++ int address2 = getInetAddress_addr(env, iaObj); ++- JNU_CHECK_EXCEPTION_RETURN(env, NULL); +++ if ((*env)->ExceptionCheck(env)) { +++ goto cleanup; +++ } ++ if (address1 == address2) { ++ match = JNI_TRUE; ++ break; ++@@ -383,6 +385,8 @@ ++ obj = createNetworkInterface(env, curr); ++ } ++ +++cleanup: +++ // release the interface list ++ freeif(ifs); ++ return obj; ++ } ++diff --git openjdk/jdk/src/windows/native/java/net/NetworkInterface.c openjdk/jdk/src/windows/native/java/net/NetworkInterface.c ++--- openjdk/jdk/src/windows/native/java/net/NetworkInterface.c +++++ openjdk/jdk/src/windows/native/java/net/NetworkInterface.c ++@@ -272,6 +272,7 @@ ++ if (curr->name == NULL || curr->displayName == NULL) { ++ if (curr->name) free(curr->name); ++ if (curr->displayName) free(curr->displayName); +++ free(curr); ++ curr = NULL; ++ } ++ } ++@@ -564,7 +565,10 @@ ++ /* default ctor will set family to AF_INET */ ++ ++ setInetAddress_addr(env, iaObj, ntohl(addrs->addr.him4.sin_addr.s_addr)); ++- JNU_CHECK_EXCEPTION_RETURN(env, NULL); +++ if ((*env)->ExceptionCheck(env)) { +++ free_netaddr(netaddrP); +++ return NULL; +++ } ++ if (addrs->mask != -1) { ++ ibObj = (*env)->NewObject(env, ni_ibcls, ni_ibctrID); ++ if (ibObj == NULL) { ++@@ -578,7 +582,10 @@ ++ return NULL; ++ } ++ setInetAddress_addr(env, ia2Obj, ntohl(addrs->brdcast.him4.sin_addr.s_addr)); ++- JNU_CHECK_EXCEPTION_RETURN(env, NULL); +++ if ((*env)->ExceptionCheck(env)) { +++ free_netaddr(netaddrP); +++ return NULL; +++ } ++ (*env)->SetObjectField(env, ibObj, ni_ibbroadcastID, ia2Obj); ++ (*env)->SetShortField(env, ibObj, ni_ibmaskID, addrs->mask); ++ (*env)->SetObjectArrayElement(env, bindsArr, bind_index++, ibObj); ++@@ -589,6 +596,7 @@ ++ if (iaObj) { ++ int ret = setInet6Address_ipaddress(env, iaObj, (jbyte *)&(addrs->addr.him6.sin6_addr.s6_addr)); ++ if (ret == JNI_FALSE) { +++ free_netaddr(netaddrP); ++ return NULL; ++ } ++ ++diff --git openjdk/jdk/src/windows/native/java/net/NetworkInterface_winXP.c openjdk/jdk/src/windows/native/java/net/NetworkInterface_winXP.c ++--- openjdk/jdk/src/windows/native/java/net/NetworkInterface_winXP.c +++++ openjdk/jdk/src/windows/native/java/net/NetworkInterface_winXP.c ++@@ -428,8 +428,9 @@ ++ jobjectArray addrArr, bindsArr, childArr; ++ netaddr *addrs; ++ jint addr_index; ++- int netaddrCount=ifs->naddrs; ++- netaddr *netaddrP=ifs->addrs; +++ int netaddrCount = ifs->naddrs; +++ netaddr *netaddrP = ifs->addrs; +++ netaddr *netaddrPToFree = NULL; ++ jint bind_index; ++ ++ /* ++@@ -460,21 +461,23 @@ ++ * Note that 0 is a valid number of addresses. ++ */ ++ if (netaddrCount < 0) { ++- netaddrCount = enumAddresses_win(env, ifs, &netaddrP); +++ netaddrCount = enumAddresses_win(env, ifs, &netaddrPToFree); ++ if (netaddrCount == -1) { ++ return NULL; ++ } +++ netaddrP = netaddrPToFree; ++ } ++ ++ addrArr = (*env)->NewObjectArray(env, netaddrCount, ni_iacls, NULL); ++ if (addrArr == NULL) { +++ free_netaddr(netaddrPToFree); ++ return NULL; ++ } ++ ++ bindsArr = (*env)->NewObjectArray(env, netaddrCount, ni_ibcls, NULL); ++ if (bindsArr == NULL) { ++- free_netaddr(netaddrP); ++- return NULL; +++ free_netaddr(netaddrPToFree); +++ return NULL; ++ } ++ ++ addrs = netaddrP; ++@@ -486,26 +489,33 @@ ++ if (addrs->addr.him.sa_family == AF_INET) { ++ iaObj = (*env)->NewObject(env, ni_ia4cls, ni_ia4Ctor); ++ if (iaObj == NULL) { +++ free_netaddr(netaddrPToFree); ++ return NULL; ++ } ++ /* default ctor will set family to AF_INET */ ++ ++ setInetAddress_addr(env, iaObj, ntohl(addrs->addr.him4.sin_addr.s_addr)); ++ ++- JNU_CHECK_EXCEPTION_RETURN(env, NULL); +++ if ((*env)->ExceptionCheck(env)) { +++ free_netaddr(netaddrPToFree); +++ return NULL; +++ } ++ ibObj = (*env)->NewObject(env, ni_ibcls, ni_ibctrID); ++ if (ibObj == NULL) { ++- free_netaddr(netaddrP); ++- return NULL; +++ free_netaddr(netaddrPToFree); +++ return NULL; ++ } ++ (*env)->SetObjectField(env, ibObj, ni_ibaddressID, iaObj); ++ ia2Obj = (*env)->NewObject(env, ni_ia4cls, ni_ia4Ctor); ++ if (ia2Obj == NULL) { ++- free_netaddr(netaddrP); ++- return NULL; +++ free_netaddr(netaddrPToFree); +++ return NULL; ++ } ++ setInetAddress_addr(env, ia2Obj, ntohl(addrs->brdcast.him4.sin_addr.s_addr)); ++- JNU_CHECK_EXCEPTION_RETURN(env, NULL); +++ if ((*env)->ExceptionCheck(env)) { +++ free_netaddr(netaddrPToFree); +++ return NULL; +++ } ++ (*env)->SetObjectField(env, ibObj, ni_ibbroadcastID, ia2Obj); ++ (*env)->SetShortField(env, ibObj, ni_ibmaskID, addrs->mask); ++ (*env)->SetObjectArrayElement(env, bindsArr, bind_index++, ibObj); ++@@ -514,10 +524,12 @@ ++ int ret; ++ iaObj = (*env)->NewObject(env, ni_ia6cls, ni_ia6ctrID); ++ if (iaObj == NULL) { +++ free_netaddr(netaddrPToFree); ++ return NULL; ++ } ++ ret = setInet6Address_ipaddress(env, iaObj, (jbyte *)&(addrs->addr.him6.sin6_addr.s6_addr)); ++ if (ret == JNI_FALSE) { +++ free_netaddr(netaddrPToFree); ++ return NULL; ++ } ++ scope = addrs->addr.him6.sin6_scope_id; ++@@ -527,8 +539,8 @@ ++ } ++ ibObj = (*env)->NewObject(env, ni_ibcls, ni_ibctrID); ++ if (ibObj == NULL) { ++- free_netaddr(netaddrP); ++- return NULL; +++ free_netaddr(netaddrPToFree); +++ return NULL; ++ } ++ (*env)->SetObjectField(env, ibObj, ni_ibaddressID, iaObj); ++ (*env)->SetShortField(env, ibObj, ni_ibmaskID, addrs->mask); ++@@ -541,6 +553,8 @@ ++ (*env)->SetObjectField(env, netifObj, ni_addrsID, addrArr); ++ (*env)->SetObjectField(env, netifObj, ni_bindsID, bindsArr); ++ +++ free_netaddr(netaddrPToFree); +++ ++ /* ++ * Windows doesn't have virtual interfaces, so child array ++ * is always empty. ++@@ -580,7 +594,7 @@ ++ } ++ ++ /* if found create a NetworkInterface */ ++- if (curr != NULL) {; +++ if (curr != NULL) { ++ netifObj = createNetworkInterfaceXP(env, curr); ++ } ++ ++@@ -707,6 +721,7 @@ ++ /* allocate a NetworkInterface array */ ++ netIFArr = (*env)->NewObjectArray(env, count, cls, NULL); ++ if (netIFArr == NULL) { +++ free_netif(ifList); ++ return NULL; ++ } ++ ++@@ -721,6 +736,7 @@ ++ ++ netifObj = createNetworkInterfaceXP(env, curr); ++ if (netifObj == NULL) { +++ free_netif(ifList); ++ return NULL; ++ } ++ ++diff --git openjdk/jdk/src/windows/native/java/net/TwoStacksPlainDatagramSocketImpl.c openjdk/jdk/src/windows/native/java/net/TwoStacksPlainDatagramSocketImpl.c ++--- openjdk/jdk/src/windows/native/java/net/TwoStacksPlainDatagramSocketImpl.c +++++ openjdk/jdk/src/windows/native/java/net/TwoStacksPlainDatagramSocketImpl.c ++@@ -441,7 +441,6 @@ ++ "Protocol family not supported"); ++ return; ++ } ++- JNU_CHECK_EXCEPTION(env); ++ if (IS_NULL(fdObj) || (ipv6_supported && IS_NULL(fd1Obj))) { ++ JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", "socket closed"); ++ return; ++# HG changeset patch ++# User pkoppula ++# Date 1540178875 -3600 ++# Mon Oct 22 04:27:55 2018 +0100 ++# Node ID c88078ff6b8e8a7b0b3f92f6d28e2ff2fbb3f296 ++# Parent 6198ee2d85af2eb67a5270f3028b5fc0bbb3db1f ++8208350: Disable all DES cipher suites ++Reviewed-by: mullan, jnimeh, coffeys ++ ++diff --git openjdk/jdk/src/share/lib/security/java.security-linux openjdk/jdk/src/share/lib/security/java.security-linux ++--- openjdk/jdk/src/share/lib/security/java.security-linux +++++ openjdk/jdk/src/share/lib/security/java.security-linux ++@@ -552,8 +552,8 @@ ++ # ++ # Example: ++ # jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048 ++-jdk.tls.disabledAlgorithms=SSLv3, MD5withRSA, DH keySize < 1024, \ ++- EC keySize < 224, DES40_CBC, RC4_40, 3DES_EDE_CBC +++jdk.tls.disabledAlgorithms=SSLv3, DES, MD5withRSA, DH keySize < 1024, \ +++ EC keySize < 224, RC4_40, 3DES_EDE_CBC ++ ++ # Legacy algorithms for Secure Socket Layer/Transport Layer Security (SSL/TLS) ++ # processing in JSSE implementation. ++diff --git openjdk/jdk/src/share/lib/security/java.security-macosx openjdk/jdk/src/share/lib/security/java.security-macosx ++--- openjdk/jdk/src/share/lib/security/java.security-macosx +++++ openjdk/jdk/src/share/lib/security/java.security-macosx ++@@ -557,8 +557,8 @@ ++ # ++ # Example: ++ # jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048 ++-jdk.tls.disabledAlgorithms=SSLv3, MD5withRSA, DH keySize < 1024, \ ++- EC keySize < 224, DES40_CBC, RC4_40, 3DES_EDE_CBC +++jdk.tls.disabledAlgorithms=SSLv3, DES, MD5withRSA, DH keySize < 1024, \ +++ EC keySize < 224, RC4_40, 3DES_EDE_CBC ++ ++ # Legacy algorithms for Secure Socket Layer/Transport Layer Security (SSL/TLS) ++ # processing in JSSE implementation. ++diff --git openjdk/jdk/src/share/lib/security/java.security-solaris openjdk/jdk/src/share/lib/security/java.security-solaris ++--- openjdk/jdk/src/share/lib/security/java.security-solaris +++++ openjdk/jdk/src/share/lib/security/java.security-solaris ++@@ -556,8 +556,8 @@ ++ # ++ # Example: ++ # jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048 ++-jdk.tls.disabledAlgorithms=SSLv3, MD5withRSA, DH keySize < 1024, \ ++- EC keySize < 224, DES40_CBC, RC4_40, 3DES_EDE_CBC +++jdk.tls.disabledAlgorithms=SSLv3, DES, MD5withRSA, DH keySize < 1024, \ +++ EC keySize < 224, RC4_40, 3DES_EDE_CBC ++ ++ # Legacy algorithms for Secure Socket Layer/Transport Layer Security (SSL/TLS) ++ # processing in JSSE implementation. ++diff --git openjdk/jdk/src/share/lib/security/java.security-windows openjdk/jdk/src/share/lib/security/java.security-windows ++--- openjdk/jdk/src/share/lib/security/java.security-windows +++++ openjdk/jdk/src/share/lib/security/java.security-windows ++@@ -557,8 +557,8 @@ ++ # ++ # Example: ++ # jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048 ++-jdk.tls.disabledAlgorithms=SSLv3, MD5withRSA, DH keySize < 1024, \ ++- EC keySize < 224, DES40_CBC, RC4_40, 3DES_EDE_CBC +++jdk.tls.disabledAlgorithms=SSLv3, DES, MD5withRSA, DH keySize < 1024, \ +++ EC keySize < 224, RC4_40, 3DES_EDE_CBC ++ ++ # Legacy algorithms for Secure Socket Layer/Transport Layer Security (SSL/TLS) ++ # processing in JSSE implementation. ++diff --git openjdk/jdk/test/sun/security/ssl/CipherSuite/NoDesRC4CiphSuite.java openjdk/jdk/test/sun/security/ssl/CipherSuite/NoDesRC4CiphSuite.java ++new file mode 100644 ++--- /dev/null +++++ openjdk/jdk/test/sun/security/ssl/CipherSuite/NoDesRC4CiphSuite.java ++@@ -0,0 +1,390 @@ +++/* +++ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. +++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +++ * +++ * This code is free software; you can redistribute it and/or modify it +++ * under the terms of the GNU General Public License version 2 only, as +++ * published by the Free Software Foundation. +++ * +++ * This code is distributed in the hope that it will be useful, but WITHOUT +++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +++ * version 2 for more details (a copy is included in the LICENSE file that +++ * accompanied this code). +++ * +++ * You should have received a copy of the GNU General Public License version +++ * 2 along with this work; if not, write to the Free Software Foundation, +++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +++ * +++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +++ * or visit www.oracle.com if you need additional information or have any +++ * questions. +++ */ +++ +++/* +++ * @test +++ * @bug 8208350 +++ * @summary Disable all DES cipher suites +++ * @run main/othervm NoDesRC4CiphSuite +++ */ +++ +++/* +++ * SunJSSE does not support dynamic system properties, no way to re-use +++ * system properties in samevm/agentvm mode. +++ */ +++ +++import java.security.Security; +++import javax.net.ssl.*; +++import javax.net.ssl.SSLEngineResult.HandshakeStatus; +++import java.io.IOException; +++import java.nio.ByteBuffer; +++import java.security.GeneralSecurityException; +++import java.util.List; +++import java.util.ArrayList; +++import java.util.Arrays; +++ +++public class NoDesRC4CiphSuite { +++ +++ private static final boolean DEBUG = false; +++ +++ private static final byte RECTYPE_HS = 0x16; +++ private static final byte HSMSG_CLIHELLO = 0x01; +++ +++ // These are some groups of Cipher Suites by names and IDs +++ private static final List DES_CS_LIST = Arrays.asList( +++ 0x0009, 0x0015, 0x0012, 0x001A, 0x0008, 0x0014, 0x0011, 0x0019 +++ ); +++ private static final String[] DES_CS_LIST_NAMES = new String[] { +++ "SSL_RSA_WITH_DES_CBC_SHA", +++ "SSL_DHE_RSA_WITH_DES_CBC_SHA", +++ "SSL_DHE_DSS_WITH_DES_CBC_SHA", +++ "SSL_DH_anon_WITH_DES_CBC_SHA", +++ "SSL_RSA_EXPORT_WITH_DES40_CBC_SHA", +++ "SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA", +++ "SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA", +++ "SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA" +++ }; +++ private static final List RC4_CS_LIST = Arrays.asList( +++ 0xC007, 0xC011, 0x0005, 0xC002, 0xC00C, 0x0004, 0xC016, 0x0018, +++ 0x0003, 0x0017 +++ ); +++ private static final String[] RC4_CS_LIST_NAMES = new String[] { +++ "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA", +++ "TLS_ECDHE_RSA_WITH_RC4_128_SHA", +++ "SSL_RSA_WITH_RC4_128_SHA", +++ "TLS_ECDH_ECDSA_WITH_RC4_128_SHA", +++ "TLS_ECDH_RSA_WITH_RC4_128_SHA", +++ "SSL_RSA_WITH_RC4_128_MD5", +++ "TLS_ECDH_anon_WITH_RC4_128_SHA", +++ "SSL_DH_anon_WITH_RC4_128_MD5", +++ "SSL_RSA_EXPORT_WITH_RC4_40_MD5", +++ "SSL_DH_anon_EXPORT_WITH_RC4_40_MD5" +++ }; +++ +++ private static final ByteBuffer CLIOUTBUF = +++ ByteBuffer.wrap("Client Side".getBytes()); +++ +++ public static void main(String[] args) throws Exception { +++ boolean allGood = true; +++ String disAlg = Security.getProperty("jdk.tls.disabledAlgorithms"); +++ System.err.println("Disabled Algs: " + disAlg); +++ +++ // Disabled DES tests +++ allGood &= testDefaultCase(DES_CS_LIST); +++ allGood &= testEngAddDisabled(DES_CS_LIST_NAMES, DES_CS_LIST); +++ allGood &= testEngOnlyDisabled(DES_CS_LIST_NAMES); +++ +++ // Disabled RC4 tests +++ /* +++ RC4 is not yet disabled, as 8076221 has not been backported +++ allGood &= testDefaultCase(RC4_CS_LIST); +++ allGood &= testEngAddDisabled(RC4_CS_LIST_NAMES, RC4_CS_LIST); +++ allGood &= testEngOnlyDisabled(RC4_CS_LIST_NAMES); +++ */ +++ +++ if (allGood) { +++ System.err.println("All tests passed"); +++ } else { +++ throw new RuntimeException("One or more tests failed"); +++ } +++ } +++ +++ /** +++ * Create an engine with the default set of cipher suites enabled and make +++ * sure none of the disabled suites are present in the client hello. +++ * +++ * @param disabledSuiteIds the {@code List} of disabled cipher suite IDs +++ * to be checked for. +++ * +++ * @return true if the test passed (No disabled suites), false otherwise +++ */ +++ private static boolean testDefaultCase(List disabledSuiteIds) +++ throws Exception { +++ System.err.println("\nTest: Default SSLEngine suite set"); +++ SSLEngine ssle = makeEngine(); +++ if (DEBUG) { +++ listCiphers("Suite set upon creation", ssle); +++ } +++ SSLEngineResult clientResult; +++ ByteBuffer cTOs = makeClientBuf(ssle); +++ clientResult = ssle.wrap(CLIOUTBUF, cTOs); +++ if (DEBUG) { +++ dumpResult("ClientHello: ", clientResult); +++ } +++ cTOs.flip(); +++ boolean foundSuite = areSuitesPresentCH(cTOs, disabledSuiteIds); +++ if (foundSuite) { +++ System.err.println("FAIL: Found disabled suites!"); +++ return false; +++ } else { +++ System.err.println("PASS: No disabled suites found."); +++ return true; +++ } +++ } +++ +++ /** +++ * Create an engine and set only disabled cipher suites. +++ * The engine should not create the client hello message since the only +++ * available suites to assert in the client hello are disabled ones. +++ * +++ * @param disabledSuiteNames an array of cipher suite names that +++ * should be disabled cipher suites. +++ * +++ * @return true if the engine throws SSLHandshakeException during client +++ * hello creation, false otherwise. +++ */ +++ private static boolean testEngOnlyDisabled(String[] disabledSuiteNames) +++ throws Exception { +++ System.err.println( +++ "\nTest: SSLEngine configured with only disabled suites"); +++ try { +++ SSLEngine ssle = makeEngine(); +++ ssle.setEnabledCipherSuites(disabledSuiteNames); +++ if (DEBUG) { +++ listCiphers("Suite set upon creation", ssle); +++ } +++ SSLEngineResult clientResult; +++ ByteBuffer cTOs = makeClientBuf(ssle); +++ clientResult = ssle.wrap(CLIOUTBUF, cTOs); +++ if (DEBUG) { +++ dumpResult("ClientHello: ", clientResult); +++ } +++ cTOs.flip(); +++ } catch (SSLHandshakeException shse) { +++ System.err.println("PASS: Caught expected exception: " + shse); +++ return true; +++ } +++ System.err.println("FAIL: Expected SSLHandshakeException not thrown"); +++ return false; +++ } +++ +++ /** +++ * Create an engine and add some disabled suites to the default +++ * set of cipher suites. Make sure none of the disabled suites show up +++ * in the client hello even though they were explicitly added. +++ * +++ * @param disabledSuiteNames an array of cipher suite names that +++ * should be disabled cipher suites. +++ * @param disabledIds the {@code List} of disabled cipher suite IDs +++ * to be checked for. +++ * +++ * @return true if the test passed (No disabled suites), false otherwise +++ */ +++ private static boolean testEngAddDisabled(String[] disabledNames, +++ List disabledIds) throws Exception { +++ System.err.println("\nTest: SSLEngine with disabled suites added"); +++ SSLEngine ssle = makeEngine(); +++ +++ // Add disabled suites to the existing engine's set of enabled suites +++ String[] initialSuites = ssle.getEnabledCipherSuites(); +++ String[] plusDisSuites = Arrays.copyOf(initialSuites, +++ initialSuites.length + disabledNames.length); +++ System.arraycopy(disabledNames, 0, plusDisSuites, +++ initialSuites.length, disabledNames.length); +++ ssle.setEnabledCipherSuites(plusDisSuites); +++ +++ if (DEBUG) { +++ listCiphers("Suite set upon creation", ssle); +++ } +++ SSLEngineResult clientResult; +++ ByteBuffer cTOs = makeClientBuf(ssle); +++ clientResult = ssle.wrap(CLIOUTBUF, cTOs); +++ if (DEBUG) { +++ dumpResult("ClientHello: ", clientResult); +++ } +++ cTOs.flip(); +++ boolean foundDisabled = areSuitesPresentCH(cTOs, disabledIds); +++ if (foundDisabled) { +++ System.err.println("FAIL: Found disabled suites!"); +++ return false; +++ } else { +++ System.err.println("PASS: No disabled suites found."); +++ return true; +++ } +++ } +++ +++ private static SSLEngine makeEngine() throws GeneralSecurityException { +++ SSLContext ctx = SSLContext.getInstance("TLSv1.2"); +++ ctx.init(null, null, null); +++ return ctx.createSSLEngine(); +++ } +++ +++ private static ByteBuffer makeClientBuf(SSLEngine ssle) { +++ ssle.setUseClientMode(true); +++ ssle.setNeedClientAuth(false); +++ SSLSession sess = ssle.getSession(); +++ ByteBuffer cTOs = ByteBuffer.allocateDirect(sess.getPacketBufferSize()); +++ return cTOs; +++ } +++ +++ private static void listCiphers(String prefix, SSLEngine ssle) { +++ System.err.println(prefix + "\n---------------"); +++ String[] suites = ssle.getEnabledCipherSuites(); +++ for (String suite : suites) { +++ System.err.println(suite); +++ } +++ System.err.println("---------------"); +++ } +++ +++ /** +++ * Walk a TLS 1.2 or earlier ClientHello looking for any of the suites +++ * in the suiteIdList. +++ * +++ * @param clientHello a ByteBuffer containing the ClientHello message as +++ * a complete TLS record. The position of the buffer should be +++ * at the first byte of the TLS record header. +++ * @param suiteIdList a List of integer values corresponding to +++ * TLS cipher suite identifiers. +++ * +++ * @return true if at least one of the suites in {@code suiteIdList} +++ * is found in the ClientHello's cipher suite list +++ * +++ * @throws IOException if the data in the {@code clientHello} +++ * buffer is not a TLS handshake message or is not a client hello. +++ */ +++ private static boolean areSuitesPresentCH(ByteBuffer clientHello, +++ List suiteIdList) throws IOException { +++ byte val; +++ +++ // Process the TLS Record +++ val = clientHello.get(); +++ if (val != RECTYPE_HS) { +++ throw new IOException( +++ "Not a handshake record, type = " + val); +++ } +++ +++ // Just skip over the version and length +++ clientHello.position(clientHello.position() + 4); +++ +++ // Check the handshake message type +++ val = clientHello.get(); +++ if (val != HSMSG_CLIHELLO) { +++ throw new IOException( +++ "Not a ClientHello handshake message, type = " + val); +++ } +++ +++ // Skip over the length +++ clientHello.position(clientHello.position() + 3); +++ +++ // Skip over the protocol version (2) and random (32); +++ clientHello.position(clientHello.position() + 34); +++ +++ // Skip past the session ID (variable length <= 32) +++ int len = byteToUnsignedInt(clientHello.get()); +++ if (len > 32) { +++ throw new IOException("Session ID is too large, len = " + len); +++ } +++ clientHello.position(clientHello.position() + len); +++ +++ // Finally, we are at the cipher suites. Walk the list and place them +++ // into a List. +++ int csLen = shortToUnsignedInt(clientHello.getShort()); +++ if (csLen % 2 != 0) { +++ throw new IOException("CipherSuite length is invalid, len = " + +++ csLen); +++ } +++ int csCount = csLen / 2; +++ List csSuiteList = new ArrayList<>(csCount); +++ log("Found following suite IDs in hello:"); +++ for (int i = 0; i < csCount; i++) { +++ int curSuite = shortToUnsignedInt(clientHello.getShort()); +++ log(String.format("Suite ID: 0x%04x", curSuite)); +++ csSuiteList.add(curSuite); +++ } +++ +++ // Now check to see if any of the suites passed in match what is in +++ // the suite list. +++ boolean foundMatch = false; +++ for (Integer cs : suiteIdList) { +++ if (csSuiteList.contains(cs)) { +++ System.err.format("Found match for suite ID 0x%04x\n", cs); +++ foundMatch = true; +++ break; +++ } +++ } +++ +++ // We don't care about the rest of the ClientHello message. +++ // Rewind and return whether we found a match or not. +++ clientHello.rewind(); +++ return foundMatch; +++ } +++ +++ private static void dumpResult(String str, SSLEngineResult result) { +++ System.err.println("The format of the SSLEngineResult is: \n" + +++ "\t\"getStatus() / getHandshakeStatus()\" +\n" + +++ "\t\"bytesConsumed() / bytesProduced()\"\n"); +++ HandshakeStatus hsStatus = result.getHandshakeStatus(); +++ System.err.println(str + result.getStatus() + "/" + hsStatus + ", " + +++ result.bytesConsumed() + "/" + result.bytesProduced() + " bytes"); +++ if (hsStatus == HandshakeStatus.FINISHED) { +++ System.err.println("\t...ready for application data"); +++ } +++ } +++ +++ private static void log(String str) { +++ if (DEBUG) { +++ System.err.println(str); +++ } +++ } +++ +++ /** +++ * Converts the argument to an {@code int} by an unsigned +++ * conversion. In an unsigned conversion to an {@code int}, the +++ * high-order 24 bits of the {@code int} are zero and the +++ * low-order 8 bits are equal to the bits of the {@code byte} argument. +++ * +++ * Consequently, zero and positive {@code byte} values are mapped +++ * to a numerically equal {@code int} value and negative {@code +++ * byte} values are mapped to an {@code int} value equal to the +++ * input plus 28. +++ * +++ * @param x the value to convert to an unsigned {@code int} +++ * @return the argument converted to {@code int} by an unsigned +++ * conversion +++ * @since 1.8 +++ */ +++ private static int byteToUnsignedInt(byte x) { +++ return ((int) x) & 0xff; +++ } +++ +++ /** +++ * Converts the argument to an {@code int} by an unsigned +++ * conversion. In an unsigned conversion to an {@code int}, the +++ * high-order 16 bits of the {@code int} are zero and the +++ * low-order 16 bits are equal to the bits of the {@code short} argument. +++ * +++ * Consequently, zero and positive {@code short} values are mapped +++ * to a numerically equal {@code int} value and negative {@code +++ * short} values are mapped to an {@code int} value equal to the +++ * input plus 216. +++ * +++ * @param x the value to convert to an unsigned {@code int} +++ * @return the argument converted to {@code int} by an unsigned +++ * conversion +++ * @since 1.8 +++ */ +++ private static int shortToUnsignedInt(short x) { +++ return ((int) x) & 0xffff; +++ } +++ +++} ++# HG changeset patch ++# User ljiang ++# Date 1540179775 -3600 ++# Mon Oct 22 04:42:55 2018 +0100 ++# Node ID 250d6be57acc6a2a4627bdf76feaddf8a9be19db ++# Parent bd36e0ca01880e33c4338519c546c589ce72a018 ++8208660: JDK 8u191 l10n resource file update ++Reviewed-by: coffeys ++ ++diff --git openjdk/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_de.properties openjdk/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_de.properties ++--- openjdk/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_de.properties +++++ openjdk/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_de.properties ++@@ -26,7 +26,7 @@ ++ # CacheRowSetImpl exceptions ++ cachedrowsetimpl.populate = Ung\u00FCltiges ResultSet-Objekt zum Auff\u00FCllen der Methode angegeben ++ cachedrowsetimpl.invalidp = Ung\u00FCltiger Persistence-Provider generiert ++-cachedrowsetimpl.nullhash = CachedRowSetImpl-Instanz kann nicht instanziiert werden. Null-Hash-Tabelle f\u00FCr Constructor angegeben +++cachedrowsetimpl.nullhash = CachedRowSetImpl-Instanz kann nicht instanziiert werden. Null-Hashtabelle f\u00FCr Constructor angegeben ++ cachedrowsetimpl.invalidop = Ung\u00FCltiger Vorgang beim Zeileneinf\u00FCgen ++ cachedrowsetimpl.accfailed = acceptChanges nicht erfolgreich ++ cachedrowsetimpl.invalidcp = Ung\u00FCltige Cursorposition ++@@ -80,7 +80,7 @@ ++ cachedrowsetimpl.featnotsupp = Feature nicht unterst\u00FCtzt ++ ++ # WebRowSetImpl exceptions ++-webrowsetimpl.nullhash = WebRowSetImpl-Instanz kann nicht instanziiert werden. Null-Hash-Tabelle f\u00FCr Constructor angegeben +++webrowsetimpl.nullhash = WebRowSetImpl-Instanz kann nicht instanziiert werden. Null-Hashtabelle f\u00FCr Constructor angegeben ++ webrowsetimpl.invalidwr = Ung\u00FCltiger Writer ++ webrowsetimpl.invalidrd = Ung\u00FCltiger Reader ++ ++diff --git openjdk/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_it.properties openjdk/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_it.properties ++--- openjdk/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_it.properties +++++ openjdk/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_it.properties ++@@ -1,6 +1,6 @@ ++ # ++ # ++-# Copyright (c) 1999, 2001, Oracle and/or its affiliates. All rights reserved. +++# Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved. ++ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ # ++ # This code is free software; you can redistribute it and/or modify it ++@@ -24,5 +24,5 @@ ++ # questions. ++ # ++ ++-rmiregistry.usage=Uso: {0} \n\ndove include:\n -J Passa l''argomento all''interprete java +++rmiregistry.usage=Uso: {0} \n\ndove include:\n -J Passa l''argomento all''interprete java ++ rmiregistry.port.badnumber=l''argomento della porta, {0}, non \u00E8 un numero. ++diff --git openjdk/jdk/src/share/classes/sun/rmi/server/resources/rmid_it.properties openjdk/jdk/src/share/classes/sun/rmi/server/resources/rmid_it.properties ++--- openjdk/jdk/src/share/classes/sun/rmi/server/resources/rmid_it.properties +++++ openjdk/jdk/src/share/classes/sun/rmi/server/resources/rmid_it.properties ++@@ -1,6 +1,6 @@ ++ # ++ # ++-# Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved. +++# Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved. ++ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ # ++ # This code is free software; you can redistribute it and/or modify it ++@@ -75,7 +75,7 @@ ++ ++ # "rmid", "-port", "-log", "-stop", "-C" and "-J" should not be translated, ++ # because they are syntax ++-rmid.usage=Uso: {0} \n\ndove include:\n -port Specifica la porta usata da rmid\n -log Specifica la directory in cui rmid scrive il log\n -stop Arresta l''invocazione corrente di rmid (per la porta specificata)\n -C Passa l''argomento a ciascun processo figlio (gruppo di attivazione)\n -J Passa l''argomento all''interprete java\n +++rmid.usage=Uso: {0} \n\ndove include:\n -port Specifica la porta usata da rmid\n -log Specifica la directory in cui rmid scrive il log\n -stop Arresta l''invocazione corrente di rmid (per la porta specificata)\n -C Passa l''argomento a ciascun processo figlio (gruppo di attivazione)\n -J Passa l''argomento all''interprete java\n ++ # This means "The currently running activation daemon has been shut down, ++ # and is about to exit". ++ rmid.daemon.shutdown=daemon di attivazione terminato ++diff --git openjdk/jdk/src/share/classes/sun/security/tools/jarsigner/Resources_ja.java openjdk/jdk/src/share/classes/sun/security/tools/jarsigner/Resources_ja.java ++--- openjdk/jdk/src/share/classes/sun/security/tools/jarsigner/Resources_ja.java +++++ openjdk/jdk/src/share/classes/sun/security/tools/jarsigner/Resources_ja.java ++@@ -199,7 +199,8 @@ ++ {"certificate.is.not.valid.until", ++ "\u8A3C\u660E\u66F8\u306F{0}\u307E\u3067\u6709\u52B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093"}, ++ {"certificate.will.expire.on", "\u8A3C\u660E\u66F8\u306F{0}\u306B\u5931\u52B9\u3057\u307E\u3059"}, ++- {".CertPath.not.validated.", "[CertPath\u304C\u691C\u8A3C\u3055\u308C\u3066\u3044\u307E\u305B\u3093: "}, +++ {".Invalid.certificate.chain.", "[\u7121\u52B9\u306A\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3: "}, +++ {".Invalid.TSA.certificate.chain.", "[\u7121\u52B9\u306ATSA\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3: "}, ++ {"requesting.a.signature.timestamp", ++ "\u7F72\u540D\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u306E\u30EA\u30AF\u30A8\u30B9\u30C8"}, ++ {"TSA.location.", "TSA\u306E\u5834\u6240: "}, ++@@ -214,6 +215,8 @@ ++ {"entry.was.signed.on", "\u30A8\u30F3\u30C8\u30EA\u306F{0}\u306B\u7F72\u540D\u3055\u308C\u307E\u3057\u305F"}, ++ {"Warning.", "\u8B66\u544A: "}, ++ {"Error.", "\u30A8\u30E9\u30FC: "}, +++ {"...Signer", ">>> \u7F72\u540D\u8005"}, +++ {"...TSA", ">>> TSA"}, ++ {"This.jar.contains.unsigned.entries.which.have.not.been.integrity.checked.", ++ "\u3053\u306Ejar\u306B\u306F\u3001\u6574\u5408\u6027\u30C1\u30A7\u30C3\u30AF\u3092\u3057\u3066\u3044\u306A\u3044\u7F72\u540D\u306A\u3057\u306E\u30A8\u30F3\u30C8\u30EA\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002 "}, ++ {"This.jar.contains.entries.whose.signer.certificate.has.expired.", ++@@ -222,6 +225,8 @@ ++ "\u3053\u306Ejar\u306B\u306F\u3001\u7F72\u540D\u8005\u306E\u8A3C\u660E\u66F8\u304C6\u304B\u6708\u4EE5\u5185\u306B\u671F\u9650\u5207\u308C\u3068\u306A\u308B\u30A8\u30F3\u30C8\u30EA\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002 "}, ++ {"This.jar.contains.entries.whose.signer.certificate.is.not.yet.valid.", ++ "\u3053\u306Ejar\u306B\u306F\u3001\u7F72\u540D\u8005\u306E\u8A3C\u660E\u66F8\u304C\u307E\u3060\u6709\u52B9\u306B\u306A\u3063\u3066\u3044\u306A\u3044\u30A8\u30F3\u30C8\u30EA\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002 "}, +++ {"This.jar.contains.entries.whose.signer.certificate.is.self.signed.", +++ "\u3053\u306Ejar\u306B\u306F\u3001\u7F72\u540D\u8005\u306E\u8A3C\u660E\u66F8\u304C\u81EA\u5DF1\u7F72\u540D\u3055\u308C\u3066\u3044\u308B\u30A8\u30F3\u30C8\u30EA\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002 "}, ++ {"Re.run.with.the.verbose.option.for.more.details.", ++ "\u8A73\u7D30\u306F\u3001-verbose\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u4F7F\u7528\u3057\u3066\u518D\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002"}, ++ {"Re.run.with.the.verbose.and.certs.options.for.more.details.", ++@@ -246,14 +251,24 @@ ++ "\u3053\u306Ejar\u306B\u306F\u3001\u7F72\u540D\u8005\u8A3C\u660E\u66F8\u306ENetscapeCertType\u62E1\u5F35\u6A5F\u80FD\u304C\u30B3\u30FC\u30C9\u7F72\u540D\u3092\u8A31\u53EF\u3057\u306A\u3044\u30A8\u30F3\u30C8\u30EA\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002"}, ++ {".{0}.extension.does.not.support.code.signing.", ++ "[{0}\u62E1\u5F35\u6A5F\u80FD\u306F\u30B3\u30FC\u30C9\u7F72\u540D\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093]"}, ++- {"The.signer.s.certificate.chain.is.not.validated.", ++- "\u7F72\u540D\u8005\u306E\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u304C\u307E\u3060\u691C\u8A3C\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"}, ++- {"This.jar.contains.entries.whose.certificate.chain.is.not.validated.", ++- "\u3053\u306Ejar\u306B\u306F\u3001\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u304C\u307E\u3060\u691C\u8A3C\u3055\u308C\u3066\u3044\u306A\u3044\u30A8\u30F3\u30C8\u30EA\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002"}, +++ {"The.signer.s.certificate.chain.is.invalid.reason.1", +++ "\u7F72\u540D\u8005\u306E\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u304C\u7121\u52B9\u3067\u3059\u3002\u7406\u7531: %s"}, +++ {"The.tsa.certificate.chain.is.invalid.reason.1", +++ "TSA\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u304C\u7121\u52B9\u3067\u3059\u3002\u7406\u7531: %s"}, +++ {"The.signer.s.certificate.is.self.signed.", +++ "\u7F72\u540D\u8005\u306E\u8A3C\u660E\u66F8\u306F\u81EA\u5DF1\u7F72\u540D\u3055\u308C\u3066\u3044\u307E\u3059\u3002"}, +++ {"The.1.algorithm.specified.for.the.2.option.is.considered.a.security.risk.", +++ "%1$s\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0(%2$s\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u6307\u5B9A)\u306F\u3001\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u30FB\u30EA\u30B9\u30AF\u3068\u307F\u306A\u3055\u308C\u307E\u3059\u3002"}, +++ {"This.jar.contains.entries.whose.certificate.chain.is.invalid.reason.1", +++ "\u3053\u306Ejar\u306B\u306F\u3001\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u304C\u7121\u52B9\u306A\u30A8\u30F3\u30C8\u30EA\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002\u7406\u7531: %s"}, +++ {"This.jar.contains.entries.whose.tsa.certificate.chain.is.invalid.reason.1", +++ "\u3053\u306Ejar\u306B\u306F\u3001TSA\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u304C\u7121\u52B9\u306A\u30A8\u30F3\u30C8\u30EA\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002\u7406\u7531: %s"}, ++ {"no.timestamp.signing", ++ "-tsa\u307E\u305F\u306F-tsacert\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u306A\u3044\u305F\u3081\u3001\u3053\u306Ejar\u306B\u306F\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u304C\u4ED8\u52A0\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u304C\u306A\u3044\u3068\u3001\u7F72\u540D\u8005\u8A3C\u660E\u66F8\u306E\u6709\u52B9\u671F\u9650(%1$tY-%1$tm-%1$td)\u5F8C\u307E\u305F\u306F\u5C06\u6765\u306E\u5931\u52B9\u65E5\u5F8C\u306B\u3001\u30E6\u30FC\u30B6\u30FC\u306F\u3053\u306Ejar\u3092\u691C\u8A3C\u3067\u304D\u306A\u3044\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002"}, ++ {"no.timestamp.verifying", ++ "\u3053\u306Ejar\u306B\u306F\u3001\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u304C\u306A\u3044\u7F72\u540D\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u304C\u306A\u3044\u3068\u3001\u7F72\u540D\u8005\u8A3C\u660E\u66F8\u306E\u6709\u52B9\u671F\u9650(%1$tY-%1$tm-%1$td)\u5F8C\u307E\u305F\u306F\u5C06\u6765\u306E\u5931\u52B9\u65E5\u5F8C\u306B\u3001\u30E6\u30FC\u30B6\u30FC\u306F\u3053\u306Ejar\u3092\u691C\u8A3C\u3067\u304D\u306A\u3044\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002"}, +++ {"bad.timestamp.verifying", +++ "\u3053\u306Ejar\u306B\u306F\u3001\u7121\u52B9\u306A\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u306E\u3042\u308B\u7F72\u540D\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002\u6709\u52B9\u306A\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u304C\u306A\u3044\u3068\u3001\u3044\u305A\u308C\u304B\u306E\u7F72\u540D\u8005\u8A3C\u660E\u66F8\u306E\u6709\u52B9\u671F\u9650\u5F8C\u306B(\u65E9\u3051\u308C\u3070%1$tY-%1$tm-%1$td)\u30E6\u30FC\u30B6\u30FC\u306F\u3053\u306Ejar\u3092\u691C\u8A3C\u3067\u304D\u306A\u3044\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002\n\u8A73\u7D30\u306F\u3001-J-Djava.security.debug=jar\u3092\u6307\u5B9A\u3057\u3066jarsigner\u3092\u518D\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002"}, ++ {"Unknown.password.type.", "\u4E0D\u660E\u306A\u30D1\u30B9\u30EF\u30FC\u30C9\u30FB\u30BF\u30A4\u30D7: "}, ++ {"Cannot.find.environment.variable.", ++ "\u74B0\u5883\u5909\u6570\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: "}, ++diff --git openjdk/jdk/src/share/classes/sun/security/tools/jarsigner/Resources_zh_CN.java openjdk/jdk/src/share/classes/sun/security/tools/jarsigner/Resources_zh_CN.java ++--- openjdk/jdk/src/share/classes/sun/security/tools/jarsigner/Resources_zh_CN.java +++++ openjdk/jdk/src/share/classes/sun/security/tools/jarsigner/Resources_zh_CN.java ++@@ -199,7 +199,8 @@ ++ {"certificate.is.not.valid.until", ++ "\u76F4\u5230{0}, \u8BC1\u4E66\u624D\u6709\u6548"}, ++ {"certificate.will.expire.on", "\u8BC1\u4E66\u5C06\u5728{0}\u5230\u671F"}, ++- {".CertPath.not.validated.", "[CertPath \u672A\u9A8C\u8BC1: "}, +++ {".Invalid.certificate.chain.", "[\u65E0\u6548\u7684\u8BC1\u4E66\u94FE: "}, +++ {".Invalid.TSA.certificate.chain.", "[\u65E0\u6548 TSA \u7684\u8BC1\u4E66\u94FE: "}, ++ {"requesting.a.signature.timestamp", ++ "\u6B63\u5728\u8BF7\u6C42\u7B7E\u540D\u65F6\u95F4\u6233"}, ++ {"TSA.location.", "TSA \u4F4D\u7F6E: "}, ++@@ -214,6 +215,8 @@ ++ {"entry.was.signed.on", "\u6761\u76EE\u7684\u7B7E\u540D\u65E5\u671F\u4E3A {0}"}, ++ {"Warning.", "\u8B66\u544A: "}, ++ {"Error.", "\u9519\u8BEF: "}, +++ {"...Signer", ">>> \u7B7E\u540D\u8005"}, +++ {"...TSA", ">>> TSA"}, ++ {"This.jar.contains.unsigned.entries.which.have.not.been.integrity.checked.", ++ "\u6B64 jar \u5305\u542B\u5C1A\u672A\u8FDB\u884C\u5B8C\u6574\u6027\u68C0\u67E5\u7684\u672A\u7B7E\u540D\u6761\u76EE\u3002 "}, ++ {"This.jar.contains.entries.whose.signer.certificate.has.expired.", ++@@ -222,6 +225,8 @@ ++ "\u6B64 jar \u5305\u542B\u7B7E\u540D\u8005\u8BC1\u4E66\u5C06\u5728\u516D\u4E2A\u6708\u5185\u8FC7\u671F\u7684\u6761\u76EE\u3002 "}, ++ {"This.jar.contains.entries.whose.signer.certificate.is.not.yet.valid.", ++ "\u6B64 jar \u5305\u542B\u7B7E\u540D\u8005\u8BC1\u4E66\u4ECD\u65E0\u6548\u7684\u6761\u76EE\u3002 "}, +++ {"This.jar.contains.entries.whose.signer.certificate.is.self.signed.", +++ "\u6B64 jar \u5305\u542B\u5176\u7B7E\u540D\u8005\u8BC1\u4E66\u4E3A\u81EA\u7B7E\u540D\u8BC1\u4E66\u7684\u6761\u76EE\u3002"}, ++ {"Re.run.with.the.verbose.option.for.more.details.", ++ "\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u4F7F\u7528 -verbose \u9009\u9879\u91CD\u65B0\u8FD0\u884C\u3002"}, ++ {"Re.run.with.the.verbose.and.certs.options.for.more.details.", ++@@ -246,15 +251,25 @@ ++ "\u6B64 jar \u5305\u542B\u7531\u4E8E\u7B7E\u540D\u8005\u8BC1\u4E66\u7684 NetscapeCertType \u6269\u5C55\u800C\u65E0\u6CD5\u8FDB\u884C\u4EE3\u7801\u7B7E\u540D\u7684\u6761\u76EE\u3002"}, ++ {".{0}.extension.does.not.support.code.signing.", ++ "[{0} \u6269\u5C55\u4E0D\u652F\u6301\u4EE3\u7801\u7B7E\u540D]"}, ++- {"The.signer.s.certificate.chain.is.not.validated.", ++- "\u7B7E\u540D\u8005\u7684\u8BC1\u4E66\u94FE\u672A\u9A8C\u8BC1\u3002"}, ++- {"This.jar.contains.entries.whose.certificate.chain.is.not.validated.", ++- "\u6B64 jar \u5305\u542B\u8BC1\u4E66\u94FE\u672A\u9A8C\u8BC1\u7684\u6761\u76EE\u3002"}, +++ {"The.signer.s.certificate.chain.is.invalid.reason.1", +++ "\u7B7E\u540D\u8005\u8BC1\u4E66\u94FE\u65E0\u6548\u3002\u539F\u56E0: %s"}, +++ {"The.tsa.certificate.chain.is.invalid.reason.1", +++ "TSA \u8BC1\u4E66\u94FE\u65E0\u6548\u3002\u539F\u56E0: %s"}, +++ {"The.signer.s.certificate.is.self.signed.", +++ "\u7B7E\u540D\u8005\u8BC1\u4E66\u4E3A\u81EA\u7B7E\u540D\u8BC1\u4E66\u3002"}, +++ {"The.1.algorithm.specified.for.the.2.option.is.considered.a.security.risk.", +++ "\u4E3A %2$s \u9009\u9879\u6307\u5B9A\u7684 %1$s \u7B97\u6CD5\u88AB\u89C6\u4E3A\u5B58\u5728\u5B89\u5168\u98CE\u9669\u3002"}, +++ {"This.jar.contains.entries.whose.certificate.chain.is.invalid.reason.1", +++ "\u6B64 jar \u5305\u542B\u5176\u8BC1\u4E66\u94FE\u65E0\u6548\u7684\u6761\u76EE\u3002\u539F\u56E0: %s"}, +++ {"This.jar.contains.entries.whose.tsa.certificate.chain.is.invalid.reason.1", +++ "\u6B64 jar \u5305\u542B\u5176 TSA \u8BC1\u4E66\u94FE\u65E0\u6548\u7684\u6761\u76EE\u3002\u539F\u56E0: %s"}, ++ {"Command.option.flag.needs.an.argument.", "\u547D\u4EE4\u9009\u9879{0}\u9700\u8981\u4E00\u4E2A\u53C2\u6570\u3002"}, ++ {"no.timestamp.signing", ++ "\u672A\u63D0\u4F9B -tsa \u6216 -tsacert, \u6B64 jar \u6CA1\u6709\u65F6\u95F4\u6233\u3002\u5982\u679C\u6CA1\u6709\u65F6\u95F4\u6233, \u5219\u5728\u7B7E\u540D\u8005\u8BC1\u4E66\u7684\u5230\u671F\u65E5\u671F (%1$tY-%1$tm-%1$td) \u6216\u4EE5\u540E\u7684\u4EFB\u4F55\u64A4\u9500\u65E5\u671F\u4E4B\u540E, \u7528\u6237\u53EF\u80FD\u65E0\u6CD5\u9A8C\u8BC1\u6B64 jar\u3002"}, ++ {"no.timestamp.verifying", ++ "\u6B64 jar \u5305\u542B\u7684\u7B7E\u540D\u6CA1\u6709\u65F6\u95F4\u6233\u3002\u5982\u679C\u6CA1\u6709\u65F6\u95F4\u6233, \u5219\u5728\u7B7E\u540D\u8005\u8BC1\u4E66\u7684\u5230\u671F\u65E5\u671F (%1$tY-%1$tm-%1$td) \u6216\u4EE5\u540E\u7684\u4EFB\u4F55\u64A4\u9500\u65E5\u671F\u4E4B\u540E, \u7528\u6237\u53EF\u80FD\u65E0\u6CD5\u9A8C\u8BC1\u6B64 jar\u3002"}, +++ {"bad.timestamp.verifying", +++ "\u6B64 jar \u5305\u542B\u5E26\u6709\u65E0\u6548\u65F6\u95F4\u6233\u7684\u7B7E\u540D\u3002\u5982\u679C\u6CA1\u6709\u6709\u6548\u65F6\u95F4\u6233, \u5219\u5728\u5176\u4E2D\u4EFB\u4E00\u7B7E\u540D\u8005\u8BC1\u4E66\u5230\u671F (\u6700\u65E9\u4E3A %1$tY-%1$tm-%1$td) \u4E4B\u540E, \u7528\u6237\u53EF\u80FD\u65E0\u6CD5\u9A8C\u8BC1\u6B64 jar\u3002\n\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u4F7F\u7528 -J-Djava.security.debug=jar \u91CD\u65B0\u8FD0\u884C jarsigner\u3002"}, ++ {"Unknown.password.type.", "\u672A\u77E5\u53E3\u4EE4\u7C7B\u578B: "}, ++ {"Cannot.find.environment.variable.", ++ "\u627E\u4E0D\u5230\u73AF\u5883\u53D8\u91CF: "}, ++# HG changeset patch ++# User igerasim ++# Date 1533713527 25200 ++# Wed Aug 08 00:32:07 2018 -0700 ++# Node ID 9ea121b6409c38b7adf49b7e4ee4fdbb167232e7 ++# Parent 250d6be57acc6a2a4627bdf76feaddf8a9be19db ++8208754: The fix for JDK-8194534 needs updates ++Reviewed-by: alanb, igerasim, rhalade, mullan ++ ++diff --git openjdk/jdk/src/share/classes/java/util/jar/JarFile.java openjdk/jdk/src/share/classes/java/util/jar/JarFile.java ++--- openjdk/jdk/src/share/classes/java/util/jar/JarFile.java +++++ openjdk/jdk/src/share/classes/java/util/jar/JarFile.java ++@@ -551,7 +551,7 @@ ++ return false; ++ } ++ ++- private synchronized void ensureInitialization() { +++ synchronized void ensureInitialization() { ++ try { ++ maybeInstantiateVerifier(); ++ } catch (IOException e) { ++diff --git openjdk/jdk/src/share/classes/java/util/jar/JavaUtilJarAccessImpl.java openjdk/jdk/src/share/classes/java/util/jar/JavaUtilJarAccessImpl.java ++--- openjdk/jdk/src/share/classes/java/util/jar/JavaUtilJarAccessImpl.java +++++ openjdk/jdk/src/share/classes/java/util/jar/JavaUtilJarAccessImpl.java ++@@ -65,4 +65,7 @@ ++ return man.getTrustedAttributes(name); ++ } ++ +++ public void ensureInitialization(JarFile jar) { +++ jar.ensureInitialization(); +++ } ++ } ++diff --git openjdk/jdk/src/share/classes/java/util/jar/Manifest.java openjdk/jdk/src/share/classes/java/util/jar/Manifest.java ++--- openjdk/jdk/src/share/classes/java/util/jar/Manifest.java +++++ openjdk/jdk/src/share/classes/java/util/jar/Manifest.java ++@@ -150,6 +150,10 @@ ++ * does not exist in SF files of all signers). ++ */ ++ Attributes getTrustedAttributes(String name) { +++ // Note: Before the verification of MANIFEST.MF/.SF/.RSA files is done, +++ // jv.isTrustedManifestEntry() isn't able to detect MANIFEST.MF change. +++ // Users of this method should call SharedSecrets.javaUtilJarAccess() +++ // .ensureInitialization() first. ++ Attributes result = getAttributes(name); ++ if (result != null && jv != null && ! jv.isTrustedManifestEntry(name)) { ++ throw new SecurityException("Untrusted manifest entry: " + name); ++diff --git openjdk/jdk/src/share/classes/sun/misc/JavaUtilJarAccess.java openjdk/jdk/src/share/classes/sun/misc/JavaUtilJarAccess.java ++--- openjdk/jdk/src/share/classes/sun/misc/JavaUtilJarAccess.java +++++ openjdk/jdk/src/share/classes/sun/misc/JavaUtilJarAccess.java ++@@ -44,4 +44,5 @@ ++ public void setEagerValidation(JarFile jar, boolean eager); ++ public List getManifestDigests(JarFile jar); ++ public Attributes getTrustedAttributes(Manifest man, String name); +++ public void ensureInitialization(JarFile jar); ++ } ++diff --git openjdk/jdk/src/share/classes/sun/misc/URLClassPath.java openjdk/jdk/src/share/classes/sun/misc/URLClassPath.java ++--- openjdk/jdk/src/share/classes/sun/misc/URLClassPath.java +++++ openjdk/jdk/src/share/classes/sun/misc/URLClassPath.java ++@@ -823,8 +823,10 @@ ++ { return jar.getInputStream(entry); } ++ public int getContentLength() ++ { return (int)entry.getSize(); } ++- public Manifest getManifest() throws IOException ++- { return jar.getManifest(); }; +++ public Manifest getManifest() throws IOException { +++ SharedSecrets.javaUtilJarAccess().ensureInitialization(jar); +++ return jar.getManifest(); +++ } ++ public Certificate[] getCertificates() ++ { return entry.getCertificates(); }; ++ public CodeSigner[] getCodeSigners() ++# HG changeset patch ++# User pkoppula ++# Date 1538496534 -19800 ++# Tue Oct 02 21:38:54 2018 +0530 ++# Node ID 783c09459a69a5f16670be1c47e029b9030561e1 ++# Parent 9ea121b6409c38b7adf49b7e4ee4fdbb167232e7 ++8211107: LDAPS communication failure with jdk 1.8.0_181 ++Reviewed-by: chegar, coffeys, vtewari ++ ++diff --git openjdk/jdk/src/share/classes/com/sun/jndi/ldap/Connection.java openjdk/jdk/src/share/classes/com/sun/jndi/ldap/Connection.java ++--- openjdk/jdk/src/share/classes/com/sun/jndi/ldap/Connection.java +++++ openjdk/jdk/src/share/classes/com/sun/jndi/ldap/Connection.java ++@@ -386,17 +386,17 @@ ++ // then reset the timeout. ++ if (socket instanceof SSLSocket) { ++ SSLSocket sslSocket = (SSLSocket) socket; ++- int socketTimeout = sslSocket.getSoTimeout(); ++ if (!IS_HOSTNAME_VERIFICATION_DISABLED) { ++ SSLParameters param = sslSocket.getSSLParameters(); ++ param.setEndpointIdentificationAlgorithm("LDAPS"); ++ sslSocket.setSSLParameters(param); ++ } ++ if (connectTimeout > 0) { +++ int socketTimeout = sslSocket.getSoTimeout(); ++ sslSocket.setSoTimeout(connectTimeout); // reuse full timeout value +++ sslSocket.startHandshake(); +++ sslSocket.setSoTimeout(socketTimeout); ++ } ++- sslSocket.startHandshake(); ++- sslSocket.setSoTimeout(socketTimeout); ++ } ++ return socket; ++ } ++# HG changeset patch ++# User igerasim ++# Date 1538785993 25200 ++# Fri Oct 05 17:33:13 2018 -0700 ++# Node ID 2c8fc8aa5524b3bfc95364d97c8ee1a42899d358 ++# Parent 783c09459a69a5f16670be1c47e029b9030561e1 ++8211731: Reconsider default option for ClassPathURLCheck change done in JDK-8195874 ++Reviewed-by: alanb, mchung ++ ++diff --git openjdk/jdk/src/share/classes/sun/misc/URLClassPath.java openjdk/jdk/src/share/classes/sun/misc/URLClassPath.java ++--- openjdk/jdk/src/share/classes/sun/misc/URLClassPath.java +++++ openjdk/jdk/src/share/classes/sun/misc/URLClassPath.java ++@@ -86,7 +86,7 @@ ++ ++ // This property will be removed in a later release ++ p = AccessController.doPrivileged( ++- new GetPropertyAction("jdk.net.URLClassPath.disableClassPathURLCheck")); +++ new GetPropertyAction("jdk.net.URLClassPath.disableClassPathURLCheck", "true")); ++ ++ DISABLE_CP_URL_CHECK = p != null ? p.equals("true") || p.isEmpty() : false; ++ DEBUG_CP_URL_CHECK = "debug".equals(p); diff --cc debian/patches/pkcs11-secmod-debug.diff index 0000000,0000000..100662f new file mode 100644 --- /dev/null +++ b/debian/patches/pkcs11-secmod-debug.diff @@@ -1,0 -1,0 +1,13 @@@ ++# unused patch ++ ++--- openjdk/jdk/src/share/native/sun/security/pkcs11/j2secmod.h~ 2010-02-17 04:14:45.000000000 +0100 +++++ openjdk/jdk/src/share/native/sun/security/pkcs11/j2secmod.h 2010-04-12 15:00:23.903585870 +0200 ++@@ -27,7 +27,7 @@ ++ ++ #include "sun_security_pkcs11_Secmod.h" ++ ++-// #define SECMOD_DEBUG +++#define SECMOD_DEBUG ++ ++ #include "j2secmod_md.h" ++ diff --cc debian/patches/s390_hotspot_fix.diff index 0000000,0000000..01af2b0 new file mode 100644 --- /dev/null +++ b/debian/patches/s390_hotspot_fix.diff @@@ -1,0 -1,0 +1,51 @@@ ++Description: Fix FTBFS on s390. ++ ++ . ++ hotspot/src/share/vm/compiler/methodLiveness.cpp: In constructor 'MethodLiveness::BasicBlock::BasicBlock(MethodLiveness*, int, int)': ++ hotspot/src/share/vm/compiler/methodLiveness.cpp:585:22: error: call of overloaded 'BitMap(size_t*, int)' is ambiguous ++ hotspot/src/share/vm/compiler/methodLiveness.cpp:585:22: note: candidates are: ++ hotspot/src/share/vm/utilities/bitMap.hpp:124:3: note: BitMap::BitMap(BitMap::idx_t, bool) ++ hotspot/src/share/vm/utilities/bitMap.hpp:124:3: note: no known conversion for argument 1 from 'size_t* {aka long unsigned int*}' to 'BitMap::idx_t {aka long unsigned int}' ++ hotspot/src/share/vm/utilities/bitMap.hpp:119:3: note: BitMap::BitMap(BitMap::bm_word_t*, BitMap::idx_t) ++ hotspot/src/share/vm/utilities/bitMap.hpp:119:3: note: no known conversion for argument 1 from 'size_t* {aka long unsigned int*}' to 'BitMap::bm_word_t* {aka unsigned int*}' ++ . ++ It was initially a direct patch of patches/use-idx_t.patch. ++ It's now maintained in its own patch file since icedtea upstream as merged ++ patches into its mercurial repository. ++Author: Damien Raude-Morvan ++Last-Update: 2011-09-28 ++Forwarded: ??? ++Index: openjdk/hotspot/src/share/vm/compiler/methodLiveness.cpp ++=================================================================== ++--- openjdk/hotspot/src/share/vm/compiler/methodLiveness.cpp.orig +++++ openjdk/hotspot/src/share/vm/compiler/methodLiveness.cpp ++@@ -572,15 +572,15 @@ ++ ++ ++ MethodLiveness::BasicBlock::BasicBlock(MethodLiveness *analyzer, int start, int limit) : ++- _gen((size_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()), +++ _gen((uintptr_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()), ++ analyzer->bit_map_size_bits()), ++- _kill((size_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()), +++ _kill((uintptr_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()), ++ analyzer->bit_map_size_bits()), ++- _entry((size_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()), +++ _entry((uintptr_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()), ++ analyzer->bit_map_size_bits()), ++- _normal_exit((size_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()), +++ _normal_exit((uintptr_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()), ++ analyzer->bit_map_size_bits()), ++- _exception_exit((size_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()), +++ _exception_exit((uintptr_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()), ++ analyzer->bit_map_size_bits()), ++ _last_bci(-1) { ++ _analyzer = analyzer; ++@@ -998,7 +998,7 @@ ++ } ++ ++ MethodLivenessResult MethodLiveness::BasicBlock::get_liveness_at(ciMethod* method, int bci) { ++- MethodLivenessResult answer(NEW_RESOURCE_ARRAY(size_t, _analyzer->bit_map_size_words()), +++ MethodLivenessResult answer(NEW_RESOURCE_ARRAY(uintptr_t, _analyzer->bit_map_size_words()), ++ _analyzer->bit_map_size_bits()); ++ answer.set_is_valid(); ++ diff --cc debian/patches/series index 0000000,0000000..f128fd9 new file mode 100644 --- /dev/null +++ b/debian/patches/series @@@ -1,0 -1,0 +1,14 @@@ ++# quilt is only used to carry patches to the IcedTea build system. ++# all OpenJDK patches are applied by the IcedTea build system. ++ ++it-debian-build-flags.diff ++#it-set-compiler.diff ++#it-aarch64-zero-default.diff aarch64 hotspot merged? ++#it-sparc-zero.diff ++it-x32-zero.diff ++it-mips64-zero.diff ++it-use-quilt.diff ++it-patch-updates.diff ++it-nss-softokn-config.diff ++it-jamvm-2.0.diff ++it-remove-samevm.patch diff --cc debian/patches/set-exec-name.diff index 0000000,0000000..5c4d954 new file mode 100644 --- /dev/null +++ b/debian/patches/set-exec-name.diff @@@ -1,0 -1,0 +1,47 @@@ ++--- openjdk/jdk/src/solaris/bin/java_md.c.orig +++++ openjdk/jdk/src/solaris/bin/java_md.c ++@@ -688,8 +688,19 @@ ++ char buf[PATH_MAX+1]; ++ int len = readlink(self, buf, PATH_MAX); ++ if (len >= 0) { +++ const char* prefixes[] = {"/cow/", "/persistmnt/", "/rofs/", "/rwfs/", "/squashmnt/", NULL}; +++ const char **prefix; +++ size_t prefix_len = 0; ++ buf[len] = '\0'; /* readlink doesn't nul terminate */ ++- exec_path = JLI_StringDup(buf); +++ for (prefix = prefixes; *prefix; prefix++) { +++ prefix_len = strlen(buf) < strlen(*prefix) ? strlen(buf) : strlen(*prefix); +++ if (!strncmp(*prefix, buf, prefix_len)) { +++ prefix_len--; +++ break; +++ } +++ prefix_len = 0; +++ } +++ exec_path = JLI_StringDup(buf + prefix_len); ++ } ++ } ++ #else /* !__solaris__ && !__linux */ ++--- openjdk/hotspot/src/os/posix/launcher/java_md.c.orig +++++ openjdk/hotspot/src/os/posix/launcher/java_md.c ++@@ -967,8 +967,19 @@ ++ char buf[PATH_MAX+1]; ++ int len = readlink(self, buf, PATH_MAX); ++ if (len >= 0) { ++- buf[len] = '\0'; /* readlink doesn't nul terminate */ ++- exec_path = JLI_StringDup(buf); +++ buf[len] = '\0'; /* readlink doesn't nul terminate */ +++ const char* prefixes[] = {"/cow/", "/persistmnt/", "/rofs/", "/rwfs/", "/squashmnt/", NULL}; +++ const char **prefix; +++ size_t prefix_len = 0; +++ for (prefix = prefixes; *prefix; prefix++) { +++ prefix_len = strlen(buf) < strlen(*prefix) ? strlen(buf) : strlen(*prefix); +++ if (!strncmp(*prefix, buf, prefix_len)) { +++ prefix_len--; +++ break; +++ } +++ prefix_len = 0; +++ } +++ exec_path = JLI_StringDup(buf + prefix_len); ++ } ++ } ++ #else /* !__sun && !__linux */ diff --cc debian/patches/shebang.diff index 0000000,0000000..5767953 new file mode 100644 --- /dev/null +++ b/debian/patches/shebang.diff @@@ -1,0 -1,0 +1,7 @@@ ++--- openjdk/jdk/src/share/sample/scripting/scriptpad/src/scripts/memory.sh.orig 2010-08-27 20:01:53.000000000 +0200 +++++ openjdk/jdk/src/share/sample/scripting/scriptpad/src/scripts/memory.sh 2010-09-07 05:23:10.337191651 +0200 ++@@ -1,3 +1,4 @@ +++#!/bin/sh ++ # ++ # Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved. ++ # diff --cc debian/patches/sparc-inline.diff index 0000000,0000000..e67366b new file mode 100644 --- /dev/null +++ b/debian/patches/sparc-inline.diff @@@ -1,0 -1,0 +1,128 @@@ ++# unused patch ++ ++--- openjdk/hotspot/src/cpu/sparc/vm/assembler_sparc.inline.hpp.old 2009-10-02 23:16:39.000000000 +0200 +++++ openjdk/hotspot/src/cpu/sparc/vm/assembler_sparc.inline.hpp 2010-01-11 16:02:21.152335133 +0100 ++@@ -45,6 +45,7 @@ ++ ++ // inlines for SPARC assembler -- dmu 5/97 ++ +++#if 0 ++ inline void Assembler::check_delay() { ++ # ifdef CHECK_DELAY ++ guarantee( delay_state != at_delay_slot, "must say delayed() when filling delay slot"); ++@@ -56,6 +57,7 @@ ++ check_delay(); ++ AbstractAssembler::emit_long(x); ++ } +++#endif ++ ++ inline void Assembler::emit_data(int x, relocInfo::relocType rtype) { ++ relocate(rtype); ++@@ -69,7 +71,9 @@ ++ ++ ++ inline void Assembler::add(Register s1, Register s2, Register d ) { emit_long( op(arith_op) | rd(d) | op3(add_op3) | rs1(s1) | rs2(s2) ); } +++#if 0 ++ inline void Assembler::add(Register s1, int simm13a, Register d, relocInfo::relocType rtype ) { emit_data( op(arith_op) | rd(d) | op3(add_op3) | rs1(s1) | immed(true) | simm(simm13a, 13), rtype ); } +++#endif ++ inline void Assembler::add(Register s1, int simm13a, Register d, RelocationHolder const& rspec ) { emit_data( op(arith_op) | rd(d) | op3(add_op3) | rs1(s1) | immed(true) | simm(simm13a, 13), rspec ); } ++ ++ inline void Assembler::bpr( RCondition c, bool a, Predict p, Register s1, address d, relocInfo::relocType rt ) { v9_only(); emit_data( op(branch_op) | annul(a) | cond(c) | op2(bpr_op2) | wdisp16(intptr_t(d), intptr_t(pc())) | predict(p) | rs1(s1), rt); has_delay_slot(); } ++@@ -157,10 +161,12 @@ ++ if (a.has_index()) { assert(offset == 0, ""); ld( a.base(), a.index(), d); } ++ else { ld( a.base(), a.disp() + offset, d); } ++ } +++#if 0 ++ inline void Assembler::ldsb(const Address& a, Register d, int offset) { ++ if (a.has_index()) { assert(offset == 0, ""); ldsb(a.base(), a.index(), d); } ++ else { ldsb(a.base(), a.disp() + offset, d); } ++ } +++#endif ++ inline void Assembler::ldsh(const Address& a, Register d, int offset) { ++ if (a.has_index()) { assert(offset == 0, ""); ldsh(a.base(), a.index(), d); } ++ else { ldsh(a.base(), a.disp() + offset, d); } ++@@ -237,7 +243,9 @@ ++ // p 226 ++ ++ inline void Assembler::stb( Register d, Register s1, Register s2) { emit_long( op(ldst_op) | rd(d) | op3(stb_op3) | rs1(s1) | rs2(s2) ); } +++#if 0 ++ inline void Assembler::stb( Register d, Register s1, int simm13a) { emit_data( op(ldst_op) | rd(d) | op3(stb_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); } +++#endif ++ inline void Assembler::sth( Register d, Register s1, Register s2) { emit_long( op(ldst_op) | rd(d) | op3(sth_op3) | rs1(s1) | rs2(s2) ); } ++ inline void Assembler::sth( Register d, Register s1, int simm13a) { emit_data( op(ldst_op) | rd(d) | op3(sth_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); } ++ inline void Assembler::stw( Register d, Register s1, Register s2) { emit_long( op(ldst_op) | rd(d) | op3(stw_op3) | rs1(s1) | rs2(s2) ); } ++@@ -249,7 +257,9 @@ ++ inline void Assembler::std( Register d, Register s1, Register s2) { v9_dep(); assert(d->is_even(), "not even"); emit_long( op(ldst_op) | rd(d) | op3(std_op3) | rs1(s1) | rs2(s2) ); } ++ inline void Assembler::std( Register d, Register s1, int simm13a) { v9_dep(); assert(d->is_even(), "not even"); emit_data( op(ldst_op) | rd(d) | op3(std_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); } ++ +++#if 0 ++ inline void Assembler::st( Register d, Register s1, Register s2) { stw(d, s1, s2); } +++#endif ++ inline void Assembler::st( Register d, Register s1, int simm13a) { stw(d, s1, simm13a); } ++ ++ #ifdef ASSERT ++--- openjdk/hotspot/src/cpu/sparc/vm/assembler_sparc.hpp.old 2009-10-02 23:16:39.000000000 +0200 +++++ openjdk/hotspot/src/cpu/sparc/vm/assembler_sparc.hpp 2010-01-11 16:02:10.644835375 +0100 ++@@ -1105,12 +1105,21 @@ ++ AbstractAssembler::flush(); ++ } ++ ++- inline void emit_long(int); // shadows AbstractAssembler::emit_long +++ inline void emit_long(int x) { +++ check_delay(); +++ AbstractAssembler::emit_long(x); +++ } ++ inline void emit_data(int x) { emit_long(x); } ++ inline void emit_data(int, RelocationHolder const&); ++ inline void emit_data(int, relocInfo::relocType rtype); ++ // helper for above fcns ++- inline void check_delay(); +++ inline void check_delay() { +++# ifdef CHECK_DELAY +++ guarantee( delay_state != at_delay_slot, "must say delayed() when filling delay slot"); +++ delay_state = no_delay; +++# endif +++ } +++ ++ ++ ++ public: ++@@ -1119,7 +1128,7 @@ ++ // pp 135 (addc was addx in v8) ++ ++ inline void add(Register s1, Register s2, Register d ); ++- inline void add(Register s1, int simm13a, Register d, relocInfo::relocType rtype = relocInfo::none); +++ inline void add(Register s1, int simm13a, Register d, relocInfo::relocType rtype = relocInfo::none) { emit_data( op(arith_op) | rd(d) | op3(add_op3) | rs1(s1) | immed(true) | simm(simm13a, 13), rtype ); } ++ inline void add(Register s1, int simm13a, Register d, RelocationHolder const& rspec); ++ inline void add(Register s1, RegisterOrConstant s2, Register d, int offset = 0); ++ inline void add(const Address& a, Register d, int offset = 0) { add( a.base(), a.disp() + offset, d, a.rspec(offset)); } ++@@ -1331,7 +1340,10 @@ ++ inline void ld( Register s1, ByteSize simm13a, Register d); ++ #endif ++ ++- inline void ldsb(const Address& a, Register d, int offset = 0); +++ inline void ldsb(const Address& a, Register d, int offset = 0) { +++ if (a.has_index()) { assert(offset == 0, ""); ldsb(a.base(), a.index(), d); } +++ else { ldsb(a.base(), a.disp() + offset, d); } +++ } ++ inline void ldsh(const Address& a, Register d, int offset = 0); ++ inline void ldsw(const Address& a, Register d, int offset = 0); ++ inline void ldub(const Address& a, Register d, int offset = 0); ++@@ -1552,7 +1564,7 @@ ++ // p 226 ++ ++ inline void stb( Register d, Register s1, Register s2 ); ++- inline void stb( Register d, Register s1, int simm13a); +++ inline void stb( Register d, Register s1, int simm13a) { emit_data( op(ldst_op) | rd(d) | op3(stb_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); } ++ inline void sth( Register d, Register s1, Register s2 ); ++ inline void sth( Register d, Register s1, int simm13a); ++ inline void stw( Register d, Register s1, Register s2 ); ++@@ -1561,7 +1573,7 @@ ++ inline void st( Register d, Register s1, int simm13a); ++ inline void stx( Register d, Register s1, Register s2 ); ++ inline void stx( Register d, Register s1, int simm13a); ++- inline void std( Register d, Register s1, Register s2 ); +++ inline void std( Register d, Register s1, Register s2 ) { stw(d, s1, s2); } ++ inline void std( Register d, Register s1, int simm13a); ++ ++ #ifdef ASSERT diff --cc debian/patches/sparc-libproc-fix.diff index 0000000,0000000..52dc6ab new file mode 100644 --- /dev/null +++ b/debian/patches/sparc-libproc-fix.diff @@@ -1,0 -1,0 +1,12 @@@ ++Index: openjdk/hotspot/agent/src/os/linux/libproc.h ++=================================================================== ++--- openjdk/hotspot/agent/src/os/linux/libproc.h.old 2015-11-12 22:57:20.000000000 -0600 +++++ openjdk/hotspot/agent/src/os/linux/libproc.h 2015-11-22 10:49:17.684049960 -0600 ++@@ -34,6 +34,7 @@ ++ #include "libproc_md.h" ++ #endif ++ +++#include ++ #include ++ ++ /************************************************************************************ diff --cc debian/patches/stack-direction.diff index 0000000,0000000..04deba3 new file mode 100644 --- /dev/null +++ b/debian/patches/stack-direction.diff @@@ -1,0 -1,0 +1,217 @@@ ++# unused patch (work in progress for PARISC support) ++ ++--- openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp.old 2010-01-06 16:30:02.000000000 +0100 +++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp 2010-01-06 23:14:47.000000000 +0100 ++@@ -144,8 +144,13 @@ ++ address addr = (address) info->si_addr; ++ ++ // check if fault address is within thread stack +++#ifdef __hppa__ +++ if (addr > thread->stack_base() && +++ addr <= thread->stack_base() + thread->stack_size()) { +++#else ++ if (addr < thread->stack_base() && ++ addr >= thread->stack_base() - thread->stack_size()) { +++#endif ++ // stack overflow ++ if (thread->in_stack_yellow_zone(addr)) { ++ thread->disable_stack_yellow_zone(); ++@@ -294,7 +299,11 @@ ++ if (res != 0) { ++ fatal1("pthread_attr_getstack failed with errno = %d", res); ++ } +++#ifdef __hppa__ +++ address stack_top = stack_bottom - stack_bytes; +++#else ++ address stack_top = stack_bottom + stack_bytes; +++#endif ++ ++ // The block of memory returned by pthread_attr_getstack() includes ++ // guard pages where present. We need to trim these off. ++@@ -321,7 +330,11 @@ ++ stack_bottom += (total_pages - guard_pages) / 2 * page_bytes; ++ #endif // IA64 ++ +++#ifdef __hppa__ +++ stack_bottom -= guard_bytes; +++#else ++ stack_bottom += guard_bytes; +++#endif ++ ++ pthread_attr_destroy(&attr); ++ ++@@ -329,19 +342,36 @@ ++ // by pthread_attr_getstack is the maximum size it could possibly ++ // be given what currently mapped. This can be huge, so we cap it. ++ if (os::Linux::is_initial_thread()) { +++#ifdef __hppa__ +++ stack_bytes = stack_bottom - stack_top; +++#else ++ stack_bytes = stack_top - stack_bottom; +++#endif ++ ++ if (stack_bytes > JavaThread::stack_size_at_create()) ++ stack_bytes = JavaThread::stack_size_at_create(); ++ +++#ifdef __hppa__ +++ stack_bottom = stack_top + stack_bytes; +++#else ++ stack_bottom = stack_top - stack_bytes; +++#endif ++ } ++ +++#ifdef __hppa__ +++ assert(os::current_stack_pointer() <= stack_bottom, "should do"); +++ assert(os::current_stack_pointer() > stack_top, "should do"); +++#else ++ assert(os::current_stack_pointer() >= stack_bottom, "should do"); ++ assert(os::current_stack_pointer() < stack_top, "should do"); +++#endif ++ ++ *bottom = stack_bottom; +++#ifdef __hppa__ +++ *size = stack_bottom - stack_top; +++#else ++ *size = stack_top - stack_bottom; +++#endif ++ } ++ ++ address os::current_stack_base() { ++--- openjdk/hotspot/src/share/vm/runtime/thread.cpp.old 2009-10-02 23:16:39.000000000 +0200 +++++ openjdk/hotspot/src/share/vm/runtime/thread.cpp 2010-01-06 23:31:24.000000000 +0100 ++@@ -713,8 +713,13 @@ ++ else if (is_ConcurrentGC_thread()) st->print("ConcurrentGCThread"); ++ else st->print("Thread"); ++ +++#ifdef __hppa__ ++ st->print(" [stack: " PTR_FORMAT "," PTR_FORMAT "]", ++ _stack_base - _stack_size, _stack_base); +++#else +++ st->print(" [stack: " PTR_FORMAT "," PTR_FORMAT "]", +++ _stack_base + _stack_size, _stack_base); +++#endif ++ ++ if (osthread()) { ++ st->print(" [id=%d]", osthread()->thread_id()); ++@@ -792,7 +797,11 @@ ++ bool Thread::is_in_stack(address adr) const { ++ assert(Thread::current() == this, "is_in_stack can only be called from current thread"); ++ address end = os::current_stack_pointer(); +++#ifdef __hppa__ +++ if (stack_base() <= adr && adr <= end) return true; +++#else ++ if (stack_base() >= adr && adr >= end) return true; +++#endif ++ ++ return false; ++ } ++@@ -804,7 +813,11 @@ ++ // should be revisited, and they should be removed if possible. ++ ++ bool Thread::is_lock_owned(address adr) const { +++#ifdef __hppa__ +++ return (_stack_base <= adr && adr <= (_stack_base + _stack_size)); +++#else ++ return (_stack_base >= adr && adr >= (_stack_base - _stack_size)); +++#endif ++ } ++ ++ bool Thread::set_as_starting_thread() { ++@@ -2108,7 +2121,11 @@ ++ ++ void JavaThread::create_stack_guard_pages() { ++ if (! os::uses_stack_guard_pages() || _stack_guard_state != stack_guard_unused) return; +++#ifdef __hppa__ +++ address low_addr = stack_base(); +++#else ++ address low_addr = stack_base() - stack_size(); +++#endif ++ size_t len = (StackYellowPages + StackRedPages) * os::vm_page_size(); ++ ++ int allocate = os::allocate_stack_guard_pages(); ++@@ -2131,7 +2148,11 @@ ++ ++ void JavaThread::remove_stack_guard_pages() { ++ if (_stack_guard_state == stack_guard_unused) return; +++#ifdef __hppa__ +++ address low_addr = stack_base(); +++#else ++ address low_addr = stack_base() - stack_size(); +++#endif ++ size_t len = (StackYellowPages + StackRedPages) * os::vm_page_size(); ++ ++ if (os::allocate_stack_guard_pages()) { ++@@ -2156,10 +2177,17 @@ ++ ++ // The base notation is from the stacks point of view, growing downward. ++ // We need to adjust it to work correctly with guard_memory() +++#ifdef __hppa__ +++ address base = stack_yellow_zone_base() + stack_yellow_zone_size(); +++ +++ guarantee(base > stack_base(),"Error calculating stack yellow zone"); +++ guarantee(base > os::current_stack_pointer(),"Error calculating stack yellow zone"); +++#else ++ address base = stack_yellow_zone_base() - stack_yellow_zone_size(); ++ ++ guarantee(base < stack_base(),"Error calculating stack yellow zone"); ++ guarantee(base < os::current_stack_pointer(),"Error calculating stack yellow zone"); +++#endif ++ ++ if (os::guard_memory((char *) base, stack_yellow_zone_size())) { ++ _stack_guard_state = stack_guard_enabled; ++@@ -2178,7 +2206,11 @@ ++ ++ // The base notation is from the stacks point of view, growing downward. ++ // We need to adjust it to work correctly with guard_memory() +++#ifdef __hppa__ +++ address base = stack_yellow_zone_base() + stack_yellow_zone_size(); +++#else ++ address base = stack_yellow_zone_base() - stack_yellow_zone_size(); +++#endif ++ ++ if (os::unguard_memory((char *)base, stack_yellow_zone_size())) { ++ _stack_guard_state = stack_guard_yellow_disabled; ++@@ -2192,10 +2224,17 @@ ++ // The base notation is from the stacks point of view, growing downward. ++ // We need to adjust it to work correctly with guard_memory() ++ assert(_stack_guard_state != stack_guard_unused, "must be using guard pages."); +++#ifdef __hppa__ +++ address base = stack_red_zone_base() + stack_red_zone_size(); +++ +++ guarantee(base > stack_base(),"Error calculating stack red zone"); +++ guarantee(base > os::current_stack_pointer(),"Error calculating stack red zone"); +++#else ++ address base = stack_red_zone_base() - stack_red_zone_size(); ++ ++ guarantee(base < stack_base(),"Error calculating stack red zone"); ++ guarantee(base < os::current_stack_pointer(),"Error calculating stack red zone"); +++#endif ++ ++ if(!os::guard_memory((char *) base, stack_red_zone_size())) { ++ warning("Attempt to guard stack red zone failed."); ++@@ -2206,7 +2245,11 @@ ++ // The base notation is from the stacks point of view, growing downward. ++ // We need to adjust it to work correctly with guard_memory() ++ assert(_stack_guard_state != stack_guard_unused, "must be using guard pages."); +++#ifdef __hppa__ +++ address base = stack_red_zone_base() + stack_red_zone_size(); +++#else ++ address base = stack_red_zone_base() - stack_red_zone_size(); +++#endif ++ if (!os::unguard_memory((char *)base, stack_red_zone_size())) { ++ warning("Attempt to unguard stack red zone failed."); ++ } ++@@ -2451,8 +2494,13 @@ ++ if (osthread()) { ++ st->print(", id=%d", osthread()->thread_id()); ++ } +++#ifdef __hppa__ +++ st->print(", stack(" PTR_FORMAT "," PTR_FORMAT ")", +++ _stack_base + _stack_size, _stack_base); +++#else ++ st->print(", stack(" PTR_FORMAT "," PTR_FORMAT ")", ++ _stack_base - _stack_size, _stack_base); +++#endif ++ st->print("]"); ++ return; ++ } diff --cc debian/patches/text-relocations.diff index 0000000,0000000..0d4f790 new file mode 100644 --- /dev/null +++ b/debian/patches/text-relocations.diff @@@ -1,0 -1,0 +1,13 @@@ ++Index: openjdk/hotspot/make/linux/makefiles/gcc.make ++=================================================================== ++--- openjdk/hotspot/make/linux/makefiles/gcc.make +++++ openjdk/hotspot/make/linux/makefiles/gcc.make ++@@ -66,7 +66,7 @@ endif ++ # Compiler flags ++ ++ # position-independent code ++-ifneq ($(filter parisc ppc ppc64 s390 s390x sparc sparc64 sparcv9,$(ZERO_LIBARCH)),) +++ifneq ($(filter alpha m68k mips mipsel parisc ppc ppc64 s390 s390x sparc sparc64 sparcv9,$(ZERO_LIBARCH)),) ++ PICFLAG = -fPIC ++ else ++ PICFLAG = -fpic diff --cc debian/patches/zero-fpu-control-is-noop.diff index 0000000,0000000..90ea784 new file mode 100644 --- /dev/null +++ b/debian/patches/zero-fpu-control-is-noop.diff @@@ -1,0 -1,0 +1,30 @@@ ++Description: ZeroVM fix under IA32. Actual code in ++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp#safe_cond_timedwait ++ call get_fpu_control_word and set_fpu_control_word under ++ any IA32 arch. ++ In os_linux_zero.cpp, this methods throw errors with ShouldNotCallThis. ++ Just replace it with just NO-OP. ++ TODO: Maybe just add ifndef ZERO in os_linux.cpp ++Author: Damien Raude-Morvan ++Last-Update: 2011-08-02 ++Forwarded: http://mail.openjdk.java.net/pipermail/zero-dev/2011-August/000398.html ++Index: openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp ++=================================================================== ++--- openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp +++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp ++@@ -290,12 +290,12 @@ void os::Linux::init_thread_fpu_state(vo ++ } ++ ++ int os::Linux::get_fpu_control_word() { ++- ShouldNotCallThis(); ++- return -1; // silence compile warnings +++ // Nothing to do +++ return 0; ++ } ++ ++ void os::Linux::set_fpu_control_word(int fpu) { ++- ShouldNotCallThis(); +++ // Nothing to do ++ } ++ ++ bool os::is_allocatable(size_t bytes) { diff --cc debian/patches/zero-opt.diff index 0000000,0000000..33203d3 new file mode 100644 --- /dev/null +++ b/debian/patches/zero-opt.diff @@@ -1,0 -1,0 +1,17 @@@ ++Index: openjdk/hotspot/make/linux/makefiles/gcc.make ++=================================================================== ++--- openjdk/hotspot/make/linux/makefiles/gcc.make +++++ openjdk/hotspot/make/linux/makefiles/gcc.make ++@@ -179,7 +179,11 @@ CFLAGS_WARN/DEFAULT = $(WARNINGS_ARE_ERR ++ CFLAGS_WARN/BYFILE = $(CFLAGS_WARN/$@)$(CFLAGS_WARN/DEFAULT$(CFLAGS_WARN/$@)) ++ ++ # The flags to use for an Optimized g++ build ++-OPT_CFLAGS += -O3 +++ifeq ($(ZERO_BUILD), true) +++ OPT_CFLAGS += -O2 -finline-functions +++else +++ OPT_CFLAGS += -O3 +++endif ++ ++ # Hotspot uses very unstrict aliasing turn this optimization off ++ OPT_CFLAGS += -fno-strict-aliasing diff --cc debian/patches/zero-sparc.diff index 0000000,0000000..630a184 new file mode 100644 --- /dev/null +++ b/debian/patches/zero-sparc.diff @@@ -1,0 -1,0 +1,305 @@@ ++Index: openjdk/hotspot/src/cpu/sparc/vm/bytecodes_sparc.hpp ++=================================================================== ++--- openjdk/hotspot/src/cpu/sparc/vm/bytecodes_sparc.hpp +++++ openjdk/hotspot/src/cpu/sparc/vm/bytecodes_sparc.hpp ++@@ -25,7 +25,7 @@ ++ #ifndef CPU_SPARC_VM_BYTECODES_SPARC_HPP ++ #define CPU_SPARC_VM_BYTECODES_SPARC_HPP ++ ++-#ifdef SPARC +++#if defined(SPARC) && !defined(ZERO) ++ #define NLOCALS_IN_REGS 6 ++ #endif ++ ++Index: openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp ++=================================================================== ++--- openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp +++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp ++@@ -88,7 +88,7 @@ char* os::non_memory_address_word() { ++ // Must never look like an address returned by reserve_memory, ++ // even in its subfields (as defined by the CPU immediate fields, ++ // if the CPU splits constants across multiple instructions). ++-#ifdef SPARC +++#if defined(SPARC) && !defined(ZERO) ++ // On SPARC, 0 != %hi(any real address), because there is no ++ // allocation in the first 1Kb of the virtual address space. ++ return (char *) 0; ++Index: openjdk/hotspot/src/share/vm/opto/output.cpp ++=================================================================== ++--- openjdk/hotspot/src/share/vm/opto/output.cpp +++++ openjdk/hotspot/src/share/vm/opto/output.cpp ++@@ -695,7 +695,7 @@ void Compile::FillLocArray( int idx, Mac ++ array->append(new_loc_value( _regalloc, regnum, Location::lng )); ++ } ++ #else //_LP64 ++-#ifdef SPARC +++#if defined(SPARC) && !defined(ZERO) ++ if (t->base() == Type::Long && OptoReg::is_reg(regnum)) { ++ // For SPARC we have to swap high and low words for ++ // long values stored in a single-register (g0-g7). ++Index: openjdk/hotspot/src/share/vm/opto/chaitin.cpp ++=================================================================== ++--- openjdk/hotspot/src/share/vm/opto/chaitin.cpp +++++ openjdk/hotspot/src/share/vm/opto/chaitin.cpp ++@@ -886,7 +886,7 @@ void PhaseChaitin::gather_lrg_masks( boo ++ case Op_RegFlags: ++ case 0: // not an ideal register ++ lrg.set_num_regs(1); ++-#ifdef SPARC +++#if defined(SPARC) && !defined(ZERO) ++ lrg.set_reg_pressure(2); ++ #else ++ lrg.set_reg_pressure(1); ++@@ -1485,7 +1485,7 @@ uint PhaseChaitin::Select( ) { ++ ++ // Check if a color is available and if so pick the color ++ OptoReg::Name reg = choose_color( *lrg, chunk ); ++-#ifdef SPARC +++#if defined(SPARC) && !defined(ZERO) ++ debug_only(lrg->compute_set_mask_size()); ++ assert(lrg->num_regs() < 2 || lrg->is_bound() || is_even(reg-1), "allocate all doubles aligned"); ++ #endif ++Index: openjdk/hotspot/src/share/vm/runtime/advancedThresholdPolicy.cpp ++=================================================================== ++--- openjdk/hotspot/src/share/vm/runtime/advancedThresholdPolicy.cpp +++++ openjdk/hotspot/src/share/vm/runtime/advancedThresholdPolicy.cpp ++@@ -62,7 +62,7 @@ void AdvancedThresholdPolicy::initialize ++ } ++ #endif ++ ++-#ifdef SPARC +++#if defined(SPARC) && !defined(ZERO) ++ if (FLAG_IS_DEFAULT(InlineSmallCode)) { ++ FLAG_SET_DEFAULT(InlineSmallCode, 2500); ++ } ++Index: openjdk/hotspot/src/share/vm/runtime/deoptimization.cpp ++=================================================================== ++--- openjdk/hotspot/src/share/vm/runtime/deoptimization.cpp +++++ openjdk/hotspot/src/share/vm/runtime/deoptimization.cpp ++@@ -824,7 +824,7 @@ public: ++ #ifdef _LP64 ++ jlong res = (jlong)low->get_int(); ++ #else ++-#ifdef SPARC +++#if defined(SPARC) && !defined(ZERO) ++ // For SPARC we have to swap high and low words. ++ jlong res = jlong_from((jint)low->get_int(), (jint)value->get_int()); ++ #else ++@@ -887,7 +887,7 @@ void Deoptimization::reassign_type_array ++ #ifdef _LP64 ++ jlong res = (jlong)low->get_int(); ++ #else ++-#ifdef SPARC +++#if defined(SPARC) && !defined(ZERO) ++ // For SPARC we have to swap high and low words. ++ jlong res = jlong_from((jint)low->get_int(), (jint)value->get_int()); ++ #else ++Index: openjdk/hotspot/src/share/vm/runtime/safepoint.cpp ++=================================================================== ++--- openjdk/hotspot/src/share/vm/runtime/safepoint.cpp +++++ openjdk/hotspot/src/share/vm/runtime/safepoint.cpp ++@@ -758,7 +758,7 @@ void SafepointSynchronize::block(JavaThr ++ #define PTR_PAD " " ++ #endif ++ ++-#ifdef SPARC +++#if defined(SPARC) && !defined(ZERO) ++ static void print_ptrs(intptr_t oldptr, intptr_t newptr, bool wasoop) { ++ bool is_oop = newptr ? ((oop)newptr)->is_oop() : false; ++ tty->print_cr(PTR_FORMAT PTR_PAD " %s %c " PTR_FORMAT PTR_PAD " %s %s", ++Index: openjdk/hotspot/src/share/vm/runtime/stackValue.cpp ++=================================================================== ++--- openjdk/hotspot/src/share/vm/runtime/stackValue.cpp +++++ openjdk/hotspot/src/share/vm/runtime/stackValue.cpp ++@@ -34,7 +34,7 @@ StackValue* StackValue::create_stack_val ++ // Stack or register value ++ Location loc = ((LocationValue *)sv)->location(); ++ ++-#ifdef SPARC +++#if defined(SPARC) && !defined(ZERO) ++ // %%%%% Callee-save floats will NOT be working on a Sparc until we ++ // handle the case of a 2 floats in a single double register. ++ assert( !(loc.is_register() && loc.type() == Location::float_in_dbl), "Sparc does not handle callee-save floats yet" ); ++Index: openjdk/hotspot/src/share/vm/c1/c1_Runtime1.cpp ++=================================================================== ++--- openjdk/hotspot/src/share/vm/c1/c1_Runtime1.cpp +++++ openjdk/hotspot/src/share/vm/c1/c1_Runtime1.cpp ++@@ -1095,7 +1095,7 @@ JRT_ENTRY(void, Runtime1::patch_code(Jav ++ RelocIterator iter(nm, (address)instr_pc, (address)(instr_pc + 1)); ++ relocInfo::change_reloc_info_for_address(&iter, (address) instr_pc, ++ relocInfo::none, relocInfo::oop_type); ++-#ifdef SPARC +++#if defined(SPARC) && !defined(ZERO) ++ // Sparc takes two relocations for an oop so update the second one. ++ address instr_pc2 = instr_pc + NativeMovConstReg::add_offset; ++ RelocIterator iter2(nm, instr_pc2, instr_pc2 + 1); ++Index: openjdk/hotspot/src/share/vm/c1/c1_LIRAssembler.cpp ++=================================================================== ++--- openjdk/hotspot/src/share/vm/c1/c1_LIRAssembler.cpp +++++ openjdk/hotspot/src/share/vm/c1/c1_LIRAssembler.cpp ++@@ -584,7 +584,7 @@ void LIR_Assembler::emit_op1(LIR_Op1* op ++ monitor_address(op->in_opr()->as_constant_ptr()->as_jint(), op->result_opr()); ++ break; ++ ++-#ifdef SPARC +++#if defined(SPARC) && !defined(ZERO) ++ case lir_pack64: ++ pack64(op->in_opr(), op->result_opr()); ++ break; ++@@ -859,7 +859,7 @@ void LIR_Assembler::verify_oop_map(CodeE ++ if (!r->is_stack()) { ++ stringStream st; ++ st.print("bad oop %s at %d", r->as_Register()->name(), _masm->offset()); ++-#ifdef SPARC +++#if defined(SPARC) && !defined(ZERO) ++ _masm->_verify_oop(r->as_Register(), strdup(st.as_string()), __FILE__, __LINE__); ++ #else ++ _masm->verify_oop(r->as_Register()); ++Index: openjdk/hotspot/src/share/vm/c1/c1_LinearScan.cpp ++=================================================================== ++--- openjdk/hotspot/src/share/vm/c1/c1_LinearScan.cpp +++++ openjdk/hotspot/src/share/vm/c1/c1_LinearScan.cpp ++@@ -2133,7 +2133,7 @@ LIR_Opr LinearScan::calc_operand_for_int ++ } ++ #endif ++ ++-#ifdef SPARC +++#if defined(SPARC) && !defined(ZERO) ++ assert(assigned_reg >= pd_first_fpu_reg && assigned_reg <= pd_last_fpu_reg, "no fpu register"); ++ assert(interval->assigned_regHi() >= pd_first_fpu_reg && interval->assigned_regHi() <= pd_last_fpu_reg, "no fpu register"); ++ assert(assigned_reg % 2 == 0 && assigned_reg + 1 == interval->assigned_regHi(), "must be sequential and even"); ++@@ -2732,7 +2732,7 @@ int LinearScan::append_scope_value_for_o ++ ++ assert(opr->fpu_regnrLo() == opr->fpu_regnrHi(), "assumed in calculation (only fpu_regnrLo is used)"); ++ #endif ++-#ifdef SPARC +++#if defined(SPARC) && !defined(ZERO) ++ assert(opr->fpu_regnrLo() == opr->fpu_regnrHi() + 1, "assumed in calculation (only fpu_regnrHi is used)"); ++ #endif ++ #ifdef ARM ++Index: openjdk/hotspot/src/share/vm/c1/c1_LIR.hpp ++=================================================================== ++--- openjdk/hotspot/src/share/vm/c1/c1_LIR.hpp +++++ openjdk/hotspot/src/share/vm/c1/c1_LIR.hpp ++@@ -595,7 +595,7 @@ class LIR_OprFact: public AllStatic { ++ static LIR_Opr single_softfp(int reg) { return (LIR_Opr)((reg << LIR_OprDesc::reg1_shift) | LIR_OprDesc::float_type | LIR_OprDesc::cpu_register | LIR_OprDesc::single_size); } ++ static LIR_Opr double_softfp(int reg1, int reg2) { return (LIR_Opr)((reg1 << LIR_OprDesc::reg1_shift) | (reg2 << LIR_OprDesc::reg2_shift) | LIR_OprDesc::double_type | LIR_OprDesc::cpu_register | LIR_OprDesc::double_size); } ++ #endif ++-#ifdef SPARC +++#if defined(SPARC) && !defined(ZERO) ++ static LIR_Opr double_fpu(int reg1, int reg2) { return (LIR_Opr)(intptr_t)((reg1 << LIR_OprDesc::reg1_shift) | ++ (reg2 << LIR_OprDesc::reg2_shift) | ++ LIR_OprDesc::double_type | ++Index: openjdk/hotspot/src/share/vm/c1/c1_GraphBuilder.cpp ++=================================================================== ++--- openjdk/hotspot/src/share/vm/c1/c1_GraphBuilder.cpp +++++ openjdk/hotspot/src/share/vm/c1/c1_GraphBuilder.cpp ++@@ -1941,7 +1941,7 @@ void GraphBuilder::invoke(Bytecodes::Cod ++ Value recv = has_receiver ? apop() : NULL; ++ int vtable_index = methodOopDesc::invalid_vtable_index; ++ ++-#ifdef SPARC +++#if defined(SPARC) && !defined(ZERO) ++ // Currently only supported on Sparc. ++ // The UseInlineCaches only controls dispatch to invokevirtuals for ++ // loaded classes which we weren't able to statically bind. ++Index: openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp ++=================================================================== ++--- openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp +++++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp ++@@ -3499,7 +3499,7 @@ BytecodeInterpreter::print() { ++ tty->print_cr("stack_base: " INTPTR_FORMAT, (uintptr_t) this->_stack_base); ++ tty->print_cr("stack_limit: " INTPTR_FORMAT, (uintptr_t) this->_stack_limit); ++ tty->print_cr("monitor_base: " INTPTR_FORMAT, (uintptr_t) this->_monitor_base); ++-#ifdef SPARC +++#if defined(SPARC) && !defined(ZERO) ++ tty->print_cr("last_Java_pc: " INTPTR_FORMAT, (uintptr_t) this->_last_Java_pc); ++ tty->print_cr("frame_bottom: " INTPTR_FORMAT, (uintptr_t) this->_frame_bottom); ++ tty->print_cr("&native_fresult: " INTPTR_FORMAT, (uintptr_t) &this->_native_fresult); ++Index: openjdk/hotspot/src/share/vm/utilities/macros.hpp ++=================================================================== ++--- openjdk/hotspot/src/share/vm/utilities/macros.hpp +++++ openjdk/hotspot/src/share/vm/utilities/macros.hpp ++@@ -227,7 +227,7 @@ ++ #define NOT_AARCH64(code) code ++ #endif ++ ++-#ifdef SPARC +++#if defined(SPARC) && !defined(ZERO) ++ #define SPARC_ONLY(code) code ++ #define NOT_SPARC(code) ++ #else ++Index: openjdk/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp ++=================================================================== ++--- openjdk/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp +++++ openjdk/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp ++@@ -235,7 +235,7 @@ extern "C" void breakpoint(); ++ ++ // checking for nanness ++ #ifdef SOLARIS ++-#ifdef SPARC +++#if defined(SPARC) && !defined(ZERO) ++ inline int g_isnan(float f) { return isnanf(f); } ++ #else ++ // isnanf() broken on Intel Solaris use isnand() ++Index: openjdk/hotspot/src/share/vm/utilities/globalDefinitions_sparcWorks.hpp ++=================================================================== ++--- openjdk/hotspot/src/share/vm/utilities/globalDefinitions_sparcWorks.hpp +++++ openjdk/hotspot/src/share/vm/utilities/globalDefinitions_sparcWorks.hpp ++@@ -240,7 +240,7 @@ extern "C" void breakpoint(); ++ ++ // checking for nanness ++ #ifdef SOLARIS ++-#ifdef SPARC +++#if defined(SPARC) && !defined(ZERO) ++ inline int g_isnan(float f) { return isnanf(f); } ++ #else ++ // isnanf() broken on Intel Solaris use isnand() ++Index: openjdk/hotspot/src/share/vm/adlc/formssel.cpp ++=================================================================== ++--- openjdk/hotspot/src/share/vm/adlc/formssel.cpp +++++ openjdk/hotspot/src/share/vm/adlc/formssel.cpp ++@@ -1043,7 +1043,7 @@ uint InstructForm::reloc(FormDict &glob ++ const char *opType = NULL; ++ while (_matrule->base_operand(position, globals, result, name, opType)) { ++ if ( strcmp(opType,"ConP") == 0 ) { ++-#ifdef SPARC +++#if defined(SPARC) && !defined(ZERO) ++ reloc_entries += 2; // 1 for sethi + 1 for setlo ++ #else ++ ++reloc_entries; ++@@ -1081,7 +1081,7 @@ uint InstructForm::reloc(FormDict &glob ++ // Check for any component being an immediate float or double. ++ Form::DataType data_type = is_chain_of_constant(globals); ++ if( data_type==idealD || data_type==idealF ) { ++-#ifdef SPARC +++#if defined(SPARC) && !defined(ZERO) ++ // sparc required more relocation entries for floating constants ++ // (expires 9/98) ++ reloc_entries += 6; ++Index: openjdk/hotspot/src/share/vm/adlc/output_h.cpp ++=================================================================== ++--- openjdk/hotspot/src/share/vm/adlc/output_h.cpp +++++ openjdk/hotspot/src/share/vm/adlc/output_h.cpp ++@@ -722,7 +722,7 @@ void ArchDesc::declare_pipe_classes(FILE ++ fprintf(fp_hpp, "class Pipeline_Use_Cycle_Mask {\n"); ++ ++ if (_pipeline->_maxcycleused <= ++-#ifdef SPARC +++#if defined(SPARC) && !defined(ZERO) ++ 64 ++ #else ++ 32 ++Index: openjdk/hotspot/src/share/vm/adlc/output_c.cpp ++=================================================================== ++--- openjdk/hotspot/src/share/vm/adlc/output_c.cpp +++++ openjdk/hotspot/src/share/vm/adlc/output_c.cpp ++@@ -784,7 +784,7 @@ void ArchDesc::build_pipe_classes(FILE * ++ /* Do Nothing */; ++ ++ else if (_pipeline->_maxcycleused <= ++-#ifdef SPARC +++#if defined(SPARC) && !defined(ZERO) ++ 64 ++ #else ++ 32 diff --cc debian/patches/zero-x32.diff index 0000000,0000000..f9fdc8c new file mode 100644 --- /dev/null +++ b/debian/patches/zero-x32.diff @@@ -1,0 -1,0 +1,129 @@@ ++Index: openjdk/hotspot/src/os/linux/vm/os_linux.cpp ++=================================================================== ++--- openjdk/hotspot/src/os/linux/vm/os_linux.cpp +++++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp ++@@ -2044,7 +2044,7 @@ void * os::dll_load(const char *filename ++ ++ #if (defined IA32) ++ static Elf32_Half running_arch_code=EM_386; ++- #elif (defined AMD64) +++ #elif (defined AMD64) || (defined X32) ++ static Elf32_Half running_arch_code=EM_X86_64; ++ #elif (defined IA64) ++ static Elf32_Half running_arch_code=EM_IA_64; ++Index: openjdk/corba/make/common/shared/Platform.gmk ++=================================================================== ++--- openjdk/corba/make/common/shared/Platform.gmk +++++ openjdk/corba/make/common/shared/Platform.gmk ++@@ -163,8 +163,12 @@ ifeq ($(SYSTEM_UNAME), Linux) ++ ia64) \ ++ echo ia64 \ ++ ;; \ ++- x86_64) \ ++- echo amd64 \ +++ amd64|x86_64) \ +++ if [ "`dpkg-architecture -qDEB_HOST_ARCH`" = x32 ]; then \ +++ echo x32; \ +++ else \ +++ echo amd64; \ +++ fi \ ++ ;; \ ++ sparc*) \ ++ echo sparc \ ++Index: openjdk/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c ++=================================================================== ++--- openjdk/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c +++++ openjdk/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c ++@@ -41,7 +41,6 @@ ++ #endif ++ #ifdef __linux__ ++ #include ++-#include ++ #include ++ #include ++ ++Index: openjdk/jdk/src/solaris/native/java/net/PlainSocketImpl.c ++=================================================================== ++--- openjdk/jdk/src/solaris/native/java/net/PlainSocketImpl.c +++++ openjdk/jdk/src/solaris/native/java/net/PlainSocketImpl.c ++@@ -43,7 +43,6 @@ ++ #endif ++ #ifdef __linux__ ++ #include ++-#include ++ #endif ++ ++ #include "jvm.h" ++Index: openjdk/jdk/make/jdk_generic_profile.sh ++=================================================================== ++--- openjdk/jdk/make/jdk_generic_profile.sh +++++ openjdk/jdk/make/jdk_generic_profile.sh ++@@ -271,7 +271,12 @@ if [ "${ZERO_BUILD}" = true ] ; then ++ # subdirectory under $JAVA_HOME/jre/lib ++ arch=$(uname -m) ++ case "${arch}" in ++- x86_64) ZERO_LIBARCH=amd64 ;; +++ x86_64) +++ if [ "`dpkg-architecture -qDEB_HOST_ARCH`" = x32 ]; then +++ ZERO_LIBARCH=x32 +++ else +++ ZERO_LIBARCH=amd64 +++ fi;; ++ i?86) ZERO_LIBARCH=i386 ;; ++ sparc64) ZERO_LIBARCH=sparcv9 ;; ++ arm*) ZERO_LIBARCH=arm ;; ++@@ -284,7 +289,7 @@ if [ "${ZERO_BUILD}" = true ] ; then ++ ++ # ARCH_DATA_MODEL is the number of bits in a pointer ++ case "${ZERO_LIBARCH}" in ++- arm|i386|ppc|s390|sh|sparc) +++ arm|i386|ppc|s390|sh|sparc|x32) ++ ARCH_DATA_MODEL=32 ++ ;; ++ aarch64|alpha|amd64|ia64|ppc64|ppc64le|s390x|sparcv9) ++@@ -299,7 +304,7 @@ if [ "${ZERO_BUILD}" = true ] ; then ++ ++ # ZERO_ENDIANNESS is the endianness of the processor ++ case "${ZERO_LIBARCH}" in ++- arm|aarch64|amd64|i386|ia64|mipsel|ppc64le) +++ arm|aarch64|amd64|i386|ia64|mipsel|ppc64le|x32) ++ ZERO_ENDIANNESS=little ++ ;; ++ ppc|ppc64|s390*|sparc*|alpha) ++@@ -318,6 +323,7 @@ if [ "${ZERO_BUILD}" = true ] ; then ++ ppc*) ZERO_ARCHDEF=PPC ;; ++ s390*) ZERO_ARCHDEF=S390 ;; ++ sparc*) ZERO_ARCHDEF=SPARC ;; +++ x32) ZERO_ARCHDEF=AMD64 ;; ++ *) ZERO_ARCHDEF=$(echo "${ZERO_LIBARCH}" | tr a-z A-Z) ++ esac ++ export ZERO_ARCHDEF ++Index: openjdk/jdk/make/common/shared/Platform.gmk ++=================================================================== ++--- openjdk/jdk/make/common/shared/Platform.gmk +++++ openjdk/jdk/make/common/shared/Platform.gmk ++@@ -180,8 +180,12 @@ ifeq ($(SYSTEM_UNAME), Linux) ++ ia64) \ ++ echo ia64 \ ++ ;; \ ++- x86_64) \ ++- echo amd64 \ +++ amd64|x86_64) \ +++ if [ "`dpkg-architecture -qDEB_HOST_ARCH`" = x32 ]; then \ +++ echo x32; \ +++ else \ +++ echo amd64; \ +++ fi \ ++ ;; \ ++ sparc*) \ ++ echo sparc \ ++@@ -227,6 +231,9 @@ ifeq ($(SYSTEM_UNAME), Linux) ++ ifeq ($(ARCH), s390x) ++ ARCH_DATA_MODEL=64 ++ endif +++ ifeq ($(ARCH), x32) +++ ARCH_DATA_MODEL=32 +++ endif ++ ifeq ($(ARCH), sh) ++ ARCH_DATA_MODEL=32 ++ endif diff --cc debian/repack index 0000000,0000000..d9ddf0f new file mode 100755 --- /dev/null +++ b/debian/repack @@@ -1,0 -1,0 +1,117 @@@ ++#! /bin/bash ++# ++# debian/repack ++# Part of the Debian package ‘libjs-zxcvbn’. ++# Modified by Tiago Daitx for use with the Debian package 'openjdk-7'. ++# ++# Copyright © 2013–2014 Ben Finney ++# This is free software; see the end of this file for license terms. ++ ++# Convert the pristine upstream source to the Debian upstream source. ++# ++# This program is designed for use with the ‘uscan(1)’ tool, as the ++# “action” parameter for the ‘debian/watch’ configuration file. ++ ++ ++function usage() { ++ local progname=$(basename $0) ++ printf "$progname --upstream-version VERSION\n" ++ cat < openjdk and jamvm tarballs ++EOF ++} ++ ++set -o errexit ++set -o errtrace ++set -o pipefail ++set -o nounset ++ ++set -x ++ ++exec 1>&2 ++ ++# version 4 watch file ++# args are: --upstream-version ++if [ $# -ne 2 ] ; then ++ usage ++ exit 1 ++fi ++ ++package_name=$(dpkg-parsechangelog --show-field=Source) ++icedtea_version="$2" ++old_orig_file=$(ls ../${package_name}_${icedtea_version}.orig.tar* | head -n1) ++old_orig_file_name="$(basename ${old_orig_file})" ++deb_orig_path="$(dirname "${old_orig_file}")" ++ ++# get JDK update version ++printf "Get JDK update version from Makefile.am in upstream source ‘${old_orig_file}’:\n" ++source <(tar -O -x -f "${old_orig_file}" --wildcards "*/Makefile.am" | grep "^JDK_UPDATE_VERSION = " | tr -d ' ') ++ ++# new debian version ++pkg_version=7u${JDK_UPDATE_VERSION}-${icedtea_version} ++ ++# orig dir and tarball ++orig_basename="${package_name}-${pkg_version}.orig" ++openjdk_tarball="${deb_orig_path}/${package_name}_${pkg_version}.orig.tar.gz" ++ ++# do not overwrite existing orig file ++if [ -e "${openjdk_tarball}" ]; then ++ printf "ERROR: OpenJDK orig file exists at '${openjdk_tarball}'. Stopping now.\n" ++ exit 1 ++fi ++ ++# tarball directory ++tarball_dir="${deb_orig_path}/${orig_basename}" ++ ++# Unpack IcedTea ++mkdir -p "${deb_orig_path}/${orig_basename}" ++tar -xf "${old_orig_file}" -C "${deb_orig_path}/${orig_basename}" --strip-components=1 ++ ++# Get OpenJDK+components, unpack, and repack the whole forest ++printf "Packing OpenJDK components together\n" ++ ++printf "Fetching OpenJDK modules tarballs\n" ++wget -P "${deb_orig_path}/${orig_basename}" -e robots=off -L -r -np -nd -N -A "*.tar.bz2" http://icedtea.wildebeest.org/download/drops/icedtea7/${icedtea_version}/ ++ ++printf "Fetching JamVM tarball\n" ++wget -P "${deb_orig_path}/${orig_basename}" -q -nd -N http://icedtea.classpath.org/download/drops/jamvm/jamvm-2.0.0.tar.gz ++ ++printf "Copying IcedTea Sound tarball\n" ++cp "${deb_orig_path}"/icedtea-sound-*.tar.xz "${deb_orig_path}/${orig_basename}" ++ ++# repack tarball ++printf "Packaging IcedTea/OpenJDK/JamVM/IcedTea-Sound to '${deb_orig_path}/${orig_basename}'.\n" ++tar -caf "${openjdk_tarball}" -C "${deb_orig_path}" "${orig_basename}" ++ ++printf "Done. Calling uupdate\n" ++uupdate --find --upstream-version ${pkg_version} ++ ++# Permission is hereby granted, free of charge, to any person obtaining ++# a copy of this software and associated documentation files (the ++# “Software”), to deal in the Software without restriction, including ++# without limitation the rights to use, copy, modify, merge, publish, ++# distribute, sublicense, and/or sell copies of the Software, and to ++# permit persons to whom the Software is furnished to do so, subject to ++# the following conditions: ++# ++# The above copyright notice and this permission notice shall be included ++# in all copies or substantial portions of the Software. ++# ++# The Software is provided “as is”, without warranty of any kind, ++# express or implied, including but not limited to the warranties of ++# merchantability, fitness for a particular purpose and noninfringement. ++# In no event shall the authors or copyright holders be liable for any ++# claim, damages or other liability, whether in an action of contract, ++# tort or otherwise, arising from, out of or in connection with the ++# Software or the use or other dealings in the Software. ++ ++ ++# Local variables: ++# coding: utf-8 ++# mode: sh ++# indent-tabs-mode: nil ++# End: ++# vim: fileencoding=utf-8 filetype=bash : diff --cc debian/rules index 0000000,0000000..7281871 new file mode 100755 --- /dev/null +++ b/debian/rules @@@ -1,0 -1,0 +1,1869 @@@ ++#!/usr/bin/make -f ++# -*- makefile -*- ++ ++# Uncomment this to turn on verbose mode. ++#export DH_VERBOSE=1 ++ ++unexport LANG LC_ALL ++ ++# using brace expansion and substring replacements (${var:0:2}). ++SHELL = /bin/bash ++ ++include /usr/share/dpkg/architecture.mk ++include /usr/share/dpkg/pkg-info.mk ++ ++PATH := $(CURDIR)/bin:$(PATH) ++export PATH ++ ++ifeq (,$(VERSION_CODENAME)) ++ include /etc/os-release ++endif ++# fallback to lsb-release if os-release doesn't set VERSION_CODENAME ++distrel := $(if $(VERSION_CODENAME), $(VERSION_CODENAME), $(shell lsb_release --codename --short)) ++derivative := $(shell if dpkg-vendor --derives-from Ubuntu; then echo Ubuntu; \ ++ elif dpkg-vendor --derives-from Debian; then echo Debian; \ ++ else echo Unknown; fi) ++ifeq ($(distrel),n/a) ++ distrel := sid ++endif ++ ++multiarch_dir = /$(DEB_HOST_MULTIARCH) ++ifneq (,$(DEB_HOST_MULTIARCH)) ++ ifneq (,$(filter $(distrel),natty oneiric)) ++ DEB_HOST_MULTIARCH = ++ multiarch_dir = ++ endif ++endif ++ ++hotspot_archs = amd64 i386 arm64 ppc64 ppc64el sparc sparc64 kfreebsd-amd64 kfreebsd-i386 ++# Shark build but just crash ++shark_archs = ++ ++ifneq (,$(filter $(distrel),precise wheezy)) ++ is_default = no ++else ++ is_default = yes ++endif ++ ++VENDOR = openjdk ++Vendor = OpenJDK ++TOP = usr/lib/jvm ++origin = openjdk ++basename = openjdk-$(shortver) ++ifneq (,$(filter $(DEB_HOST_ARCH), $(hotspot_archs))) ++ priority = $(if $(filter yes, $(is_default)),1071,1051) ++ vm_name = Hotspot JIT ++else ifneq (,$(filter $(DEB_HOST_ARCH), $(shark_archs))) ++ priority = $(if $(filter yes, $(is_default)),1065,1045) ++ vm_name = Hotspot Shark ++else ++ priority = $(if $(filter yes, $(is_default)),1063,1043) ++ vm_name = Hotspot Zero ++endif ++p_lib_arch = all ++jvmver = 1.7.0 ++shortver = 7 ++ifneq (,$(DEB_HOST_MULTIARCH)) ++ jdirname = java-$(shortver)-$(origin)-$(DEB_HOST_ARCH) ++ jdiralias = java-$(jvmver)-$(origin)-$(DEB_HOST_ARCH) ++ basedir = $(TOP)/$(jdirname) ++ commonbasedir = $(TOP)/java-$(shortver)-$(origin)-common ++ commonbasedir = $(basedir) ++ etcdir = etc/java-$(shortver)-$(origin) ++else ++ jdirname = java-$(shortver)-$(origin) ++ jdiralias = java-$(jvmver)-$(origin) ++ basedir = $(TOP)/$(jdirname) ++ commonbasedir = $(TOP)/java-$(shortver)-$(origin) ++ etcdir = etc/$(jdirname) ++endif ++security = $(etcdir)/security ++jreimg = openjdk.build/j2re-image ++sdkimg = openjdk.build/j2sdk-image ++ ++# Support parallel= in DEB_BUILD_OPTIONS (see #209008) ++COMMA=, ++SPACE = $(EMPTY) $(EMPTY) ++ifneq (,$(filter parallel=%,$(subst $(COMMA), ,$(DEB_BUILD_OPTIONS)))) ++ NJOBS = $(subst parallel=,,$(filter parallel=%,$(subst $(COMMA), ,$(DEB_BUILD_OPTIONS)))) ++ HOTSPOT_BUILD_JOBS = $(NJOBS) ++ ALT_PARALLEL_COMPILE_JOBS = $(NJOBS) ++ export HOTSPOT_BUILD_JOBS ++ export ALT_PARALLEL_COMPILE_JOBS ++endif ++ ++# make the build log comparable ++#export HOTSPOT_BUILD_JOBS = 1 ++#export ALT_PARALLEL_COMPILE_JOBS = 1 ++ ++# Extracting debug symbols done by dh_strip ++export ALT_OBJCOPY=fake ++export ALT_STRIP_POLICY=no_strip ++ ++with_check = $(if $(findstring nocheck, $(DEB_BUILD_OPTIONS)),,yes) ++ifneq (,$(filter $(DEB_HOST_ARCH), armel)) ++ with_check = disabled running check on $(DEB_HOST_ARCH) ++endif ++with_docs = $(if $(findstring nodocs, $(DEB_BUILD_OPTIONS)),,yes) ++ifneq (,$(findstring shark, $(DEB_SOURCE))) ++ with_docs = disabled for shark ++endif ++ ++arch_map := alpha=alpha arm=arm armel=arm armhf=arm arm64=aarch64 amd64=amd64 hppa=parisc i386=i586 m68k=m68k mips=mips mipsel=mipsel mips64=mips64 mips64el=mips64el powerpc=ppc powerpcspe=ppc ppc64=ppc64 ppc64el=ppc64le sparc=sparc sparc64=sparc64 sh4=sh s390=s390 s390x=s390x ia64=ia64 m68k=m68k x32=x32 ++archdir_map := alpha=alpha arm=arm armel=arm armhf=arm arm64=aarch64 amd64=amd64 hppa=parisc i386=i386 m68k=m68k mips=mips mipsel=mipsel mips64=mips64 mips64el=mips64el powerpc=ppc powerpcspe=ppc ppc64=ppc64 ppc64el=ppc64le sparc=sparc sparc64=sparcv9 sh4=sh s390=s390 s390x=s390x ia64=ia64 m68k=m68k x32=x32 ++ ++jvmarch := $(strip $(patsubst $(DEB_HOST_ARCH_CPU)=%, %, \ ++ $(filter $(DEB_HOST_ARCH_CPU)=%, $(arch_map)))) ++archdir := $(strip $(patsubst $(DEB_HOST_ARCH_CPU)=%, %, \ ++ $(filter $(DEB_HOST_ARCH_CPU)=%, $(archdir_map)))) ++ifeq ($(DEB_HOST_ARCH),x32) ++ jvmarch := x32 ++ archdir := x32 ++endif ++ ++default_vm = $(if $(filter $(DEB_HOST_ARCH), $(hotspot_archs)),hotspot,zero) ++hotspot_version = $(if $(filter $(DEB_HOST_ARCH), $(hotspot_archs)),default,zero) ++hotspot_version = default ++ ++any_archs = alpha amd64 armel armhf arm64 i386 ia64 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el m68k sh4 sparc sparc64 s390x x32 kfreebsd-i386 kfreebsd-amd64 ++stage1_gcj_archs = amd64 armel arm64 armhf hppa i386 ia64 powerpc powerpcspe ppc64 ppc64el m68k mipsel sh4 sparc sparc64 s390x x32 kfreebsd-i386 kfreebsd-amd64 ++stage1_openjdk_archs = alpha mips mips64 mips64el ++ifneq (,$(filter nobootstrap, $(DEB_BUILD_OPTIONS))) ++ stage1_openjdk_archs := $(stage1_openjdk_archs) $(stage1_gcj_archs) ++ stage1_gcj_archs := ++endif ++ ++# Disable bootstrap on sid/buster, gcj is removed ++ifneq (,$(filter $(distrel),sid buster)) ++ stage1_openjdk_archs := $(stage1_openjdk_archs) $(stage1_gcj_archs) ++ stage1_gcj_archs := ++endif ++ ++# Disable bootstrap on wheezy, it currently fails due to the last round ++# of 8u151 security patches ++ifneq (,$(filter $(distrel),wheezy)) ++ stage1_openjdk_archs := $(stage1_openjdk_archs) $(stage1_gcj_archs) ++ stage1_gcj_archs := ++endif ++ ++ifneq (,$(filter $(distrel),wheezy precise)) ++ transitional_cacao_pkg = yes ++endif ++ ++jamvm_archs = amd64 armel armhf i386 powerpc kfreebsd-i386 kfreebsd-amd64 ++ ++# requires patched llvm-2.6 ++ifeq (,$(filter $(distrel),lenny jaunty intrepid hardy)) ++ altshark_archs = powerpc ppc64 ppc64el ++ # Shark build but just crash ++ altshark_archs = ++endif ++altzero_archs = $(filter-out arm64 sparc sparc64, $(hotspot_archs)) $(altshark_archs) ++ ++ifeq (,$(filter noaltzero, $(DEB_BUILD_OPTIONS))$(filter noaltshark, $(DEB_BUILD_OPTIONS))) ++ ifneq (,$(filter $(DEB_HOST_ARCH), $(altzero_archs))) ++ ifneq (,$(filter $(DEB_HOST_ARCH), $(shark_archs) $(altshark_archs))) ++ alternate_vms += shark ++ zero_dir = shark ++ else ++ alternate_vms += zero ++ zero_dir = zero ++ endif ++ endif ++endif ++ifeq (,$(filter noaltjamvm, $(DEB_BUILD_OPTIONS))) ++ ifneq (,$(filter $(DEB_HOST_ARCH), $(jamvm_archs))) ++ alternate_vms += jamvm ++ endif ++endif ++ ++ifneq (,$(filter $(DEB_HOST_ARCH), $(stage1_gcj_archs))) ++ STAGE1_JAVA = gcj ++ STAGE1_HOME = /usr/lib/jvm/java-gcj ++else ifneq (,$(filter $(DEB_HOST_ARCH), $(stage1_openjdk_archs))) ++ STAGE1_JAVA = openjdk ++ STAGE1_HOME = $(firstword $(wildcard /usr/lib/jvm/java-7-openjdk-$(DEB_HOST_ARCH) /usr/lib/jvm/java-7-openjdk)) ++else ++ $(error unknown bootstrap method for architecture $(DEB_HOST_ARCH)) ++endif ++ ++OPENJDK_VERSION = b151 ++OPENJDK_SRC_ZIP = openjdk-7-ea-src-$(OPENJDK_VERSION)-25_mar_2010-dfsg.tar.gz ++# the version of the build dependency for non-bootstrap builds; only adjust if ++# the package is installable on all these architectures. ++req_openjdk_bd_ver = 6b18 ++req_openjdk_ver = 7~b130~pre0 ++ ++# for Hotspot: hotspot/make/linux/makefiles/vm.make ++# Don't overwrite Hotspot opt level : ++# -O3 is already default option for hotspot ++dpkg_buildflags_hs = DEB_CFLAGS_MAINT_STRIP="-O2" DEB_CXXFLAGS_MAINT_STRIP="-O2" ++dpkg_buildflags_hs += dpkg-buildflags ++export EXTRA_CPPFLAGS_HS := $(shell $(dpkg_buildflags_hs) --get CPPFLAGS) ++export EXTRA_CFLAGS_HS := $(shell $(dpkg_buildflags_hs) --get CFLAGS) $(shell $(dpkg_buildflags_hs) --get CPPFLAGS) ++export EXTRA_CXXFLAGS_HS := $(shell $(dpkg_buildflags_hs) --get CXXFLAGS) ++export EXTRA_LDFLAGS_HS := $(shell $(dpkg_buildflags_hs) --get LDFLAGS) ++ ++# for JDK: jdk/make/common/Defs.gmk ++# Don't overwrite JDK opt level : ++# 1) with forced -03, it cause wrong Math.* computations, see #679292 and #678228 ++# 2) JDK already use it's own OPTIMIZATION_LEVEL variable for each module ++dpkg_buildflags_jdk = DEB_CFLAGS_MAINT_STRIP="-O2" DEB_CXXFLAGS_MAINT_STRIP="-O2" ++dpkg_buildflags_jdk += dpkg-buildflags ++export EXTRA_CPPFLAGS_JDK := $(shell $(dpkg_buildflags_jdk) --get CPPFLAGS) ++export EXTRA_CFLAGS_JDK := $(shell $(dpkg_buildflags_jdk) --get CFLAGS) $(shell $(dpkg_buildflags_jdk) --get CPPFLAGS) ++export EXTRA_CXXFLAGS_JDK := $(shell $(dpkg_buildflags_jdk) --get CXXFLAGS) ++export EXTRA_LDFLAGS_JDK := $(shell $(dpkg_buildflags_jdk) --get LDFLAGS) ++ ++#for Icedtea: Makefile.am ++dpkg_buildflags_it += dpkg-buildflags ++export EXTRA_CPPFLAGS_IT := $(shell $(dpkg_buildflags_it) --get CPPFLAGS) ++export EXTRA_CFLAGS_IT := $(shell $(dpkg_buildflags_it) --get CFLAGS) ++export EXTRA_CXXFLAGS_IT := $(shell $(dpkg_buildflags_it) --get CXXFLAGS) ++export EXTRA_LDFLAGS_IT := $(shell $(dpkg_buildflags_it) --get LDFLAGS) ++ ++#for JamVM: Makefile.am ++ifeq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) ++dpkg_buildflags_jamvm += DEB_CFLAGS_MAINT_STRIP="-O2" DEB_CXXFLAGS_MAINT_STRIP="-O2" ++dpkg_buildflags_jamvm += DEB_CFLAGS_MAINT_APPEND="-O3" DEB_CXXFLAGS_MAINT_APPEND="-O3" ++endif ++dpkg_buildflags_jamvm += dpkg-buildflags ++export EXTRA_CPPFLAGS_JAMVM := $(shell $(dpkg_buildflags_jamvm) --get CPPFLAGS) ++export EXTRA_CFLAGS_JAMVM := $(shell $(dpkg_buildflags_jamvm) --get CFLAGS) ++export EXTRA_CXXFLAGS_JAMVM := $(shell $(dpkg_buildflags_jamvm) --get CXXFLAGS) ++export EXTRA_LDFLAGS_JAMVM := $(shell $(dpkg_buildflags_jamvm) --get LDFLAGS) ++ ++# This section should be in sync with "bd_gcc" definition ++ifneq (,$(filter $(distrel),wheezy)) ++ export CC = gcc-4.7 ++ export CXX = g++-4.7 ++ GCJ_SUFFIX = -4.7 ++ ifneq (,$(filter $(DEB_HOST_ARCH), mips mipsel)) ++ export CC = gcc-4.4 ++ export CXX = g++-4.4 ++ endif ++ ifneq (,$(filter $(DEB_HOST_ARCH), m68k s390)) ++ GCJ_SUFFIX = -4.6 ++ endif ++else ifneq (,$(filter $(distrel),trusty)) ++ export CC = gcc-4.8 ++ export CXX = g++-4.8 ++ GCJ_SUFFIX = -4.8 ++else ifneq (,$(filter $(distrel),jessie)) ++ export CC = gcc-4.9 ++ export CXX = g++-4.9 ++ GCJ_SUFFIX = -4.9 ++else ifneq (,$(filter $(distrel),stretch xenial)) ++ export CC = gcc-5 ++ export CXX = g++-5 ++ GCJ_SUFFIX = -5 ++else ++ export CC = gcc-6 ++ export CXX = g++-6 ++ GCJ_SUFFIX = -6 ++endif ++ ++ifneq (,$(filter $(DEB_HOST_ARCH), armel armhf)) ++ifeq ($(derivative),Ubuntu) ++ ifneq (,$(filter $(distrel),jaunty)) ++ OPT_CFLAGS/cppInterpreter_arm.o = -O2 -falign-functions=32 -falign-loops=8 -g0 ++ else ++ OPT_CFLAGS/cppInterpreter_arm.o = -march=armv6 -mtune=cortex-a8 -O2 -falign-functions=64 -falign-loops=8 -g0 ++ endif ++else ++ OPT_CFLAGS/cppInterpreter_arm.o = -O2 -falign-functions=32 -falign-loops=8 -g0 ++endif ++export OPT_CFLAGS/cppInterpreter_arm.o ++endif ++ ++ifneq (,$(filter $(distrel),lenny jaunty intrepid hardy)) ++ with_bridge = ++else ifneq (,$(filter $(distrel),squeeze karmic lucid maverick natty oneiric)) ++ with_bridge = bridge ++ with_jni_bridge = yes ++else ++ with_bridge = atk ++endif ++ ++# FIXME: missing headers, and broken linkage ++# * Enable the SunEC security provider on distributions with NSS 3.16 and ++# shipping the blapi.h header. Addresses: #750400. ++ifeq (,$(filter $(distrel),squeeze wheezy sid lucid precise quantal raring saucy trusty)) ++# with_sunec = yes ++endif ++ ++ifneq (,$(filter $(distrel),squeeze wheezy jessie lucid precise trusty vivid wily)) ++ # use the timezone files from tzdata-java ++ with_tzdata = yes ++endif ++ ++on_buildd := $(shell [ -f /CurrentlyBuilding -o "$$LOGNAME" = buildd ] && echo yes) ++ ++ifeq (,$(filter $(distrel),squeeze wheezy lucid precise quantal raring saucy trusty)) ++ with_systemtap = yes ++endif ++ ++ifneq (,$(filter $(DEB_HOST_ARCH), arm64 sparc64)) ++ USE_PRECOMPILED_HEADER = 0 ++ export USE_PRECOMPILED_HEADER ++endif ++ ++DISTRIBUTION_PATCHES += \ ++ debian/patches/ld-symbolic-functions-$(hotspot_version).diff \ ++ debian/patches/shebang.diff \ ++ debian/patches/jexec.diff \ ++ debian/patches/icedtea-pretend-memory.diff \ ++ debian/patches/default-jvm-cfg-$(hotspot_version).diff \ ++ debian/patches/nonreparenting-wm.diff \ ++ debian/patches/accessible-toolkit.patch \ ++ debian/patches/fix_extra_flags-$(hotspot_version).diff \ ++ debian/patches/hotspot-aarch64-S8150652-unused-template.diff \ ++ debian/patches/hotspot-S8207151-fix-bad-klassoop.patch \ ++ ++ifeq ($(with_bridge),atk) ++ DISTRIBUTION_PATCHES += \ ++ debian/patches/atk-wrapper-security.patch ++else ifneq (,$(with_bridge)) ++ DISTRIBUTION_PATCHES += \ ++ debian/patches/java-access-bridge-security.patch ++endif ++ ++ifneq (,$(filter $(DEB_HOST_ARCH), s390)) ++ DISTRIBUTION_PATCHES += \ ++ debian/patches/hotspot-s390.diff \ ++ debian/patches/s390_hotspot_fix.diff ++endif ++ ++ifneq (,$(filter $(DEB_HOST_ARCH), sparc64)) ++ DISTRIBUTION_PATCHES += \ ++ debian/patches/sparc-libproc-fix.diff ++endif ++ ++DISTRIBUTION_PATCHES += \ ++ debian/patches/icedtea-override-redirect-compiz.patch \ ++ debian/patches/icedtea-4953367.patch \ ++ debian/patches/fontconfig-wqy-microhei.patch \ ++ debian/patches/icc_loading_with_symlink.diff \ ++ debian/patches/zero-fpu-control-is-noop.diff \ ++ debian/patches/libpcsclite-dlopen.diff \ ++ debian/patches/dnd-files.patch \ ++ debian/patches/jdk-bold-swing-fonts.patch \ ++ debian/patches/javadoc-sort-enum-and-annotation-types.patch \ ++ debian/patches/jdk-getAccessibleValue.diff \ ++ debian/patches/jdk-8132985-backport-double-free.patch \ ++ debian/patches/jdk-8139803-backport-warning.patch \ ++ ++ifeq (,$(filter $(DEB_HOST_ARCH),arm64)) ++ DISTRIBUTION_PATCHES += \ ++ debian/patches/no-pch-build.diff \ ++ debian/patches/text-relocations.diff \ ++ debian/patches/hotspot-sparc-arch.diff \ ++ debian/patches/hotspot-no-march-i586.diff \ ++ debian/patches/zero-opt.diff \ ++ debian/patches/hotspot-mips-align.diff \ ++ debian/patches/zero-x32.diff \ ++ debian/patches/zero-sparc.diff ++endif ++ ++ifeq (,$(filter $(distrel),lenny squeeze oneiric natty maverick lucid jaunty intrepid hardy)) ++ DISTRIBUTION_PATCHES += \ ++ debian/patches/fontconfig-korean-nanum.diff \ ++ debian/patches/fontconfig-japanese.diff ++endif ++ ++DISTRIBUTION_PATCHES += $(core_fonts_dejavu_patch) ++ ++# debian/patches/sparc-inline.diff \ ++# debian/patches/pkcs11-secmod-debug.diff \ ++ ++DISTRIBUTION_PATCHES += \ ++ debian/patches/hotspot-libpath-$(hotspot_version).diff ++ ++# debian/patches/hotspot-warn-no-errformat.diff \ ++ ++DISTRIBUTION_PATCHES += \ ++ debian/patches/jdk-pulseaudio.diff ++ ++ifneq (,$(filter $(DEB_HOST_ARCH), alpha)) ++ DISTRIBUTION_BOOT_PATCHES += \ ++ debian/patches/alpha-float-const.diff ++endif ++ ++ifneq (,$(filter $(DEB_HOST_ARCH), kfreebsd-amd64 kfreebsd-i386)) ++ DISTRIBUTION_PATCHES += \ ++ debian/patches/kfreebsd-support-jdk.diff \ ++ debian/patches/kfreebsd-support-hotspot.diff \ ++ debian/patches/kfreebsd-support-corba.diff ++ ++ ifeq (,$(filter noaltjamvm, $(DEB_BUILD_OPTIONS))) ++ ifneq (,$(filter $(DEB_HOST_ARCH), $(jamvm_archs))) ++ DISTRIBUTION_PATCHES += debian/patches/kfreebsd-support-jamvm.diff ++ endif ++ endif ++endif ++ ++# openjdk 7u191-b01 security update ++DISTRIBUTION_PATCHES += \ ++ debian/patches/openjdk-jdk7u191-b01-jaxp.patch \ ++ debian/patches/openjdk-jdk7u191-b01-jdk.patch ++ ++# openjdk 7u201-b00 security update ++DISTRIBUTION_PATCHES += \ ++ debian/patches/openjdk-jdk7u201-b00-hotspot.patch \ ++ debian/patches/openjdk-jdk7u201-b00-jaxp.patch \ ++ debian/patches/openjdk-jdk7u201-b00-jdk.patch ++ ++export DISTRIBUTION_PATCHES DISTRIBUTION_BOOT_PATCHES ++ ++ifeq ($(STAGE1_JAVA),gcj) ++ CONFIGURE_ARGS = \ ++ --with-jdk-home=$(STAGE1_HOME) \ ++ --with-ecj-jar=$(STAGE1_HOME)/lib/ecj.jar \ ++ --with-javac=$(STAGE1_HOME)/bin/javac \ ++ --with-java=$(STAGE1_HOME)/bin/java \ ++ --with-javah=$(STAGE1_HOME)/bin/javah \ ++ --with-rmic=$(STAGE1_HOME)/bin/rmic ++ ifeq (,$(filter ia64, $(DEB_HOST_ARCH))) ++ CONFIGURE_ARGS += \ ++ --with-jar=/usr/bin/fastjar ++ endif ++ build_target = #icedtea-against-icedtea ++else ifeq ($(STAGE1_JAVA),openjdk) ++ CONFIGURE_ARGS = \ ++ --with-jdk-home=$(STAGE1_HOME) --disable-bootstrap ++ build_target = #icedtea-against-icedtea ++endif ++ ++# GNU/kFreeBSD don't support epoll syscall so don't try to check of it. ++ifneq (,$(filter $(DEB_HOST_ARCH), kfreebsd-amd64 kfreebsd-i386)) ++ CONFIGURE_ARGS += --disable-compile-against-syscalls ++endif ++ ++CONFIGURE_ARGS += --with-pkgversion="$(DEB_VERSION)" ++ ++# there are problems --with-alt-jar=/usr/bin/fastjar, ++# see http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=217 ++# only use it for zero ports except powerpc (which we assume as ++# fast enough to build. ++ifeq (,$(filter $(DEB_HOST_ARCH), $(hotspot_archs) ia64 powerpc powerpcspe ppc64 ppc64el)) ++ CONFIGURE_ARGS += --with-alt-jar=/usr/bin/fastjar ++endif ++ ++CONFIGURE_ARGS += \ ++ --with-rhino=/usr/share/java/js.jar ++ ++CONFIGURE_ARGS += \ ++ --disable-downloading \ ++ --with-openjdk-src-zip=$(CURDIR)/openjdk.tar.bz2 \ ++ --with-hotspot-src-zip=$(CURDIR)/hotspot.tar.bz2 \ ++ --with-corba-src-zip=$(CURDIR)/corba.tar.bz2 \ ++ --with-jaxp-src-zip=$(CURDIR)/jaxp.tar.bz2 \ ++ --with-jaxws-src-zip=$(CURDIR)/jaxws.tar.bz2 \ ++ --with-jdk-src-zip=$(CURDIR)/jdk.tar.bz2 \ ++ --with-langtools-src-zip=$(CURDIR)/langtools.tar.bz2 ++ ++ifneq (,$(filter $(DEB_HOST_ARCH), armel armhf)) ++ CONFIGURE_ARGS += \ ++ --disable-arm32-jit ++ #CONFIGURE_ARGS += \ ++ --enable-arm32-jit ++endif ++ ++# Only Linux has libsctp-dev currently ++ifeq (,$(filter $(DEB_HOST_ARCH_OS), linux)) ++ CONFIGURE_ARGS += \ ++ --disable-system-sctp ++endif ++ ++ifneq (,$(filter $(DEB_HOST_ARCH), $(jamvm_archs))) ++ CONFIGURE_ARGS += \ ++ --with-jamvm-src-zip=$(firstword $(wildcard $(CURDIR)/jamvm-*.tar.* /usr/src/jamvm-*.tar.*)) ++endif ++ ++ifeq (,$(filter $(DEB_HOST_ARCH), $(hotspot_archs))) ++ CONFIGURE_ARGS += --enable-zero ++ ifneq (,$(filter $(DEB_HOST_ARCH), $(shark_archs))) ++ CONFIGURE_ARGS += --enable-shark ++ endif ++endif ++ ++EXTRA_BUILD_ENV += LIBFFI_LIBS=-lffi_pic ++ ++ifeq (,$(wildcard /usr/lib/*/pkgconfig/zlib.pc /usr/lib/pkgconfig/zlib.pc)) ++ export ZLIB_CFLAGS = $(SPACE) ++ export ZLIB_LIBS = -lz ++endif ++ ++ifneq (,$(filter $(distrel),squeeze lenny maverick lucid karmic hardy)) ++ CONFIGURE_ARGS += --disable-system-gio --disable-system-gconf ++endif ++ ++# assume we don't build binary indep packages on these architectures ++# building these with zero is slow and seems to break from time to time. ++ifeq ($(with_docs),yes) ++ ifeq (,$(filter $(DEB_HOST_ARCH), amd64 i386 arm64 ppc64 ppc64el)) ++ CONFIGURE_ARGS += --disable-docs ++ endif ++else ++ CONFIGURE_ARGS += --disable-docs ++endif ++ ++ifneq (,$(NJOBS)) ++ CONFIGURE_ARGS += --with-parallel-jobs=$(NJOBS) ++endif ++ ++# causes corrupt bold fonts in 2.5.0 ++CONFIGURE_ARGS += --disable-infinality ++ ++CONFIGURE_ARGS += --enable-system-lcms ++ ++CONFIGURE_ARGS += --enable-system-kerberos ++CONFIGURE_ARGS += --enable-system-pcsc ++ ++CONFIGURE_ARGS += --enable-nss ++ifeq ($(with_sunec),yes) ++ CONFIGURE_ARGS += --enable-sunec ++endif ++ ++ifneq (,$(alternate_vms)) ++ CONFIGURE_ARGS += --with-additional-vms=$(subst $(SPACE),$(COMMA),$(alternate_vms)) ++endif ++ ++CONFIGURE_ARGS += --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) ++ ++# (most) jre and jdk tools handled by the alternatives system. ++# dups in heimdal-clients, krb5-user: kinit, klist, ktab, no alternatives ++# use javaws from icedtea-netx ++all_jre_tools = $(filter-out javaws, $(notdir $(wildcard build/$(jreimg)/bin/*))) ++jre_tools = $(filter policytool, $(all_jre_tools)) ++jre_hl_tools := $(filter-out $(jre_tools), $(all_jre_tools)) ++ ++corba_tools = orbd servertool tnameserv ++jre_hl_tools_alt= $(filter-out $(corba_tools), $(jre_hl_tools)) $(corba_tools) ++jre_tools_alt = $(filter-out kinit klist ktab, $(jre_tools)) ++ ++all_jdk_tools = $(filter-out javaws, $(notdir $(wildcard build/$(sdkimg)/bin/*))) ++jdk_tools = $(filter-out $(all_jre_tools), $(all_jdk_tools)) ++jdk_tools_alt = $(filter-out apt java-rmi.cgi, $(jdk_tools)) ++ ++# build dependencies ++# This section should be in sync with "GCJ_SUFFIX" definition ++bd_bootstrap = ++ifneq (,$(stage1_gcj_archs)) ++ bd_bootstrap += \ ++ ecj-gcj [$(strip $(foreach a,$(stage1_gcj_archs), $(a)))], ++ ifneq (,$(filter $(distrel),wheezy)) ++ stage1_gcj_default_archs = $(filter-out ia64, $(stage1_gcj_archs)) ++ bd_bootstrap += \ ++ gcj-jdk [$(strip $(foreach a,$(stage1_gcj_default_archs), $(a)))], \ ++ gcj-4.7-jdk [ia64], ++ else ++ bd_bootstrap += \ ++ gcj-jdk [$(strip $(foreach a,$(stage1_gcj_archs), $(a)))], ++ endif ++endif ++ifneq (,$(stage1_openjdk_archs)) ++ bd_bootstrap += \ ++ openjdk-7-jdk (>= $(req_openjdk_bd_ver)) [$(strip $(foreach a,$(stage1_openjdk_archs), $(a)))], ++endif ++ ++# This section should be in sync with "CC/CXX" definition ++ifneq (,$(filter $(distrel),wheezy)) ++ export CC = gcc-4.7 ++ export CXX = g++-4.7 ++ GCJ_SUFFIX = -4.7 ++ bd_gcc = g++-4.7, ++ ifneq (,$(filter $(DEB_HOST_ARCH), mips mipsel)) ++ export CC = gcc-4.4 ++ export CXX = g++-4.4 ++ endif ++ ifneq (,$(filter $(DEB_HOST_ARCH), m68k s390)) ++ GCJ_SUFFIX = -4.6 ++ endif ++else ifneq (,$(filter $(distrel),trusty)) ++ bd_gcc = g++-4.8, ++else ifneq (,$(filter $(distrel), jessie)) ++ bd_gcc = g++-4.9, ++else ifneq (,$(filter $(distrel), stretch xenial)) ++ bd_gcc = g++-5, ++else ++ bd_gcc = g++-6, ++endif ++bd_syslibs = \ ++ zlib1g-dev, libattr1-dev, libpng-dev, libjpeg-dev, libgif-dev, ++bd_syslibs += \ ++ libsctp-dev [linux-any], ++bd_openjdk = \ ++ libxtst-dev, libxi-dev, libxt-dev, libxaw7-dev, libxrender-dev, \ ++ libasound2-dev, libfreetype6-dev (>= 2.2.1), libgtk2.0-dev, \ ++ liblcms2-dev, libxinerama-dev, libkrb5-dev, xsltproc, \ ++ libcups2-dev, libpcsclite-dev, librhino-java (>= 1.7R3~), ++ ++# dpkg-query's source:Package/source:Version requires 1.16.2+ version ++rhino_source := $(shell dpkg-query -f '$${source:Package} (= $${source:Version}), ' -W librhino-java) ++ ++pkg_ffidev = $(if $(filter $(derivative),Ubuntu),$(if $(filter $(distrel),hardy),libffi4-dev,libffi-dev),libffi-dev) ++ ++bd_zero = \ ++ $(pkg_ffidev) [$(foreach a,$(hotspot_archs),!$(a))], ++bd_zero = \ ++ $(pkg_ffidev), ++ ++ifneq (,$(shark_archs)) ++ bd_zero = $(pkg_ffidev), ++ ifneq (,$(filter $(distrel),lucid)) ++ bd_shark = llvm-dev (>= 2.7) [$(foreach a,$(shark_archs) $(altshark_archs),$(a))], ++ bd_shark += oprofile [$(foreach a,$(shark_archs) $(altshark_archs),$(a))], ++ else ifneq (,$(filter $(distrel),karmic)) ++ bd_shark = llvm-dev (>= 2.6) [$(foreach a,$(shark_archs) $(altshark_archs),$(a))], ++ else ++ ifneq (,$(filter $(distrel),squeeze maverick natty)) ++ llvm_suffix = -2.7 ++ else ifneq (,$(filter $(distrel),oneirc precise)) ++ llvm_suffix = -2.9 ++ else ++ llvm_suffix = -3.0 ++ endif ++ bd_shark = llvm$(llvm_suffix)-dev [$(foreach a,$(shark_archs) $(altshark_archs),$(a))], ++ ifneq (,$(filter $(DEB_HOST_ARCH),$(shark_archs) $(altshark_archs))) ++ CONFIGURE_ARGS += --with-llvm-config=llvm-config$(llvm_suffix) ++ endif ++ endif ++endif ++ ++ifneq (,$(filter $(distrel),wheezy)) ++ bd_nss = libnss3-dev (>= 2:3.12.3), ++else ++ bd_nss = libnss3-dev (>= 2:3.17.1), ++endif ++ifeq ($(with_systemtap),yes) ++ bd_systemtap = systemtap-sdt-dev, ++endif ++ ++ifneq (,$(jamvm_archs)) ++ bd_jamvm = libtool, ++endif ++ ++dlopen_hl_depends = libcups2, liblcms2-2, ++ifneq (,$(filter $(distrel),wheezy)) ++ dlopen_hl_depends += libjpeg8, ++else ifeq ($(derivative),Ubuntu) ++ dlopen_hl_depends += libjpeg-turbo8, ++else ++ dlopen_hl_depends += libjpeg62-turbo, ++endif ++ifneq (,$(filter $(distrel),wheezy)) ++ dlopen_hl_depends += libnss3 (>= 2:3.12.3) ++else ++ dlopen_hl_depends += libnss3 (>= 2:3.17.1) ++endif ++dlopen_hl_recommends = ++dlopen_jre_depends = \ ++ libglib2.0-0 (>= 2.24), libgtk2.0-0 (>= 2.14), libxrandr2, libxinerama1, libgl1-mesa-glx | libgl1 ++dlopen_jre_recommends = ++ ++plugin_name = IcedTeaPlugin.so ++browser_plugin_dirs = mozilla ++ ++# .desktop files need to be multiarch installable ++java_launcher = /$(basedir)/bin/java ++java_launcher = /usr/bin/java ++ifeq ($(derivative),Ubuntu) ++ ifeq (,$(filter $(distrel),karmic jaunty intrepid hardy)) ++ java_launcher = cautious-launcher %f /$(basedir)/bin/java ++ java_launcher = cautious-launcher %f /usr/bin/java ++ endif ++endif ++ ++ifneq (,$(filter $(distrel),wheezy precise)) ++ core_fonts = ttf-dejavu-extra ++else ++ core_fonts = fonts-dejavu-extra ++ core_fonts_dejavu_patch = debian/patches/fontconfig-dejavu.diff ++endif ++cfk_fonts = fonts-nanum, ++cjk_fonts += fonts-ipafont-gothic, fonts-ipafont-mincho, ++# FIXME: find out why this b-d is needed, the fontconfig compiler fails without it ++bd_openjdk += fonts-ipafont-mincho, ++ifneq (,$(filter $(distrel), wheezy)) ++ cjk_fonts += ttf-wqy-microhei, ttf-wqy-zenhei, ++else ++ cjk_fonts += fonts-wqy-microhei, fonts-wqy-zenhei, ++endif ++ifneq (,$(filter $(distrel), trusty)) ++ cjk_fonts += ttf-indic-fonts, ++else ++ cjk_fonts += fonts-indic, ++endif ++ ++p_jre = $(basename)-jre ++p_jrehl = $(basename)-jre-headless ++p_jrec = icedtea-$(shortver)-jre-cacao ++p_jrej = icedtea-$(shortver)-jre-jamvm ++p_jrez = $(basename)-jre-zero ++p_lib = $(basename)-jre-lib ++p_lib = $(p_jrehl) ++p_jdk = $(basename)-jdk ++p_demo = $(basename)-demo ++p_src = $(basename)-source ++p_doc = $(basename)-doc ++p_dbg = $(basename)-dbg ++ ++d = debian/tmp ++d_jre = debian/$(p_jre) ++d_jrehl = debian/$(p_jrehl) ++d_jrej = debian/$(p_jrej) ++d_jrez = debian/$(p_jrez) ++d_lib = debian/$(p_lib) ++d_jdk = debian/$(p_jdk) ++d_demo = debian/$(p_demo) ++d_src = debian/$(p_src) ++d_doc = debian/$(p_doc) ++d_dbg = debian/$(p_dbg) ++ ++ifeq ($(derivative),Ubuntu) ++ p_tst = $(basename)-tests ++ d_tst = debian/$(p_tst) ++else ++ d_tst = $(d_jdk) ++endif ++ ++control_vars = \ ++ '-Vvm:Name=$(vm_name)' \ ++ '-Vbase:Version=$(req_openjdk_ver)' \ ++ '-Vdlopenhl:Depends=$(dlopen_hl_depends)' \ ++ '-Vdlopenhl:Recommends=$(dlopen_hl_recommends)' \ ++ '-Vdlopenjre:Depends=$(dlopen_jre_depends)' \ ++ '-Vdlopenjre:Recommends=$(dlopen_jre_recommends)' \ ++ '-Vpkg:pulseaudio=$(pkg_pulseaudio)' \ ++ '-Vxulrunner:Depends=$(xulrunner_depends)' \ ++ ++ifneq (,$(DEB_HOST_MULTIARCH)) ++ control_vars += \ ++ '-Vmultiarch:Conflicts=icedtea-netx (<< 1.1.1-2~)' ++endif ++ ++ifneq (,$(filter $(distrel),precise quantal raring saucy)) ++ control_vars += '-Vnetx:Breaks=icedtea-netx (<< 1.2.3-0ubuntu0.12.04.3)' ++#else ifneq (,$(filter $(distrel),lucid)) ++# control_vars += '-Vnetx:Breaks=icedtea-netx (<< FIXME)' ++#else ifneq (,$(filter $(distrel),squeeze)) ++# control_vars += '-Vnetx:Breaks=icedtea-netx (<< FIXME)' ++else ++ control_vars += '-Vnetx:Breaks=icedtea-netx (<< 1.4-2)' ++endif ++ ++ifneq (,$(filter $(DEB_HOST_ARCH),$(jamvm_archs))) ++ ifneq (,$(filter $(DEB_HOST_ARCH),$(hotspot_archs))) ++ control_vars += '-Vjamvm:Suggests=$(p_jrej) (= $${binary:Version})' ++ else ++ control_vars += '-Vjamvm:Recommends=$(p_jrej) (= $${binary:Version})' ++ endif ++endif ++ ++ifeq ($(with_bridge),atk) ++ control_vars += '-Vdep:bridge=libatk-wrapper-java-jni (>= 0.30.4-0ubuntu2)' ++else ifeq ($(with_bridge),yes) ++ ifneq (,$(DEB_HOST_MULTIARCH)) ++ control_vars += '-Vdep:bridge=libaccess-bridge-java-jni (>= 1.26.2-6)' ++ else ifeq ($(with_jni_bridge),yes) ++ control_vars += '-Vdep:bridge=libaccess-bridge-java-jni' ++ else ++ control_vars += '-Vdep:bridge=libaccess-bridge-java' ++ endif ++endif ++ ++ifeq (,$(filter $(DEB_HOST_ARCH), $(hotspot_archs))) ++ ifneq (,$(filter $(DEB_HOST_ARCH), $(shark_archs))) ++ control_vars += '-Vdefaultvm:Provides=$(p_jre)-zero, $(p_jre)-shark' ++ else ++ control_vars += '-Vdefaultvm:Provides=$(p_jre)-zero' ++ endif ++endif ++ifneq (,$(filter $(DEB_HOST_ARCH), $(shark_archs) $(altshark_archs))) ++ control_vars += '-Vzerovm:Provides=$(p_jre)-shark' ++endif ++ ++ifneq (,$(filter $(distrel),lenny jaunty intrepid hardy)) ++ control_vars += '-Vjvm:Provides=java-virtual-machine' ++endif ++ ++ifeq (,$(filter $(distrel), lenny)) ++ pkg_certs = ca-certificates-java ++endif ++control_vars += '-Vcacert:Depends=$(pkg_certs)' ++ ++ifeq ($(with_tzdata),yes) ++ pkg_tzdata = tzdata-java ++ ifneq (,$(filter $(distrel), precise)) ++ pkg_tzdata += (>= 2012e-0ubuntu0.12.04.1) ++ endif ++endif ++control_vars += '-Vtzdata:Depends=$(pkg_tzdata)' ++ ++ifneq (,$(filter $(distrel), squeeze wheezy jessie lucid precise quantal raring saucy trusty utopic vivid)) ++ control_vars += '-Vmountpoint:Depends=initscripts' ++else ++ control_vars += '-Vmountpoint:Depends=util-linux (>= 2.26.2-4)' ++endif ++ ++pkg_jcommon = java-common (>= 0.28) ++control_vars += '-Vjcommon:Depends=$(pkg_jcommon)' ++ ++ifneq (,$(rhino_source)) ++ control_vars += "-Vrhino:Source=$(rhino_source)" ++endif ++ ++debian/control: debian/control.in debian/rules ++ @cp -p debian/control debian/control.old ++ sed \ ++ -e 's/@basename@/$(basename)/g' \ ++ -e 's/@bd_bootstrap@/$(bd_bootstrap)/g' \ ++ -e 's/@bd_openjdk@/$(bd_openjdk)/g' \ ++ -e 's/@bd_zero@/$(bd_zero)/g' \ ++ -e 's/@bd_gcc@/$(bd_gcc)/g' \ ++ -e 's/@bd_syslibs@/$(bd_syslibs)/g' \ ++ -e 's/@bd_jamvm@/$(bd_jamvm)/g' \ ++ -e 's/@bd_nss@/$(bd_nss)/g' \ ++ -e 's/@bd_systemtap@/$(bd_systemtap)/g' \ ++ -e 's/@bd_shark@/$(bd_shark)/g' \ ++ -e 's/@core_fonts@/$(core_fonts)/g' \ ++ -e 's/@cjk_fonts@/$(cjk_fonts)/g' \ ++ -e 's/@any_archs@/$(any_archs)/g' \ ++ -e 's/@jamvm_archs@/$(jamvm_archs)/g' \ ++ -e 's/@hotspot_archs@/$(hotspot_archs)/g' \ ++ -e 's/@altzero_archs@/$(altzero_archs)/g' \ ++ -e 's/@lib_arch@/$(p_lib_arch)/g' \ ++ debian/control.in \ ++ $(if $(transitional_cacao_pkg), debian/control.cacao-trans) \ ++ $(if $(jamvm_archs), debian/control.jamvm-jre) \ ++ $(if $(altzero_archs), debian/control.zero-jre) \ ++ $(if $(p_tst), debian/control.tests) \ ++ $(if $(DEB_HOST_MULTIARCH),,| grep -v '^Multi-Arch') \ ++ $(if $(rhino_source),,| grep -v '^Built-Using') \ ++ > debian/control ++ @if cmp -s debian/control debian/control.old; then \ ++ rm -f debian/control.old; \ ++ else \ ++ diff -u debian/control.old debian/control | wdiff -d -; \ ++ echo "debian/control did change, please restart the build"; \ ++ rm -f debian/control.old; \ ++ exit 1; \ ++ fi ++ ++packaging-files: ++ for f in debian/*.in debian/patches/*.in; do \ ++ case "$$f" in debian/control.in) continue; esac; \ ++ f2=$$(echo $$f | sed 's/JB/$(basename)/;s/\.in$$//'); \ ++ sed -e 's/@JRE@/$(p_jre)/g' \ ++ -e 's/@JDK@/$(p_jdk)/g' \ ++ -e 's/@vendor@/$(Vendor)/g' \ ++ -e 's/@RELEASE@/$(shortver)/g' \ ++ -e 's/@basename@/$(basename)/g' \ ++ -e 's,@TOP@,$(TOP),g' \ ++ -e 's,@basedir@,$(basedir),g' \ ++ -e 's,@etcdir@,$(etcdir),g' \ ++ -e 's,@jdiralias@,$(jdiralias),g' \ ++ -e 's,@jdirname@,$(jdirname),g' \ ++ -e 's/@srcname@/$(srcname)/g' \ ++ -e 's/@jvmarch@/$(jvmarch)/g' \ ++ -e 's/@archdir@/$(archdir)/g' \ ++ -e 's/@tag@/$(tag)/g' \ ++ -e 's/@priority@/$(priority)/g' \ ++ -e 's/@mantag@/$(mantag)/g' \ ++ -e 's/@multiarch@/$(DEB_HOST_MULTIARCH)/g' \ ++ -e 's/@jre_hl_tools@/$(jre_hl_tools_alt)/g' \ ++ -e 's/@jre_tools@/$(jre_tools_alt)/g' \ ++ -e 's/@jdk_tools@/$(jdk_tools_alt)/g' \ ++ -e 's/@corba_tools@/$(corba_tools)/g' \ ++ -e 's,@j2se_lib@,$(j2se_lib),g' \ ++ -e 's,@j2se_share@,$(j2se_share),g' \ ++ -e 's,@java_launcher@,$(java_launcher),g' \ ++ -e 's,@with_tzdata@,$(with_tzdata),g' \ ++ -e 's/@cjk_fonts@/$(cjk_fonts)/g' \ ++ $$f > $$f2; \ ++ done ++ifneq (,$(filter $(DEB_HOST_ARCH), i386)) ++# not yet in OpenJDK ++# cat debian/$(p_jre)-i586.menu >> $(d_jre).menu ++ rm -f debian/$(p_jre)-i586.menu ++endif ++ ++icedtea-configure: stamps/icedtea-configure ++stamps/icedtea-configure: ++ -cat /etc/hosts ++ ++ mkdir -p bin ++ifeq (,$(filter $(DEB_HOST_ARCH), alpha amd64 arm64 hppa mips64 mips64el ppc64 ppc64el s390x sparc64 x32)) ++ ( \ ++ echo '#! /bin/sh'; \ ++ echo 'if [ -x /usr/bin/linux32 ]; then'; \ ++ echo ' exec /usr/bin/linux32 /bin/uname "$$@"'; \ ++ echo 'else'; \ ++ echo ' exec /bin/uname "$$@"'; \ ++ echo 'fi'; \ ++ ) > bin/uname ++ chmod +x bin/uname ++ echo "UNAME checks" ++ uname -a ++endif ++ /bin/uname -a ++ cat /etc/os-release ++ ++ -cat /proc/sys/kernel/random/entropy_avail ++ ++ mkdir -p stamps ++ mkdir -p build ++ dh_autoreconf ./autogen.sh ++ sed -i "s:/usr/lib/jvm/java-1.7.0-openjdk\.x86_64:/usr/lib/jvm/java-1.7.0-openjdk.x86_64 /usr/lib/jvm/java-1.7.0-openjdk-amd64 /usr/lib/jvm/java-1.7.0-openjdk-$(DEB_HOST_ARCH) /usr/lib/jvm/default-java:" configure ++ cd build && $(EXTRA_BUILD_ENV) ../configure $(CONFIGURE_ARGS) ++ ++ touch $@ ++ ++unpack: stamps/unpack ++stamps/unpack: stamps/icedtea-configure ++ $(MAKE) -f debian/rules packaging-files ++ ++ touch $@ ++ ++stamps/sound-configure: stamps/build ++ rm -rf build/icedtea-sound ++ mkdir -p build/icedtea-sound ++ tar -xf icedtea-sound-*.tar.xz -C build/icedtea-sound --strip-components=1 ++# cd icedtea-sound && ./autogen.sh ++ cd build/icedtea-sound && ./configure \ ++ --disable-maintainer-mode \ ++ --with-jdk-home=$(CURDIR)/build/$(sdkimg) \ ++ CPPFLAGS="$(EXTRA_CPPFLAGS_IT)" \ ++ CFLAGS="$(EXTRA_CFLAGS_IT)" \ ++ CXXFLAGS="$(EXTRA_CXXFLAGS_IT)" \ ++ LDFLAGS="$(EXTRA_LDFLAGS_IT)" ++ touch $@ ++ ++stamps/sound-build: stamps/sound-configure ++ $(MAKE) -C build/icedtea-sound ++ touch $@ ++ ++dist-openjdk: $(OPENJDK_SRC_ZIP) ++ @echo "downloading openjdk source from hg to create zipfile: $(OPENJDK_SRC_ZIP)" ++ $(MAKE) -C build $@ ++ ++patch: stamps/patch ++stamps/patch: stamps/unpack ++ifeq ($(STAGE1_JAVA),gcj) ++ $(MAKE) -C build patch-boot ++endif ++ $(MAKE) -C build patch ++ touch $@ ++ ++ifeq ($(with_check),yes) ++ ifneq (,$(filter $(DEB_HOST_ARCH), $(hotspot_archs) alpha ia64 mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el s390 sh4)) ++ with_mauve_check = $(default_vm) ++ endif ++ ifneq (,$(filter $(DEB_HOST_ARCH), $(hotspot_archs) alpha arm64 armel armhf ia64 mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el s390 s390x sh4 x32)) ++ with_jtreg_check = $(default_vm) ++ endif ++ ++ ifneq (,$(filter jamvm, $(alternate_vms))) ++ ifneq (,$(filter $(DEB_HOST_ARCH), amd64 )) ++ # only activate after testing ++ with_mauve_check += jamvm ++ endif ++ ifneq (,$(filter $(DEB_HOST_ARCH), amd64 i386)) ++ # only activate after testing; hangs several tests. ++ with_jtreg_check += jamvm ++ endif ++ endif ++ ++ ifneq (,$(filter shark, $(alternate_vms))) ++ ifneq (,$(filter $(DEB_HOST_ARCH), amd64 i386 powerpc powerpcspe)) ++ # only activate after testing ++ with_mauve_check += $(if $(filter $(DEB_HOST_ARCH),$(altshark_archs)),shark,zero) ++ endif ++ # shark hangs on ppc64 ++ ifneq (,$(filter $(DEB_HOST_ARCH), amd64 i386 powerpc powerpcspe)) ++ # only activate after testing; hangs several tests. ++ with_jtreg_check += $(if $(filter $(DEB_HOST_ARCH),$(altshark_archs)),shark,zero) ++ endif ++ endif ++ ++ ifneq (,$(filter zero, $(alternate_vms))) ++ ifneq (,$(filter $(DEB_HOST_ARCH), amd64 i386)) ++ # only activate after testing ++ with_mauve_check += zero ++ endif ++ ifneq (,$(filter $(DEB_HOST_ARCH), arm64 amd64 i386 ppc64el)) ++ # only activate after testing; hangs several tests. ++ with_jtreg_check += zero ++ endif ++ endif ++ ++ with_mauve_check = ++endif ++ ++JTREG_OPTIONS = -othervm ++ifneq (,$(filter $(DEB_HOST_ARCH), alpha armel armhf ia64 m68k mips mipsel mips64 mips64el powerpc powerpcspe ppc64 s390)) ++ JTREG_OPTIONS += -timeout:3 ++endif ++ifneq (,$(filter $(DEB_HOST_ARCH), armel armhf)) ++ JTREG_OPTIONS += -Xmx256M -vmoption:-Xmx256M ++endif ++ ++build_stamps = stamps/build stamps/sound-build ++build_stamps += stamps/mauve-check-default stamps/jtreg-check-default ++build_stamps += $(if $(filter jamvm, $(alternate_vms)),stamps/mauve-check-jamvm stamps/jtreg-check-jamvm) ++build_stamps += $(if $(filter zero, $(alternate_vms)),stamps/mauve-check-zero stamps/jtreg-check-zero) ++ifneq (,$(filter shark, $(alternate_vms))) ++ ifneq (,$(filter $(DEB_HOST_ARCH),$(altshark_archs))) ++ build_stamps += stamps/mauve-check-shark stamps/jtreg-check-shark ++ else ++ build_stamps += stamps/mauve-check-zero stamps/jtreg-check-zero ++ endif ++endif ++ ++pre-build: ++ifneq (,$(filter $(DEB_HOST_ARCH),s390)) ++ @echo explicitely fail the build for $(DEB_HOST_ARCH), patches not updated ++#else ifneq (,$(filter $(DEB_HOST_ARCH),armel)) ++# @echo explicitely fail the build for $(DEB_HOST_ARCH), ARM assembler interpreter not yet ported ++ false ++endif ++ ++build-arch: build ++build-indep: build ++build: pre-build $(build_stamps) ++ if [ -f buildwatch.pid ]; then \ ++ pid=$$(cat buildwatch.pid); \ ++ kill -1 $$pid || :; sleep 1; kill -9 $$pid || :; \ ++ fi ++ rm -f buildwatch.pid ++ ++stamps/build: stamps/patch ++ifneq (,$(filter $(DEB_HOST_ARCH), alpha arm armel armhf hppa arm64 ia64 m68k mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el s390 s390x sparc sparc64)) ++ sh -c 'sh debian/buildwatch.sh $(CURDIR)/build &' ++endif ++ if $(EXTRA_BUILD_ENV) $(MAKE) -C build $(build_target) $(EXTRA_MAKE_FLAGS); then \ ++ : ; \ ++ else \ ++ if [ -f buildwatch.pid ]; then \ ++ pid=$$(cat buildwatch.pid); \ ++ kill -1 $$pid || :; sleep 1; kill -9 $$pid || :; \ ++ fi; \ ++ false; \ ++ fi ++ ++ touch $@ ++ ++stamps/mauve-check-default: stamps/build ++ $(MAKE) -f debian/rules mauve-run-check VMNAME=$(default_vm) VMARGS= ++ touch $@ ++ ++stamps/mauve-check-jamvm: ++ $(MAKE) -f debian/rules mauve-run-check VMNAME=jamvm VMARGS='-vmarg -jamvm' ++ touch $@ ++ ++stamps/mauve-check-shark: ++ $(MAKE) -f debian/rules mauve-run-check VMNAME=shark VMARGS='-vmarg -shark' ++ touch $@ ++ ++stamps/mauve-check-zero: ++ $(MAKE) -f debian/rules mauve-run-check VMNAME=zero VMARGS='-vmarg -zero' ++ touch $@ ++ ++stamps/mauve-build: stamps/build ++ rm -rf build/mauve ++ mkdir -p build/mauve ++ifeq ($(with_mauve_check),yes) ++ tar -x -C build -f /usr/src/mauve.tar.gz ++ cd build/mauve \ ++ && aclocal \ ++ && automake \ ++ && autoconf \ ++ && PATH=$(CURDIR)/build/$(sdkimg)/bin:$$PATH \ ++ ./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) ++ PATH=$(CURDIR)/build/$(sdkimg)/bin:$$PATH $(MAKE) -C build/mauve ++endif ++ touch $@ ++ ++stamps/mauve-check: stamps/build stamps/mauve-build ++ ++mauve-run-check: ++ rm -rf build/mauve build/mauve-$(VMNAME) ++ifneq (,$(filter $(VMNAME), $(with_mauve_check))) ++ tar -x -C build -f /usr/src/mauve.tar.gz ++ mv build/mauve build/mauve-$(VMNAME) ++ cd build/mauve-$(VMNAME) \ ++ && aclocal \ ++ && automake \ ++ && autoconf \ ++ && PATH=$(CURDIR)/build/$(sdkimg)/bin:$$PATH ./configure \ ++ --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) ++ PATH=$(CURDIR)/build/$(sdkimg)/bin:$$PATH $(MAKE) -C build/mauve-$(VMNAME) ++ ++ if [ -f bin/my-xvfb-run ]; then \ ++ cd build/mauve-$(VMNAME) && \ ++ JAVA_HOME=$(CURDIR)/build/$(sdkimg) \ ++ PATH=$(CURDIR)/build/$(sdkimg)/bin:$$PATH \ ++ time /bin/sh $(CURDIR)/bin/my-xvfb-run java Harness \ ++ -vm $(CURDIR)/build/$(sdkimg)/bin/java \ ++ $(VMARGS) \ ++ -file $(CURDIR)/debian/mauve_tests \ ++ -timeout 30000 2>&1 \ ++ | tee mauve_output-$(VMNAME); \ ++ else \ ++ echo "mauve testsuite not run for this build (xvfb failures)" \ ++ > build/mauve-$(VMNAME)/mauve_output-$(VMNAME); \ ++ cat xvfb-run.log >> build/mauve-$(VMNAME)/mauve_output-$(VMNAME); \ ++ fi ++ @sleep 5 ++else ++ mkdir -p build/mauve-$(VMNAME) ++ echo "mauve testsuite not run for this build" \ ++ > build/mauve-$(VMNAME)/mauve_output-$(VMNAME) ++endif ++ ++stamps/jtreg-check-default: stamps/build ++ #FIXME: run full testsuite on hotspot supported systems, otherwise drop the slow jdk testsuite ++ $(MAKE) -f debian/rules jtreg-run-check VMNAME=$(default_vm) VMARGS= \ ++ $(if $(filter $(default_vm),hotspot),TEST_SUITES='hotspot langtools jdk',TEST_SUITES='hotspot langtools') ++ touch $@ ++ ++stamps/jtreg-check-jamvm: stamps/build ++ $(MAKE) -f debian/rules jtreg-run-check VMNAME=jamvm VMARGS='-vmoption:-jamvm' \ ++ TEST_SUITES='hotspot' ++ touch $@ ++ ++stamps/jtreg-check-shark: stamps/build ++ $(MAKE) -f debian/rules jtreg-run-check VMNAME=shark VMARGS='-vmoption:-shark' \ ++ TEST_SUITES='hotspot langtools' ++ touch $@ ++ ++stamps/jtreg-check-zero: stamps/build ++ $(MAKE) -f debian/rules jtreg-run-check VMNAME=zero VMARGS='-vmoption:-zero' \ ++ TEST_SUITES='hotspot' ++ touch $@ ++ ++jtreg-run-check: ++ mkdir -p build/test ++ifneq (,$(filter $(VMNAME), $(with_jtreg_check))) ++ if [ ! -f build/$(sdkimg)/jre/lib/security/java.security.install ]; then \ ++ fgrep -v 'sun.security.pkcs11' build/$(sdkimg)/jre/lib/security/java.security \ ++ > build/$(sdkimg)/jre/lib/security/java.security.test; \ ++ mv build/$(sdkimg)/jre/lib/security/java.security \ ++ build/$(sdkimg)/jre/lib/security/java.security.install; \ ++ mv build/$(sdkimg)/jre/lib/security/java.security.test \ ++ build/$(sdkimg)/jre/lib/security/java.security; \ ++ fi ++ ++ @echo "BEGIN jtreg" ++ /usr/bin/time -v $(MAKE) -C build -k jtregcheck SHELL="bash -x" \ ++ $(if $(TEST_SUITES),TEST_SUITES="$(TEST_SUITES)") \ ++ ICEDTEA_JTREG_OPTIONS="$(VMARGS) $(JTREG_OPTIONS)" \ ++ 2>&1 | tee build/test/jtreg_output-$(VMNAME) ++ @echo "END jtreg" ++ ++ if [ -f build/$(sdkimg)/jre/lib/security/java.security.install ]; then \ ++ mv build/$(sdkimg)/jre/lib/security/java.security.install \ ++ build/$(sdkimg)/jre/lib/security/java.security; \ ++ fi ++ ++ mkdir -p build/test/jtreg-$(VMNAME); ++ -mv -v build/test/check-hotspot.log \ ++ build/test/check-jdk.log \ ++ build/test/check-langtools.log \ ++ build/test/jtreg-summary.log \ ++ build/test/jdk \ ++ build/test/hotspot \ ++ build/test/langtools \ ++ build/test/jtreg-$(VMNAME) ++ ++ -for i in hotspot langtools jdk; do \ ++ for t in $$(egrep '^(FAILED|Error)' build/test/jtreg-$(VMNAME)/check-$$i.log | grep -v '^Error: Some tests failed' | sed 's/.* \(.*\)\.[^.][^.]*$$/\1/'); do \ ++ echo test/jtreg-$(VMNAME)/$$i/JTwork/$$t.jtr; \ ++ done; \ ++ done > build/test/failed_tests-$(VMNAME).list; \ ++ XZ_DEFAULTS=-9v tar -C build -c -J -f build/test/failed_tests-$(VMNAME).tar.xz -T build/test/failed_tests-$(VMNAME).list ++ ++ @echo "BEGIN jtreg-summary-$(VMNAME)" ++ -cat build/test/jtreg-$(VMNAME)/jtreg-summary.log ++ @echo "END jtreg-summary-$(VMNAME)" ++else ++ echo "jtreg harness not run for this build" > build/test/jtreg_output-$(VMNAME) ++endif ++ ++clean: debian-clean ++ dh_testdir ++ dh_testroot ++ rm -rf stamps build build-* ++ rm -rf autom4te.cache ++ rm -rf bin ++ rm -f jtreg_output* ++ rm -f buildwatch.pid ++ ++ dh_autoreconf_clean ++ dh_clean ++ ++debian-clean: ++ dh_testdir ++ dh_testroot ++ dh_prep ++ for f in debian/*.in debian/patches/*.in; do \ ++ f2=$$(echo $$f | sed 's/JB/$(basename)/;s/\.in$$//'); \ ++ case "$$f2" in debian/control) continue; esac; \ ++ rm -f $$f2; \ ++ done ++ rm -f debian/*.install debian/*.links debian/*.debhelper.log ++ ++lib_ext_dirs = common $(sort $(foreach arch,$(arch_map),$(firstword $(subst =,$(SPACE),$(arch))))) ++ifeq ($(derivative),Ubuntu) ++ lib_ext_dirs := $(filter-out arm hppa m68k mips% powerpcspe sh%, $(lib_ext_dirs)) ++else ++ lib_ext_dirs := $(filter-out arm hppa, $(lib_ext_dirs)) ++endif ++ ++install: packaging-files ++ dh_testdir ++ dh_testroot ++ dh_prep ++ rm -f debian/*.install debian/*.links ++ dh_installdirs ++ ++ : # install into temporary location ++ mkdir -p $(d)/$(basedir) ++ cp -a build/$(sdkimg)/* $(d)/$(basedir)/ ++ cp -a build/$(jreimg)/man $(d)/$(basedir)/jre/ ++ ++ cp build/icedtea-sound/icedtea-sound.jar $(d)/$(basedir)/jre/lib/ext/. ++ cp build/icedtea-sound/build/native/libicedtea-sound.so \ ++ $(d)/$(basedir)/jre/lib/$(archdir)/. ++ ++ chmod -R u+w $(d) ++ ++ : # use javaws from icedtea-netx ++ find $(d) -name 'javaws*' | xargs -r rm -f ++ ++ifeq (,$(filter $(distrel),lenny wheezy squeeze jessie sid lucid precise quantal raring saucy trusty utopic vivid)) ++ : # deprecated upstream ++ find $(d) -name 'apt*' | xargs -r rm -f ++endif ++ ++ : # install default jvm config file ++ cp debian/jvm.cfg-default $(d)/$(basedir)/jre/lib/$(archdir)/ ++ ++ : # add extra symlinks for header files ++ ln -sf linux/jni_md.h $(d)/$(basedir)/include/jni_md.h ++ ln -sf linux/jawt_md.h $(d)/$(basedir)/include/jawt_md.h ++ ++ifeq ($(with_tzdata),yes) ++ : # use the timezone files from tzdata-java ++ rm -rf $(d)/$(basedir)/jre/lib/zi ++endif ++ ++ : # compress manpages ++ find $(d)/$(basedir)/man $(d)/$(basedir)/jre/man -type f ! -type l \ ++ | xargs gzip -9v -n ++ ++ : # replace common files in jdk and jre by symlinks ++ @cd $(d)/$(basedir); \ ++ for i in `find jre -type f`; do \ ++ i2=$${i#jre/*}; \ ++ if [ -f $$i2 ]; then \ ++ if cmp -s $$i $$i2; then \ ++ : ; \ ++ else \ ++ echo "XXX: differing files"; \ ++ md5sum $$i $$i2; \ ++ fi; \ ++ else \ ++ continue; \ ++ fi; \ ++ d=$$(echo ./$$i2 | sed -r 's,[^/]+/,../,g;s,/[^/]+$$,,;s,\.\.$$,,'); \ ++ echo " symlink $$i2 -> $$d$$i"; \ ++ ln -sf $$d$$i $$i2; \ ++ done ++ ++ mkdir -p $(d)/$(etcdir)/security ++ mkdir -p $(d)/$(etcdir)/management ++ mkdir -p $(d)/$(etcdir)/images/cursors ++ ++ : # rename templates (comments only) to config files, ++ : # and move to /$(etcdir) ++ for i in \ ++ management/jmxremote.password \ ++ management/snmp.acl; \ ++ do \ ++ mv $(d)/$(basedir)/jre/lib/$$i.template $(d)/$(etcdir)/$$i; \ ++ done ++ ++ifeq ($(with_bridge),atk) ++ ifneq (,$(filter $(distrel),lenny wheezy squeeze jessie lucid precise quantal raring saucy trusty utopic vivid)) ++ cp -p debian/accessibility-atk.properties.disabled \ ++ $(d)/$(basedir)/jre/lib/accessibility.properties ++ else ++ cp -p debian/accessibility-atk.properties.enabled \ ++ $(d)/$(basedir)/jre/lib/accessibility.properties ++ endif ++else ++ cp -p debian/accessibility.properties $(d)/$(basedir)/jre/lib/ ++endif ++ cp -p debian/swing.properties $(d)/$(basedir)/jre/lib/ ++ ++ifneq (,$(pkg_certs)) ++ rm -f $(d)/$(basedir)/jre/lib/security/cacerts ++endif ++ ++ grep -v '^nssLibraryDirectory' $(d)/$(basedir)/jre/lib/security/nss.cfg \ ++ > $(d)/$(basedir)/jre/lib/security/nss.cfg.new ++ mv -f $(d)/$(basedir)/jre/lib/security/nss.cfg.new \ ++ $(d)/$(basedir)/jre/lib/security/nss.cfg ++ ++ : # move config files to $(etcdir) and symlink them. ++ for i in \ ++ accessibility.properties \ ++ calendars.properties \ ++ content-types.properties \ ++ images/cursors/cursors.properties \ ++ logging.properties \ ++ sound.properties \ ++ flavormap.properties \ ++ net.properties \ ++ psfontj2d.properties \ ++ psfont.properties.ja \ ++ swing.properties \ ++ tz.properties \ ++ management/jmxremote.access \ ++ management/management.properties \ ++ security/java.policy \ ++ security/java.security \ ++ $$([ -f $(d)/$(basedir)/jre/lib/security/nss.cfg ] && echo security/nss.cfg) \ ++ $(if $(findstring ca-cert,$(pkg_certs)),,security/cacerts) \ ++ security/blacklisted.certs; \ ++ do \ ++ mv $(d)/$(basedir)/jre/lib/$$i $(d)/$(etcdir)/$$i; \ ++ done ++ mv $(d)/$(basedir)/jre/lib/$(archdir)/jvm.cfg \ ++ $(d)/$(etcdir)/ ++ printf -- '-avian KNOWN\n' >> $(d)/$(etcdir)/jvm.cfg ++ printf -- '-dcevm KNOWN\n' >> $(d)/$(etcdir)/jvm.cfg ++ ++ mv $(d)/$(basedir)/jre/lib/fontconfig.Ubuntu.properties.src \ ++ $(d)/$(etcdir)/fontconfig.properties ++ ++ : # remove files which we do not want to distribute ++ rm -f $(d)/$(basedir)/jre/lib/fontconfig*.properties.src ++ rm -f $(d)/$(basedir)/jre/lib/fontconfig*.bfc ++ rm -f $(d)/$(basedir)/jre/lib/$(archdir)/*/classes.jsa ++ ++ : # remove empty directories ++ rmdir $(d)/$(basedir)/jre/lib/management ++ rmdir $(d)/$(basedir)/jre/lib/applet ++ ++ : # FIXME: fix, move and install tapset files ++ rm -rf $(d)/$(basedir)/tapset ++ ++ : # TODO: why do we provide a custom font.properties.ja? ++ : # cp -p debian/font.properties.ja $(d_jbin)/$(etcdir)/. ++# cp debian/font.properties.wgy_zenhai \ ++# $(d)/$(etcdir)/font.properties.ja ++ ++ ++ : # now move things to the packages. it is so ****** to create ++ : # .install files first. dh_movefiles did do the job perfectly ++ ++ rm -f debian/$(p_lib).install ++ : # $(p_jrehl).install / $(p_jre).install ++ ( \ ++ echo 'etc'; \ ++ echo '$(basedir)/jre/lib/jexec'; \ ++ echo '$(basedir)/jre/lib/rt.jar'; \ ++ echo '$(basedir)/jre/lib/security/policy/*/*_policy.jar'; \ ++ echo '$(basedir)/jre/man/ja'; \ ++ echo '$(basedir)/man/ja'; \ ++ echo '$(basedir)/bin/java-rmi.cgi'; \ ++ ) > debian/$(p_jrehl).install ++ifneq (,$(DEB_HOST_MULTIARCH)) ++ ( \ ++ echo '$(basedir)/jre/lib/meta-index'; \ ++ echo '$(basedir)/jre/lib/ext/meta-index'; \ ++ ) >> debian/$(p_jrehl).install ++endif ++ $(RM) debian/$(p_jre).install ++ ++ cd $(CURDIR)/$(d); \ ++ for i in $(basedir)/jre/{bin,man/man1,man/ja_JP.UTF-8/man1}/*; do \ ++ case "$$i" in \ ++ */policytool*) echo $$i >> ../$(p_jre).install;; \ ++ *) echo $$i >> ../$(p_jrehl).install; \ ++ esac; \ ++ done ++ ++ cd $(CURDIR)/$(d); \ ++ for i in $(basedir)/{bin,man/man1,man/ja_JP.UTF-8/man1}/*; do \ ++ [ -h $$i ] || continue; \ ++ case "$$i" in \ ++ */policytool*) echo $$i >> ../$(p_jre).install;; \ ++ *) echo $$i >> ../$(p_jrehl).install; \ ++ esac; \ ++ done; \ ++ ++ cd $(CURDIR)/$(d); \ ++ for i in $(basedir)/jre/lib/$(archdir)/*; do \ ++ case "$$i" in \ ++ */libjavagtk.so|*/libsplashscreen.so|*/libjsoundalsa.so|*/libpulse-java.so|*/xawt) echo $$i >> ../$(p_jre).install;; \ ++ */jamvm) echo $$i >> ../$(p_jrej).install;; \ ++ */zero|*/shark) echo $$i >> ../$(p_jrez).install;; \ ++ *) echo $$i >> ../$(p_jrehl).install; \ ++ esac; \ ++ done ++ ++ : # $(p_lib).install ++ ( \ ++ echo '$(basedir)/jre/ASSEMBLY_EXCEPTION $(commonbasedir)/jre/'; \ ++ echo '$(basedir)/jre/THIRD_PARTY_README $(commonbasedir)/jre/'; \ ++ cd $(d); \ ++ for i in $(basedir)/jre/lib/*; do \ ++ case "$$i" in \ ++ */$(archdir)|*/jexec|*/rt.jar|*/security$(if $(DEB_HOST_MULTIARCH),|*/meta-index)) \ ++ continue; \ ++ esac; \ ++ echo $$i $(commonbasedir)/jre/lib/; \ ++ done; \ ++ ) >> debian/$(p_lib).install ++ ++ : # $(p_jdk).install ++ ( \ ++ echo '$(basedir)/include'; \ ++ echo '$(basedir)/lib'; \ ++ echo '$(basedir)/LICENSE'; \ ++ echo '$(basedir)/ASSEMBLY_EXCEPTION'; \ ++ echo '$(basedir)/THIRD_PARTY_README'; \ ++ cd $(d); \ ++ for i in $(basedir)/{bin,man/man1,man/ja_JP.UTF-8/man1}/*; do \ ++ [ -h $$i -o "$$i" = $(basedir)/bin/java-rmi.cgi ] && continue; \ ++ echo $$i; \ ++ done; \ ++ ) > debian/$(p_jdk).install ++ ++ : # $(p_src).install ++ ( \ ++ echo '$(basedir)/src.zip $(TOP)/$(basename)/'; \ ++ ) > debian/$(p_src).install ++ ++ : # move demos and samples, create symlinks for $(p_demo) ++ mkdir -p $(d)/usr/share/doc/$(p_jrehl)/demo ++ for i in $(d)/$(basedir)/demo/*; do \ ++ b=$$(basename $$i); \ ++ case "$$i" in \ ++ */jvmti) \ ++ echo $(basedir)/demo/$$b usr/share/doc/$(p_jrehl)/demo/$$b >> $(d_demo).links;; \ ++ *) \ ++ mv $$i $(d)/usr/share/doc/$(p_jrehl)/demo/$$b; \ ++ echo usr/share/doc/$(p_jrehl)/demo/$$b $(basedir)/demo/$$b >> $(d_demo).links;; \ ++ esac; \ ++ done ++ mv $(d)/$(basedir)/sample $(d)/usr/share/doc/$(p_jrehl)/examples ++ echo usr/share/doc/$(p_jrehl)/examples $(basedir)/sample >> $(d_demo).links ++ echo usr/share/doc/$(p_jre) usr/share/doc/$(p_demo) >> $(d_demo).links ++ ++ : # $(p_demo).install ++ ( \ ++ echo '$(basedir)/demo'; \ ++ echo 'usr/share/doc/$(p_jrehl)/examples'; \ ++ echo 'usr/share/doc/$(p_jrehl)/demo'; \ ++ ) > debian/$(p_demo).install ++ ++ : # $(p_dbg).install ++ifneq (,$(wildcard $(d)/$(basedir)/jre/lib/$(archdir)/*/libjvm.diz)) ++ ( \ ++ echo '$(basedir)/jre/lib/$(archdir)/*/libjvm.diz'; \ ++ ) > debian/$(p_dbg).install ++endif ++ ++ dh_install --fail-missing -XLICENSE -Xrelease ++ ++ifneq (,$(DEB_HOST_MULTIARCH)) ++ rm -f $(d_lib)/$(commonbasedir)/jre/lib/ext/meta-index ++endif ++ ++ : # give all permissions to cross-VM extension directory ++ sed -i \ ++ -e '/permission java\.security\.AllPermission;/,/};/c\' \ ++ -e ' permission java.security.AllPermission;\' \ ++ -e '};\' \ ++ -e '\' \ ++ $(if $(DEB_HOST_MULTIARCH),$(foreach i, $(lib_ext_dirs), \ ++ -e 'grant codeBase "file:/$(TOP)/java-$(shortver)-$(origin)-$(i)/jre/lib/ext/*" {\' \ ++ -e ' permission java.security.AllPermission;\' \ ++ -e '};\')) \ ++ -e '\' \ ++ -e '// Comment this out if you want to give all permissions to the\' \ ++ -e '// Debian Java repository too:\' \ ++ -e '//grant codeBase "file:/usr/share/java/repository/-" {\' \ ++ -e '// permission java.security.AllPermission;\' \ ++ -e '//};\' \ ++ -e '' \ ++ $(d_jrehl)/$(security)/java.policy ++# 'make Emacs Makefile mode happy ++ ++ dh_installdirs -p$(p_jrehl) \ ++ usr/share/doc/$(p_jrehl) \ ++ usr/share/binfmts ++ ++ifneq (,$(p_tst)) ++ dh_installdirs -p$(p_tst) \ ++ usr/share/doc/$(p_jrehl)/test-$(DEB_HOST_ARCH) ++endif ++ ++ dh_installdirs -p$(p_jre) \ ++ usr/share/applications \ ++ usr/share/application-registry \ ++ usr/share/mime-info \ ++ usr/share/pixmaps ++ ++ : # add GNOME stuff ++ cp -p debian/$(basename)-policytool.desktop \ ++ $(d_jre)/usr/share/applications/ ++ifneq (,$(findstring cautious-launcher, $(java_launcher))) ++ cp -p debian/$(basename)-java.desktop \ ++ $(d_jre)/usr/share/applications/ ++endif ++ ++ for i in archive; do \ ++ cp debian/$(basename)-$$i.applications \ ++ $(d_jre)/usr/share/application-registry/; \ ++ cp debian/$(basename)-$$i.keys $(d_jre)/usr/share/mime-info/; \ ++ cp debian/$(basename)-$$i.mime $(d_jre)/usr/share/mime-info/; \ ++ done ++ ++ cp -p debian/sun_java.xpm \ ++ $(d_jre)/usr/share/pixmaps/$(basename).xpm ++ ++ mkdir -p $(d_demo)/usr/share/pixmaps ++ cp -p debian/sun_java_app.xpm \ ++ $(d_demo)/usr/share/pixmaps/$(basename)-app.xpm ++ ++ : # install icons ++ for i in 16 24 32 48; do \ ++ install -D -m 644 -p build/openjdk/jdk/src/solaris/classes/sun/awt/X11/java-icon$${i}.png \ ++ $(d_jre)/usr/share/icons/hicolor/$${i}x$${i}/apps/$(basename).png; \ ++ done ++ ++ : # create docdir symlinks for $(p_jrehl) ++ ( \ ++ echo usr/share/doc/$(p_jrehl) $(basedir)/docs; \ ++ ) > $(d_jrehl).links ++ifneq (,$(DEB_HOST_MULTIARCH)) ++ echo '/$(basedir) /usr/lib/jvm/$(jdirname)' >> $(d_jrehl).links ++endif ++ ( \ ++ echo $(basedir)/jre/lib/security/policy/unlimited/US_export_policy.jar $(basedir)/jre/lib/security/US_export_policy.jar; \ ++ echo $(basedir)/jre/lib/security/policy/unlimited/local_policy.jar $(basedir)/jre/lib/security/local_policy.jar; \ ++ ) >> $(d_jrehl).links ++ ++ : # create docdir symlinks for $(p_jre) ++ ( \ ++ echo usr/share/doc/$(p_jrehl) usr/share/doc/$(p_jre); \ ++ ) > $(d_jre).links ++ ++ifneq (,$(filter shark zero, $(alternate_vms))) ++ : # create docdir symlinks for $(p_jrez) ++ ( \ ++ echo usr/share/doc/$(p_jrehl) usr/share/doc/$(p_jrez); \ ++ ) > $(d_jrez).links ++endif ++ ++ : # create docdir symlinks for $(p_src) ++ ( \ ++ echo usr/share/doc/$(p_jre) usr/share/doc/$(p_src); \ ++ ) > $(d_src).links ++ ++ : # create docdir symlinks for $(p_jdk) ++ ( \ ++ echo usr/share/doc/$(p_jre) usr/share/doc/$(p_jdk); \ ++ ) > $(d_jdk).links ++# doesn't work, no package dependency ++ifneq (,$(DEB_HOST_MULTIARCH)) ++ echo '$(TOP)/$(basename)/src.zip $(basedir)/src.zip' >> $(d_jdk).links ++endif ++ ++ifneq ($(p_jrehl),$(p_lib)) ++ : # create docdir symlinks for $(p_lib) ++ ( \ ++ echo usr/share/doc/$(p_jrehl) usr/share/doc/$(p_lib); \ ++ ) > $(d_lib).links ++endif ++ ++ : # create docdir symlinks for $(p_dbg) ++ ( \ ++ echo usr/share/doc/$(p_jrehl) usr/share/doc/$(p_dbg); \ ++ ) > $(d_dbg).links ++ ++ifeq ($(with_bridge),atk) ++ : # create links for the atk wrapper ++ echo "usr/share/java/java-atk-wrapper.jar $(basedir)/jre/lib/ext/java-atk-wrapper.jar" \ ++ >> $(d_jre).links ++ echo "usr/lib$(multiarch_dir)/jni/libatk-wrapper.so $(basedir)/jre/lib/ext/libatk-wrapper.so" \ ++ >> $(d_jre).links ++else ifeq ($(with_bridge),yes) ++ : # create links for the gnome accessibility bridge ++ echo "usr/share/java/gnome-java-bridge.jar $(basedir)/jre/lib/ext/gnome-java-bridge.jar" \ ++ >> $(d_jre).links ++ ifeq ($(with_jni_bridge),yes) ++ echo "usr/lib$(multiarch_dir)/jni/libjava-access-bridge-jni.so $(basedir)/jre/lib/ext/libjava-access-bridge-jni.so" \ ++ >> $(d_jre).links ++ endif ++endif ++ ++ifeq ($(with_tzdata),yes) ++ echo usr/share/javazi $(basedir)/jre/lib/zi \ ++ >> $(if $(DEB_HOST_MULTIARCH),$(d_jrehl),$(d_lib)).links ++endif ++ ++ : # create links for the config files ++ find $(d_jrehl)/$(etcdir) -type f ! -name jvm.cfg \ ++ -printf "$(etcdir)/%P $(basedir)/jre/lib/%P\n" >> $(d_jrehl).links ++ifneq (,$(DEB_HOST_MULTIARCH)) ++ mv $(d_jrehl)/$(etcdir)/jvm.cfg \ ++ $(d_jrehl)/$(etcdir)/jvm-$(DEB_HOST_ARCH).cfg ++ ( \ ++ echo "$(etcdir)/jvm-$(DEB_HOST_ARCH).cfg $(basedir)/jre/lib/$(archdir)/jvm.cfg"; \ ++ ) >> $(d_jrehl).links ++else ++ ( \ ++ echo "$(etcdir)/jvm.cfg $(basedir)/jre/lib/$(archdir)/jvm.cfg"; \ ++ ) >> $(d_jrehl).links ++endif ++ifneq (,$(pkg_certs)) ++ echo "etc/ssl/certs/java/cacerts $(basedir)/jre/lib/security/cacerts" \ ++ >> $(d_jrehl).links ++endif ++ ++ @echo JRE_HL_TOOLS: $(jre_hl_tools_alt) jexec ++ @echo JRE_TOOLS: $(jre_tools_alt) ++ @echo JDK_TOOLS: $(jdk_tools_alt) ++ ( \ ++ echo 'name=$(jdirname)'; \ ++ echo 'alias=$(jdiralias)'; \ ++ echo 'priority=$(priority)'; \ ++ echo 'section=main'; \ ++ echo ''; \ ++ for i in $(jre_hl_tools_alt); do \ ++ echo "hl $$i /$(basedir)/jre/bin/$$i"; \ ++ done; \ ++ echo "hl jexec /$(basedir)/jre/lib/jexec"; \ ++ for i in $(jre_tools_alt); do \ ++ echo "jre $$i /$(basedir)/jre/bin/$$i"; \ ++ done; \ ++ for i in $(jdk_tools_alt); do \ ++ echo "jdk $$i /$(basedir)/bin/$$i"; \ ++ done; \ ++ for d in $(browser_plugin_dirs); do \ ++ echo "plugin $$d-javaplugin.so /$(basedir)/jre/lib/$(archdir)/$(plugin_name)"; \ ++ done; \ ++ ) > $(d_jrehl)/$(TOP)/.$(jdiralias).jinfo ++ ++ ( \ ++ echo 'package $(basename)'; \ ++ echo 'interpreter /usr/bin/jexec'; \ ++ echo 'magic PK\x03\x04'; \ ++ ) > $(d_jrehl)/$(basedir)/jre/lib/jar.binfmt ++ ++ : # another jvm symlink ++ ln -sf $(jdirname) $(d_jrehl)/usr/lib/jvm/$(jdiralias) ++ ++ifeq ($(with_systemtap),yes FIXME: version and architecture awareness) ++ : # systemtap support ++ mkdir -p $(d_jrehl)/usr/share/systemtap/tapset ++ cp -p build/tapset/hotspot.stp $(d_jrehl)/usr/share/systemtap/tapset/ ++endif ++ ++ : # Install stuff to generate font config and timezone files. ++ mkdir -p $(d_lib)/$(commonbasedir)/jre/lib ++ cp -p build/openjdk.build/btjars/compilefontconfig.jar \ ++ $(d_lib)/$(commonbasedir)/jre/lib/ ++ cp -p build/openjdk.build/btjars/javazic.jar \ ++ $(d_lib)/$(commonbasedir)/jre/lib/ ++ ++ifneq (,$(DEB_HOST_MULTIARCH)) ++ ifneq ($(p_jrehl),$(p_lib)) ++ : # create symlinks for the files in $(p_lib) ++ find $(d_lib)/$(commonbasedir) \ ++ ! -name zi ! -name meta-index \( -name cmm -prune -o -type f \) \ ++ -printf "$(commonbasedir)/%P $(basedir)/%P\n" >> $(d_jrehl).links ++ ifeq ($(with_tzdata),yes) ++ echo usr/share/javazi $(basedir)/jre/lib/zi \ ++ >> $(d_jrehl).links ++ endif ++ endif ++endif ++ ++ : # install lintian overrides ++ for FILE in debian/*.overrides; do \ ++ PKG=`basename $$FILE .overrides`; \ ++ install -D -m644 $$FILE debian/$$PKG/usr/share/lintian/overrides/$$PKG; \ ++ done ++ ++nodocs = $(if $(findstring nodocs, $(DEB_BUILD_OPTIONS)),-N$(p_doc)) ++nojrej = $(if $(filter jamvm, $(alternate_vms)),,-N$(p_jrej)) ++nojrez = $(if $(filter shark zero, $(alternate_vms)),,-N$(p_jrez)) ++ ++# Build architecture independant packages ++binary-indep: build install ++ dh_testdir ++ dh_testroot ++ifeq ($(p_lib),$(p_jrehl)) ++ dh_installchangelogs -p$(basename)-jre-lib ++ dh_installdocs -p$(basename)-jre-lib ++endif ++ifeq ($(with_docs),yes) ++ dh_installchangelogs -p$(p_doc) ++ dh_installdocs -p$(p_doc) ++ mkdir -p $(d_doc)/usr/share/doc/$(p_jrehl) ++ for i in build/openjdk.build/docs/*; do \ ++ [ -e $$i ] || continue; \ ++ b=$$(basename $$i); \ ++ cp -a $$i $(d_doc)/usr/share/doc/$(p_jrehl)/; \ ++ ln -sf ../$(p_jrehl)/$$b $(d_doc)/usr/share/doc/$(p_doc)/$$b; \ ++ done ++endif ++# FIXME: desktop and menu files not ready for multiarch. #658321 ++ifeq (,$(DEB_HOST_MULTIARCH)) ++ dh_installmenu -i $(nodocs) ++endif ++ -dh_icons -i $(nodocs) || dh_iconcache -i $(nodocs) ++# dh_installdebconf -i $(nodocs) ++ dh_link -i $(nodocs) ++ dh_compress -i $(nodocs) -Xexamples -Xdemos -Xpackage-list ++ dh_fixperms -i $(nodocs) ++ dh_installdeb -i $(nodocs) ++ dh_gencontrol -i $(nodocs) -- $(control_vars) ++ dh_md5sums -i $(nodocs) ++ dh_builddeb -i $(nodocs) $(bd_options) ++ ++absarchdir = $(CURDIR)/$(d_jrehl)/$(basedir)/jre/lib/$(archdir) ++shlibdeps_ld_path =$(absarchdir):$(absarchdir)/client:$(absarchdir)/server:$(absarchdir)/native_threads$(if $(xulrunner_depends),:$(shell pkg-config --libs-only-L libxul | sed 's/^-L//;s/-devel//;s,/lib *$$,,')) ++ ++# pass vm name as first argument ++define install_minimal_test_results ++ mkdir -p $(d_tst)/usr/share/doc/$(p_jrehl)/test-$(DEB_HOST_ARCH) ++ if [ -f build/mauve-$(1)/mauve_output-$(1) ]; then \ ++ cp build/mauve-$(1)/mauve_output-$(1) \ ++ $(d_tst)/usr/share/doc/$(p_jrehl)/test-$(DEB_HOST_ARCH)/mauve_output-$(1).log; \ ++ xz -9v $(d_tst)/usr/share/doc/$(p_jrehl)/test-$(DEB_HOST_ARCH)/mauve_output-$(1).log; \ ++ fi ++ if [ -f build/test/jtreg_output-$(1) ]; then \ ++ cp build/test/jtreg_output-$(1) \ ++ $(d_tst)/usr/share/doc/$(p_jrehl)/test-$(DEB_HOST_ARCH)/jtreg_output-$(1).log; \ ++ xz -9v $(d_tst)/usr/share/doc/$(p_jrehl)/test-$(DEB_HOST_ARCH)/jtreg_output-$(1).log; \ ++ fi ++ if [ -f build/test/jtreg-$(1)/jtreg-summary.log ]; then \ ++ cp build/test/jtreg-$(1)/jtreg-summary.log \ ++ $(d_tst)/usr/share/doc/$(p_jrehl)/test-$(DEB_HOST_ARCH)/jtreg-summary-$(1).log; \ ++ xz -9v $(d_tst)/usr/share/doc/$(p_jrehl)/test-$(DEB_HOST_ARCH)/jtreg-summary-$(1).log; \ ++ fi ++ if [ -f build/test/failed_tests-$(1).tar.xz ]; then \ ++ cp -p build/test/failed_tests-$(1).tar.xz \ ++ $(d_tst)/usr/share/doc/$(p_jrehl)/test-$(DEB_HOST_ARCH)/.; \ ++ fi ++endef ++ ++# pass vm name as first argument ++define install_full_test_results ++ mkdir -p $(d_tst)/usr/share/doc/$(p_jrehl)/test-$(DEB_HOST_ARCH) ++ if [ -f build/mauve-$(1)/mauve_output-$(1) ]; then \ ++ cp build/mauve-$(1)/mauve_output-$(1) \ ++ $(d_tst)/usr/share/doc/$(p_jrehl)/test-$(DEB_HOST_ARCH)/mauve_output-$(1).log; \ ++ fi ++ if [ -f build/test/jtreg_output-$(1) ]; then \ ++ cp build/test/jtreg_output-$(1) \ ++ $(d_tst)/usr/share/doc/$(p_jrehl)/test-$(DEB_HOST_ARCH)/jtreg_output-$(1).log; \ ++ fi ++ if [ -d build/test/jtreg-$(1) ]; then \ ++ cp -r build/test/jtreg-$(1) \ ++ $(d_tst)/usr/share/doc/$(p_jrehl)/test-$(DEB_HOST_ARCH)/; \ ++ fi ++endef ++ ++# Build architecture dependant packages ++binary-arch: build install ++ dh_testdir ++ dh_testroot ++ dh_installchangelogs -p$(p_jrehl) ++ dh_installdocs -p$(p_jrehl) \ ++ debian/JAVA_HOME \ ++ debian/README.alternatives \ ++ debian/README.Debian ++ for i in AUTHORS NEWS README; do \ ++ cp -p $$i $(d_jrehl)/usr/share/doc/$(p_jrehl)/$$i.IcedTea; \ ++ done ++ # save all test results only when -tests package is being build ++ # otherwise compress results and save reports just for failed tests ++ifneq (,$(p_tst)) ++ $(call install_full_test_results,$(default_vm)) ++else ++ $(call install_minimal_test_results,$(default_vm)) ++endif ++ ++ifeq ($(transitional_cacao_pkg),yes) ++ dh_installchangelogs -p$(p_jrec) ++ dh_installdocs -p$(p_jrec) ++endif ++ifneq (,$(filter jamvm, $(alternate_vms))) ++ dh_installchangelogs -p$(p_jrej) ++ dh_installdocs -p$(p_jrej) ++ $(call install_test_results,jamvm) ++endif ++ifneq (,$(filter zero, $(alternate_vms))) ++ $(call install_test_results,zero) ++endif ++# FIXME: desktop and menu files not ready for multiarch. #658321 ++ifeq (,$(DEB_HOST_MULTIARCH)) ++ dh_installmenu -s $(nodemo) $(nojrej) $(nojrez) ++endif ++ -dh_icons -s $(nodemo) $(nojrej) $(nojrez) \ ++ || dh_iconcache -s $(nodemo) $(nojrej) $(nojrez) ++# dh_installdebconf -s $(nodemo) $(nojrej) $(nojrez) ++ dh_link -s $(nodemo) $(nojrej) $(nojrez) ++ dh_strip -s $(nodemo) $(nojrej) $(nojrez) \ ++ -Xlibjvm.so --dbg-package=$(p_dbg) ++ifeq (,$(findstring nostrip, $(DEB_BUILD_OPTIONS))) ++ set -ex; \ ++ for i in {$(d_jrehl),$(d_jre),$(d_jrez)}/$(basedir)/jre/lib/$(archdir)/*/libjvm.so; do \ ++ [ -f $$i ] || continue; \ ++ b_id=$$(LC_ALL=C readelf -n $$i | sed -n 's/ *Build ID: *\([0-9a-f][0-9a-f]*\)/\1/p'); \ ++ if [ -z "$$b_id" ]; then \ ++ id=$$(echo $$i | sed -r 's,debian/[^/]+,$(d_dbg)/usr/lib/debug,'); \ ++ echo strip $$i; \ ++ mkdir -p $$(dirname $$id); \ ++ objcopy --only-keep-debug $$i $$id; \ ++ chmod 644 $$id; \ ++ strip --remove-section=.comment --remove-section=.note \ ++ --strip-debug $$i; \ ++ objcopy --add-gnu-debuglink $$id $$i; \ ++ else \ ++ d=$(d_dbg)/usr/lib/debug/.build-id/$${b_id:0:2}; \ ++ f=$${b_id:2}.debug; \ ++ mkdir -p $$d; \ ++ objcopy --only-keep-debug --compress-debug-sections \ ++ $$i $$d/$$f; \ ++ chmod 644 $$d/$$f; \ ++ strip --remove-section=.comment --remove-section=.note \ ++ $$i; \ ++ fi; \ ++ done ++endif ++ ++ dh_compress -s $(nodemo) $(nojrej) $(nojrez) -Xexamples -Xdemos -Xpackage-list ++ dh_fixperms -s $(nodemo) $(nojrej) $(nojrez) ++ dh_makeshlibs -p$(p_jrehl) -p$(p_jre) ++ dh_shlibdeps -s $(nodemo) $(nojrej) $(nojrez) -L $(p_jrehl) \ ++ -l$(shlibdeps_ld_path) \ ++ -- ++ dh_installdeb -s $(nodemo) $(nojrej) $(nojrez) ++ dh_gencontrol -s $(nodemo) $(nojrej) $(nojrez) \ ++ -- $(control_vars) ++ dh_md5sums -s $(nodemo) $(nojrej) $(nojrez) ++ dh_builddeb -s $(nodemo) $(nojrej) $(nojrez) #$(bd_options) ++ ++binary: binary-arch binary-indep ++.PHONY: build clean binary-indep binary-arch binary install packaging-files diff --cc debian/sharedmimeinfo index 0000000,0000000..78604fd new file mode 100644 --- /dev/null +++ b/debian/sharedmimeinfo @@@ -1,0 -1,0 +1,12 @@@ ++ ++ ++ ++ Java Archive ++ ++ ++ ++ ++ Java Web Start application ++ ++ ++ diff --cc debian/source/format index 0000000,0000000..163aaf8 new file mode 100644 --- /dev/null +++ b/debian/source/format @@@ -1,0 -1,0 +1,1 @@@ ++3.0 (quilt) diff --cc debian/sun_java.xpm index 0000000,0000000..00db1b6 new file mode 100644 --- /dev/null +++ b/debian/sun_java.xpm @@@ -1,0 -1,0 +1,194 @@@ ++/* XPM */ ++static char *sun_java[] = { ++/* columns rows colors chars-per-pixel */ ++"32 32 156 2", ++" c #34479E", ++". c #4152A3", ++"X c #4153A2", ++"o c #4153A3", ++"O c #4D5EA8", ++"+ c #4D5EA9", ++"@ c #4E5EA9", ++"# c #5A69AD", ++"$ c #5A69AE", ++"% c #5A69AF", ++"& c #5A6AAD", ++"* c #6675B3", ++"= c #6775B2", ++"- c #6775B3", ++"; c #6776B3", ++": c #6775B5", ++"> c #6776B4", ++", c #7480B7", ++"< c #7380B8", ++"1 c #7381B8", ++"2 c #7380BA", ++"3 c #7481B8", ++"4 c #D12124", ++"5 c #D42F31", ++"6 c #D73D3E", ++"7 c #D94A4A", ++"8 c #D94A4B", ++"9 c #DA4A4A", ++"0 c #DA4B4B", ++"q c #DC5957", ++"w c #DC5858", ++"e c #DD5859", ++"r c #DD5959", ++"t c #DF6664", ++"y c #E06664", ++"u c #E27471", ++"i c #E27570", ++"p c #E27472", ++"a c #E37472", ++"s c #E27574", ++"d c #E37474", ++"f c #E5827E", ++"g c #E5837F", ++"h c #818BBD", ++"j c #818CBC", ++"k c #808CBE", ++"l c #818DC0", ++"z c #8D97C2", ++"x c #8D97C3", ++"c c #8D97C5", ++"v c #8E98C5", ++"b c #99A2C7", ++"n c #99A3C7", ++"m c #99A2C8", ++"M c #99A3C8", ++"N c #99A2CA", ++"B c #99A2CB", ++"V c #A6AECD", ++"C c #A5AED2", ++"Z c #A6AED0", ++"A c #B3B9D3", ++"S c #B2B9D4", ++"D c #B3B9D5", ++"F c #B2B9D6", ++"G c #B3BAD5", ++"H c #BFC4D6", ++"J c #BFC5D7", ++"K c #BFC5D8", ++"L c #BFC5D9", ++"P c #BFC5DA", ++"I c #BFC5DB", ++"U c #BFC5DC", ++"Y c #BFC5DD", ++"T c #E58381", ++"R c #E68380", ++"E c #E88F89", ++"W c #E88F8B", ++"Q c #E8908A", ++"! c #EB9D99", ++"~ c #EB9D9A", ++"^ c #EB9D9D", ++"/ c #EDABA2", ++"( c #EEABA6", ++") c #EDACA6", ++"_ c #F0B9B1", ++"` c #F1B9B1", ++"' c #F0B9B6", ++"] c #F3C7BD", ++"[ c #CCD0DA", ++"{ c #CCD1DA", ++"} c #CDD0DA", ++"| c #CCD0DC", ++" . c #CCD0DD", ++".. c #CCD1DD", ++"X. c #CCD0DE", ++"o. c #CCD1DE", ++"O. c #CCD1DF", ++"+. c #D8DBDF", ++"@. c #CCD0E0", ++"#. c #D8DCE1", ++"$. c #D9DCE1", ++"%. c #D9DCE3", ++"&. c #D9DCE4", ++"*. c #D9DCE5", ++"=. c #D9DCE6", ++"-. c #D9DCE7", ++";. c #D9DCE8", ++":. c #F6D5CB", ++">. c #F6D5CD", ++",. c #F6D5D3", ++"<. c #F9E3D7", ++"1. c #F9E3DA", ++"2. c #F9E3DB", ++"3. c #E6E7E7", ++"4. c #E5E7E9", ++"5. c #E5E7EC", ++"6. c #E5E8E8", ++"7. c #E6E8E9", ++"8. c #E6E8EA", ++"9. c #E6E8EB", ++"0. c #E5E8EC", ++"q. c #E6E8EC", ++"w. c #F9E3E1", ++"e. c #F2F3EC", ++"r. c #FCF0E1", ++"t. c #FCF0E3", ++"y. c #FCF1E5", ++"u. c #FCF0E7", ++"i. c #FCF1E6", ++"p. c #FCF1E7", ++"a. c #FCF1E8", ++"s. c #FFFEED", ++"d. c #FFFEEE", ++"f. c #FFFEEF", ++"g. c #F2F3F0", ++"h. c #F2F3F1", ++"j. c #F2F3F2", ++"k. c #F2F3F4", ++"l. c #FFFEF0", ++"z. c #FFFEF1", ++"x. c #FFFEF2", ++"c. c #FFFEF3", ++"v. c #FFFFF3", ++"b. c #FFFFF4", ++"n. c #FFFFF5", ++"m. c #FFFFF6", ++"M. c #FFFFF7", ++"N. c #FFFFF8", ++"B. c #FFFFF9", ++"V. c #FFFFFA", ++"C. c #FFFFFB", ++"Z. c #FFFFFC", ++"A. c #FFFFFD", ++"S. c #FFFFFE", ++"D. c gray100", ++"F. c None", ++/* pixels */ ++"F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.", ++"F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.w.~ F.F.F.F.F.F.F.F.F.F.F.F.F.", ++"F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.r F.F.F.F.F.F.F.F.F.F.F.F.F.", ++"F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.' q F.F.F.F.F.F.F.F.F.F.F.F.F.", ++"F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.M.q u F.F.F.F.F.F.F.F.F.F.F.F.F.", ++"F.F.F.F.F.F.F.F.F.F.F.F.F.F.M.M.! 4 1.F.F.F.F.F.F.F.F.F.F.F.F.F.", ++"F.F.F.F.F.F.F.F.F.F.F.F.F.M.M.f 4 E M.M.F.w.F.F.F.F.F.F.F.F.F.F.", ++"F.F.F.F.F.F.F.F.F.F.F.F.M.i.t 4 i x.1.g u ,.F.F.F.F.F.F.F.F.F.F.", ++"F.F.F.F.F.F.F.F.F.F.F.M.>.7 4 f r.f 5 ! C.F.F.F.F.F.F.F.F.F.F.F.", ++"F.F.F.F.F.F.F.F.F.F.F.1.5 4 / r.7 5 >.M.F.F.F.F.F.F.F.F.F.F.F.F.", ++"F.F.F.F.F.F.F.F.F.F.M.q 4 E d.i 4 >.M.F.F.F.F.F.F.F.F.F.F.F.F.F.", ++"F.F.F.F.F.F.F.F.F.F.M.4 5 d.d.4 6 x.x.F.F.F.F.F.F.F.F.F.F.F.F.F.", ++"F.F.F.F.F.F.F.F.F.F.F.7 7 d.d.4 4 :.M.F.F.F.F.F.F.F.F.F.F.F.F.F.", ++"F.F.F.F.F.F.F.F.F.F.M./ 4 <.x.q 4 7 i.F.F.F.F.F.F.F.F.F.F.F.F.F.", ++"F.F.F.F.F.F.F.F.F.F.F.M.u t x.] 4 4 ) M.F.F.F.F.F.F.F.F.F.F.F.F.", ++"F.F.F.F.F.F.F.F.F.F.F.F.u.7 _ x.E 4 ! M.M.F.F.F.F.F.F.F.F.F.F.F.", ++"F.F.F.F.F.F.F.F.F.h.@.4.M.i.u i._ 5 i.M.F.-.N : c @.M.F.F.F.F.F.", ++"F.F.F.F.F.F.k.B O h P x.x.M.x.i.a :.x.M.9.L @.L O c M.F.F.F.F.", ++"F.F.F.F.F.F.> X c n b n n n n h = & X v M.M.M.8. M.F.F.F.F.", ++"F.F.F.F.F.F.F.+...N n n n N N n J ..4.M.M.M.x.M.M. M.F.F.F.F.", ++"F.F.F.F.F.F.F.M.+.O ..x.d.x.d.x.x.3.L 8.M.M.M.x. . X M.F.F.F.F.", ++"F.F.F.F.F.F.F.M.F X = = = = O 8.M.M.h.& S M.F.F.F.F.", ++"F.F.F.F.F.F.F.M.M...z = = = = = j V %.x.F.M.9.% S M.F.F.F.F.F.", ++"F.F.F.F.F.F.F.M.M.4.n d.d.d.d.x.d.x.M.M.M.S X l 5.F.M.F.F.F.F.F.", ++"F.F.F.F.F.F.M.M.x.= O = = = = o = -.-.S h.M.F.M.F.F.F.F.F.F.", ++"F.F.F.F.F.M.-.{ { %., , A x.M.M.M.M.M.F.F.F.F.F.F.F.", ++"F.F.F.F.F O , J e.x.d.d.{ { { +.x.x.x.M.M.M.M.M.=.Y F.F.F.F.F.F.", ++"F.F.F.F. O z H %.d.x.x.d.d.d.d.x.x.x.x...K N O C C.F.F.F.F.F.", ++"F.F.F.F.N O # = = = = = O O L C.F.F.F.F.F.F.", ++"F.F.F.F.M.M.%.V > & O = N =.F.F.F.F.F.F.F.F.F.", ++"F.F.F.F.F.F.F.M.M.M.M.x.x.M.M.M.M.M.M.M.M.M.F.F.F.F.F.F.F.F.F.F.", ++"F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F." ++}; diff --cc debian/sun_java_app.xpm index 0000000,0000000..7a0f941 new file mode 100644 --- /dev/null +++ b/debian/sun_java_app.xpm @@@ -1,0 -1,0 +1,199 @@@ ++/* XPM */ ++static char * dukejre_xpm[] = { ++"32 32 164 2", ++" c None", ++". c #000000", ++"+ c #2D2D2D", ++"@ c #363636", ++"# c #313131", ++"$ c #3E3E3E", ++"% c #3D3D3D", ++"& c #2B2B2B", ++"* c #444444", ++"= c #494949", ++"- c #373737", ++"; c #1C1C1C", ++"> c #545454", ++", c #434343", ++"' c #272727", ++") c #0B0B0B", ++"! c #414141", ++"~ c #5C5C5C", ++"{ c #4F4F4F", ++"] c #141414", ++"^ c #3A3A3A", ++"/ c #585858", ++"( c #403A3A", ++"_ c #32201F", ++": c #090202", ++"< c #4F4E4E", ++"[ c #833D3E", ++"} c #BE3432", ++"| c #D63736", ++"1 c #79201F", ++"2 c #040101", ++"3 c #251313", ++"4 c #212121", ++"5 c #9A5857", ++"6 c #EBB9B9", ++"7 c #E03A38", ++"8 c #CA3430", ++"9 c #862221", ++"0 c #251211", ++"a c #774C35", ++"b c #CC5213", ++"c c #A25151", ++"d c #B23D3C", ++"e c #AC2B29", ++"f c #8F2422", ++"g c #691A19", ++"h c #321D1E", ++"i c #7E3D20", ++"j c #D55A0D", ++"k c #8E3F10", ++"l c #250F0F", ++"m c #5D1615", ++"n c #631817", ++"o c #661918", ++"p c #501313", ++"q c #200909", ++"r c #3D3A39", ++"s c #6D341B", ++"t c #AE4F14", ++"u c #CC5515", ++"v c #44403F", ++"w c #381414", ++"x c #310C0C", ++"y c #220908", ++"z c #1F0B0B", ++"A c #413939", ++"B c #525252", ++"C c #9B6343", ++"D c #D96319", ++"E c #D3A88C", ++"F c #D7D7D7", ++"G c #868383", ++"H c #797777", ++"I c #898989", ++"J c #A3A3A3", ++"K c #DBDBDB", ++"L c #E27626", ++"M c #DE6F21", ++"N c #E9E8E7", ++"O c #EDEDED", ++"P c #F8F8F8", ++"Q c #FFFFFF", ++"R c #EC7A20", ++"S c #E27728", ++"T c #ED7C21", ++"U c #E5E1DE", ++"V c #EEEEEE", ++"W c #F6F6F6", ++"X c #FDFDFD", ++"Y c #B76D3E", ++"Z c #E5711D", ++"` c #F0851E", ++" . c #ED7D24", ++".. c #F18B1D", ++"+. c #C75810", ++"@. c #CC5616", ++"#. c #E36F1D", ++"$. c #F2911A", ++"%. c #FBFBFB", ++"&. c #F9F6F2", ++"*. c #F9AA14", ++"=. c #F08A1D", ++"-. c #D35E13", ++";. c #E16D1C", ++">. c #F49B18", ++",. c #B9B9B9", ++"'. c #FAFAFA", ++"). c #F49818", ++"!. c #E3701D", ++"~. c #A1480F", ++"{. c #E06B1C", ++"]. c #FCFCFC", ++"^. c #E26D1C", ++"/. c #0F0F0F", ++"(. c #DE691B", ++"_. c #F6A016", ++":. c #E97E1C", ++"<. c #F7A117", ++"[. c #EB7A20", ++"}. c #E4701D", ++"|. c #837B77", ++"1. c #A0938A", ++"2. c #717171", ++"3. c #959595", ++"4. c #E1A27A", ++"5. c #DB844B", ++"6. c #D6671F", ++"7. c #D56318", ++"8. c #D6671B", ++"9. c #DB6616", ++"0. c #DE6614", ++"a. c #D96B1C", ++"b. c #D66A21", ++"c. c #D7996D", ++"d. c #C0BFBF", ++"e. c #393939", ++"f. c #686868", ++"g. c #8F8F8F", ++"h. c #D3D3D3", ++"i. c #D1D1D1", ++"j. c #CFCFCF", ++"k. c #DCDCDC", ++"l. c #D8D8D8", ++"m. c #C0C0C0", ++"n. c #C3C3C3", ++"o. c #333333", ++"p. c #696969", ++"q. c #606060", ++"r. c #E6E6E6", ++"s. c #A0A0A0", ++"t. c #8A8A8A", ++"u. c #5F5F5F", ++"v. c #8C8C8C", ++"w. c #B6B6B6", ++"x. c #BDBDBD", ++"y. c #262626", ++"z. c #7C7C7C", ++"A. c #C2C2C2", ++"B. c #C1C1C1", ++"C. c #B5B5B5", ++"D. c #6E6E6E", ++"E. c #868686", ++"F. c #ABABAB", ++"G. c #292929", ++" ", ++" . . ", ++" . . . . ", ++" . . . . ", ++" + . . . . . . ", ++" @ # . . . . . . . ", ++" $ % & . . . . . . ", ++" * = - ; . . . . . ", ++" * > , ' ) . . . . . . ", ++" ! ~ { # ] . . . . ", ++" ^ / / ( _ : . . . ", ++" # < [ } | 1 2 . ", ++" 3 4 5 6 7 8 9 0 a b . ", ++" 3 3 c d e f g h i j . ", ++" k l m n o p q r s j . ", ++" t u v w x y z A B C j . ", ++" $ . D E F G H I J K j L . ", ++" $ . M j N O P Q Q Q j R j ", ++" $ $ . S T j U V W X j T T j Y ", ++" $ . . Z ` T j j j j j ...T j +. ", ++" . . @.#.$.%.%.%.%.%.%.&.*.=.j -. ", ++" . . @.;.>.%.%.,.. '.%.%.*.).!.j ~. ", ++" . . @.{.*.%.%.%.. ].].%.*.*.^.j j ", ++" /.. j (.*.%.'.%.. '.%.%.*._.^.j j ", ++" . . . j :.%.'.%.%.'.'.%.<.[.}.j |. ", ++" . . # . . j j j T T T T T T T j 1.2. ", ++" . ^ 3.O 4.5.6.7.8.9.0.a.b.c.d.e.f. ", ++" ] . g.O h.i.j.j.h.h.h.k.l.m.n.o.p. ", ++" q.O O r.s.t.$ $ $ u.v.3.w.x.y.u. ", ++" z.A.B.C.D.$ $ $ $ u.E.F.& u. ", ++" # F.F.D.$ $ $ $ ' G.e.u. ", ++" $ $ $ $ $ $ $ "}; diff --cc debian/swing.properties index 0000000,0000000..0f55df0 new file mode 100644 --- /dev/null +++ b/debian/swing.properties @@@ -1,0 -1,0 +1,2 @@@ ++# uncomment to set the default look and feel to GTK ++#swing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel diff --cc debian/update-hgrev.sh index 0000000,0000000..7bd056e new file mode 100644 --- /dev/null +++ b/debian/update-hgrev.sh @@@ -1,0 -1,0 +1,29 @@@ ++#!/bin/bash ++ ++tarballs=(corba.tar.gz hotspot.tar.gz jaxp.tar.gz jaxws.tar.gz jdk-dfsg.tar.gz langtools-dfsg.tar.gz openjdk.tar.gz) ++varhgchange=(CORBA_CHANGESET HOTSPOT_CHANGESET JAXP_CHANGESET JAXWS_CHANGESET JDK_CHANGESET LANGTOOLS_CHANGESET OPENJDK_CHANGESET) ++tarballdir=. ++ ++makefile1=Makefile.am ++ ++function update_var() { ++ varname=$1 ++ newsum=$2 ++ ++ echo "$varname: ${newsum}" ++ if [ -f $makefile1 ]; then ++ sed -i "s/\(^$varname\)\(..*$\)/\1 = ${newsum}/" $makefile1 ++ fi ++} ++ ++function actual_tar_rev() { ++ tar=$1 ++ ++ revision=$(tar tf $tar | head -1 | sed 's,/.*,,' | sed 's,.*-,,') ++} ++ ++# For all modules ++for (( i = 0 ; i < ${#varhgchange[@]} ; i++ )); do ++ actual_tar_rev $tarballdir/${tarballs[$i]} ++ update_var ${varhgchange[$i]} $revision ++done diff --cc debian/update-shasum.sh index 0000000,0000000..af38b92 new file mode 100644 --- /dev/null +++ b/debian/update-shasum.sh @@@ -1,0 -1,0 +1,23 @@@ ++#!/bin/bash ++ ++tarballs=(jdk-dfsg.tar.gz langtools-dfsg.tar.gz) ++varshasum=(JDK_SHA256SUM LANGTOOLS_SHA256SUM) ++tarballdir=. ++ ++makefile1=Makefile.am ++ ++function update_var() { ++ varname=$1 ++ newsum=$2 ++ ++ echo "$varname: ${newsum}" ++ if [ -f $makefile1 ]; then ++ sed -i "s/\(^$varname\)\(..*$\)/\1 = ${newsum}/" $makefile1 ++ fi ++} ++ ++# For all modules ++for (( i = 0 ; i < ${#tarballs[@]} ; i++ )); do ++ newsum=$(sha256sum $tarballdir/${tarballs[$i]} | cut -f 1 -d ' ') ++ update_var ${varshasum[$i]} $newsum ++done diff --cc debian/upstream/signing-key.asc index 0000000,0000000..42d252f new file mode 100644 --- /dev/null +++ b/debian/upstream/signing-key.asc @@@ -1,0 -1,0 +1,92 @@@ ++-----BEGIN PGP PUBLIC KEY BLOCK----- ++ ++mDMEVKnk2RYJKwYBBAHaRw8BAQdAZBhdh94mkNp7j3jOyurYjuCa8BYMk1wDphwv ++IQqiElq0KkFuZHJldyBKb2huIEh1Z2hlcyA8Z251LmFuZHJld0ByZWRoYXQuY29t ++PoiCBBMWCgAqAhsDBQsJCAcDBRUKCQgLBRYCAwEAAh4BAheAAhkBBQJWVffsBQkD ++jUaTAAoJEM/aD5s1lkIiWhoA+wfYe91BnJnavxyZdwdTQuuBImqS1D1JdvLPxDoK ++gIkpAQDqOBCur0cu1ved7M7QLYvcuTHG/PTJ9KnvMp9Q8e/4BLQ4QW5kcmV3IEpv ++aG4gSHVnaGVzIChFQ0MgS2V5KSA8Z251X2FuZHJld0BtZW1iZXIuZnNmLm9yZz6I ++fwQTFgoAJwIbAwULCQgHAwUVCgkICwUWAgMBAAIeAQIXgAUCVlX37AUJA41GkwAK ++CRDP2g+bNZZCIhygAQDQIV0zirjp+Obhea4qrF5HEKzK54OXv/Ijwvbk2AkhmQD/ ++aCecfgaIYiMYJIxP2W7kXteMP5tFbQte8WeY9qXPnQmZAg0EToOzFgEQALUERoiJ ++IAE8cY6/udWBiFHiLhG0hKcOFhwtfZXJ3Qi5QMF5Qm4Pk8F2X93RKSL8fBdAJoBR ++rwMvL54LmWWAYY1cZUpTwoyT+xuKCfR1micXq4N7fq0x8j7DvVcJlgP3BcHcd+OX ++hcwgRzOLvVKa4AP+ydjWRGblwV9TMbHeeqrEhHtMiliyZMnALuOWdoM+ByV5A/DK ++7ohYqXBWd8eCNSqw/P1/FMIBxCJTD+7214TwHtUPz1NV5G/eiqD3lC5BX0+SWhRt ++TA57Zcb/gm+LHf6OarNbO/+W5cQ5PzgGy6ICOnPiZPm3PfPBpba6ZLBJ5TR+gL44 ++2FnNV1xqMhiQJlkR7f6Y184UW2jJ5R5mRKVyx7FQRcJp4QUKgcGrJ+q4sMypqspO ++v+PS/Mc8S5Do38g1/7KEDYhs9XAsQRnicy1zAp71LvJRy7mcUg+2wruc7SgpNE0i ++rjz4mDMvIqdgS70t37fF8PKenqlPjMypsgAUyvEebz0l449kiA8m4quMfPJ/PEA0 +++x22pwYcB0NcLCTTdxqCl+QBhRBYI9wy/a5BGKokiwlw2ia5RXuXxm5OfD6L7/Rl ++I0qoTmTk5m9n5d/vIwKlzlEHlR1OS3g1HuqbPl39wyoKgrP1CxTtG6IMNXiMrYe4 ++MgVtcw22jgxF528lyel9pk+hZkVYay8c4GMZABEBAAG0KkFuZHJldyBKb2huIEh1 ++Z2hlcyA8Z251LmFuZHJld0ByZWRoYXQuY29tPokCPQQTAQoAJwIbAwULCQgHAwUV ++CgkICwUWAgMBAAIeAQIXgAUCVDXu9AUJC1XWXgAKCRA7lqV4JIvcB7u6D/9haiUI ++Sk9TkFRLkCDZmveI21pNMZ0RaIGrOOGShrMV9WXOIzFitCt69aAAft9Bha7kiIDk ++6KMxf9m6UQdq4Zy0PZxbhDkkREi82qp8whb9ZlILLSIIj3aE0RaN4pDW84iKFgrH ++jg5/kbq9xa9RnFVogxi8LhMf4bYjajGuaVFuyom2RAlxThsL+rSP7QU4Rpc5nFS7 ++caYi91IMn+/qTpMF53YeutEsbRm9L+rQbi2E3nrKSyN/wTDMr7/8GPil3ijDm+Ng +++3ffMyJrKRSjKbquHd6Yw6CI8qbZPe9+6jy7Vv1c4jZIhSVa4YWNy8Jw4Hf9EnQA ++Rb4LtqZtf2yajpgA8NrVD9Hd6ucvlHB9KtRzJZwC4Qf9rHPNI6zv7lCl+ZEklwAJ ++VKZ1nusLGV/li57lOhalQuavHCNQcYuSWtDZyCeT/4Cd7lxWfhEn5ot5DtEZ6htz ++/fXibnKWeSxTbmcEZ92YVsfg0buO0I+cSInJxTJzVOZS7eI2k/+E9h6DhrPPJCWY ++8gE+RE1bp/6vF+7EBZr31vZAVTcpGmI3ZGiI2zhNpW8afJy9EShcvCzZQjgnV+Is ++qizOa+OGaNLXGHSEWZsTToD01E2Sm8ECIQdN6yMVsxbWzcbEfghvLvlX2xvf9aMP ++SqxzUhwRzLnLnv9VJlX9DeRUVD9UWlL6lV0HUbQqRHIgQW5kcmV3IEpvaG4gSHVn ++aGVzIDxhaHVnaGVzQHJlZGhhdC5jb20+iQI9BBMBCgAnAhsDBQsJCAcDBRUKCQgL ++BRYCAwEAAh4BAheABQJUNe70BQkLVdZeAAoJEDuWpXgki9wHL+IP/iIpinhzgNDG ++HUQgVOsBzPhrbeWUuUEdK5o3NbqLMcfxmbhKCVUNkpCGG4U/mstEdBpjTXOUj5fe ++TSlsZMgoTFRDE9RZ8zS2wG8zbs/6Iliu/brVNu5EndfDfwPOvVkPGFuJmwd8ewKm ++Pzlu03NHXKndGJv49ePyOavIj2gUX7zHlTygTDkuoOUK9qLq4E68TDwH1nn+KlPk ++rdNt6GHlwlZMDbxzJmkeJvUQXkQfZtLa90gU4A5WTRvhj2ckpm7i5fq9GLFignJp ++X4efQUxE6Lq8jgxiuufO0jkM+LBTAzUNxEcICqpWaouj96WLoob2qSTp54/v1IgM ++PzD3y2J+1aD0vxGhmepREzXsgVupNBnENzC1HUT/0UyVSA6bpn6g43pEvKnQrv7g ++1kJkMqXKDNxLxTSqsilQ5xJ5I7cEcxuRj9PbHwRtiPiGTatoZKgG+w3mtXg6cq0w ++Jkdg6rNRLYEMQNnndxIN3fJ5UpWlElkb/CnoCTcG8SLxqzOxmG1WXhy63pPHMCfO ++9MD+AmTmVt6YrhHfAUAwx2wWGfRtvZS98Q3uuaZJFU8kvEANQn1clDZYX4RAXRXe ++TISb/G2cAH7Bltjs86AH6lhb/qkDQ9y8MahJrI7a30PnFmXI1KdLjNrZtFHMcFhG ++HisDBtQyAyizlCjiM5IcxrGXgrTYb8FltDFEciBBbmRyZXcgSm9obiBIdWdoZXMg ++PGdudV9hbmRyZXdAbWVtYmVyLmZzZi5vcmc+iQJABBMBCgAqAhsDBQsJCAcDBRUK ++CQgLBRYCAwEAAh4BAheABQkLVdZeBQJUNe9lAhkBAAoJEDuWpXgki9wHc2MQAIHK ++UtoAitTXXyTzDJP8FSz4XyymqbqiZEBcz/iSaeC6PV+VF7jkIXzJbHWc/E31bypR ++TpAiBx5xWn35ZCDh/+G1VSXq3c/pHXeuOq+z1fd3hkXrtfQeuhtK96bQtALZywP7 ++AsFtkdVkW6j2AiGNniQjru6WYIJrsyYI/UnFFD69m97075iTiG9MEirJeziitVDa ++uXepTwCxStl377RpmTQ5TZg/guSGL6e2VZXYmRLL8SOLUsg+PCEWB4GrSayRuUYa ++UIktnrEeD6mTb87rqL77qaNfZIt7YScuHoMzGmbKhkpYmDPJXgVRSWLCGYctI44I ++cvY0MRxG4y0QxiUi6A0fI54q34vX2+tlUY6EunXH7uiZTr4MOe67qRko5Tw12qHU ++NCihpYw5fh7xbBFjHOzJgRc6TxDfRghqbKEu3jVQcHPdAYkOG+k6eqo6DI+jwU8d ++FJ1j+cjECFmnUSJFGbVtTbdAZ1ihyHFFLsEo3vy1p07616A0EcQ842nHC0UeVmSJ ++BLw1Yr3cixTmEQCitcnQ54blg1+H3cD6RcygKueBfUbdMLY8A0O+1aR5dVemRbAt ++8s2hOgaHYXxPSiVs1y/hE5AUIv7lW620EV8jwhLOKLMZK082OtDOin6MBRZmkyaB ++tOuJA8rkfE0qMI3pmvB/RGwu03UzP6C7OhYtYTbluQINBE6DtIkBEACcSYErrpfC ++QOvG46wuEfTTepY4TKq2dFhNNirY2wEYgI4PWUXhGagGfHcXTuvcQ/kBDsoRAQXS ++JnVQwW9JZDpWRR8vpmpAQRBf3OBcCzLtIfa9mzSeALbKvTmFiMf1Lz/neBjlOQ4g ++tqoGXEis6O71EACmqJZ54spD2pT7tuFZKpwcBZyYQPDQEvpXUZHwVH6+N8G3Nwtb ++MK4wsjQB0Mq1hPZucgcdij0xuRMsvWNap3zcrIeg0qMVxFnYh6pNAHphgPmgJ8Oe ++xY9I70OCInnx2yyqFnajFu8lJ9hdbTq2jbFmbuf/vFmveYJhrIbablAHKM/sTZzs ++F34836JkaUhZRKSsts3MdfOMDI3zzdq8E+1SZhQ6IfUQcOnKhAOy6YtccqsVS0eZ ++MLy+SQQNO8XVQ80CoR3jIosz+aZfDtP6CSOnUDDrED/vuC563XQ4goYRDGaCNtYW ++shMR26u1h+FXxdB0ww4hhdmX/9HzywroDcFz4ghYtLOwKppIER+QfR9GK6FgA2UH ++r7rBjV6dt3PXjDAlZvEBlnbZ2TpI6kbW/6pALtcopqftvNQSSf85YNGvZ+NGdq6P ++Cqv1pD8dZwr2iF0ZL5+SprcYYoTAF7/uPUKm+viruIbBU9TiqR0mZwLILVV8/k3U ++WibG/FtiWbFbEgnYUGHogKjKrT2X/OcL0wARAQABiF4EEBYKAAYFAlSp5/AACgkQ ++z9oPmzWWQiIpKAD/TH0gtJCDYmGw7vkWoZYaUpx3DKKHV/VI1DQD6KKxf88A/jlJ ++DZSejAeJkyfsvykT+uyJ640Bp4uWNa0wvBz0xWIMiF4EEBYKAAYFAlSp5/AACgkQ ++z9oPmzWWQiKs4wD/X/7k24OOOW6dyHgHPxDt5WNT+/srCKi0RRV/pypJjkwBAPJh ++Zx+tayQIkgEd+Ai60O2nlecedDfUkpvIy73ghUYOiF4EEBYKAAYFAlSp5/AACgkQ ++z9oPmzWWQiL2fwEAnxJf30ucabG0ii2vFAFZ6/ZrShimG5EX7RDWWLQc534A/1M0 ++mhq5pQ4wpHVYbm1usqa1OUTcV1NJaLJfT+iCqnELiQIlBBgBCgAPAhsMBQJUNe7R ++BQkLVdTIAAoJEDuWpXgki9wHNaEP/0ajxh1nOmL9tzwlhAuefkt+CYU070FtO0fd ++S0qLwtQaxeL7bbX8DzyoNPR4/Ows4H2+giuuWlzZn4AjVjO8NTdez3Is1x+Gd4CZ ++0mjM/UVGDSfBPh2+crUkLd0OCxpAv98JSaynMTvFtd0s4xFQ3QA3mod2hjspSHUQ ++XPwz1IXQIr50MvEr07cWUm6kDJtXBdXjcrVkHWqEZnh4O5OzfCyhZFF9MsrJg9Lb ++Rk0HallUdI5Ek7VHjlXBLaBdw2shjEpCZlRRzc82TFR/AmOms7xZSnmU/+cxmsO4 ++y5B6aKpYTyB1kL1S8n85Hc/LJwTcHgXZ2G49SlGb6T2PsTV8x5YmlK0VRVifWSRx ++0ANvXKNYQJ0p87AX1yJ8ng63YAyfBCDzLLA8sU5DdzJ10OSAn/OdCS9NywA8I+sY ++41Owt2hOF+KuwFqdlFcSILrOJtEDa4l7ClENB6RN06s6MLkJGuMpl5B0LIvTXDLz ++23E/GUgbKO/RP1Q3hKLk0Zb37l3uB9YZb5Jhfd22/FJa0+og8cQRmdRLi6cNxuny ++PPMo8L34pIDgH0iX4eNDsCkKzcX6c6gtfY7ommHgnqRELU5dTORX3Bd2YU7EuhjC ++uzQcZFpjg0ZmYS31/qI9gLarZYnlNbkpouiTwOP2ygkUo1iRgkF1gs4+cBaLfFW1 ++CApToox2 ++=Ymq4 ++-----END PGP PUBLIC KEY BLOCK----- diff --cc debian/watch index 0000000,0000000..a323063 new file mode 100644 --- /dev/null +++ b/debian/watch @@@ -1,0 -1,0 +1,26 @@@ ++# debian/watch ++# Debian uscan file for ‘openjdk-7’ package. ++# Manpage: ‘uscan(1)’ ++ ++# Dependencies: gpgv2 ++# GnuPG >= 2.1 is required to be able to handle the IcedTea key. ++ ++# Compulsory line, this is a version 4 file. ++version=4 ++ ++# Get IcedTea tarball ++# IcedTea has no 7uXXX version. IcedTea based on OpenJDK 7 based ++# is versioned as 2.X.X. ++# - filter out the initial 7uXXX- from debian version ++# - ignore any upstream version that does not start with 2. by forcing ++# them to start with 0. instead - ie. we filter out 3.x.x that is ++# based on OpenJDK 8 by turning it into 0.x.x) ++# We then call debian/repack to handle the download of the IcedTea's ++# OpenJDK forest as the data of the exact URLs to get those are all ++# inside IcedTea's tarball. ++opts="dversionmangle=s/^7u\d+-//,uversionmangle=s/^[^2]\./0./,pgpsigurlmangle=s%$%.sig%" \ ++ http://icedtea.classpath.org/download/source/icedtea-([\d\.]*).tar.xz \ ++ debian ++opts="component=icedtea-sound,pgpsigurlmangle=s%$%.sig%" \ ++ http://icedtea.wildebeest.org/download/source/icedtea-sound-([\d\.]+).tar.xz \ ++ 1.0 debian/repack