Binary files 8u312-b07-1/corba.tar.xz and 8u312-b07-0ubuntu1/corba.tar.xz differ
diff -pruN 8u312-b07-1/debian/accessibility-atk.properties.disabled 8u312-b07-0ubuntu1/debian/accessibility-atk.properties.disabled
--- 8u312-b07-1/debian/accessibility-atk.properties.disabled	2021-07-29 18:29:18.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/accessibility-atk.properties.disabled	2015-03-17 00:13:29.000000000 +0000
@@ -1,5 +1,5 @@
 #
-# The following line specifies the assistive technology classes
+# 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
diff -pruN 8u312-b07-1/debian/accessibility-atk.properties.enabled 8u312-b07-0ubuntu1/debian/accessibility-atk.properties.enabled
--- 8u312-b07-1/debian/accessibility-atk.properties.enabled	2021-07-29 18:29:18.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/accessibility-atk.properties.enabled	2015-09-03 12:10:32.000000000 +0000
@@ -1,5 +1,5 @@
 #
-# The following line specifies the assistive technology classes
+# 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
diff -pruN 8u312-b07-1/debian/accessibility.properties 8u312-b07-0ubuntu1/debian/accessibility.properties
--- 8u312-b07-1/debian/accessibility.properties	2021-07-29 18:29:18.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/accessibility.properties	2015-03-17 00:13:29.000000000 +0000
@@ -1,5 +1,5 @@
 #
-# The following line specifies the assistive technology classes
+# 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
diff -pruN 8u312-b07-1/debian/buildwatch.sh 8u312-b07-0ubuntu1/debian/buildwatch.sh
--- 8u312-b07-1/debian/buildwatch.sh	2021-05-03 18:16:40.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/buildwatch.sh	2019-06-10 09:40:40.000000000 +0000
@@ -2,7 +2,7 @@
 
 #
 # Output something to stdout every so often so buildd won't kill
-# the build when building
+# the build when building 
 #
 
 builddir=$1
@@ -21,7 +21,7 @@ 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() {
+is_running() { 
     ps x | grep -v grep | egrep -qs $@
     return $?
 }
diff -pruN 8u312-b07-1/debian/changelog 8u312-b07-0ubuntu1/debian/changelog
--- 8u312-b07-1/debian/changelog	2021-11-05 23:57:58.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/changelog	2021-11-03 12:27:30.000000000 +0000
@@ -1,50 +1,45 @@
-openjdk-8 (8u312-b07-1) unstable; urgency=medium
+openjdk-8 (8u312-b07-0ubuntu1) jammy; urgency=medium
 
-  * New upstream release (GA)
-  * Security fixes:
-    - JDK-8130183, CVE-2021-35588: InnerClasses: VM permits wrong
-      Throw ClassFormatError if InnerClasses attribute's
-      inner_class_info_index is 0
-    - JDK-8161016: Strange behavior of URLConnection with proxy
-    - JDK-8163326, CVE-2021-35550: Update the default enabled cipher
-      suites preference
-    - JDK-8254967, CVE-2021-35565: com.sun.net.HttpsServer spins on
-      TLS session close
-    - JDK-8263314: Enhance XML Dsig modes
-    - JDK-8265167, CVE-2021-35556: Richer Text Editors
-    - JDK-8265574: Improve handling of sheets
-    - JDK-8265580, CVE-2021-35559: Enhanced style for RTF kit
-    - JDK-8265776: Improve Stream handling for SSL
-    - JDK-8266097, CVE-2021-35561: Better hashing support
-    - JDK-8266103: Better specified spec values
-    - JDK-8266109: More Resilient Classloading
-    - JDK-8266115: More Manifest Jar Loading
-    - JDK-8266137, CVE-2021-35564: Improve Keystore integrity
-    - JDK-8266689, CVE-2021-35567: More Constrained Delegation
+  * Update to 8u312-b07 (GA).
+  * Security fixes
+    - JDK-8130183, CVE-2021-35588: InnerClasses: VM permits wrong Throw
+      ClassFormatError if InnerClasses attribute's inner_class_info_index is 0.
+    - JDK-8161016: Strange behavior of URLConnection with proxy.
+    - JDK-8163326, CVE-2021-35550: Update the default enabled cipher suites
+      preference.
+    - JDK-8254967, CVE-2021-35565: com.sun.net.HttpsServer spins on TLS
+      session close.
+    - JDK-8263314: Enhance XML Dsig modes.
+    - JDK-8265167, CVE-2021-35556: Richer Text Editors.
+    - JDK-8265574: Improve handling of sheets.
+    - JDK-8265580, CVE-2021-35559: Enhanced style for RTF kit.
+    - JDK-8265776: Improve Stream handling for SSL.
+    - JDK-8266097, CVE-2021-35561: Better hashing support.
+    - JDK-8266103: Better specified spec values.
+    - JDK-8266109: More Resilient Classloading.
+    - JDK-8266115: More Manifest Jar Loading.
+    - JDK-8266137, CVE-2021-35564: Improve Keystore integrity.
+    - JDK-8266689, CVE-2021-35567: More Constrained Delegation.
     - JDK-8267086: ArrayIndexOutOfBoundsException in
-      java.security.KeyFactory.generatePublic
-    - JDK-8267712: Better LDAP reference processing
-    - JDK-8267729, CVE-2021-35578: Improve TLS client handshaking
-    - JDK-8267735, CVE-2021-35586: Better BMP support
-    - JDK-8268193: Improve requests of certificates
-    - JDK-8268199: Correct certificate requests
-    - JDK-8268506: More Manifest Digests
-    - JDK-8269618, CVE-2021-35603: Better session identification
-    - JDK-8269624: Enhance method selection support
-    - JDK-8270398: Enhance canonicalization
-    - JDK-8270404: Better canonicalization
-  * Other changes: see
-    https://mail.openjdk.java.net/pipermail/jdk8u-dev/2021-October/014373.html
-  * Policy 4.6.1, no relevant changes
-  * d/copyright: Apply changes since 8u302
-  * Upload sponsored by ⮡ tarent
+      java.security.KeyFactory.generatePublic.
+    - JDK-8267712: Better LDAP reference processing.
+    - JDK-8267729, CVE-2021-35578: Improve TLS client handshaking.
+    - JDK-8267735, CVE-2021-35586: Better BMP support.
+    - JDK-8268193: Improve requests of certificates.
+    - JDK-8268199: Correct certificate requests.
+    - JDK-8268506: More Manifest Digests.
+    - JDK-8269618, CVE-2021-35603: Better session identification.
+    - JDK-8269624: Enhance method selection support.
+    - JDK-8270398: Enhance canonicalization.
+    - JDK-8270404: Better canonicalization.
+  * Use mktemp instead of tempfile in maintainer script.
 
- -- Thorsten Glaser <tg@mirbsd.de>  Fri, 05 Nov 2021 23:57:58 +0000
+ -- Matthias Klose <doko@ubuntu.com>  Wed, 03 Nov 2021 14:27:30 +0200
 
-openjdk-8 (8u302-b08-1) unstable; urgency=medium
+openjdk-8 (8u302-b08-0ubuntu2) impish; urgency=medium
 
-  * New upstream release (GA)
-  * Security fixes:
+  * Update to 8u302-b08 (GA).
+  * Security fixes
     - JDK-8256157: Improve bytecode assembly
     - JDK-8256491: Better HTTP transport
     - JDK-8258432, CVE-2021-2341: Improve file transfers
@@ -59,66 +54,10 @@ openjdk-8 (8u302-b08-1) unstable; urgenc
     - JDK-8264066, CVE-2021-2388: Enhance compiler validation
     - JDK-8264079: Improve abstractions
     - JDK-8264460: Improve NTLM support
-  * Other changes: see
-    https://mail.openjdk.java.net/pipermail/jdk8u-dev/2021-July/014118.html
-  * Add or update d/copyright lines, based on diffing upstream changes
-  * Refresh all patches that are actually used and drop no longer needed
-    d/p/compare-pointer-with-literal.patch
-  * Fix spelling in d/rules
-  * Upload sponsored by ⮡ tarent
-
- -- Thorsten Glaser <tg@mirbsd.de>  Thu, 29 Jul 2021 20:45:23 +0200
-
-openjdk-8 (8u292-b10-3) unstable; urgency=medium
-
-  * Re-upload with actually regenerated debian/control, oops
-
- -- Thorsten Glaser <tg@mirbsd.de>  Thu, 24 Jun 2021 00:05:48 +0200
-
-openjdk-8 (8u292-b10-2) unstable; urgency=low
-
-  * Fix regression in /etc/java-8-openjdk/accessibility.properties
-  * Drop Suggests nōnexistent icedtea-8-plugin
-  * Fix binfmts error with patch from bug (Closes: #822348)
-  * Create /usr/share/man/man1 if it doesn’t exist, for crippled
-    container images (Closes: #863199)
-  * Provide java-runtime{,-headless} (Closes: #906111)
-  * Mark openjdk-8-doc as M-A:foreign
-  * Update “It was downloaded from” in d/copyright (cf. #970517)
-
- -- Thorsten Glaser <tg@mirbsd.de>  Tue, 15 Jun 2021 22:23:01 +0200
-
-openjdk-8 (8u292-b10-1) unstable; urgency=medium
-
-  * Source-only upload after the previous bootstrap binary one
-  * Change -Xmx1024m to -Xmx1000m in icedtea-sound compilation
-    to work with mipsel’s memory layout (and sh4)
-  * Don’t set old-style ALT_ environment variables, they are ignored
-  * Create the origtgz in a hopefully reproducible way
-  * Merge openjdk-8 (8u292-b10-0+deb9u1)
-    - Revert bogus reversion of changes from previous uploads
-    - Add missing changelog entry for 8u275
-    - Revert *buntu ESM-related changes
-    - Undo an inconsistency in fetch-orig
-  * Fix whitespace
-  * Upgrade aarch32 to 8u292 GA
-  * Build with reproducible LC_ALL=C setting
-  * Obtain origtgz from https or, when not possible (icedtea-sound),
-    check SHA256 against one I manually downloaded and checked, using
-    the (expired…) key from pyconfigure’s signing keyring, which,
-    unlike the keyserver network, contains the key used
-  * Abort fetching origtgz if it fails, don’t soldier on to fail later
-  * Document reasons some tests fail (more building on older releases)
-  * Update lintian overrides (for sid)
-
- -- Thorsten Glaser <tg@mirbsd.de>  Mon, 26 Apr 2021 17:00:54 +0200
-
-openjdk-8 (8u292-b10-0+deb9u1) stretch-security; urgency=medium
-
-  * Merge with Ubuntu.
-  * Update to 8u292-b10 (GA).
+  * Other changes:
+    See https://mail.openjdk.java.net/pipermail/jdk8u-dev/2021-July/014118.html
 
- -- Emilio Pozuelo Monfort <pochu@debian.org>  Wed, 21 Apr 2021 13:13:15 +0200
+ -- Matthias Klose <doko@ubuntu.com>  Mon, 23 Aug 2021 16:45:43 +0200
 
 openjdk-8 (8u292-b10-0ubuntu1) hirsute; urgency=medium
 
@@ -135,46 +74,6 @@ openjdk-8 (8u292-b10-0ubuntu1) hirsute;
 
  -- Matthias Klose <doko@ubuntu.com>  Wed, 21 Apr 2021 12:25:15 +0200
 
-openjdk-8 (8u282-b08-2) unstable; urgency=medium
-
-  * Reupload to sid, under new maintainership (Debian Java team);
-    cf. https://lists.debian.org/debian-java/2021/03/msg00021.html
-    (and surrounding thread); sponsored by ⮡ tarent
-  * Readd improvements from 8u275-b01-1, lost changelog entries
-  * Add NEWS to openjdk-8-jre-headless (because all other depend on
-    that) regarding OpenJDK 8 not being supported
-  * Use GCC 10 to build on bullseye, sid, groovy and hirsute (that
-    means GCC 9 on focal only) (Closes: #978519)
-  * Silence postinst warning about removed -XX:PermSize option
-  * Switch to mktemp(1)
-  * Drop unused patches (keep a couple which just need updating)
-  * Update README.source a little
-  * G/C long-dead code from postinst, too
-  * If the testsuite is disabled during generation of debian/control
-    omit test-only dependencies
-  * Upload with binaries built using the previous openjdk-8 binaries
-    because openjdk-8-jdk is required for bootstrapping; 7 works but
-    11 cannot be used :/ a source-only upload will follow
-  * Skip testsuite for first bootstrap, saving lots of time/CPU
-  * Address some issues lintian reported; update a number of overrides
-
- -- Thorsten Glaser <tg@mirbsd.de>  Fri, 26 Mar 2021 00:48:09 +0100
-
-openjdk-8 (8u282-b08-1) bullseye; urgency=medium
-
-  * Team upload.
-  * Provide builds for bullseye/sid (for a personal repository),
-    buster (for the same), stretch (for LTS), jessie (for ELTS)
-    and wheezy (also for that personal repository)
-  * Move @bd_bootstrap@ high up in Build-Depends so the resolver tries
-    to fulfil it first
-  * Require an openjdk-8 to bootstrap (a previous build)
-  * Let openjdk-8-jre-headless fulfill default-jre-headless (>= 2:1.8)
-    in <!nocheck>; the latter is only used with distros whose default
-    JRE is older than 8, to avoid accidental use of 11
-
- -- Thorsten Glaser <t.glaser@tarent.de>  Sun, 14 Feb 2021 00:42:46 +0100
-
 openjdk-8 (8u282-b08-0ubuntu1) hirsute; urgency=medium
 
   * Update to 8u282-b08 (GA).
@@ -190,25 +89,6 @@ openjdk-8 (8u282-b07-0ubuntu1) hirsute;
 
  -- Tiago Stürmer Daitx <tiago.daitx@ubuntu.com>  Thu, 07 Jan 2021 00:16:35 +0000
 
-openjdk-8 (8u275-b01-1~deb9u1) stretch-security; urgency=medium
-
-  * Team upload.
-  * Provide 8u275-b01 (GA) regression fixes
-
- -- Thorsten Glaser <tg@mirbsd.de>  Wed, 02 Dec 2020 11:15:53 +0100
-
-openjdk-8 (8u275-b01-1) unstable; urgency=medium
-
-  * Team upload.
-  * Merge back into Debian
-    - Revert Maintainer change
-  * Drop unused patch (which is already merged upstream)
-  * Correct hg_tag, hg_tag_aarch64, hg_tag_aarch32 in debian/rules
-  * Really update the origtgz to 8u275 instead of hackedly patching
-  * Quell some lintian warnings
-
- -- Thorsten Glaser <tg@mirbsd.de>  Wed, 02 Dec 2020 09:51:35 +0100
-
 openjdk-8 (8u275-b01-0ubuntu1) hirsute; urgency=medium
 
   * Update to 8u275-b01 (GA). Patch aarch32 and aarch64 to 8u275-b01.
@@ -220,13 +100,6 @@ openjdk-8 (8u275-b01-0ubuntu1) hirsute;
 
  -- Tiago Stürmer Daitx <tiago.daitx@ubuntu.com>  Mon, 09 Nov 2020 02:08:45 +0000
 
-openjdk-8 (8u272-b10-1) unstable; urgency=medium
-
-  * Team upload.
-  * Upload latest security fixes (thanks!) to sid
-
- -- Thorsten Glaser <tg@mirbsd.de>  Mon, 26 Oct 2020 21:29:16 +0100
-
 openjdk-8 (8u272-b10-0ubuntu1) hirsute; urgency=medium
 
   * Update to 8u272-b10 (GA). Patch aarch32 to 8u272-b10.
@@ -256,33 +129,6 @@ openjdk-8 (8u272-b10-0ubuntu1) hirsute;
 
  -- Tiago Stürmer Daitx <tiago.daitx@ubuntu.com>  Thu, 22 Oct 2020 00:12:59 +0000
 
-openjdk-8 (8u272-b10-0+deb9u1) stretch-security; urgency=medium
-
-  * Update to 8u272-b10 (GA).
-  * Security fixes:
-    - JDK-8233624: Enhance JNI linkage
-    - JDK-8236196: Improve string pooling
-    - JDK-8236862, CVE-2020-14779: Enhance support of Proxy class
-    - JDK-8237990, CVE-2020-14781: Enhanced LDAP contexts
-    - JDK-8237995, CVE-2020-14782: Enhance certificate processing
-    - JDK-8240124: Better VM Interning
-    - JDK-8241114, CVE-2020-14792: Better range handling
-    - JDK-8242680, CVE-2020-14796: Improved URI Support
-    - JDK-8242685, CVE-2020-14797: Better Path Validation
-    - JDK-8242695, CVE-2020-14798: Enhanced buffer support
-    - JDK-8243302: Advanced class supports
-    - JDK-8244136, CVE-2020-14803: Improved Buffer supports
-    - JDK-8244479: Further constrain certificates
-    - JDK-8244955: Additional Fix for JDK-8240124
-    - JDK-8245407: Enhance zoning of times
-    - JDK-8245412: Better class definitions
-    - JDK-8245417: Improve certificate chain handling
-    - JDK-8248574: Improve jpeg processing
-    - JDK-8249927: Specify limits of jdk.serialProxyInterfaceLimit
-    - JDK-8253019: Enhanced JPEG decoding
-
- -- Emilio Pozuelo Monfort <pochu@debian.org>  Wed, 21 Oct 2020 23:52:22 +0200
-
 openjdk-8 (8u272~b09-0ubuntu1) groovy; urgency=medium
 
   * Update to 8u272-b09 (early access build).
@@ -290,20 +136,6 @@ openjdk-8 (8u272~b09-0ubuntu1) groovy; u
 
  -- Tiago Stürmer Daitx <tiago.daitx@ubuntu.com>  Thu, 08 Oct 2020 14:57:35 +0000
 
-openjdk-8 (8u265-b01-1) unstable; urgency=medium
-
-  * Team upload.
-  * Upload to unstable (no comment…). Thanks!
-
- -- Thorsten Glaser <tg@mirbsd.de>  Thu, 13 Aug 2020 21:26:36 +0200
-
-openjdk-8 (8u265-b01-0+deb9u1) stretch-security; urgency=medium
-
-  * Non-maintainer upload by the LTS Team.
-  * Merge changes from 8u265-b01-0ubuntu2.
-
- -- Emilio Pozuelo Monfort <pochu@debian.org>  Wed, 12 Aug 2020 10:17:29 +0200
-
 openjdk-8 (8u265-b01-0ubuntu2) groovy; urgency=medium
 
   * Improve build times and autopkgtest runs by ignoring time
diff -pruN 8u312-b07-1/debian/control 8u312-b07-0ubuntu1/debian/control
--- 8u312-b07-1/debian/control	2021-11-05 23:57:19.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/control	2021-11-03 12:27:30.000000000 +0000
@@ -1,20 +1,25 @@
 Source: openjdk-8
 Section: java
 Priority: optional
-Maintainer: Java Maintenance <debian-java@lists.debian.org>
-Uploaders: Thorsten Glaser <tg@mirbsd.de>
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+XSBC-Original-Maintainer: OpenJDK Team <openjdk@lists.launchpad.net>
+Uploaders: Matthias Klose <doko@ubuntu.com>
 Build-Depends: debhelper (>= 9), quilt, m4, lsb-release, zip, unzip,
-  openjdk-8-jdk,
   sharutils, gawk, cpio, pkg-config, procps, wdiff, tzdata,
-  xvfb<!nocheck>, xauth<!nocheck>, xfonts-base<!nocheck>, libgl1-mesa-dri [!x32]<!nocheck>, xfwm4<!nocheck>, x11-xkb-utils<!nocheck>, dbus-x11<!nocheck>, jtreg<!nocheck>, testng<!nocheck>, openjdk-8-jre-headless<!nocheck> | default-jre-headless (>= 2:1.8)<!nocheck>, time,
-  autoconf (>= 2.69), automake, autotools-dev, ant, ant-optional, fastjar (>= 2:0.96-0ubuntu2),
-  g++-10, 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, libgtk2.0-dev,  libffi-dev,
+  xvfb<!nocheck>, xauth<!nocheck>, xfonts-base<!nocheck>, libgl1-mesa-dri [!x32]<!nocheck>, xfwm4<!nocheck>, x11-xkb-utils<!nocheck>, dbus-x11<!nocheck>,
+  jtreg<!nocheck>, testng<!nocheck>, time,
+  fastjar (>= 2:0.96-0ubuntu2),
+  autoconf (>= 2.69), automake, autotools-dev, ant, ant-optional,
+  g++-11,
+  openjdk-8-jdk | openjdk-7-jdk,
+  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, libgtk2.0-dev,
+  libffi-dev, 
   zlib1g-dev, libattr1-dev, libpng-dev, libjpeg-dev, libgif-dev, libpulse-dev (>= 0.9.12) [!alpha], systemtap-sdt-dev [!sh4],
   libnss3-dev (>= 2:3.17.1), openjdk-8-jdk-headless <cross>, dpkg-dev (>= 1.17.14),
-Standards-Version: 4.6.0
+Standards-Version: 4.5.0
 Homepage: http://openjdk.java.net/
-VCS-git: https://evolvis.org/anonscm/git/alioth/openjdk-8.git -b master
-VCS-Browser: https://evolvis.org/plugins/scmgit/cgi-bin/gitweb.cgi?p=alioth/openjdk-8.git;a=shortlog;h=refs/heads/master
+Vcs-Bzr: http://bazaar.launchpad.net/~openjdk/openjdk/openjdk8
+Vcs-Browser: https://code.launchpad.net/~openjdk/openjdk/openjdk8
 
 Package: openjdk-8-jdk-headless
 Architecture: alpha amd64 armel armhf arm64 i386 ia64 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el m68k sh4 sparc sparc64 s390x x32 kfreebsd-i386 kfreebsd-amd64
@@ -32,10 +37,6 @@ Description: OpenJDK Development Kit (JD
  OpenJDK is a development environment for building applications,
  applets, and components using the Java programming language.
  .
- This binary package contains almost the full JDK, except for some
- tools (appletviewer, jconsole) and headers (jawt) that make sense
- only in GUI environments.
- .
  The packages are built using the IcedTea build support and patches
  from the IcedTea project.
 
@@ -51,7 +52,7 @@ 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,
+Provides: java2-runtime-headless,
   java5-runtime-headless, java6-runtime-headless,
   java7-runtime-headless, java8-runtime-headless,
   ${defaultvm:Provides}, ${jvm:Provides}
@@ -79,9 +80,6 @@ Description: OpenJDK Development Kit (JD
  OpenJDK is a development environment for building applications,
  applets, and components using the Java programming language.
  .
- This binary package extends the headless JDK with GUI-specific
- utilities, libraries and, as necessary, package dependencies.
- .
  The packages are built using the IcedTea build support and patches
  from the IcedTea project.
 
@@ -94,8 +92,9 @@ Depends: openjdk-8-jre-headless (= ${bin
   ${dlopenjre:Depends}, ${dep:bridge},
   ${shlibs:Depends}, ${misc:Depends}
 Recommends: ${dlopenjre:Recommends}, fonts-dejavu-extra
+Suggests: icedtea-8-plugin, ${pkg:pulseaudio}
 Replaces: openjdk-8-jre-headless (<< 8u20~b20-3)
-Provides: java-runtime, java2-runtime,
+Provides: java2-runtime,
   java5-runtime, java6-runtime,
   java7-runtime, java8-runtime
 Description: OpenJDK Java runtime, using ${vm:Name}
@@ -107,6 +106,7 @@ Description: OpenJDK Java runtime, using
 
 Package: openjdk-8-demo
 Architecture: alpha amd64 armel armhf arm64 i386 ia64 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el m68k sh4 sparc sparc64 s390x x32 kfreebsd-i386 kfreebsd-amd64
+Priority: optional
 Pre-Depends: ${dpkg:Depends}
 Depends: openjdk-8-jre (= ${binary:Version}),
   ${shlibs:Depends}, ${misc:Depends}
@@ -118,6 +118,7 @@ Description: Java runtime based on OpenJ
 
 Package: openjdk-8-source
 Architecture: all
+Priority: optional
 Pre-Depends: ${dpkg:Depends}
 Depends: openjdk-8-jre (>= ${source:Version}),
   openjdk-8-jdk (>= ${binary:Version}),
@@ -137,7 +138,7 @@ Package: openjdk-8-doc
 Section: doc
 Pre-Depends: ${dpkg:Depends}
 Architecture: all
-Multi-Arch: foreign
+Priority: optional
 Depends: ${misc:Depends}
 Suggests: openjdk-8-jdk
 Description: OpenJDK Development Kit (JDK) documentation
@@ -152,6 +153,7 @@ Description: OpenJDK Development Kit (JD
 Package: openjdk-8-dbg
 Architecture: alpha amd64 armel armhf arm64 i386 ia64 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el m68k sh4 sparc sparc64 s390x x32 kfreebsd-i386 kfreebsd-amd64
 Multi-Arch: same
+Priority: optional
 Section: debug
 Pre-Depends: ${dpkg:Depends}
 Depends: openjdk-8-jre-headless (= ${binary:Version}),
@@ -168,13 +170,14 @@ Description: Java runtime based on OpenJ
  from the IcedTea project.
 
 Package: openjdk-8-jre-zero
-Architecture: amd64 i386 arm64 ppc64 ppc64el sparc64 armhf kfreebsd-amd64 kfreebsd-i386
+Architecture: amd64 i386 arm64 ppc64 ppc64el sparc64 armhf kfreebsd-amd64 kfreebsd-i386 
 Multi-Arch: same
+Priority: optional
 Pre-Depends: ${dpkg:Depends}
 Depends: openjdk-8-jre-headless (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
 Provides: ${zerovm:Provides}
 Description: Alternative JVM for OpenJDK, using Zero/Shark
- The package provides an alternative runtime using the Zero VM and the
+ The package provides an alternative runtime using the Zero VM and the 
  Shark Just In Time Compiler (JIT).  Built on architectures in addition
  to the Hotspot VM as a debugging aid for those architectures which don't
  have a Hotspot VM.
diff -pruN 8u312-b07-1/debian/control.cacao-jre 8u312-b07-0ubuntu1/debian/control.cacao-jre
--- 8u312-b07-1/debian/control.cacao-jre	2021-05-03 18:16:40.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/control.cacao-jre	2018-03-15 17:19:50.000000000 +0000
@@ -2,11 +2,12 @@
 Package: openjdk-8-jre-cacao
 Architecture: @cacao_archs@
 Multi-Arch: same
+Priority: optional
 Pre-Depends: ${dpkg:Depends}
 Depends: @basename@-jre-headless (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
 Provides: icedtea6-jre-cacao
 Description: Alternative JVM for OpenJDK, using Cacao
- The package provides an alternative runtime using the Cacao VM and the
+ The package provides an alternative runtime using the Cacao VM and the 
  Cacao Just In Time Compiler (JIT).  This is a somewhat faster alternative
  than the Zero port on architectures like alpha, armel, m68k, mips, mipsel,
  powerpc and s390.
diff -pruN 8u312-b07-1/debian/control.in 8u312-b07-0ubuntu1/debian/control.in
--- 8u312-b07-1/debian/control.in	2021-11-05 23:49:36.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/control.in	2021-02-28 13:31:32.000000000 +0000
@@ -1,20 +1,25 @@
 Source: @basename@
 Section: java
 Priority: optional
-Maintainer: Java Maintenance <debian-java@lists.debian.org>
-Uploaders: Thorsten Glaser <tg@mirbsd.de>
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+XSBC-Original-Maintainer: OpenJDK Team <openjdk@lists.launchpad.net>
+Uploaders: Matthias Klose <doko@ubuntu.com>
 Build-Depends: debhelper (>= 9), quilt, m4, lsb-release, zip, unzip,
-  @bd_bootstrap@
   sharutils, gawk, cpio, pkg-config, procps, wdiff, tzdata,
-  @bd_check@ time,
-  @bd_autotools@ @bd_ant@ @bd_fastjar@
-  @bd_gcc@ @bd_openjdk@ @bd_shark@ @bd_zero@
+  xvfb@nocheck@, xauth@nocheck@, xfonts-base@nocheck@, libgl1-mesa-dri [!x32]@nocheck@, xfwm4@nocheck@, x11-xkb-utils@nocheck@, dbus-x11@nocheck@,
+  jtreg@nocheck@, testng@nocheck@, time,
+  @bd_fastjar@
+  @bd_autotools@ @bd_ant@
+  @bd_gcc@
+  @bd_bootstrap@
+  @bd_openjdk@
+  @bd_zero@ @bd_shark@
   @bd_syslibs@ @bd_pulsejava@ @bd_systemtap@
   @bd_nss@ @bd_cross@
-Standards-Version: 4.6.0
+Standards-Version: 4.5.0
 Homepage: http://openjdk.java.net/
-VCS-git: https://evolvis.org/anonscm/git/alioth/openjdk-8.git -b master
-VCS-Browser: https://evolvis.org/plugins/scmgit/cgi-bin/gitweb.cgi?p=alioth/openjdk-8.git;a=shortlog;h=refs/heads/master
+Vcs-Bzr: http://bazaar.launchpad.net/~openjdk/openjdk/openjdk8
+Vcs-Browser: https://code.launchpad.net/~openjdk/openjdk/openjdk8
 
 Package: @basename@-jdk-headless
 Architecture: @any_archs@
@@ -32,10 +37,6 @@ Description: OpenJDK Development Kit (JD
  OpenJDK is a development environment for building applications,
  applets, and components using the Java programming language.
  .
- This binary package contains almost the full JDK, except for some
- tools (appletviewer, jconsole) and headers (jawt) that make sense
- only in GUI environments.
- .
  The packages are built using the IcedTea build support and patches
  from the IcedTea project.
 
@@ -51,7 +52,7 @@ Recommends: ${dlopenhl:Recommends}
 Suggests: libnss-mdns,
   @core_fonts@,
   @cjk_fonts@
-Provides: java-runtime-headless, java2-runtime-headless,
+Provides: java2-runtime-headless,
   java5-runtime-headless, java6-runtime-headless,
   java7-runtime-headless, java8-runtime-headless,
   ${defaultvm:Provides}, ${jvm:Provides}
@@ -79,9 +80,6 @@ Description: OpenJDK Development Kit (JD
  OpenJDK is a development environment for building applications,
  applets, and components using the Java programming language.
  .
- This binary package extends the headless JDK with GUI-specific
- utilities, libraries and, as necessary, package dependencies.
- .
  The packages are built using the IcedTea build support and patches
  from the IcedTea project.
 
@@ -94,8 +92,9 @@ Depends: @basename@-jre-headless (= ${bi
   ${dlopenjre:Depends}, ${dep:bridge},
   ${shlibs:Depends}, ${misc:Depends}
 Recommends: ${dlopenjre:Recommends}, @core_fonts@
+Suggests: icedtea-8-plugin, ${pkg:pulseaudio}
 Replaces: @basename@-jre-headless (<< 8u20~b20-3)
-Provides: java-runtime, java2-runtime,
+Provides: java2-runtime,
   java5-runtime, java6-runtime,
   java7-runtime, java8-runtime
 Description: OpenJDK Java runtime, using ${vm:Name}
@@ -107,6 +106,7 @@ Description: OpenJDK Java runtime, using
 
 Package: @basename@-demo
 Architecture: @any_archs@
+Priority: optional
 Pre-Depends: ${dpkg:Depends}
 Depends: @basename@-jre (= ${binary:Version}),
   ${shlibs:Depends}, ${misc:Depends}
@@ -118,6 +118,7 @@ Description: Java runtime based on OpenJ
 
 Package: @basename@-source
 Architecture: all
+Priority: optional
 Pre-Depends: ${dpkg:Depends}
 Depends: @basename@-jre (>= ${source:Version}),
   @basename@-jdk (>= ${binary:Version}),
@@ -137,7 +138,7 @@ Package: @basename@-doc
 Section: doc
 Pre-Depends: ${dpkg:Depends}
 Architecture: all
-Multi-Arch: foreign
+Priority: optional
 Depends: ${misc:Depends}
 Suggests: @basename@-jdk
 Description: OpenJDK Development Kit (JDK) documentation
@@ -152,6 +153,7 @@ Description: OpenJDK Development Kit (JD
 Package: @basename@-dbg
 Architecture: @any_archs@
 Multi-Arch: same
+Priority: optional
 Section: debug
 Pre-Depends: ${dpkg:Depends}
 Depends: @basename@-jre-headless (= ${binary:Version}),
diff -pruN 8u312-b07-1/debian/control.jamvm-trans 8u312-b07-0ubuntu1/debian/control.jamvm-trans
--- 8u312-b07-1/debian/control.jamvm-trans	2021-05-03 18:16:40.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/control.jamvm-trans	2017-08-23 18:31:28.000000000 +0000
@@ -9,3 +9,4 @@ Description: Transitional package for ob
  JamVM support was removed for recent versions of OpenJDK 8.
  .
  This is a transitional package which can be safely removed.
+
diff -pruN 8u312-b07-1/debian/control.zero-jre 8u312-b07-0ubuntu1/debian/control.zero-jre
--- 8u312-b07-1/debian/control.zero-jre	2021-05-03 18:16:40.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/control.zero-jre	2018-03-15 17:19:50.000000000 +0000
@@ -2,11 +2,12 @@
 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/Shark
- The package provides an alternative runtime using the Zero VM and the
+ The package provides an alternative runtime using the Zero VM and the 
  Shark Just In Time Compiler (JIT).  Built on architectures in addition
  to the Hotspot VM as a debugging aid for those architectures which don't
  have a Hotspot VM.
diff -pruN 8u312-b07-1/debian/copyright 8u312-b07-0ubuntu1/debian/copyright
--- 8u312-b07-1/debian/copyright	2021-11-05 23:57:58.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/copyright	2017-02-04 16:28:43.000000000 +0000
@@ -2,8 +2,8 @@ This package was debianized by Matthias
 Wed, 08 Aug 2007 15:55:39 +0200.
 
 It was downloaded from
-	https://hg.openjdk.java.net/
-	http://icedtea.classpath.org/
+	http://download.java.net/openjdk/jdk7/
+	http://ftp.gnome.org/pub/GNOME/sources/java-access-bridge/
 
 ------------------------------------------------------------------------------
 Upstream Authors:
@@ -37,22 +37,15 @@ Packaging:
     Matthias Klose
 
 ------------------------------------------------------------------------------
-Copyright:
+Copyright: 
 
 OpenJDK:
     Copyright © 1996-2007 Sun Microsystems, Inc.
-    Copyright © 1996-2021 Oracle and/or its affiliates.
+    Copyright © 1996-2014 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.
-    Portions Copyright © 2013–2016 Azul Systems, Inc.
-    Portions Copyright © 2021 Azul, Inc.
-    Portions Copyright © 2013–2021 Red Hat, Inc.
-    Portions Copyright © 2016 Google Inc.
-    Portions Copyright © 2019 Amazon.com, Inc. or its affiliates.
-    Portions Copyright © 2019–2020 SAP SE.
-    Portions Copyright © 2021 Huawei Technologies Co., Ltd.
 
 IcedTea Sound:
     Portions Copyright © 2008-2014 Red Hat, Inc.
@@ -69,7 +62,6 @@ Java Access Bridge:
 
 Packaging:
     Copyright © 2007-2014 Canonical Ltd.
-    Copyright © 2021 mirabilos and ⮡ tarent solutions GmbH
 
 ------------------------------------------------------------------------------
 License:
@@ -101,9 +93,9 @@ IcedTea Sound:
   IcedTea is licensed under the GPL v2. See `/usr/share/common-licenses/GPL-2'.
   The exception is: "CLASSPATH" EXCEPTION TO THE GPL.
 
-  The sound files (pulseaudio/testsounds/*.wav) were taken from the KDE Project
-  (www.kde.org). A copy of them can be obtained from
-  http://websvn.kde.org/branches/KDE/4.0/kdeartwork/sounds/ . They are licensed
+  The sound files (pulseaudio/testsounds/*.wav) were taken from the KDE Project 
+  (www.kde.org). A copy of them can be obtained from 
+  http://websvn.kde.org/branches/KDE/4.0/kdeartwork/sounds/ . They are licensed 
   by the copyright holders as GPLv2.
 
 OpenJDK:
@@ -125,7 +117,7 @@ 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
+ - 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
@@ -251,8 +243,8 @@ 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
+%% 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 ---
@@ -291,7 +283,7 @@ THE POSSIBILITY OF SUCH DAMAGE.
 
 --------------------------------------------------------------------------------
 
-%% This notice is provided with respect to BSDiff v4.3, which may be
+%% 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 ---
@@ -404,7 +396,7 @@ IF ADVISED OF THE POSSIBILITY OF SUCH DA
 
 -------------------------------------------------------------------------------
 
-%% This notice is provided with respect to CUP Parser Generator for
+%% 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 ---
@@ -496,7 +488,7 @@ site-policy@w3.org.
 
 -------------------------------------------------------------------------------
 
-%% This notice is provided with respect to Dynalink v0.5, which may be
+%% 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 ---
@@ -528,7 +520,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 
 -------------------------------------------------------------------------------
 
-%% This notice is provided with respect to Elliptic Curve Cryptography, which
+%% 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
@@ -554,7 +546,7 @@ systems) from the JRE bin directory rese
  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 General Public License, version 2, hence
+ as the successor of the GNU Library Public License, version 2, hence
  the version number 2.1.]
 
                             Preamble
@@ -602,7 +594,7 @@ modified by someone else and passed on,
 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.
-
+
   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
@@ -658,7 +650,7 @@ modification follow.  Pay close attentio
 "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.
-
+
                   GNU LESSER GENERAL PUBLIC LICENSE
    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
 
@@ -705,7 +697,7 @@ 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.
-
+
   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
@@ -763,7 +755,7 @@ instead of to this License.  (If a newer
 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.
-
+
   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.
@@ -814,7 +806,7 @@ Library will still fall under Section 6.
 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.
-
+
   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
@@ -876,7 +868,7 @@ restrictions of other proprietary librar
 accompany the operating system.  Such a contradiction means you cannot
 use both them and the Library together in an executable that you
 distribute.
-
+
   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
@@ -917,7 +909,7 @@ subject to these terms and conditions.
 restrictions on the recipients' exercise of the rights granted herein.
 You are not responsible for enforcing compliance by third parties with
 this License.
-
+
   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
@@ -969,7 +961,7 @@ conditions either of that version or of
 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.
-
+
   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
@@ -1003,7 +995,7 @@ SUCH HOLDER OR OTHER PARTY HAS BEEN ADVI
 DAMAGES.
 
                      END OF TERMS AND CONDITIONS
-
+
            How to Apply These Terms to Your New Libraries
 
   If you develop a new library, and you want it to be of the greatest
@@ -1053,7 +1045,7 @@ That's all there is to it!
 -------------------------------------------------------------------------------
 
 %% This notice is provided with respect to  ECMAScript Language
-Specification ECMA-262 Edition 5.1 which may be included with
+Specification ECMA-262 Edition 5.1 which may be included with 
 JRE 8, JDK 8, and OpenJDK 8.
 
 --- begin of LICENSE ---
@@ -1177,7 +1169,7 @@ SOFTWARE.
 
 -------------------------------------------------------------------------------
 
-%% This notice is provided with respect to FontConfig 2.5, which may be
+%% 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.
 
@@ -1206,7 +1198,7 @@ CONNECTION WITH THE USE OR PERFORMANCE O
 
 -------------------------------------------------------------------------------
 
-%% This notice is provided with respect to IAIK PKCS#11 Wrapper,
+%% 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 ---
@@ -1257,14 +1249,14 @@ POSSIBILITY OF SUCH DAMAGE.
 
 -------------------------------------------------------------------------------
 
-%% This notice is provided with respect to ICU4C 4.0.1 and ICU4J 4.4, which
+%% 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
+Copyright (c) 1995-2010 International Business Machines Corporation and others 
 
-All rights reserved.
+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
@@ -1294,7 +1286,7 @@ their respective owners.
 
 -------------------------------------------------------------------------------
 
-%% This notice is provided with respect to IJG JPEG 6b, which may be
+%% 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 ---
@@ -1333,7 +1325,7 @@ assumed by the product vendor.
 
 --------------------------------------------------------------------------------
 
-%% This notice is provided with respect to Joni v1.1.9, which may be
+%% 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 ---
@@ -1360,7 +1352,7 @@ SOFTWARE.
 
 -------------------------------------------------------------------------------
 
-%% This notice is provided with respect to JOpt-Simple v3.0,  which may be
+%% 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 ---
@@ -1390,7 +1382,7 @@ included with JRE 8, JDK 8, and OpenJDK
 
 --------------------------------------------------------------------------------
 
-%% This notice is provided with respect to Kerberos functionality, which
+%% 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 ---
@@ -1402,7 +1394,7 @@ which may be included with JRE 8, JDK 8,
 
 -------------------------------------------------------------------------------
 
-%% This notice is provided with respect to Kerberos functionality from
+%% 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 ---
@@ -1436,7 +1428,7 @@ FundsXpress, INC., which may be included
 
 -------------------------------------------------------------------------------
 
-%% This notice is provided with respect to Kronos OpenGL headers, which may be
+%% 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 ---
@@ -1469,7 +1461,7 @@ included with JDK 8 and OpenJDK 8 source
 
 -------------------------------------------------------------------------------
 
-%% This notice is provided with respect to libpng 1.5.4, which may be
+%% This notice is provided with respect to libpng 1.5.4, which may be 
 included with JRE 8, JDK 8, and OpenJDK 8.
 
 --- begin of LICENSE ---
@@ -1589,7 +1581,7 @@ July 7, 2011
 
 -------------------------------------------------------------------------------
 
-%% This notice is provided with respect to libungif 4.1.3, which may be
+%% This notice is provided with respect to libungif 4.1.3, which may be 
 included with JRE 8, JDK 8, and OpenJDK 8.
 
 --- begin of LICENSE ---
@@ -1618,7 +1610,7 @@ THE SOFTWARE.
 
 -------------------------------------------------------------------------------
 
-%% This notice is provided with respect to Little CMS 2.5, which may be
+%% This notice is provided with respect to Little CMS 2.5, which may be 
 included with JRE 8, JDK 8, and OpenJDK 8.
 
 --- begin of LICENSE ---
@@ -1737,7 +1729,7 @@ Mozilla Public License Version 2.0
     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
+    means a work that combines Covered Software with other material, in 
     a separate file or files, that is not Covered Software.
 
 1.8. "License"
@@ -2098,13 +2090,13 @@ are met:
    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:
+     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
+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
@@ -2122,7 +2114,7 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE PO
 
 -------------------------------------------------------------------------------
 
-%% This notice is provided with respect to PorterStemmer v4, which may be
+%% This notice is provided with respect to PorterStemmer v4, which may be 
 included with JRE 8, JDK 8, and OpenJDK 8.
 
 --- begin of LICENSE ---
@@ -2172,12 +2164,12 @@ SOFTWARE.
 
 -------------------------------------------------------------------------------
 
-%% This notice is provided with respect to RelaxNGCC v1.12, which may be
+%% 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.
+Copyright (c) 2000-2003 Daisuke Okajima and Kohsuke Kawaguchi.  
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
@@ -2222,7 +2214,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SU
 
 -------------------------------------------------------------------------------
 
-%% This notice is provided with respect to SAX 2.0.1, which may be included
+%% 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 ---
@@ -2253,7 +2245,7 @@ with JRE 8, JDK 8, and OpenJDK 8.
  operate with any other programs), even if such holder or other party has been
  advised of the possibility of such damages.
 
- Copyright Disclaimers
+ 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
@@ -2270,7 +2262,7 @@ with JRE 8, JDK 8, and OpenJDK 8.
  David Megginson, sax@megginson.com
  1998-05-11
 
- SAX 2.0
+ 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
@@ -2284,34 +2276,34 @@ with JRE 8, JDK 8, and OpenJDK 8.
 
 -------------------------------------------------------------------------------
 
-%% This notice is provided with respect to SoftFloat version 2b, which may be
+%% 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.
+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 ---
 
@@ -2350,7 +2342,7 @@ SOFTWARE.
 
 -------------------------------------------------------------------------------
 
-%% This notice is provided with respect to Thai Dictionary, which may be
+%% This notice is provided with respect to Thai Dictionary, which may be 
 included with JRE 8, JDK 8, and OpenJDK 8.
 
 --- begin of LICENSE ---
@@ -2571,7 +2563,7 @@ the property of their respective owners.
 
 -------------------------------------------------------------------------------
 
-%% This notice is provided with respect to UPX v3.01, which may be included
+%% This notice is provided with respect to UPX v3.01, which may be included 
 with JRE 8 on Windows.
 
 --- begin of LICENSE ---
@@ -2659,7 +2651,7 @@ SPECIAL EXCEPTION FOR COMPRESSED EXECUTA
       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 unmodified, i.e.
+   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
@@ -2757,13 +2749,13 @@ to do so,subject to the following condit
     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.
+    DAMAGE.  
 
 --- end of LICENSE ---
 
 -------------------------------------------------------------------------------
 
-%% This notice is provided with respect to X Window System 6.8.2, which may be
+%% 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 ---
@@ -3568,7 +3560,7 @@ info@urwpp.de or design@bigelowandholmes
 
 -------------------------------------------------------------------------------
 
-%% This notice is provided with respect to zlib v1.2.5, which may be included
+%% 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 ---
@@ -3600,94 +3592,17 @@ with JRE 8, JDK 8, and OpenJDK 8.
 
 -------------------------------------------------------------------------------
 
-Copyright (c) OASIS Open 2016-2019. All Rights Reserved.
-
-%% This notice is provided with respect to OASIS PKCS #11 Cryptographic Token
-Interface v3.0,  which may be included with JRE 8, JDK 8, and OpenJDK 8.
-
---- begin of LICENSE ---
-
-Copyright © OASIS Open 2020. All Rights Reserved.
-
-    All capitalized terms in the following text have the meanings
-assigned to them in the OASIS Intellectual Property Rights Policy (the
-"OASIS IPR Policy"). The full Policy may be found at the OASIS website:
-[http://www.oasis-open.org/policies-guidelines/ipr]
-
-    This document and 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 OASIS, except as needed for the purpose of
-developing any document or deliverable produced by an OASIS Technical
-Committee (in which case the rules applicable to copyrights, as set
-forth in the OASIS IPR Policy, 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 OASIS or its successors or assigns.
-
-    This document and the information contained herein is provided on an
-"AS IS" basis and OASIS 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. OASIS
-AND ITS MEMBERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THIS DOCUMENT OR ANY
-PART THEREOF.
-
-    [OASIS requests that any OASIS Party or any other party that
-believes it has patent claims that would necessarily be infringed by
-implementations of this OASIS Standards Final Deliverable, to notify
-OASIS TC Administrator and provide an indication of its willingness to
-grant patent licenses to such patent claims in a manner consistent with
-the IPR Mode of the OASIS Technical Committee that produced this
-deliverable.]
-
-    [OASIS invites any party to contact the OASIS TC Administrator if it
-is aware of a claim of ownership of any patent claims that would
-necessarily be infringed by implementations of this OASIS Standards
-Final Deliverable by a patent holder that is not willing to provide a
-license to such patent claims in a manner consistent with the IPR Mode
-of the OASIS Technical Committee that produced this OASIS Standards
-Final Deliverable. OASIS may include such claims on its website, but
-disclaims any obligation to do so.]
-
-    [OASIS takes no position regarding the validity or scope of any
-intellectual property or other rights that might be claimed to pertain
-to the implementation or use of the technology described in this OASIS
-Standards Final Deliverable or the extent to which any license under
-such rights might or might not be available; neither does it represent
-that it has made any effort to identify any such rights. Information on
-OASIS' procedures with respect to rights in any document or deliverable
-produced by an OASIS Technical Committee can be found on the OASIS
-website. Copies of claims of rights made available for publication and
-any assurances of licenses to be made available, or the result of an
-attempt made to obtain a general license or permission for the use of
-such proprietary rights by implementers or users of this OASIS Standards
-Final Deliverable, can be obtained from the OASIS TC Administrator.
-OASIS makes no representation that any information or list of
-intellectual property rights will at any time be complete, or that any
-claims in such list are, in fact, Essential Claims.]
-
---- end of LICENSE ---
-
--------------------------------------------------------------------------------
-
-%% This notice is provided with respect to the following which may be
+%% 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 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
+  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.
@@ -3712,7 +3627,7 @@ JAMVM:
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.
-
+ 
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
@@ -3720,12 +3635,12 @@ JAMVM:
 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
diff -pruN 8u312-b07-1/debian/dbg8.py 8u312-b07-0ubuntu1/debian/dbg8.py
--- 8u312-b07-1/debian/dbg8.py	2021-05-03 18:16:40.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/dbg8.py	2017-02-04 16:26:50.000000000 +0000
@@ -1,21 +1,21 @@
 # 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
@@ -56,7 +56,7 @@ class Types(object):
     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()
@@ -168,7 +168,7 @@ class CodeHeap:
         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
@@ -188,7 +188,7 @@ class CodeHeap:
 
     def inrange(self, x):
         # t("CodeHeap.inrange")
-        return self.lo <= x and self.hi > x
+        return self.lo <= x and self.hi > x 
     def findblob(self, pc):
         # t("CodeHeap.findblob")
         x = Types.as_long(pc)
@@ -334,7 +334,7 @@ class CodeCache:
                 # t("blob = heap.findblob(pc)")
                 blob = heap.findblob(pc)
             except Exception as arg:
-                # debug_write("@@ findblob excepted %s\n" % str(arg))
+                # debug_write("@@ findblob excepted %s\n" % str(arg)) 
                 # t("blob = None")
                 blob = None
             # t("if blob != None:")
@@ -548,7 +548,7 @@ class MethodBCIReader:
         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)
+        # debug_write("\npc_off = 0x%x\n" % pc_off) 
         pc_desc = self.find_pc_desc(pc_off)
         if pc_desc is None:
             return None
@@ -617,12 +617,12 @@ class Method(object):
         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
@@ -654,7 +654,7 @@ class Method(object):
         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 = ""
@@ -1058,7 +1058,7 @@ class OpenJDKUnwinder(Unwinder):
             # debug_write("!!! blocking %s !!!\n" % str(thread))
             self.invocations[thread] = thread
             result = self.call_sub(pending_frame)
-            # debug_write("!!! unblocking %s !!!\n" % str(thread))
+            # debug_write("!!! unblocking %s !!!\n" % str(thread)) 
             self.invocations[thread] = None
             return result
         except Exception as arg:
diff -pruN 8u312-b07-1/debian/font.properties.ja.wgy_zenhai 8u312-b07-0ubuntu1/debian/font.properties.ja.wgy_zenhai
--- 8u312-b07-1/debian/font.properties.ja.wgy_zenhai	2021-05-03 18:16:40.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/font.properties.ja.wgy_zenhai	2015-03-17 00:13:29.000000000 +0000
@@ -241,3 +241,4 @@ fontset.default=\
 -b&h-lucida-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\
 -kochi-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0,\
 -sazanami-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0
+
diff -pruN 8u312-b07-1/debian/JAVA_HOME 8u312-b07-0ubuntu1/debian/JAVA_HOME
--- 8u312-b07-1/debian/JAVA_HOME	2021-05-03 18:16:40.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/JAVA_HOME	2015-03-17 00:13:29.000000000 +0000
@@ -7,7 +7,7 @@
    integrated with your Debian GNU/Linux system.
 
 
-2. Selecting OpenJDK 8 as the default Java(TM) implementation
+2. Selecting OpenJDK 7 as the default Java(TM) implementation
 
    Please see README.alternatives for instructions on how
-   to make OpenJDK 8 executables and man pages the default on your system.
+   to make OpenJDK 7 executables and man pages the default on your system.
diff -pruN 8u312-b07-1/debian/JB-dbg.overrides.in 8u312-b07-0ubuntu1/debian/JB-dbg.overrides.in
--- 8u312-b07-1/debian/JB-dbg.overrides.in	2021-05-03 18:16:40.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/JB-dbg.overrides.in	2015-03-17 00:13:29.000000000 +0000
@@ -1,2 +1,3 @@
 # 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
diff -pruN 8u312-b07-1/debian/JB-demo.overrides.in 8u312-b07-0ubuntu1/debian/JB-demo.overrides.in
--- 8u312-b07-1/debian/JB-demo.overrides.in	2021-05-03 18:16:40.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/JB-demo.overrides.in	2015-03-17 00:13:29.000000000 +0000
@@ -1,16 +1,8 @@
+# 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
-
-# not a problem in these specific cases
-@basename@-demo binary: breakout-link
-@basename@-demo binary: duplicate-files
-@basename@-demo binary: repeated-path-segment
-
-# this is basically this package’s purpose
-@basename@-demo binary: package-contains-documentation-outside-usr-share-doc
-
-# these aren’t easily compatible with doc-base
-@basename@-demo binary: possible-documentation-but-no-doc-base-registration
diff -pruN 8u312-b07-1/debian/JB-doc.overrides.in 8u312-b07-0ubuntu1/debian/JB-doc.overrides.in
--- 8u312-b07-1/debian/JB-doc.overrides.in	2021-05-03 18:16:40.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/JB-doc.overrides.in	1970-01-01 00:00:00.000000000 +0000
@@ -1,5 +0,0 @@
-# multiple javadoc domains
-@basename@-doc binary: duplicate-files
-
-# not a problem here
-@basename@-doc binary: repeated-path-segment
diff -pruN 8u312-b07-1/debian/JB-jdk-headless.overrides.in 8u312-b07-0ubuntu1/debian/JB-jdk-headless.overrides.in
--- 8u312-b07-1/debian/JB-jdk-headless.overrides.in	2021-05-03 18:16:40.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/JB-jdk-headless.overrides.in	1970-01-01 00:00:00.000000000 +0000
@@ -1,5 +0,0 @@
-# this is correct
-@basename@-jdk-headless binary: executable-in-usr-lib
-
-# /usr/lib/jvm/…/lib/…
-@basename@-jdk-headless binary: repeated-path-segment
diff -pruN 8u312-b07-1/debian/JB-jdk-headless.postinst.in 8u312-b07-0ubuntu1/debian/JB-jdk-headless.postinst.in
--- 8u312-b07-1/debian/JB-jdk-headless.postinst.in	2021-07-29 18:29:18.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/JB-jdk-headless.postinst.in	2016-02-23 16:17:11.000000000 +0000
@@ -43,7 +43,6 @@ configure)
     if [ -n "$multiarch" ] && [ "$DPKG_MAINTSCRIPT_ARCH" != $(dpkg --print-architecture) ]; then
 	priority=$(expr $priority - 1)
     fi
-    test -d /usr/share/man/man1 || mkdir -p /usr/share/man/man1
     for i in $jdk_hl_tools; do
 	unset slave1 slave2 || true
         if [ -e $mandir/man1/$i.$srcext ]; then
diff -pruN 8u312-b07-1/debian/JB-jdk.overrides.in 8u312-b07-0ubuntu1/debian/JB-jdk.overrides.in
--- 8u312-b07-1/debian/JB-jdk.overrides.in	2021-05-03 18:16:40.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/JB-jdk.overrides.in	1970-01-01 00:00:00.000000000 +0000
@@ -1,5 +0,0 @@
-# this is correct
-@basename@-jdk binary: executable-in-usr-lib
-
-# /usr/lib/jvm/…/lib/…
-@basename@-jdk binary: repeated-path-segment
diff -pruN 8u312-b07-1/debian/JB-jre-headless.overrides.in 8u312-b07-0ubuntu1/debian/JB-jre-headless.overrides.in
--- 8u312-b07-1/debian/JB-jre-headless.overrides.in	2021-05-03 18:16:40.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/JB-jre-headless.overrides.in	2018-03-15 17:19:50.000000000 +0000
@@ -1,21 +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-suffix-not-dbg
-
-# This is correct
-@basename@-jre-headless binary: executable-in-usr-lib
-
-# Not a problem in these specific cases
-@basename@-jre-headless binary: breakout-link
-
-# /usr/lib/jvm/…/lib/…
-@basename@-jre-headless binary: repeated-path-segment
-
-# not documentation
-@basename@-jre-headless binary: package-contains-documentation-outside-usr-share-doc */Xusage.txt
-@basename@-jre-headless binary: package-contains-documentation-outside-usr-share-doc */jvm.hprof.txt
+@basename@-jre-headless binary: debug-package-should-be-named-dbg
diff -pruN 8u312-b07-1/debian/JB-jre-headless.postinst.in 8u312-b07-0ubuntu1/debian/JB-jre-headless.postinst.in
--- 8u312-b07-1/debian/JB-jre-headless.postinst.in	2021-05-03 18:16:40.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/JB-jre-headless.postinst.in	2021-11-03 12:27:30.000000000 +0000
@@ -87,6 +87,19 @@ configure)
 	    $basedir/jre/lib/jar.binfmt
     fi # update alternatives
 
+    if [ -n "$multiarch" ] && [ -n "$2" ]; then
+	if true; then
+	    :
+	elif dpkg --compare-versions "$2" lt 7~b147-2.0~pre3-3ubuntu2~; then
+	    for d in cmm; do
+		if [ -d $basedir/jre/lib/$d ] && [ ! -h $basedir/jre/lib/$d ]; then
+		    rm -rf $basedir/jre/lib/$d
+		    ln -s ../../../java-6-openjdk-common/jre/lib/$d $basedir/jre/lib/$d
+		fi
+	    done
+	fi
+    fi
+
     # register binfmt; ignore errors, the alternative may already be
     # registered by another JRE.
     if which update-binfmts >/dev/null && [ -r /usr/share/binfmts/jar ]; then
@@ -96,8 +109,8 @@ configure)
     # activate class data sharing
     case @archdir@ in i386|sparc)
 	rm -f $basedir/jre/lib/@archdir@/client/classes.jsa
-	log=$(mktemp) || { echo >&2 E: cannot create temporary file; exit 255; }
-	if ! $basedir/bin/java -client -Xshare:dump >$log; then
+	log=$(mktemp)
+	if ! $basedir/bin/java -client -Xshare:dump -XX:PermSize=128m > $log; then
 	    cat >&2 $log
 	    rm -f $log
 	    # this may fail on some machines/configurations, just ignore it.
@@ -108,7 +121,7 @@ configure)
     esac
     case @archdir@ in amd64|i386|sparc)
 	rm -f $basedir/jre/lib/@archdir@/server/classes.jsa
-	log=$(mktemp) || { echo >&2 E: cannot create temporary file; exit 255; }
+	log=$(mktemp)
 	if ! $basedir/bin/java -server -Xshare:dump > $log; then
 	    cat >&2 $log
 	    rm -f $log
diff -pruN 8u312-b07-1/debian/JB-jre-headless.prerm.in 8u312-b07-0ubuntu1/debian/JB-jre-headless.prerm.in
--- 8u312-b07-1/debian/JB-jre-headless.prerm.in	2021-07-29 18:29:18.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/JB-jre-headless.prerm.in	2015-03-17 00:13:29.000000000 +0000
@@ -15,7 +15,7 @@ if [ "$1" = "remove" ] || [ "$1" = "deco
 
     if which update-binfmts >/dev/null; then
 	# try to remove and ignore the error
-	if [ -e /var/lib/binfmts/jar ]; then
+	if [ -e /var/lib/binfmts/@basename@ ]; then
 	    update-binfmts --package @basename@ \
 		--remove jar /usr/bin/jexec || true
 	fi
diff -pruN 8u312-b07-1/debian/JB-jre.overrides.in 8u312-b07-0ubuntu1/debian/JB-jre.overrides.in
--- 8u312-b07-1/debian/JB-jre.overrides.in	2021-05-03 18:16:40.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/JB-jre.overrides.in	2015-03-17 00:13:29.000000000 +0000
@@ -1,14 +1,2 @@
 # these are in the -jre-headless package, -jre depends on it
 @basename@-jre binary: desktop-command-not-in-package
-
-# this is correct
-@basename@-jre binary: executable-in-usr-lib
-
-# not a problem in these specific cases
-@basename@-jre binary: breakout-link
-
-# created by dh_makeshlibs, don’t worry
-@basename@-jre binary: package-has-unnecessary-activation-of-ldconfig-trigger
-
-# /usr/lib/jvm/…/lib/…
-@basename@-jre binary: repeated-path-segment
diff -pruN 8u312-b07-1/debian/JB-jre-zero.overrides.in 8u312-b07-0ubuntu1/debian/JB-jre-zero.overrides.in
--- 8u312-b07-1/debian/JB-jre-zero.overrides.in	2021-05-03 18:16:40.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/JB-jre-zero.overrides.in	2015-03-17 00:13:29.000000000 +0000
@@ -1,5 +1,2 @@
-# /usr/lib/jvm/…/lib/…
-@basename@-jre-zero binary: repeated-path-segment
-
-# not documentation
-@basename@-jre-zero binary: package-contains-documentation-outside-usr-share-doc */Xusage.txt
+# Strip libjvm.so with --strip-debug instead of --strip-unneeded. LP: #574997.
+@basename@-jre-zero binary: unstripped-binary-or-object
diff -pruN 8u312-b07-1/debian/openjdk-8-jre-headless.NEWS 8u312-b07-0ubuntu1/debian/openjdk-8-jre-headless.NEWS
--- 8u312-b07-1/debian/openjdk-8-jre-headless.NEWS	2021-11-05 23:57:55.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/openjdk-8-jre-headless.NEWS	1970-01-01 00:00:00.000000000 +0000
@@ -1,55 +0,0 @@
-openjdk-8 (8u312-b07-1) unstable; urgency=medium
-
-  Upstream-provided “Notes on individual issues”:
-
-  core-libs/java.net:
-
-  JDK-8164200: Modified HttpURLConnection behavior w/o suitable proxy
-  ===================================================================
-  The behavior of HttpURLConnection when using a ProxySelector has been
-  modified with this JDK release. HttpURLConnection used to fall back to
-  a DIRECT connection attempt if the configured proxy(s) failed to make
-  a connection. This release introduces a change whereby no DIRECT
-  connection will be attempted in such a scenario. Instead, the
-  HttpURLConnection.connect() method will fail and throw an IOException
-  which occurred from the last proxy tested.
-
-  security-libs/javax.net.ssl:
-
-  JDK-8219551: Updated the Default Enabled Cipher Suites Preference
-  =================================================================
-  The preference of the default enabled cipher suites has been
-  changed. The compatibility impact should be minimal. If needed,
-  applications can customize the enabled cipher suites and the
-  preference. For more details, refer to the SunJSSE provider
-  documentation and the JSSE Reference Guide documentation.
-
- -- Thorsten Glaser <tg@mirbsd.de>  Fri, 05 Nov 2021 23:57:46 +0000
-
-openjdk-8 (8u282-b08-2) unstable; urgency=medium
-
-  Note about support for OpenJDK 8:
-
-  - OpenJDK 8 was shipped with Debian 9 (“stretch”) and provided
-    via jessie-backports for Debian 8; updates are shipped for
-    both using the regular LTS and ELTS channels and policies,
-    respectively.
-
-  - Debian 10 (“buster”) and 11 (“bullseye”) ship with OpenJDK 11
-    supported. Therefore, OpenJDK 8 is not officially supported on
-    these releases.
-
-  - OpenJDK 8 is provided in Debian unstable (“sid”) but without
-    any support whatsoever. It is intended to be used mainly to
-    bootstrap certain JVM languages that don’t work with newer JDK.
-
-  - In Ubuntu, OpenJDK 8 is nominally supported, but only for as
-    long as 16.04 LTS (“xenial”) is still supported (regular support
-    ended with April 2021, but ESM may still be available).
-
-  - Please check with per-distribution, official, sources; this
-    information is merely provided as heads-up note here and not
-    guaranteed to be up-to-date. (This notice reflects the support
-    info available to the packager at the time of writing.)
-
- -- Thorsten Glaser <tg@mirbsd.de>  Thu, 25 Mar 2021 20:49:51 +0100
diff -pruN 8u312-b07-1/debian/patches/8141491.diff 8u312-b07-0ubuntu1/debian/patches/8141491.diff
--- 8u312-b07-1/debian/patches/8141491.diff	1970-01-01 00:00:00.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/8141491.diff	2018-04-28 13:03:52.000000000 +0000
@@ -0,0 +1,115 @@
+# DP: JDK-8141491: Unaligned memory access in Bits.c
+
+--- a/jdk/src/share/native/java/nio/Bits.c
++++ b/jdk/src/share/native/java/nio/Bits.c
+@@ -70,16 +70,38 @@
+ #define SWAPLONG(x)  ((jlong)(((jlong)SWAPINT((jint)(x)) << 32) | \
+                               ((jlong)SWAPINT((jint)((x) >> 32)) & 0xffffffff)))
+ 
++/* The destination buffer passed to Java_java_nio_Bits_copyFromShor<type>tArray
++ * function and the source buffer passed to Java_java_nio_Bits_copyTo<type>Array
++ * may not be aligned on <type>'s boundary. Inform the compiler about this via
++ * 'unaligned' attribute, provided it supports this attribute. For recent 
++ * compilers, use __has_attribute preprocessor predicate; if it is not available,
++ * we know that GCC supports it.
++ */
++#ifndef __has_attribute
++#define __has_attribute(x) 0
++#endif
++
++#if defined(__GNUC__) || __has_attribute(aligned)
++typedef jshort __attribute__((aligned(1))) jshort_unaligned;
++typedef jint __attribute__((aligned(1))) jint_unaligned;
++typedef jlong __attribute__((aligned(1))) jlong_unaligned;
++#else
++typedef jshort jshort_unaligned;
++typedef jint jint_unaligned;
++typedef jlong jlong_unaligned;
++#endif
++
+ JNIEXPORT void JNICALL
+ Java_java_nio_Bits_copyFromShortArray(JNIEnv *env, jobject this, jobject src,
+                                       jlong srcPos, jlong dstAddr, jlong length)
+ {
+     jbyte *bytes;
+     size_t size;
+-    jshort *srcShort, *dstShort, *endShort;
++    jshort *srcShort, *endShort;
++    jshort_unaligned *dstShort;
+     jshort tmpShort;
+ 
+-    dstShort = (jshort *)jlong_to_ptr(dstAddr);
++    dstShort = (jshort_unaligned *)jlong_to_ptr(dstAddr);
+ 
+     while (length > 0) {
+         /* do not change this if-else statement, see WARNING above */
+@@ -111,10 +133,11 @@ Java_java_nio_Bits_copyToShortArray(JNIE
+ {
+     jbyte *bytes;
+     size_t size;
+-    jshort *srcShort, *dstShort, *endShort;
++    jshort_unaligned *srcShort, *endShort;
++    jshort *dstShort;
+     jshort tmpShort;
+ 
+-    srcShort = (jshort *)jlong_to_ptr(srcAddr);
++    srcShort = (jshort_unaligned *)jlong_to_ptr(srcAddr);
+ 
+     while (length > 0) {
+         /* do not change this if-else statement, see WARNING above */
+@@ -146,10 +169,11 @@ Java_java_nio_Bits_copyFromIntArray(JNIE
+ {
+     jbyte *bytes;
+     size_t size;
+-    jint *srcInt, *dstInt, *endInt;
++    jint *srcInt, *endInt;
++    jint_unaligned *dstInt;
+     jint tmpInt;
+ 
+-    dstInt = (jint *)jlong_to_ptr(dstAddr);
++    dstInt = (jint_unaligned *)jlong_to_ptr(dstAddr);
+ 
+     while (length > 0) {
+         /* do not change this code, see WARNING above */
+@@ -181,10 +205,11 @@ Java_java_nio_Bits_copyToIntArray(JNIEnv
+ {
+     jbyte *bytes;
+     size_t size;
+-    jint *srcInt, *dstInt, *endInt;
++    jint_unaligned *srcInt, *endInt;
++    jint *dstInt;
+     jint tmpInt;
+ 
+-    srcInt = (jint *)jlong_to_ptr(srcAddr);
++    srcInt = (jint_unaligned *)jlong_to_ptr(srcAddr);
+ 
+     while (length > 0) {
+         /* do not change this code, see WARNING above */
+@@ -216,10 +241,11 @@ Java_java_nio_Bits_copyFromLongArray(JNI
+ {
+     jbyte *bytes;
+     size_t size;
+-    jlong *srcLong, *dstLong, *endLong;
++    jlong *srcLong, *endLong;
++    jlong_unaligned *dstLong;
+     jlong tmpLong;
+ 
+-    dstLong = (jlong *)jlong_to_ptr(dstAddr);
++    dstLong = (jlong_unaligned *)jlong_to_ptr(dstAddr);
+ 
+     while (length > 0) {
+         /* do not change this code, see WARNING above */
+@@ -251,10 +277,11 @@ Java_java_nio_Bits_copyToLongArray(JNIEn
+ {
+     jbyte *bytes;
+     size_t size;
+-    jlong *srcLong, *dstLong, *endLong;
++    jlong_unaligned *srcLong, *endLong;
++    jlong *dstLong;
+     jlong tmpLong;
+ 
+-    srcLong = (jlong *)jlong_to_ptr(srcAddr);
++    srcLong = (jlong_unaligned *)jlong_to_ptr(srcAddr);
+ 
+     while (length > 0) {
+         /* do not change this code, see WARNING above */
diff -pruN 8u312-b07-1/debian/patches/aarch32.diff 8u312-b07-0ubuntu1/debian/patches/aarch32.diff
--- 8u312-b07-1/debian/patches/aarch32.diff	2021-07-29 19:28:22.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/aarch32.diff	2021-04-21 10:18:35.000000000 +0000
@@ -1,3 +1,4 @@
+
 --- a/common/autoconf/jdk-options.m4
 +++ b/common/autoconf/jdk-options.m4
 @@ -98,7 +98,11 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_JVM_VARIANTS
@@ -72,20 +73,6 @@
    fi
    # Now setup the -D flags for building libjli.
    OPENJDK_TARGET_CPU_JLI_CFLAGS="-DLIBARCHNAME='\"$OPENJDK_TARGET_CPU_JLI\"'"
---- a/hotspot/make/defs.make
-+++ b/hotspot/make/defs.make
-@@ -335,6 +335,11 @@ ifneq ($(OSNAME),windows)
-   LIBARCH/ppc64   = ppc64
-   LIBARCH/aarch32 = aarch32
- 
-+  # Override LIBARCH for aarch32
-+  ifeq ($(ARCH), aarch32)
-+    LIBARCH = arm
-+  endif
-+
-   LP64_ARCH += sparcv9 amd64 ia64 ppc64 aarch64 zero
- endif
- 
 --- a/jdk/make/CopyFiles.gmk
 +++ b/jdk/make/CopyFiles.gmk
 @@ -328,9 +328,15 @@ else
@@ -177,3 +164,17 @@
 +#
 +-server KNOWN
 +-client IGNORE
+--- a/hotspot/make/defs.make
++++ b/hotspot/make/defs.make
+@@ -335,6 +335,11 @@ ifneq ($(OSNAME),windows)
+   LIBARCH/ppc64   = ppc64
+   LIBARCH/aarch32 = aarch32
+ 
++  # Override LIBARCH for aarch32
++  ifeq ($(ARCH), aarch32)
++    LIBARCH = arm
++  endif
++
+   LP64_ARCH += sparcv9 amd64 ia64 ppc64 aarch64 zero
+ endif
+ 
diff -pruN 8u312-b07-1/debian/patches/accessible-toolkit.patch 8u312-b07-0ubuntu1/debian/patches/accessible-toolkit.patch
--- 8u312-b07-1/debian/patches/accessible-toolkit.patch	1970-01-01 00:00:00.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/accessible-toolkit.patch	2015-03-17 00:13:29.000000000 +0000
@@ -0,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();
diff -pruN 8u312-b07-1/debian/patches/adlc-parser.patch 8u312-b07-0ubuntu1/debian/patches/adlc-parser.patch
--- 8u312-b07-1/debian/patches/adlc-parser.patch	2021-07-29 19:24:55.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/adlc-parser.patch	2017-01-23 10:09:22.000000000 +0000
@@ -1,5 +1,4 @@
 # DP: fixes an uninitialized memory issue in adlc
-
 --- a/hotspot/src/share/vm/adlc/formsopt.cpp
 +++ b/hotspot/src/share/vm/adlc/formsopt.cpp
 @@ -440,6 +440,7 @@ FrameForm::FrameForm() {
diff -pruN 8u312-b07-1/debian/patches/alpha-float-const.diff 8u312-b07-0ubuntu1/debian/patches/alpha-float-const.diff
--- 8u312-b07-1/debian/patches/alpha-float-const.diff	2021-07-29 19:42:03.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/alpha-float-const.diff	2015-03-17 00:13:29.000000000 +0000
@@ -1,6 +1,6 @@
---- a/jdk/src/share/classes/java/lang/Float.java
-+++ b/jdk/src/share/classes/java/lang/Float.java
-@@ -85,7 +85,9 @@ public final class Float extends Number
+--- src/jdk/src/share/classes/java/lang/Float.java
++++ src/jdk/src/share/classes/java/lang/Float.java
+@@ -85,7 +85,9 @@
       *
       * @since 1.6
       */
diff -pruN 8u312-b07-1/debian/patches/autoconf-updates.diff 8u312-b07-0ubuntu1/debian/patches/autoconf-updates.diff
--- 8u312-b07-1/debian/patches/autoconf-updates.diff	1970-01-01 00:00:00.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/autoconf-updates.diff	2015-03-17 00:13:29.000000000 +0000
@@ -0,0 +1,2267 @@
+Index: b/common/autoconf/build-aux/config.guess
+===================================================================
+--- a/common/autoconf/build-aux/config.guess
++++ b/common/autoconf/build-aux/config.guess
+@@ -1,89 +1,1420 @@
+-#!/bin/sh
++#! /bin/sh
++# Attempt to guess a canonical system name.
++#   Copyright 1992-2014 Free Software Foundation, Inc.
++
++timestamp='2014-03-23'
++
++# This file is free software; you can redistribute it and/or modify it
++# under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 3 of the License, or
++# (at your option) any later version.
+ #
+-# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++# This program is distributed in the hope that it will be useful, but
++# WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++# General Public License for more details.
+ #
+-# This code is free software; you can redistribute it and/or modify it
+-# under the terms of the GNU General Public License version 2 only, as
+-# published by the Free Software Foundation.
+-#
+-# This code is distributed in the hope that it will be useful, but WITHOUT
+-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+-# version 2 for more details (a copy is included in the LICENSE file that
+-# accompanied this code).
+-#
+-# You should have received a copy of the GNU General Public License version
+-# 2 along with this work; if not, write to the Free Software Foundation,
+-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+-#
+-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+-# or visit www.oracle.com if you need additional information or have any
+-# questions.
+-#
+-
+-# This is a wrapper for the config.guess from autoconf. The latter does not
+-# properly detect 64 bit systems on all platforms. Instead of patching the
+-# autoconf system (which might easily get lost in a future update), we wrap it
+-# and fix the broken property, if needed.
+-
+-DIR=`dirname $0`
+-OUT=`. $DIR/autoconf-config.guess`
+-
+-# Test and fix solaris on x86_64
+-echo $OUT | grep i386-pc-solaris > /dev/null 2> /dev/null
+-if test $? = 0; then
+-  # isainfo -n returns either i386 or amd64
+-  REAL_CPU=`isainfo -n`
+-  OUT=$REAL_CPU`echo $OUT | sed -e 's/[^-]*//'`
+-fi
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, see <http://www.gnu.org/licenses/>.
++#
++# As a special exception to the GNU General Public License, if you
++# distribute this file as part of a program that contains a
++# configuration script generated by Autoconf, you may include it under
++# the same distribution terms that you use for the rest of that
++# program.  This Exception is an additional permission under section 7
++# of the GNU General Public License, version 3 ("GPLv3").
++#
++# Originally written by Per Bothner.
++#
++# You can get the latest version of this script from:
++# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
++#
++# Please send patches with a ChangeLog entry to config-patches@gnu.org.
+ 
+-# Test and fix solaris on sparcv9
+-echo $OUT | grep sparc-sun-solaris > /dev/null 2> /dev/null
+-if test $? = 0; then
+-  # isainfo -n returns either sparc or sparcv9
+-  REAL_CPU=`isainfo -n`
+-  OUT=$REAL_CPU`echo $OUT | sed -e 's/[^-]*//'`
+-fi
+ 
+-# Test and fix cygwin on x86_64
+-echo $OUT | grep 86-pc-cygwin > /dev/null 2> /dev/null
+-if test $? != 0; then
+-  echo $OUT | grep 86-pc-mingw > /dev/null 2> /dev/null
+-fi
+-if test $? = 0; then
+-  case `echo $PROCESSOR_IDENTIFIER | cut -f1 -d' '` in
+-    intel64|Intel64|INTEL64|em64t|EM64T|amd64|AMD64|8664|x86_64)
+-      REAL_CPU=x86_64
+-      OUT=$REAL_CPU`echo $OUT | sed -e 's/[^-]*//'`
+-      ;;
++me=`echo "$0" | sed -e 's,.*/,,'`
++
++usage="\
++Usage: $0 [OPTION]
++
++Output the configuration name of the system \`$me' is run on.
++
++Operation modes:
++  -h, --help         print this help, then exit
++  -t, --time-stamp   print date of last modification, then exit
++  -v, --version      print version number, then exit
++
++Report bugs and patches to <config-patches@gnu.org>."
++
++version="\
++GNU config.guess ($timestamp)
++
++Originally written by Per Bothner.
++Copyright 1992-2014 Free Software Foundation, Inc.
++
++This is free software; see the source for copying conditions.  There is NO
++warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
++
++help="
++Try \`$me --help' for more information."
++
++# Parse command line
++while test $# -gt 0 ; do
++  case $1 in
++    --time-stamp | --time* | -t )
++       echo "$timestamp" ; exit ;;
++    --version | -v )
++       echo "$version" ; exit ;;
++    --help | --h* | -h )
++       echo "$usage"; exit ;;
++    -- )     # Stop option processing
++       shift; break ;;
++    - )	# Use stdin as input.
++       break ;;
++    -* )
++       echo "$me: invalid option $1$help" >&2
++       exit 1 ;;
++    * )
++       break ;;
+   esac
+-fi
++done
+ 
+-# Test and fix architecture string on AIX
+-# On AIX 'config.guess' returns 'powerpc' as architecture but 'powerpc' is
+-# implicitely handled as 32-bit architecture in 'platform.m4' so we check
+-# for the kernel mode rewrite it to 'powerpc64' if we'Re running in 64-bit mode.
+-# The check could also be done with `/usr/sbin/prtconf | grep "Kernel Type" | grep "64-bit"`
+-echo $OUT | grep powerpc-ibm-aix > /dev/null 2> /dev/null
+-if test $? = 0; then
+-  if [ -x /bin/getconf ] ; then
+-    KERNEL_BITMODE=`getconf KERNEL_BITMODE`
+-    if  [ "$KERNEL_BITMODE" = "32" ]; then
+-      KERNEL_BITMODE=""
+-    fi
+-  fi
+-  OUT=powerpc$KERNEL_BITMODE`echo $OUT | sed -e 's/[^-]*//'`
++if test $# != 0; then
++  echo "$me: too many arguments$help" >&2
++  exit 1
+ fi
+ 
+-# Test and fix little endian PowerPC64.
+-# TODO: should be handled by autoconf-config.guess. 
+-if [ "x$OUT" = x ]; then
+-  if [ `uname -m` = ppc64le ]; then
+-    if [ `uname -s` = Linux ]; then
+-      OUT=powerpc64le-unknown-linux-gnu
+-    fi
+-  fi
++trap 'exit 1' 1 2 15
++
++# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
++# compiler to aid in system detection is discouraged as it requires
++# temporary files to be created and, as you can see below, it is a
++# headache to deal with in a portable fashion.
++
++# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
++# use `HOST_CC' if defined, but it is deprecated.
++
++# Portable tmp directory creation inspired by the Autoconf team.
++
++set_cc_for_build='
++trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
++trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
++: ${TMPDIR=/tmp} ;
++ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
++ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
++ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
++ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
++dummy=$tmp/dummy ;
++tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
++case $CC_FOR_BUILD,$HOST_CC,$CC in
++ ,,)    echo "int x;" > $dummy.c ;
++	for c in cc gcc c89 c99 ; do
++	  if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
++	     CC_FOR_BUILD="$c"; break ;
++	  fi ;
++	done ;
++	if test x"$CC_FOR_BUILD" = x ; then
++	  CC_FOR_BUILD=no_compiler_found ;
++	fi
++	;;
++ ,,*)   CC_FOR_BUILD=$CC ;;
++ ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
++esac ; set_cc_for_build= ;'
++
++# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
++# (ghazi@noc.rutgers.edu 1994-08-24)
++if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
++	PATH=$PATH:/.attbin ; export PATH
+ fi
+ 
+-echo $OUT
++UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
++UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
++UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
++UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
++
++case "${UNAME_SYSTEM}" in
++Linux|GNU|GNU/*)
++	# If the system lacks a compiler, then just pick glibc.
++	# We could probably try harder.
++	LIBC=gnu
++
++	eval $set_cc_for_build
++	cat <<-EOF > $dummy.c
++	#include <features.h>
++	#if defined(__UCLIBC__)
++	LIBC=uclibc
++	#elif defined(__dietlibc__)
++	LIBC=dietlibc
++	#else
++	LIBC=gnu
++	#endif
++	EOF
++	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
++	;;
++esac
++
++# Note: order is significant - the case branches are not exclusive.
++
++case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
++    *:NetBSD:*:*)
++	# NetBSD (nbsd) targets should (where applicable) match one or
++	# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
++	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
++	# switched to ELF, *-*-netbsd* would select the old
++	# object file format.  This provides both forward
++	# compatibility and a consistent mechanism for selecting the
++	# object file format.
++	#
++	# Note: NetBSD doesn't particularly care about the vendor
++	# portion of the name.  We always set it to "unknown".
++	sysctl="sysctl -n hw.machine_arch"
++	UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
++	    /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
++	case "${UNAME_MACHINE_ARCH}" in
++	    armeb) machine=armeb-unknown ;;
++	    arm*) machine=arm-unknown ;;
++	    sh3el) machine=shl-unknown ;;
++	    sh3eb) machine=sh-unknown ;;
++	    sh5el) machine=sh5le-unknown ;;
++	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
++	esac
++	# The Operating System including object format, if it has switched
++	# to ELF recently, or will in the future.
++	case "${UNAME_MACHINE_ARCH}" in
++	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
++		eval $set_cc_for_build
++		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
++			| grep -q __ELF__
++		then
++		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
++		    # Return netbsd for either.  FIX?
++		    os=netbsd
++		else
++		    os=netbsdelf
++		fi
++		;;
++	    *)
++		os=netbsd
++		;;
++	esac
++	# The OS release
++	# Debian GNU/NetBSD machines have a different userland, and
++	# thus, need a distinct triplet. However, they do not need
++	# kernel version information, so it can be replaced with a
++	# suitable tag, in the style of linux-gnu.
++	case "${UNAME_VERSION}" in
++	    Debian*)
++		release='-gnu'
++		;;
++	    *)
++		release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
++		;;
++	esac
++	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
++	# contains redundant information, the shorter form:
++	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
++	echo "${machine}-${os}${release}"
++	exit ;;
++    *:Bitrig:*:*)
++	UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
++	echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
++	exit ;;
++    *:OpenBSD:*:*)
++	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
++	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
++	exit ;;
++    *:ekkoBSD:*:*)
++	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
++	exit ;;
++    *:SolidBSD:*:*)
++	echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
++	exit ;;
++    macppc:MirBSD:*:*)
++	echo powerpc-unknown-mirbsd${UNAME_RELEASE}
++	exit ;;
++    *:MirBSD:*:*)
++	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
++	exit ;;
++    alpha:OSF1:*:*)
++	case $UNAME_RELEASE in
++	*4.0)
++		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
++		;;
++	*5.*)
++		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
++		;;
++	esac
++	# According to Compaq, /usr/sbin/psrinfo has been available on
++	# OSF/1 and Tru64 systems produced since 1995.  I hope that
++	# covers most systems running today.  This code pipes the CPU
++	# types through head -n 1, so we only detect the type of CPU 0.
++	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
++	case "$ALPHA_CPU_TYPE" in
++	    "EV4 (21064)")
++		UNAME_MACHINE="alpha" ;;
++	    "EV4.5 (21064)")
++		UNAME_MACHINE="alpha" ;;
++	    "LCA4 (21066/21068)")
++		UNAME_MACHINE="alpha" ;;
++	    "EV5 (21164)")
++		UNAME_MACHINE="alphaev5" ;;
++	    "EV5.6 (21164A)")
++		UNAME_MACHINE="alphaev56" ;;
++	    "EV5.6 (21164PC)")
++		UNAME_MACHINE="alphapca56" ;;
++	    "EV5.7 (21164PC)")
++		UNAME_MACHINE="alphapca57" ;;
++	    "EV6 (21264)")
++		UNAME_MACHINE="alphaev6" ;;
++	    "EV6.7 (21264A)")
++		UNAME_MACHINE="alphaev67" ;;
++	    "EV6.8CB (21264C)")
++		UNAME_MACHINE="alphaev68" ;;
++	    "EV6.8AL (21264B)")
++		UNAME_MACHINE="alphaev68" ;;
++	    "EV6.8CX (21264D)")
++		UNAME_MACHINE="alphaev68" ;;
++	    "EV6.9A (21264/EV69A)")
++		UNAME_MACHINE="alphaev69" ;;
++	    "EV7 (21364)")
++		UNAME_MACHINE="alphaev7" ;;
++	    "EV7.9 (21364A)")
++		UNAME_MACHINE="alphaev79" ;;
++	esac
++	# A Pn.n version is a patched version.
++	# A Vn.n version is a released version.
++	# A Tn.n version is a released field test version.
++	# A Xn.n version is an unreleased experimental baselevel.
++	# 1.2 uses "1.2" for uname -r.
++	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
++	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
++	exitcode=$?
++	trap '' 0
++	exit $exitcode ;;
++    Alpha\ *:Windows_NT*:*)
++	# How do we know it's Interix rather than the generic POSIX subsystem?
++	# Should we change UNAME_MACHINE based on the output of uname instead
++	# of the specific Alpha model?
++	echo alpha-pc-interix
++	exit ;;
++    21064:Windows_NT:50:3)
++	echo alpha-dec-winnt3.5
++	exit ;;
++    Amiga*:UNIX_System_V:4.0:*)
++	echo m68k-unknown-sysv4
++	exit ;;
++    *:[Aa]miga[Oo][Ss]:*:*)
++	echo ${UNAME_MACHINE}-unknown-amigaos
++	exit ;;
++    *:[Mm]orph[Oo][Ss]:*:*)
++	echo ${UNAME_MACHINE}-unknown-morphos
++	exit ;;
++    *:OS/390:*:*)
++	echo i370-ibm-openedition
++	exit ;;
++    *:z/VM:*:*)
++	echo s390-ibm-zvmoe
++	exit ;;
++    *:OS400:*:*)
++	echo powerpc-ibm-os400
++	exit ;;
++    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
++	echo arm-acorn-riscix${UNAME_RELEASE}
++	exit ;;
++    arm*:riscos:*:*|arm*:RISCOS:*:*)
++	echo arm-unknown-riscos
++	exit ;;
++    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
++	echo hppa1.1-hitachi-hiuxmpp
++	exit ;;
++    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
++	# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
++	if test "`(/bin/universe) 2>/dev/null`" = att ; then
++		echo pyramid-pyramid-sysv3
++	else
++		echo pyramid-pyramid-bsd
++	fi
++	exit ;;
++    NILE*:*:*:dcosx)
++	echo pyramid-pyramid-svr4
++	exit ;;
++    DRS?6000:unix:4.0:6*)
++	echo sparc-icl-nx6
++	exit ;;
++    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
++	case `/usr/bin/uname -p` in
++	    sparc) echo sparc-icl-nx7; exit ;;
++	esac ;;
++    s390x:SunOS:*:*)
++	echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
++	exit ;;
++    sun4H:SunOS:5.*:*)
++	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
++	exit ;;
++    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
++	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
++	exit ;;
++    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
++	echo i386-pc-auroraux${UNAME_RELEASE}
++	exit ;;
++    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
++	eval $set_cc_for_build
++	SUN_ARCH="i386"
++	# If there is a compiler, see if it is configured for 64-bit objects.
++	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
++	# This test works for both compilers.
++	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
++	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
++		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
++		grep IS_64BIT_ARCH >/dev/null
++	    then
++		SUN_ARCH="x86_64"
++	    fi
++	fi
++	echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
++	exit ;;
++    sun4*:SunOS:6*:*)
++	# According to config.sub, this is the proper way to canonicalize
++	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
++	# it's likely to be more like Solaris than SunOS4.
++	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
++	exit ;;
++    sun4*:SunOS:*:*)
++	case "`/usr/bin/arch -k`" in
++	    Series*|S4*)
++		UNAME_RELEASE=`uname -v`
++		;;
++	esac
++	# Japanese Language versions have a version number like `4.1.3-JL'.
++	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
++	exit ;;
++    sun3*:SunOS:*:*)
++	echo m68k-sun-sunos${UNAME_RELEASE}
++	exit ;;
++    sun*:*:4.2BSD:*)
++	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
++	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
++	case "`/bin/arch`" in
++	    sun3)
++		echo m68k-sun-sunos${UNAME_RELEASE}
++		;;
++	    sun4)
++		echo sparc-sun-sunos${UNAME_RELEASE}
++		;;
++	esac
++	exit ;;
++    aushp:SunOS:*:*)
++	echo sparc-auspex-sunos${UNAME_RELEASE}
++	exit ;;
++    # The situation for MiNT is a little confusing.  The machine name
++    # can be virtually everything (everything which is not
++    # "atarist" or "atariste" at least should have a processor
++    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
++    # to the lowercase version "mint" (or "freemint").  Finally
++    # the system name "TOS" denotes a system which is actually not
++    # MiNT.  But MiNT is downward compatible to TOS, so this should
++    # be no problem.
++    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
++	echo m68k-atari-mint${UNAME_RELEASE}
++	exit ;;
++    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
++	echo m68k-atari-mint${UNAME_RELEASE}
++	exit ;;
++    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
++	echo m68k-atari-mint${UNAME_RELEASE}
++	exit ;;
++    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
++	echo m68k-milan-mint${UNAME_RELEASE}
++	exit ;;
++    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
++	echo m68k-hades-mint${UNAME_RELEASE}
++	exit ;;
++    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
++	echo m68k-unknown-mint${UNAME_RELEASE}
++	exit ;;
++    m68k:machten:*:*)
++	echo m68k-apple-machten${UNAME_RELEASE}
++	exit ;;
++    powerpc:machten:*:*)
++	echo powerpc-apple-machten${UNAME_RELEASE}
++	exit ;;
++    RISC*:Mach:*:*)
++	echo mips-dec-mach_bsd4.3
++	exit ;;
++    RISC*:ULTRIX:*:*)
++	echo mips-dec-ultrix${UNAME_RELEASE}
++	exit ;;
++    VAX*:ULTRIX*:*:*)
++	echo vax-dec-ultrix${UNAME_RELEASE}
++	exit ;;
++    2020:CLIX:*:* | 2430:CLIX:*:*)
++	echo clipper-intergraph-clix${UNAME_RELEASE}
++	exit ;;
++    mips:*:*:UMIPS | mips:*:*:RISCos)
++	eval $set_cc_for_build
++	sed 's/^	//' << EOF >$dummy.c
++#ifdef __cplusplus
++#include <stdio.h>  /* for printf() prototype */
++	int main (int argc, char *argv[]) {
++#else
++	int main (argc, argv) int argc; char *argv[]; {
++#endif
++	#if defined (host_mips) && defined (MIPSEB)
++	#if defined (SYSTYPE_SYSV)
++	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
++	#endif
++	#if defined (SYSTYPE_SVR4)
++	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
++	#endif
++	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
++	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
++	#endif
++	#endif
++	  exit (-1);
++	}
++EOF
++	$CC_FOR_BUILD -o $dummy $dummy.c &&
++	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
++	  SYSTEM_NAME=`$dummy $dummyarg` &&
++	    { echo "$SYSTEM_NAME"; exit; }
++	echo mips-mips-riscos${UNAME_RELEASE}
++	exit ;;
++    Motorola:PowerMAX_OS:*:*)
++	echo powerpc-motorola-powermax
++	exit ;;
++    Motorola:*:4.3:PL8-*)
++	echo powerpc-harris-powermax
++	exit ;;
++    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
++	echo powerpc-harris-powermax
++	exit ;;
++    Night_Hawk:Power_UNIX:*:*)
++	echo powerpc-harris-powerunix
++	exit ;;
++    m88k:CX/UX:7*:*)
++	echo m88k-harris-cxux7
++	exit ;;
++    m88k:*:4*:R4*)
++	echo m88k-motorola-sysv4
++	exit ;;
++    m88k:*:3*:R3*)
++	echo m88k-motorola-sysv3
++	exit ;;
++    AViiON:dgux:*:*)
++	# DG/UX returns AViiON for all architectures
++	UNAME_PROCESSOR=`/usr/bin/uname -p`
++	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
++	then
++	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
++	       [ ${TARGET_BINARY_INTERFACE}x = x ]
++	    then
++		echo m88k-dg-dgux${UNAME_RELEASE}
++	    else
++		echo m88k-dg-dguxbcs${UNAME_RELEASE}
++	    fi
++	else
++	    echo i586-dg-dgux${UNAME_RELEASE}
++	fi
++	exit ;;
++    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
++	echo m88k-dolphin-sysv3
++	exit ;;
++    M88*:*:R3*:*)
++	# Delta 88k system running SVR3
++	echo m88k-motorola-sysv3
++	exit ;;
++    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
++	echo m88k-tektronix-sysv3
++	exit ;;
++    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
++	echo m68k-tektronix-bsd
++	exit ;;
++    *:IRIX*:*:*)
++	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
++	exit ;;
++    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
++	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
++	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
++    i*86:AIX:*:*)
++	echo i386-ibm-aix
++	exit ;;
++    ia64:AIX:*:*)
++	if [ -x /usr/bin/oslevel ] ; then
++		IBM_REV=`/usr/bin/oslevel`
++	else
++		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
++	fi
++	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
++	exit ;;
++    *:AIX:2:3)
++	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
++		eval $set_cc_for_build
++		sed 's/^		//' << EOF >$dummy.c
++		#include <sys/systemcfg.h>
++
++		main()
++			{
++			if (!__power_pc())
++				exit(1);
++			puts("powerpc-ibm-aix3.2.5");
++			exit(0);
++			}
++EOF
++		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
++		then
++			echo "$SYSTEM_NAME"
++		else
++			echo rs6000-ibm-aix3.2.5
++		fi
++	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
++		echo rs6000-ibm-aix3.2.4
++	else
++		echo rs6000-ibm-aix3.2
++	fi
++	exit ;;
++    *:AIX:*:[4567])
++	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
++	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
++		IBM_ARCH=rs6000
++	else
++		IBM_ARCH=powerpc
++	fi
++	if [ -x /usr/bin/oslevel ] ; then
++		IBM_REV=`/usr/bin/oslevel`
++	else
++		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
++	fi
++	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
++	exit ;;
++    *:AIX:*:*)
++	echo rs6000-ibm-aix
++	exit ;;
++    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
++	echo romp-ibm-bsd4.4
++	exit ;;
++    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
++	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
++	exit ;;                             # report: romp-ibm BSD 4.3
++    *:BOSX:*:*)
++	echo rs6000-bull-bosx
++	exit ;;
++    DPX/2?00:B.O.S.:*:*)
++	echo m68k-bull-sysv3
++	exit ;;
++    9000/[34]??:4.3bsd:1.*:*)
++	echo m68k-hp-bsd
++	exit ;;
++    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
++	echo m68k-hp-bsd4.4
++	exit ;;
++    9000/[34678]??:HP-UX:*:*)
++	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
++	case "${UNAME_MACHINE}" in
++	    9000/31? )            HP_ARCH=m68000 ;;
++	    9000/[34]?? )         HP_ARCH=m68k ;;
++	    9000/[678][0-9][0-9])
++		if [ -x /usr/bin/getconf ]; then
++		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
++		    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
++		    case "${sc_cpu_version}" in
++		      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
++		      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
++		      532)                      # CPU_PA_RISC2_0
++			case "${sc_kernel_bits}" in
++			  32) HP_ARCH="hppa2.0n" ;;
++			  64) HP_ARCH="hppa2.0w" ;;
++			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
++			esac ;;
++		    esac
++		fi
++		if [ "${HP_ARCH}" = "" ]; then
++		    eval $set_cc_for_build
++		    sed 's/^		//' << EOF >$dummy.c
++
++		#define _HPUX_SOURCE
++		#include <stdlib.h>
++		#include <unistd.h>
++
++		int main ()
++		{
++		#if defined(_SC_KERNEL_BITS)
++		    long bits = sysconf(_SC_KERNEL_BITS);
++		#endif
++		    long cpu  = sysconf (_SC_CPU_VERSION);
++
++		    switch (cpu)
++			{
++			case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
++			case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
++			case CPU_PA_RISC2_0:
++		#if defined(_SC_KERNEL_BITS)
++			    switch (bits)
++				{
++				case 64: puts ("hppa2.0w"); break;
++				case 32: puts ("hppa2.0n"); break;
++				default: puts ("hppa2.0"); break;
++				} break;
++		#else  /* !defined(_SC_KERNEL_BITS) */
++			    puts ("hppa2.0"); break;
++		#endif
++			default: puts ("hppa1.0"); break;
++			}
++		    exit (0);
++		}
++EOF
++		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
++		    test -z "$HP_ARCH" && HP_ARCH=hppa
++		fi ;;
++	esac
++	if [ ${HP_ARCH} = "hppa2.0w" ]
++	then
++	    eval $set_cc_for_build
++
++	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
++	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
++	    # generating 64-bit code.  GNU and HP use different nomenclature:
++	    #
++	    # $ CC_FOR_BUILD=cc ./config.guess
++	    # => hppa2.0w-hp-hpux11.23
++	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
++	    # => hppa64-hp-hpux11.23
++
++	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
++		grep -q __LP64__
++	    then
++		HP_ARCH="hppa2.0w"
++	    else
++		HP_ARCH="hppa64"
++	    fi
++	fi
++	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
++	exit ;;
++    ia64:HP-UX:*:*)
++	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
++	echo ia64-hp-hpux${HPUX_REV}
++	exit ;;
++    3050*:HI-UX:*:*)
++	eval $set_cc_for_build
++	sed 's/^	//' << EOF >$dummy.c
++	#include <unistd.h>
++	int
++	main ()
++	{
++	  long cpu = sysconf (_SC_CPU_VERSION);
++	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns
++	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
++	     results, however.  */
++	  if (CPU_IS_PA_RISC (cpu))
++	    {
++	      switch (cpu)
++		{
++		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
++		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
++		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
++		  default: puts ("hppa-hitachi-hiuxwe2"); break;
++		}
++	    }
++	  else if (CPU_IS_HP_MC68K (cpu))
++	    puts ("m68k-hitachi-hiuxwe2");
++	  else puts ("unknown-hitachi-hiuxwe2");
++	  exit (0);
++	}
++EOF
++	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
++		{ echo "$SYSTEM_NAME"; exit; }
++	echo unknown-hitachi-hiuxwe2
++	exit ;;
++    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
++	echo hppa1.1-hp-bsd
++	exit ;;
++    9000/8??:4.3bsd:*:*)
++	echo hppa1.0-hp-bsd
++	exit ;;
++    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
++	echo hppa1.0-hp-mpeix
++	exit ;;
++    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
++	echo hppa1.1-hp-osf
++	exit ;;
++    hp8??:OSF1:*:*)
++	echo hppa1.0-hp-osf
++	exit ;;
++    i*86:OSF1:*:*)
++	if [ -x /usr/sbin/sysversion ] ; then
++	    echo ${UNAME_MACHINE}-unknown-osf1mk
++	else
++	    echo ${UNAME_MACHINE}-unknown-osf1
++	fi
++	exit ;;
++    parisc*:Lites*:*:*)
++	echo hppa1.1-hp-lites
++	exit ;;
++    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
++	echo c1-convex-bsd
++	exit ;;
++    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
++	if getsysinfo -f scalar_acc
++	then echo c32-convex-bsd
++	else echo c2-convex-bsd
++	fi
++	exit ;;
++    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
++	echo c34-convex-bsd
++	exit ;;
++    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
++	echo c38-convex-bsd
++	exit ;;
++    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
++	echo c4-convex-bsd
++	exit ;;
++    CRAY*Y-MP:*:*:*)
++	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
++	exit ;;
++    CRAY*[A-Z]90:*:*:*)
++	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
++	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
++	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
++	      -e 's/\.[^.]*$/.X/'
++	exit ;;
++    CRAY*TS:*:*:*)
++	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
++	exit ;;
++    CRAY*T3E:*:*:*)
++	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
++	exit ;;
++    CRAY*SV1:*:*:*)
++	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
++	exit ;;
++    *:UNICOS/mp:*:*)
++	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
++	exit ;;
++    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
++	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
++	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
++	FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
++	echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
++	exit ;;
++    5000:UNIX_System_V:4.*:*)
++	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
++	FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
++	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
++	exit ;;
++    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
++	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
++	exit ;;
++    sparc*:BSD/OS:*:*)
++	echo sparc-unknown-bsdi${UNAME_RELEASE}
++	exit ;;
++    *:BSD/OS:*:*)
++	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
++	exit ;;
++    *:FreeBSD:*:*)
++	UNAME_PROCESSOR=`/usr/bin/uname -p`
++	case ${UNAME_PROCESSOR} in
++	    amd64)
++		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
++	    *)
++		echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
++	esac
++	exit ;;
++    i*:CYGWIN*:*)
++	echo ${UNAME_MACHINE}-pc-cygwin
++	exit ;;
++    *:MINGW64*:*)
++	echo ${UNAME_MACHINE}-pc-mingw64
++	exit ;;
++    *:MINGW*:*)
++	echo ${UNAME_MACHINE}-pc-mingw32
++	exit ;;
++    *:MSYS*:*)
++	echo ${UNAME_MACHINE}-pc-msys
++	exit ;;
++    i*:windows32*:*)
++	# uname -m includes "-pc" on this system.
++	echo ${UNAME_MACHINE}-mingw32
++	exit ;;
++    i*:PW*:*)
++	echo ${UNAME_MACHINE}-pc-pw32
++	exit ;;
++    *:Interix*:*)
++	case ${UNAME_MACHINE} in
++	    x86)
++		echo i586-pc-interix${UNAME_RELEASE}
++		exit ;;
++	    authenticamd | genuineintel | EM64T)
++		echo x86_64-unknown-interix${UNAME_RELEASE}
++		exit ;;
++	    IA64)
++		echo ia64-unknown-interix${UNAME_RELEASE}
++		exit ;;
++	esac ;;
++    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
++	echo i${UNAME_MACHINE}-pc-mks
++	exit ;;
++    8664:Windows_NT:*)
++	echo x86_64-pc-mks
++	exit ;;
++    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
++	# How do we know it's Interix rather than the generic POSIX subsystem?
++	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
++	# UNAME_MACHINE based on the output of uname instead of i386?
++	echo i586-pc-interix
++	exit ;;
++    i*:UWIN*:*)
++	echo ${UNAME_MACHINE}-pc-uwin
++	exit ;;
++    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
++	echo x86_64-unknown-cygwin
++	exit ;;
++    p*:CYGWIN*:*)
++	echo powerpcle-unknown-cygwin
++	exit ;;
++    prep*:SunOS:5.*:*)
++	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
++	exit ;;
++    *:GNU:*:*)
++	# the GNU system
++	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
++	exit ;;
++    *:GNU/*:*:*)
++	# other systems with GNU libc and userland
++	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
++	exit ;;
++    i*86:Minix:*:*)
++	echo ${UNAME_MACHINE}-pc-minix
++	exit ;;
++    aarch64:Linux:*:*)
++	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
++	exit ;;
++    aarch64_be:Linux:*:*)
++	UNAME_MACHINE=aarch64_be
++	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
++	exit ;;
++    alpha:Linux:*:*)
++	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
++	  EV5)   UNAME_MACHINE=alphaev5 ;;
++	  EV56)  UNAME_MACHINE=alphaev56 ;;
++	  PCA56) UNAME_MACHINE=alphapca56 ;;
++	  PCA57) UNAME_MACHINE=alphapca56 ;;
++	  EV6)   UNAME_MACHINE=alphaev6 ;;
++	  EV67)  UNAME_MACHINE=alphaev67 ;;
++	  EV68*) UNAME_MACHINE=alphaev68 ;;
++	esac
++	objdump --private-headers /bin/sh | grep -q ld.so.1
++	if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
++	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
++	exit ;;
++    arc:Linux:*:* | arceb:Linux:*:*)
++	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
++	exit ;;
++    arm*:Linux:*:*)
++	eval $set_cc_for_build
++	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
++	    | grep -q __ARM_EABI__
++	then
++	    echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
++	else
++	    if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
++		| grep -q __ARM_PCS_VFP
++	    then
++		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
++	    else
++		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
++	    fi
++	fi
++	exit ;;
++    avr32*:Linux:*:*)
++	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
++	exit ;;
++    cris:Linux:*:*)
++	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
++	exit ;;
++    crisv32:Linux:*:*)
++	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
++	exit ;;
++    frv:Linux:*:*)
++	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
++	exit ;;
++    hexagon:Linux:*:*)
++	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
++	exit ;;
++    i*86:Linux:*:*)
++	echo ${UNAME_MACHINE}-pc-linux-${LIBC}
++	exit ;;
++    ia64:Linux:*:*)
++	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
++	exit ;;
++    m32r*:Linux:*:*)
++	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
++	exit ;;
++    m68*:Linux:*:*)
++	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
++	exit ;;
++    mips:Linux:*:* | mips64:Linux:*:*)
++	eval $set_cc_for_build
++	sed 's/^	//' << EOF >$dummy.c
++	#undef CPU
++	#undef ${UNAME_MACHINE}
++	#undef ${UNAME_MACHINE}el
++	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
++	CPU=${UNAME_MACHINE}el
++	#else
++	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
++	CPU=${UNAME_MACHINE}
++	#else
++	CPU=
++	#endif
++	#endif
++EOF
++	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
++	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
++	;;
++    openrisc*:Linux:*:*)
++	echo or1k-unknown-linux-${LIBC}
++	exit ;;
++    or32:Linux:*:* | or1k*:Linux:*:*)
++	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
++	exit ;;
++    padre:Linux:*:*)
++	echo sparc-unknown-linux-${LIBC}
++	exit ;;
++    parisc64:Linux:*:* | hppa64:Linux:*:*)
++	echo hppa64-unknown-linux-${LIBC}
++	exit ;;
++    parisc:Linux:*:* | hppa:Linux:*:*)
++	# Look for CPU level
++	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
++	  PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
++	  PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
++	  *)    echo hppa-unknown-linux-${LIBC} ;;
++	esac
++	exit ;;
++    ppc64:Linux:*:*)
++	echo powerpc64-unknown-linux-${LIBC}
++	exit ;;
++    ppc:Linux:*:*)
++	echo powerpc-unknown-linux-${LIBC}
++	exit ;;
++    ppc64le:Linux:*:*)
++	echo powerpc64le-unknown-linux-${LIBC}
++	exit ;;
++    ppcle:Linux:*:*)
++	echo powerpcle-unknown-linux-${LIBC}
++	exit ;;
++    s390:Linux:*:* | s390x:Linux:*:*)
++	echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
++	exit ;;
++    sh64*:Linux:*:*)
++	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
++	exit ;;
++    sh*:Linux:*:*)
++	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
++	exit ;;
++    sparc:Linux:*:* | sparc64:Linux:*:*)
++	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
++	exit ;;
++    tile*:Linux:*:*)
++	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
++	exit ;;
++    vax:Linux:*:*)
++	echo ${UNAME_MACHINE}-dec-linux-${LIBC}
++	exit ;;
++    x86_64:Linux:*:*)
++	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
++	exit ;;
++    xtensa*:Linux:*:*)
++	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
++	exit ;;
++    i*86:DYNIX/ptx:4*:*)
++	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
++	# earlier versions are messed up and put the nodename in both
++	# sysname and nodename.
++	echo i386-sequent-sysv4
++	exit ;;
++    i*86:UNIX_SV:4.2MP:2.*)
++	# Unixware is an offshoot of SVR4, but it has its own version
++	# number series starting with 2...
++	# I am not positive that other SVR4 systems won't match this,
++	# I just have to hope.  -- rms.
++	# Use sysv4.2uw... so that sysv4* matches it.
++	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
++	exit ;;
++    i*86:OS/2:*:*)
++	# If we were able to find `uname', then EMX Unix compatibility
++	# is probably installed.
++	echo ${UNAME_MACHINE}-pc-os2-emx
++	exit ;;
++    i*86:XTS-300:*:STOP)
++	echo ${UNAME_MACHINE}-unknown-stop
++	exit ;;
++    i*86:atheos:*:*)
++	echo ${UNAME_MACHINE}-unknown-atheos
++	exit ;;
++    i*86:syllable:*:*)
++	echo ${UNAME_MACHINE}-pc-syllable
++	exit ;;
++    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
++	echo i386-unknown-lynxos${UNAME_RELEASE}
++	exit ;;
++    i*86:*DOS:*:*)
++	echo ${UNAME_MACHINE}-pc-msdosdjgpp
++	exit ;;
++    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
++	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
++	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
++		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
++	else
++		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
++	fi
++	exit ;;
++    i*86:*:5:[678]*)
++	# UnixWare 7.x, OpenUNIX and OpenServer 6.
++	case `/bin/uname -X | grep "^Machine"` in
++	    *486*)	     UNAME_MACHINE=i486 ;;
++	    *Pentium)	     UNAME_MACHINE=i586 ;;
++	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
++	esac
++	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
++	exit ;;
++    i*86:*:3.2:*)
++	if test -f /usr/options/cb.name; then
++		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
++		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
++	elif /bin/uname -X 2>/dev/null >/dev/null ; then
++		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
++		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
++		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
++			&& UNAME_MACHINE=i586
++		(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
++			&& UNAME_MACHINE=i686
++		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
++			&& UNAME_MACHINE=i686
++		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
++	else
++		echo ${UNAME_MACHINE}-pc-sysv32
++	fi
++	exit ;;
++    pc:*:*:*)
++	# Left here for compatibility:
++	# uname -m prints for DJGPP always 'pc', but it prints nothing about
++	# the processor, so we play safe by assuming i586.
++	# Note: whatever this is, it MUST be the same as what config.sub
++	# prints for the "djgpp" host, or else GDB configury will decide that
++	# this is a cross-build.
++	echo i586-pc-msdosdjgpp
++	exit ;;
++    Intel:Mach:3*:*)
++	echo i386-pc-mach3
++	exit ;;
++    paragon:*:*:*)
++	echo i860-intel-osf1
++	exit ;;
++    i860:*:4.*:*) # i860-SVR4
++	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
++	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
++	else # Add other i860-SVR4 vendors below as they are discovered.
++	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
++	fi
++	exit ;;
++    mini*:CTIX:SYS*5:*)
++	# "miniframe"
++	echo m68010-convergent-sysv
++	exit ;;
++    mc68k:UNIX:SYSTEM5:3.51m)
++	echo m68k-convergent-sysv
++	exit ;;
++    M680?0:D-NIX:5.3:*)
++	echo m68k-diab-dnix
++	exit ;;
++    M68*:*:R3V[5678]*:*)
++	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
++    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
++	OS_REL=''
++	test -r /etc/.relid \
++	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
++	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
++	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
++	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
++	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
++    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
++	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
++	  && { echo i486-ncr-sysv4; exit; } ;;
++    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
++	OS_REL='.3'
++	test -r /etc/.relid \
++	    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
++	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
++	    && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
++	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
++	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
++	/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
++	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
++    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
++	echo m68k-unknown-lynxos${UNAME_RELEASE}
++	exit ;;
++    mc68030:UNIX_System_V:4.*:*)
++	echo m68k-atari-sysv4
++	exit ;;
++    TSUNAMI:LynxOS:2.*:*)
++	echo sparc-unknown-lynxos${UNAME_RELEASE}
++	exit ;;
++    rs6000:LynxOS:2.*:*)
++	echo rs6000-unknown-lynxos${UNAME_RELEASE}
++	exit ;;
++    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
++	echo powerpc-unknown-lynxos${UNAME_RELEASE}
++	exit ;;
++    SM[BE]S:UNIX_SV:*:*)
++	echo mips-dde-sysv${UNAME_RELEASE}
++	exit ;;
++    RM*:ReliantUNIX-*:*:*)
++	echo mips-sni-sysv4
++	exit ;;
++    RM*:SINIX-*:*:*)
++	echo mips-sni-sysv4
++	exit ;;
++    *:SINIX-*:*:*)
++	if uname -p 2>/dev/null >/dev/null ; then
++		UNAME_MACHINE=`(uname -p) 2>/dev/null`
++		echo ${UNAME_MACHINE}-sni-sysv4
++	else
++		echo ns32k-sni-sysv
++	fi
++	exit ;;
++    PENTIUM:*:4.0*:*)	# Unisys `ClearPath HMP IX 4000' SVR4/MP effort
++			# says <Richard.M.Bartel@ccMail.Census.GOV>
++	echo i586-unisys-sysv4
++	exit ;;
++    *:UNIX_System_V:4*:FTX*)
++	# From Gerald Hewes <hewes@openmarket.com>.
++	# How about differentiating between stratus architectures? -djm
++	echo hppa1.1-stratus-sysv4
++	exit ;;
++    *:*:*:FTX*)
++	# From seanf@swdc.stratus.com.
++	echo i860-stratus-sysv4
++	exit ;;
++    i*86:VOS:*:*)
++	# From Paul.Green@stratus.com.
++	echo ${UNAME_MACHINE}-stratus-vos
++	exit ;;
++    *:VOS:*:*)
++	# From Paul.Green@stratus.com.
++	echo hppa1.1-stratus-vos
++	exit ;;
++    mc68*:A/UX:*:*)
++	echo m68k-apple-aux${UNAME_RELEASE}
++	exit ;;
++    news*:NEWS-OS:6*:*)
++	echo mips-sony-newsos6
++	exit ;;
++    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
++	if [ -d /usr/nec ]; then
++		echo mips-nec-sysv${UNAME_RELEASE}
++	else
++		echo mips-unknown-sysv${UNAME_RELEASE}
++	fi
++	exit ;;
++    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
++	echo powerpc-be-beos
++	exit ;;
++    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
++	echo powerpc-apple-beos
++	exit ;;
++    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
++	echo i586-pc-beos
++	exit ;;
++    BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.
++	echo i586-pc-haiku
++	exit ;;
++    x86_64:Haiku:*:*)
++	echo x86_64-unknown-haiku
++	exit ;;
++    SX-4:SUPER-UX:*:*)
++	echo sx4-nec-superux${UNAME_RELEASE}
++	exit ;;
++    SX-5:SUPER-UX:*:*)
++	echo sx5-nec-superux${UNAME_RELEASE}
++	exit ;;
++    SX-6:SUPER-UX:*:*)
++	echo sx6-nec-superux${UNAME_RELEASE}
++	exit ;;
++    SX-7:SUPER-UX:*:*)
++	echo sx7-nec-superux${UNAME_RELEASE}
++	exit ;;
++    SX-8:SUPER-UX:*:*)
++	echo sx8-nec-superux${UNAME_RELEASE}
++	exit ;;
++    SX-8R:SUPER-UX:*:*)
++	echo sx8r-nec-superux${UNAME_RELEASE}
++	exit ;;
++    Power*:Rhapsody:*:*)
++	echo powerpc-apple-rhapsody${UNAME_RELEASE}
++	exit ;;
++    *:Rhapsody:*:*)
++	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
++	exit ;;
++    *:Darwin:*:*)
++	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
++	eval $set_cc_for_build
++	if test "$UNAME_PROCESSOR" = unknown ; then
++	    UNAME_PROCESSOR=powerpc
++	fi
++	if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
++	    if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
++		if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
++		    (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
++		    grep IS_64BIT_ARCH >/dev/null
++		then
++		    case $UNAME_PROCESSOR in
++			i386) UNAME_PROCESSOR=x86_64 ;;
++			powerpc) UNAME_PROCESSOR=powerpc64 ;;
++		    esac
++		fi
++	    fi
++	elif test "$UNAME_PROCESSOR" = i386 ; then
++	    # Avoid executing cc on OS X 10.9, as it ships with a stub
++	    # that puts up a graphical alert prompting to install
++	    # developer tools.  Any system running Mac OS X 10.7 or
++	    # later (Darwin 11 and later) is required to have a 64-bit
++	    # processor. This is not true of the ARM version of Darwin
++	    # that Apple uses in portable devices.
++	    UNAME_PROCESSOR=x86_64
++	fi
++	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
++	exit ;;
++    *:procnto*:*:* | *:QNX:[0123456789]*:*)
++	UNAME_PROCESSOR=`uname -p`
++	if test "$UNAME_PROCESSOR" = "x86"; then
++		UNAME_PROCESSOR=i386
++		UNAME_MACHINE=pc
++	fi
++	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
++	exit ;;
++    *:QNX:*:4*)
++	echo i386-pc-qnx
++	exit ;;
++    NEO-?:NONSTOP_KERNEL:*:*)
++	echo neo-tandem-nsk${UNAME_RELEASE}
++	exit ;;
++    NSE-*:NONSTOP_KERNEL:*:*)
++	echo nse-tandem-nsk${UNAME_RELEASE}
++	exit ;;
++    NSR-?:NONSTOP_KERNEL:*:*)
++	echo nsr-tandem-nsk${UNAME_RELEASE}
++	exit ;;
++    *:NonStop-UX:*:*)
++	echo mips-compaq-nonstopux
++	exit ;;
++    BS2000:POSIX*:*:*)
++	echo bs2000-siemens-sysv
++	exit ;;
++    DS/*:UNIX_System_V:*:*)
++	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
++	exit ;;
++    *:Plan9:*:*)
++	# "uname -m" is not consistent, so use $cputype instead. 386
++	# is converted to i386 for consistency with other x86
++	# operating systems.
++	if test "$cputype" = "386"; then
++	    UNAME_MACHINE=i386
++	else
++	    UNAME_MACHINE="$cputype"
++	fi
++	echo ${UNAME_MACHINE}-unknown-plan9
++	exit ;;
++    *:TOPS-10:*:*)
++	echo pdp10-unknown-tops10
++	exit ;;
++    *:TENEX:*:*)
++	echo pdp10-unknown-tenex
++	exit ;;
++    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
++	echo pdp10-dec-tops20
++	exit ;;
++    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
++	echo pdp10-xkl-tops20
++	exit ;;
++    *:TOPS-20:*:*)
++	echo pdp10-unknown-tops20
++	exit ;;
++    *:ITS:*:*)
++	echo pdp10-unknown-its
++	exit ;;
++    SEI:*:*:SEIUX)
++	echo mips-sei-seiux${UNAME_RELEASE}
++	exit ;;
++    *:DragonFly:*:*)
++	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
++	exit ;;
++    *:*VMS:*:*)
++	UNAME_MACHINE=`(uname -p) 2>/dev/null`
++	case "${UNAME_MACHINE}" in
++	    A*) echo alpha-dec-vms ; exit ;;
++	    I*) echo ia64-dec-vms ; exit ;;
++	    V*) echo vax-dec-vms ; exit ;;
++	esac ;;
++    *:XENIX:*:SysV)
++	echo i386-pc-xenix
++	exit ;;
++    i*86:skyos:*:*)
++	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
++	exit ;;
++    i*86:rdos:*:*)
++	echo ${UNAME_MACHINE}-pc-rdos
++	exit ;;
++    i*86:AROS:*:*)
++	echo ${UNAME_MACHINE}-pc-aros
++	exit ;;
++    x86_64:VMkernel:*:*)
++	echo ${UNAME_MACHINE}-unknown-esx
++	exit ;;
++esac
++
++cat >&2 <<EOF
++$0: unable to guess system type
++
++This script, last modified $timestamp, has failed to recognize
++the operating system you are using. It is advised that you
++download the most up to date version of the config scripts from
++
++  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
++and
++  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
++
++If the version you run ($0) is already up to date, please
++send the following data and any information you think might be
++pertinent to <config-patches@gnu.org> in order to provide the needed
++information to handle your system.
++
++config.guess timestamp = $timestamp
++
++uname -m = `(uname -m) 2>/dev/null || echo unknown`
++uname -r = `(uname -r) 2>/dev/null || echo unknown`
++uname -s = `(uname -s) 2>/dev/null || echo unknown`
++uname -v = `(uname -v) 2>/dev/null || echo unknown`
++
++/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
++/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
++
++hostinfo               = `(hostinfo) 2>/dev/null`
++/bin/universe          = `(/bin/universe) 2>/dev/null`
++/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
++/bin/arch              = `(/bin/arch) 2>/dev/null`
++/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
++/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
++
++UNAME_MACHINE = ${UNAME_MACHINE}
++UNAME_RELEASE = ${UNAME_RELEASE}
++UNAME_SYSTEM  = ${UNAME_SYSTEM}
++UNAME_VERSION = ${UNAME_VERSION}
++EOF
++
++exit 1
++
++# Local variables:
++# eval: (add-hook 'write-file-hooks 'time-stamp)
++# time-stamp-start: "timestamp='"
++# time-stamp-format: "%:y-%02m-%02d"
++# time-stamp-end: "'"
++# End:
+Index: b/common/autoconf/build-aux/config.sub
+===================================================================
+--- a/common/autoconf/build-aux/config.sub
++++ b/common/autoconf/build-aux/config.sub
+@@ -1,70 +1,40 @@
+ #! /bin/sh
++# Configuration validation subroutine script.
++#   Copyright 1992-2014 Free Software Foundation, Inc.
+ 
+-#
+-# Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+-#
+-# This code is free software; you can redistribute it and/or modify it
+-# under the terms of the GNU General Public License version 2 only, as
+-# published by the Free Software Foundation.  Oracle designates this
+-# particular file as subject to the "Classpath" exception as provided
+-# by Oracle in the LICENSE file that accompanied this code.
+-#
+-# This code is distributed in the hope that it will be useful, but WITHOUT
+-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+-# version 2 for more details (a copy is included in the LICENSE file that
+-# accompanied this code).
+-#
+-# You should have received a copy of the GNU General Public License version
+-# 2 along with this work; if not, write to the Free Software Foundation,
+-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+-#
+-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+-# or visit www.oracle.com if you need additional information or have any
+-# questions.
+-#
++timestamp='2014-05-01'
+ 
+-# Configuration validation subroutine script.
+-#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+-#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+-#   Free Software Foundation, Inc.
+-
+-timestamp='2008-01-16'
+-
+-# This file is (in principle) common to ALL GNU software.
+-# The presence of a machine in this file suggests that SOME GNU software
+-# can handle that machine.  It does not imply ALL GNU software can.
+-#
+-# This file is free software; you can redistribute it and/or modify
+-# it under the terms of the GNU General Public License as published by
+-# the Free Software Foundation; either version 2 of the License, or
++# This file is free software; you can redistribute it and/or modify it
++# under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 3 of the License, or
+ # (at your option) any later version.
+ #
+-# This program is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY; without even the implied warranty of
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-# GNU General Public License for more details.
++# This program is distributed in the hope that it will be useful, but
++# WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++# General Public License for more details.
+ #
+ # You should have received a copy of the GNU General Public License
+-# along with this program; if not, write to the Free Software
+-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+-# 02110-1301, USA.
++# along with this program; if not, see <http://www.gnu.org/licenses/>.
+ #
+ # As a special exception to the GNU General Public License, if you
+ # distribute this file as part of a program that contains a
+ # configuration script generated by Autoconf, you may include it under
+-# the same distribution terms that you use for the rest of that program.
++# the same distribution terms that you use for the rest of that
++# program.  This Exception is an additional permission under section 7
++# of the GNU General Public License, version 3 ("GPLv3").
+ 
+ 
+-# Please send patches to <config-patches@gnu.org>.  Submit a context
+-# diff and a properly formatted ChangeLog entry.
++# Please send patches with a ChangeLog entry to config-patches@gnu.org.
+ #
+ # Configuration subroutine to validate and canonicalize a configuration type.
+ # Supply the specified configuration type as an argument.
+ # If it is invalid, we print an error message on stderr and exit with code 1.
+ # Otherwise, we print the canonical config type on stdout and succeed.
+ 
++# You can get the latest version of this script from:
++# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
++
+ # This file is supposed to be the same for all GNU packages
+ # and recognize all the CPU types, system types and aliases
+ # that are meaningful with *any* GNU software.
+@@ -98,8 +68,7 @@ Report bugs and patches to <config-patch
+ version="\
+ GNU config.sub ($timestamp)
+ 
+-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
++Copyright 1992-2014 Free Software Foundation, Inc.
+ 
+ This is free software; see the source for copying conditions.  There is NO
+ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+@@ -146,12 +115,18 @@ esac
+ # Here we must recognize all the valid KERNEL-OS combinations.
+ maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+ case $maybe_os in
+-  nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
+-  uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
++  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
++  linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
++  knetbsd*-gnu* | netbsd*-gnu* | \
++  kopensolaris*-gnu* | \
+   storm-chaos* | os2-emx* | rtmk-nova*)
+     os=-$maybe_os
+     basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+     ;;
++  android-linux)
++    os=-linux-android
++    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
++    ;;
+   *)
+     basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+     if [ $basic_machine != $1 ]
+@@ -174,10 +149,13 @@ case $os in
+ 	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+ 	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+ 	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+-	-apple | -axis | -knuth | -cray)
++	-apple | -axis | -knuth | -cray | -microblaze*)
+ 		os=
+ 		basic_machine=$1
+ 		;;
++	-bluegene*)
++		os=-cnk
++		;;
+ 	-sim | -cisco | -oki | -wec | -winbond)
+ 		os=
+ 		basic_machine=$1
+@@ -192,10 +170,10 @@ case $os in
+ 		os=-chorusos
+ 		basic_machine=$1
+ 		;;
+- 	-chorusrdb)
+- 		os=-chorusrdb
++	-chorusrdb)
++		os=-chorusrdb
+ 		basic_machine=$1
+- 		;;
++		;;
+ 	-hiux*)
+ 		os=-hiuxwe2
+ 		;;
+@@ -240,6 +218,12 @@ case $os in
+ 	-isc*)
+ 		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ 		;;
++	-lynx*178)
++		os=-lynxos178
++		;;
++	-lynx*5)
++		os=-lynxos5
++		;;
+ 	-lynx*)
+ 		os=-lynxos
+ 		;;
+@@ -264,59 +248,85 @@ case $basic_machine in
+ 	# Some are omitted here because they have special meanings below.
+ 	1750a | 580 \
+ 	| a29k \
++	| aarch64 | aarch64_be \
+ 	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+ 	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+ 	| am33_2.0 \
+-	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
++	| arc | arceb \
++	| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
++	| avr | avr32 \
++	| be32 | be64 \
+ 	| bfin \
+-	| c4x | clipper \
++	| c4x | c8051 | clipper \
+ 	| d10v | d30v | dlx | dsp16xx \
++	| epiphany \
+ 	| fido | fr30 | frv \
+ 	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
++	| hexagon \
+ 	| i370 | i860 | i960 | ia64 \
+ 	| ip2k | iq2000 \
++	| k1om \
++	| le32 | le64 \
++	| lm32 \
+ 	| m32c | m32r | m32rle | m68000 | m68k | m88k \
+-	| maxq | mb | microblaze | mcore | mep \
++	| maxq | mb | microblaze | microblazeel | mcore | mep | metag \
+ 	| mips | mipsbe | mipseb | mipsel | mipsle \
+ 	| mips16 \
+ 	| mips64 | mips64el \
+-	| mips64vr | mips64vrel \
++	| mips64octeon | mips64octeonel \
+ 	| mips64orion | mips64orionel \
++	| mips64r5900 | mips64r5900el \
++	| mips64vr | mips64vrel \
+ 	| mips64vr4100 | mips64vr4100el \
+ 	| mips64vr4300 | mips64vr4300el \
+ 	| mips64vr5000 | mips64vr5000el \
+ 	| mips64vr5900 | mips64vr5900el \
+ 	| mipsisa32 | mipsisa32el \
+ 	| mipsisa32r2 | mipsisa32r2el \
++	| mipsisa32r6 | mipsisa32r6el \
+ 	| mipsisa64 | mipsisa64el \
+ 	| mipsisa64r2 | mipsisa64r2el \
++	| mipsisa64r6 | mipsisa64r6el \
+ 	| mipsisa64sb1 | mipsisa64sb1el \
+ 	| mipsisa64sr71k | mipsisa64sr71kel \
++	| mipsr5900 | mipsr5900el \
+ 	| mipstx39 | mipstx39el \
+ 	| mn10200 | mn10300 \
++	| moxie \
+ 	| mt \
+ 	| msp430 \
+-	| nios | nios2 \
++	| nds32 | nds32le | nds32be \
++	| nios | nios2 | nios2eb | nios2el \
+ 	| ns16k | ns32k \
+-	| or32 \
++	| open8 | or1k | or1knd | or32 \
+ 	| pdp10 | pdp11 | pj | pjl \
+-	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
++	| powerpc | powerpc64 | powerpc64le | powerpcle \
+ 	| pyramid \
++	| rl78 | rx \
+ 	| score \
+-	| sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
++	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+ 	| sh64 | sh64le \
+ 	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+ 	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+-	| spu | strongarm \
+-	| tahoe | thumb | tic4x | tic80 | tron \
+-	| v850 | v850e \
++	| spu \
++	| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
++	| ubicom32 \
++	| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
+ 	| we32k \
+-	| x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
+-	| z8k)
++	| x86 | xc16x | xstormy16 | xtensa \
++	| z8k | z80)
+ 		basic_machine=$basic_machine-unknown
+ 		;;
+-	m6811 | m68hc11 | m6812 | m68hc12)
+-		# Motorola 68HC11/12.
++	c54x)
++		basic_machine=tic54x-unknown
++		;;
++	c55x)
++		basic_machine=tic55x-unknown
++		;;
++	c6x)
++		basic_machine=tic6x-unknown
++		;;
++	m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
+ 		basic_machine=$basic_machine-unknown
+ 		os=-none
+ 		;;
+@@ -326,6 +336,21 @@ case $basic_machine in
+ 		basic_machine=mt-unknown
+ 		;;
+ 
++	strongarm | thumb | xscale)
++		basic_machine=arm-unknown
++		;;
++	xgate)
++		basic_machine=$basic_machine-unknown
++		os=-none
++		;;
++	xscaleeb)
++		basic_machine=armeb-unknown
++		;;
++
++	xscaleel)
++		basic_machine=armel-unknown
++		;;
++
+ 	# We use `pc' rather than `unknown'
+ 	# because (1) that's what they normally are, and
+ 	# (2) the word "unknown" tends to confuse beginning users.
+@@ -340,64 +365,82 @@ case $basic_machine in
+ 	# Recognize the basic CPU types with company name.
+ 	580-* \
+ 	| a29k-* \
++	| aarch64-* | aarch64_be-* \
+ 	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+ 	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+-	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
++	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
+ 	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
+ 	| avr-* | avr32-* \
++	| be32-* | be64-* \
+ 	| bfin-* | bs2000-* \
+-	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+-	| clipper-* | craynv-* | cydra-* \
++	| c[123]* | c30-* | [cjt]90-* | c4x-* \
++	| c8051-* | clipper-* | craynv-* | cydra-* \
+ 	| d10v-* | d30v-* | dlx-* \
+ 	| elxsi-* \
+ 	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
+ 	| h8300-* | h8500-* \
+ 	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
++	| hexagon-* \
+ 	| i*86-* | i860-* | i960-* | ia64-* \
+ 	| ip2k-* | iq2000-* \
++	| k1om-* \
++	| le32-* | le64-* \
++	| lm32-* \
+ 	| m32c-* | m32r-* | m32rle-* \
+ 	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+-	| m88110-* | m88k-* | maxq-* | mcore-* \
++	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
++	| microblaze-* | microblazeel-* \
+ 	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+ 	| mips16-* \
+ 	| mips64-* | mips64el-* \
+-	| mips64vr-* | mips64vrel-* \
++	| mips64octeon-* | mips64octeonel-* \
+ 	| mips64orion-* | mips64orionel-* \
++	| mips64r5900-* | mips64r5900el-* \
++	| mips64vr-* | mips64vrel-* \
+ 	| mips64vr4100-* | mips64vr4100el-* \
+ 	| mips64vr4300-* | mips64vr4300el-* \
+ 	| mips64vr5000-* | mips64vr5000el-* \
+ 	| mips64vr5900-* | mips64vr5900el-* \
+ 	| mipsisa32-* | mipsisa32el-* \
+ 	| mipsisa32r2-* | mipsisa32r2el-* \
++	| mipsisa32r6-* | mipsisa32r6el-* \
+ 	| mipsisa64-* | mipsisa64el-* \
+ 	| mipsisa64r2-* | mipsisa64r2el-* \
++	| mipsisa64r6-* | mipsisa64r6el-* \
+ 	| mipsisa64sb1-* | mipsisa64sb1el-* \
+ 	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
++	| mipsr5900-* | mipsr5900el-* \
+ 	| mipstx39-* | mipstx39el-* \
+ 	| mmix-* \
+ 	| mt-* \
+ 	| msp430-* \
+-	| nios-* | nios2-* \
++	| nds32-* | nds32le-* | nds32be-* \
++	| nios-* | nios2-* | nios2eb-* | nios2el-* \
+ 	| none-* | np1-* | ns16k-* | ns32k-* \
++	| open8-* \
++	| or1k*-* \
+ 	| orion-* \
+ 	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+-	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
++	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
+ 	| pyramid-* \
+-	| romp-* | rs6000-* \
+-	| sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
++	| rl78-* | romp-* | rs6000-* | rx-* \
++	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+ 	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+ 	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+ 	| sparclite-* \
+-	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
+-	| tahoe-* | thumb-* \
++	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
++	| tahoe-* \
+ 	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
++	| tile*-* \
+ 	| tron-* \
+-	| v850-* | v850e-* | vax-* \
++	| ubicom32-* \
++	| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
++	| vax-* \
+ 	| we32k-* \
+-	| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
++	| x86-* | x86_64-* | xc16x-* | xps100-* \
+ 	| xstormy16-* | xtensa*-* \
+ 	| ymp-* \
+-	| z8k-*)
++	| z8k-* | z80-*)
+ 		;;
+ 	# Recognize the basic CPU types without company name, with glob match.
+ 	xtensa*)
+@@ -419,7 +462,7 @@ case $basic_machine in
+ 		basic_machine=a29k-amd
+ 		os=-udi
+ 		;;
+-    	abacus)
++	abacus)
+ 		basic_machine=abacus-unknown
+ 		;;
+ 	adobe68k)
+@@ -465,6 +508,10 @@ case $basic_machine in
+ 		basic_machine=m68k-apollo
+ 		os=-bsd
+ 		;;
++	aros)
++		basic_machine=i386-pc
++		os=-aros
++		;;
+ 	aux)
+ 		basic_machine=m68k-apple
+ 		os=-aux
+@@ -481,10 +528,27 @@ case $basic_machine in
+ 		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+ 		os=-linux
+ 		;;
++	bluegene*)
++		basic_machine=powerpc-ibm
++		os=-cnk
++		;;
++	c54x-*)
++		basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
++		;;
++	c55x-*)
++		basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
++		;;
++	c6x-*)
++		basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
++		;;
+ 	c90)
+ 		basic_machine=c90-cray
+ 		os=-unicos
+ 		;;
++	cegcc)
++		basic_machine=arm-unknown
++		os=-cegcc
++		;;
+ 	convex-c1)
+ 		basic_machine=c1-convex
+ 		os=-bsd
+@@ -513,7 +577,7 @@ case $basic_machine in
+ 		basic_machine=craynv-cray
+ 		os=-unicosmp
+ 		;;
+-	cr16)
++	cr16 | cr16-*)
+ 		basic_machine=cr16-unknown
+ 		os=-elf
+ 		;;
+@@ -552,6 +616,10 @@ case $basic_machine in
+ 		basic_machine=m88k-motorola
+ 		os=-sysv3
+ 		;;
++	dicos)
++		basic_machine=i686-pc
++		os=-dicos
++		;;
+ 	djgpp)
+ 		basic_machine=i586-pc
+ 		os=-msdosdjgpp
+@@ -667,7 +735,6 @@ case $basic_machine in
+ 	i370-ibm* | ibm*)
+ 		basic_machine=i370-ibm
+ 		;;
+-# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
+ 	i*86v32)
+ 		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ 		os=-sysv32
+@@ -725,8 +792,15 @@ case $basic_machine in
+ 		basic_machine=ns32k-utek
+ 		os=-sysv
+ 		;;
++	microblaze*)
++		basic_machine=microblaze-xilinx
++		;;
++	mingw64)
++		basic_machine=x86_64-pc
++		os=-mingw64
++		;;
+ 	mingw32)
+-		basic_machine=i386-pc
++		basic_machine=i686-pc
+ 		os=-mingw32
+ 		;;
+ 	mingw32ce)
+@@ -761,10 +835,18 @@ case $basic_machine in
+ 	ms1-*)
+ 		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+ 		;;
++	msys)
++		basic_machine=i686-pc
++		os=-msys
++		;;
+ 	mvs)
+ 		basic_machine=i370-ibm
+ 		os=-mvs
+ 		;;
++	nacl)
++		basic_machine=le32-unknown
++		os=-nacl
++		;;
+ 	ncr3000)
+ 		basic_machine=i486-ncr
+ 		os=-sysv4
+@@ -829,6 +911,12 @@ case $basic_machine in
+ 	np1)
+ 		basic_machine=np1-gould
+ 		;;
++	neo-tandem)
++		basic_machine=neo-tandem
++		;;
++	nse-tandem)
++		basic_machine=nse-tandem
++		;;
+ 	nsr-tandem)
+ 		basic_machine=nsr-tandem
+ 		;;
+@@ -911,9 +999,10 @@ case $basic_machine in
+ 		;;
+ 	power)	basic_machine=power-ibm
+ 		;;
+-	ppc)	basic_machine=powerpc-unknown
++	ppc | ppcbe)	basic_machine=powerpc-unknown
+ 		;;
+-	ppc-*)	basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
++	ppc-* | ppcbe-*)
++		basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+ 		;;
+ 	ppcle | powerpclittle | ppc-le | powerpc-little)
+ 		basic_machine=powerpcle-unknown
+@@ -938,7 +1027,11 @@ case $basic_machine in
+ 		basic_machine=i586-unknown
+ 		os=-pw32
+ 		;;
+-	rdos)
++	rdos | rdos64)
++		basic_machine=x86_64-pc
++		os=-rdos
++		;;
++	rdos32)
+ 		basic_machine=i386-pc
+ 		os=-rdos
+ 		;;
+@@ -1007,6 +1100,9 @@ case $basic_machine in
+ 		basic_machine=i860-stratus
+ 		os=-sysv4
+ 		;;
++	strongarm-* | thumb-*)
++		basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
++		;;
+ 	sun2)
+ 		basic_machine=m68000-sun
+ 		;;
+@@ -1063,20 +1159,8 @@ case $basic_machine in
+ 		basic_machine=t90-cray
+ 		os=-unicos
+ 		;;
+-	tic54x | c54x*)
+-		basic_machine=tic54x-unknown
+-		os=-coff
+-		;;
+-	tic55x | c55x*)
+-		basic_machine=tic55x-unknown
+-		os=-coff
+-		;;
+-	tic6x | c6x*)
+-		basic_machine=tic6x-unknown
+-		os=-coff
+-		;;
+ 	tile*)
+-		basic_machine=tile-unknown
++		basic_machine=$basic_machine-unknown
+ 		os=-linux-gnu
+ 		;;
+ 	tx39)
+@@ -1146,6 +1230,9 @@ case $basic_machine in
+ 	xps | xps100)
+ 		basic_machine=xps100-honeywell
+ 		;;
++	xscale-* | xscalee[bl]-*)
++		basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
++		;;
+ 	ymp)
+ 		basic_machine=ymp-cray
+ 		os=-unicos
+@@ -1154,6 +1241,10 @@ case $basic_machine in
+ 		basic_machine=z8k-unknown
+ 		os=-sim
+ 		;;
++	z80-*-coff)
++		basic_machine=z80-unknown
++		os=-sim
++		;;
+ 	none)
+ 		basic_machine=none-none
+ 		os=-none
+@@ -1192,7 +1283,7 @@ case $basic_machine in
+ 	we32k)
+ 		basic_machine=we32k-att
+ 		;;
+-	sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
++	sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
+ 		basic_machine=sh-unknown
+ 		;;
+ 	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
+@@ -1239,9 +1330,12 @@ esac
+ if [ x"$os" != x"" ]
+ then
+ case $os in
+-        # First match some system type aliases
+-        # that might get confused with valid system types.
++	# First match some system type aliases
++	# that might get confused with valid system types.
+ 	# -solaris* is a basic system type, with this one exception.
++	-auroraux)
++		os=-auroraux
++		;;
+ 	-solaris1 | -solaris1.*)
+ 		os=`echo $os | sed -e 's|solaris1|sunos4|'`
+ 		;;
+@@ -1262,21 +1356,23 @@ case $os in
+ 	# Each alternative MUST END IN A *, to match a version number.
+ 	# -sysv* is not here because it comes later, after sysvr4.
+ 	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+-	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
+-	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
++	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
++	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
++	      | -sym* | -kopensolaris* | -plan9* \
+ 	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+-	      | -aos* \
++	      | -aos* | -aros* \
+ 	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+ 	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+ 	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+-	      | -openbsd* | -solidbsd* \
++	      | -bitrig* | -openbsd* | -solidbsd* \
+ 	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+ 	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+ 	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+ 	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+-	      | -chorusos* | -chorusrdb* \
+-	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+-	      | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
++	      | -chorusos* | -chorusrdb* | -cegcc* \
++	      | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
++	      | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
++	      | -linux-newlib* | -linux-musl* | -linux-uclibc* \
+ 	      | -uxpv* | -beos* | -mpeix* | -udk* \
+ 	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+ 	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+@@ -1284,7 +1380,7 @@ case $os in
+ 	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+ 	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+ 	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+-	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
++	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*)
+ 	# Remember, each alternative MUST END IN *, to match a version number.
+ 		;;
+ 	-qnx*)
+@@ -1323,7 +1419,7 @@ case $os in
+ 	-opened*)
+ 		os=-openedition
+ 		;;
+-        -os400*)
++	-os400*)
+ 		os=-os400
+ 		;;
+ 	-wince*)
+@@ -1372,7 +1468,7 @@ case $os in
+ 	-sinix*)
+ 		os=-sysv4
+ 		;;
+-        -tpf*)
++	-tpf*)
+ 		os=-tpf
+ 		;;
+ 	-triton*)
+@@ -1408,12 +1504,14 @@ case $os in
+ 	-aros*)
+ 		os=-aros
+ 		;;
+-	-kaos*)
+-		os=-kaos
+-		;;
+ 	-zvmoe)
+ 		os=-zvmoe
+ 		;;
++	-dicos*)
++		os=-dicos
++		;;
++	-nacl*)
++		;;
+ 	-none)
+ 		;;
+ 	*)
+@@ -1436,10 +1534,10 @@ else
+ # system, and we'll never get to this point.
+ 
+ case $basic_machine in
+-        score-*)
++	score-*)
+ 		os=-elf
+ 		;;
+-        spu-*)
++	spu-*)
+ 		os=-elf
+ 		;;
+ 	*-acorn)
+@@ -1451,8 +1549,23 @@ case $basic_machine in
+ 	arm*-semi)
+ 		os=-aout
+ 		;;
+-        c4x-* | tic4x-*)
+-        	os=-coff
++	c4x-* | tic4x-*)
++		os=-coff
++		;;
++	c8051-*)
++		os=-elf
++		;;
++	hexagon-*)
++		os=-elf
++		;;
++	tic54x-*)
++		os=-coff
++		;;
++	tic55x-*)
++		os=-coff
++		;;
++	tic6x-*)
++		os=-coff
+ 		;;
+ 	# This must come before the *-dec entry.
+ 	pdp10-*)
+@@ -1472,14 +1585,11 @@ case $basic_machine in
+ 		;;
+ 	m68000-sun)
+ 		os=-sunos3
+-		# This also exists in the configure program, but was not the
+-		# default.
+-		# os=-sunos4
+ 		;;
+ 	m68*-cisco)
+ 		os=-aout
+ 		;;
+-        mep-*)
++	mep-*)
+ 		os=-elf
+ 		;;
+ 	mips*-cisco)
+@@ -1506,7 +1616,7 @@ case $basic_machine in
+ 	*-ibm)
+ 		os=-aix
+ 		;;
+-    	*-knuth)
++	*-knuth)
+ 		os=-mmixware
+ 		;;
+ 	*-wec)
+@@ -1611,7 +1721,7 @@ case $basic_machine in
+ 			-sunos*)
+ 				vendor=sun
+ 				;;
+-			-aix*)
++			-cnk*|-aix*)
+ 				vendor=ibm
+ 				;;
+ 			-beos*)
diff -pruN 8u312-b07-1/debian/patches/bootstrap-with-gcj.diff 8u312-b07-0ubuntu1/debian/patches/bootstrap-with-gcj.diff
--- 8u312-b07-1/debian/patches/bootstrap-with-gcj.diff	1970-01-01 00:00:00.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/bootstrap-with-gcj.diff	2015-03-17 00:13:29.000000000 +0000
@@ -0,0 +1,654 @@
+Description: Build the langtools with GCJ. This patch is incomplete but may be
+ used as a starting point for someone really willing to bootstrap OpenJDK 8
+ with GCJ. The compilation fails due to the missing java.nio.file API, several
+ classes would have to be modified to work without this package. It's possible
+ to ignore ~100 errors by skipping the compilation of jdeps (delete the
+ langtools/src/share/classes/com/sun/tools/jdeps directory). The build will then
+ fail on the BUILD_FULL_JAVAC phase.
+Author: Emmanuel Bourg <ebourg@apache.org>
+--- a/common/autoconf/boot-jdk.m4
++++ b/common/autoconf/boot-jdk.m4
+@@ -54,7 +54,7 @@
+             BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1`
+ 
+             # Extra M4 quote needed to protect [] in grep expression.
+-            [FOUND_VERSION_78=`echo $BOOT_JDK_VERSION | grep  '\"1\.[78]\.'`]
++            [FOUND_VERSION_78=`echo $BOOT_JDK_VERSION | grep  '\"1\.[5678]\.'`]
+             if test "x$FOUND_VERSION_78" = x; then
+               AC_MSG_NOTICE([Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring])
+               AC_MSG_NOTICE([(Your Boot JDK must be version 7 or 8)])
+@@ -278,7 +278,7 @@
+   BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JAVA,java)
+   BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JAVAC,javac)
+   BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JAVAH,javah)
+-  BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JAVAP,javap)
++  #BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JAVAP,javap)
+   BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JAR,jar)
+   BOOTJDK_CHECK_TOOL_IN_BOOTJDK(RMIC,rmic)
+   BOOTJDK_CHECK_TOOL_IN_BOOTJDK(NATIVE2ASCII,native2ascii)
+@@ -286,7 +286,7 @@
+   # Finally, set some other options...
+ 
+   # When compiling code to be executed by the Boot JDK, force jdk7 compatibility.
+-  BOOT_JDK_SOURCETARGET="-source 7 -target 7"
++  BOOT_JDK_SOURCETARGET="-source 1.7 -target 1.7"
+   AC_SUBST(BOOT_JDK_SOURCETARGET)
+   AC_SUBST(JAVAC_FLAGS)
+ ])
+--- a/langtools/src/share/classes/com/sun/tools/javac/file/ZipFileIndex.java
++++ b/langtools/src/share/classes/com/sun/tools/javac/file/ZipFileIndex.java
+@@ -1163,7 +1163,8 @@
+         }
+ 
+         protected ZipFormatException(String message, Throwable cause) {
+-            super(message, cause);
++            super(message);
++            initCause(cause);
+         }
+     }
+ }
+--- a/langtools/src/share/classes/com/sun/tools/javac/jvm/JNIWriter.java
++++ b/langtools/src/share/classes/com/sun/tools/javac/jvm/JNIWriter.java
+@@ -218,7 +218,7 @@
+             println(out, cppGuardEnd());
+             println(out, guardEnd(cname));
+         } catch (TypeSignature.SignatureException e) {
+-            throw new IOException(e);
++            throw (IOException) new IOException().initCause(e);
+         }
+     }
+ 
+--- a/langtools/src/share/classes/com/sun/tools/javac/file/RegularFileObject.java
++++ b/langtools/src/share/classes/com/sun/tools/javac/file/RegularFileObject.java
+@@ -40,7 +40,6 @@
+ import java.nio.CharBuffer;
+ import java.nio.charset.CharsetDecoder;
+ import javax.tools.JavaFileObject;
+-import java.text.Normalizer;
+ 
+ /**
+  * A subclass of JavaFileObject representing regular files.
+@@ -182,17 +181,6 @@
+         if (name.equals(n)) {
+             return true;
+         }
+-        if (isMacOS && Normalizer.isNormalized(name, Normalizer.Form.NFD)
+-            && Normalizer.isNormalized(n, Normalizer.Form.NFC)) {
+-            // On Mac OS X it is quite possible to file name and class
+-            // name normalized in a different way - in that case we have to normalize file name
+-            // to the Normal Form Compised (NFC)
+-            String normName = Normalizer.normalize(name, Normalizer.Form.NFC);
+-            if (normName.equals(n)) {
+-                this.name = normName;
+-                return true;
+-            }
+-        }
+ 
+             if (name.equalsIgnoreCase(n)) {
+             try {
+--- a/langtools/src/share/classes/com/sun/tools/javac/tree/DocPretty.java
++++ b/langtools/src/share/classes/com/sun/tools/javac/tree/DocPretty.java
+@@ -67,7 +67,7 @@
+                 tree.accept(this, null);
+             }
+         } catch (UncheckedIOException ex) {
+-            throw new IOException(ex.getMessage(), ex);
++            throw (IOException) new IOException(ex.getMessage()).initCause(ex);
+         }
+     }
+ 
+--- a/make/common/JavaCompilation.gmk
++++ b/make/common/JavaCompilation.gmk
+@@ -549,7 +549,7 @@
+ 	$$(call ListPathsSafely,$1_SRCS,\n, >> $$($1_BIN)/_the.$1_batch.tmp)
+ 	$(ECHO) Compiling `$(WC) $$($1_BIN)/_the.$1_batch.tmp | $(TR) -s ' ' | $(CUT) -f 2 -d ' '` files for $1
+ 	($$($1_JVM) $$($1_JAVAC) $$($1_FLAGS) \
+-	    -implicit:none -sourcepath "$$($1_SRCROOTSC)" \
++	    -sourcepath "$$($1_SRCROOTSC)" \
+ 	    -d $$($1_BIN) $$($1_HEADERS_ARG) @$$($1_BIN)/_the.$1_batch.tmp && \
+ 	$(MV) $$($1_BIN)/_the.$1_batch.tmp $$($1_BIN)/_the.$1_batch)
+ 
+--- a/langtools/src/share/classes/com/sun/tools/javac/util/ServiceLoader.java
++++ b/langtools/src/share/classes/com/sun/tools/javac/util/ServiceLoader.java
+@@ -38,7 +38,6 @@
+ import java.util.List;
+ import java.util.Map;
+ import java.util.NoSuchElementException;
+-import java.util.Objects;
+ import java.util.ServiceConfigurationError;
+ 
+ 
+@@ -70,7 +69,7 @@
+     private ClassLoader loader;
+ 
+     // Cached providers, in instantiation order
+-    private LinkedHashMap<String,S> providers = new LinkedHashMap<>();
++    private LinkedHashMap<String,S> providers = new LinkedHashMap<String,S>();
+ 
+     // The current lazy-lookup iterator
+     private LazyIterator lookupIterator;
+@@ -92,7 +91,10 @@
+     }
+ 
+     private ServiceLoader(Class<S> svc, ClassLoader cl) {
+-        service = Objects.requireNonNull(svc, "Service interface cannot be null");
++        if (svc == null) {
++            throw new NullPointerException("Service interface cannot be null");
++        }
++        service = svc;
+         loader = (cl == null) ? ClassLoader.getSystemClassLoader() : cl;
+         reload();
+     }
+@@ -170,7 +172,7 @@
+     {
+         InputStream in = null;
+         BufferedReader r = null;
+-        ArrayList<String> names = new ArrayList<>();
++        ArrayList<String> names = new ArrayList<String>();
+         try {
+             // The problem is that by default, streams opened with
+             // u.openInputStream use a cached reference to a JarFile, which
+@@ -362,7 +364,7 @@
+     public static <S> ServiceLoader<S> load(Class<S> service,
+                                             ClassLoader loader)
+     {
+-        return new ServiceLoader<>(service, loader);
++        return new ServiceLoader<S>(service, loader);
+     }
+ 
+     /**
+--- a/langtools/src/share/classes/javax/annotation/processing/AbstractProcessor.java
++++ b/langtools/src/share/classes/javax/annotation/processing/AbstractProcessor.java
+@@ -28,7 +28,6 @@
+ import java.util.Set;
+ import java.util.HashSet;
+ import java.util.Collections;
+-import java.util.Objects;
+ import javax.lang.model.element.*;
+ import javax.lang.model.SourceVersion;
+ import javax.tools.Diagnostic;
+@@ -147,7 +146,8 @@
+     public synchronized void init(ProcessingEnvironment processingEnv) {
+         if (initialized)
+             throw new IllegalStateException("Cannot call init more than once.");
+-        Objects.requireNonNull(processingEnv, "Tool provided null ProcessingEnvironment");
++        if (processingEnv == null)
++            throw new NullPointerException("Tool provided null ProcessingEnvironment");
+ 
+         this.processingEnv = processingEnv;
+         initialized = true;
+--- a/langtools/src/share/classes/com/sun/tools/javac/util/Pair.java
++++ b/langtools/src/share/classes/com/sun/tools/javac/util/Pair.java
+@@ -25,8 +25,6 @@
+ 
+ package com.sun.tools.javac.util;
+ 
+-import java.util.Objects;
+-
+ /** A generic class for pairs.
+  *
+  *  <p><b>This is NOT part of any supported API.
+@@ -51,8 +49,12 @@
+     public boolean equals(Object other) {
+         return
+             other instanceof Pair<?,?> &&
+-            Objects.equals(fst, ((Pair<?,?>)other).fst) &&
+-            Objects.equals(snd, ((Pair<?,?>)other).snd);
++            equals(fst, ((Pair<?,?>)other).fst) &&
++            equals(snd, ((Pair<?,?>)other).snd);
++    }
++
++    private boolean equals(Object a, Object b) {
++        return (a == b) || (a != null && a.equals(b));
+     }
+ 
+     public int hashCode() {
+--- a/langtools/make/build.properties
++++ b/langtools/make/build.properties
+@@ -68,7 +68,7 @@
+ # set the following to -version to verify the versions of javac being used
+ javac.version.opt =
+ # in time, there should be no exceptions to -Xlint:all
+-javac.lint.opts = -Xlint:all -Werror
++javac.lint.opts = -Xlint:all
+ 
+ # options for the <javadoc> task for javac
+ #javadoc.jls3.url=http://java.sun.com/docs/books/jls/
+--- a/langtools/make/BuildLangtools.gmk
++++ b/langtools/make/BuildLangtools.gmk
+@@ -36,7 +36,7 @@
+     JAVAC := $(JAVAC), \
+     SERVER_DIR := $(SJAVAC_SERVER_DIR), \
+     SERVER_JVM := $(SJAVAC_SERVER_JAVA), \
+-    FLAGS := -XDignore.symbol.file=true -g -Xlint:all$(COMMA)-deprecation -Werror))
++    FLAGS := -XDignore.symbol.file=true -g -Xlint:all$(COMMA)-deprecation -nowarn -1.7))
+ 
+ # javax.tools.JavaCompilerTool isn't really a suffix but this gets the file copied.
+ RESOURCE_SUFFIXES := .gif .xml .css .js javax.tools.JavaCompilerTool
+@@ -175,7 +175,7 @@
+         JAVAC := "-Xbootclasspath/p:$(LANGTOOLS_OUTPUTDIR)/dist/bootstrap/lib/javac.jar" \
+             -cp $(LANGTOOLS_OUTPUTDIR)/dist/bootstrap/lib/javac.jar \
+             com.sun.tools.javac.Main, \
+-        FLAGS := -XDignore.symbol.file=true -Xlint:all$(COMMA)-deprecation -Werror, \
++        FLAGS := -XDignore.symbol.file=true -Xlint:all$(COMMA)-deprecation, \
+         SERVER_DIR := $(SJAVAC_SERVER_DIR), \
+         SERVER_JVM := $(SJAVAC_SERVER_JAVA)))
+ 
+--- a/langtools/src/share/classes/com/sun/tools/classfile/ClassFile.java
++++ b/langtools/src/share/classes/com/sun/tools/classfile/ClassFile.java
+@@ -28,8 +28,7 @@
+ import java.io.File;
+ import java.io.IOException;
+ import java.io.InputStream;
+-import java.nio.file.Files;
+-import java.nio.file.Path;
++import java.io.FileInputStream;
+ 
+ import static com.sun.tools.classfile.AccessFlags.*;
+ 
+@@ -44,26 +43,16 @@
+ public class ClassFile {
+     public static ClassFile read(File file)
+             throws IOException, ConstantPoolException {
+-        return read(file.toPath(), new Attribute.Factory());
++        return read(file, new Attribute.Factory());
+     }
+ 
+-    public static ClassFile read(Path input)
+-            throws IOException, ConstantPoolException {
+-        return read(input, new Attribute.Factory());
+-    }
+-
+-    public static ClassFile read(Path input, Attribute.Factory attributeFactory)
++    public static ClassFile read(File file, Attribute.Factory attributeFactory)
+             throws IOException, ConstantPoolException {
+-        try (InputStream in = Files.newInputStream(input)) {
++        try (InputStream in = new FileInputStream(file)) {
+             return new ClassFile(in, attributeFactory);
+         }
+     }
+ 
+-    public static ClassFile read(File file, Attribute.Factory attributeFactory)
+-            throws IOException, ConstantPoolException {
+-        return read(file.toPath(), attributeFactory);
+-    }
+-
+     public static ClassFile read(InputStream in)
+             throws IOException, ConstantPoolException {
+         return new ClassFile(in, new Attribute.Factory());
+--- a/langtools/src/share/classes/com/sun/tools/javac/nio/PathFileManager.java
++++ b/langtools/src/share/classes/com/sun/tools/javac/nio/PathFileManager.java
+@@ -25,10 +25,8 @@
+ 
+ package com.sun.tools.javac.nio;
+ 
++import java.io.File;
+ import java.io.IOException;
+-import java.nio.file.FileSystem;
+-import java.nio.file.FileSystems;
+-import java.nio.file.Path;
+ import javax.tools.FileObject;
+ import javax.tools.JavaFileManager;
+ import javax.tools.JavaFileObject;
+@@ -52,13 +50,13 @@
+      * Get the default file system used to create paths. If no value has been
+      * set, the default file system is {@link FileSystems#getDefault}.
+      */
+-    FileSystem getDefaultFileSystem();
++    //FileSystem getDefaultFileSystem();
+ 
+     /**
+      * Set the default file system used to create paths.
+      * @param fs the default file system used to create any new paths.
+      */
+-    void setDefaultFileSystem(FileSystem fs);
++    //void setDefaultFileSystem(FileSystem fs);
+ 
+     /**
+      * Get file objects representing the given files.
+@@ -69,7 +67,7 @@
+      * a directory
+      */
+     Iterable<? extends JavaFileObject> getJavaFileObjectsFromPaths(
+-        Iterable<? extends Path> paths);
++        Iterable<File> paths);
+ 
+     /**
+      * Get file objects representing the given paths.
+@@ -86,7 +84,7 @@
+      * @throws NullPointerException if the given array contains null
+      * elements
+      */
+-    Iterable<? extends JavaFileObject> getJavaFileObjects(Path... paths);
++    Iterable<? extends JavaFileObject> getJavaFileObjects(File... paths);
+ 
+     /**
+      * Return the Path for a file object that has been obtained from this
+@@ -97,7 +95,7 @@
+      * @throws IllegalArgumentException is the file object was not obtained from
+      * from this file manager.
+      */
+-    Path getPath(FileObject fo);
++    File getPath(FileObject fo);
+ 
+     /**
+      * Get the search path associated with the given location.
+@@ -107,7 +105,7 @@
+      * associated search path
+      * @see #setLocation
+      */
+-    Iterable<? extends Path> getLocation(Location location);
++    Iterable<File> getLocation(Location location);
+ 
+     /**
+      * Associate the given search path with the given location.  Any
+@@ -122,5 +120,5 @@
+      * @throws IOException if location is an output location and searchpath
+      * does not represent an existing directory
+      */
+-    void setLocation(Location location, Iterable<? extends Path> searchPath) throws IOException;
++    void setLocation(Location location, Iterable<File> searchPath) throws IOException;
+ }
+--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/PathDocFileFactory.java
++++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/PathDocFileFactory.java
+@@ -28,15 +28,13 @@
+ import java.io.BufferedInputStream;
+ import java.io.BufferedOutputStream;
+ import java.io.BufferedWriter;
++import java.io.File;
+ import java.io.IOException;
+ import java.io.InputStream;
+ import java.io.OutputStream;
+ import java.io.OutputStreamWriter;
+ import java.io.UnsupportedEncodingException;
+ import java.io.Writer;
+-import java.nio.file.DirectoryStream;
+-import java.nio.file.Files;
+-import java.nio.file.Path;
+ import java.util.ArrayList;
+ import java.util.Arrays;
+ import java.util.LinkedHashSet;
+@@ -65,7 +63,7 @@
+  */
+ class PathDocFileFactory extends DocFileFactory {
+     private final PathFileManager fileManager;
+-    private final Path destDir;
++    private final File destDir;
+ 
+     public PathDocFileFactory(Configuration configuration) {
+         super(configuration);
+@@ -75,7 +73,7 @@
+                 || !fileManager.hasLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT)) {
+             try {
+                 String dirName = configuration.destDirName.isEmpty() ? "." : configuration.destDirName;
+-                Path dir = fileManager.getDefaultFileSystem().getPath(dirName);
++                File dir = new File(dirName);
+                 fileManager.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(dir));
+             } catch (IOException e) {
+                 throw new DocletAbortException(e);
+@@ -86,11 +84,11 @@
+     }
+ 
+     public DocFile createFileForDirectory(String file) {
+-        return new StandardDocFile(fileManager.getDefaultFileSystem().getPath(file));
++        return new StandardDocFile(new File(file));
+     }
+ 
+     public DocFile createFileForInput(String file) {
+-        return new StandardDocFile(fileManager.getDefaultFileSystem().getPath(file));
++        return new StandardDocFile(new File(file));
+     }
+ 
+     public DocFile createFileForOutput(DocPath path) {
+@@ -104,10 +102,10 @@
+ 
+         Set<DocFile> files = new LinkedHashSet<DocFile>();
+         if (fileManager.hasLocation(location)) {
+-            for (Path f: fileManager.getLocation(location)) {
+-                if (Files.isDirectory(f)) {
+-                    f = f.resolve(path.getPath());
+-                    if (Files.exists(f))
++            for (File f: fileManager.getLocation(location)) {
++                if (f.isDirectory()) {
++                    f = new File(f, path.getPath());
++                    if (f.exists())
+                         files.add(new StandardDocFile(f));
+                 }
+             }
+@@ -116,10 +114,10 @@
+     }
+ 
+     class StandardDocFile extends DocFile {
+-        private Path file;
++        private File file;
+ 
+         /** Create a StandardDocFile for a given file. */
+-        private StandardDocFile(Path file) {
++        private StandardDocFile(File file) {
+             super(configuration);
+             this.file = file;
+         }
+@@ -127,7 +125,7 @@
+         /** Create a StandardDocFile for a given location and relative path. */
+         private StandardDocFile(Location location, DocPath path) {
+             super(configuration, location, path);
+-            this.file = destDir.resolve(path.getPath());
++            this.file = new File(destDir, path.getPath());
+         }
+ 
+         /** Open an input stream for the file. */
+@@ -169,22 +167,22 @@
+ 
+         /** Return true if the file can be read. */
+         public boolean canRead() {
+-            return Files.isReadable(file);
++            return file.canRead();
+         }
+ 
+         /** Return true if the file can be written. */
+         public boolean canWrite() {
+-            return Files.isWritable(file);
++            return file.canWrite();
+         }
+ 
+         /** Return true if the file exists. */
+         public boolean exists() {
+-            return Files.exists(file);
++            return file.exists();
+         }
+ 
+         /** Return the base name (last component) of the file name. */
+         public String getName() {
+-            return file.getFileName().toString();
++            return file.getName();
+         }
+ 
+         /** Return the file system path for this file. */
+@@ -199,12 +197,12 @@
+ 
+         /** Return true is file identifies a directory. */
+         public boolean isDirectory() {
+-            return Files.isDirectory(file);
++            return file.isDirectory();
+         }
+ 
+         /** Return true is file identifies a file. */
+         public boolean isFile() {
+-            return Files.isRegularFile(file);
++            return file.exists() && !file.isDirectory();
+         }
+ 
+         /** Return true if this file is the same as another. */
+@@ -212,32 +210,21 @@
+             if (!(other instanceof StandardDocFile))
+                 return false;
+ 
+-            try {
+-                return Files.isSameFile(file, ((StandardDocFile) other).file);
+-            } catch (IOException e) {
+-                return false;
+-            }
++            return file.equals(((StandardDocFile) other).file);
+         }
+ 
+         /** If the file is a directory, list its contents. */
+         public Iterable<DocFile> list() throws IOException {
+             List<DocFile> files = new ArrayList<DocFile>();
+-            try (DirectoryStream<Path> ds = Files.newDirectoryStream(file)) {
+-                for (Path f: ds) {
+-                    files.add(new StandardDocFile(f));
+-                }
++            for (File f : file.listFiles()) {
++                files.add(new StandardDocFile(f));
+             }
+             return files;
+         }
+ 
+         /** Create the file as a directory, including any parent directories. */
+         public boolean mkdirs() {
+-            try {
+-                Files.createDirectories(file);
+-                return true;
+-            } catch (IOException e) {
+-                return false;
+-            }
++            return file.mkdirs();
+         }
+ 
+         /**
+@@ -258,7 +245,7 @@
+          */
+         public DocFile resolve(String p) {
+             if (location == null && path == null) {
+-                return new StandardDocFile(file.resolve(p));
++                return new StandardDocFile(new File(file, p));
+             } else {
+                 return new StandardDocFile(location, path.resolve(p));
+             }
+@@ -272,7 +259,7 @@
+         public DocFile resolveAgainst(Location locn) {
+             if (locn != DocumentationTool.Location.DOCUMENTATION_OUTPUT)
+                 throw new IllegalArgumentException();
+-            return new StandardDocFile(destDir.resolve(file));
++            return new StandardDocFile(new File(destDir, file.toString()));
+         }
+ 
+         /** Return a string to identify the contents of this object,
+@@ -291,7 +278,7 @@
+             return sb.toString();
+         }
+ 
+-        private JavaFileObject getJavaFileObjectForInput(Path file) {
++        private JavaFileObject getJavaFileObjectForInput(File file) {
+             return fileManager.getJavaFileObjects(file).iterator().next();
+         }
+ 
+--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlTree.java
++++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlTree.java
+@@ -196,7 +196,8 @@
+     }
+ 
+     private static String encodeURL(String url) {
+-        byte[] urlBytes = url.getBytes(Charset.forName("UTF-8"));
++        try {
++        byte[] urlBytes = url.getBytes("UTF-8");
+         StringBuilder sb = new StringBuilder();
+         for (int i = 0; i < urlBytes.length; i++) {
+             int c = urlBytes[i];
+@@ -207,6 +208,9 @@
+             }
+         }
+         return sb.toString();
++        } catch (java.io.UnsupportedEncodingException e) {
++            throw new RuntimeException(e);
++        }
+     }
+ 
+     /**
+--- a/langtools/src/share/classes/com/sun/tools/classfile/ReferenceFinder.java
++++ b/langtools/src/share/classes/com/sun/tools/classfile/ReferenceFinder.java
+@@ -28,7 +28,6 @@
+ import java.util.ArrayList;
+ import java.util.HashSet;
+ import java.util.List;
+-import java.util.Objects;
+ import java.util.Set;
+ import com.sun.tools.classfile.Instruction.TypeKind;
+ import static com.sun.tools.classfile.ConstantPool.*;
+@@ -77,8 +76,11 @@
+      * Constructor.
+      */
+     public ReferenceFinder(Filter filter, Visitor visitor) {
+-        this.filter = Objects.requireNonNull(filter);
+-        this.visitor = Objects.requireNonNull(visitor);
++        if (filter == null || visitor == null) {
++            throw new NullPointerException();
++        }
++        this.filter = filter;
++        this.visitor = visitor;
+     }
+ 
+     /**
+--- a/langtools/src/share/classes/com/sun/tools/javac/sym/Profiles.java
++++ b/langtools/src/share/classes/com/sun/tools/javac/sym/Profiles.java
+@@ -25,13 +25,14 @@
+ package com.sun.tools.javac.sym;
+ 
+ import java.io.BufferedInputStream;
++import java.io.BufferedReader;
+ import java.io.BufferedWriter;
+ import java.io.File;
+ import java.io.FileInputStream;
+ import java.io.FileWriter;
++import java.io.InputStreamReader;
+ import java.io.IOException;
+ import java.nio.charset.Charset;
+-import java.nio.file.Files;
+ import java.util.HashMap;
+ import java.util.Map;
+ import java.util.Properties;
+@@ -59,7 +60,9 @@
+                 lists.put(i, new TreeSet<String>());
+ 
+             File rt_jar_lst = new File(args[1]);
+-            for (String line: Files.readAllLines(rt_jar_lst.toPath(), Charset.defaultCharset())) {
++            BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(rt_jar_lst)));
++            String line;
++            while ((line = reader.readLine()) != null) {
+                 if (line.endsWith(".class")) {
+                     String type = line.substring(0, line.length() - 6);
+                     int profile = p.getProfile(type);
+@@ -67,6 +70,7 @@
+                         lists.get(i).add(type);
+                 }
+             }
++            reader.close();
+ 
+             for (int i = 1; i <= 4; i++) {
+                 BufferedWriter out = new BufferedWriter(new FileWriter(i + ".txt"));
+--- a/langtools/src/share/classes/com/sun/tools/classfile/SourceDebugExtension_attribute.java
++++ b/langtools/src/share/classes/com/sun/tools/classfile/SourceDebugExtension_attribute.java
+@@ -58,7 +58,11 @@
+     }
+ 
+     public String getValue() {
+-        return new String(debug_extension, UTF8);
++        try {
++            return new String(debug_extension, "UTF-8");
++        } catch (java.io.UnsupportedEncodingException e) {
++            throw new RuntimeException(e);
++        }
+     }
+ 
+     public <R, D> R accept(Visitor<R, D> visitor, D data) {
+--- a/langtools/src/share/classes/com/sun/tools/javac/util/JavacMessages.java
++++ b/langtools/src/share/classes/com/sun/tools/javac/util/JavacMessages.java
+@@ -121,7 +121,7 @@
+                     ResourceBundle rb = ResourceBundle.getBundle(bundleName, locale);
+                     bundleList = bundleList.prepend(rb);
+                 } catch (MissingResourceException e) {
+-                    throw new InternalError("Cannot find javac resource bundle for locale " + locale);
++                    //throw (Error) new InternalError("Cannot find javac resource bundle for locale " + locale).initCause(e);
+                 }
+             }
+             bundleCache.put(locale, new SoftReference<List<ResourceBundle>>(bundleList));
diff -pruN 8u312-b07-1/debian/patches/default-jvm-cfg-aarch64.diff 8u312-b07-0ubuntu1/debian/patches/default-jvm-cfg-aarch64.diff
--- 8u312-b07-1/debian/patches/default-jvm-cfg-aarch64.diff	1970-01-01 00:00:00.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/default-jvm-cfg-aarch64.diff	2015-03-17 00:13:29.000000000 +0000
@@ -0,0 +1,22 @@
+--- openjdk/jdk/src/share/bin/java.c.orig
++++ openjdk/jdk/src/share/bin/java.c
+@@ -1580,7 +1580,7 @@
+ ReadKnownVMs(const char *jvmCfgName, jboolean speculative)
+ {
+     FILE *jvmCfg;
+-    char line[MAXPATHLEN+20];
++    char line[MAXPATHLEN+30];
+     int cnt = 0;
+     int lineno = 0;
+     jlong start, end;
+@@ -1595,6 +1595,10 @@
+ 
+     jvmCfg = fopen(jvmCfgName, "r");
+     if (jvmCfg == NULL) {
++      strcat(jvmCfgName, "-default");
++      jvmCfg = fopen(jvmCfgName, "r");
++    }
++    if (jvmCfg == NULL) {
+       if (!speculative) {
+         JLI_ReportErrorMessage(CFG_ERROR6, jvmCfgName);
+         exit(1);
diff -pruN 8u312-b07-1/debian/patches/disable-doclint-by-default.diff 8u312-b07-0ubuntu1/debian/patches/disable-doclint-by-default.diff
--- 8u312-b07-1/debian/patches/disable-doclint-by-default.diff	2021-07-29 19:24:54.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/disable-doclint-by-default.diff	2017-01-23 10:09:22.000000000 +0000
@@ -8,7 +8,6 @@ Description: Disable doclint by default
  See: https://lists.fedoraproject.org/pipermail/java-devel/2014-February/005150.html
 Author: Andrew John Hughes <ahughes@redhat.com>
 Forwarded: not-needed
-
 --- a/langtools/src/share/classes/com/sun/tools/javadoc/DocEnv.java
 +++ b/langtools/src/share/classes/com/sun/tools/javadoc/DocEnv.java
 @@ -812,10 +812,9 @@ public class DocEnv {
diff -pruN 8u312-b07-1/debian/patches/dont-strip-images.diff 8u312-b07-0ubuntu1/debian/patches/dont-strip-images.diff
--- 8u312-b07-1/debian/patches/dont-strip-images.diff	1970-01-01 00:00:00.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/dont-strip-images.diff	2017-01-23 10:09:22.000000000 +0000
@@ -0,0 +1,13 @@
+--- a/common/autoconf/toolchain.m4
++++ b/common/autoconf/toolchain.m4
+@@ -679,7 +679,9 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_COMPILER_
+     LDEXE="$CC"
+     LDCXX="$CXX"
+     LDEXECXX="$CXX"
+-    POST_STRIP_CMD="$STRIP -g"
++    if test -z "$POST_STRIP_CMD" ; then
++      POST_STRIP_CMD="$STRIP -g"
++    fi
+ 
+     # Linking is different on MacOSX
+     if test "x$OPENJDK_TARGET_OS" = xmacosx; then
diff -pruN 8u312-b07-1/debian/patches/enumipv6-fix.patch 8u312-b07-0ubuntu1/debian/patches/enumipv6-fix.patch
--- 8u312-b07-1/debian/patches/enumipv6-fix.patch	1970-01-01 00:00:00.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/enumipv6-fix.patch	2015-03-17 00:13:29.000000000 +0000
@@ -0,0 +1,11 @@
+--- openjdk/jdk/src/solaris/native/java/net/NetworkInterface.c~	2012-02-15 09:26:50.000000000 +0100
++++ openjdk/jdk/src/solaris/native/java/net/NetworkInterface.c	2012-02-26 14:13:22.602107361 +0100
+@@ -1105,7 +1105,7 @@
+     uint8_t ipv6addr[16];
+ 
+     if ((f = fopen(_PATH_PROCNET_IFINET6, "r")) != NULL) {
+-        while (fscanf(f, "%4s%4s%4s%4s%4s%4s%4s%4s %02x %02x %02x %02x %20s\n",
++        while (fscanf(f, "%4s%4s%4s%4s%4s%4s%4s%4s %x %x %x %x %20s\n",
+                          addr6p[0], addr6p[1], addr6p[2], addr6p[3], addr6p[4], addr6p[5], addr6p[6], addr6p[7],
+                          &if_idx, &plen, &scope, &dad_status, devname) != EOF) {
+ 
diff -pruN 8u312-b07-1/debian/patches/fontconfig-japanese.diff 8u312-b07-0ubuntu1/debian/patches/fontconfig-japanese.diff
--- 8u312-b07-1/debian/patches/fontconfig-japanese.diff	1970-01-01 00:00:00.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/fontconfig-japanese.diff	2015-03-17 00:13:29.000000000 +0000
@@ -0,0 +1,219 @@
+# used for Debian wheezy and Ubuntu 12.04 LTS or newer
+
+--- openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties.orig	2013-02-07 17:01:24.723477262 +0100
++++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties	2013-02-07 17:03:39.043477916 +0100
+@@ -57,142 +57,142 @@
+ 
+ serif.plain.latin-1=DejaVu Serif
+ #serif.plain.latin-1.motif=LuxiSerif-Regular
+-serif.plain.japanese-kochi=Kochi Mincho
+ serif.plain.japanese-sazanami=Sazanami Mincho
+ serif.plain.japanese-vlgothic=Sazanami Mincho
++serif.plain.japanese-ipafont=IPAMincho
+ serif.plain.korean-nanum=NanumMyeongjo
+ 
+ serif.bold.latin-1=DejaVu Serif Bold
+ #serif.bold.latin-1.motif=LuxiSerif-Bold
+-serif.bold.japanese-kochi=Kochi Mincho
+ serif.bold.japanese-sazanami=Sazanami Mincho
+ serif.bold.japanese-vlgothic=Sazanami Mincho
++serif.bold.japanese-ipafont=IPAMincho
+ serif.bold.korean-nanum=NanumMyeongjo Bold
+ 
+ serif.italic.latin-1=DejaVu Serif Oblique
+ #serif.italic.latin-1.motif=LuxiSerif-Oblique
+-serif.italic.japanese-kochi=Kochi Mincho
+ serif.italic.japanese-sazanami=Sazanami Mincho
+ serif.italic.japanese-vlgothic=Sazanami Mincho
++serif.italic.japanese-ipafont=IPAMincho
+ serif.italic.korean-nanum=NanumMyeongjo
+ 
+ serif.bolditalic.latin-1=DejaVu Serif Bold Oblique
+ #serif.bolditalic.latin-1.motif=LuxiSerif-BoldOblique
+-serif.bolditalic.japanese-kochi=Kochi Mincho
+ serif.bolditalic.japanese-sazanami=Sazanami Mincho
+ serif.bolditalic.japanese-vlgothic=Sazanami Mincho
++serif.bolditalic.japanese-ipafont=IPAMincho
+ serif.bolditalic.korean-nanum=NanumMyeongjo Bold
+ 
+ sansserif.plain.latin-1=DejaVu Sans
+ #sansserif.plain.latin-1.motif=LuxiSans-Regular
+-sansserif.plain.japanese-kochi=Kochi Gothic
+ sansserif.plain.japanese-sazanami=Sazanami Gothic
+ sansserif.plain.japanese-vlgothic=VL PGothic
++sansserif.plain.japanese-ipafont=IPAPGothic
+ sansserif.plain.korean-nanum=NanumGothic
+ 
+ sansserif.bold.latin-1=DejaVu Sans Bold
+ #sansserif.bold.latin-1.motif=LuxiSans-Bold
+-sansserif.bold.japanese-kochi=Kochi Gothic
+ sansserif.bold.japanese-sazanami=Sazanami Gothic
+ sansserif.bold.japanese-vlgothic=VL PGothic
++sansserif.bold.japanese-ipafont=IPAPGothic
+ sansserif.bold.korean-nanum=NanumGothic Bold
+ 
+ sansserif.italic.latin-1=DejaVu Sans Oblique
+ #sansserif.italic.latin-1.motif=LuxiSans-Oblique
+-sansserif.italic.japanese-kochi=Kochi Gothic
+ sansserif.italic.japanese-sazanami=Sazanami Gothic
+ sansserif.italic.japanese-vlgothic=VL PGothic
++sansserif.italic.japanese-ipafont=IPAPGothic
+ sansserif.italic.korean-nanum=NanumGothic
+ 
+ sansserif.bolditalic.latin-1=DejaVu Sans Bold Oblique
+ #sansserif.bolditalic.latin-1.motif=LuxiSans-BoldOblique
+-sansserif.bolditalic.japanese-kochi=Kochi Gothic
+ sansserif.bolditalic.japanese-sazanami=Sazanami Gothic
+ sansserif.bolditalic.japanese-vlgothic=VL PGothic
++sansserif.bolditalic.japanese-ipafont=IPAPGothic
+ sansserif.bolditalic.korean-nanum=NanumGothic Bold
+ 
+ monospaced.plain.latin-1=DejaVu Sans Mono
+ #monospaced.plain.latin-1.motif=LuxiMono-Regular
+-monospaced.plain.japanese-kochi=Kochi Gothic
+ monospaced.plain.japanese-sazanami=Sazanami Gothic
+ monospaced.plain.japanese-vlgothic=VL Gothic
++monospaced.plain.japanese-ipafont=IPAGothic
+ monospaced.plain.korean-nanum=NanumGothicCoding
+ 
+ monospaced.bold.latin-1=DejaVu Sans Mono Bold
+ #monospaced.bold.latin-1.motif=LuxiMono-Bold
+-monospaced.bold.japanese-kochi=Kochi Gothic
+ monospaced.bold.japanese-sazanami=Sazanami Gothic
+ monospaced.bold.japanese-vlgothic=VL Gothic
++monospaced.bold.japanese-ipafont=IPAGothic
+ monospaced.bold.korean-nanum=NanumGothicCoding Bold
+ 
+ monospaced.italic.latin-1=DejaVu Sans Mono Oblique
+ #monospaced.italic.latin-1.motif=LuxiMono-Oblique
+-monospaced.italic.japanese-kochi=Kochi Gothic
+ monospaced.italic.japanese-sazanami=Sazanami Gothic
+ monospaced.italic.japanese-vlgothic=VL Gothic
++monospaced.italic.japanese-ipafont=IPAGothic
+ monospaced.italic.korean-nanum=NanumGothicCoding
+ 
+ monospaced.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique
+ #monospaced.bolditalic.latin-1.motif=LuxiMono-BoldOblique
+-monospaced.bolditalic.japanese-kochi=Kochi Gothic
+ monospaced.bolditalic.japanese-sazanami=Sazanami Gothic
+ monospaced.bolditalic.japanese-vlgothic=VL Gothic
++monospaced.bolditalic.japanese-ipafont=IPAGothic
+ monospaced.bolditalic.korean-nanum=NanumGothicCoding Bold
+ 
+ dialog.plain.latin-1=DejaVu Sans
+ #dialog.plain.latin-1.motif=LuxiSans-Regular
+-dialog.plain.japanese-kochi=Kochi Gothic
+ dialog.plain.japanese-sazanami=Sazanami Gothic
+ dialog.plain.japanese-vlgothic=VL PGothic
++dialog.plain.japanese-ipafont=IPAPGothic
+ dialog.plain.korean-nanum=NanumGothic
+ 
+ dialog.bold.latin-1=DejaVu Sans Bold
+ #dialog.bold.latin-1.motif=LuxiSans-Bold
+-dialog.bold.japanese-kochi=Kochi Gothic
+ dialog.bold.japanese-sazanami=Sazanami Gothic
+ dialog.bold.japanese-vlgothic=VL PGothic
++dialog.bold.japanese-ipafont=IPAPGothic
+ dialog.bold.korean-nanum=NanumGothic Bold
+ 
+ dialog.italic.latin-1=DejaVu Sans Oblique
+ #dialog.italic.latin-1.motif=LuxiSans-Oblique
+-dialog.italic.japanese-kochi=Kochi Gothic
+ dialog.italic.japanese-sazanami=Sazanami Gothic
+ dialog.italic.japanese-vlgothic=VL PGothic
++dialog.italic.japanese-ipafont=IPAPGothic
+ dialog.italic.korean-nanum=NanumGothic
+ 
+ dialog.bolditalic.latin-1=DejaVu Sans Bold Oblique
+ #dialog.bolditalic.latin-1.motif=LuxiSans-BoldOblique
+-dialog.bolditalic.japanese-kochi=Kochi Gothic
+ dialog.bolditalic.japanese-sazanami=Sazanami Gothic
+ dialog.bolditalic.japanese-vlgothic=VL PGothic
++dialog.bolditalic.japanese-ipafont=IPAPGothic
+ dialog.bolditalic.korean-nanum=NanumGothic Bold
+ 
+ dialoginput.plain.latin-1=DejaVu Sans Mono
+ #dialoginput.plain.latin-1.motif=LuxiMono-Regular
+-dialoginput.plain.japanese-kochi=Kochi Gothic
+ dialoginput.plain.japanese-sazanami=Sazanami Gothic
+ dialoginput.plain.japanese-vlgothic=VL Gothic
++dialoginput.plain.japanese-ipafont=IPAGothic
+ dialoginput.plain.korean-nanum=NanumGothic
+ 
+ dialoginput.bold.latin-1=DejaVu Sans Mono Bold
+ #dialoginput.bold.latin-1.motif=LuxiMono-Bold
+-dialoginput.bold.japanese-kochi=Kochi Gothic
+ dialoginput.bold.japanese-sazanami=Sazanami Gothic
+ dialoginput.bold.japanese-vlgothic=VL Gothic
++dialoginput.bold.japanese-ipafont=IPAGothic
+ dialoginput.bold.korean-nanum=NanumGothic Bold
+ 
+ dialoginput.italic.latin-1=DejaVu Sans Mono Oblique
+ #dialoginput.italic.latin-1.motif=LuxiMono-Oblique
+-dialoginput.italic.japanese-kochi=Kochi Gothic
+ dialoginput.italic.japanese-sazanami=Sazanami Gothic
+ dialoginput.italic.japanese-vlgothic=VL Gothic
++dialoginput.italic.japanese-ipafont=IPAGothic
+ dialoginput.italic.korean-nanum=NanumGothic
+ 
+ dialoginput.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique
+ #dialoginput.bolditalic.latin-1.motif=LuxiMono-BoldOblique
+-dialoginput.bolditalic.japanese-kochi=Kochi Gothic
+ dialoginput.bolditalic.japanese-sazanami=Sazanami Gothic
+ dialoginput.bolditalic.japanese-vlgothic=VL Gothic
++dialoginput.bolditalic.japanese-ipafont=IPAGothic
+ dialoginput.bolditalic.korean-nanum=NanumGothic Bold
+ 
+ # Search Sequences
+@@ -201,18 +201,20 @@
+ sequence.allfonts.GB18030=latin-1,wqy-microhei,umingcn,shanheisun,wqy-zenhei
+ sequence.allfonts.GB2312=latin-1,wqy-microhei,umingcn,shanheisun,wqy-zenhei
+ sequence.allfonts.GBK=latin-1,wqy-microhei,umingcn,shanheisun,wqy-zenhei
+-sequence.allfonts.x-euc-jp-linux=latin-1,japanese-vlgothic,japanese-sazanami,japanese-kochi
++sequence.allfonts.x-euc-jp-linux=latin-1,japanese-ipafont,japanese-vlgothic,japanese-sazanami
+ sequence.allfonts.EUC-KR=latin-1,korean-nanum
+ sequence.allfonts.Big5=latin-1,umingtw,shanheisun,wqy-microhei,wqy-zenhei
+ sequence.allfonts.Big5-HKSCS=latin-1,uminghk,shanheisun,wqy-microhei,wqy-zenhei
+-#sequence.fallback=uminghk,shanheisun,wqy-zenhei,japanese-vlgothic,japanese-kochi,japanese-sazanami,korean-un,bengali,gujarati,hindi,oriya,punjabi,malayalam,tamil,telugu,sinhala
+-sequence.fallback=wqy-microhei,uminghk,shanheisun,wqy-zenhei,japanese-vlgothic,japanese-sazanami,japanese-kochi,korean-nanum,bengali,gujarati,hindi,oriya,punjabi,tamil,telugu
++#sequence.fallback=uminghk,shanheisun,wqy-zenhei,japanese-ipafont,japanese-vlgothic,japanese-sazanami,korean-un,bengali,gujarati,hindi,oriya,punjabi,malayalam,tamil,telugu,sinhala
++sequence.fallback=wqy-microhei,uminghk,shanheisun,wqy-zenhei,japanese-ipafont,japanese-vlgothic,japanese-sazanami,korean-nanum,bengali,gujarati,hindi,oriya,punjabi,tamil,telugu
++
++sequence.fallback=wqy-microhei,uminghk,shanheisun,wqy-zenhei,japanese-ipafont,japanese-vlgothic,japanese-sazanami,bengali,gujarati,hindi,oriya,punjabi,tamil,telugu
+ 
+ # Exclusion Ranges
+ 
+-exclusion.japanese-kochi=0390-03d6,2200-22ef,2701-27be
+ exclusion.japanese-sazanami=0390-03d6,2200-22ef,2701-27be
+ exclusion.japanese-vlgothic=0390-03d6,2200-22ef,2701-27be
++exclusion.japanese-ipafont=0390-03d6,2200-22ef,2701-27be
+ 
+ # Font File Names
+ 
+@@ -244,12 +246,16 @@
+ filename.NanumGothic_Bold=/usr/share/fonts/truetype/nanum/NanumGothicBold.ttf
+ filename.NanumGothicCoding=/usr/share/fonts/truetype/nanum-coding/NanumGothic_Coding.ttf
+ filename.NanumGothicCoding_Bold=/usr/share/fonts/truetype/nanum-coding/NanumGothic_Coding_Bold.ttf
+-filename.Kochi_Gothic=/usr/share/fonts/truetype/kochi/kochi-gothic.ttf
++
++#Japanese fonts
+ filename.Sazanami_Gothic=/usr/share/fonts/truetype/sazanami/sazanami-gothic.ttf
+-filename.Kochi_Mincho=/usr/share/fonts/truetype/kochi/kochi-mincho.ttf
+ filename.Sazanami_Mincho=/usr/share/fonts/truetype/sazanami/sazanami-mincho.ttf
+ filename.VL_Gothic=/usr/share/fonts/truetype/vlgothic/VL-Gothic-Regular.ttf
+ filename.VL_PGothic=/usr/share/fonts/truetype/vlgothic/VL-PGothic-Regular.ttf
++filename.IPAGothic=/usr/share/fonts/opentype/ipafont-gothic/ipag.ttf
++filename.IPAPGothic=/usr/share/fonts/opentype/ipafont-gothic/ipagp.ttf
++filename.IPAMincho=/usr/share/fonts/opentype/ipafont-mincho/ipam.ttf
++filename.IPAPMincho=/usr/share/fonts/opentype/ipafont-mincho/ipamp.ttf
+ 
+ filename.Lohit_Bengali=/usr/share/fonts/truetype/ttf-bengali-fonts/lohit_bn.ttf
+ filename.Lohit_Gujarati=/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_gu.ttf
+@@ -283,7 +289,6 @@
+ awtfontpath.shanheisun=/usr/share/fonts/truetype/arphic
+ awtfontpath.wqy-microhei=/usr/share/fonts/truetype/wqy
+ awtfontpath.wqy-zenhei=/usr/share/fonts/truetype/wqy
+-awtfontpath.japanese-kochi=/usr/share/fonts/truetype/kochi
+ awtfontpath.japanese-sazanami=/usr/share/fonts/truetype/sazanami
+ awtfontpath.japanese-vlgothic=/usr/share/fonts/truetype/vlgothic
+ awtfontpath.korean-nanum=/usr/share/fonts/truetype/nanum
diff -pruN 8u312-b07-1/debian/patches/fontconfig-korean-nanum.diff 8u312-b07-0ubuntu1/debian/patches/fontconfig-korean-nanum.diff
--- 8u312-b07-1/debian/patches/fontconfig-korean-nanum.diff	1970-01-01 00:00:00.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/fontconfig-korean-nanum.diff	2015-03-17 00:13:29.000000000 +0000
@@ -0,0 +1,266 @@
+# used for Debian wheezy and Ubuntu 12.04 LTS or newer
+
+--- openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties.orig
++++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties
+@@ -60,200 +60,140 @@
+ serif.plain.japanese-kochi=Kochi Mincho
+ serif.plain.japanese-sazanami=Sazanami Mincho
+ serif.plain.japanese-vlgothic=Sazanami Mincho
+-serif.plain.korean-baekmuk=Baekmuk Batang
+-#serif.plain.korean-baekmuk.motif=Baekmuk Batang
+-serif.plain.korean-un=UnBatang
+-#serif.plain.korean-un.motif=UnBatang
++serif.plain.korean-nanum=NanumMyeongjo
+ 
+ serif.bold.latin-1=DejaVu Serif Bold
+ #serif.bold.latin-1.motif=LuxiSerif-Bold
+ serif.bold.japanese-kochi=Kochi Mincho
+ serif.bold.japanese-sazanami=Sazanami Mincho
+ serif.bold.japanese-vlgothic=Sazanami Mincho
+-serif.bold.korean-baekmuk=Baekmuk Batang
+-#serif.bold.korean-baekmuk.motif=Baekmuk Batang
+-serif.bold.korean-un=UnBatang Bold
+-#serif.bold.korean-un.motif=UnBatang Bold
++serif.bold.korean-nanum=NanumMyeongjo Bold
+ 
+ serif.italic.latin-1=DejaVu Serif Oblique
+ #serif.italic.latin-1.motif=LuxiSerif-Oblique
+ serif.italic.japanese-kochi=Kochi Mincho
+ serif.italic.japanese-sazanami=Sazanami Mincho
+ serif.italic.japanese-vlgothic=Sazanami Mincho
+-serif.italic.korean-baekmuk=Baekmuk Batang
+-#serif.italic.korean-baekmuk.motif=Baekmuk Batang
+-serif.italic.korean-un=UnBatang
+-#serif.italic.korean-un.motif=UnBatang
++serif.italic.korean-nanum=NanumMyeongjo
+ 
+ serif.bolditalic.latin-1=DejaVu Serif Bold Oblique
+ #serif.bolditalic.latin-1.motif=LuxiSerif-BoldOblique
+ serif.bolditalic.japanese-kochi=Kochi Mincho
+ serif.bolditalic.japanese-sazanami=Sazanami Mincho
+ serif.bolditalic.japanese-vlgothic=Sazanami Mincho
+-serif.bolditalic.korean-baekmuk=Baekmuk Batang
+-#serif.bolditalic.korean-baekmuk.motif=Baekmuk Batang
+-serif.bolditalic.korean-un=UnBatang Bold
+-#serif.bolditalic.korean-un.motif=UnBatang Bold
++serif.bolditalic.korean-nanum=NanumMyeongjo Bold
+ 
+ sansserif.plain.latin-1=DejaVu Sans
+ #sansserif.plain.latin-1.motif=LuxiSans-Regular
+ sansserif.plain.japanese-kochi=Kochi Gothic
+ sansserif.plain.japanese-sazanami=Sazanami Gothic
+ sansserif.plain.japanese-vlgothic=VL PGothic
+-sansserif.plain.korean-baekmuk=Baekmuk Gulim
+-#sansserif.plain.korean-baekmuk.motif=Baekmuk Gulim
+-sansserif.plain.korean-un=UnDotum
+-#sansserif.plain.korean-un.motif=UnDotum
++sansserif.plain.korean-nanum=NanumGothic
+ 
+ sansserif.bold.latin-1=DejaVu Sans Bold
+ #sansserif.bold.latin-1.motif=LuxiSans-Bold
+ sansserif.bold.japanese-kochi=Kochi Gothic
+ sansserif.bold.japanese-sazanami=Sazanami Gothic
+ sansserif.bold.japanese-vlgothic=VL PGothic
+-sansserif.bold.korean-baekmuk=Baekmuk Gulim
+-#sansserif.bold.korean-baekmuk.motif=Baekmuk Gulim
+-sansserif.bold.korean-un=UnDotum Bold
+-#sansserif.bold.korean-un.motif=UnDotum Bold
++sansserif.bold.korean-nanum=NanumGothic Bold
+ 
+ sansserif.italic.latin-1=DejaVu Sans Oblique
+ #sansserif.italic.latin-1.motif=LuxiSans-Oblique
+ sansserif.italic.japanese-kochi=Kochi Gothic
+ sansserif.italic.japanese-sazanami=Sazanami Gothic
+ sansserif.italic.japanese-vlgothic=VL PGothic
+-sansserif.italic.korean-baekmuk=Baekmuk Gulim
+-#sansserif.italic.korean-baekmuk.motif=Baekmuk Gulim
+-sansserif.italic.korean-un=UnDotum
+-#sansserif.italic.korean-un.motif=UnDotum
++sansserif.italic.korean-nanum=NanumGothic
+ 
+ sansserif.bolditalic.latin-1=DejaVu Sans Bold Oblique
+ #sansserif.bolditalic.latin-1.motif=LuxiSans-BoldOblique
+ sansserif.bolditalic.japanese-kochi=Kochi Gothic
+ sansserif.bolditalic.japanese-sazanami=Sazanami Gothic
+ sansserif.bolditalic.japanese-vlgothic=VL PGothic
+-sansserif.bolditalic.korean-baekmuk=Baekmuk Gulim
+-#sansserif.bolditalic.korean-baekmuk.motif=Baekmuk Gulim
+-sansserif.bolditalic.korean-un=UnDotum Bold
+-#sansserif.bolditalic.korean-un.motif=UnDotum Bold
++sansserif.bolditalic.korean-nanum=NanumGothic Bold
+ 
+ monospaced.plain.latin-1=DejaVu Sans Mono
+ #monospaced.plain.latin-1.motif=LuxiMono-Regular
+ monospaced.plain.japanese-kochi=Kochi Gothic
+ monospaced.plain.japanese-sazanami=Sazanami Gothic
+ monospaced.plain.japanese-vlgothic=VL Gothic
+-monospaced.plain.korean-baekmuk=Baekmuk Gulim
+-#monospaced.plain.korean-baekmuk.motif=Baekmuk Gulim
+-monospaced.plain.korean-un=UnDotum
+-#monospaced.plain.korean-un.motif=UnDotum
++monospaced.plain.korean-nanum=NanumGothicCoding
+ 
+ monospaced.bold.latin-1=DejaVu Sans Mono Bold
+ #monospaced.bold.latin-1.motif=LuxiMono-Bold
+ monospaced.bold.japanese-kochi=Kochi Gothic
+ monospaced.bold.japanese-sazanami=Sazanami Gothic
+ monospaced.bold.japanese-vlgothic=VL Gothic
+-monospaced.bold.korean-baekmuk=Baekmuk Gulim
+-#monospaced.bold.korean-baekmuk.motif=Baekmuk Gulim
+-monospaced.bold.korean-un=UnDotum Bold
+-#monospaced.bold.korean-un.motif=UnDotum Bold
++monospaced.bold.korean-nanum=NanumGothicCoding Bold
+ 
+ monospaced.italic.latin-1=DejaVu Sans Mono Oblique
+ #monospaced.italic.latin-1.motif=LuxiMono-Oblique
+ monospaced.italic.japanese-kochi=Kochi Gothic
+ monospaced.italic.japanese-sazanami=Sazanami Gothic
+ monospaced.italic.japanese-vlgothic=VL Gothic
+-monospaced.italic.korean-baekmuk=Baekmuk Gulim
+-#monospaced.italic.korean-baekmuk.motif=Baekmuk Gulim
+-monospaced.italic.korean-un=UnDotum
+-#monospaced.italic.korean-un.motif=UnDotum
++monospaced.italic.korean-nanum=NanumGothicCoding
+ 
+ monospaced.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique
+ #monospaced.bolditalic.latin-1.motif=LuxiMono-BoldOblique
+ monospaced.bolditalic.japanese-kochi=Kochi Gothic
+ monospaced.bolditalic.japanese-sazanami=Sazanami Gothic
+ monospaced.bolditalic.japanese-vlgothic=VL Gothic
+-monospaced.bolditalic.korean-baekmuk=Baekmuk Gulim
+-#monospaced.bolditalic.korean-baekmuk.motif=Baekmuk Gulim
+-monospaced.bolditalic.korean-un=UnDotum Bold
+-#monospaced.bolditalic.korean-un.motif=UnDotum Bold
++monospaced.bolditalic.korean-nanum=NanumGothicCoding Bold
+ 
+ dialog.plain.latin-1=DejaVu Sans
+ #dialog.plain.latin-1.motif=LuxiSans-Regular
+ dialog.plain.japanese-kochi=Kochi Gothic
+ dialog.plain.japanese-sazanami=Sazanami Gothic
+ dialog.plain.japanese-vlgothic=VL PGothic
+-dialog.plain.korean-baekmuk=Baekmuk Gulim
+-#dialog.plain.korean-baekmuk.motif=Baekmuk Gulim
+-dialog.plain.korean-un=UnDotum
+-#dialog.plain.korean-un.motif=UnDotum
++dialog.plain.korean-nanum=NanumGothic
+ 
+ dialog.bold.latin-1=DejaVu Sans Bold
+ #dialog.bold.latin-1.motif=LuxiSans-Bold
+ dialog.bold.japanese-kochi=Kochi Gothic
+ dialog.bold.japanese-sazanami=Sazanami Gothic
+ dialog.bold.japanese-vlgothic=VL PGothic
+-dialog.bold.korean-baekmuk=Baekmuk Gulim
+-#dialog.bold.korean-baekmuk.motif=Baekmuk Gulim
+-dialog.bold.korean-un=UnDotum Bold
+-#dialog.bold.korean-un.motif=UnDotum Bold
++dialog.bold.korean-nanum=NanumGothic Bold
+ 
+ dialog.italic.latin-1=DejaVu Sans Oblique
+ #dialog.italic.latin-1.motif=LuxiSans-Oblique
+ dialog.italic.japanese-kochi=Kochi Gothic
+ dialog.italic.japanese-sazanami=Sazanami Gothic
+ dialog.italic.japanese-vlgothic=VL PGothic
+-dialog.italic.korean-baekmuk=Baekmuk Gulim
+-#dialog.italic.korean-baekmuk.motif=Baekmuk Gulim
+-dialog.italic.korean-un=UnDotum
+-#dialog.italic.korean-un.motif=UnDotum
++dialog.italic.korean-nanum=NanumGothic
+ 
+ dialog.bolditalic.latin-1=DejaVu Sans Bold Oblique
+ #dialog.bolditalic.latin-1.motif=LuxiSans-BoldOblique
+ dialog.bolditalic.japanese-kochi=Kochi Gothic
+ dialog.bolditalic.japanese-sazanami=Sazanami Gothic
+ dialog.bolditalic.japanese-vlgothic=VL PGothic
+-dialog.bolditalic.korean-baekmuk=Baekmuk Gulim
+-#dialog.bolditalic.korean-baekmuk.motif=Baekmuk Gulim
+-dialog.bolditalic.korean-un=UnDotum Bold
+-#dialog.bolditalic.korean-un.motif=UnDotum Bold
++dialog.bolditalic.korean-nanum=NanumGothic Bold
+ 
+ dialoginput.plain.latin-1=DejaVu Sans Mono
+ #dialoginput.plain.latin-1.motif=LuxiMono-Regular
+ dialoginput.plain.japanese-kochi=Kochi Gothic
+ dialoginput.plain.japanese-sazanami=Sazanami Gothic
+ dialoginput.plain.japanese-vlgothic=VL Gothic
+-dialoginput.plain.korean-baekmuk=Baekmuk Gulim
+-#dialoginput.plain.korean-baekmuk.motif=Baekmuk Gulim
+-dialoginput.plain.korean-un=UnDotum
+-#dialoginput.plain.korean-un.motif=UnDotum
++dialoginput.plain.korean-nanum=NanumGothic
+ 
+ dialoginput.bold.latin-1=DejaVu Sans Mono Bold
+ #dialoginput.bold.latin-1.motif=LuxiMono-Bold
+ dialoginput.bold.japanese-kochi=Kochi Gothic
+ dialoginput.bold.japanese-sazanami=Sazanami Gothic
+ dialoginput.bold.japanese-vlgothic=VL Gothic
+-dialoginput.bold.korean-baekmuk=Baekmuk Gulim
+-#dialoginput.bold.korean-baekmuk.motif=Baekmuk Gulim
+-dialoginput.bold.korean-un=UnDotum Bold
+-#dialoginput.bold.korean-un.motif=UnDotum Bold
++dialoginput.bold.korean-nanum=NanumGothic Bold
+ 
+ dialoginput.italic.latin-1=DejaVu Sans Mono Oblique
+ #dialoginput.italic.latin-1.motif=LuxiMono-Oblique
+ dialoginput.italic.japanese-kochi=Kochi Gothic
+ dialoginput.italic.japanese-sazanami=Sazanami Gothic
+ dialoginput.italic.japanese-vlgothic=VL Gothic
+-dialoginput.italic.korean-baekmuk=Baekmuk Gulim
+-#dialoginput.italic.korean-baekmuk.motif=Baekmuk Gulim
+-dialoginput.italic.korean-un=UnDotum
+-#dialoginput.italic.korean-un.motif=UnDotum
++dialoginput.italic.korean-nanum=NanumGothic
+ 
+ dialoginput.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique
+ #dialoginput.bolditalic.latin-1.motif=LuxiMono-BoldOblique
+ dialoginput.bolditalic.japanese-kochi=Kochi Gothic
+ dialoginput.bolditalic.japanese-sazanami=Sazanami Gothic
+ dialoginput.bolditalic.japanese-vlgothic=VL Gothic
+-dialoginput.bolditalic.korean-baekmuk=Baekmuk Gulim
+-#dialoginput.bolditalic.korean-baekmuk.motif=Baekmuk Gulim
+-dialoginput.bolditalic.korean-un=UnDotum Bold
+-#dialoginput.bolditalic.korean-un.motif=UnDotum Bold
++dialoginput.bolditalic.korean-nanum=NanumGothic Bold
+ 
+ # Search Sequences
+ 
+@@ -262,11 +202,11 @@
+ sequence.allfonts.GB2312=latin-1,wqy-microhei,umingcn,shanheisun,wqy-zenhei
+ sequence.allfonts.GBK=latin-1,wqy-microhei,umingcn,shanheisun,wqy-zenhei
+ sequence.allfonts.x-euc-jp-linux=latin-1,japanese-vlgothic,japanese-sazanami,japanese-kochi
+-sequence.allfonts.EUC-KR=latin-1,korean-un,korean-baekmuk
++sequence.allfonts.EUC-KR=latin-1,korean-nanum
+ sequence.allfonts.Big5=latin-1,umingtw,shanheisun,wqy-microhei,wqy-zenhei
+ sequence.allfonts.Big5-HKSCS=latin-1,uminghk,shanheisun,wqy-microhei,wqy-zenhei
+-#sequence.fallback=uminghk,shanheisun,wqy-zenhei,japanese-vlgothic,japanese-kochi,japanese-sazanami,korean-un,korean-baekmuk,bengali,gujarati,hindi,oriya,punjabi,malayalam,tamil,telugu,sinhala
+-sequence.fallback=wqy-microhei,uminghk,shanheisun,wqy-zenhei,japanese-vlgothic,japanese-sazanami,japanese-kochi,korean-un,korean-baekmuk,bengali,gujarati,hindi,oriya,punjabi,tamil,telugu
++#sequence.fallback=uminghk,shanheisun,wqy-zenhei,japanese-vlgothic,japanese-kochi,japanese-sazanami,korean-un,bengali,gujarati,hindi,oriya,punjabi,malayalam,tamil,telugu,sinhala
++sequence.fallback=wqy-microhei,uminghk,shanheisun,wqy-zenhei,japanese-vlgothic,japanese-sazanami,japanese-kochi,korean-nanum,bengali,gujarati,hindi,oriya,punjabi,tamil,telugu
+ 
+ # Exclusion Ranges
+ 
+@@ -298,12 +238,12 @@
+ 
+ filename.WenQuanYi_Micro_Hei=/usr/share/fonts/truetype/wqy/wqy-microhei.ttc
+ filename.WenQuanYi_Zen_Hei=/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc
+-filename.Baekmuk_Batang=/usr/share/fonts/truetype/baekmuk/batang.ttf
+-filename.UnBatang=/usr/share/fonts/truetype/unfonts/UnBatang.ttf
+-filename.UnBatang_Bold=/usr/share/fonts/truetype/unfonts/UnBatangBold.ttf
+-filename.Baekmuk_Gulim=/usr/share/fonts/truetype/baekmuk/gulim.ttf
+-filename.UnDotum=/usr/share/fonts/truetype/unfonts/UnDotum.ttf
+-filename.UnDotum_Bold=/usr/share/fonts/truetype/unfonts/UnDotumBold.ttf
++filename.NanumMyeongjo=/usr/share/fonts/truetype/nanum/NanumMyeongjo.ttf
++filename.NanumMyeongjo_Bold=/usr/share/fonts/truetype/nanum/NanumMyeongjoBold.ttf
++filename.NanumGothic=/usr/share/fonts/truetype/nanum/NanumGothic.ttf
++filename.NanumGothic_Bold=/usr/share/fonts/truetype/nanum/NanumGothicBold.ttf
++filename.NanumGothicCoding=/usr/share/fonts/truetype/nanum-coding/NanumGothic_Coding.ttf
++filename.NanumGothicCoding_Bold=/usr/share/fonts/truetype/nanum-coding/NanumGothic_Coding_Bold.ttf
+ filename.Kochi_Gothic=/usr/share/fonts/truetype/kochi/kochi-gothic.ttf
+ filename.Sazanami_Gothic=/usr/share/fonts/truetype/sazanami/sazanami-gothic.ttf
+ filename.Kochi_Mincho=/usr/share/fonts/truetype/kochi/kochi-mincho.ttf
+@@ -346,5 +286,4 @@
+ awtfontpath.japanese-kochi=/usr/share/fonts/truetype/kochi
+ awtfontpath.japanese-sazanami=/usr/share/fonts/truetype/sazanami
+ awtfontpath.japanese-vlgothic=/usr/share/fonts/truetype/vlgothic
+-awtfontpath.korean-baekmuk=/usr/share/fonts/truetype/baekmuk
+-awtfontpath.korean-un=/usr/share/fonts/truetype/unfonts
++awtfontpath.korean-nanum=/usr/share/fonts/truetype/nanum
diff -pruN 8u312-b07-1/debian/patches/fontconfig-wqy-microhei.patch 8u312-b07-0ubuntu1/debian/patches/fontconfig-wqy-microhei.patch
--- 8u312-b07-1/debian/patches/fontconfig-wqy-microhei.patch	1970-01-01 00:00:00.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/fontconfig-wqy-microhei.patch	2015-03-17 00:13:29.000000000 +0000
@@ -0,0 +1,53 @@
+--- openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties.orig
++++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties
+@@ -37,6 +37,7 @@
+ #allfonts.uminghk.motif=AR PL UMing HK
+ allfonts.umingtw=AR PL UMing TW
+ #allfonts.umingtw.motif=AR PL UMing TW
++allfonts.wqy-microhei=WenQuanYi Micro Hei
+ allfonts.wqy-zenhei=WenQuanYi Zen Hei
+ #allfonts.wqy-zenhei.motif=WenQuanYi Zen Hei
+ allfonts.shanheisun=AR PL ShanHeiSun Uni
+@@ -257,15 +258,15 @@
+ # Search Sequences
+ 
+ sequence.allfonts=latin-1
+-sequence.allfonts.GB18030=latin-1,umingcn,shanheisun,wqy-zenhei
+-sequence.allfonts.GB2312=latin-1,umingcn,shanheisun,wqy-zenhei
+-sequence.allfonts.GBK=latin-1,umingcn,shanheisun,wqy-zenhei
++sequence.allfonts.GB18030=latin-1,wqy-microhei,umingcn,shanheisun,wqy-zenhei
++sequence.allfonts.GB2312=latin-1,wqy-microhei,umingcn,shanheisun,wqy-zenhei
++sequence.allfonts.GBK=latin-1,wqy-microhei,umingcn,shanheisun,wqy-zenhei
+ sequence.allfonts.x-euc-jp-linux=latin-1,japanese-vlgothic,japanese-sazanami,japanese-kochi
+ sequence.allfonts.EUC-KR=latin-1,korean-un,korean-baekmuk
+-sequence.allfonts.Big5=latin-1,umingtw,shanheisun,wqy-zenhei
+-sequence.allfonts.Big5-HKSCS=latin-1,uminghk,shanheisun,wqy-zenhei
++sequence.allfonts.Big5=latin-1,umingtw,shanheisun,wqy-microhei,wqy-zenhei
++sequence.allfonts.Big5-HKSCS=latin-1,uminghk,shanheisun,wqy-microhei,wqy-zenhei
+ #sequence.fallback=uminghk,shanheisun,wqy-zenhei,japanese-vlgothic,japanese-kochi,japanese-sazanami,korean-un,korean-baekmuk,bengali,gujarati,hindi,oriya,punjabi,malayalam,tamil,telugu,sinhala
+-sequence.fallback=uminghk,shanheisun,wqy-zenhei,japanese-vlgothic,japanese-sazanami,japanese-kochi,korean-un,korean-baekmuk,bengali,gujarati,hindi,oriya,punjabi,tamil,telugu
++sequence.fallback=wqy-microhei,uminghk,shanheisun,wqy-zenhei,japanese-vlgothic,japanese-sazanami,japanese-kochi,korean-un,korean-baekmuk,bengali,gujarati,hindi,oriya,punjabi,tamil,telugu
+ 
+ # Exclusion Ranges
+ 
+@@ -293,9 +294,10 @@
+ filename.AR_PL_UMing_CN=/usr/share/fonts/truetype/arphic/uming.ttc
+ filename.AR_PL_UMing_HK=/usr/share/fonts/truetype/arphic/uming.ttc
+ filename.AR_PL_UMing_TW=/usr/share/fonts/truetype/arphic/uming.ttc
+-filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/truetype/arphic/uming.ttf
++filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/truetype/arphic/uming.ttc
+ 
+-filename.WenQuanYi_Zen_Hei=/usr/share/fonts/truetype/wqy/wqy-zenhei.ttf
++filename.WenQuanYi_Micro_Hei=/usr/share/fonts/truetype/wqy/wqy-microhei.ttc
++filename.WenQuanYi_Zen_Hei=/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc
+ filename.Baekmuk_Batang=/usr/share/fonts/truetype/baekmuk/batang.ttf
+ filename.UnBatang=/usr/share/fonts/truetype/unfonts/UnBatang.ttf
+ filename.UnBatang_Bold=/usr/share/fonts/truetype/unfonts/UnBatangBold.ttf
+@@ -339,6 +341,7 @@
+ awtfontpath.uminghk=/usr/share/fonts/truetype/arphic
+ awtfontpath.umingtw=/usr/share/fonts/truetype/arphic
+ awtfontpath.shanheisun=/usr/share/fonts/truetype/arphic
++awtfontpath.wqy-microhei=/usr/share/fonts/truetype/wqy
+ awtfontpath.wqy-zenhei=/usr/share/fonts/truetype/wqy
+ awtfontpath.japanese-kochi=/usr/share/fonts/truetype/kochi
+ awtfontpath.japanese-sazanami=/usr/share/fonts/truetype/sazanami
diff -pruN 8u312-b07-1/debian/patches/hotspot-disable-exec-shield-workaround.patch 8u312-b07-0ubuntu1/debian/patches/hotspot-disable-exec-shield-workaround.patch
--- 8u312-b07-1/debian/patches/hotspot-disable-exec-shield-workaround.patch	2021-07-29 19:28:21.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/hotspot-disable-exec-shield-workaround.patch	2019-03-18 12:04:05.000000000 +0000
@@ -2,10 +2,9 @@
 # DP: This workaround interacts badly with kernel changes to enlarge the stack
 # DP: gap, causing applications using JNI to crash (Debian bug #865303).
 # DP: Debian has never applied the Exec Shield patches.
-
 --- a/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp
 +++ b/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp
-@@ -891,7 +891,7 @@ void os::verify_stack_alignment() {
+@@ -890,7 +890,7 @@ void os::verify_stack_alignment() {
   * updates (JDK-8023956).
   */
  void os::workaround_expand_exec_shield_cs_limit() {
diff -pruN 8u312-b07-1/debian/patches/hotspot-disable-jvmtidocs.diff 8u312-b07-0ubuntu1/debian/patches/hotspot-disable-jvmtidocs.diff
--- 8u312-b07-1/debian/patches/hotspot-disable-jvmtidocs.diff	1970-01-01 00:00:00.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/hotspot-disable-jvmtidocs.diff	2017-07-22 09:40:43.000000000 +0000
@@ -0,0 +1,22 @@
+--- a/hotspot/make/linux/Makefile.orig	2017-03-06 20:12:11.000000000 +0100
++++ a/hotspot/make/linux/Makefile	2017-05-08 07:59:49.775242564 +0200
+@@ -349,7 +349,7 @@
+ # ENABLE_FULL_DEBUG_SYMBOLS value is used.
+ docs: checks
+ 	$(QUIETLY) mkdir -p $(SUBDIR_DOCS)
+-	$(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/makefiles/jvmti.make $(MFLAGS) $(BUILDTREE_VARS) JvmtiOutDir=$(SUBDIR_DOCS) BUILD_FLAVOR=product jvmtidocs
++	#$(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/makefiles/jvmti.make $(MFLAGS) $(BUILDTREE_VARS) JvmtiOutDir=$(SUBDIR_DOCS) BUILD_FLAVOR=product jvmtidocs
+ 
+ # Synonyms for win32-like targets.
+ compiler2:  debug product
+--- a/hotspot/make/linux/makefiles/defs.make.orig	2017-03-06 20:12:11.000000000 +0100
++++ a/hotspot/make/linux/makefiles/defs.make	2017-05-08 11:28:50.001500588 +0200
+@@ -234,7 +234,7 @@
+ # Library suffix
+ LIBRARY_SUFFIX=so
+ 
+-EXPORT_LIST += $(EXPORT_DOCS_DIR)/platform/jvmti/jvmti.html
++#EXPORT_LIST += $(EXPORT_DOCS_DIR)/platform/jvmti/jvmti.html
+ 
+ # client and server subdirectories have symbolic links to ../libjsig.so
+ EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libjsig.$(LIBRARY_SUFFIX)
diff -pruN 8u312-b07-1/debian/patches/hotspot-disable-werror.diff 8u312-b07-0ubuntu1/debian/patches/hotspot-disable-werror.diff
--- 8u312-b07-1/debian/patches/hotspot-disable-werror.diff	2021-07-29 19:29:28.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/hotspot-disable-werror.diff	2019-03-17 17:34:08.000000000 +0000
@@ -2,7 +2,7 @@
 
 --- a/hotspot/make/linux/makefiles/gcc.make
 +++ b/hotspot/make/linux/makefiles/gcc.make
-@@ -202,7 +202,7 @@ else
+@@ -201,7 +201,7 @@ else
  endif
  
  # Compiler warnings are treated as errors
diff -pruN 8u312-b07-1/debian/patches/hotspot-ia64.diff 8u312-b07-0ubuntu1/debian/patches/hotspot-ia64.diff
--- 8u312-b07-1/debian/patches/hotspot-ia64.diff	2021-07-29 19:24:59.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/hotspot-ia64.diff	2019-03-17 17:34:24.000000000 +0000
@@ -1,6 +1,6 @@
 --- a/hotspot/src/share/vm/runtime/os.cpp
 +++ b/hotspot/src/share/vm/runtime/os.cpp
-@@ -1050,7 +1050,7 @@ void os::print_location(outputStream* st
+@@ -1060,7 +1060,7 @@ void os::print_location(outputStream* st
  // if C stack is walkable beyond current frame. The check for fp() is not
  // necessary on Sparc, but it's harmless.
  bool os::is_first_C_frame(frame* fr) {
diff -pruN 8u312-b07-1/debian/patches/hotspot-libpath-aarch32.diff 8u312-b07-0ubuntu1/debian/patches/hotspot-libpath-aarch32.diff
--- 8u312-b07-1/debian/patches/hotspot-libpath-aarch32.diff	2021-07-29 19:28:23.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/hotspot-libpath-aarch32.diff	2017-08-23 18:31:28.000000000 +0000
@@ -1,23 +1,8 @@
 # DP: Set the hotspot default libpath to ignore lib64 and add multiarch
 
---- a/hotspot/make/linux/makefiles/vm.make
-+++ b/hotspot/make/linux/makefiles/vm.make
-@@ -99,6 +99,12 @@ CXXFLAGS =           \
-   ${HS_LIB_ARCH}     \
-   ${VM_DISTRO}
- 
-+DEB_MULTIARCH := $(shell dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null || true)
-+ifneq (,$(DEB_MULTIARCH))
-+CPPFLAGS += -DDEB_MULTIARCH="\"$(DEB_MULTIARCH)\""
-+CXXFLAGS += -DDEB_MULTIARCH="\"$(DEB_MULTIARCH)\""
-+endif
-+
- # This is VERY important! The version define must only be supplied to vm_version.o
- # If not, ccache will not re-use the cache at all, since the version string might contain
- # a time and date.
 --- a/hotspot/src/os/linux/vm/os_linux.cpp
 +++ b/hotspot/src/os/linux/vm/os_linux.cpp
-@@ -369,10 +369,10 @@ void os::init_system_properties_values()
+@@ -318,10 +318,10 @@ void os::init_system_properties_values()
  //        1: ...
  //        ...
  //        7: The default directories, normally /lib and /usr/lib.
@@ -31,3 +16,18 @@
  #endif
  
  // Base path of extensions installed on the system.
+--- a/hotspot/make/linux/makefiles/vm.make
++++ b/hotspot/make/linux/makefiles/vm.make
+@@ -99,6 +99,12 @@ CXXFLAGS =           \
+   ${HS_LIB_ARCH}     \
+   ${VM_DISTRO}
+ 
++DEB_MULTIARCH := $(shell dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null || true)
++ifneq (,$(DEB_MULTIARCH))
++CPPFLAGS += -DDEB_MULTIARCH="\"$(DEB_MULTIARCH)\""
++CXXFLAGS += -DDEB_MULTIARCH="\"$(DEB_MULTIARCH)\""
++endif
++
+ # This is VERY important! The version define must only be supplied to vm_version.o
+ # If not, ccache will not re-use the cache at all, since the version string might contain
+ # a time and date.
diff -pruN 8u312-b07-1/debian/patches/hotspot-libpath-aarch64.diff 8u312-b07-0ubuntu1/debian/patches/hotspot-libpath-aarch64.diff
--- 8u312-b07-1/debian/patches/hotspot-libpath-aarch64.diff	2021-07-29 19:29:34.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/hotspot-libpath-aarch64.diff	2019-09-06 08:46:32.000000000 +0000
@@ -1,20 +1,5 @@
 # DP: Set the hotspot default libpath to ignore lib64 and add multiarch
 
---- a/hotspot/make/linux/makefiles/vm.make
-+++ b/hotspot/make/linux/makefiles/vm.make
-@@ -99,6 +99,12 @@ CXXFLAGS =           \
-   ${HS_LIB_ARCH}     \
-   ${VM_DISTRO}
- 
-+DEB_MULTIARCH := $(shell dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null || true)
-+ifneq (,$(DEB_MULTIARCH))
-+CPPFLAGS += -DDEB_MULTIARCH="\"$(DEB_MULTIARCH)\""
-+CXXFLAGS += -DDEB_MULTIARCH="\"$(DEB_MULTIARCH)\""
-+endif
-+
- # This is VERY important! The version define must only be supplied to vm_version.o
- # If not, ccache will not re-use the cache at all, since the version string might contain
- # a time and date.
 --- a/hotspot/src/os/linux/vm/os_linux.cpp
 +++ b/hotspot/src/os/linux/vm/os_linux.cpp
 @@ -367,10 +367,10 @@ void os::init_system_properties_values()
@@ -31,3 +16,18 @@
  #endif
  
  // Base path of extensions installed on the system.
+--- a/hotspot/make/linux/makefiles/vm.make
++++ b/hotspot/make/linux/makefiles/vm.make
+@@ -99,6 +99,12 @@ CXXFLAGS =           \
+   ${HS_LIB_ARCH}     \
+   ${VM_DISTRO}
+ 
++DEB_MULTIARCH := $(shell dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null || true)
++ifneq (,$(DEB_MULTIARCH))
++CPPFLAGS += -DDEB_MULTIARCH="\"$(DEB_MULTIARCH)\""
++CXXFLAGS += -DDEB_MULTIARCH="\"$(DEB_MULTIARCH)\""
++endif
++
+ # This is VERY important! The version define must only be supplied to vm_version.o
+ # If not, ccache will not re-use the cache at all, since the version string might contain
+ # a time and date.
diff -pruN 8u312-b07-1/debian/patches/hotspot-libpath-default.diff 8u312-b07-0ubuntu1/debian/patches/hotspot-libpath-default.diff
--- 8u312-b07-1/debian/patches/hotspot-libpath-default.diff	2021-07-29 19:25:01.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/hotspot-libpath-default.diff	2019-10-01 06:28:46.000000000 +0000
@@ -1,20 +1,5 @@
 # DP: Set the hotspot default libpath to ignore lib64 and add multiarch
 
---- a/hotspot/make/linux/makefiles/vm.make
-+++ b/hotspot/make/linux/makefiles/vm.make
-@@ -99,6 +99,12 @@ CXXFLAGS =           \
-   ${HS_LIB_ARCH}     \
-   ${VM_DISTRO}
- 
-+DEB_MULTIARCH := $(shell dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null || true)
-+ifneq (,$(DEB_MULTIARCH))
-+CPPFLAGS += -DDEB_MULTIARCH="\"$(DEB_MULTIARCH)\""
-+CXXFLAGS += -DDEB_MULTIARCH="\"$(DEB_MULTIARCH)\""
-+endif
-+
- # This is VERY important! The version define must only be supplied to vm_version.o
- # If not, ccache will not re-use the cache at all, since the version string might contain
- # a time and date.
 --- a/hotspot/src/os/linux/vm/os_linux.cpp
 +++ b/hotspot/src/os/linux/vm/os_linux.cpp
 @@ -367,10 +367,10 @@ void os::init_system_properties_values()
@@ -31,3 +16,18 @@
  #endif
  
  // Base path of extensions installed on the system.
+--- a/hotspot/make/linux/makefiles/vm.make
++++ b/hotspot/make/linux/makefiles/vm.make
+@@ -99,6 +99,12 @@ CXXFLAGS =           \
+   ${HS_LIB_ARCH}     \
+   ${VM_DISTRO}
+ 
++DEB_MULTIARCH := $(shell dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null || true)
++ifneq (,$(DEB_MULTIARCH))
++CPPFLAGS += -DDEB_MULTIARCH="\"$(DEB_MULTIARCH)\""
++CXXFLAGS += -DDEB_MULTIARCH="\"$(DEB_MULTIARCH)\""
++endif
++
+ # This is VERY important! The version define must only be supplied to vm_version.o
+ # If not, ccache will not re-use the cache at all, since the version string might contain
+ # a time and date.
diff -pruN 8u312-b07-1/debian/patches/hotspot-mips-align.diff 8u312-b07-0ubuntu1/debian/patches/hotspot-mips-align.diff
--- 8u312-b07-1/debian/patches/hotspot-mips-align.diff	2021-07-29 19:24:51.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/hotspot-mips-align.diff	2017-01-23 10:09:22.000000000 +0000
@@ -1,6 +1,6 @@
 --- a/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp
 +++ b/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp
-@@ -369,7 +369,7 @@ int CppInterpreter::native_entry(Method*
+@@ -367,7 +367,7 @@ int CppInterpreter::native_entry(Method*
    ThreadStateTransition::transition_from_java(thread, _thread_in_native);
  
    // Make the call
diff -pruN 8u312-b07-1/debian/patches/hotspot-no-march-i586.diff 8u312-b07-0ubuntu1/debian/patches/hotspot-no-march-i586.diff
--- 8u312-b07-1/debian/patches/hotspot-no-march-i586.diff	2021-07-29 19:24:51.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/hotspot-no-march-i586.diff	2018-04-28 13:03:06.000000000 +0000
@@ -9,5 +9,5 @@
 -ARCHFLAG/i486    = -m32 -march=i586
 +ARCHFLAG/i486    = -m32
  ARCHFLAG/amd64   = -m64 $(STACK_ALIGNMENT_OPT)
- ARCHFLAG/aarch64 =
  ARCHFLAG/ia64    =
+ ARCHFLAG/sparc   = -m32 -mcpu=v9
diff -pruN 8u312-b07-1/debian/patches/hotspot-ppc64el-S8145913-montgomery-multiply-intrinsic.patch 8u312-b07-0ubuntu1/debian/patches/hotspot-ppc64el-S8145913-montgomery-multiply-intrinsic.patch
--- 8u312-b07-1/debian/patches/hotspot-ppc64el-S8145913-montgomery-multiply-intrinsic.patch	1970-01-01 00:00:00.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/hotspot-ppc64el-S8145913-montgomery-multiply-intrinsic.patch	2017-10-31 11:18:46.000000000 +0000
@@ -0,0 +1,464 @@
+
+# HG changeset patch
+# User mdoerr
+# Date 1507822192 -3600
+# Node ID 9575483cce09eeb46b25c401cb2465050c1c9194
+# Parent  4dd24f4ca140dbad4f85cc5ef0070f584d4c44b7
+8145913: PPC64: add Montgomery multiply intrinsic
+Reviewed-by: aph, goetz, mdoerr
+Contributed-by: Gustavo Serra Scalet <gustavo.scalet@eldorado.org.br>
+
+--- a/hotspot/src/cpu/ppc/vm/assembler_ppc.hpp
++++ b/hotspot/src/cpu/ppc/vm/assembler_ppc.hpp
+@@ -1179,6 +1179,8 @@ class Assembler : public AbstractAssembl
+   inline void mullw_( Register d, Register a, Register b);
+   inline void mulhw(  Register d, Register a, Register b);
+   inline void mulhw_( Register d, Register a, Register b);
++  inline void mulhwu( Register d, Register a, Register b);
++  inline void mulhwu_(Register d, Register a, Register b);
+   inline void mulhd(  Register d, Register a, Register b);
+   inline void mulhd_( Register d, Register a, Register b);
+   inline void mulhdu( Register d, Register a, Register b);
+--- a/hotspot/src/cpu/ppc/vm/assembler_ppc.inline.hpp
++++ b/hotspot/src/cpu/ppc/vm/assembler_ppc.inline.hpp
+@@ -109,6 +109,8 @@ inline void Assembler::mullw(  Register
+ inline void Assembler::mullw_( Register d, Register a, Register b) { emit_int32(MULLW_OPCODE  | rt(d) | ra(a) | rb(b) | oe(0) | rc(1)); }
+ inline void Assembler::mulhw(  Register d, Register a, Register b) { emit_int32(MULHW_OPCODE  | rt(d) | ra(a) | rb(b) | rc(0)); }
+ inline void Assembler::mulhw_( Register d, Register a, Register b) { emit_int32(MULHW_OPCODE  | rt(d) | ra(a) | rb(b) | rc(1)); }
++inline void Assembler::mulhwu( Register d, Register a, Register b) { emit_int32(MULHWU_OPCODE | rt(d) | ra(a) | rb(b) | rc(0)); }
++inline void Assembler::mulhwu_(Register d, Register a, Register b) { emit_int32(MULHWU_OPCODE | rt(d) | ra(a) | rb(b) | rc(1)); }
+ inline void Assembler::mulhd(  Register d, Register a, Register b) { emit_int32(MULHD_OPCODE  | rt(d) | ra(a) | rb(b) | rc(0)); }
+ inline void Assembler::mulhd_( Register d, Register a, Register b) { emit_int32(MULHD_OPCODE  | rt(d) | ra(a) | rb(b) | rc(1)); }
+ inline void Assembler::mulhdu( Register d, Register a, Register b) { emit_int32(MULHDU_OPCODE | rt(d) | ra(a) | rb(b) | rc(0)); }
+--- a/hotspot/src/cpu/ppc/vm/c2_init_ppc.cpp
++++ b/hotspot/src/cpu/ppc/vm/c2_init_ppc.cpp
+@@ -45,4 +45,10 @@ void Compile::pd_compiler2_init() {
+       FLAG_SET_ERGO(bool, InsertEndGroupPPC64, true);
+     }
+   }
++
++  if (OptimizeFill) {
++    warning("OptimizeFill is not supported on this CPU.");
++    FLAG_SET_DEFAULT(OptimizeFill, false);
++  }
++
+ }
+--- a/hotspot/src/cpu/ppc/vm/sharedRuntime_ppc.cpp
++++ b/hotspot/src/cpu/ppc/vm/sharedRuntime_ppc.cpp
+@@ -42,6 +42,8 @@
+ #include "opto/runtime.hpp"
+ #endif
+ 
++#include <alloca.h>
++
+ #define __ masm->
+ 
+ #ifdef PRODUCT
+@@ -3268,3 +3270,245 @@ RuntimeStub* SharedRuntime::generate_res
+   return RuntimeStub::new_runtime_stub(name, &buffer, frame_complete, frame_size_in_bytes/wordSize,
+                                        oop_maps, true);
+ }
++
++
++//------------------------------Montgomery multiplication------------------------
++//
++
++// Subtract 0:b from carry:a. Return carry.
++static unsigned long
++sub(unsigned long a[], unsigned long b[], unsigned long carry, long len) {
++  long i = 0;
++  unsigned long tmp, tmp2;
++  __asm__ __volatile__ (
++    "subfc  %[tmp], %[tmp], %[tmp]   \n" // pre-set CA
++    "mtctr  %[len]                   \n"
++    "0:                              \n"
++    "ldx    %[tmp], %[i], %[a]       \n"
++    "ldx    %[tmp2], %[i], %[b]      \n"
++    "subfe  %[tmp], %[tmp2], %[tmp]  \n" // subtract extended
++    "stdx   %[tmp], %[i], %[a]       \n"
++    "addi   %[i], %[i], 8            \n"
++    "bdnz   0b                       \n"
++    "addme  %[tmp], %[carry]         \n" // carry + CA - 1
++    : [i]"+b"(i), [tmp]"=&r"(tmp), [tmp2]"=&r"(tmp2)
++    : [a]"r"(a), [b]"r"(b), [carry]"r"(carry), [len]"r"(len)
++    : "ctr", "xer", "memory"
++  );
++  return tmp;
++}
++
++// Multiply (unsigned) Long A by Long B, accumulating the double-
++// length result into the accumulator formed of T0, T1, and T2.
++inline void MACC(unsigned long A, unsigned long B, unsigned long &T0, unsigned long &T1, unsigned long &T2) {
++  unsigned long hi, lo;
++  __asm__ __volatile__ (
++    "mulld  %[lo], %[A], %[B]    \n"
++    "mulhdu %[hi], %[A], %[B]    \n"
++    "addc   %[T0], %[T0], %[lo]  \n"
++    "adde   %[T1], %[T1], %[hi]  \n"
++    "addze  %[T2], %[T2]         \n"
++    : [hi]"=&r"(hi), [lo]"=&r"(lo), [T0]"+r"(T0), [T1]"+r"(T1), [T2]"+r"(T2)
++    : [A]"r"(A), [B]"r"(B)
++    : "xer"
++  );
++}
++
++// As above, but add twice the double-length result into the
++// accumulator.
++inline void MACC2(unsigned long A, unsigned long B, unsigned long &T0, unsigned long &T1, unsigned long &T2) {
++  unsigned long hi, lo;
++  __asm__ __volatile__ (
++    "mulld  %[lo], %[A], %[B]    \n"
++    "mulhdu %[hi], %[A], %[B]    \n"
++    "addc   %[T0], %[T0], %[lo]  \n"
++    "adde   %[T1], %[T1], %[hi]  \n"
++    "addze  %[T2], %[T2]         \n"
++    "addc   %[T0], %[T0], %[lo]  \n"
++    "adde   %[T1], %[T1], %[hi]  \n"
++    "addze  %[T2], %[T2]         \n"
++    : [hi]"=&r"(hi), [lo]"=&r"(lo), [T0]"+r"(T0), [T1]"+r"(T1), [T2]"+r"(T2)
++    : [A]"r"(A), [B]"r"(B)
++    : "xer"
++  );
++}
++
++// Fast Montgomery multiplication. The derivation of the algorithm is
++// in "A Cryptographic Library for the Motorola DSP56000,
++// Dusse and Kaliski, Proc. EUROCRYPT 90, pp. 230-237".
++static void
++montgomery_multiply(unsigned long a[], unsigned long b[], unsigned long n[],
++                    unsigned long m[], unsigned long inv, int len) {
++  unsigned long t0 = 0, t1 = 0, t2 = 0; // Triple-precision accumulator
++  int i;
++
++  assert(inv * n[0] == -1UL, "broken inverse in Montgomery multiply");
++
++  for (i = 0; i < len; i++) {
++    int j;
++    for (j = 0; j < i; j++) {
++      MACC(a[j], b[i-j], t0, t1, t2);
++      MACC(m[j], n[i-j], t0, t1, t2);
++    }
++    MACC(a[i], b[0], t0, t1, t2);
++    m[i] = t0 * inv;
++    MACC(m[i], n[0], t0, t1, t2);
++
++    assert(t0 == 0, "broken Montgomery multiply");
++
++    t0 = t1; t1 = t2; t2 = 0;
++  }
++
++  for (i = len; i < 2*len; i++) {
++    int j;
++    for (j = i-len+1; j < len; j++) {
++      MACC(a[j], b[i-j], t0, t1, t2);
++      MACC(m[j], n[i-j], t0, t1, t2);
++    }
++    m[i-len] = t0;
++    t0 = t1; t1 = t2; t2 = 0;
++  }
++
++  while (t0) {
++    t0 = sub(m, n, t0, len);
++  }
++}
++
++// Fast Montgomery squaring. This uses asymptotically 25% fewer
++// multiplies so it should be up to 25% faster than Montgomery
++// multiplication. However, its loop control is more complex and it
++// may actually run slower on some machines.
++static void
++montgomery_square(unsigned long a[], unsigned long n[],
++                  unsigned long m[], unsigned long inv, int len) {
++  unsigned long t0 = 0, t1 = 0, t2 = 0; // Triple-precision accumulator
++  int i;
++
++  assert(inv * n[0] == -1UL, "broken inverse in Montgomery multiply");
++
++  for (i = 0; i < len; i++) {
++    int j;
++    int end = (i+1)/2;
++    for (j = 0; j < end; j++) {
++      MACC2(a[j], a[i-j], t0, t1, t2);
++      MACC(m[j], n[i-j], t0, t1, t2);
++    }
++    if ((i & 1) == 0) {
++      MACC(a[j], a[j], t0, t1, t2);
++    }
++    for (; j < i; j++) {
++      MACC(m[j], n[i-j], t0, t1, t2);
++    }
++    m[i] = t0 * inv;
++    MACC(m[i], n[0], t0, t1, t2);
++
++    assert(t0 == 0, "broken Montgomery square");
++
++    t0 = t1; t1 = t2; t2 = 0;
++  }
++
++  for (i = len; i < 2*len; i++) {
++    int start = i-len+1;
++    int end = start + (len - start)/2;
++    int j;
++    for (j = start; j < end; j++) {
++      MACC2(a[j], a[i-j], t0, t1, t2);
++      MACC(m[j], n[i-j], t0, t1, t2);
++    }
++    if ((i & 1) == 0) {
++      MACC(a[j], a[j], t0, t1, t2);
++    }
++    for (; j < len; j++) {
++      MACC(m[j], n[i-j], t0, t1, t2);
++    }
++    m[i-len] = t0;
++    t0 = t1; t1 = t2; t2 = 0;
++  }
++
++  while (t0) {
++    t0 = sub(m, n, t0, len);
++  }
++}
++
++// The threshold at which squaring is advantageous was determined
++// experimentally on an i7-3930K (Ivy Bridge) CPU @ 3.5GHz.
++// Doesn't seem to be relevant for Power8 so we use the same value.
++#define MONTGOMERY_SQUARING_THRESHOLD 64
++
++// Copy len longwords from s to d, word-swapping as we go. The
++// destination array is reversed.
++static void reverse_words(unsigned long *s, unsigned long *d, int len) {
++  d += len;
++  while(len-- > 0) {
++    d--;
++    unsigned long s_val = *s;
++    // Swap words in a longword on little endian machines.
++#ifdef VM_LITTLE_ENDIAN
++     s_val = (s_val << 32) | (s_val >> 32);
++#endif
++    *d = s_val;
++    s++;
++  }
++}
++
++void SharedRuntime::montgomery_multiply(jint *a_ints, jint *b_ints, jint *n_ints,
++                                        jint len, jlong inv,
++                                        jint *m_ints) {
++  assert(len % 2 == 0, "array length in montgomery_multiply must be even");
++  int longwords = len/2;
++  assert(longwords > 0, "unsupported");
++
++  // Make very sure we don't use so much space that the stack might
++  // overflow. 512 jints corresponds to an 16384-bit integer and
++  // will use here a total of 8k bytes of stack space.
++  int total_allocation = longwords * sizeof (unsigned long) * 4;
++  guarantee(total_allocation <= 8192, "must be");
++  unsigned long *scratch = (unsigned long *)alloca(total_allocation);
++
++  // Local scratch arrays
++  unsigned long
++    *a = scratch + 0 * longwords,
++    *b = scratch + 1 * longwords,
++    *n = scratch + 2 * longwords,
++    *m = scratch + 3 * longwords;
++
++  reverse_words((unsigned long *)a_ints, a, longwords);
++  reverse_words((unsigned long *)b_ints, b, longwords);
++  reverse_words((unsigned long *)n_ints, n, longwords);
++
++  ::montgomery_multiply(a, b, n, m, (unsigned long)inv, longwords);
++
++  reverse_words(m, (unsigned long *)m_ints, longwords);
++}
++
++void SharedRuntime::montgomery_square(jint *a_ints, jint *n_ints,
++                                      jint len, jlong inv,
++                                      jint *m_ints) {
++  assert(len % 2 == 0, "array length in montgomery_square must be even");
++  int longwords = len/2;
++  assert(longwords > 0, "unsupported");
++
++  // Make very sure we don't use so much space that the stack might
++  // overflow. 512 jints corresponds to an 16384-bit integer and
++  // will use here a total of 6k bytes of stack space.
++  int total_allocation = longwords * sizeof (unsigned long) * 3;
++  guarantee(total_allocation <= 8192, "must be");
++  unsigned long *scratch = (unsigned long *)alloca(total_allocation);
++
++  // Local scratch arrays
++  unsigned long
++    *a = scratch + 0 * longwords,
++    *n = scratch + 1 * longwords,
++    *m = scratch + 2 * longwords;
++
++  reverse_words((unsigned long *)a_ints, a, longwords);
++  reverse_words((unsigned long *)n_ints, n, longwords);
++
++  if (len >= MONTGOMERY_SQUARING_THRESHOLD) {
++    ::montgomery_square(a, n, m, (unsigned long)inv, longwords);
++  } else {
++    ::montgomery_multiply(a, a, n, m, (unsigned long)inv, longwords);
++  }
++
++  reverse_words(m, (unsigned long *)m_ints, longwords);
++}
+--- a/hotspot/src/cpu/ppc/vm/stubGenerator_ppc.cpp
++++ b/hotspot/src/cpu/ppc/vm/stubGenerator_ppc.cpp
+@@ -2094,6 +2094,15 @@ class StubGenerator: public StubCodeGene
+     generate_safefetch("SafeFetchN", sizeof(intptr_t), &StubRoutines::_safefetchN_entry,
+                                                        &StubRoutines::_safefetchN_fault_pc,
+                                                        &StubRoutines::_safefetchN_continuation_pc);
++
++    if (UseMontgomeryMultiplyIntrinsic) {
++      StubRoutines::_montgomeryMultiply
++        = CAST_FROM_FN_PTR(address, SharedRuntime::montgomery_multiply);
++    }
++    if (UseMontgomerySquareIntrinsic) {
++      StubRoutines::_montgomerySquare
++        = CAST_FROM_FN_PTR(address, SharedRuntime::montgomery_square);
++    }
+   }
+ 
+  public:
+--- a/hotspot/src/cpu/ppc/vm/templateInterpreter_ppc.cpp
++++ b/hotspot/src/cpu/ppc/vm/templateInterpreter_ppc.cpp
+@@ -265,7 +265,7 @@ void TemplateInterpreterGenerator::gener
+       __ cmpdi(CCR0, Rmdo, 0);
+       __ beq(CCR0, no_mdo);
+ 
+-      // Increment backedge counter in the MDO.
++      // Increment invocation counter in the MDO.
+       const int mdo_bc_offs = in_bytes(MethodData::backedge_counter_offset()) + in_bytes(InvocationCounter::counter_offset());
+       __ lwz(Rscratch2, mdo_bc_offs, Rmdo);
+       __ addi(Rscratch2, Rscratch2, increment);
+@@ -277,12 +277,12 @@ void TemplateInterpreterGenerator::gener
+     }
+ 
+     // Increment counter in MethodCounters*.
+-    const int mo_bc_offs = in_bytes(MethodCounters::backedge_counter_offset()) + in_bytes(InvocationCounter::counter_offset());
++    const int mo_ic_offs = in_bytes(MethodCounters::invocation_counter_offset()) + in_bytes(InvocationCounter::counter_offset());
+     __ bind(no_mdo);
+     __ get_method_counters(R19_method, R3_counters, done);
+-    __ lwz(Rscratch2, mo_bc_offs, R3_counters);
++    __ lwz(Rscratch2, mo_ic_offs, R3_counters);
+     __ addi(Rscratch2, Rscratch2, increment);
+-    __ stw(Rscratch2, mo_bc_offs, R3_counters);
++    __ stw(Rscratch2, mo_ic_offs, R3_counters);
+     __ load_const_optimized(Rscratch1, mask, R0);
+     __ and_(Rscratch1, Rscratch2, Rscratch1);
+     __ beq(CCR0, *overflow);
+--- a/hotspot/src/cpu/ppc/vm/vm_version_ppc.cpp
++++ b/hotspot/src/cpu/ppc/vm/vm_version_ppc.cpp
+@@ -177,6 +177,12 @@ void VM_Version::initialize() {
+     FLAG_SET_DEFAULT(UseSHA512Intrinsics, false);
+   }
+ 
++  if (FLAG_IS_DEFAULT(UseMontgomeryMultiplyIntrinsic)) {
++    UseMontgomeryMultiplyIntrinsic = true;
++  }
++  if (FLAG_IS_DEFAULT(UseMontgomerySquareIntrinsic)) {
++    UseMontgomerySquareIntrinsic = true;
++  }
+ }
+ 
+ void VM_Version::print_features() {
+--- a/hotspot/src/share/vm/opto/library_call.cpp
++++ b/hotspot/src/share/vm/opto/library_call.cpp
+@@ -6031,11 +6031,21 @@ bool LibraryCallKit::inline_montgomeryMu
+     Node* n_start = array_element_address(n, intcon(0), n_elem);
+     Node* m_start = array_element_address(m, intcon(0), m_elem);
+ 
+-    Node* call = make_runtime_call(RC_LEAF,
+-                                   OptoRuntime::montgomeryMultiply_Type(),
+-                                   stubAddr, stubName, TypePtr::BOTTOM,
+-                                   a_start, b_start, n_start, len, inv, top(),
+-                                   m_start);
++    Node* call = NULL;
++    if (CCallingConventionRequiresIntsAsLongs) {
++      Node* len_I2L = ConvI2L(len);
++      call = make_runtime_call(RC_LEAF,
++                               OptoRuntime::montgomeryMultiply_Type(),
++                               stubAddr, stubName, TypePtr::BOTTOM,
++                               a_start, b_start, n_start, len_I2L XTOP, inv,
++                               top(), m_start);
++    } else {
++      call = make_runtime_call(RC_LEAF,
++                               OptoRuntime::montgomeryMultiply_Type(),
++                               stubAddr, stubName, TypePtr::BOTTOM,
++                               a_start, b_start, n_start, len, inv, top(),
++                               m_start);
++    }
+     set_result(m);
+   }
+ 
+@@ -6085,11 +6095,22 @@ bool LibraryCallKit::inline_montgomerySq
+     Node* n_start = array_element_address(n, intcon(0), n_elem);
+     Node* m_start = array_element_address(m, intcon(0), m_elem);
+ 
+-    Node* call = make_runtime_call(RC_LEAF,
+-                                   OptoRuntime::montgomerySquare_Type(),
+-                                   stubAddr, stubName, TypePtr::BOTTOM,
+-                                   a_start, n_start, len, inv, top(),
+-                                   m_start);
++    Node* call = NULL;
++    if (CCallingConventionRequiresIntsAsLongs) {
++      Node* len_I2L = ConvI2L(len);
++      call = make_runtime_call(RC_LEAF,
++                               OptoRuntime::montgomerySquare_Type(),
++                               stubAddr, stubName, TypePtr::BOTTOM,
++                               a_start, n_start, len_I2L XTOP, inv, top(),
++                               m_start);
++    } else {
++      call = make_runtime_call(RC_LEAF,
++                               OptoRuntime::montgomerySquare_Type(),
++                               stubAddr, stubName, TypePtr::BOTTOM,
++                               a_start, n_start, len, inv, top(),
++                               m_start);
++    }
++
+     set_result(m);
+   }
+ 
+--- a/hotspot/src/share/vm/opto/runtime.cpp
++++ b/hotspot/src/share/vm/opto/runtime.cpp
+@@ -1003,12 +1003,20 @@ const TypeFunc* OptoRuntime::montgomeryM
+   // create input type (domain)
+   int num_args      = 7;
+   int argcnt = num_args;
++  if (CCallingConventionRequiresIntsAsLongs) {
++    argcnt++;                           // additional placeholder
++  }
+   const Type** fields = TypeTuple::fields(argcnt);
+   int argp = TypeFunc::Parms;
+   fields[argp++] = TypePtr::NOTNULL;    // a
+   fields[argp++] = TypePtr::NOTNULL;    // b
+   fields[argp++] = TypePtr::NOTNULL;    // n
+-  fields[argp++] = TypeInt::INT;        // len
++  if (CCallingConventionRequiresIntsAsLongs) {
++    fields[argp++] = TypeLong::LONG;    // len
++    fields[argp++] = TypeLong::HALF;    // placeholder
++  } else {
++    fields[argp++] = TypeInt::INT;      // len
++  }
+   fields[argp++] = TypeLong::LONG;      // inv
+   fields[argp++] = Type::HALF;
+   fields[argp++] = TypePtr::NOTNULL;    // result
+@@ -1027,11 +1035,19 @@ const TypeFunc* OptoRuntime::montgomeryS
+   // create input type (domain)
+   int num_args      = 6;
+   int argcnt = num_args;
++  if (CCallingConventionRequiresIntsAsLongs) {
++    argcnt++;                           // additional placeholder
++  }
+   const Type** fields = TypeTuple::fields(argcnt);
+   int argp = TypeFunc::Parms;
+   fields[argp++] = TypePtr::NOTNULL;    // a
+   fields[argp++] = TypePtr::NOTNULL;    // n
+-  fields[argp++] = TypeInt::INT;        // len
++  if (CCallingConventionRequiresIntsAsLongs) {
++    fields[argp++] = TypeLong::LONG;    // len
++    fields[argp++] = TypeLong::HALF;    // placeholder
++  } else {
++    fields[argp++] = TypeInt::INT;      // len
++  }
+   fields[argp++] = TypeLong::LONG;      // inv
+   fields[argp++] = Type::HALF;
+   fields[argp++] = TypePtr::NOTNULL;    // result
diff -pruN 8u312-b07-1/debian/patches/hotspot-ppc64el-S8168318-cmpldi.patch 8u312-b07-0ubuntu1/debian/patches/hotspot-ppc64el-S8168318-cmpldi.patch
--- 8u312-b07-1/debian/patches/hotspot-ppc64el-S8168318-cmpldi.patch	1970-01-01 00:00:00.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/hotspot-ppc64el-S8168318-cmpldi.patch	2017-10-31 11:18:46.000000000 +0000
@@ -0,0 +1,32 @@
+
+# HG changeset patch
+# User goetz
+# Date 1477563748 -7200
+# Node ID 75f5e49c6187981a9c9e6846f652a7d472ef555e
+# Parent  9575483cce09eeb46b25c401cb2465050c1c9194
+8168318: PPC64: Use cmpldi instead of li/cmpld
+Reviewed-by: goetz
+Contributed-by: igor.nunes@eldorado.org.br
+
+diff -r 9575483cce09 -r 75f5e49c6187 src/cpu/ppc/vm/ppc.ad
+--- openjdk/hotspot/src/cpu/ppc/vm/ppc.ad	Thu Oct 12 16:29:52 2017 +0100
++++ openjdk/hotspot/src/cpu/ppc/vm/ppc.ad	Thu Oct 27 12:22:28 2016 +0200
+@@ -10571,6 +10571,17 @@
+   ins_pipe(pipe_class_compare);
+ %}
+ 
++instruct cmpP_reg_null(flagsReg crx, iRegP_N2P src1, immP_0or1 src2) %{
++  match(Set crx (CmpP src1 src2));
++  format %{ "CMPLDI   $crx, $src1, $src2 \t// ptr" %}
++  size(4);
++  ins_encode %{
++    // TODO: PPC port $archOpcode(ppc64Opcode_cmpl);
++    __ cmpldi($crx$$CondRegister, $src1$$Register, (int)((short)($src2$$constant & 0xFFFF)));
++  %}
++  ins_pipe(pipe_class_compare);
++%}
++
+ // Used in postalloc expand.
+ instruct cmpP_reg_imm16(flagsReg crx, iRegPsrc src1, immL16 src2) %{
+   // This match rule prevents reordering of node before a safepoint.
+
diff -pruN 8u312-b07-1/debian/patches/hotspot-ppc64el-S8170328-andis.patch 8u312-b07-0ubuntu1/debian/patches/hotspot-ppc64el-S8170328-andis.patch
--- 8u312-b07-1/debian/patches/hotspot-ppc64el-S8170328-andis.patch	1970-01-01 00:00:00.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/hotspot-ppc64el-S8170328-andis.patch	2017-10-31 11:18:46.000000000 +0000
@@ -0,0 +1,34 @@
+
+# HG changeset patch
+# User mdoerr
+# Date 1480079712 7200
+# Node ID 7c3dc80542b645e7e8b914f96371636db764c110
+# Parent  75f5e49c6187981a9c9e6846f652a7d472ef555e
+8170328: PPC64: Use andis instead of lis/and
+Reviewed-by: goetz, mdoerr
+Contributed-by: Igor Nunes <igor.nunes@eldorado.org.br>
+
+diff -r 75f5e49c6187 -r 7c3dc80542b6 src/cpu/ppc/vm/ppc.ad
+--- openjdk/hotspot/src/cpu/ppc/vm/ppc.ad	Thu Oct 27 12:22:28 2016 +0200
++++ openjdk/hotspot/src/cpu/ppc/vm/ppc.ad	Fri Nov 25 11:15:12 2016 -0200
+@@ -8889,6 +8889,19 @@
+   ins_pipe(pipe_class_default);
+ %}
+ 
++// Left shifted Immediate And
++instruct andI_reg_immIhi16(iRegIdst dst, iRegIsrc src1, immIhi16  src2, flagsRegCR0 cr0) %{
++  match(Set dst (AndI src1 src2));
++  effect(KILL cr0);
++  format %{ "ANDIS   $dst, $src1, $src2.hi" %}
++  size(4);
++  ins_encode %{
++    // TODO: PPC port $archOpcode(ppc64Opcode_andis_);
++    __ andis_($dst$$Register, $src1$$Register, (int)((unsigned short)(($src2$$constant & 0xFFFF0000) >> 16)));
++  %}
++  ins_pipe(pipe_class_default);
++%}
++
+ // Immediate And
+ instruct andI_reg_uimm16(iRegIdst dst, iRegIsrc src1, uimmI16 src2, flagsRegCR0 cr0) %{
+   match(Set dst (AndI src1 src2));
+
diff -pruN 8u312-b07-1/debian/patches/hotspot-ppc64el-S8181055-use-numa-v2-api.patch 8u312-b07-0ubuntu1/debian/patches/hotspot-ppc64el-S8181055-use-numa-v2-api.patch
--- 8u312-b07-1/debian/patches/hotspot-ppc64el-S8181055-use-numa-v2-api.patch	1970-01-01 00:00:00.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/hotspot-ppc64el-S8181055-use-numa-v2-api.patch	2017-07-24 20:51:23.000000000 +0000
@@ -0,0 +1,104 @@
+
+# HG changeset patch
+# User zgu
+# Date 1496858375 14400
+# Node ID d3cc20285653ad55dab95c6bd5430cb8afade2b8
+# Parent  f040971765427ce2c85afa46d950a89c0fbf97cc
+8181055: PPC64: "mbind: Invalid argument" still seen after 8175813
+Summary: Use numa_interleave_memory v2 api when available
+Reviewed-by: dholmes, shade, gromero
+
+--- a/hotspot/src/os/linux/vm/os_linux.cpp
++++ b/hotspot/src/os/linux/vm/os_linux.cpp
+@@ -2822,11 +2822,8 @@ extern "C" JNIEXPORT void numa_warn(int
+ extern "C" JNIEXPORT void numa_error(char *where) { }
+ extern "C" JNIEXPORT int fork1() { return fork(); }
+ 
+-
+-// If we are running with libnuma version > 2, then we should
+-// be trying to use symbols with versions 1.1
+-// If we are running with earlier version, which did not have symbol versions,
+-// we should use the base version.
++// Handle request to load libnuma symbol version 1.1 (API v1). If it fails
++// load symbol from base version instead.
+ void* os::Linux::libnuma_dlsym(void* handle, const char *name) {
+   void *f = dlvsym(handle, name, "libnuma_1.1");
+   if (f == NULL) {
+@@ -2835,6 +2832,12 @@ void* os::Linux::libnuma_dlsym(void* han
+   return f;
+ }
+ 
++// Handle request to load libnuma symbol version 1.2 (API v2) only.
++// Return NULL if the symbol is not defined in this particular version.
++void* os::Linux::libnuma_v2_dlsym(void* handle, const char* name) {
++  return dlvsym(handle, name, "libnuma_1.2");
++}
++
+ bool os::Linux::libnuma_init() {
+   // sched_getcpu() should be in libc.
+   set_sched_getcpu(CAST_TO_FN_PTR(sched_getcpu_func_t,
+@@ -2859,6 +2862,8 @@ bool os::Linux::libnuma_init() {
+                                             libnuma_dlsym(handle, "numa_tonode_memory")));
+       set_numa_interleave_memory(CAST_TO_FN_PTR(numa_interleave_memory_func_t,
+                                                 libnuma_dlsym(handle, "numa_interleave_memory")));
++      set_numa_interleave_memory_v2(CAST_TO_FN_PTR(numa_interleave_memory_v2_func_t,
++                                                libnuma_v2_dlsym(handle, "numa_interleave_memory")));
+       set_numa_set_bind_policy(CAST_TO_FN_PTR(numa_set_bind_policy_func_t,
+                                               libnuma_dlsym(handle, "numa_set_bind_policy")));
+       set_numa_bitmask_isbitset(CAST_TO_FN_PTR(numa_bitmask_isbitset_func_t,
+@@ -2978,6 +2983,7 @@ os::Linux::numa_num_configured_nodes_fun
+ os::Linux::numa_available_func_t os::Linux::_numa_available;
+ os::Linux::numa_tonode_memory_func_t os::Linux::_numa_tonode_memory;
+ os::Linux::numa_interleave_memory_func_t os::Linux::_numa_interleave_memory;
++os::Linux::numa_interleave_memory_v2_func_t os::Linux::_numa_interleave_memory_v2;
+ os::Linux::numa_set_bind_policy_func_t os::Linux::_numa_set_bind_policy;
+ os::Linux::numa_bitmask_isbitset_func_t os::Linux::_numa_bitmask_isbitset;
+ os::Linux::numa_distance_func_t os::Linux::_numa_distance;
+--- a/hotspot/src/os/linux/vm/os_linux.hpp
++++ b/hotspot/src/os/linux/vm/os_linux.hpp
+@@ -190,6 +190,8 @@ class Linux {
+   static void libpthread_init();
+   static bool libnuma_init();
+   static void* libnuma_dlsym(void* handle, const char* name);
++  // libnuma v2 (libnuma_1.2) symbols
++  static void* libnuma_v2_dlsym(void* handle, const char* name);
+   // Minimum stack size a thread can be created with (allowing
+   // the VM to completely create the thread and enter user code)
+   static size_t min_stack_allowed;
+@@ -250,6 +252,8 @@ private:
+   typedef int (*numa_available_func_t)(void);
+   typedef int (*numa_tonode_memory_func_t)(void *start, size_t size, int node);
+   typedef void (*numa_interleave_memory_func_t)(void *start, size_t size, unsigned long *nodemask);
++  typedef void (*numa_interleave_memory_v2_func_t)(void *start, size_t size, struct bitmask* mask);
++
+   typedef void (*numa_set_bind_policy_func_t)(int policy);
+   typedef int (*numa_bitmask_isbitset_func_t)(struct bitmask *bmp, unsigned int n);
+   typedef int (*numa_distance_func_t)(int node1, int node2);
+@@ -261,6 +265,7 @@ private:
+   static numa_available_func_t _numa_available;
+   static numa_tonode_memory_func_t _numa_tonode_memory;
+   static numa_interleave_memory_func_t _numa_interleave_memory;
++  static numa_interleave_memory_v2_func_t _numa_interleave_memory_v2;
+   static numa_set_bind_policy_func_t _numa_set_bind_policy;
+   static numa_bitmask_isbitset_func_t _numa_bitmask_isbitset;
+   static numa_distance_func_t _numa_distance;
+@@ -275,6 +280,7 @@ private:
+   static void set_numa_available(numa_available_func_t func) { _numa_available = func; }
+   static void set_numa_tonode_memory(numa_tonode_memory_func_t func) { _numa_tonode_memory = func; }
+   static void set_numa_interleave_memory(numa_interleave_memory_func_t func) { _numa_interleave_memory = func; }
++  static void set_numa_interleave_memory_v2(numa_interleave_memory_v2_func_t func) { _numa_interleave_memory_v2 = func; }
+   static void set_numa_set_bind_policy(numa_set_bind_policy_func_t func) { _numa_set_bind_policy = func; }
+   static void set_numa_bitmask_isbitset(numa_bitmask_isbitset_func_t func) { _numa_bitmask_isbitset = func; }
+   static void set_numa_distance(numa_distance_func_t func) { _numa_distance = func; }
+@@ -296,7 +302,10 @@ public:
+     return _numa_tonode_memory != NULL ? _numa_tonode_memory(start, size, node) : -1;
+   }
+   static void numa_interleave_memory(void *start, size_t size) {
+-    if (_numa_interleave_memory != NULL && _numa_all_nodes != NULL) {
++    // Use v2 api if available
++    if (_numa_interleave_memory_v2 != NULL && _numa_all_nodes_ptr != NULL) {
++      _numa_interleave_memory_v2(start, size, _numa_all_nodes_ptr);
++    } else if (_numa_interleave_memory != NULL && _numa_all_nodes != NULL) {
+       _numa_interleave_memory(start, size, _numa_all_nodes);
+     }
+   }
diff -pruN 8u312-b07-1/debian/patches/hotspot-ppc64el-S8181810-leverage-extrdi.patch 8u312-b07-0ubuntu1/debian/patches/hotspot-ppc64el-S8181810-leverage-extrdi.patch
--- 8u312-b07-1/debian/patches/hotspot-ppc64el-S8181810-leverage-extrdi.patch	1970-01-01 00:00:00.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/hotspot-ppc64el-S8181810-leverage-extrdi.patch	2017-10-31 11:18:46.000000000 +0000
@@ -0,0 +1,67 @@
+
+# HG changeset patch
+# User mdoerr
+# Date 1507822572 -3600
+# Node ID 584eac5794ff0a5fe5d86ef165db732ee85b8661
+# Parent  7c3dc80542b645e7e8b914f96371636db764c110
+8181810: PPC64: Leverage extrdi for bitfield extract
+Reviewed-by: mdoerr, simonis
+Contributed-by: Matthew Brandyberry <mbrandy@linux.vnet.ibm.com>
+
+diff -r 7c3dc80542b6 -r 584eac5794ff src/cpu/ppc/vm/ppc.ad
+--- openjdk/hotspot/src/cpu/ppc/vm/ppc.ad	Fri Nov 25 11:15:12 2016 -0200
++++ openjdk/hotspot/src/cpu/ppc/vm/ppc.ad	Thu Oct 12 16:36:12 2017 +0100
+@@ -1,6 +1,6 @@
+ //
+ // Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
+-// Copyright 2012, 2014 SAP AG. All rights reserved.
++// Copyright (c) 2012, 2017 SAP SE. All rights reserved.
+ // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ //
+ // This code is free software; you can redistribute it and/or modify it
+@@ -8610,6 +8610,44 @@
+   ins_pipe(pipe_class_default);
+ %}
+ 
++// Bitfield Extract: URShiftI + AndI
++instruct andI_urShiftI_regI_immI_immIpow2minus1(iRegIdst dst, iRegIsrc src1, immI src2, immIpow2minus1 src3) %{
++  match(Set dst (AndI (URShiftI src1 src2) src3));
++
++  format %{ "EXTRDI  $dst, $src1, shift=$src2, mask=$src3 \t// int bitfield extract" %}
++  size(4);
++  ins_encode %{
++    // TODO: PPC port $archOpcode(ppc64Opcode_rldicl);
++    int rshift = ($src2$$constant) & 0x1f;
++    int length = log2_long(((jlong) $src3$$constant) + 1);
++    if (rshift + length > 32) {
++      // if necessary, adjust mask to omit rotated bits.
++      length = 32 - rshift;
++    }
++    __ extrdi($dst$$Register, $src1$$Register, length, 64 - (rshift + length));
++  %}
++  ins_pipe(pipe_class_default);
++%}
++
++// Bitfield Extract: URShiftL + AndL
++instruct andL_urShiftL_regL_immI_immLpow2minus1(iRegLdst dst, iRegLsrc src1, immI src2, immLpow2minus1 src3) %{
++  match(Set dst (AndL (URShiftL src1 src2) src3));
++
++  format %{ "EXTRDI  $dst, $src1, shift=$src2, mask=$src3 \t// long bitfield extract" %}
++  size(4);
++  ins_encode %{
++    // TODO: PPC port $archOpcode(ppc64Opcode_rldicl);
++    int rshift  = ($src2$$constant) & 0x3f;
++    int length = log2_long(((jlong) $src3$$constant) + 1);
++    if (rshift + length > 64) {
++      // if necessary, adjust mask to omit rotated bits.
++      length = 64 - rshift;
++    }
++    __ extrdi($dst$$Register, $src1$$Register, length, 64 - (rshift + length));
++  %}
++  ins_pipe(pipe_class_default);
++%}
++
+ instruct sxtI_reg(iRegIdst dst, iRegIsrc src) %{
+   match(Set dst (ConvL2I (ConvI2L src)));
+ 
+
diff -pruN 8u312-b07-1/debian/patches/hotspot-set-compiler.diff 8u312-b07-0ubuntu1/debian/patches/hotspot-set-compiler.diff
--- 8u312-b07-1/debian/patches/hotspot-set-compiler.diff	2021-07-29 19:24:49.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/hotspot-set-compiler.diff	2017-01-23 10:09:22.000000000 +0000
@@ -1,5 +1,4 @@
 # DP: Allow to overwrite CC/CXX from the environment
-
 --- a/hotspot/make/linux/makefiles/gcc.make
 +++ b/hotspot/make/linux/makefiles/gcc.make
 @@ -39,7 +39,7 @@ ifeq ($(SPEC),)
diff -pruN 8u312-b07-1/debian/patches/hotspot-warn-no-errformat.diff 8u312-b07-0ubuntu1/debian/patches/hotspot-warn-no-errformat.diff
--- 8u312-b07-1/debian/patches/hotspot-warn-no-errformat.diff	2021-07-29 19:29:22.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/hotspot-warn-no-errformat.diff	2021-04-21 09:59:35.000000000 +0000
@@ -1,16 +1,5 @@
 # DP: Build Hotspot with -Wno-error=format (not warning free on ppc64el).
 
---- a/hotspot/make/linux/makefiles/gcc.make
-+++ b/hotspot/make/linux/makefiles/gcc.make
-@@ -202,7 +202,7 @@ else
- endif
- 
- # Compiler warnings are treated as errors
--WARNINGS_ARE_ERRORS = -Werror
-+WARNINGS_ARE_ERRORS = -Werror -Wno-error=format -Wno-error=deprecated
- 
- ifeq ($(USE_CLANG), true)
-   # However we need to clean the code up before we can unrestrictedly enable this option with Clang
 --- a/hotspot/make/solaris/makefiles/gcc.make
 +++ b/hotspot/make/solaris/makefiles/gcc.make
 @@ -116,7 +116,7 @@ endif
@@ -22,3 +11,14 @@
  # Enable these warnings. See 'info gcc' about details on these options
  WARNING_FLAGS = -Wpointer-arith -Wconversion -Wsign-compare -Wundef -Wformat=2
  CFLAGS_WARN/DEFAULT = $(WARNINGS_ARE_ERRORS) $(WARNING_FLAGS)
+--- a/hotspot/make/linux/makefiles/gcc.make
++++ b/hotspot/make/linux/makefiles/gcc.make
+@@ -202,7 +202,7 @@ else
+ endif
+ 
+ # Compiler warnings are treated as errors
+-WARNINGS_ARE_ERRORS = -Werror
++WARNINGS_ARE_ERRORS = -Werror -Wno-error=format -Wno-error=deprecated
+ 
+ ifeq ($(USE_CLANG), true)
+   # However we need to clean the code up before we can unrestrictedly enable this option with Clang
diff -pruN 8u312-b07-1/debian/patches/icc_loading_with_symlink.diff 8u312-b07-0ubuntu1/debian/patches/icc_loading_with_symlink.diff
--- 8u312-b07-1/debian/patches/icc_loading_with_symlink.diff	2021-07-29 19:24:52.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/icc_loading_with_symlink.diff	2017-01-23 10:09:22.000000000 +0000
@@ -14,7 +14,7 @@ Forwarded: not-yet
 
 --- a/jdk/src/share/classes/java/awt/color/ICC_Profile.java
 +++ b/jdk/src/share/classes/java/awt/color/ICC_Profile.java
-@@ -1818,9 +1818,6 @@ public class ICC_Profile implements Seri
+@@ -1833,9 +1833,6 @@ public class ICC_Profile implements Seri
                      dir = st.nextToken();
                          fullPath = dir + File.separatorChar + fileName;
                      f = new File(fullPath);
@@ -24,7 +24,7 @@ Forwarded: not-yet
                  }
              }
  
-@@ -1857,7 +1854,7 @@ public class ICC_Profile implements Seri
+@@ -1872,7 +1869,7 @@ public class ICC_Profile implements Seri
              File.separatorChar + "lib" + File.separatorChar + "cmm";
          String fullPath = dir + File.separatorChar + fileName;
          File f = new File(fullPath);
diff -pruN 8u312-b07-1/debian/patches/icedtea-sound.diff 8u312-b07-0ubuntu1/debian/patches/icedtea-sound.diff
--- 8u312-b07-1/debian/patches/icedtea-sound.diff	2021-07-29 19:38:44.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/icedtea-sound.diff	2015-10-13 11:05:25.000000000 +0000
@@ -1,14 +1,5 @@
 --- a/icedtea-sound/Makefile.am
 +++ b/icedtea-sound/Makefile.am
-@@ -62,7 +62,7 @@
- JAVADOC_OPTS=-use -keywords -encoding UTF-8 -splitIndex \
-  -bottom '<font size="-1"> <a href="http://icedtea.classpath.org/bugzilla">Submit a bug or feature</a></font>'
- if JAVADOC_SUPPORTS_J_OPTIONS
--JAVADOC_MEM_OPTS=-J-Xmx1024m -J-Xms128m -J-XX:PermSize=32m -J-XX:MaxPermSize=160m
-+JAVADOC_MEM_OPTS=-J-Xmx1000m -J-Xms128m -J-XX:PermSize=32m -J-XX:MaxPermSize=160m
- endif
- endif
- 
 @@ -143,7 +143,7 @@
  	touch $@
  
@@ -20,15 +11,6 @@
  $(ICEDTEA_SOUND_NATIVE_BUILDDIR)/$(TARGET_NAME): $(ICEDTEA_SOUND_NATIVE_OBJECTS)
 --- a/icedtea-sound/Makefile.in
 +++ b/icedtea-sound/Makefile.in
-@@ -313,7 +313,7 @@
- @ENABLE_DOCS_TRUE@JAVADOC_OPTS = -use -keywords -encoding UTF-8 -splitIndex \
- @ENABLE_DOCS_TRUE@ -bottom '<font size="-1"> <a href="http://icedtea.classpath.org/bugzilla">Submit a bug or feature</a></font>'
- 
--@ENABLE_DOCS_TRUE@@JAVADOC_SUPPORTS_J_OPTIONS_TRUE@JAVADOC_MEM_OPTS = -J-Xmx1024m -J-Xms128m -J-XX:PermSize=32m -J-XX:MaxPermSize=160m
-+@ENABLE_DOCS_TRUE@@JAVADOC_SUPPORTS_J_OPTIONS_TRUE@JAVADOC_MEM_OPTS = -J-Xmx1000m -J-Xms128m -J-XX:PermSize=32m -J-XX:MaxPermSize=160m
- all: all-am
- 
- .SUFFIXES:
 @@ -721,7 +721,7 @@
  	touch $@
  
@@ -196,14 +178,3 @@
        ;;
      sh*)
        BUILD_ARCH_DIR=sh
---- a/icedtea-sound/javac.in
-+++ b/icedtea-sound/javac.in
-@@ -50,7 +50,7 @@
-     unless grep {$_ eq '-bootclasspath'} @ARGV;
- my @ecj_parms = ($ECJ_WARNINGS, @bcoption);
- my @javac_parms = ($JAVAC_WARNINGS, '-Xprefer:source',
--		   '-XDignore.symbol.file=true', '-J-Xmx1024m');
-+		   '-XDignore.symbol.file=true', '-J-Xmx1000m');
- 
- # Work around ecj's inability to handle duplicate command-line
- # options and unknown javac options.
diff -pruN 8u312-b07-1/debian/patches/jamvm-fix.diff 8u312-b07-0ubuntu1/debian/patches/jamvm-fix.diff
--- 8u312-b07-1/debian/patches/jamvm-fix.diff	1970-01-01 00:00:00.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/jamvm-fix.diff	2016-02-25 15:36:32.000000000 +0000
@@ -0,0 +1,108 @@
+--- jamvm/jamvm/src/classlib/openjdk/jvm.c
++++ jamvm/jamvm/src/classlib/openjdk/jvm.c
+@@ -517,6 +517,48 @@ jclass JVM_FindClassFromBootLoader(JNIEnv *env, const char *name) {
+ }
+ 
+ 
++/* JVM_FindClassFromCaller
++ * Find a class from a given class loader.  Throws ClassNotFoundException.
++ *  name:   name of class
++ *  init:   whether initialization is done
++ *  loader: class loader to look up the class.
++ *          This may not be the same as the caller's class loader.
++ *  caller: initiating class. The initiating class may be null when a security
++ *          manager is not installed.
++ *
++ * Find a class with this name in this loader,
++ * using the caller's "protection domain".
++ */
++
++jclass JVM_FindClassFromCaller(JNIEnv *env, const char *name,
++                               jboolean init, jobject loader,
++                               jclass caller) {
++    Class *class;
++
++    TRACE("JVM_FindClassFromCaller(env=%p, name=%s, init=%d, loader=%p,"
++          " caller=%p)", env, name, init, loader, caller);
++
++    /* XXX The caller's protection domain should be used during
++       the findClassFromClassLoader but there is no specification or
++       unit-test in OpenJDK documenting the desired effect */
++
++    class = findClassFromClassLoader((char *)name, loader);
++
++    if(class == NULL) {
++        Object *excep = exceptionOccurred();
++        char *dot_name = slash2DotsDup((char*)name);
++
++        clearException();
++        signalChainedException(java_lang_ClassNotFoundException,
++                               dot_name, excep);
++        sysFree(dot_name);
++    } else if(init)
++        initClass(class);
++
++    return class;
++}
++
++
+ /* JVM_FindClassFromClassLoader */
+ 
+ jclass JVM_FindClassFromClassLoader(JNIEnv *env, const char *name,
+@@ -2965,6 +3007,24 @@ void JVM_GetVersionInfo(JNIEnv *env, jvm_version_info *info, size_t info_size) {
+ }
+ 
+ 
++/* JVM_GetTemporaryDirectory
++ * Return the temporary directory that the VM uses for the attach
++ * and perf data files.
++ *
++ * It is important that this directory is well-known and the
++ * same for all VM instances. It cannot be affected by configuration
++ * variables such as java.io.tmpdir.
++ *
++ * JamVM do not support the jvmstat framework thus this is left unimplemented.
++ */
++
++jstring JVM_GetTemporaryDirectory(JNIEnv *env) {
++    UNIMPLEMENTED("JVM_GetTemporaryDirectory");
++
++    return 0;
++}
++
++
+ /* JVM_RegisterSignal */
+ 
+ extern void signalHandler(int sig);
+--- jamvm/jamvm/src/classlib/openjdk/classlib-defs.h
++++ jamvm/jamvm/src/classlib/openjdk/classlib-defs.h
+@@ -1,5 +1,6 @@
+ /*
+- * Copyright (C) 2011, 2013, 2014 Robert Lougher <rob@jamvm.org.uk>.
++ * Copyright (C) 2011, 2013, 2014, 2015
++ * Robert Lougher <rob@jamvm.org.uk>.
+  *
+  * This file is part of JamVM.
+  *
+@@ -23,7 +23,7 @@
+ #define CLASSLIB_CLASS_SPECIAL  JTHREAD
+ 
+ #if OPENJDK_VERSION == 8
+-#define CLASSLIB_CLASS_PAD_SIZE 10*sizeof(Object*)+1*sizeof(int)
++#define CLASSLIB_CLASS_PAD_SIZE 11*sizeof(Object*)+1*sizeof(int)
+ #elif OPENJDK_VERSION == 7
+ #define CLASSLIB_CLASS_PAD_SIZE 18*sizeof(Object*)+2*sizeof(int)
+ #else
+diff -u -ur a/src/os/linux/mips/callNative.S b/src/os/linux/mips/callNative.S
+--- jamvm/jamvm/src/os/linux/mips/callNative.S
++++ jamvm/jamvm/src/os/linux/mips/callNative.S
+@@ -157,8 +157,7 @@
+ 
+ ret_double:
+ #ifdef __mips_hard_float
+-	swc1 $f0,0($8)
+-	swc1 $f1,4($8)
++	sdc1 $f0,0($8)
+ 	addu $8,8
+ 	j return
+ #endif
diff -pruN 8u312-b07-1/debian/patches/java-access-bridge-security.patch 8u312-b07-0ubuntu1/debian/patches/java-access-bridge-security.patch
--- 8u312-b07-1/debian/patches/java-access-bridge-security.patch	2021-07-29 19:24:19.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/java-access-bridge-security.patch	2015-03-17 00:13:29.000000000 +0000
@@ -1,13 +1,15 @@
 # patch only used for builds with java-access-bridge support
 
---- a/jdk/src/share/lib/security/java.security-linux
-+++ b/jdk/src/share/lib/security/java.security-linux
-@@ -218,6 +218,8 @@ package.access=sun.,\
-                com.oracle.xmlns.internal.,\
-                com.oracle.webservices.internal.,\
-                oracle.jrockit.jfr.,\
-+               org.GNOME.Accessibility.,\
-+               org.GNOME.Bonobo.,\
+--- 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.,\
-                jdk.internal.,\
-                jdk.nashorn.internal.,\
+-               oracle.jrockit.jfr.
++               oracle.jrockit.jfr.,\
++               org.GNOME.Accessibility.,\
++               org.GNOME.Bonobo.
+ #
+ # List of comma-separated packages that start with or equal this string
+ # will cause a security exception to be thrown when
diff -pruN 8u312-b07-1/debian/patches/javadoc-sort-enum-and-annotation-types.diff 8u312-b07-0ubuntu1/debian/patches/javadoc-sort-enum-and-annotation-types.diff
--- 8u312-b07-1/debian/patches/javadoc-sort-enum-and-annotation-types.diff	2021-07-29 19:24:57.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/javadoc-sort-enum-and-annotation-types.diff	2017-01-23 10:09:22.000000000 +0000
@@ -1,7 +1,6 @@
-Description: Sort the enums and the annotations in the package-tree.html files
-Author: Emmanuel Bourg <ebourg@apache.org>
-Forwarded: no
-
+Description: Sort the enums and the annotations in the package-tree.html files
+Author: Emmanuel Bourg <ebourg@apache.org>
+Forwarded: no
 --- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/ClassTree.java
 +++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/ClassTree.java
 @@ -161,6 +161,15 @@ public class ClassTree {
diff -pruN 8u312-b07-1/debian/patches/jdk-derived-font-size.diff 8u312-b07-0ubuntu1/debian/patches/jdk-derived-font-size.diff
--- 8u312-b07-1/debian/patches/jdk-derived-font-size.diff	1970-01-01 00:00:00.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/jdk-derived-font-size.diff	2017-01-20 16:42:53.000000000 +0000
@@ -0,0 +1,14 @@
+# DP: Debian issue #834053, adjust size for derived fonts.
+# not yet forwarded.
+
+--- src/jdk/src/share/classes/java/awt/Font.java
++++ src/jdk/src/share/classes/java/awt/Font.java
+@@ -1864,7 +1864,7 @@
+      */
+     public Font deriveFont(int style, float size){
+         if (values == null) {
+-            return new Font(name, style, size, createdFont, font2DHandle);
++            return new Font(name, style, pointSize, createdFont, font2DHandle);
+         }
+         AttributeValues newValues = getAttributeValues().clone();
+         int oldStyle = (this.style != style) ? this.style : -1;
diff -pruN 8u312-b07-1/debian/patches/jdk-getAccessibleValue.diff 8u312-b07-0ubuntu1/debian/patches/jdk-getAccessibleValue.diff
--- 8u312-b07-1/debian/patches/jdk-getAccessibleValue.diff	2021-07-29 19:24:58.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/jdk-getAccessibleValue.diff	2019-03-17 17:34:19.000000000 +0000
@@ -1,3 +1,82 @@
+--- a/jdk/src/share/classes/javax/swing/JTree.java
++++ b/jdk/src/share/classes/javax/swing/JTree.java
+@@ -4969,7 +4969,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;
+                 }
+@@ -4984,7 +4984,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;
+                 }
+@@ -4999,7 +4999,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/jdk/src/share/classes/javax/swing/table/JTableHeader.java
++++ b/jdk/src/share/classes/javax/swing/table/JTableHeader.java
+@@ -1088,7 +1088,12 @@ public class JTableHeader extends JCompo
+             }
+ 
+             public AccessibleAction getAccessibleAction() {
+-                return getCurrentAccessibleContext().getAccessibleAction();
++                AccessibleContext ac = getCurrentAccessibleContext();
++                if (ac != null) {
++			return ac.getAccessibleAction();
++		} else {
++			return null;
++		}
+             }
+ 
+            /**
+@@ -1104,15 +1109,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/jdk/src/share/classes/javax/swing/JTable.java
 +++ b/jdk/src/share/classes/javax/swing/JTable.java
 @@ -8224,7 +8224,12 @@ public class JTable extends JComponent i
@@ -112,88 +191,9 @@
              }
  
  
---- a/jdk/src/share/classes/javax/swing/JTree.java
-+++ b/jdk/src/share/classes/javax/swing/JTree.java
-@@ -4969,7 +4969,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;
-                 }
-@@ -4984,7 +4984,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;
-                 }
-@@ -4999,7 +4999,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/jdk/src/share/classes/javax/swing/table/JTableHeader.java
-+++ b/jdk/src/share/classes/javax/swing/table/JTableHeader.java
-@@ -1088,7 +1088,12 @@ public class JTableHeader extends JCompo
-             }
- 
-             public AccessibleAction getAccessibleAction() {
--                return getCurrentAccessibleContext().getAccessibleAction();
-+                AccessibleContext ac = getCurrentAccessibleContext();
-+                if (ac != null) {
-+			return ac.getAccessibleAction();
-+		} else {
-+			return null;
-+		}
-             }
- 
-            /**
-@@ -1104,15 +1109,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/jdk/src/windows/classes/com/sun/java/accessibility/AccessBridge.java
 +++ b/jdk/src/windows/classes/com/sun/java/accessibility/AccessBridge.java
-@@ -6658,7 +6658,7 @@ final public class AccessBridge extends
+@@ -6669,7 +6669,7 @@ final public class AccessBridge extends
          public AccessibleSelection getAccessibleSelection() {
              AccessibleContext ac = getCurrentAccessibleContext();
              if (ac != null && isLeaf) {
@@ -202,7 +202,7 @@
              } else {
                  return this;
              }
-@@ -6673,7 +6673,7 @@ final public class AccessBridge extends
+@@ -6684,7 +6684,7 @@ final public class AccessBridge extends
          public AccessibleText getAccessibleText() {
              AccessibleContext ac = getCurrentAccessibleContext();
              if (ac != null) {
@@ -211,7 +211,7 @@
              } else {
                  return null;
              }
-@@ -6688,7 +6688,7 @@ final public class AccessBridge extends
+@@ -6699,7 +6699,7 @@ final public class AccessBridge extends
          public AccessibleValue getAccessibleValue() {
              AccessibleContext ac = getCurrentAccessibleContext();
              if (ac != null) {
diff -pruN 8u312-b07-1/debian/patches/jdk-target-arch-define.diff 8u312-b07-0ubuntu1/debian/patches/jdk-target-arch-define.diff
--- 8u312-b07-1/debian/patches/jdk-target-arch-define.diff	2021-07-29 19:24:57.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/jdk-target-arch-define.diff	2019-10-01 06:28:22.000000000 +0000
@@ -2,7 +2,7 @@
 
 --- a/common/autoconf/flags.m4
 +++ b/common/autoconf/flags.m4
-@@ -645,7 +645,13 @@ AC_DEFUN_ONCE([FLAGS_SETUP_COMPILER_FLAG
+@@ -587,7 +587,13 @@ AC_DEFUN_ONCE([FLAGS_SETUP_COMPILER_FLAG
    CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D$OPENJDK_TARGET_OS_UPPERCASE"
  
    # Setup target CPU
diff -pruN 8u312-b07-1/debian/patches/jexec.diff.in 8u312-b07-0ubuntu1/debian/patches/jexec.diff.in
--- 8u312-b07-1/debian/patches/jexec.diff.in	2021-07-29 19:24:53.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/jexec.diff.in	2015-03-17 00:13:29.000000000 +0000
@@ -1,7 +1,7 @@
 --- a/jdk/src/solaris/bin/jexec.c
 +++ b/jdk/src/solaris/bin/jexec.c
-@@ -168,9 +168,10 @@ int main(int argc, const char * argv[])
- 
+@@ -168,9 +168,10 @@
+
      /* Get the path to the java binary, which is in a known position relative
       * to our current position, which is in argv[0]. */
 -    if (getJavaPath(argv[argi++], java, RELATIVE_DEPTH) != 0) {
diff -pruN 8u312-b07-1/debian/patches/kfreebsd-support-hotspot.diff 8u312-b07-0ubuntu1/debian/patches/kfreebsd-support-hotspot.diff
--- 8u312-b07-1/debian/patches/kfreebsd-support-hotspot.diff	1970-01-01 00:00:00.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/kfreebsd-support-hotspot.diff	2017-07-25 14:31:59.000000000 +0000
@@ -0,0 +1,843 @@
+Index: b/hotspot/src/os/linux/vm/decoder_linux.cpp
+===================================================================
+--- a/hotspot/src/os/linux/vm/decoder_linux.cpp
++++ b/hotspot/src/os/linux/vm/decoder_linux.cpp
+@@ -22,6 +22,7 @@
+  *
+  */
+ 
++#include "utilities/globalDefinitions.hpp"
+ #include "prims/jvm.h"
+ #include "utilities/decoder_elf.hpp"
+ 
+Index: b/hotspot/src/os/linux/vm/attachListener_linux.cpp
+===================================================================
+--- a/hotspot/src/os/linux/vm/attachListener_linux.cpp
++++ b/hotspot/src/os/linux/vm/attachListener_linux.cpp
+@@ -39,6 +39,10 @@
+ #define UNIX_PATH_MAX   sizeof(((struct sockaddr_un *)0)->sun_path)
+ #endif
+ 
++#if defined(__FreeBSD_kernel__)
++#include <sys/ucred.h>
++#endif
++
+ // The attach mechanism on Linux uses a UNIX domain socket. An attach listener
+ // thread is created at startup or is created on-demand via a signal from
+ // the client tool. The attach listener creates a socket and binds it to a file
+@@ -337,16 +341,26 @@ LinuxAttachOperation* LinuxAttachListene
+ 
+     // get the credentials of the peer and check the effective uid/guid
+     // - check with jeff on this.
++#if defined(LOCAL_PEERCRED) /* GNU/kFreeBSD */
++    struct xucred cred_info;
++    socklen_t optlen = sizeof(cred_info);
++    if (::getsockopt(s, SOL_SOCKET, LOCAL_PEERCRED, (void*)&cred_info, &optlen) == -1) {
++#else
+     struct ucred cred_info;
+     socklen_t optlen = sizeof(cred_info);
+     if (::getsockopt(s, SOL_SOCKET, SO_PEERCRED, (void*)&cred_info, &optlen) == -1) {
++#endif
+       ::close(s);
+       continue;
+     }
+     uid_t euid = geteuid();
+     gid_t egid = getegid();
+ 
++#if defined(LOCAL_PEERCRED) /* GNU/kFreeBSD */
++    if (cred_info.cr_uid != euid || cred_info.cr_gid != egid) {
++#else
+     if (cred_info.uid != euid || cred_info.gid != egid) {
++#endif
+       ::close(s);
+       continue;
+     }
+Index: b/hotspot/src/os/linux/vm/jvm_linux.cpp
+===================================================================
+--- a/hotspot/src/os/linux/vm/jvm_linux.cpp
++++ b/hotspot/src/os/linux/vm/jvm_linux.cpp
+@@ -169,7 +169,9 @@ struct siglabel siglabels[] = {
+   "WINCH",      SIGWINCH,       /* Window size change (4.3 BSD, Sun).  */
+   "POLL",       SIGPOLL,        /* Pollable event occurred (System V).  */
+   "IO",         SIGIO,          /* I/O now possible (4.2 BSD).  */
++#ifdef SIGPWR
+   "PWR",        SIGPWR,         /* Power failure restart (System V).  */
++#endif
+ #ifdef SIGSYS
+   "SYS",        SIGSYS          /* Bad system call. Only on some Linuxen! */
+ #endif
+Index: b/hotspot/src/os/linux/vm/os_linux.cpp
+===================================================================
+--- a/hotspot/src/os/linux/vm/os_linux.cpp
++++ b/hotspot/src/os/linux/vm/os_linux.cpp
+@@ -22,6 +22,7 @@
+  *
+  */
+ 
++#include "utilities/globalDefinitions.hpp"
+ // no precompiled headers
+ #include "classfile/classLoader.hpp"
+ #include "classfile/systemDictionary.hpp"
+@@ -92,8 +93,16 @@
+ # include <semaphore.h>
+ # include <fcntl.h>
+ # include <string.h>
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
++# include <sys/param.h>
++# include <sys/sysctl.h>
++#ifndef ETIME
++# define ETIME ETIMEDOUT
++#endif
++#else
+ # include <syscall.h>
+ # include <sys/sysinfo.h>
++#endif
+ # include <gnu/libc-version.h>
+ # include <sys/ipc.h>
+ # include <sys/shm.h>
+@@ -169,11 +178,22 @@ julong os::available_memory() {
+ }
+ 
+ julong os::Linux::available_memory() {
++#ifndef __FreeBSD_kernel__
+   // values in struct sysinfo are "unsigned long"
+   struct sysinfo si;
+   sysinfo(&si);
+ 
+   return (julong)si.freeram * si.mem_unit;
++#else
++  int mib[2] = {CTL_HW, HW_USERMEM}, mem;
++  size_t len;
++  len = sizeof(mem);
++  if (sysctl(mib, 2, &mem, &len, NULL, 0) == 0) {
++    return (julong) mem;
++  } else {
++    return 0;
++  }
++#endif
+ }
+ 
+ julong os::physical_memory() {
+@@ -2174,18 +2194,22 @@ void os::print_memory_info(outputStream*
+   st->print("Memory:");
+   st->print(" %dk page", os::vm_page_size()>>10);
+ 
++#ifndef __FreeBSD_kernel__
+   // values in struct sysinfo are "unsigned long"
+   struct sysinfo si;
+   sysinfo(&si);
++#endif
+ 
+   st->print(", physical " UINT64_FORMAT "k",
+             os::physical_memory() >> 10);
+   st->print("(" UINT64_FORMAT "k free)",
+             os::available_memory() >> 10);
++#ifndef __FreeBSD_kernel__
+   st->print(", swap " UINT64_FORMAT "k",
+             ((jlong)si.totalswap * si.mem_unit) >> 10);
+   st->print("(" UINT64_FORMAT "k free)",
+             ((jlong)si.freeswap * si.mem_unit) >> 10);
++#endif
+   st->cr();
+ }
+
+--- a/hotspot/src/os/linux/vm/os_linux.cpp	2017-07-12 08:27:13.000000000 +0200
++++ b/hotspot/src/os/linux/vm/os_linux.cpp	2017-07-25 13:13:21.333303596 +0200
+@@ -3422,8 +3422,12 @@
+     return NULL;
+   }
+ 
++#ifndef __FreeBSD_kernel__
+   // SHM_REMAP is needed to allow shmat to map over an existing mapping.
+   char* addr = (char*)shmat(shmid, pre_reserved_addr, SHM_REMAP);
++#else
++  char* addr = (char*)shmat(shmid, pre_reserved_addr, 0);
++#endif
+ 
+   if ((intptr_t)addr == -1) {
+     int err = errno;
+
+Index: b/hotspot/src/os/linux/vm/osThread_linux.cpp
+===================================================================
+--- a/hotspot/src/os/linux/vm/osThread_linux.cpp
++++ b/hotspot/src/os/linux/vm/osThread_linux.cpp
+@@ -22,6 +22,7 @@
+  *
+  */
+ 
++#include "utilities/globalDefinitions.hpp"
+ // no precompiled headers
+ #include "runtime/mutex.hpp"
+ #include "runtime/osThread.hpp"
+Index: b/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp
+===================================================================
+--- a/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp
++++ b/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp
+@@ -22,6 +22,7 @@
+  *
+  */
+ 
++#include "utilities/globalDefinitions.hpp"
+ // no precompiled headers
+ #include "asm/macroAssembler.hpp"
+ #include "classfile/classLoader.hpp"
+@@ -74,6 +75,7 @@
+ # include <ucontext.h>
+ # include <fpu_control.h>
+ 
++#ifdef __linux__
+ #ifdef AMD64
+ #define REG_SP REG_RSP
+ #define REG_PC REG_RIP
+@@ -87,6 +89,54 @@
+ #define SPELL_REG_SP "esp"
+ #define SPELL_REG_FP "ebp"
+ #endif // AMD64
++#endif
++
++#if defined(__FreeBSD_kernel__)
++#define context_trapno uc_mcontext.mc_trapno
++#ifdef AMD64
++#define SPELL_REG_SP "rsp"
++#define SPELL_REG_FP "rbp"
++#define context_sp uc_mcontext.mc_rsp
++#define context_pc uc_mcontext.mc_rip
++#define context_fp uc_mcontext.mc_rbp
++#define context_rip uc_mcontext.mc_rip
++#define context_rsp uc_mcontext.mc_rsp
++#define context_rbp uc_mcontext.mc_rbp
++#define context_flags uc_mcontext.mc_flags
++#define context_err uc_mcontext.mc_err
++#define context_rax uc_mcontext.mc_rax
++#define context_rbx uc_mcontext.mc_rbx
++#define context_rcx uc_mcontext.mc_rcx
++#define context_rdx uc_mcontext.mc_rdx
++#define context_rsi uc_mcontext.mc_rsi
++#define context_rdi uc_mcontext.mc_rdi
++#define context_r8 uc_mcontext.mc_r8
++#define context_r9 uc_mcontext.mc_r9
++#define context_r10 uc_mcontext.mc_r10
++#define context_r11 uc_mcontext.mc_r11
++#define context_r12 uc_mcontext.mc_r12
++#define context_r13 uc_mcontext.mc_r13
++#define context_r14 uc_mcontext.mc_r14
++#define context_r15 uc_mcontext.mc_r15
++#else
++#define SPELL_REG_SP "esp"
++#define SPELL_REG_FP "ebp"
++#define context_sp uc_mcontext.mc_esp
++#define context_pc uc_mcontext.mc_eip
++#define context_fp uc_mcontext.mc_ebp
++#define context_eip uc_mcontext.mc_eip
++#define context_esp uc_mcontext.mc_esp
++#define context_eax uc_mcontext.mc_eax
++#define context_ebx uc_mcontext.mc_ebx
++#define context_ecx uc_mcontext.mc_ecx
++#define context_edx uc_mcontext.mc_edx
++#define context_ebp uc_mcontext.mc_ebp
++#define context_esi uc_mcontext.mc_esi
++#define context_edi uc_mcontext.mc_edi
++#define context_eflags uc_mcontext.mc_eflags
++#define context_trapno uc_mcontext.mc_trapno
++#endif // AMD64
++#endif
+ 
+ PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
+ 
+@@ -118,15 +168,27 @@ void os::initialize_thread(Thread* thr)
+ }
+ 
+ address os::Linux::ucontext_get_pc(ucontext_t * uc) {
++#if defined(__FreeBSD_kernel__)
++  return (address)uc->context_pc;
++#else
+   return (address)uc->uc_mcontext.gregs[REG_PC];
++#endif
+ }
+ 
+ intptr_t* os::Linux::ucontext_get_sp(ucontext_t * uc) {
++#if defined(__FreeBSD_kernel__)
++  return (intptr_t*)uc->context_sp;
++#else
+   return (intptr_t*)uc->uc_mcontext.gregs[REG_SP];
++#endif
+ }
+ 
+ intptr_t* os::Linux::ucontext_get_fp(ucontext_t * uc) {
++#if defined(__FreeBSD_kernel__)
++  return (intptr_t*)uc->context_fp;
++#else
+   return (intptr_t*)uc->uc_mcontext.gregs[REG_FP];
++#endif
+ }
+ 
+ // For Forte Analyzer AsyncGetCallTrace profiling support - thread
+@@ -278,7 +340,11 @@ JVM_handle_linux_signal(int sig,
+     pc = (address) os::Linux::ucontext_get_pc(uc);
+ 
+     if (StubRoutines::is_safefetch_fault(pc)) {
++#if defined(__FreeBSD_kernel__)
++      uc->context_pc = intptr_t(StubRoutines::continuation_for_safefetch_fault(pc));
++#else
+       uc->uc_mcontext.gregs[REG_PC] = intptr_t(StubRoutines::continuation_for_safefetch_fault(pc));
++#endif
+       return 1;
+     }
+ 
+@@ -443,7 +509,11 @@ JVM_handle_linux_signal(int sig,
+   // Furthermore, a false-positive should be harmless.
+   if (UnguardOnExecutionViolation > 0 &&
+       (sig == SIGSEGV || sig == SIGBUS) &&
++#if defined(__FreeBSD_kernel__)
++      uc->context_trapno == trap_page_fault) {
++#else
+       uc->uc_mcontext.gregs[REG_TRAPNO] == trap_page_fault) {
++#endif
+     int page_size = os::vm_page_size();
+     address addr = (address) info->si_addr;
+     address pc = os::Linux::ucontext_get_pc(uc);
+@@ -513,7 +583,11 @@ JVM_handle_linux_signal(int sig,
+     // save all thread context in case we need to restore it
+     if (thread != NULL) thread->set_saved_exception_pc(pc);
+ 
++#if defined(__FreeBSD_kernel__)
++    uc->context_pc = (intptr_t)stub;
++#else
+     uc->uc_mcontext.gregs[REG_PC] = (greg_t)stub;
++#endif
+     return true;
+   }
+ 
+@@ -765,6 +839,7 @@ void os::print_context(outputStream *st,
+ 
+   ucontext_t *uc = (ucontext_t*)context;
+   st->print_cr("Registers:");
++#ifdef __linux__
+ #ifdef AMD64
+   st->print(  "RAX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RAX]);
+   st->print(", RBX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RBX]);
+@@ -807,6 +882,48 @@ void os::print_context(outputStream *st,
+   st->print(", EFLAGS=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_EFL]);
+   st->print(", CR2=" INTPTR_FORMAT, uc->uc_mcontext.cr2);
+ #endif // AMD64
++#elif defined(__FreeBSD_kernel__)
++#ifdef AMD64
++  st->print(  "RAX=" INTPTR_FORMAT, uc->context_rax);
++  st->print(", RBX=" INTPTR_FORMAT, uc->context_rbx);
++  st->print(", RCX=" INTPTR_FORMAT, uc->context_rcx);
++  st->print(", RDX=" INTPTR_FORMAT, uc->context_rdx);
++  st->cr();
++  st->print(  "RSP=" INTPTR_FORMAT, uc->context_rsp);
++  st->print(", RBP=" INTPTR_FORMAT, uc->context_rbp);
++  st->print(", RSI=" INTPTR_FORMAT, uc->context_rsi);
++  st->print(", RDI=" INTPTR_FORMAT, uc->context_rdi);
++  st->cr();
++  st->print(  "R8 =" INTPTR_FORMAT, uc->context_r8);
++  st->print(", R9 =" INTPTR_FORMAT, uc->context_r9);
++  st->print(", R10=" INTPTR_FORMAT, uc->context_r10);
++  st->print(", R11=" INTPTR_FORMAT, uc->context_r11);
++  st->cr();
++  st->print(  "R12=" INTPTR_FORMAT, uc->context_r12);
++  st->print(", R13=" INTPTR_FORMAT, uc->context_r13);
++  st->print(", R14=" INTPTR_FORMAT, uc->context_r14);
++  st->print(", R15=" INTPTR_FORMAT, uc->context_r15);
++  st->cr();
++  st->print(  "RIP=" INTPTR_FORMAT, uc->context_rip);
++  st->print(", EFLAGS=" INTPTR_FORMAT, uc->context_flags);
++  st->print(", ERR=" INTPTR_FORMAT, uc->context_err);
++  st->cr();
++  st->print("  TRAPNO=" INTPTR_FORMAT, uc->context_trapno);
++#else
++  st->print(  "EAX=" INTPTR_FORMAT, uc->context_eax);
++  st->print(", EBX=" INTPTR_FORMAT, uc->context_ebx);
++  st->print(", ECX=" INTPTR_FORMAT, uc->context_ecx);
++  st->print(", EDX=" INTPTR_FORMAT, uc->context_edx);
++  st->cr();
++  st->print(  "ESP=" INTPTR_FORMAT, uc->context_esp);
++  st->print(", EBP=" INTPTR_FORMAT, uc->context_ebp);
++  st->print(", ESI=" INTPTR_FORMAT, uc->context_esi);
++  st->print(", EDI=" INTPTR_FORMAT, uc->context_edi);
++  st->cr();
++  st->print(  "EIP=" INTPTR_FORMAT, uc->context_eip);
++  st->print(", EFLAGS=" INTPTR_FORMAT, uc->context_eflags);
++#endif // AMD64
++#endif
+   st->cr();
+   st->cr();
+ 
+@@ -837,6 +954,7 @@ void os::print_register_info(outputStrea
+ 
+   // this is only for the "general purpose" registers
+ 
++#ifdef __linux__
+ #ifdef AMD64
+   st->print("RAX="); print_location(st, uc->uc_mcontext.gregs[REG_RAX]);
+   st->print("RBX="); print_location(st, uc->uc_mcontext.gregs[REG_RBX]);
+@@ -864,6 +982,35 @@ void os::print_register_info(outputStrea
+   st->print("ESI="); print_location(st, uc->uc_mcontext.gregs[REG_ESI]);
+   st->print("EDI="); print_location(st, uc->uc_mcontext.gregs[REG_EDI]);
+ #endif // AMD64
++#elif defined(__FreeBSD_kernel__)
++#ifdef AMD64
++  st->print("RAX="); print_location(st, uc->context_rax);
++  st->print("RBX="); print_location(st, uc->context_rbx);
++  st->print("RCX="); print_location(st, uc->context_rcx);
++  st->print("RDX="); print_location(st, uc->context_rdx);
++  st->print("RSP="); print_location(st, uc->context_rsp);
++  st->print("RBP="); print_location(st, uc->context_rbp);
++  st->print("RSI="); print_location(st, uc->context_rsi);
++  st->print("RDI="); print_location(st, uc->context_rdi);
++  st->print("R8 ="); print_location(st, uc->context_r8);
++  st->print("R9 ="); print_location(st, uc->context_r9);
++  st->print("R10="); print_location(st, uc->context_r10);
++  st->print("R11="); print_location(st, uc->context_r11);
++  st->print("R12="); print_location(st, uc->context_r12);
++  st->print("R13="); print_location(st, uc->context_r13);
++  st->print("R14="); print_location(st, uc->context_r14);
++  st->print("R15="); print_location(st, uc->context_r15);
++#else
++  st->print("EAX="); print_location(st, uc->context_eax);
++  st->print("EBX="); print_location(st, uc->context_ebx);
++  st->print("ECX="); print_location(st, uc->context_ecx);
++  st->print("EDX="); print_location(st, uc->context_edx);
++  st->print("ESP="); print_location(st, uc->context_esp);
++  st->print("EBP="); print_location(st, uc->context_ebp);
++  st->print("ESI="); print_location(st, uc->context_esi);
++  st->print("EDI="); print_location(st, uc->context_edi);
++#endif // AMD64
++#endif
+ 
+   st->cr();
+ }
+Index: b/hotspot/src/share/vm/memory/allocation.hpp
+===================================================================
+--- a/hotspot/src/share/vm/memory/allocation.hpp
++++ b/hotspot/src/share/vm/memory/allocation.hpp
+@@ -25,8 +25,8 @@
+ #ifndef SHARE_VM_MEMORY_ALLOCATION_HPP
+ #define SHARE_VM_MEMORY_ALLOCATION_HPP
+ 
+-#include "runtime/globals.hpp"
+ #include "utilities/globalDefinitions.hpp"
++#include "runtime/globals.hpp"
+ #include "utilities/macros.hpp"
+ #ifdef COMPILER1
+ #include "c1/c1_globals.hpp"
+Index: b/hotspot/src/share/vm/ci/ciObject.hpp
+===================================================================
+--- a/hotspot/src/share/vm/ci/ciObject.hpp
++++ b/hotspot/src/share/vm/ci/ciObject.hpp
+@@ -25,6 +25,7 @@
+ #ifndef SHARE_VM_CI_CIOBJECT_HPP
+ #define SHARE_VM_CI_CIOBJECT_HPP
+ 
++#include "utilities/globalDefinitions.hpp"
+ #include "ci/ciBaseObject.hpp"
+ #include "ci/ciClassList.hpp"
+ #include "memory/allocation.hpp"
+Index: b/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp
+===================================================================
+--- a/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp
++++ b/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp
+@@ -22,6 +22,7 @@
+  *
+  */
+ 
++#include "utilities/globalDefinitions.hpp"
+ // no precompiled headers
+ #include "classfile/vmSymbols.hpp"
+ #include "gc_interface/collectedHeap.hpp"
+Index: b/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp
+===================================================================
+--- a/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp
++++ b/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp
+@@ -68,7 +68,7 @@
+ # include <sys/procfs.h>
+ # endif
+ 
+-#if defined(LINUX) || defined(_ALLBSD_SOURCE)
++#if defined(LINUX) || defined(_ALLBSD_SOURCE) || defined(__FreeBSD_kernel__)
+ #ifndef __STDC_LIMIT_MACROS
+ #define __STDC_LIMIT_MACROS
+ #endif // __STDC_LIMIT_MACROS
+Index: b/hotspot/make/defs.make
+===================================================================
+--- a/hotspot/make/defs.make
++++ b/hotspot/make/defs.make
+@@ -179,9 +179,6 @@ endif
+ # Windows should have OS predefined
+ ifeq ($(OS),)
+   OS   := $(shell uname -s)
+-  ifneq ($(findstring BSD,$(OS)),)
+-    OS=bsd
+-  endif
+   ifeq ($(OS), Darwin)
+     OS=bsd
+   endif
+@@ -207,6 +204,10 @@ else
+   OSNAME=linux
+ endif
+ 
++ifeq ($(OS), GNU/kFreeBSD)
++  OSNAME=linux
++endif
++
+ # Determinations of default make arguments and platform specific settings
+ MAKE_ARGS=
+ 
+Index: b/hotspot/make/linux/Makefile
+===================================================================
+--- a/hotspot/make/linux/Makefile
++++ b/hotspot/make/linux/Makefile
+@@ -236,6 +236,9 @@ checks: check_os_version check_j2se_vers
+ SUPPORTED_OS_VERSION = 2.4% 2.5% 2.6% 3% 4%
+ OS_VERSION := $(shell uname -r)
+ EMPTY_IF_NOT_SUPPORTED = $(filter $(SUPPORTED_OS_VERSION),$(OS_VERSION))
++ifeq ($(shell uname -s), GNU/kFreeBSD)
++EMPTY_IF_NOT_SUPPORTED = supported
++endif
+ 
+ check_os_version:
+ ifeq ($(DISABLE_HOTSPOT_OS_VERSION_CHECK)$(EMPTY_IF_NOT_SUPPORTED),)
+Index: b/hotspot/make/linux/makefiles/defs.make
+===================================================================
+--- a/hotspot/make/linux/makefiles/defs.make
++++ b/hotspot/make/linux/makefiles/defs.make
+@@ -84,7 +84,7 @@ ifneq (,$(findstring $(ARCH), sparc))
+ endif
+ 
+ # i686/i586 and amd64/x86_64
+-ifneq (,$(findstring $(ARCH), amd64 x86_64 i686 i586))
++ifneq (,$(findstring $(ARCH), amd64 x86_64 i686 i586 i486 i386))
+   ifeq ($(ARCH_DATA_MODEL), 64)
+     ARCH_DATA_MODEL = 64
+     MAKE_ARGS       += LP64=1
+@@ -92,7 +92,7 @@ ifneq (,$(findstring $(ARCH), amd64 x86_
+     VM_PLATFORM     = linux_amd64
+   else
+     ARCH_DATA_MODEL = 32
+-    PLATFORM        = linux-i586
++    PLATFORM        = linux_i486
+     VM_PLATFORM     = linux_i486
+   endif
+   HS_ARCH           = x86
+Index: b/hotspot/agent/src/os/linux/ps_core.c
+===================================================================
+--- a/hotspot/agent/src/os/linux/ps_core.c
++++ b/hotspot/agent/src/os/linux/ps_core.c
+@@ -551,11 +551,16 @@ static bool core_handle_prstatus(struct
+       return false;
+ 
+    // copy regs
++#if defined(__FreeBSD_kernel__)
++   memcpy(&newthr->regs, &prstat->pr_reg, sizeof(struct user_regs_struct));
++#else
+    memcpy(&newthr->regs, prstat->pr_reg, sizeof(struct user_regs_struct));
++#endif
+ 
+    if (is_debug()) {
+       print_debug("integer regset\n");
+ #ifdef i386
++#ifdef __linux__
+       // print the regset
+       print_debug("\teax = 0x%x\n", newthr->regs.eax);
+       print_debug("\tebx = 0x%x\n", newthr->regs.ebx);
+@@ -566,9 +571,21 @@ static bool core_handle_prstatus(struct
+       print_debug("\tesi = 0x%x\n", newthr->regs.esi);
+       print_debug("\tedi = 0x%x\n", newthr->regs.edi);
+       print_debug("\teip = 0x%x\n", newthr->regs.eip);
++#elif defined(__FreeBSD_kernel__)
++      print_debug("\teax = 0x%x\n", newthr->regs.r_eax);
++      print_debug("\tebx = 0x%x\n", newthr->regs.r_ebx);
++      print_debug("\tecx = 0x%x\n", newthr->regs.r_ecx);
++      print_debug("\tedx = 0x%x\n", newthr->regs.r_edx);
++      print_debug("\tesp = 0x%x\n", newthr->regs.r_esp);
++      print_debug("\tebp = 0x%x\n", newthr->regs.r_ebp);
++      print_debug("\tesi = 0x%x\n", newthr->regs.r_esi);
++      print_debug("\tedi = 0x%x\n", newthr->regs.r_edi);
++      print_debug("\teip = 0x%x\n", newthr->regs.r_eip);
++#endif
+ #endif
+ 
+ #if defined(amd64) || defined(x86_64)
++#ifdef __linux__
+       // print the regset
+       print_debug("\tr15 = 0x%lx\n", newthr->regs.r15);
+       print_debug("\tr14 = 0x%lx\n", newthr->regs.r14);
+@@ -597,6 +614,27 @@ static bool core_handle_prstatus(struct
+       print_debug("\tes = 0x%lx\n", newthr->regs.es);
+       print_debug("\tfs = 0x%lx\n", newthr->regs.fs);
+       print_debug("\tgs = 0x%lx\n", newthr->regs.gs);
++#elif defined(__FreeBSD_kernel__)
++      print_debug("\tr15 = 0x%lx\n", newthr->regs.r_r15);
++      print_debug("\tr14 = 0x%lx\n", newthr->regs.r_r14);
++      print_debug("\tr13 = 0x%lx\n", newthr->regs.r_r13);
++      print_debug("\tr12 = 0x%lx\n", newthr->regs.r_r12);
++      print_debug("\trbp = 0x%lx\n", newthr->regs.r_rbp);
++      print_debug("\trbx = 0x%lx\n", newthr->regs.r_rbx);
++      print_debug("\tr11 = 0x%lx\n", newthr->regs.r_r11);
++      print_debug("\tr10 = 0x%lx\n", newthr->regs.r_r10);
++      print_debug("\tr9 = 0x%lx\n", newthr->regs.r_r9);
++      print_debug("\tr8 = 0x%lx\n", newthr->regs.r_r8);
++      print_debug("\trax = 0x%lx\n", newthr->regs.r_rax);
++      print_debug("\trcx = 0x%lx\n", newthr->regs.r_rcx);
++      print_debug("\trdx = 0x%lx\n", newthr->regs.r_rdx);
++      print_debug("\trsi = 0x%lx\n", newthr->regs.r_rsi);
++      print_debug("\trdi = 0x%lx\n", newthr->regs.r_rdi);
++      print_debug("\trip = 0x%lx\n", newthr->regs.r_rip);
++      print_debug("\tcs = 0x%lx\n", newthr->regs.r_cs);
++      print_debug("\trsp = 0x%lx\n", newthr->regs.r_rsp);
++      print_debug("\tss = 0x%lx\n", newthr->regs.r_ss);
++#endif
+ #endif
+    }
+ 
+Index: b/hotspot/agent/src/os/linux/ps_proc.c
+===================================================================
+--- a/hotspot/agent/src/os/linux/ps_proc.c
++++ b/hotspot/agent/src/os/linux/ps_proc.c
+@@ -42,6 +42,22 @@
+ #define __WALL          0x40000000  // Copied from /usr/include/linux/wait.h
+ #endif
+ 
++#ifndef PTRACE_PEEKDATA
++#define PTRACE_PEEKDATA PT_READ_D
++#endif
++
++#ifndef PTRACE_ATTACH
++#define PTRACE_ATTACH PT_ATTACH
++#endif
++
++#ifndef PTRACE_DETACH
++#define PTRACE_DETACH PT_DETACH
++#endif
++
++#ifndef PTRACE_CONT
++#define PTRACE_CONT PT_CONTINUE
++#endif
++
+ // This file has the libproc implementation specific to live process
+ // For core files, refer to ps_core.c
+ 
+@@ -59,7 +75,11 @@ static inline uintptr_t align(uintptr_t
+ // before calling process_read_data.
+ 
+ static bool process_read_data(struct ps_prochandle* ph, uintptr_t addr, char *buf, size_t size) {
++#if defined(__FreeBSD_kernel__)
++  int rslt;
++#else
+   long rslt;
++#endif
+   size_t i, words;
+   uintptr_t end_addr = addr + size;
+   uintptr_t aligned_addr = align(addr, sizeof(long));
+@@ -67,36 +87,62 @@ static bool process_read_data(struct ps_
+   if (aligned_addr != addr) {
+     char *ptr = (char *)&rslt;
+     errno = 0;
++#if defined(__FreeBSD_kernel__)
++    rslt = ptrace(PTRACE_PEEKDATA, ph->pid, (caddr_t) aligned_addr, 0);
++#else
+     rslt = ptrace(PTRACE_PEEKDATA, ph->pid, aligned_addr, 0);
++#endif
+     if (errno) {
+       print_debug("ptrace(PTRACE_PEEKDATA, ..) failed for %d bytes @ %lx\n", size, addr);
+       return false;
+     }
+     for (; aligned_addr != addr; aligned_addr++, ptr++);
++#if defined(__FreeBSD_kernel__)
++    for (; ((intptr_t)aligned_addr % sizeof(int)) && aligned_addr < end_addr;
++#else
+     for (; ((intptr_t)aligned_addr % sizeof(long)) && aligned_addr < end_addr;
++#endif
+         aligned_addr++)
+        *(buf++) = *(ptr++);
+   }
+ 
++#if defined(__FreeBSD_kernel__)
++  words = (end_addr - aligned_addr) / sizeof(int);
++#else
+   words = (end_addr - aligned_addr) / sizeof(long);
++#endif
+ 
+   // assert((intptr_t)aligned_addr % sizeof(long) == 0);
+   for (i = 0; i < words; i++) {
+     errno = 0;
++#if defined(__FreeBSD_kernel__)
++    rslt = ptrace(PTRACE_PEEKDATA, ph->pid, (caddr_t) aligned_addr, 0);
++#else
+     rslt = ptrace(PTRACE_PEEKDATA, ph->pid, aligned_addr, 0);
++#endif
+     if (errno) {
+       print_debug("ptrace(PTRACE_PEEKDATA, ..) failed for %d bytes @ %lx\n", size, addr);
+       return false;
+     }
++#if defined(__FreeBSD_kernel__)
++    *(int *)buf = rslt;
++    buf += sizeof(int);
++    aligned_addr += sizeof(int);
++#else
+     *(long *)buf = rslt;
+     buf += sizeof(long);
+     aligned_addr += sizeof(long);
++#endif
+   }
+ 
+   if (aligned_addr != end_addr) {
+     char *ptr = (char *)&rslt;
+     errno = 0;
++#if defined(__FreeBSD_kernel__)
++    rslt = ptrace(PTRACE_PEEKDATA, ph->pid, (caddr_t) aligned_addr, 0);
++#else
+     rslt = ptrace(PTRACE_PEEKDATA, ph->pid, aligned_addr, 0);
++#endif
+     if (errno) {
+       print_debug("ptrace(PTRACE_PEEKDATA, ..) failed for %d bytes @ %lx\n", size, addr);
+       return false;
+@@ -135,7 +181,11 @@ static bool process_get_lwp_regs(struct
+ #endif
+ 
+ #ifdef PTRACE_GETREGS_REQ
++#if defined(__FreeBSD_kernel__)
++ if (ptrace_getregs(PTRACE_GETREGS_REQ, pid, (caddr_t) user, 0) < 0) {
++#else
+  if (ptrace_getregs(PTRACE_GETREGS_REQ, pid, user, NULL) < 0) {
++#endif
+    print_debug("ptrace(PTRACE_GETREGS, ...) failed for lwp %d\n", pid);
+    return false;
+  }
+@@ -216,7 +266,11 @@ static bool ptrace_waitpid(pid_t pid) {
+ 
+ // attach to a process/thread specified by "pid"
+ static bool ptrace_attach(pid_t pid, char* err_buf, size_t err_buf_len) {
++#if defined(__FreeBSD_kernel__)
++  if (ptrace(PTRACE_ATTACH, pid, NULL, 0) < 0) {
++#else
+   if (ptrace(PTRACE_ATTACH, pid, NULL, NULL) < 0) {
++#endif
+     char buf[200];
+     char* msg = strerror_r(errno, buf, sizeof(buf));
+     snprintf(err_buf, err_buf_len, "ptrace(PTRACE_ATTACH, ..) failed for %d: %s", pid, msg);
+@@ -313,7 +367,11 @@ static bool read_lib_info(struct ps_proc
+ 
+ // detach a given pid
+ static bool ptrace_detach(pid_t pid) {
++#if defined(__FreeBSD_kernel__)
++  if (pid && ptrace(PTRACE_DETACH, pid, NULL, 0) < 0) {
++#else
+   if (pid && ptrace(PTRACE_DETACH, pid, NULL, NULL) < 0) {
++#endif
+     print_debug("ptrace(PTRACE_DETACH, ..) failed for %d\n", pid);
+     return false;
+   } else {
+Index: b/hotspot/agent/src/os/linux/libproc.h
+===================================================================
+--- a/hotspot/agent/src/os/linux/libproc.h
++++ b/hotspot/agent/src/os/linux/libproc.h
+@@ -28,6 +28,10 @@
+ #include <jni.h>
+ #include <unistd.h>
+ #include <stdint.h>
++#if defined(__FreeBSD_kernel__)
++#include <sys/types.h>
++#include <machine/reg.h>
++#endif
+ #include "proc_service.h"
+ 
+ #ifdef ALT_SASRCDIR
+@@ -73,6 +77,10 @@ combination of ptrace and /proc calls.
+ #define user_regs_struct  pt_regs
+ #endif
+ 
++#if defined(__FreeBSD_kernel__)
++#define user_regs_struct reg
++#endif
++
+ // This C bool type must be int for compatibility with Linux calls and
+ // it would be a mistake to equivalence it to C++ bool on many platforms
+ 
+Index: b/hotspot/agent/src/os/linux/LinuxDebuggerLocal.c
+===================================================================
+--- a/hotspot/agent/src/os/linux/LinuxDebuggerLocal.c
++++ b/hotspot/agent/src/os/linux/LinuxDebuggerLocal.c
+@@ -367,7 +367,7 @@ JNIEXPORT jlongArray JNICALL Java_sun_jv
+ 
+ #ifdef i386
+ #define REG_INDEX(reg) sun_jvm_hotspot_debugger_x86_X86ThreadContext_##reg
+-
++#ifdef __linux__
+   regs[REG_INDEX(GS)]  = (uintptr_t) gregs.xgs;
+   regs[REG_INDEX(FS)]  = (uintptr_t) gregs.xfs;
+   regs[REG_INDEX(ES)]  = (uintptr_t) gregs.xes;
+@@ -383,12 +383,28 @@ JNIEXPORT jlongArray JNICALL Java_sun_jv
+   regs[REG_INDEX(PC)] = (uintptr_t) gregs.eip;
+   regs[REG_INDEX(CS)]  = (uintptr_t) gregs.xcs;
+   regs[REG_INDEX(SS)]  = (uintptr_t) gregs.xss;
+-
++#elif defined(__FreeBSD_kernel__)
++  regs[REG_INDEX(GS)]  = (uintptr_t) gregs.r_gs;
++  regs[REG_INDEX(FS)]  = (uintptr_t) gregs.r_fs;
++  regs[REG_INDEX(ES)]  = (uintptr_t) gregs.r_es;
++  regs[REG_INDEX(DS)]  = (uintptr_t) gregs.r_ds;
++  regs[REG_INDEX(EDI)] = (uintptr_t) gregs.r_edi;
++  regs[REG_INDEX(ESI)] = (uintptr_t) gregs.r_esi;
++  regs[REG_INDEX(FP)] = (uintptr_t) gregs.r_ebp;
++  regs[REG_INDEX(SP)] = (uintptr_t) gregs.r_isp;
++  regs[REG_INDEX(EBX)] = (uintptr_t) gregs.r_ebx;
++  regs[REG_INDEX(EDX)] = (uintptr_t) gregs.r_edx;
++  regs[REG_INDEX(ECX)] = (uintptr_t) gregs.r_ecx;
++  regs[REG_INDEX(EAX)] = (uintptr_t) gregs.r_eax;
++  regs[REG_INDEX(PC)] = (uintptr_t) gregs.r_eip;
++  regs[REG_INDEX(CS)]  = (uintptr_t) gregs.r_cs;
++  regs[REG_INDEX(SS)]  = (uintptr_t) gregs.r_ss;
++#endif
+ #endif /* i386 */
+ 
+ #ifdef amd64
+ #define REG_INDEX(reg) sun_jvm_hotspot_debugger_amd64_AMD64ThreadContext_##reg
+-
++#ifdef __linux__
+   regs[REG_INDEX(R15)] = gregs.r15;
+   regs[REG_INDEX(R14)] = gregs.r14;
+   regs[REG_INDEX(R13)] = gregs.r13;
+@@ -414,7 +430,27 @@ JNIEXPORT jlongArray JNICALL Java_sun_jv
+   regs[REG_INDEX(ES)] = gregs.es;
+   regs[REG_INDEX(FS)] = gregs.fs;
+   regs[REG_INDEX(GS)] = gregs.gs;
+-
++#elif defined(__FreeBSD_kernel__)
++  regs[REG_INDEX(R15)] = gregs.r_r15;
++  regs[REG_INDEX(R14)] = gregs.r_r14;
++  regs[REG_INDEX(R13)] = gregs.r_r13;
++  regs[REG_INDEX(R12)] = gregs.r_r12;
++  regs[REG_INDEX(RBP)] = gregs.r_rbp;
++  regs[REG_INDEX(RBX)] = gregs.r_rbx;
++  regs[REG_INDEX(R11)] = gregs.r_r11;
++  regs[REG_INDEX(R10)] = gregs.r_r10;
++  regs[REG_INDEX(R9)] = gregs.r_r9;
++  regs[REG_INDEX(R8)] = gregs.r_r8;
++  regs[REG_INDEX(RAX)] = gregs.r_rax;
++  regs[REG_INDEX(RCX)] = gregs.r_rcx;
++  regs[REG_INDEX(RDX)] = gregs.r_rdx;
++  regs[REG_INDEX(RSI)] = gregs.r_rsi;
++  regs[REG_INDEX(RDI)] = gregs.r_rdi;
++  regs[REG_INDEX(RIP)] = gregs.r_rip;
++  regs[REG_INDEX(CS)] = gregs.r_cs;
++  regs[REG_INDEX(RSP)] = gregs.r_rsp;
++  regs[REG_INDEX(SS)] = gregs.r_ss;
++#endif
+ #endif /* amd64 */
+ 
+ #if defined(sparc) || defined(sparcv9)
+Index: b/hotspot/make/linux/makefiles/saproc.make
+===================================================================
+--- a/hotspot/make/linux/makefiles/saproc.make
++++ b/hotspot/make/linux/makefiles/saproc.make
+@@ -90,6 +90,7 @@ $(LIBSAPROC): $(SASRCFILES) $(SAMAPFILE)
+ 	           -I$(GENERATED)                                       \
+ 	           -I$(BOOT_JAVA_HOME)/include                          \
+ 	           -I$(BOOT_JAVA_HOME)/include/$(Platform_os_family)    \
++	           -I$(BOOT_JAVA_HOME)/include/bsd                      \
+ 			   $(ALT_SAINCDIR) 										\
+ 	           $(SASRCFILES)                                        \
+ 	           $(SA_LFLAGS)                                         \
diff -pruN 8u312-b07-1/debian/patches/kfreebsd-support-jamvm.diff 8u312-b07-0ubuntu1/debian/patches/kfreebsd-support-jamvm.diff
--- 8u312-b07-1/debian/patches/kfreebsd-support-jamvm.diff	1970-01-01 00:00:00.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/kfreebsd-support-jamvm.diff	2015-09-08 22:04:53.000000000 +0000
@@ -0,0 +1,42 @@
+Description: 
+ - Add ifdef TIOCINQ = FIONREAD
+ jamvm/src/classlib/openjdk/jvm.c
+ - Update configure for kfreebsd-amd64
+ jamvm/jamvm/configure.ac
+Author: Damien Raude-Morvan <drazzib@debian.org>
+Last-Update: 2011-08-05
+Forwarded: no
+
+--- a/jamvm/configure.ac
++++ b/jamvm/configure.ac
+@@ -38,6 +38,7 @@
+ i386-*-freebsd*) host_os=bsd libdl_needed=no ;;
+ i386-*-solaris*) host_cpu=x86 host_os=solaris ;;
+ x86_64-*-linux*) host_os=linux ;;
++x86_64-*-kfreebsd*) host_os=linux ;;
+ hppa*-*-linux*) host_cpu=parisc host_os=linux ;;
+ mips*-*-linux*) host_cpu=mips host_os=linux ;;
+ x86_64-*-openbsd*) host_os=bsd libdl_needed=no ;;
+--- a/jamvm/configure
++++ b/jamvm/configure
+@@ -2926,6 +2926,7 @@
+ i386-*-freebsd*) host_os=bsd libdl_needed=no ;;
+ i386-*-solaris*) host_cpu=x86 host_os=solaris ;;
+ x86_64-*-linux*) host_os=linux ;;
++x86_64-*-kfreebsd*) host_os=linux ;;
+ hppa*-*-linux*) host_cpu=parisc host_os=linux ;;
+ mips*-*-linux*) host_cpu=mips host_os=linux ;;
+ x86_64-*-openbsd*) host_os=bsd libdl_needed=no ;;
+--- a/jamvm/src/classlib/openjdk/jvm.c
++++ b/jamvm/src/classlib/openjdk/jvm.c
+@@ -63,6 +63,10 @@
+ #define have_monotonic_clock FALSE
+ #endif
+ 
++#ifndef TIOCINQ
++#define TIOCINQ FIONREAD
++#endif
++
+ static Class *cloneable_class, *constant_pool_class;
+ static Class *exception_class, *runtime_excp_class;
+ 
diff -pruN 8u312-b07-1/debian/patches/kfreebsd-support-jdk.diff 8u312-b07-0ubuntu1/debian/patches/kfreebsd-support-jdk.diff
--- 8u312-b07-1/debian/patches/kfreebsd-support-jdk.diff	1970-01-01 00:00:00.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/kfreebsd-support-jdk.diff	2017-07-25 14:32:37.000000000 +0000
@@ -0,0 +1,5171 @@
+Description: Initial GNU/kFreeBSD support for openjdk-8 (JDK part)
+ - Alter build system to consider GNU/kFreeBSD like linux
+   since this port is libc based.
+   openjdk/jdk/make/common/shared/Platform.gmk
+ - ENODATA is undefined :
+   openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileStore.java
+   openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxDosFileAttributeView.java
+ - sendfile implementation :
+   openjdk/jdk/src/solaris/native/sun/nio/ch/FileChannelImpl.c
+   (from bsd-port)
+ - BSD network stack usage :
+   openjdk/jdk/src/solaris/native/java/net/*
+   (from bsd-port)
+ - Don't build sctp protocol
+   openjdk/jdk/make/com/sun/nio/Makefile
+ - Don't build jsoundalsa
+   openjdk/jdk/make/javax/sound/Makefile
+ - Disable epoll feature and so LinuxWatchService
+   openjdk/jdk/make/java/nio/Makefile
+Author: Damien Raude-Morvan <drazzib@debian.org>
+Author: Guido Gnther <agx@sigxcpu.org>
+Author: Steven Chamberlain <steven@pyro.eu.org>
+Forwarded: no
+
+Index: b/jdk/src/solaris/bin/ergo_i586.c
+===================================================================
+--- a/jdk/src/solaris/bin/ergo_i586.c
++++ b/jdk/src/solaris/bin/ergo_i586.c
+@@ -106,7 +106,7 @@ ServerClassMachineImpl(void) {
+ 
+ #endif /* __solaris__ */
+ 
+-#ifdef __linux__
++#if defined(__linux__) || defined(__GLIBC__)
+ 
+ /*
+  * A utility method for asking the CPU about itself.
+Index: b/jdk/src/solaris/bin/jexec.c
+===================================================================
+--- a/jdk/src/solaris/bin/jexec.c
++++ b/jdk/src/solaris/bin/jexec.c
+@@ -76,7 +76,7 @@
+ #include <string.h>
+ #include <limits.h>
+ #include <errno.h>
+-#ifdef __linux__
++#if defined(__linux__) || defined(__GLIBC__)
+ #  include <sys/types.h>
+ #  include <sys/stat.h>
+ #  include <fcntl.h>
+@@ -92,7 +92,7 @@ static const char * CRAZY_EXEC_MSG   = "
+ static const char * MISSING_JAVA_MSG = "can't locate java";
+ static const char * BAD_ARG_MSG      = "incorrect number of arguments";
+ static const char * MEM_FAILED_MSG   = "memory allocation failed";
+-#ifdef __linux__
++#if defined(__linux__) || defined(__GLIBC__)
+ static const char * BAD_PATHNAME_MSG = "invalid path";
+ static const char * BAD_FILE_MSG     = "invalid file";
+ static const char * BAD_MAGIC_MSG    = "invalid file (bad magic number)";
+@@ -101,7 +101,7 @@ static const char * UNKNOWN_ERROR    = "
+ 
+ /* Define a constant that represents the number of directories to pop off the
+  * current location to find the java binary */
+-#ifdef __linux__
++#if defined(__linux__) || defined(__GLIBC__)
+ static const int RELATIVE_DEPTH = 2;
+ #else /* Solaris */
+ static const int RELATIVE_DEPTH = 3;
+@@ -114,7 +114,7 @@ static const char * BIN_PATH = "/bin/jav
+ static const char * JAR_FLAG = "-jar";
+ 
+ 
+-#ifdef __linux__
++#if defined(__linux__) || defined(__GLIBC__)
+ /* largest possible size for a local file header */
+ static const size_t CHUNK_SIZE = 65535;
+ 
+@@ -126,7 +126,7 @@ static const ssize_t MIN_SIZE = LOCHDR +
+ int main(int argc, const char * argv[]);
+ void errorExit(int error, const char * message);
+ int getJavaPath(const char * path, char * buf, int depth);
+-#ifdef __linux__
++#if defined(__linux__) || defined(__GLIBC__)
+ const char * isJar(const char * path);
+ #endif
+ 
+@@ -182,7 +182,7 @@ int main(int argc, const char * argv[])
+     }
+     nargv[nargc++] = java;
+ 
+-#ifdef __linux__
++#if defined(__linux__) || defined(__GLIBC__)
+     /* The "-jar" flag is already in the original args list on Solaris,
+      * so it only needs to be added on Linux. */
+     nargv[nargc++] = JAR_FLAG;
+@@ -192,7 +192,7 @@ int main(int argc, const char * argv[])
+         const char * jarfile = argv[argi++];
+         const char * message = NULL;
+ 
+-#ifdef __linux__
++#if defined(__linux__) || defined(__GLIBC__)
+         /* On Linux we also need to make sure argv[1] is really a JAR
+          * file (this will also resolve any symlinks, which helps). */
+         char jarPath[PATH_MAX + 1];
+@@ -301,7 +301,7 @@ int getJavaPath(const char * path, char
+ }
+ 
+ 
+-#ifdef __linux__
++#if defined(__linux__) || defined(__GLIBC__)
+ /*
+  * Check if the given file is a JAR file.
+  *
+Index: b/jdk/src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c
+===================================================================
+--- a/jdk/src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c
++++ b/jdk/src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c
+@@ -42,7 +42,7 @@
+ #include <strings.h>
+ #endif
+ 
+-#if defined(__linux__) || defined(_AIX)
++#if defined(__linux__) || defined(_AIX) || defined(__GLIBC__)
+ #include <string.h>
+ #endif
+ 
+Index: b/jdk/src/solaris/native/sun/nio/fs/GnomeFileTypeDetector.c
+===================================================================
+--- a/jdk/src/solaris/native/sun/nio/fs/GnomeFileTypeDetector.c
++++ b/jdk/src/solaris/native/sun/nio/fs/GnomeFileTypeDetector.c
+@@ -35,7 +35,7 @@
+ #include <strings.h>
+ #endif
+ 
+-#if defined(__linux__)
++#if defined(__linux__) || defined(__GLIBC__)
+ #include <string.h>
+ #endif
+ 
+Index: b/jdk/src/solaris/native/sun/nio/ch/FileChannelImpl.c
+===================================================================
+--- a/jdk/src/solaris/native/sun/nio/ch/FileChannelImpl.c
++++ b/jdk/src/solaris/native/sun/nio/ch/FileChannelImpl.c
+@@ -41,7 +41,7 @@
+ #include <sys/sendfile.h>
+ #elif defined(_AIX)
+ #include <sys/socket.h>
+-#elif defined(_ALLBSD_SOURCE)
++#elif defined(_ALLBSD_SOURCE) || defined(__FreeBSD_kernel__)
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ #include <sys/uio.h>
+@@ -216,6 +216,31 @@ Java_sun_nio_ch_FileChannelImpl_transfer
+ 
+     if (numBytes > 0)
+         return numBytes;
++
++    if (result == -1) {
++        if (errno == EAGAIN)
++            return IOS_UNAVAILABLE;
++        if (errno == EOPNOTSUPP || errno == ENOTSOCK || errno == ENOTCONN)
++            return IOS_UNSUPPORTED_CASE;
++        if ((errno == EINVAL) && ((ssize_t)count >= 0))
++            return IOS_UNSUPPORTED_CASE;
++        if (errno == EINTR)
++            return IOS_INTERRUPTED;
++        JNU_ThrowIOExceptionWithLastError(env, "Transfer failed");
++        return IOS_THROWN;
++    }
++
++    return result;
++#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
++    off_t numBytes;
++    int result;
++
++    numBytes = count;
++
++    result = sendfile(srcFD, dstFD, position, count, NULL, &numBytes, 0);
++
++    if (numBytes > 0)
++        return numBytes;
+ 
+     if (result == -1) {
+         if (errno == EAGAIN)
+Index: b/jdk/src/solaris/native/sun/nio/ch/sctp/Sctp.h
+===================================================================
+--- a/jdk/src/solaris/native/sun/nio/ch/sctp/Sctp.h
++++ b/jdk/src/solaris/native/sun/nio/ch/sctp/Sctp.h
+@@ -65,9 +65,25 @@ typedef int sctp_freepaddrs_func(void *a
+ typedef int sctp_bindx_func(int sock, void *addrs, int addrcnt, int flags);
+ typedef int sctp_peeloff_func(int sock, sctp_assoc_t id);
+ 
++#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+ 
++#include <stdint.h>
++#include <sys/types.h>
++#include <sys/socket.h>
++#include <netinet/sctp.h>
++#include <netinet/sctp_peeloff.h>
++#include <netinet/sctp_uio.h>
++#include "jni.h"
++
++#define nio_sctp_getladdrs sctp_getladdrs
++#define nio_sctp_freeladdrs sctp_freeladdrs
++#define nio_sctp_getpaddrs sctp_getpaddrs
++#define nio_sctp_freepaddrs sctp_freepaddrs
++#define nio_sctp_bindx  sctp_bindx
++#define nio_sctp_peeloff sctp_peeloff
+ 
+ #else /* __linux__ */
++
+ #include <stdint.h>
+ #include <linux/types.h>
+ #include <sys/socket.h>
+@@ -319,9 +335,19 @@ typedef int sctp_freepaddrs_func(struct
+ typedef int sctp_bindx_func(int sd, struct sockaddr *addrs, int addrcnt, int flags);
+ typedef int sctp_peeloff_func(int sock, sctp_assoc_t id);
+ 
+-
+ #endif /* __linux__ */
+ 
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
++
++#define nio_sctp_getladdrs sctp_getladdrs
++#define nio_sctp_freeladdrs sctp_freeladdrs
++#define nio_sctp_getpaddrs sctp_getpaddrs
++#define nio_sctp_freepaddrs sctp_freepaddrs
++#define nio_sctp_bindx  sctp_bindx
++#define nio_sctp_peeloff sctp_peeloff
++
++#else
++
+ sctp_getladdrs_func* nio_sctp_getladdrs;
+ sctp_freeladdrs_func* nio_sctp_freeladdrs;
+ sctp_getpaddrs_func* nio_sctp_getpaddrs;
+@@ -329,6 +355,8 @@ sctp_freepaddrs_func* nio_sctp_freepaddr
+ sctp_bindx_func* nio_sctp_bindx;
+ sctp_peeloff_func* nio_sctp_peeloff;
+ 
++#endif
++
+ jboolean loadSocketExtensionFuncs(JNIEnv* env);
+ 
+ #endif /* !SUN_NIO_CH_SCTP_H */
+Index: b/jdk/src/solaris/native/sun/nio/ch/sctp/SctpChannelImpl.c
+===================================================================
+--- a/jdk/src/solaris/native/sun/nio/ch/sctp/SctpChannelImpl.c
++++ b/jdk/src/solaris/native/sun/nio/ch/sctp/SctpChannelImpl.c
+@@ -445,7 +445,7 @@ JNIEXPORT jint JNICALL Java_sun_nio_ch_s
+             } else if (errno == EINTR) {
+                 return IOS_INTERRUPTED;
+ 
+-#ifdef __linux__
++#if defined(__linux__) || defined(__GLIBC__)
+             } else if (errno == ENOTCONN) {
+                 /* ENOTCONN when EOF reached */
+                 rv = 0;
+Index: b/jdk/src/solaris/native/sun/nio/ch/DatagramChannelImpl.c
+===================================================================
+--- a/jdk/src/solaris/native/sun/nio/ch/DatagramChannelImpl.c
++++ b/jdk/src/solaris/native/sun/nio/ch/DatagramChannelImpl.c
+@@ -35,7 +35,7 @@
+ #include <string.h>
+ #include <errno.h>
+ 
+-#if defined(__linux__) || defined(_ALLBSD_SOURCE)
++#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined(__GLIBC__)
+ #include <netinet/in.h>
+ #endif
+ 
+@@ -91,7 +91,7 @@ Java_sun_nio_ch_DatagramChannelImpl_disc
+     rv = connect(fd, 0, 0);
+ #endif
+ 
+-#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined(_AIX)
++#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined(_AIX) || defined(__GLIBC__)
+     {
+         int len;
+         SOCKADDR sa;
+Index: b/jdk/src/solaris/native/sun/nio/ch/Net.c
+===================================================================
+--- a/jdk/src/solaris/native/sun/nio/ch/Net.c
++++ b/jdk/src/solaris/native/sun/nio/ch/Net.c
+@@ -273,7 +273,7 @@ Java_sun_nio_ch_Net_socket0(JNIEnv *env,
+         }
+     }
+ 
+-#if defined(__linux__)
++#ifdef __linux__
+     if (type == SOCK_DGRAM) {
+         int arg = 0;
+         int level = (domain == AF_INET6) ? IPPROTO_IPV6 : IPPROTO_IP;
+Index: b/jdk/src/solaris/native/sun/nio/ch/NativeThread.c
+===================================================================
+--- a/jdk/src/solaris/native/sun/nio/ch/NativeThread.c
++++ b/jdk/src/solaris/native/sun/nio/ch/NativeThread.c
+@@ -32,7 +32,7 @@
+ #include "sun_nio_ch_NativeThread.h"
+ #include "nio_util.h"
+ 
+-#ifdef __linux__
++#if defined(__linux__) || defined(__GLIBC__)
+   #include <pthread.h>
+   #include <sys/signal.h>
+   /* Also defined in net/linux_close.c */
+Index: b/jdk/src/solaris/native/sun/nio/ch/SocketChannelImpl.c
+===================================================================
+--- a/jdk/src/solaris/native/sun/nio/ch/SocketChannelImpl.c
++++ b/jdk/src/solaris/native/sun/nio/ch/SocketChannelImpl.c
+@@ -31,7 +31,7 @@
+ #include <string.h>
+ #include <poll.h>
+ 
+-#if __linux__
++#if defined(__linux__) || defined(__GLIBC__)
+ #include <netinet/in.h>
+ #endif
+ 
+Index: b/jdk/src/solaris/native/sun/nio/ch/ServerSocketChannelImpl.c
+===================================================================
+--- a/jdk/src/solaris/native/sun/nio/ch/ServerSocketChannelImpl.c
++++ b/jdk/src/solaris/native/sun/nio/ch/ServerSocketChannelImpl.c
+@@ -28,7 +28,7 @@
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ 
+-#if __linux__
++#if defined(__linux__) || defined(__GLIBC__)
+ #include <netinet/in.h>
+ #endif
+ 
+Index: b/jdk/src/solaris/native/sun/nio/ch/sctp/SctpNet.c
+===================================================================
+--- a/jdk/src/solaris/native/sun/nio/ch/sctp/SctpNet.c
++++ b/jdk/src/solaris/native/sun/nio/ch/sctp/SctpNet.c
+@@ -58,6 +58,7 @@ static int preCloseFD = -1;     /* File
+  */
+ jboolean loadSocketExtensionFuncs
+   (JNIEnv* env) {
++#if !defined(__FreeBSD__) && !defined(__FreeBSD_kernel__)
+     if (dlopen(nativeSctpLib, RTLD_GLOBAL | RTLD_LAZY) == NULL) {
+         JNU_ThrowByName(env, "java/lang/UnsupportedOperationException",
+               dlerror());
+@@ -105,6 +106,7 @@ jboolean loadSocketExtensionFuncs
+               dlerror());
+         return JNI_FALSE;
+     }
++#endif /* __FreeBSD__ */
+ 
+     funcsLoaded = JNI_TRUE;
+     return JNI_TRUE;
+Index: b/jdk/src/solaris/native/sun/awt/extutil.h
+===================================================================
+--- a/jdk/src/solaris/native/sun/awt/extutil.h
++++ b/jdk/src/solaris/native/sun/awt/extutil.h
+@@ -58,7 +58,7 @@ in this Software without prior written a
+  */
+ /* $XFree86: xc/include/extensions/extutil.h,v 1.5 2001/01/17 17:53:20 dawes Exp $ */
+ 
+-#if defined(__linux__) || defined(MACOSX)
++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__)
+ 
+ #ifndef _EXTUTIL_H_
+ #define _EXTUTIL_H_
+Index: b/jdk/src/solaris/native/sun/awt/VDrawingArea.c
+===================================================================
+--- a/jdk/src/solaris/native/sun/awt/VDrawingArea.c
++++ b/jdk/src/solaris/native/sun/awt/VDrawingArea.c
+@@ -33,7 +33,7 @@
+ #include <stdio.h>
+ #include <stdlib.h>
+ 
+-#ifdef __linux__
++#if defined(__linux__) || defined(__GLIBC__)
+ /* XXX: Shouldn't be necessary. */
+ #include "awt_p.h"
+ #endif /* __linux__ */
+Index: b/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c
+===================================================================
+--- a/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c
++++ b/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c
+@@ -121,7 +121,8 @@ static char *x11GraphicsConfigClassName
+  */
+ 
+ #define MAXFRAMEBUFFERS 16
+-#if defined(__linux__) || defined(MACOSX)
++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__)
++
+ typedef struct {
+    int   screen_number;
+    short x_org;
+@@ -440,7 +441,7 @@ getAllConfigs (JNIEnv *env, int screen,
+                                       RTLD_LAZY | RTLD_GLOBAL);
+         }
+ 
+-#ifndef __linux__ /* SOLARIS */
++#if ! defined(__linux__) && ! defined(__GLIBC__)  /* SOLARIS */
+         if (xrenderLibHandle == NULL) {
+             xrenderLibHandle = dlopen("/usr/sfw/lib/libXrender.so.1",
+                                       RTLD_LAZY | RTLD_GLOBAL);
+@@ -584,7 +585,8 @@ getAllConfigs (JNIEnv *env, int screen,
+ }
+ 
+ #ifndef HEADLESS
+-#if defined(__linux__) || defined(MACOSX)
++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__)
++
+ static void xinerama_init_linux()
+ {
+     void* libHandle = NULL;
+@@ -635,7 +637,7 @@ static void xinerama_init_linux()
+     }
+ }
+ #endif
+-#if !defined(__linux__) && !defined(MACOSX) /* Solaris */
++#if !defined(__linux__) && !defined(MACOSX) && !defined(__GLIBC__) /* Solaris */
+ static void xinerama_init_solaris()
+ {
+     void* libHandle = NULL;
+@@ -695,11 +697,11 @@ static void xineramaInit(void) {
+     }
+ 
+     DTRACE_PRINTLN("Xinerama extension is available");
+-#if defined(__linux__) || defined(MACOSX)
++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__)
+     xinerama_init_linux();
+ #else /* Solaris */
+     xinerama_init_solaris();
+-#endif /* __linux__ || MACOSX */
++#endif /* __linux__ || MACOSX || __GLIBC__ */
+ }
+ #endif /* HEADLESS */
+ 
+@@ -1597,7 +1599,7 @@ Java_sun_awt_X11GraphicsEnvironment_getX
+ {
+     jobject point = NULL;
+ #ifndef HEADLESS    /* return NULL in HEADLESS, Linux */
+-#if !defined(__linux__) && !defined(MACOSX)
++#if !defined(__linux__) && !defined(MACOSX) && !defined(__GLIBC__)
+     int x,y;
+ 
+     AWT_LOCK();
+Index: b/jdk/src/solaris/native/sun/awt/awt_Font.c
+===================================================================
+--- a/jdk/src/solaris/native/sun/awt/awt_Font.c
++++ b/jdk/src/solaris/native/sun/awt/awt_Font.c
+@@ -255,7 +255,7 @@ loadFont(Display * display, char *name,
+             if (strcmp(style, "regular") == 0) {
+                 altstyle = "roman";
+             }
+-#if defined(__linux__) || defined(MACOSX)
++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__)
+             if (!strcmp(family, "lucidasans")) {
+                 family = "lucida";
+             }
+Index: b/jdk/src/solaris/native/sun/awt/awt_InputMethod.c
+===================================================================
+--- a/jdk/src/solaris/native/sun/awt/awt_InputMethod.c
++++ b/jdk/src/solaris/native/sun/awt/awt_InputMethod.c
+@@ -52,7 +52,7 @@ static void PreeditDrawCallback(XIC, XPo
+                                 XIMPreeditDrawCallbackStruct *);
+ static void PreeditCaretCallback(XIC, XPointer,
+                                  XIMPreeditCaretCallbackStruct *);
+-#if defined(__linux__) || defined(MACOSX)
++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__)
+ static void StatusStartCallback(XIC, XPointer, XPointer);
+ static void StatusDoneCallback(XIC, XPointer, XPointer);
+ static void StatusDrawCallback(XIC, XPointer,
+@@ -66,7 +66,7 @@ static void StatusDrawCallback(XIC, XPoi
+ #define PreeditDoneIndex        1
+ #define PreeditDrawIndex        2
+ #define PreeditCaretIndex       3
+-#if defined(__linux__) || defined(MACOSX)
++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__)
+ #define StatusStartIndex        4
+ #define StatusDoneIndex         5
+ #define StatusDrawIndex         6
+@@ -84,14 +84,14 @@ static XIMProc callback_funcs[NCALLBACKS
+     (XIMProc)PreeditDoneCallback,
+     (XIMProc)PreeditDrawCallback,
+     (XIMProc)PreeditCaretCallback,
+-#if defined(__linux__) || defined(MACOSX)
++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__)
+     (XIMProc)StatusStartCallback,
+     (XIMProc)StatusDoneCallback,
+     (XIMProc)StatusDrawCallback,
+ #endif
+ };
+ 
+-#if defined(__linux__) || defined(MACOSX)
++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__)
+ #define MAX_STATUS_LEN  100
+ typedef struct {
+     Window   w;                /*status window id        */
+@@ -124,7 +124,7 @@ typedef struct _X11InputMethodData {
+     XIMCallback *callbacks;     /* callback parameters */
+     jobject     x11inputmethod; /* global ref to X11InputMethod instance */
+                                 /* associated with the XIC */
+-#if defined(__linux__) || defined(MACOSX)
++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__)
+     StatusWindow *statusWindow; /* our own status window  */
+ #endif
+     char        *lookup_buf;    /* buffer used for XmbLookupString */
+@@ -370,7 +370,7 @@ destroyX11InputMethodData(JNIEnv *env, X
+ static void
+ freeX11InputMethodData(JNIEnv *env, X11InputMethodData *pX11IMData)
+ {
+-#if defined(__linux__) || defined(MACOSX)
++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__)
+     if (pX11IMData->statusWindow != NULL){
+         StatusWindow *sw = pX11IMData->statusWindow;
+         XFreeGC(awt_display, sw->lightGC);
+@@ -473,7 +473,7 @@ awt_x11inputmethod_lookupString(XKeyPres
+     pX11IMData = getX11InputMethodData(env, currentX11InputMethodInstance);
+ 
+     if (pX11IMData == NULL) {
+-#if defined(__linux__) || defined(MACOSX)
++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__)
+         return False;
+ #else
+         return result;
+@@ -481,7 +481,7 @@ awt_x11inputmethod_lookupString(XKeyPres
+     }
+ 
+     if ((ic = pX11IMData->current_ic) == (XIC)0){
+-#if defined(__linux__) || defined(MACOSX)
++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__)
+         return False;
+ #else
+         return result;
+@@ -573,7 +573,7 @@ awt_x11inputmethod_lookupString(XKeyPres
+     return result;
+ }
+ 
+-#if defined(__linux__) || defined(MACOSX)
++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__)
+ static StatusWindow *createStatusWindow(
+                                 Window parent) {
+     StatusWindow *statusWindow;
+@@ -886,7 +886,7 @@ static void adjustStatusWindow(Window sh
+         }
+     }
+ }
+-#endif  /* __linux__ || MACOSX */
++#endif  /* __linux__ || MACOSX || __GLIBC__ */
+ /*
+  * Creates two XICs, one for active clients and the other for passive
+  * clients. All information on those XICs are stored in the
+@@ -929,7 +929,7 @@ createXIC(JNIEnv * env, X11InputMethodDa
+         return FALSE ;
+     }
+ 
+-#if defined(__linux__) || defined(MACOSX)
++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__)
+     on_the_spot_styles |= XIMStatusNothing;
+ 
+     /*kinput does not support XIMPreeditCallbacks and XIMStatusArea
+@@ -942,9 +942,9 @@ createXIC(JNIEnv * env, X11InputMethodDa
+             break;
+         }
+     }
+-#else /*! __linux__ && !MACOSX */
++#else /*! __linux__ && !MACOSX && !__GLIBC__ */
+     on_the_spot_styles |= XIMStatusNothing;
+-#endif /* __linux__ || MACOSX */
++#endif /* __linux__ || MACOSX || __GLIBC__ */
+ 
+     for (i = 0; i < im_styles->count_styles; i++) {
+         active_styles |= im_styles->supported_styles[i] & on_the_spot_styles;
+@@ -998,7 +998,7 @@ createXIC(JNIEnv * env, X11InputMethodDa
+                         NULL);
+         if (preedit == (XVaNestedList)NULL)
+             goto err;
+-#if defined(__linux__) || defined(MACOSX)
++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__)
+         /*always try XIMStatusCallbacks for active client...*/
+         {
+             status = (XVaNestedList)XVaCreateNestedList(0,
+@@ -1020,7 +1020,7 @@ createXIC(JNIEnv * env, X11InputMethodDa
+             XFree((void *)status);
+             XFree((void *)preedit);
+         }
+-#else /* !__linux__ && !MACOSX */
++#else /* !__linux__ && !MACOSX && !__GLIBC__ */
+             pX11IMData->ic_active = XCreateIC(X11im,
+                                               XNClientWindow, w,
+                                               XNFocusWindow, w,
+@@ -1028,7 +1028,7 @@ createXIC(JNIEnv * env, X11InputMethodDa
+                                               XNPreeditAttributes, preedit,
+                                               NULL);
+         XFree((void *)preedit);
+-#endif /* __linux__ || MACOSX */
++#endif /* __linux__ || MACOSX || __GLIBC__ */
+     } else {
+         pX11IMData->ic_active = XCreateIC(X11im,
+                                           XNClientWindow, w,
+@@ -1188,7 +1188,7 @@ PreeditCaretCallback(XIC ic, XPointer cl
+ 
+ }
+ 
+-#if defined(__linux__) || defined(MACOSX)
++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__)
+ static void
+ StatusStartCallback(XIC ic, XPointer client_data, XPointer call_data)
+ {
+@@ -1256,7 +1256,7 @@ StatusDrawCallback(XIC ic, XPointer clie
+  finally:
+     AWT_UNLOCK();
+ }
+-#endif /* __linux__ || MACOSX */
++#endif /* __linux__ || MACOSX || __GLIBC__ */
+ 
+ static void CommitStringCallback(XIC ic, XPointer client_data, XPointer call_data) {
+     JNIEnv *env = GetJNIEnv();
+@@ -1353,14 +1353,14 @@ Java_sun_awt_X11_XInputMethod_openXIMNat
+ /* Use IMInstantiate call back only on Linux, as there is a bug in Solaris
+    (4768335)
+ */
+-#if defined(__linux__) || defined(MACOSX)
++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__)
+     registered = XRegisterIMInstantiateCallback(dpy, NULL, NULL,
+                      NULL, (XIDProc)OpenXIMCallback, NULL);
+     if (!registered) {
+         /* directly call openXIM callback */
+ #endif
+         OpenXIMCallback(dpy, NULL, NULL);
+-#if defined(__linux__) || defined(MACOSX)
++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__)
+     }
+ #endif
+ 
+@@ -1395,9 +1395,9 @@ Java_sun_awt_X11_XInputMethod_createXICN
+ 
+     globalRef = (*env)->NewGlobalRef(env, this);
+     pX11IMData->x11inputmethod = globalRef;
+-#if defined(__linux__) || defined(MACOSX)
++#if defined(__linux__) || defined(MACOSX)  || defined(__GLIBC__)
+     pX11IMData->statusWindow = NULL;
+-#endif /* __linux__ || MACOSX */
++#endif /* __linux__ || MACOSX || __GLIBC__ */
+ 
+     pX11IMData->lookup_buf = 0;
+     pX11IMData->lookup_buf_len = 0;
+@@ -1447,14 +1447,14 @@ Java_sun_awt_X11_XInputMethod_setXICFocu
+         setXICFocus(pX11IMData->current_ic, req);
+         currentX11InputMethodInstance = pX11IMData->x11inputmethod;
+         currentFocusWindow =  w;
+-#if defined(__linux__) || defined(MACOSX)
++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__)
+         if (active && pX11IMData->statusWindow && pX11IMData->statusWindow->on)
+             onoffStatusWindow(pX11IMData, w, True);
+ #endif
+     } else {
+         currentX11InputMethodInstance = NULL;
+         currentFocusWindow = 0;
+-#if defined(__linux__) || defined(MACOSX)
++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__)
+         onoffStatusWindow(pX11IMData, 0, False);
+         if (pX11IMData->current_ic != NULL)
+ #endif
+@@ -1471,7 +1471,7 @@ JNIEXPORT void JNICALL
+ Java_sun_awt_X11InputMethod_turnoffStatusWindow(JNIEnv *env,
+                                                 jobject this)
+ {
+-#if defined(__linux__) || defined(MACOSX)
++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__)
+     X11InputMethodData *pX11IMData;
+     StatusWindow *statusWindow;
+ 
+@@ -1639,7 +1639,7 @@ JNIEXPORT jboolean JNICALL Java_sun_awt_
+ JNIEXPORT void JNICALL Java_sun_awt_X11_XInputMethod_adjustStatusWindow
+   (JNIEnv *env, jobject this, jlong window)
+ {
+-#if defined(__linux__) || defined(MACOSX)
++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__)
+     AWT_LOCK();
+     adjustStatusWindow(window);
+     AWT_UNLOCK();
+Index: b/jdk/src/solaris/native/sun/awt/fontpath.c
+===================================================================
+--- a/jdk/src/solaris/native/sun/awt/fontpath.c
++++ b/jdk/src/solaris/native/sun/awt/fontpath.c
+@@ -23,9 +23,9 @@
+  * questions.
+  */
+ 
+-#if defined(__linux__)
++#if defined(__linux__) || defined(__GLIBC__)
+ #include <string.h>
+-#endif /* __linux__ */
++#endif /* __linux__ || __GLIBC__ */
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <strings.h>
+Index: b/jdk/src/solaris/native/sun/awt/awt_Robot.c
+===================================================================
+--- a/jdk/src/solaris/native/sun/awt/awt_Robot.c
++++ b/jdk/src/solaris/native/sun/awt/awt_Robot.c
+@@ -45,7 +45,7 @@
+ #include "wsutils.h"
+ #include "list.h"
+ #include "multiVis.h"
+-#if defined(__linux__) || defined(MACOSX)
++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__)
+ #include <sys/socket.h>
+ #endif
+ 
+Index: b/jdk/src/solaris/native/sun/java2d/j2d_md.h
+===================================================================
+--- a/jdk/src/solaris/native/sun/java2d/j2d_md.h
++++ b/jdk/src/solaris/native/sun/java2d/j2d_md.h
+@@ -30,7 +30,8 @@
+ /*
+  * Linux and MACOSX's version of <sys/types.h> does not define intptr_t
+  */
+-#if defined(__linux__) || defined(MACOSX)
++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__)
++
+ #include <stdint.h>
+ #endif /* __linux__ || MACOSX */
+ 
+Index: b/jdk/src/solaris/native/sun/java2d/loops/vis_FuncArray.c
+===================================================================
+--- a/jdk/src/solaris/native/sun/java2d/loops/vis_FuncArray.c
++++ b/jdk/src/solaris/native/sun/java2d/loops/vis_FuncArray.c
+@@ -804,7 +804,7 @@ static AnyFunc* hash_table_vis[HASH_SIZE
+ static int initialized;
+ static int usevis = JNI_TRUE;
+ 
+-#if defined(__linux__) || defined(MACOSX)
++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__)
+ #   define ULTRA_CHIP   "sparc64"
+ #else
+ #   define ULTRA_CHIP   "sun4u"
+Index: b/jdk/src/solaris/native/sun/net/dns/ResolverConfigurationImpl.c
+===================================================================
+--- a/jdk/src/solaris/native/sun/net/dns/ResolverConfigurationImpl.c
++++ b/jdk/src/solaris/native/sun/net/dns/ResolverConfigurationImpl.c
+@@ -33,7 +33,7 @@
+ #include <strings.h>
+ #endif
+ 
+-#if defined(__linux__) || defined(_ALLBSD_SOURCE)
++#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined(__GLIBC__)
+ #include <string.h>
+ #endif
+ 
+Index: b/jdk/src/solaris/native/sun/net/spi/DefaultProxySelector.c
+===================================================================
+--- a/jdk/src/solaris/native/sun/net/spi/DefaultProxySelector.c
++++ b/jdk/src/solaris/native/sun/net/spi/DefaultProxySelector.c
+@@ -32,7 +32,7 @@
+ #include <dlfcn.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+-#if defined(__linux__) || defined(_ALLBSD_SOURCE)
++#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined(__GLIBC__)
+ #include <string.h>
+ #else
+ #include <strings.h>
+Index: b/jdk/src/solaris/native/sun/xawt/XToolkit.c
+===================================================================
+--- a/jdk/src/solaris/native/sun/xawt/XToolkit.c
++++ b/jdk/src/solaris/native/sun/xawt/XToolkit.c
+@@ -27,7 +27,7 @@
+ #include <X11/Xutil.h>
+ #include <X11/Xos.h>
+ #include <X11/Xatom.h>
+-#ifdef __linux__
++#if defined(__linux__) || defined(__GLIBC__)
+ #include <execinfo.h>
+ #endif
+ 
+@@ -799,7 +799,7 @@ JNIEXPORT jstring JNICALL Java_sun_awt_X
+     return ret;
+ }
+ 
+-#ifdef __linux__
++#if defined(__linux__) || defined(__GLIBC__)
+ void print_stack(void)
+ {
+   void *array[10];
+Index: b/jdk/src/solaris/native/java/nio/MappedByteBuffer.c
+===================================================================
+--- a/jdk/src/solaris/native/java/nio/MappedByteBuffer.c
++++ b/jdk/src/solaris/native/java/nio/MappedByteBuffer.c
+@@ -40,7 +40,7 @@ Java_java_nio_MappedByteBuffer_isLoaded0
+     int result = 0;
+     int i = 0;
+     void *a = (void *) jlong_to_ptr(address);
+-#ifdef __linux__
++#if defined(__linux__) || defined(__GLIBC__)
+     unsigned char *vec = (unsigned char *)malloc(numPages * sizeof(char));
+ #else
+     char *vec = (char *)malloc(numPages * sizeof(char));
+Index: b/jdk/src/solaris/native/java/util/TimeZone_md.c
+===================================================================
+--- a/jdk/src/solaris/native/java/util/TimeZone_md.c
++++ b/jdk/src/solaris/native/java/util/TimeZone_md.c
+@@ -55,7 +55,7 @@
+ #define fileclose       fclose
+ #endif
+ 
+-#if defined(__linux__) || defined(_ALLBSD_SOURCE)
++#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined(__GLIBC__)
+ static const char *ETC_TIMEZONE_FILE = "/etc/timezone";
+ static const char *ZONEINFO_DIR = "/usr/share/zoneinfo";
+ static const char *DEFAULT_ZONEINFO_FILE = "/etc/localtime";
+@@ -69,7 +69,7 @@ static const char *DEFAULT_ZONEINFO_FILE
+ static const char *ETC_ENVIRONMENT_FILE = "/etc/environment";
+ #endif
+ 
+-#if defined(__linux__) || defined(MACOSX) || defined(__solaris__)
++#if defined(__linux__) || defined(MACOSX) || defined(__solaris__) || defined(__GLIBC__)
+ 
+ /*
+  * Returns a pointer to the zone ID portion of the given zoneinfo file
+@@ -215,7 +215,7 @@ findZoneinfoFile(char *buf, size_t size,
+     return tz;
+ }
+ 
+-#if defined(__linux__) || defined(MACOSX)
++#if defined(__linux__) || defined(MACOSX) || defined(__GLIBC__)
+ 
+ /*
+  * Performs Linux specific mapping and returns a zone ID
+@@ -231,7 +231,7 @@ getPlatformTimeZoneID()
+     char *buf;
+     size_t size;
+ 
+-#if defined(__linux__)
++#ifdef __linux__ || defined(__GLIBC__)
+     /*
+      * Try reading the /etc/timezone file for Debian distros. There's
+      * no spec of the file format available. This parsing assumes that
+@@ -771,7 +771,7 @@ findJavaTZ_md(const char *java_home_dir)
+         if (*tz == ':') {
+             tz++;
+         }
+-#if defined(__linux__)
++#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined(__GLIBC__)
+         /* Ignore "posix/" prefix on Linux. */
+         if (strncmp(tz, "posix/", 6) == 0) {
+             tz += 6;
+Index: b/jdk/src/solaris/native/java/io/io_util_md.c
+===================================================================
+--- a/jdk/src/solaris/native/java/io/io_util_md.c
++++ b/jdk/src/solaris/native/java/io/io_util_md.c
+@@ -99,7 +99,7 @@ fileOpen(JNIEnv *env, jobject this, jstr
+     WITH_PLATFORM_STRING(env, path, ps) {
+         FD fd;
+ 
+-#if defined(__linux__) || defined(_ALLBSD_SOURCE)
++#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined(__GLIBC__)
+         /* Remove trailing slashes, since the kernel won't */
+         char *p = (char *)ps + strlen(ps) - 1;
+         while ((p > ps) && (*p == '/'))
+Index: b/jdk/src/solaris/native/java/lang/locale_str.h
+===================================================================
+--- a/jdk/src/solaris/native/java/lang/locale_str.h
++++ b/jdk/src/solaris/native/java/lang/locale_str.h
+@@ -48,7 +48,7 @@
+     "gl", "gl_ES",
+     "he", "iw_IL",
+     "hr", "hr_HR",
+-#ifdef __linux__
++#if defined(__linux__) || defined(__GLIBC__)
+     "hs", "en_US", // used on Linux, not clear what it stands for
+ #endif
+     "hu", "hu_HU",
+@@ -78,14 +78,14 @@
+     "sv", "sv_SE",
+     "th", "th_TH",
+     "tr", "tr_TR",
+-#ifdef __linux__
++#if defined(__linux__) || defined(__GLIBC__)
+     "ua", "en_US", // used on Linux, not clear what it stands for
+ #endif
+     "uk", "uk_UA",
+     "vi", "vi_VN",
+     "wa", "wa_BE",
+     "zh", "zh_CN",
+-#ifdef __linux__
++#if defined(__linux__) || defined(__GLIBC__)
+     "bokmal", "nb_NO",
+     "bokm\xE5l", "nb_NO",
+     "catalan", "ca_ES",
+@@ -146,13 +146,13 @@ static char *language_names[] = {
+     "POSIX", "en",
+     "cz", "cs",
+     "he", "iw",
+-#ifdef __linux__
++#if defined(__linux__) || defined(__GLIBC__)
+     "hs", "en", // used on Linux, not clear what it stands for
+ #endif
+     "id", "in",
+     "sh", "sr", // sh is deprecated
+     "su", "fi",
+-#ifdef __linux__
++#if defined(__linux__) || defined(__GLIBC__)
+     "ua", "en", // used on Linux, not clear what it stands for
+     "catalan", "ca",
+     "croatian", "hr",
+@@ -195,7 +195,7 @@ static char *language_names[] = {
+  * Linux/Solaris script string to Java script name mapping table.
+  */
+ static char *script_names[] = {
+-#ifdef __linux__
++#if defined(__linux__) || defined(__GLIBC__)
+     "cyrillic", "Cyrl",
+     "devanagari", "Deva",
+     "iqtelif", "Latn",
+@@ -208,7 +208,7 @@ static char *script_names[] = {
+  * Linux/Solaris country string to ISO3166 string mapping table.
+  */
+ static char *country_names[] = {
+-#ifdef __linux__
++#if defined(__linux__) || defined(__GLIBC__)
+     "RN", "US", // used on Linux, not clear what it stands for
+ #endif
+     "YU", "CS", // YU has been removed from ISO 3166
+Index: b/jdk/src/solaris/native/java/lang/UNIXProcess_md.c
+===================================================================
+--- a/jdk/src/solaris/native/java/lang/UNIXProcess_md.c
++++ b/jdk/src/solaris/native/java/lang/UNIXProcess_md.c
+@@ -397,7 +397,7 @@ __attribute_noinline__
+ #ifdef START_CHILD_USE_CLONE
+ static pid_t
+ cloneChild(ChildStuff *c) {
+-#ifdef __linux__
++#if defined(__linux__) || defined(__GLIBC__)
+ #define START_CHILD_CLONE_STACK_SIZE (64 * 1024)
+     /*
+      * See clone(2).
+Index: b/jdk/src/solaris/native/java/lang/java_props_md.c
+===================================================================
+--- a/jdk/src/solaris/native/java/lang/java_props_md.c
++++ b/jdk/src/solaris/native/java/lang/java_props_md.c
+@@ -23,7 +23,7 @@
+  * questions.
+  */
+ 
+-#if defined(__linux__) || defined(_ALLBSD_SOURCE)
++#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined(__GLIBC__)
+ #include <stdio.h>
+ #include <ctype.h>
+ #endif
+@@ -57,7 +57,7 @@
+ #include "java_props.h"
+ 
+ #if !defined(_ALLBSD_SOURCE)
+-#ifdef __linux__
++#ifdef __linux__ || defined(__GLIBC__)
+   #ifndef CODESET
+   #define CODESET _NL_CTYPE_CODESET_NAME
+   #endif
+@@ -151,7 +151,7 @@ static int ParseLocale(JNIEnv* env, int
+     lc = setlocale(cat, NULL);
+ #endif
+ 
+-#ifndef __linux__
++#if !defined(__linux__) && !defined(__GLIBC__)
+     if (lc == NULL) {
+         return 0;
+     }
+@@ -331,7 +331,7 @@ static int ParseLocale(JNIEnv* env, int
+          * in order to use optimizations. */
+         *std_encoding = (*p != '\0') ? p : "ISO8859-1";
+ 
+-#ifdef __linux__
++#if defined(__linux__) || defined(__GLIBC__)
+         /*
+          * Remap the encoding string to a different value for japanese
+          * locales on linux so that customized converters are used instead
+@@ -559,7 +559,7 @@ GetJavaProperties(JNIEnv *env)
+      sprops.unicode_encoding = "UnicodeBig";
+  #endif
+ #else /* !_ALLBSD_SOURCE */
+-#ifdef __linux__
++#ifdef __linux__ || defined(__GLIBC__)
+ #if __BYTE_ORDER == __LITTLE_ENDIAN
+     sprops.unicode_encoding = "UnicodeLittle";
+ #else
+Index: b/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c
+===================================================================
+--- a/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c
++++ b/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c
+@@ -39,7 +39,7 @@
+ #define BSD_COMP
+ #endif
+ #endif
+-#ifdef __linux__
++#if defined(__linux__) || defined(__GLIBC__)
+ #include <unistd.h>
+ #include <sys/utsname.h>
+ #include <netinet/ip.h>
+@@ -299,7 +299,7 @@ Java_java_net_PlainDatagramSocketImpl_di
+     /* The fdObj'fd */
+     jint fd;
+ 
+-#if defined(__linux__) || defined(_ALLBSD_SOURCE)
++#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined(__GLIBC__)
+     SOCKADDR addr;
+     int len;
+ #endif
+@@ -309,19 +309,26 @@ Java_java_net_PlainDatagramSocketImpl_di
+     }
+     fd = (*env)->GetIntField(env, fdObj, IO_fd_fdID);
+ 
+-#if defined(__linux__) || defined(_ALLBSD_SOURCE)
++#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined(__GLIBC__)
+         memset(&addr, 0, sizeof(addr));
+ #ifdef AF_INET6
+         if (ipv6_available()) {
+             struct sockaddr_in6 *him6 = (struct sockaddr_in6 *)&addr;
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
++            him6->sin6_family = AF_INET6;
++#else
+             him6->sin6_family = AF_UNSPEC;
++#endif
+             len = sizeof(struct sockaddr_in6);
+         } else
+ #endif
+         {
+             struct sockaddr_in *him4 = (struct sockaddr_in*)&addr;
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+             him4->sin_family = AF_UNSPEC;
++#else
+             len = sizeof(struct sockaddr_in);
++#endif
+         }
+         JVM_Connect(fd, (struct sockaddr *)&addr, len);
+ 
+Index: b/jdk/src/solaris/native/java/net/Inet6AddressImpl.c
+===================================================================
+--- a/jdk/src/solaris/native/java/net/Inet6AddressImpl.c
++++ b/jdk/src/solaris/native/java/net/Inet6AddressImpl.c
+@@ -75,7 +75,7 @@ Java_java_net_Inet6AddressImpl_getLocalH
+     } else {
+         // ensure null-terminated
+         hostname[NI_MAXHOST] = '\0';
+-#if defined(__linux__) || defined(_ALLBSD_SOURCE)
++#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined(__GLIBC__)
+         /* On Linux/FreeBSD gethostname() says "host.domain.sun.com".  On
+          * Solaris gethostname() says "host", so extra work is needed.
+          */
+@@ -805,7 +805,7 @@ Java_java_net_Inet6AddressImpl_isReachab
+         case ENETUNREACH: /* Network Unreachable */
+         case EAFNOSUPPORT: /* Address Family not supported */
+         case EADDRNOTAVAIL: /* address is not available on  the  remote machine */
+-#ifdef __linux__
++#if defined(__linux__) || defined(__GLIBC__)
+         case EINVAL:
+         case EHOSTUNREACH:
+           /*
+Index: b/jdk/src/solaris/native/java/net/Inet4AddressImpl.c
+===================================================================
+--- a/jdk/src/solaris/native/java/net/Inet4AddressImpl.c
++++ b/jdk/src/solaris/native/java/net/Inet4AddressImpl.c
+@@ -645,7 +645,7 @@ ping4(JNIEnv *env, jint fd, struct socka
+       n = sendto(fd, sendbuf, plen, 0, (struct sockaddr *)him,
+                  sizeof(struct sockaddr));
+       if (n < 0 && errno != EINPROGRESS ) {
+-#ifdef __linux__
++#if defined(__linux__) || defined(__GLIBC__)
+         if (errno != EINVAL && errno != EHOSTUNREACH)
+           /*
+            * On some Linux versions, when a socket is bound to the loopback
+@@ -811,7 +811,7 @@ Java_java_net_Inet4AddressImpl_isReachab
+         case ENETUNREACH: /* Network Unreachable */
+         case EAFNOSUPPORT: /* Address Family not supported */
+         case EADDRNOTAVAIL: /* address is not available on  the  remote machine */
+-#ifdef __linux__
++#if defined(__linux__) || defined(__GLIBC__)
+         case EINVAL:
+         case EHOSTUNREACH:
+           /*
+Index: b/jdk/src/solaris/native/java/net/NetworkInterface.c
+===================================================================
+--- a/jdk/src/solaris/native/java/net/NetworkInterface.c
++++ b/jdk/src/solaris/native/java/net/NetworkInterface.c
+@@ -63,17 +63,17 @@
+ #define _PATH_PROCNET_IFINET6           "/proc/net/if_inet6"
+ #endif
+ 
+-#if defined(_ALLBSD_SOURCE)
++#if defined(_ALLBSD_SOURCE) || defined(__FreeBSD_kernel__)
+ #include <sys/param.h>
+ #include <sys/ioctl.h>
+ #include <sys/sockio.h>
+-#if defined(__APPLE__)
++#if defined(__APPLE__) || defined(__FreeBSD_kernel__)
+ #include <net/ethernet.h>
+ #include <net/if_var.h>
+ #include <net/if_dl.h>
+ #include <netinet/in_var.h>
+-#include <ifaddrs.h>
+ #endif
++#include <ifaddrs.h>
+ #endif
+ 
+ #include "jvm.h"
+@@ -1821,7 +1821,11 @@ static int getMacAddress(JNIEnv *env, in
+      * try the old way.
+      */
+     memset(&lif, 0, sizeof(lif));
++#if defined(__FreeBSD_kernel__)
++    strcpy(lif.lifr_name, ifname);
++#else
+     strlcpy(lif.lifr_name, ifname, sizeof(lif.lifr_name));
++#endif
+ 
+     if (ioctl(sock, SIOCGLIFHWADDR, &lif) != -1) {
+         struct sockaddr_dl *sp;
+@@ -1861,7 +1861,7 @@
+ 
+ 
+ /** BSD **/
+-#ifdef _ALLBSD_SOURCE
++#if defined(_ALLBSD_SOURCE) || defined(__FreeBSD_kernel__)
+ 
+ /*
+  * Opens a socket for further ioct calls. Tries AF_INET socket first and
+@@ -1976,6 +1976,10 @@
+             continue;
+ 
+         memset(&ifr6, 0, sizeof(ifr6));
++#if defined(__FreeBSD_kernel__)
++        strcpy(ifr6.ifr_name, ifa->ifa_name);
++#else
+         strlcpy(ifr6.ifr_name, ifa->ifa_name, sizeof(ifr6.ifr_name));
++#endif
+         memcpy(&ifr6.ifr_addr, ifa->ifa_addr,
+                MIN(sizeof(ifr6.ifr_addr), ifa->ifa_addr->sa_len));
+
+Index: b/jdk/src/solaris/native/java/net/net_util_md.c
+===================================================================
+--- a/jdk/src/solaris/native/java/net/net_util_md.c
++++ b/jdk/src/solaris/native/java/net/net_util_md.c
+@@ -56,6 +56,11 @@
+ #include <net/route.h>
+ #include <sys/utsname.h>
+ 
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
++#include <sys/param.h>
++#include <sys/sysctl.h>
++#endif
++
+ #ifndef IPV6_FLOWINFO_SEND
+ #define IPV6_FLOWINFO_SEND      33
+ #endif
+Index: b/jdk/src/solaris/native/java/net/PlainSocketImpl.c
+===================================================================
+--- a/jdk/src/solaris/native/java/net/PlainSocketImpl.c
++++ b/jdk/src/solaris/native/java/net/PlainSocketImpl.c
+@@ -32,7 +32,7 @@
+ #endif
+ #include <netinet/tcp.h>        /* Defines TCP_NODELAY, needed for 2.6 */
+ #include <netinet/in.h>
+-#ifdef __linux__
++#if defined(__linux__) || defined(__GLIBC__)
+ #include <netinet/ip.h>
+ #endif
+ #include <netdb.h>
+@@ -41,7 +41,7 @@
+ #ifdef __solaris__
+ #include <fcntl.h>
+ #endif
+-#ifdef __linux__
++#if defined(__linux__) || defined(__GLIBC__)
+ #include <unistd.h>
+ #endif
+ 
+@@ -467,7 +467,7 @@ Java_java_net_PlainSocketImpl_socketConn
+     /* report the appropriate exception */
+     if (connect_rv < 0) {
+ 
+-#ifdef __linux__
++#if defined(__linux__) || defined(__GLIBC__)
+         /*
+          * Linux/GNU distribution setup /etc/hosts so that
+          * InetAddress.getLocalHost gets back the loopback address
+Index: b/jdk/src/solaris/native/java/net/net_util_md.h
+===================================================================
+--- a/jdk/src/solaris/native/java/net/net_util_md.h
++++ b/jdk/src/solaris/native/java/net/net_util_md.h
+@@ -47,7 +47,7 @@
+    close subroutine does not return until the select call returns.
+    ...
+ */
+-#if defined(__linux__) || defined(MACOSX) || defined (_AIX)
++#if defined(__linux__) || defined(MACOSX) || defined (_AIX) || defined(__GLIBC__)
+ extern int NET_Timeout(int s, long timeout);
+ extern int NET_Read(int s, void* buf, size_t len);
+ extern int NET_RecvFrom(int s, void *buf, int len, unsigned int flags,
+@@ -179,7 +179,7 @@ extern jint NET_Wait(JNIEnv *env, jint f
+ /************************************************************************
+  *  Utilities
+  */
+-#ifdef __linux__
++#if defined(__linux__)
+ extern int kernelIsV24();
+ #endif
+ 
+Index: b/jdk/src/solaris/classes/sun/font/FcFontConfiguration.java
+===================================================================
+--- a/jdk/src/solaris/classes/sun/font/FcFontConfiguration.java
++++ b/jdk/src/solaris/classes/sun/font/FcFontConfiguration.java
+@@ -306,7 +306,7 @@ public class FcFontConfiguration extends
+ 
+         super.setOsNameAndVersion();
+ 
+-        if (!osName.equals("Linux")) {
++        if (!(osName.equals("Linux") || osName.equals("GNU/kFreeBSD"))) {
+             return;
+         }
+         try {
+Index: b/jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java
+===================================================================
+--- a/jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java
++++ b/jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java
+@@ -161,6 +161,7 @@ public class UnixPrintServiceLookup exte
+ 
+     static boolean isBSD() {
+         return (osname.equals("Linux") ||
++                osname.equals("GNU/kFreeBSD") ||
+                 osname.contains("OS X"));
+     }
+ 
+Index: b/jdk/src/solaris/classes/sun/nio/fs/LinuxFileStore.java
+===================================================================
+--- a/jdk/src/solaris/classes/sun/nio/fs/LinuxFileStore.java
++++ b/jdk/src/solaris/classes/sun/nio/fs/LinuxFileStore.java
+@@ -102,9 +102,7 @@ class LinuxFileStore
+                 LinuxNativeDispatcher.fgetxattr(fd, name, 0L, 0);
+                 return true;
+             } catch (UnixException e) {
+-                // attribute does not exist
+-                if (e.errno() == UnixConstants.ENODATA)
+-                    return true;
++                return false;
+             } finally {
+                 UnixNativeDispatcher.close(fd);
+             }
+Index: b/jdk/src/solaris/classes/sun/nio/fs/LinuxDosFileAttributeView.java
+===================================================================
+--- a/jdk/src/solaris/classes/sun/nio/fs/LinuxDosFileAttributeView.java
++++ b/jdk/src/solaris/classes/sun/nio/fs/LinuxDosFileAttributeView.java
+@@ -238,9 +238,6 @@ class LinuxDosFileAttributeView
+             }
+             throw new UnixException("Value of " + DOS_XATTR_NAME + " attribute is invalid");
+         } catch (UnixException x) {
+-            // default value when attribute does not exist
+-            if (x.errno() == ENODATA)
+-                return 0;
+             throw x;
+         } finally {
+             buffer.release();
+Index: b/jdk/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java
+===================================================================
+--- a/jdk/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java
++++ b/jdk/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java
+@@ -61,6 +61,8 @@ public class DefaultFileSystemProvider {
+             return createProvider("sun.nio.fs.SolarisFileSystemProvider");
+         if (osname.equals("Linux"))
+             return createProvider("sun.nio.fs.LinuxFileSystemProvider");
++        if (osname.equals("GNU/kFreeBSD"))
++            return createProvider("sun.nio.fs.BsdFileSystemProvider");
+         if (osname.contains("OS X"))
+             return createProvider("sun.nio.fs.MacOSXFileSystemProvider");
+         if (osname.equals("AIX"))
+Index: b/jdk/src/solaris/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java
+===================================================================
+--- a/jdk/src/solaris/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java
++++ b/jdk/src/solaris/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java
+@@ -64,7 +64,7 @@ public class DefaultAsynchronousChannelP
+             .doPrivileged(new GetPropertyAction("os.name"));
+         if (osname.equals("SunOS"))
+             return createProvider("sun.nio.ch.SolarisAsynchronousChannelProvider");
+-        if (osname.equals("Linux"))
++        if (osname.equals("Linux") || osname.equals("GNU/kFreeBSD"))
+             return createProvider("sun.nio.ch.LinuxAsynchronousChannelProvider");
+         if (osname.contains("OS X"))
+             return createProvider("sun.nio.ch.BsdAsynchronousChannelProvider");
+Index: b/jdk/src/solaris/classes/sun/awt/X11/XScrollbarPeer.java
+===================================================================
+--- a/jdk/src/solaris/classes/sun/awt/X11/XScrollbarPeer.java
++++ b/jdk/src/solaris/classes/sun/awt/X11/XScrollbarPeer.java
+@@ -74,7 +74,7 @@ class XScrollbarPeer extends XComponentP
+      * Currently uses hardcoded values
+      */
+     private int getDefaultDimension() {
+-        if (System.getProperty("os.name").equals("Linux")) {
++        if (System.getProperty("os.name").equals("Linux") || System.getProperty("os.name").equals("GNU/kFreeBSD")) {
+             return DEFAULT_WIDTH_LINUX;
+         } else {
+             return DEFAULT_WIDTH_SOLARIS;
+Index: b/jdk/src/share/native/java/lang/fdlibm/include/jfdlibm.h
+===================================================================
+--- a/jdk/src/share/native/java/lang/fdlibm/include/jfdlibm.h
++++ b/jdk/src/share/native/java/lang/fdlibm/include/jfdlibm.h
+@@ -61,7 +61,7 @@
+ #define log1p   jlog1p
+ #define expm1   jexpm1
+ 
+-#if defined(__linux__) || defined(_ALLBSD_SOURCE)
++#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined(__GLIBC__)
+ #define __ieee754_sqrt          __j__ieee754_sqrt
+ #define __ieee754_acos          __j__ieee754_acos
+ #define __ieee754_log           __j__ieee754_log
+Index: b/jdk/src/share/classes/sun/font/FontUtilities.java
+===================================================================
+--- a/jdk/src/share/classes/sun/font/FontUtilities.java
++++ b/jdk/src/share/classes/sun/font/FontUtilities.java
+@@ -76,7 +76,7 @@ public final class FontUtilities {
+                 String osName = System.getProperty("os.name", "unknownOS");
+                 isSolaris = osName.startsWith("SunOS");
+ 
+-                isLinux = osName.startsWith("Linux");
++                isLinux = osName.startsWith("Linux") || osName.equals("GNU/kFreeBSD");
+ 
+                 isMacOSX = osName.contains("OS X"); // TODO: MacOSX
+ 
+Index: b/jdk/src/share/classes/sun/print/PSPrinterJob.java
+===================================================================
+--- a/jdk/src/share/classes/sun/print/PSPrinterJob.java
++++ b/jdk/src/share/classes/sun/print/PSPrinterJob.java
+@@ -1587,7 +1587,9 @@ public class PSPrinterJob extends Raster
+         }
+ 
+        String osname = System.getProperty("os.name");
+-       if (osname.equals("Linux") || osname.contains("OS X")) {
++       if (osname.equals("Linux") ||
++           osname.equals("GNU/kFreeBSD") ||
++           osname.contains("OS X")) {
+             execCmd = new String[ncomps];
+             execCmd[n++] = "/usr/bin/lpr";
+             if ((pFlags & PRINTER) != 0) {
+Index: b/jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java
+===================================================================
+--- a/jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java
++++ b/jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java
+@@ -1306,6 +1306,7 @@ public class ExtendedCharsets
+         String osName = AccessController.doPrivileged(
+             new GetPropertyAction("os.name"));
+         if ("SunOS".equals(osName) || "Linux".equals(osName) || "AIX".equals(osName)
++               || "GNU/kFreeBSD".equals(osName)
+                || osName.contains("OS X")) {
+             charset("x-COMPOUND_TEXT", "COMPOUND_TEXT",
+                     new String[] {
+Index: b/jdk/src/share/classes/sun/security/jgss/GSSManagerImpl.java
+===================================================================
+--- a/jdk/src/share/classes/sun/security/jgss/GSSManagerImpl.java
++++ b/jdk/src/share/classes/sun/security/jgss/GSSManagerImpl.java
+@@ -49,6 +49,7 @@ public class GSSManagerImpl extends GSSM
+                             String osname = System.getProperty("os.name");
+                             if (osname.startsWith("SunOS") ||
+                                 osname.contains("OS X") ||
++                                osname.startsWith("GNU/kFreeBSD") ||
+                                 osname.startsWith("Linux")) {
+                                 return new Boolean(System.getProperty
+                                     (USE_NATIVE_PROP));
+Index: b/jdk/src/solaris/native/sun/net/portconfig.c
+===================================================================
+--- a/jdk/src/solaris/native/sun/net/portconfig.c
++++ b/jdk/src/solaris/native/sun/net/portconfig.c
+@@ -28,7 +28,7 @@
+ #include <unistd.h>
+ #include <errno.h>
+ 
+-#if defined(_ALLBSD_SOURCE)
++#if defined(_ALLBSD_SOURCE) || defined (__FreeBSD_kernel__)
+ #include <sys/sysctl.h>
+ #endif
+ 
+@@ -67,7 +67,7 @@ static int getPortRange(struct portrange
+         range->lower = net_getParam("/dev/tcp", "tcp_smallest_anon_port");
+         return 0;
+     }
+-#elif defined(_ALLBSD_SOURCE)
++#elif defined(_ALLBSD_SOURCE) || defined (__FreeBSD_kernel__)
+     {
+         int ret;
+         size_t size = sizeof(range->lower);
+Index: b/jdk/src/solaris/classes/sun/net/PortConfig.java
+===================================================================
+--- a/jdk/src/solaris/classes/sun/net/PortConfig.java
++++ b/jdk/src/solaris/classes/sun/net/PortConfig.java
+@@ -63,6 +63,9 @@ public final class PortConfig {
+                         // /usr/sbin/no -a | fgrep ephemeral
+                         defaultLower = 32768;
+                         defaultUpper = 65535;
++                    } else if (os.contains("FreeBSD")) {
++                        defaultLower = 10000;
++                        defaultUpper = 65535;
+                     } else {
+                         throw new InternalError(
+                             "sun.net.PortConfig: unknown OS");
+Index: b/jdk/src/share/classes/java/awt/GraphicsEnvironment.java
+===================================================================
+--- a/jdk/src/share/classes/java/awt/GraphicsEnvironment.java
++++ b/jdk/src/share/classes/java/awt/GraphicsEnvironment.java
+@@ -180,6 +180,7 @@ public abstract class GraphicsEnvironmen
+                                 ("Linux".equals(osName) ||
+                                  "SunOS".equals(osName) ||
+                                  "FreeBSD".equals(osName) ||
++                                 "GNU/kFreeBSD".equals(osName) ||
+                                  "NetBSD".equals(osName) ||
+                                  "OpenBSD".equals(osName) ||
+                                  "AIX".equals(osName)) &&
+Index: b/jdk/make/mapfiles/libattach/mapfile-bsd
+===================================================================
+--- /dev/null
++++ b/jdk/make/mapfiles/libattach/mapfile-bsd
+@@ -0,0 +1,41 @@
++#
++# Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++#
++# This code is free software; you can redistribute it and/or modify it
++# under the terms of the GNU General Public License version 2 only, as
++# published by the Free Software Foundation.  Oracle designates this
++# particular file as subject to the "Classpath" exception as provided
++# by Oracle in the LICENSE file that accompanied this code.
++#
++# This code is distributed in the hope that it will be useful, but WITHOUT
++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++# version 2 for more details (a copy is included in the LICENSE file that
++# accompanied this code).
++#
++# You should have received a copy of the GNU General Public License version
++# 2 along with this work; if not, write to the Free Software Foundation,
++# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++#
++# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++# or visit www.oracle.com if you need additional information or have any
++# questions.
++#
++
++# Define public interface.
++
++SUNWprivate_1.1 {
++	global:
++	    Java_sun_tools_attach_BsdVirtualMachine_checkPermissions;
++	    Java_sun_tools_attach_BsdVirtualMachine_close;
++	    Java_sun_tools_attach_BsdVirtualMachine_connect;
++	    Java_sun_tools_attach_BsdVirtualMachine_createAttachFile;
++	    Java_sun_tools_attach_BsdVirtualMachine_getTempDir;
++	    Java_sun_tools_attach_BsdVirtualMachine_sendQuitTo;
++	    Java_sun_tools_attach_BsdVirtualMachine_socket;
++	    Java_sun_tools_attach_BsdVirtualMachine_read;
++	    Java_sun_tools_attach_BsdVirtualMachine_write;
++	local:
++		*;
++};
+Index: b/jdk/make/lib/ServiceabilityLibraries.gmk
+===================================================================
+--- a/jdk/make/lib/ServiceabilityLibraries.gmk
++++ b/jdk/make/lib/ServiceabilityLibraries.gmk
+@@ -34,7 +34,7 @@ endif
+ ifneq ($(OPENJDK_TARGET_OS), linux)
+   LIBATTACH_EXCLUDE_FILES += LinuxVirtualMachine.c
+ endif
+-ifneq ($(OPENJDK_TARGET_OS), macosx)
++ifeq (,$(findstring $(OPENJDK_TARGET_OS), bsd macosx))
+   LIBATTACH_EXCLUDE_FILES += BsdVirtualMachine.c
+ endif
+ ifneq ($(OPENJDK_TARGET_OS),aix)
+@@ -160,6 +160,7 @@ $(eval $(call SetupNativeCompilation,BUI
+     LDFLAGS := $(LDFLAGS_JDKLIB) \
+         $(call SET_SHARED_LIBRARY_ORIGIN), \
+     LDFLAGS_SUFFIX_linux := $(LIBDL), \
++    LDFLAGS_SUFFIX_bsd := $(LIBDL), \
+     LDFLAGS_SUFFIX_solaris := $(LIBDL) -lc, \
+     LDFLAGS_SUFFIX_windows := $(LDFLAGS_JDKLIB_SUFFIX), \
+     VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \
+@@ -189,6 +190,7 @@ $(eval $(call SetupNativeCompilation,BUI
+     LDFLAGS := $(LDFLAGS_JDKLIB) \
+         $(call SET_SHARED_LIBRARY_ORIGIN), \
+     LDFLAGS_SUFFIX_linux := $(LIBDL), \
++    LDFLAGS_SUFFIX_bsd := $(LIBDL), \
+     LDFLAGS_SUFFIX_windows := $(LDFLAGS_JDKLIB_SUFFIX) $(LIBDL), \
+     LDFLAGS_SUFFIX_macosx := $(LIBDL), \
+     LDFLAGS_SUFFIX_solaris := -lc, \
+@@ -260,6 +262,7 @@ $(eval $(call SetupNativeCompilation,BUI
+         $(call SET_SHARED_LIBRARY_ORIGIN) \
+         $(LIBINSTRUMENT_LDFLAGS), \
+     LDFLAGS_linux := $(call SET_SHARED_LIBRARY_ORIGIN,/jli), \
++    LDFLAGS_bsd := $(call SET_SHARED_LIBRARY_ORIGIN,/jli), \
+     LDFLAGS_solaris := $(call SET_SHARED_LIBRARY_ORIGIN,/jli), \
+     LDFLAGS_macosx := -Xlinker -all_load $(JDK_OUTPUTDIR)/objs/libjli_static.a \
+         -framework Cocoa -framework Security -framework ApplicationServices, \
+@@ -267,6 +270,7 @@ $(eval $(call SetupNativeCompilation,BUI
+     LDFLAGS_SUFFIX_macosx := -liconv $(LIBZ), \
+     LDFLAGS_SUFFIX_solaris := $(LIBZ) -L $(INSTALL_LIBRARIES_HERE)/jli -ljli $(LIBDL) -lc, \
+     LDFLAGS_SUFFIX_linux := $(LIBZ) -L $(INSTALL_LIBRARIES_HERE)/jli -ljli $(LIBDL), \
++    LDFLAGS_SUFFIX_bsd := $(LIBZ) -L $(INSTALL_LIBRARIES_HERE)/jli -ljli $(LIBDL), \
+     LDFLAGS_SUFFIX_aix := $(LIBZ) -L$(JDK_OUTPUTDIR)/objs -ljli_static $(LIBDL),\
+     VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \
+     RC_FLAGS := $(RC_FLAGS) \
+@@ -379,6 +383,7 @@ $(eval $(call SetupNativeCompilation,BUI
+         $(call SET_SHARED_LIBRARY_ORIGIN), \
+     LDFLAGS_windows := wsock32.lib winmm.lib advapi32.lib, \
+     LDFLAGS_SUFFIX_linux := $(LIBDL), \
++    LDFLAGS_SUFFIX_bsd := $(LIBDL), \
+     LDFLAGS_SUFFIX_macosx := $(LIBDL), \
+     LDFLAGS_SUFFIX_solaris := -lsocket -lnsl $(LIBDL) -lc, \
+     VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \
+Index: b/jdk/src/share/classes/sun/tools/attach/META-INF/services/com.sun.tools.attach.spi.AttachProvider
+===================================================================
+--- a/jdk/src/share/classes/sun/tools/attach/META-INF/services/com.sun.tools.attach.spi.AttachProvider
++++ b/jdk/src/share/classes/sun/tools/attach/META-INF/services/com.sun.tools.attach.spi.AttachProvider
+@@ -31,4 +31,5 @@
+ #[windows]sun.tools.attach.WindowsAttachProvider
+ #[linux]sun.tools.attach.LinuxAttachProvider
+ #[macosx]sun.tools.attach.BsdAttachProvider
++#[bsd]sun.tools.attach.BsdAttachProvider
+ #[aix]sun.tools.attach.AixAttachProvider
+Index: b/jdk/make/CompileJavaClasses.gmk
+===================================================================
+--- a/jdk/make/CompileJavaClasses.gmk
++++ b/jdk/make/CompileJavaClasses.gmk
+@@ -135,16 +135,22 @@ ifneq ($(OPENJDK_TARGET_OS), linux)
+ endif
+ 
+ ifneq ($(OPENJDK_TARGET_OS), macosx)
++  EXFILES += sun/nio/fs/MacOSXFileSystemProvider.java \
++      sun/nio/fs/MacOSXFileSystem.java \
++      sun/nio/fs/MacOSXNativeDispatcher.java
++endif
++
++ifeq (, $(filter $(OPENJDK_TARGET_OS), bsd macosx))
+   EXFILES += sun/nio/ch/BsdAsynchronousChannelProvider.java \
+       sun/nio/ch/KQueue.java \
++      sun/nio/ch/KQueueArrayWrapper.java \
+       sun/nio/ch/KQueuePort.java \
++      sun/nio/ch/KQueueSelectorImpl.java \
++      sun/nio/ch/KQueueSelectorProvider.java \
+       sun/nio/fs/BsdFileStore.java \
+       sun/nio/fs/BsdFileSystem.java \
+       sun/nio/fs/BsdFileSystemProvider.java \
+       sun/nio/fs/BsdNativeDispatcher.java \
+-      sun/nio/fs/MacOSXFileSystemProvider.java \
+-      sun/nio/fs/MacOSXFileSystem.java \
+-      sun/nio/fs/MacOSXNativeDispatcher.java \
+       sun/tools/attach/BsdAttachProvider.java \
+       sun/tools/attach/BsdVirtualMachine.java
+ endif
+Index: b/jdk/src/solaris/native/sun/management/OperatingSystemImpl.c
+===================================================================
+--- a/jdk/src/solaris/native/sun/management/OperatingSystemImpl.c
++++ b/jdk/src/solaris/native/sun/management/OperatingSystemImpl.c
+@@ -352,7 +352,13 @@ Java_sun_management_OperatingSystemImpl_
+     size_t rlen;
+ 
+     mib[0] = CTL_HW;
++#if defined (HW_MEMSIZE) // Apple
+     mib[1] = HW_MEMSIZE;
++#elif defined(HW_PHYSMEM) // Most of BSD
++    mib[1] = HW_PHYSMEM;
++#else
++    #error No ways to get physmem
++#endif
+     rlen = sizeof(result);
+     if (sysctl(mib, 2, &result, &rlen, NULL, 0) != 0) {
+         throw_internal_error(env, "sysctl failed");
+Index: b/jdk/make/lib/SoundLibraries.gmk
+===================================================================
+--- a/jdk/make/lib/SoundLibraries.gmk
++++ b/jdk/make/lib/SoundLibraries.gmk
+@@ -71,6 +71,11 @@ ifeq ($(OPENJDK_TARGET_OS), linux)
+   LIBJSOUND_CFLAGS += -DX_PLATFORM=X_LINUX
+ endif # OPENJDK_TARGET_OS linux
+ 
++ifeq ($(OPENJDK_TARGET_OS), bsd)
++  EXTRA_SOUND_JNI_LIBS += jsoundalsa
++  LIBJSOUND_CFLAGS += -DX_PLATFORM=X_BSD
++endif # OPENJDK_TARGET_OS bsd
++
+ ifeq ($(OPENJDK_TARGET_OS), aix)
+   LIBJSOUND_CFLAGS += -DX_PLATFORM=X_AIX
+ endif # OPENJDK_TARGET_OS aix
+Index: b/jdk/make/lib/CoreLibraries.gmk
+===================================================================
+--- a/jdk/make/lib/CoreLibraries.gmk
++++ b/jdk/make/lib/CoreLibraries.gmk
+@@ -199,6 +199,7 @@ $(eval $(call SetupNativeCompilation,BUI
+     LDFLAGS_SUFFIX_posix := -ljvm -lverify, \
+     LDFLAGS_SUFFIX_solaris := -lsocket -lnsl -lscf $(LIBDL) $(BUILD_LIBFDLIBM) -lc, \
+     LDFLAGS_SUFFIX_linux := $(LIBDL) $(BUILD_LIBFDLIBM), \
++    LDFLAGS_SUFFIX_bsd := $(LIBDL) $(BUILD_LIBFDLIBM), \
+     LDFLAGS_SUFFIX_aix := $(LIBDL) $(BUILD_LIBFDLIBM) -lm,\
+     LDFLAGS_SUFFIX_macosx := -L$(JDK_OUTPUTDIR)/objs/ -lfdlibm \
+         -framework CoreFoundation \
+@@ -268,6 +269,7 @@ $(eval $(call SetupNativeCompilation,BUI
+         -export:ZIP_ReadEntry -export:ZIP_GetNextEntry -export:ZIP_CRC32 jvm.lib \
+         $(WIN_JAVA_LIB), \
+     LDFLAGS_SUFFIX_linux := -ljvm -ljava $(LIBZ), \
++    LDFLAGS_SUFFIX_bsd := -ljvm -ljava $(LIBZ), \
+     LDFLAGS_SUFFIX_solaris := -ljvm -ljava $(LIBZ) -lc, \
+     LDFLAGS_SUFFIX_aix := -ljvm -ljava $(LIBZ),\
+     LDFLAGS_SUFFIX_macosx := $(LIBZ) -ljava -ljvm, \
+@@ -414,10 +416,12 @@ $(eval $(call SetupNativeCompilation,BUI
+     LDFLAGS := $(LDFLAGS_JDKLIB) \
+         $(call SET_SHARED_LIBRARY_ORIGIN), \
+     LDFLAGS_linux := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \
++    LDFLAGS_bsd := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \
+     LDFLAGS_solaris := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \
+     LDFLAGS_macosx := -framework Cocoa -framework Security -framework ApplicationServices, \
+     LDFLAGS_SUFFIX_solaris := $(LIBZ) $(LIBDL) -lc, \
+     LDFLAGS_SUFFIX_linux := $(LIBZ) $(LIBDL) -lc -lpthread, \
++    LDFLAGS_SUFFIX_bsd := $(LIBZ) $(LIBDL) -lc -pthread, \
+     LDFLAGS_SUFFIX_aix := $(LIBZ) $(LIBDL),\
+     LDFLAGS_SUFFIX_macosx := $(LIBZ), \
+     LDFLAGS_SUFFIX_windows := \
+Index: b/jdk/make/lib/NioLibraries.gmk
+===================================================================
+--- a/jdk/make/lib/NioLibraries.gmk
++++ b/jdk/make/lib/NioLibraries.gmk
+@@ -77,6 +77,24 @@ ifeq ($(OPENJDK_TARGET_OS), linux)
+       UnixNativeDispatcher.c
+ endif
+ 
++ifeq ($(OPENJDK_TARGET_OS), bsd)
++  BUILD_LIBNIO_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libnio/mapfile-$(OPENJDK_TARGET_OS)
++#  BUILD_LIBNIO_SRC += $(JDK_TOPDIR)/src/bsd/native/sun/nio/ch
++  BUILD_LIBNIO_FILES += \
++      BsdNativeDispatcher.c \
++      GnomeFileTypeDetector.c \
++      InheritedChannel.c \
++      KQueue.c \
++      KQueueArrayWrapper.c \
++      KQueuePort.c \
++      NativeThread.c \
++      PollArrayWrapper.c \
++      UnixAsynchronousServerSocketChannelImpl.c \
++      UnixAsynchronousSocketChannelImpl.c \
++      UnixCopyFile.c \
++      UnixNativeDispatcher.c
++endif
++
+ ifeq ($(OPENJDK_TARGET_OS), macosx)
+   BUILD_LIBNIO_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libnio/mapfile-$(OPENJDK_TARGET_OS)
+   BUILD_LIBNIO_SRC += $(JDK_TOPDIR)/src/macosx/native/sun/nio/ch
+@@ -143,6 +161,7 @@ $(eval $(call SetupNativeCompilation,BUI
+     LDFLAGS := $(LDFLAGS_JDKLIB) $(BUILD_LIBNIO_LDFLAGS) \
+         $(call SET_SHARED_LIBRARY_ORIGIN), \
+     LDFLAGS_SUFFIX_linux := -ljava -lnet -lpthread $(LIBDL), \
++    LDFLAGS_SUFFIX_bsd := -ljava -lnet -lpthread $(LIBDL), \
+     LDFLAGS_SUFFIX_aix := -ljava -lnet $(LIBDL),\
+     LDFLAGS_SUFFIX_solaris := -ljvm -lsocket -lposix4 $(LIBDL) \
+         -lsendfile -ljava -lnet -lc, \
+@@ -192,6 +211,7 @@ ifeq ($(OPENJDK_TARGET_OS_API), posix)
+         LDFLAGS := $(LDFLAGS_JDKLIB) \
+             $(call SET_SHARED_LIBRARY_ORIGIN), \
+         LDFLAGS_SUFFIX_linux := -lpthread $(LIBDL) -ljava -ljvm, \
++        LDFLAGS_SUFFIX_bsd := -lpthread $(LIBDL) -ljava -ljvm, \
+         LDFLAGS_SUFFIX_posix := -lnio -lnet, \
+         LDFLAGS_SUFFIX_solaris := -lsocket -ljava -ljvm -lc, \
+         LDFLAGS_SUFFIX_macosx := -ljava -ljvm, \
+Index: b/jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_PCM.c
+===================================================================
+--- a/jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_PCM.c
++++ b/jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_PCM.c
+@@ -675,6 +675,7 @@ int xrun_recovery(AlsaPcmInfo* info, int
+             return -1;
+         }
+         return 1;
++#ifdef __linux__
+     } else if (err == -ESTRPIPE) {
+         TRACE0("xrun_recovery: suspended.\n");
+         ret = snd_pcm_resume(info->handle);
+@@ -690,6 +691,7 @@ int xrun_recovery(AlsaPcmInfo* info, int
+             return -1;
+         }
+         return 1;
++#endif
+     } else if (err == -EAGAIN) {
+         TRACE0("xrun_recovery: EAGAIN try again flag.\n");
+         return 0;
+Index: b/jdk/make/CompileLaunchers.gmk
+===================================================================
+--- a/jdk/make/CompileLaunchers.gmk
++++ b/jdk/make/CompileLaunchers.gmk
+@@ -163,13 +163,13 @@ define SetupLauncher
+           -DLAUNCHER_NAME='"$(LAUNCHER_NAME)"' \
+           -DPROGNAME='"$1"' $(DPACKAGEPATH) \
+           $2, \
+-      CFLAGS_linux := -fPIC, \
++      CFLAGS_bsd := -fPIC, \
+       CFLAGS_solaris := -KPIC -DHAVE_GETHRTIME, \
+       LDFLAGS := $(LDFLAGS_JDKEXE) \
+           $(ORIGIN_ARG) \
+           $$($1_LDFLAGS), \
+       LDFLAGS_macosx := $(call SET_SHARED_LIBRARY_NAME,$1), \
+-      LDFLAGS_linux := -lpthread \
++      LDFLAGS_bsd := -lpthread \
+           $(call SET_SHARED_LIBRARY_NAME,$(LIBRARY_PREFIX)$(SHARED_LIBRARY_SUFFIX)), \
+       LDFLAGS_solaris := $$($1_LDFLAGS_solaris) \
+           $(call SET_SHARED_LIBRARY_NAME,$(LIBRARY_PREFIX)$(SHARED_LIBRARY_SUFFIX)), \
+@@ -178,7 +178,7 @@ define SetupLauncher
+       LDFLAGS_SUFFIX_posix := $4, \
+       LDFLAGS_SUFFIX_windows := $$($1_WINDOWS_JLI_LIB) \
+           $(JDK_OUTPUTDIR)/objs/libjava/java.lib advapi32.lib $5, \
+-      LDFLAGS_SUFFIX_linux := -L$(JDK_OUTPUTDIR)/lib$(OPENJDK_TARGET_CPU_LIBDIR)/jli -ljli $(LIBDL) -lc, \
++      LDFLAGS_SUFFIX_bsd := -L$(JDK_OUTPUTDIR)/lib$(OPENJDK_TARGET_CPU_LIBDIR)/jli -ljli $(LIBDL) -lc, \
+       LDFLAGS_SUFFIX_solaris := -L$(JDK_OUTPUTDIR)/lib$(OPENJDK_TARGET_CPU_LIBDIR)/jli -ljli -lthread $(LIBDL) -lc, \
+       OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/$1_objs$(OUTPUT_SUBDIR), \
+       OUTPUT_DIR := $$($1_OUTPUT_DIR_ARG)$(OUTPUT_SUBDIR), \
+@@ -538,7 +538,7 @@ ifeq ($(OPENJDK_TARGET_OS), solaris)
+   endif
+ endif
+ 
+-ifeq ($(OPENJDK_TARGET_OS), linux)
++ifneq ($(findstring $(OPENJDK_TARGET_OS), linux bsd), )
+   BUILD_JEXEC := 1
+ endif # OPENJDK_TARGET_OS
+ 
+@@ -554,7 +554,7 @@ ifeq ($(BUILD_JEXEC), 1)
+     BUILD_JEXEC_SRC := $(JDK_TOPDIR)/src/solaris/bin
+   endif
+ 
+-  ifeq ($(OPENJDK_TARGET_OS), linux)
++  ifneq ($(findstring $(OPENJDK_TARGET_OS), linux bsd), )
+     BUILD_JEXEC_DST_DIR := $(JDK_OUTPUTDIR)/lib
+     BUILD_JEXEC_INC += -I$(JDK_TOPDIR)/src/share/bin
+   endif
+@@ -590,7 +590,7 @@ endif
+ # The java-rmi.cgi script in bin/ only gets delivered in certain situations
+ #
+ JAVA_RMI_CGI := $(JDK_OUTPUTDIR)/bin$(OUTPUT_SUBDIR)/java-rmi.cgi
+-ifeq ($(OPENJDK_TARGET_OS), linux)
++ifneq ($(findstring $(OPENJDK_TARGET_OS), linux bsd), )
+   BUILD_LAUNCHERS += $(JAVA_RMI_CGI)
+ endif
+ ifeq ($(OPENJDK_TARGET_OS), solaris)
+@@ -621,11 +621,11 @@ BUILD_JSPAWNHELPER_DST_DIR := $(JDK_OUTP
+ LINK_JSPAWNHELPER_OBJECTS := $(JDK_OUTPUTDIR)/objs/libjava/childproc.o
+ LINK_JSPAWNHELPER_FLAGS :=
+ 
+-ifneq ($(findstring $(OPENJDK_TARGET_OS), macosx solaris aix), )
++ifneq ($(findstring $(OPENJDK_TARGET_OS), bsd macosx solaris aix), )
+   BUILD_JSPAWNHELPER := 1
+ endif
+ 
+-ifeq ($(OPENJDK_TARGET_OS), macosx)
++ifeq ($(OPENJDK_TARGET_OS), bsd macosx)
+   BUILD_JSPAWNHELPER_DST_DIR := $(JDK_OUTPUTDIR)/lib
+ endif
+ 
+Index: b/jdk/src/share/bin/jli_util.h
+===================================================================
+--- a/jdk/src/share/bin/jli_util.h
++++ b/jdk/src/share/bin/jli_util.h
+@@ -83,7 +83,7 @@ void JLI_CmdToArgs(char *cmdline);
+ #ifdef __solaris__
+ #define JLI_Lseek                       llseek
+ #endif
+-#ifdef __linux__
++#if defined(__linux__) || defined (__GLIBC__)
+ #define _LARGFILE64_SOURCE
+ #define JLI_Lseek                       lseek64
+ #endif
+Index: b/jdk/make/data/classlist/classlist.bsd
+===================================================================
+--- /dev/null
++++ b/jdk/make/data/classlist/classlist.bsd
+@@ -0,0 +1,2454 @@
++com/sun/java/swing/SwingUtilities3
++com/sun/java/swing/plaf/windows/WindowsTabbedPaneUI
++com/sun/swing/internal/plaf/basic/resources/basic
++com/sun/swing/internal/plaf/metal/resources/metal
++java/applet/Applet
++java/awt/AWTEvent
++java/awt/AWTEvent$1
++java/awt/AWTEventMulticaster
++java/awt/AWTKeyStroke
++java/awt/AWTKeyStroke$1
++java/awt/ActiveEvent
++java/awt/Adjustable
++java/awt/AlphaComposite
++java/awt/BasicStroke
++java/awt/BorderLayout
++java/awt/BufferCapabilities
++java/awt/Canvas
++java/awt/CardLayout
++java/awt/CardLayout$Card
++java/awt/Color
++java/awt/Component
++java/awt/Component$1
++java/awt/Component$3
++java/awt/Component$AWTTreeLock
++java/awt/Component$AccessibleAWTComponent
++java/awt/Component$BaselineResizeBehavior
++java/awt/Component$BltBufferStrategy
++java/awt/Component$BltSubRegionBufferStrategy
++java/awt/Component$DummyRequestFocusController
++java/awt/Component$FlipBufferStrategy
++java/awt/ComponentOrientation
++java/awt/Composite
++java/awt/Conditional
++java/awt/Container
++java/awt/Container$1
++java/awt/Container$AccessibleAWTContainer
++java/awt/ContainerOrderFocusTraversalPolicy
++java/awt/Cursor
++java/awt/Cursor$1
++java/awt/DefaultFocusTraversalPolicy
++java/awt/DefaultKeyboardFocusManager
++java/awt/DefaultKeyboardFocusManager$1
++java/awt/DefaultKeyboardFocusManager$DefaultKeyboardFocusManagerSentEvent
++java/awt/DefaultKeyboardFocusManager$TypeAheadMarker
++java/awt/Dialog
++java/awt/Dialog$ModalExclusionType
++java/awt/Dialog$ModalityType
++java/awt/Dimension
++java/awt/Event
++java/awt/EventDispatchThread
++java/awt/EventDispatchThread$1
++java/awt/EventDispatchThread$HierarchyEventFilter
++java/awt/EventFilter
++java/awt/EventFilter$FilterAction
++java/awt/EventQueue
++java/awt/EventQueue$1
++java/awt/EventQueue$1AWTInvocationLock
++java/awt/EventQueue$2
++java/awt/EventQueue$3
++java/awt/EventQueue$4
++java/awt/EventQueue$5
++java/awt/FlowLayout
++java/awt/FocusTraversalPolicy
++java/awt/Font
++java/awt/Font$FontAccessImpl
++java/awt/FontFormatException
++java/awt/FontMetrics
++java/awt/Frame
++java/awt/Frame$1
++java/awt/Graphics
++java/awt/Graphics2D
++java/awt/GraphicsCallback
++java/awt/GraphicsCallback$PaintCallback
++java/awt/GraphicsConfiguration
++java/awt/GraphicsDevice
++java/awt/GraphicsEnvironment
++java/awt/GraphicsEnvironment$1
++java/awt/GridLayout
++java/awt/Image
++java/awt/Image$1
++java/awt/ImageCapabilities
++java/awt/ImageMediaEntry
++java/awt/Insets
++java/awt/ItemSelectable
++java/awt/KeyEventDispatcher
++java/awt/KeyEventPostProcessor
++java/awt/KeyboardFocusManager
++java/awt/KeyboardFocusManager$1
++java/awt/KeyboardFocusManager$3
++java/awt/KeyboardFocusManager$HeavyweightFocusRequest
++java/awt/KeyboardFocusManager$LightweightFocusRequest
++java/awt/Label
++java/awt/LayoutManager
++java/awt/LayoutManager2
++java/awt/LightweightDispatcher
++java/awt/LightweightDispatcher$2
++java/awt/MediaEntry
++java/awt/MediaTracker
++java/awt/MenuBar
++java/awt/MenuComponent
++java/awt/MenuContainer
++java/awt/ModalEventFilter
++java/awt/Paint
++java/awt/Panel
++java/awt/Point
++java/awt/PrintGraphics
++java/awt/Queue
++java/awt/Rectangle
++java/awt/RenderingHints
++java/awt/RenderingHints$Key
++java/awt/SentEvent
++java/awt/SequencedEvent
++java/awt/SequencedEvent$1
++java/awt/Shape
++java/awt/SplashScreen
++java/awt/Stroke
++java/awt/SystemColor
++java/awt/Toolkit
++java/awt/Toolkit$1
++java/awt/Toolkit$2
++java/awt/Toolkit$3
++java/awt/Toolkit$4
++java/awt/Toolkit$5
++java/awt/Toolkit$DesktopPropertyChangeSupport
++java/awt/Toolkit$DesktopPropertyChangeSupport$1
++java/awt/Toolkit$SelectiveAWTEventListener
++java/awt/Toolkit$ToolkitEventMulticaster
++java/awt/Transparency
++java/awt/TrayIcon
++java/awt/VKCollection
++java/awt/Window
++java/awt/Window$1
++java/awt/Window$1DisposeAction
++java/awt/Window$Type
++java/awt/Window$WindowDisposerRecord
++java/awt/color/ColorSpace
++java/awt/color/ICC_ColorSpace
++java/awt/color/ICC_Profile
++java/awt/color/ICC_Profile$1
++java/awt/color/ICC_ProfileRGB
++java/awt/datatransfer/Clipboard
++java/awt/datatransfer/ClipboardOwner
++java/awt/datatransfer/FlavorMap
++java/awt/datatransfer/FlavorTable
++java/awt/datatransfer/SystemFlavorMap
++java/awt/datatransfer/Transferable
++java/awt/dnd/DropTarget
++java/awt/dnd/DropTargetContext
++java/awt/dnd/DropTargetListener
++java/awt/dnd/peer/DragSourceContextPeer
++java/awt/dnd/peer/DropTargetContextPeer
++java/awt/dnd/peer/DropTargetPeer
++java/awt/event/AWTEventListener
++java/awt/event/AWTEventListenerProxy
++java/awt/event/ActionEvent
++java/awt/event/ActionListener
++java/awt/event/AdjustmentEvent
++java/awt/event/AdjustmentListener
++java/awt/event/ComponentAdapter
++java/awt/event/ComponentEvent
++java/awt/event/ComponentListener
++java/awt/event/ContainerEvent
++java/awt/event/ContainerListener
++java/awt/event/FocusAdapter
++java/awt/event/FocusEvent
++java/awt/event/FocusListener
++java/awt/event/HierarchyBoundsListener
++java/awt/event/HierarchyListener
++java/awt/event/InputEvent
++java/awt/event/InputEvent$1
++java/awt/event/InputMethodEvent
++java/awt/event/InputMethodListener
++java/awt/event/InvocationEvent
++java/awt/event/InvocationEvent$1
++java/awt/event/ItemEvent
++java/awt/event/ItemListener
++java/awt/event/KeyAdapter
++java/awt/event/KeyEvent
++java/awt/event/KeyEvent$1
++java/awt/event/KeyListener
++java/awt/event/MouseAdapter
++java/awt/event/MouseEvent
++java/awt/event/MouseListener
++java/awt/event/MouseMotionAdapter
++java/awt/event/MouseMotionListener
++java/awt/event/MouseWheelListener
++java/awt/event/NativeLibLoader
++java/awt/event/NativeLibLoader$1
++java/awt/event/PaintEvent
++java/awt/event/TextListener
++java/awt/event/WindowAdapter
++java/awt/event/WindowEvent
++java/awt/event/WindowFocusListener
++java/awt/event/WindowListener
++java/awt/event/WindowStateListener
++java/awt/font/FontRenderContext
++java/awt/font/GlyphVector
++java/awt/font/LineMetrics
++java/awt/font/TextAttribute
++java/awt/geom/AffineTransform
++java/awt/geom/Dimension2D
++java/awt/geom/GeneralPath
++java/awt/geom/Line2D
++java/awt/geom/Line2D$Float
++java/awt/geom/Path2D
++java/awt/geom/Path2D$Float
++java/awt/geom/PathIterator
++java/awt/geom/Point2D
++java/awt/geom/Point2D$Float
++java/awt/geom/RectIterator
++java/awt/geom/Rectangle2D
++java/awt/geom/Rectangle2D$Float
++java/awt/geom/RectangularShape
++java/awt/im/InputContext
++java/awt/im/InputMethodRequests
++java/awt/im/spi/InputMethod
++java/awt/im/spi/InputMethodContext
++java/awt/im/spi/InputMethodDescriptor
++java/awt/image/BufferStrategy
++java/awt/image/BufferedImage
++java/awt/image/BufferedImage$1
++java/awt/image/ColorModel
++java/awt/image/ColorModel$1
++java/awt/image/ComponentSampleModel
++java/awt/image/DataBuffer
++java/awt/image/DataBuffer$1
++java/awt/image/DataBufferByte
++java/awt/image/DataBufferInt
++java/awt/image/DirectColorModel
++java/awt/image/FilteredImageSource
++java/awt/image/ImageConsumer
++java/awt/image/ImageFilter
++java/awt/image/ImageObserver
++java/awt/image/ImageProducer
++java/awt/image/IndexColorModel
++java/awt/image/PackedColorModel
++java/awt/image/PixelInterleavedSampleModel
++java/awt/image/RGBImageFilter
++java/awt/image/Raster
++java/awt/image/RenderedImage
++java/awt/image/SampleModel
++java/awt/image/SinglePixelPackedSampleModel
++java/awt/image/VolatileImage
++java/awt/image/WritableRaster
++java/awt/image/WritableRenderedImage
++java/awt/peer/CanvasPeer
++java/awt/peer/ComponentPeer
++java/awt/peer/ContainerPeer
++java/awt/peer/FramePeer
++java/awt/peer/KeyboardFocusManagerPeer
++java/awt/peer/LabelPeer
++java/awt/peer/LightweightPeer
++java/awt/peer/PanelPeer
++java/awt/peer/SystemTrayPeer
++java/awt/peer/WindowPeer
++java/awt/print/PrinterGraphics
++java/beans/ChangeListenerMap
++java/beans/PropertyChangeEvent
++java/beans/PropertyChangeListener
++java/beans/PropertyChangeListenerProxy
++java/beans/PropertyChangeSupport
++java/beans/PropertyChangeSupport$PropertyChangeListenerMap
++java/beans/VetoableChangeListener
++java/io/Bits
++java/io/BufferedInputStream
++java/io/BufferedOutputStream
++java/io/BufferedReader
++java/io/BufferedWriter
++java/io/ByteArrayInputStream
++java/io/ByteArrayOutputStream
++java/io/Closeable
++java/io/DataInput
++java/io/DataInputStream
++java/io/DataOutput
++java/io/DataOutputStream
++java/io/DefaultFileSystem
++java/io/EOFException
++java/io/ExpiringCache
++java/io/ExpiringCache$1
++java/io/ExpiringCache$Entry
++java/io/Externalizable
++java/io/File
++java/io/File$PathStatus
++java/io/FileDescriptor
++java/io/FileDescriptor$1
++java/io/FileInputStream
++java/io/FileInputStream$1
++java/io/FileNotFoundException
++java/io/FileOutputStream
++java/io/FileOutputStream$1
++java/io/FilePermission
++java/io/FilePermission$1
++java/io/FilePermissionCollection
++java/io/FileReader
++java/io/FileSystem
++java/io/FileWriter
++java/io/FilenameFilter
++java/io/FilterInputStream
++java/io/FilterOutputStream
++java/io/FilterReader
++java/io/Flushable
++java/io/IOException
++java/io/InputStream
++java/io/InputStreamReader
++java/io/InterruptedIOException
++java/io/ObjectInput
++java/io/ObjectInputStream
++java/io/ObjectInputStream$BlockDataInputStream
++java/io/ObjectInputStream$GetField
++java/io/ObjectInputStream$GetFieldImpl
++java/io/ObjectInputStream$HandleTable
++java/io/ObjectInputStream$HandleTable$HandleList
++java/io/ObjectInputStream$PeekInputStream
++java/io/ObjectInputStream$ValidationList
++java/io/ObjectOutput
++java/io/ObjectOutputStream
++java/io/ObjectOutputStream$BlockDataOutputStream
++java/io/ObjectOutputStream$HandleTable
++java/io/ObjectOutputStream$ReplaceTable
++java/io/ObjectStreamClass
++java/io/ObjectStreamClass$1
++java/io/ObjectStreamClass$2
++java/io/ObjectStreamClass$3
++java/io/ObjectStreamClass$4
++java/io/ObjectStreamClass$5
++java/io/ObjectStreamClass$Caches
++java/io/ObjectStreamClass$ClassDataSlot
++java/io/ObjectStreamClass$EntryFuture
++java/io/ObjectStreamClass$ExceptionInfo
++java/io/ObjectStreamClass$FieldReflector
++java/io/ObjectStreamClass$FieldReflectorKey
++java/io/ObjectStreamClass$MemberSignature
++java/io/ObjectStreamClass$WeakClassKey
++java/io/ObjectStreamConstants
++java/io/ObjectStreamField
++java/io/OutputStream
++java/io/OutputStreamWriter
++java/io/PrintStream
++java/io/PushbackInputStream
++java/io/RandomAccessFile
++java/io/RandomAccessFile$1
++java/io/Reader
++java/io/SerialCallbackContext
++java/io/Serializable
++java/io/StreamTokenizer
++java/io/StringReader
++java/io/StringWriter
++java/io/UnixFileSystem
++java/io/UnsupportedEncodingException
++java/io/Writer
++java/lang/AbstractStringBuilder
++java/lang/Appendable
++java/lang/ApplicationShutdownHooks
++java/lang/ApplicationShutdownHooks$1
++java/lang/ArithmeticException
++java/lang/ArrayIndexOutOfBoundsException
++java/lang/ArrayStoreException
++java/lang/AutoCloseable
++java/lang/Boolean
++java/lang/BootstrapMethodError
++java/lang/Byte
++java/lang/CharSequence
++java/lang/Character
++java/lang/Character$CharacterCache
++java/lang/CharacterData
++java/lang/CharacterData00
++java/lang/CharacterDataLatin1
++java/lang/Class
++java/lang/Class$1
++java/lang/Class$3
++java/lang/Class$4
++java/lang/Class$AnnotationData
++java/lang/Class$Atomic
++java/lang/Class$ReflectionData
++java/lang/ClassCastException
++java/lang/ClassFormatError
++java/lang/ClassLoader
++java/lang/ClassLoader$2
++java/lang/ClassLoader$3
++java/lang/ClassLoader$NativeLibrary
++java/lang/ClassLoader$ParallelLoaders
++java/lang/ClassNotFoundException
++java/lang/ClassValue$ClassValueMap
++java/lang/CloneNotSupportedException
++java/lang/Cloneable
++java/lang/Comparable
++java/lang/Compiler
++java/lang/Compiler$1
++java/lang/Double
++java/lang/Enum
++java/lang/Error
++java/lang/Exception
++java/lang/ExceptionInInitializerError
++java/lang/Float
++java/lang/IllegalAccessError
++java/lang/IllegalAccessException
++java/lang/IllegalArgumentException
++java/lang/IllegalMonitorStateException
++java/lang/IllegalStateException
++java/lang/IncompatibleClassChangeError
++java/lang/IndexOutOfBoundsException
++java/lang/InheritableThreadLocal
++java/lang/InstantiationException
++java/lang/Integer
++java/lang/Integer$IntegerCache
++java/lang/InternalError
++java/lang/InterruptedException
++java/lang/Iterable
++java/lang/LinkageError
++java/lang/Long
++java/lang/Long$LongCache
++java/lang/Math
++java/lang/NoClassDefFoundError
++java/lang/NoSuchFieldException
++java/lang/NoSuchMethodError
++java/lang/NoSuchMethodException
++java/lang/NullPointerException
++java/lang/Number
++java/lang/NumberFormatException
++java/lang/Object
++java/lang/OutOfMemoryError
++java/lang/Package
++java/lang/Process
++java/lang/ProcessBuilder
++java/lang/ProcessBuilder$NullOutputStream
++java/lang/ProcessEnvironment
++java/lang/ProcessEnvironment$ExternalData
++java/lang/ProcessEnvironment$StringEnvironment
++java/lang/ProcessEnvironment$Value
++java/lang/ProcessEnvironment$Variable
++java/lang/ProcessImpl
++java/lang/Readable
++java/lang/ReflectiveOperationException
++java/lang/Runnable
++java/lang/Runtime
++java/lang/RuntimeException
++java/lang/RuntimePermission
++java/lang/SecurityException
++java/lang/SecurityManager
++java/lang/Short
++java/lang/Shutdown
++java/lang/Shutdown$Lock
++java/lang/StackOverflowError
++java/lang/StackTraceElement
++java/lang/StrictMath
++java/lang/String
++java/lang/String$CaseInsensitiveComparator
++java/lang/StringBuffer
++java/lang/StringBuilder
++java/lang/StringCoding
++java/lang/StringCoding$StringDecoder
++java/lang/StringCoding$StringEncoder
++java/lang/StringIndexOutOfBoundsException
++java/lang/System
++java/lang/System$2
++java/lang/SystemClassLoaderAction
++java/lang/Terminator
++java/lang/Terminator$1
++java/lang/Thread
++java/lang/Thread$State
++java/lang/Thread$UncaughtExceptionHandler
++java/lang/ThreadDeath
++java/lang/ThreadGroup
++java/lang/ThreadLocal
++java/lang/ThreadLocal$ThreadLocalMap
++java/lang/ThreadLocal$ThreadLocalMap$Entry
++java/lang/Throwable
++java/lang/Throwable$PrintStreamOrWriter
++java/lang/Throwable$WrappedPrintStream
++java/lang/UNIXProcess
++java/lang/UNIXProcess$1
++java/lang/UNIXProcess$2
++java/lang/UNIXProcess$3
++java/lang/UNIXProcess$4
++java/lang/UNIXProcess$LaunchMechanism
++java/lang/UNIXProcess$ProcessPipeInputStream
++java/lang/UNIXProcess$ProcessPipeOutputStream
++java/lang/UNIXProcess$ProcessReaperThreadFactory
++java/lang/UNIXProcess$ProcessReaperThreadFactory$1
++java/lang/UnsatisfiedLinkError
++java/lang/UnsupportedOperationException
++java/lang/VirtualMachineError
++java/lang/Void
++java/lang/annotation/Annotation
++java/lang/invoke/CallSite
++java/lang/invoke/ConstantCallSite
++java/lang/invoke/DirectMethodHandle
++java/lang/invoke/Invokers
++java/lang/invoke/LambdaForm
++java/lang/invoke/LambdaForm$NamedFunction
++java/lang/invoke/MemberName
++java/lang/invoke/MemberName$Factory
++java/lang/invoke/MethodHandle
++java/lang/invoke/MethodHandleImpl
++java/lang/invoke/MethodHandleNatives
++java/lang/invoke/MethodHandleStatics
++java/lang/invoke/MethodHandleStatics$1
++java/lang/invoke/MethodType
++java/lang/invoke/MethodType$ConcurrentWeakInternSet
++java/lang/invoke/MethodType$ConcurrentWeakInternSet$WeakEntry
++java/lang/invoke/MethodTypeForm
++java/lang/invoke/MutableCallSite
++java/lang/invoke/VolatileCallSite
++java/lang/ref/FinalReference
++java/lang/ref/Finalizer
++java/lang/ref/Finalizer$FinalizerThread
++java/lang/ref/PhantomReference
++java/lang/ref/Reference
++java/lang/ref/Reference$Lock
++java/lang/ref/Reference$ReferenceHandler
++java/lang/ref/ReferenceQueue
++java/lang/ref/ReferenceQueue$Lock
++java/lang/ref/ReferenceQueue$Null
++java/lang/ref/SoftReference
++java/lang/ref/WeakReference
++java/lang/reflect/AccessibleObject
++java/lang/reflect/AnnotatedElement
++java/lang/reflect/Array
++java/lang/reflect/Constructor
++java/lang/reflect/Executable
++java/lang/reflect/Field
++java/lang/reflect/GenericDeclaration
++java/lang/reflect/InvocationHandler
++java/lang/reflect/InvocationTargetException
++java/lang/reflect/Member
++java/lang/reflect/Method
++java/lang/reflect/Modifier
++java/lang/reflect/Parameter
++java/lang/reflect/Proxy
++java/lang/reflect/Proxy$KeyFactory
++java/lang/reflect/Proxy$ProxyClassFactory
++java/lang/reflect/ReflectAccess
++java/lang/reflect/ReflectPermission
++java/lang/reflect/Type
++java/lang/reflect/WeakCache
++java/math/BigInteger
++java/math/BigInteger$UnsafeHolder
++java/math/MutableBigInteger
++java/math/RoundingMode
++java/math/SignedMutableBigInteger
++java/net/AbstractPlainDatagramSocketImpl
++java/net/AbstractPlainDatagramSocketImpl$1
++java/net/AbstractPlainSocketImpl
++java/net/AbstractPlainSocketImpl$1
++java/net/Authenticator
++java/net/BindException
++java/net/ConnectException
++java/net/DatagramPacket
++java/net/DatagramPacket$1
++java/net/DatagramSocket
++java/net/DatagramSocket$1
++java/net/DatagramSocketImpl
++java/net/DefaultDatagramSocketImplFactory
++java/net/DefaultInterface
++java/net/FileNameMap
++java/net/HttpURLConnection
++java/net/Inet4Address
++java/net/Inet4AddressImpl
++java/net/Inet6Address
++java/net/Inet6Address$Inet6AddressHolder
++java/net/Inet6AddressImpl
++java/net/InetAddress
++java/net/InetAddress$1
++java/net/InetAddress$2
++java/net/InetAddress$Cache
++java/net/InetAddress$Cache$Type
++java/net/InetAddress$CacheEntry
++java/net/InetAddress$InetAddressHolder
++java/net/InetAddressImpl
++java/net/InetAddressImplFactory
++java/net/InetSocketAddress
++java/net/InetSocketAddress$InetSocketAddressHolder
++java/net/InterfaceAddress
++java/net/JarURLConnection
++java/net/MalformedURLException
++java/net/MulticastSocket
++java/net/NetworkInterface
++java/net/NetworkInterface$1
++java/net/NoRouteToHostException
++java/net/Parts
++java/net/PlainDatagramSocketImpl
++java/net/PlainSocketImpl
++java/net/Proxy
++java/net/Proxy$Type
++java/net/ProxySelector
++java/net/ServerSocket
++java/net/Socket
++java/net/SocketAddress
++java/net/SocketException
++java/net/SocketImpl
++java/net/SocketImplFactory
++java/net/SocketOptions
++java/net/SocksConsts
++java/net/SocksSocketImpl
++java/net/SocksSocketImpl$3
++java/net/URI
++java/net/URI$Parser
++java/net/URL
++java/net/URLClassLoader
++java/net/URLClassLoader$1
++java/net/URLClassLoader$2
++java/net/URLClassLoader$3
++java/net/URLClassLoader$3$1
++java/net/URLClassLoader$7
++java/net/URLConnection
++java/net/URLConnection$1
++java/net/URLStreamHandler
++java/net/URLStreamHandlerFactory
++java/net/UnknownHostException
++java/nio/Bits
++java/nio/Bits$1
++java/nio/Buffer
++java/nio/ByteBuffer
++java/nio/ByteBufferAsIntBufferB
++java/nio/ByteBufferAsShortBufferB
++java/nio/ByteOrder
++java/nio/CharBuffer
++java/nio/DirectByteBuffer
++java/nio/DirectByteBuffer$Deallocator
++java/nio/DirectByteBufferR
++java/nio/DirectLongBufferU
++java/nio/HeapByteBuffer
++java/nio/HeapCharBuffer
++java/nio/IntBuffer
++java/nio/LongBuffer
++java/nio/MappedByteBuffer
++java/nio/ShortBuffer
++java/nio/channels/ByteChannel
++java/nio/channels/Channel
++java/nio/channels/FileChannel
++java/nio/channels/FileChannel$MapMode
++java/nio/channels/GatheringByteChannel
++java/nio/channels/InterruptibleChannel
++java/nio/channels/NetworkChannel
++java/nio/channels/ReadableByteChannel
++java/nio/channels/ScatteringByteChannel
++java/nio/channels/SeekableByteChannel
++java/nio/channels/SelectableChannel
++java/nio/channels/SocketChannel
++java/nio/channels/WritableByteChannel
++java/nio/channels/spi/AbstractInterruptibleChannel
++java/nio/channels/spi/AbstractInterruptibleChannel$1
++java/nio/channels/spi/AbstractSelectableChannel
++java/nio/charset/Charset
++java/nio/charset/CharsetDecoder
++java/nio/charset/CharsetEncoder
++java/nio/charset/CoderResult
++java/nio/charset/CoderResult$1
++java/nio/charset/CoderResult$2
++java/nio/charset/CoderResult$Cache
++java/nio/charset/CodingErrorAction
++java/nio/charset/StandardCharsets
++java/nio/charset/spi/CharsetProvider
++java/nio/file/Path
++java/nio/file/Watchable
++java/nio/file/attribute/FileAttribute
++java/security/AccessControlContext
++java/security/AccessController
++java/security/AlgorithmParameters
++java/security/AlgorithmParametersSpi
++java/security/AllPermission
++java/security/AllPermissionCollection
++java/security/BasicPermission
++java/security/BasicPermissionCollection
++java/security/CodeSigner
++java/security/CodeSource
++java/security/GeneralSecurityException
++java/security/Guard
++java/security/InvalidKeyException
++java/security/Key
++java/security/KeyException
++java/security/MessageDigest
++java/security/MessageDigest$Delegate
++java/security/MessageDigestSpi
++java/security/NoSuchAlgorithmException
++java/security/Permission
++java/security/PermissionCollection
++java/security/Permissions
++java/security/Principal
++java/security/PrivateKey
++java/security/PrivilegedAction
++java/security/PrivilegedActionException
++java/security/PrivilegedExceptionAction
++java/security/ProtectionDomain
++java/security/ProtectionDomain$1
++java/security/ProtectionDomain$3
++java/security/ProtectionDomain$Key
++java/security/Provider
++java/security/Provider$EngineDescription
++java/security/Provider$Service
++java/security/Provider$ServiceKey
++java/security/Provider$UString
++java/security/PublicKey
++java/security/SecureClassLoader
++java/security/SecureRandomSpi
++java/security/Security
++java/security/Security$1
++java/security/Signature
++java/security/Signature$Delegate
++java/security/SignatureException
++java/security/SignatureSpi
++java/security/UnresolvedPermission
++java/security/cert/Certificate
++java/security/interfaces/DSAKey
++java/security/interfaces/DSAParams
++java/security/interfaces/DSAPrivateKey
++java/security/interfaces/DSAPublicKey
++java/security/spec/AlgorithmParameterSpec
++java/security/spec/DSAParameterSpec
++java/text/AttributedCharacterIterator$Attribute
++java/text/CharacterIterator
++java/text/Collator
++java/text/DateFormat
++java/text/DateFormat$Field
++java/text/DateFormatSymbols
++java/text/DecimalFormat
++java/text/DecimalFormatSymbols
++java/text/DigitList
++java/text/DontCareFieldPosition
++java/text/DontCareFieldPosition$1
++java/text/EntryPair
++java/text/FieldPosition
++java/text/Format
++java/text/Format$Field
++java/text/Format$FieldDelegate
++java/text/MergeCollation
++java/text/MessageFormat
++java/text/MessageFormat$Field
++java/text/NumberFormat
++java/text/NumberFormat$Field
++java/text/ParseException
++java/text/PatternEntry
++java/text/PatternEntry$Parser
++java/text/RBCollationTables
++java/text/RBCollationTables$BuildAPI
++java/text/RBTableBuilder
++java/text/RuleBasedCollator
++java/text/SimpleDateFormat
++java/text/spi/BreakIteratorProvider
++java/text/spi/CollatorProvider
++java/text/spi/DateFormatProvider
++java/text/spi/DateFormatSymbolsProvider
++java/text/spi/DecimalFormatSymbolsProvider
++java/text/spi/NumberFormatProvider
++java/util/AbstractCollection
++java/util/AbstractList
++java/util/AbstractList$Itr
++java/util/AbstractList$ListItr
++java/util/AbstractMap
++java/util/AbstractQueue
++java/util/AbstractSequentialList
++java/util/AbstractSet
++java/util/ArrayDeque
++java/util/ArrayList
++java/util/ArrayList$Itr
++java/util/ArrayList$ListItr
++java/util/ArrayList$SubList
++java/util/ArrayList$SubList$1
++java/util/Arrays
++java/util/Arrays$ArrayList
++java/util/Arrays$LegacyMergeSort
++java/util/BitSet
++java/util/Calendar
++java/util/Calendar$Builder
++java/util/Collection
++java/util/Collections
++java/util/Collections$3
++java/util/Collections$EmptyEnumeration
++java/util/Collections$EmptyIterator
++java/util/Collections$EmptyList
++java/util/Collections$EmptyMap
++java/util/Collections$EmptySet
++java/util/Collections$SetFromMap
++java/util/Collections$SynchronizedCollection
++java/util/Collections$SynchronizedMap
++java/util/Collections$SynchronizedSet
++java/util/Collections$UnmodifiableCollection
++java/util/Collections$UnmodifiableCollection$1
++java/util/Collections$UnmodifiableList
++java/util/Collections$UnmodifiableList$1
++java/util/Collections$UnmodifiableMap
++java/util/Collections$UnmodifiableRandomAccessList
++java/util/Collections$UnmodifiableSet
++java/util/ComparableTimSort
++java/util/Comparator
++java/util/Currency
++java/util/Currency$1
++java/util/Currency$CurrencyNameGetter
++java/util/Date
++java/util/Deque
++java/util/Dictionary
++java/util/Enumeration
++java/util/EventListener
++java/util/EventListenerProxy
++java/util/EventObject
++java/util/GregorianCalendar
++java/util/HashMap
++java/util/HashMap$EntryIterator
++java/util/HashMap$EntrySet
++java/util/HashMap$HashIterator
++java/util/HashMap$KeyIterator
++java/util/HashMap$KeySet
++java/util/HashMap$Node
++java/util/HashMap$TreeNode
++java/util/HashMap$ValueIterator
++java/util/HashMap$Values
++java/util/HashSet
++java/util/Hashtable
++java/util/Hashtable$Entry
++java/util/Hashtable$EntrySet
++java/util/Hashtable$Enumerator
++java/util/Hashtable$ValueCollection
++java/util/IdentityHashMap
++java/util/IdentityHashMap$IdentityHashMapIterator
++java/util/IdentityHashMap$KeyIterator
++java/util/IdentityHashMap$KeySet
++java/util/IdentityHashMap$ValueIterator
++java/util/IdentityHashMap$Values
++java/util/Iterator
++java/util/LinkedHashMap
++java/util/LinkedHashMap$Entry
++java/util/LinkedHashMap$LinkedEntryIterator
++java/util/LinkedHashMap$LinkedEntrySet
++java/util/LinkedHashMap$LinkedHashIterator
++java/util/LinkedHashMap$LinkedKeyIterator
++java/util/LinkedHashMap$LinkedKeySet
++java/util/LinkedList
++java/util/LinkedList$ListItr
++java/util/LinkedList$Node
++java/util/List
++java/util/ListIterator
++java/util/ListResourceBundle
++java/util/Locale
++java/util/Locale$1
++java/util/Locale$Cache
++java/util/Locale$Category
++java/util/Locale$LocaleKey
++java/util/Map
++java/util/Map$Entry
++java/util/MissingResourceException
++java/util/NavigableMap
++java/util/Objects
++java/util/PriorityQueue
++java/util/Properties
++java/util/Properties$LineReader
++java/util/PropertyResourceBundle
++java/util/Queue
++java/util/Random
++java/util/RandomAccess
++java/util/ResourceBundle
++java/util/ResourceBundle$1
++java/util/ResourceBundle$BundleReference
++java/util/ResourceBundle$CacheKey
++java/util/ResourceBundle$CacheKeyReference
++java/util/ResourceBundle$Control
++java/util/ResourceBundle$Control$1
++java/util/ResourceBundle$Control$CandidateListCache
++java/util/ResourceBundle$LoaderReference
++java/util/ResourceBundle$RBClassLoader
++java/util/ResourceBundle$RBClassLoader$1
++java/util/ResourceBundle$SingleFormatControl
++java/util/ServiceLoader
++java/util/ServiceLoader$1
++java/util/ServiceLoader$LazyIterator
++java/util/Set
++java/util/SortedMap
++java/util/Stack
++java/util/StringTokenizer
++java/util/TimSort
++java/util/TimeZone
++java/util/TimeZone$1
++java/util/TreeMap
++java/util/TreeMap$Entry
++java/util/Vector
++java/util/Vector$1
++java/util/Vector$Itr
++java/util/Vector$ListItr
++java/util/WeakHashMap
++java/util/WeakHashMap$Entry
++java/util/WeakHashMap$KeySet
++java/util/concurrent/AbstractExecutorService
++java/util/concurrent/BlockingQueue
++java/util/concurrent/ConcurrentHashMap
++java/util/concurrent/ConcurrentHashMap$BaseIterator
++java/util/concurrent/ConcurrentHashMap$CollectionView
++java/util/concurrent/ConcurrentHashMap$CounterCell
++java/util/concurrent/ConcurrentHashMap$EntrySetView
++java/util/concurrent/ConcurrentHashMap$ForwardingNode
++java/util/concurrent/ConcurrentHashMap$KeyIterator
++java/util/concurrent/ConcurrentHashMap$KeySetView
++java/util/concurrent/ConcurrentHashMap$Node
++java/util/concurrent/ConcurrentHashMap$Segment
++java/util/concurrent/ConcurrentHashMap$Traverser
++java/util/concurrent/ConcurrentHashMap$ValueIterator
++java/util/concurrent/ConcurrentHashMap$ValuesView
++java/util/concurrent/ConcurrentMap
++java/util/concurrent/CopyOnWriteArrayList
++java/util/concurrent/DelayQueue
++java/util/concurrent/Delayed
++java/util/concurrent/Executor
++java/util/concurrent/ExecutorService
++java/util/concurrent/Executors
++java/util/concurrent/RejectedExecutionHandler
++java/util/concurrent/SynchronousQueue
++java/util/concurrent/SynchronousQueue$TransferStack
++java/util/concurrent/SynchronousQueue$TransferStack$SNode
++java/util/concurrent/SynchronousQueue$Transferer
++java/util/concurrent/ThreadFactory
++java/util/concurrent/ThreadPoolExecutor
++java/util/concurrent/ThreadPoolExecutor$AbortPolicy
++java/util/concurrent/ThreadPoolExecutor$Worker
++java/util/concurrent/TimeUnit
++java/util/concurrent/TimeUnit$1
++java/util/concurrent/TimeUnit$2
++java/util/concurrent/TimeUnit$3
++java/util/concurrent/TimeUnit$4
++java/util/concurrent/TimeUnit$5
++java/util/concurrent/TimeUnit$6
++java/util/concurrent/TimeUnit$7
++java/util/concurrent/atomic/AtomicBoolean
++java/util/concurrent/atomic/AtomicInteger
++java/util/concurrent/atomic/AtomicLong
++java/util/concurrent/atomic/AtomicMarkableReference
++java/util/concurrent/atomic/AtomicMarkableReference$Pair
++java/util/concurrent/atomic/AtomicReferenceFieldUpdater
++java/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl
++java/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl$1
++java/util/concurrent/locks/AbstractOwnableSynchronizer
++java/util/concurrent/locks/AbstractQueuedSynchronizer
++java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject
++java/util/concurrent/locks/AbstractQueuedSynchronizer$Node
++java/util/concurrent/locks/Condition
++java/util/concurrent/locks/Lock
++java/util/concurrent/locks/LockSupport
++java/util/concurrent/locks/ReentrantLock
++java/util/concurrent/locks/ReentrantLock$NonfairSync
++java/util/concurrent/locks/ReentrantLock$Sync
++java/util/function/BiFunction
++java/util/jar/Attributes
++java/util/jar/Attributes$Name
++java/util/jar/JarEntry
++java/util/jar/JarFile
++java/util/jar/JarFile$JarEntryIterator
++java/util/jar/JarFile$JarFileEntry
++java/util/jar/JarVerifier
++java/util/jar/JarVerifier$3
++java/util/jar/JavaUtilJarAccessImpl
++java/util/jar/Manifest
++java/util/jar/Manifest$FastInputStream
++java/util/logging/Handler
++java/util/logging/Level
++java/util/logging/Level$KnownLevel
++java/util/logging/LogManager
++java/util/logging/LogManager$1
++java/util/logging/LogManager$2
++java/util/logging/LogManager$3
++java/util/logging/LogManager$5
++java/util/logging/LogManager$Cleaner
++java/util/logging/LogManager$LogNode
++java/util/logging/LogManager$LoggerContext
++java/util/logging/LogManager$LoggerContext$1
++java/util/logging/LogManager$LoggerWeakRef
++java/util/logging/LogManager$RootLogger
++java/util/logging/LogManager$SystemLoggerContext
++java/util/logging/Logger
++java/util/logging/Logger$1
++java/util/logging/LoggingPermission
++java/util/logging/LoggingProxyImpl
++java/util/spi/CalendarDataProvider
++java/util/spi/CurrencyNameProvider
++java/util/spi/LocaleNameProvider
++java/util/spi/LocaleServiceProvider
++java/util/spi/ResourceBundleControlProvider
++java/util/spi/TimeZoneNameProvider
++java/util/zip/CRC32
++java/util/zip/Checksum
++java/util/zip/DeflaterOutputStream
++java/util/zip/GZIPInputStream
++java/util/zip/Inflater
++java/util/zip/InflaterInputStream
++java/util/zip/ZStreamRef
++java/util/zip/ZipCoder
++java/util/zip/ZipConstants
++java/util/zip/ZipEntry
++java/util/zip/ZipFile
++java/util/zip/ZipFile$1
++java/util/zip/ZipFile$ZipEntryIterator
++java/util/zip/ZipFile$ZipFileInflaterInputStream
++java/util/zip/ZipFile$ZipFileInputStream
++java/util/zip/ZipInputStream
++java/util/zip/ZipUtils
++javax/accessibility/Accessible
++javax/accessibility/AccessibleAction
++javax/accessibility/AccessibleBundle
++javax/accessibility/AccessibleComponent
++javax/accessibility/AccessibleContext
++javax/accessibility/AccessibleExtendedComponent
++javax/accessibility/AccessibleRelationSet
++javax/accessibility/AccessibleState
++javax/accessibility/AccessibleText
++javax/accessibility/AccessibleValue
++javax/security/auth/Destroyable
++javax/sound/sampled/Control$Type
++javax/sound/sampled/DataLine
++javax/sound/sampled/DataLine$Info
++javax/sound/sampled/FloatControl$Type
++javax/sound/sampled/Line
++javax/sound/sampled/Line$Info
++javax/sound/sampled/LineUnavailableException
++javax/sound/sampled/UnsupportedAudioFileException
++javax/swing/AbstractAction
++javax/swing/AbstractButton
++javax/swing/AbstractButton$AccessibleAbstractButton
++javax/swing/AbstractButton$Handler
++javax/swing/AbstractCellEditor
++javax/swing/AbstractListModel
++javax/swing/Action
++javax/swing/ActionMap
++javax/swing/AncestorNotifier
++javax/swing/ArrayTable
++javax/swing/BorderFactory
++javax/swing/BoundedRangeModel
++javax/swing/Box
++javax/swing/Box$Filler
++javax/swing/BoxLayout
++javax/swing/BufferStrategyPaintManager
++javax/swing/BufferStrategyPaintManager$BufferInfo
++javax/swing/ButtonGroup
++javax/swing/ButtonModel
++javax/swing/CellEditor
++javax/swing/CellRendererPane
++javax/swing/ClientPropertyKey
++javax/swing/ClientPropertyKey$1
++javax/swing/ComboBoxEditor
++javax/swing/ComboBoxModel
++javax/swing/ComponentInputMap
++javax/swing/DefaultBoundedRangeModel
++javax/swing/DefaultButtonModel
++javax/swing/DefaultCellEditor
++javax/swing/DefaultCellEditor$1
++javax/swing/DefaultCellEditor$EditorDelegate
++javax/swing/DefaultComboBoxModel
++javax/swing/DefaultListCellRenderer
++javax/swing/DefaultListCellRenderer$UIResource
++javax/swing/DefaultListModel
++javax/swing/DefaultListSelectionModel
++javax/swing/DefaultSingleSelectionModel
++javax/swing/DropMode
++javax/swing/FocusManager
++javax/swing/GrayFilter
++javax/swing/Icon
++javax/swing/ImageIcon
++javax/swing/ImageIcon$1
++javax/swing/ImageIcon$2
++javax/swing/ImageIcon$2$1
++javax/swing/ImageIcon$3
++javax/swing/InputMap
++javax/swing/InternalFrameFocusTraversalPolicy
++javax/swing/JButton
++javax/swing/JCheckBox
++javax/swing/JCheckBoxMenuItem
++javax/swing/JCheckBoxMenuItem$AccessibleJCheckBoxMenuItem
++javax/swing/JComboBox
++javax/swing/JComboBox$1
++javax/swing/JComboBox$KeySelectionManager
++javax/swing/JComponent
++javax/swing/JComponent$1
++javax/swing/JComponent$2
++javax/swing/JComponent$AccessibleJComponent
++javax/swing/JDialog
++javax/swing/JEditorPane
++javax/swing/JFrame
++javax/swing/JInternalFrame
++javax/swing/JLabel
++javax/swing/JLayer
++javax/swing/JLayeredPane
++javax/swing/JList
++javax/swing/JList$3
++javax/swing/JList$ListSelectionHandler
++javax/swing/JMenu
++javax/swing/JMenu$MenuChangeListener
++javax/swing/JMenu$WinListener
++javax/swing/JMenuBar
++javax/swing/JMenuItem
++javax/swing/JMenuItem$AccessibleJMenuItem
++javax/swing/JMenuItem$MenuItemFocusListener
++javax/swing/JPanel
++javax/swing/JPopupMenu
++javax/swing/JPopupMenu$Separator
++javax/swing/JProgressBar
++javax/swing/JProgressBar$ModelListener
++javax/swing/JRadioButton
++javax/swing/JRadioButtonMenuItem
++javax/swing/JRootPane
++javax/swing/JRootPane$1
++javax/swing/JRootPane$RootLayout
++javax/swing/JScrollBar
++javax/swing/JScrollBar$ModelListener
++javax/swing/JScrollPane
++javax/swing/JScrollPane$ScrollBar
++javax/swing/JSeparator
++javax/swing/JSlider
++javax/swing/JSlider$ModelListener
++javax/swing/JSplitPane
++javax/swing/JTabbedPane
++javax/swing/JTabbedPane$ModelListener
++javax/swing/JTabbedPane$Page
++javax/swing/JTable
++javax/swing/JTable$2
++javax/swing/JTable$5
++javax/swing/JTable$Resizable2
++javax/swing/JTable$Resizable3
++javax/swing/JTextArea
++javax/swing/JTextField
++javax/swing/JTextField$NotifyAction
++javax/swing/JTextField$ScrollRepainter
++javax/swing/JToggleButton
++javax/swing/JToggleButton$ToggleButtonModel
++javax/swing/JToolBar
++javax/swing/JToolBar$DefaultToolBarLayout
++javax/swing/JToolBar$Separator
++javax/swing/JToolTip
++javax/swing/JTree
++javax/swing/JTree$TreeModelHandler
++javax/swing/JTree$TreeSelectionRedirector
++javax/swing/JViewport
++javax/swing/JViewport$ViewListener
++javax/swing/JWindow
++javax/swing/KeyStroke
++javax/swing/KeyboardManager
++javax/swing/KeyboardManager$ComponentKeyStrokePair
++javax/swing/LayoutComparator
++javax/swing/LayoutFocusTraversalPolicy
++javax/swing/ListCellRenderer
++javax/swing/ListModel
++javax/swing/ListSelectionModel
++javax/swing/LookAndFeel
++javax/swing/MenuElement
++javax/swing/MenuSelectionManager
++javax/swing/MultiUIDefaults
++javax/swing/MutableComboBoxModel
++javax/swing/RepaintManager
++javax/swing/RepaintManager$2
++javax/swing/RepaintManager$3
++javax/swing/RepaintManager$DisplayChangedHandler
++javax/swing/RepaintManager$PaintManager
++javax/swing/RepaintManager$ProcessingRunnable
++javax/swing/RootPaneContainer
++javax/swing/ScrollPaneConstants
++javax/swing/ScrollPaneLayout
++javax/swing/ScrollPaneLayout$UIResource
++javax/swing/Scrollable
++javax/swing/SingleSelectionModel
++javax/swing/SizeRequirements
++javax/swing/SortingFocusTraversalPolicy
++javax/swing/SwingConstants
++javax/swing/SwingContainerOrderFocusTraversalPolicy
++javax/swing/SwingDefaultFocusTraversalPolicy
++javax/swing/SwingPaintEventDispatcher
++javax/swing/SwingUtilities
++javax/swing/SwingUtilities$SharedOwnerFrame
++javax/swing/Timer
++javax/swing/Timer$DoPostEvent
++javax/swing/TimerQueue
++javax/swing/TimerQueue$1
++javax/swing/TimerQueue$DelayedTimer
++javax/swing/ToolTipManager
++javax/swing/ToolTipManager$AccessibilityKeyListener
++javax/swing/ToolTipManager$MoveBeforeEnterListener
++javax/swing/ToolTipManager$insideTimerAction
++javax/swing/ToolTipManager$outsideTimerAction
++javax/swing/ToolTipManager$stillInsideTimerAction
++javax/swing/TransferHandler
++javax/swing/TransferHandler$DropHandler
++javax/swing/TransferHandler$HasGetTransferHandler
++javax/swing/TransferHandler$SwingDropTarget
++javax/swing/TransferHandler$TransferAction
++javax/swing/TransferHandler$TransferSupport
++javax/swing/UIDefaults
++javax/swing/UIDefaults$ActiveValue
++javax/swing/UIDefaults$LazyInputMap
++javax/swing/UIDefaults$LazyValue
++javax/swing/UIDefaults$TextAndMnemonicHashMap
++javax/swing/UIManager
++javax/swing/UIManager$1
++javax/swing/UIManager$2
++javax/swing/UIManager$LAFState
++javax/swing/UIManager$LookAndFeelInfo
++javax/swing/UnsupportedLookAndFeelException
++javax/swing/ViewportLayout
++javax/swing/WindowConstants
++javax/swing/border/AbstractBorder
++javax/swing/border/BevelBorder
++javax/swing/border/Border
++javax/swing/border/CompoundBorder
++javax/swing/border/EmptyBorder
++javax/swing/border/EtchedBorder
++javax/swing/border/LineBorder
++javax/swing/border/MatteBorder
++javax/swing/border/TitledBorder
++javax/swing/event/AncestorEvent
++javax/swing/event/AncestorListener
++javax/swing/event/CaretEvent
++javax/swing/event/CaretListener
++javax/swing/event/CellEditorListener
++javax/swing/event/ChangeEvent
++javax/swing/event/ChangeListener
++javax/swing/event/DocumentEvent
++javax/swing/event/DocumentEvent$ElementChange
++javax/swing/event/DocumentEvent$EventType
++javax/swing/event/DocumentListener
++javax/swing/event/EventListenerList
++javax/swing/event/ListDataEvent
++javax/swing/event/ListDataListener
++javax/swing/event/ListSelectionEvent
++javax/swing/event/ListSelectionListener
++javax/swing/event/MenuDragMouseListener
++javax/swing/event/MenuEvent
++javax/swing/event/MenuKeyListener
++javax/swing/event/MenuListener
++javax/swing/event/MouseInputAdapter
++javax/swing/event/MouseInputListener
++javax/swing/event/PopupMenuListener
++javax/swing/event/RowSorterListener
++javax/swing/event/SwingPropertyChangeSupport
++javax/swing/event/TableColumnModelEvent
++javax/swing/event/TableColumnModelListener
++javax/swing/event/TableModelEvent
++javax/swing/event/TableModelListener
++javax/swing/event/TreeExpansionListener
++javax/swing/event/TreeModelEvent
++javax/swing/event/TreeModelListener
++javax/swing/event/TreeSelectionEvent
++javax/swing/event/TreeSelectionListener
++javax/swing/event/UndoableEditEvent
++javax/swing/event/UndoableEditListener
++javax/swing/filechooser/FileFilter
++javax/swing/plaf/ActionMapUIResource
++javax/swing/plaf/BorderUIResource
++javax/swing/plaf/BorderUIResource$CompoundBorderUIResource
++javax/swing/plaf/BorderUIResource$EmptyBorderUIResource
++javax/swing/plaf/BorderUIResource$LineBorderUIResource
++javax/swing/plaf/ButtonUI
++javax/swing/plaf/ColorUIResource
++javax/swing/plaf/ComboBoxUI
++javax/swing/plaf/ComponentInputMapUIResource
++javax/swing/plaf/ComponentUI
++javax/swing/plaf/DimensionUIResource
++javax/swing/plaf/FontUIResource
++javax/swing/plaf/InputMapUIResource
++javax/swing/plaf/InsetsUIResource
++javax/swing/plaf/LabelUI
++javax/swing/plaf/ListUI
++javax/swing/plaf/MenuBarUI
++javax/swing/plaf/MenuItemUI
++javax/swing/plaf/PanelUI
++javax/swing/plaf/PopupMenuUI
++javax/swing/plaf/ProgressBarUI
++javax/swing/plaf/RootPaneUI
++javax/swing/plaf/ScrollBarUI
++javax/swing/plaf/ScrollPaneUI
++javax/swing/plaf/SeparatorUI
++javax/swing/plaf/SliderUI
++javax/swing/plaf/SplitPaneUI
++javax/swing/plaf/TabbedPaneUI
++javax/swing/plaf/TableHeaderUI
++javax/swing/plaf/TableUI
++javax/swing/plaf/TextUI
++javax/swing/plaf/ToolBarUI
++javax/swing/plaf/TreeUI
++javax/swing/plaf/UIResource
++javax/swing/plaf/ViewportUI
++javax/swing/plaf/basic/BasicArrowButton
++javax/swing/plaf/basic/BasicBorders
++javax/swing/plaf/basic/BasicBorders$ButtonBorder
++javax/swing/plaf/basic/BasicBorders$MarginBorder
++javax/swing/plaf/basic/BasicBorders$RadioButtonBorder
++javax/swing/plaf/basic/BasicBorders$RolloverMarginBorder
++javax/swing/plaf/basic/BasicBorders$SplitPaneBorder
++javax/swing/plaf/basic/BasicBorders$SplitPaneDividerBorder
++javax/swing/plaf/basic/BasicButtonListener
++javax/swing/plaf/basic/BasicButtonUI
++javax/swing/plaf/basic/BasicCheckBoxMenuItemUI
++javax/swing/plaf/basic/BasicComboBoxEditor
++javax/swing/plaf/basic/BasicComboBoxEditor$BorderlessTextField
++javax/swing/plaf/basic/BasicComboBoxEditor$UIResource
++javax/swing/plaf/basic/BasicComboBoxRenderer
++javax/swing/plaf/basic/BasicComboBoxRenderer$UIResource
++javax/swing/plaf/basic/BasicComboBoxUI
++javax/swing/plaf/basic/BasicComboBoxUI$ComboBoxLayoutManager
++javax/swing/plaf/basic/BasicComboBoxUI$DefaultKeySelectionManager
++javax/swing/plaf/basic/BasicComboBoxUI$Handler
++javax/swing/plaf/basic/BasicComboBoxUI$PropertyChangeHandler
++javax/swing/plaf/basic/BasicComboPopup
++javax/swing/plaf/basic/BasicComboPopup$1
++javax/swing/plaf/basic/BasicComboPopup$EmptyListModelClass
++javax/swing/plaf/basic/BasicComboPopup$Handler
++javax/swing/plaf/basic/BasicGraphicsUtils
++javax/swing/plaf/basic/BasicHTML
++javax/swing/plaf/basic/BasicLabelUI
++javax/swing/plaf/basic/BasicListUI
++javax/swing/plaf/basic/BasicListUI$Handler
++javax/swing/plaf/basic/BasicListUI$ListTransferHandler
++javax/swing/plaf/basic/BasicLookAndFeel
++javax/swing/plaf/basic/BasicLookAndFeel$1
++javax/swing/plaf/basic/BasicLookAndFeel$2
++javax/swing/plaf/basic/BasicLookAndFeel$AWTEventHelper
++javax/swing/plaf/basic/BasicMenuBarUI
++javax/swing/plaf/basic/BasicMenuBarUI$Handler
++javax/swing/plaf/basic/BasicMenuItemUI
++javax/swing/plaf/basic/BasicMenuItemUI$Handler
++javax/swing/plaf/basic/BasicMenuUI
++javax/swing/plaf/basic/BasicMenuUI$Handler
++javax/swing/plaf/basic/BasicPanelUI
++javax/swing/plaf/basic/BasicPopupMenuUI
++javax/swing/plaf/basic/BasicPopupMenuUI$BasicMenuKeyListener
++javax/swing/plaf/basic/BasicPopupMenuUI$BasicPopupMenuListener
++javax/swing/plaf/basic/BasicPopupMenuUI$MenuKeyboardHelper
++javax/swing/plaf/basic/BasicPopupMenuUI$MenuKeyboardHelper$1
++javax/swing/plaf/basic/BasicPopupMenuUI$MouseGrabber
++javax/swing/plaf/basic/BasicProgressBarUI
++javax/swing/plaf/basic/BasicProgressBarUI$Handler
++javax/swing/plaf/basic/BasicRadioButtonMenuItemUI
++javax/swing/plaf/basic/BasicRadioButtonUI
++javax/swing/plaf/basic/BasicRootPaneUI
++javax/swing/plaf/basic/BasicRootPaneUI$RootPaneInputMap
++javax/swing/plaf/basic/BasicScrollBarUI
++javax/swing/plaf/basic/BasicScrollBarUI$ArrowButtonListener
++javax/swing/plaf/basic/BasicScrollBarUI$Handler
++javax/swing/plaf/basic/BasicScrollBarUI$ModelListener
++javax/swing/plaf/basic/BasicScrollBarUI$PropertyChangeHandler
++javax/swing/plaf/basic/BasicScrollBarUI$ScrollListener
++javax/swing/plaf/basic/BasicScrollBarUI$TrackListener
++javax/swing/plaf/basic/BasicScrollPaneUI
++javax/swing/plaf/basic/BasicScrollPaneUI$Handler
++javax/swing/plaf/basic/BasicSeparatorUI
++javax/swing/plaf/basic/BasicSliderUI
++javax/swing/plaf/basic/BasicSliderUI$Actions
++javax/swing/plaf/basic/BasicSliderUI$Handler
++javax/swing/plaf/basic/BasicSliderUI$PropertyChangeHandler
++javax/swing/plaf/basic/BasicSliderUI$ScrollListener
++javax/swing/plaf/basic/BasicSliderUI$TrackListener
++javax/swing/plaf/basic/BasicSplitPaneDivider
++javax/swing/plaf/basic/BasicSplitPaneDivider$DividerLayout
++javax/swing/plaf/basic/BasicSplitPaneDivider$MouseHandler
++javax/swing/plaf/basic/BasicSplitPaneDivider$OneTouchActionHandler
++javax/swing/plaf/basic/BasicSplitPaneUI
++javax/swing/plaf/basic/BasicSplitPaneUI$1
++javax/swing/plaf/basic/BasicSplitPaneUI$BasicHorizontalLayoutManager
++javax/swing/plaf/basic/BasicSplitPaneUI$Handler
++javax/swing/plaf/basic/BasicTabbedPaneUI
++javax/swing/plaf/basic/BasicTabbedPaneUI$Handler
++javax/swing/plaf/basic/BasicTabbedPaneUI$TabbedPaneLayout
++javax/swing/plaf/basic/BasicTabbedPaneUI$TabbedPaneScrollLayout
++javax/swing/plaf/basic/BasicTableHeaderUI
++javax/swing/plaf/basic/BasicTableHeaderUI$1
++javax/swing/plaf/basic/BasicTableHeaderUI$MouseInputHandler
++javax/swing/plaf/basic/BasicTableUI
++javax/swing/plaf/basic/BasicTableUI$Handler
++javax/swing/plaf/basic/BasicTableUI$TableTransferHandler
++javax/swing/plaf/basic/BasicTextAreaUI
++javax/swing/plaf/basic/BasicTextFieldUI
++javax/swing/plaf/basic/BasicTextUI
++javax/swing/plaf/basic/BasicTextUI$BasicCaret
++javax/swing/plaf/basic/BasicTextUI$BasicCursor
++javax/swing/plaf/basic/BasicTextUI$BasicHighlighter
++javax/swing/plaf/basic/BasicTextUI$DragListener
++javax/swing/plaf/basic/BasicTextUI$FocusAction
++javax/swing/plaf/basic/BasicTextUI$RootView
++javax/swing/plaf/basic/BasicTextUI$TextActionWrapper
++javax/swing/plaf/basic/BasicTextUI$TextTransferHandler
++javax/swing/plaf/basic/BasicTextUI$UpdateHandler
++javax/swing/plaf/basic/BasicToggleButtonUI
++javax/swing/plaf/basic/BasicToolBarSeparatorUI
++javax/swing/plaf/basic/BasicToolBarUI
++javax/swing/plaf/basic/BasicToolBarUI$DockingListener
++javax/swing/plaf/basic/BasicToolBarUI$Handler
++javax/swing/plaf/basic/BasicTreeUI
++javax/swing/plaf/basic/BasicTreeUI$Actions
++javax/swing/plaf/basic/BasicTreeUI$Handler
++javax/swing/plaf/basic/BasicTreeUI$NodeDimensionsHandler
++javax/swing/plaf/basic/BasicTreeUI$TreeTransferHandler
++javax/swing/plaf/basic/BasicViewportUI
++javax/swing/plaf/basic/ComboPopup
++javax/swing/plaf/basic/DefaultMenuLayout
++javax/swing/plaf/basic/DragRecognitionSupport$BeforeDrag
++javax/swing/plaf/basic/LazyActionMap
++javax/swing/plaf/metal/DefaultMetalTheme
++javax/swing/plaf/metal/DefaultMetalTheme$FontDelegate
++javax/swing/plaf/metal/DefaultMetalTheme$FontDelegate$1
++javax/swing/plaf/metal/MetalBorders
++javax/swing/plaf/metal/MetalBorders$ButtonBorder
++javax/swing/plaf/metal/MetalBorders$Flush3DBorder
++javax/swing/plaf/metal/MetalBorders$MenuBarBorder
++javax/swing/plaf/metal/MetalBorders$MenuItemBorder
++javax/swing/plaf/metal/MetalBorders$PopupMenuBorder
++javax/swing/plaf/metal/MetalBorders$RolloverButtonBorder
++javax/swing/plaf/metal/MetalBorders$RolloverMarginBorder
++javax/swing/plaf/metal/MetalBorders$ScrollPaneBorder
++javax/swing/plaf/metal/MetalBorders$TextFieldBorder
++javax/swing/plaf/metal/MetalBorders$ToggleButtonBorder
++javax/swing/plaf/metal/MetalBorders$ToolBarBorder
++javax/swing/plaf/metal/MetalBumps
++javax/swing/plaf/metal/MetalButtonUI
++javax/swing/plaf/metal/MetalCheckBoxUI
++javax/swing/plaf/metal/MetalComboBoxButton
++javax/swing/plaf/metal/MetalComboBoxButton$1
++javax/swing/plaf/metal/MetalComboBoxEditor
++javax/swing/plaf/metal/MetalComboBoxEditor$1
++javax/swing/plaf/metal/MetalComboBoxEditor$EditorBorder
++javax/swing/plaf/metal/MetalComboBoxEditor$UIResource
++javax/swing/plaf/metal/MetalComboBoxIcon
++javax/swing/plaf/metal/MetalComboBoxUI
++javax/swing/plaf/metal/MetalComboBoxUI$MetalComboBoxLayoutManager
++javax/swing/plaf/metal/MetalComboBoxUI$MetalPropertyChangeListener
++javax/swing/plaf/metal/MetalIconFactory
++javax/swing/plaf/metal/MetalIconFactory$CheckBoxIcon
++javax/swing/plaf/metal/MetalIconFactory$CheckBoxMenuItemIcon
++javax/swing/plaf/metal/MetalIconFactory$FolderIcon16
++javax/swing/plaf/metal/MetalIconFactory$HorizontalSliderThumbIcon
++javax/swing/plaf/metal/MetalIconFactory$MenuArrowIcon
++javax/swing/plaf/metal/MetalIconFactory$MenuItemArrowIcon
++javax/swing/plaf/metal/MetalIconFactory$RadioButtonIcon
++javax/swing/plaf/metal/MetalIconFactory$RadioButtonMenuItemIcon
++javax/swing/plaf/metal/MetalIconFactory$TreeFolderIcon
++javax/swing/plaf/metal/MetalIconFactory$VerticalSliderThumbIcon
++javax/swing/plaf/metal/MetalLabelUI
++javax/swing/plaf/metal/MetalLookAndFeel
++javax/swing/plaf/metal/MetalLookAndFeel$AATextListener
++javax/swing/plaf/metal/MetalLookAndFeel$FontActiveValue
++javax/swing/plaf/metal/MetalLookAndFeel$MetalLazyValue
++javax/swing/plaf/metal/MetalLookAndFeel$MetalLazyValue$1
++javax/swing/plaf/metal/MetalPopupMenuSeparatorUI
++javax/swing/plaf/metal/MetalProgressBarUI
++javax/swing/plaf/metal/MetalRadioButtonUI
++javax/swing/plaf/metal/MetalRootPaneUI
++javax/swing/plaf/metal/MetalScrollBarUI
++javax/swing/plaf/metal/MetalScrollBarUI$ScrollBarListener
++javax/swing/plaf/metal/MetalScrollButton
++javax/swing/plaf/metal/MetalScrollPaneUI
++javax/swing/plaf/metal/MetalScrollPaneUI$1
++javax/swing/plaf/metal/MetalSeparatorUI
++javax/swing/plaf/metal/MetalSliderUI
++javax/swing/plaf/metal/MetalSliderUI$MetalPropertyListener
++javax/swing/plaf/metal/MetalSplitPaneDivider
++javax/swing/plaf/metal/MetalSplitPaneDivider$1
++javax/swing/plaf/metal/MetalSplitPaneDivider$2
++javax/swing/plaf/metal/MetalSplitPaneUI
++javax/swing/plaf/metal/MetalTabbedPaneUI
++javax/swing/plaf/metal/MetalTabbedPaneUI$TabbedPaneLayout
++javax/swing/plaf/metal/MetalTextFieldUI
++javax/swing/plaf/metal/MetalTheme
++javax/swing/plaf/metal/MetalToggleButtonUI
++javax/swing/plaf/metal/MetalToolBarUI
++javax/swing/plaf/metal/MetalToolBarUI$MetalDockingListener
++javax/swing/plaf/metal/MetalTreeUI
++javax/swing/plaf/metal/MetalTreeUI$LineListener
++javax/swing/plaf/metal/OceanTheme
++javax/swing/plaf/metal/OceanTheme$1
++javax/swing/plaf/metal/OceanTheme$2
++javax/swing/plaf/metal/OceanTheme$3
++javax/swing/plaf/metal/OceanTheme$4
++javax/swing/plaf/metal/OceanTheme$5
++javax/swing/plaf/metal/OceanTheme$6
++javax/swing/plaf/synth/SynthConstants
++javax/swing/plaf/synth/SynthUI
++javax/swing/table/AbstractTableModel
++javax/swing/table/DefaultTableCellRenderer
++javax/swing/table/DefaultTableColumnModel
++javax/swing/table/DefaultTableModel
++javax/swing/table/JTableHeader
++javax/swing/table/TableCellEditor
++javax/swing/table/TableCellRenderer
++javax/swing/table/TableColumn
++javax/swing/table/TableColumnModel
++javax/swing/table/TableModel
++javax/swing/text/AbstractDocument
++javax/swing/text/AbstractDocument$1
++javax/swing/text/AbstractDocument$AbstractElement
++javax/swing/text/AbstractDocument$AttributeContext
++javax/swing/text/AbstractDocument$BidiElement
++javax/swing/text/AbstractDocument$BidiRootElement
++javax/swing/text/AbstractDocument$BranchElement
++javax/swing/text/AbstractDocument$Content
++javax/swing/text/AbstractDocument$DefaultDocumentEvent
++javax/swing/text/AbstractDocument$ElementEdit
++javax/swing/text/AbstractDocument$InsertStringResult
++javax/swing/text/AbstractDocument$LeafElement
++javax/swing/text/AttributeSet
++javax/swing/text/AttributeSet$CharacterAttribute
++javax/swing/text/AttributeSet$ColorAttribute
++javax/swing/text/AttributeSet$FontAttribute
++javax/swing/text/AttributeSet$ParagraphAttribute
++javax/swing/text/Caret
++javax/swing/text/DefaultCaret
++javax/swing/text/DefaultCaret$Handler
++javax/swing/text/DefaultEditorKit
++javax/swing/text/DefaultEditorKit$BeepAction
++javax/swing/text/DefaultEditorKit$BeginAction
++javax/swing/text/DefaultEditorKit$BeginLineAction
++javax/swing/text/DefaultEditorKit$BeginParagraphAction
++javax/swing/text/DefaultEditorKit$BeginWordAction
++javax/swing/text/DefaultEditorKit$CopyAction
++javax/swing/text/DefaultEditorKit$CutAction
++javax/swing/text/DefaultEditorKit$DefaultKeyTypedAction
++javax/swing/text/DefaultEditorKit$DeleteNextCharAction
++javax/swing/text/DefaultEditorKit$DeletePrevCharAction
++javax/swing/text/DefaultEditorKit$DeleteWordAction
++javax/swing/text/DefaultEditorKit$DumpModelAction
++javax/swing/text/DefaultEditorKit$EndAction
++javax/swing/text/DefaultEditorKit$EndLineAction
++javax/swing/text/DefaultEditorKit$EndParagraphAction
++javax/swing/text/DefaultEditorKit$EndWordAction
++javax/swing/text/DefaultEditorKit$InsertBreakAction
++javax/swing/text/DefaultEditorKit$InsertContentAction
++javax/swing/text/DefaultEditorKit$InsertTabAction
++javax/swing/text/DefaultEditorKit$NextVisualPositionAction
++javax/swing/text/DefaultEditorKit$NextWordAction
++javax/swing/text/DefaultEditorKit$PageAction
++javax/swing/text/DefaultEditorKit$PasteAction
++javax/swing/text/DefaultEditorKit$PreviousWordAction
++javax/swing/text/DefaultEditorKit$ReadOnlyAction
++javax/swing/text/DefaultEditorKit$SelectAllAction
++javax/swing/text/DefaultEditorKit$SelectLineAction
++javax/swing/text/DefaultEditorKit$SelectParagraphAction
++javax/swing/text/DefaultEditorKit$SelectWordAction
++javax/swing/text/DefaultEditorKit$ToggleComponentOrientationAction
++javax/swing/text/DefaultEditorKit$UnselectAction
++javax/swing/text/DefaultEditorKit$VerticalPageAction
++javax/swing/text/DefaultEditorKit$WritableAction
++javax/swing/text/DefaultHighlighter
++javax/swing/text/DefaultHighlighter$DefaultHighlightPainter
++javax/swing/text/DefaultHighlighter$SafeDamager
++javax/swing/text/Document
++javax/swing/text/EditorKit
++javax/swing/text/Element
++javax/swing/text/FieldView
++javax/swing/text/GapContent
++javax/swing/text/GapContent$InsertUndo
++javax/swing/text/GapContent$MarkData
++javax/swing/text/GapContent$MarkVector
++javax/swing/text/GapContent$StickyPosition
++javax/swing/text/GapVector
++javax/swing/text/Highlighter
++javax/swing/text/Highlighter$Highlight
++javax/swing/text/Highlighter$HighlightPainter
++javax/swing/text/JTextComponent
++javax/swing/text/JTextComponent$1
++javax/swing/text/JTextComponent$DefaultKeymap
++javax/swing/text/JTextComponent$KeymapActionMap
++javax/swing/text/JTextComponent$KeymapWrapper
++javax/swing/text/JTextComponent$MutableCaretEvent
++javax/swing/text/Keymap
++javax/swing/text/LayeredHighlighter
++javax/swing/text/LayeredHighlighter$LayerPainter
++javax/swing/text/MutableAttributeSet
++javax/swing/text/PlainDocument
++javax/swing/text/PlainView
++javax/swing/text/Position
++javax/swing/text/Position$Bias
++javax/swing/text/Segment
++javax/swing/text/SegmentCache
++javax/swing/text/SegmentCache$CachedSegment
++javax/swing/text/SimpleAttributeSet
++javax/swing/text/SimpleAttributeSet$EmptyAttributeSet
++javax/swing/text/Style
++javax/swing/text/StyleConstants
++javax/swing/text/StyleConstants$CharacterConstants
++javax/swing/text/StyleConstants$ColorConstants
++javax/swing/text/StyleConstants$FontConstants
++javax/swing/text/StyleConstants$ParagraphConstants
++javax/swing/text/StyleContext
++javax/swing/text/StyleContext$FontKey
++javax/swing/text/StyleContext$KeyEnumeration
++javax/swing/text/StyleContext$NamedStyle
++javax/swing/text/StyleContext$SmallAttributeSet
++javax/swing/text/TabExpander
++javax/swing/text/TextAction
++javax/swing/text/Utilities
++javax/swing/text/View
++javax/swing/text/ViewFactory
++javax/swing/tree/AbstractLayoutCache
++javax/swing/tree/AbstractLayoutCache$NodeDimensions
++javax/swing/tree/DefaultMutableTreeNode
++javax/swing/tree/DefaultMutableTreeNode$PreorderEnumeration
++javax/swing/tree/DefaultTreeCellEditor
++javax/swing/tree/DefaultTreeCellEditor$1
++javax/swing/tree/DefaultTreeCellEditor$DefaultTextField
++javax/swing/tree/DefaultTreeCellEditor$EditorContainer
++javax/swing/tree/DefaultTreeCellRenderer
++javax/swing/tree/DefaultTreeModel
++javax/swing/tree/DefaultTreeSelectionModel
++javax/swing/tree/MutableTreeNode
++javax/swing/tree/PathPlaceHolder
++javax/swing/tree/RowMapper
++javax/swing/tree/TreeCellEditor
++javax/swing/tree/TreeCellRenderer
++javax/swing/tree/TreeModel
++javax/swing/tree/TreeNode
++javax/swing/tree/TreePath
++javax/swing/tree/TreeSelectionModel
++javax/swing/tree/VariableHeightLayoutCache
++javax/swing/tree/VariableHeightLayoutCache$TreeStateNode
++javax/swing/undo/AbstractUndoableEdit
++javax/swing/undo/CompoundEdit
++javax/swing/undo/UndoableEdit
++javax/xml/parsers/DocumentBuilder
++javax/xml/parsers/DocumentBuilderFactory
++javax/xml/parsers/FactoryFinder
++javax/xml/parsers/FactoryFinder$1
++javax/xml/parsers/ParserConfigurationException
++javax/xml/parsers/SecuritySupport
++javax/xml/parsers/SecuritySupport$2
++javax/xml/parsers/SecuritySupport$5
++org/w3c/dom/Attr
++org/w3c/dom/CDATASection
++org/w3c/dom/CharacterData
++org/w3c/dom/Comment
++org/w3c/dom/DOMException
++org/w3c/dom/Document
++org/w3c/dom/DocumentFragment
++org/w3c/dom/DocumentType
++org/w3c/dom/Element
++org/w3c/dom/Entity
++org/w3c/dom/EntityReference
++org/w3c/dom/NamedNodeMap
++org/w3c/dom/Node
++org/w3c/dom/NodeList
++org/w3c/dom/Notation
++org/w3c/dom/ProcessingInstruction
++org/w3c/dom/Text
++org/w3c/dom/events/DocumentEvent
++org/w3c/dom/events/Event
++org/w3c/dom/events/EventException
++org/w3c/dom/events/EventTarget
++org/w3c/dom/events/MutationEvent
++org/w3c/dom/ranges/DocumentRange
++org/w3c/dom/ranges/Range
++org/w3c/dom/traversal/DocumentTraversal
++org/w3c/dom/traversal/NodeIterator
++org/w3c/dom/traversal/TreeWalker
++org/xml/sax/AttributeList
++org/xml/sax/ContentHandler
++org/xml/sax/DTDHandler
++org/xml/sax/EntityResolver
++org/xml/sax/ErrorHandler
++org/xml/sax/InputSource
++org/xml/sax/Locator
++org/xml/sax/SAXException
++org/xml/sax/SAXNotRecognizedException
++org/xml/sax/SAXNotSupportedException
++org/xml/sax/SAXParseException
++org/xml/sax/helpers/DefaultHandler
++sun/awt/AWTAccessor
++sun/awt/AWTAccessor$AWTEventAccessor
++sun/awt/AWTAccessor$ClientPropertyKeyAccessor
++sun/awt/AWTAccessor$ComponentAccessor
++sun/awt/AWTAccessor$ContainerAccessor
++sun/awt/AWTAccessor$CursorAccessor
++sun/awt/AWTAccessor$DefaultKeyboardFocusManagerAccessor
++sun/awt/AWTAccessor$EventQueueAccessor
++sun/awt/AWTAccessor$FrameAccessor
++sun/awt/AWTAccessor$InputEventAccessor
++sun/awt/AWTAccessor$InvocationEventAccessor
++sun/awt/AWTAccessor$KeyEventAccessor
++sun/awt/AWTAccessor$KeyboardFocusManagerAccessor
++sun/awt/AWTAccessor$SequencedEventAccessor
++sun/awt/AWTAccessor$ToolkitAccessor
++sun/awt/AWTAccessor$WindowAccessor
++sun/awt/AWTAutoShutdown
++sun/awt/AWTIcon32_java_icon16_png
++sun/awt/AWTIcon32_java_icon24_png
++sun/awt/AWTIcon32_java_icon32_png
++sun/awt/AWTIcon32_java_icon48_png
++sun/awt/AppContext
++sun/awt/AppContext$1
++sun/awt/AppContext$2
++sun/awt/AppContext$3
++sun/awt/AppContext$6
++sun/awt/AppContext$GetAppContextLock
++sun/awt/AppContext$State
++sun/awt/CausedFocusEvent
++sun/awt/CausedFocusEvent$Cause
++sun/awt/ComponentFactory
++sun/awt/ConstrainableGraphics
++sun/awt/DisplayChangedListener
++sun/awt/EmbeddedFrame
++sun/awt/EventQueueDelegate
++sun/awt/EventQueueItem
++sun/awt/FontConfiguration
++sun/awt/FontDescriptor
++sun/awt/GlobalCursorManager
++sun/awt/GlobalCursorManager$NativeUpdater
++sun/awt/HeadlessToolkit
++sun/awt/IconInfo
++sun/awt/InputMethodSupport
++sun/awt/KeyboardFocusManagerPeerImpl
++sun/awt/KeyboardFocusManagerPeerProvider
++sun/awt/LightweightFrame
++sun/awt/ModalityListener
++sun/awt/MostRecentKeyValue
++sun/awt/NullComponentPeer
++sun/awt/OSInfo
++sun/awt/OSInfo$1
++sun/awt/OSInfo$OSType
++sun/awt/OSInfo$WindowsVersion
++sun/awt/PaintEventDispatcher
++sun/awt/PeerEvent
++sun/awt/PostEventQueue
++sun/awt/RepaintArea
++sun/awt/RequestFocusController
++sun/awt/SubRegionShowable
++sun/awt/SunDisplayChanger
++sun/awt/SunGraphicsCallback
++sun/awt/SunHints
++sun/awt/SunHints$Key
++sun/awt/SunHints$LCDContrastKey
++sun/awt/SunHints$Value
++sun/awt/SunToolkit
++sun/awt/SunToolkit$ModalityListenerList
++sun/awt/TimedWindowEvent
++sun/awt/UNIXToolkit
++sun/awt/WindowClosingListener
++sun/awt/WindowClosingSupport
++sun/awt/X11/AwtGraphicsConfigData
++sun/awt/X11/AwtScreenData
++sun/awt/X11/MotifColorUtilities
++sun/awt/X11/MotifDnDConstants
++sun/awt/X11/MotifDnDDragSourceProtocol
++sun/awt/X11/MotifDnDDropTargetProtocol
++sun/awt/X11/Native
++sun/awt/X11/Native$1
++sun/awt/X11/OwnershipListener
++sun/awt/X11/PropMwmHints
++sun/awt/X11/UnsafeXDisposerRecord
++sun/awt/X11/WindowDimensions
++sun/awt/X11/WindowPropertyGetter
++sun/awt/X11/XAWTXSettings
++sun/awt/X11/XAnyEvent
++sun/awt/X11/XAtom
++sun/awt/X11/XAtomList
++sun/awt/X11/XAwtState
++sun/awt/X11/XBaseWindow
++sun/awt/X11/XBaseWindow$1
++sun/awt/X11/XBaseWindow$InitialiseState
++sun/awt/X11/XBaseWindow$StateLock
++sun/awt/X11/XCanvasPeer
++sun/awt/X11/XClientMessageEvent
++sun/awt/X11/XClipboard
++sun/awt/X11/XComponentPeer
++sun/awt/X11/XComponentPeer$1
++sun/awt/X11/XConfigureEvent
++sun/awt/X11/XContentWindow
++sun/awt/X11/XCreateWindowParams
++sun/awt/X11/XDecoratedPeer
++sun/awt/X11/XDnDConstants
++sun/awt/X11/XDnDDragSourceProtocol
++sun/awt/X11/XDnDDropTargetProtocol
++sun/awt/X11/XDragAndDropProtocols
++sun/awt/X11/XDragSourceContextPeer
++sun/awt/X11/XDragSourceProtocol
++sun/awt/X11/XDragSourceProtocolListener
++sun/awt/X11/XDropTargetContextPeer
++sun/awt/X11/XDropTargetContextPeer$XDropTargetProtocolListenerImpl
++sun/awt/X11/XDropTargetEventProcessor
++sun/awt/X11/XDropTargetProtocol
++sun/awt/X11/XDropTargetProtocolListener
++sun/awt/X11/XDropTargetRegistry
++sun/awt/X11/XEmbeddedFramePeer
++sun/awt/X11/XErrorEvent
++sun/awt/X11/XErrorHandler
++sun/awt/X11/XErrorHandler$IgnoreBadWindowHandler
++sun/awt/X11/XErrorHandler$VerifyChangePropertyHandler
++sun/awt/X11/XErrorHandler$XBaseErrorHandler
++sun/awt/X11/XErrorHandler$XErrorHandlerWithFlag
++sun/awt/X11/XErrorHandler$XShmAttachHandler
++sun/awt/X11/XErrorHandlerUtil
++sun/awt/X11/XEvent
++sun/awt/X11/XEventDispatcher
++sun/awt/X11/XExposeEvent
++sun/awt/X11/XFocusChangeEvent
++sun/awt/X11/XFocusProxyWindow
++sun/awt/X11/XFramePeer
++sun/awt/X11/XGlobalCursorManager
++sun/awt/X11/XInputMethod
++sun/awt/X11/XInputMethodDescriptor
++sun/awt/X11/XKeyboardFocusManagerPeer
++sun/awt/X11/XLabelPeer
++sun/awt/X11/XLayerProtocol
++sun/awt/X11/XMSelection
++sun/awt/X11/XMSelection$1
++sun/awt/X11/XMSelection$3
++sun/awt/X11/XMSelectionListener
++sun/awt/X11/XModifierKeymap
++sun/awt/X11/XNETProtocol
++sun/awt/X11/XPanelPeer
++sun/awt/X11/XPropertyCache
++sun/awt/X11/XPropertyEvent
++sun/awt/X11/XProtocol
++sun/awt/X11/XRepaintArea
++sun/awt/X11/XReparentEvent
++sun/awt/X11/XRootWindow
++sun/awt/X11/XSelection
++sun/awt/X11/XSelection$IncrementalTransferHandler
++sun/awt/X11/XSelection$SelectionEventHandler
++sun/awt/X11/XSetWindowAttributes
++sun/awt/X11/XSizeHints
++sun/awt/X11/XStateProtocol
++sun/awt/X11/XSystemTrayPeer
++sun/awt/X11/XToolkit
++sun/awt/X11/XToolkit$1
++sun/awt/X11/XToolkit$2
++sun/awt/X11/XToolkit$2$1
++sun/awt/X11/XToolkit$3
++sun/awt/X11/XToolkit$4
++sun/awt/X11/XToolkit$5
++sun/awt/X11/XUnmapEvent
++sun/awt/X11/XVisibilityEvent
++sun/awt/X11/XVisualInfo
++sun/awt/X11/XWINProtocol
++sun/awt/X11/XWM
++sun/awt/X11/XWM$1
++sun/awt/X11/XWMHints
++sun/awt/X11/XWindow
++sun/awt/X11/XWindowAttributes
++sun/awt/X11/XWindowAttributesData
++sun/awt/X11/XWindowPeer
++sun/awt/X11/XWindowPeer$2
++sun/awt/X11/XWindowPeer$4
++sun/awt/X11/XWrapperBase
++sun/awt/X11/XlibUtil
++sun/awt/X11/XlibWrapper
++sun/awt/X11ComponentPeer
++sun/awt/X11FontManager
++sun/awt/X11GraphicsConfig
++sun/awt/X11GraphicsConfig$X11GCDisposerRecord
++sun/awt/X11GraphicsDevice
++sun/awt/X11GraphicsEnvironment
++sun/awt/X11GraphicsEnvironment$1
++sun/awt/X11InputMethod
++sun/awt/X11InputMethodDescriptor
++sun/awt/XSettings
++sun/awt/XSettings$Update
++sun/awt/datatransfer/SunClipboard
++sun/awt/dnd/SunDragSourceContextPeer
++sun/awt/dnd/SunDropTargetContextPeer
++sun/awt/dnd/SunDropTargetEvent
++sun/awt/event/IgnorePaintEvent
++sun/awt/geom/PathConsumer2D
++sun/awt/im/ExecutableInputMethodManager
++sun/awt/im/ExecutableInputMethodManager$3
++sun/awt/im/InputContext
++sun/awt/im/InputMethodAdapter
++sun/awt/im/InputMethodContext
++sun/awt/im/InputMethodLocator
++sun/awt/im/InputMethodManager
++sun/awt/image/BufImgSurfaceData
++sun/awt/image/BufImgSurfaceData$ICMColorData
++sun/awt/image/BufImgSurfaceManager
++sun/awt/image/BufferedImageGraphicsConfig
++sun/awt/image/ByteComponentRaster
++sun/awt/image/ByteInterleavedRaster
++sun/awt/image/BytePackedRaster
++sun/awt/image/FetcherInfo
++sun/awt/image/GifFrame
++sun/awt/image/GifImageDecoder
++sun/awt/image/ImageConsumerQueue
++sun/awt/image/ImageDecoder
++sun/awt/image/ImageDecoder$1
++sun/awt/image/ImageFetchable
++sun/awt/image/ImageFetcher
++sun/awt/image/ImageFetcher$1
++sun/awt/image/ImageRepresentation
++sun/awt/image/ImageWatched
++sun/awt/image/ImageWatched$Link
++sun/awt/image/ImageWatched$WeakLink
++sun/awt/image/InputStreamImageSource
++sun/awt/image/IntegerComponentRaster
++sun/awt/image/IntegerInterleavedRaster
++sun/awt/image/NativeLibLoader
++sun/awt/image/NativeLibLoader$1
++sun/awt/image/OffScreenImage
++sun/awt/image/PNGFilterInputStream
++sun/awt/image/PNGImageDecoder
++sun/awt/image/PixelConverter
++sun/awt/image/PixelConverter$Argb
++sun/awt/image/PixelConverter$ArgbBm
++sun/awt/image/PixelConverter$ArgbPre
++sun/awt/image/PixelConverter$Bgrx
++sun/awt/image/PixelConverter$ByteGray
++sun/awt/image/PixelConverter$Rgba
++sun/awt/image/PixelConverter$RgbaPre
++sun/awt/image/PixelConverter$Rgbx
++sun/awt/image/PixelConverter$Ushort4444Argb
++sun/awt/image/PixelConverter$Ushort555Rgb
++sun/awt/image/PixelConverter$Ushort555Rgbx
++sun/awt/image/PixelConverter$Ushort565Rgb
++sun/awt/image/PixelConverter$UshortGray
++sun/awt/image/PixelConverter$Xbgr
++sun/awt/image/PixelConverter$Xrgb
++sun/awt/image/SunVolatileImage
++sun/awt/image/SunWritableRaster
++sun/awt/image/SunWritableRaster$DataStealer
++sun/awt/image/SurfaceManager
++sun/awt/image/SurfaceManager$ImageAccessor
++sun/awt/image/SurfaceManager$ProxiedGraphicsConfig
++sun/awt/image/ToolkitImage
++sun/awt/image/URLImageSource
++sun/awt/image/VolatileSurfaceManager
++sun/awt/motif/MFontConfiguration
++sun/awt/resources/awt
++sun/awt/util/IdentityArrayList
++sun/dc/DuctusRenderingEngine
++sun/dc/path/PathConsumer
++sun/dc/pr/PathDasher
++sun/dc/pr/PathDasher$1
++sun/dc/pr/PathStroker
++sun/dc/pr/PathStroker$1
++sun/font/AttributeValues
++sun/font/CMap
++sun/font/CMap$CMapFormat12
++sun/font/CMap$NullCMapClass
++sun/font/CharToGlyphMapper
++sun/font/CompositeFont
++sun/font/CompositeFontDescriptor
++sun/font/CompositeGlyphMapper
++sun/font/CompositeStrike
++sun/font/CoreMetrics
++sun/font/EAttribute
++sun/font/FcFontConfiguration
++sun/font/FileFont
++sun/font/FileFontStrike
++sun/font/Font2D
++sun/font/Font2DHandle
++sun/font/FontAccess
++sun/font/FontConfigManager
++sun/font/FontConfigManager$FcCompFont
++sun/font/FontConfigManager$FontConfigFont
++sun/font/FontConfigManager$FontConfigInfo
++sun/font/FontDesignMetrics
++sun/font/FontDesignMetrics$KeyReference
++sun/font/FontDesignMetrics$MetricsKey
++sun/font/FontFamily
++sun/font/FontLineMetrics
++sun/font/FontManager
++sun/font/FontManagerFactory
++sun/font/FontManagerFactory$1
++sun/font/FontManagerForSGE
++sun/font/FontManagerNativeLibrary
++sun/font/FontManagerNativeLibrary$1
++sun/font/FontScaler
++sun/font/FontStrike
++sun/font/FontStrikeDesc
++sun/font/FontStrikeDisposer
++sun/font/FontUtilities
++sun/font/FontUtilities$1
++sun/font/GlyphList
++sun/font/PhysicalFont
++sun/font/PhysicalStrike
++sun/font/StandardGlyphVector
++sun/font/StandardGlyphVector$GlyphStrike
++sun/font/StrikeCache
++sun/font/StrikeCache$1
++sun/font/StrikeCache$DisposableStrike
++sun/font/StrikeCache$SoftDisposerRef
++sun/font/StrikeMetrics
++sun/font/SunFontManager
++sun/font/SunFontManager$1
++sun/font/SunFontManager$11
++sun/font/SunFontManager$2
++sun/font/SunFontManager$3
++sun/font/SunFontManager$FontRegistrationInfo
++sun/font/SunFontManager$T1Filter
++sun/font/SunFontManager$TTFilter
++sun/font/T2KFontScaler
++sun/font/T2KFontScaler$1
++sun/font/TrueTypeFont
++sun/font/TrueTypeFont$1
++sun/font/TrueTypeFont$DirectoryEntry
++sun/font/TrueTypeFont$TTDisposerRecord
++sun/font/TrueTypeGlyphMapper
++sun/font/Type1Font
++sun/font/Type1Font$1
++sun/font/X11TextRenderer
++sun/java2d/BackBufferCapsProvider
++sun/java2d/DefaultDisposerRecord
++sun/java2d/DestSurfaceProvider
++sun/java2d/Disposer
++sun/java2d/Disposer$1
++sun/java2d/Disposer$2
++sun/java2d/Disposer$PollDisposable
++sun/java2d/DisposerRecord
++sun/java2d/DisposerTarget
++sun/java2d/FontSupport
++sun/java2d/InvalidPipeException
++sun/java2d/NullSurfaceData
++sun/java2d/StateTrackable
++sun/java2d/StateTrackable$State
++sun/java2d/StateTrackableDelegate
++sun/java2d/StateTrackableDelegate$2
++sun/java2d/SunGraphics2D
++sun/java2d/SunGraphicsEnvironment
++sun/java2d/SunGraphicsEnvironment$1
++sun/java2d/Surface
++sun/java2d/SurfaceData
++sun/java2d/SurfaceData$PixelToPgramLoopConverter
++sun/java2d/SurfaceData$PixelToShapeLoopConverter
++sun/java2d/SurfaceManagerFactory
++sun/java2d/UnixSurfaceManagerFactory
++sun/java2d/cmm/CMSManager
++sun/java2d/cmm/ProfileActivator
++sun/java2d/cmm/ProfileDeferralInfo
++sun/java2d/cmm/ProfileDeferralMgr
++sun/java2d/loops/Blit
++sun/java2d/loops/BlitBg
++sun/java2d/loops/CompositeType
++sun/java2d/loops/CustomComponent
++sun/java2d/loops/DrawGlyphList
++sun/java2d/loops/DrawGlyphListAA
++sun/java2d/loops/DrawGlyphListLCD
++sun/java2d/loops/DrawLine
++sun/java2d/loops/DrawParallelogram
++sun/java2d/loops/DrawPath
++sun/java2d/loops/DrawPolygons
++sun/java2d/loops/DrawRect
++sun/java2d/loops/FillParallelogram
++sun/java2d/loops/FillPath
++sun/java2d/loops/FillRect
++sun/java2d/loops/FillSpans
++sun/java2d/loops/FontInfo
++sun/java2d/loops/GeneralRenderer
++sun/java2d/loops/GraphicsPrimitive
++sun/java2d/loops/GraphicsPrimitiveMgr
++sun/java2d/loops/GraphicsPrimitiveMgr$1
++sun/java2d/loops/GraphicsPrimitiveMgr$2
++sun/java2d/loops/GraphicsPrimitiveMgr$PrimitiveSpec
++sun/java2d/loops/GraphicsPrimitiveProxy
++sun/java2d/loops/MaskBlit
++sun/java2d/loops/MaskFill
++sun/java2d/loops/RenderCache
++sun/java2d/loops/RenderCache$Entry
++sun/java2d/loops/RenderLoops
++sun/java2d/loops/ScaledBlit
++sun/java2d/loops/SurfaceType
++sun/java2d/loops/TransformHelper
++sun/java2d/loops/XORComposite
++sun/java2d/opengl/GLXGraphicsConfig
++sun/java2d/opengl/OGLGraphicsConfig
++sun/java2d/pipe/AAShapePipe
++sun/java2d/pipe/AATextRenderer
++sun/java2d/pipe/AlphaColorPipe
++sun/java2d/pipe/AlphaPaintPipe
++sun/java2d/pipe/CompositePipe
++sun/java2d/pipe/DrawImage
++sun/java2d/pipe/DrawImagePipe
++sun/java2d/pipe/GeneralCompositePipe
++sun/java2d/pipe/GlyphListLoopPipe
++sun/java2d/pipe/GlyphListPipe
++sun/java2d/pipe/LCDTextRenderer
++sun/java2d/pipe/LoopBasedPipe
++sun/java2d/pipe/LoopPipe
++sun/java2d/pipe/NullPipe
++sun/java2d/pipe/OutlineTextRenderer
++sun/java2d/pipe/ParallelogramPipe
++sun/java2d/pipe/PixelDrawPipe
++sun/java2d/pipe/PixelFillPipe
++sun/java2d/pipe/PixelToParallelogramConverter
++sun/java2d/pipe/PixelToShapeConverter
++sun/java2d/pipe/Region
++sun/java2d/pipe/Region$ImmutableRegion
++sun/java2d/pipe/RegionIterator
++sun/java2d/pipe/RenderingEngine
++sun/java2d/pipe/RenderingEngine$1
++sun/java2d/pipe/ShapeDrawPipe
++sun/java2d/pipe/ShapeSpanIterator
++sun/java2d/pipe/SolidTextRenderer
++sun/java2d/pipe/SpanClipRenderer
++sun/java2d/pipe/SpanIterator
++sun/java2d/pipe/SpanShapeRenderer
++sun/java2d/pipe/SpanShapeRenderer$Composite
++sun/java2d/pipe/TextPipe
++sun/java2d/pipe/TextRenderer
++sun/java2d/pipe/ValidatePipe
++sun/java2d/pipe/hw/AccelGraphicsConfig
++sun/java2d/pipe/hw/BufferedContextProvider
++sun/java2d/x11/X11Renderer
++sun/java2d/x11/X11SurfaceData
++sun/java2d/x11/X11SurfaceData$LazyPipe
++sun/java2d/x11/X11SurfaceData$X11WindowSurfaceData
++sun/java2d/x11/X11VolatileSurfaceManager
++sun/java2d/x11/XSurfaceData
++sun/java2d/xr/XRGraphicsConfig
++sun/launcher/LauncherHelper
++sun/launcher/LauncherHelper$FXHelper
++sun/misc/ASCIICaseInsensitiveComparator
++sun/misc/Cleaner
++sun/misc/CompoundEnumeration
++sun/misc/ExtensionDependency
++sun/misc/FDBigInteger
++sun/misc/FileURLMapper
++sun/misc/FloatingDecimal
++sun/misc/FloatingDecimal$1
++sun/misc/FloatingDecimal$ASCIIToBinaryBuffer
++sun/misc/FloatingDecimal$ASCIIToBinaryConverter
++sun/misc/FloatingDecimal$BinaryToASCIIBuffer
++sun/misc/FloatingDecimal$BinaryToASCIIConverter
++sun/misc/FloatingDecimal$ExceptionalBinaryToASCIIBuffer
++sun/misc/FloatingDecimal$PreparedASCIIToBinaryBuffer
++sun/misc/IOUtils
++sun/misc/JarIndex
++sun/misc/JavaAWTAccess
++sun/misc/JavaIOFileDescriptorAccess
++sun/misc/JavaLangAccess
++sun/misc/JavaNetAccess
++sun/misc/JavaNioAccess
++sun/misc/JavaSecurityAccess
++sun/misc/JavaSecurityProtectionDomainAccess
++sun/misc/JavaUtilJarAccess
++sun/misc/JavaUtilZipFileAccess
++sun/misc/Launcher
++sun/misc/Launcher$AppClassLoader
++sun/misc/Launcher$AppClassLoader$1
++sun/misc/Launcher$BootClassPathHolder
++sun/misc/Launcher$BootClassPathHolder$1
++sun/misc/Launcher$ExtClassLoader
++sun/misc/Launcher$ExtClassLoader$1
++sun/misc/Launcher$Factory
++sun/misc/MetaIndex
++sun/misc/NativeSignalHandler
++sun/misc/OSEnvironment
++sun/misc/Perf
++sun/misc/Perf$GetPerfAction
++sun/misc/PerfCounter
++sun/misc/PerfCounter$CoreCounters
++sun/misc/PerformanceLogger
++sun/misc/PerformanceLogger$TimeData
++sun/misc/PostVMInitHook
++sun/misc/Resource
++sun/misc/SharedSecrets
++sun/misc/Signal
++sun/misc/SignalHandler
++sun/misc/SoftCache
++sun/misc/SoftCache$ValueCell
++sun/misc/URLClassPath
++sun/misc/URLClassPath$1
++sun/misc/URLClassPath$2
++sun/misc/URLClassPath$3
++sun/misc/URLClassPath$FileLoader
++sun/misc/URLClassPath$JarLoader
++sun/misc/URLClassPath$JarLoader$1
++sun/misc/URLClassPath$JarLoader$2
++sun/misc/URLClassPath$Loader
++sun/misc/Unsafe
++sun/misc/VM
++sun/misc/Version
++sun/net/DefaultProgressMeteringPolicy
++sun/net/InetAddressCachePolicy
++sun/net/InetAddressCachePolicy$1
++sun/net/InetAddressCachePolicy$2
++sun/net/NetHooks
++sun/net/NetHooks$Provider
++sun/net/NetProperties
++sun/net/NetProperties$1
++sun/net/ProgressMeteringPolicy
++sun/net/ProgressMonitor
++sun/net/ResourceManager
++sun/net/sdp/SdpProvider
++sun/net/spi/DefaultProxySelector
++sun/net/spi/DefaultProxySelector$1
++sun/net/spi/DefaultProxySelector$3
++sun/net/spi/DefaultProxySelector$NonProxyInfo
++sun/net/spi/nameservice/NameService
++sun/net/util/IPAddressUtil
++sun/net/util/URLUtil
++sun/net/www/MessageHeader
++sun/net/www/MimeEntry
++sun/net/www/MimeTable
++sun/net/www/MimeTable$1
++sun/net/www/MimeTable$DefaultInstanceHolder
++sun/net/www/MimeTable$DefaultInstanceHolder$1
++sun/net/www/ParseUtil
++sun/net/www/URLConnection
++sun/net/www/protocol/file/FileURLConnection
++sun/net/www/protocol/file/Handler
++sun/net/www/protocol/http/Handler
++sun/net/www/protocol/jar/Handler
++sun/net/www/protocol/jar/JarFileFactory
++sun/net/www/protocol/jar/JarURLConnection
++sun/net/www/protocol/jar/JarURLConnection$JarURLInputStream
++sun/net/www/protocol/jar/URLJarFile
++sun/net/www/protocol/jar/URLJarFile$URLJarFileCloseController
++sun/net/www/protocol/jar/URLJarFile$URLJarFileEntry
++sun/nio/ByteBuffered
++sun/nio/ch/DirectBuffer
++sun/nio/ch/FileChannelImpl
++sun/nio/ch/FileChannelImpl$Unmapper
++sun/nio/ch/FileDispatcher
++sun/nio/ch/FileDispatcherImpl
++sun/nio/ch/IOStatus
++sun/nio/ch/IOUtil
++sun/nio/ch/IOUtil$1
++sun/nio/ch/Interruptible
++sun/nio/ch/NativeDispatcher
++sun/nio/ch/NativeThread
++sun/nio/ch/NativeThreadSet
++sun/nio/ch/Util
++sun/nio/ch/Util$1
++sun/nio/ch/Util$4
++sun/nio/ch/Util$BufferCache
++sun/nio/cs/ArrayDecoder
++sun/nio/cs/ArrayEncoder
++sun/nio/cs/FastCharsetProvider
++sun/nio/cs/HistoricallyNamedCharset
++sun/nio/cs/ISO_8859_1
++sun/nio/cs/ISO_8859_1$Encoder
++sun/nio/cs/StandardCharsets
++sun/nio/cs/StandardCharsets$Aliases
++sun/nio/cs/StandardCharsets$Cache
++sun/nio/cs/StandardCharsets$Classes
++sun/nio/cs/StreamDecoder
++sun/nio/cs/StreamEncoder
++sun/nio/cs/Surrogate
++sun/nio/cs/Surrogate$Parser
++sun/nio/cs/US_ASCII
++sun/nio/cs/US_ASCII$Decoder
++sun/nio/cs/UTF_16
++sun/nio/cs/UTF_16$Decoder
++sun/nio/cs/UTF_16BE
++sun/nio/cs/UTF_16LE
++sun/nio/cs/UTF_8
++sun/nio/cs/UTF_8$Decoder
++sun/nio/cs/UTF_8$Encoder
++sun/nio/cs/Unicode
++sun/nio/cs/UnicodeDecoder
++sun/print/PrinterGraphicsConfig
++sun/reflect/AccessorGenerator
++sun/reflect/BootstrapConstructorAccessorImpl
++sun/reflect/ByteVector
++sun/reflect/ByteVectorFactory
++sun/reflect/ByteVectorImpl
++sun/reflect/CallerSensitive
++sun/reflect/ClassDefiner
++sun/reflect/ClassDefiner$1
++sun/reflect/ClassFileAssembler
++sun/reflect/ClassFileConstants
++sun/reflect/ConstantPool
++sun/reflect/ConstructorAccessor
++sun/reflect/ConstructorAccessorImpl
++sun/reflect/DelegatingClassLoader
++sun/reflect/DelegatingConstructorAccessorImpl
++sun/reflect/DelegatingMethodAccessorImpl
++sun/reflect/FieldAccessor
++sun/reflect/FieldAccessorImpl
++sun/reflect/Label
++sun/reflect/Label$PatchInfo
++sun/reflect/LangReflectAccess
++sun/reflect/MagicAccessorImpl
++sun/reflect/MethodAccessor
++sun/reflect/MethodAccessorGenerator
++sun/reflect/MethodAccessorGenerator$1
++sun/reflect/MethodAccessorImpl
++sun/reflect/NativeConstructorAccessorImpl
++sun/reflect/NativeMethodAccessorImpl
++sun/reflect/Reflection
++sun/reflect/ReflectionFactory
++sun/reflect/ReflectionFactory$1
++sun/reflect/ReflectionFactory$GetReflectionFactoryAction
++sun/reflect/SerializationConstructorAccessorImpl
++sun/reflect/UTF8
++sun/reflect/UnsafeFieldAccessorFactory
++sun/reflect/UnsafeFieldAccessorImpl
++sun/reflect/UnsafeObjectFieldAccessorImpl
++sun/reflect/UnsafeQualifiedStaticFieldAccessorImpl
++sun/reflect/UnsafeQualifiedStaticIntegerFieldAccessorImpl
++sun/reflect/UnsafeQualifiedStaticLongFieldAccessorImpl
++sun/reflect/UnsafeQualifiedStaticObjectFieldAccessorImpl
++sun/reflect/UnsafeStaticFieldAccessorImpl
++sun/reflect/annotation/AnnotationType
++sun/reflect/generics/repository/AbstractRepository
++sun/reflect/generics/repository/ClassRepository
++sun/reflect/generics/repository/GenericDeclRepository
++sun/reflect/misc/MethodUtil
++sun/reflect/misc/MethodUtil$1
++sun/reflect/misc/ReflectUtil
++sun/security/action/GetBooleanAction
++sun/security/action/GetIntegerAction
++sun/security/action/GetPropertyAction
++sun/security/jca/GetInstance
++sun/security/jca/GetInstance$Instance
++sun/security/jca/ProviderConfig
++sun/security/jca/ProviderConfig$2
++sun/security/jca/ProviderList
++sun/security/jca/ProviderList$1
++sun/security/jca/ProviderList$2
++sun/security/jca/ProviderList$3
++sun/security/jca/ProviderList$ServiceList
++sun/security/jca/ProviderList$ServiceList$1
++sun/security/jca/Providers
++sun/security/jca/ServiceId
++sun/security/provider/ByteArrayAccess
++sun/security/provider/DSA
++sun/security/provider/DSA$LegacyDSA
++sun/security/provider/DSA$SHA1withDSA
++sun/security/provider/DSAParameters
++sun/security/provider/DSAPublicKey
++sun/security/provider/DigestBase
++sun/security/provider/NativePRNG
++sun/security/provider/NativePRNG$1
++sun/security/provider/NativePRNG$2
++sun/security/provider/NativePRNG$Blocking
++sun/security/provider/NativePRNG$NonBlocking
++sun/security/provider/NativePRNG$RandomIO
++sun/security/provider/NativePRNG$Variant
++sun/security/provider/SHA
++sun/security/provider/Sun
++sun/security/provider/SunEntries
++sun/security/provider/SunEntries$1
++sun/security/util/BitArray
++sun/security/util/ByteArrayLexOrder
++sun/security/util/Debug
++sun/security/util/DerEncoder
++sun/security/util/DerIndefLenConverter
++sun/security/util/DerInputBuffer
++sun/security/util/DerInputStream
++sun/security/util/DerOutputStream
++sun/security/util/DerValue
++sun/security/util/ManifestEntryVerifier
++sun/security/util/ObjectIdentifier
++sun/security/util/SignatureFileVerifier
++sun/security/x509/AlgorithmId
++sun/security/x509/X509Key
++sun/swing/DefaultLookup
++sun/swing/ImageIconUIResource
++sun/swing/JLightweightFrame
++sun/swing/MenuItemLayoutHelper
++sun/swing/MenuItemLayoutHelper$ColumnAlignment
++sun/swing/MenuItemLayoutHelper$LayoutResult
++sun/swing/MenuItemLayoutHelper$RectSize
++sun/swing/PrintColorUIResource
++sun/swing/StringUIClientPropertyKey
++sun/swing/SwingAccessor
++sun/swing/SwingAccessor$JTextComponentAccessor
++sun/swing/SwingLazyValue
++sun/swing/SwingLazyValue$1
++sun/swing/SwingUtilities2
++sun/swing/SwingUtilities2$2
++sun/swing/SwingUtilities2$AATextInfo
++sun/swing/SwingUtilities2$LSBCacheEntry
++sun/swing/UIAction
++sun/swing/UIClientPropertyKey
++sun/swing/table/DefaultTableCellHeaderRenderer
++sun/swing/table/DefaultTableCellHeaderRenderer$EmptyIcon
++sun/text/ComposedCharIter
++sun/text/IntHashtable
++sun/text/UCompactIntArray
++sun/text/normalizer/CharTrie
++sun/text/normalizer/CharTrie$FriendAgent
++sun/text/normalizer/ICUBinary
++sun/text/normalizer/ICUBinary$Authenticate
++sun/text/normalizer/ICUData
++sun/text/normalizer/IntTrie
++sun/text/normalizer/NormalizerDataReader
++sun/text/normalizer/NormalizerImpl
++sun/text/normalizer/NormalizerImpl$AuxTrieImpl
++sun/text/normalizer/NormalizerImpl$DecomposeArgs
++sun/text/normalizer/NormalizerImpl$FCDTrieImpl
++sun/text/normalizer/NormalizerImpl$NormTrieImpl
++sun/text/normalizer/Trie
++sun/text/normalizer/Trie$DataManipulate
++sun/text/normalizer/UTF16
++sun/text/normalizer/UnicodeMatcher
++sun/text/normalizer/UnicodeSet
++sun/text/resources/CollationData
++sun/text/resources/FormatData
++sun/text/resources/en/FormatData_en
++sun/text/resources/en/FormatData_en_US
++sun/util/CoreResourceBundleControl
++sun/util/PreHashedMap
++sun/util/ResourceBundleEnumeration
++sun/util/calendar/AbstractCalendar
++sun/util/calendar/BaseCalendar
++sun/util/calendar/BaseCalendar$Date
++sun/util/calendar/CalendarDate
++sun/util/calendar/CalendarSystem
++sun/util/calendar/CalendarUtils
++sun/util/calendar/Gregorian
++sun/util/calendar/Gregorian$Date
++sun/util/calendar/ZoneInfo
++sun/util/calendar/ZoneInfoFile
++sun/util/calendar/ZoneInfoFile$1
++sun/util/calendar/ZoneInfoFile$Checksum
++sun/util/calendar/ZoneInfoFile$ZoneOffsetTransitionRule
++sun/util/locale/BaseLocale
++sun/util/locale/BaseLocale$Cache
++sun/util/locale/BaseLocale$Key
++sun/util/locale/LanguageTag
++sun/util/locale/LocaleObjectCache
++sun/util/locale/LocaleObjectCache$CacheEntry
++sun/util/locale/LocaleUtils
++sun/util/locale/provider/AuxLocaleProviderAdapter
++sun/util/locale/provider/AuxLocaleProviderAdapter$NullProvider
++sun/util/locale/provider/AvailableLanguageTags
++sun/util/locale/provider/CalendarDataProviderImpl
++sun/util/locale/provider/CalendarDataUtility
++sun/util/locale/provider/CalendarDataUtility$CalendarWeekParameterGetter
++sun/util/locale/provider/CalendarProviderImpl
++sun/util/locale/provider/CollatorProviderImpl
++sun/util/locale/provider/CurrencyNameProviderImpl
++sun/util/locale/provider/DateFormatSymbolsProviderImpl
++sun/util/locale/provider/DecimalFormatSymbolsProviderImpl
++sun/util/locale/provider/JRELocaleProviderAdapter
++sun/util/locale/provider/JRELocaleProviderAdapter$1
++sun/util/locale/provider/LocaleDataMetaInfo
++sun/util/locale/provider/LocaleProviderAdapter
++sun/util/locale/provider/LocaleProviderAdapter$1
++sun/util/locale/provider/LocaleProviderAdapter$Type
++sun/util/locale/provider/LocaleResources
++sun/util/locale/provider/LocaleResources$ResourceReference
++sun/util/locale/provider/LocaleServiceProviderPool
++sun/util/locale/provider/LocaleServiceProviderPool$LocalizedObjectGetter
++sun/util/locale/provider/NumberFormatProviderImpl
++sun/util/locale/provider/ResourceBundleBasedAdapter
++sun/util/locale/provider/SPILocaleProviderAdapter
++sun/util/locale/provider/SPILocaleProviderAdapter$1
++sun/util/locale/provider/TimeZoneNameProviderImpl
++sun/util/locale/provider/TimeZoneNameUtility
++sun/util/locale/provider/TimeZoneNameUtility$TimeZoneNameGetter
++sun/util/logging/LoggingProxy
++sun/util/logging/LoggingSupport
++sun/util/logging/LoggingSupport$1
++sun/util/logging/LoggingSupport$2
++sun/util/logging/PlatformLogger
++sun/util/logging/PlatformLogger$1
++sun/util/logging/PlatformLogger$DefaultLoggerProxy
++sun/util/logging/PlatformLogger$JavaLoggerProxy
++sun/util/logging/PlatformLogger$Level
++sun/util/logging/PlatformLogger$LoggerProxy
++sun/util/logging/resources/logging
++sun/util/resources/CalendarData
++sun/util/resources/CurrencyNames
++sun/util/resources/LocaleData
++sun/util/resources/LocaleData$1
++sun/util/resources/LocaleData$LocaleDataResourceBundleControl
++sun/util/resources/LocaleNamesBundle
++sun/util/resources/OpenListResourceBundle
++sun/util/resources/ParallelListResourceBundle
++sun/util/resources/ParallelListResourceBundle$KeySet
++sun/util/resources/TimeZoneNames
++sun/util/resources/TimeZoneNamesBundle
++sun/util/resources/en/CalendarData_en
++sun/util/resources/en/CurrencyNames_en_US
++sun/util/resources/en/TimeZoneNames_en
++sun/util/spi/CalendarProvider
++# e4fe875988768cf5
+Index: b/jdk/make/Images.gmk
+===================================================================
+--- a/jdk/make/Images.gmk
++++ b/jdk/make/Images.gmk
+@@ -236,11 +236,11 @@ ifeq ($(PROFILE), )
+ endif
+ 
+ JDK_LIB_FILES := $(NOT_JRE_LIB_FILES)
+-ifeq ($(OPENJDK_TARGET_OS), linux)
++ifneq ($(findstring $(OPENJDK_TARGET_OS), linux bsd),)
+   JDK_LIB_FILES += jexec
+ endif
+ 
+-ifneq ($(findstring $(OPENJDK_TARGET_OS), linux solaris),) # If Linux or Solaris
++ifneq ($(findstring $(OPENJDK_TARGET_OS), linux bsd solaris),) # If Linux, BSD or Solaris
+     JDK_LIB_FILES += $(LIBRARY_PREFIX)jli$(SHARED_LIBRARY_SUFFIX) \
+ 		     $(LIBRARY_PREFIX)jawt$(SHARED_LIBRARY_SUFFIX)
+ endif
+@@ -383,7 +383,7 @@ ifneq ($(OPENJDK_TARGET_OS), windows)
+   # This variable is potentially overridden in the closed makefile.
+   MAN_SRC_BASEDIR ?= $(JDK_TOPDIR)/src
+ 
+-  ifeq ($(OPENJDK_TARGET_OS), linux)
++  ifneq ($(findstring $(OPENJDK_TARGET_OS), linux bsd),)
+     MAN_SRC_DIR = $(MAN_SRC_BASEDIR)/linux/doc
+     MAN1_SUBDIR = man
+   endif
+@@ -447,7 +447,7 @@ ifneq ($(OPENJDK_TARGET_OS), windows)
+ 	$(install-file)
+   endif
+ 
+-  ifeq ($(OPENJDK_TARGET_OS), linux)
++  ifneq ($(findstring $(OPENJDK_TARGET_OS), linux bsd),)
+     $(JRE_IMAGE_DIR)/man/ja:
+ 	$(ECHO) $(LOG_INFO) Creating $(patsubst $(OUTPUT_ROOT)/%,%,$@)
+ 	$(CD) $(@D) && $(RM) ja && $(LN) -s ja_JP.UTF-8 ja
+@@ -467,7 +467,7 @@ ifneq ($(OPENJDK_TARGET_OS), windows)
+ 	$(CD) $(@D) && $(RM) ja && $(LN) -s ja_JP.UTF-8 ja
+   endif
+ 
+-  ifeq ($(OPENJDK_TARGET_OS), linux)
++  ifneq ($(findstring $(OPENJDK_TARGET_OS), linux bsd),)
+     JRE_MAN_PAGE_LIST = $(addprefix $(JRE_IMAGE_DIR)/man/man1/, $(JRE_MAN_PAGES)) \
+         $(addprefix $(JRE_IMAGE_DIR)/man/ja_JP.UTF-8/man1/, $(JRE_MAN_PAGES)) \
+         $(JRE_IMAGE_DIR)/man/ja
+Index: b/jdk/make/mapfiles/libnio/mapfile-bsd
+===================================================================
+--- /dev/null
++++ b/jdk/make/mapfiles/libnio/mapfile-bsd
+@@ -0,0 +1,190 @@
++#
++# Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved.
++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++#
++# This code is free software; you can redistribute it and/or modify it
++# under the terms of the GNU General Public License version 2 only, as
++# published by the Free Software Foundation.  Oracle designates this
++# particular file as subject to the "Classpath" exception as provided
++# by Oracle in the LICENSE file that accompanied this code.
++#
++# This code is distributed in the hope that it will be useful, but WITHOUT
++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++# version 2 for more details (a copy is included in the LICENSE file that
++# accompanied this code).
++#
++# You should have received a copy of the GNU General Public License version
++# 2 along with this work; if not, write to the Free Software Foundation,
++# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++#
++# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++# or visit www.oracle.com if you need additional information or have any
++# questions.
++#
++
++SUNWprivate_1.1 {
++	global:
++                Java_java_nio_MappedByteBuffer_force0;
++                Java_java_nio_MappedByteBuffer_isLoaded0;
++                Java_java_nio_MappedByteBuffer_load0;
++                Java_sun_nio_ch_DatagramChannelImpl_disconnect0;
++                Java_sun_nio_ch_DatagramChannelImpl_initIDs;
++                Java_sun_nio_ch_DatagramChannelImpl_receive0;
++                Java_sun_nio_ch_DatagramChannelImpl_send0;
++                Java_sun_nio_ch_DatagramDispatcher_read0;
++                Java_sun_nio_ch_DatagramDispatcher_readv0;
++                Java_sun_nio_ch_DatagramDispatcher_write0;
++                Java_sun_nio_ch_DatagramDispatcher_writev0;
++                Java_sun_nio_ch_EPollArrayWrapper_epollCreate;
++                Java_sun_nio_ch_EPollArrayWrapper_epollCtl;
++                Java_sun_nio_ch_EPollArrayWrapper_epollWait;
++		Java_sun_nio_ch_EPollArrayWrapper_init;
++		Java_sun_nio_ch_EPollArrayWrapper_interrupt;
++		Java_sun_nio_ch_EPollArrayWrapper_offsetofData;
++		Java_sun_nio_ch_EPollArrayWrapper_sizeofEPollEvent;
++		Java_sun_nio_ch_EPoll_eventSize;
++		Java_sun_nio_ch_EPoll_eventsOffset;
++		Java_sun_nio_ch_EPoll_dataOffset;
++		Java_sun_nio_ch_EPoll_epollCreate;
++		Java_sun_nio_ch_EPoll_epollCtl;
++		Java_sun_nio_ch_EPoll_epollWait;
++		Java_sun_nio_ch_EPollPort_close0;
++		Java_sun_nio_ch_EPollPort_drain1;
++		Java_sun_nio_ch_EPollPort_interrupt;
++		Java_sun_nio_ch_EPollPort_socketpair;
++                Java_sun_nio_ch_FileChannelImpl_close0;
++                Java_sun_nio_ch_FileChannelImpl_initIDs;
++                Java_sun_nio_ch_FileChannelImpl_map0;
++                Java_sun_nio_ch_FileChannelImpl_position0;
++                Java_sun_nio_ch_FileChannelImpl_transferTo0;
++                Java_sun_nio_ch_FileChannelImpl_unmap0;
++                Java_sun_nio_ch_FileDispatcherImpl_close0;
++                Java_sun_nio_ch_FileDispatcherImpl_closeIntFD;
++		Java_sun_nio_ch_FileDispatcherImpl_force0;
++                Java_sun_nio_ch_FileDispatcherImpl_init;
++		Java_sun_nio_ch_FileDispatcherImpl_lock0;
++                Java_sun_nio_ch_FileDispatcherImpl_preClose0;
++                Java_sun_nio_ch_FileDispatcherImpl_pread0;
++                Java_sun_nio_ch_FileDispatcherImpl_pwrite0;
++                Java_sun_nio_ch_FileDispatcherImpl_read0;
++                Java_sun_nio_ch_FileDispatcherImpl_readv0;
++		Java_sun_nio_ch_FileDispatcherImpl_release0;
++		Java_sun_nio_ch_FileDispatcherImpl_size0;
++		Java_sun_nio_ch_FileDispatcherImpl_truncate0;
++                Java_sun_nio_ch_FileDispatcherImpl_write0;
++                Java_sun_nio_ch_FileDispatcherImpl_writev0;
++                Java_sun_nio_ch_FileKey_init;
++                Java_sun_nio_ch_FileKey_initIDs;
++		Java_sun_nio_ch_InheritedChannel_close0;
++		Java_sun_nio_ch_InheritedChannel_dup;
++		Java_sun_nio_ch_InheritedChannel_dup2;
++		Java_sun_nio_ch_InheritedChannel_open0;
++		Java_sun_nio_ch_InheritedChannel_peerAddress0;
++		Java_sun_nio_ch_InheritedChannel_peerPort0;
++		Java_sun_nio_ch_InheritedChannel_soType0;
++                Java_sun_nio_ch_IOUtil_configureBlocking;
++                Java_sun_nio_ch_IOUtil_drain;
++                Java_sun_nio_ch_IOUtil_fdVal;
++		Java_sun_nio_ch_IOUtil_fdLimit;
++                Java_sun_nio_ch_IOUtil_initIDs;
++		Java_sun_nio_ch_IOUtil_iovMax;
++                Java_sun_nio_ch_IOUtil_makePipe;
++                Java_sun_nio_ch_IOUtil_randomBytes;
++                Java_sun_nio_ch_IOUtil_setfdVal;
++		Java_sun_nio_ch_NativeThread_current;
++		Java_sun_nio_ch_NativeThread_init;
++		Java_sun_nio_ch_NativeThread_signal;
++		Java_sun_nio_ch_Net_canIPv6SocketJoinIPv4Group0;
++		Java_sun_nio_ch_Net_canJoin6WithIPv4Group0;
++		Java_sun_nio_ch_Net_socket0;
++		Java_sun_nio_ch_Net_bind0;
++		Java_sun_nio_ch_Net_connect0;
++		Java_sun_nio_ch_Net_listen;
++		Java_sun_nio_ch_Net_localPort;
++		Java_sun_nio_ch_Net_localInetAddress;
++		Java_sun_nio_ch_Net_getIntOption0;
++		Java_sun_nio_ch_Net_setIntOption0;
++                Java_sun_nio_ch_Net_initIDs;
++		Java_sun_nio_ch_Net_isIPv6Available0;
++		Java_sun_nio_ch_Net_joinOrDrop4;
++		Java_sun_nio_ch_Net_blockOrUnblock4;
++		Java_sun_nio_ch_Net_joinOrDrop6;
++		Java_sun_nio_ch_Net_blockOrUnblock6;
++		Java_sun_nio_ch_Net_setInterface4;
++		Java_sun_nio_ch_Net_getInterface4;
++		Java_sun_nio_ch_Net_setInterface6;
++		Java_sun_nio_ch_Net_getInterface6;
++		Java_sun_nio_ch_Net_shutdown;
++		Java_sun_nio_ch_Net_poll;
++		Java_sun_nio_ch_Net_pollinValue;
++		Java_sun_nio_ch_Net_polloutValue;
++		Java_sun_nio_ch_Net_pollerrValue;
++		Java_sun_nio_ch_Net_pollhupValue;
++		Java_sun_nio_ch_Net_pollnvalValue;
++		Java_sun_nio_ch_Net_pollconnValue;
++                Java_sun_nio_ch_Net_isExclusiveBindAvailable;
++                Java_sun_nio_ch_PollArrayWrapper_interrupt;
++                Java_sun_nio_ch_PollArrayWrapper_poll0;
++                Java_sun_nio_ch_ServerSocketChannelImpl_accept0;
++                Java_sun_nio_ch_ServerSocketChannelImpl_initIDs;
++                Java_sun_nio_ch_SocketChannelImpl_checkConnect;
++		Java_sun_nio_ch_SocketChannelImpl_sendOutOfBandData;
++		Java_sun_nio_ch_UnixAsynchronousServerSocketChannelImpl_accept0;
++		Java_sun_nio_ch_UnixAsynchronousServerSocketChannelImpl_initIDs;
++		Java_sun_nio_ch_UnixAsynchronousSocketChannelImpl_checkConnect;
++		Java_sun_nio_fs_GnomeFileTypeDetector_initializeGio;
++		Java_sun_nio_fs_GnomeFileTypeDetector_probeUsingGio;
++		Java_sun_nio_fs_GnomeFileTypeDetector_initializeGnomeVfs;
++		Java_sun_nio_fs_GnomeFileTypeDetector_probeUsingGnomeVfs;
++		Java_sun_nio_fs_UnixNativeDispatcher_init;
++		Java_sun_nio_fs_UnixNativeDispatcher_getcwd;
++		Java_sun_nio_fs_UnixNativeDispatcher_strerror;
++		Java_sun_nio_fs_UnixNativeDispatcher_dup;
++		Java_sun_nio_fs_UnixNativeDispatcher_access0;
++		Java_sun_nio_fs_UnixNativeDispatcher_stat0;
++		Java_sun_nio_fs_UnixNativeDispatcher_lstat0;
++		Java_sun_nio_fs_UnixNativeDispatcher_fstat;
++		Java_sun_nio_fs_UnixNativeDispatcher_fstatat0;
++		Java_sun_nio_fs_UnixNativeDispatcher_chmod0;
++		Java_sun_nio_fs_UnixNativeDispatcher_fchmod;
++		Java_sun_nio_fs_UnixNativeDispatcher_chown0;
++		Java_sun_nio_fs_UnixNativeDispatcher_lchown0;
++		Java_sun_nio_fs_UnixNativeDispatcher_fchown;
++		Java_sun_nio_fs_UnixNativeDispatcher_utimes0;
++		Java_sun_nio_fs_UnixNativeDispatcher_futimes;
++		Java_sun_nio_fs_UnixNativeDispatcher_open0;
++		Java_sun_nio_fs_UnixNativeDispatcher_openat0;
++		Java_sun_nio_fs_UnixNativeDispatcher_close;
++		Java_sun_nio_fs_UnixNativeDispatcher_read;
++		Java_sun_nio_fs_UnixNativeDispatcher_write;
++		Java_sun_nio_fs_UnixNativeDispatcher_fopen0;
++		Java_sun_nio_fs_UnixNativeDispatcher_fclose;
++		Java_sun_nio_fs_UnixNativeDispatcher_opendir0;
++		Java_sun_nio_fs_UnixNativeDispatcher_fdopendir;
++		Java_sun_nio_fs_UnixNativeDispatcher_readdir;
++		Java_sun_nio_fs_UnixNativeDispatcher_closedir;
++		Java_sun_nio_fs_UnixNativeDispatcher_link0;
++		Java_sun_nio_fs_UnixNativeDispatcher_unlink0;
++		Java_sun_nio_fs_UnixNativeDispatcher_unlinkat0;
++		Java_sun_nio_fs_UnixNativeDispatcher_rename0;
++		Java_sun_nio_fs_UnixNativeDispatcher_renameat0;
++		Java_sun_nio_fs_UnixNativeDispatcher_mkdir0;
++		Java_sun_nio_fs_UnixNativeDispatcher_rmdir0;
++		Java_sun_nio_fs_UnixNativeDispatcher_symlink0;
++		Java_sun_nio_fs_UnixNativeDispatcher_readlink0;
++		Java_sun_nio_fs_UnixNativeDispatcher_realpath0;
++		Java_sun_nio_fs_UnixNativeDispatcher_statvfs0;
++		Java_sun_nio_fs_UnixNativeDispatcher_pathconf0;
++		Java_sun_nio_fs_UnixNativeDispatcher_fpathconf;
++		Java_sun_nio_fs_UnixNativeDispatcher_mknod0;
++		Java_sun_nio_fs_UnixNativeDispatcher_getpwuid;
++		Java_sun_nio_fs_UnixNativeDispatcher_getgrgid;
++		Java_sun_nio_fs_UnixNativeDispatcher_getpwnam0;
++		Java_sun_nio_fs_UnixNativeDispatcher_getgrnam0;
++		Java_sun_nio_fs_UnixCopyFile_transfer;
++		handleSocketError;
++
++	local:
++		*;
++};
+Index: b/jdk/src/solaris/native/sun/nio/ch/FileDispatcherImpl.c
+===================================================================
+--- a/jdk/src/solaris/native/sun/nio/ch/FileDispatcherImpl.c
++++ b/jdk/src/solaris/native/sun/nio/ch/FileDispatcherImpl.c
+@@ -45,8 +45,12 @@
+ #define stat64 stat
+ #define flock64 flock
+ #define off64_t off_t
++#ifndef F_SETLKW64
+ #define F_SETLKW64 F_SETLKW
++#endif
++#ifndef F_SETLK64
+ #define F_SETLK64 F_SETLK
++#endif
+ 
+ #define pread64 pread
+ #define pwrite64 pwrite
+Index: b/jdk/make/lib/Awt2dLibraries.gmk
+===================================================================
+--- a/jdk/make/lib/Awt2dLibraries.gmk
++++ b/jdk/make/lib/Awt2dLibraries.gmk
+@@ -309,7 +309,7 @@ LIBAWT_FILES := \
+     debug_trace.c \
+     debug_util.c
+ 
+-ifneq (, $(filter $(OPENJDK_TARGET_OS), solaris linux aix))
++ifneq (, $(filter $(OPENJDK_TARGET_OS), bsd solaris linux aix))
+   LIBAWT_FILES += awt_LoadLibrary.c initIDs.c img_colors.c
+ endif
+ 
+@@ -478,7 +478,7 @@
+     MAPFILE := $(LIBAWT_MAPFILE), \
+     LDFLAGS := $(LDFLAGS_JDKLIB) $(call SET_SHARED_LIBRARY_ORIGIN), \
+     LDFLAGS_solaris := -R/usr/dt/lib$(OPENJDK_TARGET_CPU_ISADIR) -R$(OPENWIN_LIB)$(OPENJDK_TARGET_CPU_ISADIR), \
+-    LDFLAGS_SUFFIX_linux := -ljvm $(LIBM) $(LIBDL) -ljava, \
++    LDFLAGS_SUFFIX_bsd := -ljvm $(LIBM) $(LIBDL) -ljava, \
+     LDFLAGS_SUFFIX_solaris := -ljvm $(LIBM) $(LIBDL) -ljava -lc, \
+     LDFLAGS_SUFFIX_aix :=-ljvm $(LIBM) $(LIBDL) -ljava -lm,\
+     LDFLAGS_SUFFIX_macosx := -lmlib_image -ljvm $(LIBM) \
+@@ -637,7 +637,7 @@ ifeq ($(findstring $(OPENJDK_TARGET_OS),
+         MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libawt_xawt/mapfile-vers, \
+         LDFLAGS := $(LDFLAGS_JDKLIB) \
+             $(X_LIBS) $(LIBAWT_XAWT_LDFLAGS), \
+-        LDFLAGS_linux := $(call SET_SHARED_LIBRARY_ORIGIN) \
++        LDFLAGS_bsd := $(call SET_SHARED_LIBRARY_ORIGIN) \
+             $(call SET_SHARED_LIBRARY_ORIGIN,/..), \
+         LDFLAGS_solaris := -L$(OPENWIN_HOME)/sfw/lib$(OPENJDK_TARGET_CPU_ISADIR) \
+             -L$(OPENWIN_LIB)$(OPENJDK_TARGET_CPU_ISADIR) \
+@@ -687,7 +687,7 @@
+     LDFLAGS_windows := $(WIN_AWT_LIB) $(WIN_JAVA_LIB), \
+     LDFLAGS_SUFFIX_solaris := -lawt -ljava -ljvm -lc, \
+     LDFLAGS_SUFFIX_macosx := $(LIBM) -lawt -ljava -ljvm, \
+-    LDFLAGS_SUFFIX_linux := -lm -lawt -ljava -ljvm -llcms2, \
++    LDFLAGS_SUFFIX_bsd := -lm -lawt -ljava -ljvm -llcms2, \
+     LDFLAGS_SUFFIX_aix := -lm -lawt -ljava -ljvm,\
+     VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \
+     RC_FLAGS := $(RC_FLAGS) \
+@@ -854,13 +854,13 @@ ifeq ($(BUILD_HEADLESS), true)
+         MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libawt_headless/mapfile-vers, \
+         LDFLAGS := $(LDFLAGS_JDKLIB) \
+             $(call SET_SHARED_LIBRARY_ORIGIN), \
+-        LDFLAGS_linux := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \
++        LDFLAGS_bsd := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \
+         LDFLAGS_solaris := $(call SET_SHARED_LIBRARY_ORIGIN,/..) \
+             -R/usr/dt/lib$(OPENJDK_TARGET_CPU_ISADIR) \
+             -R$(OPENWIN_LIB)$(OPENJDK_TARGET_CPU_ISADIR), \
+         LDFLAGS_macosx := $(call SET_SHARED_LIBRARY_ORIGIN)., \
+         REORDER := $(LIBAWT_HEADLESS_REORDER), \
+-        LDFLAGS_SUFFIX_linux := -ljvm -lawt -lm $(LIBDL) -ljava, \
++        LDFLAGS_SUFFIX_bsd := -ljvm -lawt -lm $(LIBDL) -ljava, \
+         LDFLAGS_SUFFIX_aix := -ljvm -lawt -ljava,\
+         LDFLAGS_SUFFIX_solaris := $(LIBDL) -ljvm -lawt -lm -ljava $(LIBCXX) -lc, \
+         OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libawt_headless, \
+@@ -937,7 +937,7 @@ $(eval $(call SetupNativeCompilation,BUI
+     LDFLAGS := $(subst -Xlinker -z -Xlinker defs,,$(LDFLAGS_JDKLIB)) $(LDFLAGS_CXX_JDK) \
+         $(call SET_SHARED_LIBRARY_ORIGIN), \
+     LDFLAGS_SUFFIX := $(BUILD_LIBFONTMANAGER_FONTLIB), \
+-    LDFLAGS_SUFFIX_linux := -lawt $(LIBM) $(LIBCXX) -ljava -ljvm -lc, \
++    LDFLAGS_SUFFIX_bsd := -lawt $(LIBM) $(LIBCXX) -ljava -ljvm -lc, \
+     LDFLAGS_SUFFIX_solaris := -lawt -lawt_headless -lc $(LIBM) $(LIBCXX) -ljava -ljvm, \
+     LDFLAGS_SUFFIX_aix := -lawt -lawt_headless $(LIBM) $(LIBCXX) -ljava -ljvm,\
+     LDFLAGS_SUFFIX_macosx := -lawt $(LIBM) $(LIBCXX) -undefined dynamic_lookup \
+@@ -1088,7 +1088,7 @@ else # OPENJDK_TARGET_OS not windows
+       LDFLAGS := $(LDFLAGS_JDKLIB) \
+           $(call SET_SHARED_LIBRARY_ORIGIN), \
+       LDFLAGS_solaris := -L$(OPENWIN_HOME)/sfw/lib$(OPENJDK_TARGET_CPU_ISADIR) -L$(OPENWIN_LIB)$(OPENJDK_TARGET_CPU_ISADIR), \
+-      LDFLAGS_SUFFIX_linux := $(JAWT_LIBS) $(LDFLAGS_JDKLIB_SUFFIX), \
++      LDFLAGS_SUFFIX_bsd := $(JAWT_LIBS) $(LDFLAGS_JDKLIB_SUFFIX), \
+       LDFLAGS_SUFFIX_aix := $(JAWT_LIBS) $(LDFLAGS_JDKLIB_SUFFIX),\
+       LDFLAGS_SUFFIX_solaris := $(JAWT_LIBS) $(LDFLAGS_JDKLIB_SUFFIX) -lXrender, \
+       LDFLAGS_SUFFIX_macosx := -Xlinker -rpath -Xlinker @loader_path $(JAWT_LIBS) \
+@@ -1144,7 +1144,7 @@ ifndef OPENJDK
+       MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libkcms/mapfile-vers, \
+       LDFLAGS := $(LDFLAGS_JDKLIB) \
+           $(call SET_SHARED_LIBRARY_ORIGIN), \
+-      LDFLAGS_SUFFIX_linux := -lc -lpthread, \
++      LDFLAGS_SUFFIX_bsd := -lc -lpthread, \
+       LDFLAGS_SUFFIX_solaris := -lc, \
+       LDFLAGS_SUFFIX_windows := $(WIN_JAVA_LIB) advapi32.lib user32.lib version.lib, \
+       LDFLAGS_SUFFIX_posix := -lm -ljava -ljvm, \
+Index: b/jdk/src/share/lib/security/java.security-bsd
+===================================================================
+--- /dev/null
++++ b/jdk/src/share/lib/security/java.security-bsd
+@@ -0,0 +1,569 @@
++#
++# This is the "master security properties file".
++#
++# An alternate java.security properties file may be specified
++# from the command line via the system property
++#
++#    -Djava.security.properties=<URL>
++#
++# This properties file appends to the master security properties file.
++# If both properties files specify values for the same key, the value
++# from the command-line properties file is selected, as it is the last
++# one loaded.
++#
++# Also, if you specify
++#
++#    -Djava.security.properties==<URL> (2 equals),
++#
++# then that properties file completely overrides the master security
++# properties file.
++#
++# To disable the ability to specify an additional properties file from
++# the command line, set the key security.overridePropertiesFile
++# to false in the master security properties file. It is set to true
++# by default.
++
++# In this file, various security properties are set for use by
++# java.security classes. This is where users can statically register
++# Cryptography Package Providers ("providers" for short). The term
++# "provider" refers to a package or set of packages that supply a
++# concrete implementation of a subset of the cryptography aspects of
++# the Java Security API. A provider may, for example, implement one or
++# more digital signature algorithms or message digest algorithms.
++#
++# Each provider must implement a subclass of the Provider class.
++# To register a provider in this master security properties file,
++# specify the Provider subclass name and priority in the format
++#
++#    security.provider.<n>=<className>
++#
++# This declares a provider, and specifies its preference
++# order n. The preference order is the order in which providers are
++# searched for requested algorithms (when no specific provider is
++# requested). The order is 1-based; 1 is the most preferred, followed
++# by 2, and so on.
++#
++# <className> must specify the subclass of the Provider class whose
++# constructor sets the values of various properties that are required
++# for the Java Security API to look up the algorithms or other
++# facilities implemented by the provider.
++#
++# There must be at least one provider specification in java.security.
++# There is a default provider that comes standard with the JDK. It
++# is called the "SUN" provider, and its Provider subclass
++# named Sun appears in the sun.security.provider package. Thus, the
++# "SUN" provider is registered via the following:
++#
++#    security.provider.1=sun.security.provider.Sun
++#
++# (The number 1 is used for the default provider.)
++#
++# Note: Providers can be dynamically registered instead by calls to
++# either the addProvider or insertProviderAt method in the Security
++# class.
++
++#
++# List of providers and their preference orders (see above):
++#
++security.provider.1=sun.security.provider.Sun
++security.provider.2=sun.security.rsa.SunRsaSign
++security.provider.3=sun.security.ec.SunEC
++security.provider.4=com.sun.net.ssl.internal.ssl.Provider
++security.provider.5=com.sun.crypto.provider.SunJCE
++security.provider.6=sun.security.jgss.SunProvider
++security.provider.7=com.sun.security.sasl.Provider
++security.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRI
++security.provider.9=sun.security.smartcardio.SunPCSC
++
++#
++# Sun Provider SecureRandom seed source.
++#
++# Select the primary source of seed data for the "SHA1PRNG" and
++# "NativePRNG" SecureRandom implementations in the "Sun" provider.
++# (Other SecureRandom implementations might also use this property.)
++#
++# On Unix-like systems (for example, Solaris/Linux/MacOS), the
++# "NativePRNG" and "SHA1PRNG" implementations obtains seed data from
++# special device files such as file:/dev/random.
++#
++# On Windows systems, specifying the URLs "file:/dev/random" or
++# "file:/dev/urandom" will enable the native Microsoft CryptoAPI seeding
++# mechanism for SHA1PRNG.
++#
++# By default, an attempt is made to use the entropy gathering device
++# specified by the "securerandom.source" Security property.  If an
++# exception occurs while accessing the specified URL:
++#
++#     SHA1PRNG:
++#         the traditional system/thread activity algorithm will be used.
++#
++#     NativePRNG:
++#         a default value of /dev/random will be used.  If neither
++#         are available, the implementation will be disabled.
++#         "file" is the only currently supported protocol type.
++#
++# The entropy gathering device can also be specified with the System
++# property "java.security.egd". For example:
++#
++#   % java -Djava.security.egd=file:/dev/random MainClass
++#
++# Specifying this System property will override the
++# "securerandom.source" Security property.
++#
++# In addition, if "file:/dev/random" or "file:/dev/urandom" is
++# specified, the "NativePRNG" implementation will be more preferred than
++# SHA1PRNG in the Sun provider.
++#
++securerandom.source=file:/dev/random
++
++#
++# A list of known strong SecureRandom implementations.
++#
++# To help guide applications in selecting a suitable strong
++# java.security.SecureRandom implementation, Java distributions should
++# indicate a list of known strong implementations using the property.
++#
++# This is a comma-separated list of algorithm and/or algorithm:provider
++# entries.
++#
++securerandom.strongAlgorithms=NativePRNGBlocking:SUN
++
++#
++# Class to instantiate as the javax.security.auth.login.Configuration
++# provider.
++#
++login.configuration.provider=sun.security.provider.ConfigFile
++
++#
++# Default login configuration file
++#
++#login.config.url.1=file:${user.home}/.java.login.config
++
++#
++# Class to instantiate as the system Policy. This is the name of the class
++# that will be used as the Policy object.
++#
++policy.provider=sun.security.provider.PolicyFile
++
++# The default is to have a single system-wide policy file,
++# and a policy file in the user's home directory.
++policy.url.1=file:${java.home}/lib/security/java.policy
++policy.url.2=file:${user.home}/.java.policy
++
++# whether or not we expand properties in the policy file
++# if this is set to false, properties (${...}) will not be expanded in policy
++# files.
++policy.expandProperties=true
++
++# whether or not we allow an extra policy to be passed on the command line
++# with -Djava.security.policy=somefile. Comment out this line to disable
++# this feature.
++policy.allowSystemProperty=true
++
++# whether or not we look into the IdentityScope for trusted Identities
++# when encountering a 1.1 signed JAR file. If the identity is found
++# and is trusted, we grant it AllPermission.
++policy.ignoreIdentityScope=false
++
++#
++# Default keystore type.
++#
++keystore.type=jks
++
++#
++# Controls compatibility mode for the JKS keystore type.
++#
++# When set to 'true', the JKS keystore type supports loading
++# keystore files in either JKS or PKCS12 format. When set to 'false'
++# it supports loading only JKS keystore files.
++#
++keystore.type.compat=true
++
++#
++# List of comma-separated packages that start with or equal this string
++# will cause a security exception to be thrown when
++# passed to checkPackageAccess unless the
++# corresponding RuntimePermission ("accessClassInPackage."+package) has
++# been granted.
++package.access=sun.,\
++               com.sun.xml.internal.,\
++               com.sun.imageio.,\
++               com.sun.istack.internal.,\
++               com.sun.jmx.,\
++               com.sun.media.sound.,\
++               com.sun.naming.internal.,\
++               com.sun.proxy.,\
++               com.sun.corba.se.,\
++               com.sun.org.apache.bcel.internal.,\
++               com.sun.org.apache.regexp.internal.,\
++               com.sun.org.apache.xerces.internal.,\
++               com.sun.org.apache.xpath.internal.,\
++               com.sun.org.apache.xalan.internal.extensions.,\
++               com.sun.org.apache.xalan.internal.lib.,\
++               com.sun.org.apache.xalan.internal.res.,\
++               com.sun.org.apache.xalan.internal.templates.,\
++               com.sun.org.apache.xalan.internal.utils.,\
++               com.sun.org.apache.xalan.internal.xslt.,\
++               com.sun.org.apache.xalan.internal.xsltc.cmdline.,\
++               com.sun.org.apache.xalan.internal.xsltc.compiler.,\
++               com.sun.org.apache.xalan.internal.xsltc.trax.,\
++               com.sun.org.apache.xalan.internal.xsltc.util.,\
++               com.sun.org.apache.xml.internal.res.,\
++               com.sun.org.apache.xml.internal.security.,\
++               com.sun.org.apache.xml.internal.serializer.utils.,\
++               com.sun.org.apache.xml.internal.utils.,\
++               com.sun.org.glassfish.,\
++               com.oracle.xmlns.internal.,\
++               com.oracle.webservices.internal.,\
++               oracle.jrockit.jfr.,\
++               org.jcp.xml.dsig.internal.,\
++               jdk.internal.,\
++               jdk.nashorn.internal.,\
++               jdk.nashorn.tools.,\
++               com.sun.activation.registries.
++
++#
++# List of comma-separated packages that start with or equal this string
++# will cause a security exception to be thrown when
++# passed to checkPackageDefinition unless the
++# corresponding RuntimePermission ("defineClassInPackage."+package) has
++# been granted.
++#
++# by default, none of the class loaders supplied with the JDK call
++# checkPackageDefinition.
++#
++package.definition=sun.,\
++                   com.sun.xml.internal.,\
++                   com.sun.imageio.,\
++                   com.sun.istack.internal.,\
++                   com.sun.jmx.,\
++                   com.sun.media.sound.,\
++                   com.sun.naming.internal.,\
++                   com.sun.proxy.,\
++                   com.sun.corba.se.,\
++                   com.sun.org.apache.bcel.internal.,\
++                   com.sun.org.apache.regexp.internal.,\
++                   com.sun.org.apache.xerces.internal.,\
++                   com.sun.org.apache.xpath.internal.,\
++                   com.sun.org.apache.xalan.internal.extensions.,\
++                   com.sun.org.apache.xalan.internal.lib.,\
++                   com.sun.org.apache.xalan.internal.res.,\
++                   com.sun.org.apache.xalan.internal.templates.,\
++                   com.sun.org.apache.xalan.internal.utils.,\
++                   com.sun.org.apache.xalan.internal.xslt.,\
++                   com.sun.org.apache.xalan.internal.xsltc.cmdline.,\
++                   com.sun.org.apache.xalan.internal.xsltc.compiler.,\
++                   com.sun.org.apache.xalan.internal.xsltc.trax.,\
++                   com.sun.org.apache.xalan.internal.xsltc.util.,\
++                   com.sun.org.apache.xml.internal.res.,\
++                   com.sun.org.apache.xml.internal.security.,\
++                   com.sun.org.apache.xml.internal.serializer.utils.,\
++                   com.sun.org.apache.xml.internal.utils.,\
++                   com.sun.org.glassfish.,\
++                   com.oracle.xmlns.internal.,\
++                   com.oracle.webservices.internal.,\
++                   oracle.jrockit.jfr.,\
++                   org.jcp.xml.dsig.internal.,\
++                   jdk.internal.,\
++                   jdk.nashorn.internal.,\
++                   jdk.nashorn.tools.,\
++                   com.sun.activation.registries.
++
++#
++# Determines whether this properties file can be appended to
++# or overridden on the command line via -Djava.security.properties
++#
++security.overridePropertiesFile=true
++
++#
++# Determines the default key and trust manager factory algorithms for
++# the javax.net.ssl package.
++#
++ssl.KeyManagerFactory.algorithm=SunX509
++ssl.TrustManagerFactory.algorithm=PKIX
++
++#
++# The Java-level namelookup cache policy for successful lookups:
++#
++# any negative value: caching forever
++# any positive value: the number of seconds to cache an address for
++# zero: do not cache
++#
++# default value is forever (FOREVER). For security reasons, this
++# caching is made forever when a security manager is set. When a security
++# manager is not set, the default behavior in this implementation
++# is to cache for 30 seconds.
++#
++# NOTE: setting this to anything other than the default value can have
++#       serious security implications. Do not set it unless
++#       you are sure you are not exposed to DNS spoofing attack.
++#
++#networkaddress.cache.ttl=-1
++
++# The Java-level namelookup cache policy for failed lookups:
++#
++# any negative value: cache forever
++# any positive value: the number of seconds to cache negative lookup results
++# zero: do not cache
++#
++# In some Microsoft Windows networking environments that employ
++# the WINS name service in addition to DNS, name service lookups
++# that fail may take a noticeably long time to return (approx. 5 seconds).
++# For this reason the default caching policy is to maintain these
++# results for 10 seconds.
++#
++#
++networkaddress.cache.negative.ttl=10
++
++#
++# Properties to configure OCSP for certificate revocation checking
++#
++
++# Enable OCSP
++#
++# By default, OCSP is not used for certificate revocation checking.
++# This property enables the use of OCSP when set to the value "true".
++#
++# NOTE: SocketPermission is required to connect to an OCSP responder.
++#
++# Example,
++#   ocsp.enable=true
++
++#
++# Location of the OCSP responder
++#
++# By default, the location of the OCSP responder is determined implicitly
++# from the certificate being validated. This property explicitly specifies
++# the location of the OCSP responder. The property is used when the
++# Authority Information Access extension (defined in RFC 3280) is absent
++# from the certificate or when it requires overriding.
++#
++# Example,
++#   ocsp.responderURL=http://ocsp.example.net:80
++
++#
++# Subject name of the OCSP responder's certificate
++#
++# By default, the certificate of the OCSP responder is that of the issuer
++# of the certificate being validated. This property identifies the certificate
++# of the OCSP responder when the default does not apply. Its value is a string
++# distinguished name (defined in RFC 2253) which identifies a certificate in
++# the set of certificates supplied during cert path validation. In cases where
++# the subject name alone is not sufficient to uniquely identify the certificate
++# then both the "ocsp.responderCertIssuerName" and
++# "ocsp.responderCertSerialNumber" properties must be used instead. When this
++# property is set then those two properties are ignored.
++#
++# Example,
++#   ocsp.responderCertSubjectName="CN=OCSP Responder, O=XYZ Corp"
++
++#
++# Issuer name of the OCSP responder's certificate
++#
++# By default, the certificate of the OCSP responder is that of the issuer
++# of the certificate being validated. This property identifies the certificate
++# of the OCSP responder when the default does not apply. Its value is a string
++# distinguished name (defined in RFC 2253) which identifies a certificate in
++# the set of certificates supplied during cert path validation. When this
++# property is set then the "ocsp.responderCertSerialNumber" property must also
++# be set. When the "ocsp.responderCertSubjectName" property is set then this
++# property is ignored.
++#
++# Example,
++#   ocsp.responderCertIssuerName="CN=Enterprise CA, O=XYZ Corp"
++
++#
++# Serial number of the OCSP responder's certificate
++#
++# By default, the certificate of the OCSP responder is that of the issuer
++# of the certificate being validated. This property identifies the certificate
++# of the OCSP responder when the default does not apply. Its value is a string
++# of hexadecimal digits (colon or space separators may be present) which
++# identifies a certificate in the set of certificates supplied during cert path
++# validation. When this property is set then the "ocsp.responderCertIssuerName"
++# property must also be set. When the "ocsp.responderCertSubjectName" property
++# is set then this property is ignored.
++#
++# Example,
++#   ocsp.responderCertSerialNumber=2A:FF:00
++
++#
++# Policy for failed Kerberos KDC lookups:
++#
++# When a KDC is unavailable (network error, service failure, etc), it is
++# put inside a blacklist and accessed less often for future requests. The
++# value (case-insensitive) for this policy can be:
++#
++# tryLast
++#    KDCs in the blacklist are always tried after those not on the list.
++#
++# tryLess[:max_retries,timeout]
++#    KDCs in the blacklist are still tried by their order in the configuration,
++#    but with smaller max_retries and timeout values. max_retries and timeout
++#    are optional numerical parameters (default 1 and 5000, which means once
++#    and 5 seconds). Please notes that if any of the values defined here is
++#    more than what is defined in krb5.conf, it will be ignored.
++#
++# Whenever a KDC is detected as available, it is removed from the blacklist.
++# The blacklist is reset when krb5.conf is reloaded. You can add
++# refreshKrb5Config=true to a JAAS configuration file so that krb5.conf is
++# reloaded whenever a JAAS authentication is attempted.
++#
++# Example,
++#   krb5.kdc.bad.policy = tryLast
++#   krb5.kdc.bad.policy = tryLess:2,2000
++krb5.kdc.bad.policy = tryLast
++
++# Algorithm restrictions for certification path (CertPath) processing
++#
++# In some environments, certain algorithms or key lengths may be undesirable
++# for certification path building and validation.  For example, "MD2" is
++# generally no longer considered to be a secure hash algorithm.  This section
++# describes the mechanism for disabling algorithms based on algorithm name
++# and/or key length.  This includes algorithms used in certificates, as well
++# as revocation information such as CRLs and signed OCSP Responses.
++#
++# The syntax of the disabled algorithm string is described as this Java
++# BNF-style:
++#   DisabledAlgorithms:
++#       " DisabledAlgorithm { , DisabledAlgorithm } "
++#
++#   DisabledAlgorithm:
++#       AlgorithmName [Constraint]
++#
++#   AlgorithmName:
++#       (see below)
++#
++#   Constraint:
++#       KeySizeConstraint
++#
++#   KeySizeConstraint:
++#       keySize Operator DecimalInteger
++#
++#   Operator:
++#       <= | < | == | != | >= | >
++#
++#   DecimalInteger:
++#       DecimalDigits
++#
++#   DecimalDigits:
++#       DecimalDigit {DecimalDigit}
++#
++#   DecimalDigit: one of
++#       1 2 3 4 5 6 7 8 9 0
++#
++# The "AlgorithmName" is the standard algorithm name of the disabled
++# algorithm. See "Java Cryptography Architecture Standard Algorithm Name
++# Documentation" for information about Standard Algorithm Names.  Matching
++# is performed using a case-insensitive sub-element matching rule.  (For
++# example, in "SHA1withECDSA" the sub-elements are "SHA1" for hashing and
++# "ECDSA" for signatures.)  If the assertion "AlgorithmName" is a
++# sub-element of the certificate algorithm name, the algorithm will be
++# rejected during certification path building and validation.  For example,
++# the assertion algorithm name "DSA" will disable all certificate algorithms
++# that rely on DSA, such as NONEwithDSA, SHA1withDSA.  However, the assertion
++# will not disable algorithms related to "ECDSA".
++#
++# A "Constraint" provides further guidance for the algorithm being specified.
++# The "KeySizeConstraint" requires a key of a valid size range if the
++# "AlgorithmName" is of a key algorithm.  The "DecimalInteger" indicates the
++# key size specified in number of bits.  For example, "RSA keySize <= 1024"
++# indicates that any RSA key with key size less than or equal to 1024 bits
++# should be disabled, and "RSA keySize < 1024, RSA keySize > 2048" indicates
++# that any RSA key with key size less than 1024 or greater than 2048 should
++# be disabled. Note that the "KeySizeConstraint" only makes sense to key
++# algorithms.
++#
++# Note: This property is currently used by Oracle's PKIX implementation. It
++# is not guaranteed to be examined and used by other implementations.
++#
++# Example:
++#   jdk.certpath.disabledAlgorithms=MD2, DSA, RSA keySize < 2048
++#
++#
++jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024
++
++# Algorithm restrictions for Secure Socket Layer/Transport Layer Security
++# (SSL/TLS) processing
++#
++# In some environments, certain algorithms or key lengths may be undesirable
++# when using SSL/TLS.  This section describes the mechanism for disabling
++# algorithms during SSL/TLS security parameters negotiation, including
++# protocol version negotiation, cipher suites selection, peer authentication
++# and key exchange mechanisms.
++#
++# Disabled algorithms will not be negotiated for SSL/TLS connections, even
++# if they are enabled explicitly in an application.
++#
++# For PKI-based peer authentication and key exchange mechanisms, this list
++# of disabled algorithms will also be checked during certification path
++# building and validation, including algorithms used in certificates, as
++# well as revocation information such as CRLs and signed OCSP Responses.
++# This is in addition to the jdk.certpath.disabledAlgorithms property above.
++#
++# See the specification of "jdk.certpath.disabledAlgorithms" for the
++# syntax of the disabled algorithm string.
++#
++# Note: This property is currently used by Oracle's JSSE implementation.
++# It is not guaranteed to be examined and used by other implementations.
++#
++# Example:
++#   jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048
++jdk.tls.disabledAlgorithms=SSLv3, RC4, DH keySize < 768
++
++# Legacy algorithms for Secure Socket Layer/Transport Layer Security (SSL/TLS)
++# processing in JSSE implementation.
++#
++# In some environments, a certain algorithm may be undesirable but it
++# cannot be disabled because of its use in legacy applications.  Legacy
++# algorithms may still be supported, but applications should not use them
++# as the security strength of legacy algorithms are usually not strong enough
++# in practice.
++#
++# During SSL/TLS security parameters negotiation, legacy algorithms will
++# not be negotiated unless there are no other candidates.
++#
++# The syntax of the disabled algorithm string is described as this Java
++# BNF-style:
++#   LegacyAlgorithms:
++#       " LegacyAlgorithm { , LegacyAlgorithm } "
++#
++#   LegacyAlgorithm:
++#       AlgorithmName (standard JSSE algorithm name)
++#
++# See the specification of security property "jdk.certpath.disabledAlgorithms"
++# for the syntax and description of the "AlgorithmName" notation.
++#
++# Per SSL/TLS specifications, cipher suites have the form:
++#       SSL_KeyExchangeAlg_WITH_CipherAlg_MacAlg
++# or
++#       TLS_KeyExchangeAlg_WITH_CipherAlg_MacAlg
++#
++# For example, the cipher suite TLS_RSA_WITH_AES_128_CBC_SHA uses RSA as the
++# key exchange algorithm, AES_128_CBC (128 bits AES cipher algorithm in CBC
++# mode) as the cipher (encryption) algorithm, and SHA-1 as the message digest
++# algorithm for HMAC.
++#
++# The LegacyAlgorithm can be one of the following standard algorithm names:
++#     1. JSSE cipher suite name, e.g., TLS_RSA_WITH_AES_128_CBC_SHA
++#     2. JSSE key exchange algorithm name, e.g., RSA
++#     3. JSSE cipher (encryption) algorithm name, e.g., AES_128_CBC
++#     4. JSSE message digest algorithm name, e.g., SHA
++#
++# See SSL/TLS specifications and "Java Cryptography Architecture Standard
++# Algorithm Name Documentation" for information about the algorithm names.
++#
++# Note: This property is currently used by Oracle's JSSE implementation.
++# It is not guaranteed to be examined and used by other implementations.
++# There is no guarantee the property will continue to exist or be of the
++# same syntax in future releases.
++#
++# Example:
++#   jdk.tls.legacyAlgorithms=DH_anon, DES_CBC, SSL_RSA_WITH_RC4_128_MD5
++#
++jdk.tls.legacyAlgorithms= \
++        K_NULL, C_NULL, M_NULL, \
++        DHE_DSS_EXPORT, DHE_RSA_EXPORT, DH_anon_EXPORT, DH_DSS_EXPORT, \
++        DH_RSA_EXPORT, RSA_EXPORT, \
++        DH_anon, ECDH_anon, \
++        RC4_128, RC4_40, DES_CBC, DES40_CBC
+Index: b/jdk/src/solaris/classes/java/lang/UNIXProcess.java
+===================================================================
+--- a/jdk/src/solaris/classes/java/lang/UNIXProcess.java
++++ b/jdk/src/solaris/classes/java/lang/UNIXProcess.java
+@@ -157,6 +157,7 @@ final class UNIXProcess extends Process
+             );
+ 
+             if (osName.equals("Linux")) { return LINUX; }
++            if (osName.contains("GNU")) { return BSD; } /* glibc-based, but not Linux */
+             if (osName.contains("OS X")) { return BSD; }
+             if (osName.equals("SunOS")) { return SOLARIS; }
+             if (osName.equals("AIX")) { return AIX; }
+Index: b/jdk/make/lib/NetworkingLibraries.gmk
+===================================================================
+--- a/jdk/make/lib/NetworkingLibraries.gmk
++++ b/jdk/make/lib/NetworkingLibraries.gmk
+@@ -42,7 +42,7 @@ ifneq ($(OPENJDK_TARGET_OS), linux)
+   LIBNET_EXCLUDE_FILES += linux_close.c
+ endif
+ 
+-ifneq ($(OPENJDK_TARGET_OS), macosx)
++ifeq (,$(findstring $(OPENJDK_TARGET_OS), bsd macosx))
+   LIBNET_EXCLUDE_FILES += bsd_close.c
+ endif
+ 
+@@ -72,7 +72,7 @@ $(eval $(call SetupNativeCompilation,BUI
+         $(call SET_SHARED_LIBRARY_ORIGIN), \
+     LDFLAGS_SUFFIX_macosx := -ljvm -ljava, \
+     LDFLAGS_SUFFIX_solaris := -ljvm -ljava -lnsl -lsocket $(LIBDL) -lc, \
+-    LDFLAGS_SUFFIX_linux := $(LIBDL) -ljvm -lpthread -ljava, \
++    LDFLAGS_SUFFIX_bsd := $(LIBDL) -ljvm -lpthread -ljava, \
+     LDFLAGS_SUFFIX_aix := $(LIBDL) -ljvm -ljava,\
+     LDFLAGS_SUFFIX_windows := ws2_32.lib jvm.lib secur32.lib iphlpapi.lib \
+         delayimp.lib $(WIN_JAVA_LIB) advapi32.lib \
diff -pruN 8u312-b07-1/debian/patches/ld-symbolic-functions-aarch64.diff 8u312-b07-0ubuntu1/debian/patches/ld-symbolic-functions-aarch64.diff
--- 8u312-b07-1/debian/patches/ld-symbolic-functions-aarch64.diff	1970-01-01 00:00:00.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/ld-symbolic-functions-aarch64.diff	2015-03-17 00:13:29.000000000 +0000
@@ -0,0 +1,32 @@
+--- openjdk/hotspot/make/linux/makefiles/gcc.make.orig	2014-01-27 11:43:44.000000000 +0000
++++ openjdk/hotspot/make/linux/makefiles/gcc.make	2014-01-30 15:51:23.507418895 +0000
+@@ -295,6 +295,7 @@
+ 
+ # Enable linker optimization
+ LFLAGS += -Xlinker -O1
++LFLAGS += -Wl,-Bsymbolic-functions
+ 
+ ifeq ($(USE_CLANG),)
+   # If this is a --hash-style=gnu system, use --hash-style=both
+--- openjdk/hotspot/agent/src/os/linux/Makefile.orig	2014-01-30 15:51:23.507418895 +0000
++++ openjdk/hotspot/agent/src/os/linux/Makefile	2014-01-30 15:52:15.307790918 +0000
+@@ -77,7 +77,7 @@
+ LFLAGS_LIBSA += $(LDFLAGS_HASH_STYLE)
+ 
+ $(LIBSA): $(ARCH) $(OBJS) mapfile
+-        $(GCC) -shared $(LFLAGS_LIBSA) -o $(LIBSA) $(OBJS) $(LIBS)
++        $(GCC) -shared -Wl,-Bsymbolic-functions $(LFLAGS_LIBSA) -o $(LIBSA) $(OBJS) $(LIBS)
+ 
+ test.o: test.c
+ 	$(GCC) -c -o test.o -g -D_GNU_SOURCE -D$(ARCH) $(INCLUDES) test.c
+--- openjdk/jdk/make/common/Defs-linux.gmk.orig	2014-01-30 15:50:28.335021361 +0000
++++ openjdk/jdk/make/common/Defs-linux.gmk	2014-01-30 15:51:23.507418895 +0000
+@@ -351,7 +351,7 @@
+ 
+ EXTRA_LIBS += -lc
+ 
+-LDFLAGS_DEFS_OPTION  = -Xlinker -z -Xlinker defs
++LDFLAGS_DEFS_OPTION  = -Xlinker -z -Xlinker defs -Wl,-Bsymbolic-functions
+ LDFLAGS_COMMON  += $(LDFLAGS_DEFS_OPTION)
+ 
+ #
diff -pruN 8u312-b07-1/debian/patches/ld-symbolic-functions-default.diff 8u312-b07-0ubuntu1/debian/patches/ld-symbolic-functions-default.diff
--- 8u312-b07-1/debian/patches/ld-symbolic-functions-default.diff	2021-07-29 19:29:24.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/ld-symbolic-functions-default.diff	2019-03-17 17:33:59.000000000 +0000
@@ -1,6 +1,6 @@
 --- a/hotspot/agent/src/os/linux/Makefile
 +++ b/hotspot/agent/src/os/linux/Makefile
-@@ -81,7 +81,7 @@ LDFLAGS_NO_EXEC_STACK="-Wl,-z,noexecstac
+@@ -80,7 +80,7 @@ LDFLAGS_NO_EXEC_STACK="-Wl,-z,noexecstac
  LFLAGS_LIBSA += $(LDFLAGS_NO_EXEC_STACK)
  
  $(LIBSA): $(ARCH) $(OBJS) mapfile
@@ -11,7 +11,7 @@
  	$(GCC) -c -o test.o -g -D_GNU_SOURCE -D$(ARCH) $(INCLUDES) test.c
 --- a/hotspot/make/linux/makefiles/gcc.make
 +++ b/hotspot/make/linux/makefiles/gcc.make
-@@ -306,6 +306,7 @@ endif
+@@ -293,6 +293,7 @@ endif
  
  # Enable linker optimization
  LFLAGS += -Xlinker -O1
diff -pruN 8u312-b07-1/debian/patches/libjpeg-fix.diff 8u312-b07-0ubuntu1/debian/patches/libjpeg-fix.diff
--- 8u312-b07-1/debian/patches/libjpeg-fix.diff	2021-07-29 19:24:56.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/libjpeg-fix.diff	2019-03-18 12:03:49.000000000 +0000
@@ -2,7 +2,7 @@
 
 --- a/jdk/make/lib/Awt2dLibraries.gmk
 +++ b/jdk/make/lib/Awt2dLibraries.gmk
-@@ -738,7 +738,7 @@ endif
+@@ -731,7 +731,7 @@ endif
  ifeq ($(USE_EXTERNAL_LIBJPEG), true)
    LIBJPEG_LIBS := -ljpeg
    BUILD_LIBJAVAJPEG_INCLUDE_FILES := \
diff -pruN 8u312-b07-1/debian/patches/link-with-as-needed.diff 8u312-b07-0ubuntu1/debian/patches/link-with-as-needed.diff
--- 8u312-b07-1/debian/patches/link-with-as-needed.diff	2021-07-29 19:24:50.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/link-with-as-needed.diff	2019-03-18 12:03:29.000000000 +0000
@@ -2,7 +2,7 @@
 
 --- a/jdk/make/CompileLaunchers.gmk
 +++ b/jdk/make/CompileLaunchers.gmk
-@@ -464,7 +464,7 @@ endif
+@@ -437,7 +437,7 @@ endif
  # binary (at least on linux) which causes the size to differ between old and new build.
  ifeq ($(USE_EXTERNAL_LIBZ), true)
    UNPACKEXE_CFLAGS := -DSYSTEM_ZLIB
@@ -11,7 +11,7 @@
  else
    UNPACKEXE_CFLAGS := -I$(JDK_TOPDIR)/src/share/native/java/util/zip/zlib
    UNPACKEXE_ZIPOBJS := $(JDK_OUTPUTDIR)/objs/libzip/zcrc32$(OBJ_SUFFIX) \
-@@ -524,9 +524,9 @@ $(eval $(call SetupNativeCompilation,BUI
+@@ -493,9 +493,9 @@ $(eval $(call SetupNativeCompilation,BUI
      LDFLAGS_posix := $(LDFLAGS_JDKEXE) $(LDFLAGS_CXX_JDK) \
          $(call SET_SHARED_LIBRARY_NAME,$(LIBRARY_PREFIX)unpack$(SHARED_LIBRARY_SUFFIX)) \
          $(call SET_SHARED_LIBRARY_ORIGIN), \
@@ -25,7 +25,7 @@
      PROGRAM := unpack200, \
 --- a/jdk/make/lib/Awt2dLibraries.gmk
 +++ b/jdk/make/lib/Awt2dLibraries.gmk
-@@ -759,10 +759,10 @@ $(eval $(call SetupNativeCompilation,BUI
+@@ -752,10 +752,10 @@ $(eval $(call SetupNativeCompilation,BUI
          $(BUILD_LIBJAVAJPEG_CLOSED_INCLUDES) \
          $(BUILD_LIBJAVAJPEG_HEADERS), \
      MAPFILE := $(BUILD_LIBJAVAJPEG_MAPFILE), \
diff -pruN 8u312-b07-1/debian/patches/m68k-support.diff 8u312-b07-0ubuntu1/debian/patches/m68k-support.diff
--- 8u312-b07-1/debian/patches/m68k-support.diff	2021-07-29 19:24:57.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/m68k-support.diff	2018-04-28 13:03:47.000000000 +0000
@@ -130,7 +130,7 @@
  #endif // SHARE_VM_OOPS_CONSTMETHODOOP_HPP
 --- a/hotspot/src/share/vm/oops/oop.hpp
 +++ b/hotspot/src/share/vm/oops/oop.hpp
-@@ -376,6 +376,6 @@ class oopDesc {
+@@ -374,6 +374,6 @@ class oopDesc {
    static int mark_offset_in_bytes()    { return offset_of(oopDesc, _mark); }
    static int klass_offset_in_bytes()   { return offset_of(oopDesc, _metadata._klass); }
    static int klass_gap_offset_in_bytes();
@@ -160,7 +160,7 @@
  	$(SORT) $< > $@
 --- a/jdk/src/solaris/bin/java_md_solinux.c
 +++ b/jdk/src/solaris/bin/java_md_solinux.c
-@@ -1024,12 +1024,24 @@ void SplashFreeLibrary() {
+@@ -1023,12 +1023,24 @@ void SplashFreeLibrary() {
      }
  }
  
@@ -185,7 +185,7 @@
  #ifndef __solaris__
      pthread_t tid;
      pthread_attr_t attr;
-@@ -1040,7 +1052,7 @@ ContinueInNewThread0(int (JNICALL *conti
+@@ -1039,7 +1051,7 @@ ContinueInNewThread0(int (JNICALL *conti
        pthread_attr_setstacksize(&attr, stack_size);
      }
  
@@ -194,7 +194,7 @@
        void * tmp;
        pthread_join(tid, &tmp);
        rslt = (int)tmp;
-@@ -1058,7 +1070,7 @@ ContinueInNewThread0(int (JNICALL *conti
+@@ -1057,7 +1069,7 @@ ContinueInNewThread0(int (JNICALL *conti
  #else /* __solaris__ */
      thread_t tid;
      long flags = 0;
diff -pruN 8u312-b07-1/debian/patches/no-pch-build.diff 8u312-b07-0ubuntu1/debian/patches/no-pch-build.diff
--- 8u312-b07-1/debian/patches/no-pch-build.diff	1970-01-01 00:00:00.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/no-pch-build.diff	2015-03-17 00:13:29.000000000 +0000
@@ -0,0 +1,110 @@
+--- openjdk/hotspot/src/share/vm/oops/arrayKlassKlass.cpp~	2013-03-04 22:51:00.000000000 +0100
++++ openjdk/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"
+--- openjdk/hotspot/src/share/vm/oops/constantPoolKlass.cpp~	2013-03-04 22:51:00.000000000 +0100
++++ openjdk/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"
+--- openjdk/hotspot/src/share/vm/oops/cpCacheKlass.cpp~	2013-03-04 22:51:00.000000000 +0100
++++ openjdk/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"
+--- openjdk/hotspot/src/share/vm/oops/instanceKlass.cpp~	2013-03-04 22:51:00.000000000 +0100
++++ openjdk/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"
+--- openjdk/hotspot/src/share/vm/oops/instanceKlassKlass.cpp~	2013-03-04 22:51:00.000000000 +0100
++++ openjdk/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"
+--- openjdk/hotspot/src/share/vm/oops/instanceMirrorKlass.cpp~	2013-03-04 22:51:00.000000000 +0100
++++ openjdk/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"
+--- openjdk/hotspot/src/share/vm/oops/instanceRefKlass.cpp~	2013-03-04 22:51:00.000000000 +0100
++++ openjdk/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"
+--- openjdk/hotspot/src/share/vm/oops/klassKlass.cpp~	2013-03-04 22:51:00.000000000 +0100
++++ openjdk/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"
+--- openjdk/hotspot/src/share/vm/oops/objArrayKlass.cpp~	2013-03-04 22:51:00.000000000 +0100
++++ openjdk/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"
+--- openjdk/hotspot/src/share/vm/oops/objArrayKlassKlass.cpp~	2013-03-04 22:51:00.000000000 +0100
++++ openjdk/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"
+--- openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psTasks.cpp~	2013-03-04 22:51:00.000000000 +0100
++++ openjdk/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"
diff -pruN 8u312-b07-1/debian/patches/ppc64el.diff 8u312-b07-0ubuntu1/debian/patches/ppc64el.diff
--- 8u312-b07-1/debian/patches/ppc64el.diff	2021-07-29 19:29:22.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/ppc64el.diff	2019-06-03 11:52:42.000000000 +0000
@@ -1,6 +1,24 @@
+--- a/hotspot/src/os_cpu/linux_zero/vm/globals_linux_zero.hpp
++++ b/hotspot/src/os_cpu/linux_zero/vm/globals_linux_zero.hpp
+@@ -34,9 +34,13 @@
+ define_pd_global(bool,  DontYieldALot,           false);
+ define_pd_global(intx,  ThreadStackSize,         1536);
+ #ifdef _LP64
+-define_pd_global(intx,  VMThreadStackSize,       1024);
++#if defined (_LITTLE_ENDIAN) && defined (__powerpc64__)
++define_pd_global(intx,  VMThreadStackSize,       1920);
+ #else
+-define_pd_global(intx,  VMThreadStackSize,       512);
++define_pd_global(intx,  VMThreadStackSize,       1280);
++#endif
++#else
++define_pd_global(intx,  VMThreadStackSize,       640);
+ #endif // _LP64
+ define_pd_global(intx,  CompilerThreadStackSize, 0);
+ define_pd_global(uintx, JVMInvokeMethodSlack,    8192);
 --- a/hotspot/src/os/linux/vm/os_linux.cpp
 +++ b/hotspot/src/os/linux/vm/os_linux.cpp
-@@ -5092,6 +5092,7 @@ void os::init(void) {
+@@ -5047,6 +5047,7 @@ void os::init(void) {
  
    pthread_mutex_init(&dl_mutex, NULL);
  
@@ -8,7 +26,7 @@
    // If the pagesize of the VM is greater than 8K determine the appropriate
    // number of initial guard pages.  The user can change this with the
    // command line arguments, if needed.
-@@ -5105,6 +5106,7 @@ void os::init(void) {
+@@ -5060,6 +5061,7 @@ void os::init(void) {
    Linux::_pthread_setname_np =
      (int(*)(pthread_t, const char*))dlsym(RTLD_DEFAULT, "pthread_setname_np");
  
@@ -16,7 +34,7 @@
  }
  
  // To install functions for atexit system call
-@@ -5159,9 +5161,16 @@ jint os::init_2(void)
+@@ -5114,9 +5116,16 @@ jint os::init_2(void)
    // size.  Add a page for compiler2 recursion in main thread.
    // Add in 2*BytesPerWord times page size to account for VM stack during
    // class initialization depending on 32 or 64 bit VM.
@@ -33,21 +51,3 @@
  
    size_t threadStackSizeInBytes = ThreadStackSize * K;
    if (threadStackSizeInBytes != 0 &&
---- a/hotspot/src/os_cpu/linux_zero/vm/globals_linux_zero.hpp
-+++ b/hotspot/src/os_cpu/linux_zero/vm/globals_linux_zero.hpp
-@@ -34,9 +34,13 @@
- define_pd_global(bool,  DontYieldALot,           false);
- define_pd_global(intx,  ThreadStackSize,         1536);
- #ifdef _LP64
--define_pd_global(intx,  VMThreadStackSize,       1024);
-+#if defined (_LITTLE_ENDIAN) && defined (__powerpc64__)
-+define_pd_global(intx,  VMThreadStackSize,       1920);
- #else
--define_pd_global(intx,  VMThreadStackSize,       512);
-+define_pd_global(intx,  VMThreadStackSize,       1280);
-+#endif
-+#else
-+define_pd_global(intx,  VMThreadStackSize,       640);
- #endif // _LP64
- define_pd_global(intx,  CompilerThreadStackSize, 0);
- define_pd_global(uintx, JVMInvokeMethodSlack,    8192);
diff -pruN 8u312-b07-1/debian/patches/pr2775-cache_api.diff 8u312-b07-0ubuntu1/debian/patches/pr2775-cache_api.diff
--- 8u312-b07-1/debian/patches/pr2775-cache_api.diff	1970-01-01 00:00:00.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/pr2775-cache_api.diff	2016-08-02 14:04:40.000000000 +0000
@@ -0,0 +1,54 @@
+commit 25b39703b2c3468f666f6175ff94e46526d402a7
+Author: Xerxes Rånby <xerxes@gudinna.com>
+Date:   Tue Dec 22 13:33:44 2015 +0100
+
+    OpenJDK 8: Add JDK8u JDK-8061651 API. IcedTea PR2775.
+    
+    Implement minimal JVM functionality to tell JDK8u that the JDK-8061651 API is unsupported by JamVM
+    
+    JVM_GetResourceLookupCacheURLs
+    JVM_GetResourceLookupCache
+    JVM_KnownToNotExist
+    
+    Signed-off-by: Xerxes Rånby <xerxes@gudinna.com>
+
+diff --git a/src/classlib/openjdk/jvm.c b/src/classlib/openjdk/jvm.c
+index 971ac75..955621d 100644
+--- jamvm.old/jamvm/src/classlib/openjdk/jvm.c
++++ jamvm/jamvm/src/classlib/openjdk/jvm.c
+@@ -666,6 +666,35 @@ void JVM_SetClassSigners(JNIEnv *env, jclass cls, jobjectArray signers) {
+ }
+ 
+ 
++/* JVM_GetResourceLookupCacheURLs
++   is part of the
++   JDK-8061651 JDK8u API
++*/
++
++jobjectArray JVM_GetResourceLookupCacheURLs(JNIEnv *env, jobject loader) {
++    return NULL; // tell OpenJDK 8 that the lookup cache API is unavailable
++}
++
++/* JVM_GetResourceLookupCache
++   is unused however it is part of the
++   JDK-8061651 JDK8u API
++*/
++
++jintArray JVM_GetResourceLookupCache(JNIEnv *env, jobject loader, const char *resource_name) {
++    UNIMPLEMENTED("JVM_GetResourceLookupCache");
++    return NULL; // tell OpenJDK 8 that the lookup cache is unavailable
++}
++
++/* JVM_KnownToNotExist
++   is unused however it is part of the
++   JDK-8061651 JDK8u API
++*/
++
++jboolean JVM_KnownToNotExist(JNIEnv *env, jobject loader, const char *classname) {
++    UNIMPLEMENTED("JVM_KnownToNotExist");
++    return JNI_FALSE; // tell OpenJDK 8 we don't know whether it exists or not
++}
++
+ /* JVM_GetProtectionDomain */
+ 
+ jobject JVM_GetProtectionDomain(JNIEnv *env, jclass cls) {
diff -pruN 8u312-b07-1/debian/patches/set-exec-name.diff 8u312-b07-0ubuntu1/debian/patches/set-exec-name.diff
--- 8u312-b07-1/debian/patches/set-exec-name.diff	1970-01-01 00:00:00.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/set-exec-name.diff	2015-03-17 00:13:29.000000000 +0000
@@ -0,0 +1,47 @@
+--- openjdk/jdk/src/solaris/bin/java_md.c.orig
++++ openjdk/jdk/src/solaris/bin/java_md.c
+@@ -688,8 +688,19 @@
+         char buf[PATH_MAX+1];
+         int len = readlink(self, buf, PATH_MAX);
+         if (len >= 0) {
++	    const char* prefixes[] = {"/cow/", "/persistmnt/", "/rofs/", "/rwfs/", "/squashmnt/", NULL};
++	    const char **prefix;
++	    size_t prefix_len = 0;
+             buf[len] = '\0';            /* readlink doesn't nul terminate */
+-            exec_path = JLI_StringDup(buf);
++	    for (prefix = prefixes; *prefix; prefix++) {
++	      prefix_len = strlen(buf) < strlen(*prefix) ? strlen(buf) : strlen(*prefix);
++	      if (!strncmp(*prefix, buf, prefix_len)) {
++		    prefix_len--;
++		    break;
++	      }
++	      prefix_len = 0;
++	    }
++            exec_path = JLI_StringDup(buf + prefix_len);
+         }
+     }
+ #else /* !__solaris__ && !__linux */
+--- openjdk/hotspot/src/os/posix/launcher/java_md.c.orig
++++ openjdk/hotspot/src/os/posix/launcher/java_md.c
+@@ -967,8 +967,19 @@
+         char buf[PATH_MAX+1];
+         int len = readlink(self, buf, PATH_MAX);
+         if (len >= 0) {
+-            buf[len] = '\0';            /* readlink doesn't nul terminate */
+-            exec_path = JLI_StringDup(buf);
++           buf[len] = '\0';            /* readlink doesn't nul terminate */
++           const char* prefixes[] = {"/cow/", "/persistmnt/", "/rofs/", "/rwfs/", "/squashmnt/", NULL};
++           const char **prefix;
++           size_t prefix_len = 0;
++           for (prefix = prefixes; *prefix; prefix++) {
++             prefix_len = strlen(buf) < strlen(*prefix) ? strlen(buf) : strlen(*prefix);
++             if (!strncmp(*prefix, buf, prefix_len)) {
++                   prefix_len--;
++                   break;
++             }
++             prefix_len = 0;
++           }
++           exec_path = JLI_StringDup(buf + prefix_len);
+         }
+     }
+ #else /* !__sun && !__linux */
diff -pruN 8u312-b07-1/debian/patches/sparc-stubgenerator.diff 8u312-b07-0ubuntu1/debian/patches/sparc-stubgenerator.diff
--- 8u312-b07-1/debian/patches/sparc-stubgenerator.diff	1970-01-01 00:00:00.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/sparc-stubgenerator.diff	2015-03-17 00:13:29.000000000 +0000
@@ -0,0 +1,44 @@
+Author: Damien Raude-Morvan <drazzib@debian.org>
+Description: Fix FTBFS on sparc on stubGenerator_sparc.cpp by using explicit class typedef.
+
+--- a/hotspot/src/cpu/sparc/vm/stubGenerator_sparc.cpp
++++ b/hotspot/src/cpu/sparc/vm/stubGenerator_sparc.cpp
+@@ -1055,7 +1055,7 @@
+                                               Label& L_loop, bool use_prefetch, bool use_bis);
+ 
+   void disjoint_copy_core(Register from, Register to, Register count, int log2_elem_size,
+-                          int iter_size, CopyLoopFunc copy_loop_func) {
++                          int iter_size, StubGenerator::CopyLoopFunc copy_loop_func) {
+     Label L_copy;
+ 
+     assert(log2_elem_size <= 3, "the following code should be changed");
+@@ -1206,7 +1206,8 @@
+     __ inc(from, 8);
+     __ sllx(O3, left_shift,  O3);
+ 
+-    disjoint_copy_core(from, to, count, log2_elem_size, 16, copy_16_bytes_shift_loop);
++    StubGenerator::CopyLoopFunc aFunction = &StubGenerator::copy_16_bytes_shift_loop;
++    disjoint_copy_core(from, to, count, log2_elem_size, 16, aFunction);
+ 
+     __ inccc(count, count_dec>>1 ); // + 8 bytes
+     __ brx(Assembler::negative, true, Assembler::pn, L_copy_last_bytes);
+@@ -2085,7 +2086,8 @@
+       __ dec(count, 4);   // The cmp at the beginning guaranty count >= 4
+       __ sllx(O3, 32,  O3);
+ 
+-      disjoint_copy_core(from, to, count, 2, 16, copy_16_bytes_loop);
++      StubGenerator::CopyLoopFunc aFunction = &StubGenerator::copy_16_bytes_loop;
++      disjoint_copy_core(from, to, count, 2, 16, aFunction);
+ 
+       __ br(Assembler::always, false, Assembler::pt, L_copy_4_bytes);
+       __ delayed()->inc(count, 4); // restore 'count'
+@@ -2366,7 +2368,8 @@
+     // count >= 0 (original count - 8)
+     __ mov(from, from64);
+ 
+-    disjoint_copy_core(from64, to64, count, 3, 64, copy_64_bytes_loop);
++    StubGenerator::CopyLoopFunc aFunction = &StubGenerator::copy_64_bytes_loop;
++    disjoint_copy_core(from64, to64, count, 3, 64, aFunction);
+ 
+       // Restore O4(offset0), O5(offset8)
+       __ sub(from64, from, offset0);
diff -pruN 8u312-b07-1/debian/patches/stack-direction.diff 8u312-b07-0ubuntu1/debian/patches/stack-direction.diff
--- 8u312-b07-1/debian/patches/stack-direction.diff	1970-01-01 00:00:00.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/stack-direction.diff	2015-03-17 00:13:29.000000000 +0000
@@ -0,0 +1,217 @@
+# unused patch (work in progress for PARISC support)
+
+--- openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp.old	2010-01-06 16:30:02.000000000 +0100
++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp	2010-01-06 23:14:47.000000000 +0100
+@@ -144,8 +144,13 @@
+       address addr = (address) info->si_addr;
+ 
+       // check if fault address is within thread stack
++#ifdef __hppa__
++      if (addr > thread->stack_base() &&
++          addr <= thread->stack_base() + thread->stack_size()) {
++#else
+       if (addr < thread->stack_base() &&
+           addr >= thread->stack_base() - thread->stack_size()) {
++#endif
+         // stack overflow
+         if (thread->in_stack_yellow_zone(addr)) {
+           thread->disable_stack_yellow_zone();
+@@ -294,7 +299,11 @@
+   if (res != 0) {
+     fatal1("pthread_attr_getstack failed with errno = %d", res);
+   }
++#ifdef __hppa__
++  address stack_top = stack_bottom - stack_bytes;
++#else
+   address stack_top = stack_bottom + stack_bytes;
++#endif
+ 
+   // The block of memory returned by pthread_attr_getstack() includes
+   // guard pages where present.  We need to trim these off.
+@@ -321,7 +330,11 @@
+   stack_bottom += (total_pages - guard_pages) / 2 * page_bytes;
+ #endif // IA64
+ 
++#ifdef __hppa__
++  stack_bottom -= guard_bytes;
++#else
+   stack_bottom += guard_bytes;
++#endif
+ 
+   pthread_attr_destroy(&attr);
+ 
+@@ -329,19 +342,36 @@
+   // by pthread_attr_getstack is the maximum size it could possibly
+   // be given what currently mapped.  This can be huge, so we cap it.
+   if (os::Linux::is_initial_thread()) {
++#ifdef __hppa__
++    stack_bytes = stack_bottom - stack_top;
++#else
+     stack_bytes = stack_top - stack_bottom;
++#endif
+ 
+     if (stack_bytes > JavaThread::stack_size_at_create())
+       stack_bytes = JavaThread::stack_size_at_create();
+ 
++#ifdef __hppa__
++    stack_bottom = stack_top + stack_bytes;
++#else
+     stack_bottom = stack_top - stack_bytes;
++#endif
+   }
+ 
++#ifdef __hppa__
++  assert(os::current_stack_pointer() <= stack_bottom, "should do");
++  assert(os::current_stack_pointer() > stack_top, "should do");
++#else
+   assert(os::current_stack_pointer() >= stack_bottom, "should do");
+   assert(os::current_stack_pointer() < stack_top, "should do");
++#endif
+ 
+   *bottom = stack_bottom;
++#ifdef __hppa__
++  *size = stack_bottom - stack_top;
++#else
+   *size = stack_top - stack_bottom;
++#endif
+ }
+ 
+ address os::current_stack_base() {
+--- openjdk/hotspot/src/share/vm/runtime/thread.cpp.old	2009-10-02 23:16:39.000000000 +0200
++++ openjdk/hotspot/src/share/vm/runtime/thread.cpp	2010-01-06 23:31:24.000000000 +0100
+@@ -713,8 +713,13 @@
+   else if (is_ConcurrentGC_thread())        st->print("ConcurrentGCThread");
+   else st->print("Thread");
+ 
++#ifdef __hppa__
+   st->print(" [stack: " PTR_FORMAT "," PTR_FORMAT "]",
+             _stack_base - _stack_size, _stack_base);
++#else
++  st->print(" [stack: " PTR_FORMAT "," PTR_FORMAT "]",
++            _stack_base + _stack_size, _stack_base);
++#endif
+ 
+   if (osthread()) {
+     st->print(" [id=%d]", osthread()->thread_id());
+@@ -792,7 +797,11 @@
+ bool Thread::is_in_stack(address adr) const {
+   assert(Thread::current() == this, "is_in_stack can only be called from current thread");
+   address end = os::current_stack_pointer();
++#ifdef __hppa__
++  if (stack_base() <= adr && adr <= end) return true;
++#else
+   if (stack_base() >= adr && adr >= end) return true;
++#endif
+ 
+   return false;
+ }
+@@ -804,7 +813,11 @@
+ // should be revisited, and they should be removed if possible.
+ 
+ bool Thread::is_lock_owned(address adr) const {
++#ifdef __hppa__
++  return (_stack_base <= adr && adr <= (_stack_base + _stack_size));
++#else
+   return (_stack_base >= adr && adr >= (_stack_base - _stack_size));
++#endif
+ }
+ 
+ bool Thread::set_as_starting_thread() {
+@@ -2108,7 +2121,11 @@
+ 
+ void JavaThread::create_stack_guard_pages() {
+   if (! os::uses_stack_guard_pages() || _stack_guard_state != stack_guard_unused) return;
++#ifdef __hppa__
++  address low_addr = stack_base();
++#else
+   address low_addr = stack_base() - stack_size();
++#endif
+   size_t len = (StackYellowPages + StackRedPages) * os::vm_page_size();
+ 
+   int allocate = os::allocate_stack_guard_pages();
+@@ -2131,7 +2148,11 @@
+ 
+ void JavaThread::remove_stack_guard_pages() {
+   if (_stack_guard_state == stack_guard_unused) return;
++#ifdef __hppa__
++  address low_addr = stack_base();
++#else
+   address low_addr = stack_base() - stack_size();
++#endif
+   size_t len = (StackYellowPages + StackRedPages) * os::vm_page_size();
+ 
+   if (os::allocate_stack_guard_pages()) {
+@@ -2156,10 +2177,17 @@
+ 
+   // The base notation is from the stacks point of view, growing downward.
+   // We need to adjust it to work correctly with guard_memory()
++#ifdef __hppa__
++  address base = stack_yellow_zone_base() + stack_yellow_zone_size();
++
++  guarantee(base > stack_base(),"Error calculating stack yellow zone");
++  guarantee(base > os::current_stack_pointer(),"Error calculating stack yellow zone");
++#else
+   address base = stack_yellow_zone_base() - stack_yellow_zone_size();
+ 
+   guarantee(base < stack_base(),"Error calculating stack yellow zone");
+   guarantee(base < os::current_stack_pointer(),"Error calculating stack yellow zone");
++#endif
+ 
+   if (os::guard_memory((char *) base, stack_yellow_zone_size())) {
+     _stack_guard_state = stack_guard_enabled;
+@@ -2178,7 +2206,11 @@
+ 
+   // The base notation is from the stacks point of view, growing downward.
+   // We need to adjust it to work correctly with guard_memory()
++#ifdef __hppa__
++  address base = stack_yellow_zone_base() + stack_yellow_zone_size();
++#else
+   address base = stack_yellow_zone_base() - stack_yellow_zone_size();
++#endif
+ 
+   if (os::unguard_memory((char *)base, stack_yellow_zone_size())) {
+     _stack_guard_state = stack_guard_yellow_disabled;
+@@ -2192,10 +2224,17 @@
+   // The base notation is from the stacks point of view, growing downward.
+   // We need to adjust it to work correctly with guard_memory()
+   assert(_stack_guard_state != stack_guard_unused, "must be using guard pages.");
++#ifdef __hppa__
++  address base = stack_red_zone_base() + stack_red_zone_size();
++
++  guarantee(base > stack_base(),"Error calculating stack red zone");
++  guarantee(base > os::current_stack_pointer(),"Error calculating stack red zone");
++#else
+   address base = stack_red_zone_base() - stack_red_zone_size();
+ 
+   guarantee(base < stack_base(),"Error calculating stack red zone");
+   guarantee(base < os::current_stack_pointer(),"Error calculating stack red zone");
++#endif
+ 
+   if(!os::guard_memory((char *) base, stack_red_zone_size())) {
+     warning("Attempt to guard stack red zone failed.");
+@@ -2206,7 +2245,11 @@
+   // The base notation is from the stacks point of view, growing downward.
+   // We need to adjust it to work correctly with guard_memory()
+   assert(_stack_guard_state != stack_guard_unused, "must be using guard pages.");
++#ifdef __hppa__
++  address base = stack_red_zone_base() + stack_red_zone_size();
++#else
+   address base = stack_red_zone_base() - stack_red_zone_size();
++#endif
+   if (!os::unguard_memory((char *)base, stack_red_zone_size())) {
+     warning("Attempt to unguard stack red zone failed.");
+   }
+@@ -2451,8 +2494,13 @@
+   if (osthread()) {
+     st->print(", id=%d", osthread()->thread_id());
+   }
++#ifdef __hppa__
++  st->print(", stack(" PTR_FORMAT "," PTR_FORMAT ")",
++            _stack_base + _stack_size, _stack_base);
++#else
+   st->print(", stack(" PTR_FORMAT "," PTR_FORMAT ")",
+             _stack_base - _stack_size, _stack_base);
++#endif
+   st->print("]");
+   return;
+ }
diff -pruN 8u312-b07-1/debian/patches/system-lcms.diff 8u312-b07-0ubuntu1/debian/patches/system-lcms.diff
--- 8u312-b07-1/debian/patches/system-lcms.diff	2021-07-29 19:24:50.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/system-lcms.diff	2020-06-24 21:29:14.000000000 +0000
@@ -51,7 +51,7 @@
  
 --- a/jdk/make/lib/Awt2dLibraries.gmk
 +++ b/jdk/make/lib/Awt2dLibraries.gmk
-@@ -666,8 +666,8 @@ ifeq ($(TOOLCHAIN_TYPE), clang)
+@@ -659,8 +659,8 @@ endif
  endif
  
  # TODO: Update awt lib path when awt is converted
@@ -62,7 +62,7 @@
      OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
      SRC := $(JDK_TOPDIR)/src/share/native/sun/java2d/cmm/lcms, \
      LANG := C, \
-@@ -686,19 +686,19 @@ $(eval $(call SetupNativeCompilation,BUI
+@@ -679,19 +679,19 @@ $(eval $(call SetupNativeCompilation,BUI
      LDFLAGS_windows := $(WIN_AWT_LIB) $(WIN_JAVA_LIB), \
      LDFLAGS_SUFFIX_solaris := -lawt -ljava -ljvm -lc, \
      LDFLAGS_SUFFIX_macosx := $(LIBM) -lawt -ljava -ljvm, \
diff -pruN 8u312-b07-1/debian/patches/system-libjpeg.diff 8u312-b07-0ubuntu1/debian/patches/system-libjpeg.diff
--- 8u312-b07-1/debian/patches/system-libjpeg.diff	2021-07-29 19:24:49.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/system-libjpeg.diff	2019-10-01 06:27:55.000000000 +0000
@@ -48,7 +48,7 @@
    ###############################################################################
 --- a/jdk/make/lib/Awt2dLibraries.gmk
 +++ b/jdk/make/lib/Awt2dLibraries.gmk
-@@ -702,21 +702,24 @@ $(BUILD_LIBLCMS): $(BUILD_LIBAWT)
+@@ -695,21 +695,24 @@ $(BUILD_LIBLCMS): $(BUILD_LIBAWT)
  
  ##########################################################################################
  
@@ -79,7 +79,7 @@
  # Suppress gcc warnings like "variable might be clobbered by 'longjmp'
  # or 'vfork'": this warning indicates that some variable is placed to
  # a register by optimized compiler and it's value might be lost on longjmp().
-@@ -728,37 +731,50 @@ endif
+@@ -721,37 +724,50 @@ endif
  #      $(shell $(EXPR) $(CC_MAJORVER) \> 4 \| \
  #          \( $(CC_MAJORVER) = 4 \& $(CC_MINORVER) \>= 3 \) )
  #  ifeq ($(CC_43_OR_NEWER), 1)
@@ -144,7 +144,7 @@
  
  ##########################################################################################
  
-@@ -1149,6 +1165,13 @@ ifndef BUILD_HEADLESS_ONLY
+@@ -1142,6 +1158,13 @@ ifndef BUILD_HEADLESS_ONLY
      GIFLIB_CFLAGS := -I$(JDK_TOPDIR)/src/share/native/sun/awt/giflib
    endif
  
@@ -158,7 +158,7 @@
    ifneq ($(OPENJDK_TARGET_OS), macosx)
      LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/awt/splashscreen
    else
-@@ -1205,11 +1228,13 @@ ifndef BUILD_HEADLESS_ONLY
+@@ -1198,11 +1221,13 @@ ifndef BUILD_HEADLESS_ONLY
        EXCLUDE_FILES := imageioJPEG.c jpegdecoder.c pngtest.c, \
        LANG := C, \
        OPTIMIZATION := LOW, \
diff -pruN 8u312-b07-1/debian/patches/system-libpng.diff 8u312-b07-0ubuntu1/debian/patches/system-libpng.diff
--- 8u312-b07-1/debian/patches/system-libpng.diff	2021-07-29 19:24:50.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/system-libpng.diff	2019-10-01 06:27:57.000000000 +0000
@@ -62,7 +62,7 @@
  LIBZIP_CAN_USE_MMAP:=@LIBZIP_CAN_USE_MMAP@
 --- a/jdk/make/lib/Awt2dLibraries.gmk
 +++ b/jdk/make/lib/Awt2dLibraries.gmk
-@@ -1155,7 +1155,6 @@ endif
+@@ -1148,7 +1148,6 @@ endif
  ifndef BUILD_HEADLESS_ONLY
    LIBSPLASHSCREEN_DIRS := \
      $(JDK_TOPDIR)/src/share/native/sun/awt/image/jpeg \
@@ -70,7 +70,7 @@
      $(JDK_TOPDIR)/src/share/native/sun/awt/splashscreen
  
    ifeq ($(USE_EXTERNAL_LIBGIF), true)
-@@ -1172,6 +1171,13 @@ ifndef BUILD_HEADLESS_ONLY
+@@ -1165,6 +1164,13 @@ ifndef BUILD_HEADLESS_ONLY
      LIBJPEG_CFLAGS := -I$(JDK_TOPDIR)/src/share/native/sun/awt/image/jpeg
    endif
  
@@ -84,7 +84,7 @@
    ifneq ($(OPENJDK_TARGET_OS), macosx)
      LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/awt/splashscreen
    else
-@@ -1229,12 +1235,12 @@ ifndef BUILD_HEADLESS_ONLY
+@@ -1222,12 +1228,12 @@ ifndef BUILD_HEADLESS_ONLY
        LANG := C, \
        OPTIMIZATION := LOW, \
        CFLAGS := $(LIBSPLASHSCREEN_CFLAGS) $(CFLAGS_JDKLIB) \
diff -pruN 8u312-b07-1/debian/patches/workaround_expand_exec_shield_cs_limit.diff 8u312-b07-0ubuntu1/debian/patches/workaround_expand_exec_shield_cs_limit.diff
--- 8u312-b07-1/debian/patches/workaround_expand_exec_shield_cs_limit.diff	2021-07-29 19:24:55.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/workaround_expand_exec_shield_cs_limit.diff	2021-01-07 00:52:05.000000000 +0000
@@ -1,6 +1,6 @@
 --- a/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp
 +++ b/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp
-@@ -891,7 +891,7 @@ void os::verify_stack_alignment() {
+@@ -890,7 +890,7 @@ void os::verify_stack_alignment() {
   * updates (JDK-8023956).
   */
  void os::workaround_expand_exec_shield_cs_limit() {
diff -pruN 8u312-b07-1/debian/patches/zero-architectures.diff 8u312-b07-0ubuntu1/debian/patches/zero-architectures.diff
--- 8u312-b07-1/debian/patches/zero-architectures.diff	2021-07-29 19:24:55.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/zero-architectures.diff	2019-10-01 06:28:13.000000000 +0000
@@ -1,16 +1,5 @@
 # DP: Add support for zero architectures alpha, m68k, mips*, sh4
 
---- a/common/autoconf/flags.m4
-+++ b/common/autoconf/flags.m4
-@@ -908,6 +908,8 @@ AC_DEFUN_ONCE([FLAGS_SETUP_COMPILER_FLAG
-     *)
-       ZERO_ARCHFLAG="${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}"
-   esac
-+  # use the default for the package builds
-+  ZERO_ARCHFLAG=""
-   FLAGS_COMPILER_CHECK_ARGUMENTS([$ZERO_ARCHFLAG], [], [ZERO_ARCHFLAG=""])
-   AC_SUBST(ZERO_ARCHFLAG)
- 
 --- a/common/autoconf/platform.m4
 +++ b/common/autoconf/platform.m4
 @@ -42,6 +42,12 @@ AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_CPU
@@ -94,7 +83,7 @@
      s390)
        VAR_CPU=s390
        VAR_CPU_ARCH=s390
-@@ -375,6 +435,12 @@ AC_DEFUN([PLATFORM_SETUP_LEGACY_VARS],
+@@ -373,6 +433,12 @@ AC_DEFUN([PLATFORM_SETUP_LEGACY_VARS],
  
    # ZERO_ARCHDEF is used to enable architecture-specific code
    case "${OPENJDK_TARGET_CPU}" in
@@ -107,3 +96,14 @@
      ppc)     ZERO_ARCHDEF=PPC32 ;;
      ppc64)   ZERO_ARCHDEF=PPC64 ;;
      s390*)   ZERO_ARCHDEF=S390  ;;
+--- a/common/autoconf/flags.m4
++++ b/common/autoconf/flags.m4
+@@ -827,6 +827,8 @@ AC_DEFUN_ONCE([FLAGS_SETUP_COMPILER_FLAG
+     *)
+       ZERO_ARCHFLAG="${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}"
+   esac
++  # use the default for the package builds
++  ZERO_ARCHFLAG=""
+   FLAGS_COMPILER_CHECK_ARGUMENTS([$ZERO_ARCHFLAG], [], [ZERO_ARCHFLAG=""])
+   AC_SUBST(ZERO_ARCHFLAG)
+ 
diff -pruN 8u312-b07-1/debian/patches/zero-fpu-control-is-noop.diff 8u312-b07-0ubuntu1/debian/patches/zero-fpu-control-is-noop.diff
--- 8u312-b07-1/debian/patches/zero-fpu-control-is-noop.diff	2021-07-29 19:24:53.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/zero-fpu-control-is-noop.diff	2017-01-23 10:09:22.000000000 +0000
@@ -8,7 +8,6 @@ Description: ZeroVM fix under IA32. Actu
 Author: Damien Raude-Morvan <drazzib@debian.org>
 Last-Update: 2011-08-02
 Forwarded: http://mail.openjdk.java.net/pipermail/zero-dev/2011-August/000398.html
-
 --- a/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp
 +++ b/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp
 @@ -259,11 +259,12 @@ void os::Linux::init_thread_fpu_state(vo
diff -pruN 8u312-b07-1/debian/patches/zero-sparc.diff 8u312-b07-0ubuntu1/debian/patches/zero-sparc.diff
--- 8u312-b07-1/debian/patches/zero-sparc.diff	1970-01-01 00:00:00.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/zero-sparc.diff	2015-03-17 00:13:29.000000000 +0000
@@ -0,0 +1,287 @@
+--- openjdk/hotspot/src/cpu/sparc/vm/bytecodes_sparc.hpp.old	2014-01-14 21:26:34.000000000 +0000
++++ openjdk/hotspot/src/cpu/sparc/vm/bytecodes_sparc.hpp	2014-01-15 10:55:36.991083672 +0000
+@@ -25,7 +25,7 @@
+ #ifndef CPU_SPARC_VM_BYTECODES_SPARC_HPP
+ #define CPU_SPARC_VM_BYTECODES_SPARC_HPP
+ 
+-#ifdef SPARC
++#if defined(SPARC) && !defined(ZERO)
+ #define NLOCALS_IN_REGS 6
+ #endif
+ 
+--- openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp.old	2014-01-15 09:57:03.613191054 +0000
++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp	2014-01-15 10:55:36.995083702 +0000
+@@ -82,7 +82,7 @@
+   // Must never look like an address returned by reserve_memory,
+   // even in its subfields (as defined by the CPU immediate fields,
+   // if the CPU splits constants across multiple instructions).
+-#ifdef SPARC
++#if defined(SPARC) && !defined(ZERO)
+   // On SPARC, 0 != %hi(any real address), because there is no
+   // allocation in the first 1Kb of the virtual address space.
+   return (char *) 0;
+--- openjdk/hotspot/src/share/vm/opto/output.cpp.old	2014-01-14 21:26:34.000000000 +0000
++++ openjdk/hotspot/src/share/vm/opto/output.cpp	2014-01-15 10:55:37.015083849 +0000
+@@ -682,7 +682,7 @@
+       array->append(new_loc_value( _regalloc, regnum, Location::lng ));
+     }
+ #else //_LP64
+-#ifdef SPARC
++#if defined(SPARC) && !defined(ZERO)
+     if (t->base() == Type::Long && OptoReg::is_reg(regnum)) {
+       // For SPARC we have to swap high and low words for
+       // long values stored in a single-register (g0-g7).
+--- openjdk/hotspot/src/share/vm/opto/chaitin.cpp.old	2014-01-14 21:26:34.000000000 +0000
++++ openjdk/hotspot/src/share/vm/opto/chaitin.cpp	2014-01-15 10:55:37.023083908 +0000
+@@ -723,7 +723,7 @@
+         case Op_RegFlags:
+         case 0:                 // not an ideal register
+           lrg.set_num_regs(1);
+-#ifdef SPARC
++#if defined(SPARC) && !defined(ZERO)
+           lrg.set_reg_pressure(2);
+ #else
+           lrg.set_reg_pressure(1);
+@@ -1328,7 +1328,7 @@
+ 
+     // Check if a color is available and if so pick the color
+     OptoReg::Name reg = choose_color( *lrg, chunk );
+-#ifdef SPARC
++#if defined(SPARC) && !defined(ZERO)
+     debug_only(lrg->compute_set_mask_size());
+     assert(lrg->num_regs() < 2 || lrg->is_bound() || is_even(reg-1), "allocate all doubles aligned");
+ #endif
+--- openjdk/hotspot/src/share/vm/opto/chaitin.hpp.old	2014-01-14 21:26:34.000000000 +0000
++++ openjdk/hotspot/src/share/vm/opto/chaitin.hpp	2014-01-15 10:55:37.015083849 +0000
+@@ -293,7 +293,7 @@
+ // TEMPORARILY REPLACED WITH COMMAND LINE FLAG
+ 
+ //// !!!!! Magic Constants need to move into ad file
+-#ifdef SPARC
++#if defined(SPARC) && !defined(ZERO)
+ //#define FLOAT_PRESSURE 30  /*     SFLT_REG_mask.Size() - 1 */
+ //#define INT_PRESSURE   23  /* NOTEMP_I_REG_mask.Size() - 1 */
+ #define FLOAT_INCREMENT(regs) regs
+--- openjdk/hotspot/src/share/vm/runtime/safepoint.cpp.old	2014-01-14 21:26:34.000000000 +0000
++++ openjdk/hotspot/src/share/vm/runtime/safepoint.cpp	2014-01-15 10:55:37.027083937 +0000
+@@ -765,7 +765,7 @@
+                 newptr, is_oop?"oop":"   ", (wasoop && !is_oop) ? "STALE" : ((wasoop==false&&is_oop==false&&oldptr !=newptr)?"STOMP":"     "));
+ }
+ 
+-#ifdef SPARC
++#if defined(SPARC) && !defined(ZERO)
+ static void print_me(intptr_t *new_sp, intptr_t *old_sp, bool *was_oops) {
+ #ifdef _LP64
+   tty->print_cr("--------+------address-----+------before-----------+-------after----------+");
+--- openjdk/hotspot/src/share/vm/runtime/deoptimization.cpp.old	2014-01-14 21:26:34.000000000 +0000
++++ openjdk/hotspot/src/share/vm/runtime/deoptimization.cpp	2014-01-15 10:55:37.031083968 +0000
+@@ -815,7 +815,7 @@
+ #ifdef _LP64
+       jlong res = (jlong)low->get_int();
+ #else
+-#ifdef SPARC
++#if defined(SPARC) && !defined(ZERO)
+       // For SPARC we have to swap high and low words.
+       jlong res = jlong_from((jint)low->get_int(), (jint)value->get_int());
+ #else
+@@ -866,7 +866,7 @@
+ #ifdef _LP64
+       jlong res = (jlong)low->get_int();
+ #else
+-#ifdef SPARC
++#if defined(SPARC) && !defined(ZERO)
+       // For SPARC we have to swap high and low words.
+       jlong res = jlong_from((jint)low->get_int(), (jint)value->get_int());
+ #else
+--- openjdk/hotspot/src/share/vm/runtime/advancedThresholdPolicy.cpp.old	2014-01-14 21:26:34.000000000 +0000
++++ openjdk/hotspot/src/share/vm/runtime/advancedThresholdPolicy.cpp	2014-01-15 10:55:37.035083997 +0000
+@@ -62,7 +62,7 @@
+   }
+ #endif
+ 
+-#ifdef SPARC
++#if defined(SPARC) && !defined(ZERO)
+   if (FLAG_IS_DEFAULT(InlineSmallCode)) {
+     FLAG_SET_DEFAULT(InlineSmallCode, 2500);
+   }
+--- openjdk/hotspot/src/share/vm/runtime/stackValue.cpp.old	2014-01-14 21:26:34.000000000 +0000
++++ openjdk/hotspot/src/share/vm/runtime/stackValue.cpp	2014-01-15 10:55:37.023083908 +0000
+@@ -34,7 +34,7 @@
+     // Stack or register value
+     Location loc = ((LocationValue *)sv)->location();
+ 
+-#ifdef SPARC
++#if defined(SPARC) && !defined(ZERO)
+     // %%%%% Callee-save floats will NOT be working on a Sparc until we
+     // handle the case of a 2 floats in a single double register.
+     assert( !(loc.is_register() && loc.type() == Location::float_in_dbl), "Sparc does not handle callee-save floats yet" );
+--- openjdk/hotspot/src/share/vm/runtime/arguments.cpp.old	2014-01-14 21:26:34.000000000 +0000
++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp	2014-01-15 10:55:37.043084056 +0000
+@@ -1993,7 +1993,7 @@
+ 
+   status = status && verify_object_alignment();
+ 
+-#ifdef SPARC
++#if defined(SPARC) && !defined(ZERO)
+   if (UseConcMarkSweepGC || UseG1GC) {
+     // Issue a stern warning if the user has explicitly set
+     // UseMemSetInBOT (it is known to cause issues), but allow
+--- openjdk/hotspot/src/share/vm/c1/c1_Runtime1.cpp.old	2014-01-14 21:26:34.000000000 +0000
++++ openjdk/hotspot/src/share/vm/c1/c1_Runtime1.cpp	2014-01-15 10:55:37.063084203 +0000
+@@ -1074,7 +1074,7 @@
+             RelocIterator iter(nm, (address)instr_pc, (address)(instr_pc + 1));
+             relocInfo::change_reloc_info_for_address(&iter, (address) instr_pc,
+                                                      relocInfo::none, relocInfo::oop_type);
+-#ifdef SPARC
++#if defined(SPARC) && !defined(ZERO)
+             // Sparc takes two relocations for an oop so update the second one.
+             address instr_pc2 = instr_pc + NativeMovConstReg::add_offset;
+             RelocIterator iter2(nm, instr_pc2, instr_pc2 + 1);
+--- openjdk/hotspot/src/share/vm/c1/c1_LIRAssembler.cpp.old	2014-01-14 21:26:34.000000000 +0000
++++ openjdk/hotspot/src/share/vm/c1/c1_LIRAssembler.cpp	2014-01-15 10:55:37.047084085 +0000
+@@ -577,7 +577,7 @@
+       monitor_address(op->in_opr()->as_constant_ptr()->as_jint(), op->result_opr());
+       break;
+ 
+-#ifdef SPARC
++#if defined(SPARC) && !defined(ZERO)
+     case lir_pack64:
+       pack64(op->in_opr(), op->result_opr());
+       break;
+@@ -852,7 +852,7 @@
+         if (!r->is_stack()) {
+           stringStream st;
+           st.print("bad oop %s at %d", r->as_Register()->name(), _masm->offset());
+-#ifdef SPARC
++#if defined(SPARC) && !defined(ZERO)
+           _masm->_verify_oop(r->as_Register(), strdup(st.as_string()), __FILE__, __LINE__);
+ #else
+           _masm->verify_oop(r->as_Register());
+--- openjdk/hotspot/src/share/vm/c1/c1_LinearScan.cpp.old	2014-01-14 21:26:34.000000000 +0000
++++ openjdk/hotspot/src/share/vm/c1/c1_LinearScan.cpp	2014-01-15 10:55:37.079084322 +0000
+@@ -2128,7 +2128,7 @@
+         }
+ #endif
+ 
+-#ifdef SPARC
++#if defined(SPARC) && !defined(ZERO)
+         assert(assigned_reg >= pd_first_fpu_reg && assigned_reg <= pd_last_fpu_reg, "no fpu register");
+         assert(interval->assigned_regHi() >= pd_first_fpu_reg && interval->assigned_regHi() <= pd_last_fpu_reg, "no fpu register");
+         assert(assigned_reg % 2 == 0 && assigned_reg + 1 == interval->assigned_regHi(), "must be sequential and even");
+@@ -2726,7 +2726,7 @@
+ 
+       assert(opr->fpu_regnrLo() == opr->fpu_regnrHi(), "assumed in calculation (only fpu_regnrLo is used)");
+ #endif
+-#ifdef SPARC
++#if defined(SPARC) && !defined(ZERO)
+       assert(opr->fpu_regnrLo() == opr->fpu_regnrHi() + 1, "assumed in calculation (only fpu_regnrHi is used)");
+ #endif
+ #ifdef ARM
+--- openjdk/hotspot/src/share/vm/c1/c1_LIR.hpp.old	2014-01-14 21:26:34.000000000 +0000
++++ openjdk/hotspot/src/share/vm/c1/c1_LIR.hpp	2014-01-15 10:55:37.059084174 +0000
+@@ -595,7 +595,7 @@
+   static LIR_Opr single_softfp(int reg)            { return (LIR_Opr)((reg  << LIR_OprDesc::reg1_shift) |                                     LIR_OprDesc::float_type  | LIR_OprDesc::cpu_register | LIR_OprDesc::single_size); }
+   static LIR_Opr double_softfp(int reg1, int reg2) { return (LIR_Opr)((reg1 << LIR_OprDesc::reg1_shift) | (reg2 << LIR_OprDesc::reg2_shift) | LIR_OprDesc::double_type | LIR_OprDesc::cpu_register | LIR_OprDesc::double_size); }
+ #endif
+-#ifdef SPARC
++#if defined(SPARC) && !defined(ZERO)
+   static LIR_Opr double_fpu(int reg1, int reg2) { return (LIR_Opr)(intptr_t)((reg1 << LIR_OprDesc::reg1_shift) |
+                                                                              (reg2 << LIR_OprDesc::reg2_shift) |
+                                                                              LIR_OprDesc::double_type          |
+--- openjdk/hotspot/src/share/vm/c1/c1_GraphBuilder.cpp.old	2014-01-14 21:26:34.000000000 +0000
++++ openjdk/hotspot/src/share/vm/c1/c1_GraphBuilder.cpp	2014-01-15 10:55:37.055084145 +0000
+@@ -1891,7 +1891,7 @@
+   Value recv = has_receiver ? apop() : NULL;
+   int vtable_index = methodOopDesc::invalid_vtable_index;
+ 
+-#ifdef SPARC
++#if defined(SPARC) && !defined(ZERO)
+   // Currently only supported on Sparc.
+   // The UseInlineCaches only controls dispatch to invokevirtuals for
+   // loaded classes which we weren't able to statically bind.
+--- openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp.old	2014-01-14 21:26:34.000000000 +0000
++++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp	2014-01-15 10:55:37.083084351 +0000
+@@ -3095,7 +3095,7 @@
+   tty->print_cr("stack_base: " INTPTR_FORMAT, (uintptr_t) this->_stack_base);
+   tty->print_cr("stack_limit: " INTPTR_FORMAT, (uintptr_t) this->_stack_limit);
+   tty->print_cr("monitor_base: " INTPTR_FORMAT, (uintptr_t) this->_monitor_base);
+-#ifdef SPARC
++#if defined(SPARC) && !defined(ZERO)
+   tty->print_cr("last_Java_pc: " INTPTR_FORMAT, (uintptr_t) this->_last_Java_pc);
+   tty->print_cr("frame_bottom: " INTPTR_FORMAT, (uintptr_t) this->_frame_bottom);
+   tty->print_cr("&native_fresult: " INTPTR_FORMAT, (uintptr_t) &this->_native_fresult);
+--- openjdk/hotspot/src/share/vm/utilities/macros.hpp.old	2014-01-14 21:26:34.000000000 +0000
++++ openjdk/hotspot/src/share/vm/utilities/macros.hpp	2014-01-15 10:55:37.087084380 +0000
+@@ -207,7 +207,7 @@
+ #define NOT_AMD64(code) code
+ #endif
+ 
+-#ifdef SPARC
++#if defined(SPARC) && !defined(ZERO)
+ #define SPARC_ONLY(code) code
+ #define NOT_SPARC(code)
+ #else
+--- openjdk/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp.old	2014-01-14 21:26:34.000000000 +0000
++++ openjdk/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp	2014-01-15 10:55:37.087084380 +0000
+@@ -243,7 +243,7 @@
+ 
+ // checking for nanness
+ #ifdef SOLARIS
+-#ifdef SPARC
++#if defined(SPARC) && !defined(ZERO)
+ inline int g_isnan(float  f) { return isnanf(f); }
+ #else
+ // isnanf() broken on Intel Solaris use isnand()
+--- openjdk/hotspot/src/share/vm/utilities/globalDefinitions_sparcWorks.hpp.old	2014-01-14 21:26:34.000000000 +0000
++++ openjdk/hotspot/src/share/vm/utilities/globalDefinitions_sparcWorks.hpp	2014-01-15 10:55:37.087084380 +0000
+@@ -249,7 +249,7 @@
+ 
+ // checking for nanness
+ #ifdef SOLARIS
+-#ifdef SPARC
++#if defined(SPARC) && !defined(ZERO)
+ inline int g_isnan(float  f) { return isnanf(f); }
+ #else
+ // isnanf() broken on Intel Solaris use isnand()
+--- openjdk/hotspot/src/share/vm/adlc/output_h.cpp.old	2014-01-14 21:26:34.000000000 +0000
++++ openjdk/hotspot/src/share/vm/adlc/output_h.cpp	2014-01-15 10:55:37.095084439 +0000
+@@ -718,7 +718,7 @@
+   fprintf(fp_hpp, "class Pipeline_Use_Cycle_Mask {\n");
+ 
+   if (_pipeline->_maxcycleused <=
+-#ifdef SPARC
++#if defined(SPARC) && !defined(ZERO)
+     64
+ #else
+     32
+--- openjdk/hotspot/src/share/vm/adlc/formssel.cpp.old	2014-01-14 21:26:34.000000000 +0000
++++ openjdk/hotspot/src/share/vm/adlc/formssel.cpp	2014-01-15 10:55:37.103084499 +0000
+@@ -1020,7 +1020,7 @@
+     const char  *opType   = NULL;
+     while (_matrule->base_operand(position, globals, result, name, opType)) {
+       if ( strcmp(opType,"ConP") == 0 ) {
+-#ifdef SPARC
++#if defined(SPARC) && !defined(ZERO)
+         reloc_entries += 2; // 1 for sethi + 1 for setlo
+ #else
+         ++reloc_entries;
+@@ -1058,7 +1058,7 @@
+   // Check for any component being an immediate float or double.
+   Form::DataType data_type = is_chain_of_constant(globals);
+   if( data_type==idealD || data_type==idealF ) {
+-#ifdef SPARC
++#if defined(SPARC) && !defined(ZERO)
+     // sparc required more relocation entries for floating constants
+     // (expires 9/98)
+     reloc_entries += 6;
+--- openjdk/hotspot/src/share/vm/adlc/output_c.cpp.old	2014-01-14 21:26:34.000000000 +0000
++++ openjdk/hotspot/src/share/vm/adlc/output_c.cpp	2014-01-15 10:55:37.111084557 +0000
+@@ -779,7 +779,7 @@
+     /* Do Nothing */;
+ 
+   else if (_pipeline->_maxcycleused <=
+-#ifdef SPARC
++#if defined(SPARC) && !defined(ZERO)
+     64
+ #else
+     32
diff -pruN 8u312-b07-1/debian/patches/zero-x32.diff 8u312-b07-0ubuntu1/debian/patches/zero-x32.diff
--- 8u312-b07-1/debian/patches/zero-x32.diff	2021-07-29 19:29:33.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/patches/zero-x32.diff	2020-06-24 21:29:14.000000000 +0000
@@ -1,5 +1,16 @@
 # DP: Add support for x32
 
+--- a/hotspot/src/os/linux/vm/os_linux.cpp
++++ b/hotspot/src/os/linux/vm/os_linux.cpp
+@@ -1976,7 +1976,7 @@ void * os::dll_load(const char *filename
+ 
+   #if  (defined IA32)
+     static  Elf32_Half running_arch_code=EM_386;
+-  #elif   (defined AMD64)
++  #elif  (defined AMD64) || (defined X32)
+     static  Elf32_Half running_arch_code=EM_X86_64;
+   #elif  (defined IA64)
+     static  Elf32_Half running_arch_code=EM_IA_64;
 --- a/common/autoconf/platform.m4
 +++ b/common/autoconf/platform.m4
 @@ -31,10 +31,17 @@ AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_CPU
@@ -24,7 +35,7 @@
        ;;
      i?86)
        VAR_CPU=x86
-@@ -451,7 +458,13 @@ AC_DEFUN([PLATFORM_SETUP_LEGACY_VARS],
+@@ -449,7 +456,13 @@ AC_DEFUN([PLATFORM_SETUP_LEGACY_VARS],
      ppc64)   ZERO_ARCHDEF=PPC64 ;;
      s390*)   ZERO_ARCHDEF=S390  ;;
      sparc*)  ZERO_ARCHDEF=SPARC ;;
@@ -39,17 +50,6 @@
      x86)     ZERO_ARCHDEF=IA32  ;;
      *)      ZERO_ARCHDEF=$(echo "${OPENJDK_TARGET_CPU_LEGACY_LIB}" | tr a-z A-Z)
    esac
---- a/hotspot/src/os/linux/vm/os_linux.cpp
-+++ b/hotspot/src/os/linux/vm/os_linux.cpp
-@@ -1980,7 +1980,7 @@ void * os::dll_load(const char *filename
- 
-   #if  (defined IA32)
-     static  Elf32_Half running_arch_code=EM_386;
--  #elif   (defined AMD64)
-+  #elif  (defined AMD64) || (defined X32)
-     static  Elf32_Half running_arch_code=EM_X86_64;
-   #elif  (defined IA64)
-     static  Elf32_Half running_arch_code=EM_IA_64;
 --- a/jdk/make/gensrc/GensrcX11Wrappers.gmk
 +++ b/jdk/make/gensrc/GensrcX11Wrappers.gmk
 @@ -91,9 +91,11 @@ ifneq ($(COMPILE_TYPE), cross)
diff -pruN 8u312-b07-1/debian/README.Debian 8u312-b07-0ubuntu1/debian/README.Debian
--- 8u312-b07-1/debian/README.Debian	2021-05-03 18:16:40.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/README.Debian	2016-10-30 15:57:40.000000000 +0000
@@ -1,4 +1,4 @@
-openjdk-8 for Debian/Ubuntu
+openjdk-7 for Debian/Ubuntu
 ---------------------------
 
 The OpenJDK build is configured --with-additional-vms to build with
@@ -21,19 +21,19 @@ compiler); to use the zero build without
 option to operate in interpreted-only mode.
 
 On some architectures (currently armel and powerpc, when built against
-llvm-2.6) which use ther zero vm as the default, the openjdk-8-jre-zero
+llvm-2.6) which use ther zero vm as the default, the openjdk-7-jre-zero
 package contains the shark vm.
 
-To change the default permanently, edit /etc/java-8-openjdk/jvm.cfg.
+To change the default permanently, edit /etc/java-7-openjdk/jvm.cfg.
 
-The Zero/Shark VM can be found in the openjdk-8-jre-zero package (on the
+The Zero/Shark VM can be found in the openjdk-7-jre-zero package (on the
 architectures where the Hotspot VM is available).
 
 Please look for further documentation in the directory
-/usr/share/doc/openjdk-8-jre/ .
+/usr/share/doc/openjdk-7-jre/ .
 
-The package openjdk-8-jre-headless ships a cgi script
-/usr/lib/jvm/java-8-openjdk/bin/java-rmi.cgi that you must integrate
+The package openjdk-7-jre-headless ships a cgi script
+/usr/lib/jvm/java-7-openjdk/bin/java-rmi.cgi that you must integrate
 into your webserver setup manually if you need it. It is not activated
 automatically.
 
diff -pruN 8u312-b07-1/debian/README.source 8u312-b07-0ubuntu1/debian/README.source
--- 8u312-b07-1/debian/README.source	2021-05-03 18:16:40.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/README.source	2016-10-30 15:57:40.000000000 +0000
@@ -1,25 +1,58 @@
 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
-  including Nashorn
-- IcedTea sound support
+- 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
 
-Use debian/rules get-orig to download the new upstream sources
-after adjusting hg_tag etc. in debian/rules to point to the
-desired upstream versions and tags.
+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 standardised environment variable DEB_BUILD_OPTIONS. This variable can
+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.
@@ -28,8 +61,11 @@ contain several flags to change how a pa
   * 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)"
@@ -38,28 +74,3 @@ DEB_BUILD_OPTIONS="parallel=5 nocheck" d
 
 This also work with cowbuilder/pbuilder:
 DEB_BUILD_OPTIONS="parallel=5 nocheck" pdebuild -i"(\.hg|\.bzr)" --logfile ../build.log --pbuilder cowbuilder
-
-Test failures
-=============
-
-In older releases (stretch, xenial, and anything before), it is
-often not worth the delay to run the tests at all. Reasons for
-test failures are:
-
-• jasm, jcoder, etc. missing: there is no Debian package for
-  https://wiki.openjdk.java.net/display/CodeTools/asmtools
-  at all, despite jtreg officially depending on it (all releases)
-
-• jtreg doesn’t know @comment which is used in some tests (old releases)
-
-• java.lang.NoClassDefFoundError: com/google/common/primitives/Ints
-  in testng (old releases)
-
-If this wasn’t in maintenance mode I’d suggest packaging asmtools,
-probably with /usr/bin/jasm and friends, B-Ding on it for sid,
-testing the hell out of this for sid, rebuild the same code for
-older releases hoping/praying things will work there. Perhaps even
-fixing testng plus backporting @comment to jtreg…?
-
-But, as things are, best to ignore all test failures and assume(…)
-upstream know what they do :/
diff -pruN 8u312-b07-1/debian/rules 8u312-b07-0ubuntu1/debian/rules
--- 8u312-b07-1/debian/rules	2021-11-05 23:50:02.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/rules	2021-11-03 12:27:30.000000000 +0000
@@ -4,9 +4,7 @@
 # Uncomment this to turn on verbose mode.
 #export DH_VERBOSE=1
 
-unexport LANG
-export LC_ALL=C
-unexport LANGUAGE
+unexport LANG LC_ALL
 
 dh_version := $(shell dpkg-query -f '$${Version}\n' -W debhelper | sed -n 's/^\(.\).*/\1/p')
 
@@ -134,6 +132,9 @@ with_check = $(if $(findstring nocheck,
 ifneq (,$(filter $(DEB_HOST_ARCH), armel))
   with_check = disabled running check on $(DEB_HOST_ARCH)
 endif
+ifneq (,$(filter $(distrel),precise))
+  with_check = disabled running check on $(distrel)
+endif
 #with_check = disabled for this build
 
 with_docs = $(if $(findstring nodoc, $(DEB_BUILD_OPTIONS)),,yes)
@@ -226,8 +227,8 @@ export EXTRA_LDFLAGS_HS  := $(shell $(dp
 
 # for JDK: jdk/make/common/Defs.gmk
 # Don't overwrite JDK opt level :
-# 1) with forced -O3, it causes wrong Math.* computations, see #679292 and #678228
-# 2) JDK already uses its own OPTIMIZATION_LEVEL variable for each module
+# 1) with forced -03, it cause wrong Math.* computations, see #679292 and #678228
+# 2) JDK already use it's own OPTIMIZATION_LEVEL variable for each module
 dpkg_buildflags_jdk = DEB_CFLAGS_MAINT_STRIP="-O2 -O3" DEB_CXXFLAGS_MAINT_STRIP="-O2 -O3"
 dpkg_buildflags_jdk += dpkg-buildflags
 export EXTRA_CPPFLAGS_JDK := $(shell $(dpkg_buildflags_jdk) --get CPPFLAGS)
@@ -253,16 +254,16 @@ ifneq (,$(filter $(distrel),squeeze luci
 else ifneq (,$(filter $(distrel),wheezy quantal raring))
   export CC = gcc-4.7
   export CXX = g++-4.7
-else ifneq (,$(filter $(distrel),precise))
-  export CC = gcc-4.6
-  export CXX = g++-4.6
-else ifneq (,$(filter $(distrel),saucy trusty))
+#else ifneq (,$(filter $(distrel),precise))
+#  export CC = gcc-4.6
+#  export CXX = g++-4.6
+else ifneq (,$(filter $(distrel),saucy))
   export CC = gcc-4.8
   export CXX = g++-4.8
 else ifneq (,$(filter $(distrel),utopic vivid jessie))
   export CC = gcc-4.9
   export CXX = g++-4.9
-else ifneq (,$(filter $(distrel),wily xenial))
+else ifneq (,$(filter $(distrel),xenial wily))
   export CC = $(DEB_HOST_GNU_TYPE)-gcc-5
   export CXX = $(DEB_HOST_GNU_TYPE)-g++-5
 else ifneq (,$(filter $(distrel),zesty stretch))
@@ -272,15 +273,15 @@ else ifneq (,$(filter $(distrel),artful
   export CC = $(DEB_HOST_GNU_TYPE)-gcc-7
   export CXX = $(DEB_HOST_GNU_TYPE)-g++-7
 #else ifneq (,$(filter $(distrel),buster precise trusty))
-else ifneq (,$(filter $(distrel),buster))
+else ifneq (,$(filter $(distrel),buster precise))
   export CC = $(DEB_HOST_GNU_TYPE)-gcc-8
   export CXX = $(DEB_HOST_GNU_TYPE)-g++-8
-else ifneq (,$(filter $(distrel),focal))
+else ifneq (,$(filter $(distrel),trusty xenial bionic focal hirsute))
   export CC = $(DEB_HOST_GNU_TYPE)-gcc-9
   export CXX = $(DEB_HOST_GNU_TYPE)-g++-9
 else
-  export CC = $(DEB_HOST_GNU_TYPE)-gcc-10
-  export CXX = $(DEB_HOST_GNU_TYPE)-g++-10
+  export CC = $(DEB_HOST_GNU_TYPE)-gcc-11
+  export CXX = $(DEB_HOST_GNU_TYPE)-g++-11
 endif
 
 ifneq (,$(filter $(DEB_HOST_ARCH), armel armhf))
@@ -321,6 +322,8 @@ on_buildd := $(shell [ -f /CurrentlyBuil
 ifeq (,$(filter $(distrel),squeeze wheezy precise trusty))
   ifeq (,$(filter $(DEB_HOST_ARCH),none))
     with_systemtap = yes
+    ALT_SDT_H := $(firstword $(wildcard /usr/include/*/sys/sdt.h /usr/include/sys/sdt.h))
+    export ALT_SDT_H
   endif
 endif
 
@@ -370,11 +373,19 @@ COMMON_PATCHES = \
 	jdk-i18n-pt_BR.diff \
 	hotspot-ia64.diff \
 
+# FIXME:
+#	dont-strip-images.diff \
+#	8141491.diff \
+
 ifeq ($(derivative),Debian)
   COMMON_PATCHES += \
 	hotspot-disable-exec-shield-workaround.patch
 endif
 
+#	jdk-derived-font-size.diff \
+# FIXME: update patches
+	#accessible-toolkit.patch # update for 8
+
 ifeq ($(with_bridge),atk)
     COMMON_PATCHES += atk-wrapper-security.patch
 else ifneq (,$(with_bridge))
@@ -385,11 +396,22 @@ COMMON_PATCHES += \
 	dnd-files.patch \
 	zero-x32.diff \
 
+# FIXME	fontconfig-wqy-microhei.patch \
+# FIXME	zero-sparc.diff \
+# FIXME	no-pch-build.diff \
+
 ifeq (,$(filter $(DEB_HOST_ARCH),$(hotspot_aarch64_archs) $(hotspot_aarch32_archs)))
   COMMON_PATCHES += \
 	zero-sh.diff
 endif
 
+# FIXME: needs an update
+#ifeq (,$(filter $(distrel),squeeze lucid))
+#  COMMON_PATCHES += \
+#	fontconfig-korean-nanum.diff \
+#	fontconfig-japanese.diff
+#endif
+
 ifeq ($(with_pulse),yes)
     COMMON_PATCHES += \
 	jdk-pulseaudio.diff
@@ -407,6 +429,12 @@ ifneq (,$(filter $(DEB_HOST_ARCH), $(hot
 	aarch32.diff
 endif
 
+ifneq (,$(filter $(DEB_HOST_ARCH), kfreebsd-amd64 kfreebsd-i386))
+  COMMON_PATCHES += \
+	kfreebsd-support-jdk.diff \
+	kfreebsd-support-hotspot.diff
+endif
+
 DEFAULT_PATCHES = \
 	$(COMMON_PATCHES) \
 	hotspot-libpath-$(hotspot_version).diff
@@ -458,7 +486,8 @@ EXTRA_BUILD_ENV += \
 	FULL_DEBUG_SYMBOLS=0 \
 	ZIP_DEBUGINFO_FILES=0 \
 	STRIP_POLICY=none \
-	POST_STRIP_CMD=true
+	POST_STRIP_CMD=true \
+	ALT_OBJCOPY=/does_not_exist
 
 ifeq ($(with_pulse),yes)
   CONFIGURE_ARGS += --enable-pulse-java
@@ -551,14 +580,13 @@ COMMON_CONFIGURE_ARGS += \
 	--with-lcms=system \
 	--with-libpcsclite=system \
 
-#ifneq (,$(filter $(distrel),precise trusty))
-#  when building with a not-shipped gcc-8 only
-#  COMMON_CONFIGURE_ARGS += \
-#	--with-stdc++lib=static
-#else
+ifneq (,$(filter $(distrel),precise trusty))
+  COMMON_CONFIGURE_ARGS += \
+	--with-stdc++lib=static
+else
   COMMON_CONFIGURE_ARGS += \
 	--with-stdc++lib=dynamic
-#endif
+endif
 
 ifneq (,$(NJOBS))
   COMMON_CONFIGURE_ARGS += --with-num-cores=$(NJOBS)
@@ -631,50 +659,38 @@ else
   bd_autotools = autoconf (>= 2.69), automake, autotools-dev,
 endif
 bd_bootstrap += \
-	openjdk-8-jdk,
-#	openjdk-8-jdk | openjdk-7-jdk,
+	openjdk-8-jdk | openjdk-7-jdk,
 ifeq (,$(filter $(distrel),squeeze wheezy jessie precise trusty))
 bd_cross += \
 	openjdk-8-jdk-headless <cross>, dpkg-dev (>= 1.17.14),
 endif
 
-ifeq ($(with_check),yes)
-bd_check = \
-	xvfb@nocheck@, xauth@nocheck@, xfonts-base@nocheck@, \
-	libgl1-mesa-dri [!x32]@nocheck@, xfwm4@nocheck@, \
-	x11-xkb-utils@nocheck@, dbus-x11@nocheck@, \
-	jtreg@nocheck@, testng@nocheck@, \
-	openjdk-8-jre-headless@nocheck@ | default-jre-headless (>= 2:1.8)@nocheck@,
-else
-bd_check =
-endif
-
 # This section should be in sync with "CC/CXX" definition
 ifneq (,$(filter $(distrel),squeeze lucid))
   bd_gcc = g++-4.4 (>= 4.4.1),
-else ifneq (,$(filter $(distrel),precise))
-  bd_gcc = g++-4.6,
-else ifneq (,$(filter $(distrel),wheezy))
+#else ifneq (,$(filter $(distrel), precise))
+#  bd_gcc = g++-4.6,
+else ifneq (,$(filter $(distrel), wheezy))
   bd_gcc = g++-4.7, g++-4.4 [mips mipsel],
-else ifneq (,$(filter $(distrel),quantal raring))
+else ifneq (,$(filter $(distrel), quantal raring))
   bd_gcc = g++-4.7,
-else ifneq (,$(filter $(distrel),saucy trusty))
+else ifneq (,$(filter $(distrel), saucy))
   bd_gcc = g++-4.8,
 else ifneq (,$(filter $(distrel),utopic vivid jessie))
   bd_gcc = g++-4.9,
-else ifneq (,$(filter $(distrel),wily xenial))
+else ifneq (,$(filter $(distrel),xenial wily))
   bd_gcc = g++-5,
 else ifneq (,$(filter $(distrel),stretch zesty))
   bd_gcc = g++-6,
 else ifneq (,$(filter $(distrel),artful bionic))
   bd_gcc = g++-7,
 #else ifneq (,$(filter $(distrel),buster precise trusty))
-else ifneq (,$(filter $(distrel),buster))
+else ifneq (,$(filter $(distrel),buster precise))
   bd_gcc = g++-8,
-else ifneq (,$(filter $(distrel),focal))
+else ifneq (,$(filter $(distrel),trusty xenial bionic focal hirsute))
   bd_gcc = g++-9,
 else
-  bd_gcc = g++-10,
+  bd_gcc = g++-11,
 endif
 bd_syslibs = zlib1g-dev, libattr1-dev,
 ifneq (,$(filter $(distrel),squeeze lucid))
@@ -754,7 +770,7 @@ dlopen_hl_depends = \
 	libcups2, liblcms2-2,
 ifneq (,$(filter $(distrel),squeeze lucid))
   dlopen_hl_depends += libjpeg62,
-else ifneq (,$(filter $(distrel), jessie stretch buster bullseye bookworm sid))
+else ifneq (,$(filter $(distrel), jessie stretch buster bullseye sid))
   dlopen_hl_depends += libjpeg62-turbo,
 else
   dlopen_hl_depends += libjpeg8,
@@ -844,6 +860,7 @@ control_vars = \
 	'-Vdlopenhl:Recommends=$(dlopen_hl_recommends)' \
 	'-Vdlopenjre:Depends=$(dlopen_jre_depends)' \
 	'-Vdlopenjre:Recommends=$(dlopen_jre_recommends)' \
+	'-Vpkg:pulseaudio=$(pkg_pulseaudio)' \
 	'-Vxulrunner:Depends=$(xulrunner_depends)' \
 
 ifeq ($(with_bridge),atk)
@@ -906,7 +923,6 @@ debian/control: debian/control.in debian
 	      -e 's/@basename@/$(basename)/g' \
 	      -e 's/@bd_autotools@/$(bd_autotools)/g' \
 	      -e 's/@bd_bootstrap@/$(strip $(bd_bootstrap))/g' \
-	      -e 's/@bd_check@/$(strip $(bd_check))/g' \
 	      -e 's/@bd_cross@/$(strip $(bd_cross))/g' \
 	      -e 's/@bd_openjdk@/$(bd_openjdk)/g' \
 	      -e 's/@bd_zero@/$(bd_zero)/g' \
@@ -923,7 +939,7 @@ debian/control: debian/control.in debian
 	      -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@/$(strip $(altzero_archs))/g' \
+	      -e 's/@altzero_archs@/$(altzero_archs)/g' \
 	      -e 's/@nocheck@/$(nocheck_profile)/g' \
 	    debian/control.in \
 	    $(if $(transitional_jamvm_pkg), debian/control.jamvm-trans) \
@@ -1156,6 +1172,8 @@ endif
 pre-build:
 ifneq (,$(filter $(DEB_HOST_ARCH),s390))
 	@echo explicitely fail the build for $(DEB_HOST_ARCH), patches not updated
+#else ifneq (,$(filter $(DEB_HOST_ARCH),armel))
+#	@echo explicitely fail the build for $(DEB_HOST_ARCH), ARM assembler interpreter not yet ported
 	false
 endif
 
@@ -1251,11 +1269,8 @@ ifneq (,$(filter $(VMNAME), $(with_jtreg
 	-for i in hotspot langtools jdk; do \
 	  find jtreg-test-output/$$i/JTwork/ -name '*.jtr'; \
 	done > jtreg-test-output/failed_tests-$(VMNAME).list
-	tar --ignore-failed-read -C . -cf - \
-	    -T jtreg-test-output/failed_tests-$(VMNAME).list | \
-	    gzip -n9 >jtreg-test-output/failed_tests-$(VMNAME).tar.gz
-	tar -C . -cf - $$(find jtreg-test-output -name JTreport) | \
-	    gzip -n9 >jtreg-test-output/jtreport-$(VMNAME).tar.gz
+	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
@@ -1481,6 +1496,12 @@ endif
 	: # FIXME: fix, move and install tapset files
 	rm -rf $(d)/$(basedir)/tapset
 
+	: # TODO: why do we provide a custom font.properties.ja?
+	: # cp -p debian/font.properties.ja $(d_jbin)/$(etcdir)/.
+#	cp debian/font.properties.wgy_zenhai \
+#		$(d)/$(etcdir)/font.properties.ja
+
+
 	: # now move things to the packages. it is so ****** to create
 	: # .install files first. dh_movefiles did do the job perfectly
 
@@ -1991,48 +2012,38 @@ package_version		= $(subst jdk,,$(hg_tag
 ifneq ($(is_release),yes)
   package_version	:= $(subst -,~,$(package_version))
 endif
-hg_url			= https://hg.openjdk.java.net/jdk8u/$(hg_project)
+hg_url			= http://hg.openjdk.java.net/jdk8u/$(hg_project)
 hg_project_aarch64	= jdk8u-shenandoah
 hg_tag_aarch64		= aarch64-shenandoah-jdk8u312-b07
-hg_url_aarch64		= https://hg.openjdk.java.net/aarch64-port/$(hg_project_aarch64)
+hg_url_aarch64		= http://hg.openjdk.java.net/aarch64-port/$(hg_project_aarch64)
 hg_project_aarch32	= jdk8u
 hg_tag_aarch32		= jdk8u312-b07-aarch32-20211101
-hg_url_aarch32		= https://hg.openjdk.java.net/aarch32-port/$(hg_project_aarch32)
+hg_url_aarch32		= http://hg.openjdk.java.net/aarch32-port/$(hg_project_aarch32)
 origdir			= ../openjdk-8-$(package_version).orig
-orig_tarball		= ../openjdk-8_$(package_version).orig.tar.gz
+orig_tarball		= ../openjdk-8_$(package_version).orig.tar.xz
 source_date		:= $(shell dpkg-parsechangelog | sed -n '/^Date: /{s///p;q;}')
-do_fetch		= test -s ${origdir}/$(1) || \
-			    if wget -O ${origdir}/$(1)~ $(2); then \
-				mv ${origdir}/$(1)~ ${origdir}/$(1); \
-			    else \
-				echo >&2 E: fetching $(1) failed; \
-				exit 1; \
-			    fi
 fetch-orig:
 	mkdir -p $(origdir)
-	$(call do_fetch,root.tar.bz2,$(hg_url)/archive/$(hg_tag).tar.bz2)
+	wget -c -O $(origdir)/root.tar.bz2 $(hg_url)/archive/$(hg_tag).tar.bz2
 	for repo in corba jaxp jaxws langtools hotspot jdk nashorn; do \
-		$(call do_fetch,$$repo.tar.bz2, \
-		    $(hg_url)/$$repo/archive/$(hg_tag).tar.bz2); \
+	  echo wget -O $(origdir)/$$repo.tar.bz2 \
+	    $(hg_url)/$$repo/archive/$(hg_tag).tar.bz2; \
+	  wget -O $(origdir)/$$repo.tar.bz2 \
+	    $(hg_url)/$$repo/archive/$(hg_tag).tar.bz2; \
 	done
-	$(call do_fetch,hotspot-aarch64.tar.bz2, \
-	    $(hg_url_aarch64)/hotspot/archive/$(hg_tag_aarch64).tar.bz2)
+	wget -O $(origdir)/hotspot-aarch64.tar.bz2 \
+	  $(hg_url_aarch64)/hotspot/archive/$(hg_tag_aarch64).tar.bz2
+
 ifneq (,$(hotspot_aarch32_archs))
-	$(call do_fetch,hotspot-aarch32.tar.bz2, \
-	    $(hg_url_aarch32)/hotspot/archive/$(hg_tag_aarch32).tar.bz2)
+	wget -O $(origdir)/hotspot-aarch32.tar.bz2 \
+	  $(hg_url_aarch32)/hotspot/archive/$(hg_tag_aarch32).tar.bz2
 endif
-	$(call do_fetch,icedtea-sound.tar.xz, \
-	    http://icedtea.classpath.org/download/source/icedtea-sound-1.0.1.tar.xz)
-	# checksum generated after PGP validation of manual download
-	cd $(origdir) && \
-	    echo '6ff852b82ae7db7a95981271037eb3a3d52c59581e3b27a638a7c6bc8eecb4a3 *icedtea-sound.tar.xz' | \
-	    sha256sum -c
-	:
-	ls -l $(origdir)
 
-gtar_reproducible=tar --clamp-mtime --mtime="$(source_date)" \
-	--sort=name --owner=0 --group=0 --numeric-owner --format=ustar
+	wget -O $(origdir)/icedtea-sound.tar.xz \
+	  http://icedtea.classpath.org/download/source/icedtea-sound-1.0.1.tar.xz
 
+#	wget -O $(origdir)/icedtea-sound.tar.bz2 \
+#	  http://icedtea.classpath.org/hg/icedtea-sound/archive/tip.tar.bz2
 dfsg-orig:
 	: # remove JSON license from THIRD_PARTY_README; no files shipped
 	set -ex; \
@@ -2043,7 +2054,6 @@ dfsg-orig:
 	  [ -f $(origdir)/$$repo.tar.bz2 ] || continue; \
 	  mkdir -p $$repo; \
 	  tar -xf $(origdir)/$$repo.tar.bz2 --strip-components=1 -C $$repo; \
-	  find $$repo -type d -print0 | xargs -0 chmod 755; \
 	  find $$repo -maxdepth 2 -name THIRD_PARTY_README; \
 	  for f in $$(find $$repo -maxdepth 2 -name THIRD_PARTY_README); do \
 	    awk '/^%% This notice is provided with respect to JSON/ { skip=1 } skip == 0 {print} /^----------/ { skip = 0} ' $$f > $$f.new; \
@@ -2061,16 +2071,11 @@ dfsg-orig:
 	    rm -v -f $$repo/src/share/native/sun/java2d/cmm/lcms/lcms2*.h; \
 	    rm -v -rf $$repo/src/solaris/native/sun/security/smartcardio/MUSCLE; \
 	  esac; \
-	  find $$repo -perm /111 -print0 | xargs -0 chmod 755; \
-	  find $$repo '!' -perm /111 -print0 | xargs -0 chmod 644; \
-	  ${gtar_reproducible} -cJf $(origdir)/$$repo.tar.xz $$repo; \
+	  tar --clamp-mtime --mtime="$(source_date)" -cJf $(origdir)/$$repo.tar.xz $$repo; \
 	  rm -rf $$repo; \
 	  rm -f $(origdir)/$$repo.tar.bz2; \
 	done; \
-	find $(origdir) -perm /111 -print0 | xargs -0 chmod 755; \
-	find $(origdir) '!' -perm /111 -print0 | xargs -0 chmod 644; \
-	${gtar_reproducible} -cf - -C .. $$(basename $(origdir)) | \
-	    gzip -n9 >$(orig_tarball)
+	tar --clamp-mtime --mtime="$(source_date)" -cJf $(orig_tarball) -C.. $$(basename $(origdir));
 get-orig: fetch-orig dfsg-orig
 
 binary: binary-arch binary-indep
diff -pruN 8u312-b07-1/debian/source/lintian-overrides 8u312-b07-0ubuntu1/debian/source/lintian-overrides
--- 8u312-b07-1/debian/source/lintian-overrides	2021-05-03 18:16:40.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/source/lintian-overrides	2018-03-15 17:19:50.000000000 +0000
@@ -1,23 +1,2 @@
-# this uses its own patch series generation
+openjdk-8 source: quilt-build-dep-but-no-series-file
 openjdk-8 source: patch-file-present-but-not-mentioned-in-series
-
-# needed for portability to older distro releases
-openjdk-8 source: debian-rules-parses-dpkg-parsechangelog
-
-# not feasible here
-openjdk-8 source: debian-watch-file-is-missing
-
-# highly intricate, not touching this for now
-openjdk-8 source: no-dh-sequencer
-openjdk-8 source: silent-on-rules-requiring-root
-openjdk-8 source: no-dep5-copyright
-
-# jajajajaja…
-openjdk-8 source: cute-field
-openjdk-8 source: upstream-metadata-file-is-missing
-
-# yeah, fix the tools that may croak then…
-openjdk-8 source: hyphen-in-upstream-part-of-debian-changelog-version
-
-# not a dh_make leftover
-openjdk-8 source: file-contains-fixme-placeholder
diff -pruN 8u312-b07-1/debian/source/options 8u312-b07-0ubuntu1/debian/source/options
--- 8u312-b07-1/debian/source/options	2021-05-03 18:16:40.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/source/options	1970-01-01 00:00:00.000000000 +0000
@@ -1 +0,0 @@
-extend-diff-ignore = "^\.gitignore$"
diff -pruN 8u312-b07-1/debian/tests/hotspot 8u312-b07-0ubuntu1/debian/tests/hotspot
--- 8u312-b07-1/debian/tests/hotspot	2021-05-03 18:16:40.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/tests/hotspot	2020-08-01 21:41:17.000000000 +0000
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/bash 
 set -o errexit
 set -o errtrace
 set -o pipefail
diff -pruN 8u312-b07-1/debian/tests/jtreg-autopkgtest.in 8u312-b07-0ubuntu1/debian/tests/jtreg-autopkgtest.in
--- 8u312-b07-1/debian/tests/jtreg-autopkgtest.in	2021-05-03 18:16:40.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/tests/jtreg-autopkgtest.in	2020-08-01 21:41:17.000000000 +0000
@@ -28,7 +28,7 @@ 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
diff -pruN 8u312-b07-1/debian/tests/jtreg-autopkgtest.sh 8u312-b07-0ubuntu1/debian/tests/jtreg-autopkgtest.sh
--- 8u312-b07-1/debian/tests/jtreg-autopkgtest.sh	2021-05-03 18:16:40.000000000 +0000
+++ 8u312-b07-0ubuntu1/debian/tests/jtreg-autopkgtest.sh	2020-08-01 21:41:17.000000000 +0000
@@ -28,7 +28,7 @@ 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
Binary files 8u312-b07-1/hotspot-aarch32.tar.xz and 8u312-b07-0ubuntu1/hotspot-aarch32.tar.xz differ
Binary files 8u312-b07-1/hotspot-aarch64.tar.xz and 8u312-b07-0ubuntu1/hotspot-aarch64.tar.xz differ
Binary files 8u312-b07-1/hotspot.tar.xz and 8u312-b07-0ubuntu1/hotspot.tar.xz differ
Binary files 8u312-b07-1/jaxp.tar.xz and 8u312-b07-0ubuntu1/jaxp.tar.xz differ
Binary files 8u312-b07-1/jaxws.tar.xz and 8u312-b07-0ubuntu1/jaxws.tar.xz differ
Binary files 8u312-b07-1/jdk.tar.xz and 8u312-b07-0ubuntu1/jdk.tar.xz differ
Binary files 8u312-b07-1/langtools.tar.xz and 8u312-b07-0ubuntu1/langtools.tar.xz differ
Binary files 8u312-b07-1/nashorn.tar.xz and 8u312-b07-0ubuntu1/nashorn.tar.xz differ
Binary files 8u312-b07-1/root.tar.xz and 8u312-b07-0ubuntu1/root.tar.xz differ
