openjdk team mailing list archive
-
openjdk team
-
Mailing list archive
-
Message #09867
Bug#740289: openjdk-6: [PATCH] fixes for backport releases
Package: openjdk-6
Version: 6b30-1.13.1-1
Severity: serious
Tags: patch
Justification: fails to build from source (but built successfully in the past)
User: ubuntu-devel@xxxxxxxxxxxxxxxx
Usertags: origin-ubuntu trusty ubuntu-patch
Dear Maintainer,
In preparing security updates for older releases of Ubuntu, I found a number of
issues with the current openjdk-6 package:
* configure and acinclude.m4 were patched directly rather than using a patch
system resulting in aclocal being run on every build. IcedTead 1.13.1 now
requires autotools 1.14, but this is not available on Ubuntu 13.10 and
earlier.
* debian/patches/java-access-bridge-security.patch was malformed and would
not apply on Ubuntu 10.04 LTS
* the previous security update introduced LP: #1283828 (upstream 8017173)
The attached patch was applied to Ubuntu to achieve the following:
* pull out changes to configure and acinclude.m4 from diff.gz and
conditionally apply to Debian and Ubuntu releases that have arm64 and/or
automake-1.14. IcedTea 1.13 requires automake 1.14 now and the change to
diff.gz caused a FTBFS on backport builds
- add debian/patches/autotools-aarch64.diff
- debian/rules:
+ add PRECONFIGURE_DEBIAN_PATCHES which is empty on releases where we
don't have automake-1.14, otherwise add autotools-aarch64.diff
+ add preconfigure-distribution-patches.stamp target and have
stamps/icedtea-configure depend on it
+ adjust debian-clean to unapply PRECONFIGURE_DEBIAN_PATCHES
* debian/patches/8017173.diff: XMLCipher with RSA_OAEP Key Transport
algorithm can't be instantiated (LP: #1283828)
* debian/patches/java-access-bridge-security.patch: fix malformed patch
Ubuntu also did the following as part of the security update:
* debian/rules: disable system lcms2 for releases that don't have lcms2 2.5
or higher
but after further investigation, it seems this was not actually required, so I
removed this from the patch I am submitting to you now.
debian/patches/8017173.diff adds a test case, but it is not run in the build. I
didn't investigate why, but it can be run manually with:
$ javac -XDignore.symbol.file GetInstance.java
$ java GetInstance
A patched openjdk will exit with '0' while unpatched will throw the exception
in the bug. This regression was introduced due to a partial backport from
openjdk8 to openjdk7 which IcedTea picked up. They then pulled back this
partial backport for the 1.x releases. Incidentally, this issue affects
openjdk-7 7u51-2.4.5-1ubuntu1, so it should be applied to the openjdk-7 package
in sid as well. I filed this bug with upstream for the regression:
http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=1688
Thanks for considering the patch.
-- System Information:
Debian Release: jessie/sid
APT prefers trusty-updates
APT policy: (500, 'trusty-updates'), (500, 'trusty-security'), (500, 'trusty')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 3.13.0-8-generic (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
reverted:
--- openjdk-6-6b30-1.13.1/acinclude.m4
+++ openjdk-6-6b30-1.13.1.orig/acinclude.m4
@@ -22,12 +22,6 @@
JRE_ARCH_DIR=alpha
CROSS_TARGET_ARCH=alpha
;;
- arm64|aarch64)
- BUILD_ARCH_DIR=aarch64
- INSTALL_ARCH_DIR=aarch64
- JRE_ARCH_DIR=aarch64
- ARCHFLAG="-D_LITTLE_ENDIAN"
- ;;
arm*)
BUILD_ARCH_DIR=arm
INSTALL_ARCH_DIR=arm
@@ -1559,7 +1553,7 @@
AC_MSG_RESULT(${ENABLE_SYSTEM_LCMS})
if test x"${ENABLE_SYSTEM_LCMS}" = "xyes"; then
dnl Check for LCMS2 headers and libraries.
+ PKG_CHECK_MODULES(LCMS2, lcms2 >= 2.5,[LCMS2_FOUND=yes],[LCMS2_FOUND=no])
- PKG_CHECK_MODULES(LCMS2, lcms2,[LCMS2_FOUND=yes],[LCMS2_FOUND=no])
if test "x${LCMS2_FOUND}" = xno
then
AC_MSG_ERROR([Could not find LCMS >= 2.5; install it or build with --disable-system-lcms to use the in-tree copy.])
reverted:
--- openjdk-6-6b30-1.13.1/configure
+++ openjdk-6-6b30-1.13.1.orig/configure
@@ -7216,12 +7216,6 @@
JRE_ARCH_DIR=alpha
CROSS_TARGET_ARCH=alpha
;;
- arm64|aarch64)
- BUILD_ARCH_DIR=aarch64
- INSTALL_ARCH_DIR=aarch64
- JRE_ARCH_DIR=aarch64
- ARCHFLAG="-D_LITTLE_ENDIAN"
- ;;
arm*)
BUILD_ARCH_DIR=arm
INSTALL_ARCH_DIR=arm
@@ -9484,7 +9478,7 @@
mkdir tmp.$$
cd tmp.$$
cat << \EOF > $CLASS
+/* [#]line 9481 "configure" */
-/* [#]line 9487 "configure" */
public class Test
{
@@ -9526,7 +9520,7 @@
mkdir tmp.$$
cd tmp.$$
cat << \EOF > $CLASS
+/* [#]line 9523 "configure" */
-/* [#]line 9529 "configure" */
import java.lang.reflect.Method;
public class Test
@@ -9593,7 +9587,7 @@
mkdir tmp.$$
cd tmp.$$
cat << \EOF > $CLASS
+/* [#]line 9590 "configure" */
-/* [#]line 9596 "configure" */
public class Test
{
public static void main(String[] args)
@@ -9641,7 +9635,7 @@
mkdir tmp.$$
cd tmp.$$
cat << \EOF > $CLASS
+/* [#]line 9638 "configure" */
-/* [#]line 9644 "configure" */
import java.lang.reflect.Method;
public class Test
@@ -9708,7 +9702,7 @@
mkdir tmp.$$
cd tmp.$$
cat << \EOF > $CLASS
+/* [#]line 9705 "configure" */
-/* [#]line 9711 "configure" */
import java.lang.reflect.Constructor;
public class Test
@@ -9777,7 +9771,7 @@
mkdir tmp.$$
cd tmp.$$
cat << \EOF > $CLASS
+/* [#]line 9774 "configure" */
-/* [#]line 9780 "configure" */
import java.lang.reflect.Constructor;
public class Test
@@ -9847,7 +9841,7 @@
mkdir tmp.$$
cd tmp.$$
cat << \EOF > $CLASS
+/* [#]line 9844 "configure" */
-/* [#]line 9850 "configure" */
import java.lang.reflect.Method;
public class Test
@@ -9913,7 +9907,7 @@
mkdir tmp.$$
cd tmp.$$
cat << \EOF > $CLASS
+/* [#]line 9910 "configure" */
-/* [#]line 9916 "configure" */
import java.lang.reflect.Method;
public class Test
@@ -9979,7 +9973,7 @@
mkdir tmp.$$
cd tmp.$$
cat << \EOF > $CLASS
+/* [#]line 9976 "configure" */
-/* [#]line 9982 "configure" */
import java.lang.reflect.Method;
public class Test
@@ -10045,7 +10039,7 @@
mkdir tmp.$$
cd tmp.$$
cat << \EOF > $CLASS
+/* [#]line 10042 "configure" */
-/* [#]line 10048 "configure" */
import java.lang.reflect.Method;
public class Test
@@ -10111,7 +10105,7 @@
mkdir tmp.$$
cd tmp.$$
cat << \EOF > $CLASS
+/* [#]line 10108 "configure" */
-/* [#]line 10114 "configure" */
import java.lang.reflect.Method;
public class Test
@@ -10177,7 +10171,7 @@
mkdir tmp.$$
cd tmp.$$
cat << \EOF > $CLASS
+/* [#]line 10174 "configure" */
-/* [#]line 10180 "configure" */
import java.lang.reflect.Method;
public class Test
@@ -10244,7 +10238,7 @@
mkdir tmp.$$
cd tmp.$$
cat << \EOF > $CLASS
+/* [#]line 10241 "configure" */
-/* [#]line 10247 "configure" */
import java.lang.reflect.Field;
public class Test
@@ -10306,7 +10300,7 @@
mkdir tmp.$$
cd tmp.$$
cat << \EOF > $CLASS
+/* [#]line 10303 "configure" */
-/* [#]line 10309 "configure" */
import java.lang.reflect.Method;
public class Test
@@ -10372,7 +10366,7 @@
mkdir tmp.$$
cd tmp.$$
cat << \EOF > $CLASS
+/* [#]line 10369 "configure" */
-/* [#]line 10375 "configure" */
import java.lang.reflect.Method;
public class Test
@@ -10440,7 +10434,7 @@
mkdir tmp.$$
cd tmp.$$
cat << \EOF > $CLASS
+/* [#]line 10437 "configure" */
-/* [#]line 10443 "configure" */
import java.lang.reflect.Constructor;
public class Test
@@ -10510,7 +10504,7 @@
mkdir tmp.$$
cd tmp.$$
cat << \EOF > $CLASS
+/* [#]line 10507 "configure" */
-/* [#]line 10513 "configure" */
import java.lang.reflect.Method;
public class Test
@@ -10577,7 +10571,7 @@
mkdir tmp.$$
cd tmp.$$
cat << \EOF > $CLASS
+/* [#]line 10574 "configure" */
-/* [#]line 10580 "configure" */
import java.lang.reflect.Method;
public class Test
@@ -10644,7 +10638,7 @@
mkdir tmp.$$
cd tmp.$$
cat << \EOF > $CLASS
+/* [#]line 10641 "configure" */
-/* [#]line 10647 "configure" */
import java.lang.reflect.Constructor;
public class Test
@@ -10713,7 +10707,7 @@
mkdir tmp.$$
cd tmp.$$
cat << \EOF > $CLASS
+/* [#]line 10710 "configure" */
-/* [#]line 10716 "configure" */
import java.lang.reflect.Constructor;
public class Test
@@ -10782,7 +10776,7 @@
mkdir tmp.$$
cd tmp.$$
cat << \EOF > $CLASS
+/* [#]line 10779 "configure" */
-/* [#]line 10785 "configure" */
import java.lang.reflect.Constructor;
public class Test
@@ -10851,7 +10845,7 @@
mkdir tmp.$$
cd tmp.$$
cat << \EOF > $CLASS
+/* [#]line 10848 "configure" */
-/* [#]line 10854 "configure" */
import java.lang.reflect.Constructor;
public class Test
@@ -11170,12 +11164,6 @@
JRE_ARCH_DIR=alpha
CROSS_TARGET_ARCH=alpha
;;
- arm64|aarch64)
- BUILD_ARCH_DIR=aarch64
- INSTALL_ARCH_DIR=aarch64
- JRE_ARCH_DIR=aarch64
- ARCHFLAG="-D_LITTLE_ENDIAN"
- ;;
arm*)
BUILD_ARCH_DIR=arm
INSTALL_ARCH_DIR=arm
@@ -12074,7 +12062,7 @@
mkdir tmp.$$
cd tmp.$$
cat << \EOF > $CLASS
+/* [#]line 12065 "configure" */
-/* [#]line 12077 "configure" */
public class Test
{
@@ -12697,7 +12685,7 @@
mkdir tmp.$$
cd tmp.$$
cat << \EOF > $CLASS
+/* [#]line 12688 "configure" */
-/* [#]line 12700 "configure" */
import javax.xml.namespace.QName;
import javax.xml.stream.Location;
import javax.xml.stream.events.Attribute;
@@ -12787,7 +12775,7 @@
mkdir tmp.$$
cd tmp.$$
cat << \EOF > $SUPERCLASS
+/* #line 12778 "configure" */
-/* #line 12790 "configure" */
public class Test
{
public static final int POTATO = 0;
@@ -12795,7 +12783,7 @@
}
EOF
cat << \EOF > $SUBCLASS
+/* #line 12786 "configure" */
-/* #line 12798 "configure" */
public class TestImpl
extends Test
{
@@ -13518,12 +13506,12 @@
pkg_cv_LCMS2_CFLAGS="$LCMS2_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lcms2 >= 2.5\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "lcms2 >= 2.5") 2>&5
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lcms2\""; } >&5
- ($PKG_CONFIG --exists --print-errors "lcms2") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
+ pkg_cv_LCMS2_CFLAGS=`$PKG_CONFIG --cflags "lcms2 >= 2.5" 2>/dev/null`
- pkg_cv_LCMS2_CFLAGS=`$PKG_CONFIG --cflags "lcms2" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
@@ -13535,12 +13523,12 @@
pkg_cv_LCMS2_LIBS="$LCMS2_LIBS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lcms2 >= 2.5\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "lcms2 >= 2.5") 2>&5
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lcms2\""; } >&5
- ($PKG_CONFIG --exists --print-errors "lcms2") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
+ pkg_cv_LCMS2_LIBS=`$PKG_CONFIG --libs "lcms2 >= 2.5" 2>/dev/null`
- pkg_cv_LCMS2_LIBS=`$PKG_CONFIG --libs "lcms2" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
@@ -13561,9 +13549,9 @@
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
+ LCMS2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "lcms2 >= 2.5" 2>&1`
- LCMS2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "lcms2" 2>&1`
else
+ LCMS2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "lcms2 >= 2.5" 2>&1`
- LCMS2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "lcms2" 2>&1`
fi
# Put the nasty error message in config.log where it belongs
echo "$LCMS2_PKG_ERRORS" >&5
diff -u openjdk-6-6b30-1.13.1/debian/changelog openjdk-6-6b30-1.13.1/debian/changelog
diff -u openjdk-6-6b30-1.13.1/debian/patches/java-access-bridge-security.patch openjdk-6-6b30-1.13.1/debian/patches/java-access-bridge-security.patch
--- openjdk-6-6b30-1.13.1/debian/patches/java-access-bridge-security.patch
+++ openjdk-6-6b30-1.13.1/debian/patches/java-access-bridge-security.patch
@@ -1,6 +1,6 @@
--- openjdk/jdk/src/share/lib/security/java.security-linux
+++ openjdk/jdk/src/share/lib/security/java.security-linux
-@@ -128,6 +128,7 @@
+@@ -128,6 +128,8 @@
# corresponding RuntimePermission ("accessClassInPackage."+package) has
# been granted.
package.access=sun.,\
diff -u openjdk-6-6b30-1.13.1/debian/rules openjdk-6-6b30-1.13.1/debian/rules
--- openjdk-6-6b30-1.13.1/debian/rules
+++ openjdk-6-6b30-1.13.1/debian/rules
@@ -437,6 +437,9 @@
debian/patches/alpha-float-const.diff
endif
+DISTRIBUTION_PATCHES += \
+ debian/patches/8017173.diff
+
export DISTRIBUTION_PATCHES DISTRIBUTION_ECJ_PATCHES
ifeq ($(STAGE1_JAVA),gcj)
@@ -955,6 +961,21 @@
exit 1; \
fi
+# add any distro-specific patches here that should be applied before
+# icedtea-configure
+PRECONFIGURE_DEBIAN_PATCHES :=
+
+ifeq (,$(filter $(distrel),lenny squeeze wheezy saucy raring quantal precise oneiric natty maverick lucid karmic jaunty intrepid hardy))
+ PRECONFIGURE_DEBIAN_PATCHES += debian/patches/autotools-aarch64.diff
+endif
+
+preconfigure-distribution-patches: preconfigure-distribution-patches.stamp
+preconfigure-distribution-patches.stamp:
+ for p in $(PRECONFIGURE_DEBIAN_PATCHES) ; do \
+ cat "$$p" | patch -p1 ; \
+ done
+ touch $@
+
packaging-files:
for f in debian/*.in debian/patches/*.in; do \
case "$$f" in debian/control.in) continue; esac; \
@@ -994,7 +1015,7 @@
endif
icedtea-configure: stamps/icedtea-configure
-stamps/icedtea-configure:
+stamps/icedtea-configure: preconfigure-distribution-patches
-cat /etc/hosts
mkdir -p bin
@@ -1399,6 +1420,12 @@
rm -f $$f2; \
done
rm -f debian/*.install debian/*.links debian/*.debhelper.log
+ if [ -e preconfigure-distribution-patches.stamp ]; then \
+ for p in $(PRECONFIGURE_DEBIAN_PATCHES) ; do \
+ cat "$$p" | patch -p1 -R ; \
+ done ; \
+ rm -f preconfigure-distribution-patches.stamp ; \
+ fi
lib_ext_dirs = common $(sort $(foreach arch,$(arch_map),$(firstword $(subst =,$(SPACE),$(arch)))))
ifeq ($(distribution),Ubuntu)
only in patch2:
unchanged:
--- openjdk-6-6b30-1.13.1.orig/debian/patches/8017173.diff
+++ openjdk-6-6b30-1.13.1/debian/patches/8017173.diff
@@ -0,0 +1,68 @@
+
+# HG changeset patch
+# User mullan
+# Date 1373562821 14400
+# Node ID c5d869453212ac971258f818de8b158dc22b6e8c
+# Parent 3119569301137347116bc045e4010f477bbc7a72
+8017173: XMLCipher with RSA_OAEP Key Transport algorithm can't be instantiated
+Reviewed-by: xuelei, vinnie
+
+--- openjdk/jdk/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/JCEMapper.java Thu Jul 11 12:41:19 2013 +0400
++++ openjdk/jdk/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/JCEMapper.java Thu Jul 11 13:13:41 2013 -0400
+@@ -160,7 +160,7 @@ public class JCEMapper {
+ );
+ algorithmsMap.put(
+ XMLCipher.RSA_OAEP,
+- new Algorithm("RSA", "RSA/ECB/OAEPPadding", "KeyTransport")
++ new Algorithm("RSA", "RSA/ECB/OAEPWithSHA1AndMGF1Padding", "KeyTransport")
+ );
+ algorithmsMap.put(
+ XMLCipher.DIFFIE_HELLMAN,
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/com/sun/org/apache/xml/internal/security/encryption/XMLCipher/GetInstance.java Thu Jul 11 13:13:41 2013 -0400
+@@ -0,0 +1,44 @@
++/*
++ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++/*
++ * @test
++ * @bug 8017173
++ * @summary Check that an XMLCipher with RSA_OAEP Key Transport algorithm can
++ * be instantiated
++ * @compile -XDignore.symbol.file GetInstance.java
++ * @run main GetInstance
++ */
++import com.sun.org.apache.xml.internal.security.Init;
++import com.sun.org.apache.xml.internal.security.encryption.XMLCipher;
++
++public class GetInstance {
++
++ private static final String RSA_OAEP =
++ "http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p";
++
++ public static void main(String[] args) throws Exception {
++ Init.init();
++ XMLCipher.getInstance(RSA_OAEP);
++ }
++}
+
only in patch2:
unchanged:
--- openjdk-6-6b30-1.13.1.orig/debian/patches/autotools-aarch64.diff
+++ openjdk-6-6b30-1.13.1/debian/patches/autotools-aarch64.diff
@@ -0,0 +1,330 @@
+--- openjdk-6-6b30-1.13.1.orig/acinclude.m4
++++ openjdk-6-6b30-1.13.1/acinclude.m4
+@@ -22,6 +22,12 @@
+ JRE_ARCH_DIR=alpha
+ CROSS_TARGET_ARCH=alpha
+ ;;
++ arm64|aarch64)
++ BUILD_ARCH_DIR=aarch64
++ INSTALL_ARCH_DIR=aarch64
++ JRE_ARCH_DIR=aarch64
++ ARCHFLAG="-D_LITTLE_ENDIAN"
++ ;;
+ arm*)
+ BUILD_ARCH_DIR=arm
+ INSTALL_ARCH_DIR=arm
+@@ -1553,7 +1559,7 @@
+ AC_MSG_RESULT(${ENABLE_SYSTEM_LCMS})
+ if test x"${ENABLE_SYSTEM_LCMS}" = "xyes"; then
+ dnl Check for LCMS2 headers and libraries.
+- PKG_CHECK_MODULES(LCMS2, lcms2 >= 2.5,[LCMS2_FOUND=yes],[LCMS2_FOUND=no])
++ PKG_CHECK_MODULES(LCMS2, lcms2,[LCMS2_FOUND=yes],[LCMS2_FOUND=no])
+ if test "x${LCMS2_FOUND}" = xno
+ then
+ AC_MSG_ERROR([Could not find LCMS >= 2.5; install it or build with --disable-system-lcms to use the in-tree copy.])
+--- openjdk-6-6b30-1.13.1.orig/configure
++++ openjdk-6-6b30-1.13.1/configure
+@@ -7216,6 +7216,12 @@
+ JRE_ARCH_DIR=alpha
+ CROSS_TARGET_ARCH=alpha
+ ;;
++ arm64|aarch64)
++ BUILD_ARCH_DIR=aarch64
++ INSTALL_ARCH_DIR=aarch64
++ JRE_ARCH_DIR=aarch64
++ ARCHFLAG="-D_LITTLE_ENDIAN"
++ ;;
+ arm*)
+ BUILD_ARCH_DIR=arm
+ INSTALL_ARCH_DIR=arm
+@@ -9478,7 +9484,7 @@
+ mkdir tmp.$$
+ cd tmp.$$
+ cat << \EOF > $CLASS
+-/* [#]line 9481 "configure" */
++/* [#]line 9487 "configure" */
+
+ public class Test
+ {
+@@ -9520,7 +9526,7 @@
+ mkdir tmp.$$
+ cd tmp.$$
+ cat << \EOF > $CLASS
+-/* [#]line 9523 "configure" */
++/* [#]line 9529 "configure" */
+ import java.lang.reflect.Method;
+
+ public class Test
+@@ -9587,7 +9593,7 @@
+ mkdir tmp.$$
+ cd tmp.$$
+ cat << \EOF > $CLASS
+-/* [#]line 9590 "configure" */
++/* [#]line 9596 "configure" */
+ public class Test
+ {
+ public static void main(String[] args)
+@@ -9635,7 +9641,7 @@
+ mkdir tmp.$$
+ cd tmp.$$
+ cat << \EOF > $CLASS
+-/* [#]line 9638 "configure" */
++/* [#]line 9644 "configure" */
+ import java.lang.reflect.Method;
+
+ public class Test
+@@ -9702,7 +9708,7 @@
+ mkdir tmp.$$
+ cd tmp.$$
+ cat << \EOF > $CLASS
+-/* [#]line 9705 "configure" */
++/* [#]line 9711 "configure" */
+ import java.lang.reflect.Constructor;
+
+ public class Test
+@@ -9771,7 +9777,7 @@
+ mkdir tmp.$$
+ cd tmp.$$
+ cat << \EOF > $CLASS
+-/* [#]line 9774 "configure" */
++/* [#]line 9780 "configure" */
+ import java.lang.reflect.Constructor;
+
+ public class Test
+@@ -9841,7 +9847,7 @@
+ mkdir tmp.$$
+ cd tmp.$$
+ cat << \EOF > $CLASS
+-/* [#]line 9844 "configure" */
++/* [#]line 9850 "configure" */
+ import java.lang.reflect.Method;
+
+ public class Test
+@@ -9907,7 +9913,7 @@
+ mkdir tmp.$$
+ cd tmp.$$
+ cat << \EOF > $CLASS
+-/* [#]line 9910 "configure" */
++/* [#]line 9916 "configure" */
+ import java.lang.reflect.Method;
+
+ public class Test
+@@ -9973,7 +9979,7 @@
+ mkdir tmp.$$
+ cd tmp.$$
+ cat << \EOF > $CLASS
+-/* [#]line 9976 "configure" */
++/* [#]line 9982 "configure" */
+ import java.lang.reflect.Method;
+
+ public class Test
+@@ -10039,7 +10045,7 @@
+ mkdir tmp.$$
+ cd tmp.$$
+ cat << \EOF > $CLASS
+-/* [#]line 10042 "configure" */
++/* [#]line 10048 "configure" */
+ import java.lang.reflect.Method;
+
+ public class Test
+@@ -10105,7 +10111,7 @@
+ mkdir tmp.$$
+ cd tmp.$$
+ cat << \EOF > $CLASS
+-/* [#]line 10108 "configure" */
++/* [#]line 10114 "configure" */
+ import java.lang.reflect.Method;
+
+ public class Test
+@@ -10171,7 +10177,7 @@
+ mkdir tmp.$$
+ cd tmp.$$
+ cat << \EOF > $CLASS
+-/* [#]line 10174 "configure" */
++/* [#]line 10180 "configure" */
+ import java.lang.reflect.Method;
+
+ public class Test
+@@ -10238,7 +10244,7 @@
+ mkdir tmp.$$
+ cd tmp.$$
+ cat << \EOF > $CLASS
+-/* [#]line 10241 "configure" */
++/* [#]line 10247 "configure" */
+ import java.lang.reflect.Field;
+
+ public class Test
+@@ -10300,7 +10306,7 @@
+ mkdir tmp.$$
+ cd tmp.$$
+ cat << \EOF > $CLASS
+-/* [#]line 10303 "configure" */
++/* [#]line 10309 "configure" */
+ import java.lang.reflect.Method;
+
+ public class Test
+@@ -10366,7 +10372,7 @@
+ mkdir tmp.$$
+ cd tmp.$$
+ cat << \EOF > $CLASS
+-/* [#]line 10369 "configure" */
++/* [#]line 10375 "configure" */
+ import java.lang.reflect.Method;
+
+ public class Test
+@@ -10434,7 +10440,7 @@
+ mkdir tmp.$$
+ cd tmp.$$
+ cat << \EOF > $CLASS
+-/* [#]line 10437 "configure" */
++/* [#]line 10443 "configure" */
+ import java.lang.reflect.Constructor;
+
+ public class Test
+@@ -10504,7 +10510,7 @@
+ mkdir tmp.$$
+ cd tmp.$$
+ cat << \EOF > $CLASS
+-/* [#]line 10507 "configure" */
++/* [#]line 10513 "configure" */
+ import java.lang.reflect.Method;
+
+ public class Test
+@@ -10571,7 +10577,7 @@
+ mkdir tmp.$$
+ cd tmp.$$
+ cat << \EOF > $CLASS
+-/* [#]line 10574 "configure" */
++/* [#]line 10580 "configure" */
+ import java.lang.reflect.Method;
+
+ public class Test
+@@ -10638,7 +10644,7 @@
+ mkdir tmp.$$
+ cd tmp.$$
+ cat << \EOF > $CLASS
+-/* [#]line 10641 "configure" */
++/* [#]line 10647 "configure" */
+ import java.lang.reflect.Constructor;
+
+ public class Test
+@@ -10707,7 +10713,7 @@
+ mkdir tmp.$$
+ cd tmp.$$
+ cat << \EOF > $CLASS
+-/* [#]line 10710 "configure" */
++/* [#]line 10716 "configure" */
+ import java.lang.reflect.Constructor;
+
+ public class Test
+@@ -10776,7 +10782,7 @@
+ mkdir tmp.$$
+ cd tmp.$$
+ cat << \EOF > $CLASS
+-/* [#]line 10779 "configure" */
++/* [#]line 10785 "configure" */
+ import java.lang.reflect.Constructor;
+
+ public class Test
+@@ -10845,7 +10851,7 @@
+ mkdir tmp.$$
+ cd tmp.$$
+ cat << \EOF > $CLASS
+-/* [#]line 10848 "configure" */
++/* [#]line 10854 "configure" */
+ import java.lang.reflect.Constructor;
+
+ public class Test
+@@ -11164,6 +11170,12 @@
+ JRE_ARCH_DIR=alpha
+ CROSS_TARGET_ARCH=alpha
+ ;;
++ arm64|aarch64)
++ BUILD_ARCH_DIR=aarch64
++ INSTALL_ARCH_DIR=aarch64
++ JRE_ARCH_DIR=aarch64
++ ARCHFLAG="-D_LITTLE_ENDIAN"
++ ;;
+ arm*)
+ BUILD_ARCH_DIR=arm
+ INSTALL_ARCH_DIR=arm
+@@ -12062,7 +12074,7 @@
+ mkdir tmp.$$
+ cd tmp.$$
+ cat << \EOF > $CLASS
+-/* [#]line 12065 "configure" */
++/* [#]line 12077 "configure" */
+
+ public class Test
+ {
+@@ -12685,7 +12697,7 @@
+ mkdir tmp.$$
+ cd tmp.$$
+ cat << \EOF > $CLASS
+-/* [#]line 12688 "configure" */
++/* [#]line 12700 "configure" */
+ import javax.xml.namespace.QName;
+ import javax.xml.stream.Location;
+ import javax.xml.stream.events.Attribute;
+@@ -12775,7 +12787,7 @@
+ mkdir tmp.$$
+ cd tmp.$$
+ cat << \EOF > $SUPERCLASS
+-/* #line 12778 "configure" */
++/* #line 12790 "configure" */
+ public class Test
+ {
+ public static final int POTATO = 0;
+@@ -12783,7 +12795,7 @@
+ }
+ EOF
+ cat << \EOF > $SUBCLASS
+-/* #line 12786 "configure" */
++/* #line 12798 "configure" */
+ public class TestImpl
+ extends Test
+ {
+@@ -13506,12 +13518,12 @@
+ pkg_cv_LCMS2_CFLAGS="$LCMS2_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lcms2 >= 2.5\""; } >&5
+- ($PKG_CONFIG --exists --print-errors "lcms2 >= 2.5") 2>&5
++ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lcms2\""; } >&5
++ ($PKG_CONFIG --exists --print-errors "lcms2") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+- pkg_cv_LCMS2_CFLAGS=`$PKG_CONFIG --cflags "lcms2 >= 2.5" 2>/dev/null`
++ pkg_cv_LCMS2_CFLAGS=`$PKG_CONFIG --cflags "lcms2" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+ else
+ pkg_failed=yes
+@@ -13523,12 +13535,12 @@
+ pkg_cv_LCMS2_LIBS="$LCMS2_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lcms2 >= 2.5\""; } >&5
+- ($PKG_CONFIG --exists --print-errors "lcms2 >= 2.5") 2>&5
++ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lcms2\""; } >&5
++ ($PKG_CONFIG --exists --print-errors "lcms2") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+- pkg_cv_LCMS2_LIBS=`$PKG_CONFIG --libs "lcms2 >= 2.5" 2>/dev/null`
++ pkg_cv_LCMS2_LIBS=`$PKG_CONFIG --libs "lcms2" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+ else
+ pkg_failed=yes
+@@ -13549,9 +13561,9 @@
+ _pkg_short_errors_supported=no
+ fi
+ if test $_pkg_short_errors_supported = yes; then
+- LCMS2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "lcms2 >= 2.5" 2>&1`
++ LCMS2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "lcms2" 2>&1`
+ else
+- LCMS2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "lcms2 >= 2.5" 2>&1`
++ LCMS2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "lcms2" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$LCMS2_PKG_ERRORS" >&5