One other bug that breaks OpenJDK is fixed in libffi upstream:
The unconditional #define of ARM in /usr/lib/libffi-3.0.9/include/ffi.h
breaks the OpenJDK build. It was fixed by the patch I've appended.
This fix doesn't seem to be in the libffi package in F14. I don't
know if it's fixed in F15.
Andrew.
2010-07-07 Dan Horák <dan(a)danny.cz>
* include/ffi.h.in: Protect #define with #ifndef.
* src/powerpc/ffitarget.h: Ditto.
* src/s390/ffitarget.h: Ditto.
* src/sparc/ffitarget.h: Ditto.
Index: include/ffi.h.in
===================================================================
--- include/ffi.h.in (revision 162944)
+++ include/ffi.h.in (revision 162945)
@@ -57,7 +57,9 @@
#endif
/* Specify which architecture libffi is configured for. */
+#ifndef @TARGET@
#define @TARGET@
+#endif
/* ---- System configuration information --------------------------------- */
Index: src/powerpc/ffitarget.h
===================================================================
--- src/powerpc/ffitarget.h (revision 162944)
+++ src/powerpc/ffitarget.h (revision 162945)
@@ -31,12 +31,18 @@
/* ---- System specific configurations ----------------------------------- */
#if defined (POWERPC) && defined (__powerpc64__) /* linux64 */
+#ifndef POWERPC64
#define POWERPC64
+#endif
#elif defined (POWERPC_DARWIN) && defined (__ppc64__) /* Darwin */
+#ifndef POWERPC64
#define POWERPC64
+#endif
#elif defined (POWERPC_AIX) && defined (__64BIT__) /* AIX64 */
+#ifndef POWERPC64
#define POWERPC64
#endif
+#endif
#ifndef LIBFFI_ASM
typedef unsigned long ffi_arg;
Index: src/s390/ffitarget.h
===================================================================
--- src/s390/ffitarget.h (revision 162944)
+++ src/s390/ffitarget.h (revision 162945)
@@ -28,8 +28,10 @@
#define LIBFFI_TARGET_H
#if defined (__s390x__)
+#ifndef S390X
#define S390X
#endif
+#endif
/* ---- System specific configurations ----------------------------------- */
Index: src/sparc/ffitarget.h
===================================================================
--- src/sparc/ffitarget.h (revision 162944)
+++ src/sparc/ffitarget.h (revision 162945)
@@ -30,8 +30,10 @@
/* ---- System specific configurations ----------------------------------- */
#if defined(__arch64__) || defined(__sparcv9)
+#ifndef SPARC64
#define SPARC64
#endif
+#endif
#ifndef LIBFFI_ASM
typedef unsigned long ffi_arg;