Index: libffi/ChangeLog
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
@@ -1,3 +1,7 @@
+2012-04-06  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* m4/libtool.m4 (_LT_ENABLE_LOCK): Support x32.
+
 2012-04-06  Anthony Green  <green@moxielogic.com>
 
 	* src/x86/ffi64.c (UINT128): Define differently for Intel and GNU
Index: libffi/m4/libtool.m4
===================================================================
--- libffi.orig/m4/libtool.m4
+++ libffi/m4/libtool.m4
@@ -1280,7 +1280,14 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*
 	    LD="${LD-ld} -m elf_i386_fbsd"
 	    ;;
 	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_i386"
+	    case `/usr/bin/file conftest.o` in
+	      *x86-64*)
+	         LD="${LD-ld} -m elf32_x86_64"
+	         ;;
+	      *)
+	         LD="${LD-ld} -m elf_i386"
+	         ;;
+	    esac
 	    ;;
 	  ppc64-*linux*|powerpc64-*linux*)
 	    LD="${LD-ld} -m elf32ppclinux"
Index: libffi/configure
===================================================================
--- libffi.orig/configure
+++ libffi/configure
@@ -6840,7 +6840,14 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*
 	    LD="${LD-ld} -m elf_i386_fbsd"
 	    ;;
 	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_i386"
+	    case `/usr/bin/file conftest.o` in
+	      *x86-64*)
+	         LD="${LD-ld} -m elf32_x86_64"
+	         ;;
+	      *)
+	         LD="${LD-ld} -m elf_i386"
+	         ;;
+	    esac
 	    ;;
 	  ppc64-*linux*|powerpc64-*linux*)
 	    LD="${LD-ld} -m elf32ppclinux"
Index: libffi/README
===================================================================
--- libffi.orig/README
+++ libffi/README
@@ -79,7 +79,6 @@ tested:
 | X86          | Interix          |
 | X86          | kFreeBSD         |
 | X86          | Linux            |
-| X86          | Linux/x32        |
 | X86          | Mac OSX          |
 | X86          | OpenBSD          |
 | X86          | OS/2             |
@@ -88,6 +87,7 @@ tested:
 | X86          | Windows/MingW    |
 | X86-64       | FreeBSD          |
 | X86-64       | Linux            |
+| X86-64       | Linux/x32        |
 | X86-64       | OpenBSD          |
 | X86-64       | Windows/MingW    |
 |--------------+------------------|
