Package: openjdk-7 Version: 7u51-2.4.4-1 Severity: serious Tags: upstream patch Justification: fails to build from source (but built successfully in the past)
openjdk-7 fails to build from source on mips and mipsel due to unaligned access. This upload disabled the hotspot-mips-align.diff patch, but only the first part of this patch has been merged upstream. The later part concerning ffi is still needed. The attached patch removes the part applied upstream from hotspot-mips-align.diff and re-enable it in debian/rules. It should also help the sparc build to go further. -- System Information: Debian Release: jessie/sid APT prefers unstable APT policy: (500, 'unstable') Architecture: mipsel (mips64) Kernel: Linux 3.2.0-4-5kc-malta Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/bash
diff -Nru openjdk-7-7u51-2.4.4/debian/patches/hotspot-mips-align.diff openjdk-7-7u51-2.4.4/debian/patches/hotspot-mips-align.diff --- openjdk-7-7u51-2.4.4/debian/patches/hotspot-mips-align.diff 2014-01-18 11:46:55.000000000 +0000 +++ openjdk-7-7u51-2.4.4/debian/patches/hotspot-mips-align.diff 2014-01-18 11:48:00.000000000 +0000 @@ -1,41 +1,3 @@ ---- openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp -+++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp -@@ -56,7 +56,16 @@ - jlong l; - jdouble d; - uint32_t v[2]; --}; -+} -+#ifndef _LP64 -+ /* Hotspot only aligns the union to the uintptr_t type, that is 32 bit -+ on a 32-bit CPU. Accesses to double values should be 64-bit aligned -+ on at least MIPS and SPARC. Declare it to GCC for all 32-bit CPUs, -+ as it might also help GCC to select the best instruction on other -+ CPUs. */ -+ __attribute__ ((packed, aligned (4))) -+#endif -+; - - - typedef class BytecodeInterpreter* interpreterState; -@@ -169,7 +178,16 @@ - jlong l; - jdouble d; - uint32_t v[2]; --}; -+} -+#ifndef _LP64 -+ /* Hotspot only aligns the union to the uintptr_t type, that is 32 bit -+ on a 32-bit CPU. Accesses to double values should be 64-bit aligned -+ on at least MIPS and SPARC. Declare it to GCC for all 32-bit CPUs, -+ as it might also help GCC to select the best instruction on other -+ CPUs. */ -+ __attribute__ ((packed, aligned (4))) -+#endif -+; - - /* - * Generic 32-bit wide "Java slot" definition. This type occurs --- openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp +++ openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp @@ -322,7 +322,7 @@ diff -Nru openjdk-7-7u51-2.4.4/debian/rules openjdk-7-7u51-2.4.4/debian/rules --- openjdk-7-7u51-2.4.4/debian/rules 2014-01-18 11:46:55.000000000 +0000 +++ openjdk-7-7u51-2.4.4/debian/rules 2014-01-18 11:48:00.000000000 +0000 @@ -446,6 +446,7 @@ debian/patches/ppc64el.diff \ debian/patches/zero-x32.diff \ debian/patches/zero-sparc.diff \ + debian/patches/hotspot-mips-align.diff \ # FIXME CACAO update needed #ifeq ($(DEB_HOST_ARCH),armel)