This commit is contained in:
Anthony Green
2013-02-10 08:47:26 -05:00
parent a9521411a5
commit 10e77227b6
3 changed files with 23 additions and 10 deletions

View File

@@ -1,3 +1,13 @@
2013-02-09 Anthony Green <green@moxielogic.com>
* testsuite/libffi.call/negint.c: Remove forced -O2.
* testsuite/libffi.call/many2.c (foo): Remove GCCism.
* testsuite/libffi.call/ffitest.h: Add default PRIuPTR definition.
* src/sparc/v8.S (ffi_closure_v8): Import ancient ulonglong
closure return type fix developed by Martin v. Löwis for cpython
fork.
2013-02-08 Andreas Tobler <andreast@fgznet.ch> 2013-02-08 Andreas Tobler <andreast@fgznet.ch>
* src/powerpc/ffi.c (ffi_prep_cif_machdep): Fix small struct * src/powerpc/ffi.c (ffi_prep_cif_machdep): Fix small struct

13
README
View File

@@ -43,7 +43,7 @@ Libffi has been ported to many different platforms.
For specific configuration details and testing status, please For specific configuration details and testing status, please
refer to the wiki page here: refer to the wiki page here:
http://www.moxielogic.org/wiki/index.php?title=Libffi_3.0.11 http://www.moxielogic.org/wiki/index.php?title=Libffi_3.0.12
At the time of release, the following basic configurations have been At the time of release, the following basic configurations have been
tested: tested:
@@ -61,19 +61,21 @@ tested:
| HPPA | HPUX | GCC | | HPPA | HPUX | GCC |
| IA-64 | Linux | GCC | | IA-64 | Linux | GCC |
| M68K | FreeMiNT | GCC | | M68K | FreeMiNT | GCC |
| M68K | Linux | GCC |
| M68K | RTEMS | GCC | | M68K | RTEMS | GCC |
| MicroBlaze | Linux | GCC | | MicroBlaze | Linux | GCC |
| MIPS | IRIX | GCC | | MIPS | IRIX | GCC |
| MIPS | Linux | GCC | | MIPS | Linux | GCC |
| MIPS | RTEMS | GCC | | MIPS | RTEMS | GCC |
| MIPS64 | Linux | GCC | | MIPS64 | Linux | GCC |
| PowerPC 32-bit | AIX 6.1.0.0 | IBM XL C/C++, V11.1 | | PowerPC 32-bit | AIX | IBM XL C |
| PowerPC 32-bit | AIX 7.1.1.0 | IBM XL C/C++, V11.1 | | PowerPC 64-bit | AIX | IBM XL C |
| PowerPC | AMIGA | GCC | | PowerPC | AMIGA | GCC |
| PowerPC | Linux | GCC | | PowerPC | Linux | GCC |
| PowerPC | Mac OSX | GCC | | PowerPC | Mac OSX | GCC |
| PowerPC | FreeBSD | GCC | | PowerPC | FreeBSD | GCC |
| PowerPC64 | Linux | GCC | | PowerPC 64-bit | FreeBSD | GCC |
| PowerPC 64-bit | Linux | GCC |
| S390 | Linux | GCC | | S390 | Linux | GCC |
| S390X | Linux | GCC | | S390X | Linux | GCC |
| SPARC | Linux | GCC | | SPARC | Linux | GCC |
@@ -84,6 +86,7 @@ tested:
| SPARC64 | Solaris | Oracle Solaris Studio C | | SPARC64 | Solaris | Oracle Solaris Studio C |
| TILE-Gx/TILEPro | Linux | GCC | | TILE-Gx/TILEPro | Linux | GCC |
| X86 | FreeBSD | GCC | | X86 | FreeBSD | GCC |
| X86 | GNU HURD | GCC |
| X86 | Interix | GCC | | X86 | Interix | GCC |
| X86 | kFreeBSD | GCC | | X86 | kFreeBSD | GCC |
| X86 | Linux | GCC | | X86 | Linux | GCC |
@@ -145,7 +148,7 @@ For iOS builds, the 'libffi.xcodeproj' Xcode project is available.
Configure has many other options. Use "configure --help" to see them all. Configure has many other options. Use "configure --help" to see them all.
Once configure has finished, type "make". Note that you must be using Once configure has finished, type "make". Note that you must be using
GNU make. You can ftp GNU make from prep.ai.mit.edu:/pub/gnu. GNU make. You can ftp GNU make from ftp.gnu.org:/pub/gnu/make .
To ensure that libffi is working as advertised, type "make check". To ensure that libffi is working as advertised, type "make check".
This will require that you have DejaGNU installed. This will require that you have DejaGNU installed.

View File

@@ -11,7 +11,7 @@
static void cls_ret_ulonglong_fn(ffi_cif* cif __UNUSED__, void* resp, static void cls_ret_ulonglong_fn(ffi_cif* cif __UNUSED__, void* resp,
void** args, void* userdata __UNUSED__) void** args, void* userdata __UNUSED__)
{ {
*(unsigned long long *)resp= *(unsigned long long *)args[0]; *(unsigned long long *)resp= 0xfffffffffffffffLL ^ *(unsigned long long *)args[0];
printf("%" PRIuLL ": %" PRIuLL "\n",*(unsigned long long *)args[0], printf("%" PRIuLL ": %" PRIuLL "\n",*(unsigned long long *)args[0],
*(unsigned long long *)(resp)); *(unsigned long long *)(resp));
@@ -34,14 +34,14 @@ int main (void)
&ffi_type_uint64, cl_arg_types) == FFI_OK); &ffi_type_uint64, cl_arg_types) == FFI_OK);
CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_ulonglong_fn, NULL, code) == FFI_OK); CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_ulonglong_fn, NULL, code) == FFI_OK);
res = (*((cls_ret_ulonglong)code))(214LL); res = (*((cls_ret_ulonglong)code))(214LL);
/* { dg-output "214: 214" } */ /* { dg-output "214: 1152921504606846761" } */
printf("res: %" PRIdLL "\n", res); printf("res: %" PRIdLL "\n", res);
/* { dg-output "\nres: 214" } */ /* { dg-output "\nres: 1152921504606846761" } */
res = (*((cls_ret_ulonglong)code))(9223372035854775808LL); res = (*((cls_ret_ulonglong)code))(9223372035854775808LL);
/* { dg-output "\n9223372035854775808: 9223372035854775808" } */ /* { dg-output "\n9223372035854775808: 8070450533247928831" } */
printf("res: %" PRIdLL "\n", res); printf("res: %" PRIdLL "\n", res);
/* { dg-output "\nres: 9223372035854775808" } */ /* { dg-output "\nres: 8070450533247928831" } */
exit(0); exit(0);
} }