ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test, just return FFI_BAD_ABI when...
authorKaz Kojima <kkojima@gcc.gnu.org>
Tue, 13 Mar 2012 22:50:16 +0000 (22:50 +0000)
committerKaz Kojima <kkojima@gcc.gnu.org>
Tue, 13 Mar 2012 22:50:16 +0000 (22:50 +0000)
* 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.

From-SVN: r185361

libffi/ChangeLog
libffi/src/sh/ffi.c
libffi/src/sh64/ffi.c

index bb5bc16..2884780 100644 (file)
@@ -1,3 +1,9 @@
+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.
+
 2012-03-03  H.J. Lu  <hongjiu.lu@intel.com>
 
        * src/x86/ffi64.c (ffi_call): Cast the return value to unsigned
index 69bd025..3515b91 100644 (file)
@@ -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* closure,
   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.  */
index 8fbc05c..123b87a 100644 (file)
@@ -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 *closure,
 {
   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