1a3f19ec139642127343e75c69a6709f873e584a
[libffi.git] / patches / sparc-abi-check
1 Index: libffi/ChangeLog
2 ===================================================================
3 --- libffi.orig/ChangeLog
4 +++ libffi/ChangeLog
5 @@ -93,6 +93,11 @@
6  
7         * configure: Regenerate.
8  
9 +2011-02-11  Anthony Green  <green@moxielogic.com>
10 +
11 +       * src/sparc/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test,
12 +       just return FFI_BAD_ABI when things are wrong.
13 +
14  2011-02-09  Stuart Shelton  <srcshelton@gmail.com>
15  
16         http://bugs.gentoo.org/show_bug.cgi?id=286911
17 Index: libffi/src/sparc/ffi.c
18 ===================================================================
19 --- libffi.orig/src/sparc/ffi.c
20 +++ libffi/src/sparc/ffi.c
21 @@ -1,6 +1,6 @@
22  /* -----------------------------------------------------------------------
23 -   ffi.c - Copyright (c) 1996, 2003, 2004, 2007, 2008 Red Hat, Inc.
24 -           Copyright (c) 2011 Anthony Green
25 +   ffi.c - Copyright (c) 2011 Anthony Green
26 +           Copyright (c) 1996, 2003-2004, 2007-2008 Red Hat, Inc.
27     
28     SPARC Foreign Function Interface 
29  
30 @@ -489,7 +489,8 @@ ffi_prep_closure_loc (ffi_closure* closu
31  #ifdef SPARC64
32    /* Trampoline address is equal to the closure address.  We take advantage
33       of that to reduce the trampoline size by 8 bytes. */
34 -  FFI_ASSERT (cif->abi == FFI_V9);
35 +  if (cif->abi != FFI_V9)
36 +    return FFI_BAD_ABI;
37    fn = (unsigned long) ffi_closure_v9;
38    tramp[0] = 0x83414000;       /* rd   %pc, %g1        */
39    tramp[1] = 0xca586010;       /* ldx  [%g1+16], %g5   */
40 @@ -498,7 +499,8 @@ ffi_prep_closure_loc (ffi_closure* closu
41    *((unsigned long *) &tramp[4]) = fn;
42  #else
43    unsigned long ctx = (unsigned long) codeloc;
44 -  FFI_ASSERT (cif->abi == FFI_V8);
45 +  if (cif->abi != FFI_V8)
46 +    return FFI_BAD_ABI;
47    fn = (unsigned long) ffi_closure_v8;
48    tramp[0] = 0x03000000 | fn >> 10;    /* sethi %hi(fn), %g1   */
49    tramp[1] = 0x05000000 | ctx >> 10;   /* sethi %hi(ctx), %g2  */