100 lines
3.3 KiB
Plaintext
100 lines
3.3 KiB
Plaintext
Index: libffi/ChangeLog
|
|
===================================================================
|
|
--- libffi.orig/ChangeLog
|
|
+++ libffi/ChangeLog
|
|
@@ -182,6 +182,14 @@
|
|
* testsuite/libffi.call/cls_longdouble.c: Likewise.
|
|
* testsuite/libffi.call/huge_struct.c: Likewise.
|
|
|
|
+2010-08-04 Dan Witte <dwitte@mozilla.com>
|
|
+
|
|
+ * src/x86/ffitarget.h: Add X86_ANY define for all x86/x86_64
|
|
+ platforms.
|
|
+ * src/x86/ffi.c: Remove redundant ifdef checks.
|
|
+ * src/prep_cif.c: Push stack space computation into src/x86/ffi.c
|
|
+ for X86_ANY so return value space doesn't get added twice.
|
|
+
|
|
2010-07-22 Dan Witte <dwitte@mozilla.com>
|
|
|
|
* src/*/ffitarget.h: Make FFI_LAST_ABI one past the last valid ABI.
|
|
Index: libffi/src/prep_cif.c
|
|
===================================================================
|
|
--- libffi.orig/src/prep_cif.c
|
|
+++ libffi/src/prep_cif.c
|
|
@@ -110,7 +110,7 @@ ffi_status ffi_prep_cif(ffi_cif *cif, ff
|
|
FFI_ASSERT_VALID_TYPE(cif->rtype);
|
|
|
|
/* x86, x86-64 and s390 stack space allocation is handled in prep_machdep. */
|
|
-#if !defined M68K && !defined __i386__ && !defined __x86_64__ && !defined S390 && !defined PA
|
|
+#if !defined M68K && !defined X86_ANY && !defined S390 && !defined PA
|
|
/* Make space for the return structure pointer */
|
|
if (cif->rtype->type == FFI_TYPE_STRUCT
|
|
#ifdef SPARC
|
|
@@ -131,7 +131,7 @@ ffi_status ffi_prep_cif(ffi_cif *cif, ff
|
|
check after the initialization. */
|
|
FFI_ASSERT_VALID_TYPE(*ptr);
|
|
|
|
-#if !defined __i386__ && !defined __x86_64__ && !defined S390 && !defined PA
|
|
+#if !defined X86_ANY && !defined S390 && !defined PA
|
|
#ifdef SPARC
|
|
if (((*ptr)->type == FFI_TYPE_STRUCT
|
|
&& ((*ptr)->size > 16 || cif->abi != FFI_V9))
|
|
Index: libffi/src/x86/ffi.c
|
|
===================================================================
|
|
--- libffi.orig/src/x86/ffi.c
|
|
+++ libffi/src/x86/ffi.c
|
|
@@ -155,12 +155,10 @@ ffi_status ffi_prep_cif_machdep(ffi_cif
|
|
switch (cif->rtype->type)
|
|
{
|
|
case FFI_TYPE_VOID:
|
|
-#if defined(X86) || defined (X86_WIN32) || defined(X86_FREEBSD) || defined(X86_DARWIN) || defined(X86_WIN64)
|
|
case FFI_TYPE_UINT8:
|
|
case FFI_TYPE_UINT16:
|
|
case FFI_TYPE_SINT8:
|
|
case FFI_TYPE_SINT16:
|
|
-#endif
|
|
#ifdef X86_WIN64
|
|
case FFI_TYPE_UINT32:
|
|
case FFI_TYPE_SINT32:
|
|
Index: libffi/src/x86/ffitarget.h
|
|
===================================================================
|
|
--- libffi.orig/src/x86/ffitarget.h
|
|
+++ libffi/src/x86/ffitarget.h
|
|
@@ -31,6 +31,9 @@
|
|
|
|
/* ---- System specific configurations ----------------------------------- */
|
|
|
|
+/* For code common to all platforms on x86 and x86_64. */
|
|
+#define X86_ANY
|
|
+
|
|
#if defined (X86_64) && defined (__i386__)
|
|
#undef X86_64
|
|
#define X86
|
|
@@ -67,16 +70,14 @@ typedef enum ffi_abi {
|
|
FFI_LAST_ABI,
|
|
/* TODO: Add fastcall support for the sake of completeness */
|
|
FFI_DEFAULT_ABI = FFI_SYSV
|
|
-#endif
|
|
|
|
-#ifdef X86_WIN64
|
|
+#elif defined(X86_WIN64)
|
|
FFI_WIN64,
|
|
FFI_LAST_ABI,
|
|
FFI_DEFAULT_ABI = FFI_WIN64
|
|
-#else
|
|
|
|
+#else
|
|
/* ---- Intel x86 and AMD x86-64 - */
|
|
-#if !defined(X86_WIN32) && (defined(__i386__) || defined(__x86_64__) || defined(__i386) || defined(__amd64))
|
|
FFI_SYSV,
|
|
FFI_UNIX64, /* Unix variants all use the same ABI for x86-64 */
|
|
FFI_LAST_ABI,
|
|
@@ -86,7 +87,6 @@ typedef enum ffi_abi {
|
|
FFI_DEFAULT_ABI = FFI_UNIX64
|
|
#endif
|
|
#endif
|
|
-#endif /* X86_WIN64 */
|
|
} ffi_abi;
|
|
#endif
|
|
|