openjdk-17 (17.0.4+8-1+rpi1) bookworm-staging; urgency=medium
authorPeter Michael Green <plugwash@raspbian.org>
Fri, 11 Nov 2022 07:39:25 +0000 (07:39 +0000)
committerPeter Michael Green <plugwash@raspbian.org>
Fri, 11 Nov 2022 07:39:25 +0000 (07:39 +0000)
  [changes taken from 17.0.4+8-1~deb11u1+rpt1 by Serge Schneider]
  * Build with client jvm variant
    - https://github.com/raspberrypi/linux/issues/3306#issuecomment-1030781000
  * Default to client jvm on armhf

[dgit import unpatched openjdk-17 17.0.4+8-1+rpi1]

121 files changed:
1  2 
debian/JAVA_HOME
debian/JB-archive.applications.in
debian/JB-archive.keys.in
debian/JB-archive.mime.in
debian/JB-dbg.overrides.in
debian/JB-demo.menu.in
debian/JB-demo.overrides.in
debian/JB-doc.doc-base.in
debian/JB-fonts.defoma-hints.in
debian/JB-java.desktop.in
debian/JB-jconsole.desktop.in
debian/JB-jdk-headless.postinst.in
debian/JB-jdk-headless.preinst.in
debian/JB-jdk-headless.prerm.in
debian/JB-jdk.menu.in
debian/JB-jdk.postinst.in
debian/JB-jdk.prerm.in
debian/JB-jre-headless.overrides.in
debian/JB-jre-headless.postinst.in
debian/JB-jre-headless.postrm.in
debian/JB-jre-headless.prerm.in
debian/JB-jre-zero.overrides.in
debian/JB-jre.menu.in
debian/JB-jre.overrides.in
debian/JB-jre.postinst.in
debian/JB-jre.prerm.in
debian/README.Debian
debian/README.alternatives.in
debian/README.source
debian/TODO
debian/accessibility-atk.properties.disabled
debian/accessibility-atk.properties.enabled
debian/accessibility.properties
debian/apport-hook.py
debian/buildwatch.sh
debian/changelog
debian/compat
debian/control
debian/control.in
debian/control.zero-jre
debian/copyright
debian/dbg.py
debian/font.properties.ja
debian/font.properties.ja.wqy_zenhai
debian/generate-debian-orig.sh
debian/generate-dfsg-zip.sh
debian/jvm.cfg-default
debian/mauve_tests
debian/nss.cfg
debian/patches/8199220.diff
debian/patches/Don-t-optimize-fdlibm-fork-for-Zero-on-linux-sparc-Z.patch
debian/patches/accessible-toolkit.diff
debian/patches/adlc-parser.diff
debian/patches/atk-wrapper-security.diff
debian/patches/client_default.diff
debian/patches/default-jvm-cfg.diff
debian/patches/dnd-files.diff
debian/patches/enumipv6-fix.diff
debian/patches/generated-headers.patch
debian/patches/hotspot-disable-exec-shield-workaround.diff
debian/patches/hotspot-disable-werror.diff
debian/patches/hotspot-mips-align.diff
debian/patches/hotspot-set-compiler.diff
debian/patches/hotspot-warn-no-errformat.diff
debian/patches/icc_loading_with_symlink.diff
debian/patches/icedtea-override-redirect-compiz.diff
debian/patches/include-all-srcs.diff
debian/patches/java-access-bridge-security.diff
debian/patches/jaw-classpath.diff
debian/patches/jaw-optional.diff
debian/patches/jdk-getAccessibleValue.diff
debian/patches/jdk-i18n-pt_BR.diff
debian/patches/jdk-pulseaudio.diff
debian/patches/jexec.diff
debian/patches/jtreg-location.diff
debian/patches/keep-gtk2-as-default.patch
debian/patches/libpcsclite-dlopen.diff
debian/patches/m68k-support.diff
debian/patches/machine-flag.diff
debian/patches/make-debug-print.diff
debian/patches/mips.diff
debian/patches/multiple-pkcs11-library-init.diff
debian/patches/no-pch-build.diff
debian/patches/nspr+nss-headers.diff
debian/patches/pass-extra-flags.diff
debian/patches/reproducible-build-jmod.diff
debian/patches/reproducible-character-data.diff
debian/patches/reproducible-copyright-headers.diff
debian/patches/reproducible-javadoc-timestamp.diff
debian/patches/reproducible-module-info.diff
debian/patches/reproducible-properties-timestamp.diff
debian/patches/riscv64.diff
debian/patches/s390x-opt.diff
debian/patches/series
debian/patches/set-exec-name.diff
debian/patches/stack-direction.diff
debian/patches/system-pcsclite.diff
debian/patches/workaround_expand_exec_shield_cs_limit.diff
debian/patches/zero-x32.diff
debian/rules
debian/series
debian/sharedmimeinfo
debian/source/format
debian/source/lintian-overrides
debian/sun_java.xpm
debian/sun_java_app.xpm
debian/swing.properties
debian/tests/control
debian/tests/control.in
debian/tests/hotspot
debian/tests/jaxp
debian/tests/jdk
debian/tests/jtdiff-autopkgtest.in
debian/tests/jtdiff-autopkgtest.sh
debian/tests/jtreg-autopkgtest.in
debian/tests/jtreg-autopkgtest.sh
debian/tests/langtools
debian/tests/start-xvfb.sh
debian/update-hgrev.sh
debian/update-shasum.sh
debian/watch

index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..876e989537faf5b0d04cc0dea6526cb59c6cae69
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -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.
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..7f20fd5851b87ab95639c1c190d3c1466ed8f479
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..743e3c8a2b478b00be0baecc6e7f61c7925bcdcf
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e354ead538470c6963b447cc23f00b2dff0ee96a
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,6 @@@
++application/java-archive
++        ext: jar
++application/x-java-archive
++        ext: jar
++application/x-jar
++        ext: jar
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..f177b8d14dd0f9e42d9cc6b81874eecc00ac3840
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,7 @@@
++# this are pre-stripped binaries (fastdebug)
++@basename@-dbg binary: library-in-debug-or-profile-should-not-be-stripped
++@basename@-dbg binary: debug-file-with-no-debug-symbols
++
++# these are java's .debuginfo files ...
++@basename@-dbg binary: binary-with-bad-dynamic-table
++@basename@-dbg binary: statically-linked-binary
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..58aec29c3b52edd9e3e32f81bf19ce8c00404218
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -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"
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..a6454ded83e13002869745175aec5d818e305df8
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,11 @@@
++# jpda/examples.jar only contains source code
++@basename@-demo binary: codeless-jar usr/share/doc/openjdk-7-jre-headless/demo/jpda/examples.jar
++
++# OpenJDK is correct despite any Debian policy
++@basename@-demo binary: unknown-java-class-version
++
++# example jar file with sources and documentation
++@basename@-demo binary: codeless-jar
++
++# example jar file with sources
++@basename@-demo binary: jar-contains-source
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..619d9ae5d6c51eb0ce81092eeb7fc45f389384ee
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..80212e25b4f30774271ca8acc014ce9a7d0ff8ac
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..eec5e5ca495745d30203430d123bf31434b44a01
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,12 @@@
++[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ö
++Keywords=java;runtime
++Exec=@java_launcher@ -jar
++Terminal=false
++Type=Application
++Icon=@basename@
++MimeType=application/x-java-archive;application/java-archive;application/x-jar;
++NoDisplay=true
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8a87820a29cf0f5e2b4275442a0f78e046107216
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,11 @@@
++[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
++Keywords=java;console;monitoring
++Exec=/usr/bin/jconsole
++Terminal=false
++Type=Application
++Icon=@basename@
++Categories=Application;System;
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..0e1ef5feb1b684808b8706aea0e546750abb26ab
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -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_hl_tools='@jdk_hl_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_hl_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_hl_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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..01698fc269ee2112bb1998044deda9317ad3faef
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,23 @@@
++#!/bin/sh
++
++set -e
++
++multiarch=@multiarch@
++old_basedir=/usr/lib/jvm/java-7-openjdk
++jdk_hl_tools='apt extcheck idlj jar jarsigner javac javadoc javah javap 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_hl_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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..80bf5030a3e92e80a44c83a82d12dfc673acee67
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,15 @@@
++#!/bin/sh -e
++
++set -e
++
++jdk_hl_tools='@jdk_hl_tools@'
++basedir=/@basedir@
++
++
++if [ "$1" = "remove" ] || [ "$1" = "deconfigure" ]; then
++    for i in $jdk_hl_tools; do
++      update-alternatives --remove $i $basedir/bin/$i
++    done
++fi
++
++#DEBHELPER#
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..14f11ec2dd71bdde5d660c1228cc0dfd65079018
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -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"
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..bdffbe3ccf87adb4f90f393e8339c6c901b44918
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..f51219574e215c7b84c4e882748308a4eef7cf14
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -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#
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..373a2420626ca17b055a049e2f20de51fea99455
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -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
++
++# Ignore the mouse cursors
++@basename@-jre-headless binary: image-file-in-usr-lib
++
++# Just an empty directory
++@basename@-jre-headless binary: debug-package-should-be-named-dbg
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..c40abb8ec780068ff8d454631a33e269cf485717
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,102 @@@
++#!/bin/sh
++
++set -e
++
++multiarch=@multiarch@
++priority=@priority@
++basedir=/@basedir@
++mandir=$basedir/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/bin/$i \
++            $priority \
++          $slave1 $slave2
++    done
++    update-alternatives \
++      --install /usr/bin/jexec jexec $basedir/lib/jexec $priority \
++      --slave \
++          /usr/share/binfmts/jar \
++          jexec-binfmt \
++          $basedir/lib/jar.binfmt
++    fi # update alternatives
++
++    # 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
++
++    ;;
++
++esac
++
++#DEBHELPER#
++
++exit 0
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e605e96336365b7a1be33dc481ebcb59a7107bde
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,24 @@@
++#!/bin/sh
++
++set -e
++
++basedir=/@basedir@
++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
++    rm -f $basedir/lib/*/classes.jsa
++
++    # removals of config files in /etc is handled by dpkg
++
++    # XXX should remove /etc/.java ???
++    ;;
++esac
++
++#DEBHELPER#
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..89e7799d24e6c3257a27e4360805254f658a7209
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,24 @@@
++#!/bin/sh
++
++set -e
++
++basedir=/@basedir@
++jre_tools='@jre_hl_tools@'
++
++if [ "$1" = "remove" ] || [ "$1" = "deconfigure" ]; then
++    for i in $jre_tools; do
++      update-alternatives --remove $i $basedir/bin/$i
++    done
++
++    if which update-binfmts >/dev/null; then
++      # try to remove and ignore the error
++      if [ -e /var/lib/binfmts/@basename@ ]; then
++          update-binfmts --package @basename@ \
++              --remove jar /usr/bin/jexec || true
++      fi
++    fi
++
++    update-alternatives --remove jexec $basedir/lib/jexec
++fi
++
++#DEBHELPER#
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..1616f866a5ea17923d3ee8f5c678a7be4344478d
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..024b63fcf6a869302b45de398012b66061eba0cb
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -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"
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..c7cb389b9378ad918236b6e609878f6049887fd2
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2 @@@
++# these are in the -jre-headless package, -jre depends on it
++@basename@-jre binary: desktop-command-not-in-package
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..84edc96f706d465e15527167d452cbee3cd42b22
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,71 @@@
++#!/bin/sh
++
++set -e
++
++multiarch=@multiarch@
++priority=@priority@
++basedir=/@basedir@
++mandir=$basedir/man
++srcext=1.gz
++dstext=1.gz
++jre_tools='@jre_tools@'
++
++case "$1" in
++configure)
++    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/bin/$i \
++            $priority \
++          $slave1 $slave2
++    done
++    fi # update alternatives
++
++    ;;
++
++esac
++
++#DEBHELPER#
++
++exit 0
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..55cd790520353f57f05ad959ed6f2e06317e6303
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -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/bin/$i
++    done
++fi
++
++#DEBHELPER#
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..1d1e452c963cfbed8427ec1753a8308e73266c90
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,65 @@@
++openjdk-9 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: Zero, providing a byte code interpreter for every architecture.
++
++To use a different VM other than the default, use
++
++      java -zero
++
++or for the java tools, use
++
++      <tool name> -J-zero.
++
++To change the default permanently, edit /etc/java-9-openjdk/jvm.cfg.
++
++The Zero VM can be found in the openjdk-9-jre-zero package (on the
++architectures where the Hotspot VM is available).
++
++Please look for further documentation in the directory
++/usr/share/doc/openjdk-9-jre/ .
++
++The package openjdk-9-jre-headless ships a cgi script
++/usr/lib/jvm/java-9-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 <http://tools.suckless.org/wmname> tool from the
++   suckless-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 <<EOF
++export _JAVA_AWT_WM_NONREPARENTING=true
++EOF
++
++
++IcedTea NPPlugin
++----------------
++
++IcedTea provides a java plugin for at least mozilla based browsers.  It is
++not yet 100% with the closed source plugin, but much improved to the former
++GCJPlugin.  If you experience problems with the plugin, start your browser
++from the command line with the environment variable ICEDTEAPLUGIN_DEBUG set,
++and attach this output to a bug report.  You usually should not expect a
++quick fix, if the applet code is closed source, or only accessible after
++creating accounts for external web services using these applets.
++
++
++ -- Matthias Klose <doko@ubuntu.com>  Sun, 03 May 2009 13:58:10 +0200
++ -- Torsten Werner <twerner@debian.org>  Wed, 02 Apr 2008 11:46:53 +0200
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..19d46fb31705d184db4478c94dfdd3ffe61e28e2
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,35 @@@
++Updating alternatives for JRE/JDK installations
++-----------------------------------------------
++
++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.
++
++The update-java-alternatives script can be used to set all the 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 <jname> alternatives:
++
++  update-java-alternatives --jre --set <jname>
++
++- Set all runtime tools (headless only) to point to the <jname>
++  alternatives:
++
++  update-java-alternatives --jre-headless --set <jname>
++
++- Set all runtime and development tools to point to the <jname>
++  alternatives:
++
++  update-java-alternatives --set <jname>
++
++- Set all runtime and development tools to auto mode:
++
++  update-java-alternatives --auto
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..87678eb78e09b27c7a31afbdb3aa001e29b2d327
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,76 @@@
++Content of source package
++=========================
++"openjdk-8" is a composite source package:
++- Multiple tarballs from each Oracle mercurial repositories :
++  corba / hotspot / jaxp / jaxws / jdk-dfsg / langtools / openjdk
++- Tarball from JamVM <http://jamvm.sourceforge.net>.
++- Debian packaging scripts and patches.
++
++Building a new OpenJDK-8 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 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 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/TODO
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e131d33b84fec0266ea2c231f6eeeb10145f33cd
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,10 @@@
++to remove:
++hotspot-set-compiler.diff
++hotspot-warn-no-errformat.diff
++
++evaluate:
++ld-symbolic-functions.diff still needed?
++hotspot-sparc-arch.diff
++pass-extra-flags.diff
++hotspot-disable-werror.diff
++hotspot-undefined-target-cpu.diff
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..c1bdc487bbdf577e54d6917b3ae3481b1095e4d3
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -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
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..b58c492498b1eeaf1cd7130e78357c9b9dac537f
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,8 @@@
++#
++# 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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e0095896cc3453150e2713f3815508f6f201e95a
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -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
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..bc698a3a62d5e4d8cf9016067178cd022b4f5f8f
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,46 @@@
++'''Apport package hook for openjdk-11 packages.
++
++Copyright (C) 2017 Canonical Ltd.
++Author: Tiago Stürmer Daitx <tiago.daitx@canonical.com>'''
++
++import os
++import re
++import sys
++from apport.hookutils import *
++
++def si_units(size):
++    for unit in ['KiB', 'MiB', 'GiB']:
++        size /= 1024
++        if size < 1024:
++            break
++    return '{0:.1f} {1}'.format(size, unit)
++
++def add_info(report, ui=None):
++    attach_conffiles(report,'openjdk-11-jre-headless', ui=ui)
++
++    if report['ProblemType'] == 'Crash' and 'ProcCwd' in report:
++        # attach hs_err_<pid>.pid file
++        cwd = report['ProcCwd']
++        pid_line = re.search("Pid:\t(.*)\n", report["ProcStatus"])
++        if pid_line:
++            pid = pid_line.groups()[0]
++            path = "%s/hs_err_pid%s.log" % (cwd, pid)
++            # make sure if exists
++            if os.path.exists(path):
++                content = read_file(path)
++                # truncate if bigger than 100 KB
++                # see LP: #1696814
++                max_length = 100*1024
++                if sys.getsizeof(content) < max_length:
++                    report['HotspotError'] = content
++                    report['Tags'] += ' openjdk-hs-err'
++                else:
++                    report['HotspotError'] = content[:max_length] + \
++                            "\n[truncated by openjdk-11 apport hook]" + \
++                            "\n[max log size is %s, file size was %s]" % \
++                            (si_units(max_length), si_units(sys.getsizeof(content)))
++                    report['Tags'] += ' openjdk-hs-err'
++            else:
++                report['HotspotError'] = "File not found: %s" % path
++        else:
++            report['HotspotError'] = "PID not found in ProcStatus entry."
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8521c4a602420dc616e62b4ecb249069e65952b0
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,67 @@@
++#! /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 $?
++}
++
++cleanup() {
++    # find any hs_err_pid files generated during the build and print them out
++    # this helps debugging what went wrong during builds
++    find . -type f -name 'hs_err_pid*.log' -printf "[$0] === HOTSPOT ERROR LOG ===\n[$0] %p (last modification at %t)\n" -exec cat {} \;
++}
++
++for sig in INT QUIT HUP TERM; do trap "cleanup; trap - $sig EXIT; kill -s $sig "'"$$"' "$sig"; done
++trap cleanup EXIT
++
++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 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
++        # 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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..26736d46aa576802a2b0273f1d21b97cb0370e19
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,5356 @@@
++openjdk-17 (17.0.4+8-1+rpi1) bookworm-staging; urgency=medium
++
++  [changes taken from 17.0.4+8-1~deb11u1+rpt1 by Serge Schneider]
++  * Build with client jvm variant
++    - https://github.com/raspberrypi/linux/issues/3306#issuecomment-1030781000
++  * Default to client jvm on armhf
++
++ -- Peter Michael Green <plugwash@raspbian.org>  Fri, 11 Nov 2022 07:39:25 +0000
++
++openjdk-17 (17.0.4+8-1) unstable; urgency=high
++
++  * OpenJDK 17.0.4+8 (release).
++  * Disable the reproducible-copyright-headers patch.
++  * Only try to re-run failed tests once instead of three times.
++
++ -- Matthias Klose <doko@ubuntu.com>  Wed, 20 Jul 2022 18:04:41 +0200
++
++openjdk-17 (17.0.3+7-1) unstable; urgency=high
++
++  * OpenJDK 17.0.3+7 (release).
++  * Security fixes
++    - JDK-8269938: Enhance XML processing passes redux.
++    - JDK-8270504, CVE-2022-21426: Better XPath expression handling.
++    - JDK-8272255: Completely handle MIDI files.
++    - JDK-8272261: Improve JFR recording file processing.
++    - JDK-8272588: Enhanced recording parsing.
++    - JDK-8272594: Better record of recordings.
++    - JDK-8274221: More definite BER encodings.
++    - JDK-8275082, JDK-8278008, CVE-2022-21476: Update XML Security for Java
++      to 2.3.0.
++    - JDK-8275151, CVE-2022-21443: Improved Object Identification.
++    - JDK-8277227: Better identification of OIDs.
++    - JDK-8277233, CVE-2022-21449: Improve ECDSA signature support.
++    - JDK-8277672, CVE-2022-21434: Better invocation handler handling.
++    - JDK-8278356: Improve file creation.
++    - JDK-8278449: Improve keychain support.
++    - JDK-8278798: Improve supported intrinsic.
++    - JDK-8278805: Enhance BMP image loading.
++    - JDK-8278972, CVE-2022-21496: Improve URL supports.
++    - JDK-8281388: Change wrapping of EncryptedPrivateKeyInfo.
++  * Refresh patches.
++
++ -- Matthias Klose <doko@ubuntu.com>  Mon, 02 May 2022 20:04:05 +0200
++
++openjdk-17 (17.0.2+8-1) unstable; urgency=high
++
++  * OpenJDK 17.0.2+8 (release).
++  * Addresses security issues: CVE-2022-21366, CVE-2022-21365, CVE-2022-21360,
++    CVE-2022-21341, CVE-2022-21340, CVE-2022-21305, CVE-2022-21299,
++    CVE-2022-21296, CVE-2022-21294, CVE-2022-21293, CVE-2022-21291,
++    CVE-2022-21283, CVE-2022-21282, CVE-2022-21277, CVE-2022-21248.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 20 Jan 2022 17:13:47 +0100
++
++openjdk-17 (17.0.1+12-1) unstable; urgency=medium
++
++  * OpenJDK 17.0.1+12 (release).
++  * Remove patches applied upstream.
++
++ -- Matthias Klose <doko@ubuntu.com>  Wed, 20 Oct 2021 16:47:06 +0200
++
++openjdk-17 (17+35-1) unstable; urgency=medium
++
++  * Fix JDK-8272472, ftbfs with glibc 2.24.
++
++ -- Matthias Klose <doko@debian.org>  Wed, 15 Sep 2021 07:22:52 +0200
++
++openjdk-17 (17~35ea-1) unstable; urgency=medium
++
++  * OpenJDK 17 snapshot, build 35 (first release candidate).
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 13 Aug 2021 13:54:06 +0200
++
++openjdk-17 (17~33ea-1) unstable; urgency=high
++
++  * OpenJDK 17 snapshot, build 33.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sat, 31 Jul 2021 09:22:45 +0200
++
++openjdk-17 (17~32ea-1) unstable; urgency=high
++
++  * OpenJDK 17 snapshot, build 32.
++  * Security fixes:
++    - JDK-8256157: Improve bytecode assembly.
++    - JDK-8256491: Better HTTP transport.
++    - JDK-8258432, CVE-2021-2341: Improve file transfers.
++    - JDK-8260453: Improve Font Bounding.
++    - JDK-8260960: Signs of jarsigner signing.
++    - JDK-8260967, CVE-2021-2369: Better jar file validation.
++    - JDK-8262380: Enhance XML processing passes.
++    - JDK-8262403: Enhanced data transfer.
++    - JDK-8262410: Enhanced rules for zones.
++    - JDK-8262477: Enhance String Conclusions.
++    - JDK-8262967: Improve Zip file support.
++    - JDK-8264066, CVE-2021-2388: Enhance compiler validation.
++    - JDK-8264079: Improve abstractions.
++    - JDK-8264460: Improve NTLM support.
++
++ -- Matthias Klose <doko@ubuntu.com>  Mon, 26 Jul 2021 11:25:32 +0200
++
++openjdk-17 (17~31ea-1) unstable; urgency=medium
++
++  * OpenJDK 17 snapshot, build 31.
++  * Encode the early-access status into the package version. LP: #1934895.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sat, 17 Jul 2021 14:25:02 +0200
++
++openjdk-17 (17~29-1) unstable; urgency=medium
++
++  * OpenJDK 17 snapshot, build 29.
++  * Update watch file.
++  * Prepare to build with jtreg6, where available.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 01 Jul 2021 16:42:23 +0200
++
++openjdk-17 (17~27-1) unstable; urgency=medium
++
++  * OpenJDK 17 snapshot, build 27.
++  * Only build using lto with GCC 11.
++  * Build using GCC 11 in recent distributions.
++  * Update VCS attributes.
++  * Disable runnning the tests, requires not yet packaged jtreg6.
++  * Remove rimd, removed upstream.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 18 Jun 2021 15:06:18 +0200
++
++openjdk-17 (17~24-1) unstable; urgency=medium
++
++  * OpenJDK 17 snapshot, build 24.
++  * Drop the work around for JDK 8211105.
++  * Remove jaotc (the experimental JIT compiler), removed upstream.
++  * Add an (unapplied) patch to replace OASIS header files with ones
++    imported from NSPR and NSS. See #985765.  Not reviewed, not applying.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 27 May 2021 11:26:59 +0200
++
++openjdk-17 (17~19-1) unstable; urgency=high
++
++  * OpenJDK 17 snapshot, build 19.
++    - Fix JDK-8250568: Less ambiguous processing (CVE-2021-2161).
++    - Fix JDK-8249906: Enhance opening JARs (CVE-2021-2163).
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 22 Apr 2021 09:51:43 +0200
++
++openjdk-17 (17~17-1) unstable; urgency=medium
++
++  * OpenJDK 17 snapshot, build 17.
++  * Refresh patches.
++  * Prefer to build using openjdk-17 instead of -16. Closes: #986526.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 08 Apr 2021 09:37:40 +0200
++
++openjdk-17 (17~15-1) unstable; urgency=medium
++
++  * OpenJDK 17 snapshot, build 15.
++  * Fix another upstream typo to build with external harfbuzz. Closes: #985668.
++  * Disable running the tests on mipsel and mips64el.  Times out, and if it
++    succeeds, it taken at least five days to run.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 25 Mar 2021 10:31:15 +0100
++
++openjdk-17 (17~14-1) unstable; urgency=medium
++
++  * OpenJDK 17 snapshot, build 14.
++  * Don't use the triplet-prefixed binutils tools for backports.
++  * Simplify compiler selection for backports.
++  * Fix build with older glibc versions. See JDK-8262501.
++  * Apply untested patch suggested to fix mips issue. See #983878.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 18 Mar 2021 19:42:16 +0100
++
++openjdk-17 (17~11-1) unstable; urgency=medium
++
++  * OpenJDK 17 snapshot, build 11.
++  * Configure --with-copyright-year. Addresses: #956154.
++  * Restore the libpcsclite-dlopen patch. Closes: #983465.
++  * Don't run the testsuite on armel and riscv64. Crashing the buildds.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 25 Feb 2021 10:33:32 +0100
++
++openjdk-17 (17~10-2) unstable; urgency=medium
++
++  * Fix the build logic, jaotc and jhsdb tools not available on all archs.
++  * Ship the jfc files used by jfr.
++  * reproducible-build-jmod.diff: Fall back to the unpatched behavior
++    for backports.
++  * Only build with system harfbuzz for recent releases.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sat, 20 Feb 2021 12:02:45 +0100
++
++openjdk-17 (17~10-1) unstable; urgency=medium
++
++  * OpenJDK 17 snapshot, build 10.
++  * Fix building with OpenJDK 17 as the boot jdk.
++  * Build with Rules-Requires-Root: no.
++  * Move libawt_xawt.so, libjawt.so into the jre package. Addresses: #908058.
++  * Move the jfr binary from -jre-headless to -jdk-headless. Development tool.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 19 Feb 2021 13:12:19 +0100
++
++openjdk-17 (17~9-1) unstable; urgency=medium
++
++  * OpenJDK 17 snapshot, build 9.
++  * Enable running the tests.
++  * Remove the disable-doclint-by-default patch. Was not applied anymore
++    in 17.  Closes: #982521.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 11 Feb 2021 10:13:25 +0000
++
++openjdk-17 (17~8-1) unstable; urgency=medium
++
++  * OpenJDK 17 snapshot, build 8.
++  * Don't try to apply the removed alpha-float-const patch.
++  * Drop the powerpcspe packaging bits.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 04 Feb 2021 14:35:28 +0100
++
++openjdk-17 (17~7-1) unstable; urgency=medium
++
++  * OpenJDK 17 snapshot, build 7.
++  * Update watch file.
++  * Use debugedit to generate unique build-id's and remove the openjdk-N-dbg
++    file conflicts.
++  * Remove KFreeBSD build support and patches, not updated since OpenJDK 8.
++  * Remove obsolete patches: alpha-float-const, libpcsclite-dlopen,
++    parallel-build-fix, s390x-thread-stack-size.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 28 Jan 2021 14:52:27 +0100
++
++openjdk-17 (17~5-1) unstable; urgency=medium
++
++  * OpenJDK 17 snapshot, build 5.
++
++ -- Matthias Klose <doko@ubuntu.com>  Tue, 19 Jan 2021 10:29:50 +0100
++
++openjdk-17 (17~4-0ubuntu1) hirsute; urgency=medium
++
++  * OpenJDK 17 snapshot, build 4.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sat, 09 Jan 2021 17:25:46 +0100
++
++openjdk-17 (17~3-1) experimental; urgency=medium
++
++  * OpenJDK 17 snapshot, build 3.
++  * OpenJDK 17 is supposed to be the next OpenJDK LTS release seeing extended
++    updates and security support.
++
++ -- Matthias Klose <doko@ubuntu.com>  Mon, 28 Dec 2020 13:57:12 +0100
++
++openjdk-16 (16~29-1) unstable; urgency=medium
++
++  * OpenJDK 16 snapshot, build 29.
++
++ -- Matthias Klose <doko@ubuntu.com>  Mon, 28 Dec 2020 12:44:30 +0100
++
++openjdk-16 (16~27-2) unstable; urgency=medium
++
++  * Fix installation on sparc64.
++  * Link with libatomic for more zero builds.
++  * Re-enable zero on armhf.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 04 Dec 2020 10:01:45 +0100
++
++openjdk-16 (16~27-1) unstable; urgency=medium
++
++  * OpenJDK 16 snapshot, build 27.
++  * Bump standards version.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 03 Dec 2020 16:42:51 +0100
++
++openjdk-16 (16~14-1) experimental; urgency=medium
++
++  * OpenJDK 16 snapshot, build 14.
++  * Build with system harfbuzz.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sat, 07 Nov 2020 14:35:22 +0100
++
++openjdk-15 (15.0.1+9-3) unstable; urgency=medium
++
++  * Don't enabled shenandoahgc explicitly.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sat, 07 Nov 2020 08:54:13 +0100
++
++openjdk-15 (15.0.1+9-2) unstable; urgency=medium
++
++  * Update debian/copyright.
++  * Configure --with-jvm-features=shenandoahgc for hotspot builds.
++    LP: #1902029.
++  * Replace the upstream test suite in the autopkg tests with two superficial
++    tests. It doesn't make any sense to run the whole test suite again,
++    after running it during the build.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 05 Nov 2020 16:55:34 +0100
++
++openjdk-15 (15.0.1+9-1) unstable; urgency=medium
++
++  * OpenJDK 15.0.1 release, build 9.
++  * Build just zero on sparc64 (Adrian Glaubitz). Closes: #965342.
++  * Call strip-nondeterminism before computing jmod hashes (Julian Gilbey).
++  * Don't run the jdk tests as an autopkg test, taking too long.
++    Closes: #970606.
++
++ -- Matthias Klose <doko@ubuntu.com>  Wed, 21 Oct 2020 16:46:35 +0200
++
++openjdk-15 (15+36-1) unstable; urgency=medium
++
++  * OpenJDK 15 release, build 36.
++
++ -- Matthias Klose <doko@ubuntu.com>  Wed, 16 Sep 2020 14:08:36 +0200
++
++openjdk-15 (15~32-2) unstable; urgency=medium
++
++  * debian/copyright (remove licenses not found anymore in the sources):
++    - Little CMS, libpng, GIFLIB.
++  * Stop building zero on armhf, ftbfs.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sun, 19 Jul 2020 10:36:08 +0200
++
++openjdk-15 (15~32-1) unstable; urgency=medium
++
++  * OpenJDK 15 snapshot, build 32.
++  * Build again with -march=zEC12 on Ubuntu/s390x.
++  * Re-add missing parts of the riscv64 patch.
++  * Run the tests on release architectures.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 17 Jul 2020 15:30:05 +0200
++
++openjdk-15 (15~19-1) unstable; urgency=medium
++
++  * OpenJDK 15 snapshot, build 19.
++  * Configure --with-jtreg=/usr/share/jtreg
++  * Build with -march=z13 -mtune=z15 on Ubuntu/s390x.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 16 Apr 2020 11:53:19 +0200
++
++openjdk-15 (15~18-1) unstable; urgency=medium
++
++  * OpenJDK 15 snapshot, build 18.
++    - Stop shipping the rmic command.
++  * Make autopkgtests cross-test-friendly (Steve Langasek). LP: #1861467.
++  * d/tests/jtreg-autopkgtest.in: keep generated hs_err log files
++    with test artifacts to improve later debug (Tiago Stürmer Daitx).
++  * d/tests/jtdiff-autopkgtest.in: set default vm to correctly locate (Tiago
++    Stürmer Daitx)
++  * jhsdb isn't built on sh4 (Adrian Glaubitz). Addresses: #951774.
++  * Enable zero for armhf again.
++  * Enable running the tests again, jtreg now updated to 6.0.
++
++ -- Matthias Klose <doko@ubuntu.com>  Mon, 13 Apr 2020 21:16:21 +0200
++
++openjdk-15 (15~11-1) unstable; urgency=medium
++
++  * OpenJDK 15 snapshot, build 11.
++  * Don't apply the disable-doclint-by-default patch, it should be possible
++    to disable those by command line options.
++  * Don't apply the reproducible-javadoc-timestamp patch. Needs an update.
++  * Refresh patches.
++  * Update all the provides for 15.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 21 Feb 2020 09:48:57 +0100
++
++openjdk-14 (14~36-1) unstable; urgency=medium
++
++  * OpenJDK 14 snapshot, build 36 (first release candidate).
++  * Regenerate the control file. Closes: #942783.
++  * Fix FTCBFS (Helmut Grohne). Closes: #949460.
++    - Missing Build-Depends: zlib1g-dev:native.
++    - Use triplet-prefixed objcopy and strip.
++  * Bump standards version.
++
++ -- Matthias Klose <doko@ubuntu.com>  Tue, 11 Feb 2020 09:08:15 +0100
++
++openjdk-14 (14~32-1) unstable; urgency=medium
++
++  * OpenJDK 14 snapshot, build 32.
++  * Make the generated character data source files reproducible (Emmanuel
++    Bourg). Addresses: #933339.
++  * Make the generated module-info.java files reproducible (Emmanuel Bourg).
++    Addresses: #933342.
++  * Make the generated copyright headers reproducible (Emmanuel Bourg).
++    Addresses: #933349.
++  * Make the build user reproducible (Emmanuel Bourg). Addresses: #933373.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 16 Jan 2020 23:31:42 +0100
++
++openjdk-14 (14~31-1) unstable; urgency=medium
++
++  * OpenJDK 14 snapshot, build 31.
++  * openjdk-14-dbg: Conflict with openjdk-13-dbg as well. Closes: #942783.
++  * Configure with --enable-deprecated-ports=yes on sparc64. Closes: #946723.
++  * disable Zero on sparc64. Closes: #946766.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 09 Jan 2020 15:19:43 +0100
++
++openjdk-14 (14~27-1) unstable; urgency=medium
++
++  * OpenJDK 14 snapshot, build 27.
++  * Fix the jtreg consistency check when building without jtreg.
++  * Don't call dh_strip_nondeterminism when building for older releases.
++  * Fix disabling the zero build on arm64 on trusty.
++  * Re-enable running the tests.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sat, 14 Dec 2019 11:21:53 +0100
++
++openjdk-14 (14~19-1) unstable; urgency=medium
++
++  * OpenJDK 14 snapshot, build 19.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 17 Oct 2019 08:26:17 +0200
++
++openjdk-14 (14~18-1) experimental; urgency=medium
++
++  * OpenJDK 14 snapshot, build 18.
++  * Bump standards version.
++  * Use dh_strip_nondeterminism (Emmanuel Bourg). Addresses: #933389.
++  * Fix 8230708, server build on sparc64 (Adrian Glaubitz). Closes: #939565.
++  * Fix FTBFS with DEB_BUILD_PROFILES=nocheck (Helmut Grohne).
++    Addresses: #939521.
++  * Fix debug and src symlinks. Addresses: #893134, #910694, #910696.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 10 Oct 2019 11:05:23 +0200
++
++openjdk-14 (14~14-2) experimental; urgency=medium
++
++  * OpenJDK 14 snapshot, build 14.
++  * Don't build zero on armhf, still broken.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 12 Sep 2019 17:54:43 +0200
++
++openjdk-14 (14~13-1) experimental; urgency=medium
++
++  * OpenJDK 14 snapshot, build 13.
++  * Properly generate Breaks: rules for bionic (fix typo).
++  * Remove libgtk-3-dev from build-deps: libgtk-3-dev is not actually
++    required, package builds fine without it; libgtk2.0-0 or libgtk-3-0
++    should be explicitly declared instead in bdeps and tests;
++    libxrandr-dev should be explicitly added as it is required and was
++    being included due to libgtk-3-dev dependency.
++  * Set minimum dependency on jtreg based on testsuite requirements.
++  * Fail during pre-build if installed jtreg version is lower then
++    the minimum required version.
++  * Improve and fix build tests and autopkgtests:
++    - Depend on default-jre-headless so jtreg will use the
++      JRE from /usr/default-java; remove JT_JAVA exports as it
++      no longer needs to be set.
++    - Update debian/tests/hotspot,jdk,langtools to ignore
++      jtreg-autopkgtest.sh return code.
++    - Create debian/tests/jtdiff-autopkgtest.in as it depends
++      on debian/rules variables.
++    - debian/tests/jtreg-autopkgtest.sh:
++      + Enable retry of failed tests to trim out flaky tests.
++      + Fix unbound variable.
++      + Keep .jtr files from failed tests only.
++    - debian/tests/jtdiff-autopkgtest.sh:
++      + Fail only if an actual regression is detected.
++      + Add the super-diff comparison from jtdiff.
++    - debian/rules:
++      + Preserve all JTreport directories in the test output
++        directory.
++      + Use JDK_DIR instead of JDK_TO_TEST for autopkgtest
++        generation.
++      + Package all .jtr files from JTwork as jtreg-autopkgtest.sh
++        makes sure it contains only failing tests.
++  * Bump standards version.
++  * Try to build zero on armhf again.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 06 Sep 2019 08:22:27 +0200
++
++openjdk-14 (14~6-0ubuntu1) eoan; urgency=medium
++
++  * OpenJDK 14 snapshot, build 6.
++  * Fix dependency generation on the libjpeg runtime. Addresses: #927965.
++  * Drop dependency on transitional libgl1-mesa-glx package. Addresses: #930611.
++  * Fix more build issues for Ubuntu precise builds.
++  * Don't install jhsdb on riscv64 (Aurelian Jarno).
++  * Tighten dependency on jtreg.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 18 Jul 2019 17:44:41 +0200
++
++openjdk-14 (14~3-1) experimental; urgency=medium
++
++  * OpenJDK 14 snapshot, build 3.
++  * Add riscv64 support for zero (Ed Nevill).
++  * Support using the Java ATK wrapper (Samuel Thibault). Addresses: #900912.
++    - patches/jaw-classpath.diff: Fix finding the Java ATK wrapper.
++    - patches/jaw-optional.diff: Make failing to load the Java ATK wrapper
++      non-fatal.
++  * Apply proposed fix for zero builds.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 28 Jun 2019 12:13:08 +0200
++
++openjdk-14 (14~1-1) experimental; urgency=medium
++
++  * OpenJDK 14 snapshot, build 1.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 14 Jun 2019 10:09:16 +0200
++
++openjdk-13 (13~25-1) experimental; urgency=medium
++
++  * OpenJDK 13 snapshot, build 25.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 14 Jun 2019 09:47:38 +0200
++
++openjdk-13 (13~24-1) experimental; urgency=medium
++
++  * OpenJDK 13 snapshot, build 24.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 07 Jun 2019 09:58:37 +0200
++
++openjdk-13 (13~23-1) experimental; urgency=medium
++
++  * OpenJDK 13 snapshot, build 23.
++  * Fix version number for updated jquery file.
++  * Print some information about the host configuration before starting
++    the build.
++  * Add a watch file (Emmanuel Bourg).
++  * Apply the updated patch for m68k support (Adrian Glaubitz).
++    Closes: #928167.
++  * Apply fix for 8222252, fixing 32bit builds.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 31 May 2019 10:12:20 +0200
++
++openjdk-13 (13~22-1) experimental; urgency=medium
++
++  * OpenJDK 13 snapshot, build 22.
++  * Fix src.zip symlink. Addresses: #923118.
++  * Update patch for m68k support (Adrian Glaubitz). Closes: #928167.
++  * Configure with --with-version-pre='ea' for upstream tags which are
++    not upstream releases (has to be set manually).
++  * Refresh patches.
++
++ -- Matthias Klose <doko@ubuntu.com>  Mon, 27 May 2019 19:44:41 +0200
++
++openjdk-13 (13~18-1) experimental; urgency=medium
++
++  * OpenJDK 13 snapshot, build 18.
++  * Add breaks to the openjdk-13-jre-headless package:
++    - For unattended upgrades: jetty9, netbeans, tomcat8, visualvm.
++    - For eclipse 3.8 removal: eclipse-platform. Addresses: #925071.
++    - For configuration with vendor flag: libreoffice-core.
++  * Add more -dbg package conflicts. Closes: #927745.
++  * Class data sharing is enabled during the build where available.
++    Just use the shipped classes.jsa files. Closes: #927441.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 25 Apr 2019 10:56:56 +0200
++
++openjdk-13 (13~17-2) experimental; urgency=medium
++
++  * Fix the build of the -doc package.
++  * Don't build zero on armhf for now.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 19 Apr 2019 03:00:51 +0200
++
++openjdk-13 (13~17-1) experimental; urgency=medium
++
++  [ Matthias Klose ]
++  * Build the alternate zero VM using the just built hotspot VM.
++  * Remove the icedtea-sound/pulseaudio build support.
++  * Remove some xulrunner build bits.
++  * Annotate the bootstrap dependency with :native.
++  * Fix installation of the -doc package. Closes: #926845, #926917.
++
++  [ Tiago Stürmer Daitx ]
++  * Install swing.properties into <java-home>/conf instead of <java-home>/lib.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 18 Apr 2019 06:33:56 +0200
++
++openjdk-13 (13~14-1) experimental; urgency=medium
++
++  [ Matthias Klose ]
++  * OpenJDK 13 build 14.
++  * Configure with vendor flags.
++  * Update package provides for 12 and 13.
++
++  [ Tiago Stürmer Daitx ]
++  * Revert to GTK2 as default since GTK3 still has padding and
++    component issues. LP: #1770278.
++    - debian/patches/keep-gtk2-as-default.patch: revert upstream so
++      GTK2 is loaded before GTK3 when available.
++    - debian/rules, debian/control: Set jre to depend on libgtk2.0-0
++      and alternatively to libgtk-3-0.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 28 Mar 2019 08:54:33 +0100
++
++openjdk-13 (13~13-1) experimental; urgency=medium
++
++  * OpenJDK 13 build 13.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 21 Mar 2019 14:40:49 +0100
++
++openjdk-13 (13~12-1) experimental; urgency=medium
++
++  * OpenJDK 13 build 12.
++  * Don't apply the m68k-support patch. Needs updates.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sat, 16 Mar 2019 20:59:50 +0100
++
++openjdk-12 (12~33-1) unstable; urgency=medium
++
++  * OpenJDK 12 build 33 (release candidate 2).
++  * Add support for DCEVM on am64 and i386. Addresses: #921419.
++  * openjdk-12-dbg: Conflict with openjdk-11-dbg. Some object files are
++    identical across OpenJDK versions. Closes: #919790.
++  * Check for nodoc instead of nodocs in DEB_BUILD_OPTIONS. Closes: #922761.
++
++ -- Matthias Klose <doko@ubuntu.com>  Tue, 26 Feb 2019 11:24:37 +0100
++
++openjdk-12 (12~32-1) unstable; urgency=medium
++
++  * OpenJDK 12 build 32.
++  * Attribute test dependencies with <!nocheck>.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 14 Feb 2019 17:15:22 +0100
++
++openjdk-12 (12~31-1) unstable; urgency=medium
++
++  * OpenJDK 12 build 31.
++  * Configure with vendor flags.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 07 Feb 2019 11:50:45 +0100
++
++openjdk-12 (12~30-1) unstable; urgency=medium
++
++  * OpenJDK 12 build 30.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 01 Feb 2019 23:30:59 +0100
++
++openjdk-12 (12~29-2) unstable; urgency=medium
++
++  * Fix merging the packaging changes.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 25 Jan 2019 08:38:26 +0100
++
++openjdk-12 (12~29-1) unstable; urgency=medium
++
++  * OpenJDK 12 build 29.
++  * Merge packaging changes from 11.0.2.
++  * Link zero on alpha with --no-relax (Michael Cree). Closes: #920161).
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 24 Jan 2019 09:09:16 +0100
++
++openjdk-12 (12~28-1) unstable; urgency=medium
++
++  * OpenJDK 12 build 28.
++  * jhsdb isn't built on alpha.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 17 Jan 2019 13:28:33 +0100
++
++openjdk-12 (12~27-1) unstable; urgency=medium
++
++  * OpenJDK 12 build 27.
++  * Don't run the tests on alpha, causing build failure.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 10 Jan 2019 12:55:21 +0100
++
++openjdk-12 (12~25-1) unstable; urgency=medium
++
++  * OpenJDK 12 build 25.
++  * Fix Zero on sparc64 (Adrian Glaubitz). Closes: #917008.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sat, 22 Dec 2018 01:12:39 +0100
++
++openjdk-12 (12~24-2) unstable; urgency=medium
++
++  * Pull patches for 8215353 and 8215374, fixing build on i386.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 14 Dec 2018 20:44:28 +0100
++
++openjdk-12 (12~24-1) unstable; urgency=medium
++
++  * OpenJDK 12 build 24.
++  * Re-enable the bootcycle builds for hotspot targets.
++  * Enable bootcycle builds for zero targets.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 14 Dec 2018 19:18:49 +0100
++
++openjdk-12 (12~23-3) unstable; urgency=medium
++
++  * Disable the bootcycle build.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 07 Dec 2018 01:23:44 +0100
++
++openjdk-12 (12~23-1) unstable; urgency=medium
++
++  * OpenJDK 12 build 23.
++  * Update VCS attributes in the control file. Addresses: #909736.
++  * Re-enable the zero build on arm64 and ppc64el.
++  * Configure with --with-jni-libpath.
++  * Enable bootcycle builds for hotspot.
++  * Don't build the test-image target.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 06 Dec 2018 16:37:32 +0100
++
++openjdk-12 (12~22-0ubuntu2) disco; urgency=medium
++
++  * OpenJDK 12 build 22.
++  * Disable zero build on arm64 and ppc64el, ftbfs.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sun, 02 Dec 2018 21:34:27 +0100
++
++openjdk-11 (11.0.1+13-3) unstable; urgency=medium
++
++  * Tighten dependency on debhelper on recent releases. Closes: #911694.
++  * Reproducible properties file header when SOURCE_DATE_EPOCH is specified.
++    Closes: #914278.
++  * Add SOURCE_DATE_EPOCH support to the javadoc tool. Closes: #783938.
++  * Disable AArch64 intrinsics for sin, cos and log. Closes: #910188.
++    LP: #1796982.
++  * Add support for DEB_BUILD_OPTIONS=terse. Closes: #912211.
++
++ -- Matthias Klose <doko@debian.org>  Fri, 30 Nov 2018 11:40:28 +0100
++
++openjdk-11 (11.0.1+13-2) unstable; urgency=high
++
++  * OpenJDK 11.0.1 release.
++
++  [ Tiago Stürmer Daitx ]
++  * debian/rules:
++    - limit the tests that we run for the hotspot, langtools,
++      and jdk testsuites to improve build times and also to
++      prevent running unstable or failing tests.
++    - fix 'if' clause for definition of the TIME command.
++    - remove guava jar from test classpath, no longer required.
++  * debian/control, debian/control.in: add a breaks clause to
++    clojure1.8 <= 1.8.0-7ubuntu1~.
++
++ -- Matthias Klose <doko@ubuntu.com>  Wed, 17 Oct 2018 09:31:38 +0200
++
++openjdk-11 (11~28-3) unstable; urgency=medium
++
++  * Build-depend on testng.
++  * Drop the jdk-freetypeScaler-crash patch. Closes: #905718.
++  * Don't run the tests on armel and mips*. Either too slow, or even
++    crashing the buildds.
++
++ -- Matthias Klose <doko@ubuntu.com>  Wed, 03 Oct 2018 04:24:27 +0200
++
++openjdk-11 (11~28-2) unstable; urgency=medium
++
++  [ Matthias Klose ]
++  * Configure --with-jvm-features=zgc on amd64. Closes: #909560.
++
++  [ Tiago Stürmer Daitx ]
++  * debian/rules: by default leave atk disabled, move accessibility bridge to
++    recommends. LP: #1788250. LP: #1788267.
++  * debian/control.in, debian/control: move accessibility bridge to
++    recommends, add testng and libguava-java as build dependencies.
++  * debian/rules:
++    - copy accessibility files to conf/ (thanks to Samuel Thibault).
++    - update test rules, set output to jtreg-test-output/ as test/ belongs
++      to openjdk source, add jaxp and nashorn, use ProblemList.txt from
++      each testsuite as the exclude list for jtreg, update regex to include
++      into the tarball failed jcstress tests in the Test.java#id123 format,
++      create a tarball with the JTreport directory, add guava jar file to
++      the test classpath.
++  * debian/excludelist.jdk.jtx, excludelist.langtools.jtx: removed, tests
++    now rely on the ProblemList.txt exclusion list that is included in-tree
++    and maintained upstream.
++
++ -- Matthias Klose <doko@ubuntu.com>  Tue, 25 Sep 2018 18:14:28 +0200
++
++openjdk-11 (11~28-1) unstable; urgency=medium
++
++  * OpenJDK 11 build 27.
++
++ -- Matthias Klose <doko@ubuntu.com>  Tue, 04 Sep 2018 14:37:49 +0200
++
++openjdk-11 (11~27-1) unstable; urgency=medium
++
++  * OpenJDK 11 build 27.
++
++ -- Matthias Klose <doko@ubuntu.com>  Mon, 20 Aug 2018 11:30:22 +0200
++
++openjdk-11 (11~24-1) unstable; urgency=medium
++
++  * OpenJDK 11 build 24.
++  * jhsdb is not available on ia64 and m68k either.
++  * Update the m68k support (Adrian Glaubitz). Closes: #904204.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 27 Jul 2018 05:41:39 +0200
++
++openjdk-11 (11~23-1) unstable; urgency=medium
++
++  * OpenJDK 11 build 23.
++  * Explicitly build-depend on libfontconfig1-dev, explicitly depend
++    on libfontconfig1. LP: #1780151.
++  * jhsdb is not available on armel, mipsel and mips64el. Closes: #903631.
++  * Build using GCC 8.
++  * Configure with --with-native-debug-symbols=internal.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 19 Jul 2018 20:03:05 +0200
++
++openjdk-11 (11~22-2) unstable; urgency=medium
++
++  * jhsdb is not available on mips.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 13 Jul 2018 07:48:13 +0200
++
++openjdk-11 (11~22-1) unstable; urgency=medium
++
++  * OpenJDK 11 build 22.
++  * jhsdb is not available on powerpc, s390x and x32.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 12 Jul 2018 17:00:12 +0200
++
++openjdk-11 (11~21-2) unstable; urgency=medium
++
++  * jaotc is only available on amd64 and arm64.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sun, 08 Jul 2018 08:22:34 +0200
++
++openjdk-11 (11~21-1) unstable; urgency=medium
++
++  * OpenJDK 11 build 21.
++  * Fix the jre/jdk split again.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 06 Jul 2018 07:10:53 +0200
++
++openjdk-11 (11~19-1) unstable; urgency=medium
++
++  * OpenJDK 11 build 19.
++
++ -- Matthias Klose <doko@ubuntu.com>  Mon, 25 Jun 2018 11:04:39 +0200
++
++openjdk-11 (11~18-2) unstable; urgency=medium
++
++  * Fix the parallel build with multiple VM variants.
++  * Fix installation of the jre binaries. Closes: #901674.
++
++ -- Matthias Klose <doko@ubuntu.com>  Tue, 19 Jun 2018 06:17:22 +0200
++
++openjdk-11 (11~18-1) unstable; urgency=medium
++
++  * OpenJDK 11 build 18.
++  * Apply fix to build on sparc64. Closes: #901410.
++  * Build again the client VM on i386, limiting parallel make to two cores.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 15 Jun 2018 14:09:40 +0200
++
++openjdk-11 (11~17-2) unstable; urgency=medium
++
++  * Don't build the client VM on i386, fails since build 16.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sat, 09 Jun 2018 21:03:00 +0200
++
++openjdk-11 (11~17-1) unstable; urgency=medium
++
++  * OpenJDK 11 build 17.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 08 Jun 2018 21:14:46 +0200
++
++openjdk-11 (11~16-1) unstable; urgency=medium
++
++  * OpenJDK 11 build 16.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 01 Jun 2018 13:21:38 +0200
++
++openjdk-11 (11~15-1) unstable; urgency=medium
++
++  * OpenJDK 11 build 15.
++
++ -- Matthias Klose <doko@ubuntu.com>  Mon, 28 May 2018 10:57:30 +0200
++
++openjdk-11 (11~13-2) unstable; urgency=medium
++
++  * Stop shipping the appletviewer binary.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sun, 13 May 2018 20:09:17 -0400
++
++openjdk-11 (11~13-1) unstable; urgency=medium
++
++  * OpenJDK 11 build 13.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sun, 13 May 2018 14:41:09 -0400
++
++openjdk-11 (11~12-1) unstable; urgency=medium
++
++  * OpenJDK 11 build 12.
++  * Fix ftbfs on powerpcspe, adjusting the MIN_FLOAT constant (Adrian Glaubitz).
++    Addresses: #897334.
++  * Remove classes.jsa files on package removal. Addresses: #897411.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sat, 05 May 2018 17:31:20 +0200
++
++openjdk-11 (11~11-2) unstable; urgency=medium
++
++  * Drop the alternative build dependency on OpenJDK 9.
++  * Fix again the build on x32, not passing -m32 to the compiler.
++  * Restore parts of the mips-sigset patch which are not yet upstream.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sat, 28 Apr 2018 22:17:34 +0200
++
++openjdk-11 (11~11-1) unstable; urgency=medium
++
++  * OpenJDK 11 build 11.
++  * Stop installing the policytool desktop file. LP: #1766843,
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 27 Apr 2018 08:23:56 +0200
++
++openjdk-11 (11~9-1) unstable; urgency=medium
++
++  * OpenJDK 11 build 9.
++
++  [ Tiago Stürmer Daitx ]
++  * debian/rules: do not compress the element-list api docs as javadoc expects
++    this file to be uncompressed when using '-link' or '-linkoffline'.
++    Closes: #895587.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sun, 15 Apr 2018 06:36:41 +0200
++
++openjdk-11 (11~8-1) unstable; urgency=medium
++
++  * OpenJDK 11 build 8.
++  * Update the s390x-zEC12 patch.
++  * Drop obsolete patches. Closes: #895060.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sun, 08 Apr 2018 10:58:36 +0200
++
++openjdk-11 (11~7-1) unstable; urgency=medium
++
++  * OpenJDK 11 build 7.
++  * Build using gtk 3.0.
++  * Add again ia64 support (Adrian Glaubitz). Closes: #894064.
++
++ -- Matthias Klose <doko@ubuntu.com>  Mon, 02 Apr 2018 08:56:00 +0200
++
++openjdk-11 (11~5-1) unstable; urgency=medium
++
++  * OpenJDK 11 build 5.
++  * Don't pass -m32/-m64 compiler flags explicitly on architectures not
++    understanding these (James Cowgill). Closes: #893089.
++  * Update the zero-x32 patch.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 22 Mar 2018 07:46:26 +0800
++
++openjdk-11 (11~4-2) unstable; urgency=medium
++
++  * Update apport hook name for 11. LP: #1738579.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 15 Mar 2018 14:30:13 +0100
++
++openjdk-11 (11~4-1) unstable; urgency=medium
++
++  * OpenJDK 11 build 4.
++  * Disable the m68k and x32 patches for now (needs an update).
++  * Build with -fpermissive on armel and armhf for now.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 15 Mar 2018 10:30:13 +0100
++
++openjdk-10 (10~46-1) unstable; urgency=medium
++
++  * OpenJDK 10 build 46.
++  * Update patch for m68k (Adrian Glaubitz). Closes: #883570).
++  * Update patch for alpha (Adrian Glaubitz). Closes: #885018).
++  * Drop powerpcspe patch. Closes: #883493.
++  * Work around make-4.2 MAKEFLAGS issue. Closes: #891573.
++
++ -- Matthias Klose <doko@ubuntu.com>  Wed, 14 Mar 2018 18:10:28 +0100
++
++openjdk-10 (10~32-1) experimental; urgency=medium
++
++  * OpenJDK 10 build 32.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sun, 19 Nov 2017 17:52:21 +0100
++
++openjdk-9 (9.0.1+11-1) unstable; urgency=medium
++
++  * OpenJDK 9.0.1+11 release.
++  * Bump standards version.
++  * Configure with an empty --with-version-pre setting. LP: #1722410.
++  * Remove JamVM packaging bits. Closes: #877523.
++  * Remove Shark packaging bits.
++  * Fix java/javac/jar lockups on SMP Alpha (Michael Cree). Closes: #875288.
++  * Fix crashes in i386 applications using JNI due to Hotspot workaround for
++    Exec Shield (Ben Hutchings). Closes: #876069.
++  * Re-enable building altzero architectures: Closes: #874292.
++  * Update the zero-sparc patch (Adrian Glaubitz). Closes: #874265.
++  * Fix recommendation of microhei/zenhei font packages. Closes: #868205.
++  * Move jmod files into the openjdk-jdk-headless package. Closes: #878272.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 27 Oct 2017 01:44:31 +0200
++
++openjdk-9 (9~b181-4) unstable; urgency=medium
++
++  * Fix whitespace in debian/rules. Closes: #873104, #873117.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 24 Aug 2017 19:15:14 +0200
++
++openjdk-9 (9~b181-3) unstable; urgency=medium
++
++  * Fix libjvm.so's .debug file names.
++  * Install an apport hook when building on Ubuntu and derivatives.
++  * Update the disable-doclint patch (Chris West). Closes: #866908.
++  * Configure --with-debug-level=release on m68k as well (Adrian Glaubitz).
++    Closes: #871316.
++  * Drop armel and sparc from the list of alternative zero archs (Adrian
++    Glaubitz). Closes: #871319.
++  * Simplify the zero-sparc patch (Adrian Glaubitz). Closes: #872756.
++  * Remove some obsolete unused patches. Closes: #871606.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 24 Aug 2017 00:42:22 +0200
++
++openjdk-9 (9~b181-2) unstable; urgency=medium
++
++  * Update the jdk-8067331 patch (Adrian Glaubitz). Closes: #871009.
++  * Build zero on armhf again.
++
++ -- Matthias Klose <doko@ubuntu.com>  Mon, 07 Aug 2017 10:28:46 -0400
++
++openjdk-9 (9~b181-1) unstable; urgency=medium
++
++  * OpenJDK 9, b181.
++  * Don't hard-code multiarch-support dependency. Closes: #870521.
++  * Just configure m68k --with-debug-level=slowdebug. Closes: #868255.
++  * Fix atomic_copy64 on powerpc (Andrew Haley). Closes: #870403.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 04 Aug 2017 07:35:49 -0400
++
++openjdk-9 (9~b179-2) unstable; urgency=medium
++
++  * Really configure --with-debug-level=slowdebug on Zero-only architectures.
++    Closes: #868255.
++  * Really enable the zero-sparc patch (Adrian Glaubitz). Closes: #864359.
++  * Try again building zero on arm64 with slowdebug.
++
++ -- Matthias Klose <doko@ubuntu.com>  Mon, 24 Jul 2017 13:20:10 +0200
++
++openjdk-9 (9~b179-1) unstable; urgency=medium
++
++  * OpenJDK 9, b179.
++  * Drop armel as a hotspot architecture. Closes: #864464.
++  * Configure --with-debug-level=slowdebug on Zero-only architectures.
++    Closes: #868255.
++  * Fix recommendation of microhei/zenhei font packages. Closes: #868205.
++  * Enable the zero-sparc patch (Adrian Glaubitz). Closes: #864359.
++  * Update the disable-doclint patch (Chris West). Closes: #866908.
++  * Disable the jamvm autopkg tests.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sat, 22 Jul 2017 11:49:18 +0200
++
++openjdk-9 (9~b177-3) unstable; urgency=medium
++
++  * Fix applying the s390x-thread-stack-size patch.
++
++ -- Matthias Klose <doko@debian.org>  Fri, 07 Jul 2017 19:18:19 +0200
++
++openjdk-9 (9~b177-2) unstable; urgency=medium
++
++  * Try to build zero again on amd64, arm64, ppc64el and s390x.
++  * Keep the conf/* symlinks in the JAVA_HOME directory.
++    Closes: #866924, #863080.
++  * Drop armel from the list of hotspot architectures. See #864464.
++  * Stop using deprecated GNOME libraries. Closes: #850268.
++  * Apply sparc64 build fixes (Adrian Glaubitz). Closes: #864351.
++  * Update the zero-sparc patch (Adrian Glaubitz). Closes: #864359.
++  * Update the m68k-support patch (Adrian Glaubitz). Closes: #864595.
++  * Disable generation of jvmti.html on m68k (Adrian Glaubitz).
++    Closes: #864596.
++  * Update the zero-sh patch (Adrian Glaubitz). Closes: #864643.
++  * Update the jdk-target-arch-define patch. Closes: #865129.
++  * Provide jvmdir symlink in /usr/lib/debug. Addresses: #867314.
++  * Fix pt_BR translation in awt message. Addresses: #863331.
++  * Drop the 8073754-stack-overflow-9-build patch. Closes: #864288.
++  * Use sigset_t to store the signals used by the JVM (James Cowgill).
++    Closes: #841173.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 07 Jul 2017 12:28:53 +0200
++
++openjdk-9 (9~b177-1) unstable; urgency=medium
++
++  * OpenJDK 9, b177.
++
++ -- Matthias Klose <doko@debian.org>  Fri, 07 Jul 2017 02:18:33 +0000
++
++openjdk-9 (9~b170-2) unstable; urgency=medium
++
++  * OpenJDK 9, b170.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 18 May 2017 11:57:43 -0700
++
++openjdk-9 (9~b169-1) unstable; urgency=medium
++
++  * OpenJDK 9, b169.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sun, 14 May 2017 10:11:24 -0700
++
++openjdk-9 (9~b168-1) unstable; urgency=medium
++
++  * OpenJDK 9, b168.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 05 May 2017 14:33:09 +0200
++
++openjdk-9 (9~b164-1) unstable; urgency=medium
++
++  * OpenJDK 9, b164.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sat, 08 Apr 2017 21:39:41 +0200
++
++openjdk-9 (9~b161-1) unstable; urgency=medium
++
++  * OpenJDK 9, b161.
++  * Don't build the zero JRE on Ubuntu/s390x.
++  * Fix changelog format.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 17 Mar 2017 00:09:34 +0100
++
++openjdk-9 (9~b159-1) unstable; urgency=medium
++
++  * OpenJDK 9, b159.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 03 Mar 2017 19:03:10 +0100
++
++openjdk-9 (9~b158-1) unstable; urgency=medium
++
++  * OpenJDK 9, b158.
++  * Add OpenJDK Stack Unwinder and Frame Decorator for gdb.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sun, 26 Feb 2017 18:57:42 +0100
++
++openjdk-9 (9~b155-1) unstable; urgency=medium
++
++  * OpenJDK 9, b155.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 03 Feb 2017 07:56:11 +0100
++
++openjdk-9 (9~b154-1) unstable; urgency=medium
++
++  * OpenJDK 9, b154.
++  * Fix libjpeg dependency. Closes: #852420.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 26 Jan 2017 23:33:55 +0100
++
++openjdk-9 (9~b153-2) unstable; urgency=medium
++
++  * Lower cpu requirements for Debian/s390x.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sat, 21 Jan 2017 21:52:52 +0100
++
++openjdk-9 (9~b153-1) unstable; urgency=medium
++
++  * OpenJDK 9, b153.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 20 Jan 2017 14:39:18 +0100
++
++openjdk-9 (9~b151-2) unstable; urgency=medium
++
++  * Fix builds with zero and jamvm as an alternate VM.
++
++ -- Matthias Klose <doko@ubuntu.com>  Tue, 10 Jan 2017 15:40:20 +0100
++
++openjdk-9 (9~b151-1) experimental; urgency=medium
++
++  * OpenJDK 9, b151.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sun, 08 Jan 2017 23:16:21 +0100
++
++openjdk-9 (9~b149-1) experimental; urgency=medium
++
++  * OpenJDK 9, b149.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sat, 17 Dec 2016 10:58:22 +0100
++
++openjdk-9 (9~b148-1) experimental; urgency=medium
++
++  * OpenJDK 9, b148.
++
++ -- Matthias Klose <doko@ubuntu.com>  Mon, 12 Dec 2016 14:04:02 +0000
++
++openjdk-9 (9~b147-1) experimental; urgency=medium
++
++  * OpenJDK 9, b147.
++  * Use sigset_t to store the signals used by the JVM (James Cowgill).
++    Addresses: #841173.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sat, 03 Dec 2016 15:41:51 +0100
++
++openjdk-9 (9~b144-1) experimental; urgency=medium
++
++  * OpenJDK 9, b144.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 11 Nov 2016 14:43:48 +0100
++
++openjdk-9 (9~b143-2) experimental; urgency=medium
++
++  * Fix 8168567, unbreaking the build on arm64.
++
++ -- Matthias Klose <doko@ubuntu.com>  Mon, 07 Nov 2016 15:46:43 +0100
++
++openjdk-9 (9~b143-1) experimental; urgency=medium
++
++  * OpenJDK 9, b143.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sun, 06 Nov 2016 22:36:28 +0100
++
++openjdk-9 (9~b142-1) experimental; urgency=medium
++
++  * OpenJDK 9, b142.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sat, 29 Oct 2016 12:03:19 +0200
++
++openjdk-9 (9~b140-2) experimental; urgency=medium
++
++  * Don't build zero on ppc64 and ppc64el (fails to build).
++
++ -- Matthias Klose <doko@ubuntu.com>  Wed, 19 Oct 2016 17:02:37 +0200
++
++openjdk-9 (9~b140-1) experimental; urgency=medium
++
++  * OpenJDK 9, b140.
++
++ -- Matthias Klose <doko@ubuntu.com>  Mon, 17 Oct 2016 12:01:47 +0200
++
++openjdk-9 (9~b139-1) experimental; urgency=medium
++
++  * OpenJDK 9, b139.
++  * Stop building zero on amd64, fails to build with hardening defaults.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sun, 09 Oct 2016 10:03:18 +0200
++
++openjdk-9 (9~b136-1ubuntu1) yakkety; urgency=medium
++
++  * 8165323: (fs) Files.getFileStore fails with "Mount point not found" in
++    chroot environment
++
++ -- Matthias Klose <doko@ubuntu.com>  Wed, 21 Sep 2016 16:20:45 +0200
++
++openjdk-9 (9~b136-1) experimental; urgency=medium
++
++  * OpenJDK 9, b136.
++
++ -- Matthias Klose <doko@ubuntu.com>  Mon, 19 Sep 2016 20:33:07 +0200
++
++openjdk-9 (9~b135-1) experimental; urgency=medium
++
++  * OpenJDK 9, b135.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sat, 10 Sep 2016 03:56:51 +0200
++
++openjdk-9 (9~b134-2ubuntu1) yakkety; urgency=medium
++
++  * Explicitly turn off stack-protector for zero builds.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 08 Sep 2016 17:21:13 +0200
++
++openjdk-9 (9~b134-2) experimental; urgency=medium
++
++  * Build using GCC 6.
++  * Enable zero build on arm64 and ppc64el.
++  * Increase thread stack size for ppc* zero builds.
++  * Don't use Solaris compiler flags on sparc64.
++  * Port x32 zero patch.
++  * Don't use the just built jdk for zero builds.
++  * Don't use getFileStore() during the build, chroots throw an
++    exception while running jlink.
++  * Fix removal of jre-headless alternatives. Closes: #788445.
++
++ -- Matthias Klose <doko@ubuntu.com>  Mon, 05 Sep 2016 14:14:01 +0200
++
++openjdk-9 (9~b133-2) experimental; urgency=medium
++
++  * Don't do bootcycle builds for zero builds.
++  * Fix macro settings for zero builds.
++
++ -- Matthias Klose <doko@ubuntu.com>  Wed, 31 Aug 2016 18:34:51 +0200
++
++openjdk-9 (9~b133-1) experimental; urgency=medium
++
++  * OpenJDK 9, b133.
++
++ -- Matthias Klose <doko@ubuntu.com>  Mon, 29 Aug 2016 14:25:48 +0200
++
++openjdk-9 (9~b130-1) experimental; urgency=medium
++
++  * OpenJDK 9, b130.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sun, 07 Aug 2016 23:27:51 +0200
++
++openjdk-9 (9~b124-1) experimental; urgency=medium
++
++  * OpenJDK 9, b124.
++  * Fix an issue with libatk-wrapper (Samuel Thibault). Closes: #827796.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sat, 28 May 2016 22:30:12 +0200
++
++openjdk-9 (9~b117-1) experimental; urgency=medium
++
++  * OpenJDK 9, b117.
++  * Fix zero builds, next try.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 05 May 2016 23:10:57 +0200
++
++openjdk-9 (9~b116-1) experimental; urgency=medium
++
++  * OpenJDK 9, b116.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 29 Apr 2016 00:41:04 +0200
++
++openjdk-9 (9~b115-2) experimental; urgency=medium
++
++  * Fix zero builds:
++    - Backport 8132051, 8146518, 8150654, 8154210 from the hs repo.
++    - Apply proposed patch for 8153275.
++  * Set initial VMThreadStackSize to 1600 on s390x.
++  * Tighten openjdk build dependency on s390x.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sat, 23 Apr 2016 23:09:19 +0200
++
++openjdk-9 (9~b115-1) experimental; urgency=medium
++
++  * OpenJDK 9, b115.
++  * Fix header file conflict. Closes: #816440. LP: #1550950.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 21 Apr 2016 23:48:04 +0200
++
++openjdk-9 (9~b114-0ubuntu1) xenial; urgency=medium
++
++  * OpenJDK 9, b114.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 14 Apr 2016 21:02:34 +0200
++
++openjdk-9 (9~b113-1) experimental; urgency=medium
++
++  * OpenJDK 9, b113.
++
++ -- Matthias Klose <doko@ubuntu.com>  Wed, 13 Apr 2016 20:58:18 +0200
++
++openjdk-9 (9~b112-3) experimental; urgency=medium
++
++  * Fix zero builds, apply proposed patch for JDK-8153275.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 01 Apr 2016 18:39:09 +0200
++
++openjdk-9 (9~b112-2) experimental; urgency=medium
++
++  * OpenJDK 9, b112.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 31 Mar 2016 15:44:43 +0200
++
++openjdk-9 (9~b107-1) experimental; urgency=medium
++
++  * OpenJDK 9, b107.
++  * Build-depend on openjdk-9-jdk-headless <cross>.
++  * Build with GCC 5 on mips*.
++  * Split out an openjdk-9-jdk-headless package.
++  * Update libgconf/libgnome jre recommendations. Addresses: #813943.
++  * Update package reference in README. Addresses: #814605.
++  * Add french translation for policytool desktop file. Addresses: #813851.
++  * Install app icons again.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sat, 27 Feb 2016 11:55:04 +0100
++
++openjdk-9 (9~b102-1) experimental; urgency=medium
++
++  * OpenJDK 9, b102.
++
++ -- Matthias Klose <doko@ubuntu.com>  Tue, 26 Jan 2016 13:33:16 +0100
++
++openjdk-9 (9~b101-2ubuntu2) xenial; urgency=medium
++
++  * Don't build zero on arm64.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sun, 17 Jan 2016 11:17:19 +0100
++
++openjdk-9 (9~b101-2ubuntu1) xenial; urgency=medium
++
++  * Ignore installing jsadebugd.1.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sun, 17 Jan 2016 10:33:06 +0100
++
++openjdk-9 (9~b101-2) experimental; urgency=medium
++
++  * Disable the zero build on ppc64el, currently fails to build.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sat, 16 Jan 2016 10:30:18 +0100
++
++openjdk-9 (9~b101-1) experimental; urgency=medium
++
++  * OpenJDK 9, b101.
++  * Fix cross builds.
++  * Build again using GCC 4.9 on mips*, fails to build with GCC 5.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 15 Jan 2016 12:25:14 +0100
++
++openjdk-9 (9~b96-1) experimental; urgency=medium
++
++  * OpenJDK 9, b96.
++  * openjdk-9-jdk: Fix typo in sdk provides. Addresses: #803150.
++  * Build using giflib 5.
++  * Build using GCC 5 everywhere.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sun, 13 Dec 2015 17:45:17 +0100
++
++openjdk-9 (9~b94-1) experimental; urgency=medium
++
++  * OpenJDK 9, b94.
++  * Update configury for sparc64 (Steven Chamberlain). Addresses: #806202.
++  * Fix stripping packages (use bash instead of expr substring).
++
++ -- Matthias Klose <doko@ubuntu.com>  Tue, 01 Dec 2015 11:05:27 +0100
++
++openjdk-9 (9~b88-1) experimental; urgency=medium
++
++  * OpenJDK 9, b88.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sun, 25 Oct 2015 02:38:14 +0200
++
++openjdk-9 (9~b87-2) wily; urgency=medium
++
++  * Prefer openjdk-8-jdk for the build.
++
++ -- Matthias Klose <doko@ubuntu.com>  Tue, 20 Oct 2015 14:21:25 +0200
++
++openjdk-9 (9~b87-1) experimental; urgency=medium
++
++  * OpenJDK 9, b87.
++  * Build the client hotspot on i386.
++
++ -- Matthias Klose <doko@ubuntu.com>  Mon, 19 Oct 2015 17:58:08 +0200
++
++openjdk-9 (9~b80-2) experimental; urgency=medium
++
++  * Fix build for armel, armhf and "unknown" zero architectures.
++  * Fix build error on AArch64.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sat, 05 Sep 2015 20:16:45 +0200
++
++openjdk-9 (9~b80-1) experimental; urgency=medium
++
++  * OpenJDK 9, b80.
++  * Fix installing the openjdk.desktop file when cautious-launch is available.
++  * Define _alpha_ / _sh_ preprocessor macros instead of alpha / sh.
++  * Re-enable the atk bridge for releases with a fixed atk bridge.
++  * Make derivatives builds the same as the parent distro.
++  * Add m68k support for Zero (Andreas Schwab).
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 04 Sep 2015 19:27:56 +0200
++
++openjdk-9 (9~b74-1) experimental; urgency=medium
++
++  * OpenJDK 9, b74.
++  * Fix jdk build on x32.
++  * JDK-8073754, increase stack size limits on powerpc and ppc64.
++  * Configure --with-boot-jdk-jvmargs="-XX:ThreadStackSize=2240" on
++    powerpc and ppc64.
++
++ -- Matthias Klose <doko@ubuntu.com>  Mon, 27 Jul 2015 20:43:48 +0200
++
++openjdk-9 (9~b71-1) experimental; urgency=medium
++
++  * OpenJDK 9, b71.
++  * openjdk-9-jre: Recommend the real libgconf2-4 and libgnome2-0 packages.
++    Addresses: #786594.
++
++ -- Matthias Klose <doko@ubuntu.com>  Mon, 06 Jul 2015 17:29:39 +0200
++
++openjdk-9 (9~b68-4) experimental; urgency=medium
++
++  * Fix 32bit detection for the build jdk; try to build again for mips
++    and mipsel (James Cowgill).
++  * openjdk-jre-headless: Add dependency on the package containing the
++    mountpoint binary.
++
++ -- Matthias Klose <doko@ubuntu.com>  Mon, 22 Jun 2015 22:09:17 +0200
++
++openjdk-9 (9~b68-3) experimental; urgency=medium
++
++  * Enable bootcycle zero builds everywhere.
++  * Re-enable running the testsuite.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 18 Jun 2015 23:55:33 +0200
++
++openjdk-9 (9~b68-2) experimental; urgency=medium
++
++  * Fix 8080684, PPC64 little-endian build.
++  * Fix installation of zero based builds.
++
++ -- Matthias Klose <doko@ubuntu.com>  Wed, 17 Jun 2015 19:03:31 +0200
++
++openjdk-9 (9~b68-1) experimental; urgency=medium
++
++  * OpenJDK 9, b68.
++  * Fix the build on AArch64 (Ed Nevill).
++
++ -- Matthias Klose <doko@ubuntu.com>  Tue, 16 Jun 2015 11:39:02 +0200
++
++openjdk-9 (9~b64-1) experimental; urgency=medium
++
++  * OpenJDK 9, b64.
++  * Fix build error in zero.
++
++ -- Matthias Klose <doko@ubuntu.com>  Mon, 18 May 2015 17:30:20 +0200
++
++openjdk-8 (8u45-b14-2) unstable; urgency=medium
++
++  * Fix JamVM with 8u45. Closes: #766284.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sun, 10 May 2015 19:28:41 +0200
++
++openjdk-8 (8u45-b14-1) unstable; urgency=medium
++
++  * Update to 8u45-b14.
++  * Update AArch64 to (post) 8u45-b14.
++  * Make libnss3-dev installable on precise (Thorsten Glaser). LP: #1411630.
++  * Only install the openjdk-java.desktop file when using cautious-launcher.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sun, 19 Apr 2015 16:31:44 +0200
++
++openjdk-8 (8u40-b27-1) unstable; urgency=medium
++
++  * Update to 8u40-b27.
++  * Update AArch64 to (post) 8u40-b25.
++  * Fix libjavajpeg build using the system jpeg library. Closes: #760926.
++
++ -- Matthias Klose <doko@ubuntu.com>  Tue, 17 Mar 2015 01:19:45 +0100
++
++openjdk-8 (8u40~b22-1ubuntu1) vivid; urgency=medium
++
++  * Update AArch64 to 8u40-b22.
++  * Update the alpha float patch.
++  * Fix JDK-8067330, ZERO_ARCHDEF incorrectly defined for PPC/PPC64
++    architectures.
++  * Fix JDK-8067331, Zero: Atomic::xchg and Atomic::xchg_ptr need
++    full memory barrier.
++  * Build using OpenJDK-8.
++
++ -- Matthias Klose <doko@ubuntu.com>  Tue, 27 Jan 2015 14:59:00 +0100
++
++openjdk-8 (8u40~b22-1) unstable; urgency=medium
++
++  * Update to 8u40-b22.
++  * Fix build on mips64 and mips64el. Closes: #776295.
++  * Don't strip libjvm.so to prevent rejection by ftp-master (work around,
++    but no fix in the archive). Addresses: #775760.
++  * Fix jamvm to work with recent security updates. Closes: #766284.
++
++ -- Matthias Klose <doko@ubuntu.com>  Mon, 26 Jan 2015 16:59:37 +0100
++
++openjdk-8 (8u40~b21-1) unstable; urgency=medium
++
++  * Update to 8u40-b21.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 15 Jan 2015 12:14:18 +0100
++
++openjdk-8 (8u40~b10-1) unstable; urgency=medium
++
++  * Fix libjpeg runtime dependency.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 16 Oct 2014 08:38:13 +0200
++
++openjdk-8 (8u40~b09-1) unstable; urgency=medium
++
++  * Update to 8u40-b09.
++  * Update the AArch64 hotspot to 8u40-b09.
++  * Allow to build for Ubuntu 12.04 LTS.
++  * Change B-D to libjpeg-dev to finish the transition to libjpeg-turbo
++    (Ondřej Surý). Closes: #763490.
++  * Backport the fix for 8017773 OpenJDK returns incorrect TrueType
++    font metrics. Closes: #762323.
++  * Depend on libnss3 instead of libnss3-1d for recent releases.
++    Addresses: #760122.
++
++ -- Matthias Klose <doko@ubuntu.com>  Tue, 14 Oct 2014 12:39:18 +0200
++
++openjdk-8 (8u40~b04-2) unstable; urgency=medium
++
++  * Remove AArch64 patch applied upstream.
++  * Update the kfresbsd jdk patch, still not forwarded upstream.
++
++ -- Matthias Klose <doko@ubuntu.com>  Tue, 09 Sep 2014 17:08:32 +0200
++
++openjdk-8 (8u40~b04-1) experimental; urgency=medium
++
++  * Update to 8u40-b04.
++  * Backport 8050942, implement template interpreter for ppc64le.
++  * Build-depend on systemtap-sdt-dev.
++
++ -- Matthias Klose <doko@ubuntu.com>  Wed, 03 Sep 2014 21:11:27 +0200
++
++openjdk-8 (8u20-b26-1) experimental; urgency=medium
++
++  * 8u20 build 26 is the final 8u20 release.
++  * Update the AArch64 hotspot.
++  * Fix applying the kfreebsd patch for JamVM.
++  * x32 build fixes.
++  * Allow openjdk-8-jdk as an alternative build dependency.
++  * Adjust timeouts for jtreg runs.
++
++ -- Matthias Klose <doko@ubuntu.com>  Wed, 20 Aug 2014 10:34:55 +0200
++
++openjdk-8 (8u20~b26-1) experimental; urgency=medium
++
++  * Update to 8u20-b26.
++  * Update to JamVM 2.0.0.
++  * Update to IcedTea-Sound 1.0.1.
++  * Update toplevel configury to recognize zero archs alpha, mips*,
++    m68k, sh4.
++  * Update kfreebsd-support patches (Steven Chamberlain).
++  * Fix an uninitialized memory issue in adlc (Fridrich Strba).
++  * Move libjavagtk into the -jre package.
++  * Use the system libpcsclite library.
++  * Fix typo, ignoring boot cycle builds (Emmanuel Bourg).
++  * Derive the update version and the build number from the package
++    version (Emmanuel Bourg).
++  * Call quilt with --quiltrc -. Closes: #755710.
++  * openjdk-8-jdk: Fix src.zip symlink. Closes: #755869.
++
++ -- Matthias Klose <doko@ubuntu.com>  Thu, 31 Jul 2014 19:51:35 +0200
++
++openjdk-8 (8u20~b20-2) experimental; urgency=medium
++
++  * Work around OpenJDK's build system which is not robust enough
++    to accept commas in *FLAGS.
++  * Pass extra flags for non-hotspot builds.
++  * Fix the zero build on i386.
++  * Don't add extra symlinks for the jni_{md,jawt}.h header files.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 11 Jul 2014 20:30:54 +0200
++
++openjdk-8 (8u20~b20-1) experimental; urgency=medium
++
++  * Initial OpenJDK 8 packaging, based on 8u20-b20.
++  * Fix hotspot build system for GNU make 4.0 (Emmanuel Bourg).
++  * Drop rhino (build) dependencies (Emmanuel Bourg).
++  * Add java8 provides (Emmanuel Bourg).
++  * Add IcedTea patches to build with external jpeg, png and lcms
++    libraries (Emmanuel Bourg).
++  * Add keywords to the desktop files (Emmanuel Bourg).
++  * Remove the suggested dependency on sun-java6-fonts ((Emmanuel Bourg).
++  * Build hotspot on ppc64 and ppc64el.
++  * Add the IcedTea Sound tarball.
++  * Don't strip files when building the images.
++  * Update patches to pass the extra flags to the libsig and libsaproc builds.
++  * Use dh_strip's knowledge about build ids when available.
++
++ -- Matthias Klose <doko@ubuntu.com>  Wed, 09 Jul 2014 20:11:18 +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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  Wed, 09 Oct 2013 16:29:15 +0200
++
++openjdk-7 (7u25-2.3.12-4ubuntu1) saucy; urgency=low
++
++  * Regenerate the control file.
++
++ -- Matthias Klose <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <drazzib@debian.org>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  Fri, 02 Aug 2013 15:55:01 +0200
++
++openjdk-7 (7u25-2.3.10-2ubuntu1) saucy; urgency=low
++
++  * Regenerate the control file.
++
++ -- Matthias Klose <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@debian.org>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  Mon, 01 Apr 2013 00:39:58 +0200
++
++openjdk-7 (7u17-2.3.8-1ubuntu1) raring; urgency=low
++
++  * Regenerate the control file.
++
++ -- Matthias Klose <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <jamie@ubuntu.com>  Wed, 06 Mar 2013 14:12:03 -0600
++
++openjdk-7 (7u15-2.3.7-1ubuntu1) raring; urgency=low
++
++  * Regenerate the control file.
++
++ -- Matthias Klose <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  Tue, 15 Jan 2013 23:38:48 +0100
++
++openjdk-7 (7u9-2.3.3-1) experimental; urgency=low
++
++  * Upload to experimental.
++
++ -- Matthias Klose <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  Wed, 19 Sep 2012 17:42:39 +0200
++
++openjdk-7 (7u7-2.3.2a-1) experimental; urgency=low
++
++  * Upload to experimental.
++
++ -- Matthias Klose <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <drazzib@debian.org>  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 <drazzib@debian.org>  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 <drazzib@debian.org>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <drazzib@debian.org>  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 <drazzib@debian.org>  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 <drazzib@debian.org>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <drazzib@debian.org>  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 <drazzib@debian.org>  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 <drazzib@debian.org>  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 <drazzib@debian.org>  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 <drazzib@debian.org>  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 <drazzib@debian.org>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <drazzib@debian.org>  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 <drazzib@debian.org>  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 <drazzib@debian.org>  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 <drazzib@debian.org>  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 <jk@jk.fr.eu.org> 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 <doko@ubuntu.com>  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 <ChrisPhi@lgonqn.org>.
++  * 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 <doko@ubuntu.com>  Sun, 17 Jul 2011 16:08:51 +0200
++
++openjdk-7 (7~b143-2.0~pre1-2) experimental; urgency=low
++
++  * Upload to experimental.
++
++ -- Matthias Klose <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  Sun, 29 May 2011 12:37:03 +0200
++
++openjdk-7 (7~b136-2.0~pre1-1ubuntu1) oneiric; urgency=low
++
++  * Upload to oneiric.
++
++ -- Matthias Klose <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <drazzib@debian.org>  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 <doko@ubuntu.com>  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 <drazzib@debian.org>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <drazzib@debian.org>  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 <drazzib@debian.org>  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 <drazzib@debian.org>  Mon, 24 Jan 2011 00:18:38 +0100
++
++openjdk-7 (7b106~pre1-0lucid2) lucid; urgency=low
++
++  * Build for lucid.
++
++ -- Matthias Klose <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  Tue, 05 Apr 2011 12:20:36 +0200
++
++openjdk-6 (6b22-1.10.1~pre1-1) experimental; urgency=low
++
++  *  Upload to experimental.
++
++ -- Matthias Klose <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  Sat, 05 Mar 2011 16:13:40 +0100
++
++openjdk-6 (6b22-1.10-1) experimental; urgency=low
++
++  * Upload to experimental.
++
++ -- Matthias Klose <doko@ubuntu.com>  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 <doko@ubuntu.com>  Fri, 04 Mar 2011 15:32:50 +0100
++
++openjdk-6 (6b22-1.10-0ubuntu1) natty; urgency=low
++
++  * IcedTea6 1.10 release.
++
++ -- Matthias Klose <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  Fri, 18 Feb 2011 15:55:41 +0100
++
++openjdk-6 (6b21~pre1-1) experimental; urgency=low
++
++  * Upload to experimental.
++
++ -- Matthias Klose <doko@ubuntu.com>  Sat, 22 Jan 2011 15:34:21 +0100
++
++openjdk-6 (6b21~pre1-0ubuntu1) natty; urgency=low
++
++  * Update to 6b21.
++
++ -- Matthias Klose <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  Wed, 20 Oct 2010 17:45:09 +0200
++
++openjdk-6 (6b20-1.10~pre1-0ubuntu2) natty; urgency=low
++
++  * Build with hotspot 19.
++
++ -- Matthias Klose <doko@ubuntu.com>  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 <doko@ubuntu.com>  Wed, 13 Oct 2010 08:36:44 +0200
++
++openjdk-6 (6b20-1.9.2-1) experimental; urgency=low
++
++  * Upload to experimental.
++
++ -- Matthias Klose <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  Mon, 18 Oct 2010 16:07:48 +0200
++
++openjdk-6 (6b20-1.9.1-1) experimental; urgency=low
++
++  * Upload to experimental.
++
++ -- Matthias Klose <doko@ubuntu.com>  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 <doko@ubuntu.com>  Tue, 12 Oct 2010 12:13:40 +0200
++
++openjdk-6 (6b20-1.9-1) experimental; urgency=low
++
++  * Upload to experimental.
++
++ -- Matthias Klose <doko@ubuntu.com>  Tue, 07 Sep 2010 21:19:21 +0200
++
++openjdk-6 (6b20-1.9-0ubuntu1) maverick; urgency=low
++
++  * IcedTea6 1.9 release.
++
++ -- Matthias Klose <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  Thu, 29 Jul 2010 00:10:53 +0200
++
++openjdk-6 (6b20~pre1-2) experimental; urgency=low
++
++  * Upload to experimental.
++
++ -- Matthias Klose <doko@ubuntu.com>  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 <doko@ubuntu.com>  Thu, 15 Jul 2010 12:40:10 +0200
++
++openjdk-6 (6b20~pre1-1) experimental; urgency=low
++
++  * Upload to experimental.
++
++ -- Matthias Klose <doko@ubuntu.com>  Mon, 28 Jun 2010 00:50:58 +0200
++
++openjdk-6 (6b20~pre1-0ubuntu2) maverick; urgency=low
++
++  * Shark & CACAO build fixes.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 25 Jun 2010 02:27:10 +0200
++
++openjdk-6 (6b20~pre1-0ubuntu1) maverick; urgency=low
++
++  * Update to 6b20 code drop.
++
++ -- Matthias Klose <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  Sun, 02 May 2010 12:03:01 +0200
++
++openjdk-6 (6b18-1.8-2ubuntu1) maverick; urgency=low
++
++  * Upload to maverick.
++
++ -- Matthias Klose <doko@ubuntu.com>  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 <doko@ubuntu.com>  Sat, 01 May 2010 12:35:19 +0200
++
++openjdk-6 (6b18-1.8-1) unstable; urgency=low
++
++  * Upload to unstable.
++
++ -- Matthias Klose <doko@ubuntu.com>  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 <java_home>/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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  Wed, 31 Mar 2010 22:21:49 +0200
++
++openjdk-6 (6b18~pre4-1) unstable; urgency=high
++
++  * Upload to unstable.
++
++ -- Matthias Klose <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  Sun, 21 Mar 2010 22:52:12 +0100
++
++openjdk-6 (6b18~pre2-1ubuntu2) lucid; urgency=low
++
++  * Fix build failure on ARM.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 12 Mar 2010 15:19:13 +0100
++
++openjdk-6 (6b18~pre2-1ubuntu1) lucid; urgency=low
++
++  * Upload to lucid.
++
++ -- Matthias Klose <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <twerner@debian.org>  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 <twerner@debian.org>  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 <twerner@debian.org>  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 <doko@ubuntu.com>  Sat, 20 Feb 2010 15:36:06 +0100
++
++openjdk-6 (6b18~pre1-1) unstable; urgency=low
++
++  * Upload to unstable.
++
++ -- Matthias Klose <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  Sun, 31 Jan 2010 21:56:59 +0100
++
++openjdk-6 (6b18~pre1-1) unstable; urgency=low
++
++  * Upload to unstable.
++
++ -- Matthias Klose <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  Sun, 31 Jan 2010 21:56:59 +0100
++
++openjdk-6 (6b17-1.7-1) unstable; urgency=low
++
++  * Upload to unstable.
++
++ -- Matthias Klose <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  Thu, 24 Dec 2009 12:43:00 +0100
++
++openjdk-6 (6b17~pre3-1ubuntu1) lucid; urgency=low
++
++  * Upload to lucid.
++
++ -- Matthias Klose <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  Tue, 15 Dec 2009 16:41:12 +0100
++
++openjdk-6 (6b17~pre2-1) unstable; urgency=low
++
++  * Upload to unstable.
++
++ -- Matthias Klose <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <args>). 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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  Sat, 26 Sep 2009 16:01:48 +0200
++
++openjdk-6 (6b16-1.6.1-1) unstable; urgency=low
++
++  * Upload to Debian unstable.
++
++ -- Matthias Klose <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  Wed, 09 Sep 2009 22:18:38 +0200
++
++openjdk-6 (6b16-1.6~pre2-1) unstable; urgency=low
++
++  * Upload to unstable.
++
++ -- Matthias Klose <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  Mon, 02 Mar 2009 16:18:01 +0100
++
++openjdk-6 (6b14-0ubuntu16) jaunty; urgency=low
++
++  * Regenerate auto files.
++
++ -- Matthias Klose <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  Fri, 13 Feb 2009 10:13:55 +0100
++
++openjdk-6 (6b14-0ubuntu13) jaunty; urgency=low
++
++  * Really configure with --disable-nio2.
++
++ -- Matthias Klose <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  Tue, 10 Feb 2009 15:29:22 +0100
++
++openjdk-6 (6b14-0ubuntu10) jaunty; urgency=low
++
++  * Explicitely remove PulseAudioMuteControl.java.
++
++ -- Matthias Klose <doko@ubuntu.com>  Mon, 26 Jan 2009 22:09:21 +0100
++
++openjdk-6 (6b14-0ubuntu9.1) jaunty; urgency=low
++
++  * Test build.
++
++ -- Matthias Klose <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  Tue, 11 Nov 2008 12:39:16 +0100
++
++openjdk-6 (6b12-1~exp1) experimental; urgency=low
++
++  * Update IcedTea build infrastructure (20081025).
++
++ -- Matthias Klose <doko@ubuntu.com>  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 <doko@ubuntu.com>  Fri, 24 Oct 2008 23:06:32 +0200
++
++openjdk-6 (6b12-0ubuntu5) intrepid; urgency=low
++
++  * Update IcedTea build infrastructure (20081024).
++    - Add --pkgversion=<package version> configure option.
++    - IcedTeaPlugin fixes.
++    - Fix xjc regressions.
++  * openjdk-jre-headless: Depend on ca-certificates-java.
++  * Configure with --pkgversion=<package version> to encode the package
++    version in the -version output and in vm dumps.
++  * cacao: Handle VM options Xverify:all and Xverify:none.
++  
++ -- Matthias Klose <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  Wed, 15 Oct 2008 19:49:05 +0000
++
++openjdk-6 (6b12~pre2-1) experimental; urgency=low
++
++  * Upload to experimental.
++
++ -- Matthias Klose <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  Thu, 24 Jul 2008 17:58:53 +0200
++
++openjdk-6 (6b11-1ubuntu1) intrepid; urgency=low
++
++  * Regenerate the control file.
++
++ -- Matthias Klose <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <twerner@debian.org>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  Tue, 11 Mar 2008 21:39:27 +0100
++
++openjdk-6 (6b06-0ubuntu7) hardy; urgency=low
++
++  * Build-depend on unzip.
++
++ -- Matthias Klose <doko@ubuntu.com>  Fri, 07 Mar 2008 16:47:43 +0100
++
++openjdk-6 (6b06-0ubuntu6) hardy; urgency=low
++
++  * Build-depend on zip.
++
++ -- Matthias Klose <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <konqueror@gmx.de>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <lamont@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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=<n>.
++  * 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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  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 <doko@ubuntu.com>  Tue, 24 Jul 2007 11:24:55 +0200
++
++icedtea (7~b14-20070704-1) unstable; urgency=low
++
++  * Initial version.
++
++ -- Michael Koch <konqueror@gmx.de>  Wed, 04 Jul 2007 08:25:31 -0100
++
diff --cc debian/compat
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ec635144f60048986bc560c5576355344005e6e7
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++9
diff --cc debian/control
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..4bc3e796b1b21d5a1ae72c52d87d0202c5168c21
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,181 @@@
++Source: openjdk-17
++Section: java
++Priority: optional
++Maintainer: OpenJDK Team <openjdk-17@packages.debian.org>
++Uploaders: Matthias Klose <doko@ubuntu.com>
++Build-Depends: debhelper (>= 11),
++  m4, lsb-release, zip, unzip,
++  sharutils, gawk, cpio, pkg-config, procps, wdiff, fastjar (>= 2:0.96-0ubuntu2),
++  time, strip-nondeterminism, debugedit (>= 4.16),
++  jtreg6 (>= 6+1-0~) <!nocheck>, testng <!nocheck>, xvfb <!nocheck>, xauth <!nocheck>, xfonts-base <!nocheck>, libgl1-mesa-dri [!x32] <!nocheck>, xfwm4 <!nocheck>, x11-xkb-utils <!nocheck>, dbus-x11 <!nocheck>,
++  autoconf, automake, autotools-dev, ant, ant-optional,
++  g++-11 <!cross>,
++  openjdk-17-jdk-headless:native | openjdk-16-jdk-headless:native,
++  libxtst-dev, libxi-dev, libxt-dev, libxaw7-dev, libxrender-dev, libcups2-dev, libasound2-dev, liblcms2-dev, libfreetype6-dev (>= 2.2.1), libxinerama-dev, libkrb5-dev, xsltproc, libpcsclite-dev, libxrandr-dev, libelf-dev, libfontconfig1-dev, libgtk2.0-0 | libgtk-3-0, libharfbuzz-dev,
++  libffi-dev,
++  zlib1g-dev:native, zlib1g-dev, libattr1-dev, libpng-dev, libjpeg-dev, libgif-dev, 
++  libnss3-dev (>= 2:3.17.1),
++  openjdk-17-jdk-headless <cross>,
++Build-Depends-Indep: graphviz, pandoc,
++Rules-Requires-Root: no
++Standards-Version: 4.5.1
++Homepage: https://openjdk.java.net/
++Vcs-Browser: https://salsa.debian.org/openjdk-team/openjdk/tree/openjdk-17
++Vcs-Git: https://salsa.debian.org/openjdk-team/openjdk.git -b openjdk-17
++
++Package: openjdk-17-jdk-headless
++Architecture: alpha amd64 armel armhf arm64 i386 ia64 mips mipsel mips64 mips64el powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32
++Multi-Arch: same
++Pre-Depends: ${dpkg:Depends}
++Depends: openjdk-17-jre-headless (= ${binary:Version}),
++  ${shlibs:Depends}, ${misc:Depends}
++Suggests: openjdk-17-demo, openjdk-17-source
++Provides: java-sdk-headless, java2-sdk-headless,
++  java5-sdk-headless, java6-sdk-headless,
++  java7-sdk-headless, java8-sdk-headless,
++  java9-sdk-headless, java10-sdk-headless,
++  java11-sdk-headless, java12-sdk-headless,
++  java13-sdk-headless, java14-sdk-headless, java15-sdk-headless,
++  java16-sdk-headless, java17-sdk-headless,
++  java-compiler
++Breaks: openjdk-17-jre-headless (<< 17~10)
++Replaces: openjdk-17-jre-headless (<< 17~10)
++Description: OpenJDK Development Kit (JDK) (headless)
++ OpenJDK is a development environment for building applications,
++ applets, and components using the Java programming language.
++
++Package: openjdk-17-jre-headless
++Architecture: alpha amd64 armel armhf arm64 i386 ia64 mips mipsel mips64 mips64el powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32
++Multi-Arch: same
++Pre-Depends: ${dpkg:Depends}
++Depends: ${jredefault:Depends}, ${cacert:Depends},
++  ${jcommon:Depends}, ${dlopenhl:Depends},
++  ${mountpoint:Depends},
++  ${shlibs:Depends}, ${misc:Depends}
++Recommends: ${dlopenhl:Recommends}
++Suggests: libnss-mdns,
++  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, java8-runtime-headless,
++  java9-runtime-headless, java10-runtime-headless,
++  java11-runtime-headless, java12-runtime-headless,
++  java13-runtime-headless, java14-runtime-headless, java15-runtime-headless,
++  java16-runtime-headless, java17-runtime-headless,
++  ${defaultvm:Provides}, ${jvm:Provides}
++Breaks: ${jrehl:Breaks}
++Conflicts: oracle-java11-installer, openjdk-11-jdk-headless (<< 11~18-2)
++Replaces: openjdk-11-jdk-headless (<< 11~18-2)
++Description: OpenJDK Java runtime, using ${vm:Name} (headless)
++ Minimal Java runtime - needed for executing non GUI Java programs,
++ using ${vm:Name}.
++
++Package: openjdk-17-jdk
++Architecture: alpha amd64 armel armhf arm64 i386 ia64 mips mipsel mips64 mips64el powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32
++Multi-Arch: same
++Pre-Depends: ${dpkg:Depends}
++Depends: openjdk-17-jre (= ${binary:Version}),
++  openjdk-17-jdk-headless (= ${binary:Version}),
++  ${shlibs:Depends}, ${misc:Depends}
++Recommends: libxt-dev
++Suggests: openjdk-17-demo, openjdk-17-source, visualvm
++Provides: java-sdk, java2-sdk, java5-sdk, java6-sdk,
++  java7-sdk, java8-sdk, java9-sdk, java10-sdk, java11-sdk,
++  java12-sdk, java13-sdk, java14-sdk, java15-sdk, java16-sdk, java17-sdk,
++  java-compiler
++Description: OpenJDK Development Kit (JDK)
++ OpenJDK is a development environment for building applications,
++ applets, and components using the Java programming language.
++
++Package: openjdk-17-jre
++Architecture: alpha amd64 armel armhf arm64 i386 ia64 mips mipsel mips64 mips64el powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32
++Multi-Arch: same
++Pre-Depends: ${dpkg:Depends}
++Depends: openjdk-17-jre-headless (= ${binary:Version}),
++  ${xandsound:Depends}, ${dlopenjre:Depends},
++  ${shlibs:Depends}, ${misc:Depends}
++Recommends: ${dlopenjre:Recommends}, ${bridge:Recommends}, fonts-dejavu-extra
++Provides: java-runtime, java2-runtime,
++  java5-runtime, java6-runtime,
++  java7-runtime, java8-runtime,
++  java9-runtime, java10-runtime,
++  java11-runtime, java12-runtime,
++  java13-runtime, java14-runtime, java15-runtime,
++  java16-runtime, java17-runtime,
++Breaks: openjdk-17-jre-headless (<< 17~10)
++Replaces: openjdk-17-jre-headless (<< 17~10)
++Description: OpenJDK Java runtime, using ${vm:Name}
++ Full Java runtime environment - needed for executing Java GUI and Webstart
++ programs, using ${vm:Name}.
++
++Package: openjdk-17-demo
++Architecture: alpha amd64 armel armhf arm64 i386 ia64 mips mipsel mips64 mips64el powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32
++Priority: optional
++Pre-Depends: ${dpkg:Depends}
++Depends: openjdk-17-jre (= ${binary:Version}),
++  ${shlibs:Depends}, ${misc:Depends}
++Description: Java runtime based on OpenJDK (demos and examples)
++ OpenJDK Java runtime
++
++Package: openjdk-17-source
++Architecture: all
++Multi-Arch: foreign
++Priority: optional
++Pre-Depends: ${dpkg:Depends}
++Depends: openjdk-17-jdk (>= ${source:Version}),
++  ${misc:Depends}
++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.
++
++Package: openjdk-17-doc
++Section: doc
++Pre-Depends: ${dpkg:Depends}
++Architecture: all
++Multi-Arch: foreign
++Priority: optional
++Depends: ${misc:Depends},
++  libjs-jquery,
++  libjs-jquery-ui,
++  libjs-jquery-ui-theme-base,
++Suggests: openjdk-17-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.
++
++Package: openjdk-17-dbg
++Architecture: alpha amd64 armel armhf arm64 i386 ia64 mips mipsel mips64 mips64el powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32
++Multi-Arch: same
++Priority: optional
++Section: debug
++Pre-Depends: ${dpkg:Depends}
++Depends: openjdk-17-jre-headless (= ${binary:Version}),
++   ${misc:Depends}
++Recommends: openjdk-17-jre (= ${binary:Version})
++Suggests: openjdk-17-jdk (= ${binary:Version})
++Conflicts: ${dbg:Conflicts}
++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.
++
++Package: openjdk-17-jre-zero
++Architecture: amd64 i386 arm64 armhf ppc64 ppc64el s390x
++Multi-Arch: same
++Priority: optional
++Pre-Depends: ${dpkg:Depends}
++Depends: openjdk-17-jre-headless (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
++Provides: ${zerovm:Provides}
++Description: Alternative JVM for OpenJDK, using Zero
++ The package provides an alternative runtime using the Zero VM. 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.
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..1c13028402276372283c2e0d74387a78fda565df
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,167 @@@
++Source: @basename@
++Section: java
++Priority: optional
++Maintainer: OpenJDK Team <openjdk-17@packages.debian.org>
++Uploaders: Matthias Klose <doko@ubuntu.com>
++Build-Depends: @bd_debhelper@
++  m4, lsb-release, zip, unzip,
++  sharutils, gawk, cpio, pkg-config, procps, wdiff, @bd_fastjar@
++  time, @bd_strip_ndt@ @bd_debugedit@
++  @bd_check@
++  @bd_autotools@ @bd_ant@
++  @bd_gcc@
++  @bd_bootstrap@
++  @bd_openjdk@
++  @bd_zero@
++  @bd_syslibs@ @bd_systemtap@
++  @bd_nss@
++  @bd_cross@
++Build-Depends-Indep: graphviz, pandoc,
++Rules-Requires-Root: no
++Standards-Version: 4.5.1
++Homepage: https://openjdk.java.net/
++Vcs-Browser: https://salsa.debian.org/openjdk-team/openjdk/tree/openjdk-17
++Vcs-Git: https://salsa.debian.org/openjdk-team/openjdk.git -b openjdk-17
++
++Package: @basename@-jdk-headless
++Architecture: @any_archs@
++Multi-Arch: same
++Pre-Depends: ${dpkg:Depends}
++Depends: @basename@-jre-headless (= ${binary:Version}),
++  ${shlibs:Depends}, ${misc:Depends}
++Suggests: @basename@-demo, @basename@-source
++Provides: java-sdk-headless, java2-sdk-headless,
++  java5-sdk-headless, java6-sdk-headless,
++  java7-sdk-headless, java8-sdk-headless,
++  java9-sdk-headless, java10-sdk-headless,
++  java11-sdk-headless, java12-sdk-headless,
++  java13-sdk-headless, java14-sdk-headless, java15-sdk-headless,
++  java16-sdk-headless, java17-sdk-headless,
++  java-compiler
++Breaks: openjdk-17-jre-headless (<< 17~10)
++Replaces: openjdk-17-jre-headless (<< 17~10)
++Description: OpenJDK Development Kit (JDK) (headless)
++ OpenJDK is a development environment for building applications,
++ applets, and components using the Java programming language.
++
++Package: @basename@-jre-headless
++Architecture: @any_archs@
++Multi-Arch: same
++Pre-Depends: ${dpkg:Depends}
++Depends: ${jredefault:Depends}, ${cacert:Depends},
++  ${jcommon:Depends}, ${dlopenhl:Depends},
++  ${mountpoint:Depends},
++  ${shlibs:Depends}, ${misc:Depends}
++Recommends: ${dlopenhl:Recommends}
++Suggests: libnss-mdns,
++  @core_fonts@,
++  @cjk_fonts@
++Provides: java-runtime-headless, java2-runtime-headless,
++  java5-runtime-headless, java6-runtime-headless,
++  java7-runtime-headless, java8-runtime-headless,
++  java9-runtime-headless, java10-runtime-headless,
++  java11-runtime-headless, java12-runtime-headless,
++  java13-runtime-headless, java14-runtime-headless, java15-runtime-headless,
++  java16-runtime-headless, java17-runtime-headless,
++  ${defaultvm:Provides}, ${jvm:Provides}
++Breaks: ${jrehl:Breaks}
++Conflicts: oracle-java11-installer, openjdk-11-jdk-headless (<< 11~18-2)
++Replaces: openjdk-11-jdk-headless (<< 11~18-2)
++Description: OpenJDK Java runtime, using ${vm:Name} (headless)
++ Minimal Java runtime - needed for executing non GUI Java programs,
++ using ${vm:Name}.
++
++Package: @basename@-jdk
++Architecture: @any_archs@
++Multi-Arch: same
++Pre-Depends: ${dpkg:Depends}
++Depends: @basename@-jre (= ${binary:Version}),
++  @basename@-jdk-headless (= ${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, java8-sdk, java9-sdk, java10-sdk, java11-sdk,
++  java12-sdk, java13-sdk, java14-sdk, java15-sdk, java16-sdk, java17-sdk,
++  java-compiler
++Description: OpenJDK Development Kit (JDK)
++ OpenJDK is a development environment for building applications,
++ applets, and components using the Java programming language.
++
++Package: @basename@-jre
++Architecture: @any_archs@
++Multi-Arch: same
++Pre-Depends: ${dpkg:Depends}
++Depends: @basename@-jre-headless (= ${binary:Version}),
++  ${xandsound:Depends}, ${dlopenjre:Depends},
++  ${shlibs:Depends}, ${misc:Depends}
++Recommends: ${dlopenjre:Recommends}, ${bridge:Recommends}, @core_fonts@
++Provides: java-runtime, java2-runtime,
++  java5-runtime, java6-runtime,
++  java7-runtime, java8-runtime,
++  java9-runtime, java10-runtime,
++  java11-runtime, java12-runtime,
++  java13-runtime, java14-runtime, java15-runtime,
++  java16-runtime, java17-runtime,
++Breaks: openjdk-17-jre-headless (<< 17~10)
++Replaces: openjdk-17-jre-headless (<< 17~10)
++Description: OpenJDK Java runtime, using ${vm:Name}
++ Full Java runtime environment - needed for executing Java GUI and Webstart
++ programs, using ${vm:Name}.
++
++Package: @basename@-demo
++Architecture: @any_archs@
++Priority: optional
++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
++
++Package: @basename@-source
++Architecture: all
++Multi-Arch: foreign
++Priority: optional
++Pre-Depends: ${dpkg:Depends}
++Depends: @basename@-jdk (>= ${source:Version}),
++  ${misc:Depends}
++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.
++
++Package: @basename@-doc
++Section: doc
++Pre-Depends: ${dpkg:Depends}
++Architecture: all
++Multi-Arch: foreign
++Priority: optional
++Depends: ${misc:Depends},
++  libjs-jquery,
++  libjs-jquery-ui,
++  libjs-jquery-ui-theme-base,
++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.
++
++Package: @basename@-dbg
++Architecture: @any_archs@
++Multi-Arch: same
++Priority: optional
++Section: debug
++Pre-Depends: ${dpkg:Depends}
++Depends: @basename@-jre-headless (= ${binary:Version}),
++   ${misc:Depends}
++Recommends: @basename@-jre (= ${binary:Version})
++Suggests: @basename@-jdk (= ${binary:Version})
++Conflicts: ${dbg:Conflicts}
++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.
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..7a1ef31fceb272727918c01a675c3c615a28a64b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,14 @@@
++
++Package: @basename@-jre-zero
++Architecture: @altzero_archs@
++Multi-Arch: same
++Priority: optional
++Pre-Depends: ${dpkg:Depends}
++Depends: @basename@-jre-headless (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
++Provides: ${zerovm:Provides}
++Description: Alternative JVM for OpenJDK, using Zero
++ The package provides an alternative runtime using the Zero VM. 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.
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..cee94eb26bee2b1b645b30df24e8f11c26de5c2c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,3413 @@@
++This package was debianized by Matthias Klose <doko@ubuntu.com> on
++Wed, 08 Aug 2007 15:55:39 +0200.
++
++It was downloaded from
++      https://github.com/openjdk/jdk17u
++
++------------------------------------------------------------------------------
++Upstream Authors:
++
++OpenJDK:
++    Sun Microsystems, Inc.
++    Oracle and/or its affiliates.
++
++Packaging:
++    Matthias Klose
++
++------------------------------------------------------------------------------
++Copyright: 
++
++OpenJDK:
++    Copyright © 1996-2007 Sun Microsystems, Inc.
++    Copyright © 1996-2021 Oracle and/or its affiliates.
++    For third party copyrights see below (copies from the third party readme).
++    Portions Copyright © 1993-2014 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 <bill.haneman@sun.com>
++    Portions Copyright © 2002-2007 Louise Miller
++    Portions Copyright © 2002-2007 Gergõ Érdi <cactus@cactus.rulez.org>
++    Portions Copyright © 2002-2007 Laszlo (Laca) Peter <laszlo.peter@sun.com>
++    Portions Copyright © 2002-2007 Jeff Cai<jeff.cai@sun.com>
++    Portions Copyright © 2002-2007 George Kraft IV <gk4@us.ibm.com>
++    Portions Copyright © 2002-2007 Padraig O'Briain <padraig.obriain@sun.com>
++    Portions Copyright © 2002-2007 Darren Kenny <darren.kenny@sun.com>
++
++Packaging:
++    Copyright © 2007-2021 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.
++
++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.
++
++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 <http://www.gnu.org/copyleft/gpl.html> 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 contents of the jdk/src/share/native/sun/security/ec/impl/ directory are
++licensed under the LGPL-2.1.  See `/usr/share/common-licenses/LGPL-2-1'.
++
++------------------------------------------------------------------------------
++The following licenses for third party code are taken from
++openjdk/THIRD_PARTY_README
++------------------------------------------------------------------------------
++
++DO NOT TRANSLATE OR LOCALIZE.
++-----------------------------
++
++%% This notice is provided with respect to ASM Bytecode Manipulation 
++Framework v5.0, which may be included with JRE 8, and JDK 8, and 
++OpenJDK 8.
++
++--- begin of LICENSE ---
++
++Copyright (c) 2000-2011 France Télécom
++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.
++
++--- end of LICENSE ---
++
++--------------------------------------------------------------------------------
++
++%% This notice is provided with respect to BSDiff v4.3, which may be 
++included with JRE 8, JDK 8, and OpenJDK 8.
++
++--- begin of LICENSE ---
++
++Copyright 2003-2005 Colin Percival
++All rights reserved
++
++Redistribution and use in source and binary forms, with or without
++modification, are permitted providing 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.
++
++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.
++
++--- end of LICENSE ---
++
++-------------------------------------------------------------------------------
++
++%% This notice is provided with respect to CodeViewer 1.0, which may be
++included with JDK 8.
++
++--- begin of LICENSE ---
++
++Copyright 1999 by CoolServlets.com.
++
++Any errors or suggested improvements to this class can be reported as
++instructed on CoolServlets.com. We hope you enjoy this program... your
++comments will encourage further development!  This software is distributed
++under the terms of the BSD License.  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.
++
++Neither name of CoolServlets.com 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 COOLSERVLETS.COM 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 AUTHOR 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."
++
++
++--- end of LICENSE ---
++
++-------------------------------------------------------------------------------
++
++%% This notice is provided with respect to Cryptix AES 3.2.0, which may be
++included with JRE 8, JDK 8, and OpenJDK 8.
++
++--- begin of LICENSE ---
++
++Cryptix General License
++
++Copyright (c) 1995-2005 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 are
++met:
++
++  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 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 CRYPTIX FOUNDATION LIMITED 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.
++
++--- end of LICENSE ---
++
++-------------------------------------------------------------------------------
++
++%% This notice is provided with respect to CUP Parser Generator for 
++Java 0.10k, which may be included with JRE 8, JDK 8, and OpenJDK 8.
++
++--- begin of LICENSE ---
++
++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
++that the above copyright notice appear in all copies and that both the
++copyright notice and this permission notice and warranty disclaimer appear in
++supporting documentation, and that the names of the authors or their
++employers not 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
++this software, including all implied warranties of merchantability and fitness.
++In no event shall the authors or their employers 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 of LICENSE ---
++
++-------------------------------------------------------------------------------
++
++%% This notice is provided with respect to Document Object Model (DOM) Level 2
++& 3, which may be included with JRE 8, JDK 8, and OpenJDK 8.
++
++--- begin of LICENSE ---
++
++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
++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 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.
++
++--- end of LICENSE ---
++
++-------------------------------------------------------------------------------
++
++%% This notice is provided with respect to Dynalink v0.5, which may be 
++included with JRE 8, JDK 8, and OpenJDK 8.
++
++--- begin of LICENSE ---
++
++Copyright (c) 2009-2013, Attila Szegedi
++
++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 Attila
++Szegedi 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 HOLDER 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 THEPOSSIBILITY OF SUCH DAMAGE.
++
++--- end of LICENSE ---
++
++-------------------------------------------------------------------------------
++
++%% This notice is provided with respect to Elliptic Curve Cryptography, which 
++may be included with JRE 8, JDK 8, and OpenJDK 8.
++
++You are receiving a copy of the Elliptic Curve Cryptography library in source
++form with the JDK 8 and OpenJDK 8 source distributions, and as object code in
++the JRE 8 & JDK 8 runtimes.
++
++In the case of the JRE 8 & JDK 8 runtimes, the terms of the Oracle license do
++NOT apply to the Elliptic Curve Cryptography library; it is licensed under the
++following license, separately from Oracle's JDK & JRE.  If you do not wish to
++install the Elliptic Curve Cryptography library, you may delete the library
++named libsunec.so (on Solaris and Linux systems) or sunec.dll (on Windows
++systems) from the JRE bin directory reserved for native libraries.
++
++
++--- begin of LICENSE ---
++
++                  GNU LESSER GENERAL PUBLIC LICENSE
++                       Version 2.1, February 1999
++
++ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
++ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
++ Everyone is permitted to copy and distribute verbatim copies
++ of this license document, but changing it is not allowed.
++
++[This is the first released version of the Lesser GPL.  It also counts
++ as the successor of the GNU Library Public License, version 2, hence
++ the version number 2.1.]
++
++                            Preamble
++
++  The licenses for most software are designed to take away your
++freedom to share and change it.  By contrast, the GNU General Public
++Licenses are intended to guarantee your freedom to share and change
++free software--to make sure the software is free for all its users.
++
++  This license, the Lesser General Public License, applies to some
++specially designated software packages--typically libraries--of the
++Free Software Foundation and other authors who decide to use it.  You
++can use it too, but we suggest you first think carefully about whether
++this license or the ordinary General Public License is the better
++strategy to use in any particular case, based on the explanations below.
++
++  When we speak of free software, we are referring to freedom of use,
++not price.  Our General Public Licenses are designed to make sure that
++you have the freedom to distribute copies of free software (and charge
++for this service if you wish); that you receive source code or can get
++it if you want it; that you can change the software and use pieces of
++it in new free programs; and that you are informed that you can do
++these things.
++
++  To protect your rights, we need to make restrictions that forbid
++distributors to deny you these rights or to ask you to surrender these
++rights.  These restrictions translate to certain responsibilities for
++you if you distribute copies of the library or if you modify it.
++
++  For example, if you distribute copies of the library, whether gratis
++or for a fee, you must give the recipients all the rights that we gave
++you.  You must make sure that they, too, receive or can get the source
++code.  If you link other code with the library, you must provide
++complete object files to the recipients, so that they can relink them
++with the library after making changes to the library and recompiling
++it.  And you must show them these terms so they know their rights.
++
++  We protect your rights with a two-step method: (1) we copyright the
++library, and (2) we offer you this license, which gives you legal
++permission to copy, distribute and/or modify the library.
++
++  To protect each distributor, we want to make it very clear that
++there is no warranty for the free library.  Also, if the library is
++modified by someone else and passed on, the recipients should know
++that what they have is not the original version, so that the original
++author's reputation will not be affected by problems that might be
++introduced by others.
++\f
++  Finally, software patents pose a constant threat to the existence of
++any free program.  We wish to make sure that a company cannot
++effectively restrict the users of a free program by obtaining a
++restrictive license from a patent holder.  Therefore, we insist that
++any patent license obtained for a version of the library must be
++consistent with the full freedom of use specified in this license.
++
++  Most GNU software, including some libraries, is covered by the
++ordinary GNU General Public License.  This license, the GNU Lesser
++General Public License, applies to certain designated libraries, and
++is quite different from the ordinary General Public License.  We use
++this license for certain libraries in order to permit linking those
++libraries into non-free programs.
++
++  When a program is linked with a library, whether statically or using
++a shared library, the combination of the two is legally speaking a
++combined work, a derivative of the original library.  The ordinary
++General Public License therefore permits such linking only if the
++entire combination fits its criteria of freedom.  The Lesser General
++Public License permits more lax criteria for linking other code with
++the library.
++
++  We call this license the "Lesser" General Public License because it
++does Less to protect the user's freedom than the ordinary General
++Public License.  It also provides other free software developers Less
++of an advantage over competing non-free programs.  These disadvantages
++are the reason we use the ordinary General Public License for many
++libraries.  However, the Lesser license provides advantages in certain
++special circumstances.
++
++  For example, on rare occasions, there may be a special need to
++encourage the widest possible use of a certain library, so that it becomes
++a de-facto standard.  To achieve this, non-free programs must be
++allowed to use the library.  A more frequent case is that a free
++library does the same job as widely used non-free libraries.  In this
++case, there is little to gain by limiting the free library to free
++software only, so we use the Lesser General Public License.
++
++  In other cases, permission to use a particular library in non-free
++programs enables a greater number of people to use a large body of
++free software.  For example, permission to use the GNU C Library in
++non-free programs enables many more people to use the whole GNU
++operating system, as well as its variant, the GNU/Linux operating
++system.
++
++  Although the Lesser General Public License is Less protective of the
++users' freedom, it does ensure that the user of a program that is
++linked with the Library has the freedom and the wherewithal to run
++that program using a modified version of the Library.
++
++  The precise terms and conditions for copying, distribution and
++modification follow.  Pay close attention to the difference between a
++"work based on the library" and a "work that uses the library".  The
++former contains code derived from the library, whereas the latter must
++be combined with the library in order to run.
++\f
++                  GNU LESSER GENERAL PUBLIC LICENSE
++   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
++
++  0. This License Agreement applies to any software library or other
++program which contains a notice placed by the copyright holder or
++other authorized party saying it may be distributed under the terms of
++this Lesser General Public License (also called "this License").
++Each licensee is addressed as "you".
++
++  A "library" means a collection of software functions and/or data
++prepared so as to be conveniently linked with application programs
++(which use some of those functions and data) to form executables.
++
++  The "Library", below, refers to any such software library or work
++which has been distributed under these terms.  A "work based on the
++Library" means either the Library or any derivative work under
++copyright law: that is to say, a work containing the Library or a
++portion of it, either verbatim or with modifications and/or translated
++straightforwardly into another language.  (Hereinafter, translation is
++included without limitation in the term "modification".)
++
++  "Source code" for a work means the preferred form of the work for
++making modifications to it.  For a library, complete source code means
++all the source code for all modules it contains, plus any associated
++interface definition files, plus the scripts used to control compilation
++and installation of the library.
++
++  Activities other than copying, distribution and modification are not
++covered by this License; they are outside its scope.  The act of
++running a program using the Library is not restricted, and output from
++such a program is covered only if its contents constitute a work based
++on the Library (independent of the use of the Library in a tool for
++writing it).  Whether that is true depends on what the Library does
++and what the program that uses the Library does.
++
++  1. You may copy and distribute verbatim copies of the Library's
++complete source code as you receive it, in any medium, provided that
++you conspicuously and appropriately publish on each copy an
++appropriate copyright notice and disclaimer of warranty; keep intact
++all the notices that refer to this License and to the absence of any
++warranty; and distribute a copy of this License along with the
++Library.
++
++  You may charge a fee for the physical act of transferring a copy,
++and you may at your option offer warranty protection in exchange for a
++fee.
++\f
++  2. You may modify your copy or copies of the Library or any portion
++of it, thus forming a work based on the Library, and copy and
++distribute such modifications or work under the terms of Section 1
++above, provided that you also meet all of these conditions:
++
++    a) The modified work must itself be a software library.
++
++    b) You must cause the files modified to carry prominent notices
++    stating that you changed the files and the date of any change.
++
++    c) You must cause the whole of the work to be licensed at no
++    charge to all third parties under the terms of this License.
++
++    d) If a facility in the modified Library refers to a function or a
++    table of data to be supplied by an application program that uses
++    the facility, other than as an argument passed when the facility
++    is invoked, then you must make a good faith effort to ensure that,
++    in the event an application does not supply such function or
++    table, the facility still operates, and performs whatever part of
++    its purpose remains meaningful.
++
++    (For example, a function in a library to compute square roots has
++    a purpose that is entirely well-defined independent of the
++    application.  Therefore, Subsection 2d requires that any
++    application-supplied function or table used by this function must
++    be optional: if the application does not supply it, the square
++    root function must still compute square roots.)
++
++These requirements apply to the modified work as a whole.  If
++identifiable sections of that work are not derived from the Library,
++and can be reasonably considered independent and separate works in
++themselves, then this License, and its terms, do not apply to those
++sections when you distribute them as separate works.  But when you
++distribute the same sections as part of a whole which is a work based
++on the Library, the distribution of the whole must be on the terms of
++this License, whose permissions for other licensees extend to the
++entire whole, and thus to each and every part regardless of who wrote
++it.
++
++Thus, it is not the intent of this section to claim rights or contest
++your rights to work written entirely by you; rather, the intent is to
++exercise the right to control the distribution of derivative or
++collective works based on the Library.
++
++In addition, mere aggregation of another work not based on the Library
++with the Library (or with a work based on the Library) on a volume of
++a storage or distribution medium does not bring the other work under
++the scope of this License.
++
++  3. You may opt to apply the terms of the ordinary GNU General Public
++License instead of this License to a given copy of the Library.  To do
++this, you must alter all the notices that refer to this License, so
++that they refer to the ordinary GNU General Public License, version 2,
++instead of to this License.  (If a newer version than version 2 of the
++ordinary GNU General Public License has appeared, then you can specify
++that version instead if you wish.)  Do not make any other change in
++these notices.
++\f
++  Once this change is made in a given copy, it is irreversible for
++that copy, so the ordinary GNU General Public License applies to all
++subsequent copies and derivative works made from that copy.
++
++  This option is useful when you wish to copy part of the code of
++the Library into a program that is not a library.
++
++  4. You may copy and distribute the Library (or a portion or
++derivative of it, under Section 2) in object code or executable form
++under the terms of Sections 1 and 2 above provided that you accompany
++it with the complete corresponding machine-readable source code, which
++must be distributed under the terms of Sections 1 and 2 above on a
++medium customarily used for software interchange.
++
++  If distribution of object code is made by offering access to copy
++from a designated place, then offering equivalent access to copy the
++source code from the same place satisfies the requirement to
++distribute the source code, even though third parties are not
++compelled to copy the source along with the object code.
++
++  5. A program that contains no derivative of any portion of the
++Library, but is designed to work with the Library by being compiled or
++linked with it, is called a "work that uses the Library".  Such a
++work, in isolation, is not a derivative work of the Library, and
++therefore falls outside the scope of this License.
++
++  However, linking a "work that uses the Library" with the Library
++creates an executable that is a derivative of the Library (because it
++contains portions of the Library), rather than a "work that uses the
++library".  The executable is therefore covered by this License.
++Section 6 states terms for distribution of such executables.
++
++  When a "work that uses the Library" uses material from a header file
++that is part of the Library, the object code for the work may be a
++derivative work of the Library even though the source code is not.
++Whether this is true is especially significant if the work can be
++linked without the Library, or if the work is itself a library.  The
++threshold for this to be true is not precisely defined by law.
++
++  If such an object file uses only numerical parameters, data
++structure layouts and accessors, and small macros and small inline
++functions (ten lines or less in length), then the use of the object
++file is unrestricted, regardless of whether it is legally a derivative
++work.  (Executables containing this object code plus portions of the
++Library will still fall under Section 6.)
++
++  Otherwise, if the work is a derivative of the Library, you may
++distribute the object code for the work under the terms of Section 6.
++Any executables containing that work also fall under Section 6,
++whether or not they are linked directly with the Library itself.
++\f
++  6. As an exception to the Sections above, you may also combine or
++link a "work that uses the Library" with the Library to produce a
++work containing portions of the Library, and distribute that work
++under terms of your choice, provided that the terms permit
++modification of the work for the customer's own use and reverse
++engineering for debugging such modifications.
++
++  You must give prominent notice with each copy of the work that the
++Library is used in it and that the Library and its use are covered by
++this License.  You must supply a copy of this License.  If the work
++during execution displays copyright notices, you must include the
++copyright notice for the Library among them, as well as a reference
++directing the user to the copy of this License.  Also, you must do one
++of these things:
++
++    a) Accompany the work with the complete corresponding
++    machine-readable source code for the Library including whatever
++    changes were used in the work (which must be distributed under
++    Sections 1 and 2 above); and, if the work is an executable linked
++    with the Library, with the complete machine-readable "work that
++    uses the Library", as object code and/or source code, so that the
++    user can modify the Library and then relink to produce a modified
++    executable containing the modified Library.  (It is understood
++    that the user who changes the contents of definitions files in the
++    Library will not necessarily be able to recompile the application
++    to use the modified definitions.)
++
++    b) Use a suitable shared library mechanism for linking with the
++    Library.  A suitable mechanism is one that (1) uses at run time a
++    copy of the library already present on the user's computer system,
++    rather than copying library functions into the executable, and (2)
++    will operate properly with a modified version of the library, if
++    the user installs one, as long as the modified version is
++    interface-compatible with the version that the work was made with.
++
++    c) Accompany the work with a written offer, valid for at
++    least three years, to give the same user the materials
++    specified in Subsection 6a, above, for a charge no more
++    than the cost of performing this distribution.
++
++    d) If distribution of the work is made by offering access to copy
++    from a designated place, offer equivalent access to copy the above
++    specified materials from the same place.
++
++    e) Verify that the user has already received a copy of these
++    materials or that you have already sent this user a copy.
++
++  For an executable, the required form of the "work that uses the
++Library" must include any data and utility programs needed for
++reproducing the executable from it.  However, as a special exception,
++the materials to be distributed need not include anything that is
++normally distributed (in either source or binary form) with the major
++components (compiler, kernel, and so on) of the operating system on
++which the executable runs, unless that component itself accompanies
++the executable.
++
++  It may happen that this requirement contradicts the license
++restrictions of other proprietary libraries that do not normally
++accompany the operating system.  Such a contradiction means you cannot
++use both them and the Library together in an executable that you
++distribute.
++\f
++  7. You may place library facilities that are a work based on the
++Library side-by-side in a single library together with other library
++facilities not covered by this License, and distribute such a combined
++library, provided that the separate distribution of the work based on
++the Library and of the other library facilities is otherwise
++permitted, and provided that you do these two things:
++
++    a) Accompany the combined library with a copy of the same work
++    based on the Library, uncombined with any other library
++    facilities.  This must be distributed under the terms of the
++    Sections above.
++
++    b) Give prominent notice with the combined library of the fact
++    that part of it is a work based on the Library, and explaining
++    where to find the accompanying uncombined form of the same work.
++
++  8. You may not copy, modify, sublicense, link with, or distribute
++the Library except as expressly provided under this License.  Any
++attempt otherwise to copy, modify, sublicense, link with, or
++distribute the Library is void, and will automatically terminate your
++rights under this License.  However, parties who have received copies,
++or rights, from you under this License will not have their licenses
++terminated so long as such parties remain in full compliance.
++
++  9. You are not required to accept this License, since you have not
++signed it.  However, nothing else grants you permission to modify or
++distribute the Library or its derivative works.  These actions are
++prohibited by law if you do not accept this License.  Therefore, by
++modifying or distributing the Library (or any work based on the
++Library), you indicate your acceptance of this License to do so, and
++all its terms and conditions for copying, distributing or modifying
++the Library or works based on it.
++
++  10. Each time you redistribute the Library (or any work based on the
++Library), the recipient automatically receives a license from the
++original licensor to copy, distribute, link with or modify the Library
++subject to these terms and conditions.  You may not impose any further
++restrictions on the recipients' exercise of the rights granted herein.
++You are not responsible for enforcing compliance by third parties with
++this License.
++\f
++  11. If, as a consequence of a court judgment or allegation of patent
++infringement or for any other reason (not limited to patent issues),
++conditions are imposed on you (whether by court order, agreement or
++otherwise) that contradict the conditions of this License, they do not
++excuse you from the conditions of this License.  If you cannot
++distribute so as to satisfy simultaneously your obligations under this
++License and any other pertinent obligations, then as a consequence you
++may not distribute the Library at all.  For example, if a patent
++license would not permit royalty-free redistribution of the Library by
++all those who receive copies directly or indirectly through you, then
++the only way you could satisfy both it and this License would be to
++refrain entirely from distribution of the Library.
++
++If any portion of this section is held invalid or unenforceable under any
++particular circumstance, the balance of the section is intended to apply,
++and the section as a whole is intended to apply in other circumstances.
++
++It is not the purpose of this section to induce you to infringe any
++patents or other property right claims or to contest validity of any
++such claims; this section has the sole purpose of protecting the
++integrity of the free software distribution system which is
++implemented by public license practices.  Many people have made
++generous contributions to the wide range of software distributed
++through that system in reliance on consistent application of that
++system; it is up to the author/donor to decide if he or she is willing
++to distribute software through any other system and a licensee cannot
++impose that choice.
++
++This section is intended to make thoroughly clear what is believed to
++be a consequence of the rest of this License.
++
++  12. If the distribution and/or use of the Library is restricted in
++certain countries either by patents or by copyrighted interfaces, the
++original copyright holder who places the Library under this License may add
++an explicit geographical distribution limitation excluding those countries,
++so that distribution is permitted only in or among countries not thus
++excluded.  In such case, this License incorporates the limitation as if
++written in the body of this License.
++
++  13. The Free Software Foundation may publish revised and/or new
++versions of the Lesser General Public License from time to time.
++Such new versions will be similar in spirit to the present version,
++but may differ in detail to address new problems or concerns.
++
++Each version is given a distinguishing version number.  If the Library
++specifies a version number of this License which applies to it and
++"any later version", you have the option of following the terms and
++conditions either of that version or of any later version published by
++the Free Software Foundation.  If the Library does not specify a
++license version number, you may choose any version ever published by
++the Free Software Foundation.
++\f
++  14. If you wish to incorporate parts of the Library into other free
++programs whose distribution conditions are incompatible with these,
++write to the author to ask for permission.  For software which is
++copyrighted by the Free Software Foundation, write to the Free
++Software Foundation; we sometimes make exceptions for this.  Our
++decision will be guided by the two goals of preserving the free status
++of all derivatives of our free software and of promoting the sharing
++and reuse of software generally.
++
++                            NO WARRANTY
++
++  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
++WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
++EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
++OTHER PARTIES PROVIDE THE LIBRARY "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 THE
++LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
++THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
++
++  16. 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 THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
++FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
++CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
++LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
++SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
++DAMAGES.
++
++                     END OF TERMS AND CONDITIONS
++\f
++           How to Apply These Terms to Your New Libraries
++
++  If you develop a new library, and you want it to be of the greatest
++possible use to the public, we recommend making it free software that
++everyone can redistribute and change.  You can do so by permitting
++redistribution under these terms (or, alternatively, under the terms of the
++ordinary General Public License).
++
++  To apply these terms, attach the following notices to the library.  It is
++safest to attach them to the start of each source file to most effectively
++convey the exclusion of warranty; and each file should have at least the
++"copyright" line and a pointer to where the full notice is found.
++
++    <one line to give the library's name and a brief idea of what it does.>
++    Copyright (C) <year>  <name of author>
++
++    This library is free software; you can redistribute it and/or
++    modify it under the terms of the GNU Lesser General Public
++    License as published by the Free Software Foundation; either
++    version 2.1 of the License, or (at your option) any later version.
++
++    This library 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
++    Lesser General Public License for more details.
++
++    You should have received a copy of the GNU Lesser General Public
++    License along with this library; if not, write to the Free Software
++    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
++
++Also add information on how to contact you by electronic and paper mail.
++
++You should also get your employer (if you work as a programmer) or your
++school, if any, to sign a "copyright disclaimer" for the library, if
++necessary.  Here is a sample; alter the names:
++
++  Yoyodyne, Inc., hereby disclaims all copyright interest in the
++  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
++
++  <signature of Ty Coon>, 1 April 1990
++  Ty Coon, President of Vice
++
++That's all there is to it!
++
++--- end of LICENSE ---
++
++-------------------------------------------------------------------------------
++
++%% This notice is provided with respect to  ECMAScript Language
++Specification ECMA-262 Edition 5.1 which may be included with 
++JRE 8, JDK 8, and OpenJDK 8.
++
++--- begin of LICENSE ---
++
++Copyright notice
++Copyright © 2011 Ecma International
++Ecma International
++Rue du Rhone 114
++CH-1204 Geneva
++Tel: +41 22 849 6000
++Fax: +41 22 849 6001
++Web: http://www.ecma-international.org
++
++This document and possible translations of it may be copied and furnished to
++others, and derivative works that comment on or otherwise explain it or assist
++in its implementation may be prepared, copied, published, and distributed, in
++whole or in part, without restriction of any kind, provided that the above
++copyright notice and this section are included on all such copies and derivative
++works. However, this document itself may not be modified in any way, including
++by removing the copyright notice or references to Ecma International, except as
++needed for the purpose of developing any document or deliverable produced by
++Ecma International (in which case the rules applied to copyrights must be
++followed) or as required to translate it into languages other than English. The
++limited permissions granted above are perpetual and will not be revoked by Ecma
++International or its successors or assigns. This document and the information
++contained herein is provided on an "AS IS" basis and ECMA INTERNATIONAL
++DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY
++WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY OWNERSHIP
++RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
++PURPOSE." Software License
++
++All Software contained in this document ("Software)" is protected by copyright
++and is being made available under the "BSD License", included below. This
++Software may be subject to third party rights (rights from parties other than
++Ecma International), including patent rights, and no licenses under such third
++party rights are granted under this license even if the third party concerned is
++a member of Ecma International. SEE THE ECMA CODE OF CONDUCT IN PATENT MATTERS
++AVAILABLE AT http://www.ecma-international.org/memento/codeofconduct.htm FOR
++INFORMATION REGARDING THE LICENSING OF PATENT CLAIMS THAT ARE REQUIRED TO
++IMPLEMENT ECMA INTERNATIONAL STANDARDS*. 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 authors nor Ecma International may be used to endorse
++or promote products derived from this software without specific prior written
++permission.
++
++THIS SOFTWARE IS PROVIDED BY THE ECMA INTERNATIONAL "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 ECMA INTERNATIONAL 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.
++--- end of LICENSE ---
++
++%% This notice is provided with respect to Dynalink library which is included
++with the Nashorn technology.
++
++--- begin of LICENSE ---
++Copyright (c) 2009-2013, Attila Szegedi
++
++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 the copyright holder nor the names of
++  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 COPYRIGHT HOLDER
++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.
++--- end of LICENSE ---
++
++%% This notice is provided with respect to Joni library which is included
++with the Nashorn technology.
++
++--- begin of LICENSE ---
++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 ---
++
++-------------------------------------------------------------------------------
++
++%% This notice is provided with respect to FontConfig 2.5, which may be 
++included with JRE 8, JDK 8, and OpenJDK 8 source distributions on
++Linux and Solaris.
++
++--- begin of LICENSE ---
++
++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.
++
++
++--- end of LICENSE ---
++
++-------------------------------------------------------------------------------
++
++%% This notice is provided with respect to IAIK PKCS#11 Wrapper, 
++which may be included with JRE 8, JDK 8, and OpenJDK 8.
++
++--- begin of LICENSE ---
++
++IAIK PKCS#11 Wrapper License
++
++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.
++
++--- end of LICENSE ---
++
++-------------------------------------------------------------------------------
++
++%% This notice is provided with respect to ICU4C 4.0.1 and ICU4J 4.4, which 
++may be included with JRE 8, JDK 8, and OpenJDK 8.
++
++--- begin of LICENSE ---
++
++Copyright (c) 1995-2010 International Business Machines Corporation and others 
++
++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, 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 Software 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 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 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.
++All trademarks and registered trademarks mentioned herein are the property of
++their respective owners.
++
++--- end of LICENSE ---
++
++-------------------------------------------------------------------------------
++
++%% This notice is provided with respect to IJG JPEG 6b, which may be 
++included with JRE 8, JDK 8, and OpenJDK 8.
++
++--- begin of LICENSE ---
++
++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.
++
++--- end of LICENSE ---
++
++--------------------------------------------------------------------------------
++
++%% This notice is provided with respect to Joni v1.1.9, which may be 
++included with JRE 8, JDK 8, and OpenJDK 8.
++
++--- begin of LICENSE ---
++
++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 ---
++
++-------------------------------------------------------------------------------
++
++%% This notice is provided with respect to JOpt-Simple v3.0,  which may be 
++included with JRE 8, JDK 8, and OpenJDK 8.
++
++--- begin of LICENSE ---
++
++ Copyright (c) 2004-2009 Paul R. Holser, Jr.
++
++ 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 ---
++
++--------------------------------------------------------------------------------
++
++%% This notice is provided with respect to Kerberos functionality, which 
++which may be included with JRE 8, JDK 8, and OpenJDK 8.
++
++--- begin of LICENSE ---
++
++ (C) Copyright IBM Corp. 1999 All Rights Reserved.
++ Copyright 1997 The Open Group Research Institute. All rights reserved.
++
++--- end of LICENSE ---
++
++-------------------------------------------------------------------------------
++
++%% This notice is provided with respect to Kerberos functionality from 
++FundsXpress, INC., which may be included with JRE 8, JDK 8, and OpenJDK 8.
++
++--- begin of LICENSE ---
++
++ 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.
++
++
++--- end of LICENSE ---
++
++-------------------------------------------------------------------------------
++
++%% This notice is provided with respect to Kronos OpenGL headers, which may be 
++included with JDK 8 and OpenJDK 8 source distributions.
++
++--- begin of LICENSE ---
++
++ 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.
++
++--- end of LICENSE ---
++
++-------------------------------------------------------------------------------
++
++%% Lucida is a registered trademark or trademark of Bigelow & Holmes in the
++U.S. and other countries.
++
++-------------------------------------------------------------------------------
++
++%% This notice is provided with respect to Mesa 3D Graphics Library v4.1,
++which may be included with JRE 8, JDK 8, and OpenJDK 8 source distributions.
++
++--- begin of LICENSE ---
++
++ 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 of LICENSE ---
++
++-------------------------------------------------------------------------------
++
++%% This notice is provided with respect to Mozilla Network Security
++Services (NSS), which is supplied with the JDK test suite in the OpenJDK
++source code repository. It is licensed under Mozilla Public License (MPL),
++version 2.0.
++
++The NSS libraries are supplied in executable form, built from unmodified
++NSS source code labeled with the "NSS_3.13.1_RTM" release tag.
++
++The NSS source code is available in the OpenJDK source code repository at:
++    jdk/test/sun/security/pkcs11/nss/src
++
++The NSS libraries are available in the OpenJDK source code repository at:
++    jdk/test/sun/security/pkcs11/nss/lib
++
++--- begin of LICENSE ---
++
++Mozilla Public License Version 2.0
++==================================
++
++1. Definitions
++--------------
++
++1.1. "Contributor"
++    means each individual or legal entity that creates, contributes to
++    the creation of, or owns Covered Software.
++
++1.2. "Contributor Version"
++    means the combination of the Contributions of others (if any) used
++    by a Contributor and that particular Contributor's Contribution.
++
++1.3. "Contribution"
++    means Covered Software of a particular Contributor.
++
++1.4. "Covered Software"
++    means Source Code Form to which the initial Contributor has attached
++    the notice in Exhibit A, the Executable Form of such Source Code
++    Form, and Modifications of such Source Code Form, in each case
++    including portions thereof.
++
++1.5. "Incompatible With Secondary Licenses"
++    means
++
++    (a) that the initial Contributor has attached the notice described
++        in Exhibit B to the Covered Software; or
++
++    (b) that the Covered Software was made available under the terms of
++        version 1.1 or earlier of the License, but not also under the
++        terms of a Secondary License.
++
++1.6. "Executable Form"
++    means any form of the work other than Source Code Form.
++
++1.7. "Larger Work"
++    means a work that combines Covered Software with other material, in 
++    a separate file or files, that is not Covered Software.
++
++1.8. "License"
++    means this document.
++
++1.9. "Licensable"
++    means having the right to grant, to the maximum extent possible,
++    whether at the time of the initial grant or subsequently, any and
++    all of the rights conveyed by this License.
++
++1.10. "Modifications"
++    means any of the following:
++
++    (a) any file in Source Code Form that results from an addition to,
++        deletion from, or modification of the contents of Covered
++        Software; or
++
++    (b) any new file in Source Code Form that contains any Covered
++        Software.
++
++1.11. "Patent Claims" of a Contributor
++    means any patent claim(s), including without limitation, method,
++    process, and apparatus claims, in any patent Licensable by such
++    Contributor that would be infringed, but for the grant of the
++    License, by the making, using, selling, offering for sale, having
++    made, import, or transfer of either its Contributions or its
++    Contributor Version.
++
++1.12. "Secondary License"
++    means either the GNU General Public License, Version 2.0, the GNU
++    Lesser General Public License, Version 2.1, the GNU Affero General
++    Public License, Version 3.0, or any later versions of those
++    licenses.
++
++1.13. "Source Code Form"
++    means the form of the work preferred for making modifications.
++
++1.14. "You" (or "Your")
++    means an individual or a legal entity exercising rights under this
++    License. For legal entities, "You" includes any entity that
++    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. License Grants and Conditions
++--------------------------------
++
++2.1. Grants
++
++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 such Contributor to use, reproduce, make available,
++    modify, display, perform, distribute, and otherwise exploit its
++    Contributions, either on an unmodified basis, with Modifications, or
++    as part of a Larger Work; and
++
++(b) under Patent Claims of such Contributor to make, use, sell, offer
++    for sale, have made, import, and otherwise transfer either its
++    Contributions or its Contributor Version.
++
++2.2. Effective Date
++
++The licenses granted in Section 2.1 with respect to any Contribution
++become effective for each Contribution on the date the Contributor first
++distributes such Contribution.
++
++2.3. Limitations on Grant Scope
++
++The licenses granted in this Section 2 are the only rights granted under
++this License. No additional rights or licenses will be implied from the
++distribution or licensing of Covered Software under this License.
++Notwithstanding Section 2.1(b) above, no patent license is granted by a
++Contributor:
++
++(a) for any code that a Contributor has removed from Covered Software;
++    or
++
++(b) for infringements caused by: (i) Your and any other third party's
++    modifications of Covered Software, or (ii) the combination of its
++    Contributions with other software (except as part of its Contributor
++    Version); or
++
++(c) under Patent Claims infringed by Covered Software in the absence of
++    its Contributions.
++
++This License does not grant any rights in the trademarks, service marks,
++or logos of any Contributor (except as may be necessary to comply with
++the notice requirements in Section 3.4).
++
++2.4. Subsequent Licenses
++
++No Contributor makes additional grants as a result of Your choice to
++distribute the Covered Software under a subsequent version of this
++License (see Section 10.2) or under the terms of a Secondary License (if
++permitted under the terms of Section 3.3).
++
++2.5. Representation
++
++Each Contributor represents that the Contributor believes its
++Contributions are its original creation(s) or it has sufficient rights
++to grant the rights to its Contributions conveyed by this License.
++
++2.6. Fair Use
++
++This License is not intended to limit any rights You have under
++applicable copyright doctrines of fair use, fair dealing, or other
++equivalents.
++
++2.7. Conditions
++
++Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
++in Section 2.1.
++
++3. Responsibilities
++-------------------
++
++3.1. Distribution of Source Form
++
++All distribution of Covered Software in Source Code Form, including any
++Modifications that You create or to which You contribute, must be under
++the terms of this License. You must inform recipients that the Source
++Code Form of the Covered Software is governed by the terms of this
++License, and how they can obtain a copy of this License. You may not
++attempt to alter or restrict the recipients' rights in the Source Code
++Form.
++
++3.2. Distribution of Executable Form
++
++If You distribute Covered Software in Executable Form then:
++
++(a) such Covered Software must also be made available in Source Code
++    Form, as described in Section 3.1, and You must inform recipients of
++    the Executable Form how they can obtain a copy of such Source Code
++    Form by reasonable means in a timely manner, at a charge no more
++    than the cost of distribution to the recipient; and
++
++(b) You may distribute such Executable Form under the terms of this
++    License, or sublicense it under different terms, provided that the
++    license for the Executable Form does not attempt to limit or alter
++    the recipients' rights in the Source Code Form under this License.
++
++3.3. Distribution of a Larger Work
++
++You may create and distribute a Larger Work under terms of Your choice,
++provided that You also comply with the requirements of this License for
++the Covered Software. If the Larger Work is a combination of Covered
++Software with a work governed by one or more Secondary Licenses, and the
++Covered Software is not Incompatible With Secondary Licenses, this
++License permits You to additionally distribute such Covered Software
++under the terms of such Secondary License(s), so that the recipient of
++the Larger Work may, at their option, further distribute the Covered
++Software under the terms of either this License or such Secondary
++License(s).
++
++3.4. Notices
++
++You may not remove or alter the substance of any license notices
++(including copyright notices, patent notices, disclaimers of warranty,
++or limitations of liability) contained within the Source Code Form of
++the Covered Software, except that You may alter any license notices to
++the extent required to remedy known factual inaccuracies.
++
++3.5. Application of Additional Terms
++
++You may choose to offer, and to charge a fee for, warranty, support,
++indemnity or liability obligations to one or more recipients of Covered
++Software. However, You may do so only on Your own behalf, and not on
++behalf of any Contributor. You must make it absolutely clear that any
++such warranty, support, indemnity, or liability obligation is offered by
++You alone, and You hereby agree to indemnify every Contributor for any
++liability incurred by such Contributor as a result of warranty, support,
++indemnity or liability terms You offer. You may include additional
++disclaimers of warranty and limitations of liability specific to any
++jurisdiction.
++
++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 Software 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 placed in a text file included with all distributions of the Covered
++Software under this License. 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. Termination
++--------------
++
++5.1. The rights granted under this License will terminate automatically
++if You fail to comply with any of its terms. However, if You become
++compliant, then the rights granted under this License from a particular
++Contributor are reinstated (a) provisionally, unless and until such
++Contributor explicitly and finally terminates Your grants, and (b) on an
++ongoing basis, if such Contributor fails to notify You of the
++non-compliance by some reasonable means prior to 60 days after You have
++come back into compliance. Moreover, Your grants from a particular
++Contributor are reinstated on an ongoing basis if such Contributor
++notifies You of the non-compliance by some reasonable means, this is the
++first time You have received notice of non-compliance with this License
++from such Contributor, and You become compliant prior to 30 days after
++Your receipt of the notice.
++
++5.2. If You initiate litigation against any entity by asserting a patent
++infringement claim (excluding declaratory judgment actions,
++counter-claims, and cross-claims) alleging that a Contributor Version
++directly or indirectly infringes any patent, then the rights granted to
++You by any and all Contributors for the Covered Software under Section
++2.1 of this License shall terminate.
++
++5.3. In the event of termination under Sections 5.1 or 5.2 above, all
++end user license agreements (excluding distributors and resellers) which
++have been validly granted by You or Your distributors under this License
++prior to termination shall survive termination.
++
++************************************************************************
++*                                                                      *
++*  6. Disclaimer of Warranty                                           *
++*  -------------------------                                           *
++*                                                                      *
++*  Covered Software is provided under this License on an "as is"       *
++*  basis, without warranty of any kind, either expressed, implied, or  *
++*  statutory, including, without limitation, warranties that the       *
++*  Covered Software 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 Software is with You.        *
++*  Should any Covered Software prove defective in any respect, You     *
++*  (not any 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 Software is   *
++*  authorized under this License except under this disclaimer.         *
++*                                                                      *
++************************************************************************
++
++************************************************************************
++*                                                                      *
++*  7. Limitation of Liability                                          *
++*  --------------------------                                          *
++*                                                                      *
++*  Under no circumstances and under no legal theory, whether tort      *
++*  (including negligence), contract, or otherwise, shall any           *
++*  Contributor, or anyone who distributes Covered Software as          *
++*  permitted above, be liable to You for any direct, indirect,         *
++*  special, incidental, or consequential damages of any character      *
++*  including, without limitation, damages for lost profits, 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.                                    *
++*                                                                      *
++************************************************************************
++
++8. Litigation
++-------------
++
++Any litigation relating to this License may be brought only in the
++courts of a jurisdiction where the defendant maintains its principal
++place of business and such litigation shall be governed by laws of that
++jurisdiction, without reference to its conflict-of-law provisions.
++Nothing in this Section shall prevent a party's ability to bring
++cross-claims or counter-claims.
++
++9. Miscellaneous
++----------------
++
++This License represents the complete agreement concerning the 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. Any law or regulation which provides
++that the language of a contract shall be construed against the drafter
++shall not be used to construe this License against a Contributor.
++
++10. Versions of the License
++---------------------------
++
++10.1. New Versions
++
++Mozilla Foundation is the license steward. Except as provided in Section
++10.3, no one other than the license steward has the right to modify or
++publish new versions of this License. Each version will be given a
++distinguishing version number.
++
++10.2. Effect of New Versions
++
++You may distribute the Covered Software under the terms of the version
++of the License under which You originally received the Covered Software,
++or under the terms of any subsequent version published by the license
++steward.
++
++10.3. Modified Versions
++
++If you create software not governed by this License, and you want to
++create a new license for such software, you may create and use a
++modified version of this License if you rename the license and remove
++any references to the name of the license steward (except to note that
++such modified license differs from this License).
++
++10.4. Distributing Source Code Form that is Incompatible With Secondary
++Licenses
++
++If You choose to distribute Source Code Form that is Incompatible With
++Secondary Licenses under the terms of this version of the License, the
++notice described in Exhibit B of this License must be attached.
++
++Exhibit A - Source Code Form License Notice
++-------------------------------------------
++
++  This Source Code Form is subject to the terms of the Mozilla Public
++  License, v. 2.0. If a copy of the MPL was not distributed with this
++  file, You can obtain one at http://mozilla.org/MPL/2.0/.
++
++If it is not possible or desirable to put the notice in a particular
++file, then You may include the notice in a location (such as a LICENSE
++file in a relevant directory) where a recipient would be likely to look
++for such a notice.
++
++You may add additional accurate notices of copyright ownership.
++
++Exhibit B - "Incompatible With Secondary Licenses" Notice
++---------------------------------------------------------
++
++  This Source Code Form is "Incompatible With Secondary Licenses", as
++  defined by the Mozilla Public License, v. 2.0.
++
++--- end of LICENSE ---
++
++-------------------------------------------------------------------------------
++
++%% This notice is provided with respect to PC/SC Lite for Suse Linux v.1.1.1,
++which may be included with JRE 8, JDK 8, and OpenJDK 8 on Linux and Solaris.
++
++--- begin of LICENSE ---
++
++Copyright (c) 1999-2004 David Corcoran <corcoran@linuxnet.com>
++Copyright (c) 1999-2004 Ludovic Rousseau <ludovic.rousseau (at) free.fr>
++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. All advertising materials mentioning features or use of this software
++   must display the following acknowledgement:
++     This product includes software developed by: 
++      David Corcoran <corcoran@linuxnet.com>
++      http://www.linuxnet.com (MUSCLE)
++4. 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.
++
++--- end of LICENSE ---
++
++-------------------------------------------------------------------------------
++
++%% This notice is provided with respect to PorterStemmer v4, which may be 
++included with JRE 8, JDK 8, and OpenJDK 8.
++
++--- begin of LICENSE ---
++
++See: http://tartarus.org/~martin/PorterStemmer
++
++The software is completely free for any purpose, unless notes at the head of
++the program text indicates otherwise (which is rare). In any case, the notes
++about licensing are never more restrictive than the BSD License.
++
++In every case where the software is not written by me (Martin Porter), this
++licensing arrangement has been endorsed by the contributor, and it is
++therefore unnecessary to ask the contributor again to confirm it.
++
++I have not asked any contributors (or their employers, if they have them) for
++proofs that they have the right to distribute their software in this way.
++
++--- end of LICENSE ---
++
++-------------------------------------------------------------------------------
++
++%% This notice is provided with respect to Relax NG Object/Parser v.20050510,
++which may be included with JRE 8, JDK 8, and OpenJDK 8.
++
++--- begin of LICENSE ---
++
++Copyright (c) Kohsuke Kawaguchi
++
++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 ---
++
++-------------------------------------------------------------------------------
++
++%% This notice is provided with respect to RelaxNGCC v1.12, which may be 
++included with JRE 8, JDK 8, and OpenJDK 8.
++
++--- begin of LICENSE ---
++
++Copyright (c) 2000-2003 Daisuke Okajima and 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. The end-user documentation included with the redistribution, if any, must
++   include the following acknowledgment:
++
++    "This product includes software developed by Daisuke Okajima
++    and Kohsuke Kawaguchi (http://relaxngcc.sf.net/)."
++
++Alternately, this acknowledgment may appear in the software itself, if and
++wherever such third-party acknowledgments normally appear.
++
++4. The names of the copyright holders must not be used to endorse or promote
++   products derived from this software without prior written permission. For
++   written permission, please contact the copyright holders.
++
++5. Products derived from this software may not be called "RELAXNGCC", nor may
++  "RELAXNGCC" appear in their name, without prior written permission of the
++  copyright holders.
++
++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.
++
++--- end of LICENSE ---
++
++-------------------------------------------------------------------------------
++
++%% This notice is provided with respect to SAX 2.0.1, which may be included 
++with JRE 8, JDK 8, and OpenJDK 8.
++
++--- begin of LICENSE ---
++
++ 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
++
++--- end of LICENSE ---
++
++-------------------------------------------------------------------------------
++
++%% This notice is provided with respect to SoftFloat version 2b, which may be 
++included with JRE 8, JDK 8, and OpenJDK 8 on Linux/ARM.
++
++--- begin of LICENSE ---
++
++Use of any of this software is governed by the terms of the license below:
++
++SoftFloat was written by me, John R. Hauser. This work was made possible in 
++part by the International Computer Science Institute, located at Suite 600, 
++1947 Center Street, Berkeley, California 94704. Funding was partially 
++provided by the National Science Foundation under grant MIP-9311980. The 
++original version of this code was written as part of a project to build 
++a fixed-point vector processor in collaboration with the University of 
++California at Berkeley, overseen by Profs. Nelson Morgan and John Wawrzynek. 
++
++THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort 
++has been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT 
++TIMES RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO 
++PERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ALL 
++LOSSES, COSTS, OR OTHER PROBLEMS THEY INCUR DUE TO THE SOFTWARE, AND WHO 
++FURTHERMORE EFFECTIVELY INDEMNIFY JOHN HAUSER AND THE INTERNATIONAL COMPUTER 
++SCIENCE INSTITUTE (possibly via similar legal warning) AGAINST ALL LOSSES, 
++COSTS, OR OTHER PROBLEMS INCURRED BY THEIR CUSTOMERS AND CLIENTS DUE TO THE 
++SOFTWARE. 
++
++Derivative works are acceptable, even for commercial purposes, provided 
++that the minimal documentation requirements stated in the source code are 
++satisfied. 
++
++--- end of LICENSE ---
++
++-------------------------------------------------------------------------------
++
++%% This notice is provided with respect to Sparkle 1.5,
++which may be included with JRE 8 on Mac OS X.
++
++--- begin of LICENSE ---
++
++Copyright (c) 2012 Sparkle.org and Andy Matuschak
++
++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 ---
++
++-------------------------------------------------------------------------------
++
++%% Portions licensed from Taligent, Inc.
++
++-------------------------------------------------------------------------------
++
++%% This notice is provided with respect to Thai Dictionary, which may be 
++included with JRE 8, JDK 8, and OpenJDK 8.
++
++--- begin of LICENSE ---
++
++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 ---
++
++-------------------------------------------------------------------------------
++
++%% This notice is provided with respect to Unicode 6.2.0 & CLDR 21.0.1
++which may be included with JRE 8, JDK 8, and OpenJDK 8.
++
++--- begin of LICENSE ---
++
++Unicode Terms of Use
++
++For the general privacy policy governing access to this site, see the Unicode
++Privacy Policy. For trademark usage, see the Unicode® Consortium Name and
++Trademark Usage Policy.
++
++A. Unicode Copyright.
++   1. Copyright © 1991-2013 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. Each version of the Unicode Standard has further specifications of
++       rights and restrictions of use. For the book editions (Unicode 5.0 and
++       earlier), these are found on the back of the title page. The online
++       code charts carry specific restrictions. All other files, including
++       online documentation of the core specification for Unicode 6.0 and
++       later, are covered under these general Terms of Use.
++
++    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.
++
++B. 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.
++
++C. 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.
++
++D. 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.
++
++E.Trademarks & Logos.
++   1. The Unicode Word Mark and the Unicode Logo are trademarks of Unicode,
++      Inc.  “The Unicode Consortium” and “Unicode, Inc.” are trade names of
++      Unicode, Inc.  Use of the information and materials found on this
++      website indicates your acknowledgement of Unicode, Inc.’s exclusive
++      worldwide rights in the Unicode Word Mark, the Unicode Logo, and the
++      Unicode trade names.
++
++   2. The Unicode Consortium Name and Trademark Usage Policy (“Trademark
++      Policy”) are incorporated herein by reference and you agree to abide by
++      the provisions of the Trademark Policy, which may be changed from time
++      to time in the sole discretion of Unicode, Inc.
++
++   3. All third party trademarks referenced herein are the property of their
++      respective owners.
++
++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/, http://www.unicode.org/reports/, and
++http://www.unicode.org/cldr/data/. Unicode Data Files do not include PDF
++online code charts under the directory http://www.unicode.org/Public/.
++Software includes any source code published in the Unicode Standard or under
++the directories http://www.unicode.org/Public/,
++http://www.unicode.org/reports/, and http://www.unicode.org/cldr/data/.
++
++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-2012 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 any associated documentation (the "Data Files")
++or Unicode software and any 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. in the United
++States and other countries. All third party trademarks referenced herein are
++the property of their respective owners.
++
++--- end of LICENSE ---
++
++-------------------------------------------------------------------------------
++
++%% This notice is provided with respect to UPX v3.01, which may be included 
++with JRE 8 on Windows.
++
++--- begin of LICENSE ---
++
++Use of any of this software is governed by the terms of the license below:
++
++
++                 ooooo     ooo ooooooooo.   ooooooo  ooooo
++                 `888'     `8' `888   `Y88.  `8888    d8'
++                  888       8   888   .d88'    Y888..8P
++                  888       8   888ooo88P'      `8888'
++                  888       8   888            .8PY888.
++                  `88.    .8'   888           d8'  `888b
++                    `YbodP'    o888o        o888o  o88888o
++
++
++                    The Ultimate Packer for eXecutables
++          Copyright (c) 1996-2000 Markus Oberhumer & Laszlo Molnar
++               http://wildsau.idv.uni-linz.ac.at/mfx/upx.html
++                          http://www.nexus.hu/upx
++                            http://upx.tsx.org
++
++
++PLEASE CAREFULLY READ THIS LICENSE AGREEMENT, ESPECIALLY IF YOU PLAN
++TO MODIFY THE UPX SOURCE CODE OR USE A MODIFIED UPX VERSION.
++
++
++ABSTRACT
++========
++
++   UPX and UCL are copyrighted software distributed under the terms
++   of the GNU General Public License (hereinafter the "GPL").
++
++   The stub which is imbedded in each UPX compressed program is part
++   of UPX and UCL, and contains code that is under our copyright. The
++   terms of the GNU General Public License still apply as compressing
++   a program is a special form of linking with our stub.
++
++   As a special exception we grant the free usage of UPX for all
++   executables, including commercial programs.
++   See below for details and restrictions.
++
++
++COPYRIGHT
++=========
++
++   UPX and UCL are copyrighted software. All rights remain with the authors.
++
++   UPX is Copyright (C) 1996-2000 Markus Franz Xaver Johannes Oberhumer
++   UPX is Copyright (C) 1996-2000 Laszlo Molnar
++
++   UCL is Copyright (C) 1996-2000 Markus Franz Xaver Johannes Oberhumer
++
++
++GNU GENERAL PUBLIC LICENSE
++==========================
++
++   UPX and the UCL library 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 of
++   the License, or (at your option) any later version.
++
++   UPX and UCL 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 program; see the file COPYING.
++
++
++SPECIAL EXCEPTION FOR COMPRESSED EXECUTABLES
++============================================
++
++   The stub which is imbedded in each UPX compressed program is part
++   of UPX and UCL, and contains code that is under our copyright. The
++   terms of the GNU General Public License still apply as compressing
++   a program is a special form of linking with our stub.
++
++   Hereby Markus F.X.J. Oberhumer and Laszlo Molnar grant you special
++   permission to freely use and distribute all UPX compressed programs
++   (including commercial ones), subject to the following restrictions:
++
++   1. You must compress your program with a completely unmodified UPX
++      version; either with our precompiled version, or (at your option)
++      with a self compiled version of the unmodified UPX sources as
++      distributed by us.
++   2. This also implies that the UPX stub must be completely unmodfied, i.e.
++      the stub imbedded in your compressed program must be byte-identical
++      to the stub that is produced by the official unmodified UPX version.
++   3. The decompressor and any other code from the stub must exclusively get
++      used by the unmodified UPX stub for decompressing your program at
++      program startup. No portion of the stub may get read, copied,
++      called or otherwise get used or accessed by your program.
++
++
++ANNOTATIONS
++===========
++
++  - You can use a modified UPX version or modified UPX stub only for
++    programs that are compatible with the GNU General Public License.
++
++  - We grant you special permission to freely use and distribute all UPX
++    compressed programs. But any modification of the UPX stub (such as,
++    but not limited to, removing our copyright string or making your
++    program non-decompressible) will immediately revoke your right to
++    use and distribute a UPX compressed program.
++
++  - UPX is not a software protection tool; by requiring that you use
++    the unmodified UPX version for your proprietary programs we
++    make sure that any user can decompress your program. This protects
++    both you and your users as nobody can hide malicious code -
++    any program that cannot be decompressed is highly suspicious
++    by definition.
++
++  - You can integrate all or part of UPX and UCL into projects that
++    are compatible with the GNU GPL, but obviously you cannot grant
++    any special exceptions beyond the GPL for our code in your project.
++
++  - We want to actively support manufacturers of virus scanners and
++    similar security software. Please contact us if you would like to
++    incorporate parts of UPX or UCL into such a product.
++
++
++
++Markus F.X.J. Oberhumer                   Laszlo Molnar
++markus.oberhumer@jk.uni-linz.ac.at        ml1050@cdata.tvnet.hu
++
++Linz, Austria, 25 Feb 2000
++
++Additional License(s)
++
++The UPX license file is at http://upx.sourceforge.net/upx-license.html.
++
++--- end of LICENSE ---
++
++-------------------------------------------------------------------------------
++
++%% This notice is provided with respect to Xfree86-VidMode Extension 1.0,
++which may be included with JRE 8, JDK 8, and OpenJDK 8 on Linux and Solaris.
++
++--- begin of LICENSE ---
++
++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 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, sublicence, 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:
++
++   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, and in the same 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
++   software developed by The XFree86 Project, Inc (http://www.xfree86.org/) and
++   its contributors", in the same place and form as other third-party
++   acknowledgments. Alternately, this acknowledgment may appear in the software
++   itself, in the same form 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
++    or other dealings in this Software without prior written authorization from
++    The XFree86 Project, Inc.
++
++    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 XFREE86 PROJECT, 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; 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.  
++
++--- end of LICENSE ---
++
++-------------------------------------------------------------------------------
++
++%% This notice is provided with respect to X Window System 6.8.2, which may be 
++included with JRE 8, JDK 8, and OpenJDK 8 on Linux and Solaris.
++
++--- begin of LICENSE ---
++
++          Licenses
++The X.Org Foundation March 2004
++
++1. Introduction
++
++The X.org Foundation X Window System distribution is a compilation of code and
++documentation from many sources. This document is intended primarily as a
++guide to the licenses used in the distribution: you must check each file
++and/or package for precise redistribution terms. None-the-less, this summary
++may be useful to many users. No software incorporating the XFree86 1.1 license
++has been incorporated.
++
++This document is based on the compilation from XFree86.
++
++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.
++
++3. Other Licenses
++
++Portions of code are covered by the following licenses/copyrights. See
++individual files for the copyright dates.
++
++3.1. X/MIT Copyrights
++
++3.1.1. X Consortium
++
++Copyright (C) <date> 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/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 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.
++
++X Window System is a trademark of X Consortium, Inc.
++
++3.1.2. The Open Group
++
++Copyright <date> The Open Group
++
++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.
++
++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.  3.2.
++Berkeley-based copyrights:
++
++o
++3.2.1. General
++
++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.
++
++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.  3.2.2. UCB/LBL
++
++Copyright (c) 1993 The Regents of the University of California. All rights
++reserved.
++
++This software was developed by the Computer Systems Engineering group at
++Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and contributed to
++Berkeley.
++
++All advertising materials mentioning features or use of this software must
++display the following acknowledgement: This product includes software
++developed by the University of California, Lawrence Berkeley Laboratory.
++
++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. All advertising materials mentioning features or use of this software
++   must display the following acknowledgement: This product includes software
++   developed by the University of California, Berkeley and its contributors.
++
++   4. Neither the name of the University 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 REGENTS 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 REGENTS 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.  3.2.3. The
++NetBSD Foundation, Inc.
++
++Copyright (c) 2003 The NetBSD Foundation, Inc. All rights reserved.
++
++This code is derived from software contributed to The NetBSD Foundation by Ben
++Collver <collver1@attbi.com>
++
++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. All advertising materials mentioning features or use of this software
++   must display the following acknowledgement: This product includes software
++   developed by the NetBSD Foundation, Inc. and its contributors.
++
++   4. Neither the name of The NetBSD Foundation 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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.  3.2.4. Theodore
++Ts'o.
++
++Copyright Theodore Ts'o, 1994, 1995, 1996, 1997, 1998, 1999. 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,
++   and the entire permission notice in its entirety, including the disclaimer
++   of warranties.
++
++   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. he name of the author may not be used to endorse or promote products
++   derived from this software without specific prior written permission.
++
++THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
++INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
++FITNESS FOR A PARTICULAR PURPOSE, ALL OF WHICH ARE HEREBY 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 NOT ADVISED OF THE
++POSSIBILITY OF SUCH DAMAGE.  3.2.5. Theo de Raadt and Damien Miller
++
++Copyright (c) 1995,1999 Theo de Raadt. All rights reserved. Copyright (c)
++2001-2002 Damien Miller. 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.
++
++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.  3.2.6. Todd C. Miller
++
++Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
++
++Permission to use, copy, modify, and distribute this software for any purpose
++with or without fee is hereby granted, provided that the above copyright
++notice and this permission notice appear in all copies.
++
++THE SOFTWARE IS PROVIDED "AS IS" AND TODD C. MILLER DISCLAIMS ALL WARRANTIES
++WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
++MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL TODD C. MILLER BE LIABLE FOR
++ANY SPECIAL, DIRECT, 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.  3.2.7. Thomas
++Winischhofer
++
++Copyright (C) 2001-2004 Thomas Winischhofer
++
++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.
++
++THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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.  3.3. NVIDIA Corp
++
++Copyright (c) 1996 NVIDIA, Corp. All rights reserved.
++
++NOTICE TO USER: The source code is copyrighted under U.S. and international
++laws. NVIDIA, Corp. of Sunnyvale, California owns the copyright and as design
++patents pending on the design and interface of the NV chips. Users and
++possessors of this source code are hereby granted a nonexclusive, royalty-free
++copyright and design patent license to use this code in individual and
++commercial software.
++
++Any use of this source code must include, in the user documentation and
++internal comments to the code, notices to the end user as follows:
++
++Copyright (c) 1996 NVIDIA, Corp. NVIDIA design patents pending in the U.S. and
++foreign countries.
++
++NVIDIA, CORP. MAKES NO REPRESENTATION ABOUT THE SUITABILITY OF THIS SOURCE
++CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED
++WARRANTY OF ANY KIND. NVIDIA, CORP. DISCLAIMS ALL WARRANTIES WITH REGARD TO
++THIS SOURCE CODE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
++FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL NVIDIA, CORP. BE LIABLE
++FOR ANY SPECIAL, INDIRECT, INCIDENTAL, 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 SOURCE CODE.  3.4. GLX Public
++License
++
++GLX PUBLIC LICENSE (Version 1.0 (2/11/99)) ("License")
++
++Subject to any third party claims, Silicon Graphics, Inc. ("SGI") hereby
++grants permission to Recipient (defined below), under Recipient's copyrights
++in the Original Software (defined below), to use, copy, modify, merge,
++publish, distribute, sublicense and/or sell copies of Subject Software
++(defined below), and to permit persons to whom the Subject Software is
++furnished in accordance with this License to do the same, subject to all of
++the following terms and conditions, which Recipient accepts by engaging in any
++such use, copying, modifying, merging, publishing, distributing, sublicensing
++or selling:
++
++1. Definitions.
++
++    (a) "Original Software" means source code of computer software code which
++    is described in Exhibit A as Original Software.
++
++    (b) "Modifications" means any addition to or deletion from the substance
++    or structure of either the Original Software or any previous
++    Modifications. When Subject Software is released as a series of files, a
++    Modification means (i) any addition to or deletion from the contents of a
++    file containing Original Software or previous Modifications and (ii) any
++    new file that contains any part of the Original Code or previous
++    Modifications.
++
++    (c) "Subject Software" means the Original Software or Modifications or the
++    combination of the Original Software and Modifications, or portions of any
++    of the foregoing.
++
++    (d) "Recipient" means an individual or a legal entity exercising rights
++    under, and complying with all of the terms of, this License. For legal
++    entities, "Recipient" includes any entity which controls, is controlled
++    by, or is under common control with Recipient. For purposes of this
++    definition, "control" of an entity means (a) the power, direct or
++    indirect, to direct or manage such entity, or (b) ownership of fifty
++    percent (50%) or more of the outstanding shares or beneficial ownership of
++    such entity.
++
++2. Redistribution of Source Code Subject to These Terms. Redistributions of
++Subject Software in source code form must retain the notice set forth in
++Exhibit A, below, in every file. A copy of this License must be included in
++any documentation for such Subject Software where the recipients' rights
++relating to Subject Software are described. Recipient may distribute the
++source code version of Subject Software under a license of Recipient's choice,
++which may contain terms different from this License, provided that (i)
++Recipient is in compliance with the terms of this License, and (ii) the
++license terms include this Section 2 and Sections 3, 4, 7, 8, 10, 12 and 13 of
++this License, which terms may not be modified or superseded by any other terms
++of such license. If Recipient distributes the source code version under a
++different license Recipient must make it absolutely clear that any terms which
++differ from this License are offered by Recipient alone, not by SGI. Recipient
++hereby agrees to indemnify SGI for any liability incurred by SGI as a result
++of any such terms Recipient offers.
++
++3. Redistribution in Executable Form. The notice set forth in Exhibit A must
++be conspicuously included in any notice in an executable version of Subject
++Software, related documentation or collateral in which Recipient describes the
++user's rights relating to the Subject Software. Recipient may distribute the
++executable version of Subject Software under a license of Recipient's choice,
++which may contain terms different from this License, provided that (i)
++Recipient is in compliance with the terms of this License, and (ii) the
++license terms include this Section 3 and Sections 4, 7, 8, 10, 12 and 13 of
++this License, which terms may not be modified or superseded by any other terms
++of such license. If Recipient distributes the executable version under a
++different license Recipient must make it absolutely clear that any terms which
++differ from this License are offered by Recipient alone, not by SGI. Recipient
++hereby agrees to indemnify SGI for any liability incurred by SGI as a result
++of any such terms Recipient offers.
++
++4. Termination. This License and the rights granted hereunder will terminate
++automatically if Recipient fails to comply with terms herein and fails to cure
++such breach within 30 days of the breach. Any sublicense to the Subject
++Software which is properly granted shall survive any termination of this
++License absent termination by the terms of such sublicense. Provisions which,
++by their nature, must remain in effect beyond the termination of this License
++shall survive.
++
++5. No Trademark Rights. This License does not grant any rights to use any
++trade name, trademark or service mark whatsoever. No trade name, trademark or
++service mark of SGI may be used to endorse or promote products derived from
++the Subject Software without prior written permission of SGI.
++
++6. No Other Rights. This License does not grant any rights with respect to the
++OpenGL API or to any software or hardware implementation thereof or to any
++other software whatsoever, nor shall any other rights or licenses not
++expressly granted hereunder arise by implication, estoppel or otherwise with
++respect to the Subject Software. Title to and ownership of the Original
++Software at all times remains with SGI. All rights in the Original Software
++not expressly granted under this License are reserved.
++
++7. Compliance with Laws; Non-Infringement. Recipient shall comply with all
++applicable laws and regulations in connection with use and distribution of the
++Subject Software, including but not limited to, all export and import control
++laws and regulations of the U.S. government and other countries. Recipient may
++not distribute Subject Software that (i) in any way infringes (directly or
++contributorily) the rights (including patent, copyright, trade secret,
++trademark or other intellectual property rights of any kind) of any other
++person or entity or (ii) breaches any representation or warranty, express,
++implied or statutory, which under any applicable law it might be deemed to
++have been distributed.
++
++8. Claims of Infringement. If Recipient at any time has knowledge of any one
++or more third party claims that reproduction, modification, use, distribution,
++import or sale of Subject Software (including particular functionality or code
++incorporated in Subject Software) infringes the third party's intellectual
++property rights, Recipient must place in a well-identified web page bearing
++the title "LEGAL" a description of each such claim and a description of the
++party making each such claim in sufficient detail that a user of the Subject
++Software will know whom to contact regarding the claim. Also, upon gaining
++such knowledge of any such claim, Recipient must conspicuously include the URL
++for such web page in the Exhibit A notice required under Sections 2 and 3,
++above, and in the text of any related documentation, license agreement or
++collateral in which Recipient describes end user's rights relating to the
++Subject Software. If Recipient obtains such knowledge after it makes Subject
++Software available to any other person or entity, Recipient shall take other
++steps (such as notifying appropriate mailing lists or newsgroups) reasonably
++calculated to inform those who received the Subject Software that new
++knowledge has been obtained.
++
++9. DISCLAIMER OF WARRANTY. SUBJECT SOFTWARE IS PROVIDED ON AN "AS IS" BASIS,
++WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT
++LIMITATION, WARRANTIES THAT THE SUBJECT SOFTWARE IS FREE OF DEFECTS,
++MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON- INFRINGING. SGI ASSUMES NO
++RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE. SHOULD ANY SOFTWARE
++PROVE DEFECTIVE IN ANY RESPECT, SGI ASSUMES NO COST OR LIABILITY FOR ANY
++SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN
++ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY SUBJECT SOFTWARE IS AUTHORIZED
++HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
++
++10. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY,
++WHETHER TORT (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE OR STRICT LIABILITY),
++CONTRACT, OR OTHERWISE, SHALL SGI OR ANY SGI LICENSOR BE LIABLE FOR ANY
++DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
++CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK
++STOPPAGE, LOSS OF DATA, 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 SGI'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
++THAT EXCLUSION AND LIMITATION MAY NOT APPLY TO RECIPIENT.
++
++11. Indemnity. Recipient shall be solely responsible for damages arising,
++directly or indirectly, out of its utilization of rights under this License.
++Recipient will defend, indemnify and hold harmless Silicon Graphics, Inc. from
++and against any loss, liability, damages, costs or expenses (including the
++payment of reasonable attorneys fees) arising out of Recipient's use,
++modification, reproduction and distribution of the Subject Software or out of
++any representation or warranty made by Recipient.
++
++12. U.S. Government End Users. The Subject Software is a "commercial item"
++consisting of "commercial computer software" as such terms are defined in
++title 48 of the Code of Federal Regulations and all U.S. Government End Users
++acquire only the rights set forth in this License and are subject to the terms
++of this License.
++
++13. 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 so as to achieve as nearly as
++possible the same economic effect as the original provision and the remainder
++of this License will remain in effect. This License shall be governed by and
++construed in accordance with the laws of the United States and the State of
++California as applied to agreements entered into and to be performed entirely
++within California between California residents. Any litigation relating to
++this License shall be subject to the exclusive jurisdiction of the Federal
++Courts of the Northern District of California (or, absent subject matter
++jurisdiction in such courts, the courts of the State of California), with
++venue lying exclusively 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.
++
++Exhibit A
++
++The contents of this file are subject to Sections 2, 3, 4, 7, 8, 10, 12 and 13
++of the GLX Public License Version 1.0 (the "License"). You may not use this
++file except in compliance with those sections of the License. You may obtain a
++copy of the License at Silicon Graphics, Inc., attn: Legal Services, 2011 N.
++Shoreline Blvd., Mountain View, CA 94043 or at
++http://www.sgi.com/software/opensource/glx/license.html.
++
++Software distributed under the License is distributed on an "AS IS" basis. ALL
++WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED
++WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE OR OF NON-
++INFRINGEMENT. See the License for the specific language governing rights and
++limitations under the License.
++
++The Original Software is GLX version 1.2 source code, released February, 1999.
++The developer of the Original Software is Silicon Graphics, Inc. Those
++portions of the Subject Software created by Silicon Graphics, Inc. are
++Copyright (c) 1991-9 Silicon Graphics, Inc. All Rights Reserved.  3.5. CID
++Font Code Public License
++
++CID FONT CODE PUBLIC LICENSE (Version 1.0 (3/31/99))("License")
++
++Subject to any applicable third party claims, Silicon Graphics, Inc. ("SGI")
++hereby grants permission to Recipient (defined below), under SGI's copyrights
++in the Original Software (defined below), to use, copy, modify, merge,
++publish, distribute, sublicense and/or sell copies of Subject Software
++(defined below) in both source code and executable form, and to permit persons
++to whom the Subject Software is furnished in accordance with this License to
++do the same, subject to all of the following terms and conditions, which
++Recipient accepts by engaging in any such use, copying, modifying, merging,
++publication, distributing, sublicensing or selling:
++
++1. Definitions.
++
++    a. "Original Software" means source code of computer software code that is
++    described in Exhibit A as Original Software.
++
++    b. "Modifications" means any addition to or deletion from the substance or
++    structure of either the Original Software or any previous Modifications.
++    When Subject Software is released as a series of files, a Modification
++    means (i) any addition to or deletion from the contents of a file
++    containing Original Software or previous Modifications and (ii) any new
++    file that contains any part of the Original Code or previous
++    Modifications.
++
++    c. "Subject Software" means the Original Software or Modifications or the
++    combination of the Original Software and Modifications, or portions of any
++    of the foregoing.
++
++    d. "Recipient" means an individual or a legal entity exercising rights
++    under the terms of this License. For legal entities, "Recipient" includes
++    any entity that controls, is controlled by, or is under common control
++    with Recipient. For purposes of this definition, "control" of an entity
++    means (i) the power, direct or indirect, to direct or manage such entity,
++    or (ii) ownership of fifty percent (50%) or more of the outstanding shares
++    or beneficial ownership of such entity.
++
++    e. "Required Notice" means the notice set forth in Exhibit A to this
++    License.
++
++    f. "Accompanying Technology" means any software or other technology that
++    is not a Modification and that is distributed or made publicly available
++    by Recipient with the Subject Software. Separate software files that do
++    not contain any Original Software or any previous Modification shall not
++    be deemed a Modification, even if such software files are aggregated as
++    part of a product, or in any medium of storage, with any file that does
++    contain Original Software or any previous Modification.
++
++2. License Terms. All distribution of the Subject Software must be made
++subject to the terms of this License. A copy of this License and the Required
++Notice must be included in any documentation for Subject Software where
++Recipient's rights relating to Subject Software and/or any Accompanying
++Technology are described. Distributions of Subject Software in source code
++form must also include the Required Notice in every file distributed. In
++addition, a ReadMe file entitled "Important Legal Notice" must be distributed
++with each distribution of one or more files that incorporate Subject Software.
++That file must be included with distributions made in both source code and
++executable form. A copy of the License and the Required Notice must be
++included in that file. Recipient may distribute Accompanying Technology under
++a license of Recipient's choice, which may contain terms different from this
++License, provided that (i) Recipient is in compliance with the terms of this
++License, (ii) such other license terms do not modify or supersede the terms of
++this License as applicable to the Subject Software, (iii) Recipient hereby
++indemnifies SGI for any liability incurred by SGI as a result of the
++distribution of Accompanying Technology or the use of other license terms.
++
++3. Termination. This License and the rights granted hereunder will terminate
++automatically if Recipient fails to comply with terms herein and fails to cure
++such breach within 30 days of the breach. Any sublicense to the Subject
++Software that is properly granted shall survive any termination of this
++License absent termination by the terms of such sublicense. Provisions which,
++by their nature, must remain in effect beyond the termination of this License
++shall survive.
++
++4. Trademark Rights. This License does not grant any rights to use any trade
++name, trademark or service mark whatsoever. No trade name, trademark or
++service mark of SGI may be used to endorse or promote products derived from or
++incorporating any Subject Software without prior written permission of SGI.
++
++5. No Other Rights. No rights or licenses not expressly granted hereunder
++shall arise by implication, estoppel or otherwise. Title to and ownership of
++the Original Software at all times remains with SGI. All rights in the
++Original Software not expressly granted under this License are reserved.
++
++6. Compliance with Laws; Non-Infringement. Recipient shall comply with all
++applicable laws and regulations in connection with use and distribution of the
++Subject Software, including but not limited to, all export and import control
++laws and regulations of the U.S. government and other countries. Recipient may
++not distribute Subject Software that (i) in any way infringes (directly or
++contributorily) the rights (including patent, copyright, trade secret,
++trademark or other intellectual property rights of any kind) of any other
++person or entity, or (ii) breaches any representation or warranty, express,
++implied or statutory, which under any applicable law it might be deemed to
++have been distributed.
++
++7. Claims of Infringement. If Recipient at any time has knowledge of any one
++or more third party claims that reproduction, modification, use, distribution,
++import or sale of Subject Software (including particular functionality or code
++incorporated in Subject Software) infringes the third party's intellectual
++property rights, Recipient must place in a well-identified web page bearing
++the title "LEGAL" a description of each such claim and a description of the
++party making each such claim in sufficient detail that a user of the Subject
++Software will know whom to contact regarding the claim. Also, upon gaining
++such knowledge of any such claim, Recipient must conspicuously include the URL
++for such web page in the Required Notice, and in the text of any related
++documentation, license agreement or collateral in which Recipient describes
++end user's rights relating to the Subject Software. If Recipient obtains such
++knowledge after it makes Subject Software available to any other person or
++entity, Recipient shall take other steps (such as notifying appropriate
++mailing lists or newsgroups) reasonably calculated to provide such knowledge
++to those who received the Subject Software.
++
++8. DISCLAIMER OF WARRANTY. SUBJECT SOFTWARE IS PROVIDED ON AN "AS IS" BASIS,
++WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT
++LIMITATION, WARRANTIES THAT THE SUBJECT SOFTWARE IS FREE OF DEFECTS,
++MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. SGI ASSUMES NO
++RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE. SHOULD ANY SOFTWARE
++PROVE DEFECTIVE IN ANY RESPECT, SGI ASSUMES NO COST OR LIABILITY FOR ANY
++SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN
++ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY SUBJECT SOFTWARE IS AUTHORIZED
++HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
++
++9. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY,
++WHETHER TORT (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE OR STRICT LIABILITY),
++CONTRACT, OR OTHERWISE, SHALL SGI OR ANY SGI LICENSOR 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 SUBJECT SOFTWARE OR
++THE USE OR OTHER DEALINGS IN THE SUBJECT SOFTWARE. SOME JURISDICTIONS DO NOT
++ALLOW THE EXCLUSION OR LIMITATION OF CERTAIN DAMAGES, SO THIS EXCLUSION AND
++LIMITATION MAY NOT APPLY TO RECIPIENT TO THE EXTENT SO DISALLOWED.
++
++10. Indemnity. Recipient shall be solely responsible for damages arising,
++directly or indirectly, out of its utilization of rights under this License.
++Recipient will defend, indemnify and hold SGI and its successors and assigns
++harmless from and against any loss, liability, damages, costs or expenses
++(including the payment of reasonable attorneys fees) arising out of
++(Recipient's use, modification, reproduction and distribution of the Subject
++Software or out of any representation or warranty made by Recipient.
++
++11. U.S. Government End Users. The Subject Software is a "commercial item"
++consisting of "commercial computer software" as such terms are defined in
++title 48 of the Code of Federal Regulations and all U.S. Government End Users
++acquire only the rights set forth in this License and are subject to the terms
++of this License.
++
++12. Miscellaneous. This License represents the complete agreement concerning
++subject matter hereof. If any provision of this License is held to be
++unenforceable by any judicial or administrative authority having proper
++jurisdiction with respect thereto, such provision shall be reformed so as to
++achieve as nearly as possible the same economic effect as the original
++provision and the remainder of this License will remain in effect. This
++License shall be governed by and construed in accordance with the laws of the
++United States and the State of California as applied to agreements entered
++into and to be performed entirely within California between California
++residents. Any litigation relating to this License shall be subject to the
++exclusive jurisdiction of the Federal Courts of the Northern District of
++California (or, absent subject matter jurisdiction in such courts, the courts
++of the State of California), with venue lying exclusively 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 that
++provides that the language of a contract shall be construed against the
++drafter shall not apply to this License.
++
++Exhibit A
++
++Copyright (c) 1994-1999 Silicon Graphics, Inc.
++
++The contents of this file are subject to the CID Font Code Public License
++Version 1.0 (the "License"). You may not use this file except in compliance
++with the License. You may obtain a copy of the License at Silicon Graphics,
++Inc., attn: Legal Services, 2011 N. Shoreline Blvd., Mountain View, CA 94043
++or at http://www.sgi.com/software/opensource/cid/license.html
++
++Software distributed under the License is distributed on an "AS IS" basis. ALL
++WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED
++WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE OR OF
++NON-INFRINGEMENT. See the License for the specific language governing rights
++and limitations under the License.
++
++The Original Software (as defined in the License) is CID font code that was
++developed by Silicon Graphics, Inc. Those portions of the Subject Software (as
++defined in the License) that were created by Silicon Graphics, Inc. are
++Copyright (c) 1994-1999 Silicon Graphics, Inc. All Rights Reserved.
++
++[NOTE: When using this text in connection with Subject Software delivered
++solely in object code form, Recipient may replace the words "this file" with
++"this software" in both the first and second sentences.] 3.6. Bitstream Vera
++Fonts Copyright
++
++The fonts have a generous copyright, allowing derivative works (as long as
++"Bitstream" or "Vera" are not in the names), and full redistribution (so long
++as they are not *sold* by themselves). They can be be bundled, redistributed
++and sold with any software.
++
++The fonts are distributed under the following copyright:
++
++Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a
++trademark of Bitstream, Inc.
++
++Permission is hereby granted, free of charge, to any person obtaining a copy
++of the fonts accompanying this license ("Fonts") and associated documentation
++files (the "Font Software"), to reproduce and distribute the Font Software,
++including without limitation the rights to use, copy, merge, publish,
++distribute, and/or sell copies of the Font Software, and to permit persons to
++whom the Font Software is furnished to do so, subject to the following
++conditions:
++
++The above copyright and trademark notices and this permission notice shall be
++included in all copies of one or more of the Font Software typefaces.
++
++The Font Software may be modified, altered, or added to, and in particular the
++designs of glyphs or characters in the Fonts may be modified and additional
++glyphs or characters may be added to the Fonts, only if the fonts are renamed
++to names not containing either the words "Bitstream" or the word "Vera".
++
++This License becomes null and void to the extent applicable to Fonts or Font
++Software that has been modified and is distributed under the "Bitstream Vera"
++names.
++
++The Font Software may be sold as part of a larger software package but no copy
++of one or more of the Font Software typefaces may be sold by itself.
++
++THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
++OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY,
++FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT,
++TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION
++BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL,
++SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION
++OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO
++USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
++
++Except as contained in this notice, the names of Gnome, the Gnome Foundation,
++and Bitstream Inc., shall not be used in advertising or otherwise to promote
++the sale, use or other dealings in this Font Software without prior written
++authorization from the Gnome Foundation or Bitstream Inc., respectively. For
++further information, contact: fonts at gnome dot org.  3.7. Bigelow & Holmes
++Inc and URW++ GmbH Luxi font license
++
++Luxi fonts copyright (c) 2001 by Bigelow & Holmes Inc. Luxi font instruction
++code copyright (c) 2001 by URW++ GmbH. All Rights Reserved. Luxi is a
++registered trademark of Bigelow & Holmes Inc.
++
++Permission is hereby granted, free of charge, to any person obtaining a copy
++of these Fonts and associated documentation files (the "Font Software"), to
++deal in the Font Software, including without limitation the rights to use,
++copy, merge, publish, distribute, sublicense, and/or sell copies of the Font
++Software, and to permit persons to whom the Font Software is furnished to do
++so, subject to the following conditions:
++
++The above copyright and trademark notices and this permission notice shall be
++included in all copies of one or more of the Font Software.
++
++The Font Software may not be modified, altered, or added to, and in particular
++the designs of glyphs or characters in the Fonts may not be modified nor may
++additional glyphs or characters be added to the Fonts. This License becomes
++null and void when the Fonts or Font Software have been modified.
++
++THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
++OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY,
++FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT,
++TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BIGELOW & HOLMES INC. OR URW++
++GMBH. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY
++GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN
++AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR
++INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT
++SOFTWARE.
++
++Except as contained in this notice, the names of Bigelow & Holmes Inc. and
++URW++ GmbH. shall not be used in advertising or otherwise to promote the sale,
++use or other dealings in this Font Software without prior written
++authorization from Bigelow & Holmes Inc. and URW++ GmbH.
++
++For further information, contact:
++
++info@urwpp.de or design@bigelowandholmes.com
++
++
++--- end of LICENSE ---
++
++-------------------------------------------------------------------------------
++
++%% This notice is provided with respect to zlib v1.2.5, which may be included 
++with JRE 8, JDK 8, and OpenJDK 8.
++
++--- begin of LICENSE ---
++
++  version 1.2.5, July 18th, 2005
++
++  Copyright (C) 1995-2005 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
++
++--- end of LICENSE ---
++
++-------------------------------------------------------------------------------
++
++%% This notice is provided with respect to the following which may be 
++included with JRE 8, JDK 8, and OpenJDK 8, except where noted:
++
++  Apache Commons Math 2.2
++  Apache Derby 10.10.1.2        [included with JDK 8]
++  Apache Jakarta BCEL 5.2 
++  Apache Jakarta Regexp 1.4 
++  Apache Santuario XML Security for Java 1.5.4
++  Apache Xalan-Java 2.7.1 
++  Apache Xerces Java 2.10.0 
++  Apache XML Resolver 1.1 
++  Dynalink 0.5
++
++These components are licensed under the Apache License, Version 2.0.
++See /usr/share/common-licenses/Apache-2.0
++
++-------------------------------------------------------------------------------
++
++
++===============================================================================
++
++debian/dbg8.py:
++# Copyright 2016, Red Hat and individual contributors
++# by the @authors tag.
++# 
++# This is free software; you can redistribute it and/or modify it
++# under the terms of the GNU Lesser General Public License as
++# published by the Free Software Foundation; either version 2.1 of
++# the License, or (at your option) any later version.
++# 
++# This software 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
++# Lesser General Public License for more details.
++
++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/dbg.py
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..47db8589f92f22f6c2a0d44fb9b5b96b1278051d
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1232 @@@
++# Copyright 2016, Red Hat and individual contributors
++# by the @authors tag.
++# 
++# This is free software; you can redistribute it and/or modify it
++# under the terms of the GNU Lesser General Public License as
++# published by the Free Software Foundation; either version 2.1 of
++# the License, or (at your option) any later version.
++# 
++# This software 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
++# Lesser General Public License for more details.
++# 
++# You should have received a copy of the GNU Lesser General Public
++# License along with this software; if not, write to the Free
++# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
++# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
++# 
++# @authors Andrew Dinn
++
++import gdb
++
++import re
++from gdb.FrameDecorator import FrameDecorator
++
++# we rely on the unwinder API provided by gdb.7.10
++
++_dump_frame = False
++_have_unwinder = True
++try:
++    from gdb.unwinder import Unwinder
++    gdb.write("Installing openjdk unwinder\n")
++except ImportError:
++    _have_unwinder = False
++    # We need something here; it doesn't matter what as no unwinder
++    # will ever be instantiated.
++    Unwinder = object
++
++
++def debug_write(msg):
++    gdb.write(msg)
++    # pass
++
++def t(msg):
++    gdb.write("%s\n" % msg)
++    # pass
++
++# debug_write("dbg.py\n")
++
++# class providing various type conversions for gdb Value instances
++
++class Types(object):
++    # cache some basic primitive and pointer types
++    byte_t = gdb.lookup_type('unsigned char')
++    char_t = gdb.lookup_type('char')
++    int_t = gdb.lookup_type('int')
++    long_t = gdb.lookup_type('long')
++    void_t = gdb.lookup_type('void')
++    
++    bytep_t = byte_t.pointer()
++    charp_t = char_t.pointer()
++    intp_t = int_t.pointer()
++    longp_t = long_t.pointer()
++    voidp_t = void_t.pointer()
++
++    codeblobp_t = gdb.lookup_type('CodeBlob').pointer()
++    cmethodp_t = gdb.lookup_type('CompiledMethod').pointer()
++    nmethodp_t = gdb.lookup_type('nmethod').pointer()
++
++    ptrp_t = voidp_t.pointer()
++
++    # convert Values to primitive Values
++    @classmethod
++    def cast_byte(cls, value):
++        return value.cast(cls.byte_t)
++
++    @classmethod
++    def cast_int(cls, value):
++        return value.cast(cls.int_t)
++
++    @classmethod
++    def cast_long(cls, value):
++        return value.cast(cls.long_t)
++
++    # convert Values to pointer Values
++    @classmethod
++    def cast_bytep(cls, value):
++        return value.cast(cls.bytep_t)
++
++    @classmethod
++    def cast_intp(cls, value):
++        return value.cast(cls.intp_t)
++
++    @classmethod
++    def cast_longp(cls, value):
++        return value.cast(cls.longp_t)
++
++    @classmethod
++    def cast_voidp(cls, value):
++        return value.cast(cls.voidp_t)
++
++    @classmethod
++    def cast_ptrp(cls, value):
++        return value.cast(cls.ptrp_t)
++
++    # cast Value to pointer type then load and return contents as Value
++    @classmethod
++    def load_ptr(cls, value):
++        return cls.cast_ptrp(cls.cast_ptrp(value).dereference())
++
++    @classmethod
++    def load_byte(cls, value):
++        return cls.cast_bytep(value).dereference()
++
++    @classmethod
++    def load_int(cls, value):
++        return cls.cast_intp(value).dereference()
++
++    @classmethod
++    def load_long(cls, value):
++        return cls.cast_longp(value).dereference()
++
++    # cast Value to int and return as python integer
++    @classmethod
++    def as_int(cls, value):
++        return int(cls.cast_int(value))
++
++    # cast Value to long and return as python integer
++    @classmethod
++    def as_long(cls, value):
++        return int(cls.cast_long(value))
++
++    # construct Value from integer x and cast to type t
++    @classmethod
++    def to_type(cls, x, t):
++        return gdb.Value(x).cast(t)
++
++    # construct voidp Value from integer x
++    @classmethod
++    def to_voidp(cls, x):
++        return cls.to_type(x, cls.voidp_t)
++
++    # construct void ** Value from integer x
++    @classmethod
++    def to_ptrp(cls, x):
++        return cls.to_type(x, cls.ptrp_t)
++
++# OpenJDK specific classes which understand the layout of the code
++# heap and know how to translate a PC to an associated code blob and,
++# from there to a method object. n.b. in some cases the latter step
++# requires a frame base pointer bu tthat can be calculated using the
++# code blob and stack pointer
++
++# class encapsulating details of a specific heap
++
++class CodeHeap:
++
++    # track whether we have static initialized yet
++    class_inited = False
++    heap_block_type = None
++    code_blob_type = None
++
++    @classmethod
++    def class_init(cls):
++        # t("CodeHeap.class_init")
++        if cls.class_inited:
++            return
++        # we can only proceed if we have the necessary heap symbols
++        # if this excepts then we don't care
++        cls.heap_block_type = gdb.lookup_type("HeapBlock").pointer()
++        cls.code_blob_type = gdb.lookup_type("CodeBlob").pointer()
++        cls.class_inited = True
++    
++    def __init__(self, heap):
++        # t("CodeHeap.__init__")
++        # make sure we have static inited successfuly
++        self.class_init()
++        # if we got here we are ok to create a new instance
++        self.heap = heap
++        self.name = str(heap['_name'])
++        self.lo = Types.as_long(heap['_memory']['_low_boundary'])
++        self.hi = Types.as_long(heap['_memory']['_high_boundary'])
++        self.segmap = heap['_segmap']
++        self.segmap_lo = self.segmap['_low']
++        self.segment_size = int(heap['_segment_size'])
++        self.log2_segment_size = int(heap['_log2_segment_size'])
++        # debug_write("@@ heap.name = %s\n" % self.name)
++        # debug_write("@@ heap.lo = 0x%x\n" % self.lo)
++        # debug_write("@@ heap.hi = 0x%x\n" % self.hi)
++
++    def inrange(self, x):
++        # t("CodeHeap.inrange")
++        return self.lo <= x and self.hi > x 
++    def findblob(self, pc):
++        # t("CodeHeap.findblob")
++        x = Types.as_long(pc)
++        # debug_write("@@ findblob(%s, 0x%x)\n" % (self.name, pc))
++        # debug_write("@@ pc (%s) = 0x%x \n" % (str(pc.type), pc))
++        # debug_write("@@ self.lo = 0x%x\n" % self.lo)
++        # debug_write("@@ self.hi = 0x%x\n" % self.hi)
++        # check pc is in this heap's range
++        # t("if not self.inrange(x):")
++        if not self.inrange(x):
++            return None
++        # debug_write("@@ pc in range\n")
++        # t("segments = 0")
++        segments = 0
++        # debug_write("@@ segmap_lo (%s) = 0x%x\n" % (str(self.segmap_lo.type), self.segmap_lo))
++        # debug_write("@@ self.lo = 0x%x \n" % self.lo)
++        # debug_write("@@ self.log2_segment_size = 0x%x \n" % self.log2_segment_size)
++        # t("offset = Types.as_long(pc - self.lo)")
++        offset = Types.as_long(pc - self.lo)
++        # debug_write("@@ offset = 0x%x\n" % offset)
++        # t("shift = self.log2_segment_size")
++        shift = self.log2_segment_size
++        # debug_write("@@ shift = 0x%x\n" % shift)
++        # t("segment = offset >> shift")
++        segment = offset >> shift
++        # segment = (offset >> self.log2_segment_size)
++        #segment = offset >> (self.log2_segment_size & 0x31)
++        # debug_write("@@ segment = 0x%x\n" % segment)
++        # t("tag = (self.segmap_lo + segment).dereference() & 0xff")
++        tag = (self.segmap_lo + segment).dereference() & 0xff
++        # tag = Types.load_byte(self.segmap_lo + segment) & 0xff
++        # debug_write("@@ tag (%s) = 0x%x\n" % (str(tag.type), tag))
++        # t("while tag > 0 and segments < 64:")
++        while tag > 0 and segments < 64:
++            # t("segment = segment - tag")
++            segment = segment - tag
++            # debug_write("@@ segment = 0x%x\n" % segment)
++            # t("tag = (self.segmap_lo + segment).dereference() & 0xff")
++            tag = (self.segmap_lo + segment).dereference() & 0xff
++            # debug_write("@@ tag (%s) = 0x%x\n" % (str(tag.type), tag))
++            # t("segments += 1")
++            segments += 1
++            # t("if tag != 0:")
++        if tag != 0:
++            # t("return None")
++            return None
++        # debug_write("@@ lo = 0x%x\n" % self.lo)
++        # debug_write("@@ segment << self.log2_segment_size = 0x%x\n" % (segment << self.log2_segment_size))
++        # t("block_addr = self.lo + (segment << self.log2_segment_size)")
++        block_addr = self.lo + (segment << self.log2_segment_size)
++        # debug_write("@@ block_addr (%s) = 0x%x\n" % (str(block_addr.type), block_addr))
++        # t("heap_block = gdb.Value(block_addr).cast(CodeHeap.heap_block_type)")
++        heap_block = gdb.Value(block_addr).cast(CodeHeap.heap_block_type)
++        # debug_write("@@ heap_block (%s) = 0x%x\n" % (str(heap_block.type), heap_block))
++        # t("if heap_block['_header']['_used'] != 1:")
++        if heap_block['_header']['_used'] != 1:
++            # hmm, this is not meant to happen
++            # t("return None")
++            return None
++        # t("blob = (heap_block + 1).cast(CodeHeap.code_blob_type)")
++        blob = (heap_block + 1).cast(CodeHeap.code_blob_type)
++        return blob
++
++# class encapsulating access to code cache memory
++# this is essentially all static as per the JVM class
++
++class CodeCache:
++    # track whether we have successfully intiialized
++    class_inited = False
++    # static heap start, lo and hi bounds for code addresses
++    lo = 0
++    hi = 0
++    heap_count = 0
++    heap_list = []
++
++    @classmethod
++    def class_init(cls):
++        # t("CodeCache.class_init")
++        if cls.class_inited:
++            return
++        # t("if cls.lo  == 0 or cls.hi == 0:")
++        if cls.lo == 0 or cls.hi == 0:
++            try:
++                # t("cls.lo = gdb.parse_and_eval(\"CodeCache::_low_bound\")")
++                lo = gdb.parse_and_eval("CodeCache::_low_bound")
++                cls.lo = Types.as_long(lo)
++                # debug_write("@@ CodeCache::_low_bound = 0x%x\n" % cls.lo)
++                if cls.lo == 0:
++                    return
++                # t("cls.hi = gdb.parse_and_eval(\"CodeCache::_high_bound\")")
++                hi = gdb.parse_and_eval("CodeCache::_high_bound")
++                cls.hi = Types.as_long(hi)
++                # debug_write("@@ CodeCache::_high_bound = 0x%x\n" % cls.hi)
++                if cls.hi == 0:
++                    return
++            except Exception as arg:
++                # debug_write("@@ %s\n" % arg)
++                cls.lo = 0
++                cls.hi = 0
++                cls.class_inited = False
++                raise
++
++        # t("f cls.heap_list == []:")
++        if cls.heap_list == []:
++            try:
++                # t("heaps = gdb.parse_and_eval(\"CodeCache::_heaps\")")
++                heaps = gdb.parse_and_eval("CodeCache::_heaps")
++                # debug_write("@@ CodeCache::_heaps (%s) = 0x%x\n" % (heaps.type, heaps))
++                # t("len = int(heaps['_len'])")
++                len = int(heaps['_len'])
++                # debug_write("@@ CodeCache::_heaps->_len = %d\n" % len)
++                # t("data = heaps['_data']")
++                data = heaps['_data']
++                # debug_write("@@ CodeCache::_heaps->_data = 0x%x\n" % data)
++                # t("for i in range(0, len):")
++                for i in range(0, len):
++                    # t("heap = CodeHeap((data + i).dereference())")
++                    heap = CodeHeap((data + i).dereference())
++                    # t("cls.heap_list.append(heap)")
++                    cls.heap_list.append(heap)
++                    # t("cls.heap_count += 1")
++                    cls.heap_count += 1
++            except Exception as arg:
++                # debug_write("@@ %s\n" % arg)
++                cls.heap_list = []
++                cls.heap_count = 0
++                cls.class_inited = False
++                raise
++        cls.class_inited = True
++
++    @classmethod
++    def inrange(cls, pc):
++        # t("CodeCache.inrange")
++        # make sure we are initialized
++        cls.class_init()
++        # if we got here we can use the heaps
++        x = Types.as_long(pc)
++        # t("return cls.lo <= x and cls.hi > x")
++        return cls.lo <= x and cls.hi > x
++
++    @classmethod
++    def makestr(cls, charcnt, charptr):
++        # t("CodeCache.makestr")
++        #res = ""
++        #for i in range(0, charcnt):
++        #    c = (charptr + i).dereference()
++        #    res = ("%s%c" % (res, c))
++        #return res
++        # debug_write("charcnt = %d charptr = %s\n" % (charcnt, str(charptr)))
++        return charptr.string("ascii", "ignore", charcnt)
++
++    # given a PC find the associated OpenJDK code blob instance
++    @classmethod
++    def findblob(cls, pc):
++        # t("CodeCache.findblob")
++        # make sure we are initialized
++        cls.class_init()
++        # if we got here we can use the heaps
++        if not cls.inrange(pc):
++            raise gdb.GdbError("dbg.findblob : address 0x%x is not in range!" % pc)
++        for heap in cls.heap_list:
++            try:
++                # t("blob = heap.findblob(pc)")
++                blob = heap.findblob(pc)
++            except Exception as arg:
++                # debug_write("@@ findblob excepted %s\n" % str(arg)) 
++                # t("blob = None")
++                blob = None
++            # t("if blob != None:")
++            if blob != None:
++                # t("name=str(blob['_name'])")
++                name=str(blob['_name'])
++                # debug_write("@@ blob(0x%x) -> %s\n" % (pc, name))
++                # t("return blob")
++                return blob
++        # t("raise gdb.GdbError")
++        raise gdb.GdbError("dbg.findblob : no blob for inrange address 0x%x!" % pc)
++
++# abstract over some constants for stack frame layout
++
++class FrameConstants(object):
++    class_inited = False
++    _sender_sp_offset = 0
++    _interpreter_frame_sender_sp_offset = 0
++    _interpreter_frame_method_offset = 0
++    _interpreter_frame_bcp_offset = 0
++    @classmethod
++    def class_init(cls):
++        if cls.class_inited:
++            return
++        cls._interpreter_frame_sender_sp_offset = int(gdb.parse_and_eval("frame::interpreter_frame_sender_sp_offset"))
++        cls._sender_sp_offset = int(gdb.parse_and_eval("frame::sender_sp_offset"))
++        cls._interpreter_frame_method_offset = int(gdb.parse_and_eval("frame::interpreter_frame_method_offset"))
++        cls._interpreter_frame_bcp_offset = int(gdb.parse_and_eval("frame::interpreter_frame_bcp_offset"))
++        # only set if we got here with no errors
++        cls.class_inited = True
++    @classmethod
++    def sender_sp_offset(cls):
++        cls.class_init()
++        return cls._sender_sp_offset
++    @classmethod
++    def interpreter_frame_sender_sp_offset(cls):
++        cls.class_init()
++        return cls._interpreter_frame_sender_sp_offset
++    @classmethod
++    def interpreter_frame_method_offset(cls):
++        cls.class_init()
++        return cls._interpreter_frame_method_offset
++    @classmethod
++    def interpreter_frame_bcp_offset(cls):
++        cls.class_init()
++        return cls._interpreter_frame_bcp_offset
++
++# class which knows how to read a compressed stream of bytes n.b. at
++# the moment we only need to know how to read bytes and ints
++
++class CompressedStream:
++    # important constants for compressed stream read
++    BitsPerByte = 8
++    lg_H = 6
++    H = 1 << lg_H
++    L = (1 << BitsPerByte) - H
++    MAX_i = 4
++
++    def __init__(self, data):
++        # data is a gdb.Value of type 'byte *'
++        self.data = data
++        self.pos = 0
++    # retrieve the byte at offset pos
++    def at(self, pos):
++        return int(Types.load_byte(self.data + pos))
++    # read and return the next byte
++    def read(self):
++        # t("CompressedStream.read()")
++        pos = self.pos
++        b = self.at(pos)
++        self.pos = pos+1
++        return b
++    def read_int(self):
++        # t("CompressedStream.read_int()")
++        b0 = self.read()
++        # debug_write("b0 = 0x%x\n" % b0)
++        if b0 < CompressedStream.L:
++            return b0
++        return self.read_int_mb(b0)
++    def read_signed_int(self):
++        # t("CompressedStream.read_signed_int()")
++        return self.decode_sign(self.read_int())
++    def decode_sign(self, x):
++        # t("CompressedStream.decode_sign()")
++        return (x >> 1) ^ (0 - (x & 1))
++    def read_int_mb(self, b):
++        t# ("CompressedStream.read_int_mb()")
++        sum = b
++        pos = self.pos
++        # debug_write("pos = %d\n" % pos)
++        # debug_write("sum = 0x%x\n" % sum)
++        lg_H_i = CompressedStream.lg_H
++        i = 0
++        while (True):
++            b_i = self.at(pos + i)
++            # debug_write("b_%d = %d\n" % (i, b_i))
++            sum += (b_i << lg_H_i)
++            # debug_write("sum = 0x%x\n" % sum)
++            i += 1
++            if b_i < CompressedStream.L or i == CompressedStream.MAX_i:
++                self.pos = pos + i
++                # debug_write("self.pos = %d\n" % self.pos)
++                return sum
++            lg_H_i += CompressedStream.lg_H
++
++
++# class which knows how to find method and bytecode
++# index pairs from a pc associated with a given compiled
++# method. n.b. there may be more than one such pair
++# because of inlining.
++
++class MethodBCIReader:
++    pcdescstar_t = None
++    class_inited = False
++    @classmethod
++    def class_init(cls):
++        # t("MethodBCIReader.class_init")
++        if cls.class_inited:
++            return
++        # cache some useful types
++        cls.pcdesc_p = gdb.lookup_type("PcDesc").pointer()
++        cls.metadata_p = gdb.lookup_type("Metadata").pointer()
++        cls.metadata_pp = cls.metadata_p.pointer()
++        cls.method_p = gdb.lookup_type("Method").pointer()
++        cls.class_inited = True
++
++    @classmethod
++    def as_pcdesc_p(cls, val):
++        return Types.to_type(val, cls.pcdesc_p)
++
++    def __init__(self, nmethod, method):
++        # t("MethodBCIReader.__init__")
++        # ensure we have cached the necessary types
++        self.class_init()
++        # need to unpack pc scopes
++        self.nmethod = nmethod
++        self.method = method
++        # debug_write("nmethod (%s) = 0x%x\n" % (str(nmethod.type), Types.as_long(nmethod)))
++        blob = Types.to_type(nmethod, Types.codeblobp_t);
++        self.code_begin = Types.as_long(blob['_code_begin'])
++        self.code_end = Types.as_long(blob['_code_end'])
++        scopes_pcs_begin_offset = Types.as_int(nmethod['_scopes_pcs_offset'])
++        # debug_write("scopes_pcs_begin_offset = 0x%x\n" % scopes_pcs_begin_offset)
++        scopes_pcs_end_offset = Types.as_int(nmethod['_dependencies_offset'])
++        # debug_write("scopes_pcs_end_offset = 0x%x\n" % scopes_pcs_end_offset)
++        header_begin = Types.cast_bytep(nmethod)
++        self.scopes_pcs_begin = self.as_pcdesc_p(header_begin + scopes_pcs_begin_offset)
++        # debug_write("scopes_pcs_begin (%s) = 0x%x\n" % (str(self.scopes_pcs_begin.type), Types.as_long(self.scopes_pcs_begin)))
++        self.scopes_pcs_end = self.as_pcdesc_p(header_begin + scopes_pcs_end_offset)
++        # debug_write("scopes_pcs_end (%s) = 0x%x\n" % (str(self.scopes_pcs_end.type), Types.as_long(self.scopes_pcs_end)))
++
++    def find_pc_desc(self, pc_off):
++        lower = self.scopes_pcs_begin
++        upper = self.scopes_pcs_end - 1
++        if lower == upper:
++            return None
++        # non-empty table always starts with lower as a sentinel with
++        # offset -1 and will have at least one real offset beyond that
++        next = lower + 1
++        while next < upper and next['_pc_offset'] <= pc_off:
++            next = next + 1
++        # use the last known bci below this pc
++        return next - 1
++
++    def pc_desc_to_method_bci_stack(self, pc_desc):
++        scope_decode_offset = Types.as_int(pc_desc['_scope_decode_offset'])
++        if scope_decode_offset == 0:
++            return [ { 'method': self.method, 'bci': 0 } ]
++        nmethod = self.nmethod
++        # debug_write("nmethod = 0x%x\n" % nmethod)
++        # debug_write("pc_desc = 0x%x\n" % Types.as_long(pc_desc))
++        base = Types.cast_bytep(nmethod)
++        # scopes_data_offset = Types.as_int(nmethod['_scopes_data_offset'])
++        # scopes_base = base + scopes_data_offset
++        scopes_base = nmethod['_scopes_data_begin']
++        # debug_write("scopes_base = 0x%x\n" % Types.as_long(scopes_base))
++        metadata_offset = Types.as_int(nmethod['_metadata_offset'])
++        metadata_base = Types.to_type(base + metadata_offset, self.metadata_pp)
++        # debug_write("metadata_base = 0x%x\n" % Types.as_long(metadata_base))
++        scope = scopes_base + scope_decode_offset
++        # debug_write("scope = 0x%x\n" % Types.as_long(scope))
++        stream = CompressedStream(scope)
++        # debug_write("stream = %s\n" % stream)
++        sender = stream.read_int()
++        # debug_write("sender = %s\n" % sender)
++        # method name is actually in metadata
++        method_idx = stream.read_int()
++        method_md = (metadata_base + (method_idx - 1)).dereference()
++        methodptr = Types.to_type(method_md, self.method_p)
++        method = Method(methodptr)
++        # bci is offset by -1 to allow range [-1, ..., MAX_UINT)
++        bci = stream.read_int() - 1
++        # debug_write("method,bci = %s,0x%x\n" % (method.get_name(), bci))
++        result = [ { 'method': method, 'bci': bci } ]
++        while sender > 0:
++            # debug_write("\nsender = 0x%x\n" % sender)
++            stream = CompressedStream(scopes_base + sender)
++            sender = stream.read_int()
++            method_idx = stream.read_int()
++            method_md = (metadata_base + (method_idx - 1)).dereference()
++            methodptr = Types.to_type(method_md, self.method_p)
++            method = Method(methodptr)
++            # bci is offset by -1 to allow range [-1, ..., MAX_UINT)
++            bci = stream.read_int() - 1
++            # debug_write("method,bci = %s,0x%x\n" % (method.get_name(), bci))
++            result.append( { 'method': method, 'bci': bci } )
++        return result
++
++    def pc_to_method_bci_stack(self, pc):
++        # need to search unpacked pc scopes
++        if pc < self.code_begin or pc >= self.code_end:
++            return None
++        pc_off = pc - self.code_begin
++        # debug_write("\npc_off = 0x%x\n" % pc_off) 
++        pc_desc = self.find_pc_desc(pc_off)
++        if pc_desc is None:
++            return None
++        return self.pc_desc_to_method_bci_stack(pc_desc)
++
++# class which knows how to read a method's line
++# number table, translating bytecode indices to line numbers
++class LineReader:
++    # table is a gdb.Value of type 'byte *' (strictly 'u_char *' in JVM code)
++    def __init__(self, table):
++        # t("LineReader.init")
++        self.table = table
++        self.translations = {}
++    def bc_to_line(self, bci):
++        # t("LineReader.bc_to_line()")
++        try:
++            return self.translations[bci]
++        except Exception as arg:
++            line = self.compute_line(bci)
++            if line >= 0:
++                self.translations[bci] = line
++            return line
++    def compute_line(self, bci):
++        # t("LineReader.compute_line()")
++        # debug_write("table = 0x%x\n" % self.table)
++        bestline = -1
++        self.stream = CompressedStream(self.table)
++        self._bci = 0
++        self._line = 0
++        while self.read_pair():
++            nextbci = self._bci
++            nextline = self._line
++            if nextbci >= bci:
++                return nextline
++            else:
++                bestline = nextline
++        return bestline
++    def read_pair(self):
++        # t("LineReader.read_pair()")
++        next = self.stream.read()
++        # debug_write("next = 0x%x\n" % next)
++        if next == 0:
++            return False
++        if next == 0xff:
++            self._bci = self._bci + self.stream.read_signed_int()
++            self._line = self._line + self.stream.read_signed_int()
++        else:
++            self._bci = self._bci + (next >> 3)
++            self._line = self._line + (next & 0x7)
++        # debug_write("_bci = %d\n" % self._bci)
++        # debug_write("_line = %d\n" % self._line)
++        return True
++
++# class to provide access to data relating to a Method object
++class Method(object):
++    def __init__(self, methodptr):
++        self.methodptr = methodptr;
++        self.name = None
++        const_method = self.methodptr['_constMethod']
++        bcbase = Types.cast_bytep(const_method + 1)
++        bytecode_size =  Types.as_int(const_method['_code_size'])
++        lnbase = Types.cast_bytep(bcbase + bytecode_size)
++        self.line_number_reader = LineReader(lnbase)
++
++    def get_name(self):
++        if self.name == None:
++            self.make_name(self.methodptr)
++        return self.name
++        
++    def get_klass_path(self):
++        if self.name == None:
++            self.make_name(self.methodptr)
++        return self.klass_path
++    
++    def get_line(self, bci):
++        if bci < 0:
++            bci = 0
++        return self.line_number_reader.bc_to_line(bci)
++
++    def make_name(self, methodptr):
++        const_method = methodptr['_constMethod']
++        constant_pool = const_method['_constants']
++        constant_pool_base = Types.cast_voidp((constant_pool + 1))
++        klass_sym = constant_pool['_pool_holder']['_name']
++        klass_name = klass_sym['_body'].cast(gdb.lookup_type("char").pointer())
++        klass_name_length = int(klass_sym['_length'])
++        klass_path = CodeCache.makestr(klass_name_length, klass_name)
++        self.klass_str = klass_path.replace("/", ".")
++        dollaridx = klass_path.find('$')
++        if dollaridx >= 0:
++            klass_path = klass_path[0:dollaridx]
++        self.klass_path = klass_path + ".java"
++        method_idx = const_method['_name_index']
++        method_sym = (constant_pool_base + (8 * method_idx)).cast(gdb.lookup_type("Symbol").pointer().pointer()).dereference()
++        method_name = method_sym['_body'].cast(gdb.lookup_type("char").pointer())
++        method_name_length = int(method_sym['_length'])
++        self.method_str =  CodeCache.makestr(method_name_length, method_name)
++
++        sig_idx = const_method['_signature_index']
++        sig_sym = (constant_pool_base + (8 * sig_idx)).cast(gdb.lookup_type("Symbol").pointer().pointer()).dereference()
++        sig_name = sig_sym['_body'].cast(gdb.lookup_type("char").pointer())
++        sig_name_length = int(sig_sym['_length'])
++        sig_str = CodeCache.makestr(sig_name_length, sig_name)
++        self.sig_str = self.make_sig_str(sig_str)
++        self.name = self.klass_str + "." + self.method_str + self.sig_str
++            
++    def make_sig_str(self, sig):
++        in_sym_name = False
++        sig_str = ""
++        prefix=""
++        for i, c in enumerate(sig):
++            if c == "(":
++                sig_str = sig_str + c
++            elif c == ")":
++                # ignore return type
++                return sig_str + c
++            elif in_sym_name == True:
++                if c == ";":
++                    in_sym_name = False
++                elif c == "/":
++                    sig_str = sig_str + "."
++                else:
++                    sig_str = sig_str + c
++            elif c == "L":
++                sig_str = sig_str + prefix
++                prefix = ","
++                in_sym_name = True
++            elif c == "B":
++                sig_str = sig_str + prefix + "byte"
++                prefix = ","
++            elif c == "S":
++                sig_str = sig_str + prefix + "short"
++                prefix = ","
++            elif c == "C":
++                sig_str = sig_str + prefix + "char"
++                prefix = ","
++            elif c == "I":
++                sig_str = sig_str + prefix + "int"
++                prefix = ","
++            elif c == "J":
++                sig_str = sig_str + prefix + "long"
++                prefix = ","
++            elif c == "F":
++                sig_str = sig_str + prefix + "float"
++                prefix = ","
++            elif c == "D":
++                sig_str = sig_str + prefix + "double"
++                prefix = ","
++            elif c == "Z":
++                sig_str = sig_str + prefix + "boolean"
++                prefix = ","
++        return sig_str
++
++# This represents a method in a JIT frame for the purposes of
++# display. There may be more than one method associated with
++# a (compiled) frame because of inlining. The MethodInfo object
++# associated with a JIT frame creates a list of decorators.
++# Interpreted and stub MethodInfo objects insert only one
++# decorator. Compiled MethodInfo objects insert one for the
++# base method and one for each inlined method found at the
++# frame PC address.
++class OpenJDKFrameDecorator(FrameDecorator):
++    def __init__(self, base, methodname, filename, line):
++        super(FrameDecorator, self).__init__()
++        self._base = base
++        self._methodname = methodname
++        self._filename = filename
++        self._line = line
++
++    def function(self):
++        try:
++            # t("OpenJDKFrameDecorator.function")
++            return self._methodname
++        except Exception as arg:
++            gdb.write("!!! function oops !!! %s\n" % arg)
++            return None
++
++    def method_name(self):
++        return _methodname
++
++    def filename(self):
++        try:
++            return self._filename
++        except Exception as arg:
++            gdb.write("!!! filename oops !!! %s\n" % arg)
++            return None
++
++    def line(self):
++        try:
++            return self._line
++        except Exception as arg:
++            gdb.write("!!! line oops !!! %s\n" % arg)
++            return None
++
++# A frame filter for OpenJDK.
++class OpenJDKFrameFilter(object):
++    def __init__(self, unwinder):
++        self.name="OpenJDK"
++        self.enabled = True
++        self.priority = 100
++        self.unwinder = unwinder
++
++    def maybe_wrap_frame(self, frame):
++        # t("OpenJDKFrameFilter.maybe_wrap_frame")
++        if self.unwinder is None:
++            return [ frame ]
++        # t("unwindercache = self.unwinder.unwindercache")
++        unwindercache = self.unwinder.unwindercache
++        if unwindercache is None:
++            return [ frame ]
++        # t("base = frame.inferior_frame()")
++        base = frame.inferior_frame()
++        # t("sp = Types.as_long(base.read_register('rsp'))")
++        sp = base.read_register('rsp')
++        x = Types.as_long(sp)
++        # debug_write("@@ get info at unwindercache[0x%x]\n" % x)
++        try:
++            cache_entry = unwindercache[x]
++        except Exception as arg:
++            # n.b. no such entry throws an exception
++            # just ignore and use existing frame
++            return [ frame ]
++        try:
++            if cache_entry is None:
++                # debug_write("@@ lookup found no cache_entry\n")
++                return [ frame ]
++            elif cache_entry.codetype == "unknown":
++                # debug_write("@@ lookup found unknown cache_entry\n")
++                return [ frame ]
++            else:
++                # debug_write("@@ got cache_entry for blob 0x%x at unwindercache[0x%x]\n" % (cache_entry.blob, x))
++                method_info = cache_entry.method_info
++                if method_info == None:
++                    return [ frame ]
++                else:
++                    return method_info.decorate(frame)
++        except Exception as arg:
++            gdb.write("!!! maybe_wrap_frame oops !!! %s\n" % arg)
++            return [ frame ]
++
++    def flatten(self, list_of_lists):
++        return [x for y in list_of_lists for x in y ]
++
++    def filter(self, frame_iter):
++        # return map(self.maybe_wrap_frame, frame_iter)
++        return self.flatten( map(self.maybe_wrap_frame, frame_iter) )
++
++    
++# A frame id class, as specified by the gdb unwinder API.
++class OpenJDKFrameId(object):
++    def __init__(self, sp, pc):
++        # t("OpenJDKFrameId.__init__")
++        self.sp = sp
++        self.pc = pc
++
++# class hierarchy to record details of different code blobs
++# the class implements functionality required by the frame decorator
++
++class MethodInfo(object):
++    def __init__(self, entry):
++        self.blob = entry.blob
++        self.pc = Types.as_long(entry.pc)
++        self.sp = Types.as_long(entry.sp)
++        if entry.bp is None:
++            self.bp = 0
++        else:
++            self.bp = Types.as_long(entry.bp)
++
++    def decorate(self, frame):
++        return [ frame ]
++
++# info for stub frame
++
++class StubMethodInfo(MethodInfo):
++    def __init__(self, entry, name):
++        super(StubMethodInfo, self).__init__(entry)
++        self.name = name
++
++    def decorate(self, frame):
++        return [ OpenJDKFrameDecorator(frame, self.name, None, None) ]
++
++# common info for compiled, native or interpreted frame
++class JavaMethodInfo(MethodInfo):
++
++    def __init__(self, entry):
++        super(JavaMethodInfo, self).__init__(entry)
++
++    def cache_method_info(self):
++        methodptr = self.get_methodptr()
++        self.method = Method(methodptr)
++
++
++    def get_method(self):
++        return self.method
++
++    def method_name(self):
++        return self.get_method().get_name()
++
++    def filename(self):
++        return self.get_method().get_klass_path()
++
++    def decorate(self, frame):
++        return [ OpenJDKFrameDecorator(frame, self.method_name(), self.filename(), None) ]
++
++# info for compiled frame
++
++class CompiledMethodInfo(JavaMethodInfo):
++
++    def __init__(self, entry):
++        # t("CompiledMethodInfo.__init__")
++        super(CompiledMethodInfo,self).__init__(entry)
++        blob = self.blob
++        cmethod = Types.to_type(blob, Types.cmethodp_t)
++        nmethod = Types.to_type(blob, Types.nmethodp_t)
++        self.methodptr = cmethod['_method']
++        const_method = self.methodptr['_constMethod']
++        bcbase = Types.cast_bytep(const_method + 1)
++        self.code_begin = Types.as_long(blob['_code_begin'])
++        # get bc and line number info from method
++        self.cache_method_info()
++        # get PC to BCI translator from the nmethod
++        self.bytecode_index_reader = MethodBCIReader(nmethod, self.method)
++        # t("self.method_bci_stack = self.bytecode_index_reader.pc_to_method_bci_stack(self.pc)")
++        self.method_bci_stack = self.bytecode_index_reader.pc_to_method_bci_stack(self.pc)
++
++    # subclasses need to compute their method pointer
++
++    def get_methodptr(self):
++        return self.methodptr
++
++    def format_method_name(self, method, is_outer):
++        name = method.get_name()
++        if is_outer:
++            return ("[compiled offset=0x%x] %s" % (self.pc - self.code_begin, name))
++        else:
++            return ("[inlined] %s" % name)
++
++    def make_decorator(self, frame, pair, is_outer):
++        # t("make_decorator")
++        method = pair['method']
++        bci = pair['bci']
++        methodname = self.format_method_name(method, is_outer)
++        filename = method.get_klass_path()
++        line = method.get_line(bci)
++        if line < 0:
++            line = None
++        decorator = OpenJDKFrameDecorator(frame, methodname, filename, line)
++        return decorator
++
++    def decorate(self, frame):
++        if self.method_bci_stack == None:
++            return [ frame ]
++        else:
++            try:
++                decorators = []
++                pairs = self.method_bci_stack
++                # debug_write("converting method_bci_stack = %s\n" % self.method_bci_stack)
++                l = len(pairs)
++                for i in range(l):
++                    pair = pairs[i]
++                    # debug_write("decorating pair %s\n" % pair)
++                    decorator = self.make_decorator(frame, pair, i == (l - 1))
++                    decorators.append(decorator)
++                return decorators
++            except Exception as arg:
++                gdb.write("!!! decorate oops %s !!!\n" % arg)
++                return [ frame ]
++
++# info for native frame
++
++class NativeMethodInfo(JavaMethodInfo):
++
++    def __init__(self, entry):
++        # t("NativeMethodInfo.__init__")
++        super(NativeMethodInfo,self).__init__(entry)
++        blob = self.blob
++        cmethod = Types.to_type(blob, Types.cmethodp_t)
++        nmethod = Types.to_type(blob, Types.nmethodp_t)
++        self.methodptr = cmethod['_method']
++        const_method = self.methodptr['_constMethod']
++        bcbase = Types.cast_bytep(const_method + 1)
++        self.code_begin = Types.as_long(blob['_code_begin'])
++        # get bc and line number info from method
++        self.cache_method_info()
++
++    # subclasses need to compute their method pointer
++
++    def get_methodptr(self):
++        return self.methodptr
++
++    def format_method_name(self, method):
++        name = method.get_name()
++        return ("[native offset=0x%x] %s" % (self.pc - self.code_begin, name))
++
++    def method_name(self):
++        return self.format_method_name(self.method)
++
++# info for interpreted frame
++
++class InterpretedMethodInfo(JavaMethodInfo):
++
++    def __init__(self, entry, bcp):
++        super(InterpretedMethodInfo,self).__init__(entry)
++        # interpreter frames store methodptr in slot 3
++        methodptr_offset = FrameConstants.interpreter_frame_method_offset() * 8
++        methodptr_addr = gdb.Value((self.bp + methodptr_offset) & 0xffffffffffffffff)
++        methodptr_slot = methodptr_addr.cast(gdb.lookup_type("Method").pointer().pointer())
++        self.methodptr = methodptr_slot.dereference()
++        # bytecode immediately follows const method
++        const_method = self.methodptr['_constMethod']
++        bcbase = Types.cast_bytep(const_method + 1)
++        # debug_write("@@ bcbase = 0x%x\n" % Types.as_long(bcbase))
++        bcp_offset = FrameConstants.interpreter_frame_bcp_offset() * 8
++        if bcp is None:
++            # interpreter frames store bytecodeptr in slot 8
++            bcp_addr = gdb.Value((self.bp + bcp_offset) & 0xffffffffffffffff)
++            bcp_val = Types.cast_bytep(Types.load_ptr(bcp_addr))
++        else:
++            bcp_val =  Types.cast_bytep(bcp)
++            # sanity check the register value -- it is sometimes off
++            # when returning from a call out
++            bcoff = Types.as_long(bcp_val - bcbase)
++            if bcoff < 0 or bcoff >= 0x10000:
++                # use the value in the frame slot
++                bcp_addr = gdb.Value((self.bp + bcp_offset) & 0xffffffffffffffff)
++                bcp_val = Types.cast_bytep(Types.load_ptr(bcp_addr))
++        self.bcoff = Types.as_long(bcp_val - bcbase)
++        # debug_write("@@ bcoff = 0x%x\n" % self.bcoff)
++        # line number table immediately following bytecode
++        bytecode_size =  Types.as_int(const_method['_code_size'])
++        self.is_native = (bytecode_size == 0)
++        # n.b. data in compressed line_number_table block is u_char
++        # debug_write("bytecode_size = 0x%x\n" % bytecode_size)
++        lnbase = Types.cast_bytep(bcbase + bytecode_size)
++        # debug_write("lnbase = 0x%x\n" % Types.as_long(lnbase))
++        self.line_number_reader = LineReader(lnbase)
++        self.cache_method_info()
++
++    def get_methodptr(self):
++        return self.methodptr
++
++    def format_method_name(self, method):
++        name = method.get_name()
++        if self.is_native:
++            return "[native] " + name
++        else:
++            return ("[interpreted: bc = %d] " % self.bcoff) + name
++
++    def line(self):
++        line = self.line_number_reader.bc_to_line(self.bcoff)
++        # debug_write("bc_to_line(%d) = %d\n" % (self.bcoff, line))
++        if line < 0:
++            line = None
++        return line
++
++    def decorate(self, frame):
++        method = self.get_method()
++        return [ OpenJDKFrameDecorator(frame, self.format_method_name(method), method.get_klass_path(), self.line()) ]
++
++
++class OpenJDKUnwinderCacheEntry(object):
++    def __init__(self, blob, sp, pc, bp, bcp, name, codetype):
++        # t("OpenJDKUnwinderCacheEntry.__init__")
++        self.blob = blob
++        self.sp = sp
++        self.pc = pc
++        self.bp = bp
++        self.codetype = codetype
++        try:
++            if codetype == "compiled":
++                self.method_info = CompiledMethodInfo(self)
++            elif codetype == "native":
++                self.method_info = NativeMethodInfo(self)
++            elif codetype == "interpreted":
++                self.method_info = InterpretedMethodInfo(self, bcp)
++            elif codetype == "stub":
++                self.method_info = StubMethodInfo(self, name)
++            else:
++                self.method_info = None
++        except Exception as arg:
++            gdb.write("!!! failed to cache info for %s frame [pc: 0x%x sp:0x%x bp 0x%x] !!!\n!!! %s !!!\n" % (codetype, pc, sp, bp, arg))
++            self.method_info = None
++
++# an unwinder class, an instance of which can be registered with gdb
++# to handle unwinding of frames.
++
++class OpenJDKUnwinder(Unwinder):
++    def __init__(self):
++        # t("OpenJDKUnwinder.__init__")
++        super(OpenJDKUnwinder, self).__init__("OpenJDKUnwinder")
++        # blob name will be in format '0xHexDigits "AlphaNumSpaces"'
++        self.matcher=re.compile('^0x[a-fA-F0-9]+ "(.*)"$')
++        self.unwindercache = {}
++        self.invocations = {}
++
++    # the method that gets called by the pyuw_sniffer
++    def __call__(self, pending_frame):
++        # sometimes when we call into python gdb routines
++        # the call tries to re-establish the frame and ends
++        # up calling the frame sniffer recursively
++        #
++        # so use a list keyed by thread to avoid recursive calls
++        # t("OpenJDKUnwinder.__call__")
++        thread = gdb.selected_thread()
++        if self.invocations.get(thread) != None:
++            # debug_write("!!! blocked %s !!!\n" % str(thread))
++            return None
++        try:
++            # debug_write("!!! blocking %s !!!\n" % str(thread))
++            self.invocations[thread] = thread
++            result = self.call_sub(pending_frame)
++            # debug_write("!!! unblocking %s !!!\n" % str(thread)) 
++            self.invocations[thread] = None
++            return result
++        except Exception as arg:
++            gdb.write("!!! __call__ oops %s !!!\n" % arg)
++            # debug_write("!!! unblocking %s !!!\n" % str(thread))
++            self.invocations[thread] = None
++            return None
++
++    def call_sub(self, pending_frame):
++        # t("OpenJDKUnwinder.__call_sub__")
++        # debug_write("@@ reading pending frame registers\n")
++        pc = pending_frame.read_register('rip')
++        # debug_write("@@ pc = 0x%x\n" % Types.as_long(pc))
++        sp = pending_frame.read_register('rsp')
++        # debug_write("@@ sp = 0x%x\n" % Types.as_long(sp))
++        bp = pending_frame.read_register('rbp')
++        # debug_write("@@ bp = 0x%x\n" % Types.as_long(bp))
++        try:
++            if not CodeCache.inrange(pc):
++                # t("not CodeCache.inrange(0x%x)\n" % pc)
++                return None
++        except Exception as arg:
++            # debug_write("@@ %s\n" % arg)
++            return None
++        if _dump_frame:
++            debug_write("     pc = 0x%x\n" % Types.as_long(pc))
++            debug_write("     sp = 0x%x\n" % Types.as_long(sp))
++            debug_write("     bp = 0x%x\n" % Types.as_long(bp))
++        # this is a Java frame so we need to return unwind info
++        #
++        # the interpreter keeps the bytecode pointer (bcp) in a
++        # register and saves it to the stack when it makes a call to
++        # another Java method or to C++. if the current frame has a
++        # bcp register value then we pass it in case the pending frame
++        # is an intrepreter frame. that ensures we use the most up to
++        # date bcp when the inferior has stopped at the top level in a
++        # Java interpreted frame. it also saves us doing a redundant
++        # stack read when the pending frame sits below a non-JITted
++        # (C++) frame. n.b. if the current frame is a JITted frame
++        # (i.e. one that we have already unwound) then rbp will not be
++        # present. that's ok because the frame decorator can still
++        # find the latest bcp value on the stack.
++        bcp = pending_frame.read_register('r13')
++        try:
++            # convert returned value to a python int to force a check that
++            # the register is defined. if not this will except
++            bcp = gdb.Value(int(bcp))
++            # debug_write("@@ bcp = 0x%x\n" % Types.as_long(bcp))
++        except Exception as arg:
++            # debug_write("@@ !!! call_sub oops %s !!! \n" % arg)
++            bcp = None
++            # debug_write("@@ bcp = None\n")
++        # t("blob = CodeCache.findblob(pc)")
++        blob = CodeCache.findblob(pc)
++        # t("if blob is None:")
++        if blob is None:
++            # t("return None")
++            return None
++        # if the blob is an nmethod then we use the frame
++        # size to identify the frame base otherwise we
++        # use the value in rbp
++        # t("name = str(blob['_name'])")
++        name = str(blob['_name'])
++        # blob name will be in format '0xHexDigits "AlphaNumSpaces"'
++        # and we just want the bit between the quotes
++        m = self.matcher.match(name)
++        if not m is None:
++            # debug_write("@@ m.group(1) == %s\n" % m.group(1))
++            name = m.group(1)
++        if name == "nmethod":
++            # debug_write("@@ compiled %s\n" % name)
++            codetype = 'compiled'
++            # TODO -- need to check if frame is complete
++            # i.e. if ((char *)pc - (char *)blob) > blob['_code_begin'] + blob['_frame_complete_offset']
++            # if not then we have not pushed a frame.
++            # what do we do then? use SP as BP???
++            frame_size = blob['_frame_size']
++            # debug_write("@@ frame_size = 0x%x\n" % int(frame_size))
++            # n.b. frame_size includes stacked rbp and rip hence the -2
++            bp = sp + ((frame_size - 2) * 8)
++            # debug_write("@@ revised bp = 0x%x\n" % Types.as_long(bp))
++        elif name == "native nmethod":
++            # debug_write("@@ native %s \n" % name)
++            codetype = "native"
++        elif name == "Interpreter":
++            # debug_write("@@ interpreted %s\n" %name)
++            codetype = "interpreted"
++        elif name[:4] == "Stub":
++            # debug_write("@@ stub %s\n" % name)
++            codetype = "stub"
++        else:
++            # debug_write("@@ unknown %s\n" % name)
++            codetype = "unknown"
++        # cache details of the current frame
++        x = Types.as_long(sp)
++        # debug_write("@@ add %s cache entry for blob 0x%x at unwindercache[0x%x]\n" % (codetype, blob, x))
++        self.unwindercache[x] = OpenJDKUnwinderCacheEntry(blob, sp, pc, bp, bcp, name, codetype)
++        # t("next_bp = Types.load_long(bp)")
++        next_bp = Types.load_long(bp)
++        # t("next_pc = Types.load_long(bp + 8)")
++        next_pc = Types.load_long(bp + 8)
++        # next_sp is normally just 2 words below current bp
++        # but for interpreted frames we need to skip locals
++        # so we pull caller_sp from the frame
++        if codetype == "interpreted":
++            interpreter_frame_sender_sp_offset = FrameConstants.interpreter_frame_sender_sp_offset() * 8
++            # interpreter frames store sender sp in slot 1
++            next_sp = Types.load_long(bp + interpreter_frame_sender_sp_offset)
++        else:
++            sender_sp_offset = FrameConstants.sender_sp_offset() * 8
++            next_sp = bp + sender_sp_offset
++        # create unwind info for this frame
++        # t("frameid = OpenJDKFrameId(...)")
++        frameid = OpenJDKFrameId(Types.to_voidp(next_sp),
++                                 Types.to_type(next_pc, pc.type))
++        # debug_write("@@ created frame id\n")
++        # t("unwind_info = pending_frame.create_unwind_info(frameid)")
++        unwind_info = pending_frame.create_unwind_info(frameid)
++        # debug_write("@@ created unwind info\n")
++        # debug_write("@@ next_bp = 0x%x\n" % next_bp)
++        # debug_write("@@ next_pc = 0x%x\n" % next_pc)
++        # debug_write("@@ next_sp = 0x%x\n" % next_sp)
++        # we must calculate pc, sp and bp.
++        #
++        # for now we only add the minimum of registers that we know
++        # are valid.
++        unwind_info.add_saved_register('rip', next_pc)
++        unwind_info.add_saved_register('rsp', next_sp)
++        unwind_info.add_saved_register('rbp', next_bp)
++        if _dump_frame:
++            debug_write("next pc = 0x%x\n" % Types.as_long(next_pc))
++            debug_write("next sp = 0x%x\n" % Types.as_long(next_sp))
++            debug_write("next bp = 0x%x\n" % Types.as_long(next_bp))
++        # t("return unwind_info")
++        return unwind_info
++
++# register the unwinder globally [probably really needs to be
++# registered solely with libjvm.so]
++def register_unwinder():
++    unwinder = None
++    if _have_unwinder:
++        unwinder = OpenJDKUnwinder()
++        gdb.unwinder.register_unwinder(None, unwinder, replace=True)
++    filt = OpenJDKFrameFilter(unwinder)
++    gdb.frame_filters[filt.name] = filt
++
++register_unwinder()
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..91916715f92e43802ecd60897b0e07fe7340a5cc
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..119822d83d328490ddfd4dac17b66e523a6d1092
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -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
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9ee8ac31d465a9fc6f915ebea11233e97348c6d9
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,68 @@@
++#!/bin/sh
++
++tarballs="corba.tar.gz hotspot.tar.gz jaxp.tar.gz jaxws.tar.gz jdk.tar.gz langtools.tar.gz openjdk.tar.gz"
++# AArch64 hotspot
++aarch64_hsname=f50993b6c38d
++tarballs="$tarballs $aarch64_hsname.tar.gz"
++jamvmtb=jamvm-ac22c9948434e528ece451642b4ebde40953ee7e.tar.gz
++tarballdir=7u55
++version=7u55-2.4.7
++base=openjdk-7
++pkgdir=$base-$version
++origtar=${base}_${version}.orig.tar.gz
++
++icedtea_checkout=icedtea7-2.4.7
++debian_checkout=openjdk7
++
++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
++    rm -rf $pkgdir.orig/.hg
++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
++  patch -p1 < debian/patches/icedtea-patch.diff
++  sh autogen.sh
++  rm -rf autom4te.cache
++  echo "aarch64 http://openjdk.linaro.org/hotspot $aarch64_hsname $(sha256sum $aarch64_hsname.tar.gz) $aarch64_hsname.tar.gz" >> hotspot.map
++)
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..200be94852abaa7fc4cf43b18d86c5e11665d3a2
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d886ba82a162088311a402f8436c2aab6c31da17
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..edba589aad4363ea0bcde6eee4679cdf6e0dc8fb
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -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/nss.cfg
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..3535a40015e1a54816093800c779d76effce7a36
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,4 @@@
++name = NSS
++nssDbMode = noDb
++attributes = compatibility
++handleStartupErrors = ignoreMultipleInitialisation
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..4aaa880102659a31aecf9481a632c4b6c6f5fecc
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,19 @@@
++# HG changeset patch
++# User enevill
++# Date 1520877434 0
++#      Mon Mar 12 17:57:14 2018 +0000
++# Node ID 81265b23c488c7fd03ebaee04d1802fc0ada737e
++# Parent  ecd91135d645bed6620abbd76ce30a906b6d7d44
++8199220: Zero build broken after 8195103, 8191102 and 8189871
++Reviewed-by: dholmes, stuefe, eosterlund, glaubitz, coleenp
++
++--- a/src/hotspot/share/utilities/debug.hpp
+++++ b/src/hotspot/share/utilities/debug.hpp
++@@ -185,6 +185,7 @@ void warning(const char* format, ...) AT
++ // use of an array type.
++ 
++ template<bool x> struct STATIC_ASSERT_FAILURE;
+++template<> struct STATIC_ASSERT_FAILURE<false> { enum { value = 0 }; };
++ template<> struct STATIC_ASSERT_FAILURE<true> { enum { value = 1 }; };
++ 
++ #define STATIC_ASSERT(Cond) \
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..411041c242863ed4798a3fcadd25fc65aa01ad76
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,27 @@@
++From 7ce2609d6ff5299f2ed3ff6850a3cab4a16125f8 Mon Sep 17 00:00:00 2001
++From: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
++Date: Fri, 21 Dec 2018 15:18:17 +0300
++Subject: [PATCH] Don't optimize fdlibm-fork for Zero on linux-sparc (Zero)
++
++---
++ make/hotspot/lib/JvmOverrideFiles.gmk | 9 +++++++++
++ 1 file changed, 9 insertions(+)
++
++--- a/make/hotspot/lib/JvmOverrideFiles.gmk
+++++ b/make/hotspot/lib/JvmOverrideFiles.gmk
++@@ -48,6 +48,15 @@ LIBJVM_FDLIBM_COPY_OPT_FLAG := $(CXX_O_F
++ # by using -ffp-contract=off on GCC/Clang platforms.
++ ifneq ($(FDLIBM_CFLAGS), )
++   LIBJVM_FDLIBM_COPY_OPT_FLAG := $(CXX_O_FLAG_NORM)
+++  # Don't optimize fdlibm-fork for Zero on Linux sparc
+++  # See JDK-XXXX
+++  ifeq ($(call check-jvm-feature, zero), true)
+++    ifeq ($(OPENJDK_TARGET_OS), linux)
+++      ifeq ($(OPENJDK_TARGET_CPU_ARCH), sparc)
+++        LIBJVM_FDLIBM_COPY_OPT_FLAG := $(CXX_O_FLAG_NONE)
+++      endif
+++    endif
+++  endif
++ endif
++ 
++ ifeq ($(call isTargetOs, linux), true)
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..b337a9c1320c7a6d1d9eb2a08db0e68851f11d37
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,15 @@@
++--- a/jdk/src/share/classes/java/awt/Toolkit.java
+++++ b/jdk/src/share/classes/java/awt/Toolkit.java
++@@ -894,7 +894,11 @@
++                         return null;
++                     }
++                 });
++-                loadAssistiveTechnologies();
+++                try {
+++                    loadAssistiveTechnologies();
+++                } catch ( AWTError error) {
+++                    // ignore silently
+++                }
++             } finally {
++                 // Make sure to always re-enable the JIT.
++                 java.lang.Compiler.enable();
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8cb97bff9b75232877aa6c6c816783eaf8bdc839
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,11 @@@
++# DP: fixes an uninitialized memory issue in adlc
++--- a/src/hotspot/share/adlc/formsopt.cpp
+++++ b/src/hotspot/share/adlc/formsopt.cpp
++@@ -445,6 +445,7 @@ FrameForm::FrameForm() {
++   _return_value = NULL;
++   _c_return_value = NULL;
++   _interpreter_frame_pointer_reg = NULL;
+++  _cisc_spilling_operand_name = NULL;
++ }
++ 
++ FrameForm::~FrameForm() {
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..53f1ed34c54235fd1bba00e1c6a1a30b241d516d
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,10 @@@
++--- a/src/java.base/share/conf/security/java.security
+++++ b/src/java.base/share/conf/security/java.security
++@@ -307,6 +307,7 @@ keystore.type.compat=true
++ #
++ package.access=sun.misc.,\
++                sun.reflect.,\
+++               org.GNOME.Accessibility.,\
++ 
++ #
++ # List of comma-separated packages that start with or equal this string
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9286a3c851476c629f768a7e08d19b1cb89bf4b5
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,11 @@@
++--- a/make/modules/java.base/Copy.gmk
+++++ b/make/modules/java.base/Copy.gmk
++@@ -92,6 +92,8 @@ endif
++ # configurations, that is the server variant.
++ ifeq ($(call And, $(call isTargetOs, windows) $(call isTargetCpu, x86)), true)
++   DEFAULT_CFG_VARIANT ?= client
+++else ifeq ($(call isTargetCpu, arm), true)
+++  DEFAULT_CFG_VARIANT ?= client
++ endif
++ DEFAULT_CFG_VARIANT ?= server
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8022257dc0f31d5877dbfc42baf6849ed295f936
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,23 @@@
++--- a/src/java.base/share/native/libjli/java.c
+++++ b/src/java.base/share/native/libjli/java.c
++@@ -2079,7 +2079,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 = 0, end = 0;
++@@ -2094,6 +2094,11 @@ ReadKnownVMs(const char *jvmCfgName, jbo
++ 
++     jvmCfg = fopen(jvmCfgName, "r");
++     if (jvmCfg == NULL) {
+++      char cfgName[strlen(jvmCfgName)+10];
+++      sprintf(cfgName, "%s-default", jvmCfgName);
+++      jvmCfg = fopen(cfgName, "r");
+++    }
+++    if (jvmCfg == NULL) {
++       if (!speculative) {
++         JLI_ReportErrorMessage(CFG_ERROR6, jvmCfgName);
++         exit(1);
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..bbc7b9e2c458d0f72c4dc3b306224c4d8f460f2e
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,22 @@@
++Index: b/src/java.desktop/unix/classes/sun/awt/X11/XDataTransferer.java
++===================================================================
++--- a/src/java.desktop/unix/classes/sun/awt/X11/XDataTransferer.java
+++++ b/src/java.desktop/unix/classes/sun/awt/X11/XDataTransferer.java
++@@ -273,14 +273,14 @@ public class XDataTransferer extends Dat
++              BufferedReader reader = new BufferedReader(isr)) {
++             String line;
++             ArrayList<URI> 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()]);
++         }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..82f73c5c685767674e760f2fbdc5894bdaa023ad
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -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) {
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9309aaaf3d07e867bd50328e85693f2a7049f042
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,20 @@@
++--- a/make/modules/java.desktop/lib/Awt2dLibraries.gmk
+++++ b/make/modules/java.desktop/lib/Awt2dLibraries.gmk
++@@ -289,7 +289,7 @@ $(eval $(call SetupJdkLibrary, BUILD_LIB
++     INCLUDE_FILES := $(BUILD_LIBLCMS_INCLUDE_FILES), \
++     OPTIMIZATION := HIGHEST, \
++     CFLAGS := $(CFLAGS_JDKLIB) \
++-        $(LCMS_CFLAGS), \
+++        $(LCMS_CFLAGS) -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop, \
++     CFLAGS_windows := -DCMS_IS_WINDOWS_, \
++     EXTRA_HEADER_DIRS := \
++         common/awt/debug \
++@@ -337,7 +337,7 @@ $(eval $(call SetupJdkLibrary, BUILD_LIB
++     NAME := javajpeg, \
++     INCLUDE_FILES := $(BUILD_LIBJAVAJPEG_INCLUDE_FILES), \
++     OPTIMIZATION := HIGHEST, \
++-    CFLAGS := $(CFLAGS_JDKLIB), \
+++    CFLAGS := $(CFLAGS_JDKLIB) -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop, \
++     HEADERS_FROM_SRC := $(LIBJPEG_HEADERS_FROM_SRC), \
++     DISABLED_WARNINGS_gcc := clobbered implicit-fallthrough shift-negative-value array-bounds, \
++     LDFLAGS := $(LDFLAGS_JDKLIB) \
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..bf9d6dfd1b554f0f4545f5867527225f79cfbc69
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,11 @@@
++--- a/src/hotspot/os_cpu/linux_x86/os_linux_x86.cpp
+++++ b/src/hotspot/os_cpu/linux_x86/os_linux_x86.cpp
++@@ -635,7 +635,7 @@ void os::verify_stack_alignment() {
++  * updates (JDK-8023956).
++  */
++ void os::workaround_expand_exec_shield_cs_limit() {
++-#if defined(IA32) && !defined(ZERO)
+++#if 0
++   assert(Linux::initial_thread_stack_bottom() != NULL, "sanity");
++   size_t page_size = os::vm_page_size();
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..0ec858322b71a81a9964a1c2f7873db258552dac
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,11 @@@
++--- a/src/hotspot/make/linux/makefiles/gcc.make
+++++ b/src/hotspot/make/linux/makefiles/gcc.make
++@@ -203,7 +203,7 @@ else
++ endif
++ 
++ # Compiler warnings are treated as errors
++-WARNINGS_ARE_ERRORS ?= -Werror -Wno-error=format
+++WARNINGS_ARE_ERRORS ?=
++ 
++ ifeq ($(USE_CLANG), true)
++   # However we need to clean the code up before we can unrestrictedly enable this option with Clang
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..a46fd1aed790c25d120addbbf7e5ff6f31e84340
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,11 @@@
++--- a/src/hotspot/cpu/zero/zeroInterpreter_zero.cpp
+++++ b/src/hotspot/cpu/zero/zeroInterpreter_zero.cpp
++@@ -418,7 +418,7 @@ int ZeroInterpreter::native_entry(Method
++   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 and ensure it
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..181b71c629d4de68ed7d26e771bf8ade02318d09
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,11 @@@
++--- a/src/hotspot/make/linux/makefiles/gcc.make
+++++ b/src/hotspot/make/linux/makefiles/gcc.make
++@@ -39,7 +39,7 @@
++     ifeq ($(USE_CLANG), true)
++       CXX = clang++
++       CC  = clang
++-    else
+++    else ifeq ($(CXX),)
++       CXX = g++
++       CC  = gcc
++     endif
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..0628b8935602595f508235290a5aede99f97f28a
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,22 @@@
++--- a/src/hotspot/make/solaris/makefiles/gcc.make
+++++ b/src/hotspot/make/solaris/makefiles/gcc.make
++@@ -117,7 +117,7 @@ endif
++ 
++ 
++ # 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
++ WARNING_FLAGS = -Wpointer-arith -Wconversion -Wsign-compare -Wundef -Wformat=2
++--- a/src/hotspot/make/linux/makefiles/gcc.make
+++++ b/src/hotspot/make/linux/makefiles/gcc.make
++@@ -203,7 +203,7 @@ else
++ endif
++ 
++ # Compiler warnings are treated as errors
++-WARNINGS_ARE_ERRORS ?= -Werror
+++WARNINGS_ARE_ERRORS ?= -Werror -Wno-error=format
++ 
++ ifeq ($(USE_CLANG), true)
++   # However we need to clean the code up before we can unrestrictedly enable this option with Clang
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..33c360b163edd551a947b6e63955147153779c3b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,12 @@@
++--- a/src/java.desktop/share/classes/java/awt/color/ICC_Profile.java
+++++ b/src/java.desktop/share/classes/java/awt/color/ICC_Profile.java
++@@ -1327,9 +1327,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;
++-                }
++             }
++         }
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..64f31a63ab0cd77223cee4a25c32ae1544533849
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,12 @@@
++Index: b/src/java.desktop/unix/classes/sun/awt/X11/XWindowPeer.java
++===================================================================
++--- a/src/java.desktop/unix/classes/sun/awt/X11/XWindowPeer.java
+++++ b/src/java.desktop/unix/classes/sun/awt/X11/XWindowPeer.java
++@@ -1260,6 +1260,7 @@ class XWindowPeer extends XPanelPeer imp
++ 
++     boolean isOverrideRedirect() {
++         return XWM.getWMID() == XWM.OPENLOOK_WM ||
+++            XWM.getWMID() == XWM.COMPIZ_WM ||
++             Window.Type.POPUP.equals(getWindowType());
++     }
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..f73bfafb743b398fe1cb4a8e0a1d977db737818f
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,54 @@@
++--- a/src/jdk/make/CreateJars.gmk
+++++ b/src/jdk/make/CreateJars.gmk
++@@ -569,38 +569,12 @@
++ ##########################################################################################
++ 
++ SRC_ZIP_INCLUDES = \
++-    com/sun/corba \
++-    com/sun/image/codec/jpeg \
++-    com/sun/imageio \
++-    com/sun/java_cup \
++-    com/sun/javadoc \
++-    com/sun/java/swing \
++-    com/sun/jmx \
++-    com/sun/naming \
++-    com/sun/org/apache \
++-    com/sun/security/auth \
++-    com/sun/security/jgss \
++-    com/sun/source \
+++    com \
++     java \
++-    javax/accessibility \
++-    javax/annotation \
++-    javax/imageio \
++-    javax/lang \
++-    javax/management \
++-    javax/naming \
++-    javax/print \
++-    javax/rmi \
++-    javax/script \
++-    javax/security \
++-    javax/sound \
++-    javax/sql \
++-    javax/swing \
++-    javax/tools \
++-    javax/xml \
++-    org/ietf \
++-    org/omg \
++-    org/w3c/dom \
++-    org/xml/sax \
+++    javax \
+++    jdk \
+++    org \
+++    sun \
++     #
++ 
++ SRC_ZIP_SRCS = $(JDK_TOPDIR)/src/share/classes $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/classes
++@@ -632,7 +606,6 @@
++ $(eval $(call SetupZipArchive,BUILD_SRC_ZIP, \
++     SRC := $(SRC_ZIP_SRCS) $(IMAGES_OUTPUTDIR)/src, \
++     INCLUDES := $(SRC_ZIP_INCLUDES) launcher, \
++-    EXCLUDES := javax/swing/beaninfo, \
++     SUFFIXES := .java .c .h, \
++     ZIP := $(IMAGES_OUTPUTDIR)/src.zip, \
++     EXTRA_DEPS := $(LAUNCHER_ZIP_SRC)))
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..2e5d0e1ca791ebbf73860791a3efd05fb5e5f9ff
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..05e834cc05f1f1c445798e31036bd07b2392d8fd
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,12 @@@
++Fix finding the Java ATK wrapper, see #900912
++
++--- a/src/hotspot/os/linux/os_linux.cpp
+++++ b/src/hotspot/os/linux/os_linux.cpp
++@@ -461,6 +461,7 @@ void os::init_system_properties_values()
++     if (!set_boot_path('/', ':')) {
++       vm_exit_during_initialization("Failed setting boot class path.", NULL);
++     }
+++    Arguments::append_sysclasspath("/usr/share/java/java-atk-wrapper.jar");
++   }
++ 
++   // Where to look for native libraries.
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..4eb0636181b1349f5c61854cac1a32a936a677ef
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,20 @@@
++Make failing to load the Java ATK wrapper non-fatal
++
++---
++ src/java.desktop/share/classes/java/awt/Toolkit.java |    4 ++++
++ 1 file changed, 4 insertions(+)
++
++--- a/src/java.desktop/share/classes/java/awt/Toolkit.java
+++++ b/src/java.desktop/share/classes/java/awt/Toolkit.java
++@@ -602,7 +602,11 @@ public abstract class Toolkit {
++                 toolkit = new HeadlessToolkit(toolkit);
++             }
++             if (!GraphicsEnvironment.isHeadless()) {
+++              try {
++                 loadAssistiveTechnologies();
+++              } catch (java.awt.AWTError e) {
+++                // too bad
+++              }
++             }
++         }
++         return toolkit;
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..70ebc0c0fef5086cd21f73089f8132ac5b7c9ec7
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,166 @@@
++--- a/src/java.desktop/share/classes/javax/swing/JTree.java
+++++ b/src/java.desktop/share/classes/javax/swing/JTree.java
++@@ -5133,7 +5133,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;
++                 }
++@@ -5148,7 +5148,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;
++                 }
++@@ -5163,7 +5163,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;
++                 }
++--- a/src/java.desktop/share/classes/javax/swing/table/JTableHeader.java
+++++ b/src/java.desktop/share/classes/javax/swing/table/JTableHeader.java
++@@ -1143,7 +1143,12 @@ public class JTableHeader extends JCompo
++             }
++ 
++             public AccessibleAction getAccessibleAction() {
++-                return getCurrentAccessibleContext().getAccessibleAction();
+++                AccessibleContext ac = getCurrentAccessibleContext();
+++                if (ac != null) {
+++                     return ac.getAccessibleAction();
+++             } else {
+++                     return null;
+++             }
++             }
++ 
++            /**
++@@ -1159,15 +1164,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;
+++             }
++             }
++ 
++ 
++--- a/src/java.desktop/share/classes/javax/swing/JTable.java
+++++ b/src/java.desktop/share/classes/javax/swing/JTable.java
++@@ -9223,7 +9223,12 @@ public class JTable extends JComponent i
++              * @return the <code>AccessibleAction</code>, or <code>null</code>
++              */
++             public AccessibleAction getAccessibleAction() {
++-                return getCurrentAccessibleContext().getAccessibleAction();
+++                AccessibleContext ac = getCurrentAccessibleContext();
+++                if (ac != null) {
+++                 return ac.getAccessibleAction();
+++                } else {
+++                    return null;
+++                }
++             }
++ 
++             /**
++@@ -9245,7 +9250,12 @@ public class JTable extends JComponent i
++              *    <code>null</code>
++              */
++             public AccessibleSelection getAccessibleSelection() {
++-                return getCurrentAccessibleContext().getAccessibleSelection();
+++                AccessibleContext ac = getCurrentAccessibleContext();
+++                if (ac != null) {
+++                 return ac.getAccessibleSelection();
+++                } else {
+++                    return null;
+++                }
++             }
++ 
++             /**
++@@ -9255,7 +9265,12 @@ public class JTable extends JComponent i
++              * @return the <code>AccessibleText</code>, or <code>null</code>
++              */
++             public AccessibleText getAccessibleText() {
++-                return getCurrentAccessibleContext().getAccessibleText();
+++                AccessibleContext ac = getCurrentAccessibleContext();
+++                if (ac != null) {
+++                 return ac.getAccessibleText();
+++                } else {
+++                    return null;
+++                }
++             }
++ 
++             /**
++@@ -9265,7 +9280,12 @@ public class JTable extends JComponent i
++              * @return the <code>AccessibleValue</code>, or <code>null</code>
++              */
++             public AccessibleValue getAccessibleValue() {
++-                return getCurrentAccessibleContext().getAccessibleValue();
+++                AccessibleContext ac = getCurrentAccessibleContext();
+++                if (ac != null) {
+++                 return ac.getAccessibleValue();
+++                } else {
+++                    return null;
+++                }
++             }
++ 
++ 
++--- a/src/jdk.accessibility/windows/classes/com/sun/java/accessibility/internal/AccessBridge.java
+++++ b/src/jdk.accessibility/windows/classes/com/sun/java/accessibility/internal/AccessBridge.java
++@@ -6562,7 +6562,7 @@ final public class AccessBridge {
++         public AccessibleSelection getAccessibleSelection() {
++             AccessibleContext ac = getCurrentAccessibleContext();
++             if (ac != null && isLeaf) {
++-                return getCurrentAccessibleContext().getAccessibleSelection();
+++                return ac.getAccessibleSelection();
++             } else {
++                 return this;
++             }
++@@ -6577,7 +6577,7 @@ final public class AccessBridge {
++         public AccessibleText getAccessibleText() {
++             AccessibleContext ac = getCurrentAccessibleContext();
++             if (ac != null) {
++-                return getCurrentAccessibleContext().getAccessibleText();
+++                return ac.getAccessibleText();
++             } else {
++                 return null;
++             }
++@@ -6592,7 +6592,7 @@ final public class AccessBridge {
++         public AccessibleValue getAccessibleValue() {
++             AccessibleContext ac = getCurrentAccessibleContext();
++             if (ac != null) {
++-                return getCurrentAccessibleContext().getAccessibleValue();
+++                return ac.getAccessibleValue();
++             } else {
++                 return null;
++             }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..83e9a30084a3f3c407768776001f913f3781fa57
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,13 @@@
++Index: b/src/java.desktop/share/classes/sun/awt/resources/awt_pt_BR.properties
++===================================================================
++--- a/src/java.desktop/share/classes/sun/awt/resources/awt_pt_BR.properties
+++++ b/src/java.desktop/share/classes/sun/awt/resources/awt_pt_BR.properties
++@@ -38,7 +38,7 @@ AWT.altGraph=Alt Graph
++ # Key names
++ AWT.enter=Enter
++ AWT.backSpace=Backspace
++-AWT.tab=Guia
+++AWT.tab=Tab
++ AWT.cancel=Cancelar
++ AWT.clear=Limpar
++ AWT.pause=Pausar
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..5b758628b4edff21881357f12d5f08bd99434f0b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,16 @@@
++--- a/src/jdk/src/java.desktop/share/conf/sound.properties
+++++ b/src/jdk/src/java.desktop/share/conf/sound.properties
++@@ -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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..47e598b997878c42ab3d2d2958e9adc5a1fb2006
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,35 @@@
++--- a/src/java.base/unix/native/launcher/jexec.c
+++++ b/src/java.base/unix/native/launcher/jexec.c
++@@ -168,9 +168,10 @@ int main(int argc, const char * argv[])
++ 
++     /* 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(JDK_BASE_DIR "/lib/jexec", java, RELATIVE_DEPTH) != 0) {
++         errorExit(errno, MISSING_JAVA_MSG);
++     }
+++    argi++;
++     alen = (argc + 2) * (sizeof (const char *));
++     if (alen <= 0 || alen > INT_MAX / sizeof(char *)) {
++         errorExit(errno, BAD_ARG_MSG);
++--- a/make/launcher/Launcher-java.base.gmk
+++++ b/make/launcher/Launcher-java.base.gmk
++@@ -56,6 +56,9 @@ $(eval $(call SetupBuildLauncher, keytoo
++ ################################################################################
++ 
++ ifeq ($(call isTargetOs, linux), true)
+++  ifeq (,$(DEBIAN_JDK_BASE_DIR))
+++    $(error DEBIAN_JDK_BASE_DIR must be defined for jexec build)
+++  endif
++   $(eval $(call SetupJdkExecutable, BUILD_JEXEC, \
++       NAME := jexec, \
++       SRC := $(TOPDIR)/src/$(MODULE)/unix/native/launcher, \
++@@ -63,7 +66,7 @@ ifeq ($(call isTargetOs, linux), true)
++       OPTIMIZATION := LOW, \
++       CFLAGS := $(CFLAGS_JDKEXE) \
++           -I$(TOPDIR)/src/$(MODULE)/share/native/libjli, \
++-      CFLAGS_linux := -fPIC, \
+++      CFLAGS_linux := -fPIC '-DJDK_BASE_DIR="$(DEBIAN_JDK_BASE_DIR)"', \
++       CFLAGS_solaris := -KPIC, \
++       LDFLAGS := $(LDFLAGS_JDKEXE), \
++       OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/modules_libs/$(MODULE), \
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..18c64b322af4a69c88a15fa721c562d7cfe415da
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,51 @@@
++--- a/make/autoconf/toolchain.m4
+++++ b/make/autoconf/toolchain.m4
++@@ -1029,7 +1029,7 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_JTREG],
++       AC_MSG_ERROR([jtreg home directory from --with-jtreg=$with_jtreg does not exist])
++     fi
++ 
++-    if test ! -e "$JT_HOME/lib/jtreg.jar"; then
+++    if test ! -e "$JT_HOME/lib/jtreg.jar" && test ! -e "$JT_HOME/share/java/jtreg.jar"; then
++       AC_MSG_ERROR([jtreg home directory from --with-jtreg=$with_jtreg is not a valid jtreg home])
++     fi
++ 
++@@ -1043,7 +1043,7 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_JTREG],
++         AC_MSG_WARN([Ignoring JT_HOME pointing to invalid directory: $JT_HOME])
++         JT_HOME=
++       else
++-        if test ! -e "$JT_HOME/lib/jtreg.jar"; then
+++        if test ! -e "$JT_HOME/lib/jtreg.jar" && test ! -e "$JT_HOME/share/java/jtreg.jar"; then
++           AC_MSG_WARN([Ignoring JT_HOME which is not a valid jtreg home: $JT_HOME])
++           JT_HOME=
++         else
++@@ -1059,7 +1059,7 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_JTREG],
++       if test "x$JTREGEXE" != x; then
++         # That's good, now try to derive JT_HOME
++         JT_HOME=`(cd $($DIRNAME $JTREGEXE)/.. && pwd)`
++-        if test ! -e "$JT_HOME/lib/jtreg.jar"; then
+++        if test ! -e "$JT_HOME/lib/jtreg.jar" && test ! -e "$JT_HOME/share/java/jtreg.jar"; then
++           AC_MSG_WARN([Ignoring jtreg from path since a valid jtreg home cannot be found])
++           JT_HOME=
++         else
++--- a/make/RunTests.gmk
+++++ b/make/RunTests.gmk
++@@ -846,7 +846,7 @@ define SetupRunJtregTestBody
++ 
++   $1_COMMAND_LINE := \
++       $$(JAVA) $$($1_JTREG_LAUNCHER_OPTIONS) \
++-          -Dprogram=jtreg -jar $$(JT_HOME)/lib/jtreg.jar \
+++          -Dprogram=jtreg -jar $$(if $$(wildcard $$(JT_HOME)/lib/jtreg.jar),$$(JT_HOME)/lib/jtreg.jar,$$(JT_HOME)/share/java/jtreg.jar) \
++           $$($1_JTREG_BASIC_OPTIONS) \
++           -testjdk:$$(JDK_UNDER_TEST) \
++           -dir:$$(JTREG_TOPDIR) \
++--- a/make/test/BuildFailureHandler.gmk
+++++ b/make/test/BuildFailureHandler.gmk
++@@ -38,7 +38,7 @@ FH_BASEDIR := $(TOPDIR)/test/failure_han
++ FH_SUPPORT := $(SUPPORT_OUTPUTDIR)/test/failure_handler
++ FH_JAR := $(FH_SUPPORT)/jtregFailureHandler.jar
++ 
++-JTREG_JAR := $(JT_HOME)/lib/jtreg.jar
+++JTREG_JAR := $(if $(wildcard $(JT_HOME)/lib/jtreg.jar),$(JT_HOME)/lib/jtreg.jar,$(JT_HOME)/share/java/jtreg.jar)
++ ifeq ($(wildcard $(JTREG_JAR)), )
++   $(error Cannot build failure handler without jtreg)
++ endif
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..5bb14035737de0c9e12613d6723a6a7375ffdaff
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,55 @@@
++Description: Revert upstream default to GTK2
++ OpenJDK 11 uses GTK3 by default for the GTK Look and Feel but it still
++ has too many pending issues and artifacts and is not on par with GTK2
++ support. This patch is the reverse of the upstream commit which ensures
++ that GTK2 is tried before GTK3.
++
++ When GTK3 becomes better supported we should drop this and update the
++ dlopen_jre_depends variable in debian/rules accordingly.
++Origin: upstream, http://hg.openjdk.java.net/jdk-updates/jdk11u/rev/3e3696a308e1
++Bug: https://bugs.openjdk.java.net/browse/JDK-8198649, 
++     https://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8198654
++Bug-Ubuntu: https://launchpad.net/bugs/1770278
++Forwarded: not-needed
++Applied-Upstream: http//hg.openjdk.java.net/jdk-updates/jdk11u/rev/3e3696a308e1
++Reviewed-by: <name and email of a reviewer, optional>
++Last-Update: 2019-03-27 <YYYY-MM-DD, last update of the meta-information, optional>
++---
++This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
++
++# HG changeset patch
++# User prr
++# Date 1521484190 25200
++# Node ID 3e3696a308e1674a1056d5ff0d660e7fb0d08286
++# Parent  79f6a4dc221e6290723e773813969de422733545
++8198649: Switch AWT/Swing's default GTK version to 3
++Reviewed-by: psadhukhan, kaddepalli
++
++--- a/src/java.desktop/unix/native/libawt_xawt/awt/gtk_interface.c
+++++ b/src/java.desktop/unix/native/libawt_xawt/awt/gtk_interface.c
++@@ -50,18 +50,18 @@ typedef struct {
++ 
++ static GtkLib gtk_libs[] = {
++     {
++-        GTK_3,
++-        JNI_LIB_NAME("gtk-3"),
++-        VERSIONED_JNI_LIB_NAME("gtk-3", "0"),
++-        &gtk3_load,
++-        &gtk3_check
++-    },
++-    {
++         GTK_2,
++         JNI_LIB_NAME("gtk-x11-2.0"),
++         VERSIONED_JNI_LIB_NAME("gtk-x11-2.0", "0"),
++         &gtk2_load,
++         &gtk2_check
+++    },
+++    {
+++        GTK_3,
+++        JNI_LIB_NAME("gtk-3"),
+++        VERSIONED_JNI_LIB_NAME("gtk-3", "0"),
+++        &gtk3_load,
+++        &gtk3_check
++     }
++ };
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..f1aa93e19e43cbf562770006a1a97ee34f2fe4e6
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,54 @@@
++--- a/src/java.smartcardio/unix/classes/sun/security/smartcardio/PlatformPCSC.java
+++++ b/src/java.smartcardio/unix/classes/sun/security/smartcardio/PlatformPCSC.java
++@@ -46,6 +46,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";
++     private final static String LIB2 = "/usr/local/$LIBISA/libpcsclite.so";
++     private final static String PCSC_FRAMEWORK = "/System/Library/Frameworks/PCSC.framework/Versions/Current/PCSC";
++@@ -98,40 +99,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;
++-        }
++-
++-        // As of macos 11, framework libraries have been removed from the file
++-        // system, but in such a way that they can still be dlopen()ed, even
++-        // though they can no longer be open()ed.
++-        //
++-        // https://developer.apple.com/documentation/macos-release-notes/macos-big-sur-11_0_1-release-notes
++-        //
++-        // """New in macOS Big Sur 11.0.1, the system ships with a built-in
++-        // dynamic linker cache of all system-provided libraries. As part of
++-        // this change, copies of dynamic libraries are no longer present on
++-        // the filesystem. Code that attempts to check for dynamic library
++-        // presence by looking for a file at a path or enumerating a directory
++-        // will fail. Instead, check for library presence by attempting to
++-        // dlopen() the path, which will correctly check for the library in the
++-        // cache."""
++-        //
++-        // The directory structure remains otherwise intact, so check for
++-        // existence of the containing directory instead of the file.
++-        lib = PCSC_FRAMEWORK;
++-        if (new File(lib).getParentFile().isDirectory()) {
++-            // 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);
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..37913407fdd32a0d777f180e5663ba7708c0b9d5
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1100 @@@
++Subject: Fix alignment issues on m68k
++Author: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
++Last Update: 2019-04-29
++
++--- /dev/null
+++++ b/make/data/x11wrappergen/sizes-32-linux-m68k.txt
++@@ -0,0 +1,1017 @@
+++long 4
+++int  4
+++short        2
+++ptr  4
+++Bool 4
+++Atom 4
+++Window       4
+++XExtData.number      0
+++XExtData.next        4
+++XExtData.free_private        8
+++XExtData.private_data        12
+++XExtData     16
+++XIMStringConversionCallbackStruct.position   0
+++XIMStringConversionCallbackStruct.direction  2
+++XIMStringConversionCallbackStruct.operation  6
+++XIMStringConversionCallbackStruct.factor     8
+++XIMStringConversionCallbackStruct.text       10
+++XIMStringConversionCallbackStruct    14
+++XkbNewKeyboardNotifyEvent.type       0
+++XkbNewKeyboardNotifyEvent.serial     4
+++XkbNewKeyboardNotifyEvent.send_event 8
+++XkbNewKeyboardNotifyEvent.display    12
+++XkbNewKeyboardNotifyEvent.time       16
+++XkbNewKeyboardNotifyEvent.xkb_type   20
+++XkbNewKeyboardNotifyEvent.device     24
+++XkbNewKeyboardNotifyEvent.old_device 28
+++XkbNewKeyboardNotifyEvent.min_key_code       32
+++XkbNewKeyboardNotifyEvent.max_key_code       36
+++XkbNewKeyboardNotifyEvent.old_min_key_code   40
+++XkbNewKeyboardNotifyEvent.old_max_key_code   44
+++XkbNewKeyboardNotifyEvent.changed    48
+++XkbNewKeyboardNotifyEvent.req_major  52
+++XkbNewKeyboardNotifyEvent.req_minor  53
+++XkbNewKeyboardNotifyEvent    54
+++XTimeCoord.time      0
+++XTimeCoord.x 4
+++XTimeCoord.y 6
+++XTimeCoord   8
+++XkbCompatMapNotifyEvent.type 0
+++XkbCompatMapNotifyEvent.serial       4
+++XkbCompatMapNotifyEvent.send_event   8
+++XkbCompatMapNotifyEvent.display      12
+++XkbCompatMapNotifyEvent.time 16
+++XkbCompatMapNotifyEvent.xkb_type     20
+++XkbCompatMapNotifyEvent.device       24
+++XkbCompatMapNotifyEvent.changed_groups       28
+++XkbCompatMapNotifyEvent.first_si     32
+++XkbCompatMapNotifyEvent.num_si       36
+++XkbCompatMapNotifyEvent.num_total_si 40
+++XkbCompatMapNotifyEvent      44
+++XIMStatusDrawCallbackStruct.type     0
+++XIMStatusDrawCallbackStruct.data     4
+++XIMStatusDrawCallbackStruct  8
+++XKeyboardControl.key_click_percent   0
+++XKeyboardControl.bell_percent        4
+++XKeyboardControl.bell_pitch  8
+++XKeyboardControl.bell_duration       12
+++XKeyboardControl.led 16
+++XKeyboardControl.led_mode    20
+++XKeyboardControl.key 24
+++XKeyboardControl.auto_repeat_mode    28
+++XKeyboardControl     32
+++XSelectionClearEvent.type    0
+++XSelectionClearEvent.serial  4
+++XSelectionClearEvent.send_event      8
+++XSelectionClearEvent.display 12
+++XSelectionClearEvent.window  16
+++XSelectionClearEvent.selection       20
+++XSelectionClearEvent.time    24
+++XSelectionClearEvent 28
+++XWindowChanges.x     0
+++XWindowChanges.y     4
+++XWindowChanges.width 8
+++XWindowChanges.height        12
+++XWindowChanges.border_width  16
+++XWindowChanges.sibling       20
+++XWindowChanges.stack_mode    24
+++XWindowChanges       28
+++XIMPreeditCaretCallbackStruct.position       0
+++XIMPreeditCaretCallbackStruct.direction      4
+++XIMPreeditCaretCallbackStruct.style  8
+++XIMPreeditCaretCallbackStruct        12
+++XOMCharSetList.charset_count 0
+++XOMCharSetList.charset_list  4
+++XOMCharSetList       8
+++XOMFontInfo.num_font 0
+++XOMFontInfo.font_struct_list 4
+++XOMFontInfo.font_name_list   8
+++XOMFontInfo  12
+++AwtScreenData.numConfigs     0
+++AwtScreenData.root   4
+++AwtScreenData.whitepixel     8
+++AwtScreenData.blackpixel     12
+++AwtScreenData.defaultConfig  16
+++AwtScreenData.configs        20
+++AwtScreenData        24
+++XIMHotKeyTrigger.keysym      0
+++XIMHotKeyTrigger.modifier    4
+++XIMHotKeyTrigger.modifier_mask       8
+++XIMHotKeyTrigger     12
+++XCirculateEvent.type 0
+++XCirculateEvent.serial       4
+++XCirculateEvent.send_event   8
+++XCirculateEvent.display      12
+++XCirculateEvent.event        16
+++XCirculateEvent.window       20
+++XCirculateEvent.place        24
+++XCirculateEvent      28
+++Screen.ext_data      0
+++Screen.display       4
+++Screen.root  8
+++Screen.width 12
+++Screen.height        16
+++Screen.mwidth        20
+++Screen.mheight       24
+++Screen.ndepths       28
+++Screen.depths        32
+++Screen.root_depth    36
+++Screen.root_visual   40
+++Screen.default_gc    44
+++Screen.cmap  48
+++Screen.white_pixel   52
+++Screen.black_pixel   56
+++Screen.max_maps      60
+++Screen.min_maps      64
+++Screen.backing_store 68
+++Screen.save_unders   72
+++Screen.root_input_mask       76
+++Screen       80
+++XMapRequestEvent.type        0
+++XMapRequestEvent.serial      4
+++XMapRequestEvent.send_event  8
+++XMapRequestEvent.display     12
+++XMapRequestEvent.parent      16
+++XMapRequestEvent.window      20
+++XMapRequestEvent     24
+++XIMText.length       0
+++XIMText.feedback     2
+++XIMText.encoding_is_wchar    6
+++XIMText.string       10
+++XIMText      14
+++XGraphicsExposeEvent.type    0
+++XGraphicsExposeEvent.serial  4
+++XGraphicsExposeEvent.send_event      8
+++XGraphicsExposeEvent.display 12
+++XGraphicsExposeEvent.drawable        16
+++XGraphicsExposeEvent.x       20
+++XGraphicsExposeEvent.y       24
+++XGraphicsExposeEvent.width   28
+++XGraphicsExposeEvent.height  32
+++XGraphicsExposeEvent.count   36
+++XGraphicsExposeEvent.major_code      40
+++XGraphicsExposeEvent.minor_code      44
+++XGraphicsExposeEvent 48
+++XEvent.type  0
+++XEvent.xany  0
+++XEvent.xkey  0
+++XEvent.xbutton       0
+++XEvent.xmotion       0
+++XEvent.xcrossing     0
+++XEvent.xfocus        0
+++XEvent.xexpose       0
+++XEvent.xgraphicsexpose       0
+++XEvent.xnoexpose     0
+++XEvent.xvisibility   0
+++XEvent.xcreatewindow 0
+++XEvent.xdestroywindow        0
+++XEvent.xunmap        0
+++XEvent.xmap  0
+++XEvent.xmaprequest   0
+++XEvent.xreparent     0
+++XEvent.xconfigure    0
+++XEvent.xgravity      0
+++XEvent.xresizerequest        0
+++XEvent.xconfigurerequest     0
+++XEvent.xcirculate    0
+++XEvent.xcirculaterequest     0
+++XEvent.xproperty     0
+++XEvent.xselectionclear       0
+++XEvent.xselectionrequest     0
+++XEvent.xselection    0
+++XEvent.xcolormap     0
+++XEvent.xclient       0
+++XEvent.xmapping      0
+++XEvent.xerror        0
+++XEvent.xkeymap       0
+++XEvent.pad   0
+++XEvent       96
+++XRenderDirectFormat.red      0
+++XRenderDirectFormat.redMask  2
+++XRenderDirectFormat.green    4
+++XRenderDirectFormat.greenMask        6
+++XRenderDirectFormat.blue     8
+++XRenderDirectFormat.blueMask 10
+++XRenderDirectFormat.alpha    12
+++XRenderDirectFormat.alphaMask        14
+++XRenderDirectFormat  16
+++ColorData.awt_Colors 0
+++ColorData.awt_numICMcolors   4
+++ColorData.awt_icmLUT 8
+++ColorData.awt_icmLUT2Colors  12
+++ColorData.img_grays  16
+++ColorData.img_clr_tbl        20
+++ColorData.img_oda_red        24
+++ColorData.img_oda_green      28
+++ColorData.img_oda_blue       32
+++ColorData.pGrayInverseLutData        36
+++ColorData.representsPrimaries        44
+++ColorData.screendata 40
+++ColorData    48
+++XFontStruct.ext_data 0
+++XFontStruct.fid      4
+++XFontStruct.direction        8
+++XFontStruct.min_char_or_byte2        12
+++XFontStruct.max_char_or_byte2        16
+++XFontStruct.min_byte1        20
+++XFontStruct.max_byte1        24
+++XFontStruct.all_chars_exist  28
+++XFontStruct.n_properties     36
+++XFontStruct.properties       40
+++XFontStruct.min_bounds       44
+++XFontStruct.max_bounds       56
+++XFontStruct.per_char 68
+++XFontStruct.ascent   72
+++XFontStruct.descent  76
+++XFontStruct  80
+++XExtCodes.extension  0
+++XExtCodes.major_opcode       4
+++XExtCodes.first_event        8
+++XExtCodes.first_error        12
+++XExtCodes    16
+++XFontSetExtents.max_ink_extent       0
+++XFontSetExtents.max_logical_extent   8
+++XFontSetExtents      16
+++XSelectionEvent.type 0
+++XSelectionEvent.serial       4
+++XSelectionEvent.send_event   8
+++XSelectionEvent.display      12
+++XSelectionEvent.requestor    16
+++XSelectionEvent.selection    20
+++XSelectionEvent.target       24
+++XSelectionEvent.property     28
+++XSelectionEvent.time 32
+++XSelectionEvent      36
+++XArc.x       0
+++XArc.y       2
+++XArc.width   4
+++XArc.height  6
+++XArc.angle1  8
+++XArc.angle2  10
+++XArc 12
+++XErrorEvent.type     0
+++XErrorEvent.display  4
+++XErrorEvent.resourceid       8
+++XErrorEvent.serial   12
+++XErrorEvent.error_code       16
+++XErrorEvent.request_code     17
+++XErrorEvent.minor_code       18
+++XErrorEvent  20
+++XConfigureRequestEvent.type  0
+++XConfigureRequestEvent.serial        4
+++XConfigureRequestEvent.send_event    8
+++XConfigureRequestEvent.display       12
+++XConfigureRequestEvent.parent        16
+++XConfigureRequestEvent.window        20
+++XConfigureRequestEvent.x     24
+++XConfigureRequestEvent.y     28
+++XConfigureRequestEvent.width 32
+++XConfigureRequestEvent.height        36
+++XConfigureRequestEvent.border_width  40
+++XConfigureRequestEvent.above 44
+++XConfigureRequestEvent.detail        48
+++XConfigureRequestEvent.value_mask    52
+++XConfigureRequestEvent       56
+++ScreenFormat.ext_data        0
+++ScreenFormat.depth   4
+++ScreenFormat.bits_per_pixel  8
+++ScreenFormat.scanline_pad    12
+++ScreenFormat 16
+++XButtonEvent.type    0
+++XButtonEvent.serial  4
+++XButtonEvent.send_event      8
+++XButtonEvent.display 12
+++XButtonEvent.window  16
+++XButtonEvent.root    20
+++XButtonEvent.subwindow       24
+++XButtonEvent.time    28
+++XButtonEvent.x       32
+++XButtonEvent.y       36
+++XButtonEvent.x_root  40
+++XButtonEvent.y_root  44
+++XButtonEvent.state   48
+++XButtonEvent.button  52
+++XButtonEvent.same_screen     56
+++XButtonEvent 60
+++XFontProp.name       0
+++XFontProp.card32     4
+++XFontProp    8
+++XIMValuesList.count_values   0
+++XIMValuesList.supported_values       2
+++XIMValuesList        6
+++XKeymapEvent.type    0
+++XKeymapEvent.serial  4
+++XKeymapEvent.send_event      8
+++XKeymapEvent.display 12
+++XKeymapEvent.window  16
+++XKeymapEvent.key_vector      20
+++XKeymapEvent 52
+++XTextItem16.chars    0
+++XTextItem16.nchars   4
+++XTextItem16.delta    8
+++XTextItem16.font     12
+++XTextItem16  16
+++XIMPreeditDrawCallbackStruct.caret   0
+++XIMPreeditDrawCallbackStruct.chg_first       4
+++XIMPreeditDrawCallbackStruct.chg_length      8
+++XIMPreeditDrawCallbackStruct.text    12
+++XIMPreeditDrawCallbackStruct 16
+++XVisualInfo.visual   0
+++XVisualInfo.visualid 4
+++XVisualInfo.screen   8
+++XVisualInfo.depth    12
+++XVisualInfo.class    16
+++XVisualInfo.red_mask 20
+++XVisualInfo.green_mask       24
+++XVisualInfo.blue_mask        28
+++XVisualInfo.colormap_size    32
+++XVisualInfo.bits_per_rgb     36
+++XVisualInfo  40
+++XkbControlsNotifyEvent.type  0
+++XkbControlsNotifyEvent.serial        4
+++XkbControlsNotifyEvent.send_event    8
+++XkbControlsNotifyEvent.display       12
+++XkbControlsNotifyEvent.time  16
+++XkbControlsNotifyEvent.xkb_type      20
+++XkbControlsNotifyEvent.device        24
+++XkbControlsNotifyEvent.changed_ctrls 28
+++XkbControlsNotifyEvent.enabled_ctrls 32
+++XkbControlsNotifyEvent.enabled_ctrl_changes  36
+++XkbControlsNotifyEvent.num_groups    40
+++XkbControlsNotifyEvent.keycode       44
+++XkbControlsNotifyEvent.event_type    45
+++XkbControlsNotifyEvent.req_major     46
+++XkbControlsNotifyEvent.req_minor     47
+++XkbControlsNotifyEvent       48
+++PropMwmHints.flags   0
+++PropMwmHints.functions       4
+++PropMwmHints.decorations     8
+++PropMwmHints.inputMode       12
+++PropMwmHints.status  16
+++PropMwmHints 20
+++XClientMessageEvent.type     0
+++XClientMessageEvent.serial   4
+++XClientMessageEvent.send_event       8
+++XClientMessageEvent.display  12
+++XClientMessageEvent.window   16
+++XClientMessageEvent.message_type     20
+++XClientMessageEvent.format   24
+++XClientMessageEvent.data     28
+++XClientMessageEvent  48
+++XAnyEvent.type       0
+++XAnyEvent.serial     4
+++XAnyEvent.send_event 8
+++XAnyEvent.display    12
+++XAnyEvent.window     16
+++XAnyEvent    20
+++XkbIndicatorNotifyEvent.type 0
+++XkbIndicatorNotifyEvent.serial       4
+++XkbIndicatorNotifyEvent.send_event   8
+++XkbIndicatorNotifyEvent.display      12
+++XkbIndicatorNotifyEvent.time 16
+++XkbIndicatorNotifyEvent.xkb_type     20
+++XkbIndicatorNotifyEvent.device       24
+++XkbIndicatorNotifyEvent.changed      28
+++XkbIndicatorNotifyEvent.state        32
+++XkbIndicatorNotifyEvent      36
+++XIMPreeditStateNotifyCallbackStruct.state    0
+++XIMPreeditStateNotifyCallbackStruct  4
+++XkbAnyEvent.type     0
+++XkbAnyEvent.serial   4
+++XkbAnyEvent.send_event       8
+++XkbAnyEvent.display  12
+++XkbAnyEvent.time     16
+++XkbAnyEvent.xkb_type 20
+++XkbAnyEvent.device   24
+++XkbAnyEvent  28
+++XMotionEvent.type    0
+++XMotionEvent.serial  4
+++XMotionEvent.send_event      8
+++XMotionEvent.display 12
+++XMotionEvent.window  16
+++XMotionEvent.root    20
+++XMotionEvent.subwindow       24
+++XMotionEvent.time    28
+++XMotionEvent.x       32
+++XMotionEvent.y       36
+++XMotionEvent.x_root  40
+++XMotionEvent.y_root  44
+++XMotionEvent.state   48
+++XMotionEvent.is_hint 52
+++XMotionEvent.same_screen     54
+++XMotionEvent 58
+++XIMHotKeyTriggers.num_hot_key        0
+++XIMHotKeyTriggers.key        4
+++XIMHotKeyTriggers    8
+++XIMStyles.count_styles       0
+++XIMStyles.supported_styles   2
+++XIMStyles    6
+++XkbExtensionDeviceNotifyEvent.type   0
+++XkbExtensionDeviceNotifyEvent.serial 4
+++XkbExtensionDeviceNotifyEvent.send_event     8
+++XkbExtensionDeviceNotifyEvent.display        12
+++XkbExtensionDeviceNotifyEvent.time   16
+++XkbExtensionDeviceNotifyEvent.xkb_type       20
+++XkbExtensionDeviceNotifyEvent.device 24
+++XkbExtensionDeviceNotifyEvent.reason 28
+++XkbExtensionDeviceNotifyEvent.supported      32
+++XkbExtensionDeviceNotifyEvent.unsupported    36
+++XkbExtensionDeviceNotifyEvent.first_btn      40
+++XkbExtensionDeviceNotifyEvent.num_btns       44
+++XkbExtensionDeviceNotifyEvent.leds_defined   48
+++XkbExtensionDeviceNotifyEvent.led_state      52
+++XkbExtensionDeviceNotifyEvent.led_class      56
+++XkbExtensionDeviceNotifyEvent.led_id 60
+++XkbExtensionDeviceNotifyEvent        64
+++XwcTextItem.chars    0
+++XwcTextItem.nchars   4
+++XwcTextItem.delta    8
+++XwcTextItem.font_set 12
+++XwcTextItem  16
+++XClassHint.res_name  0
+++XClassHint.res_class 4
+++XClassHint   8
+++XChar2b.byte1        0
+++XChar2b.byte2        1
+++XChar2b      2
+++XSetWindowAttributes.background_pixmap       0
+++XSetWindowAttributes.background_pixel        4
+++XSetWindowAttributes.border_pixmap   8
+++XSetWindowAttributes.border_pixel    12
+++XSetWindowAttributes.bit_gravity     16
+++XSetWindowAttributes.win_gravity     20
+++XSetWindowAttributes.backing_store   24
+++XSetWindowAttributes.backing_planes  28
+++XSetWindowAttributes.backing_pixel   32
+++XSetWindowAttributes.save_under      36
+++XSetWindowAttributes.event_mask      40
+++XSetWindowAttributes.do_not_propagate_mask   44
+++XSetWindowAttributes.override_redirect       48
+++XSetWindowAttributes.colormap        52
+++XSetWindowAttributes.cursor  56
+++XSetWindowAttributes 60
+++XRenderPictFormat.id 0
+++XRenderPictFormat.type       4
+++XRenderPictFormat.depth      8
+++XRenderPictFormat.direct     12
+++XRenderPictFormat.colormap   28
+++XRenderPictFormat    32
+++XReparentEvent.type  0
+++XReparentEvent.serial        4
+++XReparentEvent.send_event    8
+++XReparentEvent.display       12
+++XReparentEvent.event 16
+++XReparentEvent.window        20
+++XReparentEvent.parent        24
+++XReparentEvent.x     28
+++XReparentEvent.y     32
+++XReparentEvent.override_redirect     36
+++XReparentEvent       40
+++XCirculateRequestEvent.type  0
+++XCirculateRequestEvent.serial        4
+++XCirculateRequestEvent.send_event    8
+++XCirculateRequestEvent.display       12
+++XCirculateRequestEvent.parent        16
+++XCirculateRequestEvent.window        20
+++XCirculateRequestEvent.place 24
+++XCirculateRequestEvent       28
+++XImage.width 0
+++XImage.height        4
+++XImage.xoffset       8
+++XImage.format        12
+++XImage.data  16
+++XImage.byte_order    20
+++XImage.bitmap_unit   24
+++XImage.bitmap_bit_order      28
+++XImage.bitmap_pad    32
+++XImage.depth 36
+++XImage.bytes_per_line        40
+++XImage.bits_per_pixel        44
+++XImage.red_mask      48
+++XImage.green_mask    52
+++XImage.blue_mask     56
+++XImage.obdata        60
+++XImage.f.create_image        64
+++XImage.f.destroy_image       68
+++XImage.f.get_pixel   72
+++XImage.f.put_pixel   76
+++XImage.f.sub_image   80
+++XImage.f.add_pixel   84
+++XImage       88
+++XKeyEvent.type       0
+++XKeyEvent.serial     4
+++XKeyEvent.send_event 8
+++XKeyEvent.display    12
+++XKeyEvent.window     16
+++XKeyEvent.root       20
+++XKeyEvent.subwindow  24
+++XKeyEvent.time       28
+++XKeyEvent.x  32
+++XKeyEvent.y  36
+++XKeyEvent.x_root     40
+++XKeyEvent.y_root     44
+++XKeyEvent.state      48
+++XKeyEvent.keycode    52
+++XKeyEvent.same_screen        56
+++XKeyEvent    60
+++XkbActionMessageEvent.type   0
+++XkbActionMessageEvent.serial 4
+++XkbActionMessageEvent.send_event     8
+++XkbActionMessageEvent.display        12
+++XkbActionMessageEvent.time   16
+++XkbActionMessageEvent.xkb_type       20
+++XkbActionMessageEvent.device 24
+++XkbActionMessageEvent.keycode        28
+++XkbActionMessageEvent.press  30
+++XkbActionMessageEvent.key_event_follows      34
+++XkbActionMessageEvent.group  38
+++XkbActionMessageEvent.mods   42
+++XkbActionMessageEvent.message        46
+++XkbActionMessageEvent        54
+++XdbeSwapInfo.swap_window     0
+++XdbeSwapInfo.swap_action     4
+++XdbeSwapInfo 6
+++XTextItem.chars      0
+++XTextItem.nchars     4
+++XTextItem.delta      8
+++XTextItem.font       12
+++XTextItem    16
+++XModifierKeymap.max_keypermod        0
+++XModifierKeymap.modifiermap  4
+++XModifierKeymap      8
+++XCharStruct.lbearing 0
+++XCharStruct.rbearing 2
+++XCharStruct.width    4
+++XCharStruct.ascent   6
+++XCharStruct.descent  8
+++XCharStruct.attributes       10
+++XCharStruct  12
+++XGravityEvent.type   0
+++XGravityEvent.serial 4
+++XGravityEvent.send_event     8
+++XGravityEvent.display        12
+++XGravityEvent.event  16
+++XGravityEvent.window 20
+++XGravityEvent.x      24
+++XGravityEvent.y      28
+++XGravityEvent        32
+++Visual.ext_data      0
+++Visual.visualid      4
+++Visual.class 8
+++Visual.red_mask      12
+++Visual.green_mask    16
+++Visual.blue_mask     20
+++Visual.bits_per_rgb  24
+++Visual.map_entries   28
+++Visual       32
+++XOMOrientation.num_orientation       0
+++XOMOrientation.orientation   4
+++XOMOrientation       8
+++XkbAccessXNotifyEvent.type   0
+++XkbAccessXNotifyEvent.serial 4
+++XkbAccessXNotifyEvent.send_event     8
+++XkbAccessXNotifyEvent.display        12
+++XkbAccessXNotifyEvent.time   16
+++XkbAccessXNotifyEvent.xkb_type       20
+++XkbAccessXNotifyEvent.device 24
+++XkbAccessXNotifyEvent.detail 28
+++XkbAccessXNotifyEvent.keycode        32
+++XkbAccessXNotifyEvent.sk_delay       36
+++XkbAccessXNotifyEvent.debounce_delay 40
+++XkbAccessXNotifyEvent        44
+++XWindowAttributes.x  0
+++XWindowAttributes.y  4
+++XWindowAttributes.width      8
+++XWindowAttributes.height     12
+++XWindowAttributes.border_width       16
+++XWindowAttributes.depth      20
+++XWindowAttributes.visual     24
+++XWindowAttributes.root       28
+++XWindowAttributes.class      32
+++XWindowAttributes.bit_gravity        36
+++XWindowAttributes.win_gravity        40
+++XWindowAttributes.backing_store      44
+++XWindowAttributes.backing_planes     48
+++XWindowAttributes.backing_pixel      52
+++XWindowAttributes.save_under 56
+++XWindowAttributes.colormap   60
+++XWindowAttributes.map_installed      64
+++XWindowAttributes.map_state  68
+++XWindowAttributes.all_event_masks    72
+++XWindowAttributes.your_event_mask    76
+++XWindowAttributes.do_not_propagate_mask      80
+++XWindowAttributes.override_redirect  84
+++XWindowAttributes.screen     88
+++XWindowAttributes    92
+++XmbTextItem.chars    0
+++XmbTextItem.nchars   4
+++XmbTextItem.delta    8
+++XmbTextItem.font_set 12
+++XmbTextItem  16
+++XMappingEvent.type   0
+++XMappingEvent.serial 4
+++XMappingEvent.send_event     8
+++XMappingEvent.display        12
+++XMappingEvent.window 16
+++XMappingEvent.request        20
+++XMappingEvent.first_keycode  24
+++XMappingEvent.count  28
+++XMappingEvent        32
+++XSizeHints.flags     0
+++XSizeHints.x 4
+++XSizeHints.y 8
+++XSizeHints.width     12
+++XSizeHints.height    16
+++XSizeHints.min_width 20
+++XSizeHints.min_height        24
+++XSizeHints.max_width 28
+++XSizeHints.max_height        32
+++XSizeHints.width_inc 36
+++XSizeHints.height_inc        40
+++XSizeHints.min_aspect.x      44
+++XSizeHints.min_aspect.y      48
+++XSizeHints.max_aspect.x      52
+++XSizeHints.max_aspect.y      56
+++XSizeHints.base_width        60
+++XSizeHints.base_height       64
+++XSizeHints.win_gravity       68
+++XSizeHints   72
+++XUnmapEvent.type     0
+++XUnmapEvent.serial   4
+++XUnmapEvent.send_event       8
+++XUnmapEvent.display  12
+++XUnmapEvent.event    16
+++XUnmapEvent.window   20
+++XUnmapEvent.from_configure   24
+++XUnmapEvent  28
+++awtImageData.Depth   0
+++awtImageData.wsImageFormat   4
+++awtImageData.clrdata 16
+++awtImageData.convert 48
+++awtImageData 304
+++XkbStateNotifyEvent.type     0
+++XkbStateNotifyEvent.serial   4
+++XkbStateNotifyEvent.send_event       8
+++XkbStateNotifyEvent.display  12
+++XkbStateNotifyEvent.time     16
+++XkbStateNotifyEvent.xkb_type 20
+++XkbStateNotifyEvent.device   24
+++XkbStateNotifyEvent.changed  28
+++XkbStateNotifyEvent.group    32
+++XkbStateNotifyEvent.base_group       36
+++XkbStateNotifyEvent.latched_group    40
+++XkbStateNotifyEvent.locked_group     44
+++XkbStateNotifyEvent.mods     48
+++XkbStateNotifyEvent.base_mods        52
+++XkbStateNotifyEvent.latched_mods     56
+++XkbStateNotifyEvent.locked_mods      60
+++XkbStateNotifyEvent.compat_state     64
+++XkbStateNotifyEvent.grab_mods        68
+++XkbStateNotifyEvent.compat_grab_mods 69
+++XkbStateNotifyEvent.lookup_mods      70
+++XkbStateNotifyEvent.compat_lookup_mods       71
+++XkbStateNotifyEvent.ptr_buttons      72
+++XkbStateNotifyEvent.keycode  76
+++XkbStateNotifyEvent.event_type       77
+++XkbStateNotifyEvent.req_major        78
+++XkbStateNotifyEvent.req_minor        79
+++XkbStateNotifyEvent  80
+++XExposeEvent.type    0
+++XExposeEvent.serial  4
+++XExposeEvent.send_event      8
+++XExposeEvent.display 12
+++XExposeEvent.window  16
+++XExposeEvent.x       20
+++XExposeEvent.y       24
+++XExposeEvent.width   28
+++XExposeEvent.height  32
+++XExposeEvent.count   36
+++XExposeEvent 40
+++XkbMapNotifyEvent.type       0
+++XkbMapNotifyEvent.serial     4
+++XkbMapNotifyEvent.send_event 8
+++XkbMapNotifyEvent.display    12
+++XkbMapNotifyEvent.time       16
+++XkbMapNotifyEvent.xkb_type   20
+++XkbMapNotifyEvent.device     24
+++XkbMapNotifyEvent.changed    28
+++XkbMapNotifyEvent.flags      32
+++XkbMapNotifyEvent.first_type 36
+++XkbMapNotifyEvent.num_types  40
+++XkbMapNotifyEvent.min_key_code       44
+++XkbMapNotifyEvent.max_key_code       45
+++XkbMapNotifyEvent.first_key_sym      46
+++XkbMapNotifyEvent.first_key_act      47
+++XkbMapNotifyEvent.first_key_behavior 48
+++XkbMapNotifyEvent.first_key_explicit 49
+++XkbMapNotifyEvent.first_modmap_key   50
+++XkbMapNotifyEvent.first_vmodmap_key  51
+++XkbMapNotifyEvent.num_key_syms       52
+++XkbMapNotifyEvent.num_key_acts       56
+++XkbMapNotifyEvent.num_key_behaviors  60
+++XkbMapNotifyEvent.num_key_explicit   64
+++XkbMapNotifyEvent.num_modmap_keys    68
+++XkbMapNotifyEvent.num_vmodmap_keys   72
+++XkbMapNotifyEvent.vmods      76
+++XkbMapNotifyEvent    80
+++XGCValues.function   0
+++XGCValues.plane_mask 4
+++XGCValues.foreground 8
+++XGCValues.background 12
+++XGCValues.line_width 16
+++XGCValues.line_style 20
+++XGCValues.cap_style  24
+++XGCValues.join_style 28
+++XGCValues.fill_style 32
+++XGCValues.fill_rule  36
+++XGCValues.arc_mode   40
+++XGCValues.tile       44
+++XGCValues.stipple    48
+++XGCValues.ts_x_origin        52
+++XGCValues.ts_y_origin        56
+++XGCValues.font       60
+++XGCValues.subwindow_mode     64
+++XGCValues.graphics_exposures 68
+++XGCValues.clip_x_origin      72
+++XGCValues.clip_y_origin      76
+++XGCValues.clip_mask  80
+++XGCValues.dash_offset        84
+++XGCValues.dashes     88
+++XGCValues    90
+++XFocusChangeEvent.type       0
+++XFocusChangeEvent.serial     4
+++XFocusChangeEvent.send_event 8
+++XFocusChangeEvent.display    12
+++XFocusChangeEvent.window     16
+++XFocusChangeEvent.mode       20
+++XFocusChangeEvent.detail     24
+++XFocusChangeEvent    28
+++XPixmapFormatValues.depth    0
+++XPixmapFormatValues.bits_per_pixel   4
+++XPixmapFormatValues.scanline_pad     8
+++XPixmapFormatValues  12
+++XMapEvent.type       0
+++XMapEvent.serial     4
+++XMapEvent.send_event 8
+++XMapEvent.display    12
+++XMapEvent.event      16
+++XMapEvent.window     20
+++XMapEvent.override_redirect  24
+++XMapEvent    28
+++XkbBellNotifyEvent.type      0
+++XkbBellNotifyEvent.serial    4
+++XkbBellNotifyEvent.send_event        8
+++XkbBellNotifyEvent.display   12
+++XkbBellNotifyEvent.time      16
+++XkbBellNotifyEvent.xkb_type  20
+++XkbBellNotifyEvent.device    24
+++XkbBellNotifyEvent.percent   28
+++XkbBellNotifyEvent.pitch     32
+++XkbBellNotifyEvent.duration  36
+++XkbBellNotifyEvent.bell_class        40
+++XkbBellNotifyEvent.bell_id   44
+++XkbBellNotifyEvent.name      48
+++XkbBellNotifyEvent.window    52
+++XkbBellNotifyEvent.event_only        56
+++XkbBellNotifyEvent   60
+++XIMStringConversionText.length       0
+++XIMStringConversionText.feedback     2
+++XIMStringConversionText.encoding_is_wchar    6
+++XIMStringConversionText.string       10
+++XIMStringConversionText      14
+++XKeyboardState.key_click_percent     0
+++XKeyboardState.bell_percent  4
+++XKeyboardState.bell_pitch    8
+++XKeyboardState.bell_duration 12
+++XKeyboardState.led_mask      16
+++XKeyboardState.global_auto_repeat    20
+++XKeyboardState.auto_repeats  24
+++XKeyboardState       56
+++XkbEvent.type        0
+++XkbEvent.any 0
+++XkbEvent.new_kbd     0
+++XkbEvent.map 0
+++XkbEvent.state       0
+++XkbEvent.ctrls       0
+++XkbEvent.indicators  0
+++XkbEvent.names       0
+++XkbEvent.compat      0
+++XkbEvent.bell        0
+++XkbEvent.message     0
+++XkbEvent.accessx     0
+++XkbEvent.device      0
+++XkbEvent.core        0
+++XkbEvent     96
+++XPoint.x     0
+++XPoint.y     2
+++XPoint       4
+++XSegment.x1  0
+++XSegment.y1  2
+++XSegment.x2  4
+++XSegment.y2  6
+++XSegment     8
+++XIconSize.min_width  0
+++XIconSize.min_height 4
+++XIconSize.max_width  8
+++XIconSize.max_height 12
+++XIconSize.width_inc  16
+++XIconSize.height_inc 20
+++XIconSize    24
+++XIMCallback.client_data      0
+++XIMCallback.callback 4
+++XIMCallback  8
+++XConfigureEvent.type 0
+++XConfigureEvent.serial       4
+++XConfigureEvent.send_event   8
+++XConfigureEvent.display      12
+++XConfigureEvent.event        16
+++XConfigureEvent.window       20
+++XConfigureEvent.x    24
+++XConfigureEvent.y    28
+++XConfigureEvent.width        32
+++XConfigureEvent.height       36
+++XConfigureEvent.border_width 40
+++XConfigureEvent.above        44
+++XConfigureEvent.override_redirect    48
+++XConfigureEvent      52
+++XRectangle.x 0
+++XRectangle.y 2
+++XRectangle.width     4
+++XRectangle.height    6
+++XRectangle   8
+++XkbNamesNotifyEvent.type     0
+++XkbNamesNotifyEvent.serial   4
+++XkbNamesNotifyEvent.send_event       8
+++XkbNamesNotifyEvent.display  12
+++XkbNamesNotifyEvent.time     16
+++XkbNamesNotifyEvent.xkb_type 20
+++XkbNamesNotifyEvent.device   24
+++XkbNamesNotifyEvent.changed  28
+++XkbNamesNotifyEvent.first_type       32
+++XkbNamesNotifyEvent.num_types        36
+++XkbNamesNotifyEvent.first_lvl        40
+++XkbNamesNotifyEvent.num_lvls 44
+++XkbNamesNotifyEvent.num_aliases      48
+++XkbNamesNotifyEvent.num_radio_groups 52
+++XkbNamesNotifyEvent.changed_vmods    56
+++XkbNamesNotifyEvent.changed_groups   60
+++XkbNamesNotifyEvent.changed_indicators       64
+++XkbNamesNotifyEvent.first_key        68
+++XkbNamesNotifyEvent.num_keys 72
+++XkbNamesNotifyEvent  76
+++XCreateWindowEvent.type      0
+++XCreateWindowEvent.serial    4
+++XCreateWindowEvent.send_event        8
+++XCreateWindowEvent.display   12
+++XCreateWindowEvent.parent    16
+++XCreateWindowEvent.window    20
+++XCreateWindowEvent.x 24
+++XCreateWindowEvent.y 28
+++XCreateWindowEvent.width     32
+++XCreateWindowEvent.height    36
+++XCreateWindowEvent.border_width      40
+++XCreateWindowEvent.override_redirect 44
+++XCreateWindowEvent   48
+++XVisibilityEvent.type        0
+++XVisibilityEvent.serial      4
+++XVisibilityEvent.send_event  8
+++XVisibilityEvent.display     12
+++XVisibilityEvent.window      16
+++XVisibilityEvent.state       20
+++XVisibilityEvent     24
+++XWMHints.flags       0
+++XWMHints.initial_state       8
+++XWMHints.icon_pixmap 12
+++XWMHints.icon_window 16
+++XWMHints.icon_x      20
+++XWMHints.icon_y      24
+++XWMHints.icon_mask   28
+++XWMHints.input       4
+++XWMHints.window_group        32
+++XWMHints     36
+++XCrossingEvent.type  0
+++XCrossingEvent.serial        4
+++XCrossingEvent.send_event    8
+++XCrossingEvent.display       12
+++XCrossingEvent.window        16
+++XCrossingEvent.root  20
+++XCrossingEvent.subwindow     24
+++XCrossingEvent.time  28
+++XCrossingEvent.x     32
+++XCrossingEvent.y     36
+++XCrossingEvent.x_root        40
+++XCrossingEvent.y_root        44
+++XCrossingEvent.mode  48
+++XCrossingEvent.detail        52
+++XCrossingEvent.same_screen   56
+++XCrossingEvent.focus 60
+++XCrossingEvent.state 64
+++XCrossingEvent       68
+++XSelectionRequestEvent.type  0
+++XSelectionRequestEvent.serial        4
+++XSelectionRequestEvent.send_event    8
+++XSelectionRequestEvent.display       12
+++XSelectionRequestEvent.owner 16
+++XSelectionRequestEvent.requestor     20
+++XSelectionRequestEvent.selection     24
+++XSelectionRequestEvent.target        28
+++XSelectionRequestEvent.property      32
+++XSelectionRequestEvent.time  36
+++XSelectionRequestEvent       40
+++XNoExposeEvent.type  0
+++XNoExposeEvent.serial        4
+++XNoExposeEvent.send_event    8
+++XNoExposeEvent.display       12
+++XNoExposeEvent.drawable      16
+++XNoExposeEvent.major_code    20
+++XNoExposeEvent.minor_code    24
+++XNoExposeEvent       28
+++XHostAddress.family  0
+++XHostAddress.length  4
+++XHostAddress.address 8
+++XHostAddress 12
+++XColormapEvent.type  0
+++XColormapEvent.serial        4
+++XColormapEvent.send_event    8
+++XColormapEvent.display       12
+++XColormapEvent.window        16
+++XColormapEvent.colormap      20
+++XColormapEvent.new   24
+++XColormapEvent.state 28
+++XColormapEvent       32
+++ColorEntry.r 0
+++ColorEntry.g 1
+++ColorEntry.b 2
+++ColorEntry.flags     3
+++ColorEntry   4
+++XResizeRequestEvent.type     0
+++XResizeRequestEvent.serial   4
+++XResizeRequestEvent.send_event       8
+++XResizeRequestEvent.display  12
+++XResizeRequestEvent.window   16
+++XResizeRequestEvent.width    20
+++XResizeRequestEvent.height   24
+++XResizeRequestEvent  28
+++Depth.depth  0
+++Depth.nvisuals       4
+++Depth.visuals        8
+++Depth        12
+++XPropertyEvent.type  0
+++XPropertyEvent.serial        4
+++XPropertyEvent.send_event    8
+++XPropertyEvent.display       12
+++XPropertyEvent.window        16
+++XPropertyEvent.atom  20
+++XPropertyEvent.time  24
+++XPropertyEvent.state 28
+++XPropertyEvent       32
+++XDestroyWindowEvent.type     0
+++XDestroyWindowEvent.serial   4
+++XDestroyWindowEvent.send_event       8
+++XDestroyWindowEvent.display  12
+++XDestroyWindowEvent.event    16
+++XDestroyWindowEvent.window   20
+++XDestroyWindowEvent  24
+++XStandardColormap.colormap   0
+++XStandardColormap.red_max    4
+++XStandardColormap.red_mult   8
+++XStandardColormap.green_max  12
+++XStandardColormap.green_mult 16
+++XStandardColormap.blue_max   20
+++XStandardColormap.blue_mult  24
+++XStandardColormap.base_pixel 28
+++XStandardColormap.visualid   32
+++XStandardColormap.killid     36
+++XStandardColormap    40
+++XComposeStatus.compose_ptr   0
+++XComposeStatus.chars_matched 4
+++XComposeStatus       8
+++AwtGraphicsConfigData.awt_depth      0
+++AwtGraphicsConfigData.awt_cmap       4
+++AwtGraphicsConfigData.awt_visInfo    8
+++AwtGraphicsConfigData.awt_num_colors 48
+++AwtGraphicsConfigData.awtImage       52
+++AwtGraphicsConfigData.AwtColorMatch  56
+++AwtGraphicsConfigData.monoImage      60
+++AwtGraphicsConfigData.monoPixmap     64
+++AwtGraphicsConfigData.monoPixmapWidth        68
+++AwtGraphicsConfigData.monoPixmapHeight       72
+++AwtGraphicsConfigData.monoPixmapGC   76
+++AwtGraphicsConfigData.pixelStride    80
+++AwtGraphicsConfigData.color_data     84
+++AwtGraphicsConfigData.glxInfo        88
+++AwtGraphicsConfigData.isTranslucencySupported        92
+++AwtGraphicsConfigData.renderPictFormat       96
+++AwtGraphicsConfigData        128
+++XColor.pixel 0
+++XColor.red   4
+++XColor.green 6
+++XColor.blue  8
+++XColor.flags 10
+++XColor.pad   11
+++XColor       12
+++XTextProperty.value  0
+++XTextProperty.encoding       4
+++XTextProperty.format 8
+++XTextProperty.nitems 12
+++XTextProperty        16
++--- a/make/modules/java.desktop/gensrc/GensrcX11Wrappers.gmk
+++++ b/make/modules/java.desktop/gensrc/GensrcX11Wrappers.gmk
++@@ -29,9 +29,14 @@
++ # Put the generated Java classes used to interface X11 from awt here.
++ GENSRC_X11WRAPPERS_OUTPUTDIR := $(SUPPORT_OUTPUTDIR)/gensrc/java.desktop/sun/awt/X11
++ 
+++GENSRC_X11_VERSION_VARIANT :=
+++ifeq ($(OPENJDK_TARGET_OS)-$(OPENJDK_TARGET_CPU), linux-m68k)
+++  GENSRC_X11_VERSION_VARIANT := -linux-m68k
+++endif
+++
++ # The pre-calculated offset file are stored here:
++ GENSRC_X11WRAPPERS_DATADIR := $(TOPDIR)/make/data/x11wrappergen
++-GENSRC_X11WRAPPERS_DATA := $(GENSRC_X11WRAPPERS_DATADIR)/sizes-$(OPENJDK_TARGET_CPU_BITS).txt
+++GENSRC_X11WRAPPERS_DATA := $(GENSRC_X11WRAPPERS_DATADIR)/sizes-$(OPENJDK_TARGET_CPU_BITS)$(GENSRC_X11_VERSION_VARIANT).txt
++ 
++ # Run the tool on the offset files to generate several Java classes used in awt.
++ $(eval $(call SetupExecute, gen_x11wrappers, \
++--- a/src/hotspot/share/memory/allocation.hpp
+++++ b/src/hotspot/share/memory/allocation.hpp
++@@ -239,7 +239,7 @@ template <MEMFLAGS F> class CHeapObj ALL
++ 
++   void  operator delete(void* p)     { FreeHeap(p); }
++   void  operator delete [] (void* p) { FreeHeap(p); }
++-};
+++} __attribute__ ((aligned (4)));
++ 
++ // Base class for objects allocated on the stack only.
++ // Calling new or delete will result in fatal error.
++@@ -250,7 +250,7 @@ class StackObj ALLOCATION_SUPER_CLASS_SP
++   void* operator new [](size_t size) throw();
++   void  operator delete(void* p);
++   void  operator delete [](void* p);
++-};
+++} __attribute__ ((aligned (4)));
++ 
++ // Base class for objects stored in Metaspace.
++ // Calling delete will result in fatal error.
++@@ -372,7 +372,7 @@ class MetaspaceObj {
++   // that should be read-only by default. See symbol.hpp for an example. This function
++   // is used by the templates in metaspaceClosure.hpp
++   static bool is_read_only_by_default() { return false; }
++-};
+++} __attribute__ ((aligned (4)));
++ 
++ // Base class for classes that constitute name spaces.
++ 
++@@ -457,7 +457,7 @@ protected:
++ 
++   void  operator delete(void* p);
++   void  operator delete [](void* p);
++-};
+++} __attribute__ ((aligned (4)));
++ 
++ // One of the following macros must be used when allocating an array
++ // or object to determine whether it should reside in the C heap on in
++--- a/src/hotspot/share/oops/constMethod.hpp
+++++ b/src/hotspot/share/oops/constMethod.hpp
++@@ -525,6 +525,6 @@ private:
++ 
++   // Verify
++   void verify_on(outputStream* st);
++-};
+++} __attribute__ ((aligned (4)));
++ 
++ #endif // SHARE_OOPS_CONSTMETHOD_HPP
++--- a/src/hotspot/share/oops/oop.hpp
+++++ b/src/hotspot/share/oops/oop.hpp
++@@ -315,6 +315,6 @@ class oopDesc {
++   // Avoid include gc_globals.hpp in oop.inline.hpp
++   DEBUG_ONLY(bool get_UseParallelGC();)
++   DEBUG_ONLY(bool get_UseG1GC();)
++-};
+++} __attribute__ ((aligned (4)));
++ 
++ #endif // SHARE_OOPS_OOP_HPP
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d606c343ff2d267e6f080548fbd578e08839d1cd
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,24 @@@
++--- a/make/autoconf/flags.m4
+++++ b/make/autoconf/flags.m4
++@@ -263,6 +263,7 @@ AC_DEFUN_ONCE([FLAGS_PRE_TOOLCHAIN],
++         test "x$OPENJDK_TARGET_CPU_ARCH" = xppc; then
++       MACHINE_FLAG="-m${OPENJDK_TARGET_CPU_BITS}"
++     fi
+++    case "$host" in *x32) MACHINE_FLAG=;; esac
++   fi
++ 
++   if test "x$OPENJDK_TARGET_OS" = xmacosx; then
++@@ -344,11 +345,8 @@ AC_DEFUN([FLAGS_SETUP_TOOLCHAIN_CONTROL]
++   AC_SUBST(COMPILER_COMMAND_FILE_FLAG)
++   AC_SUBST(COMPILER_BINDCMD_FILE_FLAG)
++ 
++-  # Check that the compiler supports -mX (or -qX on AIX) flags
++-  # Set COMPILER_SUPPORTS_TARGET_BITS_FLAG to 'true' if it does
++-  FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}],
++-      IF_TRUE: [COMPILER_SUPPORTS_TARGET_BITS_FLAG=true],
++-      IF_FALSE: [COMPILER_SUPPORTS_TARGET_BITS_FLAG=false])
+++  # Don't run the -mX check and set this always to false, or else x32 gets passed -m32
+++  COMPILER_SUPPORTS_TARGET_BITS_FLAG=false
++   AC_SUBST(COMPILER_SUPPORTS_TARGET_BITS_FLAG)
++ 
++   if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..350a2a43c7fe09f56ef0431f73c82cdac59accb9
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,10 @@@
++--- a/make/Main.gmk
+++++ b/make/Main.gmk
++@@ -1196,6 +1196,7 @@ ALL_TARGETS += default jdk images docs b
++ 
++ # Aliases used for running tests.
++ 
+++$(call PrintVar, ALL_NAMED_TESTS)
++ # Let "run-test" be an alias for "test"
++ $(foreach t, $(ALL_NAMED_TESTS), $(eval run-test-$t: test-$t))
++ RUN_TEST_TARGETS := $(addprefix run-test-, $(ALL_NAMED_TESTS))
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..cbffefd20b05cca9410fb122a88b485abfc54397
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,13 @@@
++# DP: Untested patch suggested to fix #983878
++
++--- a/src/java.base/unix/native/libnio/fs/UnixNativeDispatcher.c
+++++ b/src/java.base/unix/native/libnio/fs/UnixNativeDispatcher.c
++@@ -156,7 +156,7 @@ static fdopendir_func* my_fdopendir_func
++ /**
++  * fstatat missing from glibc on Linux.
++  */
++-#if defined(__linux__) && (defined(__i386) || defined(__arm__))
+++#if defined(__linux__) && (defined(__i386) || defined(__arm__) || (defined(__mips__) && !defined(__mips64)))
++ #define FSTATAT64_SYSCALL_AVAILABLE
++ static int fstatat64_wrapper(int dfd, const char *path,
++                              struct stat64 *statbuf, int flag)
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..81a65ca404ed3112dedde3ae72baa872bd6f36de
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,72 @@@
++# HG changeset patch
++# User andrew
++# Date 1352129932 0
++# Node ID e9c857dcb964dbfa5eef3a3590244cb4d999cf7a
++# Parent  1406789608b76d0906881979335d685855f44190
++Allow multiple PKCS11 library initialisation to be a non-critical error.
++
++--- a/src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/Config.java
+++++ b/src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/Config.java
++@@ -52,6 +52,7 @@ final class Config {
++     static final int ERR_HALT       = 1;
++     static final int ERR_IGNORE_ALL = 2;
++     static final int ERR_IGNORE_LIB = 3;
+++    static final int ERR_IGNORE_MULTI_INIT = 4;
++ 
++     // same as allowSingleThreadedModules but controlled via a system property
++     // and applied to all providers. if set to false, no SunPKCS11 instances
++@@ -1019,6 +1020,8 @@ final class Config {
++             handleStartupErrors = ERR_IGNORE_LIB;
++         } else if (val.equals("halt")) {
++             handleStartupErrors = ERR_HALT;
+++        } else if (val.equals("ignoreMultipleInitialisation")) {
+++            handleStartupErrors = ERR_IGNORE_MULTI_INIT;
++         } else {
++             throw excToken("Invalid value for handleStartupErrors:");
++         }
++--- a/src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/SunPKCS11.java
+++++ b/src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/SunPKCS11.java
++@@ -179,26 +179,37 @@ public final class SunPKCS11 extends Aut
++                 String nssLibraryDirectory = config.getNssLibraryDirectory();
++                 String nssSecmodDirectory = config.getNssSecmodDirectory();
++                 boolean nssOptimizeSpace = config.getNssOptimizeSpace();
+++                int errorHandling = config.getHandleStartupErrors();
++ 
++                 if (secmod.isInitialized()) {
++                     if (nssSecmodDirectory != null) {
++                         String s = secmod.getConfigDir();
++                         if ((s != null) &&
++                                 (s.equals(nssSecmodDirectory) == false)) {
++-                            throw new ProviderException("Secmod directory "
++-                                + nssSecmodDirectory
++-                                + " invalid, NSS already initialized with "
++-                                + s);
+++                            String msg = "Secmod directory " + nssSecmodDirectory
+++                                + " invalid, NSS already initialized with " + s;
+++                            if (errorHandling == Config.ERR_IGNORE_MULTI_INIT ||
+++                                errorHandling == Config.ERR_IGNORE_ALL) {
+++                                throw new UnsupportedOperationException(msg);
+++                            } else {
+++                                throw new ProviderException(msg);
+++                            }
++                         }
++                     }
++                     if (nssLibraryDirectory != null) {
++                         String s = secmod.getLibDir();
++                         if ((s != null) &&
++                                 (s.equals(nssLibraryDirectory) == false)) {
++-                            throw new ProviderException("NSS library directory "
+++                            String msg = "NSS library directory "
++                                 + nssLibraryDirectory
++                                 + " invalid, NSS already initialized with "
++-                                + s);
+++                                + s;
+++                            if (errorHandling == Config.ERR_IGNORE_MULTI_INIT ||
+++                                errorHandling == Config.ERR_IGNORE_ALL) {
+++                                throw new UnsupportedOperationException(msg);
+++                            } else {
+++                                throw new ProviderException(msg);
+++                            }
++                         }
++                     }
++                 } else {
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..76726e84b6c95f0af3d6da17af8d0d76932f38b2
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,110 @@@
++--- a/src/hotspot/src/share/vm/oops/arrayKlassKlass.cpp~      2013-03-04 22:51:00.000000000 +0100
+++++ b/src/hotspot/src/share/vm/oops/arrayKlassKlass.cpp       2013-04-15 13:57:24.992929086 +0200
++@@ -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"
++--- a/src/hotspot/src/share/vm/oops/constantPoolKlass.cpp~    2013-03-04 22:51:00.000000000 +0100
+++++ b/src/hotspot/src/share/vm/oops/constantPoolKlass.cpp     2013-04-15 14:02:52.143087149 +0200
++@@ -49,6 +49,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"
++--- a/src/hotspot/src/share/vm/oops/cpCacheKlass.cpp~ 2013-03-04 22:51:00.000000000 +0100
+++++ b/src/hotspot/src/share/vm/oops/cpCacheKlass.cpp  2013-04-15 14:04:45.219838633 +0200
++@@ -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"
++--- a/src/hotspot/src/share/vm/oops/instanceKlass.cpp~        2013-03-04 22:51:00.000000000 +0100
+++++ b/src/hotspot/src/share/vm/oops/instanceKlass.cpp 2013-04-15 14:07:55.861109867 +0200
++@@ -70,6 +70,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"
++--- a/src/hotspot/src/share/vm/oops/instanceKlassKlass.cpp~   2013-03-04 22:51:00.000000000 +0100
+++++ b/src/hotspot/src/share/vm/oops/instanceKlassKlass.cpp    2013-04-15 14:08:53.541485528 +0200
++@@ -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"
++--- a/src/hotspot/src/share/vm/oops/instanceMirrorKlass.cpp~  2013-03-04 22:51:00.000000000 +0100
+++++ b/src/hotspot/src/share/vm/oops/instanceMirrorKlass.cpp   2013-04-15 14:10:11.162003798 +0200
++@@ -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"
++--- a/src/hotspot/src/share/vm/oops/instanceRefKlass.cpp~     2013-03-04 22:51:00.000000000 +0100
+++++ b/src/hotspot/src/share/vm/oops/instanceRefKlass.cpp      2013-04-15 14:11:11.726403390 +0200
++@@ -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"
++--- a/src/hotspot/src/share/vm/oops/klassKlass.cpp~   2013-03-04 22:51:00.000000000 +0100
+++++ b/src/hotspot/src/share/vm/oops/klassKlass.cpp    2013-04-15 14:13:01.999133769 +0200
++@@ -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"
++--- a/src/hotspot/src/share/vm/oops/objArrayKlass.cpp~        2013-03-04 22:51:00.000000000 +0100
+++++ b/src/hotspot/src/share/vm/oops/objArrayKlass.cpp 2013-04-15 14:16:10.616389484 +0200
++@@ -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"
++--- a/src/hotspot/src/share/vm/oops/objArrayKlassKlass.cpp~   2013-03-04 22:51:00.000000000 +0100
+++++ b/src/hotspot/src/share/vm/oops/objArrayKlassKlass.cpp    2013-04-15 14:17:01.800729154 +0200
++@@ -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"
++--- a/src/hotspot/src/share/vm/gc_implementation/parallelScavenge/psTasks.cpp~        2013-03-04 22:51:00.000000000 +0100
+++++ b/src/hotspot/src/share/vm/gc_implementation/parallelScavenge/psTasks.cpp 2013-04-15 14:20:24.782079605 +0200
++@@ -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"
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..235bb6d3e10486d5c79d18454f70f1c0cec4d92b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,9090 @@@
++Replace header files in src/jdk.crypto.cryptoki/share/native/libj2pkcs11.
++
++Import from NSPR 4.29:
++ - prcpucfg.h
++ - prtypes.h
++
++Import from NSS 2.63:
++ - pkcs11.h
++ - pkcs11f.h
++ - pkcs11n.h
++ - pkcs11p.h
++ - pkcs11t.h
++ - pkcs11u.h
++
++src/jdk.crypto.cryptoki/unix/native/libj2pkcs11/p11_md.h:
++ - Remove macro CK_PTR
++ - Remove macro CK_DEFINE_FUNCTION
++ - Remove macro CK_DECLARE_FUNCTION
++ - Remove macro CK_DECLARE_FUNCTION_POINTER
++ - Remove macro CK_CALLBACK_FUNCTION
++ 
++src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs11wrapper.h:
++ - use CK_TRUE/CK_FALSE instead of TRUE/FALSE
++
++src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_convert.c:
++ - FIXME: CKM_KEA_DERIVE is undefined
++
++src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_util.c:
++ - FIXME: CKM_CAMELLIA_CTR is undefined
++
++
++--- a/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs11.h
+++++ b/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs11.h
++@@ -1,10 +1,15 @@
++-/* Copyright (c) OASIS Open 2016-2019. All Rights Reserved.
++- * Distributed under the terms of the OASIS IPR Policy,
++- * [http://www.oasis-open.org/policies-guidelines/ipr], AS-IS, WITHOUT ANY
++- * IMPLIED OR EXPRESS WARRANTY; there is no warranty of MERCHANTABILITY, FITNESS FOR A
++- * PARTICULAR PURPOSE or NONINFRINGEMENT of the rights of others.
+++/* This Source Code Form is subject to the terms of the Mozilla Public
+++ * License, v. 2.0. If a copy of the MPL was not distributed with this
+++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+++/*
+++ * Copyright (C) 1994-1999 RSA Security Inc. Licence to copy this document
+++ * is granted provided that it is identified as "RSA Security In.c Public-Key
+++ * Cryptography Standards (PKCS)" in all material mentioning or referencing
+++ * this document.
+++ *
+++ * The latest version of this header can be found at:
+++ *    http://www.rsalabs.com/pkcs/pkcs-11/index.html
++  */
++-
++ #ifndef _PKCS11_H_
++ #define _PKCS11_H_ 1
++ 
++@@ -13,20 +18,21 @@ extern "C" {
++ #endif
++ 
++ /* Before including this file (pkcs11.h) (or pkcs11t.h by
++- * itself), 5 platform-specific macros must be defined.  These
+++ * itself), 6 platform-specific macros must be defined.  These
++  * macros are described below, and typical definitions for them
++  * are also given.  Be advised that these definitions can depend
++  * on both the platform and the compiler used (and possibly also
++- * on whether a Cryptoki library is linked statically or
+++ * on whether a PKCS #11 library is linked statically or
++  * dynamically).
++  *
++- * In addition to defining these 5 macros, the packing convention
++- * for Cryptoki structures should be set.  The Cryptoki
+++ * In addition to defining these 6 macros, the packing convention
+++ * for PKCS #11 structures should be set.  The PKCS #11
++  * convention on packing is that structures should be 1-byte
++  * aligned.
++  *
++- * If you're using Windows this might be done by using the following
++- * preprocessor directive before including pkcs11.h or pkcs11t.h:
+++ * In a Win32 environment, this might be done by using the
+++ * following preprocessor directive before including pkcs11.h
+++ * or pkcs11t.h:
++  *
++  * #pragma pack(push, cryptoki, 1)
++  *
++@@ -35,8 +41,8 @@ extern "C" {
++  *
++  * #pragma pack(pop, cryptoki)
++  *
++- * In a UNIX environment, you're on your own for this.  You might
++- * not need to do (or be able to do!) anything.
+++ * In a UNIX environment, you're on your own here.  You might
+++ * not need to do anything.
++  *
++  *
++  * Now for the macros:
++@@ -47,17 +53,42 @@ extern "C" {
++  *
++  * typedef CK_BYTE CK_PTR CK_BYTE_PTR;
++  *
++- * If you're using windows, it might be defined by:
+++ * In a Win32 environment, it might be defined by
++  *
++  * #define CK_PTR *
++  *
++- * In a typical UNIX environment, it might be defined by:
+++ * In a UNIX environment, it might be defined by
++  *
++  * #define CK_PTR *
++  *
++  *
++- * 2. CK_DECLARE_FUNCTION(returnType, name): A macro which makes
++- * an importable Cryptoki library function declaration out of a
+++ * 2. CK_DEFINE_FUNCTION(returnType, name): A macro which makes
+++ * an exportable PKCS #11 library function definition out of a
+++ * return type and a function name.  It should be used in the
+++ * following fashion to define the exposed PKCS #11 functions in
+++ * a PKCS #11 library:
+++ *
+++ * CK_DEFINE_FUNCTION(CK_RV, C_Initialize)(
+++ *   CK_VOID_PTR pReserved
+++ * )
+++ * {
+++ *   ...
+++ * }
+++ *
+++ * For defining a function in a Win32 PKCS #11 .dll, it might be
+++ * defined by
+++ *
+++ * #define CK_DEFINE_FUNCTION(returnType, name) \
+++ *   returnType __declspec(dllexport) name
+++ *
+++ * In a UNIX environment, it might be defined by
+++ *
+++ * #define CK_DEFINE_FUNCTION(returnType, name) \
+++ *   returnType name
+++ *
+++ *
+++ * 3. CK_DECLARE_FUNCTION(returnType, name): A macro which makes
+++ * an importable PKCS #11 library function declaration out of a
++  * return type and a function name.  It should be used in the
++  * following fashion:
++  *
++@@ -65,49 +96,49 @@ extern "C" {
++  *   CK_VOID_PTR pReserved
++  * );
++  *
++- * If you're using Windows to declare a function in a Win32 cryptoki .dll,
++- * it might be defined by:
+++ * For declaring a function in a Win32 PKCS #11 .dll, it might
+++ * be defined by
++  *
++  * #define CK_DECLARE_FUNCTION(returnType, name) \
++  *   returnType __declspec(dllimport) name
++  *
++- * In a UNIX environment, it might be defined by:
+++ * In a UNIX environment, it might be defined by
++  *
++  * #define CK_DECLARE_FUNCTION(returnType, name) \
++  *   returnType name
++  *
++  *
++- * 3. CK_DECLARE_FUNCTION_POINTER(returnType, name): A macro
++- * which makes a Cryptoki API function pointer declaration or
+++ * 4. CK_DECLARE_FUNCTION_POINTER(returnType, name): A macro
+++ * which makes a PKCS #11 API function pointer declaration or
++  * function pointer type declaration out of a return type and a
++  * function name.  It should be used in the following fashion:
++  *
++- * // Define funcPtr to be a pointer to a Cryptoki API function
+++ * // Define funcPtr to be a pointer to a PKCS #11 API function
++  * // taking arguments args and returning CK_RV.
++  * CK_DECLARE_FUNCTION_POINTER(CK_RV, funcPtr)(args);
++  *
++  * or
++  *
++  * // Define funcPtrType to be the type of a pointer to a
++- * // Cryptoki API function taking arguments args and returning
+++ * // PKCS #11 API function taking arguments args and returning
++  * // CK_RV, and then define funcPtr to be a variable of type
++  * // funcPtrType.
++  * typedef CK_DECLARE_FUNCTION_POINTER(CK_RV, funcPtrType)(args);
++  * funcPtrType funcPtr;
++  *
++- * If you're using Windows to access
++- * functions in a Win32 Cryptoki .dll, in might be defined by:
+++ * For accessing functions in a Win32 PKCS #11 .dll, in might be
+++ * defined by
++  *
++  * #define CK_DECLARE_FUNCTION_POINTER(returnType, name) \
++  *   returnType __declspec(dllimport) (* name)
++  *
++- * In a UNIX environment, it might be defined by:
+++ * In a UNIX environment, it might be defined by
++  *
++  * #define CK_DECLARE_FUNCTION_POINTER(returnType, name) \
++  *   returnType (* name)
++  *
++  *
++- * 4. CK_CALLBACK_FUNCTION(returnType, name): A macro which makes
+++ * 5. CK_CALLBACK_FUNCTION(returnType, name): A macro which makes
++  * a function pointer type for an application callback out of
++  * a return type for the callback and a name for the callback.
++  * It should be used in the following fashion:
++@@ -121,77 +152,76 @@ extern "C" {
++  * typedef CK_CALLBACK_FUNCTION(CK_RV, myCallbackType)(args);
++  * myCallbackType myCallback;
++  *
++- * If you're using Windows, it might be defined by:
+++ * In a Win32 environment, it might be defined by
++  *
++  * #define CK_CALLBACK_FUNCTION(returnType, name) \
++  *   returnType (* name)
++  *
++- * In a UNIX environment, it might be defined by:
+++ * In a UNIX environment, it might be defined by
++  *
++  * #define CK_CALLBACK_FUNCTION(returnType, name) \
++  *   returnType (* name)
++  *
++  *
++- * 5. NULL_PTR: This macro is the value of a NULL pointer.
+++ * 6. NULL_PTR: This macro is the value of a NULL pointer.
++  *
++  * In any ANSI/ISO C environment (and in many others as well),
++- * this should best be defined by
+++ * this should be defined by
++  *
++  * #ifndef NULL_PTR
++  * #define NULL_PTR 0
++  * #endif
++  */
++ 
++-
++-/* All the various Cryptoki types and #define'd values are in the
++- * file pkcs11t.h.
++- */
+++/* All the various PKCS #11 types and #define'd values are in the
+++ * file pkcs11t.h. */
++ #include "pkcs11t.h"
++ 
++-#define __PASTE(x,y)      x##y
+++#define __PASTE(x, y) x##y
++ 
+++#ifndef CK_PKCS11_3_0
+++/* remember that we set it so we can unset it at the end */
+++#define __NSS_CK_PKCS11_3_IMPLICIT 1
+++#define CK_PKCS11_3_0 1
+++#endif
++ 
++ /* ==============================================================
++  * Define the "extern" form of all the entry points.
++  * ==============================================================
++  */
++ 
++-#define CK_NEED_ARG_LIST  1
+++#define CK_NEED_ARG_LIST 1
++ #define CK_PKCS11_FUNCTION_INFO(name) \
++-  extern CK_DECLARE_FUNCTION(CK_RV, name)
+++    CK_DECLARE_FUNCTION(CK_RV, name)
++ 
++-/* pkcs11f.h has all the information about the Cryptoki
++- * function prototypes.
++- */
+++/* pkcs11f.h has all the information about the PKCS #11
+++ * function prototypes. */
++ #include "pkcs11f.h"
++ 
++ #undef CK_NEED_ARG_LIST
++ #undef CK_PKCS11_FUNCTION_INFO
++ 
++-
++ /* ==============================================================
++  * Define the typedef form of all the entry points.  That is, for
++- * each Cryptoki function C_XXX, define a type CK_C_XXX which is
+++ * each PKCS #11 function C_XXX, define a type CK_C_XXX which is
++  * a pointer to that kind of function.
++  * ==============================================================
++  */
++ 
++-#define CK_NEED_ARG_LIST  1
+++#define CK_NEED_ARG_LIST 1
++ #define CK_PKCS11_FUNCTION_INFO(name) \
++-  typedef CK_DECLARE_FUNCTION_POINTER(CK_RV, __PASTE(CK_,name))
+++    typedef CK_DECLARE_FUNCTION_POINTER(CK_RV, __PASTE(CK_, name))
++ 
++-/* pkcs11f.h has all the information about the Cryptoki
++- * function prototypes.
++- */
+++/* pkcs11f.h has all the information about the PKCS #11
+++ * function prototypes. */
++ #include "pkcs11f.h"
++ 
++ #undef CK_NEED_ARG_LIST
++ #undef CK_PKCS11_FUNCTION_INFO
++ 
++-
++ /* ==============================================================
++- * Define structed vector of entry points.  A CK_FUNCTION_LIST
++- * contains a CK_VERSION indicating a library's Cryptoki version
+++ * Define structed vector of entry points.  A CK_FUNCTION_3_0_LIST
+++ * contains a CK_VERSION indicating a library's PKCS #11 version
++  * and then a whole slew of function pointers to the routines in
++  * the library.  This type was declared, but not defined, in
++  * pkcs11t.h.
++@@ -199,39 +229,41 @@ extern "C" {
++  */
++ 
++ #define CK_PKCS11_FUNCTION_INFO(name) \
++-  __PASTE(CK_,name) name;
+++    __PASTE(CK_, name)                \
+++    name;
++ 
++-/* Create the 3.0 Function list */
+++#include "pkcs11p.h"
++ struct CK_FUNCTION_LIST_3_0 {
++ 
++-  CK_VERSION    version;  /* Cryptoki version */
+++    CK_VERSION version; /* PKCS #11 version */
++ 
++-/* Pile all the function pointers into the CK_FUNCTION_LIST. */
++-/* pkcs11f.h has all the information about the Cryptoki
++- * function prototypes.
++- */
+++/* Pile all the function pointers into the CK_FUNCTION_LIST_3_0. */
+++/* pkcs11f.h has all the information about the PKCS #11
+++ * function prototypes. */
++ #include "pkcs11f.h"
++-
++ };
++ 
++ #define CK_PKCS11_2_0_ONLY 1
++ 
++-/* Continue to define the old CK_FUNCTION_LIST */
+++/* now define the 2.0 function list */
++ struct CK_FUNCTION_LIST {
++ 
++-  CK_VERSION    version;  /* Cryptoki version */
+++    CK_VERSION version; /* PKCS #11 version */
++ 
++ /* Pile all the function pointers into the CK_FUNCTION_LIST. */
++-/* pkcs11f.h has all the information about the Cryptoki
++- * function prototypes.
++- */
+++/* pkcs11f.h has all the information about the PKCS #11
+++ * function prototypes. */
++ #include "pkcs11f.h"
++-
++ };
+++#include "pkcs11u.h"
++ 
++ #undef CK_PKCS11_FUNCTION_INFO
++ #undef CK_PKCS11_2_0_ONLY
++ 
+++#ifdef __NSS_CK_PKCS11_3_IMPLICIT
+++#undef CK_PKCS11_3_0
+++#undef __NSS_CK_PKCS11_3_IMPLICIT
+++#endif
++ 
++ #undef __PASTE
++ 
++@@ -239,6 +271,4 @@ struct CK_FUNCTION_LIST {
++ }
++ #endif
++ 
++-#endif /* _PKCS11_H_ */
++-
++-
+++#endif
++--- a/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs11f.h
+++++ b/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs11f.h
++@@ -1,1197 +1,1044 @@
++-/* Copyright (c) OASIS Open 2016, 2019. All Rights Reserved./
++- * /Distributed under the terms of the OASIS IPR Policy,
++- * [http://www.oasis-open.org/policies-guidelines/ipr], AS-IS, WITHOUT ANY
++- * IMPLIED OR EXPRESS WARRANTY; there is no warranty of MERCHANTABILITY, FITNESS FOR A
++- * PARTICULAR PURPOSE or NONINFRINGEMENT of the rights of others.
++- */
++-
++-/* Latest version of the specification:
++- * http://docs.oasis-open.org/pkcs11/pkcs11-base/v2.40/pkcs11-base-v2.40.html
++- */
++-
++-/* This header file contains pretty much everything about all the
++- * Cryptoki function prototypes.  Because this information is
++- * used for more than just declaring function prototypes, the
++- * order of the functions appearing herein is important, and
++- * should not be altered.
++- */
+++/* This Source Code Form is subject to the terms of the Mozilla Public
+++ * License, v. 2.0. If a copy of the MPL was not distributed with this
+++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+++/*
+++ * Copyright (C) 1994-1999 RSA Security Inc. Licence to copy this document
+++ * is granted provided that it is identified as "RSA Security In.c Public-Key
+++ * Cryptography Standards (PKCS)" in all material mentioning or referencing
+++ * this document.
+++ */
+++/* This function contains pretty much everything about all the */
+++/* PKCS #11  function prototypes.  Because this information is */
+++/* used for more than just declaring function prototypes, the */
+++/* order of the functions appearing herein is important, and */
+++/* should not be altered. */
++ 
++ /* General-purpose */
++ 
++-/* C_Initialize initializes the Cryptoki library. */
+++/* C_Initialize initializes the PKCS #11 library. */
++ CK_PKCS11_FUNCTION_INFO(C_Initialize)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_VOID_PTR   pInitArgs  /* if this is not NULL_PTR, it gets
++-                            * cast to CK_C_INITIALIZE_ARGS_PTR
++-                            * and dereferenced
++-                            */
++-);
+++    CK_VOID_PTR pInitArgs /* if this is not NULL_PTR, it gets
+++                           * cast to CK_C_INITIALIZE_ARGS_PTR
+++                           * and dereferenced */
+++    );
++ #endif
++ 
++-
++ /* C_Finalize indicates that an application is done with the
++- * Cryptoki library.
++- */
+++ * PKCS #11 library. */
++ CK_PKCS11_FUNCTION_INFO(C_Finalize)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_VOID_PTR   pReserved  /* reserved.  Should be NULL_PTR */
++-);
+++    CK_VOID_PTR pReserved /* reserved.  Should be NULL_PTR */
+++    );
++ #endif
++ 
++-
++-/* C_GetInfo returns general information about Cryptoki. */
+++/* C_GetInfo returns general information about PKCS #11. */
++ CK_PKCS11_FUNCTION_INFO(C_GetInfo)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_INFO_PTR   pInfo  /* location that receives information */
++-);
+++    CK_INFO_PTR pInfo /* location that receives information */
+++    );
++ #endif
++ 
++-
++ /* C_GetFunctionList returns the function list. */
++ CK_PKCS11_FUNCTION_INFO(C_GetFunctionList)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_FUNCTION_LIST_PTR_PTR ppFunctionList  /* receives pointer to
++-                                            * function list
++-                                            */
++-);
+++    CK_FUNCTION_LIST_PTR_PTR ppFunctionList /* receives pointer to
+++                                             * function list */
+++    );
++ #endif
++ 
++-
++-
++ /* Slot and token management */
++ 
++ /* C_GetSlotList obtains a list of slots in the system. */
++ CK_PKCS11_FUNCTION_INFO(C_GetSlotList)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_BBOOL       tokenPresent,  /* only slots with tokens */
++-  CK_SLOT_ID_PTR pSlotList,     /* receives array of slot IDs */
++-  CK_ULONG_PTR   pulCount       /* receives number of slots */
++-);
+++    CK_BBOOL tokenPresent,    /* only slots with tokens? */
+++    CK_SLOT_ID_PTR pSlotList, /* receives array of slot IDs */
+++    CK_ULONG_PTR pulCount     /* receives number of slots */
+++    );
++ #endif
++ 
++-
++ /* C_GetSlotInfo obtains information about a particular slot in
++- * the system.
++- */
+++ * the system. */
++ CK_PKCS11_FUNCTION_INFO(C_GetSlotInfo)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SLOT_ID       slotID,  /* the ID of the slot */
++-  CK_SLOT_INFO_PTR pInfo    /* receives the slot information */
++-);
+++    CK_SLOT_ID slotID,     /* the ID of the slot */
+++    CK_SLOT_INFO_PTR pInfo /* receives the slot information */
+++    );
++ #endif
++ 
++-
++ /* C_GetTokenInfo obtains information about a particular token
++- * in the system.
++- */
+++ * in the system. */
++ CK_PKCS11_FUNCTION_INFO(C_GetTokenInfo)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SLOT_ID        slotID,  /* ID of the token's slot */
++-  CK_TOKEN_INFO_PTR pInfo    /* receives the token information */
++-);
+++    CK_SLOT_ID slotID,      /* ID of the token's slot */
+++    CK_TOKEN_INFO_PTR pInfo /* receives the token information */
+++    );
++ #endif
++ 
++-
++ /* C_GetMechanismList obtains a list of mechanism types
++- * supported by a token.
++- */
+++ * supported by a token. */
++ CK_PKCS11_FUNCTION_INFO(C_GetMechanismList)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SLOT_ID            slotID,          /* ID of token's slot */
++-  CK_MECHANISM_TYPE_PTR pMechanismList,  /* gets mech. array */
++-  CK_ULONG_PTR          pulCount         /* gets # of mechs. */
++-);
+++    CK_SLOT_ID slotID,                    /* ID of token's slot */
+++    CK_MECHANISM_TYPE_PTR pMechanismList, /* gets mech. array */
+++    CK_ULONG_PTR pulCount                 /* gets # of mechs. */
+++    );
++ #endif
++ 
++-
++ /* C_GetMechanismInfo obtains information about a particular
++- * mechanism possibly supported by a token.
++- */
+++ * mechanism possibly supported by a token. */
++ CK_PKCS11_FUNCTION_INFO(C_GetMechanismInfo)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SLOT_ID            slotID,  /* ID of the token's slot */
++-  CK_MECHANISM_TYPE     type,    /* type of mechanism */
++-  CK_MECHANISM_INFO_PTR pInfo    /* receives mechanism info */
++-);
+++    CK_SLOT_ID slotID,          /* ID of the token's slot */
+++    CK_MECHANISM_TYPE type,     /* type of mechanism */
+++    CK_MECHANISM_INFO_PTR pInfo /* receives mechanism info */
+++    );
++ #endif
++ 
++-
++ /* C_InitToken initializes a token. */
++ CK_PKCS11_FUNCTION_INFO(C_InitToken)
++ #ifdef CK_NEED_ARG_LIST
+++/* pLabel changed from CK_CHAR_PTR to CK_UTF8CHAR_PTR for v2.10 */
++ (
++-  CK_SLOT_ID      slotID,    /* ID of the token's slot */
++-  CK_UTF8CHAR_PTR pPin,      /* the SO's initial PIN */
++-  CK_ULONG        ulPinLen,  /* length in bytes of the PIN */
++-  CK_UTF8CHAR_PTR pLabel     /* 32-byte token label (blank padded) */
++-);
+++    CK_SLOT_ID slotID,     /* ID of the token's slot */
+++    CK_UTF8CHAR_PTR pPin,  /* the SO's initial PIN */
+++    CK_ULONG ulPinLen,     /* length in bytes of the PIN */
+++    CK_UTF8CHAR_PTR pLabel /* 32-byte token label (blank padded) */
+++    );
++ #endif
++ 
++-
++ /* C_InitPIN initializes the normal user's PIN. */
++ CK_PKCS11_FUNCTION_INFO(C_InitPIN)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,  /* the session's handle */
++-  CK_UTF8CHAR_PTR   pPin,      /* the normal user's PIN */
++-  CK_ULONG          ulPinLen   /* length in bytes of the PIN */
++-);
+++    CK_SESSION_HANDLE hSession, /* the session's handle */
+++    CK_UTF8CHAR_PTR pPin,       /* the normal user's PIN */
+++    CK_ULONG ulPinLen           /* length in bytes of the PIN */
+++    );
++ #endif
++ 
++-
++ /* C_SetPIN modifies the PIN of the user who is logged in. */
++ CK_PKCS11_FUNCTION_INFO(C_SetPIN)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,  /* the session's handle */
++-  CK_UTF8CHAR_PTR   pOldPin,   /* the old PIN */
++-  CK_ULONG          ulOldLen,  /* length of the old PIN */
++-  CK_UTF8CHAR_PTR   pNewPin,   /* the new PIN */
++-  CK_ULONG          ulNewLen   /* length of the new PIN */
++-);
+++    CK_SESSION_HANDLE hSession, /* the session's handle */
+++    CK_UTF8CHAR_PTR pOldPin,    /* the old PIN */
+++    CK_ULONG ulOldLen,          /* length of the old PIN */
+++    CK_UTF8CHAR_PTR pNewPin,    /* the new PIN */
+++    CK_ULONG ulNewLen           /* length of the new PIN */
+++    );
++ #endif
++ 
++-
++-
++ /* Session management */
++ 
++ /* C_OpenSession opens a session between an application and a
++- * token.
++- */
+++ * token. */
++ CK_PKCS11_FUNCTION_INFO(C_OpenSession)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SLOT_ID            slotID,        /* the slot's ID */
++-  CK_FLAGS              flags,         /* from CK_SESSION_INFO */
++-  CK_VOID_PTR           pApplication,  /* passed to callback */
++-  CK_NOTIFY             Notify,        /* callback function */
++-  CK_SESSION_HANDLE_PTR phSession      /* gets session handle */
++-);
+++    CK_SLOT_ID slotID,              /* the slot's ID */
+++    CK_FLAGS flags,                 /* from CK_SESSION_INFO */
+++    CK_VOID_PTR pApplication,       /* passed to callback */
+++    CK_NOTIFY Notify,               /* callback function */
+++    CK_SESSION_HANDLE_PTR phSession /* gets session handle */
+++    );
++ #endif
++ 
++-
++ /* C_CloseSession closes a session between an application and a
++- * token.
++- */
+++ * token. */
++ CK_PKCS11_FUNCTION_INFO(C_CloseSession)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession  /* the session's handle */
++-);
+++    CK_SESSION_HANDLE hSession /* the session's handle */
+++    );
++ #endif
++ 
++-
++ /* C_CloseAllSessions closes all sessions with a token. */
++ CK_PKCS11_FUNCTION_INFO(C_CloseAllSessions)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SLOT_ID     slotID  /* the token's slot */
++-);
+++    CK_SLOT_ID slotID /* the token's slot */
+++    );
++ #endif
++ 
++-
++ /* C_GetSessionInfo obtains information about the session. */
++ CK_PKCS11_FUNCTION_INFO(C_GetSessionInfo)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE   hSession,  /* the session's handle */
++-  CK_SESSION_INFO_PTR pInfo      /* receives session info */
++-);
+++    CK_SESSION_HANDLE hSession, /* the session's handle */
+++    CK_SESSION_INFO_PTR pInfo   /* receives session info */
+++    );
++ #endif
++ 
++-
++ /* C_GetOperationState obtains the state of the cryptographic operation
++- * in a session.
++- */
+++ * in a session. */
++ CK_PKCS11_FUNCTION_INFO(C_GetOperationState)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,             /* session's handle */
++-  CK_BYTE_PTR       pOperationState,      /* gets state */
++-  CK_ULONG_PTR      pulOperationStateLen  /* gets state length */
++-);
+++    CK_SESSION_HANDLE hSession,       /* session's handle */
+++    CK_BYTE_PTR pOperationState,      /* gets state */
+++    CK_ULONG_PTR pulOperationStateLen /* gets state length */
+++    );
++ #endif
++ 
++-
++ /* C_SetOperationState restores the state of the cryptographic
++- * operation in a session.
++- */
+++ * operation in a session. */
++ CK_PKCS11_FUNCTION_INFO(C_SetOperationState)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,            /* session's handle */
++-  CK_BYTE_PTR      pOperationState,      /* holds state */
++-  CK_ULONG         ulOperationStateLen,  /* holds state length */
++-  CK_OBJECT_HANDLE hEncryptionKey,       /* en/decryption key */
++-  CK_OBJECT_HANDLE hAuthenticationKey    /* sign/verify key */
++-);
+++    CK_SESSION_HANDLE hSession,         /* session's handle */
+++    CK_BYTE_PTR pOperationState,        /* holds state */
+++    CK_ULONG ulOperationStateLen,       /* holds state length */
+++    CK_OBJECT_HANDLE hEncryptionKey,    /* en/decryption key */
+++    CK_OBJECT_HANDLE hAuthenticationKey /* sign/verify key */
+++    );
++ #endif
++ 
++-
++ /* C_Login logs a user into a token. */
++ CK_PKCS11_FUNCTION_INFO(C_Login)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,  /* the session's handle */
++-  CK_USER_TYPE      userType,  /* the user type */
++-  CK_UTF8CHAR_PTR   pPin,      /* the user's PIN */
++-  CK_ULONG          ulPinLen   /* the length of the PIN */
++-);
+++    CK_SESSION_HANDLE hSession, /* the session's handle */
+++    CK_USER_TYPE userType,      /* the user type */
+++    CK_UTF8CHAR_PTR pPin,       /* the user's PIN */
+++    CK_ULONG ulPinLen           /* the length of the PIN */
+++    );
++ #endif
++ 
++-
++ /* C_Logout logs a user out from a token. */
++ CK_PKCS11_FUNCTION_INFO(C_Logout)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession  /* the session's handle */
++-);
+++    CK_SESSION_HANDLE hSession /* the session's handle */
+++    );
++ #endif
++ 
++-
++-
++ /* Object management */
++ 
++ /* C_CreateObject creates a new object. */
++ CK_PKCS11_FUNCTION_INFO(C_CreateObject)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,    /* the session's handle */
++-  CK_ATTRIBUTE_PTR  pTemplate,   /* the object's template */
++-  CK_ULONG          ulCount,     /* attributes in template */
++-  CK_OBJECT_HANDLE_PTR phObject  /* gets new object's handle. */
++-);
+++    CK_SESSION_HANDLE hSession,   /* the session's handle */
+++    CK_ATTRIBUTE_PTR pTemplate,   /* the object's template */
+++    CK_ULONG ulCount,             /* attributes in template */
+++    CK_OBJECT_HANDLE_PTR phObject /* gets new object's handle. */
+++    );
++ #endif
++ 
++-
++ /* C_CopyObject copies an object, creating a new object for the
++- * copy.
++- */
+++ * copy. */
++ CK_PKCS11_FUNCTION_INFO(C_CopyObject)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE    hSession,    /* the session's handle */
++-  CK_OBJECT_HANDLE     hObject,     /* the object's handle */
++-  CK_ATTRIBUTE_PTR     pTemplate,   /* template for new object */
++-  CK_ULONG             ulCount,     /* attributes in template */
++-  CK_OBJECT_HANDLE_PTR phNewObject  /* receives handle of copy */
++-);
+++    CK_SESSION_HANDLE hSession,      /* the session's handle */
+++    CK_OBJECT_HANDLE hObject,        /* the object's handle */
+++    CK_ATTRIBUTE_PTR pTemplate,      /* template for new object */
+++    CK_ULONG ulCount,                /* attributes in template */
+++    CK_OBJECT_HANDLE_PTR phNewObject /* receives handle of copy */
+++    );
++ #endif
++ 
++-
++ /* C_DestroyObject destroys an object. */
++ CK_PKCS11_FUNCTION_INFO(C_DestroyObject)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,  /* the session's handle */
++-  CK_OBJECT_HANDLE  hObject    /* the object's handle */
++-);
+++    CK_SESSION_HANDLE hSession, /* the session's handle */
+++    CK_OBJECT_HANDLE hObject    /* the object's handle */
+++    );
++ #endif
++ 
++-
++ /* C_GetObjectSize gets the size of an object in bytes. */
++ CK_PKCS11_FUNCTION_INFO(C_GetObjectSize)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,  /* the session's handle */
++-  CK_OBJECT_HANDLE  hObject,   /* the object's handle */
++-  CK_ULONG_PTR      pulSize    /* receives size of object */
++-);
+++    CK_SESSION_HANDLE hSession, /* the session's handle */
+++    CK_OBJECT_HANDLE hObject,   /* the object's handle */
+++    CK_ULONG_PTR pulSize        /* receives size of object */
+++    );
++ #endif
++ 
++-
++ /* C_GetAttributeValue obtains the value of one or more object
++- * attributes.
++- */
+++ * attributes. */
++ CK_PKCS11_FUNCTION_INFO(C_GetAttributeValue)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,   /* the session's handle */
++-  CK_OBJECT_HANDLE  hObject,    /* the object's handle */
++-  CK_ATTRIBUTE_PTR  pTemplate,  /* specifies attrs; gets vals */
++-  CK_ULONG          ulCount     /* attributes in template */
++-);
+++    CK_SESSION_HANDLE hSession, /* the session's handle */
+++    CK_OBJECT_HANDLE hObject,   /* the object's handle */
+++    CK_ATTRIBUTE_PTR pTemplate, /* specifies attrs; gets vals */
+++    CK_ULONG ulCount            /* attributes in template */
+++    );
++ #endif
++ 
++-
++ /* C_SetAttributeValue modifies the value of one or more object
++- * attributes.
++- */
+++ * attributes */
++ CK_PKCS11_FUNCTION_INFO(C_SetAttributeValue)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,   /* the session's handle */
++-  CK_OBJECT_HANDLE  hObject,    /* the object's handle */
++-  CK_ATTRIBUTE_PTR  pTemplate,  /* specifies attrs and values */
++-  CK_ULONG          ulCount     /* attributes in template */
++-);
+++    CK_SESSION_HANDLE hSession, /* the session's handle */
+++    CK_OBJECT_HANDLE hObject,   /* the object's handle */
+++    CK_ATTRIBUTE_PTR pTemplate, /* specifies attrs and values */
+++    CK_ULONG ulCount            /* attributes in template */
+++    );
++ #endif
++ 
++-
++ /* C_FindObjectsInit initializes a search for token and session
++- * objects that match a template.
++- */
+++ * objects that match a template. */
++ CK_PKCS11_FUNCTION_INFO(C_FindObjectsInit)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,   /* the session's handle */
++-  CK_ATTRIBUTE_PTR  pTemplate,  /* attribute values to match */
++-  CK_ULONG          ulCount     /* attrs in search template */
++-);
+++    CK_SESSION_HANDLE hSession, /* the session's handle */
+++    CK_ATTRIBUTE_PTR pTemplate, /* attribute values to match */
+++    CK_ULONG ulCount            /* attrs in search template */
+++    );
++ #endif
++ 
++-
++ /* C_FindObjects continues a search for token and session
++  * objects that match a template, obtaining additional object
++- * handles.
++- */
+++ * handles. */
++ CK_PKCS11_FUNCTION_INFO(C_FindObjects)
++ #ifdef CK_NEED_ARG_LIST
++ (
++- CK_SESSION_HANDLE    hSession,          /* session's handle */
++- CK_OBJECT_HANDLE_PTR phObject,          /* gets obj. handles */
++- CK_ULONG             ulMaxObjectCount,  /* max handles to get */
++- CK_ULONG_PTR         pulObjectCount     /* actual # returned */
++-);
+++    CK_SESSION_HANDLE hSession,    /* session's handle */
+++    CK_OBJECT_HANDLE_PTR phObject, /* gets obj. handles */
+++    CK_ULONG ulMaxObjectCount,     /* max handles to get */
+++    CK_ULONG_PTR pulObjectCount    /* actual # returned */
+++    );
++ #endif
++ 
++-
++ /* C_FindObjectsFinal finishes a search for token and session
++- * objects.
++- */
+++ * objects. */
++ CK_PKCS11_FUNCTION_INFO(C_FindObjectsFinal)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession  /* the session's handle */
++-);
+++    CK_SESSION_HANDLE hSession /* the session's handle */
+++    );
++ #endif
++ 
++-
++-
++ /* Encryption and decryption */
++ 
++ /* C_EncryptInit initializes an encryption operation. */
++ CK_PKCS11_FUNCTION_INFO(C_EncryptInit)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,    /* the session's handle */
++-  CK_MECHANISM_PTR  pMechanism,  /* the encryption mechanism */
++-  CK_OBJECT_HANDLE  hKey         /* handle of encryption key */
++-);
+++    CK_SESSION_HANDLE hSession,  /* the session's handle */
+++    CK_MECHANISM_PTR pMechanism, /* the encryption mechanism */
+++    CK_OBJECT_HANDLE hKey        /* handle of encryption key */
+++    );
++ #endif
++ 
++-
++ /* C_Encrypt encrypts single-part data. */
++ CK_PKCS11_FUNCTION_INFO(C_Encrypt)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,            /* session's handle */
++-  CK_BYTE_PTR       pData,               /* the plaintext data */
++-  CK_ULONG          ulDataLen,           /* bytes of plaintext */
++-  CK_BYTE_PTR       pEncryptedData,      /* gets ciphertext */
++-  CK_ULONG_PTR      pulEncryptedDataLen  /* gets c-text size */
++-);
+++    CK_SESSION_HANDLE hSession,      /* session's handle */
+++    CK_BYTE_PTR pData,               /* the plaintext data */
+++    CK_ULONG ulDataLen,              /* bytes of plaintext */
+++    CK_BYTE_PTR pEncryptedData,      /* gets ciphertext */
+++    CK_ULONG_PTR pulEncryptedDataLen /* gets c-text size */
+++    );
++ #endif
++ 
++-
++ /* C_EncryptUpdate continues a multiple-part encryption
++- * operation.
++- */
+++ * operation. */
++ CK_PKCS11_FUNCTION_INFO(C_EncryptUpdate)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,           /* session's handle */
++-  CK_BYTE_PTR       pPart,              /* the plaintext data */
++-  CK_ULONG          ulPartLen,          /* plaintext data len */
++-  CK_BYTE_PTR       pEncryptedPart,     /* gets ciphertext */
++-  CK_ULONG_PTR      pulEncryptedPartLen /* gets c-text size */
++-);
+++    CK_SESSION_HANDLE hSession,      /* session's handle */
+++    CK_BYTE_PTR pPart,               /* the plaintext data */
+++    CK_ULONG ulPartLen,              /* plaintext data len */
+++    CK_BYTE_PTR pEncryptedPart,      /* gets ciphertext */
+++    CK_ULONG_PTR pulEncryptedPartLen /* gets c-text size */
+++    );
++ #endif
++ 
++-
++ /* C_EncryptFinal finishes a multiple-part encryption
++- * operation.
++- */
+++ * operation. */
++ CK_PKCS11_FUNCTION_INFO(C_EncryptFinal)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,                /* session handle */
++-  CK_BYTE_PTR       pLastEncryptedPart,      /* last c-text */
++-  CK_ULONG_PTR      pulLastEncryptedPartLen  /* gets last size */
++-);
+++    CK_SESSION_HANDLE hSession,          /* session handle */
+++    CK_BYTE_PTR pLastEncryptedPart,      /* last c-text */
+++    CK_ULONG_PTR pulLastEncryptedPartLen /* gets last size */
+++    );
++ #endif
++ 
++-
++ /* C_DecryptInit initializes a decryption operation. */
++ CK_PKCS11_FUNCTION_INFO(C_DecryptInit)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,    /* the session's handle */
++-  CK_MECHANISM_PTR  pMechanism,  /* the decryption mechanism */
++-  CK_OBJECT_HANDLE  hKey         /* handle of decryption key */
++-);
+++    CK_SESSION_HANDLE hSession,  /* the session's handle */
+++    CK_MECHANISM_PTR pMechanism, /* the decryption mechanism */
+++    CK_OBJECT_HANDLE hKey        /* handle of decryption key */
+++    );
++ #endif
++ 
++-
++ /* C_Decrypt decrypts encrypted data in a single part. */
++ CK_PKCS11_FUNCTION_INFO(C_Decrypt)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,           /* session's handle */
++-  CK_BYTE_PTR       pEncryptedData,     /* ciphertext */
++-  CK_ULONG          ulEncryptedDataLen, /* ciphertext length */
++-  CK_BYTE_PTR       pData,              /* gets plaintext */
++-  CK_ULONG_PTR      pulDataLen          /* gets p-text size */
++-);
+++    CK_SESSION_HANDLE hSession,  /* session's handle */
+++    CK_BYTE_PTR pEncryptedData,  /* ciphertext */
+++    CK_ULONG ulEncryptedDataLen, /* ciphertext length */
+++    CK_BYTE_PTR pData,           /* gets plaintext */
+++    CK_ULONG_PTR pulDataLen      /* gets p-text size */
+++    );
++ #endif
++ 
++-
++ /* C_DecryptUpdate continues a multiple-part decryption
++- * operation.
++- */
+++ * operation. */
++ CK_PKCS11_FUNCTION_INFO(C_DecryptUpdate)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,            /* session's handle */
++-  CK_BYTE_PTR       pEncryptedPart,      /* encrypted data */
++-  CK_ULONG          ulEncryptedPartLen,  /* input length */
++-  CK_BYTE_PTR       pPart,               /* gets plaintext */
++-  CK_ULONG_PTR      pulPartLen           /* p-text size */
++-);
+++    CK_SESSION_HANDLE hSession,  /* session's handle */
+++    CK_BYTE_PTR pEncryptedPart,  /* encrypted data */
+++    CK_ULONG ulEncryptedPartLen, /* input length */
+++    CK_BYTE_PTR pPart,           /* gets plaintext */
+++    CK_ULONG_PTR pulPartLen      /* p-text size */
+++    );
++ #endif
++ 
++-
++ /* C_DecryptFinal finishes a multiple-part decryption
++- * operation.
++- */
+++ * operation. */
++ CK_PKCS11_FUNCTION_INFO(C_DecryptFinal)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,       /* the session's handle */
++-  CK_BYTE_PTR       pLastPart,      /* gets plaintext */
++-  CK_ULONG_PTR      pulLastPartLen  /* p-text size */
++-);
+++    CK_SESSION_HANDLE hSession, /* the session's handle */
+++    CK_BYTE_PTR pLastPart,      /* gets plaintext */
+++    CK_ULONG_PTR pulLastPartLen /* p-text size */
+++    );
++ #endif
++ 
++-
++-
++ /* Message digesting */
++ 
++ /* C_DigestInit initializes a message-digesting operation. */
++ CK_PKCS11_FUNCTION_INFO(C_DigestInit)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,   /* the session's handle */
++-  CK_MECHANISM_PTR  pMechanism  /* the digesting mechanism */
++-);
+++    CK_SESSION_HANDLE hSession, /* the session's handle */
+++    CK_MECHANISM_PTR pMechanism /* the digesting mechanism */
+++    );
++ #endif
++ 
++-
++ /* C_Digest digests data in a single part. */
++ CK_PKCS11_FUNCTION_INFO(C_Digest)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,     /* the session's handle */
++-  CK_BYTE_PTR       pData,        /* data to be digested */
++-  CK_ULONG          ulDataLen,    /* bytes of data to digest */
++-  CK_BYTE_PTR       pDigest,      /* gets the message digest */
++-  CK_ULONG_PTR      pulDigestLen  /* gets digest length */
++-);
+++    CK_SESSION_HANDLE hSession, /* the session's handle */
+++    CK_BYTE_PTR pData,          /* data to be digested */
+++    CK_ULONG ulDataLen,         /* bytes of data to digest */
+++    CK_BYTE_PTR pDigest,        /* gets the message digest */
+++    CK_ULONG_PTR pulDigestLen   /* gets digest length */
+++    );
++ #endif
++ 
++-
++ /* C_DigestUpdate continues a multiple-part message-digesting
++- * operation.
++- */
+++ * operation. */
++ CK_PKCS11_FUNCTION_INFO(C_DigestUpdate)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,  /* the session's handle */
++-  CK_BYTE_PTR       pPart,     /* data to be digested */
++-  CK_ULONG          ulPartLen  /* bytes of data to be digested */
++-);
+++    CK_SESSION_HANDLE hSession, /* the session's handle */
+++    CK_BYTE_PTR pPart,          /* data to be digested */
+++    CK_ULONG ulPartLen          /* bytes of data to be digested */
+++    );
++ #endif
++ 
++-
++ /* C_DigestKey continues a multi-part message-digesting
++  * operation, by digesting the value of a secret key as part of
++- * the data already digested.
++- */
+++ * the data already digested. */
++ CK_PKCS11_FUNCTION_INFO(C_DigestKey)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,  /* the session's handle */
++-  CK_OBJECT_HANDLE  hKey       /* secret key to digest */
++-);
+++    CK_SESSION_HANDLE hSession, /* the session's handle */
+++    CK_OBJECT_HANDLE hKey       /* secret key to digest */
+++    );
++ #endif
++ 
++-
++ /* C_DigestFinal finishes a multiple-part message-digesting
++- * operation.
++- */
+++ * operation. */
++ CK_PKCS11_FUNCTION_INFO(C_DigestFinal)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,     /* the session's handle */
++-  CK_BYTE_PTR       pDigest,      /* gets the message digest */
++-  CK_ULONG_PTR      pulDigestLen  /* gets byte count of digest */
++-);
+++    CK_SESSION_HANDLE hSession, /* the session's handle */
+++    CK_BYTE_PTR pDigest,        /* gets the message digest */
+++    CK_ULONG_PTR pulDigestLen   /* gets byte count of digest */
+++    );
++ #endif
++ 
++-
++-
++ /* Signing and MACing */
++ 
++ /* C_SignInit initializes a signature (private key encryption)
++  * operation, where the signature is (will be) an appendix to
++  * the data, and plaintext cannot be recovered from the
++- * signature.
++- */
+++ *signature. */
++ CK_PKCS11_FUNCTION_INFO(C_SignInit)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,    /* the session's handle */
++-  CK_MECHANISM_PTR  pMechanism,  /* the signature mechanism */
++-  CK_OBJECT_HANDLE  hKey         /* handle of signature key */
++-);
+++    CK_SESSION_HANDLE hSession,  /* the session's handle */
+++    CK_MECHANISM_PTR pMechanism, /* the signature mechanism */
+++    CK_OBJECT_HANDLE hKey        /* handle of signature key */
+++    );
++ #endif
++ 
++-
++ /* C_Sign signs (encrypts with private key) data in a single
++  * part, where the signature is (will be) an appendix to the
++- * data, and plaintext cannot be recovered from the signature.
++- */
+++ * data, and plaintext cannot be recovered from the signature. */
++ CK_PKCS11_FUNCTION_INFO(C_Sign)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,        /* the session's handle */
++-  CK_BYTE_PTR       pData,           /* the data to sign */
++-  CK_ULONG          ulDataLen,       /* count of bytes to sign */
++-  CK_BYTE_PTR       pSignature,      /* gets the signature */
++-  CK_ULONG_PTR      pulSignatureLen  /* gets signature length */
++-);
+++    CK_SESSION_HANDLE hSession,  /* the session's handle */
+++    CK_BYTE_PTR pData,           /* the data to sign */
+++    CK_ULONG ulDataLen,          /* count of bytes to sign */
+++    CK_BYTE_PTR pSignature,      /* gets the signature */
+++    CK_ULONG_PTR pulSignatureLen /* gets signature length */
+++    );
++ #endif
++ 
++-
++ /* C_SignUpdate continues a multiple-part signature operation,
++  * where the signature is (will be) an appendix to the data,
++- * and plaintext cannot be recovered from the signature.
++- */
+++ * and plaintext cannot be recovered from the signature. */
++ CK_PKCS11_FUNCTION_INFO(C_SignUpdate)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,  /* the session's handle */
++-  CK_BYTE_PTR       pPart,     /* the data to sign */
++-  CK_ULONG          ulPartLen  /* count of bytes to sign */
++-);
+++    CK_SESSION_HANDLE hSession, /* the session's handle */
+++    CK_BYTE_PTR pPart,          /* the data to sign */
+++    CK_ULONG ulPartLen          /* count of bytes to sign */
+++    );
++ #endif
++ 
++-
++ /* C_SignFinal finishes a multiple-part signature operation,
++- * returning the signature.
++- */
+++ * returning the signature. */
++ CK_PKCS11_FUNCTION_INFO(C_SignFinal)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,        /* the session's handle */
++-  CK_BYTE_PTR       pSignature,      /* gets the signature */
++-  CK_ULONG_PTR      pulSignatureLen  /* gets signature length */
++-);
+++    CK_SESSION_HANDLE hSession,  /* the session's handle */
+++    CK_BYTE_PTR pSignature,      /* gets the signature */
+++    CK_ULONG_PTR pulSignatureLen /* gets signature length */
+++    );
++ #endif
++ 
++-
++ /* C_SignRecoverInit initializes a signature operation, where
++- * the data can be recovered from the signature.
++- */
+++ * the data can be recovered from the signature. */
++ CK_PKCS11_FUNCTION_INFO(C_SignRecoverInit)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,   /* the session's handle */
++-  CK_MECHANISM_PTR  pMechanism, /* the signature mechanism */
++-  CK_OBJECT_HANDLE  hKey        /* handle of the signature key */
++-);
+++    CK_SESSION_HANDLE hSession,  /* the session's handle */
+++    CK_MECHANISM_PTR pMechanism, /* the signature mechanism */
+++    CK_OBJECT_HANDLE hKey        /* handle of the signature key */
+++    );
++ #endif
++ 
++-
++ /* C_SignRecover signs data in a single operation, where the
++- * data can be recovered from the signature.
++- */
+++ * data can be recovered from the signature. */
++ CK_PKCS11_FUNCTION_INFO(C_SignRecover)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,        /* the session's handle */
++-  CK_BYTE_PTR       pData,           /* the data to sign */
++-  CK_ULONG          ulDataLen,       /* count of bytes to sign */
++-  CK_BYTE_PTR       pSignature,      /* gets the signature */
++-  CK_ULONG_PTR      pulSignatureLen  /* gets signature length */
++-);
+++    CK_SESSION_HANDLE hSession,  /* the session's handle */
+++    CK_BYTE_PTR pData,           /* the data to sign */
+++    CK_ULONG ulDataLen,          /* count of bytes to sign */
+++    CK_BYTE_PTR pSignature,      /* gets the signature */
+++    CK_ULONG_PTR pulSignatureLen /* gets signature length */
+++    );
++ #endif
++ 
++-
++-
++ /* Verifying signatures and MACs */
++ 
++ /* C_VerifyInit initializes a verification operation, where the
++  * signature is an appendix to the data, and plaintext cannot
++- * cannot be recovered from the signature (e.g. DSA).
++- */
+++ *  cannot be recovered from the signature (e.g. DSA). */
++ CK_PKCS11_FUNCTION_INFO(C_VerifyInit)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,    /* the session's handle */
++-  CK_MECHANISM_PTR  pMechanism,  /* the verification mechanism */
++-  CK_OBJECT_HANDLE  hKey         /* verification key */
++-);
+++    CK_SESSION_HANDLE hSession,  /* the session's handle */
+++    CK_MECHANISM_PTR pMechanism, /* the verification mechanism */
+++    CK_OBJECT_HANDLE hKey        /* verification key */
+++    );
++ #endif
++ 
++-
++ /* C_Verify verifies a signature in a single-part operation,
++  * where the signature is an appendix to the data, and plaintext
++- * cannot be recovered from the signature.
++- */
+++ * cannot be recovered from the signature. */
++ CK_PKCS11_FUNCTION_INFO(C_Verify)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,       /* the session's handle */
++-  CK_BYTE_PTR       pData,          /* signed data */
++-  CK_ULONG          ulDataLen,      /* length of signed data */
++-  CK_BYTE_PTR       pSignature,     /* signature */
++-  CK_ULONG          ulSignatureLen  /* signature length*/
++-);
+++    CK_SESSION_HANDLE hSession, /* the session's handle */
+++    CK_BYTE_PTR pData,          /* signed data */
+++    CK_ULONG ulDataLen,         /* length of signed data */
+++    CK_BYTE_PTR pSignature,     /* signature */
+++    CK_ULONG ulSignatureLen     /* signature length*/
+++    );
++ #endif
++ 
++-
++ /* C_VerifyUpdate continues a multiple-part verification
++  * operation, where the signature is an appendix to the data,
++- * and plaintext cannot be recovered from the signature.
++- */
+++ * and plaintext cannot be recovered from the signature. */
++ CK_PKCS11_FUNCTION_INFO(C_VerifyUpdate)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,  /* the session's handle */
++-  CK_BYTE_PTR       pPart,     /* signed data */
++-  CK_ULONG          ulPartLen  /* length of signed data */
++-);
+++    CK_SESSION_HANDLE hSession, /* the session's handle */
+++    CK_BYTE_PTR pPart,          /* signed data */
+++    CK_ULONG ulPartLen          /* length of signed data */
+++    );
++ #endif
++ 
++-
++ /* C_VerifyFinal finishes a multiple-part verification
++- * operation, checking the signature.
++- */
+++ * operation, checking the signature. */
++ CK_PKCS11_FUNCTION_INFO(C_VerifyFinal)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,       /* the session's handle */
++-  CK_BYTE_PTR       pSignature,     /* signature to verify */
++-  CK_ULONG          ulSignatureLen  /* signature length */
++-);
+++    CK_SESSION_HANDLE hSession, /* the session's handle */
+++    CK_BYTE_PTR pSignature,     /* signature to verify */
+++    CK_ULONG ulSignatureLen     /* signature length */
+++    );
++ #endif
++ 
++-
++ /* C_VerifyRecoverInit initializes a signature verification
++- * operation, where the data is recovered from the signature.
++- */
+++ * operation, where the data is recovered from the signature. */
++ CK_PKCS11_FUNCTION_INFO(C_VerifyRecoverInit)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,    /* the session's handle */
++-  CK_MECHANISM_PTR  pMechanism,  /* the verification mechanism */
++-  CK_OBJECT_HANDLE  hKey         /* verification key */
++-);
+++    CK_SESSION_HANDLE hSession,  /* the session's handle */
+++    CK_MECHANISM_PTR pMechanism, /* the verification mechanism */
+++    CK_OBJECT_HANDLE hKey        /* verification key */
+++    );
++ #endif
++ 
++-
++ /* C_VerifyRecover verifies a signature in a single-part
++- * operation, where the data is recovered from the signature.
++- */
+++ * operation, where the data is recovered from the signature. */
++ CK_PKCS11_FUNCTION_INFO(C_VerifyRecover)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,        /* the session's handle */
++-  CK_BYTE_PTR       pSignature,      /* signature to verify */
++-  CK_ULONG          ulSignatureLen,  /* signature length */
++-  CK_BYTE_PTR       pData,           /* gets signed data */
++-  CK_ULONG_PTR      pulDataLen       /* gets signed data len */
++-);
+++    CK_SESSION_HANDLE hSession, /* the session's handle */
+++    CK_BYTE_PTR pSignature,     /* signature to verify */
+++    CK_ULONG ulSignatureLen,    /* signature length */
+++    CK_BYTE_PTR pData,          /* gets signed data */
+++    CK_ULONG_PTR pulDataLen     /* gets signed data len */
+++    );
++ #endif
++ 
++-
++-
++ /* Dual-function cryptographic operations */
++ 
++ /* C_DigestEncryptUpdate continues a multiple-part digesting
++- * and encryption operation.
++- */
+++ * and encryption operation. */
++ CK_PKCS11_FUNCTION_INFO(C_DigestEncryptUpdate)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,            /* session's handle */
++-  CK_BYTE_PTR       pPart,               /* the plaintext data */
++-  CK_ULONG          ulPartLen,           /* plaintext length */
++-  CK_BYTE_PTR       pEncryptedPart,      /* gets ciphertext */
++-  CK_ULONG_PTR      pulEncryptedPartLen  /* gets c-text length */
++-);
+++    CK_SESSION_HANDLE hSession,      /* session's handle */
+++    CK_BYTE_PTR pPart,               /* the plaintext data */
+++    CK_ULONG ulPartLen,              /* plaintext length */
+++    CK_BYTE_PTR pEncryptedPart,      /* gets ciphertext */
+++    CK_ULONG_PTR pulEncryptedPartLen /* gets c-text length */
+++    );
++ #endif
++ 
++-
++ /* C_DecryptDigestUpdate continues a multiple-part decryption and
++- * digesting operation.
++- */
+++ * digesting operation. */
++ CK_PKCS11_FUNCTION_INFO(C_DecryptDigestUpdate)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,            /* session's handle */
++-  CK_BYTE_PTR       pEncryptedPart,      /* ciphertext */
++-  CK_ULONG          ulEncryptedPartLen,  /* ciphertext length */
++-  CK_BYTE_PTR       pPart,               /* gets plaintext */
++-  CK_ULONG_PTR      pulPartLen           /* gets plaintext len */
++-);
+++    CK_SESSION_HANDLE hSession,  /* session's handle */
+++    CK_BYTE_PTR pEncryptedPart,  /* ciphertext */
+++    CK_ULONG ulEncryptedPartLen, /* ciphertext length */
+++    CK_BYTE_PTR pPart,           /* gets plaintext */
+++    CK_ULONG_PTR pulPartLen      /* gets plaintext len */
+++    );
++ #endif
++ 
++-
++ /* C_SignEncryptUpdate continues a multiple-part signing and
++- * encryption operation.
++- */
+++ * encryption operation. */
++ CK_PKCS11_FUNCTION_INFO(C_SignEncryptUpdate)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,            /* session's handle */
++-  CK_BYTE_PTR       pPart,               /* the plaintext data */
++-  CK_ULONG          ulPartLen,           /* plaintext length */
++-  CK_BYTE_PTR       pEncryptedPart,      /* gets ciphertext */
++-  CK_ULONG_PTR      pulEncryptedPartLen  /* gets c-text length */
++-);
+++    CK_SESSION_HANDLE hSession,      /* session's handle */
+++    CK_BYTE_PTR pPart,               /* the plaintext data */
+++    CK_ULONG ulPartLen,              /* plaintext length */
+++    CK_BYTE_PTR pEncryptedPart,      /* gets ciphertext */
+++    CK_ULONG_PTR pulEncryptedPartLen /* gets c-text length */
+++    );
++ #endif
++ 
++-
++ /* C_DecryptVerifyUpdate continues a multiple-part decryption and
++- * verify operation.
++- */
+++ * verify operation. */
++ CK_PKCS11_FUNCTION_INFO(C_DecryptVerifyUpdate)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,            /* session's handle */
++-  CK_BYTE_PTR       pEncryptedPart,      /* ciphertext */
++-  CK_ULONG          ulEncryptedPartLen,  /* ciphertext length */
++-  CK_BYTE_PTR       pPart,               /* gets plaintext */
++-  CK_ULONG_PTR      pulPartLen           /* gets p-text length */
++-);
+++    CK_SESSION_HANDLE hSession,  /* session's handle */
+++    CK_BYTE_PTR pEncryptedPart,  /* ciphertext */
+++    CK_ULONG ulEncryptedPartLen, /* ciphertext length */
+++    CK_BYTE_PTR pPart,           /* gets plaintext */
+++    CK_ULONG_PTR pulPartLen      /* gets p-text length */
+++    );
++ #endif
++ 
++-
++-
++ /* Key management */
++ 
++ /* C_GenerateKey generates a secret key, creating a new key
++- * object.
++- */
+++ * object. */
++ CK_PKCS11_FUNCTION_INFO(C_GenerateKey)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE    hSession,    /* the session's handle */
++-  CK_MECHANISM_PTR     pMechanism,  /* key generation mech. */
++-  CK_ATTRIBUTE_PTR     pTemplate,   /* template for new key */
++-  CK_ULONG             ulCount,     /* # of attrs in template */
++-  CK_OBJECT_HANDLE_PTR phKey        /* gets handle of new key */
++-);
+++    CK_SESSION_HANDLE hSession,  /* the session's handle */
+++    CK_MECHANISM_PTR pMechanism, /* key generation mech. */
+++    CK_ATTRIBUTE_PTR pTemplate,  /* template for new key */
+++    CK_ULONG ulCount,            /* # of attrs in template */
+++    CK_OBJECT_HANDLE_PTR phKey   /* gets handle of new key */
+++    );
++ #endif
++ 
++-
++ /* C_GenerateKeyPair generates a public-key/private-key pair,
++- * creating new key objects.
++- */
+++ * creating new key objects. */
++ CK_PKCS11_FUNCTION_INFO(C_GenerateKeyPair)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE    hSession,                    /* session handle */
++-  CK_MECHANISM_PTR     pMechanism,                  /* key-gen mech. */
++-  CK_ATTRIBUTE_PTR     pPublicKeyTemplate,          /* template for pub. key */
++-  CK_ULONG             ulPublicKeyAttributeCount,   /* # pub. attrs. */
++-  CK_ATTRIBUTE_PTR     pPrivateKeyTemplate,         /* template for priv. key */
++-  CK_ULONG             ulPrivateKeyAttributeCount,  /* # priv.  attrs. */
++-  CK_OBJECT_HANDLE_PTR phPublicKey,                 /* gets pub. key handle */
++-  CK_OBJECT_HANDLE_PTR phPrivateKey                 /* gets priv. key handle */
++-);
+++    CK_SESSION_HANDLE hSession,           /* session handle */
+++    CK_MECHANISM_PTR pMechanism,          /* key-gen mech. */
+++    CK_ATTRIBUTE_PTR pPublicKeyTemplate,  /* template for pub. key */
+++    CK_ULONG ulPublicKeyAttributeCount,   /* # pub. attrs. */
+++    CK_ATTRIBUTE_PTR pPrivateKeyTemplate, /* template for priv. key */
+++    CK_ULONG ulPrivateKeyAttributeCount,  /* # priv. attrs. */
+++    CK_OBJECT_HANDLE_PTR phPublicKey,     /* gets pub. key handle */
+++    CK_OBJECT_HANDLE_PTR phPrivateKey     /* gets priv. key handle */
+++    );
++ #endif
++ 
++-
++ /* C_WrapKey wraps (i.e., encrypts) a key. */
++ CK_PKCS11_FUNCTION_INFO(C_WrapKey)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,        /* the session's handle */
++-  CK_MECHANISM_PTR  pMechanism,      /* the wrapping mechanism */
++-  CK_OBJECT_HANDLE  hWrappingKey,    /* wrapping key */
++-  CK_OBJECT_HANDLE  hKey,            /* key to be wrapped */
++-  CK_BYTE_PTR       pWrappedKey,     /* gets wrapped key */
++-  CK_ULONG_PTR      pulWrappedKeyLen /* gets wrapped key size */
++-);
+++    CK_SESSION_HANDLE hSession,    /* the session's handle */
+++    CK_MECHANISM_PTR pMechanism,   /* the wrapping mechanism */
+++    CK_OBJECT_HANDLE hWrappingKey, /* wrapping key */
+++    CK_OBJECT_HANDLE hKey,         /* key to be wrapped */
+++    CK_BYTE_PTR pWrappedKey,       /* gets wrapped key */
+++    CK_ULONG_PTR pulWrappedKeyLen  /* gets wrapped key size */
+++    );
++ #endif
++ 
++-
++ /* C_UnwrapKey unwraps (decrypts) a wrapped key, creating a new
++- * key object.
++- */
+++ * key object. */
++ CK_PKCS11_FUNCTION_INFO(C_UnwrapKey)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE    hSession,          /* session's handle */
++-  CK_MECHANISM_PTR     pMechanism,        /* unwrapping mech. */
++-  CK_OBJECT_HANDLE     hUnwrappingKey,    /* unwrapping key */
++-  CK_BYTE_PTR          pWrappedKey,       /* the wrapped key */
++-  CK_ULONG             ulWrappedKeyLen,   /* wrapped key len */
++-  CK_ATTRIBUTE_PTR     pTemplate,         /* new key template */
++-  CK_ULONG             ulAttributeCount,  /* template length */
++-  CK_OBJECT_HANDLE_PTR phKey              /* gets new handle */
++-);
+++    CK_SESSION_HANDLE hSession,      /* session's handle */
+++    CK_MECHANISM_PTR pMechanism,     /* unwrapping mech. */
+++    CK_OBJECT_HANDLE hUnwrappingKey, /* unwrapping key */
+++    CK_BYTE_PTR pWrappedKey,         /* the wrapped key */
+++    CK_ULONG ulWrappedKeyLen,        /* wrapped key len */
+++    CK_ATTRIBUTE_PTR pTemplate,      /* new key template */
+++    CK_ULONG ulAttributeCount,       /* template length */
+++    CK_OBJECT_HANDLE_PTR phKey       /* gets new handle */
+++    );
++ #endif
++ 
++-
++ /* C_DeriveKey derives a key from a base key, creating a new key
++- * object.
++- */
+++ * object. */
++ CK_PKCS11_FUNCTION_INFO(C_DeriveKey)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE    hSession,          /* session's handle */
++-  CK_MECHANISM_PTR     pMechanism,        /* key deriv. mech. */
++-  CK_OBJECT_HANDLE     hBaseKey,          /* base key */
++-  CK_ATTRIBUTE_PTR     pTemplate,         /* new key template */
++-  CK_ULONG             ulAttributeCount,  /* template length */
++-  CK_OBJECT_HANDLE_PTR phKey              /* gets new handle */
++-);
+++    CK_SESSION_HANDLE hSession,  /* session's handle */
+++    CK_MECHANISM_PTR pMechanism, /* key deriv. mech. */
+++    CK_OBJECT_HANDLE hBaseKey,   /* base key */
+++    CK_ATTRIBUTE_PTR pTemplate,  /* new key template */
+++    CK_ULONG ulAttributeCount,   /* template length */
+++    CK_OBJECT_HANDLE_PTR phKey   /* gets new handle */
+++    );
++ #endif
++ 
++-
++-
++ /* Random number generation */
++ 
++ /* C_SeedRandom mixes additional seed material into the token's
++- * random number generator.
++- */
+++ * random number generator. */
++ CK_PKCS11_FUNCTION_INFO(C_SeedRandom)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,  /* the session's handle */
++-  CK_BYTE_PTR       pSeed,     /* the seed material */
++-  CK_ULONG          ulSeedLen  /* length of seed material */
++-);
+++    CK_SESSION_HANDLE hSession, /* the session's handle */
+++    CK_BYTE_PTR pSeed,          /* the seed material */
+++    CK_ULONG ulSeedLen          /* length of seed material */
+++    );
++ #endif
++ 
++-
++ /* C_GenerateRandom generates random data. */
++ CK_PKCS11_FUNCTION_INFO(C_GenerateRandom)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,    /* the session's handle */
++-  CK_BYTE_PTR       RandomData,  /* receives the random data */
++-  CK_ULONG          ulRandomLen  /* # of bytes to generate */
++-);
+++    CK_SESSION_HANDLE hSession, /* the session's handle */
+++    CK_BYTE_PTR RandomData,     /* receives the random data */
+++    CK_ULONG ulRandomLen        /* # of bytes to generate */
+++    );
++ #endif
++ 
++-
++-
++ /* Parallel function management */
++ 
++ /* C_GetFunctionStatus is a legacy function; it obtains an
++  * updated status of a function running in parallel with an
++- * application.
++- */
+++ * application. */
++ CK_PKCS11_FUNCTION_INFO(C_GetFunctionStatus)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession  /* the session's handle */
++-);
+++    CK_SESSION_HANDLE hSession /* the session's handle */
+++    );
++ #endif
++ 
++-
++ /* C_CancelFunction is a legacy function; it cancels a function
++- * running in parallel.
++- */
+++ * running in parallel. */
++ CK_PKCS11_FUNCTION_INFO(C_CancelFunction)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession  /* the session's handle */
++-);
+++    CK_SESSION_HANDLE hSession /* the session's handle */
+++    );
++ #endif
++ 
+++/* Functions added in for PKCS #11 Version 2.01 or later */
++ 
++ /* C_WaitForSlotEvent waits for a slot event (token insertion,
++- * removal, etc.) to occur.
++- */
+++ * removal, etc.) to occur. */
++ CK_PKCS11_FUNCTION_INFO(C_WaitForSlotEvent)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_FLAGS flags,        /* blocking/nonblocking flag */
++-  CK_SLOT_ID_PTR pSlot,  /* location that receives the slot ID */
++-  CK_VOID_PTR pRserved   /* reserved.  Should be NULL_PTR */
++-);
+++    CK_FLAGS flags,       /* blocking/nonblocking flag */
+++    CK_SLOT_ID_PTR pSlot, /* location that receives the slot ID */
+++    CK_VOID_PTR pRserved  /* reserved.  Should be NULL_PTR */
+++    );
++ #endif
++ 
++-#ifndef CK_PKCS11_2_0_ONLY
++-/* C_GetInterfaceList returns all the interfaces supported by the module*/
+++#if defined(CK_PKCS11_3_0) && !defined(CK_PKCS11_2_0_ONLY)
++ CK_PKCS11_FUNCTION_INFO(C_GetInterfaceList)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_INTERFACE_PTR  pInterfacesList,  /* returned interfaces */
++-  CK_ULONG_PTR      pulCount          /* number of interfaces returned */
++-);
+++    CK_INTERFACE_PTR interfaces,
+++    CK_ULONG_PTR pulCount);
++ #endif
++ 
++-/* C_GetInterface returns a specific interface from the module. */
++ CK_PKCS11_FUNCTION_INFO(C_GetInterface)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_UTF8CHAR_PTR       pInterfaceName, /* name of the interface */
++-  CK_VERSION_PTR        pVersion,       /* version of the interface */
++-  CK_INTERFACE_PTR_PTR  ppInterface,    /* returned interface */
++-  CK_FLAGS              flags           /* flags controlling the semantics
++-                                         * of the interface */
++-);
+++    CK_UTF8CHAR_PTR pInterfaceName,
+++    CK_VERSION_PTR pVersion,
+++    CK_INTERFACE_PTR_PTR ppInterface,
+++    CK_FLAGS flags);
++ #endif
++ 
++ CK_PKCS11_FUNCTION_INFO(C_LoginUser)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,  /* the session's handle */
++-  CK_USER_TYPE      userType,  /* the user type */
++-  CK_UTF8CHAR_PTR   pPin,      /* the user's PIN */
++-  CK_ULONG          ulPinLen,  /* the length of the PIN */
++-  CK_UTF8CHAR_PTR   pUsername, /* the user's name */
++-  CK_ULONG          ulUsernameLen /*the length of the user's name */
++-);
+++    CK_SESSION_HANDLE hSession,
+++    CK_USER_TYPE userType,
+++    CK_CHAR_PTR pPin,
+++    CK_ULONG ulPinLen,
+++    CK_UTF8CHAR_PTR pUsername,
+++    CK_ULONG ulUsernameLen);
++ #endif
++ 
++ CK_PKCS11_FUNCTION_INFO(C_SessionCancel)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,  /* the session's handle */
++-  CK_FLAGS          flags      /* flags control which sessions are cancelled */
++-);
+++    CK_SESSION_HANDLE hSession,
+++    CK_FLAGS flags);
++ #endif
++ 
++ CK_PKCS11_FUNCTION_INFO(C_MessageEncryptInit)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,    /* the session's handle */
++-  CK_MECHANISM_PTR  pMechanism,  /* the encryption mechanism */
++-  CK_OBJECT_HANDLE  hKey         /* handle of encryption key */
++-);
+++    CK_SESSION_HANDLE hSession,
+++    CK_MECHANISM_PTR pMechanism,
+++    CK_OBJECT_HANDLE hKey);
++ #endif
++ 
++ CK_PKCS11_FUNCTION_INFO(C_EncryptMessage)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,   /* the session's handle */
++-  CK_VOID_PTR pParameter,       /* message specific parameter */
++-  CK_ULONG ulParameterLen,      /* length of message specific parameter */
++-  CK_BYTE_PTR pAssociatedData,  /* AEAD Associated data */
++-  CK_ULONG ulAssociatedDataLen, /* AEAD Associated data length */
++-  CK_BYTE_PTR pPlaintext,       /* plain text  */
++-  CK_ULONG ulPlaintextLen,      /* plain text length */
++-  CK_BYTE_PTR pCiphertext,      /* gets cipher text */
++-  CK_ULONG_PTR pulCiphertextLen /* gets cipher text length */
++-);
+++    CK_SESSION_HANDLE hSession,
+++    CK_VOID_PTR pParameter,
+++    CK_ULONG ulParameterLen,
+++    CK_BYTE_PTR pAssociatedData,
+++    CK_ULONG ulAssociatedDataLen,
+++    CK_BYTE_PTR pPlaintext,
+++    CK_ULONG ulPlaintextLen,
+++    CK_BYTE_PTR pCiphertext,
+++    CK_ULONG_PTR pulCiphertextLen);
++ #endif
++ 
++ CK_PKCS11_FUNCTION_INFO(C_EncryptMessageBegin)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,   /* the session's handle */
++-  CK_VOID_PTR pParameter,       /* message specific parameter */
++-  CK_ULONG ulParameterLen,      /* length of message specific parameter */
++-  CK_BYTE_PTR pAssociatedData,  /* AEAD Associated data */
++-  CK_ULONG ulAssociatedDataLen  /* AEAD Associated data length */
++-);
+++    CK_SESSION_HANDLE hSession,
+++    CK_VOID_PTR pParameter,
+++    CK_ULONG ulParameterLen,
+++    CK_BYTE_PTR pAssociatedData,
+++    CK_ULONG ulAssociatedDataLen);
++ #endif
++ 
++ CK_PKCS11_FUNCTION_INFO(C_EncryptMessageNext)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,        /* the session's handle */
++-  CK_VOID_PTR pParameter,            /* message specific parameter */
++-  CK_ULONG ulParameterLen,           /* length of message specific parameter */
++-  CK_BYTE_PTR pPlaintextPart,        /* plain text */
++-  CK_ULONG ulPlaintextPartLen,       /* plain text length */
++-  CK_BYTE_PTR pCiphertextPart,       /* gets cipher text */
++-  CK_ULONG_PTR pulCiphertextPartLen, /* gets cipher text length */
++-  CK_FLAGS flags                     /* multi mode flag */
++-);
+++    CK_SESSION_HANDLE hSession,
+++    CK_VOID_PTR pParameter,
+++    CK_ULONG ulParameterLen,
+++    CK_BYTE_PTR pPlaintextPart,
+++    CK_ULONG ulPlaintextPartLen,
+++    CK_BYTE_PTR pCiphertextPart,
+++    CK_ULONG_PTR pulCiphertextPartLen,
+++    CK_FLAGS flags);
++ #endif
++ 
++ CK_PKCS11_FUNCTION_INFO(C_MessageEncryptFinal)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession        /* the session's handle */
++-);
+++    CK_SESSION_HANDLE hSession);
++ #endif
++ 
++ CK_PKCS11_FUNCTION_INFO(C_MessageDecryptInit)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,    /* the session's handle */
++-  CK_MECHANISM_PTR  pMechanism,  /* the decryption mechanism */
++-  CK_OBJECT_HANDLE  hKey         /* handle of decryption key */
++-);
+++    CK_SESSION_HANDLE hSession,
+++    CK_MECHANISM_PTR pMechanism,
+++    CK_OBJECT_HANDLE hKey);
++ #endif
++ 
++ CK_PKCS11_FUNCTION_INFO(C_DecryptMessage)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,   /* the session's handle */
++-  CK_VOID_PTR pParameter,       /* message specific parameter */
++-  CK_ULONG ulParameterLen,      /* length of message specific parameter */
++-  CK_BYTE_PTR pAssociatedData,  /* AEAD Associated data */
++-  CK_ULONG ulAssociatedDataLen, /* AEAD Associated data length */
++-  CK_BYTE_PTR pCiphertext,      /* cipher text */
++-  CK_ULONG ulCiphertextLen,     /* cipher text length */
++-  CK_BYTE_PTR pPlaintext,       /* gets plain text */
++-  CK_ULONG_PTR pulPlaintextLen  /* gets plain text length */
++-);
+++    CK_SESSION_HANDLE hSession,
+++    CK_VOID_PTR pParameter,
+++    CK_ULONG ulParameterLen,
+++    CK_BYTE_PTR pAssociatedData,
+++    CK_ULONG ulAssociatedDataLen,
+++    CK_BYTE_PTR pCiphertext,
+++    CK_ULONG ulCiphertextLen,
+++    CK_BYTE_PTR pPlaintext,
+++    CK_ULONG_PTR pulPlaintextLen);
++ #endif
++ 
++ CK_PKCS11_FUNCTION_INFO(C_DecryptMessageBegin)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,   /* the session's handle */
++-  CK_VOID_PTR pParameter,       /* message specific parameter */
++-  CK_ULONG ulParameterLen,      /* length of message specific parameter */
++-  CK_BYTE_PTR pAssociatedData,  /* AEAD Associated data */
++-  CK_ULONG ulAssociatedDataLen  /* AEAD Associated data length */
++-);
+++    CK_SESSION_HANDLE hSession,
+++    CK_VOID_PTR pParameter,
+++    CK_ULONG ulParameterLen,
+++    CK_BYTE_PTR pAssociatedData,
+++    CK_ULONG ulAssociatedDataLen);
++ #endif
++ 
++ CK_PKCS11_FUNCTION_INFO(C_DecryptMessageNext)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,        /* the session's handle */
++-  CK_VOID_PTR pParameter,            /* message specific parameter */
++-  CK_ULONG ulParameterLen,           /* length of message specific parameter */
++-  CK_BYTE_PTR pCiphertextPart,       /* cipher text */
++-  CK_ULONG ulCiphertextPartLen,      /* cipher text length */
++-  CK_BYTE_PTR pPlaintextPart,        /* gets plain text */
++-  CK_ULONG_PTR pulPlaintextPartLen,  /* gets plain text length */
++-  CK_FLAGS flags                     /* multi mode flag */
++-);
+++    CK_SESSION_HANDLE hSession,
+++    CK_VOID_PTR pParameter,
+++    CK_ULONG ulParameterLen,
+++    CK_BYTE_PTR pCiphertextPart,
+++    CK_ULONG ulCiphertextPartLen,
+++    CK_BYTE_PTR pPlaintextPart,
+++    CK_ULONG_PTR pulPlaintextPartLen,
+++    CK_FLAGS flags);
++ #endif
++ 
++ CK_PKCS11_FUNCTION_INFO(C_MessageDecryptFinal)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession        /* the session's handle */
++-);
+++    CK_SESSION_HANDLE hSession);
++ #endif
++ 
++ CK_PKCS11_FUNCTION_INFO(C_MessageSignInit)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,    /* the session's handle */
++-  CK_MECHANISM_PTR  pMechanism,  /* the signing mechanism */
++-  CK_OBJECT_HANDLE  hKey         /* handle of signing key */
++-);
+++    CK_SESSION_HANDLE hSession,
+++    CK_MECHANISM_PTR pMechanism,
+++    CK_OBJECT_HANDLE hKey);
++ #endif
++ 
++ CK_PKCS11_FUNCTION_INFO(C_SignMessage)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,   /* the session's handle */
++-  CK_VOID_PTR pParameter,       /* message specific parameter */
++-  CK_ULONG ulParameterLen,      /* length of message specific parameter */
++-  CK_BYTE_PTR pData,            /* data to sign */
++-  CK_ULONG ulDataLen,           /* data to sign length */
++-  CK_BYTE_PTR pSignature,       /* gets signature */
++-  CK_ULONG_PTR pulSignatureLen  /* gets signature length */
++-);
+++    CK_SESSION_HANDLE hSession,
+++    CK_VOID_PTR pParameter,
+++    CK_ULONG ulParameterLen,
+++    CK_BYTE_PTR pData,
+++    CK_ULONG ulDataLen,
+++
+++    CK_BYTE_PTR pSignature,
+++    CK_ULONG_PTR pulSignatureLen);
++ #endif
++ 
++ CK_PKCS11_FUNCTION_INFO(C_SignMessageBegin)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,   /* the session's handle */
++-  CK_VOID_PTR pParameter,       /* message specific parameter */
++-  CK_ULONG ulParameterLen      /* length of message specific parameter */
++-);
+++    CK_SESSION_HANDLE hSession,
+++    CK_VOID_PTR pParameter,
+++    CK_ULONG ulParameterLen);
++ #endif
++ 
++ CK_PKCS11_FUNCTION_INFO(C_SignMessageNext)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,   /* the session's handle */
++-  CK_VOID_PTR pParameter,       /* message specific parameter */
++-  CK_ULONG ulParameterLen,      /* length of message specific parameter */
++-  CK_BYTE_PTR pData,            /* data to sign */
++-  CK_ULONG ulDataLen,           /* data to sign length */
++-  CK_BYTE_PTR pSignature,       /* gets signature */
++-  CK_ULONG_PTR pulSignatureLen  /* gets signature length */
++-);
+++    CK_SESSION_HANDLE hSession,
+++    CK_VOID_PTR pParameter,
+++    CK_ULONG ulParameterLen,
+++    CK_BYTE_PTR pData,
+++    CK_ULONG ulDataLen,
+++    CK_BYTE_PTR pSignature,
+++    CK_ULONG_PTR pulSignatureLen);
++ #endif
++ 
++ CK_PKCS11_FUNCTION_INFO(C_MessageSignFinal)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession        /* the session's handle */
++-);
+++    CK_SESSION_HANDLE hSession);
++ #endif
++ 
++ CK_PKCS11_FUNCTION_INFO(C_MessageVerifyInit)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,    /* the session's handle */
++-  CK_MECHANISM_PTR  pMechanism,  /* the signing mechanism */
++-  CK_OBJECT_HANDLE  hKey         /* handle of signing key */
++-);
+++    CK_SESSION_HANDLE hSession,
+++    CK_MECHANISM_PTR pMechanism,
+++    CK_OBJECT_HANDLE hKey);
++ #endif
++ 
++ CK_PKCS11_FUNCTION_INFO(C_VerifyMessage)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,   /* the session's handle */
++-  CK_VOID_PTR pParameter,       /* message specific parameter */
++-  CK_ULONG ulParameterLen,      /* length of message specific parameter */
++-  CK_BYTE_PTR pData,            /* data to sign */
++-  CK_ULONG ulDataLen,           /* data to sign length */
++-  CK_BYTE_PTR pSignature,       /* signature */
++-  CK_ULONG ulSignatureLen       /* signature length */
++-);
+++    CK_SESSION_HANDLE hSession,
+++    CK_VOID_PTR pParameter,
+++    CK_ULONG ulParameterLen,
+++    CK_BYTE_PTR pData,
+++    CK_ULONG ulDataLen,
+++    CK_BYTE_PTR pSignature,
+++    CK_ULONG ulSignatureLen);
++ #endif
++ 
++ CK_PKCS11_FUNCTION_INFO(C_VerifyMessageBegin)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,   /* the session's handle */
++-  CK_VOID_PTR pParameter,       /* message specific parameter */
++-  CK_ULONG ulParameterLen      /* length of message specific parameter */
++-);
+++    CK_SESSION_HANDLE hSession,
+++    CK_VOID_PTR pParameter,
+++    CK_ULONG ulParameterLen);
++ #endif
++ 
++ CK_PKCS11_FUNCTION_INFO(C_VerifyMessageNext)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession,   /* the session's handle */
++-  CK_VOID_PTR pParameter,       /* message specific parameter */
++-  CK_ULONG ulParameterLen,      /* length of message specific parameter */
++-  CK_BYTE_PTR pData,            /* data to sign */
++-  CK_ULONG ulDataLen,           /* data to sign length */
++-  CK_BYTE_PTR pSignature,       /* signature */
++-  CK_ULONG ulSignatureLen       /* signature length */
++-);
+++    CK_SESSION_HANDLE hSession,
+++    CK_VOID_PTR pParameter,
+++    CK_ULONG ulParameterLen,
+++    CK_BYTE_PTR pData,
+++    CK_ULONG ulDataLen,
+++    CK_BYTE_PTR pSignature,
+++    CK_ULONG ulSignatureLen);
++ #endif
++ 
++ CK_PKCS11_FUNCTION_INFO(C_MessageVerifyFinal)
++ #ifdef CK_NEED_ARG_LIST
++ (
++-  CK_SESSION_HANDLE hSession        /* the session's handle */
++-);
+++    CK_SESSION_HANDLE hSession);
++ #endif
++ 
++-#endif /* CK_PKCS11_2_0_ONLY */
++-
+++#endif
++--- /dev/null
+++++ b/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs11n.h
++@@ -0,0 +1,672 @@
+++/* This Source Code Form is subject to the terms of the Mozilla Public
+++ * License, v. 2.0. If a copy of the MPL was not distributed with this
+++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+++
+++#ifndef _PKCS11N_H_
+++#define _PKCS11N_H_
+++
+++/*
+++ * pkcs11n.h
+++ *
+++ * This file contains the NSS-specific type definitions for Cryptoki
+++ * (PKCS#11).
+++ */
+++
+++/*
+++ * NSSCK_VENDOR_NSS
+++ *
+++ * Cryptoki reserves the high half of all the number spaces for
+++ * vendor-defined use.  I'd like to keep all of our NSS-
+++ * specific values together, but not in the oh-so-obvious
+++ * 0x80000001, 0x80000002, etc. area.  So I've picked an offset,
+++ * and constructed values for the beginnings of our spaces.
+++ *
+++ * Note that some "historical" Netscape values don't fall within
+++ * this range.
+++ */
+++#define NSSCK_VENDOR_NSS 0x4E534350 /* NSCP */
+++
+++/*
+++ * NSS-defined object classes
+++ *
+++ */
+++#define CKO_NSS (CKO_VENDOR_DEFINED | NSSCK_VENDOR_NSS)
+++
+++#define CKO_NSS_CRL (CKO_NSS + 1)
+++#define CKO_NSS_SMIME (CKO_NSS + 2)
+++#define CKO_NSS_TRUST (CKO_NSS + 3)
+++#define CKO_NSS_BUILTIN_ROOT_LIST (CKO_NSS + 4)
+++#define CKO_NSS_NEWSLOT (CKO_NSS + 5)
+++#define CKO_NSS_DELSLOT (CKO_NSS + 6)
+++
+++/*
+++ * NSS-defined key types
+++ *
+++ */
+++#define CKK_NSS (CKK_VENDOR_DEFINED | NSSCK_VENDOR_NSS)
+++
+++#define CKK_NSS_PKCS8 (CKK_NSS + 1)
+++
+++#define CKK_NSS_JPAKE_ROUND1 (CKK_NSS + 2)
+++#define CKK_NSS_JPAKE_ROUND2 (CKK_NSS + 3)
+++
+++#define CKK_NSS_CHACHA20 (CKK_NSS + 4)
+++
+++/*
+++ * NSS-defined certificate types
+++ *
+++ */
+++#define CKC_NSS (CKC_VENDOR_DEFINED | NSSCK_VENDOR_NSS)
+++
+++/* FAKE PKCS #11 defines */
+++#define CKA_DIGEST 0x81000000L
+++#define CKA_NSS_MESSAGE 0x82000000L
+++#define CKA_NSS_MESSAGE_MASK 0xff000000L
+++#define CKA_FLAGS_ONLY 0 /* CKA_CLASS */
+++
+++/*
+++ * NSS-defined object attributes
+++ *
+++ */
+++#define CKA_NSS (CKA_VENDOR_DEFINED | NSSCK_VENDOR_NSS)
+++
+++#define CKA_NSS_URL (CKA_NSS + 1)
+++#define CKA_NSS_EMAIL (CKA_NSS + 2)
+++#define CKA_NSS_SMIME_INFO (CKA_NSS + 3)
+++#define CKA_NSS_SMIME_TIMESTAMP (CKA_NSS + 4)
+++#define CKA_NSS_PKCS8_SALT (CKA_NSS + 5)
+++#define CKA_NSS_PASSWORD_CHECK (CKA_NSS + 6)
+++#define CKA_NSS_EXPIRES (CKA_NSS + 7)
+++#define CKA_NSS_KRL (CKA_NSS + 8)
+++
+++#define CKA_NSS_PQG_COUNTER (CKA_NSS + 20)
+++#define CKA_NSS_PQG_SEED (CKA_NSS + 21)
+++#define CKA_NSS_PQG_H (CKA_NSS + 22)
+++#define CKA_NSS_PQG_SEED_BITS (CKA_NSS + 23)
+++#define CKA_NSS_MODULE_SPEC (CKA_NSS + 24)
+++#define CKA_NSS_OVERRIDE_EXTENSIONS (CKA_NSS + 25)
+++
+++#define CKA_NSS_JPAKE_SIGNERID (CKA_NSS + 26)
+++#define CKA_NSS_JPAKE_PEERID (CKA_NSS + 27)
+++#define CKA_NSS_JPAKE_GX1 (CKA_NSS + 28)
+++#define CKA_NSS_JPAKE_GX2 (CKA_NSS + 29)
+++#define CKA_NSS_JPAKE_GX3 (CKA_NSS + 30)
+++#define CKA_NSS_JPAKE_GX4 (CKA_NSS + 31)
+++#define CKA_NSS_JPAKE_X2 (CKA_NSS + 32)
+++#define CKA_NSS_JPAKE_X2S (CKA_NSS + 33)
+++
+++#define CKA_NSS_MOZILLA_CA_POLICY (CKA_NSS + 34)
+++#define CKA_NSS_SERVER_DISTRUST_AFTER (CKA_NSS + 35)
+++#define CKA_NSS_EMAIL_DISTRUST_AFTER (CKA_NSS + 36)
+++
+++/*
+++ * Trust attributes:
+++ *
+++ * If trust goes standard, these probably will too.  So I'll
+++ * put them all in one place.
+++ */
+++
+++#define CKA_TRUST (CKA_NSS + 0x2000)
+++
+++/* "Usage" key information */
+++#define CKA_TRUST_DIGITAL_SIGNATURE (CKA_TRUST + 1)
+++#define CKA_TRUST_NON_REPUDIATION (CKA_TRUST + 2)
+++#define CKA_TRUST_KEY_ENCIPHERMENT (CKA_TRUST + 3)
+++#define CKA_TRUST_DATA_ENCIPHERMENT (CKA_TRUST + 4)
+++#define CKA_TRUST_KEY_AGREEMENT (CKA_TRUST + 5)
+++#define CKA_TRUST_KEY_CERT_SIGN (CKA_TRUST + 6)
+++#define CKA_TRUST_CRL_SIGN (CKA_TRUST + 7)
+++
+++/* "Purpose" trust information */
+++#define CKA_TRUST_SERVER_AUTH (CKA_TRUST + 8)
+++#define CKA_TRUST_CLIENT_AUTH (CKA_TRUST + 9)
+++#define CKA_TRUST_CODE_SIGNING (CKA_TRUST + 10)
+++#define CKA_TRUST_EMAIL_PROTECTION (CKA_TRUST + 11)
+++#define CKA_TRUST_IPSEC_END_SYSTEM (CKA_TRUST + 12)
+++#define CKA_TRUST_IPSEC_TUNNEL (CKA_TRUST + 13)
+++#define CKA_TRUST_IPSEC_USER (CKA_TRUST + 14)
+++#define CKA_TRUST_TIME_STAMPING (CKA_TRUST + 15)
+++#define CKA_TRUST_STEP_UP_APPROVED (CKA_TRUST + 16)
+++
+++#define CKA_CERT_SHA1_HASH (CKA_TRUST + 100)
+++#define CKA_CERT_MD5_HASH (CKA_TRUST + 101)
+++
+++/* NSS trust stuff */
+++
+++/* HISTORICAL: define used to pass in the database key for DSA private keys */
+++#define CKA_NSS_DB 0xD5A0DB00L
+++#define CKA_NSS_TRUST 0x80000001L
+++
+++/* FAKE PKCS #11 defines */
+++#define CKM_FAKE_RANDOM 0x80000efeUL
+++#define CKM_INVALID_MECHANISM 0xffffffffUL
+++#define CKT_INVALID_TYPE 0xffffffffUL
+++
+++/*
+++ * NSS-defined crypto mechanisms
+++ *
+++ */
+++#define CKM_NSS (CKM_VENDOR_DEFINED | NSSCK_VENDOR_NSS)
+++
+++#define CKM_NSS_AES_KEY_WRAP (CKM_NSS + 1)
+++#define CKM_NSS_AES_KEY_WRAP_PAD (CKM_NSS + 2)
+++
+++/* HKDF key derivation mechanisms. See CK_NSS_HKDFParams for documentation. */
+++#define CKM_NSS_HKDF_SHA1 (CKM_NSS + 3)
+++#define CKM_NSS_HKDF_SHA256 (CKM_NSS + 4)
+++#define CKM_NSS_HKDF_SHA384 (CKM_NSS + 5)
+++#define CKM_NSS_HKDF_SHA512 (CKM_NSS + 6)
+++
+++/* J-PAKE round 1 key generation mechanisms.
+++ *
+++ * Required template attributes: CKA_PRIME, CKA_SUBPRIME, CKA_BASE,
+++ *                               CKA_NSS_JPAKE_SIGNERID
+++ * Output key type: CKK_NSS_JPAKE_ROUND1
+++ * Output key class: CKO_PRIVATE_KEY
+++ * Parameter type: CK_NSS_JPAKERound1Params
+++ *
+++ */
+++#define CKM_NSS_JPAKE_ROUND1_SHA1 (CKM_NSS + 7)
+++#define CKM_NSS_JPAKE_ROUND1_SHA256 (CKM_NSS + 8)
+++#define CKM_NSS_JPAKE_ROUND1_SHA384 (CKM_NSS + 9)
+++#define CKM_NSS_JPAKE_ROUND1_SHA512 (CKM_NSS + 10)
+++
+++/* J-PAKE round 2 key derivation mechanisms.
+++ *
+++ * Required template attributes: CKA_NSS_JPAKE_PEERID
+++ * Input key type:  CKK_NSS_JPAKE_ROUND1
+++ * Output key type: CKK_NSS_JPAKE_ROUND2
+++ * Output key class: CKO_PRIVATE_KEY
+++ * Parameter type: CK_NSS_JPAKERound2Params
+++ */
+++#define CKM_NSS_JPAKE_ROUND2_SHA1 (CKM_NSS + 11)
+++#define CKM_NSS_JPAKE_ROUND2_SHA256 (CKM_NSS + 12)
+++#define CKM_NSS_JPAKE_ROUND2_SHA384 (CKM_NSS + 13)
+++#define CKM_NSS_JPAKE_ROUND2_SHA512 (CKM_NSS + 14)
+++
+++/* J-PAKE final key material derivation mechanisms
+++ *
+++ * Input key type:  CKK_NSS_JPAKE_ROUND2
+++ * Output key type: CKK_GENERIC_SECRET
+++ * Output key class: CKO_SECRET_KEY
+++ * Parameter type: CK_NSS_JPAKEFinalParams
+++ *
+++ * You must apply a KDF (e.g. CKM_NSS_HKDF_*) to resultant keying material
+++ * to get a key with uniformly distributed bits.
+++ */
+++#define CKM_NSS_JPAKE_FINAL_SHA1 (CKM_NSS + 15)
+++#define CKM_NSS_JPAKE_FINAL_SHA256 (CKM_NSS + 16)
+++#define CKM_NSS_JPAKE_FINAL_SHA384 (CKM_NSS + 17)
+++#define CKM_NSS_JPAKE_FINAL_SHA512 (CKM_NSS + 18)
+++
+++/* Constant-time MAC mechanisms:
+++ *
+++ * These operations verify a padded, MAC-then-encrypt block of data in
+++ * constant-time. Because of the order of operations, the padding bytes are not
+++ * protected by the MAC. However, disclosing the value of the padding bytes
+++ * gives an attacker the ability to decrypt ciphertexts. Such disclosure can be
+++ * as subtle as taking slightly less time to perform the MAC when the padding
+++ * is one byte longer. See https://www.isg.rhul.ac.uk/tls/
+++ *
+++ * CKM_NSS_HMAC_CONSTANT_TIME: performs an HMAC authentication.
+++ * CKM_NSS_SSL3_MAC_CONSTANT_TIME: performs an authentication with SSLv3 MAC.
+++ *
+++ * Parameter type: CK_NSS_MAC_CONSTANT_TIME_PARAMS
+++ */
+++#define CKM_NSS_HMAC_CONSTANT_TIME (CKM_NSS + 19)
+++#define CKM_NSS_SSL3_MAC_CONSTANT_TIME (CKM_NSS + 20)
+++
+++/* TLS 1.2 mechanisms */
+++#define CKM_NSS_TLS_PRF_GENERAL_SHA256 (CKM_NSS + 21)
+++#define CKM_NSS_TLS_MASTER_KEY_DERIVE_SHA256 (CKM_NSS + 22)
+++#define CKM_NSS_TLS_KEY_AND_MAC_DERIVE_SHA256 (CKM_NSS + 23)
+++#define CKM_NSS_TLS_MASTER_KEY_DERIVE_DH_SHA256 (CKM_NSS + 24)
+++
+++/* TLS extended master secret derivation */
+++#define CKM_NSS_TLS_EXTENDED_MASTER_KEY_DERIVE (CKM_NSS + 25)
+++#define CKM_NSS_TLS_EXTENDED_MASTER_KEY_DERIVE_DH (CKM_NSS + 26)
+++
+++#define CKM_NSS_CHACHA20_KEY_GEN (CKM_NSS + 27)
+++#define CKM_NSS_CHACHA20_POLY1305 (CKM_NSS + 28)
+++
+++/* Additional PKCS #12 PBE algorithms defined in v1.1 */
+++#define CKM_NSS_PKCS12_PBE_SHA224_HMAC_KEY_GEN (CKM_NSS + 29)
+++#define CKM_NSS_PKCS12_PBE_SHA256_HMAC_KEY_GEN (CKM_NSS + 30)
+++#define CKM_NSS_PKCS12_PBE_SHA384_HMAC_KEY_GEN (CKM_NSS + 31)
+++#define CKM_NSS_PKCS12_PBE_SHA512_HMAC_KEY_GEN (CKM_NSS + 32)
+++
+++#define CKM_NSS_CHACHA20_CTR (CKM_NSS + 33)
+++
+++/* IKE mechanism (to be proposed to PKCS #11 */
+++#define CKM_NSS_IKE_PRF_PLUS_DERIVE (CKM_NSS + 34)
+++#define CKM_NSS_IKE_PRF_DERIVE (CKM_NSS + 35)
+++#define CKM_NSS_IKE1_PRF_DERIVE (CKM_NSS + 36)
+++#define CKM_NSS_IKE1_APP_B_PRF_DERIVE (CKM_NSS + 37)
+++
+++#define CKM_NSS_PUB_FROM_PRIV (CKM_NSS + 40)
+++
+++/* SP800-108 NSS mechanism with support for data object derivation */
+++#define CKM_NSS_SP800_108_COUNTER_KDF_DERIVE_DATA (CKM_NSS + 42)
+++#define CKM_NSS_SP800_108_FEEDBACK_KDF_DERIVE_DATA (CKM_NSS + 43)
+++#define CKM_NSS_SP800_108_DOUBLE_PIPELINE_KDF_DERIVE_DATA (CKM_NSS + 44)
+++
+++/*
+++ * HISTORICAL:
+++ * Do not attempt to use these. They are only used by NSS's internal
+++ * PKCS #11 interface. Most of these are place holders for other mechanism
+++ * and will change in the future.
+++ */
+++#define CKM_NSS_PBE_SHA1_DES_CBC 0x80000002UL
+++#define CKM_NSS_PBE_SHA1_TRIPLE_DES_CBC 0x80000003UL
+++#define CKM_NSS_PBE_SHA1_40_BIT_RC2_CBC 0x80000004UL
+++#define CKM_NSS_PBE_SHA1_128_BIT_RC2_CBC 0x80000005UL
+++#define CKM_NSS_PBE_SHA1_40_BIT_RC4 0x80000006UL
+++#define CKM_NSS_PBE_SHA1_128_BIT_RC4 0x80000007UL
+++#define CKM_NSS_PBE_SHA1_FAULTY_3DES_CBC 0x80000008UL
+++#define CKM_NSS_PBE_SHA1_HMAC_KEY_GEN 0x80000009UL
+++#define CKM_NSS_PBE_MD5_HMAC_KEY_GEN 0x8000000aUL
+++#define CKM_NSS_PBE_MD2_HMAC_KEY_GEN 0x8000000bUL
+++
+++#define CKM_TLS_PRF_GENERAL 0x80000373UL
+++
+++typedef struct CK_NSS_JPAKEPublicValue {
+++    CK_BYTE *pGX;
+++    CK_ULONG ulGXLen;
+++    CK_BYTE *pGV;
+++    CK_ULONG ulGVLen;
+++    CK_BYTE *pR;
+++    CK_ULONG ulRLen;
+++} CK_NSS_JPAKEPublicValue;
+++
+++typedef struct CK_NSS_JPAKERound1Params {
+++    CK_NSS_JPAKEPublicValue gx1; /* out */
+++    CK_NSS_JPAKEPublicValue gx2; /* out */
+++} CK_NSS_JPAKERound1Params;
+++
+++typedef struct CK_NSS_JPAKERound2Params {
+++    CK_BYTE *pSharedKey;         /* in */
+++    CK_ULONG ulSharedKeyLen;     /* in */
+++    CK_NSS_JPAKEPublicValue gx3; /* in */
+++    CK_NSS_JPAKEPublicValue gx4; /* in */
+++    CK_NSS_JPAKEPublicValue A;   /* out */
+++} CK_NSS_JPAKERound2Params;
+++
+++typedef struct CK_NSS_JPAKEFinalParams {
+++    CK_NSS_JPAKEPublicValue B; /* in */
+++} CK_NSS_JPAKEFinalParams;
+++
+++/* macAlg: the MAC algorithm to use. This determines the hash function used in
+++ *     the HMAC/SSLv3 MAC calculations.
+++ * ulBodyTotalLen: the total length of the data, including padding bytes and
+++ *     padding length.
+++ * pHeader: points to a block of data that contains additional data to
+++ *     authenticate. For TLS this includes the sequence number etc. For SSLv3,
+++ *     this also includes the initial padding bytes.
+++ *
+++ * NOTE: the softoken's implementation of CKM_NSS_HMAC_CONSTANT_TIME and
+++ * CKM_NSS_SSL3_MAC_CONSTANT_TIME requires that the sum of ulBodyTotalLen
+++ * and ulHeaderLen be much smaller than 2^32 / 8 bytes because it uses an
+++ * unsigned int variable to represent the length in bits. This should not
+++ * be a problem because the SSL/TLS protocol limits the size of an SSL
+++ * record to something considerably less than 2^32 bytes.
+++ */
+++typedef struct CK_NSS_MAC_CONSTANT_TIME_PARAMS {
+++    CK_MECHANISM_TYPE macAlg; /* in */
+++    CK_ULONG ulBodyTotalLen;  /* in */
+++    CK_BYTE *pHeader;         /* in */
+++    CK_ULONG ulHeaderLen;     /* in */
+++} CK_NSS_MAC_CONSTANT_TIME_PARAMS;
+++
+++typedef struct CK_NSS_AEAD_PARAMS {
+++    CK_BYTE_PTR pNonce;
+++    CK_ULONG ulNonceLen;
+++    CK_BYTE_PTR pAAD;
+++    CK_ULONG ulAADLen;
+++    CK_ULONG ulTagLen;
+++} CK_NSS_AEAD_PARAMS;
+++
+++/*
+++ * NSS-defined return values
+++ *
+++ */
+++#define CKR_NSS (CKM_VENDOR_DEFINED | NSSCK_VENDOR_NSS)
+++
+++#define CKR_NSS_CERTDB_FAILED (CKR_NSS + 1)
+++#define CKR_NSS_KEYDB_FAILED (CKR_NSS + 2)
+++
+++/* Mandatory parameter for the CKM_NSS_HKDF_* key deriviation mechanisms.
+++   See RFC 5869.
+++
+++    bExtract: If set, HKDF-Extract will be applied to the input key. If
+++              the optional salt is given, it is used; otherwise, the salt is
+++              set to a sequence of zeros equal in length to the HMAC output.
+++              If bExpand is not set, then the key template given to
+++              C_DeriveKey must indicate an output key size less than or equal
+++              to the output size of the HMAC.
+++
+++    bExpand:  If set, HKDF-Expand will be applied to the input key (if
+++              bExtract is not set) or to the result of HKDF-Extract (if
+++              bExtract is set). Any info given in the optional pInfo field will
+++              be included in the calculation.
+++
+++    The size of the output key must be specified in the template passed to
+++    C_DeriveKey.
+++*/
+++typedef struct CK_NSS_HKDFParams {
+++    CK_BBOOL bExtract;
+++    CK_BYTE_PTR pSalt;
+++    CK_ULONG ulSaltLen;
+++    CK_BBOOL bExpand;
+++    CK_BYTE_PTR pInfo;
+++    CK_ULONG ulInfoLen;
+++} CK_NSS_HKDFParams;
+++
+++/*
+++ * CK_NSS_IKE_PRF_PLUS_PARAMS is a structure that provides the parameters to
+++ * the CKM_NSS_IKE_PRF_PLUS_DERIVE mechanism.
+++ * The fields of the structure have the following meanings:
+++ *      prfMechanism    underlying MAC mechanism used to generate the prf.
+++ *      bHasSeedKey     hSeed key is present.
+++ *      hSeedKey        optional seed from key
+++ *      pSeedData       optional seed from data.
+++ *      ulSeedDataLen   length of optional seed data.
+++ *        If no seed data is present this value is NULL.
+++ */
+++typedef struct CK_NSS_IKE_PRF_PLUS_DERIVE_PARAMS {
+++    CK_MECHANISM_TYPE prfMechanism;
+++    CK_BBOOL bHasSeedKey;
+++    CK_OBJECT_HANDLE hSeedKey;
+++    CK_BYTE_PTR pSeedData;
+++    CK_ULONG ulSeedDataLen;
+++} CK_NSS_IKE_PRF_PLUS_DERIVE_PARAMS;
+++
+++/* CK_NSS_IKE_PRF_DERIVE_PARAMS is a structure that provides the parameters to
+++ *  the CKM_NSS_IKE_PRF_DERIVE mechanism.
+++ *
+++ * The fields of the structure have the following meanings:
+++ *     prfMechanism underlying MAC mechanism used to generate the prf.
+++ *     bRekey       hNewKey is present.
+++ *     pNi          Ni value
+++ *     ulNiLen      length of Ni
+++ *     pNr          Nr value
+++ *     ulNrLen      length of Nr
+++ *     hNewKey      New key value to drive the rekey.
+++ */
+++typedef struct CK_NSS_IKE_PRF_DERIVE_PARAMS {
+++    CK_MECHANISM_TYPE prfMechanism;
+++    CK_BBOOL bDataAsKey;
+++    CK_BBOOL bRekey;
+++    CK_BYTE_PTR pNi;
+++    CK_ULONG ulNiLen;
+++    CK_BYTE_PTR pNr;
+++    CK_ULONG ulNrLen;
+++    CK_OBJECT_HANDLE hNewKey;
+++} CK_NSS_IKE_PRF_DERIVE_PARAMS;
+++
+++/* CK_NSS_IKE1_PRF_DERIVE_PARAMS is a structure that provides the parameters
+++ * to the CKM_NSS_IKE_PRF_DERIVE mechanism.
+++ *
+++ * The fields of the structure have the following meanings:
+++ *     prfMechanism  underlying MAC mechanism used to generate the prf.
+++ *     bRekey        hNewKey is present.
+++ *     pCKYi         CKYi value
+++ *     ulCKYiLen     length of CKYi
+++ *     pCKYr         CKYr value
+++ *     ulCKYrLen     length of CKYr
+++ *     hNewKey       New key value to drive the rekey.
+++ */
+++typedef struct CK_NSS_IKE1_PRF_DERIVE_PARAMS {
+++    CK_MECHANISM_TYPE prfMechanism;
+++    CK_BBOOL bHasPrevKey;
+++    CK_OBJECT_HANDLE hKeygxy;
+++    CK_OBJECT_HANDLE hPrevKey;
+++    CK_BYTE_PTR pCKYi;
+++    CK_ULONG ulCKYiLen;
+++    CK_BYTE_PTR pCKYr;
+++    CK_ULONG ulCKYrLen;
+++    CK_BYTE keyNumber;
+++} CK_NSS_IKE1_PRF_DERIVE_PARAMS;
+++
+++/* CK_NSS_IKE1_APP_B_PRF_DERIVE_PARAMS is a structure that provides the
+++ * parameters to the CKM_NSS_IKE_APP_B_PRF_DERIVE mechanism.
+++ *
+++ * The fields of the structure have the following meanings:
+++ *     prfMechanism  underlying MAC mechanism used to generate the prf.
+++ *     bHasKeygxy    hKeygxy exists
+++ *     hKeygxy       optional key to hash in the prf
+++ *     pExtraData    optional extra data to hash in the prf
+++ *     ulExtraData   length of the optional extra data.
+++ *
+++ * CK_NSS_IKE_APP_B_PRF_DERIVE can take wither CK_NSS_IKE1_APP_B_PRF_DRIVE_PARAMS
+++ * or a single CK_MECHANISM_TYPE. In the latter cases bHashKeygx is assumed to
+++ * be false and ulExtraDataLen is assumed to be '0'.
+++ */
+++typedef struct CK_NSS_IKE1_APP_B_PRF_DERIVE_PARAMS {
+++    CK_MECHANISM_TYPE prfMechanism;
+++    CK_BBOOL bHasKeygxy;
+++    CK_OBJECT_HANDLE hKeygxy;
+++    CK_BYTE_PTR pExtraData;
+++    CK_ULONG ulExtraDataLen;
+++} CK_NSS_IKE1_APP_B_PRF_DERIVE_PARAMS;
+++
+++/*
+++ * Parameter for the TLS extended master secret key derivation mechanisms:
+++ *
+++ *  * CKM_NSS_TLS_EXTENDED_MASTER_KEY_DERIVE
+++ *  * CKM_NSS_TLS_EXTENDED_MASTER_KEY_DERIVE_DH
+++ *
+++ * For the TLS 1.2 PRF, the prfHashMechanism parameter determines the hash
+++ * function used. For earlier versions of the PRF, set the prfHashMechanism
+++ * value to CKM_TLS_PRF.
+++ *
+++ * The session hash input is expected to be the output of the same hash
+++ * function as the PRF uses (as required by draft-ietf-tls-session-hash).  So
+++ * the ulSessionHashLen member must be equal the output length of the hash
+++ * function specified by the prfHashMechanism member (or, for pre-TLS 1.2 PRF,
+++ * the length of concatenated MD5 and SHA-1 digests).
+++ *
+++ */
+++typedef struct CK_NSS_TLS_EXTENDED_MASTER_KEY_DERIVE_PARAMS {
+++    CK_MECHANISM_TYPE prfHashMechanism;
+++    CK_BYTE_PTR pSessionHash;
+++    CK_ULONG ulSessionHashLen;
+++    CK_VERSION_PTR pVersion;
+++} CK_NSS_TLS_EXTENDED_MASTER_KEY_DERIVE_PARAMS;
+++
+++/*
+++ * Trust info
+++ *
+++ * This isn't part of the Cryptoki standard (yet), so I'm putting
+++ * all the definitions here.  Some of this would move to nssckt.h
+++ * if trust info were made part of the standard.  In view of this
+++ * possibility, I'm putting my (NSS) values in the NSS
+++ * vendor space, like everything else.
+++ */
+++
+++typedef CK_ULONG CK_TRUST;
+++
+++/* The following trust types are defined: */
+++#define CKT_VENDOR_DEFINED 0x80000000
+++
+++#define CKT_NSS (CKT_VENDOR_DEFINED | NSSCK_VENDOR_NSS)
+++
+++/* If trust goes standard, these'll probably drop out of vendor space. */
+++#define CKT_NSS_TRUSTED (CKT_NSS + 1)
+++#define CKT_NSS_TRUSTED_DELEGATOR (CKT_NSS + 2)
+++#define CKT_NSS_MUST_VERIFY_TRUST (CKT_NSS + 3)
+++#define CKT_NSS_NOT_TRUSTED (CKT_NSS + 10)
+++#define CKT_NSS_TRUST_UNKNOWN (CKT_NSS + 5) /* default */
+++
+++/*
+++ * These may well remain NSS-specific; I'm only using them
+++ * to cache resolution data.
+++ */
+++#define CKT_NSS_VALID_DELEGATOR (CKT_NSS + 11)
+++
+++/*
+++ * old definitions. They still exist, but the plain meaning of the
+++ * labels have never been accurate to what was really implemented.
+++ * The new labels correctly reflect what the values effectively mean.
+++ */
+++#if defined(__GNUC__) && (__GNUC__ > 3)
+++/* make GCC warn when we use these #defines */
+++/*
+++ *  This is really painful because GCC doesn't allow us to mark random
+++ *  #defines as deprecated. We can only mark the following:
+++ *      functions, variables, and types.
+++ *  const variables will create extra storage for everyone including this
+++ *       header file, so it's undesirable.
+++ *  functions could be inlined to prevent storage creation, but will fail
+++ *       when constant values are expected (like switch statements).
+++ *  enum types do not seem to pay attention to the deprecated attribute.
+++ *
+++ *  That leaves typedefs. We declare new types that we then deprecate, then
+++ *  cast the resulting value to the deprecated type in the #define, thus
+++ *  producting the warning when the #define is used.
+++ */
+++#if (__GNUC__ == 4) && (__GNUC_MINOR__ < 5)
+++/* The mac doesn't like the friendlier deprecate messages. I'm assuming this
+++ * is a gcc version issue rather than mac or ppc specific */
+++typedef CK_TRUST __CKT_NSS_UNTRUSTED __attribute__((deprecated));
+++typedef CK_TRUST __CKT_NSS_VALID __attribute__((deprecated));
+++typedef CK_TRUST __CKT_NSS_MUST_VERIFY __attribute__((deprecated));
+++#else
+++/* when possible, get a full deprecation warning. This works on gcc 4.5
+++ * it may work on earlier versions of gcc */
+++typedef CK_TRUST __CKT_NSS_UNTRUSTED __attribute__((deprecated("CKT_NSS_UNTRUSTED really means CKT_NSS_MUST_VERIFY_TRUST")));
+++typedef CK_TRUST __CKT_NSS_VALID __attribute__((deprecated("CKT_NSS_VALID really means CKT_NSS_NOT_TRUSTED")));
+++typedef CK_TRUST __CKT_NSS_MUST_VERIFY __attribute__((deprecated("CKT_NSS_MUST_VERIFY really functions as CKT_NSS_TRUST_UNKNOWN")));
+++#endif
+++#define CKT_NSS_UNTRUSTED ((__CKT_NSS_UNTRUSTED)CKT_NSS_MUST_VERIFY_TRUST)
+++#define CKT_NSS_VALID ((__CKT_NSS_VALID)CKT_NSS_NOT_TRUSTED)
+++/* keep the old value for compatibility reasons*/
+++#define CKT_NSS_MUST_VERIFY ((__CKT_NSS_MUST_VERIFY)(CKT_NSS + 4))
+++#else
+++#ifdef _WIN32
+++/* This magic gets the windows compiler to give us a deprecation
+++ * warning */
+++#pragma deprecated(CKT_NSS_UNTRUSTED, CKT_NSS_MUST_VERIFY, CKT_NSS_VALID)
+++#endif
+++/* CKT_NSS_UNTRUSTED really means CKT_NSS_MUST_VERIFY_TRUST */
+++#define CKT_NSS_UNTRUSTED CKT_NSS_MUST_VERIFY_TRUST
+++/* CKT_NSS_VALID really means CKT_NSS_NOT_TRUSTED */
+++#define CKT_NSS_VALID CKT_NSS_NOT_TRUSTED
+++/* CKT_NSS_MUST_VERIFY was always treated as CKT_NSS_TRUST_UNKNOWN */
+++#define CKT_NSS_MUST_VERIFY (CKT_NSS + 4) /*really means trust unknown*/
+++#endif
+++
+++/*
+++ * These are not really PKCS #11 values specifically. They are the 'loadable'
+++ * module spec NSS uses. They are available for others to use as well, but not
+++ * part of the formal PKCS #11 spec.
+++ *
+++ * The function 'FIND' returns an array of PKCS #11 initialization strings
+++ * The function 'ADD' takes a PKCS #11 initialization string and stores it.
+++ * The function 'DEL' takes a 'name= library=' value and deletes the associated
+++ *  string.
+++ * The function 'RELEASE' frees the array returned by 'FIND'
+++ */
+++#define SECMOD_MODULE_DB_FUNCTION_FIND 0
+++#define SECMOD_MODULE_DB_FUNCTION_ADD 1
+++#define SECMOD_MODULE_DB_FUNCTION_DEL 2
+++#define SECMOD_MODULE_DB_FUNCTION_RELEASE 3
+++typedef char **(PR_CALLBACK *SECMODModuleDBFunc)(unsigned long function,
+++                                                 char *parameters, void *moduleSpec);
+++
+++/* softoken slot ID's */
+++#define SFTK_MIN_USER_SLOT_ID 4
+++#define SFTK_MAX_USER_SLOT_ID 100
+++#define SFTK_MIN_FIPS_USER_SLOT_ID 101
+++#define SFTK_MAX_FIPS_USER_SLOT_ID 127
+++
+++/* Module Interface. This is the old NSS private module interface, now exported
+++ * as a PKCS #11 v3 interface. It's interface name is
+++ * "Vendor NSS Module Interface" */
+++typedef char **(*CK_NSS_ModuleDBFunc)(unsigned long function,
+++                                      char *parameters, void *args);
+++typedef struct CK_NSS_MODULE_FUNCTIONS {
+++    CK_VERSION version;
+++    CK_NSS_ModuleDBFunc NSC_ModuleDBFunc;
+++} CK_NSS_MODULE_FUNCTIONS;
+++
+++/* There was an inconsistency between the spec and the header file in defining
+++ * the CK_GCM_PARAMS structure. The authoritative reference is the header file,
+++ * but NSS used the spec when adding it to its own header. In V3 we've
+++ * corrected it, but we need to handle the old case for devices that followed
+++ * us in using the incorrect specification. */
+++typedef struct CK_NSS_GCM_PARAMS {
+++    CK_BYTE_PTR pIv;
+++    CK_ULONG ulIvLen;
+++    CK_BYTE_PTR pAAD;
+++    CK_ULONG ulAADLen;
+++    CK_ULONG ulTagBits;
+++} CK_NSS_GCM_PARAMS;
+++
+++typedef CK_NSS_GCM_PARAMS CK_PTR CK_NSS_GCM_PARAMS_PTR;
+++
+++/* deprecated #defines. Drop in future NSS releases */
+++#ifdef NSS_PKCS11_2_0_COMPAT
+++
+++/* defines that were changed between NSS's PKCS #11 and the Oasis headers */
+++#define CKF_EC_FP CKF_EC_F_P
+++#define CKO_KG_PARAMETERS CKO_DOMAIN_PARAMETERS
+++#define CK_INVALID_SESSION CK_INVALID_HANDLE
+++#define CKR_KEY_PARAMS_INVALID 0x0000006B
+++
+++/* use the old wrong CK_GCM_PARAMS is NSS_PCKS11_2_0_COMPAT is defined */
+++typedef struct CK_NSS_GCM_PARAMS CK_GCM_PARAMS;
+++typedef CK_NSS_GCM_PARAMS CK_PTR CK_GCM_PARAMS_PTR;
+++
+++/* don't leave old programs in a lurch just yet, give them the old NETSCAPE
+++ * synonym if NSS_PKCS11_2_0_COMPAT is defined*/
+++#define CKO_NETSCAPE_CRL CKO_NSS_CRL
+++#define CKO_NETSCAPE_SMIME CKO_NSS_SMIME
+++#define CKO_NETSCAPE_TRUST CKO_NSS_TRUST
+++#define CKO_NETSCAPE_BUILTIN_ROOT_LIST CKO_NSS_BUILTIN_ROOT_LIST
+++#define CKO_NETSCAPE_NEWSLOT CKO_NSS_NEWSLOT
+++#define CKO_NETSCAPE_DELSLOT CKO_NSS_DELSLOT
+++#define CKK_NETSCAPE_PKCS8 CKK_NSS_PKCS8
+++#define CKA_NETSCAPE_URL CKA_NSS_URL
+++#define CKA_NETSCAPE_EMAIL CKA_NSS_EMAIL
+++#define CKA_NETSCAPE_SMIME_INFO CKA_NSS_SMIME_INFO
+++#define CKA_NETSCAPE_SMIME_TIMESTAMP CKA_NSS_SMIME_TIMESTAMP
+++#define CKA_NETSCAPE_PKCS8_SALT CKA_NSS_PKCS8_SALT
+++#define CKA_NETSCAPE_PASSWORD_CHECK CKA_NSS_PASSWORD_CHECK
+++#define CKA_NETSCAPE_EXPIRES CKA_NSS_EXPIRES
+++#define CKA_NETSCAPE_KRL CKA_NSS_KRL
+++#define CKA_NETSCAPE_PQG_COUNTER CKA_NSS_PQG_COUNTER
+++#define CKA_NETSCAPE_PQG_SEED CKA_NSS_PQG_SEED
+++#define CKA_NETSCAPE_PQG_H CKA_NSS_PQG_H
+++#define CKA_NETSCAPE_PQG_SEED_BITS CKA_NSS_PQG_SEED_BITS
+++#define CKA_NETSCAPE_MODULE_SPEC CKA_NSS_MODULE_SPEC
+++#define CKA_NETSCAPE_DB CKA_NSS_DB
+++#define CKA_NETSCAPE_TRUST CKA_NSS_TRUST
+++#define CKM_NETSCAPE_AES_KEY_WRAP CKM_NSS_AES_KEY_WRAP
+++#define CKM_NETSCAPE_AES_KEY_WRAP_PAD CKM_NSS_AES_KEY_WRAP_PAD
+++#define CKM_NETSCAPE_PBE_SHA1_DES_CBC CKM_NSS_PBE_SHA1_DES_CBC
+++#define CKM_NETSCAPE_PBE_SHA1_TRIPLE_DES_CBC CKM_NSS_PBE_SHA1_TRIPLE_DES_CBC
+++#define CKM_NETSCAPE_PBE_SHA1_40_BIT_RC2_CBC CKM_NSS_PBE_SHA1_40_BIT_RC2_CBC
+++#define CKM_NETSCAPE_PBE_SHA1_128_BIT_RC2_CBC CKM_NSS_PBE_SHA1_128_BIT_RC2_CBC
+++#define CKM_NETSCAPE_PBE_SHA1_40_BIT_RC4 CKM_NSS_PBE_SHA1_40_BIT_RC4
+++#define CKM_NETSCAPE_PBE_SHA1_128_BIT_RC4 CKM_NSS_PBE_SHA1_128_BIT_RC4
+++#define CKM_NETSCAPE_PBE_SHA1_FAULTY_3DES_CBC CKM_NSS_PBE_SHA1_FAULTY_3DES_CBC
+++#define CKM_NETSCAPE_PBE_SHA1_HMAC_KEY_GEN CKM_NSS_PBE_SHA1_HMAC_KEY_GEN
+++#define CKM_NETSCAPE_PBE_MD5_HMAC_KEY_GEN CKM_NSS_PBE_MD5_HMAC_KEY_GEN
+++#define CKM_NETSCAPE_PBE_MD2_HMAC_KEY_GEN CKM_NSS_PBE_MD2_HMAC_KEY_GEN
+++#define CKR_NETSCAPE_CERTDB_FAILED CKR_NSS_CERTDB_FAILED
+++#define CKR_NETSCAPE_KEYDB_FAILED CKR_NSS_KEYDB_FAILED
+++
+++#define CKT_NETSCAPE_TRUSTED CKT_NSS_TRUSTED
+++#define CKT_NETSCAPE_TRUSTED_DELEGATOR CKT_NSS_TRUSTED_DELEGATOR
+++#define CKT_NETSCAPE_UNTRUSTED CKT_NSS_UNTRUSTED
+++#define CKT_NETSCAPE_MUST_VERIFY CKT_NSS_MUST_VERIFY
+++#define CKT_NETSCAPE_TRUST_UNKNOWN CKT_NSS_TRUST_UNKNOWN
+++#define CKT_NETSCAPE_VALID CKT_NSS_VALID
+++#define CKT_NETSCAPE_VALID_DELEGATOR CKT_NSS_VALID_DELEGATOR
+++#else
+++/* use the new CK_GCM_PARAMS if NSS_PKCS11_2_0_COMPAT is not defined */
+++typedef struct CK_GCM_PARAMS_V3 CK_GCM_PARAMS;
+++typedef CK_GCM_PARAMS_V3 CK_PTR CK_GCM_PARAMS_PTR;
+++#endif
+++
+++#endif /* _PKCS11N_H_ */
++--- a/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs11t.h
+++++ b/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs11t.h
++@@ -1,1150 +1,1265 @@
++-/* Copyright (c) OASIS Open 2016, 2019. All Rights Reserved./
++- * /Distributed under the terms of the OASIS IPR Policy,
++- * [http://www.oasis-open.org/policies-guidelines/ipr], AS-IS, WITHOUT ANY
++- * IMPLIED OR EXPRESS WARRANTY; there is no warranty of MERCHANTABILITY, FITNESS FOR A
++- * PARTICULAR PURPOSE or NONINFRINGEMENT of the rights of others.
++- */
++-
++-/* Latest version of the specification:
++- * http://docs.oasis-open.org/pkcs11/pkcs11-base/v2.40/pkcs11-base-v2.40.html
++- */
++-
++-/* See top of pkcs11.h for information about the macros that
++- * must be defined and the structure-packing conventions that
++- * must be set before including this file.
+++/* This Source Code Form is subject to the terms of the Mozilla Public
+++ * License, v. 2.0. If a copy of the MPL was not distributed with this
+++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+++/* License to copy and use this software is granted provided that it is
+++ * identified as "RSA Security Inc. PKCS #11 Cryptographic Token Interface
+++ * (Cryptoki)" in all material mentioning or referencing this software.
+++
+++ * License is also granted to make and use derivative works provided that
+++ * such works are identified as "derived from the RSA Security Inc. PKCS #11
+++ * Cryptographic Token Interface (Cryptoki)" in all material mentioning or
+++ * referencing the derived work.
+++
+++ * RSA Security Inc. makes no representations concerning either the
+++ * merchantability of this software or the suitability of this software for
+++ * any particular purpose. It is provided "as is" without express or implied
+++ * warranty of any kind.
++  */
++ 
++ #ifndef _PKCS11T_H_
++ #define _PKCS11T_H_ 1
++ 
++-#define CRYPTOKI_VERSION_MAJOR          3
++-#define CRYPTOKI_VERSION_MINOR          0
++-#define CRYPTOKI_VERSION_AMENDMENT      0
++-
++-#define CK_TRUE         1
++-#define CK_FALSE        0
++-
++-#ifndef CK_DISABLE_TRUE_FALSE
++-#ifndef FALSE
++-#define FALSE CK_FALSE
++-#endif
++-#ifndef TRUE
++-#define TRUE CK_TRUE
++-#endif
+++#define CK_TRUE 1
+++#define CK_FALSE 0
+++
+++#include "prtypes.h"
+++
+++#define CK_PTR *
+++#define CK_NULL_PTR 0
+++#define CK_CALLBACK_FUNCTION(rtype, func) rtype(PR_CALLBACK *func)
+++#define CK_DECLARE_FUNCTION(rtype, func) extern rtype func
+++#define CK_DECLARE_FUNCTION_POINTER(rtype, func) rtype(PR_CALLBACK *func)
+++
+++#ifdef NSS_PCKS11_2_0_COMPAT
+++#define prfHashMechanism prfMechanism
++ #endif
++ 
+++#define CRYPTOKI_VERSION_MAJOR 3
+++#define CRYPTOKI_VERSION_MINOR 0
+++#define CRYPTOKI_VERSION_AMENDMENT 0
+++
++ /* an unsigned 8-bit value */
++-typedef unsigned char     CK_BYTE;
+++typedef unsigned char CK_BYTE;
++ 
++ /* an unsigned 8-bit character */
++-typedef CK_BYTE           CK_CHAR;
+++typedef CK_BYTE CK_CHAR;
++ 
++ /* an 8-bit UTF-8 character */
++-typedef CK_BYTE           CK_UTF8CHAR;
+++typedef CK_BYTE CK_UTF8CHAR;
++ 
++ /* a BYTE-sized Boolean flag */
++-typedef CK_BYTE           CK_BBOOL;
+++typedef CK_BYTE CK_BBOOL;
++ 
++ /* an unsigned value, at least 32 bits long */
++ typedef unsigned long int CK_ULONG;
++ 
++ /* a signed value, the same size as a CK_ULONG */
++-typedef long int          CK_LONG;
+++/* CK_LONG is new for v2.0 */
+++typedef long int CK_LONG;
++ 
++ /* at least 32 bits; each bit is a Boolean flag */
++-typedef CK_ULONG          CK_FLAGS;
++-
+++typedef CK_ULONG CK_FLAGS;
++ 
++ /* some special values for certain CK_ULONG variables */
++-#define CK_UNAVAILABLE_INFORMATION      (~0UL)
++-#define CK_EFFECTIVELY_INFINITE         0UL
++-
+++#define CK_UNAVAILABLE_INFORMATION (~0UL)
+++#define CK_EFFECTIVELY_INFINITE 0
++ 
++-typedef CK_BYTE     CK_PTR   CK_BYTE_PTR;
++-typedef CK_CHAR     CK_PTR   CK_CHAR_PTR;
++-typedef CK_UTF8CHAR CK_PTR   CK_UTF8CHAR_PTR;
++-typedef CK_ULONG    CK_PTR   CK_ULONG_PTR;
++-typedef void        CK_PTR   CK_VOID_PTR;
+++typedef CK_BYTE CK_PTR CK_BYTE_PTR;
+++typedef CK_CHAR CK_PTR CK_CHAR_PTR;
+++typedef CK_UTF8CHAR CK_PTR CK_UTF8CHAR_PTR;
+++typedef CK_ULONG CK_PTR CK_ULONG_PTR;
+++typedef void CK_PTR CK_VOID_PTR;
++ 
++ /* Pointer to a CK_VOID_PTR-- i.e., pointer to pointer to void */
++ typedef CK_VOID_PTR CK_PTR CK_VOID_PTR_PTR;
++ 
+++/* The following value is always invalid if used as a session */
+++/* handle or object handle */
+++#define CK_INVALID_HANDLE 0
++ 
++-/* The following value is always invalid if used as a session
++- * handle or object handle
++- */
++-#define CK_INVALID_HANDLE       0UL
++-
+++/* pack */
+++// #include "pkcs11p.h"
++ 
++ typedef struct CK_VERSION {
++-    CK_BYTE major;  /* integer portion of version number */
++-    CK_BYTE minor;  /* 1/100ths portion of version number */
+++    CK_BYTE major; /* integer portion of version number */
+++    CK_BYTE minor; /* 1/100ths portion of version number */
++ } CK_VERSION;
++ 
++ typedef CK_VERSION CK_PTR CK_VERSION_PTR;
++ 
++-
++ typedef struct CK_INFO {
++-    CK_VERSION  cryptokiVersion;        /* Cryptoki interface ver */
++-    CK_UTF8CHAR manufacturerID[32];     /* blank padded */
++-    CK_FLAGS    flags;                  /* must be zero */
+++    /* manufacturerID and libraryDecription have been changed from
+++   * CK_CHAR to CK_UTF8CHAR for v2.10 */
+++    CK_VERSION cryptokiVersion;     /* PKCS #11 interface ver */
+++    CK_UTF8CHAR manufacturerID[32]; /* blank padded */
+++    CK_FLAGS flags;                 /* must be zero */
+++
+++    /* libraryDescription and libraryVersion are new for v2.0 */
++     CK_UTF8CHAR libraryDescription[32]; /* blank padded */
++-    CK_VERSION  libraryVersion;         /* version of library */
+++    CK_VERSION libraryVersion;          /* version of library */
++ } CK_INFO;
++ 
++-typedef CK_INFO CK_PTR    CK_INFO_PTR;
++-
+++typedef CK_INFO CK_PTR CK_INFO_PTR;
++ 
++ /* CK_NOTIFICATION enumerates the types of notifications that
++- * Cryptoki provides to an application
++- */
+++ * PKCS #11 provides to an application */
+++/* CK_NOTIFICATION has been changed from an enum to a CK_ULONG
+++ * for v2.0 */
++ typedef CK_ULONG CK_NOTIFICATION;
++-#define CKN_SURRENDER           0UL
++-#define CKN_OTP_CHANGED         1UL
+++#define CKN_SURRENDER 0
++ 
++-typedef CK_ULONG          CK_SLOT_ID;
+++typedef CK_ULONG CK_SLOT_ID;
++ 
++ typedef CK_SLOT_ID CK_PTR CK_SLOT_ID_PTR;
++ 
++-
++ /* CK_SLOT_INFO provides information about a slot */
++ typedef struct CK_SLOT_INFO {
++-    CK_UTF8CHAR slotDescription[64];  /* blank padded */
++-    CK_UTF8CHAR manufacturerID[32];   /* blank padded */
++-    CK_FLAGS    flags;
+++    /* slotDescription and manufacturerID have been changed from
+++     * CK_CHAR to CK_UTF8CHAR for v2.10 */
+++    CK_UTF8CHAR slotDescription[64]; /* blank padded */
+++    CK_UTF8CHAR manufacturerID[32];  /* blank padded */
+++    CK_FLAGS flags;
++ 
++-    CK_VERSION  hardwareVersion;      /* version of hardware */
++-    CK_VERSION  firmwareVersion;      /* version of firmware */
+++    /* hardwareVersion and firmwareVersion are new for v2.0 */
+++    CK_VERSION hardwareVersion; /* version of hardware */
+++    CK_VERSION firmwareVersion; /* version of firmware */
++ } CK_SLOT_INFO;
++ 
++ /* flags: bit flags that provide capabilities of the slot
++  *      Bit Flag              Mask        Meaning
++  */
++-#define CKF_TOKEN_PRESENT     0x00000001UL  /* a token is there */
++-#define CKF_REMOVABLE_DEVICE  0x00000002UL  /* removable devices*/
++-#define CKF_HW_SLOT           0x00000004UL  /* hardware slot */
+++#define CKF_TOKEN_PRESENT 0x00000001UL    /* a token is there */
+++#define CKF_REMOVABLE_DEVICE 0x00000002UL /* removable devices*/
+++#define CKF_HW_SLOT 0x00000004UL          /* hardware slot */
++ 
++ typedef CK_SLOT_INFO CK_PTR CK_SLOT_INFO_PTR;
++ 
++-
++ /* CK_TOKEN_INFO provides information about a token */
++ typedef struct CK_TOKEN_INFO {
++-    CK_UTF8CHAR label[32];            /* blank padded */
++-    CK_UTF8CHAR manufacturerID[32];   /* blank padded */
++-    CK_UTF8CHAR model[16];            /* blank padded */
++-    CK_CHAR     serialNumber[16];     /* blank padded */
++-    CK_FLAGS    flags;                /* see below */
++-
++-    CK_ULONG    ulMaxSessionCount;    /* max open sessions */
++-    CK_ULONG    ulSessionCount;       /* sess. now open */
++-    CK_ULONG    ulMaxRwSessionCount;  /* max R/W sessions */
++-    CK_ULONG    ulRwSessionCount;     /* R/W sess. now open */
++-    CK_ULONG    ulMaxPinLen;          /* in bytes */
++-    CK_ULONG    ulMinPinLen;          /* in bytes */
++-    CK_ULONG    ulTotalPublicMemory;  /* in bytes */
++-    CK_ULONG    ulFreePublicMemory;   /* in bytes */
++-    CK_ULONG    ulTotalPrivateMemory; /* in bytes */
++-    CK_ULONG    ulFreePrivateMemory;  /* in bytes */
++-    CK_VERSION  hardwareVersion;      /* version of hardware */
++-    CK_VERSION  firmwareVersion;      /* version of firmware */
++-    CK_CHAR     utcTime[16];          /* time */
+++    /* label, manufacturerID, and model have been changed from
+++     * CK_CHAR to CK_UTF8CHAR for v2.10 */
+++    CK_UTF8CHAR label[32];          /* blank padded */
+++    CK_UTF8CHAR manufacturerID[32]; /* blank padded */
+++    CK_UTF8CHAR model[16];          /* blank padded */
+++    CK_CHAR serialNumber[16];       /* blank padded */
+++    CK_FLAGS flags;                 /* see below */
+++
+++    /* ulMaxSessionCount, ulSessionCount, ulMaxRwSessionCount,
+++     * ulRwSessionCount, ulMaxPinLen, and ulMinPinLen have all been
+++     * changed from CK_USHORT to CK_ULONG for v2.0 */
+++    CK_ULONG ulMaxSessionCount;    /* max open sessions */
+++    CK_ULONG ulSessionCount;       /* sess. now open */
+++    CK_ULONG ulMaxRwSessionCount;  /* max R/W sessions */
+++    CK_ULONG ulRwSessionCount;     /* R/W sess. now open */
+++    CK_ULONG ulMaxPinLen;          /* in bytes */
+++    CK_ULONG ulMinPinLen;          /* in bytes */
+++    CK_ULONG ulTotalPublicMemory;  /* in bytes */
+++    CK_ULONG ulFreePublicMemory;   /* in bytes */
+++    CK_ULONG ulTotalPrivateMemory; /* in bytes */
+++    CK_ULONG ulFreePrivateMemory;  /* in bytes */
+++
+++    /* hardwareVersion, firmwareVersion, and time are new for
+++     * v2.0 */
+++    CK_VERSION hardwareVersion; /* version of hardware */
+++    CK_VERSION firmwareVersion; /* version of firmware */
+++    CK_CHAR utcTime[16];        /* time */
++ } CK_TOKEN_INFO;
++ 
++ /* The flags parameter is defined as follows:
++  *      Bit Flag                    Mask        Meaning
++  */
++-#define CKF_RNG                     0x00000001UL  /* has random # generator */
++-#define CKF_WRITE_PROTECTED         0x00000002UL  /* token is write-protected */
++-#define CKF_LOGIN_REQUIRED          0x00000004UL  /* user must login */
++-#define CKF_USER_PIN_INITIALIZED    0x00000008UL  /* normal user's PIN is set */
+++#define CKF_RNG 0x00000001UL                  /* has random # \
+++                                               * generator */
+++#define CKF_WRITE_PROTECTED 0x00000002UL      /* token is \
+++                                               * write-   \
+++                                               * protected */
+++#define CKF_LOGIN_REQUIRED 0x00000004UL       /* user must \
+++                                               * login */
+++#define CKF_USER_PIN_INITIALIZED 0x00000008UL /* normal user's \
+++                                               * PIN is set */
++ 
++-/* CKF_RESTORE_KEY_NOT_NEEDED.  If it is set,
+++/* CKF_RESTORE_KEY_NOT_NEEDED is new for v2.0.  If it is set,
++  * that means that *every* time the state of cryptographic
++  * operations of a session is successfully saved, all keys
++- * needed to continue those operations are stored in the state
++- */
++-#define CKF_RESTORE_KEY_NOT_NEEDED  0x00000020UL
+++ * needed to continue those operations are stored in the state */
+++#define CKF_RESTORE_KEY_NOT_NEEDED 0x00000020UL
++ 
++-/* CKF_CLOCK_ON_TOKEN.  If it is set, that means
+++/* CKF_CLOCK_ON_TOKEN is new for v2.0.  If it is set, that means
++  * that the token has some sort of clock.  The time on that
++- * clock is returned in the token info structure
++- */
++-#define CKF_CLOCK_ON_TOKEN          0x00000040UL
+++ * clock is returned in the token info structure */
+++#define CKF_CLOCK_ON_TOKEN 0x00000040UL
++ 
++-/* CKF_PROTECTED_AUTHENTICATION_PATH.  If it is
+++/* CKF_PROTECTED_AUTHENTICATION_PATH is new for v2.0.  If it is
++  * set, that means that there is some way for the user to login
++- * without sending a PIN through the Cryptoki library itself
++- */
+++ * without sending a PIN through the PKCS #11 library itself */
++ #define CKF_PROTECTED_AUTHENTICATION_PATH 0x00000100UL
++ 
++-/* CKF_DUAL_CRYPTO_OPERATIONS.  If it is true,
+++/* CKF_DUAL_CRYPTO_OPERATIONS is new for v2.0.  If it is true,
++  * that means that a single session with the token can perform
++  * dual simultaneous cryptographic operations (digest and
++  * encrypt; decrypt and digest; sign and encrypt; and decrypt
++- * and sign)
++- */
++-#define CKF_DUAL_CRYPTO_OPERATIONS  0x00000200UL
+++ * and sign) */
+++#define CKF_DUAL_CRYPTO_OPERATIONS 0x00000200UL
++ 
++-/* CKF_TOKEN_INITIALIZED. If it is true, the
+++/* CKF_TOKEN_INITIALIZED if new for v2.10. If it is true, the
++  * token has been initialized using C_InitializeToken or an
++  * equivalent mechanism outside the scope of PKCS #11.
++  * Calling C_InitializeToken when this flag is set will cause
++- * the token to be reinitialized.
++- */
++-#define CKF_TOKEN_INITIALIZED       0x00000400UL
+++ * the token to be reinitialized. */
+++#define CKF_TOKEN_INITIALIZED 0x00000400UL
++ 
++-/* CKF_SECONDARY_AUTHENTICATION. If it is
+++/* CKF_SECONDARY_AUTHENTICATION if new for v2.10. If it is
++  * true, the token supports secondary authentication for
++- * private key objects.
++- */
++-#define CKF_SECONDARY_AUTHENTICATION  0x00000800UL
+++ * private key objects. This flag is deprecated in v2.11 and
+++   onwards. */
+++#define CKF_SECONDARY_AUTHENTICATION 0x00000800UL
++ 
++-/* CKF_USER_PIN_COUNT_LOW. If it is true, an
+++/* CKF_USER_PIN_COUNT_LOW if new for v2.10. If it is true, an
++  * incorrect user login PIN has been entered at least once
++- * since the last successful authentication.
++- */
++-#define CKF_USER_PIN_COUNT_LOW       0x00010000UL
+++ * since the last successful authentication. */
+++#define CKF_USER_PIN_COUNT_LOW 0x00010000UL
++ 
++-/* CKF_USER_PIN_FINAL_TRY. If it is true,
++- * supplying an incorrect user PIN will it to become locked.
++- */
++-#define CKF_USER_PIN_FINAL_TRY       0x00020000UL
+++/* CKF_USER_PIN_FINAL_TRY if new for v2.10. If it is true,
+++ * supplying an incorrect user PIN will it to become locked. */
+++#define CKF_USER_PIN_FINAL_TRY 0x00020000UL
++ 
++-/* CKF_USER_PIN_LOCKED. If it is true, the
+++/* CKF_USER_PIN_LOCKED if new for v2.10. If it is true, the
++  * user PIN has been locked. User login to the token is not
++- * possible.
++- */
++-#define CKF_USER_PIN_LOCKED          0x00040000UL
+++ * possible. */
+++#define CKF_USER_PIN_LOCKED 0x00040000UL
++ 
++-/* CKF_USER_PIN_TO_BE_CHANGED. If it is true,
+++/* CKF_USER_PIN_TO_BE_CHANGED if new for v2.10. If it is true,
++  * the user PIN value is the default value set by token
++  * initialization or manufacturing, or the PIN has been
++- * expired by the card.
++- */
++-#define CKF_USER_PIN_TO_BE_CHANGED   0x00080000UL
+++ * expired by the card. */
+++#define CKF_USER_PIN_TO_BE_CHANGED 0x00080000UL
++ 
++-/* CKF_SO_PIN_COUNT_LOW. If it is true, an
+++/* CKF_SO_PIN_COUNT_LOW if new for v2.10. If it is true, an
++  * incorrect SO login PIN has been entered at least once since
++- * the last successful authentication.
++- */
++-#define CKF_SO_PIN_COUNT_LOW         0x00100000UL
+++ * the last successful authentication. */
+++#define CKF_SO_PIN_COUNT_LOW 0x00100000UL
++ 
++-/* CKF_SO_PIN_FINAL_TRY. If it is true,
++- * supplying an incorrect SO PIN will it to become locked.
++- */
++-#define CKF_SO_PIN_FINAL_TRY         0x00200000UL
+++/* CKF_SO_PIN_FINAL_TRY if new for v2.10. If it is true,
+++ * supplying an incorrect SO PIN will it to become locked. */
+++#define CKF_SO_PIN_FINAL_TRY 0x00200000UL
++ 
++-/* CKF_SO_PIN_LOCKED. If it is true, the SO
+++/* CKF_SO_PIN_LOCKED if new for v2.10. If it is true, the SO
++  * PIN has been locked. SO login to the token is not possible.
++  */
++-#define CKF_SO_PIN_LOCKED            0x00400000UL
+++#define CKF_SO_PIN_LOCKED 0x00400000UL
++ 
++-/* CKF_SO_PIN_TO_BE_CHANGED. If it is true,
+++/* CKF_SO_PIN_TO_BE_CHANGED if new for v2.10. If it is true,
++  * the SO PIN value is the default value set by token
++  * initialization or manufacturing, or the PIN has been
++- * expired by the card.
++- */
++-#define CKF_SO_PIN_TO_BE_CHANGED     0x00800000UL
+++ * expired by the card. */
+++#define CKF_SO_PIN_TO_BE_CHANGED 0x00800000UL
++ 
++-#define CKF_ERROR_STATE              0x01000000UL
+++#define CKF_ERROR_STATE 0x01000000UL
++ 
++ typedef CK_TOKEN_INFO CK_PTR CK_TOKEN_INFO_PTR;
++ 
++-
++-/* CK_SESSION_HANDLE is a Cryptoki-assigned value that
++- * identifies a session
++- */
++-typedef CK_ULONG          CK_SESSION_HANDLE;
+++/* CK_SESSION_HANDLE is a PKCS #11-assigned value that
+++ * identifies a session */
+++typedef CK_ULONG CK_SESSION_HANDLE;
++ 
++ typedef CK_SESSION_HANDLE CK_PTR CK_SESSION_HANDLE_PTR;
++ 
++-
++-/* CK_USER_TYPE enumerates the types of Cryptoki users */
++-typedef CK_ULONG          CK_USER_TYPE;
+++/* CK_USER_TYPE enumerates the types of PKCS #11 users */
+++/* CK_USER_TYPE has been changed from an enum to a CK_ULONG for
+++ * v2.0 */
+++typedef CK_ULONG CK_USER_TYPE;
++ /* Security Officer */
++-#define CKU_SO                  0UL
+++#define CKU_SO 0
++ /* Normal user */
++-#define CKU_USER                1UL
++-/* Context specific */
++-#define CKU_CONTEXT_SPECIFIC    2UL
+++#define CKU_USER 1
+++/* Context specific (added in v2.20) */
+++#define CKU_CONTEXT_SPECIFIC 2
++ 
++ /* CK_STATE enumerates the session states */
++-typedef CK_ULONG          CK_STATE;
++-#define CKS_RO_PUBLIC_SESSION   0UL
++-#define CKS_RO_USER_FUNCTIONS   1UL
++-#define CKS_RW_PUBLIC_SESSION   2UL
++-#define CKS_RW_USER_FUNCTIONS   3UL
++-#define CKS_RW_SO_FUNCTIONS     4UL
+++/* CK_STATE has been changed from an enum to a CK_ULONG for
+++ * v2.0 */
+++typedef CK_ULONG CK_STATE;
+++#define CKS_RO_PUBLIC_SESSION 0
+++#define CKS_RO_USER_FUNCTIONS 1
+++#define CKS_RW_PUBLIC_SESSION 2
+++#define CKS_RW_USER_FUNCTIONS 3
+++#define CKS_RW_SO_FUNCTIONS 4
++ 
++ /* CK_SESSION_INFO provides information about a session */
++ typedef struct CK_SESSION_INFO {
++     CK_SLOT_ID slotID;
++-    CK_STATE   state;
++-    CK_FLAGS   flags;          /* see below */
++-    CK_ULONG   ulDeviceError;  /* device-dependent error code */
+++    CK_STATE state;
+++    CK_FLAGS flags; /* see below */
+++
+++    /* ulDeviceError was changed from CK_USHORT to CK_ULONG for
+++     * v2.0 */
+++    CK_ULONG ulDeviceError; /* device-dependent error code */
++ } CK_SESSION_INFO;
++ 
++ /* The flags are defined in the following table:
++  *      Bit Flag                Mask        Meaning
++  */
++-#define CKF_RW_SESSION          0x00000002UL /* session is r/w */
++-#define CKF_SERIAL_SESSION      0x00000004UL /* no parallel    */
+++#define CKF_RW_SESSION 0x00000002UL     /* session is r/w */
+++#define CKF_SERIAL_SESSION 0x00000004UL /* no parallel */
++ 
++ typedef CK_SESSION_INFO CK_PTR CK_SESSION_INFO_PTR;
++ 
++-
++ /* CK_OBJECT_HANDLE is a token-specific identifier for an
++- * object
++- */
++-typedef CK_ULONG          CK_OBJECT_HANDLE;
+++ * object  */
+++typedef CK_ULONG CK_OBJECT_HANDLE;
++ 
++ typedef CK_OBJECT_HANDLE CK_PTR CK_OBJECT_HANDLE_PTR;
++ 
++-
++ /* CK_OBJECT_CLASS is a value that identifies the classes (or
++- * types) of objects that Cryptoki recognizes.  It is defined
++- * as follows:
++- */
++-typedef CK_ULONG          CK_OBJECT_CLASS;
+++ * types) of objects that PKCS #11 recognizes.  It is defined
+++ * as follows: */
+++/* CK_OBJECT_CLASS was changed from CK_USHORT to CK_ULONG for
+++ * v2.0 */
+++typedef CK_ULONG CK_OBJECT_CLASS;
++ 
++ /* The following classes of objects are defined: */
++-#define CKO_DATA              0x00000000UL
++-#define CKO_CERTIFICATE       0x00000001UL
++-#define CKO_PUBLIC_KEY        0x00000002UL
++-#define CKO_PRIVATE_KEY       0x00000003UL
++-#define CKO_SECRET_KEY        0x00000004UL
++-#define CKO_HW_FEATURE        0x00000005UL
+++/* CKO_HW_FEATURE is new for v2.10 */
+++/* CKO_DOMAIN_PARAMETERS is new for v2.11 */
+++/* CKO_MECHANISM is new for v2.20 */
+++/* CKO_PROFILE is new for v3.00 */
+++#define CKO_DATA 0x00000000UL
+++#define CKO_CERTIFICATE 0x00000001UL
+++#define CKO_PUBLIC_KEY 0x00000002UL
+++#define CKO_PRIVATE_KEY 0x00000003UL
+++#define CKO_SECRET_KEY 0x00000004UL
+++#define CKO_HW_FEATURE 0x00000005UL
++ #define CKO_DOMAIN_PARAMETERS 0x00000006UL
++-#define CKO_MECHANISM         0x00000007UL
++-#define CKO_OTP_KEY           0x00000008UL
++-#define CKO_PROFILE           0x00000009UL
++-
++-#define CKO_VENDOR_DEFINED    0x80000000UL
+++#define CKO_MECHANISM 0x00000007UL
+++#define CKO_PROFILE 0x00000009UL
+++#define CKO_VENDOR_DEFINED 0x80000000UL
++ 
++ typedef CK_OBJECT_CLASS CK_PTR CK_OBJECT_CLASS_PTR;
++ 
+++/* CK_PROFILE_ID is new for v3.00. CK_PROFILE_ID is a value that
+++ * identifies the profile that the token supports. */
+++typedef CK_ULONG CK_PROFILE_ID;
+++
++ /* Profile ID's */
++-#define CKP_INVALID_ID                0x00000000UL
++-#define CKP_BASELINE_PROVIDER         0x00000001UL
++-#define CKP_EXTENDED_PROVIDER         0x00000002UL
++-#define CKP_AUTHENTICATION_TOKEN      0x00000003UL
+++#define CKP_INVALID_ID 0x00000000UL
+++#define CKP_BASELINE_PROVIDER 0x00000001UL
+++#define CKP_EXTENDED_PROVIDER 0x00000002UL
+++#define CKP_AUTHENTICATION_TOKEN 0x00000003UL
++ #define CKP_PUBLIC_CERTIFICATES_TOKEN 0x00000004UL
++-#define CKP_VENDOR_DEFINED            0x80000000UL
+++#define CKP_VENDOR_DEFINED 0x80000000UL
++ 
++-/* CK_HW_FEATURE_TYPE is a value that identifies the hardware feature type
++- * of an object with CK_OBJECT_CLASS equal to CKO_HW_FEATURE.
++- */
++-typedef CK_ULONG          CK_HW_FEATURE_TYPE;
+++/* CK_HW_FEATURE_TYPE is new for v2.10. CK_HW_FEATURE_TYPE is a
+++ * value that identifies the hardware feature type of an object
+++ * with CK_OBJECT_CLASS equal to CKO_HW_FEATURE. */
+++typedef CK_ULONG CK_HW_FEATURE_TYPE;
++ 
++ /* The following hardware feature types are defined */
++-#define CKH_MONOTONIC_COUNTER  0x00000001UL
++-#define CKH_CLOCK              0x00000002UL
++-#define CKH_USER_INTERFACE     0x00000003UL
++-#define CKH_VENDOR_DEFINED     0x80000000UL
+++/* CKH_USER_INTERFACE is new for v2.20 */
+++#define CKH_MONOTONIC_COUNTER 0x00000001UL
+++#define CKH_CLOCK 0x00000002UL
+++#define CKH_USER_INTERFACE 0x00000003UL
+++#define CKH_VENDOR_DEFINED 0x80000000UL
++ 
++ /* CK_KEY_TYPE is a value that identifies a key type */
++-typedef CK_ULONG          CK_KEY_TYPE;
+++/* CK_KEY_TYPE was changed from CK_USHORT to CK_ULONG for v2.0 */
+++typedef CK_ULONG CK_KEY_TYPE;
++ 
++ /* the following key types are defined: */
++-#define CKK_RSA                 0x00000000UL
++-#define CKK_DSA                 0x00000001UL
++-#define CKK_DH                  0x00000002UL
++-#define CKK_ECDSA               0x00000003UL /* Deprecated */
++-#define CKK_EC                  0x00000003UL
++-#define CKK_X9_42_DH            0x00000004UL
++-#define CKK_KEA                 0x00000005UL
++-#define CKK_GENERIC_SECRET      0x00000010UL
++-#define CKK_RC2                 0x00000011UL
++-#define CKK_RC4                 0x00000012UL
++-#define CKK_DES                 0x00000013UL
++-#define CKK_DES2                0x00000014UL
++-#define CKK_DES3                0x00000015UL
++-#define CKK_CAST                0x00000016UL
++-#define CKK_CAST3               0x00000017UL
++-#define CKK_CAST5               0x00000018UL /* Deprecated */
++-#define CKK_CAST128             0x00000018UL
++-#define CKK_RC5                 0x00000019UL
++-#define CKK_IDEA                0x0000001AUL
++-#define CKK_SKIPJACK            0x0000001BUL
++-#define CKK_BATON               0x0000001CUL
++-#define CKK_JUNIPER             0x0000001DUL
++-#define CKK_CDMF                0x0000001EUL
++-#define CKK_AES                 0x0000001FUL
++-#define CKK_BLOWFISH            0x00000020UL
++-#define CKK_TWOFISH             0x00000021UL
++-#define CKK_SECURID             0x00000022UL
++-#define CKK_HOTP                0x00000023UL
++-#define CKK_ACTI                0x00000024UL
++-#define CKK_CAMELLIA            0x00000025UL
++-#define CKK_ARIA                0x00000026UL
++-
++-/* the following definitions were added in the 2.30 header file,
++- * but never defined in the spec. */
++-#define CKK_MD5_HMAC            0x00000027UL
++-#define CKK_SHA_1_HMAC          0x00000028UL
++-#define CKK_RIPEMD128_HMAC      0x00000029UL
++-#define CKK_RIPEMD160_HMAC      0x0000002AUL
++-#define CKK_SHA256_HMAC         0x0000002BUL
++-#define CKK_SHA384_HMAC         0x0000002CUL
++-#define CKK_SHA512_HMAC         0x0000002DUL
++-#define CKK_SHA224_HMAC         0x0000002EUL
++-
++-#define CKK_SEED                0x0000002FUL
++-#define CKK_GOSTR3410           0x00000030UL
++-#define CKK_GOSTR3411           0x00000031UL
++-#define CKK_GOST28147           0x00000032UL
++-#define CKK_CHACHA20            0x00000033UL
++-#define CKK_POLY1305            0x00000034UL
++-#define CKK_AES_XTS             0x00000035UL
++-#define CKK_SHA3_224_HMAC       0x00000036UL
++-#define CKK_SHA3_256_HMAC       0x00000037UL
++-#define CKK_SHA3_384_HMAC       0x00000038UL
++-#define CKK_SHA3_512_HMAC       0x00000039UL
++-#define CKK_BLAKE2B_160_HMAC    0x0000003aUL
++-#define CKK_BLAKE2B_256_HMAC    0x0000003bUL
++-#define CKK_BLAKE2B_384_HMAC    0x0000003cUL
++-#define CKK_BLAKE2B_512_HMAC    0x0000003dUL
++-#define CKK_SALSA20             0x0000003eUL
++-#define CKK_X2RATCHET           0x0000003fUL
++-#define CKK_EC_EDWARDS          0x00000040UL
++-#define CKK_EC_MONTGOMERY       0x00000041UL
++-#define CKK_HKDF                0x00000042UL
++-#define CKK_SHA512_224_HMAC     0x00000043UL
++-#define CKK_SHA512_256_HMAC     0x00000044UL
++-#define CKK_SHA512_T_HMAC       0x00000045UL
++-
++-#define CKK_VENDOR_DEFINED      0x80000000UL
+++#define CKK_RSA 0x00000000UL
+++#define CKK_DSA 0x00000001UL
+++#define CKK_DH 0x00000002UL
+++
+++/* CKK_ECDSA and CKK_KEA are new for v2.0 */
+++/* CKK_ECDSA is deprecated in v2.11, CKK_EC is preferred. */
+++#define CKK_ECDSA 0x00000003UL
+++#define CKK_EC 0x00000003UL
+++#define CKK_X9_42_DH 0x00000004UL
+++#define CKK_KEA 0x00000005UL
+++
+++#define CKK_GENERIC_SECRET 0x00000010UL
+++#define CKK_RC2 0x00000011UL
+++#define CKK_RC4 0x00000012UL
+++#define CKK_DES 0x00000013UL
+++#define CKK_DES2 0x00000014UL
+++#define CKK_DES3 0x00000015UL
+++
+++/* all these key types are new for v2.0 */
+++#define CKK_CAST 0x00000016UL
+++#define CKK_CAST3 0x00000017UL
+++/* CKK_CAST5 is deprecated in v2.11, CKK_CAST128 is preferred. */
+++#define CKK_CAST5 0x00000018UL
+++#define CKK_CAST128 0x00000018UL
+++#define CKK_RC5 0x00000019UL
+++#define CKK_IDEA 0x0000001AUL
+++#define CKK_SKIPJACK 0x0000001BUL
+++#define CKK_BATON 0x0000001CUL
+++#define CKK_JUNIPER 0x0000001DUL
+++#define CKK_CDMF 0x0000001EUL
+++#define CKK_AES 0x0000001FUL
+++
+++/* BlowFish and TwoFish are new for v2.20 */
+++#define CKK_BLOWFISH 0x00000020UL
+++#define CKK_TWOFISH 0x00000021UL
+++
+++/* Camellia is proposed for v2.20 Amendment 3 */
+++#define CKK_CAMELLIA 0x00000025UL
+++
+++#define CKK_SEED 0x0000002FUL /* was 2A */
+++
+++/* added in v2.30 */
+++#define CKK_ARIA 0x00000026UL
+++
+++/* added in 2.40 */
+++#define CKK_MD5_HMAC 0x00000027UL
+++#define CKK_SHA_1_HMAC 0x00000028UL
+++#define CKK_RIPEMD128_HMAC 0x00000029UL
+++#define CKK_RIPEMD160_HMAC 0x0000002AUL
+++#define CKK_SHA256_HMAC 0x0000002BUL
+++#define CKK_SHA384_HMAC 0x0000002CUL
+++#define CKK_SHA512_HMAC 0x0000002DUL
+++#define CKK_SHA224_HMAC 0x0000002EUL
+++#define CKK_GOSTR3410 0x00000030UL
+++#define CKK_GOSTR3411 0x00000031UL
+++#define CKK_GOST28147 0x00000032UL
+++#define CKK_CHACHA20 0x00000033UL
+++#define CKK_POLY1305 0x00000034UL
+++#define CKK_AES_XTS 0x00000035UL
+++#define CKK_SHA3_224_HMAC 0x00000036UL
+++#define CKK_SHA3_256_HMAC 0x00000037UL
+++#define CKK_SHA3_384_HMAC 0x00000038UL
+++#define CKK_SHA3_512_HMAC 0x00000039UL
+++
+++/* added in 3.0 */
+++#define CKK_BLAKE2B_160_HMAC 0x0000003aUL
+++#define CKK_BLAKE2B_256_HMAC 0x0000003bUL
+++#define CKK_BLAKE2B_384_HMAC 0x0000003cUL
+++#define CKK_BLAKE2B_512_HMAC 0x0000003dUL
+++#define CKK_SALSA20 0x0000003eUL
+++#define CKK_X2RATCHET 0x0000003fUL
+++#define CKK_EC_EDWARDS 0x00000040UL
+++#define CKK_EC_MONTGOMERY 0x00000041UL
+++#define CKK_HKDF 0x00000042UL
+++#define CKK_SHA512_224_HMAC 0x00000043UL
+++#define CKK_SHA512_256_HMAC 0x00000044UL
+++#define CKK_SHA512_T_HMAC 0x00000045UL
++ 
+++#define CKK_VENDOR_DEFINED 0x80000000UL
++ 
++ /* CK_CERTIFICATE_TYPE is a value that identifies a certificate
++- * type
++- */
++-typedef CK_ULONG          CK_CERTIFICATE_TYPE;
++-
++-#define CK_CERTIFICATE_CATEGORY_UNSPECIFIED     0UL
++-#define CK_CERTIFICATE_CATEGORY_TOKEN_USER      1UL
++-#define CK_CERTIFICATE_CATEGORY_AUTHORITY       2UL
++-#define CK_CERTIFICATE_CATEGORY_OTHER_ENTITY    3UL
++-
++-#define CK_SECURITY_DOMAIN_UNSPECIFIED     0UL
++-#define CK_SECURITY_DOMAIN_MANUFACTURER    1UL
++-#define CK_SECURITY_DOMAIN_OPERATOR        2UL
++-#define CK_SECURITY_DOMAIN_THIRD_PARTY     3UL
++-
+++ * type */
+++/* CK_CERTIFICATE_TYPE was changed from CK_USHORT to CK_ULONG
+++ * for v2.0 */
+++typedef CK_ULONG CK_CERTIFICATE_TYPE;
++ 
++ /* The following certificate types are defined: */
++-#define CKC_X_509               0x00000000UL
++-#define CKC_X_509_ATTR_CERT     0x00000001UL
++-#define CKC_WTLS                0x00000002UL
++-#define CKC_VENDOR_DEFINED      0x80000000UL
++-
+++/* CKC_X_509_ATTR_CERT is new for v2.10 */
+++/* CKC_WTLS is new for v2.20 */
+++#define CKC_X_509 0x00000000UL
+++#define CKC_X_509_ATTR_CERT 0x00000001UL
+++#define CKC_WTLS 0x00000002UL
+++#define CKC_VENDOR_DEFINED 0x80000000UL
++ 
++ /* CK_ATTRIBUTE_TYPE is a value that identifies an attribute
++- * type
++- */
++-typedef CK_ULONG          CK_ATTRIBUTE_TYPE;
+++ * type */
+++/* CK_ATTRIBUTE_TYPE was changed from CK_USHORT to CK_ULONG for
+++ * v2.0 */
+++typedef CK_ULONG CK_ATTRIBUTE_TYPE;
++ 
++-/* The CKF_ARRAY_ATTRIBUTE flag identifies an attribute which
++- * consists of an array of values.
++- */
++-#define CKF_ARRAY_ATTRIBUTE     0x40000000UL
+++/* values for CKA_CERTIFICATE_CATEGORY v2.20 */
+++typedef CK_ULONG CK_CERTIFICATE_CATEGORY;
+++#define CK_CERTIFICATE_CATEGORY_UNSPECIFIED 0UL
+++#define CK_CERTIFICATE_CATEGORY_TOKEN_USER 1UL
+++#define CK_CERTIFICATE_CATEGORY_AUTHORITY 2UL
+++#define CK_CERTIFICATE_CATEGORY_OTHER_ENTITY 3UL
++ 
++-/* The following OTP-related defines relate to the CKA_OTP_FORMAT attribute */
++-#define CK_OTP_FORMAT_DECIMAL           0UL
++-#define CK_OTP_FORMAT_HEXADECIMAL       1UL
++-#define CK_OTP_FORMAT_ALPHANUMERIC      2UL
++-#define CK_OTP_FORMAT_BINARY            3UL
+++/* values for CKA_JAVA_MIDP_SECURITY_DOMAIN v2.20 */
+++typedef CK_ULONG CK_JAVA_MIDP_SECURITY_DOMAIN;
+++#define CK_SECURITY_DOMAIN_UNSPECIFIED 0UL
+++#define CK_SECURITY_DOMAIN_MANUFACTURER 1UL
+++#define CK_SECURITY_DOMAIN_OPERATOR 2UL
+++#define CK_SECURITY_DOMAIN_THIRD_PARTY 3UL
+++
+++/* values for CKA_OTP_FORMAT */
+++#define CK_OTP_FORMAT_DECIMAL 0UL
+++#define CK_OTP_FORMAT_HEXADECIMAL 1UL
+++#define CK_OTP_FORMAT_ALPHANUMERIC 2UL
+++#define CK_OTP_FORMAT_BINARY 3UL
+++
+++/* values for CKA_OTP_CHALLENGE_REQUIREMENT, CKA_OTP_TIME_REQUIREMENT,
+++ * CKA_OTP_COUNTER_REQUIREMENT, CKA_OTP_PIN_REQUIREMENT */
+++#define CK_OTP_PARAM_IGNORED 0UL
+++#define CK_OTP_PARAM_OPTIONAL 1UL
+++#define CK_OTP_PARAM_MANDATORY 2UL
++ 
++-/* The following OTP-related defines relate to the CKA_OTP_..._REQUIREMENT
++- * attributes
++- */
++-#define CK_OTP_PARAM_IGNORED            0UL
++-#define CK_OTP_PARAM_OPTIONAL           1UL
++-#define CK_OTP_PARAM_MANDATORY          2UL
+++/* The CKF_ARRAY_ATTRIBUTE flag identifies an attribute which
+++   consists of an array of values. */
+++#define CKF_ARRAY_ATTRIBUTE 0x40000000UL
++ 
++ /* The following attribute types are defined: */
++-#define CKA_CLASS              0x00000000UL
++-#define CKA_TOKEN              0x00000001UL
++-#define CKA_PRIVATE            0x00000002UL
++-#define CKA_LABEL              0x00000003UL
++-#define CKA_UNIQUE_ID          0x00000004UL
++-#define CKA_APPLICATION        0x00000010UL
++-#define CKA_VALUE              0x00000011UL
++-#define CKA_OBJECT_ID          0x00000012UL
++-#define CKA_CERTIFICATE_TYPE   0x00000080UL
++-#define CKA_ISSUER             0x00000081UL
++-#define CKA_SERIAL_NUMBER      0x00000082UL
++-#define CKA_AC_ISSUER          0x00000083UL
++-#define CKA_OWNER              0x00000084UL
++-#define CKA_ATTR_TYPES         0x00000085UL
++-#define CKA_TRUSTED            0x00000086UL
++-#define CKA_CERTIFICATE_CATEGORY        0x00000087UL
++-#define CKA_JAVA_MIDP_SECURITY_DOMAIN   0x00000088UL
++-#define CKA_URL                         0x00000089UL
++-#define CKA_HASH_OF_SUBJECT_PUBLIC_KEY  0x0000008AUL
++-#define CKA_HASH_OF_ISSUER_PUBLIC_KEY   0x0000008BUL
++-#define CKA_NAME_HASH_ALGORITHM         0x0000008CUL
++-#define CKA_CHECK_VALUE                 0x00000090UL
++-
++-#define CKA_KEY_TYPE           0x00000100UL
++-#define CKA_SUBJECT            0x00000101UL
++-#define CKA_ID                 0x00000102UL
++-#define CKA_SENSITIVE          0x00000103UL
++-#define CKA_ENCRYPT            0x00000104UL
++-#define CKA_DECRYPT            0x00000105UL
++-#define CKA_WRAP               0x00000106UL
++-#define CKA_UNWRAP             0x00000107UL
++-#define CKA_SIGN               0x00000108UL
++-#define CKA_SIGN_RECOVER       0x00000109UL
++-#define CKA_VERIFY             0x0000010AUL
++-#define CKA_VERIFY_RECOVER     0x0000010BUL
++-#define CKA_DERIVE             0x0000010CUL
++-#define CKA_START_DATE         0x00000110UL
++-#define CKA_END_DATE           0x00000111UL
++-#define CKA_MODULUS            0x00000120UL
++-#define CKA_MODULUS_BITS       0x00000121UL
++-#define CKA_PUBLIC_EXPONENT    0x00000122UL
++-#define CKA_PRIVATE_EXPONENT   0x00000123UL
++-#define CKA_PRIME_1            0x00000124UL
++-#define CKA_PRIME_2            0x00000125UL
++-#define CKA_EXPONENT_1         0x00000126UL
++-#define CKA_EXPONENT_2         0x00000127UL
++-#define CKA_COEFFICIENT        0x00000128UL
++-#define CKA_PUBLIC_KEY_INFO    0x00000129UL
++-#define CKA_PRIME              0x00000130UL
++-#define CKA_SUBPRIME           0x00000131UL
++-#define CKA_BASE               0x00000132UL
++-
++-#define CKA_PRIME_BITS         0x00000133UL
++-#define CKA_SUBPRIME_BITS      0x00000134UL
++-#define CKA_SUB_PRIME_BITS     CKA_SUBPRIME_BITS
++-
++-#define CKA_VALUE_BITS         0x00000160UL
++-#define CKA_VALUE_LEN          0x00000161UL
++-#define CKA_EXTRACTABLE        0x00000162UL
++-#define CKA_LOCAL              0x00000163UL
++-#define CKA_NEVER_EXTRACTABLE  0x00000164UL
++-#define CKA_ALWAYS_SENSITIVE   0x00000165UL
++-#define CKA_KEY_GEN_MECHANISM  0x00000166UL
++-
++-#define CKA_MODIFIABLE         0x00000170UL
++-#define CKA_COPYABLE           0x00000171UL
++-
++-#define CKA_DESTROYABLE        0x00000172UL
++-
++-#define CKA_ECDSA_PARAMS       0x00000180UL /* Deprecated */
++-#define CKA_EC_PARAMS          0x00000180UL
++-
++-#define CKA_EC_POINT           0x00000181UL
++-
++-#define CKA_SECONDARY_AUTH     0x00000200UL /* Deprecated */
++-#define CKA_AUTH_PIN_FLAGS     0x00000201UL /* Deprecated */
++-
++-#define CKA_ALWAYS_AUTHENTICATE  0x00000202UL
++-
++-#define CKA_WRAP_WITH_TRUSTED    0x00000210UL
++-#define CKA_WRAP_TEMPLATE        (CKF_ARRAY_ATTRIBUTE|0x00000211UL)
++-#define CKA_UNWRAP_TEMPLATE      (CKF_ARRAY_ATTRIBUTE|0x00000212UL)
++-#define CKA_DERIVE_TEMPLATE      (CKF_ARRAY_ATTRIBUTE|0x00000213UL)
++-
++-#define CKA_OTP_FORMAT                0x00000220UL
++-#define CKA_OTP_LENGTH                0x00000221UL
++-#define CKA_OTP_TIME_INTERVAL         0x00000222UL
++-#define CKA_OTP_USER_FRIENDLY_MODE    0x00000223UL
+++#define CKA_CLASS 0x00000000UL
+++#define CKA_TOKEN 0x00000001UL
+++#define CKA_PRIVATE 0x00000002UL
+++#define CKA_LABEL 0x00000003UL
+++#define CKA_APPLICATION 0x00000010UL
+++#define CKA_VALUE 0x00000011UL
+++
+++/* CKA_OBJECT_ID is new for v2.10 */
+++#define CKA_OBJECT_ID 0x00000012UL
+++
+++#define CKA_CERTIFICATE_TYPE 0x00000080UL
+++#define CKA_ISSUER 0x00000081UL
+++#define CKA_SERIAL_NUMBER 0x00000082UL
+++
+++/* CKA_AC_ISSUER, CKA_OWNER, and CKA_ATTR_TYPES are new
+++ * for v2.10 */
+++#define CKA_AC_ISSUER 0x00000083UL
+++#define CKA_OWNER 0x00000084UL
+++#define CKA_ATTR_TYPES 0x00000085UL
+++
+++/* CKA_TRUSTED is new for v2.11 */
+++#define CKA_TRUSTED 0x00000086UL
+++
+++/* CKA_CERTIFICATE_CATEGORY ...
+++ * CKA_CHECK_VALUE are new for v2.20 */
+++#define CKA_CERTIFICATE_CATEGORY 0x00000087UL
+++#define CKA_JAVA_MIDP_SECURITY_DOMAIN 0x00000088UL
+++#define CKA_URL 0x00000089UL
+++#define CKA_HASH_OF_SUBJECT_PUBLIC_KEY 0x0000008AUL
+++#define CKA_HASH_OF_ISSUER_PUBLIC_KEY 0x0000008BUL
+++#define CKA_CHECK_VALUE 0x00000090UL
+++
+++#define CKA_KEY_TYPE 0x00000100UL
+++#define CKA_SUBJECT 0x00000101UL
+++#define CKA_ID 0x00000102UL
+++#define CKA_SENSITIVE 0x00000103UL
+++#define CKA_ENCRYPT 0x00000104UL
+++#define CKA_DECRYPT 0x00000105UL
+++#define CKA_WRAP 0x00000106UL
+++#define CKA_UNWRAP 0x00000107UL
+++#define CKA_SIGN 0x00000108UL
+++#define CKA_SIGN_RECOVER 0x00000109UL
+++#define CKA_VERIFY 0x0000010AUL
+++#define CKA_VERIFY_RECOVER 0x0000010BUL
+++#define CKA_DERIVE 0x0000010CUL
+++#define CKA_START_DATE 0x00000110UL
+++#define CKA_END_DATE 0x00000111UL
+++#define CKA_MODULUS 0x00000120UL
+++#define CKA_MODULUS_BITS 0x00000121UL
+++#define CKA_PUBLIC_EXPONENT 0x00000122UL
+++#define CKA_PRIVATE_EXPONENT 0x00000123UL
+++#define CKA_PRIME_1 0x00000124UL
+++#define CKA_PRIME_2 0x00000125UL
+++#define CKA_EXPONENT_1 0x00000126UL
+++#define CKA_EXPONENT_2 0x00000127UL
+++#define CKA_COEFFICIENT 0x00000128UL
+++/* CKA_PUBLIC_KEY_INFO is new for v2.40 */
+++#define CKA_PUBLIC_KEY_INFO 0x00000129UL
+++#define CKA_PRIME 0x00000130UL
+++#define CKA_SUBPRIME 0x00000131UL
+++#define CKA_BASE 0x00000132UL
+++
+++/* CKA_PRIME_BITS and CKA_SUB_PRIME_BITS are new for v2.11 */
+++#define CKA_PRIME_BITS 0x00000133UL
+++#define CKA_SUBPRIME_BITS 0x00000134UL
+++#define CKA_SUB_PRIME_BITS CKA_SUBPRIME_BITS
+++/* (To retain backwards-compatibility) */
+++
+++#define CKA_VALUE_BITS 0x00000160UL
+++#define CKA_VALUE_LEN 0x00000161UL
+++
+++/* CKA_EXTRACTABLE, CKA_LOCAL, CKA_NEVER_EXTRACTABLE,
+++ * CKA_ALWAYS_SENSITIVE, CKA_MODIFIABLE, CKA_ECDSA_PARAMS,
+++ * and CKA_EC_POINT are new for v2.0 */
+++#define CKA_EXTRACTABLE 0x00000162UL
+++#define CKA_LOCAL 0x00000163UL
+++#define CKA_NEVER_EXTRACTABLE 0x00000164UL
+++#define CKA_ALWAYS_SENSITIVE 0x00000165UL
+++
+++/* CKA_KEY_GEN_MECHANISM is new for v2.11 */
+++#define CKA_KEY_GEN_MECHANISM 0x00000166UL
+++
+++#define CKA_MODIFIABLE 0x00000170UL
+++
+++/* New for 2.40 */
+++#define CKA_COPYABLE 0x00000171UL
+++#define CKA_DESTROYABLE 0x00000172UL
+++
+++/* CKA_ECDSA_PARAMS is deprecated in v2.11,
+++ * CKA_EC_PARAMS is preferred. */
+++#define CKA_ECDSA_PARAMS 0x00000180UL
+++#define CKA_EC_PARAMS 0x00000180UL
+++
+++#define CKA_EC_POINT 0x00000181UL
+++
+++/* CKA_SECONDARY_AUTH, CKA_AUTH_PIN_FLAGS,
+++ * are new for v2.10. Deprecated in v2.11 and onwards. */
+++#define CKA_SECONDARY_AUTH 0x00000200UL
+++#define CKA_AUTH_PIN_FLAGS 0x00000201UL
+++
+++/* CKA_ALWAYS_AUTHENTICATE ...
+++ * CKA_UNWRAP_TEMPLATE are new for v2.20 */
+++#define CKA_ALWAYS_AUTHENTICATE 0x00000202UL
+++
+++#define CKA_WRAP_WITH_TRUSTED 0x00000210UL
+++#define CKA_WRAP_TEMPLATE (CKF_ARRAY_ATTRIBUTE | 0x00000211UL)
+++#define CKA_UNWRAP_TEMPLATE (CKF_ARRAY_ATTRIBUTE | 0x00000212UL)
+++
+++/* new for 2.40 */
+++#define CKA_DERIVE_TEMPLATE (CKF_ARRAY_ATTRIBUTE | 0x00000213UL)
+++#define CKA_OTP_FORMAT 0x00000220UL
+++#define CKA_OTP_LENGTH 0x00000221UL
+++#define CKA_OTP_TIME_INTERVAL 0x00000222UL
+++#define CKA_OTP_USER_FRIENDLY_MODE 0x00000223UL
++ #define CKA_OTP_CHALLENGE_REQUIREMENT 0x00000224UL
++-#define CKA_OTP_TIME_REQUIREMENT      0x00000225UL
++-#define CKA_OTP_COUNTER_REQUIREMENT   0x00000226UL
++-#define CKA_OTP_PIN_REQUIREMENT       0x00000227UL
++-#define CKA_OTP_COUNTER               0x0000022EUL
++-#define CKA_OTP_TIME                  0x0000022FUL
++-#define CKA_OTP_USER_IDENTIFIER       0x0000022AUL
++-#define CKA_OTP_SERVICE_IDENTIFIER    0x0000022BUL
++-#define CKA_OTP_SERVICE_LOGO          0x0000022CUL
++-#define CKA_OTP_SERVICE_LOGO_TYPE     0x0000022DUL
++-
++-#define CKA_GOSTR3410_PARAMS            0x00000250UL
++-#define CKA_GOSTR3411_PARAMS            0x00000251UL
++-#define CKA_GOST28147_PARAMS            0x00000252UL
++-
++-#define CKA_HW_FEATURE_TYPE             0x00000300UL
++-#define CKA_RESET_ON_INIT               0x00000301UL
++-#define CKA_HAS_RESET                   0x00000302UL
++-
++-#define CKA_PIXEL_X                     0x00000400UL
++-#define CKA_PIXEL_Y                     0x00000401UL
++-#define CKA_RESOLUTION                  0x00000402UL
++-#define CKA_CHAR_ROWS                   0x00000403UL
++-#define CKA_CHAR_COLUMNS                0x00000404UL
++-#define CKA_COLOR                       0x00000405UL
++-#define CKA_BITS_PER_PIXEL              0x00000406UL
++-#define CKA_CHAR_SETS                   0x00000480UL
++-#define CKA_ENCODING_METHODS            0x00000481UL
++-#define CKA_MIME_TYPES                  0x00000482UL
++-#define CKA_MECHANISM_TYPE              0x00000500UL
++-#define CKA_REQUIRED_CMS_ATTRIBUTES     0x00000501UL
++-#define CKA_DEFAULT_CMS_ATTRIBUTES      0x00000502UL
++-#define CKA_SUPPORTED_CMS_ATTRIBUTES    0x00000503UL
++-#define CKA_ALLOWED_MECHANISMS          (CKF_ARRAY_ATTRIBUTE|0x00000600UL)
++-#define CKA_PROFILE_ID                  0x00000601UL
++-#define CKA_X2RATCHET_BAG               0x00000602UL
++-#define CKA_X2RATCHET_BAGSIZE           0x00000603UL
++-#define CKA_X2RATCHET_BOBS1STMSG        0x00000604UL
++-#define CKA_X2RATCHET_CKR               0x00000605UL
++-#define CKA_X2RATCHET_CKS               0x00000606UL
++-#define CKA_X2RATCHET_DHP               0x00000607UL
++-#define CKA_X2RATCHET_DHR               0x00000608UL
++-#define CKA_X2RATCHET_DHS               0x00000609UL
++-#define CKA_X2RATCHET_HKR               0x0000060aUL
++-#define CKA_X2RATCHET_HKS               0x0000060bUL
++-#define CKA_X2RATCHET_ISALICE           0x0000060cUL
++-#define CKA_X2RATCHET_NHKR              0x0000060dUL
++-#define CKA_X2RATCHET_NHKS              0x0000060eUL
++-#define CKA_X2RATCHET_NR                0x0000060fUL
++-#define CKA_X2RATCHET_NS                0x00000610UL
++-#define CKA_X2RATCHET_PNS               0x00000611UL
++-#define CKA_X2RATCHET_RK                0x00000612UL
+++#define CKA_OTP_TIME_REQUIREMENT 0x00000225UL
+++#define CKA_OTP_COUNTER_REQUIREMENT 0x00000226UL
+++#define CKA_OTP_PIN_REQUIREMENT 0x00000227UL
+++#define CKA_OTP_COUNTER 0x0000022EUL
+++#define CKA_OTP_TIME 0x0000022FUL
+++#define CKA_OTP_USER_IDENTIFIER 0x0000022AUL
+++#define CKA_OTP_SERVICE_IDENTIFIER 0x0000022BUL
+++#define CKA_OTP_SERVICE_LOGO 0x0000022CUL
+++#define CKA_OTP_SERVICE_LOGO_TYPE 0x0000022DUL
+++#define CKA_GOSTR3410_PARAMS 0x00000250UL
+++#define CKA_GOSTR3411_PARAMS 0x00000251UL
+++#define CKA_GOST28147_PARAMS 0x00000252UL
+++
+++/* CKA_HW_FEATURE_TYPE, CKA_RESET_ON_INIT, and CKA_HAS_RESET
+++ * are new for v2.10 */
+++#define CKA_HW_FEATURE_TYPE 0x00000300UL
+++#define CKA_RESET_ON_INIT 0x00000301UL
+++#define CKA_HAS_RESET 0x00000302UL
+++
+++/* The following attributes are new for v2.20 */
+++#define CKA_PIXEL_X 0x00000400UL
+++#define CKA_PIXEL_Y 0x00000401UL
+++#define CKA_RESOLUTION 0x00000402UL
+++#define CKA_CHAR_ROWS 0x00000403UL
+++#define CKA_CHAR_COLUMNS 0x00000404UL
+++#define CKA_COLOR 0x00000405UL
+++#define CKA_BITS_PER_PIXEL 0x00000406UL
+++#define CKA_CHAR_SETS 0x00000480UL
+++#define CKA_ENCODING_METHODS 0x00000481UL
+++#define CKA_MIME_TYPES 0x00000482UL
+++#define CKA_MECHANISM_TYPE 0x00000500UL
+++#define CKA_REQUIRED_CMS_ATTRIBUTES 0x00000501UL
+++#define CKA_DEFAULT_CMS_ATTRIBUTES 0x00000502UL
+++#define CKA_SUPPORTED_CMS_ATTRIBUTES 0x00000503UL
+++#define CKA_ALLOWED_MECHANISMS (CKF_ARRAY_ATTRIBUTE | 0x00000600UL)
+++
+++/* new for v3.0 */
+++#define CKA_PROFILE_ID 0x00000601UL
+++#define CKA_X2RATCHET_BAG 0x00000602UL
+++#define CKA_X2RATCHET_BAGSIZE 0x00000603UL
+++#define CKA_X2RATCHET_BOBS1STMSG 0x00000604UL
+++#define CKA_X2RATCHET_CKR 0x00000605UL
+++#define CKA_X2RATCHET_CKS 0x00000606UL
+++#define CKA_X2RATCHET_DHP 0x00000607UL
+++#define CKA_X2RATCHET_DHR 0x00000608UL
+++#define CKA_X2RATCHET_DHS 0x00000609UL
+++#define CKA_X2RATCHET_HKR 0x0000060aUL
+++#define CKA_X2RATCHET_HKS 0x0000060bUL
+++#define CKA_X2RATCHET_ISALICE 0x0000060cUL
+++#define CKA_X2RATCHET_NHKR 0x0000060dUL
+++#define CKA_X2RATCHET_NHKS 0x0000060eUL
+++#define CKA_X2RATCHET_NR 0x0000060fUL
+++#define CKA_X2RATCHET_NS 0x00000610UL
+++#define CKA_X2RATCHET_PNS 0x00000611UL
+++#define CKA_X2RATCHET_RK 0x00000612UL
++ 
++-#define CKA_VENDOR_DEFINED              0x80000000UL
+++#define CKA_VENDOR_DEFINED 0x80000000UL
++ 
++ /* CK_ATTRIBUTE is a structure that includes the type, length
++- * and value of an attribute
++- */
+++ * and value of an attribute */
++ typedef struct CK_ATTRIBUTE {
++     CK_ATTRIBUTE_TYPE type;
++-    CK_VOID_PTR       pValue;
++-    CK_ULONG          ulValueLen;  /* in bytes */
+++    CK_VOID_PTR pValue;
+++
+++    /* ulValueLen went from CK_USHORT to CK_ULONG for v2.0 */
+++    CK_ULONG ulValueLen; /* in bytes */
++ } CK_ATTRIBUTE;
++ 
++ typedef CK_ATTRIBUTE CK_PTR CK_ATTRIBUTE_PTR;
++ 
++ /* CK_DATE is a structure that defines a date */
++-typedef struct CK_DATE{
++-    CK_CHAR year[4];   /* the year ("1900" - "9999") */
++-    CK_CHAR month[2];  /* the month ("01" - "12") */
++-    CK_CHAR day[2];    /* the day   ("01" - "31") */
+++typedef struct CK_DATE {
+++    CK_CHAR year[4];  /* the year ("1900" - "9999") */
+++    CK_CHAR month[2]; /* the month ("01" - "12") */
+++    CK_CHAR day[2];   /* the day   ("01" - "31") */
++ } CK_DATE;
++ 
++-
++ /* CK_MECHANISM_TYPE is a value that identifies a mechanism
++- * type
++- */
++-typedef CK_ULONG          CK_MECHANISM_TYPE;
+++ * type */
+++/* CK_MECHANISM_TYPE was changed from CK_USHORT to CK_ULONG for
+++ * v2.0 */
+++typedef CK_ULONG CK_MECHANISM_TYPE;
++ 
++ /* the following mechanism types are defined: */
++-#define CKM_RSA_PKCS_KEY_PAIR_GEN      0x00000000UL
++-#define CKM_RSA_PKCS                   0x00000001UL
++-#define CKM_RSA_9796                   0x00000002UL
++-#define CKM_RSA_X_509                  0x00000003UL
++-
++-#define CKM_MD2_RSA_PKCS               0x00000004UL
++-#define CKM_MD5_RSA_PKCS               0x00000005UL
++-#define CKM_SHA1_RSA_PKCS              0x00000006UL
++-
++-#define CKM_RIPEMD128_RSA_PKCS         0x00000007UL
++-#define CKM_RIPEMD160_RSA_PKCS         0x00000008UL
++-#define CKM_RSA_PKCS_OAEP              0x00000009UL
++-
++-#define CKM_RSA_X9_31_KEY_PAIR_GEN     0x0000000AUL
++-#define CKM_RSA_X9_31                  0x0000000BUL
++-#define CKM_SHA1_RSA_X9_31             0x0000000CUL
++-#define CKM_RSA_PKCS_PSS               0x0000000DUL
++-#define CKM_SHA1_RSA_PKCS_PSS          0x0000000EUL
++-
++-#define CKM_DSA_KEY_PAIR_GEN           0x00000010UL
++-#define CKM_DSA                        0x00000011UL
++-#define CKM_DSA_SHA1                   0x00000012UL
++-#define CKM_DSA_SHA224                 0x00000013UL
++-#define CKM_DSA_SHA256                 0x00000014UL
++-#define CKM_DSA_SHA384                 0x00000015UL
++-#define CKM_DSA_SHA512                 0x00000016UL
++-#define CKM_DSA_SHA3_224               0x00000018UL
++-#define CKM_DSA_SHA3_256               0x00000019UL
++-#define CKM_DSA_SHA3_384               0x0000001AUL
++-#define CKM_DSA_SHA3_512               0x0000001BUL
++-
++-#define CKM_DH_PKCS_KEY_PAIR_GEN       0x00000020UL
++-#define CKM_DH_PKCS_DERIVE             0x00000021UL
++-
++-#define CKM_X9_42_DH_KEY_PAIR_GEN      0x00000030UL
++-#define CKM_X9_42_DH_DERIVE            0x00000031UL
++-#define CKM_X9_42_DH_HYBRID_DERIVE     0x00000032UL
++-#define CKM_X9_42_MQV_DERIVE           0x00000033UL
++-
++-#define CKM_SHA256_RSA_PKCS            0x00000040UL
++-#define CKM_SHA384_RSA_PKCS            0x00000041UL
++-#define CKM_SHA512_RSA_PKCS            0x00000042UL
++-#define CKM_SHA256_RSA_PKCS_PSS        0x00000043UL
++-#define CKM_SHA384_RSA_PKCS_PSS        0x00000044UL
++-#define CKM_SHA512_RSA_PKCS_PSS        0x00000045UL
++-
++-#define CKM_SHA224_RSA_PKCS            0x00000046UL
++-#define CKM_SHA224_RSA_PKCS_PSS        0x00000047UL
++-
++-#define CKM_SHA512_224                 0x00000048UL
++-#define CKM_SHA512_224_HMAC            0x00000049UL
++-#define CKM_SHA512_224_HMAC_GENERAL    0x0000004AUL
++-#define CKM_SHA512_224_KEY_DERIVATION  0x0000004BUL
++-#define CKM_SHA512_256                 0x0000004CUL
++-#define CKM_SHA512_256_HMAC            0x0000004DUL
++-#define CKM_SHA512_256_HMAC_GENERAL    0x0000004EUL
++-#define CKM_SHA512_256_KEY_DERIVATION  0x0000004FUL
++-
++-#define CKM_SHA512_T                   0x00000050UL
++-#define CKM_SHA512_T_HMAC              0x00000051UL
++-#define CKM_SHA512_T_HMAC_GENERAL      0x00000052UL
++-#define CKM_SHA512_T_KEY_DERIVATION    0x00000053UL
++-
++-#define CKM_SHA3_256_RSA_PKCS          0x00000060UL
++-#define CKM_SHA3_384_RSA_PKCS          0x00000061UL
++-#define CKM_SHA3_512_RSA_PKCS          0x00000062UL
++-#define CKM_SHA3_256_RSA_PKCS_PSS      0x00000063UL
++-#define CKM_SHA3_384_RSA_PKCS_PSS      0x00000064UL
++-#define CKM_SHA3_512_RSA_PKCS_PSS      0x00000065UL
++-#define CKM_SHA3_224_RSA_PKCS          0x00000066UL
++-#define CKM_SHA3_224_RSA_PKCS_PSS      0x00000067UL
++-
++-#define CKM_RC2_KEY_GEN                0x00000100UL
++-#define CKM_RC2_ECB                    0x00000101UL
++-#define CKM_RC2_CBC                    0x00000102UL
++-#define CKM_RC2_MAC                    0x00000103UL
++-
++-#define CKM_RC2_MAC_GENERAL            0x00000104UL
++-#define CKM_RC2_CBC_PAD                0x00000105UL
++-
++-#define CKM_RC4_KEY_GEN                0x00000110UL
++-#define CKM_RC4                        0x00000111UL
++-#define CKM_DES_KEY_GEN                0x00000120UL
++-#define CKM_DES_ECB                    0x00000121UL
++-#define CKM_DES_CBC                    0x00000122UL
++-#define CKM_DES_MAC                    0x00000123UL
++-
++-#define CKM_DES_MAC_GENERAL            0x00000124UL
++-#define CKM_DES_CBC_PAD                0x00000125UL
++-
++-#define CKM_DES2_KEY_GEN               0x00000130UL
++-#define CKM_DES3_KEY_GEN               0x00000131UL
++-#define CKM_DES3_ECB                   0x00000132UL
++-#define CKM_DES3_CBC                   0x00000133UL
++-#define CKM_DES3_MAC                   0x00000134UL
++-
++-#define CKM_DES3_MAC_GENERAL           0x00000135UL
++-#define CKM_DES3_CBC_PAD               0x00000136UL
++-#define CKM_DES3_CMAC_GENERAL          0x00000137UL
++-#define CKM_DES3_CMAC                  0x00000138UL
++-#define CKM_CDMF_KEY_GEN               0x00000140UL
++-#define CKM_CDMF_ECB                   0x00000141UL
++-#define CKM_CDMF_CBC                   0x00000142UL
++-#define CKM_CDMF_MAC                   0x00000143UL
++-#define CKM_CDMF_MAC_GENERAL           0x00000144UL
++-#define CKM_CDMF_CBC_PAD               0x00000145UL
++-
++-#define CKM_DES_OFB64                  0x00000150UL
++-#define CKM_DES_OFB8                   0x00000151UL
++-#define CKM_DES_CFB64                  0x00000152UL
++-#define CKM_DES_CFB8                   0x00000153UL
++-
++-#define CKM_MD2                        0x00000200UL
++-
++-#define CKM_MD2_HMAC                   0x00000201UL
++-#define CKM_MD2_HMAC_GENERAL           0x00000202UL
++-
++-#define CKM_MD5                        0x00000210UL
++-
++-#define CKM_MD5_HMAC                   0x00000211UL
++-#define CKM_MD5_HMAC_GENERAL           0x00000212UL
++-
++-#define CKM_SHA_1                      0x00000220UL
++-
++-#define CKM_SHA_1_HMAC                 0x00000221UL
++-#define CKM_SHA_1_HMAC_GENERAL         0x00000222UL
++-
++-#define CKM_RIPEMD128                  0x00000230UL
++-#define CKM_RIPEMD128_HMAC             0x00000231UL
++-#define CKM_RIPEMD128_HMAC_GENERAL     0x00000232UL
++-#define CKM_RIPEMD160                  0x00000240UL
++-#define CKM_RIPEMD160_HMAC             0x00000241UL
++-#define CKM_RIPEMD160_HMAC_GENERAL     0x00000242UL
++-
++-#define CKM_SHA256                     0x00000250UL
++-#define CKM_SHA256_HMAC                0x00000251UL
++-#define CKM_SHA256_HMAC_GENERAL        0x00000252UL
++-#define CKM_SHA224                     0x00000255UL
++-#define CKM_SHA224_HMAC                0x00000256UL
++-#define CKM_SHA224_HMAC_GENERAL        0x00000257UL
++-#define CKM_SHA384                     0x00000260UL
++-#define CKM_SHA384_HMAC                0x00000261UL
++-#define CKM_SHA384_HMAC_GENERAL        0x00000262UL
++-#define CKM_SHA512                     0x00000270UL
++-#define CKM_SHA512_HMAC                0x00000271UL
++-#define CKM_SHA512_HMAC_GENERAL        0x00000272UL
++-#define CKM_SECURID_KEY_GEN            0x00000280UL
++-#define CKM_SECURID                    0x00000282UL
++-#define CKM_HOTP_KEY_GEN               0x00000290UL
++-#define CKM_HOTP                       0x00000291UL
++-#define CKM_ACTI                       0x000002A0UL
++-#define CKM_ACTI_KEY_GEN               0x000002A1UL
++-
++-#define CKM_SHA3_256                   0x000002B0UL
++-#define CKM_SHA3_256_HMAC              0x000002B1UL
++-#define CKM_SHA3_256_HMAC_GENERAL      0x000002B2UL
++-#define CKM_SHA3_256_KEY_GEN           0x000002B3UL
++-#define CKM_SHA3_224                   0x000002B5UL
++-#define CKM_SHA3_224_HMAC              0x000002B6UL
++-#define CKM_SHA3_224_HMAC_GENERAL      0x000002B7UL
++-#define CKM_SHA3_224_KEY_GEN           0x000002B8UL
++-#define CKM_SHA3_384                   0x000002C0UL
++-#define CKM_SHA3_384_HMAC              0x000002C1UL
++-#define CKM_SHA3_384_HMAC_GENERAL      0x000002C2UL
++-#define CKM_SHA3_384_KEY_GEN           0x000002C3UL
++-#define CKM_SHA3_512                   0x000002D0UL
++-#define CKM_SHA3_512_HMAC              0x000002D1UL
++-#define CKM_SHA3_512_HMAC_GENERAL      0x000002D2UL
++-#define CKM_SHA3_512_KEY_GEN           0x000002D3UL
++-
++-
++-#define CKM_CAST_KEY_GEN               0x00000300UL
++-#define CKM_CAST_ECB                   0x00000301UL
++-#define CKM_CAST_CBC                   0x00000302UL
++-#define CKM_CAST_MAC                   0x00000303UL
++-#define CKM_CAST_MAC_GENERAL           0x00000304UL
++-#define CKM_CAST_CBC_PAD               0x00000305UL
++-#define CKM_CAST3_KEY_GEN              0x00000310UL
++-#define CKM_CAST3_ECB                  0x00000311UL
++-#define CKM_CAST3_CBC                  0x00000312UL
++-#define CKM_CAST3_MAC                  0x00000313UL
++-#define CKM_CAST3_MAC_GENERAL          0x00000314UL
++-#define CKM_CAST3_CBC_PAD              0x00000315UL
+++#define CKM_RSA_PKCS_KEY_PAIR_GEN 0x00000000UL
+++#define CKM_RSA_PKCS 0x00000001UL
+++#define CKM_RSA_9796 0x00000002UL
+++#define CKM_RSA_X_509 0x00000003UL
+++
+++/* CKM_MD2_RSA_PKCS, CKM_MD5_RSA_PKCS, and CKM_SHA1_RSA_PKCS
+++ * are new for v2.0.  They are mechanisms which hash and sign */
+++#define CKM_MD2_RSA_PKCS 0x00000004UL
+++#define CKM_MD5_RSA_PKCS 0x00000005UL
+++#define CKM_SHA1_RSA_PKCS 0x00000006UL
+++
+++/* CKM_RIPEMD128_RSA_PKCS, CKM_RIPEMD160_RSA_PKCS, and
+++ * CKM_RSA_PKCS_OAEP are new for v2.10 */
+++#define CKM_RIPEMD128_RSA_PKCS 0x00000007UL
+++#define CKM_RIPEMD160_RSA_PKCS 0x00000008UL
+++#define CKM_RSA_PKCS_OAEP 0x00000009UL
+++
+++/* CKM_RSA_X9_31_KEY_PAIR_GEN, CKM_RSA_X9_31, CKM_SHA1_RSA_X9_31,
+++ * CKM_RSA_PKCS_PSS, and CKM_SHA1_RSA_PKCS_PSS are new for v2.11 */
+++#define CKM_RSA_X9_31_KEY_PAIR_GEN 0x0000000AUL
+++#define CKM_RSA_X9_31 0x0000000BUL
+++#define CKM_SHA1_RSA_X9_31 0x0000000CUL
+++#define CKM_RSA_PKCS_PSS 0x0000000DUL
+++#define CKM_SHA1_RSA_PKCS_PSS 0x0000000EUL
+++
+++#define CKM_DSA_KEY_PAIR_GEN 0x00000010UL
+++#define CKM_DSA 0x00000011UL
+++#define CKM_DSA_SHA1 0x00000012UL
+++
+++/* new for v2.40 */
+++#define CKM_DSA_SHA224 0x00000013UL
+++#define CKM_DSA_SHA256 0x00000014UL
+++#define CKM_DSA_SHA384 0x00000015UL
+++#define CKM_DSA_SHA512 0x00000016UL
+++#define CKM_DSA_SHA3_224 0x00000018UL
+++#define CKM_DSA_SHA3_256 0x00000019UL
+++#define CKM_DSA_SHA3_384 0x0000001AUL
+++#define CKM_DSA_SHA3_512 0x0000001BUL
+++
+++#define CKM_DH_PKCS_KEY_PAIR_GEN 0x00000020UL
+++#define CKM_DH_PKCS_DERIVE 0x00000021UL
+++
+++/* CKM_X9_42_DH_KEY_PAIR_GEN, CKM_X9_42_DH_DERIVE,
+++ * CKM_X9_42_DH_HYBRID_DERIVE, and CKM_X9_42_MQV_DERIVE are new for
+++ * v2.11 */
+++#define CKM_X9_42_DH_KEY_PAIR_GEN 0x00000030UL
+++#define CKM_X9_42_DH_DERIVE 0x00000031UL
+++#define CKM_X9_42_DH_HYBRID_DERIVE 0x00000032UL
+++#define CKM_X9_42_MQV_DERIVE 0x00000033UL
+++
+++/* CKM_SHA256/384/512 are new for v2.20 */
+++#define CKM_SHA256_RSA_PKCS 0x00000040UL
+++#define CKM_SHA384_RSA_PKCS 0x00000041UL
+++#define CKM_SHA512_RSA_PKCS 0x00000042UL
+++#define CKM_SHA256_RSA_PKCS_PSS 0x00000043UL
+++#define CKM_SHA384_RSA_PKCS_PSS 0x00000044UL
+++#define CKM_SHA512_RSA_PKCS_PSS 0x00000045UL
+++
+++/* CKM_SHA224 new for v2.20 amendment 3 */
+++#define CKM_SHA224_RSA_PKCS 0x00000046UL
+++#define CKM_SHA224_RSA_PKCS_PSS 0x00000047UL
+++
+++/* new for v2.40 */
+++#define CKM_SHA512_224 0x00000048UL
+++#define CKM_SHA512_224_HMAC 0x00000049UL
+++#define CKM_SHA512_224_HMAC_GENERAL 0x0000004AUL
+++#define CKM_SHA512_224_KEY_DERIVATION 0x0000004BUL
+++#define CKM_SHA512_256 0x0000004CUL
+++#define CKM_SHA512_256_HMAC 0x0000004DUL
+++#define CKM_SHA512_256_HMAC_GENERAL 0x0000004EUL
+++#define CKM_SHA512_256_KEY_DERIVATION 0x0000004FUL
+++#define CKM_SHA512_T 0x00000050UL
+++#define CKM_SHA512_T_HMAC 0x00000051UL
+++#define CKM_SHA512_T_HMAC_GENERAL 0x00000052UL
+++#define CKM_SHA512_T_KEY_DERIVATION 0x00000053UL
+++#define CKM_SHA3_256_RSA_PKCS 0x00000060UL
+++#define CKM_SHA3_384_RSA_PKCS 0x00000061UL
+++#define CKM_SHA3_512_RSA_PKCS 0x00000062UL
+++#define CKM_SHA3_256_RSA_PKCS_PSS 0x00000063UL
+++#define CKM_SHA3_384_RSA_PKCS_PSS 0x00000064UL
+++#define CKM_SHA3_512_RSA_PKCS_PSS 0x00000065UL
+++#define CKM_SHA3_224_RSA_PKCS 0x00000066UL
+++#define CKM_SHA3_224_RSA_PKCS_PSS 0x00000067UL
+++
+++#define CKM_RC2_KEY_GEN 0x00000100UL
+++#define CKM_RC2_ECB 0x00000101UL
+++#define CKM_RC2_CBC 0x00000102UL
+++#define CKM_RC2_MAC 0x00000103UL
+++
+++/* CKM_RC2_MAC_GENERAL and CKM_RC2_CBC_PAD are new for v2.0 */
+++#define CKM_RC2_MAC_GENERAL 0x00000104UL
+++#define CKM_RC2_CBC_PAD 0x00000105UL
+++
+++#define CKM_RC4_KEY_GEN 0x00000110UL
+++#define CKM_RC4 0x00000111UL
+++#define CKM_DES_KEY_GEN 0x00000120UL
+++#define CKM_DES_ECB 0x00000121UL
+++#define CKM_DES_CBC 0x00000122UL
+++#define CKM_DES_MAC 0x00000123UL
+++
+++/* CKM_DES_MAC_GENERAL and CKM_DES_CBC_PAD are new for v2.0 */
+++#define CKM_DES_MAC_GENERAL 0x00000124UL
+++#define CKM_DES_CBC_PAD 0x00000125UL
+++
+++#define CKM_DES2_KEY_GEN 0x00000130UL
+++#define CKM_DES3_KEY_GEN 0x00000131UL
+++#define CKM_DES3_ECB 0x00000132UL
+++#define CKM_DES3_CBC 0x00000133UL
+++#define CKM_DES3_MAC 0x00000134UL
+++
+++/* CKM_DES3_MAC_GENERAL, CKM_DES3_CBC_PAD, CKM_CDMF_KEY_GEN,
+++ * CKM_CDMF_ECB, CKM_CDMF_CBC, CKM_CDMF_MAC,
+++ * CKM_CDMF_MAC_GENERAL, and CKM_CDMF_CBC_PAD are new for v2.0 */
+++#define CKM_DES3_MAC_GENERAL 0x00000135UL
+++#define CKM_DES3_CBC_PAD 0x00000136UL
+++#define CKM_CDMF_KEY_GEN 0x00000140UL
+++#define CKM_CDMF_ECB 0x00000141UL
+++#define CKM_CDMF_CBC 0x00000142UL
+++#define CKM_CDMF_MAC 0x00000143UL
+++#define CKM_CDMF_MAC_GENERAL 0x00000144UL
+++#define CKM_CDMF_CBC_PAD 0x00000145UL
+++
+++/* the following four DES mechanisms are new for v2.20 */
+++#define CKM_DES_OFB64 0x00000150UL
+++#define CKM_DES_OFB8 0x00000151UL
+++#define CKM_DES_CFB64 0x00000152UL
+++#define CKM_DES_CFB8 0x00000153UL
+++
+++#define CKM_MD2 0x00000200UL
+++
+++/* CKM_MD2_HMAC and CKM_MD2_HMAC_GENERAL are new for v2.0 */
+++#define CKM_MD2_HMAC 0x00000201UL
+++#define CKM_MD2_HMAC_GENERAL 0x00000202UL
+++
+++#define CKM_MD5 0x00000210UL
+++
+++/* CKM_MD5_HMAC and CKM_MD5_HMAC_GENERAL are new for v2.0 */
+++#define CKM_MD5_HMAC 0x00000211UL
+++#define CKM_MD5_HMAC_GENERAL 0x00000212UL
+++
+++#define CKM_SHA_1 0x00000220UL
+++
+++/* CKM_SHA_1_HMAC and CKM_SHA_1_HMAC_GENERAL are new for v2.0 */
+++#define CKM_SHA_1_HMAC 0x00000221UL
+++#define CKM_SHA_1_HMAC_GENERAL 0x00000222UL
+++
+++/* CKM_RIPEMD128, CKM_RIPEMD128_HMAC,
+++ * CKM_RIPEMD128_HMAC_GENERAL, CKM_RIPEMD160, CKM_RIPEMD160_HMAC,
+++ * and CKM_RIPEMD160_HMAC_GENERAL are new for v2.10 */
+++#define CKM_RIPEMD128 0x00000230UL
+++#define CKM_RIPEMD128_HMAC 0x00000231UL
+++#define CKM_RIPEMD128_HMAC_GENERAL 0x00000232UL
+++#define CKM_RIPEMD160 0x00000240UL
+++#define CKM_RIPEMD160_HMAC 0x00000241UL
+++#define CKM_RIPEMD160_HMAC_GENERAL 0x00000242UL
+++
+++/* CKM_SHA256/384/512 are new for v2.20 */
+++#define CKM_SHA256 0x00000250UL
+++#define CKM_SHA256_HMAC 0x00000251UL
+++#define CKM_SHA256_HMAC_GENERAL 0x00000252UL
+++#define CKM_SHA384 0x00000260UL
+++#define CKM_SHA384_HMAC 0x00000261UL
+++#define CKM_SHA384_HMAC_GENERAL 0x00000262UL
+++#define CKM_SHA512 0x00000270UL
+++#define CKM_SHA512_HMAC 0x00000271UL
+++#define CKM_SHA512_HMAC_GENERAL 0x00000272UL
+++
+++/* CKM_SHA224 new for v2.20 amendment 3 */
+++#define CKM_SHA224 0x00000255UL
+++#define CKM_SHA224_HMAC 0x00000256UL
+++#define CKM_SHA224_HMAC_GENERAL 0x00000257UL
+++
+++/* new for v2.40 */
+++#define CKM_SECURID_KEY_GEN 0x00000280UL
+++#define CKM_SECURID 0x00000282UL
+++#define CKM_HOTP_KEY_GEN 0x00000290UL
+++#define CKM_HOTP 0x00000291UL
+++#define CKM_ACTI 0x000002A0UL
+++#define CKM_ACTI_KEY_GEN 0x000002A1UL
+++#define CKM_SHA3_256 0x000002B0UL
+++#define CKM_SHA3_256_HMAC 0x000002B1UL
+++#define CKM_SHA3_256_HMAC_GENERAL 0x000002B2UL
+++#define CKM_SHA3_256_KEY_GEN 0x000002B3UL
+++#define CKM_SHA3_224 0x000002B5UL
+++#define CKM_SHA3_224_HMAC 0x000002B6UL
+++#define CKM_SHA3_224_HMAC_GENERAL 0x000002B7UL
+++#define CKM_SHA3_224_KEY_GEN 0x000002B8UL
+++#define CKM_SHA3_384 0x000002C0UL
+++#define CKM_SHA3_384_HMAC 0x000002C1UL
+++#define CKM_SHA3_384_HMAC_GENERAL 0x000002C2UL
+++#define CKM_SHA3_384_KEY_GEN 0x000002C3UL
+++#define CKM_SHA3_512 0x000002D0UL
+++#define CKM_SHA3_512_HMAC 0x000002D1UL
+++#define CKM_SHA3_512_HMAC_GENERAL 0x000002D2UL
+++#define CKM_SHA3_512_KEY_GEN 0x000002D3UL
+++
+++/* All of the following mechanisms are new for v2.0 */
++ /* Note that CAST128 and CAST5 are the same algorithm */
++-#define CKM_CAST5_KEY_GEN              0x00000320UL
++-#define CKM_CAST128_KEY_GEN            0x00000320UL
++-#define CKM_CAST5_ECB                  0x00000321UL
++-#define CKM_CAST128_ECB                0x00000321UL
++-#define CKM_CAST5_CBC                  0x00000322UL /* Deprecated */
++-#define CKM_CAST128_CBC                0x00000322UL
++-#define CKM_CAST5_MAC                  0x00000323UL /* Deprecated */
++-#define CKM_CAST128_MAC                0x00000323UL
++-#define CKM_CAST5_MAC_GENERAL          0x00000324UL /* Deprecated */
++-#define CKM_CAST128_MAC_GENERAL        0x00000324UL
++-#define CKM_CAST5_CBC_PAD              0x00000325UL /* Deprecated */
++-#define CKM_CAST128_CBC_PAD            0x00000325UL
++-#define CKM_RC5_KEY_GEN                0x00000330UL
++-#define CKM_RC5_ECB                    0x00000331UL
++-#define CKM_RC5_CBC                    0x00000332UL
++-#define CKM_RC5_MAC                    0x00000333UL
++-#define CKM_RC5_MAC_GENERAL            0x00000334UL
++-#define CKM_RC5_CBC_PAD                0x00000335UL
++-#define CKM_IDEA_KEY_GEN               0x00000340UL
++-#define CKM_IDEA_ECB                   0x00000341UL
++-#define CKM_IDEA_CBC                   0x00000342UL
++-#define CKM_IDEA_MAC                   0x00000343UL
++-#define CKM_IDEA_MAC_GENERAL           0x00000344UL
++-#define CKM_IDEA_CBC_PAD               0x00000345UL
++-#define CKM_GENERIC_SECRET_KEY_GEN     0x00000350UL
++-#define CKM_CONCATENATE_BASE_AND_KEY   0x00000360UL
++-#define CKM_CONCATENATE_BASE_AND_DATA  0x00000362UL
++-#define CKM_CONCATENATE_DATA_AND_BASE  0x00000363UL
++-#define CKM_XOR_BASE_AND_DATA          0x00000364UL
++-#define CKM_EXTRACT_KEY_FROM_KEY       0x00000365UL
++-#define CKM_SSL3_PRE_MASTER_KEY_GEN    0x00000370UL
++-#define CKM_SSL3_MASTER_KEY_DERIVE     0x00000371UL
++-#define CKM_SSL3_KEY_AND_MAC_DERIVE    0x00000372UL
++-
++-#define CKM_SSL3_MASTER_KEY_DERIVE_DH  0x00000373UL
++-#define CKM_TLS_PRE_MASTER_KEY_GEN     0x00000374UL
++-#define CKM_TLS_MASTER_KEY_DERIVE      0x00000375UL
++-#define CKM_TLS_KEY_AND_MAC_DERIVE     0x00000376UL
++-#define CKM_TLS_MASTER_KEY_DERIVE_DH   0x00000377UL
++-
++-#define CKM_TLS_PRF                    0x00000378UL
++-
++-#define CKM_SSL3_MD5_MAC               0x00000380UL
++-#define CKM_SSL3_SHA1_MAC              0x00000381UL
++-#define CKM_MD5_KEY_DERIVATION         0x00000390UL
++-#define CKM_MD2_KEY_DERIVATION         0x00000391UL
++-#define CKM_SHA1_KEY_DERIVATION        0x00000392UL
++-
++-#define CKM_SHA256_KEY_DERIVATION      0x00000393UL
++-#define CKM_SHA384_KEY_DERIVATION      0x00000394UL
++-#define CKM_SHA512_KEY_DERIVATION      0x00000395UL
++-#define CKM_SHA224_KEY_DERIVATION      0x00000396UL
++-#define CKM_SHA3_256_KEY_DERIVATION    0x00000397UL
++-#define CKM_SHA3_224_KEY_DERIVATION    0x00000398UL
++-#define CKM_SHA3_384_KEY_DERIVATION    0x00000399UL
++-#define CKM_SHA3_512_KEY_DERIVATION    0x0000039AUL
++-#define CKM_SHAKE_128_KEY_DERIVATION   0x0000039BUL
++-#define CKM_SHAKE_256_KEY_DERIVATION   0x0000039CUL
++-#define CKM_SHA3_256_KEY_DERIVE  CKM_SHA3_256_KEY_DERIVATION
++-#define CKM_SHA3_224_KEY_DERIVE  CKM_SHA3_224_KEY_DERIVATION
++-#define CKM_SHA3_384_KEY_DERIVE  CKM_SHA3_384_KEY_DERIVATION
++-#define CKM_SHA3_512_KEY_DERIVE  CKM_SHA3_512_KEY_DERIVATION
++-#define CKM_SHAKE_128_KEY_DERIVE CKM_SHAKE_128_KEY_DERIVATION
++-#define CKM_SHAKE_256_KEY_DERIVE CKM_SHAKE_256_KEY_DERIVATION
++-
++-#define CKM_PBE_MD2_DES_CBC            0x000003A0UL
++-#define CKM_PBE_MD5_DES_CBC            0x000003A1UL
++-#define CKM_PBE_MD5_CAST_CBC           0x000003A2UL
++-#define CKM_PBE_MD5_CAST3_CBC          0x000003A3UL
++-#define CKM_PBE_MD5_CAST5_CBC          0x000003A4UL /* Deprecated */
++-#define CKM_PBE_MD5_CAST128_CBC        0x000003A4UL
++-#define CKM_PBE_SHA1_CAST5_CBC         0x000003A5UL /* Deprecated */
++-#define CKM_PBE_SHA1_CAST128_CBC       0x000003A5UL
++-#define CKM_PBE_SHA1_RC4_128           0x000003A6UL
++-#define CKM_PBE_SHA1_RC4_40            0x000003A7UL
++-#define CKM_PBE_SHA1_DES3_EDE_CBC      0x000003A8UL
++-#define CKM_PBE_SHA1_DES2_EDE_CBC      0x000003A9UL
++-#define CKM_PBE_SHA1_RC2_128_CBC       0x000003AAUL
++-#define CKM_PBE_SHA1_RC2_40_CBC        0x000003ABUL
++-
++-#define CKM_PKCS5_PBKD2                0x000003B0UL
++-
++-#define CKM_PBA_SHA1_WITH_SHA1_HMAC    0x000003C0UL
++-
++-#define CKM_WTLS_PRE_MASTER_KEY_GEN         0x000003D0UL
++-#define CKM_WTLS_MASTER_KEY_DERIVE          0x000003D1UL
++-#define CKM_WTLS_MASTER_KEY_DERIVE_DH_ECC   0x000003D2UL
++-#define CKM_WTLS_PRF                        0x000003D3UL
++-#define CKM_WTLS_SERVER_KEY_AND_MAC_DERIVE  0x000003D4UL
++-#define CKM_WTLS_CLIENT_KEY_AND_MAC_DERIVE  0x000003D5UL
++-
++-#define CKM_TLS12_MAC                       0x000003D8UL
++-#define CKM_TLS12_KDF                       0x000003D9UL
++-#define CKM_TLS12_MASTER_KEY_DERIVE         0x000003E0UL
++-#define CKM_TLS12_KEY_AND_MAC_DERIVE        0x000003E1UL
++-#define CKM_TLS12_MASTER_KEY_DERIVE_DH      0x000003E2UL
++-#define CKM_TLS12_KEY_SAFE_DERIVE           0x000003E3UL
++-#define CKM_TLS_MAC                         0x000003E4UL
++-#define CKM_TLS_KDF                         0x000003E5UL
++-
++-#define CKM_KEY_WRAP_LYNKS             0x00000400UL
++-#define CKM_KEY_WRAP_SET_OAEP          0x00000401UL
++-
++-#define CKM_CMS_SIG                    0x00000500UL
++-#define CKM_KIP_DERIVE                 0x00000510UL
++-#define CKM_KIP_WRAP                   0x00000511UL
++-#define CKM_KIP_MAC                    0x00000512UL
++-
++-#define CKM_CAMELLIA_KEY_GEN           0x00000550UL
++-#define CKM_CAMELLIA_ECB               0x00000551UL
++-#define CKM_CAMELLIA_CBC               0x00000552UL
++-#define CKM_CAMELLIA_MAC               0x00000553UL
++-#define CKM_CAMELLIA_MAC_GENERAL       0x00000554UL
++-#define CKM_CAMELLIA_CBC_PAD           0x00000555UL
++-#define CKM_CAMELLIA_ECB_ENCRYPT_DATA  0x00000556UL
++-#define CKM_CAMELLIA_CBC_ENCRYPT_DATA  0x00000557UL
++-#define CKM_CAMELLIA_CTR               0x00000558UL
++-
++-#define CKM_ARIA_KEY_GEN               0x00000560UL
++-#define CKM_ARIA_ECB                   0x00000561UL
++-#define CKM_ARIA_CBC                   0x00000562UL
++-#define CKM_ARIA_MAC                   0x00000563UL
++-#define CKM_ARIA_MAC_GENERAL           0x00000564UL
++-#define CKM_ARIA_CBC_PAD               0x00000565UL
++-#define CKM_ARIA_ECB_ENCRYPT_DATA      0x00000566UL
++-#define CKM_ARIA_CBC_ENCRYPT_DATA      0x00000567UL
++-
++-#define CKM_SEED_KEY_GEN               0x00000650UL
++-#define CKM_SEED_ECB                   0x00000651UL
++-#define CKM_SEED_CBC                   0x00000652UL
++-#define CKM_SEED_MAC                   0x00000653UL
++-#define CKM_SEED_MAC_GENERAL           0x00000654UL
++-#define CKM_SEED_CBC_PAD               0x00000655UL
++-#define CKM_SEED_ECB_ENCRYPT_DATA      0x00000656UL
++-#define CKM_SEED_CBC_ENCRYPT_DATA      0x00000657UL
++-
++-#define CKM_SKIPJACK_KEY_GEN           0x00001000UL
++-#define CKM_SKIPJACK_ECB64             0x00001001UL
++-#define CKM_SKIPJACK_CBC64             0x00001002UL
++-#define CKM_SKIPJACK_OFB64             0x00001003UL
++-#define CKM_SKIPJACK_CFB64             0x00001004UL
++-#define CKM_SKIPJACK_CFB32             0x00001005UL
++-#define CKM_SKIPJACK_CFB16             0x00001006UL
++-#define CKM_SKIPJACK_CFB8              0x00001007UL
++-#define CKM_SKIPJACK_WRAP              0x00001008UL
++-#define CKM_SKIPJACK_PRIVATE_WRAP      0x00001009UL
++-#define CKM_SKIPJACK_RELAYX            0x0000100aUL
++-#define CKM_KEA_KEY_PAIR_GEN           0x00001010UL
++-#define CKM_KEA_KEY_DERIVE             0x00001011UL
++-#define CKM_KEA_DERIVE                 0x00001012UL
++-#define CKM_FORTEZZA_TIMESTAMP         0x00001020UL
++-#define CKM_BATON_KEY_GEN              0x00001030UL
++-#define CKM_BATON_ECB128               0x00001031UL
++-#define CKM_BATON_ECB96                0x00001032UL
++-#define CKM_BATON_CBC128               0x00001033UL
++-#define CKM_BATON_COUNTER              0x00001034UL
++-#define CKM_BATON_SHUFFLE              0x00001035UL
++-#define CKM_BATON_WRAP                 0x00001036UL
++-
++-#define CKM_ECDSA_KEY_PAIR_GEN         0x00001040UL /* Deprecated */
++-#define CKM_EC_KEY_PAIR_GEN            0x00001040UL
++-
++-#define CKM_ECDSA                      0x00001041UL
++-#define CKM_ECDSA_SHA1                 0x00001042UL
++-#define CKM_ECDSA_SHA224               0x00001043UL
++-#define CKM_ECDSA_SHA256               0x00001044UL
++-#define CKM_ECDSA_SHA384               0x00001045UL
++-#define CKM_ECDSA_SHA512               0x00001046UL
+++#define CKM_CAST_KEY_GEN 0x00000300UL
+++#define CKM_CAST_ECB 0x00000301UL
+++#define CKM_CAST_CBC 0x00000302UL
+++#define CKM_CAST_MAC 0x00000303UL
+++#define CKM_CAST_MAC_GENERAL 0x00000304UL
+++#define CKM_CAST_CBC_PAD 0x00000305UL
+++#define CKM_CAST3_KEY_GEN 0x00000310UL
+++#define CKM_CAST3_ECB 0x00000311UL
+++#define CKM_CAST3_CBC 0x00000312UL
+++#define CKM_CAST3_MAC 0x00000313UL
+++#define CKM_CAST3_MAC_GENERAL 0x00000314UL
+++#define CKM_CAST3_CBC_PAD 0x00000315UL
+++#define CKM_CAST5_KEY_GEN 0x00000320UL
+++#define CKM_CAST128_KEY_GEN 0x00000320UL
+++#define CKM_CAST5_ECB 0x00000321UL
+++#define CKM_CAST128_ECB 0x00000321UL
+++#define CKM_CAST5_CBC 0x00000322UL
+++#define CKM_CAST128_CBC 0x00000322UL
+++#define CKM_CAST5_MAC 0x00000323UL
+++#define CKM_CAST128_MAC 0x00000323UL
+++#define CKM_CAST5_MAC_GENERAL 0x00000324UL
+++#define CKM_CAST128_MAC_GENERAL 0x00000324UL
+++#define CKM_CAST5_CBC_PAD 0x00000325UL
+++#define CKM_CAST128_CBC_PAD 0x00000325UL
+++#define CKM_RC5_KEY_GEN 0x00000330UL
+++#define CKM_RC5_ECB 0x00000331UL
+++#define CKM_RC5_CBC 0x00000332UL
+++#define CKM_RC5_MAC 0x00000333UL
+++#define CKM_RC5_MAC_GENERAL 0x00000334UL
+++#define CKM_RC5_CBC_PAD 0x00000335UL
+++#define CKM_IDEA_KEY_GEN 0x00000340UL
+++#define CKM_IDEA_ECB 0x00000341UL
+++#define CKM_IDEA_CBC 0x00000342UL
+++#define CKM_IDEA_MAC 0x00000343UL
+++#define CKM_IDEA_MAC_GENERAL 0x00000344UL
+++#define CKM_IDEA_CBC_PAD 0x00000345UL
+++#define CKM_GENERIC_SECRET_KEY_GEN 0x00000350UL
+++#define CKM_CONCATENATE_BASE_AND_KEY 0x00000360UL
+++#define CKM_CONCATENATE_BASE_AND_DATA 0x00000362UL
+++#define CKM_CONCATENATE_DATA_AND_BASE 0x00000363UL
+++#define CKM_XOR_BASE_AND_DATA 0x00000364UL
+++#define CKM_EXTRACT_KEY_FROM_KEY 0x00000365UL
+++#define CKM_SSL3_PRE_MASTER_KEY_GEN 0x00000370UL
+++#define CKM_SSL3_MASTER_KEY_DERIVE 0x00000371UL
+++#define CKM_SSL3_KEY_AND_MAC_DERIVE 0x00000372UL
+++
+++/* CKM_SSL3_MASTER_KEY_DERIVE_DH, CKM_TLS_PRE_MASTER_KEY_GEN,
+++ * CKM_TLS_MASTER_KEY_DERIVE, CKM_TLS_KEY_AND_MAC_DERIVE, and
+++ * CKM_TLS_MASTER_KEY_DERIVE_DH are new for v2.11 */
+++#define CKM_SSL3_MASTER_KEY_DERIVE_DH 0x00000373UL
+++#define CKM_TLS_PRE_MASTER_KEY_GEN 0x00000374UL
+++#define CKM_TLS_MASTER_KEY_DERIVE 0x00000375UL
+++#define CKM_TLS_KEY_AND_MAC_DERIVE 0x00000376UL
+++#define CKM_TLS_MASTER_KEY_DERIVE_DH 0x00000377UL
+++
+++/* CKM_TLS_PRF is new for v2.20 */
+++#define CKM_TLS_PRF 0x00000378UL
+++
+++#define CKM_SSL3_MD5_MAC 0x00000380UL
+++#define CKM_SSL3_SHA1_MAC 0x00000381UL
+++#define CKM_MD5_KEY_DERIVATION 0x00000390UL
+++#define CKM_MD2_KEY_DERIVATION 0x00000391UL
+++#define CKM_SHA1_KEY_DERIVATION 0x00000392UL
+++
+++/* CKM_SHA256/384/512 are new for v2.20 */
+++#define CKM_SHA256_KEY_DERIVATION 0x00000393UL
+++#define CKM_SHA384_KEY_DERIVATION 0x00000394UL
+++#define CKM_SHA512_KEY_DERIVATION 0x00000395UL
+++
+++/* CKM_SHA224 new for v2.20 amendment 3 */
+++#define CKM_SHA224_KEY_DERIVATION 0x00000396UL
+++
+++/* new for v2.40 */
+++#define CKM_SHA3_256_KEY_DERIVATION 0x00000397UL
+++#define CKM_SHA3_224_KEY_DERIVATION 0x00000398UL
+++#define CKM_SHA3_384_KEY_DERIVATION 0x00000399UL
+++#define CKM_SHA3_512_KEY_DERIVATION 0x0000039AUL
+++#define CKM_SHAKE_128_KEY_DERIVATION 0x0000039BUL
+++#define CKM_SHAKE_256_KEY_DERIVATION 0x0000039CUL
+++
+++#define CKM_PBE_MD2_DES_CBC 0x000003A0UL
+++#define CKM_PBE_MD5_DES_CBC 0x000003A1UL
+++#define CKM_PBE_MD5_CAST_CBC 0x000003A2UL
+++#define CKM_PBE_MD5_CAST3_CBC 0x000003A3UL
+++#define CKM_PBE_MD5_CAST5_CBC 0x000003A4UL
+++#define CKM_PBE_MD5_CAST128_CBC 0x000003A4UL
+++#define CKM_PBE_SHA1_CAST5_CBC 0x000003A5UL
+++#define CKM_PBE_SHA1_CAST128_CBC 0x000003A5UL
+++#define CKM_PBE_SHA1_RC4_128 0x000003A6UL
+++#define CKM_PBE_SHA1_RC4_40 0x000003A7UL
+++#define CKM_PBE_SHA1_DES3_EDE_CBC 0x000003A8UL
+++#define CKM_PBE_SHA1_DES2_EDE_CBC 0x000003A9UL
+++#define CKM_PBE_SHA1_RC2_128_CBC 0x000003AAUL
+++#define CKM_PBE_SHA1_RC2_40_CBC 0x000003ABUL
+++
+++/* CKM_PKCS5_PBKD2 is new for v2.10 */
+++#define CKM_PKCS5_PBKD2 0x000003B0UL
+++
+++#define CKM_PBA_SHA1_WITH_SHA1_HMAC 0x000003C0UL
+++
+++/* WTLS mechanisms are new for v2.20 */
+++#define CKM_WTLS_PRE_MASTER_KEY_GEN 0x000003D0UL
+++#define CKM_WTLS_MASTER_KEY_DERIVE 0x000003D1UL
+++#define CKM_WTLS_MASTER_KEY_DERIVE_DH_ECC 0x000003D2UL
+++#define CKM_WTLS_PRF 0x000003D3UL
+++#define CKM_WTLS_SERVER_KEY_AND_MAC_DERIVE 0x000003D4UL
+++#define CKM_WTLS_CLIENT_KEY_AND_MAC_DERIVE 0x000003D5UL
+++
+++/* TLS 1.2 mechanisms are new for v2.40 */
+++#define CKM_TLS12_MASTER_KEY_DERIVE 0x000003E0UL
+++#define CKM_TLS12_KEY_AND_MAC_DERIVE 0x000003E1UL
+++#define CKM_TLS12_MASTER_KEY_DERIVE_DH 0x000003E2UL
+++#define CKM_TLS12_KEY_SAFE_DERIVE 0x000003E3UL
+++#define CKM_TLS12_MAC 0x000003D8UL
+++#define CKM_TLS12_KDF 0x000003D9UL
+++#define CKM_TLS_MAC 0x000003E4UL
+++#define CKM_TLS_KDF 0x000003E5UL
+++
+++#define CKM_KEY_WRAP_LYNKS 0x00000400UL
+++#define CKM_KEY_WRAP_SET_OAEP 0x00000401UL
+++
+++/* CKM_CMS_SIG is new for v2.20 */
+++#define CKM_CMS_SIG 0x00000500UL
+++
+++/* new for 2.40 */
+++#define CKM_KIP_DERIVE 0x00000510UL
+++#define CKM_KIP_WRAP 0x00000511UL
+++#define CKM_KIP_MAC 0x00000512UL
+++
+++/* Fortezza mechanisms */
+++#define CKM_SKIPJACK_KEY_GEN 0x00001000UL
+++#define CKM_SKIPJACK_ECB64 0x00001001UL
+++#define CKM_SKIPJACK_CBC64 0x00001002UL
+++#define CKM_SKIPJACK_OFB64 0x00001003UL
+++#define CKM_SKIPJACK_CFB64 0x00001004UL
+++#define CKM_SKIPJACK_CFB32 0x00001005UL
+++#define CKM_SKIPJACK_CFB16 0x00001006UL
+++#define CKM_SKIPJACK_CFB8 0x00001007UL
+++#define CKM_SKIPJACK_WRAP 0x00001008UL
+++#define CKM_SKIPJACK_PRIVATE_WRAP 0x00001009UL
+++#define CKM_SKIPJACK_RELAYX 0x0000100aUL
+++#define CKM_KEA_KEY_PAIR_GEN 0x00001010UL
+++#define CKM_KEA_KEY_DERIVE 0x00001011UL
+++#define CKM_FORTEZZA_TIMESTAMP 0x00001020UL
+++#define CKM_BATON_KEY_GEN 0x00001030UL
+++#define CKM_BATON_ECB128 0x00001031UL
+++#define CKM_BATON_ECB96 0x00001032UL
+++#define CKM_BATON_CBC128 0x00001033UL
+++#define CKM_BATON_COUNTER 0x00001034UL
+++#define CKM_BATON_SHUFFLE 0x00001035UL
+++#define CKM_BATON_WRAP 0x00001036UL
+++
+++/* CKM_ECDSA_KEY_PAIR_GEN is deprecated in v2.11,
+++ * CKM_EC_KEY_PAIR_GEN is preferred */
+++#define CKM_ECDSA_KEY_PAIR_GEN 0x00001040UL
+++#define CKM_EC_KEY_PAIR_GEN 0x00001040UL
+++
+++#define CKM_ECDSA 0x00001041UL
+++#define CKM_ECDSA_SHA1 0x00001042UL
+++
+++/* new for v2.40 */
+++#define CKM_ECDSA_SHA224 0x00001043UL
+++#define CKM_ECDSA_SHA256 0x00001044UL
+++#define CKM_ECDSA_SHA384 0x00001045UL
+++#define CKM_ECDSA_SHA512 0x00001046UL
++ #define CKM_EC_KEY_PAIR_GEN_W_EXTRA_BITS 0x0000140BUL
++ 
++-#define CKM_ECDH1_DERIVE               0x00001050UL
++-#define CKM_ECDH1_COFACTOR_DERIVE      0x00001051UL
++-#define CKM_ECMQV_DERIVE               0x00001052UL
++-
++-#define CKM_ECDH_AES_KEY_WRAP          0x00001053UL
++-#define CKM_RSA_AES_KEY_WRAP           0x00001054UL
++-
++-#define CKM_JUNIPER_KEY_GEN            0x00001060UL
++-#define CKM_JUNIPER_ECB128             0x00001061UL
++-#define CKM_JUNIPER_CBC128             0x00001062UL
++-#define CKM_JUNIPER_COUNTER            0x00001063UL
++-#define CKM_JUNIPER_SHUFFLE            0x00001064UL
++-#define CKM_JUNIPER_WRAP               0x00001065UL
++-#define CKM_FASTHASH                   0x00001070UL
++-
++-#define CKM_AES_XTS                    0x00001071UL
++-#define CKM_AES_XTS_KEY_GEN            0x00001072UL
++-#define CKM_AES_KEY_GEN                0x00001080UL
++-#define CKM_AES_ECB                    0x00001081UL
++-#define CKM_AES_CBC                    0x00001082UL
++-#define CKM_AES_MAC                    0x00001083UL
++-#define CKM_AES_MAC_GENERAL            0x00001084UL
++-#define CKM_AES_CBC_PAD                0x00001085UL
++-#define CKM_AES_CTR                    0x00001086UL
++-#define CKM_AES_GCM                    0x00001087UL
++-#define CKM_AES_CCM                    0x00001088UL
++-#define CKM_AES_CTS                    0x00001089UL
++-#define CKM_AES_CMAC                   0x0000108AUL
++-#define CKM_AES_CMAC_GENERAL           0x0000108BUL
++-
++-#define CKM_AES_XCBC_MAC               0x0000108CUL
++-#define CKM_AES_XCBC_MAC_96            0x0000108DUL
++-#define CKM_AES_GMAC                   0x0000108EUL
++-
++-#define CKM_BLOWFISH_KEY_GEN           0x00001090UL
++-#define CKM_BLOWFISH_CBC               0x00001091UL
++-#define CKM_TWOFISH_KEY_GEN            0x00001092UL
++-#define CKM_TWOFISH_CBC                0x00001093UL
++-#define CKM_BLOWFISH_CBC_PAD           0x00001094UL
++-#define CKM_TWOFISH_CBC_PAD            0x00001095UL
++-
++-#define CKM_DES_ECB_ENCRYPT_DATA       0x00001100UL
++-#define CKM_DES_CBC_ENCRYPT_DATA       0x00001101UL
++-#define CKM_DES3_ECB_ENCRYPT_DATA      0x00001102UL
++-#define CKM_DES3_CBC_ENCRYPT_DATA      0x00001103UL
++-#define CKM_AES_ECB_ENCRYPT_DATA       0x00001104UL
++-#define CKM_AES_CBC_ENCRYPT_DATA       0x00001105UL
++-
++-#define CKM_GOSTR3410_KEY_PAIR_GEN     0x00001200UL
++-#define CKM_GOSTR3410                  0x00001201UL
++-#define CKM_GOSTR3410_WITH_GOSTR3411   0x00001202UL
++-#define CKM_GOSTR3410_KEY_WRAP         0x00001203UL
++-#define CKM_GOSTR3410_DERIVE           0x00001204UL
++-#define CKM_GOSTR3411                  0x00001210UL
++-#define CKM_GOSTR3411_HMAC             0x00001211UL
++-#define CKM_GOST28147_KEY_GEN          0x00001220UL
++-#define CKM_GOST28147_ECB              0x00001221UL
++-#define CKM_GOST28147                  0x00001222UL
++-#define CKM_GOST28147_MAC              0x00001223UL
++-#define CKM_GOST28147_KEY_WRAP         0x00001224UL
++-#define CKM_CHACHA20_KEY_GEN           0x00001225UL
++-#define CKM_CHACHA20                   0x00001226UL
++-#define CKM_POLY1305_KEY_GEN           0x00001227UL
++-#define CKM_POLY1305                   0x00001228UL
++-#define CKM_DSA_PARAMETER_GEN          0x00002000UL
++-#define CKM_DH_PKCS_PARAMETER_GEN      0x00002001UL
++-#define CKM_X9_42_DH_PARAMETER_GEN     0x00002002UL
++-#define CKM_DSA_PROBABILISTIC_PARAMETER_GEN 0x00002003UL
++-#define CKM_DSA_PROBABLISTIC_PARAMETER_GEN CKM_DSA_PROBABILISTIC_PARAMETER_GEN
++-#define CKM_DSA_SHAWE_TAYLOR_PARAMETER_GEN    0x00002004UL
++-#define CKM_DSA_FIPS_G_GEN               0x00002005UL
++-
++-#define CKM_AES_OFB                    0x00002104UL
++-#define CKM_AES_CFB64                  0x00002105UL
++-#define CKM_AES_CFB8                   0x00002106UL
++-#define CKM_AES_CFB128                 0x00002107UL
++-
++-#define CKM_AES_CFB1                   0x00002108UL
++-#define CKM_AES_KEY_WRAP               0x00002109UL     /* WAS: 0x00001090 */
++-#define CKM_AES_KEY_WRAP_PAD           0x0000210AUL     /* WAS: 0x00001091 */
++-#define CKM_AES_KEY_WRAP_KWP           0x0000210BUL
++-
++-#define CKM_RSA_PKCS_TPM_1_1           0x00004001UL
++-#define CKM_RSA_PKCS_OAEP_TPM_1_1      0x00004002UL
++-
++-#define CKM_SHA_1_KEY_GEN              0x00004003UL
++-#define CKM_SHA224_KEY_GEN             0x00004004UL
++-#define CKM_SHA256_KEY_GEN             0x00004005UL
++-#define CKM_SHA384_KEY_GEN             0x00004006UL
++-#define CKM_SHA512_KEY_GEN             0x00004007UL
++-#define CKM_SHA512_224_KEY_GEN         0x00004008UL
++-#define CKM_SHA512_256_KEY_GEN         0x00004009UL
++-#define CKM_SHA512_T_KEY_GEN           0x0000400aUL
++-#define CKM_NULL                       0x0000400bUL
++-#define CKM_BLAKE2B_160                0x0000400cUL
++-#define CKM_BLAKE2B_160_HMAC           0x0000400dUL
++-#define CKM_BLAKE2B_160_HMAC_GENERAL   0x0000400eUL
++-#define CKM_BLAKE2B_160_KEY_DERIVE     0x0000400fUL
++-#define CKM_BLAKE2B_160_KEY_GEN        0x00004010UL
++-#define CKM_BLAKE2B_256                0x00004011UL
++-#define CKM_BLAKE2B_256_HMAC           0x00004012UL
++-#define CKM_BLAKE2B_256_HMAC_GENERAL   0x00004013UL
++-#define CKM_BLAKE2B_256_KEY_DERIVE     0x00004014UL
++-#define CKM_BLAKE2B_256_KEY_GEN        0x00004015UL
++-#define CKM_BLAKE2B_384                0x00004016UL
++-#define CKM_BLAKE2B_384_HMAC           0x00004017UL
++-#define CKM_BLAKE2B_384_HMAC_GENERAL   0x00004018UL
++-#define CKM_BLAKE2B_384_KEY_DERIVE     0x00004019UL
++-#define CKM_BLAKE2B_384_KEY_GEN        0x0000401aUL
++-#define CKM_BLAKE2B_512                0x0000401bUL
++-#define CKM_BLAKE2B_512_HMAC           0x0000401cUL
++-#define CKM_BLAKE2B_512_HMAC_GENERAL   0x0000401dUL
++-#define CKM_BLAKE2B_512_KEY_DERIVE     0x0000401eUL
++-#define CKM_BLAKE2B_512_KEY_GEN        0x0000401fUL
++-#define CKM_SALSA20                    0x00004020UL
++-#define CKM_CHACHA20_POLY1305          0x00004021UL
++-#define CKM_SALSA20_POLY1305           0x00004022UL
++-#define CKM_X3DH_INITIALIZE            0x00004023UL
++-#define CKM_X3DH_RESPOND               0x00004024UL
++-#define CKM_X2RATCHET_INITIALIZE       0x00004025UL
++-#define CKM_X2RATCHET_RESPOND          0x00004026UL
++-#define CKM_X2RATCHET_ENCRYPT          0x00004027UL
++-#define CKM_X2RATCHET_DECRYPT          0x00004028UL
++-#define CKM_XEDDSA                     0x00004029UL
++-#define CKM_HKDF_DERIVE                0x0000402aUL
++-#define CKM_HKDF_DATA                  0x0000402bUL
++-#define CKM_HKDF_KEY_GEN               0x0000402cUL
++-#define CKM_SALSA20_KEY_GEN            0x0000402dUL
++-
++-#define CKM_ECDSA_SHA3_224             0x00001047UL
++-#define CKM_ECDSA_SHA3_256             0x00001048UL
++-#define CKM_ECDSA_SHA3_384             0x00001049UL
++-#define CKM_ECDSA_SHA3_512             0x0000104aUL
++-#define CKM_EC_EDWARDS_KEY_PAIR_GEN    0x00001055UL
+++/* CKM_ECDH1_DERIVE, CKM_ECDH1_COFACTOR_DERIVE, and CKM_ECMQV_DERIVE
+++ * are new for v2.11 */
+++#define CKM_ECDH1_DERIVE 0x00001050UL
+++#define CKM_ECDH1_COFACTOR_DERIVE 0x00001051UL
+++#define CKM_ECMQV_DERIVE 0x00001052UL
+++
+++/* new for v2.40 */
+++#define CKM_ECDH_AES_KEY_WRAP 0x00001053UL
+++#define CKM_RSA_AES_KEY_WRAP 0x00001054UL
+++
+++#define CKM_JUNIPER_KEY_GEN 0x00001060UL
+++#define CKM_JUNIPER_ECB128 0x00001061UL
+++#define CKM_JUNIPER_CBC128 0x00001062UL
+++#define CKM_JUNIPER_COUNTER 0x00001063UL
+++#define CKM_JUNIPER_SHUFFLE 0x00001064UL
+++#define CKM_JUNIPER_WRAP 0x00001065UL
+++#define CKM_FASTHASH 0x00001070UL
+++
+++/* CKM_AES_KEY_GEN, CKM_AES_ECB, CKM_AES_CBC, CKM_AES_MAC,
+++ * CKM_AES_MAC_GENERAL, CKM_AES_CBC_PAD, CKM_DSA_PARAMETER_GEN,
+++ * CKM_DH_PKCS_PARAMETER_GEN, and CKM_X9_42_DH_PARAMETER_GEN are
+++ * new for v2.11 */
+++#define CKM_AES_KEY_GEN 0x00001080UL
+++#define CKM_AES_ECB 0x00001081UL
+++#define CKM_AES_CBC 0x00001082UL
+++#define CKM_AES_MAC 0x00001083UL
+++#define CKM_AES_MAC_GENERAL 0x00001084UL
+++#define CKM_AES_CBC_PAD 0x00001085UL
+++/* new for v2.20 amendment 3 */
+++#define CKM_AES_CTR 0x00001086UL
+++/* new for v2.30 */
+++#define CKM_AES_GCM 0x00001087UL
+++#define CKM_AES_CCM 0x00001088UL
+++#define CKM_AES_CTS 0x00001089UL
+++/* AES-CMAC values copied from v2.40 errata 1 header file */
+++#define CKM_AES_CMAC 0x0000108AUL
+++#define CKM_AES_CMAC_GENERAL 0x0000108BUL
+++#define CKM_AES_XCBC_MAC 0x0000108CUL
+++#define CKM_AES_XCBC_MAC_96 0x0000108DUL
+++
+++/* BlowFish and TwoFish are new for v2.20 */
+++#define CKM_BLOWFISH_KEY_GEN 0x00001090UL
+++#define CKM_BLOWFISH_CBC 0x00001091UL
+++#define CKM_TWOFISH_KEY_GEN 0x00001092UL
+++#define CKM_TWOFISH_CBC 0x00001093UL
+++
+++/* new for v2.40 */
+++#define CKM_BLOWFISH_CBC_PAD 0x00001094UL
+++#define CKM_TWOFISH_CBC_PAD 0x00001095UL
+++
+++/* Camellia is proposed for v2.20 Amendment 3 */
+++#define CKM_CAMELLIA_KEY_GEN 0x00000550UL
+++#define CKM_CAMELLIA_ECB 0x00000551UL
+++#define CKM_CAMELLIA_CBC 0x00000552UL
+++#define CKM_CAMELLIA_MAC 0x00000553UL
+++#define CKM_CAMELLIA_MAC_GENERAL 0x00000554UL
+++#define CKM_CAMELLIA_CBC_PAD 0x00000555UL
+++#define CKM_CAMELLIA_ECB_ENCRYPT_DATA 0x00000556UL
+++#define CKM_CAMELLIA_CBC_ENCRYPT_DATA 0x00000557UL
+++
+++/* new for v2.40 */
+++#define CKM_ARIA_KEY_GEN 0x00000560UL
+++#define CKM_ARIA_ECB 0x00000561UL
+++#define CKM_ARIA_CBC 0x00000562UL
+++#define CKM_ARIA_MAC 0x00000563UL
+++#define CKM_ARIA_MAC_GENERAL 0x00000564UL
+++#define CKM_ARIA_CBC_PAD 0x00000565UL
+++#define CKM_ARIA_ECB_ENCRYPT_DATA 0x00000566UL
+++#define CKM_ARIA_CBC_ENCRYPT_DATA 0x00000567UL
+++
+++#define CKM_SEED_KEY_GEN 0x00000650UL
+++#define CKM_SEED_ECB 0x00000651UL
+++#define CKM_SEED_CBC 0x00000652UL
+++#define CKM_SEED_MAC 0x00000653UL
+++#define CKM_SEED_MAC_GENERAL 0x00000654UL
+++#define CKM_SEED_CBC_PAD 0x00000655UL
+++#define CKM_SEED_ECB_ENCRYPT_DATA 0x00000656UL
+++#define CKM_SEED_CBC_ENCRYPT_DATA 0x00000657UL
+++
+++/* new for v2.40 */
+++#define CKM_ECDSA_SHA3_224 0x00001047UL
+++#define CKM_ECDSA_SHA3_256 0x00001048UL
+++#define CKM_ECDSA_SHA3_384 0x00001049UL
+++#define CKM_ECDSA_SHA3_512 0x0000104aUL
+++#define CKM_EC_EDWARDS_KEY_PAIR_GEN 0x00001055UL
++ #define CKM_EC_MONTGOMERY_KEY_PAIR_GEN 0x00001056UL
++-#define CKM_EDDSA                      0x00001057UL
++-#define CKM_SP800_108_COUNTER_KDF      0x000003acUL
++-#define CKM_SP800_108_FEEDBACK_KDF     0x000003adUL
+++#define CKM_EDDSA 0x00001057UL
+++
+++/* CKM_xxx_ENCRYPT_DATA mechanisms are new for v2.20 */
+++#define CKM_DES_ECB_ENCRYPT_DATA 0x00001100UL
+++#define CKM_DES_CBC_ENCRYPT_DATA 0x00001101UL
+++#define CKM_DES3_ECB_ENCRYPT_DATA 0x00001102UL
+++#define CKM_DES3_CBC_ENCRYPT_DATA 0x00001103UL
+++#define CKM_AES_ECB_ENCRYPT_DATA 0x00001104UL
+++#define CKM_AES_CBC_ENCRYPT_DATA 0x00001105UL
+++
+++#define CKM_GOSTR3410_KEY_PAIR_GEN 0x00001200UL
+++#define CKM_GOSTR3410 0x00001201UL
+++#define CKM_GOSTR3410_WITH_GOSTR3411 0x00001202UL
+++#define CKM_GOSTR3410_KEY_WRAP 0x00001203UL
+++#define CKM_GOSTR3410_DERIVE 0x00001204UL
+++#define CKM_GOSTR3411 0x00001210UL
+++#define CKM_GOSTR3411_HMAC 0x00001211UL
+++#define CKM_GOST28147_KEY_GEN 0x00001220UL
+++#define CKM_GOST28147_ECB 0x00001221UL
+++#define CKM_GOST28147 0x00001222UL
+++#define CKM_GOST28147_MAC 0x00001223UL
+++#define CKM_GOST28147_KEY_WRAP 0x00001224UL
+++
+++/* new for v2.40 */
+++#define CKM_CHACHA20_KEY_GEN 0x00001225UL
+++#define CKM_CHACHA20 0x00001226UL
+++#define CKM_POLY1305_KEY_GEN 0x00001227UL
+++#define CKM_POLY1305 0x00001228UL
+++
+++#define CKM_DSA_PARAMETER_GEN 0x00002000UL
+++#define CKM_DH_PKCS_PARAMETER_GEN 0x00002001UL
+++#define CKM_X9_42_DH_PARAMETER_GEN 0x00002002UL
+++
+++/* new for v2.40 */
+++#define CKM_DSA_PROBABILISTIC_PARAMETER_GEN 0x00002003UL
+++#define CKM_DSA_SHAWE_TAYLOR_PARAMETER_GEN 0x00002004UL
+++#define CKM_DSA_FIPS_G_GEN 0x00002005UL
+++#define CKM_AES_CFB1 0x00002108UL
+++#define CKM_AES_KEY_WRAP 0x00002109UL
+++#define CKM_AES_KEY_WRAP_PAD 0x0000210AUL
+++#define CKM_AES_KEY_WRAP_KWP 0x0000210BUL
+++
+++/* CKM_SP800_108_xxx_KDF are new for v3.0 */
+++#define CKM_SP800_108_COUNTER_KDF 0x000003acUL
+++#define CKM_SP800_108_FEEDBACK_KDF 0x000003adUL
++ #define CKM_SP800_108_DOUBLE_PIPELINE_KDF 0x000003aeUL
++ 
++-#define CKM_VENDOR_DEFINED             0x80000000UL
+++/* new for v2.4 */
+++#define CKM_RSA_PKCS_TPM_1_1 0x00004001UL
+++#define CKM_RSA_PKCS_OAEP_TPM_1_1 0x00004002UL
+++#define CKM_SHA_1_KEY_GEN 0x00004003UL
+++#define CKM_SHA224_KEY_GEN 0x00004004UL
+++#define CKM_SHA256_KEY_GEN 0x00004005UL
+++#define CKM_SHA384_KEY_GEN 0x00004006UL
+++#define CKM_SHA512_KEY_GEN 0x00004007UL
+++#define CKM_SHA512_224_KEY_GEN 0x00004008UL
+++#define CKM_SHA512_256_KEY_GEN 0x00004009UL
+++#define CKM_SHA512_T_KEY_GEN 0x0000400aUL
+++
+++/* new for v3.0 */
+++#define CKM_NULL 0x0000400bUL
+++#define CKM_BLAKE2B_160 0x0000400cUL
+++#define CKM_BLAKE2B_160_HMAC 0x0000400dUL
+++#define CKM_BLAKE2B_160_HMAC_GENERAL 0x0000400eUL
+++#define CKM_BLAKE2B_160_KEY_DERIVE 0x0000400fUL
+++#define CKM_BLAKE2B_160_KEY_GEN 0x00004010UL
+++#define CKM_BLAKE2B_256 0x00004011UL
+++#define CKM_BLAKE2B_256_HMAC 0x00004012UL
+++#define CKM_BLAKE2B_256_HMAC_GENERAL 0x00004013UL
+++#define CKM_BLAKE2B_256_KEY_DERIVE 0x00004014UL
+++#define CKM_BLAKE2B_256_KEY_GEN 0x00004015UL
+++#define CKM_BLAKE2B_384 0x00004016UL
+++#define CKM_BLAKE2B_384_HMAC 0x00004017UL
+++#define CKM_BLAKE2B_384_HMAC_GENERAL 0x00004018UL
+++#define CKM_BLAKE2B_384_KEY_DERIVE 0x00004019UL
+++#define CKM_BLAKE2B_384_KEY_GEN 0x0000401aUL
+++#define CKM_BLAKE2B_512 0x0000401bUL
+++#define CKM_BLAKE2B_512_HMAC 0x0000401cUL
+++#define CKM_BLAKE2B_512_HMAC_GENERAL 0x0000401dUL
+++#define CKM_BLAKE2B_512_KEY_DERIVE 0x0000401eUL
+++#define CKM_BLAKE2B_512_KEY_GEN 0x0000401fUL
+++#define CKM_SALSA20 0x00004020UL
+++#define CKM_CHACHA20_POLY1305 0x00004021UL
+++#define CKM_SALSA20_POLY1305 0x00004022UL
+++#define CKM_X3DH_INITIALIZE 0x00004023UL
+++#define CKM_X3DH_RESPOND 0x00004024UL
+++#define CKM_X2RATCHET_INITIALIZE 0x00004025UL
+++#define CKM_X2RATCHET_RESPOND 0x00004026UL
+++#define CKM_X2RATCHET_ENCRYPT 0x00004027UL
+++#define CKM_X2RATCHET_DECRYPT 0x00004028UL
+++#define CKM_XEDDSA 0x00004029UL
+++#define CKM_HKDF_DERIVE 0x0000402aUL
+++#define CKM_HKDF_DATA 0x0000402bUL
+++#define CKM_HKDF_KEY_GEN 0x0000402cUL
+++#define CKM_SALSA20_KEY_GEN 0x0000402dUL
++ 
++-typedef CK_MECHANISM_TYPE CK_PTR CK_MECHANISM_TYPE_PTR;
+++#define CKM_VENDOR_DEFINED 0x80000000UL
++ 
+++typedef CK_MECHANISM_TYPE CK_PTR CK_MECHANISM_TYPE_PTR;
++ 
++ /* CK_MECHANISM is a structure that specifies a particular
++- * mechanism
++- */
+++ * mechanism  */
++ typedef struct CK_MECHANISM {
++     CK_MECHANISM_TYPE mechanism;
++-    CK_VOID_PTR       pParameter;
++-    CK_ULONG          ulParameterLen;  /* in bytes */
+++    CK_VOID_PTR pParameter;
+++
+++    /* ulParameterLen was changed from CK_USHORT to CK_ULONG for
+++     * v2.0 */
+++    CK_ULONG ulParameterLen; /* in bytes */
++ } CK_MECHANISM;
++ 
++ typedef CK_MECHANISM CK_PTR CK_MECHANISM_PTR;
++ 
++-
++ /* CK_MECHANISM_INFO provides information about a particular
++- * mechanism
++- */
+++ * mechanism */
++ typedef struct CK_MECHANISM_INFO {
++     CK_ULONG ulMinKeySize;
++     CK_ULONG ulMaxKeySize;
++@@ -1152,711 +1267,947 @@ typedef struct CK_MECHANISM_INFO {
++ } CK_MECHANISM_INFO;
++ 
++ /* The flags are defined as follows:
++- *      Bit Flag               Mask          Meaning */
++-#define CKF_HW                 0x00000001UL  /* performed by HW */
++-
++-/* Specify whether or not a mechanism can be used for a particular task */
++-#define CKF_MESSAGE_ENCRYPT    0x00000002UL
++-#define CKF_MESSAGE_DECRYPT    0x00000004UL
++-#define CKF_MESSAGE_SIGN       0x00000008UL
++-#define CKF_MESSAGE_VERIFY     0x00000010UL
++-#define CKF_MULTI_MESSAGE      0x00000020UL
++-#define CKF_MULTI_MESSGE       CKF_MULTI_MESSAGE
++-#define CKF_FIND_OBJECTS       0x00000040UL
++-
++-#define CKF_ENCRYPT            0x00000100UL
++-#define CKF_DECRYPT            0x00000200UL
++-#define CKF_DIGEST             0x00000400UL
++-#define CKF_SIGN               0x00000800UL
++-#define CKF_SIGN_RECOVER       0x00001000UL
++-#define CKF_VERIFY             0x00002000UL
++-#define CKF_VERIFY_RECOVER     0x00004000UL
++-#define CKF_GENERATE           0x00008000UL
++-#define CKF_GENERATE_KEY_PAIR  0x00010000UL
++-#define CKF_WRAP               0x00020000UL
++-#define CKF_UNWRAP             0x00040000UL
++-#define CKF_DERIVE             0x00080000UL
+++ *      Bit Flag               Mask        Meaning */
+++#define CKF_HW 0x00000001UL /* performed by HW */
++ 
++-/* Describe a token's EC capabilities not available in mechanism
++- * information.
++- */
++-#define CKF_EC_F_P             0x00100000UL
++-#define CKF_EC_F_2M            0x00200000UL
++-#define CKF_EC_ECPARAMETERS    0x00400000UL
++-#define CKF_EC_OID             0x00800000UL
++-#define CKF_EC_NAMEDCURVE      CKF_EC_OID   /* deprecated since PKCS#11 3.00 */
++-#define CKF_EC_UNCOMPRESS      0x01000000UL
++-#define CKF_EC_COMPRESS        0x02000000UL
++-#define CKF_EC_CURVENAME       0x04000000UL
+++/* Message interface Flags, new for v3.0 */
+++#define CKF_MESSAGE_ENCRYPT 0x00000002UL
+++#define CKF_MESSAGE_DECRYPT 0x00000004UL
+++#define CKF_MESSAGE_SIGN 0x00000008UL
+++#define CKF_MESSAGE_VERIFY 0x00000010UL
+++#define CKF_MULTI_MESSAGE 0x00000020UL
+++
+++/* FindObjects (not for CK_MECHANISM_INFO, but for C_CancelSession) v3.0 */
+++#define CKF_FIND_OBJECTS 0x00000040UL
+++
+++/* The flags CKF_ENCRYPT, CKF_DECRYPT, CKF_DIGEST, CKF_SIGN,
+++ * CKG_SIGN_RECOVER, CKF_VERIFY, CKF_VERIFY_RECOVER,
+++ * CKF_GENERATE, CKF_GENERATE_KEY_PAIR, CKF_WRAP, CKF_UNWRAP,
+++ * and CKF_DERIVE are new for v2.0.  They specify whether or not
+++ * a mechanism can be used for a particular task */
+++#define CKF_ENCRYPT 0x00000100UL
+++#define CKF_DECRYPT 0x00000200UL
+++#define CKF_DIGEST 0x00000400UL
+++#define CKF_SIGN 0x00000800UL
+++#define CKF_SIGN_RECOVER 0x00001000UL
+++#define CKF_VERIFY 0x00002000
+++#define CKF_VERIFY_RECOVER 0x00004000UL
+++#define CKF_GENERATE 0x00008000UL
+++#define CKF_GENERATE_KEY_PAIR 0x00010000UL
+++#define CKF_WRAP 0x00020000UL
+++#define CKF_UNWRAP 0x00040000UL
+++#define CKF_DERIVE 0x00080000UL
+++
+++/* CKF_EC_F_P, CKF_EC_F_2M, CKF_EC_ECPARAMETERS, CKF_EC_NAMEDCURVE,
+++ * CKF_EC_UNCOMPRESS, and CKF_EC_COMPRESS are new for v2.11. They
+++ * describe a token's EC capabilities not available in mechanism
+++ * information. */
+++#define CKF_EC_F_P 0x00100000UL
+++#define CKF_EC_F_2M 0x00200000UL
+++#define CKF_EC_ECPARAMETERS 0x00400000UL
+++#define CKF_EC_OID 0x00800000UL
+++#define CKF_EC_NAMEDCURVE CKF_EC_OID /* renamed in v3.0 */
+++#define CKF_EC_UNCOMPRESS 0x01000000UL
+++#define CKF_EC_COMPRESS 0x02000000UL
++ 
++-#define CKF_EXTENSION          0x80000000UL
+++#define CKF_EXTENSION 0x80000000UL /* FALSE for this version */
++ 
++ typedef CK_MECHANISM_INFO CK_PTR CK_MECHANISM_INFO_PTR;
++ 
++ /* CK_RV is a value that identifies the return value of a
++- * Cryptoki function
++- */
++-typedef CK_ULONG          CK_RV;
++-
++-#define CKR_OK                                0x00000000UL
++-#define CKR_CANCEL                            0x00000001UL
++-#define CKR_HOST_MEMORY                       0x00000002UL
++-#define CKR_SLOT_ID_INVALID                   0x00000003UL
++-
++-#define CKR_GENERAL_ERROR                     0x00000005UL
++-#define CKR_FUNCTION_FAILED                   0x00000006UL
++-
++-#define CKR_ARGUMENTS_BAD                     0x00000007UL
++-#define CKR_NO_EVENT                          0x00000008UL
++-#define CKR_NEED_TO_CREATE_THREADS            0x00000009UL
++-#define CKR_CANT_LOCK                         0x0000000AUL
++-
++-#define CKR_ATTRIBUTE_READ_ONLY               0x00000010UL
++-#define CKR_ATTRIBUTE_SENSITIVE               0x00000011UL
++-#define CKR_ATTRIBUTE_TYPE_INVALID            0x00000012UL
++-#define CKR_ATTRIBUTE_VALUE_INVALID           0x00000013UL
++-
++-#define CKR_ACTION_PROHIBITED                 0x0000001BUL
++-
++-#define CKR_DATA_INVALID                      0x00000020UL
++-#define CKR_DATA_LEN_RANGE                    0x00000021UL
++-#define CKR_DEVICE_ERROR                      0x00000030UL
++-#define CKR_DEVICE_MEMORY                     0x00000031UL
++-#define CKR_DEVICE_REMOVED                    0x00000032UL
++-#define CKR_ENCRYPTED_DATA_INVALID            0x00000040UL
++-#define CKR_ENCRYPTED_DATA_LEN_RANGE          0x00000041UL
++-#define CKR_AEAD_DECRYPT_FAILED               0x00000042UL
++-#define CKR_FUNCTION_CANCELED                 0x00000050UL
++-#define CKR_FUNCTION_NOT_PARALLEL             0x00000051UL
++-
++-#define CKR_FUNCTION_NOT_SUPPORTED            0x00000054UL
++-
++-#define CKR_KEY_HANDLE_INVALID                0x00000060UL
++-
++-#define CKR_KEY_SIZE_RANGE                    0x00000062UL
++-#define CKR_KEY_TYPE_INCONSISTENT             0x00000063UL
++-
++-#define CKR_KEY_NOT_NEEDED                    0x00000064UL
++-#define CKR_KEY_CHANGED                       0x00000065UL
++-#define CKR_KEY_NEEDED                        0x00000066UL
++-#define CKR_KEY_INDIGESTIBLE                  0x00000067UL
++-#define CKR_KEY_FUNCTION_NOT_PERMITTED        0x00000068UL
++-#define CKR_KEY_NOT_WRAPPABLE                 0x00000069UL
++-#define CKR_KEY_UNEXTRACTABLE                 0x0000006AUL
++-
++-#define CKR_MECHANISM_INVALID                 0x00000070UL
++-#define CKR_MECHANISM_PARAM_INVALID           0x00000071UL
++-
++-#define CKR_OBJECT_HANDLE_INVALID             0x00000082UL
++-#define CKR_OPERATION_ACTIVE                  0x00000090UL
++-#define CKR_OPERATION_NOT_INITIALIZED         0x00000091UL
++-#define CKR_PIN_INCORRECT                     0x000000A0UL
++-#define CKR_PIN_INVALID                       0x000000A1UL
++-#define CKR_PIN_LEN_RANGE                     0x000000A2UL
++-
++-#define CKR_PIN_EXPIRED                       0x000000A3UL
++-#define CKR_PIN_LOCKED                        0x000000A4UL
++-
++-#define CKR_SESSION_CLOSED                    0x000000B0UL
++-#define CKR_SESSION_COUNT                     0x000000B1UL
++-#define CKR_SESSION_HANDLE_INVALID            0x000000B3UL
++-#define CKR_SESSION_PARALLEL_NOT_SUPPORTED    0x000000B4UL
++-#define CKR_SESSION_READ_ONLY                 0x000000B5UL
++-#define CKR_SESSION_EXISTS                    0x000000B6UL
++-
++-#define CKR_SESSION_READ_ONLY_EXISTS          0x000000B7UL
++-#define CKR_SESSION_READ_WRITE_SO_EXISTS      0x000000B8UL
++-
++-#define CKR_SIGNATURE_INVALID                 0x000000C0UL
++-#define CKR_SIGNATURE_LEN_RANGE               0x000000C1UL
++-#define CKR_TEMPLATE_INCOMPLETE               0x000000D0UL
++-#define CKR_TEMPLATE_INCONSISTENT             0x000000D1UL
++-#define CKR_TOKEN_NOT_PRESENT                 0x000000E0UL
++-#define CKR_TOKEN_NOT_RECOGNIZED              0x000000E1UL
++-#define CKR_TOKEN_WRITE_PROTECTED             0x000000E2UL
++-#define CKR_UNWRAPPING_KEY_HANDLE_INVALID     0x000000F0UL
++-#define CKR_UNWRAPPING_KEY_SIZE_RANGE         0x000000F1UL
++-#define CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT  0x000000F2UL
++-#define CKR_USER_ALREADY_LOGGED_IN            0x00000100UL
++-#define CKR_USER_NOT_LOGGED_IN                0x00000101UL
++-#define CKR_USER_PIN_NOT_INITIALIZED          0x00000102UL
++-#define CKR_USER_TYPE_INVALID                 0x00000103UL
++-
++-#define CKR_USER_ANOTHER_ALREADY_LOGGED_IN    0x00000104UL
++-#define CKR_USER_TOO_MANY_TYPES               0x00000105UL
++-
++-#define CKR_WRAPPED_KEY_INVALID               0x00000110UL
++-#define CKR_WRAPPED_KEY_LEN_RANGE             0x00000112UL
++-#define CKR_WRAPPING_KEY_HANDLE_INVALID       0x00000113UL
++-#define CKR_WRAPPING_KEY_SIZE_RANGE           0x00000114UL
++-#define CKR_WRAPPING_KEY_TYPE_INCONSISTENT    0x00000115UL
++-#define CKR_RANDOM_SEED_NOT_SUPPORTED         0x00000120UL
++-
++-#define CKR_RANDOM_NO_RNG                     0x00000121UL
++-
++-#define CKR_DOMAIN_PARAMS_INVALID             0x00000130UL
++-
++-#define CKR_CURVE_NOT_SUPPORTED               0x00000140UL
++-
++-#define CKR_BUFFER_TOO_SMALL                  0x00000150UL
++-#define CKR_SAVED_STATE_INVALID               0x00000160UL
++-#define CKR_INFORMATION_SENSITIVE             0x00000170UL
++-#define CKR_STATE_UNSAVEABLE                  0x00000180UL
++-
++-#define CKR_CRYPTOKI_NOT_INITIALIZED          0x00000190UL
++-#define CKR_CRYPTOKI_ALREADY_INITIALIZED      0x00000191UL
++-#define CKR_MUTEX_BAD                         0x000001A0UL
++-#define CKR_MUTEX_NOT_LOCKED                  0x000001A1UL
++-
++-#define CKR_NEW_PIN_MODE                      0x000001B0UL
++-#define CKR_NEXT_OTP                          0x000001B1UL
++-
++-#define CKR_EXCEEDED_MAX_ITERATIONS           0x000001B5UL
++-#define CKR_FIPS_SELF_TEST_FAILED             0x000001B6UL
++-#define CKR_LIBRARY_LOAD_FAILED               0x000001B7UL
++-#define CKR_PIN_TOO_WEAK                      0x000001B8UL
++-#define CKR_PUBLIC_KEY_INVALID                0x000001B9UL
++-
++-#define CKR_FUNCTION_REJECTED                 0x00000200UL
++-#define CKR_TOKEN_RESOURCE_EXCEEDED           0x00000201UL
++-#define CKR_OPERATION_CANCEL_FAILED           0x00000202UL
++-
++-#define CKR_VENDOR_DEFINED                    0x80000000UL
+++ * PKCS #11 function */
+++/* CK_RV was changed from CK_USHORT to CK_ULONG for v2.0 */
+++typedef CK_ULONG CK_RV;
+++
+++#define CKR_OK 0x00000000UL
+++#define CKR_CANCEL 0x00000001UL
+++#define CKR_HOST_MEMORY 0x00000002UL
+++#define CKR_SLOT_ID_INVALID 0x00000003UL
+++
+++/* CKR_FLAGS_INVALID was removed for v2.0 */
+++
+++/* CKR_GENERAL_ERROR and CKR_FUNCTION_FAILED are new for v2.0 */
+++#define CKR_GENERAL_ERROR 0x00000005UL
+++#define CKR_FUNCTION_FAILED 0x00000006UL
+++
+++/* CKR_ARGUMENTS_BAD, CKR_NO_EVENT, CKR_NEED_TO_CREATE_THREADS,
+++ * and CKR_CANT_LOCK are new for v2.01 */
+++#define CKR_ARGUMENTS_BAD 0x00000007UL
+++#define CKR_NO_EVENT 0x00000008UL
+++#define CKR_NEED_TO_CREATE_THREADS 0x00000009UL
+++#define CKR_CANT_LOCK 0x0000000AUL
+++
+++#define CKR_ATTRIBUTE_READ_ONLY 0x00000010UL
+++#define CKR_ATTRIBUTE_SENSITIVE 0x00000011UL
+++#define CKR_ATTRIBUTE_TYPE_INVALID 0x00000012UL
+++#define CKR_ATTRIBUTE_VALUE_INVALID 0x00000013UL
+++
+++/* new for v3.0 */
+++#define CKR_ACTION_PROHIBITED 0x0000001BUL
+++
+++#define CKR_DATA_INVALID 0x00000020UL
+++#define CKR_DATA_LEN_RANGE 0x00000021UL
+++#define CKR_DEVICE_ERROR 0x00000030UL
+++#define CKR_DEVICE_MEMORY 0x00000031UL
+++#define CKR_DEVICE_REMOVED 0x00000032UL
+++#define CKR_ENCRYPTED_DATA_INVALID 0x00000040UL
+++#define CKR_ENCRYPTED_DATA_LEN_RANGE 0x00000041UL
+++#define CKR_FUNCTION_CANCELED 0x00000050UL
+++#define CKR_FUNCTION_NOT_PARALLEL 0x00000051UL
+++
+++/* CKR_FUNCTION_NOT_SUPPORTED is new for v2.0 */
+++#define CKR_FUNCTION_NOT_SUPPORTED 0x00000054UL
+++
+++#define CKR_KEY_HANDLE_INVALID 0x00000060UL
+++
+++/* CKR_KEY_SENSITIVE was removed for v2.0 */
+++
+++#define CKR_KEY_SIZE_RANGE 0x00000062UL
+++#define CKR_KEY_TYPE_INCONSISTENT 0x00000063UL
+++
+++/* CKR_KEY_NOT_NEEDED, CKR_KEY_CHANGED, CKR_KEY_NEEDED,
+++ * CKR_KEY_INDIGESTIBLE, CKR_KEY_FUNCTION_NOT_PERMITTED,
+++ * CKR_KEY_NOT_WRAPPABLE, and CKR_KEY_UNEXTRACTABLE are new for
+++ * v2.0 */
+++#define CKR_KEY_NOT_NEEDED 0x00000064UL
+++#define CKR_KEY_CHANGED 0x00000065UL
+++#define CKR_KEY_NEEDED 0x00000066UL
+++#define CKR_KEY_INDIGESTIBLE 0x00000067UL
+++#define CKR_KEY_FUNCTION_NOT_PERMITTED 0x00000068UL
+++#define CKR_KEY_NOT_WRAPPABLE 0x00000069UL
+++#define CKR_KEY_UNEXTRACTABLE 0x0000006AUL
+++
+++#define CKR_MECHANISM_INVALID 0x00000070UL
+++#define CKR_MECHANISM_PARAM_INVALID 0x00000071UL
+++
+++/* CKR_OBJECT_CLASS_INCONSISTENT and CKR_OBJECT_CLASS_INVALID
+++ * were removed for v2.0 */
+++#define CKR_OBJECT_HANDLE_INVALID 0x00000082UL
+++#define CKR_OPERATION_ACTIVE 0x00000090UL
+++#define CKR_OPERATION_NOT_INITIALIZED 0x00000091UL
+++#define CKR_PIN_INCORRECT 0x000000A0UL
+++#define CKR_PIN_INVALID 0x000000A1UL
+++#define CKR_PIN_LEN_RANGE 0x000000A2UL
+++
+++/* CKR_PIN_EXPIRED and CKR_PIN_LOCKED are new for v2.0 */
+++#define CKR_PIN_EXPIRED 0x000000A3UL
+++#define CKR_PIN_LOCKED 0x000000A4UL
+++
+++#define CKR_SESSION_CLOSED 0x000000B0UL
+++#define CKR_SESSION_COUNT 0x000000B1UL
+++#define CKR_SESSION_HANDLE_INVALID 0x000000B3UL
+++#define CKR_SESSION_PARALLEL_NOT_SUPPORTED 0x000000B4UL
+++#define CKR_SESSION_READ_ONLY 0x000000B5UL
+++#define CKR_SESSION_EXISTS 0x000000B6UL
+++
+++/* CKR_SESSION_READ_ONLY_EXISTS and
+++ * CKR_SESSION_READ_WRITE_SO_EXISTS are new for v2.0 */
+++#define CKR_SESSION_READ_ONLY_EXISTS 0x000000B7UL
+++#define CKR_SESSION_READ_WRITE_SO_EXISTS 0x000000B8UL
+++
+++#define CKR_SIGNATURE_INVALID 0x000000C0UL
+++#define CKR_SIGNATURE_LEN_RANGE 0x000000C1UL
+++#define CKR_TEMPLATE_INCOMPLETE 0x000000D0UL
+++#define CKR_TEMPLATE_INCONSISTENT 0x000000D1UL
+++#define CKR_TOKEN_NOT_PRESENT 0x000000E0UL
+++#define CKR_TOKEN_NOT_RECOGNIZED 0x000000E1UL
+++#define CKR_TOKEN_WRITE_PROTECTED 0x000000E2UL
+++#define CKR_UNWRAPPING_KEY_HANDLE_INVALID 0x000000F0UL
+++#define CKR_UNWRAPPING_KEY_SIZE_RANGE 0x000000F1UL
+++#define CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT 0x000000F2UL
+++#define CKR_USER_ALREADY_LOGGED_IN 0x00000100UL
+++#define CKR_USER_NOT_LOGGED_IN 0x00000101UL
+++#define CKR_USER_PIN_NOT_INITIALIZED 0x00000102UL
+++#define CKR_USER_TYPE_INVALID 0x00000103UL
+++
+++/* CKR_USER_ANOTHER_ALREADY_LOGGED_IN and CKR_USER_TOO_MANY_TYPES
+++ * are new to v2.01 */
+++#define CKR_USER_ANOTHER_ALREADY_LOGGED_IN 0x00000104UL
+++#define CKR_USER_TOO_MANY_TYPES 0x00000105UL
+++
+++#define CKR_WRAPPED_KEY_INVALID 0x00000110UL
+++#define CKR_WRAPPED_KEY_LEN_RANGE 0x00000112UL
+++#define CKR_WRAPPING_KEY_HANDLE_INVALID 0x00000113UL
+++#define CKR_WRAPPING_KEY_SIZE_RANGE 0x00000114UL
+++#define CKR_WRAPPING_KEY_TYPE_INCONSISTENT 0x00000115UL
+++#define CKR_RANDOM_SEED_NOT_SUPPORTED 0x00000120UL
+++
+++/* This is new to v2.0 */
+++#define CKR_RANDOM_NO_RNG 0x00000121UL
+++
+++/* This is new to v2.11 */
+++#define CKR_DOMAIN_PARAMS_INVALID 0x00000130UL
+++
+++/* This is new to v2.40 */
+++#define CKR_CURVE_NOT_SUPPORTED 0x00000140UL
+++
+++/* These are new to v2.0 */
+++#define CKR_BUFFER_TOO_SMALL 0x00000150UL
+++#define CKR_SAVED_STATE_INVALID 0x00000160UL
+++#define CKR_INFORMATION_SENSITIVE 0x00000170UL
+++#define CKR_STATE_UNSAVEABLE 0x00000180UL
+++
+++/* These are new to v2.01 */
+++#define CKR_CRYPTOKI_NOT_INITIALIZED 0x00000190UL
+++#define CKR_CRYPTOKI_ALREADY_INITIALIZED 0x00000191UL
+++#define CKR_MUTEX_BAD 0x000001A0UL
+++#define CKR_MUTEX_NOT_LOCKED 0x000001A1UL
+++
+++/* These are new to v2.40 */
+++#define CKR_NEW_PIN_MODE 0x000001B0UL
+++#define CKR_NEXT_OTP 0x000001B1UL
+++#define CKR_EXCEEDED_MAX_ITERATIONS 0x000001B5UL
+++#define CKR_FIPS_SELF_TEST_FAILED 0x000001B6UL
+++#define CKR_LIBRARY_LOAD_FAILED 0x000001B7UL
+++#define CKR_PIN_TOO_WEAK 0x000001B8UL
+++#define CKR_PUBLIC_KEY_INVALID 0x000001B9UL
+++
+++/* This is new to v2.20 */
+++#define CKR_FUNCTION_REJECTED 0x00000200UL
+++
+++/* This is new to v3.0 */
+++#define CKR_TOKEN_RESOURCE_EXCEEDED 0x00000201UL
+++#define CKR_OPERATION_CANCEL_FAILED 0x00000202UL
++ 
+++#define CKR_VENDOR_DEFINED 0x80000000UL
++ 
++ /* CK_NOTIFY is an application callback that processes events */
++ typedef CK_CALLBACK_FUNCTION(CK_RV, CK_NOTIFY)(
++-    CK_SESSION_HANDLE hSession,     /* the session's handle */
++-    CK_NOTIFICATION   event,
++-    CK_VOID_PTR       pApplication  /* passed to C_OpenSession */
++-);
+++    CK_SESSION_HANDLE hSession, /* the session's handle */
+++    CK_NOTIFICATION event,
+++    CK_VOID_PTR pApplication /* passed to C_OpenSession */
+++    );
++ 
++-
++-/* CK_FUNCTION_LIST is a structure holding a Cryptoki spec
+++/* CK_FUNCTION_LIST is a structure holding a PKCS #11 spec
++  * version and pointers of appropriate types to all the
++- * Cryptoki functions
++- */
+++ * PKCS #11 functions */
+++/* CK_FUNCTION_LIST is new for v2.0 */
++ typedef struct CK_FUNCTION_LIST CK_FUNCTION_LIST;
++-typedef struct CK_FUNCTION_LIST_3_0 CK_FUNCTION_LIST_3_0;
++ 
++ typedef CK_FUNCTION_LIST CK_PTR CK_FUNCTION_LIST_PTR;
++-typedef CK_FUNCTION_LIST_3_0 CK_PTR CK_FUNCTION_LIST_3_0_PTR;
++ 
++ typedef CK_FUNCTION_LIST_PTR CK_PTR CK_FUNCTION_LIST_PTR_PTR;
+++
+++/* These are new for v3.0 */
+++typedef struct CK_FUNCTION_LIST_3_0 CK_FUNCTION_LIST_3_0;
+++typedef CK_FUNCTION_LIST_3_0 CK_PTR CK_FUNCTION_LIST_3_0_PTR;
++ typedef CK_FUNCTION_LIST_3_0_PTR CK_PTR CK_FUNCTION_LIST_3_0_PTR_PTR;
++ 
+++/* Interfaces are new in v3.0 */
++ typedef struct CK_INTERFACE {
++-    CK_CHAR     *pInterfaceName;
+++    CK_CHAR *pInterfaceName;
++     CK_VOID_PTR pFunctionList;
++-    CK_FLAGS    flags;
+++    CK_FLAGS flags;
++ } CK_INTERFACE;
++ 
++ typedef CK_INTERFACE CK_PTR CK_INTERFACE_PTR;
++ typedef CK_INTERFACE_PTR CK_PTR CK_INTERFACE_PTR_PTR;
++ 
++-#define CKF_END_OF_MESSAGE   0x00000001UL
++-
+++#define CKF_END_OF_MESSAGE 0x00000001UL
+++#define CKF_INTERFACE_FORK_SAFE 0x00000001UL
++ 
++ /* CK_CREATEMUTEX is an application callback for creating a
++- * mutex object
++- */
+++ * mutex object */
++ typedef CK_CALLBACK_FUNCTION(CK_RV, CK_CREATEMUTEX)(
++-    CK_VOID_PTR_PTR ppMutex  /* location to receive ptr to mutex */
++-);
++-
+++    CK_VOID_PTR_PTR ppMutex /* location to receive ptr to mutex */
+++    );
++ 
++ /* CK_DESTROYMUTEX is an application callback for destroying a
++- * mutex object
++- */
+++ * mutex object */
++ typedef CK_CALLBACK_FUNCTION(CK_RV, CK_DESTROYMUTEX)(
++-    CK_VOID_PTR pMutex  /* pointer to mutex */
++-);
++-
+++    CK_VOID_PTR pMutex /* pointer to mutex */
+++    );
++ 
++ /* CK_LOCKMUTEX is an application callback for locking a mutex */
++ typedef CK_CALLBACK_FUNCTION(CK_RV, CK_LOCKMUTEX)(
++-    CK_VOID_PTR pMutex  /* pointer to mutex */
++-);
++-
+++    CK_VOID_PTR pMutex /* pointer to mutex */
+++    );
++ 
++ /* CK_UNLOCKMUTEX is an application callback for unlocking a
++- * mutex
++- */
+++ * mutex */
++ typedef CK_CALLBACK_FUNCTION(CK_RV, CK_UNLOCKMUTEX)(
++-    CK_VOID_PTR pMutex  /* pointer to mutex */
++-);
++-
++-/* Get functionlist flags */
++-#define CKF_INTERFACE_FORK_SAFE  0x00000001UL
+++    CK_VOID_PTR pMutex /* pointer to mutex */
+++    );
++ 
++ /* CK_C_INITIALIZE_ARGS provides the optional arguments to
++- * C_Initialize
++- */
+++ * C_Initialize */
++ typedef struct CK_C_INITIALIZE_ARGS {
++-    CK_CREATEMUTEX  CreateMutex;
+++    CK_CREATEMUTEX CreateMutex;
++     CK_DESTROYMUTEX DestroyMutex;
++-    CK_LOCKMUTEX    LockMutex;
++-    CK_UNLOCKMUTEX  UnlockMutex;
++-    CK_FLAGS        flags;
++-    CK_VOID_PTR     pReserved;
+++    CK_LOCKMUTEX LockMutex;
+++    CK_UNLOCKMUTEX UnlockMutex;
+++    CK_FLAGS flags;
+++    /* The official PKCS #11 spec does not have a 'LibraryParameters' field, but
+++     * a reserved field. NSS needs a way to pass instance-specific information
+++     * to the library (like where to find its config files, etc). This
+++     * information is usually provided by the installer and passed uninterpreted
+++     * by NSS to the library, though NSS does know the specifics of the softoken
+++     * version of this parameter. Most compliant PKCS#11 modules expect this
+++     * parameter to be NULL, and will return CKR_ARGUMENTS_BAD from
+++     * C_Initialize if Library parameters is supplied. */
+++    CK_CHAR_PTR *LibraryParameters;
+++    /* This field is only present if the LibraryParameters is not NULL. It must
+++     * be NULL in all cases */
+++    CK_VOID_PTR pReserved;
++ } CK_C_INITIALIZE_ARGS;
++ 
++ /* flags: bit flags that provide capabilities of the slot
++  *      Bit Flag                           Mask       Meaning
++  */
++ #define CKF_LIBRARY_CANT_CREATE_OS_THREADS 0x00000001UL
++-#define CKF_OS_LOCKING_OK                  0x00000002UL
+++#define CKF_OS_LOCKING_OK 0x00000002UL
++ 
++ typedef CK_C_INITIALIZE_ARGS CK_PTR CK_C_INITIALIZE_ARGS_PTR;
++ 
++-
++-
++ /* additional flags for parameters to functions */
++ 
++ /* CKF_DONT_BLOCK is for the function C_WaitForSlotEvent */
++-#define CKF_DONT_BLOCK     1
+++#define CKF_DONT_BLOCK 1
++ 
++-/* CK_RSA_PKCS_MGF_TYPE  is used to indicate the Message
+++/* CK_RSA_PKCS_OAEP_MGF_TYPE is new for v2.10.
+++ * CK_RSA_PKCS_OAEP_MGF_TYPE  is used to indicate the Message
++  * Generation Function (MGF) applied to a message block when
++  * formatting a message block for the PKCS #1 OAEP encryption
++- * scheme.
++- */
+++ * scheme. */
++ typedef CK_ULONG CK_RSA_PKCS_MGF_TYPE;
++ 
++ typedef CK_RSA_PKCS_MGF_TYPE CK_PTR CK_RSA_PKCS_MGF_TYPE_PTR;
++ 
++ /* The following MGFs are defined */
++-#define CKG_MGF1_SHA1         0x00000001UL
++-#define CKG_MGF1_SHA256       0x00000002UL
++-#define CKG_MGF1_SHA384       0x00000003UL
++-#define CKG_MGF1_SHA512       0x00000004UL
++-#define CKG_MGF1_SHA224       0x00000005UL
++-#define CKG_MGF1_SHA3_224     0x00000006UL
++-#define CKG_MGF1_SHA3_256     0x00000007UL
++-#define CKG_MGF1_SHA3_384     0x00000008UL
++-#define CKG_MGF1_SHA3_512     0x00000009UL
+++/* CKG_MGF1_SHA256, CKG_MGF1_SHA384, and CKG_MGF1_SHA512
+++ * are new for v2.20 */
+++#define CKG_MGF1_SHA1 0x00000001UL
+++#define CKG_MGF1_SHA256 0x00000002UL
+++#define CKG_MGF1_SHA384 0x00000003UL
+++#define CKG_MGF1_SHA512 0x00000004UL
+++
+++/* v2.20 amendment 3 */
+++#define CKG_MGF1_SHA224 0x00000005UL
+++
+++/* v2.40 */
+++#define CKG_MGF1_SHA3_224 0x00000006UL
+++#define CKG_MGF1_SHA3_256 0x00000007UL
+++#define CKG_MGF1_SHA3_384 0x00000008UL
+++#define CKG_MGF1_SHA3_512 0x00000009UL
++ 
++-/* CK_RSA_PKCS_OAEP_SOURCE_TYPE  is used to indicate the source
+++/* CK_RSA_PKCS_OAEP_SOURCE_TYPE is new for v2.10.
+++ * CK_RSA_PKCS_OAEP_SOURCE_TYPE  is used to indicate the source
++  * of the encoding parameter when formatting a message block
++- * for the PKCS #1 OAEP encryption scheme.
++- */
+++ * for the PKCS #1 OAEP encryption scheme. */
++ typedef CK_ULONG CK_RSA_PKCS_OAEP_SOURCE_TYPE;
++ 
++ typedef CK_RSA_PKCS_OAEP_SOURCE_TYPE CK_PTR CK_RSA_PKCS_OAEP_SOURCE_TYPE_PTR;
++ 
++ /* The following encoding parameter sources are defined */
++-#define CKZ_DATA_SPECIFIED    0x00000001UL
+++#define CKZ_DATA_SPECIFIED 0x00000001UL
++ 
++-/* CK_RSA_PKCS_OAEP_PARAMS provides the parameters to the
++- * CKM_RSA_PKCS_OAEP mechanism.
++- */
+++/* CK_RSA_PKCS_OAEP_PARAMS is new for v2.10.
+++ * CK_RSA_PKCS_OAEP_PARAMS provides the parameters to the
+++ * CKM_RSA_PKCS_OAEP mechanism. */
++ typedef struct CK_RSA_PKCS_OAEP_PARAMS {
++-    CK_MECHANISM_TYPE            hashAlg;
++-    CK_RSA_PKCS_MGF_TYPE         mgf;
+++    CK_MECHANISM_TYPE hashAlg;
+++    CK_RSA_PKCS_MGF_TYPE mgf;
++     CK_RSA_PKCS_OAEP_SOURCE_TYPE source;
++-    CK_VOID_PTR                  pSourceData;
++-    CK_ULONG                     ulSourceDataLen;
+++    CK_VOID_PTR pSourceData;
+++    CK_ULONG ulSourceDataLen;
++ } CK_RSA_PKCS_OAEP_PARAMS;
++ 
++ typedef CK_RSA_PKCS_OAEP_PARAMS CK_PTR CK_RSA_PKCS_OAEP_PARAMS_PTR;
++ 
++-/* CK_RSA_PKCS_PSS_PARAMS provides the parameters to the
++- * CKM_RSA_PKCS_PSS mechanism(s).
++- */
+++/* CK_RSA_PKCS_PSS_PARAMS is new for v2.11.
+++ * CK_RSA_PKCS_PSS_PARAMS provides the parameters to the
+++ * CKM_RSA_PKCS_PSS mechanism(s). */
++ typedef struct CK_RSA_PKCS_PSS_PARAMS {
++-    CK_MECHANISM_TYPE    hashAlg;
+++    CK_MECHANISM_TYPE hashAlg;
++     CK_RSA_PKCS_MGF_TYPE mgf;
++-    CK_ULONG             sLen;
+++    CK_ULONG sLen;
++ } CK_RSA_PKCS_PSS_PARAMS;
++ 
++ typedef CK_RSA_PKCS_PSS_PARAMS CK_PTR CK_RSA_PKCS_PSS_PARAMS_PTR;
++ 
+++/* CK_EC_KDF_TYPE is new for v2.11. */
++ typedef CK_ULONG CK_EC_KDF_TYPE;
++-typedef CK_EC_KDF_TYPE CK_PTR CK_EC_KDF_TYPE_PTR;
++ 
++ /* The following EC Key Derivation Functions are defined */
++-#define CKD_NULL                 0x00000001UL
++-#define CKD_SHA1_KDF             0x00000002UL
++-
++-/* The following X9.42 DH key derivation functions are defined */
++-#define CKD_SHA1_KDF_ASN1        0x00000003UL
++-#define CKD_SHA1_KDF_CONCATENATE 0x00000004UL
++-#define CKD_SHA224_KDF           0x00000005UL
++-#define CKD_SHA256_KDF           0x00000006UL
++-#define CKD_SHA384_KDF           0x00000007UL
++-#define CKD_SHA512_KDF           0x00000008UL
++-#define CKD_CPDIVERSIFY_KDF      0x00000009UL
++-#define CKD_SHA3_224_KDF         0x0000000AUL
++-#define CKD_SHA3_256_KDF         0x0000000BUL
++-#define CKD_SHA3_384_KDF         0x0000000CUL
++-#define CKD_SHA3_512_KDF         0x0000000DUL
++-#define CKD_SHA1_KDF_SP800       0x0000000EUL
++-#define CKD_SHA224_KDF_SP800     0x0000000FUL
++-#define CKD_SHA256_KDF_SP800     0x00000010UL
++-#define CKD_SHA384_KDF_SP800     0x00000011UL
++-#define CKD_SHA512_KDF_SP800     0x00000012UL
++-#define CKD_SHA3_224_KDF_SP800   0x00000013UL
++-#define CKD_SHA3_256_KDF_SP800   0x00000014UL
++-#define CKD_SHA3_384_KDF_SP800   0x00000015UL
++-#define CKD_SHA3_512_KDF_SP800   0x00000016UL
++-#define CKD_BLAKE2B_160_KDF      0x00000017UL
++-#define CKD_BLAKE2B_256_KDF      0x00000018UL
++-#define CKD_BLAKE2B_384_KDF      0x00000019UL
++-#define CKD_BLAKE2B_512_KDF      0x0000001aUL
+++#define CKD_NULL 0x00000001UL
+++#define CKD_SHA1_KDF 0x00000002UL
+++#define CKD_SHA224_KDF 0x00000005UL
+++#define CKD_SHA256_KDF 0x00000006UL
+++#define CKD_SHA384_KDF 0x00000007UL
+++#define CKD_SHA512_KDF 0x00000008UL
+++
+++/* new for v2.40 */
+++#define CKD_CPDIVERSIFY_KDF 0x00000009UL
+++#define CKD_SHA3_224_KDF 0x0000000AUL
+++#define CKD_SHA3_256_KDF 0x0000000BUL
+++#define CKD_SHA3_384_KDF 0x0000000CUL
+++#define CKD_SHA3_512_KDF 0x0000000DUL
+++
+++/* new for v3.0 */
+++#define CKD_SHA1_KDF_SP800 0x0000000EUL
+++#define CKD_SHA224_KDF_SP800 0x0000000FUL
+++#define CKD_SHA256_KDF_SP800 0x00000010UL
+++#define CKD_SHA384_KDF_SP800 0x00000011UL
+++#define CKD_SHA512_KDF_SP800 0x00000012UL
+++#define CKD_SHA3_224_KDF_SP800 0x00000013UL
+++#define CKD_SHA3_256_KDF_SP800 0x00000014UL
+++#define CKD_SHA3_384_KDF_SP800 0x00000015UL
+++#define CKD_SHA3_512_KDF_SP800 0x00000016UL
+++#define CKD_BLAKE2B_160_KDF 0x00000017UL
+++#define CKD_BLAKE2B_256_KDF 0x00000018UL
+++#define CKD_BLAKE2B_384_KDF 0x00000019UL
+++#define CKD_BLAKE2B_512_KDF 0x0000001aUL
++ 
++-/* CK_ECDH1_DERIVE_PARAMS provides the parameters to the
+++/* CK_ECDH1_DERIVE_PARAMS is new for v2.11.
+++ * CK_ECDH1_DERIVE_PARAMS provides the parameters to the
++  * CKM_ECDH1_DERIVE and CKM_ECDH1_COFACTOR_DERIVE mechanisms,
++  * where each party contributes one key pair.
++  */
++ typedef struct CK_ECDH1_DERIVE_PARAMS {
++     CK_EC_KDF_TYPE kdf;
++-    CK_ULONG       ulSharedDataLen;
++-    CK_BYTE_PTR    pSharedData;
++-    CK_ULONG       ulPublicDataLen;
++-    CK_BYTE_PTR    pPublicData;
+++    CK_ULONG ulSharedDataLen;
+++    CK_BYTE_PTR pSharedData;
+++    CK_ULONG ulPublicDataLen;
+++    CK_BYTE_PTR pPublicData;
++ } CK_ECDH1_DERIVE_PARAMS;
++ 
++ typedef CK_ECDH1_DERIVE_PARAMS CK_PTR CK_ECDH1_DERIVE_PARAMS_PTR;
++ 
++-/*
+++/* CK_ECDH2_DERIVE_PARAMS is new for v2.11.
++  * CK_ECDH2_DERIVE_PARAMS provides the parameters to the
++- * CKM_ECMQV_DERIVE mechanism, where each party contributes two key pairs.
++- */
+++ * CKM_ECMQV_DERIVE mechanism, where each party contributes two key pairs. */
++ typedef struct CK_ECDH2_DERIVE_PARAMS {
++-    CK_EC_KDF_TYPE   kdf;
++-    CK_ULONG         ulSharedDataLen;
++-    CK_BYTE_PTR      pSharedData;
++-    CK_ULONG         ulPublicDataLen;
++-    CK_BYTE_PTR      pPublicData;
++-    CK_ULONG         ulPrivateDataLen;
+++    CK_EC_KDF_TYPE kdf;
+++    CK_ULONG ulSharedDataLen;
+++    CK_BYTE_PTR pSharedData;
+++    CK_ULONG ulPublicDataLen;
+++    CK_BYTE_PTR pPublicData;
+++    CK_ULONG ulPrivateDataLen;
++     CK_OBJECT_HANDLE hPrivateData;
++-    CK_ULONG         ulPublicDataLen2;
++-    CK_BYTE_PTR      pPublicData2;
+++    CK_ULONG ulPublicDataLen2;
+++    CK_BYTE_PTR pPublicData2;
++ } CK_ECDH2_DERIVE_PARAMS;
++ 
++ typedef CK_ECDH2_DERIVE_PARAMS CK_PTR CK_ECDH2_DERIVE_PARAMS_PTR;
++ 
++ typedef struct CK_ECMQV_DERIVE_PARAMS {
++-    CK_EC_KDF_TYPE   kdf;
++-    CK_ULONG         ulSharedDataLen;
++-    CK_BYTE_PTR      pSharedData;
++-    CK_ULONG         ulPublicDataLen;
++-    CK_BYTE_PTR      pPublicData;
++-    CK_ULONG         ulPrivateDataLen;
+++    CK_EC_KDF_TYPE kdf;
+++    CK_ULONG ulSharedDataLen;
+++    CK_BYTE_PTR pSharedData;
+++    CK_ULONG ulPublicDataLen;
+++    CK_BYTE_PTR pPublicData;
+++    CK_ULONG ulPrivateDataLen;
++     CK_OBJECT_HANDLE hPrivateData;
++-    CK_ULONG         ulPublicDataLen2;
++-    CK_BYTE_PTR      pPublicData2;
+++    CK_ULONG ulPublicDataLen2;
+++    CK_BYTE_PTR pPublicData2;
++     CK_OBJECT_HANDLE publicKey;
++ } CK_ECMQV_DERIVE_PARAMS;
++ 
++ typedef CK_ECMQV_DERIVE_PARAMS CK_PTR CK_ECMQV_DERIVE_PARAMS_PTR;
++ 
++ /* Typedefs and defines for the CKM_X9_42_DH_KEY_PAIR_GEN and the
++- * CKM_X9_42_DH_PARAMETER_GEN mechanisms
++- */
+++ * CKM_X9_42_DH_PARAMETER_GEN mechanisms (new for PKCS #11 v2.11) */
++ typedef CK_ULONG CK_X9_42_DH_KDF_TYPE;
++ typedef CK_X9_42_DH_KDF_TYPE CK_PTR CK_X9_42_DH_KDF_TYPE_PTR;
++ 
++-/* CK_X9_42_DH1_DERIVE_PARAMS provides the parameters to the
+++/* The following X9.42 DH key derivation functions are defined
+++   (besides CKD_NULL already defined : */
+++#define CKD_SHA1_KDF_ASN1 0x00000003UL
+++#define CKD_SHA1_KDF_CONCATENATE 0x00000004UL
+++
+++/* CK_X9_42_DH1_DERIVE_PARAMS is new for v2.11.
+++ * CK_X9_42_DH1_DERIVE_PARAMS provides the parameters to the
++  * CKM_X9_42_DH_DERIVE key derivation mechanism, where each party
++- * contributes one key pair
++- */
+++ * contributes one key pair */
++ typedef struct CK_X9_42_DH1_DERIVE_PARAMS {
++     CK_X9_42_DH_KDF_TYPE kdf;
++-    CK_ULONG             ulOtherInfoLen;
++-    CK_BYTE_PTR          pOtherInfo;
++-    CK_ULONG             ulPublicDataLen;
++-    CK_BYTE_PTR          pPublicData;
+++    CK_ULONG ulOtherInfoLen;
+++    CK_BYTE_PTR pOtherInfo;
+++    CK_ULONG ulPublicDataLen;
+++    CK_BYTE_PTR pPublicData;
++ } CK_X9_42_DH1_DERIVE_PARAMS;
++ 
++ typedef struct CK_X9_42_DH1_DERIVE_PARAMS CK_PTR CK_X9_42_DH1_DERIVE_PARAMS_PTR;
++ 
++-/* CK_X9_42_DH2_DERIVE_PARAMS provides the parameters to the
+++/* CK_X9_42_DH2_DERIVE_PARAMS is new for v2.11.
+++ * CK_X9_42_DH2_DERIVE_PARAMS provides the parameters to the
++  * CKM_X9_42_DH_HYBRID_DERIVE and CKM_X9_42_MQV_DERIVE key derivation
++- * mechanisms, where each party contributes two key pairs
++- */
+++ * mechanisms, where each party contributes two key pairs */
++ typedef struct CK_X9_42_DH2_DERIVE_PARAMS {
++     CK_X9_42_DH_KDF_TYPE kdf;
++-    CK_ULONG             ulOtherInfoLen;
++-    CK_BYTE_PTR          pOtherInfo;
++-    CK_ULONG             ulPublicDataLen;
++-    CK_BYTE_PTR          pPublicData;
++-    CK_ULONG             ulPrivateDataLen;
++-    CK_OBJECT_HANDLE     hPrivateData;
++-    CK_ULONG             ulPublicDataLen2;
++-    CK_BYTE_PTR          pPublicData2;
+++    CK_ULONG ulOtherInfoLen;
+++    CK_BYTE_PTR pOtherInfo;
+++    CK_ULONG ulPublicDataLen;
+++    CK_BYTE_PTR pPublicData;
+++    CK_ULONG ulPrivateDataLen;
+++    CK_OBJECT_HANDLE hPrivateData;
+++    CK_ULONG ulPublicDataLen2;
+++    CK_BYTE_PTR pPublicData2;
++ } CK_X9_42_DH2_DERIVE_PARAMS;
++ 
++ typedef CK_X9_42_DH2_DERIVE_PARAMS CK_PTR CK_X9_42_DH2_DERIVE_PARAMS_PTR;
++ 
++ typedef struct CK_X9_42_MQV_DERIVE_PARAMS {
++     CK_X9_42_DH_KDF_TYPE kdf;
++-    CK_ULONG             ulOtherInfoLen;
++-    CK_BYTE_PTR          pOtherInfo;
++-    CK_ULONG             ulPublicDataLen;
++-    CK_BYTE_PTR          pPublicData;
++-    CK_ULONG             ulPrivateDataLen;
++-    CK_OBJECT_HANDLE     hPrivateData;
++-    CK_ULONG             ulPublicDataLen2;
++-    CK_BYTE_PTR          pPublicData2;
++-    CK_OBJECT_HANDLE     publicKey;
+++    CK_ULONG ulOtherInfoLen;
+++    CK_BYTE_PTR pOtherInfo;
+++    CK_ULONG ulPublicDataLen;
+++    CK_BYTE_PTR pPublicData;
+++    CK_ULONG ulPrivateDataLen;
+++    CK_OBJECT_HANDLE hPrivateData;
+++    CK_ULONG ulPublicDataLen2;
+++    CK_BYTE_PTR pPublicData2;
+++    CK_OBJECT_HANDLE publicKey;
++ } CK_X9_42_MQV_DERIVE_PARAMS;
++ 
++ typedef CK_X9_42_MQV_DERIVE_PARAMS CK_PTR CK_X9_42_MQV_DERIVE_PARAMS_PTR;
++ 
++ /* CK_KEA_DERIVE_PARAMS provides the parameters to the
++- * CKM_KEA_DERIVE mechanism
++- */
+++ * CKM_KEA_DERIVE mechanism */
+++/* CK_KEA_DERIVE_PARAMS is new for v2.0 */
++ typedef struct CK_KEA_DERIVE_PARAMS {
++-    CK_BBOOL    isSender;
++-    CK_ULONG    ulRandomLen;
+++    CK_BBOOL isSender;
+++    CK_ULONG ulRandomLen;
++     CK_BYTE_PTR pRandomA;
++     CK_BYTE_PTR pRandomB;
++-    CK_ULONG    ulPublicDataLen;
+++    CK_ULONG ulPublicDataLen;
++     CK_BYTE_PTR pPublicData;
++ } CK_KEA_DERIVE_PARAMS;
++ 
++ typedef CK_KEA_DERIVE_PARAMS CK_PTR CK_KEA_DERIVE_PARAMS_PTR;
++ 
++-
++ /* CK_RC2_PARAMS provides the parameters to the CKM_RC2_ECB and
++  * CKM_RC2_MAC mechanisms.  An instance of CK_RC2_PARAMS just
++- * holds the effective keysize
++- */
++-typedef CK_ULONG          CK_RC2_PARAMS;
+++ * holds the effective keysize */
+++typedef CK_ULONG CK_RC2_PARAMS;
++ 
++ typedef CK_RC2_PARAMS CK_PTR CK_RC2_PARAMS_PTR;
++ 
++-
++ /* CK_RC2_CBC_PARAMS provides the parameters to the CKM_RC2_CBC
++- * mechanism
++- */
+++ * mechanism */
++ typedef struct CK_RC2_CBC_PARAMS {
++-    CK_ULONG ulEffectiveBits;  /* effective bits (1-1024) */
++-    CK_BYTE  iv[8];            /* IV for CBC mode */
+++    /* ulEffectiveBits was changed from CK_USHORT to CK_ULONG for
+++   * v2.0 */
+++    CK_ULONG ulEffectiveBits; /* effective bits (1-1024) */
+++
+++    CK_BYTE iv[8]; /* IV for CBC mode */
++ } CK_RC2_CBC_PARAMS;
++ 
++ typedef CK_RC2_CBC_PARAMS CK_PTR CK_RC2_CBC_PARAMS_PTR;
++ 
++-
++ /* CK_RC2_MAC_GENERAL_PARAMS provides the parameters for the
++- * CKM_RC2_MAC_GENERAL mechanism
++- */
+++ * CKM_RC2_MAC_GENERAL mechanism */
+++/* CK_RC2_MAC_GENERAL_PARAMS is new for v2.0 */
++ typedef struct CK_RC2_MAC_GENERAL_PARAMS {
++-    CK_ULONG ulEffectiveBits;  /* effective bits (1-1024) */
++-    CK_ULONG ulMacLength;      /* Length of MAC in bytes */
+++    CK_ULONG ulEffectiveBits; /* effective bits (1-1024) */
+++    CK_ULONG ulMacLength;     /* Length of MAC in bytes */
++ } CK_RC2_MAC_GENERAL_PARAMS;
++ 
++-typedef CK_RC2_MAC_GENERAL_PARAMS CK_PTR \
++-        CK_RC2_MAC_GENERAL_PARAMS_PTR;
++-
+++typedef CK_RC2_MAC_GENERAL_PARAMS CK_PTR
+++    CK_RC2_MAC_GENERAL_PARAMS_PTR;
++ 
++ /* CK_RC5_PARAMS provides the parameters to the CKM_RC5_ECB and
++- * CKM_RC5_MAC mechanisms
++- */
+++ * CKM_RC5_MAC mechanisms */
+++/* CK_RC5_PARAMS is new for v2.0 */
++ typedef struct CK_RC5_PARAMS {
++-    CK_ULONG ulWordsize;  /* wordsize in bits */
++-    CK_ULONG ulRounds;    /* number of rounds */
+++    CK_ULONG ulWordsize; /* wordsize in bits */
+++    CK_ULONG ulRounds;   /* number of rounds */
++ } CK_RC5_PARAMS;
++ 
++ typedef CK_RC5_PARAMS CK_PTR CK_RC5_PARAMS_PTR;
++ 
++-
++ /* CK_RC5_CBC_PARAMS provides the parameters to the CKM_RC5_CBC
++- * mechanism
++- */
+++ * mechanism */
+++/* CK_RC5_CBC_PARAMS is new for v2.0 */
++ typedef struct CK_RC5_CBC_PARAMS {
++-    CK_ULONG    ulWordsize;  /* wordsize in bits */
++-    CK_ULONG    ulRounds;    /* number of rounds */
++-    CK_BYTE_PTR pIv;         /* pointer to IV */
++-    CK_ULONG    ulIvLen;     /* length of IV in bytes */
+++    CK_ULONG ulWordsize; /* wordsize in bits */
+++    CK_ULONG ulRounds;   /* number of rounds */
+++    CK_BYTE_PTR pIv;     /* pointer to IV */
+++    CK_ULONG ulIvLen;    /* length of IV in bytes */
++ } CK_RC5_CBC_PARAMS;
++ 
++ typedef CK_RC5_CBC_PARAMS CK_PTR CK_RC5_CBC_PARAMS_PTR;
++ 
++-
++ /* CK_RC5_MAC_GENERAL_PARAMS provides the parameters for the
++- * CKM_RC5_MAC_GENERAL mechanism
++- */
+++ * CKM_RC5_MAC_GENERAL mechanism */
+++/* CK_RC5_MAC_GENERAL_PARAMS is new for v2.0 */
++ typedef struct CK_RC5_MAC_GENERAL_PARAMS {
++-    CK_ULONG ulWordsize;   /* wordsize in bits */
++-    CK_ULONG ulRounds;     /* number of rounds */
++-    CK_ULONG ulMacLength;  /* Length of MAC in bytes */
+++    CK_ULONG ulWordsize;  /* wordsize in bits */
+++    CK_ULONG ulRounds;    /* number of rounds */
+++    CK_ULONG ulMacLength; /* Length of MAC in bytes */
++ } CK_RC5_MAC_GENERAL_PARAMS;
++ 
++-typedef CK_RC5_MAC_GENERAL_PARAMS CK_PTR \
++-        CK_RC5_MAC_GENERAL_PARAMS_PTR;
+++typedef CK_RC5_MAC_GENERAL_PARAMS CK_PTR
+++    CK_RC5_MAC_GENERAL_PARAMS_PTR;
++ 
++ /* CK_MAC_GENERAL_PARAMS provides the parameters to most block
++  * ciphers' MAC_GENERAL mechanisms.  Its value is the length of
++- * the MAC
++- */
++-typedef CK_ULONG          CK_MAC_GENERAL_PARAMS;
+++ * the MAC */
+++/* CK_MAC_GENERAL_PARAMS is new for v2.0 */
+++typedef CK_ULONG CK_MAC_GENERAL_PARAMS;
++ 
++ typedef CK_MAC_GENERAL_PARAMS CK_PTR CK_MAC_GENERAL_PARAMS_PTR;
++ 
+++/* CK_DES/AES_ECB/CBC_ENCRYPT_DATA_PARAMS are new for v2.20 */
++ typedef struct CK_DES_CBC_ENCRYPT_DATA_PARAMS {
++-    CK_BYTE     iv[8];
+++    CK_BYTE iv[8];
++     CK_BYTE_PTR pData;
++-    CK_ULONG    length;
+++    CK_ULONG length;
++ } CK_DES_CBC_ENCRYPT_DATA_PARAMS;
++ 
++-typedef CK_DES_CBC_ENCRYPT_DATA_PARAMS CK_PTR \
++-        CK_DES_CBC_ENCRYPT_DATA_PARAMS_PTR;
+++typedef CK_DES_CBC_ENCRYPT_DATA_PARAMS CK_PTR CK_DES_CBC_ENCRYPT_DATA_PARAMS_PTR;
++ 
++ typedef struct CK_AES_CBC_ENCRYPT_DATA_PARAMS {
++-    CK_BYTE     iv[16];
+++    CK_BYTE iv[16];
++     CK_BYTE_PTR pData;
++-    CK_ULONG    length;
+++    CK_ULONG length;
++ } CK_AES_CBC_ENCRYPT_DATA_PARAMS;
++ 
++-typedef CK_AES_CBC_ENCRYPT_DATA_PARAMS CK_PTR \
++-        CK_AES_CBC_ENCRYPT_DATA_PARAMS_PTR;
+++typedef CK_AES_CBC_ENCRYPT_DATA_PARAMS CK_PTR CK_AES_CBC_ENCRYPT_DATA_PARAMS_PTR;
+++
+++/* CK_AES_CTR_PARAMS is new for PKCS #11 v2.20 amendment 3 */
+++typedef struct CK_AES_CTR_PARAMS {
+++    CK_ULONG ulCounterBits;
+++    CK_BYTE cb[16];
+++} CK_AES_CTR_PARAMS;
+++
+++typedef CK_AES_CTR_PARAMS CK_PTR CK_AES_CTR_PARAMS_PTR;
+++
+++/* CK_GCM_PARAMS is new for version 2.30 */
+++/* There was a discrepency between the doc and the headers
+++ * in PKCS #11 v2.40, NSS had the doc version, but the header
+++ * was normative. In V3.0 they were reconsiled as the header
+++ * version. In NSS the header version is called CK_GCM_PARAMS_V3
+++ * and the v2.40 doc version is called CK_NSS_GCM_PARAMS.
+++ * CK_GCM_PARMS is define as CK_NSS_GCM_PARAMS  if
+++ * NSS_PCKS11_2_0_COMPAT is defined and CK_GCM_PARAMS_V3 if it's not.
+++ * Softoken accepts either version and internally uses CK_NSS_GCM_PARAMS */
+++typedef struct CK_GCM_PARAMS_V3 {
+++    CK_BYTE_PTR pIv;
+++    CK_ULONG ulIvLen;
+++    CK_ULONG ulIvBits;
+++    CK_BYTE_PTR pAAD;
+++    CK_ULONG ulAADLen;
+++    CK_ULONG ulTagBits;
+++} CK_GCM_PARAMS_V3;
+++
+++typedef CK_GCM_PARAMS_V3 CK_PTR CK_GCM_PARAMS_V3_PTR;
+++
+++/* CK_CCM_PARAMS is new for version 2.30 */
+++typedef struct CK_CCM_PARAMS {
+++    CK_ULONG ulDataLen;
+++    CK_BYTE_PTR pNonce;
+++    CK_ULONG ulNonceLen;
+++    CK_BYTE_PTR pAAD;
+++    CK_ULONG ulAADLen;
+++    CK_ULONG ulMACLen;
+++} CK_CCM_PARAMS;
+++
+++typedef CK_CCM_PARAMS CK_PTR CK_CCM_PARAMS_PTR;
+++
+++/* SALSA20_POLY1305 and CHACHA20_POLY1305 is AEAD is new in v3.0 */
+++typedef struct CK_SALSA20_CHACHA20_POLY1305_PARAMS {
+++    CK_BYTE_PTR pNonce;
+++    CK_ULONG ulNonceLen;
+++    CK_BYTE_PTR pAAD;
+++    CK_ULONG ulAADLen;
+++} CK_SALSA20_CHACHA20_POLY1305_PARAMS;
+++
+++typedef CK_SALSA20_CHACHA20_POLY1305_PARAMS
+++    CK_PTR CK_SALSA20_CHACHA20_POLY1305_PARAMS_PTR;
+++
+++/* MESSAGE params are new for v3.0 */
+++typedef CK_ULONG CK_GENERATOR_FUNCTION;
+++#define CKG_NO_GENERATE 0x00000000UL
+++#define CKG_GENERATE 0x00000001UL
+++#define CKG_GENERATE_COUNTER 0x00000002UL
+++#define CKG_GENERATE_RANDOM 0x00000003UL
+++#define CKG_GENERATE_COUNTER_XOR 0x00000004UL
+++
+++typedef struct CK_GCM_MESSAGE_PARAMS {
+++    CK_BYTE_PTR pIv;
+++    CK_ULONG ulIvLen;
+++    CK_ULONG ulIvFixedBits;
+++    CK_GENERATOR_FUNCTION ivGenerator;
+++    CK_BYTE_PTR pTag;
+++    CK_ULONG ulTagBits;
+++} CK_GCM_MESSAGE_PARAMS;
+++
+++typedef CK_GCM_MESSAGE_PARAMS CK_GCM_MESSAGE_PARAMS_PTR;
+++
+++typedef struct CK_CCM_MESSAGE_PARAMS {
+++    CK_ULONG ulDataLen; /*plaintext or ciphertext*/
+++    CK_BYTE_PTR pNonce;
+++    CK_ULONG ulNonceLen;
+++    CK_ULONG ulNonceFixedBits;
+++    CK_GENERATOR_FUNCTION nonceGenerator;
+++    CK_BYTE_PTR pMAC;
+++    CK_ULONG ulMACLen;
+++} CK_CCM_MESSAGE_PARAMS;
+++
+++typedef CK_CCM_MESSAGE_PARAMS CK_CCM_MESSAGE_PARAMS_PTR;
+++
+++/* SALSA20/CHACHA20 doe not define IV generators */
+++typedef struct CK_SALSA20_CHACHA20_POLY1305_MSG_PARAMS {
+++    CK_BYTE_PTR pNonce;
+++    CK_ULONG ulNonceLen;
+++    CK_BYTE_PTR pTag;
+++} CK_SALSA20_CHACHA20_POLY1305_MSG_PARAMS;
+++
+++typedef CK_SALSA20_CHACHA20_POLY1305_MSG_PARAMS
+++    CK_PTR CK_SALSA20_CHACHA20_POLY1305_MSG_PARAMS_PTR;
++ 
++ /* CK_SKIPJACK_PRIVATE_WRAP_PARAMS provides the parameters to the
++- * CKM_SKIPJACK_PRIVATE_WRAP mechanism
++- */
+++ * CKM_SKIPJACK_PRIVATE_WRAP mechanism */
+++/* CK_SKIPJACK_PRIVATE_WRAP_PARAMS is new for v2.0 */
++ typedef struct CK_SKIPJACK_PRIVATE_WRAP_PARAMS {
++-    CK_ULONG    ulPasswordLen;
+++    CK_ULONG ulPasswordLen;
++     CK_BYTE_PTR pPassword;
++-    CK_ULONG    ulPublicDataLen;
+++    CK_ULONG ulPublicDataLen;
++     CK_BYTE_PTR pPublicData;
++-    CK_ULONG    ulPAndGLen;
++-    CK_ULONG    ulQLen;
++-    CK_ULONG    ulRandomLen;
+++    CK_ULONG ulPAndGLen;
+++    CK_ULONG ulQLen;
+++    CK_ULONG ulRandomLen;
++     CK_BYTE_PTR pRandomA;
++     CK_BYTE_PTR pPrimeP;
++     CK_BYTE_PTR pBaseG;
++     CK_BYTE_PTR pSubprimeQ;
++ } CK_SKIPJACK_PRIVATE_WRAP_PARAMS;
++ 
++-typedef CK_SKIPJACK_PRIVATE_WRAP_PARAMS CK_PTR \
++-        CK_SKIPJACK_PRIVATE_WRAP_PARAMS_PTR;
++-
+++typedef CK_SKIPJACK_PRIVATE_WRAP_PARAMS CK_PTR
+++    CK_SKIPJACK_PRIVATE_WRAP_PTR;
++ 
++ /* CK_SKIPJACK_RELAYX_PARAMS provides the parameters to the
++- * CKM_SKIPJACK_RELAYX mechanism
++- */
+++ * CKM_SKIPJACK_RELAYX mechanism */
+++/* CK_SKIPJACK_RELAYX_PARAMS is new for v2.0 */
++ typedef struct CK_SKIPJACK_RELAYX_PARAMS {
++-    CK_ULONG    ulOldWrappedXLen;
+++    CK_ULONG ulOldWrappedXLen;
++     CK_BYTE_PTR pOldWrappedX;
++-    CK_ULONG    ulOldPasswordLen;
+++    CK_ULONG ulOldPasswordLen;
++     CK_BYTE_PTR pOldPassword;
++-    CK_ULONG    ulOldPublicDataLen;
+++    CK_ULONG ulOldPublicDataLen;
++     CK_BYTE_PTR pOldPublicData;
++-    CK_ULONG    ulOldRandomLen;
+++    CK_ULONG ulOldRandomLen;
++     CK_BYTE_PTR pOldRandomA;
++-    CK_ULONG    ulNewPasswordLen;
+++    CK_ULONG ulNewPasswordLen;
++     CK_BYTE_PTR pNewPassword;
++-    CK_ULONG    ulNewPublicDataLen;
+++    CK_ULONG ulNewPublicDataLen;
++     CK_BYTE_PTR pNewPublicData;
++-    CK_ULONG    ulNewRandomLen;
+++    CK_ULONG ulNewRandomLen;
++     CK_BYTE_PTR pNewRandomA;
++ } CK_SKIPJACK_RELAYX_PARAMS;
++ 
++-typedef CK_SKIPJACK_RELAYX_PARAMS CK_PTR \
++-        CK_SKIPJACK_RELAYX_PARAMS_PTR;
+++typedef CK_SKIPJACK_RELAYX_PARAMS CK_PTR
+++    CK_SKIPJACK_RELAYX_PARAMS_PTR;
+++
+++/* New for v2.40, CAMELLIA, ARIA, SEED */
+++typedef struct CK_CAMELLIA_CTR_PARAMS {
+++    CK_ULONG ulCounterBits;
+++    CK_BYTE cb[16];
+++} CK_CAMELLIA_CTR_PARAMS;
+++
+++typedef CK_CAMELLIA_CTR_PARAMS CK_PTR CK_CAMELLIA_CTR_PARAMS_PTR;
++ 
+++typedef struct CK_CAMELLIA_CBC_ENCRYPT_DATA_PARAMS {
+++    CK_BYTE iv[16];
+++    CK_BYTE_PTR pData;
+++    CK_ULONG length;
+++} CK_CAMELLIA_CBC_ENCRYPT_DATA_PARAMS;
+++
+++typedef CK_CAMELLIA_CBC_ENCRYPT_DATA_PARAMS CK_PTR
+++    CK_CAMELLIA_CBC_ENCRYPT_DATA_PARAMS_PTR;
+++
+++typedef struct CK_ARIA_CBC_ENCRYPT_DATA_PARAMS {
+++    CK_BYTE iv[16];
+++    CK_BYTE_PTR pData;
+++    CK_ULONG length;
+++} CK_ARIA_CBC_ENCRYPT_DATA_PARAMS;
+++
+++typedef CK_ARIA_CBC_ENCRYPT_DATA_PARAMS CK_PTR
+++    CK_ARIA_CBC_ENCRYPT_DATA_PARAMS_PTR;
+++
+++typedef struct CK_SEED_CBC_ENCRYPT_DATA_PARAMS {
+++    CK_BYTE iv[16];
+++    CK_BYTE_PTR pData;
+++    CK_ULONG length;
+++} CK_SEED_CBC_ENCRYPT_DATA_PARAMS;
+++
+++typedef CK_SEED_CBC_ENCRYPT_DATA_PARAMS CK_PTR
+++    CK_SEED_CBC_ENCRYPT_DATA_PARAMS_PTR;
+++
+++/* ChaCha20/Salsa20 Counter support is new in v3.0*/
+++typedef struct CK_CHACHA20_PARAMS {
+++    CK_BYTE_PTR pBlockCounter;
+++    CK_ULONG blockCounterBits;
+++    CK_BYTE_PTR pNonce;
+++    CK_ULONG ulNonceBits;
+++} CK_CHACHA20_PARAMS;
+++
+++typedef CK_CHACHA20_PARAMS CK_PTR CK_CHACHA20_PARAMS_PTR;
+++
+++typedef struct CK_SALSA20_PARAMS {
+++    CK_BYTE_PTR pBlockCounter;
+++    CK_BYTE_PTR pNonce;
+++    CK_ULONG ulNonceBits;
+++} CK_SALSA20_PARAMS;
+++typedef CK_SALSA20_PARAMS CK_PTR CK_SALSA20_PARAMS_PTR;
++ 
++ typedef struct CK_PBE_PARAMS {
++-    CK_BYTE_PTR     pInitVector;
+++    CK_BYTE_PTR pInitVector;
++     CK_UTF8CHAR_PTR pPassword;
++-    CK_ULONG        ulPasswordLen;
++-    CK_BYTE_PTR     pSalt;
++-    CK_ULONG        ulSaltLen;
++-    CK_ULONG        ulIteration;
+++    CK_ULONG ulPasswordLen;
+++    CK_BYTE_PTR pSalt;
+++    CK_ULONG ulSaltLen;
+++    CK_ULONG ulIteration;
++ } CK_PBE_PARAMS;
++ 
++ typedef CK_PBE_PARAMS CK_PTR CK_PBE_PARAMS_PTR;
++ 
++-
++ /* CK_KEY_WRAP_SET_OAEP_PARAMS provides the parameters to the
++- * CKM_KEY_WRAP_SET_OAEP mechanism
++- */
+++ * CKM_KEY_WRAP_SET_OAEP mechanism */
+++/* CK_KEY_WRAP_SET_OAEP_PARAMS is new for v2.0 */
++ typedef struct CK_KEY_WRAP_SET_OAEP_PARAMS {
++-    CK_BYTE     bBC;     /* block contents byte */
++-    CK_BYTE_PTR pX;      /* extra data */
++-    CK_ULONG    ulXLen;  /* length of extra data in bytes */
+++    CK_BYTE bBC;     /* block contents byte */
+++    CK_BYTE_PTR pX;  /* extra data */
+++    CK_ULONG ulXLen; /* length of extra data in bytes */
++ } CK_KEY_WRAP_SET_OAEP_PARAMS;
++ 
++-typedef CK_KEY_WRAP_SET_OAEP_PARAMS CK_PTR CK_KEY_WRAP_SET_OAEP_PARAMS_PTR;
+++typedef CK_KEY_WRAP_SET_OAEP_PARAMS CK_PTR
+++    CK_KEY_WRAP_SET_OAEP_PARAMS_PTR;
++ 
++ typedef struct CK_SSL3_RANDOM_DATA {
++     CK_BYTE_PTR pClientRandom;
++-    CK_ULONG    ulClientRandomLen;
+++    CK_ULONG ulClientRandomLen;
++     CK_BYTE_PTR pServerRandom;
++-    CK_ULONG    ulServerRandomLen;
+++    CK_ULONG ulServerRandomLen;
++ } CK_SSL3_RANDOM_DATA;
++ 
++-
++ typedef struct CK_SSL3_MASTER_KEY_DERIVE_PARAMS {
++     CK_SSL3_RANDOM_DATA RandomInfo;
++-    CK_VERSION_PTR      pVersion;
+++    CK_VERSION_PTR pVersion;
++ } CK_SSL3_MASTER_KEY_DERIVE_PARAMS;
++ 
++-typedef struct CK_SSL3_MASTER_KEY_DERIVE_PARAMS CK_PTR \
++-        CK_SSL3_MASTER_KEY_DERIVE_PARAMS_PTR;
+++typedef struct CK_SSL3_MASTER_KEY_DERIVE_PARAMS CK_PTR
+++    CK_SSL3_MASTER_KEY_DERIVE_PARAMS_PTR;
++ 
++ typedef struct CK_SSL3_KEY_MAT_OUT {
++     CK_OBJECT_HANDLE hClientMacSecret;
++     CK_OBJECT_HANDLE hServerMacSecret;
++     CK_OBJECT_HANDLE hClientKey;
++     CK_OBJECT_HANDLE hServerKey;
++-    CK_BYTE_PTR      pIVClient;
++-    CK_BYTE_PTR      pIVServer;
+++    CK_BYTE_PTR pIVClient;
+++    CK_BYTE_PTR pIVServer;
++ } CK_SSL3_KEY_MAT_OUT;
++ 
++ typedef CK_SSL3_KEY_MAT_OUT CK_PTR CK_SSL3_KEY_MAT_OUT_PTR;
++ 
++-
++ typedef struct CK_SSL3_KEY_MAT_PARAMS {
++-    CK_ULONG                ulMacSizeInBits;
++-    CK_ULONG                ulKeySizeInBits;
++-    CK_ULONG                ulIVSizeInBits;
++-    CK_BBOOL                bIsExport;
++-    CK_SSL3_RANDOM_DATA     RandomInfo;
+++    CK_ULONG ulMacSizeInBits;
+++    CK_ULONG ulKeySizeInBits;
+++    CK_ULONG ulIVSizeInBits;
+++    CK_BBOOL bIsExport; /* Unused. Must be set to CK_FALSE. */
+++    CK_SSL3_RANDOM_DATA RandomInfo;
++     CK_SSL3_KEY_MAT_OUT_PTR pReturnedKeyMaterial;
++ } CK_SSL3_KEY_MAT_PARAMS;
++ 
++ typedef CK_SSL3_KEY_MAT_PARAMS CK_PTR CK_SSL3_KEY_MAT_PARAMS_PTR;
++ 
+++/* CK_TLS_PRF_PARAMS is new for version 2.20 */
++ typedef struct CK_TLS_PRF_PARAMS {
++-    CK_BYTE_PTR  pSeed;
++-    CK_ULONG     ulSeedLen;
++-    CK_BYTE_PTR  pLabel;
++-    CK_ULONG     ulLabelLen;
++-    CK_BYTE_PTR  pOutput;
+++    CK_BYTE_PTR pSeed;
+++    CK_ULONG ulSeedLen;
+++    CK_BYTE_PTR pLabel;
+++    CK_ULONG ulLabelLen;
+++    CK_BYTE_PTR pOutput;
++     CK_ULONG_PTR pulOutputLen;
++ } CK_TLS_PRF_PARAMS;
++ 
++ typedef CK_TLS_PRF_PARAMS CK_PTR CK_TLS_PRF_PARAMS_PTR;
++ 
+++/* TLS 1.2 is new for version 2.40 */
+++typedef struct CK_TLS12_MASTER_KEY_DERIVE_PARAMS {
+++    CK_SSL3_RANDOM_DATA RandomInfo;
+++    CK_VERSION_PTR pVersion;
+++    CK_MECHANISM_TYPE prfHashMechanism;
+++} CK_TLS12_MASTER_KEY_DERIVE_PARAMS;
+++
+++typedef CK_TLS12_MASTER_KEY_DERIVE_PARAMS CK_PTR
+++    CK_TLS12_MASTER_KEY_DERIVE_PARAMS_PTR;
+++
+++typedef struct CK_TLS12_KEY_MAT_PARAMS {
+++    CK_ULONG ulMacSizeInBits;
+++    CK_ULONG ulKeySizeInBits;
+++    CK_ULONG ulIVSizeInBits;
+++    CK_BBOOL bIsExport; /* Unused. Must be set to CK_FALSE. */
+++    CK_SSL3_RANDOM_DATA RandomInfo;
+++    CK_SSL3_KEY_MAT_OUT_PTR pReturnedKeyMaterial;
+++    CK_MECHANISM_TYPE prfHashMechanism;
+++} CK_TLS12_KEY_MAT_PARAMS;
+++
+++typedef CK_TLS12_KEY_MAT_PARAMS CK_PTR CK_TLS12_KEY_MAT_PARAMS_PTR;
+++
+++typedef struct CK_TLS_KDF_PARAMS {
+++    CK_MECHANISM_TYPE prfMechanism;
+++    CK_BYTE_PTR pLabel;
+++    CK_ULONG ulLabelLength;
+++    CK_SSL3_RANDOM_DATA RandomInfo;
+++    CK_BYTE_PTR pContextData;
+++    CK_ULONG ulContextDataLength;
+++} CK_TLS_KDF_PARAMS;
+++
+++typedef struct CK_TLS_MAC_PARAMS {
+++    CK_MECHANISM_TYPE prfHashMechanism;
+++    CK_ULONG ulMacLength;
+++    CK_ULONG ulServerOrClient;
+++} CK_TLS_MAC_PARAMS;
+++
+++typedef CK_TLS_MAC_PARAMS CK_PTR CK_TLS_MAC_PARAMS_PTR;
+++
+++/* HKDF is new for v3.0 */
+++typedef struct CK_HKDF_PARAMS {
+++    CK_BBOOL bExtract;
+++    CK_BBOOL bExpand;
+++    CK_MECHANISM_TYPE prfHashMechanism;
+++    CK_ULONG ulSaltType;
+++    CK_BYTE_PTR pSalt;
+++    CK_ULONG ulSaltLen;
+++    CK_OBJECT_HANDLE hSaltKey;
+++    CK_BYTE_PTR pInfo;
+++    CK_ULONG ulInfoLen;
+++} CK_HKDF_PARAMS;
+++typedef CK_HKDF_PARAMS CK_PTR CK_HKDF_PARAMS_PTR;
+++
+++#define CKF_HKDF_SALT_NULL 0x00000001UL
+++#define CKF_HKDF_SALT_DATA 0x00000002UL
+++#define CKF_HKDF_SALT_KEY 0x00000004UL
+++
+++/* WTLS is new for version 2.20 */
++ typedef struct CK_WTLS_RANDOM_DATA {
++     CK_BYTE_PTR pClientRandom;
++-    CK_ULONG    ulClientRandomLen;
+++    CK_ULONG ulClientRandomLen;
++     CK_BYTE_PTR pServerRandom;
++-    CK_ULONG    ulServerRandomLen;
+++    CK_ULONG ulServerRandomLen;
++ } CK_WTLS_RANDOM_DATA;
++ 
++ typedef CK_WTLS_RANDOM_DATA CK_PTR CK_WTLS_RANDOM_DATA_PTR;
++ 
++ typedef struct CK_WTLS_MASTER_KEY_DERIVE_PARAMS {
++-    CK_MECHANISM_TYPE   DigestMechanism;
+++    CK_MECHANISM_TYPE DigestMechanism;
++     CK_WTLS_RANDOM_DATA RandomInfo;
++-    CK_BYTE_PTR         pVersion;
+++    CK_BYTE_PTR pVersion;
++ } CK_WTLS_MASTER_KEY_DERIVE_PARAMS;
++ 
++-typedef CK_WTLS_MASTER_KEY_DERIVE_PARAMS CK_PTR \
++-        CK_WTLS_MASTER_KEY_DERIVE_PARAMS_PTR;
+++typedef CK_WTLS_MASTER_KEY_DERIVE_PARAMS CK_PTR
+++    CK_WTLS_MASTER_KEY_DERIVE_PARAMS_PTR;
++ 
++ typedef struct CK_WTLS_PRF_PARAMS {
++     CK_MECHANISM_TYPE DigestMechanism;
++-    CK_BYTE_PTR       pSeed;
++-    CK_ULONG          ulSeedLen;
++-    CK_BYTE_PTR       pLabel;
++-    CK_ULONG          ulLabelLen;
++-    CK_BYTE_PTR       pOutput;
++-    CK_ULONG_PTR      pulOutputLen;
+++    CK_BYTE_PTR pSeed;
+++    CK_ULONG ulSeedLen;
+++    CK_BYTE_PTR pLabel;
+++    CK_ULONG ulLabelLen;
+++    CK_BYTE_PTR pOutput;
+++    CK_ULONG_PTR pulOutputLen;
++ } CK_WTLS_PRF_PARAMS;
++ 
++ typedef CK_WTLS_PRF_PARAMS CK_PTR CK_WTLS_PRF_PARAMS_PTR;
++@@ -1864,581 +2215,377 @@ typedef CK_WTLS_PRF_PARAMS CK_PTR CK_WTL
++ typedef struct CK_WTLS_KEY_MAT_OUT {
++     CK_OBJECT_HANDLE hMacSecret;
++     CK_OBJECT_HANDLE hKey;
++-    CK_BYTE_PTR      pIV;
+++    CK_BYTE_PTR pIV;
++ } CK_WTLS_KEY_MAT_OUT;
++ 
++ typedef CK_WTLS_KEY_MAT_OUT CK_PTR CK_WTLS_KEY_MAT_OUT_PTR;
++ 
++ typedef struct CK_WTLS_KEY_MAT_PARAMS {
++-    CK_MECHANISM_TYPE       DigestMechanism;
++-    CK_ULONG                ulMacSizeInBits;
++-    CK_ULONG                ulKeySizeInBits;
++-    CK_ULONG                ulIVSizeInBits;
++-    CK_ULONG                ulSequenceNumber;
++-    CK_BBOOL                bIsExport;
++-    CK_WTLS_RANDOM_DATA     RandomInfo;
+++    CK_MECHANISM_TYPE DigestMechanism;
+++    CK_ULONG ulMacSizeInBits;
+++    CK_ULONG ulKeySizeInBits;
+++    CK_ULONG ulIVSizeInBits;
+++    CK_ULONG ulSequenceNumber;
+++    CK_BBOOL bIsExport; /* Unused. Must be set to CK_FALSE. */
+++    CK_WTLS_RANDOM_DATA RandomInfo;
++     CK_WTLS_KEY_MAT_OUT_PTR pReturnedKeyMaterial;
++ } CK_WTLS_KEY_MAT_PARAMS;
++ 
++ typedef CK_WTLS_KEY_MAT_PARAMS CK_PTR CK_WTLS_KEY_MAT_PARAMS_PTR;
++ 
+++/* The following types for NIST 800-108 KBKDF are defined in PKCS#11 v3.0 */
+++typedef CK_MECHANISM_TYPE CK_SP800_108_PRF_TYPE;
+++typedef CK_ULONG CK_PRF_DATA_TYPE;
+++
+++#define CK_SP800_108_ITERATION_VARIABLE 0x00000001UL
+++#define CK_SP800_108_OPTIONAL_COUNTER 0x00000002UL
+++#define CK_SP800_108_DKM_LENGTH 0x00000003UL
+++#define CK_SP800_108_BYTE_ARRAY 0x00000004UL
+++
+++/* ERRATA: PKCS#11 v3.0 Cryptographic Token Interface Current Mechanisms
+++ * specification specifies a CK_SP800_108_COUNTER, while the pkcs11t.h from
+++ * PKCS#11 v3.0 Cryptographic Token Interface Base Specification specifies
+++ * CK_SP800_108_OPTIONAL_COUNTER. */
+++#define CK_SP800_108_COUNTER CK_SP800_108_OPTIONAL_COUNTER
+++
+++typedef struct CK_PRF_DATA_PARAM {
+++    CK_PRF_DATA_TYPE type;
+++    CK_VOID_PTR pValue;
+++    CK_ULONG ulValueLen;
+++} CK_PRF_DATA_PARAM;
+++
+++typedef CK_PRF_DATA_PARAM CK_PTR CK_PRF_DATA_PARAM_PTR;
+++
+++typedef struct CK_SP800_108_COUNTER_FORMAT {
+++    CK_BBOOL bLittleEndian;
+++    CK_ULONG ulWidthInBits;
+++} CK_SP800_108_COUNTER_FORMAT;
+++
+++typedef CK_SP800_108_COUNTER_FORMAT CK_PTR CK_SP800_108_COUNTER_FORMAT_PTR;
+++
+++typedef CK_ULONG CK_SP800_108_DKM_LENGTH_METHOD;
+++
+++/* ERRATA: PKCS#11 v3.0 Cryptographic Token Interface Current Mechanisms
+++ * defines that these constants exist, but doesn't specify values. pkcs11t.h
+++ * from PKCS#11 v3.0 Cryptographic Token Interface Base Specification doesn't
+++ * define these constants either. */
+++#define CK_SP800_108_DKM_LENGTH_SUM_OF_KEYS 0x00000001UL
+++#define CK_SP800_108_DKM_LENGTH_SUM_OF_SEGMENTS 0x00000002UL
+++
+++typedef struct CK_SP800_108_DKM_LENGTH_FORMAT {
+++    CK_SP800_108_DKM_LENGTH_METHOD dkmLengthMethod;
+++    CK_BBOOL bLittleEndian;
+++    CK_ULONG ulWidthInBits;
+++} CK_SP800_108_DKM_LENGTH_FORMAT;
+++
+++typedef CK_SP800_108_DKM_LENGTH_FORMAT CK_PTR CK_SP800_108_DKM_LENGTH_FORMAT_PTR;
+++
+++typedef struct CK_DERIVED_KEY {
+++    CK_ATTRIBUTE_PTR pTemplate;
+++    CK_ULONG ulAttributeCount;
+++    CK_OBJECT_HANDLE_PTR phKey;
+++} CK_DERIVED_KEY;
+++
+++typedef CK_DERIVED_KEY CK_PTR CK_DERIVED_KEY_PTR;
+++
+++/* UNFIXED ERRATA: NIST SP800-108 specifies that implementer can decide the
+++ * number of bits to take from each PRF invocation. However, all three forms
+++ * of the PKCS#11 v3.0 implementation lack a bitwidth for the PRF and only
+++ * allow the full-width mechanism varieties. Additionally, outside of the
+++ * base key (used as the key to the PRF), there is no way to pass any
+++ * additional, PRF-mechanism specific data. */
+++
+++typedef struct CK_SP800_108_KDF_PARAMS {
+++    CK_SP800_108_PRF_TYPE prfType;
+++    CK_ULONG ulNumberOfDataParams;
+++    CK_PRF_DATA_PARAM_PTR pDataParams;
+++    CK_ULONG ulAdditionalDerivedKeys;
+++    /* ERRATA: in PKCS#11 v3.0, pAdditionalDerivedKeys is typed as
+++     * CK_DERVIED_KEY; it needs to be of type CK_DERIVED_KEY_PTR. */
+++    CK_DERIVED_KEY_PTR pAdditionalDerivedKeys;
+++} CK_SP800_108_KDF_PARAMS;
+++
+++typedef CK_SP800_108_KDF_PARAMS CK_PTR CK_SP800_108_KDF_PARAMS_PTR;
+++
+++typedef struct CK_SP800_108_FEEDBACK_KDF_PARAMS {
+++    CK_SP800_108_PRF_TYPE prfType;
+++    CK_ULONG ulNumberOfDataParams;
+++    CK_PRF_DATA_PARAM_PTR pDataParams;
+++    CK_ULONG ulIVLen;
+++    CK_BYTE_PTR pIV;
+++    CK_ULONG ulAdditionalDerivedKeys;
+++    /* ERRATA: in PKCS#11 v3.0, pAdditionalDerivedKeys is typed as
+++     * CK_DERVIED_KEY; it needs to be of type CK_DERIVED_KEY_PTR. */
+++    CK_DERIVED_KEY_PTR pAdditionalDerivedKeys;
+++} CK_SP800_108_FEEDBACK_KDF_PARAMS;
+++
+++typedef CK_SP800_108_FEEDBACK_KDF_PARAMS CK_PTR CK_SP800_108_FEEDBACK_KDF_PARAMS_PTR;
+++
+++/* CMS is new for version 2.20 */
++ typedef struct CK_CMS_SIG_PARAMS {
++     CK_OBJECT_HANDLE certificateHandle;
++     CK_MECHANISM_PTR pSigningMechanism;
++     CK_MECHANISM_PTR pDigestMechanism;
++-    CK_UTF8CHAR_PTR  pContentType;
++-    CK_BYTE_PTR      pRequestedAttributes;
++-    CK_ULONG         ulRequestedAttributesLen;
++-    CK_BYTE_PTR      pRequiredAttributes;
++-    CK_ULONG         ulRequiredAttributesLen;
+++    CK_UTF8CHAR_PTR pContentType;
+++    CK_BYTE_PTR pRequestedAttributes;
+++    CK_ULONG ulRequestedAttributesLen;
+++    CK_BYTE_PTR pRequiredAttributes;
+++    CK_ULONG ulRequiredAttributesLen;
++ } CK_CMS_SIG_PARAMS;
++ 
++ typedef CK_CMS_SIG_PARAMS CK_PTR CK_CMS_SIG_PARAMS_PTR;
++ 
++ typedef struct CK_KEY_DERIVATION_STRING_DATA {
++     CK_BYTE_PTR pData;
++-    CK_ULONG    ulLen;
+++    CK_ULONG ulLen;
++ } CK_KEY_DERIVATION_STRING_DATA;
++ 
++-typedef CK_KEY_DERIVATION_STRING_DATA CK_PTR \
++-        CK_KEY_DERIVATION_STRING_DATA_PTR;
++-
+++typedef CK_KEY_DERIVATION_STRING_DATA CK_PTR
+++    CK_KEY_DERIVATION_STRING_DATA_PTR;
++ 
++ /* The CK_EXTRACT_PARAMS is used for the
++  * CKM_EXTRACT_KEY_FROM_KEY mechanism.  It specifies which bit
++  * of the base key should be used as the first bit of the
++- * derived key
++- */
+++ * derived key */
+++/* CK_EXTRACT_PARAMS is new for v2.0 */
++ typedef CK_ULONG CK_EXTRACT_PARAMS;
++ 
++ typedef CK_EXTRACT_PARAMS CK_PTR CK_EXTRACT_PARAMS_PTR;
++ 
++-/* CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE is used to
+++/* CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE is new for v2.10.
+++ * CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE is used to
++  * indicate the Pseudo-Random Function (PRF) used to generate
++- * key bits using PKCS #5 PBKDF2.
++- */
+++ * key bits using PKCS #5 PBKDF2. */
++ typedef CK_ULONG CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE;
++ 
++-typedef CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE CK_PTR \
++-        CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE_PTR;
+++typedef CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE CK_PTR CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE_PTR;
++ 
++-#define CKP_PKCS5_PBKD2_HMAC_SHA1          0x00000001UL
++-#define CKP_PKCS5_PBKD2_HMAC_GOSTR3411     0x00000002UL
++-#define CKP_PKCS5_PBKD2_HMAC_SHA224        0x00000003UL
++-#define CKP_PKCS5_PBKD2_HMAC_SHA256        0x00000004UL
++-#define CKP_PKCS5_PBKD2_HMAC_SHA384        0x00000005UL
++-#define CKP_PKCS5_PBKD2_HMAC_SHA512        0x00000006UL
++-#define CKP_PKCS5_PBKD2_HMAC_SHA512_224    0x00000007UL
++-#define CKP_PKCS5_PBKD2_HMAC_SHA512_256    0x00000008UL
+++/* The following PRFs are defined in PKCS #5 v2.1. */
+++#define CKP_PKCS5_PBKD2_HMAC_SHA1 0x00000001UL
+++#define CKP_PKCS5_PBKD2_HMAC_GOSTR3411 0x00000002UL
+++#define CKP_PKCS5_PBKD2_HMAC_SHA224 0x00000003UL
+++#define CKP_PKCS5_PBKD2_HMAC_SHA256 0x00000004UL
+++#define CKP_PKCS5_PBKD2_HMAC_SHA384 0x00000005UL
+++#define CKP_PKCS5_PBKD2_HMAC_SHA512 0x00000006UL
+++#define CKP_PKCS5_PBKD2_HMAC_SHA512_224 0x00000007UL
+++#define CKP_PKCS5_PBKD2_HMAC_SHA512_256 0x00000008UL
++ 
++-/* CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE is used to indicate the
+++/* CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE is new for v2.10.
+++ * CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE is used to indicate the
++  * source of the salt value when deriving a key using PKCS #5
++- * PBKDF2.
++- */
+++ * PBKDF2. */
++ typedef CK_ULONG CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE;
++ 
++-typedef CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE CK_PTR \
++-        CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE_PTR;
+++typedef CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE CK_PTR CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE_PTR;
++ 
++ /* The following salt value sources are defined in PKCS #5 v2.0. */
++-#define CKZ_SALT_SPECIFIED        0x00000001UL
+++#define CKZ_SALT_SPECIFIED 0x00000001UL
++ 
++-/* CK_PKCS5_PBKD2_PARAMS is a structure that provides the
++- * parameters to the CKM_PKCS5_PBKD2 mechanism.
++- */
+++/* CK_PKCS5_PBKD2_PARAMS is new for v2.10.
+++ * CK_PKCS5_PBKD2_PARAMS is a structure that provides the
+++ * parameters to the CKM_PKCS5_PBKD2 mechanism. */
+++/* this structure is kept for compatibility. use _PARAMS2. */
++ typedef struct CK_PKCS5_PBKD2_PARAMS {
++-    CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE           saltSource;
++-    CK_VOID_PTR                                pSaltSourceData;
++-    CK_ULONG                                   ulSaltSourceDataLen;
++-    CK_ULONG                                   iterations;
+++    CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE saltSource;
+++    CK_VOID_PTR pSaltSourceData;
+++    CK_ULONG ulSaltSourceDataLen;
+++    CK_ULONG iterations;
++     CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE prf;
++-    CK_VOID_PTR                                pPrfData;
++-    CK_ULONG                                   ulPrfDataLen;
++-    CK_UTF8CHAR_PTR                            pPassword;
++-    CK_ULONG_PTR                               ulPasswordLen;
+++    CK_VOID_PTR pPrfData;
+++    CK_ULONG ulPrfDataLen;
+++    CK_UTF8CHAR_PTR pPassword;
+++    CK_ULONG_PTR ulPasswordLen;
++ } CK_PKCS5_PBKD2_PARAMS;
++ 
++ typedef CK_PKCS5_PBKD2_PARAMS CK_PTR CK_PKCS5_PBKD2_PARAMS_PTR;
++ 
++-/* CK_PKCS5_PBKD2_PARAMS2 is a corrected version of the CK_PKCS5_PBKD2_PARAMS
++- * structure that provides the parameters to the CKM_PKCS5_PBKD2 mechanism
++- * noting that the ulPasswordLen field is a CK_ULONG and not a CK_ULONG_PTR.
++- */
++ typedef struct CK_PKCS5_PBKD2_PARAMS2 {
++-    CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE           saltSource;
++-    CK_VOID_PTR                                pSaltSourceData;
++-    CK_ULONG                                   ulSaltSourceDataLen;
++-    CK_ULONG                                   iterations;
+++    CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE saltSource;
+++    CK_VOID_PTR pSaltSourceData;
+++    CK_ULONG ulSaltSourceDataLen;
+++    CK_ULONG iterations;
++     CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE prf;
++-    CK_VOID_PTR                                pPrfData;
++-    CK_ULONG                                   ulPrfDataLen;
++-    CK_UTF8CHAR_PTR                            pPassword;
++-    CK_ULONG                                   ulPasswordLen;
+++    CK_VOID_PTR pPrfData;
+++    CK_ULONG ulPrfDataLen;
+++    CK_UTF8CHAR_PTR pPassword;
+++    CK_ULONG ulPasswordLen;
++ } CK_PKCS5_PBKD2_PARAMS2;
++ 
++ typedef CK_PKCS5_PBKD2_PARAMS2 CK_PTR CK_PKCS5_PBKD2_PARAMS2_PTR;
++ 
+++/* OTP is new in v2.40 */
++ typedef CK_ULONG CK_OTP_PARAM_TYPE;
++-typedef CK_OTP_PARAM_TYPE CK_PARAM_TYPE; /* backward compatibility */
+++#define CK_OTP_VALUE 0UL
+++#define CK_OTP_PIN 1UL
+++#define CK_OTP_CHALLENGE 2UL
+++#define CK_OTP_TIME 3UL
+++#define CK_OTP_COUNTER 4UL
+++#define CK_OTP_FLAGS 5UL
+++#define CK_OTP_OUTPUT_LENGTH 6UL
+++#define CK_OTP_OUTPUT_FORMAT 7UL
++ 
++ typedef struct CK_OTP_PARAM {
++     CK_OTP_PARAM_TYPE type;
++-    CK_VOID_PTR       pValue;
++-    CK_ULONG          ulValueLen;
+++    CK_VOID_PTR pValue;
+++    CK_ULONG ulValueLen;
++ } CK_OTP_PARAM;
++ 
++ typedef CK_OTP_PARAM CK_PTR CK_OTP_PARAM_PTR;
++ 
++ typedef struct CK_OTP_PARAMS {
++     CK_OTP_PARAM_PTR pParams;
++-    CK_ULONG         ulCount;
+++    CK_ULONG ulCount;
++ } CK_OTP_PARAMS;
++ 
++ typedef CK_OTP_PARAMS CK_PTR CK_OTP_PARAMS_PTR;
++ 
++ typedef struct CK_OTP_SIGNATURE_INFO {
++     CK_OTP_PARAM_PTR pParams;
++-    CK_ULONG         ulCount;
+++    CK_ULONG ulCount;
++ } CK_OTP_SIGNATURE_INFO;
++ 
++ typedef CK_OTP_SIGNATURE_INFO CK_PTR CK_OTP_SIGNATURE_INFO_PTR;
++ 
++-#define CK_OTP_VALUE          0UL
++-#define CK_OTP_PIN            1UL
++-#define CK_OTP_CHALLENGE      2UL
++-#define CK_OTP_TIME           3UL
++-#define CK_OTP_COUNTER        4UL
++-#define CK_OTP_FLAGS          5UL
++-#define CK_OTP_OUTPUT_LENGTH  6UL
++-#define CK_OTP_OUTPUT_FORMAT  7UL
++-
++-#define CKF_NEXT_OTP          0x00000001UL
++-#define CKF_EXCLUDE_TIME      0x00000002UL
++-#define CKF_EXCLUDE_COUNTER   0x00000004UL
+++#define CKF_NEXT_OTP 0x00000001UL
+++#define CKF_EXCLUDE_TIME 0x00000002UL
+++#define CKF_EXCLUDE_COUNTER 0x00000004UL
++ #define CKF_EXCLUDE_CHALLENGE 0x00000008UL
++-#define CKF_EXCLUDE_PIN       0x00000010UL
+++#define CKF_EXCLUDE_PIN 0x00000010UL
++ #define CKF_USER_FRIENDLY_OTP 0x00000020UL
++ 
+++/* KIP is new in v2.40 */
++ typedef struct CK_KIP_PARAMS {
++     CK_MECHANISM_PTR pMechanism;
++     CK_OBJECT_HANDLE hKey;
++-    CK_BYTE_PTR      pSeed;
++-    CK_ULONG         ulSeedLen;
+++    CK_BYTE_PTR pSeed;
+++    CK_ULONG ulSeedLen;
++ } CK_KIP_PARAMS;
++ 
++ typedef CK_KIP_PARAMS CK_PTR CK_KIP_PARAMS_PTR;
++ 
++-typedef struct CK_AES_CTR_PARAMS {
++-    CK_ULONG ulCounterBits;
++-    CK_BYTE  cb[16];
++-} CK_AES_CTR_PARAMS;
++-
++-typedef CK_AES_CTR_PARAMS CK_PTR CK_AES_CTR_PARAMS_PTR;
++-
++-typedef struct CK_GCM_PARAMS {
++-    CK_BYTE_PTR pIv;
++-    CK_ULONG    ulIvLen;
++-    CK_ULONG    ulIvBits;
++-    CK_BYTE_PTR pAAD;
++-    CK_ULONG    ulAADLen;
++-    CK_ULONG    ulTagBits;
++-} CK_GCM_PARAMS;
++-
++-typedef CK_GCM_PARAMS CK_PTR CK_GCM_PARAMS_PTR;
++-
++-typedef CK_ULONG CK_GENERATOR_FUNCTION;
++-#define CKG_NO_GENERATE      0x00000000UL
++-#define CKG_GENERATE         0x00000001UL
++-#define CKG_GENERATE_COUNTER 0x00000002UL
++-#define CKG_GENERATE_RANDOM  0x00000003UL
++-
++-typedef struct CK_GCM_MESSAGE_PARAMS {
++-    CK_BYTE_PTR           pIv;
++-    CK_ULONG              ulIvLen;
++-    CK_ULONG              ulIvFixedBits;
++-    CK_GENERATOR_FUNCTION ivGenerator;
++-    CK_BYTE_PTR           pTag;
++-    CK_ULONG              ulTagBits;
++-} CK_GCM_MESSAGE_PARAMS;
++-
++-typedef CK_GCM_MESSAGE_PARAMS CK_GCM_MESSAGE_PARAMS_PTR;
++-
++-typedef struct CK_CCM_PARAMS {
++-    CK_ULONG    ulDataLen;
++-    CK_BYTE_PTR pNonce;
++-    CK_ULONG    ulNonceLen;
++-    CK_BYTE_PTR pAAD;
++-    CK_ULONG    ulAADLen;
++-    CK_ULONG    ulMACLen;
++-} CK_CCM_PARAMS;
++-
++-typedef CK_CCM_PARAMS CK_PTR CK_CCM_PARAMS_PTR;
++-
++-typedef struct CK_CCM_MESSAGE_PARAMS {
++-    CK_ULONG              ulDataLen; /*plaintext or ciphertext*/
++-    CK_BYTE_PTR           pNonce;
++-    CK_ULONG              ulNonceLen;
++-    CK_ULONG              ulNonceFixedBits;
++-    CK_GENERATOR_FUNCTION nonceGenerator;
++-    CK_BYTE_PTR           pMAC;
++-    CK_ULONG              ulMACLen;
++-} CK_CCM_MESSAGE_PARAMS;
++-
++-typedef CK_CCM_MESSAGE_PARAMS CK_CCM_MESSAGE_PARAMS_PTR;
++-
++-/* Deprecated. Use CK_GCM_PARAMS */
++-typedef struct CK_AES_GCM_PARAMS {
++-    CK_BYTE_PTR pIv;
++-    CK_ULONG    ulIvLen;
++-    CK_ULONG    ulIvBits;
++-    CK_BYTE_PTR pAAD;
++-    CK_ULONG    ulAADLen;
++-    CK_ULONG    ulTagBits;
++-} CK_AES_GCM_PARAMS;
++-
++-typedef CK_AES_GCM_PARAMS CK_PTR CK_AES_GCM_PARAMS_PTR;
++-
++-/* Deprecated. Use CK_CCM_PARAMS */
++-typedef struct CK_AES_CCM_PARAMS {
++-    CK_ULONG    ulDataLen;
++-    CK_BYTE_PTR pNonce;
++-    CK_ULONG    ulNonceLen;
++-    CK_BYTE_PTR pAAD;
++-    CK_ULONG    ulAADLen;
++-    CK_ULONG    ulMACLen;
++-} CK_AES_CCM_PARAMS;
++-
++-typedef CK_AES_CCM_PARAMS CK_PTR CK_AES_CCM_PARAMS_PTR;
++-
++-typedef struct CK_CAMELLIA_CTR_PARAMS {
++-    CK_ULONG ulCounterBits;
++-    CK_BYTE  cb[16];
++-} CK_CAMELLIA_CTR_PARAMS;
++-
++-typedef CK_CAMELLIA_CTR_PARAMS CK_PTR CK_CAMELLIA_CTR_PARAMS_PTR;
++-
++-typedef struct CK_CAMELLIA_CBC_ENCRYPT_DATA_PARAMS {
++-    CK_BYTE     iv[16];
++-    CK_BYTE_PTR pData;
++-    CK_ULONG    length;
++-} CK_CAMELLIA_CBC_ENCRYPT_DATA_PARAMS;
++-
++-typedef CK_CAMELLIA_CBC_ENCRYPT_DATA_PARAMS CK_PTR \
++-        CK_CAMELLIA_CBC_ENCRYPT_DATA_PARAMS_PTR;
++-
++-typedef struct CK_ARIA_CBC_ENCRYPT_DATA_PARAMS {
++-    CK_BYTE     iv[16];
++-    CK_BYTE_PTR pData;
++-    CK_ULONG    length;
++-} CK_ARIA_CBC_ENCRYPT_DATA_PARAMS;
++-
++-typedef CK_ARIA_CBC_ENCRYPT_DATA_PARAMS CK_PTR \
++-        CK_ARIA_CBC_ENCRYPT_DATA_PARAMS_PTR;
++-
+++/* DSA Param Gen is new for v2.40 */
++ typedef struct CK_DSA_PARAMETER_GEN_PARAM {
++     CK_MECHANISM_TYPE hash;
++-    CK_BYTE_PTR       pSeed;
++-    CK_ULONG          ulSeedLen;
++-    CK_ULONG          ulIndex;
+++    CK_BYTE_PTR pSeed;
+++    CK_ULONG ulSeedLen;
+++    CK_ULONG ulIndex;
++ } CK_DSA_PARAMETER_GEN_PARAM;
++ 
++ typedef CK_DSA_PARAMETER_GEN_PARAM CK_PTR CK_DSA_PARAMETER_GEN_PARAM_PTR;
++ 
+++/* XXXX_AES_KEY_WRAP is new for v2.40 */
++ typedef struct CK_ECDH_AES_KEY_WRAP_PARAMS {
++-    CK_ULONG       ulAESKeyBits;
+++    CK_ULONG ulAESKeyBits;
++     CK_EC_KDF_TYPE kdf;
++-    CK_ULONG       ulSharedDataLen;
++-    CK_BYTE_PTR    pSharedData;
+++    CK_ULONG ulSharedDataLen;
+++    CK_BYTE_PTR pSharedData;
++ } CK_ECDH_AES_KEY_WRAP_PARAMS;
++ 
++ typedef CK_ECDH_AES_KEY_WRAP_PARAMS CK_PTR CK_ECDH_AES_KEY_WRAP_PARAMS_PTR;
++ 
++-typedef CK_ULONG CK_JAVA_MIDP_SECURITY_DOMAIN;
++-
++-typedef CK_ULONG CK_CERTIFICATE_CATEGORY;
++-
++ typedef struct CK_RSA_AES_KEY_WRAP_PARAMS {
++-    CK_ULONG                    ulAESKeyBits;
+++    CK_ULONG ulAESKeyBits;
++     CK_RSA_PKCS_OAEP_PARAMS_PTR pOAEPParams;
++ } CK_RSA_AES_KEY_WRAP_PARAMS;
++ 
++ typedef CK_RSA_AES_KEY_WRAP_PARAMS CK_PTR CK_RSA_AES_KEY_WRAP_PARAMS_PTR;
++ 
++-typedef struct CK_TLS12_MASTER_KEY_DERIVE_PARAMS {
++-    CK_SSL3_RANDOM_DATA RandomInfo;
++-    CK_VERSION_PTR      pVersion;
++-    CK_MECHANISM_TYPE   prfHashMechanism;
++-} CK_TLS12_MASTER_KEY_DERIVE_PARAMS;
++-
++-typedef CK_TLS12_MASTER_KEY_DERIVE_PARAMS CK_PTR \
++-        CK_TLS12_MASTER_KEY_DERIVE_PARAMS_PTR;
++-
++-typedef struct CK_TLS12_KEY_MAT_PARAMS {
++-    CK_ULONG                ulMacSizeInBits;
++-    CK_ULONG                ulKeySizeInBits;
++-    CK_ULONG                ulIVSizeInBits;
++-    CK_BBOOL                bIsExport;
++-    CK_SSL3_RANDOM_DATA     RandomInfo;
++-    CK_SSL3_KEY_MAT_OUT_PTR pReturnedKeyMaterial;
++-    CK_MECHANISM_TYPE       prfHashMechanism;
++-} CK_TLS12_KEY_MAT_PARAMS;
++-
++-typedef CK_TLS12_KEY_MAT_PARAMS CK_PTR CK_TLS12_KEY_MAT_PARAMS_PTR;
++-
++-typedef struct CK_TLS_KDF_PARAMS {
++-    CK_MECHANISM_TYPE   prfMechanism;
++-    CK_BYTE_PTR         pLabel;
++-    CK_ULONG            ulLabelLength;
++-    CK_SSL3_RANDOM_DATA RandomInfo;
++-    CK_BYTE_PTR         pContextData;
++-    CK_ULONG            ulContextDataLength;
++-} CK_TLS_KDF_PARAMS;
++-
++-typedef CK_TLS_KDF_PARAMS CK_PTR CK_TLS_KDF_PARAMS_PTR;
++-
++-typedef struct CK_TLS_MAC_PARAMS {
++-    CK_MECHANISM_TYPE prfHashMechanism;
++-    CK_ULONG          ulMacLength;
++-    CK_ULONG          ulServerOrClient;
++-} CK_TLS_MAC_PARAMS;
++-
++-typedef CK_TLS_MAC_PARAMS CK_PTR CK_TLS_MAC_PARAMS_PTR;
++-
+++/* GOSTR3410 is new for v2.40 */
++ typedef struct CK_GOSTR3410_DERIVE_PARAMS {
++     CK_EC_KDF_TYPE kdf;
++-    CK_BYTE_PTR    pPublicData;
++-    CK_ULONG       ulPublicDataLen;
++-    CK_BYTE_PTR    pUKM;
++-    CK_ULONG       ulUKMLen;
+++    CK_BYTE_PTR pPublicData;
+++    CK_ULONG ulPublicDataLen;
+++    CK_BYTE_PTR pUKM;
+++    CK_ULONG ulUKMLen;
++ } CK_GOSTR3410_DERIVE_PARAMS;
++ 
++ typedef CK_GOSTR3410_DERIVE_PARAMS CK_PTR CK_GOSTR3410_DERIVE_PARAMS_PTR;
++ 
++ typedef struct CK_GOSTR3410_KEY_WRAP_PARAMS {
++-    CK_BYTE_PTR      pWrapOID;
++-    CK_ULONG         ulWrapOIDLen;
++-    CK_BYTE_PTR      pUKM;
++-    CK_ULONG         ulUKMLen;
+++    CK_BYTE_PTR pWrapOID;
+++    CK_ULONG ulWrapOIDLen;
+++    CK_BYTE_PTR pUKM;
+++    CK_ULONG ulUKMLen;
++     CK_OBJECT_HANDLE hKey;
++ } CK_GOSTR3410_KEY_WRAP_PARAMS;
++ 
++ typedef CK_GOSTR3410_KEY_WRAP_PARAMS CK_PTR CK_GOSTR3410_KEY_WRAP_PARAMS_PTR;
++ 
++-typedef struct CK_SEED_CBC_ENCRYPT_DATA_PARAMS {
++-    CK_BYTE     iv[16];
++-    CK_BYTE_PTR pData;
++-    CK_ULONG    length;
++-} CK_SEED_CBC_ENCRYPT_DATA_PARAMS;
++-
++-typedef CK_SEED_CBC_ENCRYPT_DATA_PARAMS CK_PTR \
++-        CK_SEED_CBC_ENCRYPT_DATA_PARAMS_PTR;
++-
++-/*
++- * New PKCS 11 v3.0 data structures.
++- */
++-
++-typedef CK_ULONG CK_PROFILE_ID;
++-typedef CK_PROFILE_ID CK_PTR CK_PROFILE_ID_PTR;
++-
++-/* Typedefs for Flexible KDF */
++-typedef CK_ULONG CK_PRF_DATA_TYPE;
++-typedef CK_MECHANISM_TYPE CK_SP800_108_PRF_TYPE;
++-#define CK_SP800_108_ITERATION_VARIABLE 0x00000001UL
++-#define CK_SP800_108_OPTIONAL_COUNTER   0x00000002UL
++-#define CK_SP800_108_DKM_LENGTH         0x00000003UL
++-#define CK_SP800_108_BYTE_ARRAY         0x00000004UL
++-#define CK_SP800_108_COUNTER            CK_SP800_108_OPTIONAL_COUNTER
++-
++-typedef struct CK_PRF_DATA_PARAM
++-{
++-    CK_PRF_DATA_TYPE type;
++-    CK_VOID_PTR      pValue;
++-    CK_ULONG         ulValueLen;
++-} CK_PRF_DATA_PARAM;
++-
++-typedef CK_PRF_DATA_PARAM CK_PTR CK_PRF_DATA_PARAM_PTR;
++-
++-
++-typedef struct CK_SP800_108_COUNTER_FORMAT
++-{
++-    CK_BBOOL bLittleEndian;
++-    CK_ULONG ulWidthInBits;
++-} CK_SP800_108_COUNTER_FORMAT;
++-
++-typedef CK_SP800_108_COUNTER_FORMAT CK_PTR CK_SP800_108_COUNTER_FORMAT_PTR;
++-
++-typedef CK_ULONG CK_SP800_108_DKM_LENGTH_METHOD;
++-#define CK_SP800_108_DKM_LENGTH_SUM_OF_KEYS     0x00000001UL
++-#define CK_SP800_108_DKM_LENGTH_SUM_OF_SEGMENTS 0x00000002UL
++-
++-typedef struct CK_SP800_108_DKM_LENGTH_FORMAT
++-{
++-    CK_SP800_108_DKM_LENGTH_METHOD dkmLengthMethod;
++-    CK_BBOOL                       bLittleEndian;
++-    CK_ULONG                       ulWidthInBits;
++-} CK_SP800_108_DKM_LENGTH_FORMAT;
++-
++-typedef CK_SP800_108_DKM_LENGTH_FORMAT \
++-        CK_PTR CK_SP800_108_DKM_LENGTH_FORMAT_PTR;
++-
++-typedef struct CK_DERIVED_KEY
++-{
++-    CK_ATTRIBUTE_PTR     pTemplate;
++-    CK_ULONG             ulAttributeCount;
++-    CK_OBJECT_HANDLE_PTR phKey;
++-} CK_DERIVED_KEY;
++-
++-typedef CK_DERIVED_KEY CK_PTR CK_DERIVED_KEY_PTR;
++-
++-typedef struct CK_SP800_108_KDF_PARAMS
++-{
++-    CK_SP800_108_PRF_TYPE prfType;
++-    CK_ULONG              ulNumberOfDataParams;
++-    CK_PRF_DATA_PARAM_PTR pDataParams;
++-    CK_ULONG              ulAdditionalDerivedKeys;
++-    CK_DERIVED_KEY_PTR    pAdditionalDerivedKeys;
++-} CK_SP800_108_KDF_PARAMS;
++-
++-typedef CK_SP800_108_KDF_PARAMS CK_PTR CK_SP800_108_KDF_PARAMS_PTR;
++-
++-typedef struct CK_SP800_108_FEEDBACK_KDF_PARAMS
++-{
++-    CK_SP800_108_PRF_TYPE prfType;
++-    CK_ULONG              ulNumberOfDataParams;
++-    CK_PRF_DATA_PARAM_PTR pDataParams;
++-    CK_ULONG              ulIVLen;
++-    CK_BYTE_PTR           pIV;
++-    CK_ULONG              ulAdditionalDerivedKeys;
++-    CK_DERIVED_KEY_PTR    pAdditionalDerivedKeys;
++-} CK_SP800_108_FEEDBACK_KDF_PARAMS;
++-
++-typedef CK_SP800_108_FEEDBACK_KDF_PARAMS \
++-        CK_PTR CK_SP800_108_FEEDBACK_KDF_PARAMS_PTR;
++-
++-/* EDDSA */
+++/* EDDSA and XEDDSA are new for v3.0 */
++ typedef struct CK_EDDSA_PARAMS {
++-    CK_BBOOL    phFlag;
++-    CK_ULONG    ulContextDataLen;
+++    CK_BBOOL phFlag;
+++    CK_ULONG ulContextDataLen;
++     CK_BYTE_PTR pContextData;
++ } CK_EDDSA_PARAMS;
+++typedef CK_ULONG CK_XEDDSA_HASH_TYPE;
+++typedef CK_XEDDSA_HASH_TYPE CK_PTR CK_XEDDSA_HASH_TYPE_PTR;
++ 
++-typedef CK_EDDSA_PARAMS CK_PTR CK_EDDSA_PARAMS_PTR;
++-
++-/* Extended ChaCha20/Salsa20 support*/
++-typedef struct CK_CHACHA20_PARAMS {
++-    CK_BYTE_PTR pBlockCounter;
++-    CK_ULONG    blockCounterBits;
++-    CK_BYTE_PTR pNonce;
++-    CK_ULONG    ulNonceBits;
++-} CK_CHACHA20_PARAMS;
++-
++-typedef CK_CHACHA20_PARAMS CK_PTR CK_CHACHA20_PARAMS_PTR;
++-
++-typedef struct CK_SALSA20_PARAMS {
++-    CK_BYTE_PTR pBlockCounter;
++-    CK_BYTE_PTR pNonce;
++-    CK_ULONG    ulNonceBits;
++-} CK_SALSA20_PARAMS;
++-
++-typedef CK_SALSA20_PARAMS CK_PTR CK_SALSA20_PARAMS_PTR;
++-
++-typedef struct CK_SALSA20_CHACHA20_POLY1305_PARAMS {
++-    CK_BYTE_PTR pNonce;
++-    CK_ULONG    ulNonceLen;
++-    CK_BYTE_PTR pAAD;
++-    CK_ULONG    ulAADLen;
++-} CK_SALSA20_CHACHA20_POLY1305_PARAMS;
++-
++-typedef CK_SALSA20_CHACHA20_POLY1305_PARAMS \
++-        CK_PTR CK_SALSA20_CHACHA20_POLY1305_PARAMS_PTR;
++-
++-typedef struct CK_SALSA20_CHACHA20_POLY1305_MSG_PARAMS {
++-    CK_BYTE_PTR pNonce;
++-    CK_ULONG    ulNonceLen;
++-    CK_BYTE_PTR pTag;
++-} CK_SALSA20_CHACHA20_POLY1305_MSG_PARAMS;
++-
++-typedef CK_SALSA20_CHACHA20_POLY1305_MSG_PARAMS \
++-        CK_PTR CK_SALSA20_CHACHA20_POLY1305_MSG_PARAMS_PTR;
+++typedef struct CK_XEDDSA_PARAMS {
+++    CK_XEDDSA_HASH_TYPE hash;
+++} CK_XEDDSA_PARAMS;
+++typedef CK_XEDDSA_PARAMS CK_PTR CK_XEDDSA_PARAMS_PTR;
++ 
+++/* X3DH and Ratchet are new in v3.0 */
++ typedef CK_ULONG CK_X3DH_KDF_TYPE;
++ typedef CK_X3DH_KDF_TYPE CK_PTR CK_X3DH_KDF_TYPE_PTR;
++ 
++-/* X3dh, ratchet */
++ typedef struct CK_X3DH_INITIATE_PARAMS {
++     CK_X3DH_KDF_TYPE kdf;
++     CK_OBJECT_HANDLE pPeer_identity;
++     CK_OBJECT_HANDLE pPeer_prekey;
++-    CK_BYTE_PTR      pPrekey_signature;
++-    CK_BYTE_PTR      pOnetime_key;
+++    CK_BYTE_PTR pPrekey_signature;
+++    CK_BYTE_PTR pOnetime_key;
++     CK_OBJECT_HANDLE pOwn_identity;
++     CK_OBJECT_HANDLE pOwn_ephemeral;
++ } CK_X3DH_INITIATE_PARAMS;
++ 
++ typedef struct CK_X3DH_RESPOND_PARAMS {
++     CK_X3DH_KDF_TYPE kdf;
++-    CK_BYTE_PTR      pIdentity_id;
++-    CK_BYTE_PTR      pPrekey_id;
++-    CK_BYTE_PTR      pOnetime_id;
+++    CK_BYTE_PTR pIdentity_id;
+++    CK_BYTE_PTR pPrekey_id;
+++    CK_BYTE_PTR pOnetime_id;
++     CK_OBJECT_HANDLE pInitiator_identity;
++-    CK_BYTE_PTR      pInitiator_ephemeral;
+++    CK_BYTE_PTR pInitiator_ephemeral;
++ } CK_X3DH_RESPOND_PARAMS;
++ 
++ typedef CK_ULONG CK_X2RATCHET_KDF_TYPE;
++ typedef CK_X2RATCHET_KDF_TYPE CK_PTR CK_X2RATCHET_KDF_TYPE_PTR;
++ 
++ typedef struct CK_X2RATCHET_INITIALIZE_PARAMS {
++-    CK_BYTE_PTR           sk;
++-    CK_OBJECT_HANDLE      peer_public_prekey;
++-    CK_OBJECT_HANDLE      peer_public_identity;
++-    CK_OBJECT_HANDLE      own_public_identity;
++-    CK_BBOOL              bEncryptedHeader;
++-    CK_ULONG              eCurve;
++-    CK_MECHANISM_TYPE     aeadMechanism;
+++    CK_BYTE_PTR sk;
+++    CK_OBJECT_HANDLE peer_public_prekey;
+++    CK_OBJECT_HANDLE peer_public_identity;
+++    CK_OBJECT_HANDLE own_public_identity;
+++    CK_BBOOL bEncryptedHeader;
+++    CK_ULONG eCurve;
+++    CK_MECHANISM_TYPE aeadMechanism;
++     CK_X2RATCHET_KDF_TYPE kdfMechanism;
++ } CK_X2RATCHET_INITIALIZE_PARAMS;
++ 
++-typedef CK_X2RATCHET_INITIALIZE_PARAMS \
++-        CK_PTR CK_X2RATCHET_INITIALIZE_PARAMS_PTR;
+++typedef CK_X2RATCHET_INITIALIZE_PARAMS
+++    CK_PTR CK_X2RATCHET_INITIALIZE_PARAMS_PTR;
++ 
++ typedef struct CK_X2RATCHET_RESPOND_PARAMS {
++-    CK_BYTE_PTR           sk;
++-    CK_OBJECT_HANDLE      own_prekey;
++-    CK_OBJECT_HANDLE      initiator_identity;
++-    CK_OBJECT_HANDLE      own_public_identity;
++-    CK_BBOOL              bEncryptedHeader;
++-    CK_ULONG              eCurve;
++-    CK_MECHANISM_TYPE     aeadMechanism;
+++    CK_BYTE_PTR sk;
+++    CK_OBJECT_HANDLE own_prekey;
+++    CK_OBJECT_HANDLE initiator_identity;
+++    CK_OBJECT_HANDLE own_public_identity;
+++    CK_BBOOL bEncryptedHeader;
+++    CK_ULONG eCurve;
+++    CK_MECHANISM_TYPE aeadMechanism;
++     CK_X2RATCHET_KDF_TYPE kdfMechanism;
++ } CK_X2RATCHET_RESPOND_PARAMS;
++-typedef CK_X2RATCHET_RESPOND_PARAMS \
++-        CK_PTR CK_X2RATCHET_RESPOND_PARAMS_PTR;
+++typedef CK_X2RATCHET_RESPOND_PARAMS
+++    CK_PTR CK_X2RATCHET_RESPOND_PARAMS_PTR;
++ 
++-typedef CK_ULONG CK_XEDDSA_HASH_TYPE;
++-typedef CK_XEDDSA_HASH_TYPE CK_PTR CK_XEDDSA_HASH_TYPE_PTR;
+++/* NSS Specific defines */
+++/* stuff that for historic reasons is in this header file but should have
+++ * been in pkcs11n.h */
+++#define CKK_INVALID_KEY_TYPE 0xffffffffUL
++ 
++-/* XEDDSA */
++-typedef struct CK_XEDDSA_PARAMS {
++-    CK_XEDDSA_HASH_TYPE hash;
++-} CK_XEDDSA_PARAMS;
++-typedef CK_XEDDSA_PARAMS CK_PTR CK_XEDDSA_PARAMS_PTR;
+++#include "pkcs11n.h"
++ 
++-typedef struct CK_HKDF_PARAMS {
++-    CK_BBOOL          bExtract;
++-    CK_BBOOL          bExpand;
++-    CK_MECHANISM_TYPE prfHashMechanism;
++-    CK_ULONG          ulSaltType;
++-    CK_BYTE_PTR       pSalt;
++-    CK_ULONG          ulSaltLen;
++-    CK_OBJECT_HANDLE  hSaltKey;
++-    CK_BYTE_PTR       pInfo;
++-    CK_ULONG          ulInfoLen;
++-} CK_HKDF_PARAMS;
++-typedef CK_HKDF_PARAMS CK_PTR CK_HKDF_PARAMS_PTR;
++-
++-#define CKF_HKDF_SALT_NULL   0x00000001UL
++-#define CKF_HKDF_SALT_DATA   0x00000002UL
++-#define CKF_HKDF_SALT_KEY    0x00000004UL
++-
++-#endif /* _PKCS11T_H_ */
+++/* undo packing */
+++#include "pkcs11u.h"
++ 
+++#endif
++--- /dev/null
+++++ b/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs11u.h
++@@ -0,0 +1,22 @@
+++/* This Source Code Form is subject to the terms of the Mozilla Public
+++ * License, v. 2.0. If a copy of the MPL was not distributed with this
+++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+++/*
+++ * Copyright (C) 1994-1999 RSA Security Inc. Licence to copy this document
+++ * is granted provided that it is identified as "RSA Security Inc. Public-Key
+++ * Cryptography Standards (PKCS)" in all material mentioning or referencing
+++ * this document.
+++ */
+++/*
+++ * reset any packing set by pkcs11p.h
+++ */
+++
+++#if defined(_WIN32) || defined(_WINDOWS)
+++#ifdef __clang__
+++#pragma clang diagnostic ignored "-Wpragma-pack"
+++#endif
+++#ifdef _MSC_VER
+++#pragma warning(disable : 4103)
+++#endif
+++#pragma pack(pop, cryptoki)
+++#endif
++--- /dev/null
+++++ b/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/prcpucfg.h
++@@ -0,0 +1,1319 @@
+++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+++/* This Source Code Form is subject to the terms of the Mozilla Public
+++ * License, v. 2.0. If a copy of the MPL was not distributed with this
+++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+++
+++/*
+++ * This file is used by not only Linux but also other glibc systems
+++ * such as GNU/Hurd and GNU/k*BSD.
+++ */
+++
+++#ifndef nspr_cpucfg___
+++#define nspr_cpucfg___
+++
+++#ifndef XP_UNIX
+++#define XP_UNIX
+++#endif
+++
+++#if !defined(LINUX) && defined(__linux__)
+++#define LINUX
+++#endif
+++
+++#ifdef __FreeBSD_kernel__
+++#define PR_AF_INET6 28  /* same as AF_INET6 */
+++#elif defined(__GNU__)
+++#define PR_AF_INET6 26  /* same as AF_INET6 */
+++#else
+++#define PR_AF_INET6 10  /* same as AF_INET6 */
+++#endif
+++
+++#ifdef __powerpc64__
+++
+++#ifdef __LITTLE_ENDIAN__
+++#define IS_LITTLE_ENDIAN 1
+++#undef  IS_BIG_ENDIAN
+++#else
+++#undef  IS_LITTLE_ENDIAN
+++#define IS_BIG_ENDIAN    1
+++#endif
+++#define IS_64
+++
+++#define PR_BYTES_PER_BYTE   1
+++#define PR_BYTES_PER_SHORT  2
+++#define PR_BYTES_PER_INT    4
+++#define PR_BYTES_PER_INT64  8
+++#define PR_BYTES_PER_LONG   8
+++#define PR_BYTES_PER_FLOAT  4
+++#define PR_BYTES_PER_DOUBLE 8
+++#define PR_BYTES_PER_WORD   8
+++#define PR_BYTES_PER_DWORD  8
+++
+++#define PR_BITS_PER_BYTE    8
+++#define PR_BITS_PER_SHORT   16
+++#define PR_BITS_PER_INT     32
+++#define PR_BITS_PER_INT64   64
+++#define PR_BITS_PER_LONG    64
+++#define PR_BITS_PER_FLOAT   32
+++#define PR_BITS_PER_DOUBLE  64
+++#define PR_BITS_PER_WORD    64
+++
+++#define PR_BITS_PER_BYTE_LOG2   3
+++#define PR_BITS_PER_SHORT_LOG2  4
+++#define PR_BITS_PER_INT_LOG2    5
+++#define PR_BITS_PER_INT64_LOG2  6
+++#define PR_BITS_PER_LONG_LOG2   6
+++#define PR_BITS_PER_FLOAT_LOG2  5
+++#define PR_BITS_PER_DOUBLE_LOG2 6
+++#define PR_BITS_PER_WORD_LOG2   6
+++
+++#define PR_ALIGN_OF_SHORT   2
+++#define PR_ALIGN_OF_INT     4
+++#define PR_ALIGN_OF_LONG    8
+++#define PR_ALIGN_OF_INT64   8
+++#define PR_ALIGN_OF_FLOAT   4
+++#define PR_ALIGN_OF_DOUBLE  8
+++#define PR_ALIGN_OF_POINTER 8
+++#define PR_ALIGN_OF_WORD    8
+++
+++#define PR_BYTES_PER_WORD_LOG2   3
+++#define PR_BYTES_PER_DWORD_LOG2  3
+++
+++#elif defined(__powerpc__)
+++
+++#ifdef __LITTLE_ENDIAN__
+++#define IS_LITTLE_ENDIAN 1
+++#undef  IS_BIG_ENDIAN
+++#else
+++#undef  IS_LITTLE_ENDIAN
+++#define IS_BIG_ENDIAN    1
+++#endif
+++
+++#define PR_BYTES_PER_BYTE   1
+++#define PR_BYTES_PER_SHORT  2
+++#define PR_BYTES_PER_INT    4
+++#define PR_BYTES_PER_INT64  8
+++#define PR_BYTES_PER_LONG   4
+++#define PR_BYTES_PER_FLOAT  4
+++#define PR_BYTES_PER_DOUBLE 8
+++#define PR_BYTES_PER_WORD   4
+++#define PR_BYTES_PER_DWORD  8
+++
+++#define PR_BITS_PER_BYTE    8
+++#define PR_BITS_PER_SHORT   16
+++#define PR_BITS_PER_INT     32
+++#define PR_BITS_PER_INT64   64
+++#define PR_BITS_PER_LONG    32
+++#define PR_BITS_PER_FLOAT   32
+++#define PR_BITS_PER_DOUBLE  64
+++#define PR_BITS_PER_WORD    32
+++
+++#define PR_BITS_PER_BYTE_LOG2   3
+++#define PR_BITS_PER_SHORT_LOG2  4
+++#define PR_BITS_PER_INT_LOG2    5
+++#define PR_BITS_PER_INT64_LOG2  6
+++#define PR_BITS_PER_LONG_LOG2   5
+++#define PR_BITS_PER_FLOAT_LOG2  5
+++#define PR_BITS_PER_DOUBLE_LOG2 6
+++#define PR_BITS_PER_WORD_LOG2   5
+++
+++#define PR_ALIGN_OF_SHORT   2
+++#define PR_ALIGN_OF_INT     4
+++#define PR_ALIGN_OF_LONG    4
+++#define PR_ALIGN_OF_INT64   8
+++#define PR_ALIGN_OF_FLOAT   4
+++#define PR_ALIGN_OF_DOUBLE  8
+++#define PR_ALIGN_OF_POINTER 4
+++#define PR_ALIGN_OF_WORD    4
+++
+++#define PR_BYTES_PER_WORD_LOG2   2
+++#define PR_BYTES_PER_DWORD_LOG2  3
+++
+++#elif defined(__alpha)
+++
+++#define IS_LITTLE_ENDIAN 1
+++#undef  IS_BIG_ENDIAN
+++#define IS_64
+++
+++#define PR_BYTES_PER_BYTE   1
+++#define PR_BYTES_PER_SHORT  2
+++#define PR_BYTES_PER_INT    4
+++#define PR_BYTES_PER_INT64  8
+++#define PR_BYTES_PER_LONG   8
+++#define PR_BYTES_PER_FLOAT  4
+++#define PR_BYTES_PER_DOUBLE 8
+++#define PR_BYTES_PER_WORD   8
+++#define PR_BYTES_PER_DWORD  8
+++
+++#define PR_BITS_PER_BYTE    8
+++#define PR_BITS_PER_SHORT   16
+++#define PR_BITS_PER_INT     32
+++#define PR_BITS_PER_INT64   64
+++#define PR_BITS_PER_LONG    64
+++#define PR_BITS_PER_FLOAT   32
+++#define PR_BITS_PER_DOUBLE  64
+++#define PR_BITS_PER_WORD    64
+++
+++#define PR_BITS_PER_BYTE_LOG2   3
+++#define PR_BITS_PER_SHORT_LOG2  4
+++#define PR_BITS_PER_INT_LOG2    5
+++#define PR_BITS_PER_INT64_LOG2  6
+++#define PR_BITS_PER_LONG_LOG2   6
+++#define PR_BITS_PER_FLOAT_LOG2  5
+++#define PR_BITS_PER_DOUBLE_LOG2 6
+++#define PR_BITS_PER_WORD_LOG2   6
+++
+++#define PR_ALIGN_OF_SHORT   2
+++#define PR_ALIGN_OF_INT     4
+++#define PR_ALIGN_OF_LONG    8
+++#define PR_ALIGN_OF_INT64   8
+++#define PR_ALIGN_OF_FLOAT   4
+++#define PR_ALIGN_OF_DOUBLE  8
+++#define PR_ALIGN_OF_POINTER 8
+++#define PR_ALIGN_OF_WORD    8
+++
+++#define PR_BYTES_PER_WORD_LOG2  3
+++#define PR_BYTES_PER_DWORD_LOG2 3
+++
+++#elif defined(__ia64__)
+++
+++#define IS_LITTLE_ENDIAN 1
+++#undef  IS_BIG_ENDIAN
+++#define IS_64
+++
+++#define PR_BYTES_PER_BYTE   1
+++#define PR_BYTES_PER_SHORT  2
+++#define PR_BYTES_PER_INT    4
+++#define PR_BYTES_PER_INT64  8
+++#define PR_BYTES_PER_LONG   8
+++#define PR_BYTES_PER_FLOAT  4
+++#define PR_BYTES_PER_DOUBLE 8
+++#define PR_BYTES_PER_WORD   8
+++#define PR_BYTES_PER_DWORD  8
+++
+++#define PR_BITS_PER_BYTE    8
+++#define PR_BITS_PER_SHORT   16
+++#define PR_BITS_PER_INT     32
+++#define PR_BITS_PER_INT64   64
+++#define PR_BITS_PER_LONG    64
+++#define PR_BITS_PER_FLOAT   32
+++#define PR_BITS_PER_DOUBLE  64
+++#define PR_BITS_PER_WORD    64
+++
+++#define PR_BITS_PER_BYTE_LOG2   3
+++#define PR_BITS_PER_SHORT_LOG2  4
+++#define PR_BITS_PER_INT_LOG2    5
+++#define PR_BITS_PER_INT64_LOG2  6
+++#define PR_BITS_PER_LONG_LOG2   6
+++#define PR_BITS_PER_FLOAT_LOG2  5
+++#define PR_BITS_PER_DOUBLE_LOG2 6
+++#define PR_BITS_PER_WORD_LOG2   6
+++
+++#define PR_ALIGN_OF_SHORT   2
+++#define PR_ALIGN_OF_INT     4
+++#define PR_ALIGN_OF_LONG    8
+++#define PR_ALIGN_OF_INT64   8
+++#define PR_ALIGN_OF_FLOAT   4
+++#define PR_ALIGN_OF_DOUBLE  8
+++#define PR_ALIGN_OF_POINTER 8
+++#define PR_ALIGN_OF_WORD    8
+++
+++#define PR_BYTES_PER_WORD_LOG2  3
+++#define PR_BYTES_PER_DWORD_LOG2 3
+++
+++#elif defined(__x86_64__)
+++
+++#ifdef __ILP32__
+++
+++#define IS_LITTLE_ENDIAN 1
+++#undef  IS_BIG_ENDIAN
+++
+++#define PR_BYTES_PER_BYTE   1
+++#define PR_BYTES_PER_SHORT  2
+++#define PR_BYTES_PER_INT    4
+++#define PR_BYTES_PER_INT64  8
+++#define PR_BYTES_PER_LONG   4
+++#define PR_BYTES_PER_FLOAT  4
+++#define PR_BYTES_PER_DOUBLE 8
+++#define PR_BYTES_PER_WORD   4
+++#define PR_BYTES_PER_DWORD  8
+++
+++#define PR_BITS_PER_BYTE    8
+++#define PR_BITS_PER_SHORT   16
+++#define PR_BITS_PER_INT     32
+++#define PR_BITS_PER_INT64   64
+++#define PR_BITS_PER_LONG    32
+++#define PR_BITS_PER_FLOAT   32
+++#define PR_BITS_PER_DOUBLE  64
+++#define PR_BITS_PER_WORD    32
+++
+++#define PR_BITS_PER_BYTE_LOG2   3
+++#define PR_BITS_PER_SHORT_LOG2  4
+++#define PR_BITS_PER_INT_LOG2    5
+++#define PR_BITS_PER_INT64_LOG2  6
+++#define PR_BITS_PER_LONG_LOG2   5
+++#define PR_BITS_PER_FLOAT_LOG2  5
+++#define PR_BITS_PER_DOUBLE_LOG2 6
+++#define PR_BITS_PER_WORD_LOG2   5
+++
+++#define PR_ALIGN_OF_SHORT   2
+++#define PR_ALIGN_OF_INT     4
+++#define PR_ALIGN_OF_LONG    4
+++#define PR_ALIGN_OF_INT64   8
+++#define PR_ALIGN_OF_FLOAT   4
+++#define PR_ALIGN_OF_DOUBLE  8
+++#define PR_ALIGN_OF_POINTER 4
+++#define PR_ALIGN_OF_WORD    4
+++
+++#define PR_BYTES_PER_WORD_LOG2   2
+++#define PR_BYTES_PER_DWORD_LOG2  3
+++
+++#else
+++
+++#define IS_LITTLE_ENDIAN 1
+++#undef  IS_BIG_ENDIAN
+++#define IS_64
+++
+++#define PR_BYTES_PER_BYTE   1
+++#define PR_BYTES_PER_SHORT  2
+++#define PR_BYTES_PER_INT    4
+++#define PR_BYTES_PER_INT64  8
+++#define PR_BYTES_PER_LONG   8
+++#define PR_BYTES_PER_FLOAT  4
+++#define PR_BYTES_PER_DOUBLE 8
+++#define PR_BYTES_PER_WORD   8
+++#define PR_BYTES_PER_DWORD  8
+++
+++#define PR_BITS_PER_BYTE    8
+++#define PR_BITS_PER_SHORT   16
+++#define PR_BITS_PER_INT     32
+++#define PR_BITS_PER_INT64   64
+++#define PR_BITS_PER_LONG    64
+++#define PR_BITS_PER_FLOAT   32
+++#define PR_BITS_PER_DOUBLE  64
+++#define PR_BITS_PER_WORD    64
+++
+++#define PR_BITS_PER_BYTE_LOG2   3
+++#define PR_BITS_PER_SHORT_LOG2  4
+++#define PR_BITS_PER_INT_LOG2    5
+++#define PR_BITS_PER_INT64_LOG2  6
+++#define PR_BITS_PER_LONG_LOG2   6
+++#define PR_BITS_PER_FLOAT_LOG2  5
+++#define PR_BITS_PER_DOUBLE_LOG2 6
+++#define PR_BITS_PER_WORD_LOG2   6
+++
+++#define PR_ALIGN_OF_SHORT   2
+++#define PR_ALIGN_OF_INT     4
+++#define PR_ALIGN_OF_LONG    8
+++#define PR_ALIGN_OF_INT64   8
+++#define PR_ALIGN_OF_FLOAT   4
+++#define PR_ALIGN_OF_DOUBLE  8
+++#define PR_ALIGN_OF_POINTER 8
+++#define PR_ALIGN_OF_WORD    8
+++
+++#define PR_BYTES_PER_WORD_LOG2  3
+++#define PR_BYTES_PER_DWORD_LOG2 3
+++
+++#endif
+++
+++#elif defined(__mc68000__)
+++
+++#undef  IS_LITTLE_ENDIAN
+++#define IS_BIG_ENDIAN 1
+++
+++#define PR_BYTES_PER_BYTE   1
+++#define PR_BYTES_PER_SHORT  2
+++#define PR_BYTES_PER_INT    4
+++#define PR_BYTES_PER_INT64  8
+++#define PR_BYTES_PER_LONG   4
+++#define PR_BYTES_PER_FLOAT  4
+++#define PR_BYTES_PER_DOUBLE 8
+++#define PR_BYTES_PER_WORD   4
+++#define PR_BYTES_PER_DWORD  8
+++
+++#define PR_BITS_PER_BYTE    8
+++#define PR_BITS_PER_SHORT   16
+++#define PR_BITS_PER_INT     32
+++#define PR_BITS_PER_INT64   64
+++#define PR_BITS_PER_LONG    32
+++#define PR_BITS_PER_FLOAT   32
+++#define PR_BITS_PER_DOUBLE  64
+++#define PR_BITS_PER_WORD    32
+++
+++#define PR_BITS_PER_BYTE_LOG2   3
+++#define PR_BITS_PER_SHORT_LOG2  4
+++#define PR_BITS_PER_INT_LOG2    5
+++#define PR_BITS_PER_INT64_LOG2  6
+++#define PR_BITS_PER_LONG_LOG2   5
+++#define PR_BITS_PER_FLOAT_LOG2  5
+++#define PR_BITS_PER_DOUBLE_LOG2 6
+++#define PR_BITS_PER_WORD_LOG2   5
+++
+++#define PR_ALIGN_OF_SHORT   2
+++#define PR_ALIGN_OF_INT     2
+++#define PR_ALIGN_OF_LONG    2
+++#define PR_ALIGN_OF_INT64   2
+++#define PR_ALIGN_OF_FLOAT   2
+++#define PR_ALIGN_OF_DOUBLE  2
+++#define PR_ALIGN_OF_POINTER 2
+++#define PR_ALIGN_OF_WORD    2
+++
+++#define PR_BYTES_PER_WORD_LOG2   2
+++#define PR_BYTES_PER_DWORD_LOG2  3
+++
+++#elif defined(__sparc__) && defined (__arch64__)
+++
+++#undef       IS_LITTLE_ENDIAN
+++#define      IS_BIG_ENDIAN 1
+++#define IS_64
+++
+++#define PR_BYTES_PER_BYTE   1
+++#define PR_BYTES_PER_SHORT  2
+++#define PR_BYTES_PER_INT    4
+++#define PR_BYTES_PER_INT64  8
+++#define PR_BYTES_PER_LONG   8
+++#define PR_BYTES_PER_FLOAT  4
+++#define PR_BYTES_PER_DOUBLE 8
+++#define PR_BYTES_PER_WORD   8
+++#define PR_BYTES_PER_DWORD  8
+++
+++#define PR_BITS_PER_BYTE    8
+++#define PR_BITS_PER_SHORT   16
+++#define PR_BITS_PER_INT     32
+++#define PR_BITS_PER_INT64   64
+++#define PR_BITS_PER_LONG    64
+++#define PR_BITS_PER_FLOAT   32
+++#define PR_BITS_PER_DOUBLE  64
+++#define PR_BITS_PER_WORD    64
+++
+++#define PR_BITS_PER_BYTE_LOG2   3
+++#define PR_BITS_PER_SHORT_LOG2  4
+++#define PR_BITS_PER_INT_LOG2    5
+++#define PR_BITS_PER_INT64_LOG2  6
+++#define PR_BITS_PER_LONG_LOG2   6
+++#define PR_BITS_PER_FLOAT_LOG2  5
+++#define PR_BITS_PER_DOUBLE_LOG2 6
+++#define PR_BITS_PER_WORD_LOG2   6
+++
+++#define PR_ALIGN_OF_SHORT   2
+++#define PR_ALIGN_OF_INT     4
+++#define PR_ALIGN_OF_INT64   8
+++#define PR_ALIGN_OF_LONG    8
+++#define PR_ALIGN_OF_FLOAT   4
+++#define PR_ALIGN_OF_DOUBLE  8
+++#define PR_ALIGN_OF_POINTER 8
+++#define PR_ALIGN_OF_WORD    8
+++
+++#define PR_BYTES_PER_WORD_LOG2   3
+++#define PR_BYTES_PER_DWORD_LOG2  3
+++
+++#elif defined(__sparc__)
+++
+++#undef       IS_LITTLE_ENDIAN
+++#define      IS_BIG_ENDIAN 1
+++
+++#define PR_BYTES_PER_BYTE   1
+++#define PR_BYTES_PER_SHORT  2
+++#define PR_BYTES_PER_INT    4
+++#define PR_BYTES_PER_INT64  8
+++#define PR_BYTES_PER_LONG   4
+++#define PR_BYTES_PER_FLOAT  4
+++#define PR_BYTES_PER_DOUBLE 8
+++#define PR_BYTES_PER_WORD   4
+++#define PR_BYTES_PER_DWORD  8
+++
+++#define PR_BITS_PER_BYTE    8
+++#define PR_BITS_PER_SHORT   16
+++#define PR_BITS_PER_INT     32
+++#define PR_BITS_PER_INT64   64
+++#define PR_BITS_PER_LONG    32
+++#define PR_BITS_PER_FLOAT   32
+++#define PR_BITS_PER_DOUBLE  64
+++#define PR_BITS_PER_WORD    32
+++
+++#define PR_BITS_PER_BYTE_LOG2   3
+++#define PR_BITS_PER_SHORT_LOG2  4
+++#define PR_BITS_PER_INT_LOG2    5
+++#define PR_BITS_PER_INT64_LOG2  6
+++#define PR_BITS_PER_LONG_LOG2   5
+++#define PR_BITS_PER_FLOAT_LOG2  5
+++#define PR_BITS_PER_DOUBLE_LOG2 6
+++#define PR_BITS_PER_WORD_LOG2   5
+++
+++#define PR_ALIGN_OF_SHORT   2
+++#define PR_ALIGN_OF_INT     4
+++#define PR_ALIGN_OF_LONG    4
+++#define PR_ALIGN_OF_INT64   8
+++#define PR_ALIGN_OF_FLOAT   4
+++#define PR_ALIGN_OF_DOUBLE  8
+++#define PR_ALIGN_OF_POINTER 4
+++#define PR_ALIGN_OF_WORD    4
+++
+++#define PR_BYTES_PER_WORD_LOG2   2
+++#define PR_BYTES_PER_DWORD_LOG2  3
+++
+++#elif defined(__i386__)
+++
+++#define IS_LITTLE_ENDIAN 1
+++#undef  IS_BIG_ENDIAN
+++
+++#define PR_BYTES_PER_BYTE   1
+++#define PR_BYTES_PER_SHORT  2
+++#define PR_BYTES_PER_INT    4
+++#define PR_BYTES_PER_INT64  8
+++#define PR_BYTES_PER_LONG   4
+++#define PR_BYTES_PER_FLOAT  4
+++#define PR_BYTES_PER_DOUBLE 8
+++#define PR_BYTES_PER_WORD   4
+++#define PR_BYTES_PER_DWORD  8
+++
+++#define PR_BITS_PER_BYTE    8
+++#define PR_BITS_PER_SHORT   16
+++#define PR_BITS_PER_INT     32
+++#define PR_BITS_PER_INT64   64
+++#define PR_BITS_PER_LONG    32
+++#define PR_BITS_PER_FLOAT   32
+++#define PR_BITS_PER_DOUBLE  64
+++#define PR_BITS_PER_WORD    32
+++
+++#define PR_BITS_PER_BYTE_LOG2   3
+++#define PR_BITS_PER_SHORT_LOG2  4
+++#define PR_BITS_PER_INT_LOG2    5
+++#define PR_BITS_PER_INT64_LOG2  6
+++#define PR_BITS_PER_LONG_LOG2   5
+++#define PR_BITS_PER_FLOAT_LOG2  5
+++#define PR_BITS_PER_DOUBLE_LOG2 6
+++#define PR_BITS_PER_WORD_LOG2   5
+++
+++#define PR_ALIGN_OF_SHORT   2
+++#define PR_ALIGN_OF_INT     4
+++#define PR_ALIGN_OF_LONG    4
+++#define PR_ALIGN_OF_INT64   4
+++#define PR_ALIGN_OF_FLOAT   4
+++#define PR_ALIGN_OF_DOUBLE  4
+++#define PR_ALIGN_OF_POINTER 4
+++#define PR_ALIGN_OF_WORD    4
+++
+++#define PR_BYTES_PER_WORD_LOG2   2
+++#define PR_BYTES_PER_DWORD_LOG2  3
+++
+++#elif defined(__mips__)
+++
+++/* For _ABI64 */
+++#include <sgidefs.h>
+++
+++#ifdef __MIPSEB__
+++#define IS_BIG_ENDIAN 1
+++#undef  IS_LITTLE_ENDIAN
+++#elif defined(__MIPSEL__)
+++#define IS_LITTLE_ENDIAN 1
+++#undef  IS_BIG_ENDIAN
+++#else
+++#error "Unknown MIPS endianness."
+++#endif
+++
+++#if _MIPS_SIM == _ABI64
+++
+++#define IS_64
+++
+++#define PR_BYTES_PER_BYTE   1
+++#define PR_BYTES_PER_SHORT  2
+++#define PR_BYTES_PER_INT    4
+++#define PR_BYTES_PER_INT64  8
+++#define PR_BYTES_PER_LONG   8
+++#define PR_BYTES_PER_FLOAT  4
+++#define PR_BYTES_PER_DOUBLE 8
+++#define PR_BYTES_PER_WORD   8
+++#define PR_BYTES_PER_DWORD  8
+++
+++#define PR_BITS_PER_BYTE    8
+++#define PR_BITS_PER_SHORT   16
+++#define PR_BITS_PER_INT     32
+++#define PR_BITS_PER_INT64   64
+++#define PR_BITS_PER_LONG    64
+++#define PR_BITS_PER_FLOAT   32
+++#define PR_BITS_PER_DOUBLE  64
+++#define PR_BITS_PER_WORD    64
+++
+++#define PR_BITS_PER_BYTE_LOG2   3
+++#define PR_BITS_PER_SHORT_LOG2  4
+++#define PR_BITS_PER_INT_LOG2    5
+++#define PR_BITS_PER_INT64_LOG2  6
+++#define PR_BITS_PER_LONG_LOG2   6
+++#define PR_BITS_PER_FLOAT_LOG2  5
+++#define PR_BITS_PER_DOUBLE_LOG2 6
+++#define PR_BITS_PER_WORD_LOG2   6
+++
+++#define PR_ALIGN_OF_SHORT   2
+++#define PR_ALIGN_OF_INT     4
+++#define PR_ALIGN_OF_LONG    8
+++#define PR_ALIGN_OF_INT64   8
+++#define PR_ALIGN_OF_FLOAT   4
+++#define PR_ALIGN_OF_DOUBLE  8
+++#define PR_ALIGN_OF_POINTER 8
+++#define PR_ALIGN_OF_WORD    8
+++
+++#define PR_BYTES_PER_WORD_LOG2   3
+++#define PR_BYTES_PER_DWORD_LOG2  3
+++
+++#else /* _ABI64 */
+++
+++#define PR_BYTES_PER_BYTE   1
+++#define PR_BYTES_PER_SHORT  2
+++#define PR_BYTES_PER_INT    4
+++#define PR_BYTES_PER_INT64  8
+++#define PR_BYTES_PER_LONG   4
+++#define PR_BYTES_PER_FLOAT  4
+++#define PR_BYTES_PER_DOUBLE 8
+++#define PR_BYTES_PER_WORD   4
+++#define PR_BYTES_PER_DWORD  8
+++
+++#define PR_BITS_PER_BYTE    8
+++#define PR_BITS_PER_SHORT   16
+++#define PR_BITS_PER_INT     32
+++#define PR_BITS_PER_INT64   64
+++#define PR_BITS_PER_LONG    32
+++#define PR_BITS_PER_FLOAT   32
+++#define PR_BITS_PER_DOUBLE  64
+++#define PR_BITS_PER_WORD    32
+++
+++#define PR_BITS_PER_BYTE_LOG2   3
+++#define PR_BITS_PER_SHORT_LOG2  4
+++#define PR_BITS_PER_INT_LOG2    5
+++#define PR_BITS_PER_INT64_LOG2  6
+++#define PR_BITS_PER_LONG_LOG2   5
+++#define PR_BITS_PER_FLOAT_LOG2  5
+++#define PR_BITS_PER_DOUBLE_LOG2 6
+++#define PR_BITS_PER_WORD_LOG2   5
+++
+++#define PR_ALIGN_OF_SHORT   2
+++#define PR_ALIGN_OF_INT     4
+++#define PR_ALIGN_OF_LONG    4
+++#define PR_ALIGN_OF_INT64   8
+++#define PR_ALIGN_OF_FLOAT   4
+++#define PR_ALIGN_OF_DOUBLE  8
+++#define PR_ALIGN_OF_POINTER 4
+++#define PR_ALIGN_OF_WORD    4
+++
+++#define PR_BYTES_PER_WORD_LOG2   2
+++#define PR_BYTES_PER_DWORD_LOG2  3
+++
+++#endif /* _ABI64 */
+++
+++#elif defined(__arm__)
+++
+++#ifdef __ARMEB__
+++#undef  IS_LITTLE_ENDIAN
+++#define IS_BIG_ENDIAN 1
+++#elif defined(__ARMEL__)
+++#define IS_LITTLE_ENDIAN 1
+++#undef  IS_BIG_ENDIAN
+++#else
+++#error "Unknown ARM endianness."
+++#endif
+++
+++#define PR_BYTES_PER_BYTE   1
+++#define PR_BYTES_PER_SHORT  2
+++#define PR_BYTES_PER_INT    4
+++#define PR_BYTES_PER_INT64  8
+++#define PR_BYTES_PER_LONG   4
+++#define PR_BYTES_PER_FLOAT  4
+++#define PR_BYTES_PER_DOUBLE 8
+++#define PR_BYTES_PER_WORD   4
+++#define PR_BYTES_PER_DWORD  8
+++
+++#define PR_BITS_PER_BYTE    8
+++#define PR_BITS_PER_SHORT   16
+++#define PR_BITS_PER_INT     32
+++#define PR_BITS_PER_INT64   64
+++#define PR_BITS_PER_LONG    32
+++#define PR_BITS_PER_FLOAT   32
+++#define PR_BITS_PER_DOUBLE  64
+++#define PR_BITS_PER_WORD    32
+++
+++#define PR_BITS_PER_BYTE_LOG2   3
+++#define PR_BITS_PER_SHORT_LOG2  4
+++#define PR_BITS_PER_INT_LOG2    5
+++#define PR_BITS_PER_INT64_LOG2  6
+++#define PR_BITS_PER_LONG_LOG2   5
+++#define PR_BITS_PER_FLOAT_LOG2  5
+++#define PR_BITS_PER_DOUBLE_LOG2 6
+++#define PR_BITS_PER_WORD_LOG2   5
+++
+++#define PR_ALIGN_OF_SHORT   2
+++#define PR_ALIGN_OF_INT     4
+++#define PR_ALIGN_OF_LONG    4
+++#define PR_ALIGN_OF_INT64   4
+++#define PR_ALIGN_OF_FLOAT   4
+++#define PR_ALIGN_OF_DOUBLE  4
+++#define PR_ALIGN_OF_POINTER 4
+++#define PR_ALIGN_OF_WORD    4
+++
+++#define PR_BYTES_PER_WORD_LOG2   2
+++#define PR_BYTES_PER_DWORD_LOG2  3
+++
+++#elif defined(__aarch64__)
+++
+++#ifdef __AARCH64EB__
+++#undef  IS_LITTLE_ENDIAN
+++#define IS_BIG_ENDIAN 1
+++#elif defined(__AARCH64EL__)
+++#define IS_LITTLE_ENDIAN 1
+++#undef  IS_BIG_ENDIAN
+++#else
+++#error "Unknown Aarch64 endianness."
+++#endif
+++#define IS_64
+++
+++#define PR_BYTES_PER_BYTE   1
+++#define PR_BYTES_PER_SHORT  2
+++#define PR_BYTES_PER_INT    4
+++#define PR_BYTES_PER_INT64  8
+++#define PR_BYTES_PER_LONG   8
+++#define PR_BYTES_PER_FLOAT  4
+++#define PR_BYTES_PER_DOUBLE 8
+++#define PR_BYTES_PER_WORD   8
+++#define PR_BYTES_PER_DWORD  8
+++
+++#define PR_BITS_PER_BYTE    8
+++#define PR_BITS_PER_SHORT   16
+++#define PR_BITS_PER_INT     32
+++#define PR_BITS_PER_INT64   64
+++#define PR_BITS_PER_LONG    64
+++#define PR_BITS_PER_FLOAT   32
+++#define PR_BITS_PER_DOUBLE  64
+++#define PR_BITS_PER_WORD    64
+++
+++#define PR_BITS_PER_BYTE_LOG2   3
+++#define PR_BITS_PER_SHORT_LOG2  4
+++#define PR_BITS_PER_INT_LOG2    5
+++#define PR_BITS_PER_INT64_LOG2  6
+++#define PR_BITS_PER_LONG_LOG2   6
+++#define PR_BITS_PER_FLOAT_LOG2  5
+++#define PR_BITS_PER_DOUBLE_LOG2 6
+++#define PR_BITS_PER_WORD_LOG2   6
+++
+++#define PR_ALIGN_OF_SHORT   2
+++#define PR_ALIGN_OF_INT     4
+++#define PR_ALIGN_OF_LONG    8
+++#define PR_ALIGN_OF_INT64   8
+++#define PR_ALIGN_OF_FLOAT   4
+++#define PR_ALIGN_OF_DOUBLE  8
+++#define PR_ALIGN_OF_POINTER 8
+++#define PR_ALIGN_OF_WORD    8
+++
+++#define PR_BYTES_PER_WORD_LOG2  3
+++#define PR_BYTES_PER_DWORD_LOG2 3
+++
+++#elif defined(__hppa__)
+++
+++#undef  IS_LITTLE_ENDIAN
+++#define IS_BIG_ENDIAN    1
+++
+++#define PR_BYTES_PER_BYTE   1
+++#define PR_BYTES_PER_SHORT  2
+++#define PR_BYTES_PER_INT    4
+++#define PR_BYTES_PER_INT64  8
+++#define PR_BYTES_PER_LONG   4
+++#define PR_BYTES_PER_FLOAT  4
+++#define PR_BYTES_PER_DOUBLE 8
+++#define PR_BYTES_PER_WORD   4
+++#define PR_BYTES_PER_DWORD  8
+++
+++#define PR_BITS_PER_BYTE    8
+++#define PR_BITS_PER_SHORT   16
+++#define PR_BITS_PER_INT     32
+++#define PR_BITS_PER_INT64   64
+++#define PR_BITS_PER_LONG    32
+++#define PR_BITS_PER_FLOAT   32
+++#define PR_BITS_PER_DOUBLE  64
+++#define PR_BITS_PER_WORD    32
+++
+++#define PR_BITS_PER_BYTE_LOG2   3
+++#define PR_BITS_PER_SHORT_LOG2  4
+++#define PR_BITS_PER_INT_LOG2    5
+++#define PR_BITS_PER_INT64_LOG2  6
+++#define PR_BITS_PER_LONG_LOG2   5
+++#define PR_BITS_PER_FLOAT_LOG2  5
+++#define PR_BITS_PER_DOUBLE_LOG2 6
+++#define PR_BITS_PER_WORD_LOG2   5
+++
+++#define PR_ALIGN_OF_SHORT   2
+++#define PR_ALIGN_OF_INT     4
+++#define PR_ALIGN_OF_LONG    4
+++#define PR_ALIGN_OF_INT64   8
+++#define PR_ALIGN_OF_FLOAT   4
+++#define PR_ALIGN_OF_DOUBLE  8
+++#define PR_ALIGN_OF_POINTER 4
+++#define PR_ALIGN_OF_WORD    4
+++
+++#define PR_BYTES_PER_WORD_LOG2   2
+++#define PR_BYTES_PER_DWORD_LOG2  3
+++
+++#elif defined(__s390x__)
+++
+++#define IS_BIG_ENDIAN 1
+++#undef  IS_LITTLE_ENDIAN
+++#define IS_64
+++
+++#define PR_BYTES_PER_BYTE   1
+++#define PR_BYTES_PER_SHORT  2
+++#define PR_BYTES_PER_INT    4
+++#define PR_BYTES_PER_INT64  8
+++#define PR_BYTES_PER_LONG   8
+++#define PR_BYTES_PER_FLOAT  4
+++#define PR_BYTES_PER_DOUBLE 8
+++#define PR_BYTES_PER_WORD   8
+++#define PR_BYTES_PER_DWORD  8
+++
+++#define PR_BITS_PER_BYTE    8
+++#define PR_BITS_PER_SHORT   16
+++#define PR_BITS_PER_INT     32
+++#define PR_BITS_PER_INT64   64
+++#define PR_BITS_PER_LONG    64
+++#define PR_BITS_PER_FLOAT   32
+++#define PR_BITS_PER_DOUBLE  64
+++#define PR_BITS_PER_WORD    64
+++
+++#define PR_BITS_PER_BYTE_LOG2   3
+++#define PR_BITS_PER_SHORT_LOG2  4
+++#define PR_BITS_PER_INT_LOG2    5
+++#define PR_BITS_PER_INT64_LOG2  6
+++#define PR_BITS_PER_LONG_LOG2   6
+++#define PR_BITS_PER_FLOAT_LOG2  5
+++#define PR_BITS_PER_DOUBLE_LOG2 6
+++#define PR_BITS_PER_WORD_LOG2   6
+++
+++#define PR_ALIGN_OF_SHORT   2
+++#define PR_ALIGN_OF_INT     4
+++#define PR_ALIGN_OF_LONG    8
+++#define PR_ALIGN_OF_INT64   8
+++#define PR_ALIGN_OF_FLOAT   4
+++#define PR_ALIGN_OF_DOUBLE  8
+++#define PR_ALIGN_OF_POINTER 8
+++#define PR_ALIGN_OF_WORD    8
+++
+++#define PR_BYTES_PER_WORD_LOG2   3
+++#define PR_BYTES_PER_DWORD_LOG2  3
+++
+++#elif defined(__s390__)
+++
+++#define IS_BIG_ENDIAN 1
+++#undef  IS_LITTLE_ENDIAN
+++
+++#define PR_BYTES_PER_BYTE   1
+++#define PR_BYTES_PER_SHORT  2
+++#define PR_BYTES_PER_INT    4
+++#define PR_BYTES_PER_INT64  8
+++#define PR_BYTES_PER_LONG   4
+++#define PR_BYTES_PER_FLOAT  4
+++#define PR_BYTES_PER_DOUBLE 8
+++#define PR_BYTES_PER_WORD   4
+++#define PR_BYTES_PER_DWORD  8
+++
+++#define PR_BITS_PER_BYTE    8
+++#define PR_BITS_PER_SHORT   16
+++#define PR_BITS_PER_INT     32
+++#define PR_BITS_PER_INT64   64
+++#define PR_BITS_PER_LONG    32
+++#define PR_BITS_PER_FLOAT   32
+++#define PR_BITS_PER_DOUBLE  64
+++#define PR_BITS_PER_WORD    32
+++
+++#define PR_BITS_PER_BYTE_LOG2   3
+++#define PR_BITS_PER_SHORT_LOG2  4
+++#define PR_BITS_PER_INT_LOG2    5
+++#define PR_BITS_PER_INT64_LOG2  6
+++#define PR_BITS_PER_LONG_LOG2   5
+++#define PR_BITS_PER_FLOAT_LOG2  5
+++#define PR_BITS_PER_DOUBLE_LOG2 6
+++#define PR_BITS_PER_WORD_LOG2   5
+++
+++#define PR_ALIGN_OF_SHORT   2
+++#define PR_ALIGN_OF_INT     4
+++#define PR_ALIGN_OF_LONG    4
+++#define PR_ALIGN_OF_INT64   4
+++#define PR_ALIGN_OF_FLOAT   4
+++#define PR_ALIGN_OF_DOUBLE  4
+++#define PR_ALIGN_OF_POINTER 4
+++#define PR_ALIGN_OF_WORD    4
+++
+++#define PR_BYTES_PER_WORD_LOG2   2
+++#define PR_BYTES_PER_DWORD_LOG2  3
+++
+++#elif defined(__sh__)
+++
+++#define IS_LITTLE_ENDIAN 1
+++#undef  IS_BIG_ENDIAN
+++
+++#define PR_BYTES_PER_BYTE   1
+++#define PR_BYTES_PER_SHORT  2
+++#define PR_BYTES_PER_INT    4
+++#define PR_BYTES_PER_INT64  8
+++#define PR_BYTES_PER_LONG   4
+++#define PR_BYTES_PER_FLOAT  4
+++#define PR_BYTES_PER_DOUBLE 8
+++#define PR_BYTES_PER_WORD   4
+++#define PR_BYTES_PER_DWORD  8
+++
+++#define PR_BITS_PER_BYTE    8
+++#define PR_BITS_PER_SHORT   16
+++#define PR_BITS_PER_INT     32
+++#define PR_BITS_PER_INT64   64
+++#define PR_BITS_PER_LONG    32
+++#define PR_BITS_PER_FLOAT   32
+++#define PR_BITS_PER_DOUBLE  64
+++#define PR_BITS_PER_WORD    32
+++
+++#define PR_BITS_PER_BYTE_LOG2   3
+++#define PR_BITS_PER_SHORT_LOG2  4
+++#define PR_BITS_PER_INT_LOG2    5
+++#define PR_BITS_PER_INT64_LOG2  6
+++#define PR_BITS_PER_LONG_LOG2   5
+++#define PR_BITS_PER_FLOAT_LOG2  5
+++#define PR_BITS_PER_DOUBLE_LOG2 6
+++#define PR_BITS_PER_WORD_LOG2   5
+++
+++#define PR_ALIGN_OF_SHORT   2
+++#define PR_ALIGN_OF_INT     4
+++#define PR_ALIGN_OF_LONG    4
+++#define PR_ALIGN_OF_INT64   4
+++#define PR_ALIGN_OF_FLOAT   4
+++#define PR_ALIGN_OF_DOUBLE  4
+++#define PR_ALIGN_OF_POINTER 4
+++#define PR_ALIGN_OF_WORD    4
+++
+++#define PR_BYTES_PER_WORD_LOG2   2
+++#define PR_BYTES_PER_DWORD_LOG2  3
+++
+++#elif defined(__avr32__)
+++
+++#undef  IS_LITTLE_ENDIAN
+++#define IS_BIG_ENDIAN 1
+++
+++#define PR_BYTES_PER_BYTE   1
+++#define PR_BYTES_PER_SHORT  2
+++#define PR_BYTES_PER_INT    4
+++#define PR_BYTES_PER_INT64  8
+++#define PR_BYTES_PER_LONG   4
+++#define PR_BYTES_PER_FLOAT  4
+++#define PR_BYTES_PER_DOUBLE 8
+++#define PR_BYTES_PER_WORD   4
+++#define PR_BYTES_PER_DWORD  8
+++
+++#define PR_BITS_PER_BYTE    8
+++#define PR_BITS_PER_SHORT   16
+++#define PR_BITS_PER_INT     32
+++#define PR_BITS_PER_INT64   64
+++#define PR_BITS_PER_LONG    32
+++#define PR_BITS_PER_FLOAT   32
+++#define PR_BITS_PER_DOUBLE  64
+++#define PR_BITS_PER_WORD    32
+++
+++#define PR_BITS_PER_BYTE_LOG2   3
+++#define PR_BITS_PER_SHORT_LOG2  4
+++#define PR_BITS_PER_INT_LOG2    5
+++#define PR_BITS_PER_INT64_LOG2  6
+++#define PR_BITS_PER_LONG_LOG2   5
+++#define PR_BITS_PER_FLOAT_LOG2  5
+++#define PR_BITS_PER_DOUBLE_LOG2 6
+++#define PR_BITS_PER_WORD_LOG2   5
+++
+++#define PR_ALIGN_OF_SHORT   2
+++#define PR_ALIGN_OF_INT     4
+++#define PR_ALIGN_OF_LONG    4
+++#define PR_ALIGN_OF_INT64   4
+++#define PR_ALIGN_OF_FLOAT   4
+++#define PR_ALIGN_OF_DOUBLE  4
+++#define PR_ALIGN_OF_POINTER 4
+++#define PR_ALIGN_OF_WORD    4
+++
+++#define PR_BYTES_PER_WORD_LOG2   2
+++#define PR_BYTES_PER_DWORD_LOG2  3
+++
+++#elif defined(__m32r__)
+++
+++#undef  IS_LITTLE_ENDIAN
+++#define IS_BIG_ENDIAN 1
+++
+++#define PR_BYTES_PER_BYTE   1
+++#define PR_BYTES_PER_SHORT  2
+++#define PR_BYTES_PER_INT    4
+++#define PR_BYTES_PER_INT64  8
+++#define PR_BYTES_PER_LONG   4
+++#define PR_BYTES_PER_FLOAT  4
+++#define PR_BYTES_PER_DOUBLE 8
+++#define PR_BYTES_PER_WORD   4
+++#define PR_BYTES_PER_DWORD  8
+++
+++#define PR_BITS_PER_BYTE    8
+++#define PR_BITS_PER_SHORT   16
+++#define PR_BITS_PER_INT     32
+++#define PR_BITS_PER_INT64   64
+++#define PR_BITS_PER_LONG    32
+++#define PR_BITS_PER_FLOAT   32
+++#define PR_BITS_PER_DOUBLE  64
+++#define PR_BITS_PER_WORD    32
+++
+++#define PR_BITS_PER_BYTE_LOG2   3
+++#define PR_BITS_PER_SHORT_LOG2  4
+++#define PR_BITS_PER_INT_LOG2    5
+++#define PR_BITS_PER_INT64_LOG2  6
+++#define PR_BITS_PER_LONG_LOG2   5
+++#define PR_BITS_PER_FLOAT_LOG2  5
+++#define PR_BITS_PER_DOUBLE_LOG2 6
+++#define PR_BITS_PER_WORD_LOG2   5
+++
+++#define PR_ALIGN_OF_SHORT   2
+++#define PR_ALIGN_OF_INT     4
+++#define PR_ALIGN_OF_LONG    4
+++#define PR_ALIGN_OF_INT64   4
+++#define PR_ALIGN_OF_FLOAT   4
+++#define PR_ALIGN_OF_DOUBLE  4
+++#define PR_ALIGN_OF_POINTER 4
+++#define PR_ALIGN_OF_WORD    4
+++
+++#define PR_BYTES_PER_WORD_LOG2   2
+++#define PR_BYTES_PER_DWORD_LOG2  3
+++
+++#elif defined(__or1k__)
+++
+++#undef  IS_LITTLE_ENDIAN
+++#define IS_BIG_ENDIAN 1
+++
+++#define PR_BYTES_PER_BYTE   1
+++#define PR_BYTES_PER_SHORT  2
+++#define PR_BYTES_PER_INT    4
+++#define PR_BYTES_PER_INT64  8
+++#define PR_BYTES_PER_LONG   4
+++#define PR_BYTES_PER_FLOAT  4
+++#define PR_BYTES_PER_DOUBLE 8
+++#define PR_BYTES_PER_WORD   4
+++#define PR_BYTES_PER_DWORD  8
+++
+++#define PR_BITS_PER_BYTE    8
+++#define PR_BITS_PER_SHORT   16
+++#define PR_BITS_PER_INT     32
+++#define PR_BITS_PER_INT64   64
+++#define PR_BITS_PER_LONG    32
+++#define PR_BITS_PER_FLOAT   32
+++#define PR_BITS_PER_DOUBLE  64
+++#define PR_BITS_PER_WORD    32
+++
+++#define PR_BITS_PER_BYTE_LOG2   3
+++#define PR_BITS_PER_SHORT_LOG2  4
+++#define PR_BITS_PER_INT_LOG2    5
+++#define PR_BITS_PER_INT64_LOG2  6
+++#define PR_BITS_PER_LONG_LOG2   5
+++#define PR_BITS_PER_FLOAT_LOG2  5
+++#define PR_BITS_PER_DOUBLE_LOG2 6
+++#define PR_BITS_PER_WORD_LOG2   5
+++
+++#define PR_ALIGN_OF_SHORT   2
+++#define PR_ALIGN_OF_INT     4
+++#define PR_ALIGN_OF_LONG    4
+++#define PR_ALIGN_OF_INT64   4
+++#define PR_ALIGN_OF_FLOAT   4
+++#define PR_ALIGN_OF_DOUBLE  4
+++#define PR_ALIGN_OF_POINTER 4
+++#define PR_ALIGN_OF_WORD    4
+++
+++#define PR_BYTES_PER_WORD_LOG2   2
+++#define PR_BYTES_PER_DWORD_LOG2  3
+++
+++#elif defined(__riscv) && (__riscv_xlen == 32)
+++
+++#undef  IS_BIG_ENDIAN
+++#define IS_LITTLE_ENDIAN 1
+++#undef  IS_64
+++
+++#define PR_BYTES_PER_BYTE   1
+++#define PR_BYTES_PER_SHORT  2
+++#define PR_BYTES_PER_INT    4
+++#define PR_BYTES_PER_INT64  8
+++#define PR_BYTES_PER_LONG   4
+++#define PR_BYTES_PER_FLOAT  4
+++#define PR_BYTES_PER_DOUBLE 8
+++#define PR_BYTES_PER_WORD   4
+++#define PR_BYTES_PER_DWORD  8
+++
+++#define PR_BITS_PER_BYTE    8
+++#define PR_BITS_PER_SHORT   16
+++#define PR_BITS_PER_INT     32
+++#define PR_BITS_PER_INT64   64
+++#define PR_BITS_PER_LONG    32
+++#define PR_BITS_PER_FLOAT   32
+++#define PR_BITS_PER_DOUBLE  64
+++#define PR_BITS_PER_WORD    32
+++
+++#define PR_BITS_PER_BYTE_LOG2   3
+++#define PR_BITS_PER_SHORT_LOG2  4
+++#define PR_BITS_PER_INT_LOG2    5
+++#define PR_BITS_PER_INT64_LOG2  6
+++#define PR_BITS_PER_LONG_LOG2   5
+++#define PR_BITS_PER_FLOAT_LOG2  5
+++#define PR_BITS_PER_DOUBLE_LOG2 6
+++#define PR_BITS_PER_WORD_LOG2   5
+++
+++#define PR_ALIGN_OF_SHORT   2
+++#define PR_ALIGN_OF_INT     4
+++#define PR_ALIGN_OF_LONG    4
+++#define PR_ALIGN_OF_INT64   8
+++#define PR_ALIGN_OF_FLOAT   4
+++#define PR_ALIGN_OF_DOUBLE  8
+++#define PR_ALIGN_OF_POINTER 4
+++#define PR_ALIGN_OF_WORD    4
+++
+++#define PR_BYTES_PER_WORD_LOG2  2
+++#define PR_BYTES_PER_DWORD_LOG2 3
+++
+++#elif defined(__riscv) && (__riscv_xlen == 64)
+++
+++#undef  IS_BIG_ENDIAN
+++#define IS_LITTLE_ENDIAN 1
+++#define IS_64
+++
+++#define PR_BYTES_PER_BYTE   1
+++#define PR_BYTES_PER_SHORT  2
+++#define PR_BYTES_PER_INT    4
+++#define PR_BYTES_PER_INT64  8
+++#define PR_BYTES_PER_LONG   8
+++#define PR_BYTES_PER_FLOAT  4
+++#define PR_BYTES_PER_DOUBLE 8
+++#define PR_BYTES_PER_WORD   8
+++#define PR_BYTES_PER_DWORD  8
+++
+++#define PR_BITS_PER_BYTE    8
+++#define PR_BITS_PER_SHORT   16
+++#define PR_BITS_PER_INT     32
+++#define PR_BITS_PER_INT64   64
+++#define PR_BITS_PER_LONG    64
+++#define PR_BITS_PER_FLOAT   32
+++#define PR_BITS_PER_DOUBLE  64
+++#define PR_BITS_PER_WORD    64
+++
+++#define PR_BITS_PER_BYTE_LOG2   3
+++#define PR_BITS_PER_SHORT_LOG2  4
+++#define PR_BITS_PER_INT_LOG2    5
+++#define PR_BITS_PER_INT64_LOG2  6
+++#define PR_BITS_PER_LONG_LOG2   6
+++#define PR_BITS_PER_FLOAT_LOG2  5
+++#define PR_BITS_PER_DOUBLE_LOG2 6
+++#define PR_BITS_PER_WORD_LOG2   6
+++
+++#define PR_ALIGN_OF_SHORT   2
+++#define PR_ALIGN_OF_INT     4
+++#define PR_ALIGN_OF_LONG    8
+++#define PR_ALIGN_OF_INT64   8
+++#define PR_ALIGN_OF_FLOAT   4
+++#define PR_ALIGN_OF_DOUBLE  8
+++#define PR_ALIGN_OF_POINTER 8
+++#define PR_ALIGN_OF_WORD    8
+++
+++#define PR_BYTES_PER_WORD_LOG2  3
+++#define PR_BYTES_PER_DWORD_LOG2 3
+++
+++#elif defined(__arc__)
+++
+++#define IS_LITTLE_ENDIAN 1
+++#undef  IS_BIG_ENDIAN
+++
+++#define PR_BYTES_PER_BYTE   1
+++#define PR_BYTES_PER_SHORT  2
+++#define PR_BYTES_PER_INT    4
+++#define PR_BYTES_PER_INT64  8
+++#define PR_BYTES_PER_LONG   4
+++#define PR_BYTES_PER_FLOAT  4
+++#define PR_BYTES_PER_DOUBLE 8
+++#define PR_BYTES_PER_WORD   4
+++#define PR_BYTES_PER_DWORD  8
+++
+++#define PR_BITS_PER_BYTE    8
+++#define PR_BITS_PER_SHORT   16
+++#define PR_BITS_PER_INT     32
+++#define PR_BITS_PER_INT64   64
+++#define PR_BITS_PER_LONG    32
+++#define PR_BITS_PER_FLOAT   32
+++#define PR_BITS_PER_DOUBLE  64
+++#define PR_BITS_PER_WORD    32
+++
+++#define PR_BITS_PER_BYTE_LOG2   3
+++#define PR_BITS_PER_SHORT_LOG2  4
+++#define PR_BITS_PER_INT_LOG2    5
+++#define PR_BITS_PER_INT64_LOG2  6
+++#define PR_BITS_PER_LONG_LOG2   5
+++#define PR_BITS_PER_FLOAT_LOG2  5
+++#define PR_BITS_PER_DOUBLE_LOG2 6
+++#define PR_BITS_PER_WORD_LOG2   5
+++
+++#define PR_ALIGN_OF_SHORT   2
+++#define PR_ALIGN_OF_INT     4
+++#define PR_ALIGN_OF_LONG    4
+++#define PR_ALIGN_OF_INT64   4
+++#define PR_ALIGN_OF_FLOAT   4
+++#define PR_ALIGN_OF_DOUBLE  4
+++#define PR_ALIGN_OF_POINTER 4
+++#define PR_ALIGN_OF_WORD    4
+++
+++#define PR_BYTES_PER_WORD_LOG2   2
+++#define PR_BYTES_PER_DWORD_LOG2  3
+++
+++#elif defined(__nios2__) || defined(__microblaze__) || defined(__nds32__) || \
+++      defined(__xtensa__)
+++
+++#if defined(__microblaze__) && defined(__BIG_ENDIAN__)
+++#define IS_BIG_ENDIAN 1
+++#undef  IS_LITTLE_ENDIAN
+++#else
+++#define IS_LITTLE_ENDIAN 1
+++#undef  IS_BIG_ENDIAN
+++#endif
+++
+++#define PR_BYTES_PER_BYTE   1
+++#define PR_BYTES_PER_SHORT  2
+++#define PR_BYTES_PER_INT    4
+++#define PR_BYTES_PER_INT64  8
+++#define PR_BYTES_PER_LONG   4
+++#define PR_BYTES_PER_FLOAT  4
+++#define PR_BYTES_PER_DOUBLE 8
+++#define PR_BYTES_PER_WORD   4
+++#define PR_BYTES_PER_DWORD  8
+++
+++#define PR_BITS_PER_BYTE    8
+++#define PR_BITS_PER_SHORT   16
+++#define PR_BITS_PER_INT     32
+++#define PR_BITS_PER_INT64   64
+++#define PR_BITS_PER_LONG    32
+++#define PR_BITS_PER_FLOAT   32
+++#define PR_BITS_PER_DOUBLE  64
+++#define PR_BITS_PER_WORD    32
+++
+++#define PR_BITS_PER_BYTE_LOG2   3
+++#define PR_BITS_PER_SHORT_LOG2  4
+++#define PR_BITS_PER_INT_LOG2    5
+++#define PR_BITS_PER_INT64_LOG2  6
+++#define PR_BITS_PER_LONG_LOG2   5
+++#define PR_BITS_PER_FLOAT_LOG2  5
+++#define PR_BITS_PER_DOUBLE_LOG2 6
+++#define PR_BITS_PER_WORD_LOG2   5
+++
+++#define PR_ALIGN_OF_SHORT   2
+++#define PR_ALIGN_OF_INT     4
+++#define PR_ALIGN_OF_LONG    4
+++#define PR_ALIGN_OF_INT64   4
+++#define PR_ALIGN_OF_FLOAT   4
+++#define PR_ALIGN_OF_DOUBLE  4
+++#define PR_ALIGN_OF_POINTER 4
+++#define PR_ALIGN_OF_WORD    4
+++
+++#define PR_BYTES_PER_WORD_LOG2   2
+++#define PR_BYTES_PER_DWORD_LOG2  3
+++
+++#elif defined(__e2k__)
+++
+++#define IS_LITTLE_ENDIAN 1
+++#undef  IS_BIG_ENDIAN
+++
+++#define IS_64
+++
+++#define PR_BYTES_PER_BYTE   1
+++#define PR_BYTES_PER_SHORT  2
+++#define PR_BYTES_PER_INT    4
+++#define PR_BYTES_PER_INT64  4
+++#define PR_BYTES_PER_LONG   8
+++#define PR_BYTES_PER_FLOAT  4
+++#define PR_BYTES_PER_DOUBLE 8
+++#define PR_BYTES_PER_WORD   8
+++#define PR_BYTES_PER_DWORD  8
+++
+++#define PR_BITS_PER_BYTE    8
+++#define PR_BITS_PER_SHORT   16
+++#define PR_BITS_PER_INT     32
+++#define PR_BITS_PER_INT64   32
+++#define PR_BITS_PER_LONG    64
+++#define PR_BITS_PER_FLOAT   32
+++#define PR_BITS_PER_DOUBLE  64
+++#define PR_BITS_PER_WORD    64
+++
+++#define PR_BITS_PER_BYTE_LOG2   3
+++#define PR_BITS_PER_SHORT_LOG2  4
+++#define PR_BITS_PER_INT_LOG2    5
+++#define PR_BITS_PER_INT64_LOG2  5
+++#define PR_BITS_PER_LONG_LOG2   6
+++#define PR_BITS_PER_FLOAT_LOG2  5
+++#define PR_BITS_PER_DOUBLE_LOG2 6
+++#define PR_BITS_PER_WORD_LOG2   6
+++
+++#define PR_ALIGN_OF_SHORT   2
+++#define PR_ALIGN_OF_INT     4
+++#define PR_ALIGN_OF_LONG    8
+++#define PR_ALIGN_OF_INT64   4
+++#define PR_ALIGN_OF_FLOAT   4
+++#define PR_ALIGN_OF_DOUBLE  8
+++#define PR_ALIGN_OF_POINTER 8
+++#define PR_ALIGN_OF_WORD    8
+++
+++#define PR_BYTES_PER_WORD_LOG2  3
+++#define PR_BYTES_PER_DWORD_LOG2 3
+++
+++#else
+++
+++#error "Unknown CPU architecture"
+++
+++#endif
+++
+++#ifndef HAVE_LONG_LONG
+++#define      HAVE_LONG_LONG
+++#endif
+++#if PR_ALIGN_OF_DOUBLE == 8
+++#define HAVE_ALIGNED_DOUBLES
+++#endif
+++#if PR_ALIGN_OF_INT64 == 8
+++#define HAVE_ALIGNED_LONGLONGS
+++#endif
+++
+++#ifndef NO_NSPR_10_SUPPORT
+++
+++#define BYTES_PER_BYTE               PR_BYTES_PER_BYTE
+++#define BYTES_PER_SHORT      PR_BYTES_PER_SHORT
+++#define BYTES_PER_INT                PR_BYTES_PER_INT
+++#define BYTES_PER_INT64              PR_BYTES_PER_INT64
+++#define BYTES_PER_LONG               PR_BYTES_PER_LONG
+++#define BYTES_PER_FLOAT              PR_BYTES_PER_FLOAT
+++#define BYTES_PER_DOUBLE     PR_BYTES_PER_DOUBLE
+++#define BYTES_PER_WORD               PR_BYTES_PER_WORD
+++#define BYTES_PER_DWORD              PR_BYTES_PER_DWORD
+++
+++#define BITS_PER_BYTE                PR_BITS_PER_BYTE
+++#define BITS_PER_SHORT               PR_BITS_PER_SHORT
+++#define BITS_PER_INT         PR_BITS_PER_INT
+++#define BITS_PER_INT64               PR_BITS_PER_INT64
+++#define BITS_PER_LONG                PR_BITS_PER_LONG
+++#define BITS_PER_FLOAT               PR_BITS_PER_FLOAT
+++#define BITS_PER_DOUBLE              PR_BITS_PER_DOUBLE
+++#define BITS_PER_WORD                PR_BITS_PER_WORD
+++
+++#define BITS_PER_BYTE_LOG2   PR_BITS_PER_BYTE_LOG2
+++#define BITS_PER_SHORT_LOG2  PR_BITS_PER_SHORT_LOG2
+++#define BITS_PER_INT_LOG2    PR_BITS_PER_INT_LOG2
+++#define BITS_PER_INT64_LOG2  PR_BITS_PER_INT64_LOG2
+++#define BITS_PER_LONG_LOG2   PR_BITS_PER_LONG_LOG2
+++#define BITS_PER_FLOAT_LOG2  PR_BITS_PER_FLOAT_LOG2
+++#define BITS_PER_DOUBLE_LOG2         PR_BITS_PER_DOUBLE_LOG2
+++#define BITS_PER_WORD_LOG2   PR_BITS_PER_WORD_LOG2
+++
+++#define ALIGN_OF_SHORT               PR_ALIGN_OF_SHORT
+++#define ALIGN_OF_INT         PR_ALIGN_OF_INT
+++#define ALIGN_OF_LONG                PR_ALIGN_OF_LONG
+++#define ALIGN_OF_INT64               PR_ALIGN_OF_INT64
+++#define ALIGN_OF_FLOAT               PR_ALIGN_OF_FLOAT
+++#define ALIGN_OF_DOUBLE              PR_ALIGN_OF_DOUBLE
+++#define ALIGN_OF_POINTER     PR_ALIGN_OF_POINTER
+++#define ALIGN_OF_WORD                PR_ALIGN_OF_WORD
+++
+++#define BYTES_PER_WORD_LOG2  PR_BYTES_PER_WORD_LOG2
+++#define BYTES_PER_DWORD_LOG2 PR_BYTES_PER_DWORD_LOG2
+++#define WORDS_PER_DWORD_LOG2 PR_WORDS_PER_DWORD_LOG2
+++
+++#endif /* NO_NSPR_10_SUPPORT */
+++
+++#endif /* nspr_cpucfg___ */
++--- /dev/null
+++++ b/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/prtypes.h
++@@ -0,0 +1,520 @@
+++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+++/* This Source Code Form is subject to the terms of the Mozilla Public
+++ * License, v. 2.0. If a copy of the MPL was not distributed with this
+++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+++
+++/*
+++** File:                prtypes.h
+++** Description: Definitions of NSPR's basic types
+++**
+++** Prototypes and macros used to make up for deficiencies that we have found
+++** in ANSI environments.
+++**
+++** Since we do not wrap <stdlib.h> and all the other standard headers, authors
+++** of portable code will not know in general that they need these definitions.
+++** Instead of requiring these authors to find the dependent uses in their code
+++** and take the following steps only in those C files, we take steps once here
+++** for all C files.
+++**/
+++
+++#ifndef prtypes_h___
+++#define prtypes_h___
+++
+++#ifdef MDCPUCFG
+++#include MDCPUCFG
+++#else
+++#include "prcpucfg.h"
+++#endif
+++
+++#include <stddef.h>
+++
+++/***********************************************************************
+++** MACROS:      PR_EXTERN
+++**              PR_IMPLEMENT
+++** DESCRIPTION:
+++**      These are only for externally visible routines and globals.  For
+++**      internal routines, just use "extern" for type checking and that
+++**      will not export internal cross-file or forward-declared symbols.
+++**      Define a macro for declaring procedures return types. We use this to
+++**      deal with windoze specific type hackery for DLL definitions. Use
+++**      PR_EXTERN when the prototype for the method is declared. Use
+++**      PR_IMPLEMENT for the implementation of the method.
+++**
+++** Example:
+++**   in dowhim.h
+++**     PR_EXTERN( void ) DoWhatIMean( void );
+++**   in dowhim.c
+++**     PR_IMPLEMENT( void ) DoWhatIMean( void ) { return; }
+++**
+++**
+++***********************************************************************/
+++#if defined(WIN32)
+++
+++#define PR_EXPORT(__type) extern __declspec(dllexport) __type
+++#define PR_EXPORT_DATA(__type) extern __declspec(dllexport) __type
+++#define PR_IMPORT(__type) __declspec(dllimport) __type
+++#define PR_IMPORT_DATA(__type) __declspec(dllimport) __type
+++
+++#define PR_EXTERN(__type) extern __declspec(dllexport) __type
+++#define PR_IMPLEMENT(__type) __declspec(dllexport) __type
+++#define PR_EXTERN_DATA(__type) extern __declspec(dllexport) __type
+++#define PR_IMPLEMENT_DATA(__type) __declspec(dllexport) __type
+++
+++#define PR_CALLBACK
+++#define PR_CALLBACK_DECL
+++#define PR_STATIC_CALLBACK(__x) static __x
+++
+++#elif defined(XP_OS2) && defined(__declspec)
+++
+++#define PR_EXPORT(__type) extern __declspec(dllexport) __type
+++#define PR_EXPORT_DATA(__type) extern __declspec(dllexport) __type
+++#define PR_IMPORT(__type) extern  __declspec(dllimport) __type
+++#define PR_IMPORT_DATA(__type) extern __declspec(dllimport) __type
+++
+++#define PR_EXTERN(__type) extern __declspec(dllexport) __type
+++#define PR_IMPLEMENT(__type) __declspec(dllexport) __type
+++#define PR_EXTERN_DATA(__type) extern __declspec(dllexport) __type
+++#define PR_IMPLEMENT_DATA(__type) __declspec(dllexport) __type
+++
+++#define PR_CALLBACK
+++#define PR_CALLBACK_DECL
+++#define PR_STATIC_CALLBACK(__x) static __x
+++
+++#else /* Unix */
+++
+++/* GCC 3.3 and later support the visibility attribute. */
+++#if (__GNUC__ >= 4) || \
+++    (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)
+++#define PR_VISIBILITY_DEFAULT __attribute__((visibility("default")))
+++#else
+++#define PR_VISIBILITY_DEFAULT
+++#endif
+++
+++#define PR_EXPORT(__type) extern PR_VISIBILITY_DEFAULT __type
+++#define PR_EXPORT_DATA(__type) extern PR_VISIBILITY_DEFAULT __type
+++#define PR_IMPORT(__type) extern PR_VISIBILITY_DEFAULT __type
+++#define PR_IMPORT_DATA(__type) extern PR_VISIBILITY_DEFAULT __type
+++
+++#define PR_EXTERN(__type) extern PR_VISIBILITY_DEFAULT __type
+++#define PR_IMPLEMENT(__type) PR_VISIBILITY_DEFAULT __type
+++#define PR_EXTERN_DATA(__type) extern PR_VISIBILITY_DEFAULT __type
+++#define PR_IMPLEMENT_DATA(__type) PR_VISIBILITY_DEFAULT __type
+++#define PR_CALLBACK
+++#define PR_CALLBACK_DECL
+++#define PR_STATIC_CALLBACK(__x) static __x
+++
+++#endif
+++
+++#if defined(_NSPR_BUILD_)
+++#define NSPR_API(__type) PR_EXPORT(__type)
+++#define NSPR_DATA_API(__type) PR_EXPORT_DATA(__type)
+++#else
+++#define NSPR_API(__type) PR_IMPORT(__type)
+++#define NSPR_DATA_API(__type) PR_IMPORT_DATA(__type)
+++#endif
+++
+++/***********************************************************************
+++** MACROS:      PR_BEGIN_MACRO
+++**              PR_END_MACRO
+++** DESCRIPTION:
+++**      Macro body brackets so that macros with compound statement definitions
+++**      behave syntactically more like functions when called.
+++***********************************************************************/
+++#define PR_BEGIN_MACRO  do {
+++#define PR_END_MACRO    } while (0)
+++
+++/***********************************************************************
+++** MACROS:      PR_BEGIN_EXTERN_C
+++**              PR_END_EXTERN_C
+++** DESCRIPTION:
+++**      Macro shorthands for conditional C++ extern block delimiters.
+++***********************************************************************/
+++#ifdef __cplusplus
+++#define PR_BEGIN_EXTERN_C       extern "C" {
+++#define PR_END_EXTERN_C         }
+++#else
+++#define PR_BEGIN_EXTERN_C
+++#define PR_END_EXTERN_C
+++#endif
+++
+++/***********************************************************************
+++** MACROS:      PR_BIT
+++**              PR_BITMASK
+++** DESCRIPTION:
+++** Bit masking macros.  XXX n must be <= 31 to be portable
+++***********************************************************************/
+++#define PR_BIT(n)       ((PRUint32)1 << (n))
+++#define PR_BITMASK(n)   (PR_BIT(n) - 1)
+++
+++/***********************************************************************
+++** MACROS:      PR_ROUNDUP
+++**              PR_MIN
+++**              PR_MAX
+++**              PR_ABS
+++** DESCRIPTION:
+++**      Commonly used macros for operations on compatible types.
+++***********************************************************************/
+++#define PR_ROUNDUP(x,y) ((((x)+((y)-1))/(y))*(y))
+++#define PR_MIN(x,y)     ((x)<(y)?(x):(y))
+++#define PR_MAX(x,y)     ((x)>(y)?(x):(y))
+++#define PR_ABS(x)       ((x)<0?-(x):(x))
+++
+++/***********************************************************************
+++** MACROS:      PR_ARRAY_SIZE
+++** DESCRIPTION:
+++**  The number of elements in an array.
+++***********************************************************************/
+++#define PR_ARRAY_SIZE(a) (sizeof(a)/sizeof((a)[0]))
+++
+++PR_BEGIN_EXTERN_C
+++
+++/*
+++** Starting in NSPR 4.9.5, NSPR's exact-width integer types should match
+++** the exact-width integer types defined in <stdint.h>. This allows sloppy
+++** code to use PRInt{N} and int{N}_t interchangeably.
+++**
+++** The 8-bit and 16-bit integer types can only be defined using char and
+++** short. All platforms define the 32-bit integer types using int. So only
+++** the 64-bit integer types could be defined differently.
+++**
+++** NSPR's original strategy was to use the "shortest" 64-bit integer type:
+++** if long is 64-bit, then prefer it over long long. This strategy is also
+++** used by Linux/glibc, FreeBSD, and NetBSD.
+++**
+++** Other platforms use a different strategy: simply define the 64-bit
+++** integer types using long long. We define the PR_ALTERNATE_INT64_TYPEDEF
+++** macro on these platforms. Note that PR_ALTERNATE_INT64_TYPEDEF is for
+++** internal use by NSPR headers only. Do not define or test this macro in
+++** your code.
+++**
+++** NOTE: NSPR can't use <stdint.h> because C99 requires C++ code to define
+++** __STDC_LIMIT_MACROS and __STDC_CONSTANT_MACROS to make all the macros
+++** defined in <stdint.h> available. This strange requirement is gone in
+++** C11. When most platforms ignore this C99 requirement, NSPR will be able
+++** to use <stdint.h>. A patch to do that is in NSPR bug 634793.
+++*/
+++
+++#if defined(__APPLE__) || defined(__OpenBSD__)
+++#define PR_ALTERNATE_INT64_TYPEDEF
+++#endif
+++
+++/************************************************************************
+++** TYPES:       PRUint8
+++**              PRInt8
+++** DESCRIPTION:
+++**  The int8 types are known to be 8 bits each. There is no type that
+++**      is equivalent to a plain "char".
+++************************************************************************/
+++#if PR_BYTES_PER_BYTE == 1
+++typedef unsigned char PRUint8;
+++/*
+++** There are two scenarios that require us to define PRInt8 as type 'char'.
+++** (1)
+++** Some cfront-based C++ compilers do not like 'signed char' and
+++** issue the warning message:
+++**     warning: "signed" not implemented (ignored)
+++** For these compilers, we have to define PRInt8 as plain 'char'.
+++** Make sure that plain 'char' is indeed signed under these compilers.
+++** (2)
+++** Mozilla C++ code expects the PRInt{N} and int{N}_t types to match (see bug
+++** 634793). If a platform defines int8_t as 'char', but NSPR defines it as
+++** 'signed char', it results in a type mismatch.
+++** On such platforms we define PRInt8 as 'char' to avoid the mismatch.
+++*/
+++#if (defined(HPUX) && defined(__cplusplus) /* reason 1*/ \
+++        && !defined(__GNUC__) && __cplusplus < 199707L) \
+++    || (defined(SCO) && defined(__cplusplus) /* reason 1 */ \
+++        && !defined(__GNUC__) && __cplusplus == 1L) \
+++    || (defined(__sun) && defined(__cplusplus)) /* reason 2 */
+++typedef char PRInt8;
+++#else
+++typedef signed char PRInt8;
+++#endif
+++#else
+++#error No suitable type for PRInt8/PRUint8
+++#endif
+++
+++/************************************************************************
+++ * MACROS:      PR_INT8_MAX
+++ *              PR_INT8_MIN
+++ *              PR_UINT8_MAX
+++ * DESCRIPTION:
+++ *  The maximum and minimum values of a PRInt8 or PRUint8.
+++************************************************************************/
+++
+++#define PR_INT8_MAX 127
+++#define PR_INT8_MIN (-128)
+++#define PR_UINT8_MAX 255U
+++
+++/************************************************************************
+++** TYPES:       PRUint16
+++**              PRInt16
+++** DESCRIPTION:
+++**  The int16 types are known to be 16 bits each.
+++************************************************************************/
+++#if PR_BYTES_PER_SHORT == 2
+++typedef unsigned short PRUint16;
+++typedef short PRInt16;
+++#else
+++#error No suitable type for PRInt16/PRUint16
+++#endif
+++
+++/************************************************************************
+++ * MACROS:      PR_INT16_MAX
+++ *              PR_INT16_MIN
+++ *              PR_UINT16_MAX
+++ * DESCRIPTION:
+++ *  The maximum and minimum values of a PRInt16 or PRUint16.
+++************************************************************************/
+++
+++#define PR_INT16_MAX 32767
+++#define PR_INT16_MIN (-32768)
+++#define PR_UINT16_MAX 65535U
+++
+++/************************************************************************
+++** TYPES:       PRUint32
+++**              PRInt32
+++** DESCRIPTION:
+++**  The int32 types are known to be 32 bits each.
+++************************************************************************/
+++#if PR_BYTES_PER_INT == 4
+++typedef unsigned int PRUint32;
+++typedef int PRInt32;
+++#define PR_INT32(x)  x
+++#define PR_UINT32(x) x ## U
+++#elif PR_BYTES_PER_LONG == 4
+++typedef unsigned long PRUint32;
+++typedef long PRInt32;
+++#define PR_INT32(x)  x ## L
+++#define PR_UINT32(x) x ## UL
+++#else
+++#error No suitable type for PRInt32/PRUint32
+++#endif
+++
+++/************************************************************************
+++ * MACROS:      PR_INT32_MAX
+++ *              PR_INT32_MIN
+++ *              PR_UINT32_MAX
+++ * DESCRIPTION:
+++ *  The maximum and minimum values of a PRInt32 or PRUint32.
+++************************************************************************/
+++
+++#define PR_INT32_MAX PR_INT32(2147483647)
+++#define PR_INT32_MIN (-PR_INT32_MAX - 1)
+++#define PR_UINT32_MAX PR_UINT32(4294967295)
+++
+++/************************************************************************
+++** TYPES:       PRUint64
+++**              PRInt64
+++** DESCRIPTION:
+++**  The int64 types are known to be 64 bits each. Care must be used when
+++**      declaring variables of type PRUint64 or PRInt64. Different hardware
+++**      architectures and even different compilers have varying support for
+++**      64 bit values. The only guaranteed portability requires the use of
+++**      the LL_ macros (see prlong.h).
+++**
+++** MACROS:      PR_INT64
+++**              PR_UINT64
+++** DESCRIPTION:
+++**  The PR_INT64 and PR_UINT64 macros provide a portable way for
+++**      specifying 64-bit integer constants. They can only be used if
+++**      PRInt64 and PRUint64 are defined as compiler-supported 64-bit
+++**      integer types (i.e., if HAVE_LONG_LONG is defined, which is true
+++**      for all the supported compilers topday). If PRInt64 and PRUint64
+++**      are defined as structs, the LL_INIT macro defined in prlong.h has
+++**      to be used.
+++**
+++** MACROS:      PR_INT64_MAX
+++**              PR_INT64_MIN
+++**              PR_UINT64_MAX
+++** DESCRIPTION:
+++**  The maximum and minimum values of a PRInt64 or PRUint64.
+++************************************************************************/
+++#ifdef HAVE_LONG_LONG
+++/* Keep this in sync with prlong.h. */
+++#if PR_BYTES_PER_LONG == 8 && !defined(PR_ALTERNATE_INT64_TYPEDEF)
+++typedef long PRInt64;
+++typedef unsigned long PRUint64;
+++#define PR_INT64(x)  x ## L
+++#define PR_UINT64(x) x ## UL
+++#elif defined(WIN32) && !defined(__GNUC__)
+++typedef __int64  PRInt64;
+++typedef unsigned __int64 PRUint64;
+++#define PR_INT64(x)  x ## i64
+++#define PR_UINT64(x) x ## ui64
+++#else
+++typedef long long PRInt64;
+++typedef unsigned long long PRUint64;
+++#define PR_INT64(x)  x ## LL
+++#define PR_UINT64(x) x ## ULL
+++#endif /* PR_BYTES_PER_LONG == 8 */
+++
+++#define PR_INT64_MAX PR_INT64(0x7fffffffffffffff)
+++#define PR_INT64_MIN (-PR_INT64_MAX - 1)
+++#define PR_UINT64_MAX PR_UINT64(-1)
+++#else  /* !HAVE_LONG_LONG */
+++typedef struct {
+++#ifdef IS_LITTLE_ENDIAN
+++    PRUint32 lo, hi;
+++#else
+++    PRUint32 hi, lo;
+++#endif
+++} PRInt64;
+++typedef PRInt64 PRUint64;
+++
+++#define PR_INT64_MAX (PRInt64){0x7fffffff, 0xffffffff}
+++#define PR_INT64_MIN (PRInt64){0xffffffff, 0xffffffff}
+++#define PR_UINT64_MAX (PRUint64){0xffffffff, 0xffffffff}
+++
+++#endif /* !HAVE_LONG_LONG */
+++
+++/************************************************************************
+++** TYPES:       PRUintn
+++**              PRIntn
+++** DESCRIPTION:
+++**  The PRIntn types are most appropriate for automatic variables. They are
+++**      guaranteed to be at least 16 bits, though various architectures may
+++**      define them to be wider (e.g., 32 or even 64 bits). These types are
+++**      never valid for fields of a structure.
+++************************************************************************/
+++#if PR_BYTES_PER_INT >= 2
+++typedef int PRIntn;
+++typedef unsigned int PRUintn;
+++#else
+++#error 'sizeof(int)' not sufficient for platform use
+++#endif
+++
+++/************************************************************************
+++** TYPES:       PRFloat64
+++** DESCRIPTION:
+++**  NSPR's floating point type is always 64 bits.
+++************************************************************************/
+++typedef double          PRFloat64;
+++
+++/************************************************************************
+++** TYPES:       PRSize
+++** DESCRIPTION:
+++**  A type for representing the size of objects.
+++************************************************************************/
+++typedef size_t PRSize;
+++
+++
+++/************************************************************************
+++** TYPES:       PROffset32, PROffset64
+++** DESCRIPTION:
+++**  A type for representing byte offsets from some location.
+++************************************************************************/
+++typedef PRInt32 PROffset32;
+++typedef PRInt64 PROffset64;
+++
+++/************************************************************************
+++** TYPES:       PRPtrDiff
+++** DESCRIPTION:
+++**  A type for pointer difference. Variables of this type are suitable
+++**      for storing a pointer or pointer subtraction.
+++************************************************************************/
+++typedef ptrdiff_t PRPtrdiff;
+++
+++/************************************************************************
+++** TYPES:       PRUptrdiff
+++** DESCRIPTION:
+++**  A type for pointer difference. Variables of this type are suitable
+++**      for storing a pointer or pointer sutraction.
+++************************************************************************/
+++#ifdef _WIN64
+++typedef PRUint64 PRUptrdiff;
+++#else
+++typedef unsigned long PRUptrdiff;
+++#endif
+++
+++/************************************************************************
+++** TYPES:       PRBool
+++** DESCRIPTION:
+++**  Use PRBool for variables and parameter types. Use PR_FALSE and PR_TRUE
+++**      for clarity of target type in assignments and actual arguments. Use
+++**      'if (bool)', 'while (!bool)', '(bool) ? x : y' etc., to test booleans
+++**      just as you would C int-valued conditions.
+++************************************************************************/
+++typedef PRIntn PRBool;
+++#define PR_TRUE 1
+++#define PR_FALSE 0
+++
+++/************************************************************************
+++** TYPES:       PRPackedBool
+++** DESCRIPTION:
+++**  Use PRPackedBool within structs where bitfields are not desirable
+++**      but minimum and consistant overhead matters.
+++************************************************************************/
+++typedef PRUint8 PRPackedBool;
+++
+++/*
+++** Status code used by some routines that have a single point of failure or
+++** special status return.
+++*/
+++typedef enum { PR_FAILURE = -1, PR_SUCCESS = 0 } PRStatus;
+++
+++#ifndef __PRUNICHAR__
+++#define __PRUNICHAR__
+++#ifdef WIN32
+++typedef wchar_t PRUnichar;
+++#else
+++typedef PRUint16 PRUnichar;
+++#endif
+++#endif
+++
+++/*
+++** WARNING: The undocumented data types PRWord and PRUword are
+++** only used in the garbage collection and arena code.  Do not
+++** use PRWord and PRUword in new code.
+++**
+++** A PRWord is an integer that is the same size as a void*.
+++** It implements the notion of a "word" in the Java Virtual
+++** Machine.  (See Sec. 3.4 "Words", The Java Virtual Machine
+++** Specification, Addison-Wesley, September 1996.
+++** http://java.sun.com/docs/books/vmspec/index.html.)
+++*/
+++#ifdef _WIN64
+++typedef PRInt64 PRWord;
+++typedef PRUint64 PRUword;
+++#else
+++typedef long PRWord;
+++typedef unsigned long PRUword;
+++#endif
+++
+++/*
+++ * PR_PRETEND_NORETURN, specified at the end of a function declaration,
+++ * indicates that for the purposes of static analysis, this function does not
+++ * return.  (The function definition does not need to be annotated.)
+++ *
+++ * void PR_Assert(const char *s, const char *file, PRIntn ln)
+++ *     PR_PRETEND_NORETURN;
+++ *
+++ * Some static analyzers, like scan-build from clang, can use this information
+++ * to eliminate false positives.  From the upstream documentation of
+++ * scan-build:
+++ *     This attribute is useful for annotating assertion handlers that actually
+++ *     can return, but for the purpose of using the analyzer we want to pretend
+++ *     that such functions do not return.
+++ */
+++#ifdef __clang_analyzer__
+++#if __has_extension(attribute_analyzer_noreturn)
+++#define PR_PRETEND_NORETURN __attribute__((analyzer_noreturn))
+++#endif
+++#endif
+++
+++#ifndef PR_PRETEND_NORETURN
+++#define PR_PRETEND_NORETURN /* no support */
+++#endif
+++
+++/*
+++** Compile-time assert. "condition" must be a constant expression.
+++** The macro can be used only in places where an "extern" declaration is
+++** allowed.
+++*/
+++#define PR_STATIC_ASSERT(condition) \
+++    extern void pr_static_assert(int arg[(condition) ? 1 : -1])
+++
+++PR_END_EXTERN_C
+++
+++#endif /* prtypes_h___ */
+++
++--- /dev/null
+++++ b/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs11p.h
++@@ -0,0 +1,24 @@
+++/* This Source Code Form is subject to the terms of the Mozilla Public
+++ * License, v. 2.0. If a copy of the MPL was not distributed with this
+++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+++/*
+++ * Copyright (C) 1994-1999 RSA Security Inc. Licence to copy this document
+++ * is granted provided that it is identified as "RSA Security Inc. Public-Key
+++ * Cryptography Standards (PKCS)" in all material mentioning or referencing
+++ * this document.
+++ */
+++/* these data types are platform/implementation dependent. */
+++/*
+++ * Packing was removed from the shipped RSA header files, even
+++ * though it's still needed. put in a central file to help merging..
+++ */
+++
+++#if defined(_WIN32) || defined(_WINDOWS)
+++#ifdef __clang__
+++#pragma clang diagnostic ignored "-Wpragma-pack"
+++#endif
+++#ifdef _MSC_VER
+++#pragma warning(disable : 4103)
+++#endif
+++#pragma pack(push, cryptoki, 1)
+++#endif
++--- a/src/jdk.crypto.cryptoki/unix/native/libj2pkcs11/p11_md.h
+++++ b/src/jdk.crypto.cryptoki/unix/native/libj2pkcs11/p11_md.h
++@@ -63,11 +63,6 @@
++ #ifndef _P11_MD_H
++ #define _P11_MD_H 1
++ 
++-#define CK_PTR *
++-#define CK_DEFINE_FUNCTION(returnType, name) returnType name
++-#define CK_DECLARE_FUNCTION(returnType, name) returnType name
++-#define CK_DECLARE_FUNCTION_POINTER(returnType, name) returnType (* name)
++-#define CK_CALLBACK_FUNCTION(returnType, name) returnType (* name)
++ #ifndef NULL_PTR
++ #define NULL_PTR 0
++ #endif
++--- a/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs11wrapper.h
+++++ b/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs11wrapper.h
++@@ -172,8 +172,8 @@
++ #define min(a, b)       (((a) < (b)) ? (a) : (b))
++ #endif
++ 
++-#define ckBBoolToJBoolean(x) ((x == TRUE) ? JNI_TRUE : JNI_FALSE);
++-#define jBooleanToCKBBool(x) ((x == JNI_TRUE) ? TRUE : FALSE);
+++#define ckBBoolToJBoolean(x) ((x == CK_TRUE) ? JNI_TRUE : JNI_FALSE);
+++#define jBooleanToCKBBool(x) ((x == JNI_TRUE) ? CK_TRUE : CK_FALSE);
++ 
++ #define ckByteToJByte(x) ((jbyte) x)
++ #define jByteToCKByte(x) ((CK_BYTE) x)
++--- a/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_convert.c
+++++ b/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_convert.c
++@@ -1543,7 +1543,9 @@ CK_VOID_PTR jMechParamToCKMechParamPtrSl
++             ckpParamPtr = jX942Dh2DeriveParamToCKX942Dh2DeriveParamPtr(env, jParam, ckpLength);
++             break;
++         // defined by pkcs11.h but we don't support
+++#if 0
++         case CKM_KEA_DERIVE: // CK_KEA_DERIVE_PARAMS
+++#endif
++         case CKM_RC2_CBC: // CK_RC2_CBC_PARAMS
++         case CKM_RC2_MAC_GENERAL: // CK_RC2_MAC_GENERAL_PARAMS
++         case CKM_RC5_ECB: // CK_RC5_PARAMS
++--- a/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_util.c
+++++ b/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_util.c
++@@ -407,7 +407,9 @@ void freeCKMechanismPtr(CK_MECHANISM_PTR
++                  case CKM_TLS_MAC:
++                  case CKM_AES_CTR:
++                  case CKM_RSA_PKCS_PSS:
+++#if 0
++                  case CKM_CAMELLIA_CTR:
+++#endif
++                      // params do not contain pointers
++                      break;
++                  default:
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..cbf36c55327183cf1b453e4228cdb0a07fafb511
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,25 @@@
++--- a/src/hotspot/make/linux/makefiles/jsig.make
+++++ b/src/hotspot/make/linux/makefiles/jsig.make
++@@ -54,7 +54,9 @@ endif
++ $(LIBJSIG): $(JSIGSRCDIR)/jsig.c $(LIBJSIG_MAPFILE)
++      @echo $(LOG_INFO) Making signal interposition lib...
++      $(QUIETLY) $(CC) $(SYMFLAG) $(ARCHFLAG) $(SHARED_FLAG) $(PICFLAG) \
++-                         $(LFLAGS_JSIG) $(JSIG_DEBUG_CFLAGS) $(EXTRA_CFLAGS) -o $@ $< -ldl
+++                         $(LFLAGS_JSIG) $(EXTRA_LDFLAGS) \
+++                         $(JSIG_DEBUG_CFLAGS) $(EXTRA_CFLAGS) \
+++                         -o $@ $< -ldl
++ ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
++      $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJSIG_DEBUGINFO)
++      $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJSIG_DEBUGINFO) $@
++--- a/src/hotspot/make/linux/makefiles/vm.make
+++++ b/src/hotspot/make/linux/makefiles/vm.make
++@@ -118,7 +118,8 @@ CFLAGS += $(CFLAGS/NOEX)
++ 
++ # Extra flags from gnumake's invocation or environment
++ CFLAGS += $(EXTRA_CFLAGS)
++-LFLAGS += $(EXTRA_CFLAGS)
+++CXXFLAGS += $(EXTRA_CXXFLAGS)
+++LFLAGS += $(EXTRA_LDFLAGS)
++ 
++ # Don't set excutable bit on stack segment
++ # the same could be done by separate execstack command
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..1d2db6edb95fa01e6466ad9b29e24a7936428683
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,39 @@@
++Description: jlink: Hash of module differs to expected hash recorded in java.base
++ The cause is the use of dh_strip_nondeterminism late in the build
++ process.  This reorganises the jmod files, which in turn changes their
++ SHA256 checksums.  This would not be a problem, except that the
++ checksums are saved in java.base.jmod *before* the use of
++ dh_strip_nondeterminism.  Performing this stripping immediately after
++ each jmod file is created results in the checksums being consistent
++ throughout.
++Author: Julian Gilbey <jdg@debian.org>
++Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=944738
++Forwarded: not-needed
++
++--- a/make/CreateJmods.gmk
+++++ b/make/CreateJmods.gmk
++@@ -230,6 +230,15 @@ endif
++ 
++ # Create jmods in the support dir and then move them into place to keep the
++ # module path in $(IMAGES_OUTPUTDIR)/jmods valid at all times.
+++# strip-nondeterminism requires the same timestamp as
+++# dh_strip_nondeterminism uses, so we determine this first.
+++# Fall back to the original behavior if the tools are missing for backports
+++DSN_TIMESTAMP := $(shell perl -MDebian::Debhelper::Dh_Lib -e 'print get_source_date_epoch()' 2>/dev/null)
+++ifneq (,$(DSN_TIMESTAMP))
+++  ifneq (,$(wildcard /bin/strip-nondeterminism /usr/bin/strip-nondeterminism))
+++    use_strip_ndt = yes
+++  endif
+++endif
++ $(eval $(call SetupExecute, create_$(JMOD_FILE), \
++     WARN := Creating $(INTERIM_MSG)$(JMOD_FILE), \
++     DEPS := $(DEPS), \
++@@ -241,7 +250,7 @@ $(eval $(call SetupExecute, create_$(JMO
++         --module-path $(JMODS_DIR) $(JMOD_FLAGS) \
++         $(JMOD_SOURCE_DATE) \
++         $(JMODS_SUPPORT_DIR)/$(JMOD_FILE), \
++-    POST_COMMAND := $(MV) $(JMODS_SUPPORT_DIR)/$(JMOD_FILE) $(JMODS_DIR)/$(JMOD_FILE), \
+++    POST_COMMAND := $(if $(use_strip_ndt),strip-nondeterminism --timestamp $(DSN_TIMESTAMP) $(JMODS_SUPPORT_DIR)/$(JMOD_FILE) && )$(MV) $(JMODS_SUPPORT_DIR)/$(JMOD_FILE) $(JMODS_DIR)/$(JMOD_FILE), \
++ ))
++ 
++ TARGETS += $(create_$(JMOD_FILE))
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..c42e63e0eede43c4b0607f48ca30192912126242
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,14 @@@
++Description: Makes the generated character data classes reproducible (removes a timestamp and trims a build path captured in the comments)
++Author: Emmanuel Bourg <ebourg@apache.org>
++Forwarded: no
++--- a/make/jdk/src/classes/build/tools/generatecharacter/GenerateCharacter.java
+++++ b/make/jdk/src/classes/build/tools/generatecharacter/GenerateCharacter.java
++@@ -1729,7 +1729,7 @@ OUTER:  for (int i = 0; i < n; i += m) {
++         }
++         commentStart = (Csyntax ? "/*" : "//");
++         commentEnd = (Csyntax ? " */" : "");
++-        commandLineDescription = desc.toString().replace("\\", "\\\\");
+++        commandLineDescription = desc.toString().replace("\\", "\\\\").replace(System.getProperty("user.dir").replace("make/gensrc", ""), "");
++     }
++ 
++     private static void searchBins(long[] map, int binsOccupied) throws Exception {
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..bba2371d618fcf82971f1d73f68f1372e464d4f6
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,64 @@@
++Description: Makes the generated copyright headers reproducible
++Author: Emmanuel Bourg <ebourg@apache.org>
++Forwarded: no
++--- a/make/jdk/src/classes/build/tools/cldrconverter/CopyrightHeaders.java
+++++ b/make/jdk/src/classes/build/tools/cldrconverter/CopyrightHeaders.java
++@@ -26,6 +26,7 @@
++ package build.tools.cldrconverter;
++ 
++ import java.util.Calendar;
+++import java.util.Date;
++ import java.util.GregorianCalendar;
++ import java.util.Locale;
++ import java.util.TimeZone;
++@@ -146,8 +147,14 @@ class CopyrightHeaders {
++     }
++ 
++     private static int getYear() {
++-        return new GregorianCalendar(TimeZone.getTimeZone("America/Los_Angeles"),
++-                                         Locale.US).get(Calendar.YEAR);
+++        Date date = new Date();
+++        if (System.getenv("SOURCE_DATE_EPOCH") != null) {
+++            date = new Date(1000 * Long.valueOf(System.getenv("SOURCE_DATE_EPOCH")));
+++        }
+++
+++        GregorianCalendar calendar = new GregorianCalendar(TimeZone.getTimeZone("UTC"), Locale.ENGLISH);
+++        calendar.setTime(date);
+++        return calendar.get(Calendar.YEAR);
++     }
++ 
++     // no instantiation
++--- a/make/jdk/src/classes/build/tools/generatelsrequivmaps/EquivMapsGenerator.java
+++++ b/make/jdk/src/classes/build/tools/generatelsrequivmaps/EquivMapsGenerator.java
++@@ -34,9 +34,13 @@ import java.time.ZoneId;
++ import java.time.ZonedDateTime;
++ import java.util.ArrayList;
++ import java.util.Arrays;
+++import java.util.Calendar;
+++import java.util.Date;
+++import java.util.GregorianCalendar;
++ import java.util.List;
++ import java.util.Locale;
++ import java.util.Map;
+++import java.util.TimeZone;
++ import java.util.TreeMap;
++ import java.util.stream.Collectors;
++ 
++@@ -246,8 +250,15 @@ public class EquivMapsGenerator {
++         + "}";
++ 
++     private static String getOpenJDKCopyright() {
++-        int year = ZonedDateTime.now(ZoneId
++-                .of("America/Los_Angeles")).getYear();
+++        Date date = new Date();
+++        if (System.getenv("SOURCE_DATE_EPOCH") != null) {
+++            date = new Date(1000 * Long.valueOf(System.getenv("SOURCE_DATE_EPOCH")));
+++        }
+++
+++        GregorianCalendar calendar = new GregorianCalendar(TimeZone.getTimeZone("UTC"), Locale.ENGLISH);
+++        calendar.setTime(date);
+++
+++        int year = calendar.get(Calendar.YEAR);
++         return String.format(Locale.US, COPYRIGHT, year);
++     }
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8cabed1f98b89cfffc1e1392022dff8f17d2926b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,41 @@@
++Description: Makes the timestamp in the javadoc files reproducible when SOURCE_DATE_EPOCH is specified
++Author: Emmanuel Bourg <ebourg@apache.org>
++Forwarded: no
++--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Head.java
+++++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Head.java
++@@ -239,6 +239,9 @@ public class Head {
++      */
++     public Content toContent() {
++         Date now = showTimestamp ? calendar.getTime() : null;
+++        if (now != null && System.getenv("SOURCE_DATE_EPOCH") != null) {
+++            now = new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH")));
+++        }
++ 
++         HtmlTree tree = new HtmlTree(HtmlTag.HEAD);
++         tree.add(getGeneratedBy(showTimestamp, now));
++@@ -250,6 +253,9 @@ public class Head {
++ 
++         if (showTimestamp) {
++             SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+++            if (System.getenv("SOURCE_DATE_EPOCH") != null) {
+++                dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
+++            }
++             tree.add(HtmlTree.META("dc.created", dateFormat.format(now)));
++         }
++ 
++@@ -282,7 +288,14 @@ public class Head {
++     private Comment getGeneratedBy(boolean timestamp, Date now) {
++         String text = "Generated by javadoc"; // marker string, deliberately not localized
++         if (timestamp) {
++-            text += " ("+ docletVersion + ") on " + now;
+++            text += " ("+ docletVersion + ") on ";
+++            if (System.getenv("SOURCE_DATE_EPOCH") == null) {
+++                text += now;
+++            } else {
+++                SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z");
+++                fmt.setTimeZone(TimeZone.getTimeZone("UTC"));
+++                text += fmt.format(now);
+++            }
++         }
++         return new Comment(text);
++     }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..08eb58a2d18e97089fdbf0d684cb92190144dcbe
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,18 @@@
++Description: Makes the generated module-info.java files reproducible (removes a captured build path)
++Author: Emmanuel Bourg <ebourg@apache.org>
++Forwarded: no
++--- a/make/jdk/src/classes/build/tools/module/GenModuleInfoSource.java
+++++ b/make/jdk/src/classes/build/tools/module/GenModuleInfoSource.java
++@@ -156,9 +156,10 @@ public class GenModuleInfoSource {
++                 if (l.trim().startsWith("module ")) {
++                     if (debug) {
++                         // print URI rather than file path to avoid escape
++-                        writer.format("    // source file: %s%n", sourceFile.toUri());
+++                     String buildPath = System.getProperty("user.dir").replaceAll("make$", "");
+++                     writer.format("    // source file: %s%n", sourceFile.toUri().toString().replace(buildPath, ""));
++                         for (Path file : extraFiles) {
++-                            writer.format("    //              %s%n", file.toUri());
+++                         writer.format("    //              %s%n", file.toUri().toString().replace(buildPath, ""));
++                         }
++                     }
++                     break;
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..63462cd543a99f28505b622f936ab2ba5b9eb3f8
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,37 @@@
++Description: Makes the timestamp in the properties files header reproducible when SOURCE_DATE_EPOCH is specified
++Author: Emmanuel Bourg <ebourg@apache.org>
++Forwarded: no
++--- a/src/java.base/share/classes/java/util/Properties.java
+++++ b/src/java.base/share/classes/java/util/Properties.java
++@@ -903,7 +903,7 @@ public class Properties extends Hashtabl
++         if (comments != null) {
++             writeComments(bw, comments);
++         }
++-        bw.write("#" + new Date().toString());
+++        bw.write("#" + getFormattedTimestamp());
++         bw.newLine();
++         synchronized (this) {
++             for (Map.Entry<Object, Object> e : entrySet()) {
++@@ -1555,4 +1555,22 @@ public class Properties extends Hashtabl
++         }
++         this.map = map;
++     }
+++
+++    /**
+++     * Returns a formatted timestamp to be used in the properties file header.
+++     * The date used is the current date, unless the SOURCE_DATE_EPOCH
+++     * environment variable is specified. In this case the format used is
+++     * locale and timezone insensitive to ensure the output is reproducible.
+++     */
+++    private String getFormattedTimestamp() {
+++        if (System.getenv("SOURCE_DATE_EPOCH") == null) {
+++            return new Date().toString();
+++        } else {
+++            // Use the SOURCE_DATE_EPOCH timestamp and make the format locale/timezone insensitive
+++            java.text.SimpleDateFormat fmt = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss z", java.util.Locale.ENGLISH);
+++            fmt.setTimeZone(java.util.TimeZone.getTimeZone("UTC"));
+++            Date date = new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH")));
+++            return fmt.format(date);
+++        }
+++    }
++ }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9195438bba4db286d6ed9bc8c1dc4f5b1ec568ee
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,69 @@@
++# HG changeset patch
++# User enevill
++# Date 1521985117 -3600
++#      Sun Mar 25 14:38:37 2018 +0100
++# Node ID 7d1ae835ef5194e7ae5b56b51f944029fe602d11
++# Parent  1b1de4b263c81853719f6bb0385fe23bc4e35f6c
++8199138: Add RISC-V support to Zero
++Reviewed-by: aph, erikj, ehelin, ihse
++
++--- a/make/autoconf/build-aux/config.guess
+++++ b/make/autoconf/build-aux/config.guess
++@@ -28,6 +28,13 @@
++ # autoconf system (which might easily get lost in a future update), we wrap it
++ # and fix the broken property, if needed.
++ 
+++machine=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+++if test $machine = riscv64; then
+++  # This is all we need to know for riscv64
+++  echo riscv64-unknown-linux-gnu
+++  exit
+++fi
+++
++ DIR=`dirname $0`
++ OUT=`. $DIR/autoconf-config.guess`
++ 
++--- a/make/autoconf/build-aux/config.sub
+++++ b/make/autoconf/build-aux/config.sub
++@@ -46,8 +46,8 @@ if echo $* | grep pc-msys >/dev/null ; t
++     exit
++ fi
++ 
++-# Filter out everything that doesn't begin with "aarch64-"
++-if ! echo $* | grep '^aarch64-' >/dev/null ; then
+++# First, filter out everything that doesn't begin with "aarch64-" or "riscv64-"
+++if ! echo $* | grep '^aarch64-\|^riscv64-' >/dev/null ; then
++     . $DIR/autoconf-config.sub "$@"
++     # autoconf-config.sub exits, so we never reach here, but just in
++     # case we do:
++@@ -62,6 +62,10 @@ while test $# -gt 0 ; do
++             config=`echo $1 | sed 's/^aarch64-/arm-/'`
++             sub_args="$sub_args $config"
++             shift; ;;
+++        riscv64-* )
+++            config=`echo $1 | sed 's/^riscv64-/x86-/'`
+++            sub_args="$sub_args $config"
+++            shift; ;;
++         - )    # Use stdin as input.
++             sub_args="$sub_args $1"
++             shift; break ;;
++@@ -74,7 +78,7 @@ done
++ result=`. $DIR/autoconf-config.sub $sub_args "$@"`
++ exitcode=$?
++ 
++-result=`echo $result | sed "s/^arm-/aarch64-/"`
+++result=`echo $result | sed "s/^arm-/aarch64-/" | sed "s/^x86-/riscv64-/"`
++ 
++ echo $result
++ exit $exitcode
++--- a/src/hotspot/os/linux/os_linux.cpp
+++++ b/src/hotspot/os/linux/os_linux.cpp
++@@ -2563,6 +2563,8 @@ void os::get_summary_cpu_info(char* cpui
++   strncpy(cpuinfo, "IA64", length);
++ #elif defined(PPC)
++   strncpy(cpuinfo, "PPC64", length);
+++#elif defined(RISCV)
+++  strncpy(cpuinfo, "RISCV", length);
++ #elif defined(S390)
++   strncpy(cpuinfo, "S390", length);
++ #elif defined(SPARC)
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..5f4582ce600de2c73625a0a296d5fd09914afcf5
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,12 @@@
++--- a/make/autoconf/flags-cflags.m4
+++++ b/make/autoconf/flags-cflags.m4
++@@ -721,6 +721,9 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_CPU_DEP],
++       fi
++     elif test "x$FLAGS_CPU" = xs390x; then
++       $1_CFLAGS_CPU="-mbackchain -march=z10"
+++      if test "x$VENDOR_FLAGS_CPU" != x; then
+++        $1_CFLAGS_CPU="-mbackchain $VENDOR_FLAGS_CPU"
+++      fi
++     fi
++ 
++     if test "x$FLAGS_CPU_ARCH" != xarm &&  test "x$FLAGS_CPU_ARCH" != xppc; then
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..441a1779c92aca4ee8b0a3139c2324e06c2d4b9d
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,39 @@@
++system-pcsclite.diff
++hotspot-mips-align.diff
++icc_loading_with_symlink.diff
++icedtea-override-redirect-compiz.diff
++libpcsclite-dlopen.diff
++#jexec.diff
++default-jvm-cfg.diff
++workaround_expand_exec_shield_cs_limit.diff
++adlc-parser.diff
++multiple-pkcs11-library-init.diff
++s390x-opt.diff
++jdk-getAccessibleValue.diff
++jtreg-location.diff
++jdk-i18n-pt_BR.diff
++8199220.diff
++machine-flag.diff
++zero-x32.diff
++hotspot-disable-exec-shield-workaround.diff
++atk-wrapper-security.diff
++# java-access-bridge-security.diff
++# jdk-pulseaudio.diff
++dnd-files.diff
++generated-headers.patch
++m68k-support.diff
++reproducible-properties-timestamp.diff
++# reproducible-javadoc-timestamp.diff
++make-debug-print.diff
++Don-t-optimize-fdlibm-fork-for-Zero-on-linux-sparc-Z.patch
++keep-gtk2-as-default.patch
++jaw-classpath.diff
++jaw-optional.diff
++reproducible-character-data.diff
++reproducible-module-info.diff
++#reproducible-copyright-headers.diff
++riscv64.diff
++reproducible-build-jmod.diff
++mips.diff
++#nspr+nss-headers.diff
++client_default.diff
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d1fc398791195652698ffaeb4a8b3f49de22fe7f
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,47 @@@
++--- a/src/jdk/src/solaris/bin/java_md.c.orig
+++++ b/src/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 */
++--- a/src/hotspot/src/os/posix/launcher/java_md.c.orig
+++++ b/src/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 */
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..a4421ca356f9f38aeb8c06fb256b694e2f15d3f5
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,215 @@@
++--- a/src/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp.old      2010-01-06 16:30:02.000000000 +0100
+++++ b/src/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() {
++--- a/src/hotspot/src/share/vm/runtime/thread.cpp.old 2009-10-02 23:16:39.000000000 +0200
+++++ b/src/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;
++ }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..c670fe80d017be8a49287cc3e988b6170ddc424c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,179 @@@
++--- a/make/autoconf/lib-bundled.m4
+++++ b/make/autoconf/lib-bundled.m4
++@@ -41,6 +41,7 @@ AC_DEFUN_ONCE([LIB_SETUP_BUNDLED_LIBS],
++   LIB_SETUP_ZLIB
++   LIB_SETUP_LCMS
++   LIB_SETUP_HARFBUZZ
+++  LIB_SETUP_PCSCLITE
++ ])
++ 
++ ################################################################################
++@@ -304,3 +305,41 @@ AC_DEFUN_ONCE([LIB_SETUP_HARFBUZZ],
++   AC_SUBST(HARFBUZZ_CFLAGS)
++   AC_SUBST(HARFBUZZ_LIBS)
++ ])
+++
+++################################################################################
+++# Setup pcsclite
+++################################################################################
+++AC_DEFUN_ONCE([LIB_SETUP_PCSCLITE],
+++[
+++  AC_ARG_WITH(pcsclite, [AS_HELP_STRING([--with-pcsclite],
+++     [use pcsclite from build system or OpenJDK source (system, bundled) @<:@bundled@:>@])])
+++
+++  AC_MSG_CHECKING([for which pcsclite to use])
+++
+++  # default is bundled
+++  DEFAULT_PCSCLITE=bundled
+++  # if user didn't specify, use DEFAULT_PCSCLITE
+++  if test "x${with_pcsclite}" = "x"; then
+++      with_libpng=${DEFAULT_PCSCLITE}
+++  fi
+++
+++  if test "x${with_pcsclite}" = "xbundled"; then
+++      USE_EXTERNAL_PCSCLITE=false
+++      AC_MSG_RESULT([bundled])
+++  elif test "x${with_pcsclite}" = "xsystem"; then
+++      PKG_CHECK_MODULES(PCSCLITE, libpcsclite,
+++                   [ PCSCLITE_FOUND=yes ],
+++                   [ PCSCLITE_FOUND=no ])
+++      if test "x${PCSCLITE_FOUND}" = "xyes"; then
+++          USE_EXTERNAL_PCSCLITE=true
+++          AC_MSG_RESULT([system])
+++      else
+++          AC_MSG_RESULT([system not found])
+++          AC_MSG_ERROR([--with-pcsclite=system specified, but no pcsclite found!])
+++      fi
+++  else
+++      AC_MSG_ERROR([Invalid value of --with-pcsclite: ${with_pcsclite}, use 'system' or 'bundled'])
+++  fi
+++
+++  AC_SUBST(USE_EXTERNAL_PCSCLITE)
+++])
++--- a/make/modules/java.smartcardio/Lib.gmk
+++++ b/make/modules/java.smartcardio/Lib.gmk
++@@ -30,12 +30,12 @@ include LibCommon.gmk
++ $(eval $(call SetupJdkLibrary, BUILD_LIBJ2PCSC, \
++     NAME := j2pcsc, \
++     CFLAGS := $(CFLAGS_JDKLIB), \
++-    CFLAGS_unix := -D__sun_jdk, \
++-    EXTRA_HEADER_DIRS := libj2pcsc/MUSCLE, \
+++    CFLAGS_unix := -D__sun_jdk -DUSE_SYSTEM_LIBPCSCLITE, \
+++    EXTRA_HEADER_DIRS := /usr/include/PCSC, \
++     OPTIMIZATION := LOW, \
++     LDFLAGS := $(LDFLAGS_JDKLIB) \
++         $(call SET_SHARED_LIBRARY_ORIGIN), \
++-    LIBS_unix := $(LIBDL), \
+++    LIBS_unix := -lpcsclite $(LIBDL), \
++     LIBS_windows := winscard.lib, \
++ ))
++ 
++--- a/make/autoconf/spec.gmk.in
+++++ b/make/autoconf/spec.gmk.in
++@@ -773,6 +773,7 @@ TAR_SUPPORTS_TRANSFORM:=@TAR_SUPPORTS_TR
++ # Build setup
++ USE_EXTERNAL_LIBJPEG:=@USE_EXTERNAL_LIBJPEG@
++ USE_EXTERNAL_LIBGIF:=@USE_EXTERNAL_LIBGIF@
+++USE_EXTERNAL_LIBPCSCLITE:=@USE_EXTERNAL_LIBPCSCLITE@
++ USE_EXTERNAL_LIBZ:=@USE_EXTERNAL_LIBZ@
++ LIBZ_CFLAGS:=@LIBZ_CFLAGS@
++ LIBZ_LIBS:=@LIBZ_LIBS@
++--- a/src/java.smartcardio/unix/native/libj2pcsc/pcsc_md.c
+++++ b/src/java.smartcardio/unix/native/libj2pcsc/pcsc_md.c
++@@ -36,6 +36,7 @@
++ 
++ #include "pcsc_md.h"
++ 
+++#ifndef USE_SYSTEM_LIBPCSCLITE
++ void *hModule;
++ FPTR_SCardEstablishContext scardEstablishContext;
++ FPTR_SCardConnect scardConnect;
++@@ -47,6 +48,7 @@ FPTR_SCardListReaders scardListReaders;
++ FPTR_SCardBeginTransaction scardBeginTransaction;
++ FPTR_SCardEndTransaction scardEndTransaction;
++ FPTR_SCardControl scardControl;
+++#endif
++ 
++ /*
++  * Throws a Java Exception by name
++@@ -75,7 +77,9 @@ void throwIOException(JNIEnv *env, const
++     throwByName(env, "java/io/IOException", msg);
++ }
++ 
+++#ifndef USE_SYSTEM_LIBPCSCLITE
++ void *findFunction(JNIEnv *env, void *hModule, char *functionName) {
+++    return NULL;
++     void *fAddress = dlsym(hModule, functionName);
++     if (fAddress == NULL) {
++         char errorMessage[256];
++@@ -85,9 +89,11 @@ void *findFunction(JNIEnv *env, void *hM
++     }
++     return fAddress;
++ }
+++#endif
++ 
++ JNIEXPORT void JNICALL Java_sun_security_smartcardio_PlatformPCSC_initialize
++         (JNIEnv *env, jclass thisClass, jstring jLibName) {
+++#ifndef USE_SYSTEM_LIBPCSCLITE
++     const char *libName = (*env)->GetStringUTFChars(env, jLibName, NULL);
++     if (libName == NULL) {
++         throwNullPointerException(env, "PCSC library name is null");
++@@ -141,4 +147,5 @@ JNIEXPORT void JNICALL Java_sun_security
++ #else
++     scardControl          = (FPTR_SCardControl)         findFunction(env, hModule, "SCardControl132");
++ #endif // __APPLE__
+++#endif
++ }
++--- a/src/java.smartcardio/unix/native/libj2pcsc/pcsc_md.h
+++++ b/src/java.smartcardio/unix/native/libj2pcsc/pcsc_md.h
++@@ -23,6 +23,8 @@
++  * questions.
++  */
++ 
+++#ifndef USE_SYSTEM_LIBPCSCLITE
+++
++ typedef LONG (*FPTR_SCardEstablishContext)(DWORD dwScope,
++                 LPCVOID pvReserved1,
++                 LPCVOID pvReserved2,
++@@ -111,3 +113,41 @@ extern FPTR_SCardListReaders scardListRe
++ extern FPTR_SCardBeginTransaction scardBeginTransaction;
++ extern FPTR_SCardEndTransaction scardEndTransaction;
++ extern FPTR_SCardControl scardControl;
+++
+++#else
+++
+++#define CALL_SCardEstablishContext(dwScope, pvReserved1, pvReserved2, phContext) \
+++    (SCardEstablishContext(dwScope, pvReserved1, pvReserved2, phContext))
+++
+++#define CALL_SCardConnect(hContext, szReader, dwSharedMode, dwPreferredProtocols, phCard, pdwActiveProtocols) \
+++    (SCardConnect(hContext, szReader, dwSharedMode, dwPreferredProtocols, phCard, pdwActiveProtocols))
+++
+++#define CALL_SCardDisconnect(hCard, dwDisposition) \
+++    (SCardDisconnect(hCard, dwDisposition))
+++
+++#define CALL_SCardStatus(hCard, mszReaderNames, pcchReaderLen, pdwState, pdwProtocol, pbAtr, pcbAtrLen) \
+++    (SCardStatus(hCard, mszReaderNames, pcchReaderLen, pdwState, pdwProtocol, pbAtr, pcbAtrLen))
+++
+++#define CALL_SCardGetStatusChange(hContext, dwTimeout, rgReaderStates, cReaders) \
+++    (SCardGetStatusChange(hContext, dwTimeout, rgReaderStates, cReaders))
+++
+++#define CALL_SCardTransmit(hCard, pioSendPci, pbSendBuffer, cbSendLength, \
+++                            pioRecvPci, pbRecvBuffer, pcbRecvLength) \
+++    (SCardTransmit(hCard, pioSendPci, pbSendBuffer, cbSendLength, \
+++                            pioRecvPci, pbRecvBuffer, pcbRecvLength))
+++
+++#define CALL_SCardListReaders(hContext, mszGroups, mszReaders, pcchReaders) \
+++    (SCardListReaders(hContext, mszGroups, mszReaders, pcchReaders))
+++
+++#define CALL_SCardBeginTransaction(hCard) \
+++    (SCardBeginTransaction(hCard))
+++
+++#define CALL_SCardEndTransaction(hCard, dwDisposition) \
+++    (SCardEndTransaction(hCard, dwDisposition))
+++
+++#define CALL_SCardControl(hCard, dwControlCode, pbSendBuffer, cbSendLength, \
+++            pbRecvBuffer, pcbRecvLength, lpBytesReturned) \
+++    (SCardControl(hCard, dwControlCode, pbSendBuffer, cbSendLength, \
+++            pbRecvBuffer, pcbRecvLength, lpBytesReturned))
+++
+++#endif
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..46d34db5f4c6ef7033a1d66c6668cdf093b50cde
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,11 @@@
++--- a/src/hotspot/os_cpu/linux_x86/os_linux_x86.cpp
+++++ b/src/hotspot/os_cpu/linux_x86/os_linux_x86.cpp
++@@ -635,7 +635,7 @@ void os::verify_stack_alignment() {
++  * updates (JDK-8023956).
++  */
++ void os::workaround_expand_exec_shield_cs_limit() {
++-#if defined(IA32)
+++#if defined(IA32) && !defined(ZERO)
++   assert(Linux::initial_thread_stack_bottom() != NULL, "sanity");
++   size_t page_size = os::vm_page_size();
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..bb006db60626a22f8c1392bdc09ac3187366f49b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,13 @@@
++--- a/make/autoconf/platform.m4
+++++ b/make/autoconf/platform.m4
++@@ -41,6 +41,10 @@ AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_CPU
++       VAR_CPU_ARCH=x86
++       VAR_CPU_BITS=64
++       VAR_CPU_ENDIAN=little
+++      case "$host" in *x32)
+++        VAR_CPU=x32
+++        VAR_CPU_BITS=32
+++      esac
++       ;;
++     i?86)
++       VAR_CPU=x86
diff --cc debian/rules
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8b71c7fa5244eec7e0753bf0b209ac16743b6dc4
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1921 @@@
++#!/usr/bin/make -f
++# -*- makefile -*-
++
++# Uncomment this to turn on verbose mode.
++#export DH_VERBOSE=1
++
++unexport LANG LC_ALL
++
++dh_version := $(shell dpkg-query -f '$${Version}\n' -W debhelper | sed -n 's/^\(.\).*/\1/p')
++
++# using brace expansion and substring replacements (${var:0:2}).
++SHELL = /bin/bash
++
++# use gnu time in verbose mode if available, otherwise default to the shell builtin
++ifneq (,$(wildcard /usr/bin/time))
++  TIME = /usr/bin/time -v
++else
++  TIME = time
++endif
++
++vafilt = $(subst $(2)=,,$(filter $(2)=%,$(1)))
++
++DPKG_VARS             := $(shell dpkg-architecture)
++DEB_HOST_GNU_TYPE     ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_TYPE)
++DEB_BUILD_GNU_TYPE    ?= $(call vafilt,$(DPKG_VARS),DEB_BUILD_GNU_TYPE)
++DEB_HOST_ARCH         ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_ARCH)
++DEB_BUILD_ARCH                ?= $(call vafilt,$(DPKG_VARS),DEB_BUILD_ARCH)
++DEB_HOST_ARCH_CPU     ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_ARCH_CPU)
++DEB_HOST_MULTIARCH    ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_MULTIARCH)
++
++PATH := $(CURDIR)/bin:$(PATH)
++export PATH
++
++CHANGELOG_VARS := $(shell dpkg-parsechangelog | sed -n 's/ /_/g;/^[^_]/s/^\([^:]*\):_\(.*\)/\1=\2/p')
++PKGSOURCE := $(call vafilt,$(CHANGELOG_VARS),Source)
++PKGVERSION := $(call vafilt,$(CHANGELOG_VARS),Version)
++PKGYEAR := $(shell echo $(call vafilt,$(CHANGELOG_VARS),Timestamp) | date --utc +%Y)
++
++distribution := $(shell lsb_release --id --short)
++distrel := $(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
++
++ifneq (,$(filter $(distrel),precise))
++  OBJCOPY := objcopy
++  STRIP := strip
++else
++  OBJCOPY := $(DEB_HOST_GNU_TYPE)-objcopy
++  STRIP := $(DEB_HOST_GNU_TYPE)-strip
++endif
++
++multiarch_dir = /$(DEB_HOST_MULTIARCH)
++
++hotspot_archs = amd64 i386 arm64 armhf ppc64 ppc64el s390x
++jtreg_archs   = $(hotspot_archs) alpha ia64 powerpc ppc64 sh4 x32
++jtreg_archs   += armel mipsel mips64el
++jtreg_archs   += riscv64
++
++# FIXME: use bootcycle builds for zero archs?
++bootcycle_build = $(if $(filter $(DEB_HOST_ARCH), $(hotspot_archs)),yes)
++#bootcycle_build = $(if $(filter $(DEB_HOST_ARCH), amd64 i386),yes)
++#bootcycle_build =
++zbootcycle_build =
++zbootcycle_build = yes
++ifneq ($(DEB_HOST_ARCH),$(DEB_BUILD_ARCH))
++  bootcycle_build =
++  zbootcycle_build =
++endif
++ifneq (,$(filter nobootcycle, $(DEB_BUILD_OPTIONS)))
++  bootcycle_build =
++  zbootcycle_build =
++endif
++
++ifneq (,$(filter $(distrel),lucid precise quantal raring saucy trusty utopic vivid wily lenny etch squeeze wheezy jessie))
++  is_default = no
++else
++  is_default = yes
++endif
++
++is_upstream_release = yes
++
++srcdir                = .
++builddir      = build
++zbuilddir     = build-zero
++
++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)),1711,1709)
++  vm_name     = Hotspot JIT
++else
++  priority    = $(if $(filter yes, $(is_default)),1704,1703)
++  vm_name     = Hotspot Zero
++endif
++jvmver                = 1.17.0
++shortver      = 17
++v_debian      := $(shell echo $(PKGVERSION) | sed 's/ea//')
++v_upstream    := $(shell echo $(v_debian) | sed 's/-[^-][^-]*$$//')
++v_pkgrel      := $(shell echo $(v_debian) | sed 's/^.*-//')
++# FIXME. currently v_upstream like 11~4
++v_upbase      := $(word 1, $(subst +, , $(v_upstream)))
++v_upbuild     := $(word 2, $(subst +, , $(v_upstream)))
++#v_upbase     := $(word 1, $(subst ~, , $(v_upstream)))
++#v_upbuild    := $(word 2, $(subst ~, , $(v_upstream)))
++# that should be the package version ...
++
++#$(warning XXXXX $(v_upstream) / $(v_pkgrel) / $(v_upbase) / $(v_upbuild))
++
++ifneq ($(v_debian),$(v_upbase)+$(v_upbuild)-$(v_pkgrel))
++  $(error wrong version: $(v_upbase)+$(v_upbuild)-$(v_pkgrel) should be: $(v_debian))
++endif
++#ifneq ($(v_debian),$(v_upbase)~$(v_upbuild)-$(v_pkgrel))
++#  $(error wrong version: $(v_upbase)~$(v_upbuild)-$(v_pkgrel) should be: $(v_debian))
++#endif
++
++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
++ifeq ($(bootcycle_build),yes)
++  sdkimg      = bootcycle-build/images/jdk
++  build_target        = bootcycle-images test-image
++else
++  sdkimg      = images/jdk
++  build_target        = images test-image
++endif
++ifeq ($(zbootcycle_build),yes)
++  zsdkimg     = bootcycle-build/images/jdk
++  zbuild_target       = bootcycle-images test-image
++else
++  zsdkimg     = images/jdk
++  zbuild_target       = images test-image
++endif
++
++# Support parallel=<n> 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))))
++endif
++
++jtreg_pkg = jtreg6
++
++with_check = $(if $(findstring nocheck, $(DEB_BUILD_OPTIONS)),,yes)
++ifneq (,$(filter $(DEB_HOST_ARCH), alpha armel mipsel mips64el riscv64))
++  with_check = disabled running check on $(DEB_HOST_ARCH)
++endif
++# no jtreg backport yet
++ifneq (,$(filter $(distrel), buster bullseye precise trusty xenial bionic focal groovy hirsute impish))
++  with_check = disabled for $(distrel), no $(jtreg_pkg)
++endif
++
++with_docs = $(if $(findstring nodoc, $(DEB_BUILD_OPTIONS)),,yes)
++ifneq (,$(filter $(distrel), precise trusty))
++  with_docs =
++endif
++#with_check = disabled for this upload
++
++with_wqy_zenhai = $(if $(filter $(distrel),lenny),,yes)
++
++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 ppc64=ppc64 ppc64el=ppc64le riscv64=riscv64 sparc=sparc sparc64=sparcv9 sh4=sh s390x=s390x ia64=ia64 x32=x32
++
++jvmarch               := $(strip $(patsubst $(DEB_HOST_ARCH_CPU)=%, %, \
++                      $(filter $(DEB_HOST_ARCH_CPU)=%, $(arch_map))))
++ifeq ($(DEB_HOST_ARCH),x32)
++  jvmarch := x32
++endif
++
++default_vm = $(if $(filter $(DEB_HOST_ARCH), $(hotspot_archs)),hotspot,zero)
++
++any_archs = alpha amd64 armel armhf arm64 i386 ia64 mips mipsel mips64 mips64el powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32
++
++altzero_archs = $(hotspot_archs)
++ifneq (,$(filter $(distrel),trusty))
++  altzero_archs := $(filter-out arm64, $(altzero_archs))
++endif
++# FIXME: https://launchpad.net/ubuntu/+source/openjdk-lts/11.0.5+6-1ubuntu1
++# ftbfs on armhf, also in OpenJDK 15, now fixed in 16?
++#altzero_archs := $(filter-out armhf, $(altzero_archs))
++
++ifneq (,$(filter noaltzero, $(DEB_BUILD_OPTIONS)))
++  altzero_archs =
++else ifneq (,$(filter $(DEB_HOST_ARCH), $(altzero_archs)))
++  alternate_vms += zero
++  zero_dir = zero
++endif
++
++# needed for the jexec build
++export DEBIAN_JDK_BASE_DIR := /$(basedir)
++
++BOOTJDK_HOME := $(strip $(subst /bin/javac,, $(firstword $(wildcard \
++                      /usr/lib/jvm/java-16-openjdk-$(DEB_BUILD_ARCH)/bin/javac \
++                      /usr/lib/jvm/java-17-openjdk-$(DEB_BUILD_ARCH)/bin/javac \
++              ))))
++
++ifeq ($(DEB_BUILD_ARCH),$(DEB_HOST_ARCH))
++  BUILDJDK_HOME = $(CURDIR)/$(builddir)/$(sdkimg)
++else
++  BUILDJDK_HOME = $(BOOTJDK_HOME)
++endif
++
++ifneq (,$(filter $(distrel),saucy))
++  export CC = gcc-4.8
++  export CXX = g++-4.8
++  bd_gcc = g++-4.8,
++else ifneq (,$(filter $(distrel),utopic vivid jessie))
++  export CC = gcc-4.9
++  export CXX = g++-4.9
++  bd_gcc = g++-4.9,
++else ifneq (,$(filter $(distrel),wily))
++  ifneq (,$(filter $(DEB_HOST_ARCH), $(hotspot_archs)))
++    export CC = $(DEB_HOST_GNU_TYPE)-gcc-5
++    export CXX = $(DEB_HOST_GNU_TYPE)-g++-5
++    # FIXME: altzero seems to build with GCC 5 on i386, amd64, ppc64el ...
++    ifneq (,$(filter $(DEB_HOST_ARCH), arm64))
++      ZERO_CC = $(DEB_HOST_GNU_TYPE)-gcc-4.9
++      ZERO_CXX = $(DEB_HOST_GNU_TYPE)-g++-4.9
++    endif
++  else
++    export CC = $(DEB_HOST_GNU_TYPE)-gcc-4.9
++    export CXX = $(DEB_HOST_GNU_TYPE)-g++-4.9
++  endif
++  bd_gcc = g++-5 [$(hotspot_archs)], g++-4.9 [$(strip $(foreach a,$(hotspot_archs), !$(a)))], g++-4.9 [arm64],
++else ifneq (,$(filter $(distrel),stretch))
++  # FIXME: still hotspot core dumps with GCC 6
++  export CC = $(DEB_HOST_GNU_TYPE)-gcc-6
++  export CXX = $(DEB_HOST_GNU_TYPE)-g++-6
++  bd_gcc = g++-6,
++else ifneq (,$(filter $(distrel),artful))
++  export CC = $(DEB_HOST_GNU_TYPE)-gcc-7
++  export CXX = $(DEB_HOST_GNU_TYPE)-g++-7
++  bd_gcc = g++-7,
++else ifneq (,$(filter $(distrel),buster precise trusty xenial bionic cosmic disco))
++  # FIXME: ftbfs on armhf with the default GCC
++  export CC = $(DEB_HOST_GNU_TYPE)-gcc-8
++  export CXX = $(DEB_HOST_GNU_TYPE)-g++-8
++  bd_gcc = g++-8,
++  ifneq (,$(filter $(distrel),buster bionic cosmic disco))
++    bd_gcc = g++-8 <!cross>,
++  endif
++else ifneq (,$(filter $(distrel),focal))
++  export CC = $(DEB_HOST_GNU_TYPE)-gcc-9
++  export CXX = $(DEB_HOST_GNU_TYPE)-g++-9
++  bd_gcc = g++-9 <!cross>,
++else ifneq (,$(filter $(distrel),bullseye groovy hirsute))
++  export CC = $(DEB_HOST_GNU_TYPE)-gcc-10
++  export CXX = $(DEB_HOST_GNU_TYPE)-g++-10
++  bd_gcc = g++-10 <!cross>,
++else
++  export CC = $(DEB_HOST_GNU_TYPE)-gcc-11
++  export CXX = $(DEB_HOST_GNU_TYPE)-g++-11
++  bd_gcc = g++-11 <!cross>,
++endif
++
++# GCC 11 only
++ifeq (,$(findstring 11, $(bd_gcc)))
++  DEB_BUILD_MAINT_OPTIONS = optimize=-lto
++endif
++
++# for Hotspot: hotspot/make/linux/makefiles/vm.make
++# Don't overwrite Hotspot opt level :
++# -O3 is already default option for hotspot
++
++# FIXME: ftbfs with -Werror=format-security
++dpkg_buildflags_hs = \
++      DEB_BUILD_MAINT_OPTIONS="$(DEB_BUILD_MAINT_OPTIONS)" \
++      DEB_CFLAGS_MAINT_STRIP="-O2 -Werror=format-security" \
++      DEB_CXXFLAGS_MAINT_STRIP="-O2 -Werror=format-security" \
++      DEB_CFLAGS_MAINT_APPEND="-fno-stack-protector -Wno-deprecated-declarations" \
++      DEB_CXXFLAGS_MAINT_APPEND="-fno-stack-protector -Wno-deprecated-declarations$(if $(filter $(DEB_HOST_ARCH), armel armhf), -fpermissive)"
++# jdk/make/CompileDemos.gmk (SetupJVMTIDemo) doesn't like commas in flags
++dpkg_buildflags_hs += \
++      DEB_LDFLAGS_MAINT_STRIP="-Wl,-z,relro -Wl,-Bsymbolic-functions" \
++      DEB_LDFLAGS_MAINT_APPEND="-Xlinker -z -Xlinker relro -Xlinker -Bsymbolic-functions"
++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; $(dpkg_buildflags_hs) --get CPPFLAGS)
++export EXTRA_CXXFLAGS_HS := $(shell $(dpkg_buildflags_hs) --get CXXFLAGS) -Wno-deprecated-declarations
++export EXTRA_LDFLAGS_HS  := $(shell $(dpkg_buildflags_hs) --get LDFLAGS)
++
++dpkg_buildflags_zero = \
++      DEB_BUILD_MAINT_OPTIONS="$(DEB_BUILD_MAINT_OPTIONS)" \
++      DEB_CFLAGS_MAINT_STRIP="-O2 -Werror=format-security -fstack-protector -fstack-protector-strong" \
++      DEB_CXXFLAGS_MAINT_STRIP="-O2 -Werror=format-security -fstack-protector -fstack-protector-strong" \
++      DEB_CFLAGS_MAINT_APPEND="-fno-stack-protector -Wno-deprecated-declarations" \
++      DEB_CXXFLAGS_MAINT_APPEND="-fno-stack-protector -Wno-deprecated-declarations"
++# jdk/make/CompileDemos.gmk (SetupJVMTIDemo) doesn't like commas in flags
++dpkg_buildflags_zero += \
++      DEB_LDFLAGS_MAINT_STRIP="-Wl,-z,relro -Wl,-Bsymbolic-functions" \
++      DEB_LDFLAGS_MAINT_APPEND="-Xlinker -z -Xlinker relro -Xlinker -Bsymbolic-functions"
++dpkg_buildflags_zero += dpkg-buildflags
++export EXTRA_CPPFLAGS_ZERO := $(shell $(dpkg_buildflags_zero) --get CPPFLAGS)
++export EXTRA_CFLAGS_ZERO   := $(shell $(dpkg_buildflags_zero) --get CFLAGS; $(dpkg_buildflags_zero) --get CPPFLAGS)
++export EXTRA_CXXFLAGS_ZERO := $(shell $(dpkg_buildflags_zero) --get CXXFLAGS)
++export EXTRA_LDFLAGS_ZERO  := $(shell $(dpkg_buildflags_zero) --get LDFLAGS)
++
++ifeq ($(DEB_HOST_ARCH),alpha)
++  export EXTRA_LDFLAGS_ZERO += -Wl,--no-relax
++endif
++
++# 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_BUILD_MAINT_OPTIONS="$(DEB_BUILD_MAINT_OPTIONS)" \
++      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)
++
++ifneq (,$(filter $(distrel),squeeze lucid))
++  with_bridge = bridge
++  with_jni_bridge = yes
++else
++  with_bridge = atk
++endif
++
++with_nss = yes
++
++on_buildd := $(shell [ -f /CurrentlyBuilding -o "$$LOGNAME" = buildd ] && echo yes)
++
++CONFIGURE_ARGS =
++
++# 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))
++  CONFIGURE_ARGS += --with-alt-jar=/usr/bin/fastjar
++endif
++
++ifeq (,$(filter $(DEB_HOST_ARCH), $(hotspot_archs)))
++  CONFIGURE_ARGS += --enable-zero
++endif
++
++ifeq (,$(filter $(DEB_BUILD_OPTIONS), terse))
++  #EXTRA_BUILD_ENV += MAKE_VERBOSE=y QUIETLY= LOG=debug
++  EXTRA_BUILD_ENV += MAKE_VERBOSE=y QUIETLY= LOG=info,cmdlines
++endif
++
++# timestamp skew on kFreeBSD
++EXTRA_BUILD_ENV += IGNORE_OLD_CONFIG=true
++
++EXTRA_BUILD_ENV += LIBFFI_LIBS=-lffi_pic
++
++EXTRA_BUILD_ENV += JOBS=$(NJOBS)
++
++ifeq ($(derivative),Ubuntu)
++  ifeq ($(DEB_HOST_ARCH),s390x)
++    ifneq (,$(filter $(distrel), trusty xenial bionic eoan focal))
++      export VENDOR_FLAGS_CPU = -march=zEC12
++    else
++      export VENDOR_FLAGS_CPU = -march=z13 -mtune=z15
++    endif
++  endif
++endif
++
++CONFIGURE_ARGS += --enable-system-kerberos
++
++ifeq ($(with_nss),yes)
++  CONFIGURE_ARGS += --enable-nss
++else ifeq ($(with_nss),no)
++  CONFIGURE_ARGS += --disable-nss
++endif
++
++ifeq ($(with_systemtap),yes)
++  CONFIGURE_ARGS += --enable-systemtap --with-abs-install-dir=/$(basedir)
++endif
++
++COMMON_CONFIGURE_ARGS =
++DEFAULT_CONFIGURE_ARGS =
++ZERO_CONFIGURE_ARGS =
++
++COMMON_CONFIGURE_ARGS += --with-jni-libpath=/usr/lib/$(DEB_HOST_MULTIARCH)/jni:/lib/$(DEB_HOST_MULTIARCH):/usr/lib/$(DEB_HOST_MULTIARCH):/usr/lib/jni:/lib:/usr/lib
++
++# FIXME: --with-jvm-variants=server,zero not supported upstream
++ifneq (,$(filter $(DEB_HOST_ARCH),$(hotspot_archs)))
++  ifneq (,$(filter $(DEB_HOST_ARCH),i386))
++    DEFAULT_CONFIGURE_ARGS += --with-jvm-variants=client,server
++  else ifneq (,$(filter $(DEB_HOST_ARCH),armhf))
++    DEFAULT_CONFIGURE_ARGS += --with-jvm-variants=client,server
++  else
++    DEFAULT_CONFIGURE_ARGS += --with-jvm-variants=server
++  endif
++else
++  DEFAULT_CONFIGURE_ARGS += --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE)
++  DEFAULT_CONFIGURE_ARGS += --with-jvm-variants=zero
++endif
++ZERO_CONFIGURE_ARGS += --with-jvm-variants=zero
++
++DEFAULT_CONFIGURE_ARGS += --with-boot-jdk=$(BOOTJDK_HOME)
++ZERO_CONFIGURE_ARGS += --with-boot-jdk=$(BUILDJDK_HOME)
++
++COMMON_CONFIGURE_ARGS += --disable-ccache
++
++# FIXME: zero not ready for --disable-precompiled-headers
++#COMMON_CONFIGURE_ARGS += --disable-precompiled-headers
++ifneq (,$(filter $(DEB_HOST_ARCH),$(hotspot_archs)))
++  DEFAULT_CONFIGURE_ARGS += --disable-precompiled-headers
++endif
++
++ifneq (,$(filter $(DEB_HOST_ARCH), powerpc))
++  DEFAULT_CONFIGURE_ARGS += --with-boot-jdk-jvmargs="-XX:ThreadStackSize=2240"
++endif
++
++ifneq (,$(filter $(DEB_HOST_ARCH), ppc64 ppc64el))
++  ZERO_CONFIGURE_ARGS += --with-boot-jdk-jvmargs="-XX:ThreadStackSize=2240"
++endif
++
++ifeq ($(with_check),yes)
++  COMMON_CONFIGURE_ARGS += --with-jtreg=/usr/share/jtreg
++else
++  COMMON_CONFIGURE_ARGS += --disable-jtreg-failure-handler
++endif
++
++COMMON_CONFIGURE_ARGS += --disable-warnings-as-errors
++
++ifneq (,$(filter $(DEB_HOST_ARCH),$(hotspot_archs)))
++  ifneq (,$(filter $(DEB_HOST_ARCH), amd64))
++    jvm_features = zgc
++  endif
++  # not needed explicitly?
++  #jvm_features += shenandoahgc
++  DEFAULT_CONFIGURE_ARGS += --with-jvm-features=$(subst $(SPACE),$(COMMA),$(strip $(jvm_features)))
++endif
++
++vendor := $(shell dpkg-vendor --query Vendor)
++ifeq ($(vendor),Debian)
++  vendor_url  = https://tracker.debian.org/pkg/$(basename)
++  vendor_bugs = https://bugs.debian.org/src:$(basename)
++else ifeq ($(vendor),Ubuntu)
++  vendor_url  = https://launchpad.net/ubuntu/+source/$(basename)
++  vendor_bugs = https://bugs.launchpad.net/ubuntu/+source/$(basename)
++else
++  vendor_url  = $(shell dpkg-vendor --query Vendor-URL)
++  vendor_bugs = $(shell dpkg-vendor --query Bugs)
++endif
++
++ifneq (,$(vendor))
++  COMMON_CONFIGURE_ARGS += \
++      --with-vendor-name='$(vendor)' \
++      --with-vendor-url='$(vendor_url)' \
++      --with-vendor-bug-url='$(vendor_bugs)' \
++      --with-vendor-vm-bug-url='$(vendor_bugs)'
++endif
++
++# not sure if this is a good idea, might change parsing of java -version
++#COMMON_CONFIGURE_ARGS += \
++#     --with-vendor-version-string='$(PKGVERSION)'
++
++ifeq ($(distribution),Debian)
++  COMMON_CONFIGURE_ARGS += \
++      --with-vendor-name='$(distribution)' \
++      --with-vendor-url='https://tracker.debian.org/$(basename)' \
++      --with-vendor-bug-url='https://bugs.debian.org/$(basename)' \
++      --with-vendor-vm-bug-url='https://bugs.debian.org/$(basename)'
++else ifeq ($(distribution),Ubuntu)
++  ppa_build := $(shell if echo 'v_pkgrel' | egrep '^[0-9]+(ubuntu[0-9]+)?(~[0-9.]+)?$$'; then echo no; else echo yes; fi)
++  ifeq ($(ppa_build),yes)
++    COMMON_CONFIGURE_ARGS += \
++      --with-vendor-name='Private Build' \
++      --with-vendor-url='Unknown' \
++      --with-vendor-bug-url='Unknown' \
++      --with-vendor-vm-bug-url='Unknown'
++  else
++    COMMON_CONFIGURE_ARGS += \
++      --with-vendor-name='$(distribution)' \
++      --with-vendor-url='https://ubuntu.com/' \
++      --with-vendor-bug-url='https://bugs.launchpad.net/ubuntu/+source/$(basename)' \
++      --with-vendor-vm-bug-url='https://bugs.launchpad.net/ubuntu/+source/$(basename)'
++  endif
++else
++  COMMON_CONFIGURE_ARGS += \
++      --with-vendor-name='$(distribution)' \
++      --with-vendor-url='Unknown' \
++      --with-vendor-bug-url='Unknown' \
++      --with-vendor-vm-bug-url='Unknown'
++endif
++
++COMMON_CONFIGURE_ARGS += \
++      --with-version-pre='$(if $(filter yes, $(is_upstream_release)),,ea)' \
++      --with-version-build='$(v_upbuild)' \
++      --with-version-opt='$(distribution)-$(v_pkgrel)' \
++      --with-copyright-year=$(PKGYEAR) \
++
++COMMON_CONFIGURE_ARGS += \
++      --with-debug-level=release \
++      --with-native-debug-symbols=internal \
++      --enable-unlimited-crypto \
++      --with-zlib=system \
++      --with-giflib=system \
++      --with-libpng=system \
++      --with-libjpeg=system \
++      --with-lcms=system \
++      --with-pcsclite=system \
++      --disable-warnings-as-errors \
++      --disable-javac-server \
++
++ifeq (,$(filter $(distrel),jessie stretch precise trusty xenial))
++  COMMON_CONFIGURE_ARGS += \
++      --with-harfbuzz=system
++  with_system_hb = yes
++endif
++
++ifneq (,$(filter $(distrel),precise trusty xenial))
++  # building with a GCC from a PPA ...
++  COMMON_CONFIGURE_ARGS += \
++      --with-stdc++lib=static
++else
++  COMMON_CONFIGURE_ARGS += \
++      --with-stdc++lib=dynamic
++endif
++
++ifneq (,$(NJOBS))
++  COMMON_CONFIGURE_ARGS += --with-num-cores=$(NJOBS)
++endif
++
++# FIXME: upstream says the extra flags are not designed for general purpose ...
++# http://mail.openjdk.java.net/pipermail/jdk8u-dev/2014-July/001389.html
++
++# FIXME: demos fail to build with these ...
++# FIXME: zero ftbfs without -fpermissive
++#src/cpu/zero/vm/cppInterpreter_zero.cpp:732:30: error: invalid conversion from 'intptr_t {aka long int}' to 'const void*' [-fpermissive]
++#       object = (oop) locals[0];
++#                              ^
++
++#COMMON_CONFIGURE_ARGS += \
++      --with-extra-cflags='$(EXTRA_CPPFLAGS_HS) $(EXTRA_CFLAGS_HS)' \
++      --with-extra-cxxflags='$(EXTRA_CPPFLAGS_HS) $(EXTRA_CXXFLAGS_HS)' \
++      --with-extra-ldflags='$(EXTRA_LDFLAGS_HS)'
++
++ifneq (,$(filter $(DEB_HOST_ARCH), $(hotspot_archs)))
++  DEFAULT_CONFIGURE_ARGS += \
++      --with-extra-cflags='$(EXTRA_CPPFLAGS_HS) $(EXTRA_CFLAGS_HS)' \
++      --with-extra-cxxflags='$(EXTRA_CPPFLAGS_HS) $(EXTRA_CXXFLAGS_HS)' \
++      --with-extra-ldflags='$(EXTRA_LDFLAGS_HS)'
++else
++  DEFAULT_CONFIGURE_ARGS += \
++      --with-extra-cflags='$(EXTRA_CPPFLAGS_ZERO) $(EXTRA_CFLAGS_ZERO)' \
++      --with-extra-cxxflags='$(EXTRA_CPPFLAGS_ZERO) $(EXTRA_CXXFLAGS_ZERO)' \
++      --with-extra-ldflags='$(EXTRA_LDFLAGS_ZERO)'
++endif
++
++ZERO_CONFIGURE_ARGS += \
++      --with-extra-cflags='$(EXTRA_CPPFLAGS_ZERO) $(EXTRA_CFLAGS_ZERO)' \
++      --with-extra-cxxflags='$(EXTRA_CPPFLAGS_ZERO) $(EXTRA_CXXFLAGS_ZERO)' \
++      --with-extra-ldflags='$(EXTRA_LDFLAGS_ZERO)'
++
++ifneq ($(DEB_HOST_ARCH),$(DEB_BUILD_ARCH))
++  COMMON_CONFIGURE_ARGS += \
++      --build=$(DEB_BUILD_GNU_TYPE) \
++      --host=$(DEB_HOST_GNU_TYPE) \
++      --target=$(DEB_HOST_GNU_TYPE) \
++      BUILD_CC=$(subst $(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE),$(CC)) \
++      BUILD_LD=$(subst $(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE),$(CC)) \
++      BUILD_CXX=$(subst $(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE),$(CXX)) \
++
++endif
++
++# (most) jre and jdk tools handled by the alternatives system.
++# dups in heimdal-clients, krb5-user: kinit, klist, ktab, no alternatives
++# have jrunscript in the jdk packages
++
++all_tools     =  jar jarsigner java javac javadoc javap jcmd \
++      jconsole jdb jdeprscan jdeps jfr jimage jinfo jlink jmap \
++      jmod jpackage jps jrunscript jshell jstack jstat jstatd keytool \
++      rmiregistry serialver
++
++jdk_hl_tools  = jar jarsigner javac javadoc javap jcmd jdb \
++      jdeprscan jdeps jfr jimage jinfo jlink jmap jmod jps \
++      jrunscript jshell jstack jstat jstatd serialver
++ifeq (,$(filter $(DEB_HOST_ARCH), alpha armel ia64 m68k mips mipsel mips64el powerpc riscv64 s390x sh4 sparc64 x32))
++  all_tools   += jhsdb
++  jdk_hl_tools        += jhsdb
++endif
++jdk_tools     = jconsole
++
++all_jre_tools = $(filter-out $(jdk_hl_tools) $(jdk_tools), $(all_tools))
++# no tools in $(p_jre)
++jre_tools     =
++jre_hl_tools  := $(filter-out $(jre_tools), $(all_jre_tools))
++
++# build dependencies
++ifneq (,$(filter $(distrel),precise))
++  bd_autotools = autoconf2.69, automake, autotools-dev,
++else
++  bd_autotools = autoconf, automake, autotools-dev,
++endif
++
++ifneq (,$(filter $(distrel),precise))
++    bd_bootstrap = openjdk-16-jdk-headless | openjdk-17-jdk-headless,
++else ifneq (,$(filter $(distrel),squeeze wheezy jessie trusty xenial))
++    bd_bootstrap = openjdk-16-jdk-headless:native | openjdk-17-jdk-headless:native,
++else
++    bd_bootstrap = openjdk-16-jdk-headless:native | openjdk-17-jdk-headless:native,
++    bd_bootstrap = openjdk-17-jdk-headless:native | openjdk-16-jdk-headless:native,
++endif
++
++ifeq (,$(filter $(distrel),squeeze wheezy jessie precise trusty xenial))
++  bd_cross += \
++      $(basename)-jdk-headless <cross>,
++else
++  bd_cross += \
++      file,
++endif
++
++ifneq (,$(filter $(distrel),squeeze wheezy jessie precise trusty))
++  old_debhelper = veryold
++  bd_debhelper = debhelper (>= 9),
++else ifneq (,$(filter $(distrel), stretch xenial))
++  old_debhelper = old
++  bd_debhelper = debhelper (>= 9.20141010), dpkg-dev (>= 1.17.14),
++else
++  bd_debhelper = debhelper (>= 11),
++endif
++
++ifneq (,$(filter $(distrel),precise))
++  bd_syslibs = zlib1g-dev, libattr1-dev,
++else
++  bd_syslibs = zlib1g-dev:native, zlib1g-dev, libattr1-dev,
++endif
++ifneq (,$(filter $(distrel),squeeze lucid))
++  bd_syslibs += libpng12-dev, libjpeg62-dev,
++else ifneq (,$(filter $(distrel),wheezy precise quantal raring saucy))
++  bd_syslibs += libpng-dev, libjpeg8-dev,
++else
++  bd_syslibs += libpng-dev, libjpeg-dev,
++endif
++bd_syslibs += \
++      libgif-dev,
++bd_openjdk = \
++      libxtst-dev, libxi-dev, libxt-dev, libxaw7-dev, libxrender-dev, libcups2-dev, \
++      libasound2-dev, liblcms2-dev, libfreetype6-dev (>= 2.2.1), \
++      libxinerama-dev, libkrb5-dev, xsltproc, libpcsclite-dev, libxrandr-dev, \
++      libelf-dev, libfontconfig1-dev, libgtk2.0-0 | libgtk-3-0,
++ifeq ($(with_system_hb),yes)
++  bd_openjdk += libharfbuzz-dev,
++endif
++
++pkg_ffidev = libffi-dev
++
++bd_zero = \
++      $(pkg_ffidev) [$(foreach a,$(hotspot_archs),!$(a))],
++bd_zero = \
++      $(pkg_ffidev),
++
++bd_ant = ant, ant-optional,
++
++bd_fastjar = fastjar (>= 2:0.96-0ubuntu2),
++ifeq ($(with_nss),yes)
++  ifneq (,$(filter $(distrel),squeeze lucid precise quantal))
++    bd_nss = libnss3-dev (>= 3.12.3),
++  else ifneq (,$(filter $(distrel),wheezy raring saucy trusty))
++    bd_nss = libnss3-dev (>= 2:3.12.3),
++  else
++    bd_nss = libnss3-dev (>= 2:3.17.1),
++  endif
++endif
++ifeq ($(with_systemtap),yes)
++  bd_systemtap = systemtap-sdt-dev [!sh4],
++endif
++
++ifeq (,$(filter $(distrel),jessie stretch buster precise trusty xenial bionic focal groovy))
++  with_debugedit = yes
++  bd_debugedit = debugedit (>= 4.16),
++  build_id_seed = $(PKGSOURCE)-$(PKGVERSION)
++endif
++
++ifeq (,$(filter $(distrel),jessie stretch buster precise trusty xenial bionic))
++  bd_strip_ndt = strip-nondeterminism,
++endif
++
++ifeq (,$(filter $(distrel),precise))
++  nocheck_profile = $(EMPTY) <!nocheck>
++endif
++
++# look at all TEST.ROOT for the required jtreg version, sorted by newest
++min_jtreg_version := $(shell find test/ -name TEST.ROOT -exec grep -hr "^requiredVersion=" {} \; | sed -e 's:^requiredVersion=::' -e 's:$$:-0~:' | sort -uVr | head -n1 | tr ' ' '-')
++
++ifeq ($(with_check),yes)
++  bd_check = \
++    $(jtreg_pkg) (>= $(min_jtreg_version))$(nocheck_profile), testng$(nocheck_profile), \
++    xvfb$(nocheck_profile), xauth$(nocheck_profile), \
++    xfonts-base$(nocheck_profile), libgl1-mesa-dri [!x32]$(nocheck_profile), \
++    xfwm4$(nocheck_profile), x11-xkb-utils$(nocheck_profile), \
++    dbus-x11$(nocheck_profile),
++else
++  bd_check = file,
++endif
++
++dlopen_hl_depends = \
++      libcups2, liblcms2-2,
++ifeq ($(derivative),Ubuntu)
++  ifneq (,$(filter $(distrel),lucid))
++    dlopen_hl_depends += libjpeg62,
++  else
++    dlopen_hl_depends += libjpeg8,
++  endif
++else
++  ifneq (,$(filter $(distrel),squeeze))
++    dlopen_hl_depends += libjpeg62,
++  else
++    dlopen_hl_depends += libjpeg62-turbo,
++  endif
++endif
++dlopen_hl_depends += libfontconfig1,
++ifneq ($(with_nss),no)
++  ifneq (,$(filter $(distrel),squeeze lucid precise))
++    dlopen_hl_depends += , libnss3-1d (>= 3.12.3)
++  else ifneq (,$(filter $(distrel),wheezy quantal raring saucy trusty))
++    dlopen_hl_depends += , libnss3 (>= 2:3.12.3)
++  else
++    dlopen_hl_depends += , libnss3 (>= 2:3.17.1)
++  endif
++endif
++dlopen_hl_recommends =
++dlopen_jre_depends = \
++      libglib2.0-0 (>= 2.24), libgtk2.0-0 | libgtk-3-0, libxrandr2, libxinerama1,
++ifneq (,$(filter $(distrel),squeeze wheezy jessie stretch lucid precise xenial))
++  dlopen_jre_depends += libgl1-mesa-glx | libgl1,
++else
++  dlopen_jre_depends += libgl1,
++endif
++ifeq ($(with_system_hb),yes)
++  dlopen_jre_depends += libharfbuzz0b,
++endif
++dlopen_jre_recommends =
++
++# .desktop files need to be multiarch installable
++java_launcher = /$(basedir)/bin/java
++java_launcher = /usr/bin/java
++ifeq ($(derivative),Ubuntu)
++  java_launcher = cautious-launcher %f /$(basedir)/bin/java
++  java_launcher = cautious-launcher %f /usr/bin/java
++endif
++
++ifneq (,$(filter $(distrel),squeeze wheezy lucid precise quantal raring))
++  core_fonts = ttf-dejavu-extra
++else
++  core_fonts = fonts-dejavu-extra
++endif
++ifneq (,$(filter $(distrel),squeeze lucid))
++  cjk_fonts = ttf-baekmuk | ttf-unfonts | ttf-unfonts-core,
++  cjk_fonts += ttf-sazanami-gothic | ttf-kochi-gothic,
++  cjk_fonts += ttf-sazanami-mincho | ttf-kochi-mincho,
++else
++  cfk_fonts = fonts-nanum,
++  cjk_fonts += fonts-ipafont-gothic, fonts-ipafont-mincho,
++endif
++cjk_fonts += $(if $(with_wqy_zenhai),fonts-wqy-microhei | fonts-wqy-zenhei,fonts-arphic-uming),
++ifneq (,$(filter $(distrel),squeeze wheezy))
++  cjk_fonts += ttf-indic-fonts,
++else ifneq (,$(filter $(distrel), lucid maverick natty oneiric precise quantal raring saucy trusty))
++  cjk_fonts += ttf-indic-fonts-core, ttf-telugu-fonts, ttf-oriya-fonts,
++  cjk_fonts += ttf-kannada-fonts, ttf-bengali-fonts,
++else
++  cjk_fonts += fonts-indic,
++endif
++
++jrehl_breaks = clojure1.8 (<= 1.8.0-7ubuntu1~),
++ifneq (,$(filter $(distrel),buster sid bionic cosmic disco eoan))
++  jrehl_breaks += \
++      jetty9 (<< 9.4.15-1~), netbeans (<< 10.0-3~), visualvm (<< 1.4.2-2~), \
++      eclipse-platform (<< 3.8.1-11), eclipse-rcp (<< 3.8.1-11), \
++      libequinox-osgi-java (<< 3.9.1),
++endif
++ifneq (,$(filter $(distrel),bionic cosmic disco eoan))
++  jrehl_breaks += \
++      tomcat8 (<< 8.5.39-1ubuntu1~),
++endif
++ifneq (,$(filter $(distrel),buster sid))
++  jrehl_breaks += \
++      libreoffice-core (<< 1:6.1.5-2~),
++else ifneq (,$(filter $(distrel),disco))
++  jrehl_breaks += \
++      libreoffice-core (<< 1:6.2.2-0ubuntu2),
++endif
++
++p_jre = $(basename)-jre
++p_jrehl       = $(basename)-jre-headless
++p_jrez        = $(basename)-jre-zero
++p_jdkhl       = $(basename)-jdk-headless
++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_jrez        = debian/$(p_jrez)
++d_jdkhl       = debian/$(p_jdkhl)
++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)
++
++control_vars = \
++      '-Vvm:Name=$(vm_name)' \
++      '-Vdlopenhl:Depends=$(dlopen_hl_depends)' \
++      '-Vdlopenhl:Recommends=$(dlopen_hl_recommends)' \
++      '-Vdlopenjre:Depends=$(dlopen_jre_depends)' \
++      '-Vdlopenjre:Recommends=$(dlopen_jre_recommends)' \
++
++ifeq ($(with_bridge),atk)
++  control_vars += '-Vbridge:Recommends=libatk-wrapper-java-jni (>= 0.30.4-0ubuntu2)'
++else ifeq ($(with_bridge),yes)
++  ifneq (,$(DEB_HOST_MULTIARCH))
++    control_vars += '-Vbridge:Recommends=libaccess-bridge-java-jni (>= 1.26.2-6)'
++  else ifeq ($(with_jni_bridge),yes)
++    control_vars += '-Vbridge:Recommends=libaccess-bridge-java-jni'
++  else
++    control_vars += '-Vbridge:Recommends=libaccess-bridge-java'
++  endif
++endif
++
++ifeq (,$(filter $(DEB_HOST_ARCH), $(hotspot_archs)))
++  control_vars += '-Vdefaultvm:Provides=$(p_jre)-zero'
++endif
++
++pkg_certs = ca-certificates-java
++ifneq (,$(filter $(distrel), squeeze wheezy jessie stretch precise trusty xenial bionic cosmic disco))
++  control_vars += '-Vcacert:Depends=$(pkg_certs)'
++else
++  control_vars += '-Vcacert:Depends=$(pkg_certs) (>= 20190405~)'
++endif
++
++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)'
++
++control_vars += '-Vjrehl:Breaks=$(jrehl_breaks)'
++
++ifneq ($(with_debugedit),yes)
++  control_vars += '-Vdbg:Conflicts=openjdk-11-dbg, openjdk-12-dbg, openjdk-13-dbg, openjdk-14-dbg, openjdk-15-dbg, openjdk-16-dbg'
++endif
++
++debian/control: debian/control.in debian/tests/control debian/rules
++      @cp -p debian/control debian/control.old
++      sed \
++            -e 's/@basename@/$(basename)/g' \
++            -e 's/@bd_autotools@/$(bd_autotools)/g' \
++            -e 's/@bd_bootstrap@/$(strip $(bd_bootstrap))/g' \
++            -e 's/@bd_cross@/$(strip $(bd_cross))/g' \
++            -e 's/@bd_debhelper@/$(strip $(bd_debhelper))/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_fastjar@/$(bd_fastjar)/g' \
++            -e 's/@bd_nss@/$(bd_nss)/g' \
++            -e 's/@bd_systemtap@/$(bd_systemtap)/g' \
++            -e 's/@bd_ant@/$(bd_ant)/g' \
++            -e 's/@bd_debugedit@/$(bd_debugedit)/g' \
++            -e 's/@bd_strip_ndt@/$(bd_strip_ndt)/g' \
++            -e 's/@bd_check@/$(bd_check)/g' \
++            -e 's/@core_fonts@/$(core_fonts)/g' \
++            -e 's/@cjk_fonts@/$(cjk_fonts)/g' \
++            -e 's/@any_archs@/$(any_archs)/g' \
++            -e 's/@hotspot_archs@/$(hotspot_archs)/g' \
++            -e 's/@altzero_archs@/$(altzero_archs)/g' \
++          debian/control.in \
++          $(if $(altzero_archs), debian/control.zero-jre) \
++          $(if $(DEB_HOST_MULTIARCH),,| grep -v '^Multi-Arch') \
++              > 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
++
++debian/tests/control: debian/tests/control.in debian/rules
++      sed \
++              -e 's/@min_jtreg_version@/$(min_jtreg_version)/g' \
++              $< > $@;
++
++debian/tests/%.sh: debian/tests/%.in debian/rules
++      sed \
++              -e 's,@JDK_DIR@,/$(basedir),g' \
++              -e 's,@jtreg_pkg@,$(jtreg_pkg),g' \
++              -e 's/@jtreg_archs@/$(jtreg_archs)/g' \
++              -e 's:@doc_dir@:/usr/share/doc/$(p_jrehl)/:g' \
++              $< > $@;
++      chmod +x $@
++
++gen-autopkgtests: debian/tests/jtdiff-autopkgtest.sh debian/tests/jtreg-autopkgtest.sh
++
++packaging-files:
++      for f in debian/*.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/@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)/g' \
++            -e 's/@jre_tools@/$(jre_tools)/g' \
++            -e 's/@jdk_hl_tools@/$(jdk_hl_tools)/g' \
++            -e 's/@jdk_tools@/$(jdk_tools)/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/@cjk_fonts@/$(cjk_fonts)/g' \
++          $$f > $$f2; \
++      done
++
++configure: stamps/configure
++stamps/configure: stamps/unpack
++      @echo '========== $@ =========='
++      @echo "Build options: $(DEB_BUILD_OPTIONS), Processors: $$(nproc)"
++      @echo '========== $@ =========='
++      -cat /proc/meminfo |egrep '^(Mem|Swap)'
++      @echo '========== $@ =========='
++      -cat /etc/hosts
++      @echo '========== $@ =========='
++      -cat /etc/fstab
++      @echo '========== $@ =========='
++      -cat /etc/mtab
++      @echo '========== $@ =========='
++      -cat /proc/mounts
++      @echo '========== $@ =========='
++
++      mkdir -p bin
++ifeq (0,1)
++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
++endif
++ifneq (,$(filter $(distrel),precise))
++      for i in autoreconf autoheader autoupdate autoscan autom4te ifnames autoconf; do \
++        ln -sf /usr/bin/$${i}2.69 bin/$${i}; \
++      done
++endif
++      which autoconf
++      /bin/uname -a
++      lsb_release -a
++
++      -cat /proc/sys/kernel/random/entropy_avail
++
++      mkdir -p stamps
++      rm -rf $(builddir)
++      mkdir -p $(builddir)
++#     bash make/autoconf/autogen.sh
++      cd $(builddir) && $(EXTRA_BUILD_ENV) bash ../configure \
++              $(DEFAULT_CONFIGURE_ARGS) \
++              $(COMMON_CONFIGURE_ARGS)
++
++      touch $@
++
++stamps/zero-configure: stamps/build stamps/unpack
++      @echo '========== $@ =========='
++      mkdir -p stamps
++      rm -rf  $(zbuilddir)
++      mkdir -p $(zbuilddir)
++      $(if $(ZERO_CC), export CC=$(ZERO_CC); export CXX=$(ZERO_CXX);) \
++      cd $(zbuilddir) && $(EXTRA_BUILD_ENV) bash ../configure \
++              $(ZERO_CONFIGURE_ARGS) \
++              $(COMMON_CONFIGURE_ARGS)
++
++      touch $@
++
++stamps/unpack:
++      : # apply some architecture specific patches ...
++#ifeq ($(DEB_HOST_ARCH),alpha)
++#     patch -p1 < debian/patches/alpha-float-const.diff
++#endif
++
++      $(MAKE) -f debian/rules packaging-files
++
++      mkdir -p stamps
++      touch $@
++
++ifeq ($(with_check),yes)
++    ifneq (,$(filter $(DEB_HOST_ARCH), $(jtreg_archs)))
++      with_jtreg_check = $(default_vm)
++    endif
++
++    ifneq (,$(filter zero, $(alternate_vms)))
++      ifneq (,$(filter $(DEB_HOST_ARCH), arm64 amd64 i386))
++      # only activate after testing; hangs several tests.
++      with_jtreg_check += zero
++      endif
++    endif
++endif
++
++build_stamps = \
++      stamps/build \
++      $(if $(filter $(DEB_HOST_ARCH),$(altzero_archs)),stamps/zero-build)
++
++build_stamps +=  stamps/jtreg-check-default
++
++pre-build:
++ifeq ($(with_check),yes)
++      jtreg_version="$$(dpkg-query -f '$${Version}\n' -W $(jtreg_pkg))"; \
++      if ! dpkg --compare-versions $(min_jtreg_version) le $$jtreg_version; then \
++        echo "Error: testsuite requires jtreg $(min_jtreg_version) but $$jtreg_version is installed"; \
++        echo "Please update the jtreg dependency and regenerate debian/control"; \
++        false; \
++      fi
++endif
++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 stamps/build-docs
++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/configure
++      @echo '========== $@ =========='
++ifneq (,$(filter $(DEB_HOST_ARCH), alpha armel armhf ia64 m68k mips mipsel mips64 mips64el powerpc riscv64 s390x sh4 sparc sparc64))
++      sh -c 'sh debian/buildwatch.sh $(CURDIR)/$(builddir) &'
++endif
++      if $(EXTRA_BUILD_ENV) $(MAKE) --no-print-directory -C $(builddir) $(build_target); then \
++        : ; \
++      else \
++        if [ -f buildwatch.pid ]; then \
++          pid=$$(cat buildwatch.pid); \
++          kill -1 $$pid || :; sleep 1; kill -9 $$pid || :; \
++        fi; \
++        false; \
++      fi
++
++      touch $@
++
++stamps/zero-build: stamps/zero-configure
++      @echo '========== $@ =========='
++      : # FIXME: build using the just built jdk, and build the vm only
++      $(EXTRA_BUILD_ENV) $(MAKE) --no-print-directory -C $(zbuilddir) $(zbuild_target)
++      rm -rf $(builddir)/$(sdkimg)/lib/zero
++      cp -a $(zbuilddir)/$(zsdkimg)/lib/server \
++              $(builddir)/$(sdkimg)/lib/zero
++      touch $@
++
++stamps/build-docs: stamps/build
++      @echo '========== $@ =========='
++      mkdir -p $(builddir)/images/docs
++      echo '<!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="refresh" content="0;url=api/index.html"> </head> </html>' > $(builddir)/images/docs/index.html
++ifeq ($(with_docs),yes)
++      $(MAKE) -C $(builddir) docs
++endif
++      touch $@
++
++stamps/jtreg-check-default: stamps/build
++      $(MAKE) -f debian/rules jtreg-run-check VMNAME=$(default_vm) VMARGS= \
++              $(if $(filter $(default_vm),hotspot),TEST_SUITES='hotspot langtools jaxp jdk',TEST_SUITES='hotspot langtools jaxp')
++#             TEST_SUITES='hotspot langtools jaxp'
++      touch $@
++
++stamps/jtreg-check-zero: stamps/build
++      $(MAKE) -f debian/rules jtreg-run-check VMNAME=zero VMARGS='-vmoption:-zero' \
++              TEST_SUITES='hotspot langtools jaxp'
++      touch $@
++
++jtreg-run-check:
++      mkdir -p jtreg-test-output
++ifneq (,$(filter $(VMNAME), $(with_jtreg_check)))
++      if [ ! -f $(builddir)/$(sdkimg)/conf/security/java.security.install ]; then \
++        fgrep -v 'sun.security.pkcs11' $(builddir)/$(sdkimg)/conf/security/java.security \
++          > $(builddir)/$(sdkimg)/conf/security/java.security.test; \
++        mv $(builddir)/$(sdkimg)/conf/security/java.security \
++          $(builddir)/$(sdkimg)/conf/security/java.security.install; \
++        mv $(builddir)/$(sdkimg)/conf/security/java.security.test \
++          $(builddir)/$(sdkimg)/conf/security/java.security; \
++      fi
++
++      @echo "BEGIN jtreg"
++      $(TIME) $(MAKE) -f debian/rules -k jtregcheck \
++              $(if $(TEST_SUITES),TEST_SUITES="$(TEST_SUITES)") \
++              JTREG_OPTIONS='$(VMARGS)' \
++              2>&1 | tee jtreg-test-output/jtreg_output-$(VMNAME)
++      @echo "END jtreg"
++
++      if [ -f $(builddir)/$(sdkimg)/conf/security/java.security.install ]; then \
++        mv $(builddir)/$(sdkimg)/conf/security/java.security.install \
++          $(builddir)/$(sdkimg)/conf/security/java.security; \
++      fi
++
++      for i in check-hotspot.log check-jaxp.log check-jdk.log check-langtools.log jtreg-summary.log; do \
++        if [ -f jtreg-test-output/$$i ]; then \
++          mv jtreg-test-output/$$i jtreg-test-output/$${i%*.log}-$(VMNAME).log; \
++        else \
++          mkdir -p jtreg-test-output; \
++        fi; \
++      done
++
++      @echo "BEGIN jtreg-summary-$(VMNAME)"
++      -cat jtreg-test-output/jtreg-summary-$(VMNAME).log
++      @echo "END jtreg-summary-$(VMNAME)"
++
++      -for i in hotspot langtools jaxp jdk; do \
++        find jtreg-test-output/$$i/JTwork/ -name '*.jtr'; \
++      done | sort -u > jtreg-test-output/failed_tests-$(VMNAME).list; \
++      GZIP=-9vn tar --ignore-failed-read -C . -c -z -f jtreg-test-output/failed_tests-$(VMNAME).tar.gz -T jtreg-test-output/failed_tests-$(VMNAME).list
++      GZIP=-9vn tar -C . -c -z -f jtreg-test-output/jtreport-$(VMNAME).tar.gz $$(find jtreg-test-output -name JTreport)
++else
++      echo "jtreg harness not run for this build" > jtreg-test-output/jtreg_output-$(VMNAME)
++endif
++
++# ----------------------------------------------------------------------------
++# jtreg targets taken from IcedTea
++
++TESTS_TO_RUN = $(addprefix check-,$(TEST_SUITES))
++
++check-hotspot: stamps/build
++      @echo '===== START $@ ====='
++      mkdir -p jtreg-test-output/hotspot
++      JTREG_OPTIONS=$(JTREG_OPTIONS) VMNAME=$(VMNAME) JDK_TO_TEST=$(builddir)/$(sdkimg) \
++      AUTOPKGTEST_TMP=/tmp/ AUTOPKGTEST_ARTIFACTS=jtreg-test-output/ \
++        $(TIME) debian/tests/hotspot | tee jtreg-test-output/$@.log
++      @echo '===== END $@ ====='
++
++check-langtools: stamps/build
++      @echo '===== START $@ ====='
++      mkdir -p jtreg-test-output/langtools
++      JTREG_OPTIONS=$(JTREG_OPTIONS) VMNAME=$(VMNAME) JDK_TO_TEST=$(builddir)/$(sdkimg) \
++      AUTOPKGTEST_TMP=/tmp/ AUTOPKGTEST_ARTIFACTS=jtreg-test-output/ \
++        $(TIME) debian/tests/langtools | tee jtreg-test-output/$@.log
++      @echo '===== END $@ ====='
++
++check-jaxp: stamps/build
++      @echo '===== START $@ ====='
++      mkdir -p jtreg-test-output/jaxp
++      JTREG_OPTIONS=$(JTREG_OPTIONS) VMNAME=$(VMNAME) JDK_TO_TEST=$(builddir)/$(sdkimg) \
++      AUTOPKGTEST_TMP=/tmp/ AUTOPKGTEST_ARTIFACTS=jtreg-test-output/ \
++        $(TIME) debian/tests/jaxp | tee jtreg-test-output/$@.log
++      @echo '===== END $@ ====='
++
++check-jdk: stamps/build
++      @echo '===== START $@ ====='
++      mkdir -p jtreg-test-output/jdk
++      JTREG_OPTIONS=$(JTREG_OPTIONS) VMNAME=$(VMNAME) JDK_TO_TEST=$(builddir)/$(sdkimg) \
++      AUTOPKGTEST_TMP=/tmp/ AUTOPKGTEST_ARTIFACTS=jtreg-test-output/ \
++        $(TIME) debian/tests/jdk | tee jtreg-test-output/$@.log
++      @echo '===== END $@ ====='
++
++jtregcheck: $(TESTS_TO_RUN)
++      for i in $(TEST_SUITES); do \
++        echo "--------------- jtreg console summary for $$i ---------------"; \
++        egrep -v '^(Passed:|Directory|Re[a-z]+\ written\ to)' jtreg-test-output/check-$$i.log; \
++      done | tee jtreg-test-output/jtreg-summary.log
++
++# ----------------------------------------------------------------------------
++
++clean: debian-clean
++      dh_testdir
++      dh_testroot
++      rm -rf stamps build build-* jtreg-test-output
++      rm -rf autom4te.cache
++      rm -f bin/{jtreg.tmwrc,my-jtreg-run,my-xvfb-run,auto*,ifnames}
++      rm -f buildwatch.pid
++      rm -f config.log configure.log
++      dh_clean
++
++debian-clean:
++      dh_testdir
++      dh_testroot
++      dh_prep
++      for f in debian/*.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% s390% 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 || dh_clean -k
++      rm -f debian/*.install debian/*.links
++      dh_installdirs
++
++      @echo "all_jre_tools: $(all_jre_tools)"
++      @echo "jre_tools:     $(jre_tools)"
++      @echo "jre_hl_tools:  $(jre_hl_tools)"
++      @echo "all_jdk_tools: $(all_jdk_tools)"
++      @echo "jdk_tools: $(jdk_tools)"
++
++      : # install into temporary location
++      mkdir -p $(d)/$(basedir)
++      cp -a $(builddir)/$(sdkimg)/* $(d)/$(basedir)/
++
++      chmod -R u+w $(d)
++
++      : # use javaws from icedtea-netx 
++      find $(d) -name 'javaws*' | xargs -r rm -f
++
++      : # install default jvm config file
++      ls -l $(d)/$(basedir)/lib
++      cp debian/jvm.cfg-default $(d)/$(basedir)/lib/.
++
++      : # compress manpages
++      find $(d)/$(basedir)/man -type f ! -type l | xargs gzip -9v -n
++
++      : # don't install a second copy
++      rm -vf $(d)/$(basedir)/conf/security/java.security.install
++
++ifeq ($(with_debugedit),yes)
++      : # rewrite build-id
++      for i in $$(find $(d)/$(basedir) -type f | xargs -r file | sed -n '/ELF/s/:.*//p'); do \
++        debugedit --build-id --build-id-seed='$(build_id_seed)' $$i; \
++      done
++endif
++
++      mkdir -p $(d)/$(etcdir)/security
++      mkdir -p $(d)/$(etcdir)/security/policy/limited
++      mkdir -p $(d)/$(etcdir)/security/policy/unlimited
++      mkdir -p $(d)/$(etcdir)/management
++      mkdir -p $(d)/$(etcdir)/jfr
++
++ifeq (0,1)
++      : # rename templates (comments only) to config files,
++      : # and move to /$(etcdir)
++      for i in \
++        conf/management/jmxremote.password \
++        conf/management/snmp.acl \
++        conf/sdp/sdp.conf; \
++      do \
++        mv $(d)/$(basedir)/$$i.template $(d)/$(etcdir)/$$i; \
++      done
++else
++      : # FIXME: what to do about these?
++      for i in \
++        conf/management/jmxremote.password \
++        conf/management/snmp.acl \
++        conf/sdp/sdp.conf; \
++      do \
++        rm -f $(d)/$(basedir)/$$i.template; \
++      done
++endif
++
++ifeq ($(with_bridge),atk)
++#  only add releases that are known to work with atk
++#  by default leave atk disabled
++#  ifneq (,$(filter $(distrel),))
++#     cp -p debian/accessibility-atk.properties.enabled \
++              $(d)/$(basedir)/conf/accessibility.properties
++#  else
++      cp -p debian/accessibility-atk.properties.disabled \
++              $(d)/$(basedir)/conf/accessibility.properties
++#  endif
++else
++      cp -p debian/accessibility.properties $(d)/$(basedir)/conf/
++endif
++      cp -p debian/swing.properties $(d)/$(basedir)/conf/
++
++ifneq (,$(pkg_certs))
++      rm -f $(d)/$(basedir)/lib/security/cacerts
++endif
++
++      : # FIXME: merge nss changes from IcedTea
++      cp debian/nss.cfg $(d)/$(basedir)/conf/security/nss.cfg
++
++      : # move config files to $(etcdir) and symlink them.
++      rm -f $(d_jrehl).links
++      for i in \
++        conf/accessibility.properties \
++        conf/logging.properties \
++        conf/sound.properties \
++        conf/net.properties \
++        lib/psfontj2d.properties \
++        lib/psfont.properties.ja \
++        lib/jfr/default.jfc \
++        lib/jfr/profile.jfc \
++        conf/swing.properties \
++        conf/management/jmxremote.access \
++        conf/management/management.properties \
++        conf/security/java.policy \
++        conf/security/java.security \
++        conf/security/policy/limited/default_local.policy \
++        conf/security/policy/limited/exempt_local.policy \
++        conf/security/policy/limited/default_US_export.policy \
++        conf/security/policy/unlimited/default_local.policy \
++        conf/security/policy/unlimited/default_US_export.policy \
++        conf/security/policy/README.txt \
++        $$([ -f $(d)/$(basedir)/conf/security/nss.cfg ] && echo conf/security/nss.cfg) \
++        $(if $(findstring ca-cert,$(pkg_certs)),,lib/security/cacerts) \
++        lib/security/default.policy \
++        lib/security/blocked.certs \
++        lib/security/public_suffix_list.dat; \
++      do \
++        dest=$$(echo $$i | sed 's,^[^/]*/,,'); \
++        mv $(d)/$(basedir)/$$i $(d)/$(etcdir)/$$dest; \
++        echo "$(etcdir)/$$dest $(basedir)/$$i" >> $(d_jrehl).links; \
++      done
++      mv $(d)/$(basedir)/lib/jvm.cfg \
++              $(d)/$(etcdir)/
++ifneq (,$(filter $(DEB_HOST_ARCH), $(hotspot_archs)))
++      printf -- '-zero KNOWN\n' >> $(d)/$(etcdir)/jvm.cfg
++else
++      printf -- '-zero ALIASED_TO -server\n' >> $(d)/$(etcdir)/jvm.cfg
++endif
++ifneq (,$(filter $(DEB_HOST_ARCH), amd64 i386))
++      printf -- '-dcevm KNOWN\n' >> $(d)/$(etcdir)/jvm.cfg
++endif
++
++      : # remove files which we do not want to distribute
++
++      : # remove empty directories
++
++      : # 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.wqy_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
++
++      : # $(p_jrehl).install / $(p_jre).install
++      ( \
++        echo 'etc'; \
++        echo '$(basedir)/lib/server'; \
++        echo '$(basedir)/lib/jvm.cfg-default'; \
++        echo '$(basedir)/lib/libjli.so'; \
++        echo '$(basedir)/lib/ct.sym'; \
++        echo '$(basedir)/lib/jexec'; \
++        echo '$(basedir)/lib/jspawnhelper'; \
++        echo '$(basedir)/lib/jrt-fs.jar'; \
++        echo '$(basedir)/release'; \
++        echo '$(basedir)/lib/tzdb.dat'; \
++        if [ "$(default_vm)" = hotspot ]; then \
++          echo '$(basedir)/lib/classlist'; \
++        fi; \
++        echo '$(basedir)/lib/modules'; \
++      ) > debian/$(p_jrehl).install
++ifneq (,$(filter $(DEB_HOST_ARCH),i386))
++  ifneq (,$(findstring --with-jvm-variants=client,$(DEFAULT_CONFIGURE_ARGS)))
++      echo '$(basedir)/lib/client' >> debian/$(p_jrehl).install
++  endif
++else ifneq (,$(filter $(DEB_HOST_ARCH),armhf))
++  ifneq (,$(findstring --with-jvm-variants=client,$(DEFAULT_CONFIGURE_ARGS)))
++      echo '$(basedir)/lib/client' >> debian/$(p_jrehl).install
++  endif
++endif
++ifeq ($(derivative),Ubuntu)
++      ( \
++        echo 'usr/share/apport/package-hooks'; \
++      ) >> debian/$(p_jrehl).install
++endif
++
++      $(RM) debian/$(p_jre).install
++
++      : # jre binaries and man pages
++      for i in $(jre_hl_tools); do \
++        case "$$i" in \
++          *policytool*) p=debian/$(p_jre).install;; \
++          *)            p=debian/$(p_jrehl).install; \
++        esac; \
++        echo $(basedir)/bin/$$i >> $$p; \
++        if [ -f $(d)/$(basedir)/man/man1/$$i.1.gz ]; then \
++          echo $(basedir)/man/man1/$$i.1.gz >> $$p; \
++        fi; \
++        if [ -f $(d)/$(basedir)/man/ja_JP.UTF-8/man1/$$i.1.gz ]; then \
++          echo $(basedir)/man/ja_JP.UTF-8/man1/$$i.1.gz >> $$p; \
++        fi; \
++      done
++
++      cd $(CURDIR)/$(d); \
++      for i in $(basedir)/lib/*.so; do \
++        case "$$i" in \
++          */libawt_xawt.so|*/libjawt.so|*/libsplashscreen.so|*/xawt) echo $$i >> ../$(p_jre).install;; \
++          */zero) echo $$i >> ../$(p_jrez).install;; \
++          *) echo $$i >> ../$(p_jrehl).install; \
++        esac; \
++      done
++
++      @echo XXXXX $(alternate_vms)
++ifneq (,$(filter zero, $(alternate_vms)))
++      echo '$(basedir)/lib/zero' >> debian/$(p_jrez).install
++endif
++
++      : # $(p_jrehl).install
++      ( \
++        echo '$(basedir)/legal'; \
++        if [ -d $(d)/$(basedir)/man/ja ]; then \
++          echo '$(basedir)/man/ja'; \
++        fi; \
++      ) >> debian/$(p_jrehl).install
++
++      : # $(p_jdkhl).install
++      ( \
++        for i in $(jdk_hl_tools); do \
++          echo $(basedir)/bin/$$i; \
++          if [ -f $(d)/$(basedir)/man/man1/$$i.1.gz ]; then \
++            echo $(basedir)/man/man1/$$i.1.gz; \
++          fi; \
++          if [ -f $(d)/$(basedir)/man/ja_JP.UTF-8/man1/$$i.1.gz ]; then \
++            echo $(basedir)/man/ja_JP.UTF-8/man1/$$i.1.gz; \
++          fi; \
++        done; \
++        cd $(d); \
++        for i in $(basedir)/include/*.h; do \
++          case $$i in */jawt.h|*/jawt_md.h) continue; esac; \
++          [ -h $$i ] && continue; \
++          echo $$i; \
++        done; \
++        echo '$(basedir)/include/*/jni_md.h'; \
++        echo '$(basedir)/jmods'; \
++      ) > debian/$(p_jdkhl).install
++
++      : # $(p_jdk).install
++      ( \
++        echo '$(basedir)/include/jawt.h'; \
++        echo '$(basedir)/include/*/jawt_md.h'; \
++        for i in $(jdk_tools); do \
++          echo $(basedir)/bin/$$i; \
++          if [ -f $(d)/$(basedir)/man/man1/$$i.1.gz ]; then \
++            echo $(basedir)/man/man1/$$i.1.gz; \
++          fi; \
++          if [ -f $(d)/$(basedir)/man/ja_JP.UTF-8/man1/$$i.1.gz ]; then \
++            echo $(basedir)/man/ja_JP.UTF-8/man1/$$i.1.gz; \
++          fi; \
++        done; \
++      ) > debian/$(p_jdk).install
++
++      : # $(p_src).install
++      ( \
++        echo '$(basedir)/lib/src.zip $(TOP)/$(basename)/lib'; \
++      ) > debian/$(p_src).install
++
++      : # copy apport hook
++ifeq ($(derivative),Ubuntu)
++      mkdir -p $(d)/usr/share/apport/package-hooks/
++      cp debian/apport-hook.py $(d)/usr/share/apport/package-hooks/source_$(basename).py
++endif
++
++      : # 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
++      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)/demo'; \
++      ) > debian/$(p_demo).install
++
++      : # $(p_dbg).install
++ifneq (,$(wildcard $(builddir)/$(sdkimg)/lib/*.diz))
++      ( \
++        echo '$(basedir)/lib/*.diz'; \
++        echo '$(basedir)/lib/*/*.diz'; \
++      ) > debian/$(p_dbg).install
++endif
++ifneq (,$(wildcard $(builddir)/$(sdkimg)/lib/*.debuginfo))
++      ( \
++        echo '$(basedir)/lib/*.debuginfo'; \
++        echo '$(basedir)/lib/*/*.debuginfo'; \
++      ) > debian/$(p_dbg).install
++endif
++
++#     : # FIXME: the targets are not installed ...
++#     rm -rfv $(d)/$(basedir)/lib/jfr
++
++      dh_install --sourcedir=debian/tmp -XLICENSE
++ifeq (,$(findstring old, $(old_debhelper)))
++      dh_missing --sourcedir=debian/tmp --fail-missing -XLICENSE
++endif
++
++      find $(d_jrehl) $(d_jre) $(d_jrez) \
++        \( -name '*.debuginfo' -o -name '*.diz' \) -print | xargs -r rm -f
++
++ifeq (0,1)
++# FIXME: ext no longer supported
++      : # 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)/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
++endif
++
++      dh_installdirs -p$(p_jrehl) \
++              usr/share/doc/$(p_jrehl) \
++              usr/share/binfmts
++
++      dh_installdirs -p$(p_jre) \
++              usr/share/applications \
++              usr/share/application-registry \
++              usr/share/mime-info \
++              usr/share/pixmaps
++
++      : # add GNOME stuff
++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 src/java.desktop/unix/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
++
++      : # create docdir symlinks for $(p_jre)
++      ( \
++        echo usr/share/doc/$(p_jrehl) usr/share/doc/$(p_jre); \
++      ) > $(d_jre).links
++
++ifneq (,$(filter 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_jdk) usr/share/doc/$(p_src); \
++      ) > $(d_src).links
++
++      : # create docdir symlinks for $(p_jdkhl)
++      ( \
++        echo usr/share/doc/$(p_jrehl) usr/share/doc/$(p_jdkhl); \
++      ) > $(d_jdkhl).links
++
++      : # create docdir symlinks for $(p_jdk)
++      ( \
++        echo usr/share/doc/$(p_jre) usr/share/doc/$(p_jdk); \
++        echo $(TOP)/$(basename)/lib/src.zip $(TOP)/$(basename)/src.zip; \
++      ) > $(d_jdk).links
++# doesn't work, no package dependency
++ifneq (,$(DEB_HOST_MULTIARCH))
++        echo '$(TOP)/$(basename)/src.zip $(basedir)/lib/src.zip' >> $(d_jdkhl).links
++        echo '$(TOP)/$(basename)/lib/src.zip $(basedir)/lib/src.zip' >> $(d_jdkhl).links
++endif
++
++      : # create docdir symlinks for $(p_dbg)
++      ( \
++        echo usr/share/doc/$(p_jrehl) usr/share/doc/$(p_dbg); \
++      ) > $(d_dbg).links
++
++      : # OpenJDK Stack Unwinder and Frame Decorator
++ifneq (,$(filter $(DEB_HOST_ARCH),amd64))
++      mkdir -p $(d_jrehl)/usr/share/gdb/auto-load/$(basedir)/jre/lib/server
++      cp debian/dbg.py \
++        $(d_jrehl)/usr/share/gdb/auto-load/$(basedir)/jre/lib/server/libjvm.so-gdb.py
++  ifneq (,$(filter zero, $(alternate_vms)))
++      mkdir -p $(d_jrez)/usr/share/gdb/auto-load/$(basedir)/jre/lib/zero
++      ln -sf ../server/libjvm.so-gdb.py \
++        $(d_jrez)/usr/share/gdb/auto-load/$(basedir)/jre/lib/zero/libjvm.so
++  endif
++endif
++
++ifeq ($(with_bridge),atk)
++      : # create links for the atk wrapper
++  ifeq (0,1)
++  # FIXME: ext no longer supported
++      echo "usr/share/java/java-atk-wrapper.jar $(basedir)/lib/ext/java-atk-wrapper.jar" \
++          >> $(d_jre).links
++  endif
++      echo "usr/lib$(multiarch_dir)/jni/libatk-wrapper.so $(basedir)/lib/libatk-wrapper.so" \
++          >> $(d_jre).links
++else ifeq ($(with_bridge),yes)
++ ifeq (0,1)
++# FIXME: ext no longer supported
++      : # create links for the gnome accessibility bridge
++      echo "usr/share/java/gnome-java-bridge.jar $(basedir)/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)/lib/libjava-access-bridge-jni.so" \
++          >> $(d_jre).links
++  endif
++ endif
++endif
++
++      : # create links for the config/lib files
++# note: $(d_jrehl).links already created when moving files to the etcdir
++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)/lib/jvm.cfg"; \
++      ) >> $(d_jrehl).links
++else
++      ( \
++        echo "$(etcdir)/jvm.cfg $(basedir)/lib/jvm.cfg"; \
++      ) >> $(d_jrehl).links
++endif
++ifneq (,$(pkg_certs))
++      echo "etc/ssl/certs/java/cacerts $(basedir)/lib/security/cacerts" \
++          >> $(d_jrehl).links
++endif
++
++      @echo JRE_HL_TOOLS: $(jre_hl_tools) jexec
++      @echo JRE_TOOLS: $(jre_tools)
++      @echo JDK_HL_TOOLS: $(jdk_hl_tools)
++      @echo JDK_TOOLS: $(jdk_tools)
++      ( \
++        echo 'name=$(jdirname)'; \
++        echo 'alias=$(jdiralias)'; \
++        echo 'priority=$(priority)'; \
++        echo 'section=main'; \
++        echo ''; \
++        for i in $(jre_hl_tools); do \
++          echo "hl $$i /$(basedir)/bin/$$i"; \
++        done; \
++        echo "hl jexec /$(basedir)/lib/jexec"; \
++        for i in $(jre_tools); do \
++          echo "jre $$i /$(basedir)/bin/$$i"; \
++        done; \
++        for i in $(jdk_hl_tools); do \
++          echo "jdkhl $$i /$(basedir)/bin/$$i"; \
++        done; \
++        for i in $(jdk_tools); do \
++          echo "jdk $$i /$(basedir)/bin/$$i"; \
++        done; \
++      ) > $(d_jrehl)/$(TOP)/.$(jdiralias).jinfo
++
++      ( \
++        echo 'package $(basename)'; \
++        echo 'interpreter /usr/bin/jexec'; \
++        echo 'magic PK\x03\x04'; \
++      ) > $(d_jrehl)/$(basedir)/lib/jar.binfmt
++
++      : # another jvm symlink
++      ln -sf $(jdirname) $(d_jrehl)/usr/lib/jvm/$(jdiralias)
++      : # the debug link only needed for debhelper << 9
++      mkdir -p $(d_jrehl)/usr/lib/debug/usr/lib/jvm/$(jdirname)
++      ln -sf $(jdirname) $(d_jrehl)/usr/lib/debug/usr/lib/jvm/$(jdiralias)
++
++ifeq ($(with_systemtap),yes FIXME)
++      : # systemtap support
++      mkdir -p $(d_jrehl)/usr/share/systemtap/tapset
++      cp -p build/tapset/hotspot.stp $(d_jrehl)/usr/share/systemtap/tapset/
++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 nodoc, $(DEB_BUILD_OPTIONS)),-N$(p_doc))
++nojrez = $(if $(filter zero, $(alternate_vms)),,-N$(p_jrez))
++
++# Build architecture independant packages
++binary-indep: build-indep install
++      dh_testdir
++      dh_testroot
++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 $(builddir)/images/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
++      rm -v $(d_doc)/usr/share/doc/$(p_jrehl)/api/script-dir/{jquery-3.5.1.min.js,jquery-ui.min.css,jquery-ui.min.js}
++      dh_link -p$(p_doc) \
++        /usr/share/javascript/jquery-ui/jquery-ui.min.js \
++          /usr/share/doc/$(p_jrehl)/api/script-dir/jquery-3.5.1.min.js \
++        /usr/share/javascript/jquery-ui/themes/base/jquery-ui.min.css \
++          /usr/share/doc/$(p_jrehl)/api/script-dir/jquery-ui.min.css \
++        /usr/share/javascript/jquery-ui/jquery-ui.min.js \
++          /usr/share/doc/$(p_jrehl)/api/script-dir/jquery-ui.min.js
++
++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)
++      set -e; if which dh_strip_nondeterminism >/dev/null; then \
++        dh_strip_nondeterminism -i $(nodocs); \
++      fi
++      dh_compress -i $(nodocs) -Xexamples -Xdemo -Xpackage-list -Xelement-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)/lib
++shlibdeps_ld_path =$(absarchdir):$(absarchdir)/client:$(absarchdir)/server:$(absarchdir)/native_threads
++
++# pass vm name as first argument
++define install_test_results
++      mkdir -p $(d_jdk)/usr/share/doc/$(p_jrehl)/test-$(DEB_HOST_ARCH)
++      -cp jtreg-test-output/jtreg_output-$(1) \
++        $(d_jdk)/usr/share/doc/$(p_jrehl)/test-$(DEB_HOST_ARCH)/jtreg_output-$(1).log
++      -cp jtreg-test-output/jtreg-summary-$(1).log jtreg-test-output/check-*-$(1).log \
++        $(d_jdk)/usr/share/doc/$(p_jrehl)/test-$(DEB_HOST_ARCH)/
++      -cp jtreg-test-output/failed_tests-$(1).tar.gz \
++        $(d_jdk)/usr/share/doc/$(p_jrehl)/test-$(DEB_HOST_ARCH)/failed_tests-$(1).tar.gz
++      -cp jtreg-test-output/jtreport-$(1).tar.gz \
++        $(d_jdk)/usr/share/doc/$(p_jrehl)/test-$(DEB_HOST_ARCH)/jtreport-$(1).tar.gz
++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
++      $(call install_test_results,$(default_vm))
++
++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 -a $(nodemo) $(nojrez)
++endif
++      -dh_icons -a $(nodemo) $(nojrez) \
++              || dh_iconcache -a $(nodemo) $(nojrez)
++#     dh_installdebconf -a $(nodemo) $(nojrez)
++      dh_link -a $(nodemo) $(nojrez)
++      set -e; if which dh_strip_nondeterminism >/dev/null; then \
++        dh_strip_nondeterminism -a $(nodemo) $(nojrez); \
++      fi
++      dh_strip -v -a $(nodemo) $(nojrez) \
++              -Xlibjvm.so -X.debuginfo --dbg-package=$(p_dbg)
++
++ifeq (,$(findstring nostrip, $(DEB_BUILD_OPTIONS)))
++      set -ex; \
++      for i in {$(d_jrehl),$(d_jre),$(d_jrez)}/$(basedir)/lib/*/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=usr/lib/debug/.build-id/$${b_id:0:2}; \
++          f=$${b_id:2}.debug; \
++          mkdir -p $(d_dbg)/$$d; \
++          $(OBJCOPY) --only-keep-debug --compress-debug-sections $$i $(d_dbg)/$$d/$$f; \
++          chmod 644 $(d_dbg)/$$d/$$f; \
++          $(STRIP) --remove-section=.comment --remove-section=.note $$i; \
++        fi; \
++      done
++endif
++      dh_compress -a $(nodemo) $(nojrez) -Xexamples -Xdemo -Xpackage-list
++      dh_fixperms -a $(nodemo) $(nojrez)
++      dh_makeshlibs -p$(p_jrehl) -p$(p_jre)
++      dh_shlibdeps -a $(nodemo) $(nojrez) -L $(p_jrehl) \
++              -l$(shlibdeps_ld_path) \
++              --
++      find $(d_jrehl) $(d_jre) $(d_jrez) -type f -name '*.debuginfo'
++      dh_installdeb -a $(nodemo) $(nojrez)
++      dh_gencontrol -a $(nodemo) $(nojrez) \
++              -- $(control_vars)
++      dh_md5sums -a $(nodemo) $(nojrez)
++      : # FIXME: something seems to hang here ...
++      -ps afx
++      NO_PKG_MANGLE=1 \
++      dh_builddeb -a $(nodemo) $(nojrez) #$(bd_options)
++
++is_release            = yes
++#is_release           =
++git_project           = jdk17u
++git_tag                       = jdk-17.0.4+8
++package_version               = $(subst jdk-,,$(git_tag))
++package_version               = $(shell echo $(PKGVERSION) | sed 's/-[^-][^-]*$$//')
++ifneq ($(is_release),yes)
++  package_version     := $(subst +,~,$(package_version))
++endif
++git_url                       = https://github.com/openjdk/$(git_project)
++origdir = ../$(basename)-$(package_version).orig
++topdir = $(basename)-$(package_version)
++get-orig:
++      mkdir $(origdir)
++      wget -O $(origdir)/jdk.tar.gz $(git_url)/archive/$(git_tag).tar.gz
++
++      set -ex; \
++      repo=jdk; \
++      d=$$(tar tf $(origdir)/$$repo.tar.gz | head -1 | sed 's,/.*,,'); \
++      tar xf $(origdir)/$$repo.tar.gz; \
++      case $$repo in jdk) \
++        rm -v -rf $$d/src/java.base/share/native/libzip/zlib; \
++        find $$d/src/java.desktop/share/native/libjavajpeg \
++          ! -name imageioJPEG.c ! -name jpegdecoder.c ! -name jinclude.h \
++          -type f -print -delete; \
++        rm -v -rf $$d/src/java.desktop/share/native/libsplashscreen/giflib; \
++        rm -v -rf $$d/src/java.desktop/share/native/libsplashscreen/libpng; \
++        rm -v -rf $$d/src/java.smartcardio/unix/native/libj2pcsc/MUSCLE; \
++      esac; \
++      mv $$d $(topdir); \
++      chmod +x $(topdir)/configure; \
++      rm -f $(topdir)/.hgtags; \
++      rm -f $(topdir)/.gitattributes; \
++      rm -rf $(topdir)/.github; \
++      tar cfJ ../$(basename)_$(package_version).orig.tar.xz $(topdir); \
++      rm -rf $(topdir)
++
++# keep these in the tarball, older lcms are not supported
++        rm -v -f $$d/src/java.desktop/share/native/liblcms/cms*.c; \
++        rm -v -f $$d/src/java.desktop/share/native/liblcms/lcms2*.h; \
++
++      rm -rf $(origdir)
++
++binary: binary-arch binary-indep
++.PHONY: build build-arch build-indep clean binary-indep binary-arch binary install packaging-files
diff --cc debian/series
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..024cad794cbc3ef72fc845fd4159bdad315f601f
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,26 @@@
++autoconf-select.diff
++system-pcsclite.diff
++hotspot-mips-align.diff
++icc_loading_with_symlink.diff
++icedtea-override-redirect-compiz.patch
++jdk-freetypeScaler-crash.diff
++libpcsclite-dlopen.diff
++jexec.diff
++default-jvm-cfg.diff
++workaround_expand_exec_shield_cs_limit.diff
++adlc-parser.patch
++multiple-pkcs11-library-init.patch
++applet-hole.patch
++m68k-support.diff
++s390x-thread-stack-size.diff
++jdk-getAccessibleValue.diff
++zero-x32.diff
++jtreg-location.diff
++jdk-i18n-pt_BR.diff
++mips-sigset.diff
++disable-doclint-by-default.diff
++hotspot-disable-exec-shield-workaround.diff
++atk-wrapper-security.patch
++dnd-files.patch
++hotspot-powerpcspe.diff
++hotspot-libpath.diff
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..78604fdbed0242b3356dc2aa4d7cd147c5f55b56
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,12 @@@
++<?xml version="1.0"?>
++<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
++      <mime-type type="application/java-archive">
++              <comment>Java Archive</comment>
++              <glob pattern="*.jar"/>
++      </mime-type>
++
++      <mime-type type="application/x-java-jnlp-file">
++              <comment>Java Web Start application</comment>
++              <glob pattern="*.jnlp"/>
++      </mime-type>
++</mime-info>
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..163aaf8d82b6c54f23c45f32895dbdfdcc27b047
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++3.0 (quilt)
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..194db89880f62be7d2a595de834372f8e6f8f828
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2 @@@
++# parts of the test suite, not installed
++openjdk-17 source: source-is-missing
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..00db1b68c6bb911f4d8a63c0ba12432d91c99c83
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -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."
++};
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..7a0f9414e158d4b0c27a227b20e9a93723a9d01a
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -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.                  ",
++"                $ $ $ $               $ $ $                     "};
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..0f55df0c54d555d93727e40648515b9c1c245762
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..3633c2a862814aa87dba258c148312052e7a5305
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,15 @@@
++Test-Command: java --version
++Depends: openjdk-17-jre-headless
++Restrictions: superficial
++
++Test-Command: javac --version
++Depends: openjdk-17-jdk-headless
++Restrictions: superficial
++
++#Tests: hotspot, jaxp, langtools
++#Depends: @, default-jre-headless, jtreg:native (>= 6+1-0~), testng:native, build-essential
++#Restrictions: allow-stderr, skippable, flaky
++
++#Tests: jdk
++#Depends: @, default-jre-headless, jtreg:native (>= 6+1-0~), testng:native, build-essential, xfwm4:native, xvfb, dbus-x11
++#Restrictions: allow-stderr, skippable, flaky
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..2f2697d403415b0846b614c72b4139c259ad3b21
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,15 @@@
++Test-Command: java --version
++Depends: openjdk-17-jre-headless
++Restrictions: superficial
++
++Test-Command: javac --version
++Depends: openjdk-17-jdk-headless
++Restrictions: superficial
++
++#Tests: hotspot, jaxp, langtools
++#Depends: @, default-jre-headless, jtreg:native (>= @min_jtreg_version@), testng:native, build-essential
++#Restrictions: allow-stderr, skippable, flaky
++
++#Tests: jdk
++#Depends: @, default-jre-headless, jtreg:native (>= @min_jtreg_version@), testng:native, build-essential, xfwm4:native, xvfb, dbus-x11
++#Restrictions: allow-stderr, skippable, flaky
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..21e9e831f8c8589337cf607b5ad00605b73cf2fd
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,12 @@@
++#!/bin/bash
++set -o errexit
++set -o errtrace
++set -o pipefail
++set -o nounset
++
++debian/tests/jtreg-autopkgtest.sh hotspot \
++      -exclude:test/hotspot/jtreg/ProblemList.txt \
++      -dir:test/hotspot/jtreg \
++      :hotspot_compiler :hotspot_gc :hotspot_runtime :hotspot_serviceability || true
++
++debian/tests/jtdiff-autopkgtest.sh hotspot
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..567b103b61fbabd9728967270bc80d8a1c6ed738
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,8 @@@
++#!/bin/bash
++set -o errexit
++set -o errtrace
++set -o pipefail
++set -o nounset
++
++debian/tests/jtreg-autopkgtest.sh jaxp -exclude:test/jaxp/ProblemList.txt test/jaxp || true
++debian/tests/jtdiff-autopkgtest.sh jaxp
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..53086fc9d3fc9fcd6f51db5248ccd6262b21c5c6
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,26 @@@
++#!/bin/bash
++set -o errexit
++set -o errtrace
++set -o pipefail
++set -o nounset
++
++# TODO: native library support
++
++cleanup() {
++  pid="$(jobs -p)"
++  [ -n "$pid" ] && pkill -P ${pid}
++  pkill -9 -P $$
++}
++
++for sig in INT QUIT HUP TERM; do trap "cleanup; trap - $sig EXIT; kill -s $sig "'"$$"' "$sig"; done
++trap cleanup EXIT
++
++export HOME="$(pwd)/jdk/test/"
++export XAUTHORITY="${HOME}/.Xauthority"
++export DISPLAY=:10
++
++debian/tests/start-xvfb.sh 10 &
++sleep 3
++
++debian/tests/jtreg-autopkgtest.sh jdk -exclude:test/jdk/ProblemList.txt test/jdk:jdk_stable || true
++debian/tests/jtdiff-autopkgtest.sh jdk
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9f076f5e2da1bc3b735862b3272237aa8676c931
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,58 @@@
++#!/bin/bash
++set -o errexit
++set -o errtrace
++set -o pipefail
++set -o nounset
++
++testsuite=$1
++shift
++
++if [ -z "${AUTOPKGTEST_TMP+x}" ] || [ -z "${AUTOPKGTEST_ARTIFACTS+x}" ]; then
++  echo "Environment variables AUTOPKGTEST_TMP and AUTOPKGTEST_ARTIFACTS must be set" >&2
++  exit 1
++fi
++
++host_arch=${DEB_HOST_ARCH:-$(dpkg --print-architecture)}
++
++if grep -q -w "${host_arch}" debian/tests/hotspot-archs; then
++  default_vm=hotspot
++else
++  default_vm=zero
++fi
++
++vmname=${VMNAME:-${default_vm}}
++
++jt_report_tb="@doc_dir@/test-${host_arch}/jtreport-${vmname}.tar.gz"
++
++if [ ! -f "${jt_report_tb}" ]; then
++  echo "Unable to compare jtreg results: no build jtreport found for ${vmname}/${host_arch}."
++  echo "Reason: '${jt_report_tb}' does not exist."
++  exit 77
++fi
++
++# create directories to hold the results
++mkdir -p "${AUTOPKGTEST_ARTIFACTS}/${testsuite}"
++mkdir -p "${AUTOPKGTEST_TMP}/openjdk-pkg-jtreg-report"
++
++current_report_dir="${AUTOPKGTEST_ARTIFACTS}/${testsuite}"
++previous_report_dir="${AUTOPKGTEST_TMP}/openjdk-pkg-jtreg-report/${testsuite}"
++
++# extract testsuite results from openjdk package
++[ -d "${previous_report_dir}" ] || \
++  tar -xf "${jt_report_tb}" --strip-components=1 -C "${AUTOPKGTEST_TMP}/openjdk-pkg-jtreg-report"
++
++
++jtdiff -o "${current_report_dir}/jtdiff.html" "${previous_report_dir}/JTreport" "${current_report_dir}/JTreport" || true
++jtdiff "${previous_report_dir}/JTreport" "${current_report_dir}/JTreport" | tee "${current_report_dir}/jtdiff.txt" || true
++
++# create jdiff super-diff structure
++jtdiff_dir="${AUTOPKGTEST_TMP}/jtdiff-${testsuite}/${host_arch}"
++mkdir -p "${jtdiff_dir}/"{1,2} "${current_report_dir}/jtdiff-super"
++ln -sf "${previous_report_dir}/"[0-9] "${jtdiff_dir}/1/"
++ln -sf "${current_report_dir}/"[0-9] "${jtdiff_dir}/2/"
++
++# run jtdiff super-diff
++jtdiff -o "${current_report_dir}/jtdiff-super/" -s "${AUTOPKGTEST_TMP}/jtdiff-${testsuite}/" || true
++
++# fail if we detect a regression
++if egrep '^(pass|---) +(fail|error)' "${current_report_dir}/jtdiff.txt"; then exit 1; else exit 0; fi
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8586d7a7e7dc2a1cc3dbc1fc5410fb0ccbbd41ad
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,58 @@@
++#!/bin/bash
++set -o errexit
++set -o errtrace
++set -o pipefail
++set -o nounset
++
++testsuite=$1
++shift
++
++if [ -z "${AUTOPKGTEST_TMP+x}" ] || [ -z "${AUTOPKGTEST_ARTIFACTS+x}" ]; then
++  echo "Environment variables AUTOPKGTEST_TMP and AUTOPKGTEST_ARTIFACTS must be set" >&2
++  exit 1
++fi
++
++host_arch=${DEB_HOST_ARCH:-$(dpkg --print-architecture)}
++
++if grep -q -w "${host_arch}" debian/tests/hotspot-archs; then
++  default_vm=hotspot
++else
++  default_vm=zero
++fi
++
++vmname=${VMNAME:-${default_vm}}
++
++jt_report_tb="/usr/share/doc/openjdk-17-jre-headless//test-${host_arch}/jtreport-${vmname}.tar.gz"
++
++if [ ! -f "${jt_report_tb}" ]; then
++  echo "Unable to compare jtreg results: no build jtreport found for ${vmname}/${host_arch}."
++  echo "Reason: '${jt_report_tb}' does not exist."
++  exit 77
++fi
++
++# create directories to hold the results
++mkdir -p "${AUTOPKGTEST_ARTIFACTS}/${testsuite}"
++mkdir -p "${AUTOPKGTEST_TMP}/openjdk-pkg-jtreg-report"
++
++current_report_dir="${AUTOPKGTEST_ARTIFACTS}/${testsuite}"
++previous_report_dir="${AUTOPKGTEST_TMP}/openjdk-pkg-jtreg-report/${testsuite}"
++
++# extract testsuite results from openjdk package
++[ -d "${previous_report_dir}" ] || \
++  tar -xf "${jt_report_tb}" --strip-components=1 -C "${AUTOPKGTEST_TMP}/openjdk-pkg-jtreg-report"
++
++
++jtdiff -o "${current_report_dir}/jtdiff.html" "${previous_report_dir}/JTreport" "${current_report_dir}/JTreport" || true
++jtdiff "${previous_report_dir}/JTreport" "${current_report_dir}/JTreport" | tee "${current_report_dir}/jtdiff.txt" || true
++
++# create jdiff super-diff structure
++jtdiff_dir="${AUTOPKGTEST_TMP}/jtdiff-${testsuite}/${host_arch}"
++mkdir -p "${jtdiff_dir}/"{1,2} "${current_report_dir}/jtdiff-super"
++ln -sf "${previous_report_dir}/"[0-9] "${jtdiff_dir}/1/"
++ln -sf "${current_report_dir}/"[0-9] "${jtdiff_dir}/2/"
++
++# run jtdiff super-diff
++jtdiff -o "${current_report_dir}/jtdiff-super/" -s "${AUTOPKGTEST_TMP}/jtdiff-${testsuite}/" || true
++
++# fail if we detect a regression
++if egrep '^(pass|---) +(fail|error)' "${current_report_dir}/jtdiff.txt"; then exit 1; else exit 0; fi
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..845b2f5760bb7afa4a555e90dcdfa4a558c43716
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,133 @@@
++#!/bin/bash
++set -o errexit
++set -o errtrace
++set -o pipefail
++set -o nounset
++
++testsuite=$1
++shift
++
++if [ -z "${AUTOPKGTEST_TMP+x}" ] || [ -z "${AUTOPKGTEST_ARTIFACTS+x}" ]; then
++  echo "Environment variables AUTOPKGTEST_TMP and AUTOPKGTEST_ARTIFACTS must be set" >&2
++  exit 1
++fi
++
++host_arch="${DEB_HOST_ARCH:-$(dpkg --print-architecture)}"
++
++if [ -z "${JDK_TO_TEST+x}" ]; then
++  JDK_TO_TEST=$(echo @JDK_DIR@ | sed "s/-[^-]*$/-$host_arch/")
++fi
++
++jtreg_version="$(dpkg-query -W @jtreg_pkg@ | cut -f2)"
++
++# set additional jtreg options
++jt_options="${JTREG_OPTIONS:-}"
++if [[ "armel" == *"${host_arch}"* ]]; then
++  jt_options+=" -Xmx256M"
++fi
++if dpkg --compare-versions ${jtreg_version} ge 4.2; then
++  jt_options+=" -conc:auto"
++fi
++  
++# check java binary
++if [ ! -x "${JDK_TO_TEST}/bin/java" ]; then
++  echo "Error: '${JDK_TO_TEST}/bin/java' is not an executable." >&2
++  exit 1
++fi
++
++# restrict the tests to a few archs (set from debian/rules)
++if ! echo "${host_arch}" | grep -qE "^($(echo @jtreg_archs@ | tr ' ' '|'))$"; then
++  echo "Error: ${host_arch} is not on the jtreg_archs list, ignoring it."
++  exit 77
++fi
++
++jtreg_processes() {
++  ps x -ww -o pid,ppid,args \
++    | awk '$2 == 1 && $3 ~ /^\/scratch/' \
++    | sed "s,${JDK_TO_TEST},<sdkimg>,g;s,$(pwd),<pwd>,g"
++}
++
++jtreg_pids() {
++  ps x --no-headers -ww -o pid,ppid,args \
++    | awk "\$2 == 1 && \$3 ~ /^${JDK_TO_TEST//\//\\/}/ {print \$1}"
++}
++
++cleanup() {
++  # kill testsuite processes still hanging
++  pids="$(jtreg_pids)"
++  if [ -n "$pids" ]; then
++    echo "[$0] killing processes..."
++    jtreg_processes
++    kill -1 $pids
++    sleep 2
++    pids="$(jtreg_pids)"
++    if [ -n "$pids" ]; then
++      echo "[$0] try harder..."
++      jtreg_processes
++      kill -9 $pids
++      sleep 2
++    fi
++  else
++    echo "[$0] nothing to cleanup"
++  fi
++  pids="$(jtreg_pids)"
++  if [ -n "$pids" ]; then
++    echo "[$0] leftover processes..."
++    $(jtreg_processes)
++  fi
++}
++
++trap "cleanup" EXIT INT TERM ERR
++
++jtwork_dir="${AUTOPKGTEST_TMP}/${testsuite}/JTwork"
++output_dir="${AUTOPKGTEST_ARTIFACTS}/${testsuite}/"
++
++# retry tests with "fail" or "error" status at most 3 times
++for i in 0 1; do
++  # save each try under its own folder to preserve history
++  report_path="${i}/JTreport"
++  report_dir="${output_dir}/${report_path}"
++  jtreg ${jt_options} \
++    -verbose:summary \
++    -automatic \
++    -retain:none \
++    -ignore:quiet \
++    -agentvm \
++    -timeout:5 \
++    -workDir:"${jtwork_dir}" \
++    -reportDir:"${report_dir}" \
++    -jdk:${JDK_TO_TEST} \
++    ${on_retry:-} $@ \
++      && exit_code=0 || exit_code=$?
++
++  # copy .jtr files from failed tests for latter debugging
++  find "${jtwork_dir}" -name '*.jtr' -exec egrep -q '^execStatus=[^Pass]' {} \; -printf "%P\n" \
++    | while IF= read -r jtr; do
++        jtr_dir=$(dirname "${output_dir}/JTwork/${jtr}")
++        mkdir -p "${jtr_dir}"
++        cp --update --preserve --backup=numbered "${jtwork_dir}/${jtr}" "${output_dir}/JTwork/${jtr}"
++        # copy all generated hs_err_pid log into the jtr's directory to easy debugging
++        if grep -qhE 'hs_err_pid[0-9]+\.log' "${output_dir}/JTwork/${jtr}"; then
++            grep -hEo '/[^ ]*/hs_err_pid[0-9]+\.log' "${output_dir}/JTwork/${jtr}" \
++                | xargs cp --update --preserve --backup=numbered -t "${jtr_dir}" \
++                || echo "Warning: unable to find hs_err log for ${jtr}"
++        fi
++    done
++
++  # break if jtdiff reports no difference from previous run
++  # also deletes the just created JTreport
++  # DISABLED: don't use it for now as flaky tests could still pass given more retries
++  #jtdiff "${output_dir}/JTreport" "$report_dir" >/dev/null 2>&1 \
++  #  && rm -rf "${report_dir}" && break
++
++  # link latest JTreport to output_dir
++  ln -sf -t "${output_dir}" "${report_path}"
++
++  # if all test passed there is not need for a retry
++  if [ "x${exit_code}" == "x0" ]; then break; fi
++
++  # only retry tests with fail/error status
++  on_retry="-status:fail,error"
++done
++
++exit $exit_code
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..81d1c2b31323681d2f11fba5145887dc94cbfd9a
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,133 @@@
++#!/bin/bash
++set -o errexit
++set -o errtrace
++set -o pipefail
++set -o nounset
++
++testsuite=$1
++shift
++
++if [ -z "${AUTOPKGTEST_TMP+x}" ] || [ -z "${AUTOPKGTEST_ARTIFACTS+x}" ]; then
++  echo "Environment variables AUTOPKGTEST_TMP and AUTOPKGTEST_ARTIFACTS must be set" >&2
++  exit 1
++fi
++
++host_arch="${DEB_HOST_ARCH:-$(dpkg --print-architecture)}"
++
++if [ -z "${JDK_TO_TEST+x}" ]; then
++  JDK_TO_TEST=$(echo /usr/lib/jvm/java-17-openjdk-amd64 | sed "s/-[^-]*$/-$host_arch/")
++fi
++
++jtreg_version="$(dpkg-query -W jtreg6 | cut -f2)"
++
++# set additional jtreg options
++jt_options="${JTREG_OPTIONS:-}"
++if [[ "armel" == *"${host_arch}"* ]]; then
++  jt_options+=" -Xmx256M"
++fi
++if dpkg --compare-versions ${jtreg_version} ge 4.2; then
++  jt_options+=" -conc:auto"
++fi
++  
++# check java binary
++if [ ! -x "${JDK_TO_TEST}/bin/java" ]; then
++  echo "Error: '${JDK_TO_TEST}/bin/java' is not an executable." >&2
++  exit 1
++fi
++
++# restrict the tests to a few archs (set from debian/rules)
++if ! echo "${host_arch}" | grep -qE "^($(echo amd64 i386 arm64 armhf ppc64 ppc64el s390x alpha ia64 powerpc ppc64 sh4 x32 armel mipsel mips64el riscv64 | tr ' ' '|'))$"; then
++  echo "Error: ${host_arch} is not on the jtreg_archs list, ignoring it."
++  exit 77
++fi
++
++jtreg_processes() {
++  ps x -ww -o pid,ppid,args \
++    | awk '$2 == 1 && $3 ~ /^\/scratch/' \
++    | sed "s,${JDK_TO_TEST},<sdkimg>,g;s,$(pwd),<pwd>,g"
++}
++
++jtreg_pids() {
++  ps x --no-headers -ww -o pid,ppid,args \
++    | awk "\$2 == 1 && \$3 ~ /^${JDK_TO_TEST//\//\\/}/ {print \$1}"
++}
++
++cleanup() {
++  # kill testsuite processes still hanging
++  pids="$(jtreg_pids)"
++  if [ -n "$pids" ]; then
++    echo "[$0] killing processes..."
++    jtreg_processes
++    kill -1 $pids
++    sleep 2
++    pids="$(jtreg_pids)"
++    if [ -n "$pids" ]; then
++      echo "[$0] try harder..."
++      jtreg_processes
++      kill -9 $pids
++      sleep 2
++    fi
++  else
++    echo "[$0] nothing to cleanup"
++  fi
++  pids="$(jtreg_pids)"
++  if [ -n "$pids" ]; then
++    echo "[$0] leftover processes..."
++    $(jtreg_processes)
++  fi
++}
++
++trap "cleanup" EXIT INT TERM ERR
++
++jtwork_dir="${AUTOPKGTEST_TMP}/${testsuite}/JTwork"
++output_dir="${AUTOPKGTEST_ARTIFACTS}/${testsuite}/"
++
++# retry tests with "fail" or "error" status at most 3 times
++for i in 0 1; do
++  # save each try under its own folder to preserve history
++  report_path="${i}/JTreport"
++  report_dir="${output_dir}/${report_path}"
++  jtreg ${jt_options} \
++    -verbose:summary \
++    -automatic \
++    -retain:none \
++    -ignore:quiet \
++    -agentvm \
++    -timeout:5 \
++    -workDir:"${jtwork_dir}" \
++    -reportDir:"${report_dir}" \
++    -jdk:${JDK_TO_TEST} \
++    ${on_retry:-} $@ \
++      && exit_code=0 || exit_code=$?
++
++  # copy .jtr files from failed tests for latter debugging
++  find "${jtwork_dir}" -name '*.jtr' -exec egrep -q '^execStatus=[^Pass]' {} \; -printf "%P\n" \
++    | while IF= read -r jtr; do
++        jtr_dir=$(dirname "${output_dir}/JTwork/${jtr}")
++        mkdir -p "${jtr_dir}"
++        cp --update --preserve --backup=numbered "${jtwork_dir}/${jtr}" "${output_dir}/JTwork/${jtr}"
++        # copy all generated hs_err_pid log into the jtr's directory to easy debugging
++        if grep -qhE 'hs_err_pid[0-9]+\.log' "${output_dir}/JTwork/${jtr}"; then
++            grep -hEo '/[^ ]*/hs_err_pid[0-9]+\.log' "${output_dir}/JTwork/${jtr}" \
++                | xargs cp --update --preserve --backup=numbered -t "${jtr_dir}" \
++                || echo "Warning: unable to find hs_err log for ${jtr}"
++        fi
++    done
++
++  # break if jtdiff reports no difference from previous run
++  # also deletes the just created JTreport
++  # DISABLED: don't use it for now as flaky tests could still pass given more retries
++  #jtdiff "${output_dir}/JTreport" "$report_dir" >/dev/null 2>&1 \
++  #  && rm -rf "${report_dir}" && break
++
++  # link latest JTreport to output_dir
++  ln -sf -t "${output_dir}" "${report_path}"
++
++  # if all test passed there is not need for a retry
++  if [ "x${exit_code}" == "x0" ]; then break; fi
++
++  # only retry tests with fail/error status
++  on_retry="-status:fail,error"
++done
++
++exit $exit_code
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..04637ea0b48306e1cf4818819c0ae4ecab6fcf14
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,8 @@@
++#!/bin/bash
++set -o errexit
++set -o errtrace
++set -o pipefail
++set -o nounset
++
++debian/tests/jtreg-autopkgtest.sh langtools -exclude:test/langtools/ProblemList.txt -dir:test/langtools jdk tools lib || true
++debian/tests/jtdiff-autopkgtest.sh langtools
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..423d73ad3cea294a673a63083401e1e1da80ebb1
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,19 @@@
++#!/bin/bash
++set -o errexit
++set -o errtrace
++set -o pipefail
++set -o nounset
++
++if [ -z "${AUTOPKGTEST_TMP+x}" ] || [ -z "${AUTOPKGTEST_ARTIFACTS+x}" ]; then
++  echo "Environment variables AUTOPKGTEST_TMP and AUTOPKGTEST_ARTIFACTS must be set" >&2
++  exit 1
++fi
++
++export HOME="${HOME:-${AUTOPKGTEST_TMP}}"
++export XAUTHORITY="${HOME}/.Xauthority"
++
++exec xvfb-run --server-num=${1:-10} \
++  --error-file="${AUTOPKGTEST_ARTIFACTS}/xvfb-run.log" \
++  --auth-file=${XAUTHORITY} \
++  --server-args="-fbdir ${AUTOPKGTEST_TMP} -pixdepths 8 16 24 32 -extension GLX -screen 0 1600x900x24" \
++  xfwm4
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8df65cf0defad0b12512b623b3d30ec5a18a6456
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..af38b9247708e3c5d3b67f362925d238397a7f9f
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -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/watch
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ea6b16e0e46dd14021d56d95a708664a8d70c33d
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,4 @@@
++version=4
++opts="filenamemangle=s%(?:.*?)?jdk-(\d[\d.]*\+\d[\d]*)\.tar\.gz%<project>-$1.tar.gz%, dversionmangle=s/~/+/" \
++   https://github.com/openjdk/jdk17u/tags \
++   (?:.*?/)?jdk-(\d[\d.]*\+\d[\d]*)\.tar\.gz debian uupdate