diff mbox

[libffi,SH] Fix failures for libffi.call/err_bad_abi.c

Message ID 20120314.075138.293460036.kkojima@rr.iij4u.or.jp
State New
Headers show

Commit Message

Kaz Kojima March 13, 2012, 10:51 p.m. UTC
Hi,

I've applied the attached patch which fixes failures for
libffi.call/err_bad_abi.c on SH.  It's similar to the changes
done already on other targets.  Tested on sh-linux.

Regards,
	kaz
--
2012-03-13  Kaz Kojima  <kkojima@gcc.gnu.org>

	* src/sh/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test,
	just return FFI_BAD_ABI when things are wrong.
	* src/sh64/ffi.c (ffi_prep_closure_loc): Ditto.
diff mbox

Patch

diff -upr ORIG/trunk/libffi/src/sh/ffi.c trunk/libffi/src/sh/ffi.c
--- ORIG/trunk/libffi/src/sh/ffi.c	2009-06-06 13:12:01.000000000 +0900
+++ trunk/libffi/src/sh/ffi.c	2012-03-12 22:06:43.000000000 +0900
@@ -1,5 +1,5 @@ 
 /* -----------------------------------------------------------------------
-   ffi.c - Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Kaz Kojima
+   ffi.c - Copyright (c) 2002-2008, 2012 Kaz Kojima
            Copyright (c) 2008 Red Hat, Inc.
    
    SuperH Foreign Function Interface 
@@ -463,7 +463,8 @@  ffi_prep_closure_loc (ffi_closure* closu
   unsigned int *tramp;
   unsigned int insn;
 
-  FFI_ASSERT (cif->abi == FFI_GCC_SYSV);
+  if (cif->abi != FFI_SYSV)
+    return FFI_BAD_ABI;
 
   tramp = (unsigned int *) &closure->tramp[0];
   /* Set T bit if the function returns a struct pointed with R2.  */
diff -upr ORIG/trunk/libffi/src/sh64/ffi.c trunk/libffi/src/sh64/ffi.c
--- ORIG/trunk/libffi/src/sh64/ffi.c	2009-06-06 13:12:00.000000000 +0900
+++ trunk/libffi/src/sh64/ffi.c	2012-03-12 22:07:28.000000000 +0900
@@ -1,5 +1,5 @@ 
 /* -----------------------------------------------------------------------
-   ffi.c - Copyright (c) 2003, 2004, 2006, 2007 Kaz Kojima
+   ffi.c - Copyright (c) 2003, 2004, 2006, 2007, 2012 Kaz Kojima
            Copyright (c) 2008 Anthony Green
    
    SuperH SHmedia Foreign Function Interface 
@@ -302,7 +302,8 @@  ffi_prep_closure_loc (ffi_closure *closu
 {
   unsigned int *tramp;
 
-  FFI_ASSERT (cif->abi == FFI_GCC_SYSV);
+  if (cif->abi != FFI_SYSV)
+    return FFI_BAD_ABI;
 
   tramp = (unsigned int *) &closure->tramp[0];
   /* Since ffi_closure is an aligned object, the ffi trampoline is