diff options
Diffstat (limited to 'patches/libffi-3.2.1.local.patch')
-rw-r--r-- | patches/libffi-3.2.1.local.patch | 198 |
1 files changed, 198 insertions, 0 deletions
diff --git a/patches/libffi-3.2.1.local.patch b/patches/libffi-3.2.1.local.patch new file mode 100644 index 00000000..d5c7fbdc --- /dev/null +++ b/patches/libffi-3.2.1.local.patch @@ -0,0 +1,198 @@ +diff -ru --new-file a/configure b/configure +--- a/configure 2014-11-12 06:59:57.000000000 -0500 ++++ b/configure 2016-01-25 18:26:47.000000000 -0500 +@@ -17133,7 +17133,7 @@ + i?86-*-freebsd* | i?86-*-openbsd*) + TARGET=X86_FREEBSD; TARGETDIR=x86 + ;; +- i?86-win32* | i?86-*-cygwin* | i?86-*-mingw* | i?86-*-os2* | i?86-*-interix*) ++ i?86-win32* | i?86-*-cygwin* | i?86-*-mingw* | i?86-*-os2* | i?86-*-interix* | i?86-*-midipix*) + TARGET=X86_WIN32; TARGETDIR=x86 + # All mingw/cygwin/win32 builds require -no-undefined for sharedlib. + # We must also check with_cross_host to decide if this is a native +@@ -17161,7 +17161,7 @@ + TARGET=X86_DARWIN; TARGETDIR=x86 + ;; + +- x86_64-*-cygwin* | x86_64-*-mingw*) ++ x86_64-*-cygwin* | x86_64-*-mingw* | x86_64-*-midipix*) + TARGET=X86_WIN64; TARGETDIR=x86 + # All mingw/cygwin/win32 builds require -no-undefined for sharedlib. + # We must also check with_cross_host to decide if this is a native +diff -ru --new-file a/src/closures.c b/src/closures.c +--- a/src/closures.c 2014-11-08 07:47:24.000000000 -0500 ++++ b/src/closures.c 2016-01-25 17:57:43.000000000 -0500 +@@ -26,6 +26,25 @@ + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + ++#ifdef __midipix__ ++ ++#include <stdlib.h> ++ ++void * ffi_closure_alloc (size_t size, void ** code) ++{ ++ if (code) ++ return (*code = malloc(size)); ++ else ++ return 0; ++} ++ ++void ffi_closure_free (void * addr) ++{ ++ free(addr); ++} ++ ++#else ++ + #if defined __linux__ && !defined _GNU_SOURCE + #define _GNU_SOURCE 1 + #endif +@@ -686,3 +705,4 @@ + + # endif /* ! FFI_MMAP_EXEC_WRIT */ + #endif /* FFI_CLOSURES */ ++#endif +diff -ru --new-file a/src/x86/ffi.c b/src/x86/ffi.c +--- a/src/x86/ffi.c 2014-11-08 07:47:24.000000000 -0500 ++++ b/src/x86/ffi.c 2016-01-25 17:52:14.000000000 -0500 +@@ -31,8 +31,12 @@ + #if !defined(__x86_64__) || defined(_WIN64) || defined(__CYGWIN__) + + #ifdef _WIN64 ++#ifdef __midipix__ ++/* not needed */ ++#else + #include <windows.h> + #endif ++#endif + + #include <ffi.h> + #include <ffi_common.h> +diff -ru --new-file a/src/x86/win32.S b/src/x86/win32.S +--- a/src/x86/win32.S 2014-11-11 09:41:37.000000000 -0500 ++++ b/src/x86/win32.S 2016-01-25 18:36:49.000000000 -0500 +@@ -1344,6 +1344,14 @@ + .align 4 + .LEFDE5: + ++#ifdef __midipix__ ++ .section .got$ffi_call_win32,"r" ++ .global __imp_ffi_call_win32 ++__imp_ffi_call_win32: ++ .long ffi_call_win32 ++ .linkonce discard ++#endif ++ + #endif /* !_MSC_VER */ + + #if defined __ELF__ && defined __linux__ +diff -ru --new-file a/src/x86/win64.S b/src/x86/win64.S +--- a/src/x86/win64.S 2014-11-08 07:47:24.000000000 -0500 ++++ b/src/x86/win64.S 2016-01-25 17:47:17.000000000 -0500 +@@ -516,5 +516,15 @@ + pop %rbp + retq + .seh_endproc ++ ++ ++#ifdef __midipix__ ++ .section .got$ffi_call_win64,"r" ++ .global __imp_ffi_call_win64 ++__imp_ffi_call_win64: ++ .quad ffi_call_win64 ++ .linkonce discard ++#endif ++ + #endif /* !_MSC_VER */ + +--- libffi-3.2.1/src/x86/win32.S.orig2 2016-05-31 09:21:19.120895425 +0000 ++++ libffi-3.2.1/src/x86/win32.S 2016-05-31 09:22:19.252894091 +0000 +@@ -529,7 +529,9 @@ + + # This assumes we are using gas. + .balign 16 ++#ifndef __midipix__ + FFI_HIDDEN(ffi_call_win32) ++#endif + .globl USCORE_SYMBOL(ffi_call_win32) + #if defined(X86_WIN32) && !defined(__OS2__) + .def _ffi_call_win32; .scl 2; .type 32; .endef +@@ -712,7 +714,9 @@ + ret + .ffi_call_win32_end: + .balign 16 ++#ifndef __midipix__ + FFI_HIDDEN(ffi_closure_THISCALL) ++#endif + .globl USCORE_SYMBOL(ffi_closure_THISCALL) + #if defined(X86_WIN32) && !defined(__OS2__) + .def _ffi_closure_THISCALL; .scl 2; .type 32; .endef +@@ -725,7 +729,9 @@ + jmp .ffi_closure_STDCALL_internal + + .balign 16 ++#ifndef __midipix__ + FFI_HIDDEN(ffi_closure_FASTCALL) ++#endif + .globl USCORE_SYMBOL(ffi_closure_FASTCALL) + #if defined(X86_WIN32) && !defined(__OS2__) + .def _ffi_closure_FASTCALL; .scl 2; .type 32; .endef +@@ -737,7 +743,9 @@ + push %edx + push %ecx + jmp .ffi_closure_STDCALL_internal ++#ifndef __midipix__ + FFI_HIDDEN(ffi_closure_REGISTER) ++#endif + .globl USCORE_SYMBOL(ffi_closure_REGISTER) + #if defined(X86_WIN32) && !defined(__OS2__) + .def _ffi_closure_REGISTER; .scl 2; .type 32; .endef +@@ -754,7 +762,9 @@ + .LFE1: + # This assumes we are using gas. + .balign 16 ++#ifndef __midipix__ + FFI_HIDDEN(ffi_closure_SYSV) ++#endif + #if defined(X86_WIN32) + .globl USCORE_SYMBOL(ffi_closure_SYSV) + #if defined(X86_WIN32) && !defined(__OS2__) +@@ -898,7 +908,9 @@ + + #ifdef X86_WIN32 + .balign 16 ++#ifndef __midipix__ + FFI_HIDDEN(ffi_closure_raw_THISCALL) ++#endif + .globl USCORE_SYMBOL(ffi_closure_raw_THISCALL) + #if defined(X86_WIN32) && !defined(__OS2__) + .def _ffi_closure_raw_THISCALL; .scl 2; .type 32; .endef +@@ -1040,7 +1052,9 @@ + + # This assumes we are using gas. + .balign 16 ++#ifndef __midipix__ + FFI_HIDDEN(ffi_closure_STDCALL) ++#endif + .globl USCORE_SYMBOL(ffi_closure_STDCALL) + #if defined(X86_WIN32) && !defined(__OS2__) + .def _ffi_closure_STDCALL; .scl 2; .type 32; .endef +@@ -1345,10 +1359,17 @@ + .LEFDE5: + + #ifdef __midipix__ ++#if defined(SYMBOL_UNDERSCORE) ++ .section .got$ffi__call_win32,"r" ++ .global __imp__ffi_call_win32 ++__imp__ffi_call_win32: ++ .long _ffi_call_win32 ++#else + .section .got$ffi_call_win32,"r" + .global __imp_ffi_call_win32 + __imp_ffi_call_win32: + .long ffi_call_win32 ++#endif + .linkonce discard + #endif + |