Hi,

  Until we switch the arm ABI to ATPCS or AAPCS this fixes libffi on arm.
  All tests are passing now.
  OK?

  f.-

Index: Makefile
===================================================================
RCS file: /cvs/ports/devel/libffi/Makefile,v
retrieving revision 1.23
diff -u -p -u -p -r1.23 Makefile
--- Makefile    15 Jul 2013 19:01:56 -0000      1.23
+++ Makefile    20 Oct 2013 19:30:42 -0000
@@ -3,7 +3,7 @@
 COMMENT=               Foreign Function Interface
 
 DISTNAME=              libffi-3.0.9
-REVISION=              5
+REVISION=              6
 SHARED_LIBS +=  ffi                  0.0      # .5.9
 CATEGORIES=            devel
 
Index: patches/patch-src_arm_ffi_c
===================================================================
RCS file: /cvs/ports/devel/libffi/patches/patch-src_arm_ffi_c,v
retrieving revision 1.2
diff -u -p -u -p -r1.2 patch-src_arm_ffi_c
--- patches/patch-src_arm_ffi_c 7 May 2013 20:04:18 -0000       1.2
+++ patches/patch-src_arm_ffi_c 20 Oct 2013 19:30:42 -0000
@@ -1,9 +1,10 @@
 $OpenBSD: patch-src_arm_ffi_c,v 1.2 2013/05/07 20:04:18 jasper Exp $
 
-warning: implicit declaration of function '__clear_cache'
+Fix warning: implicit declaration of function '__clear_cache' and
+change the code to follow our current ABI (APCS).
 
---- src/arm/ffi.c.orig Tue Dec 29 16:22:26 2009
-+++ src/arm/ffi.c      Tue May  7 22:01:23 2013
+--- src/arm/ffi.c.orig Tue Dec 29 15:22:26 2009
++++ src/arm/ffi.c      Sun Oct 20 17:23:42 2013
 @@ -29,6 +29,8 @@
  
  #include <stdlib.h>
@@ -13,3 +14,13 @@ warning: implicit declaration of functio
  /* ffi_prep_args is called by the assembly routine once stack space
     has been allocated for the function's arguments */
  
+@@ -130,7 +132,8 @@ ffi_status ffi_prep_cif_machdep(ffi_cif *cif)
+       break;
+ 
+     case FFI_TYPE_STRUCT:
+-      if (cif->rtype->size <= 4)
++      if (cif->rtype->size <= 4 && cif->rtype->elements[0] &&
++        !cif->rtype->elements[1])
+       /* A Composite Type not larger than 4 bytes is returned in r0.  */
+       cif->flags = (unsigned)FFI_TYPE_INT;
+       else

Reply via email to