x86: Use win32 name mangling for fastcall functions
This commit is contained in:
@@ -47,6 +47,15 @@
|
|||||||
# define ENDF(X)
|
# define ENDF(X)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Handle win32 fastcall name mangling. */
|
||||||
|
#ifdef X86_WIN32
|
||||||
|
# define ffi_call_i386 @ffi_call_i386@8
|
||||||
|
# define ffi_closure_inner @ffi_closure_inner@8
|
||||||
|
#else
|
||||||
|
# define ffi_call_i386 C(ffi_call_i386)
|
||||||
|
# define ffi_closure_inner C(ffi_closure_inner)
|
||||||
|
#endif
|
||||||
|
|
||||||
/* This macro allows the safe creation of jump tables without an
|
/* This macro allows the safe creation of jump tables without an
|
||||||
actual table. The entry points into the table are all 8 bytes.
|
actual table. The entry points into the table are all 8 bytes.
|
||||||
The use of ORG asserts that we're at the correct location. */
|
The use of ORG asserts that we're at the correct location. */
|
||||||
@@ -54,8 +63,8 @@
|
|||||||
|
|
||||||
.text
|
.text
|
||||||
.align 16
|
.align 16
|
||||||
.globl C(ffi_call_i386)
|
.globl ffi_call_i386
|
||||||
FFI_HIDDEN(C(ffi_call_i386))
|
FFI_HIDDEN(ffi_call_i386)
|
||||||
|
|
||||||
/* This is declared as
|
/* This is declared as
|
||||||
|
|
||||||
@@ -68,7 +77,7 @@
|
|||||||
edx: argp
|
edx: argp
|
||||||
*/
|
*/
|
||||||
|
|
||||||
C(ffi_call_i386):
|
ffi_call_i386:
|
||||||
cfi_startproc
|
cfi_startproc
|
||||||
movl (%esp), %eax /* move the return address */
|
movl (%esp), %eax /* move the return address */
|
||||||
movl %ebp, (%ecx) /* store %ebp into local frame */
|
movl %ebp, (%ecx) /* store %ebp into local frame */
|
||||||
@@ -168,7 +177,7 @@ E(X86_RET_UNUSED15)
|
|||||||
ud2
|
ud2
|
||||||
|
|
||||||
cfi_endproc
|
cfi_endproc
|
||||||
ENDF(C(ffi_call_i386))
|
ENDF(ffi_call_i386)
|
||||||
|
|
||||||
/* The inner helper is declared as
|
/* The inner helper is declared as
|
||||||
|
|
||||||
@@ -210,9 +219,9 @@ ENDF(C(ffi_call_i386))
|
|||||||
addl $C(_GLOBAL_OFFSET_TABLE_), %ebx
|
addl $C(_GLOBAL_OFFSET_TABLE_), %ebx
|
||||||
#endif
|
#endif
|
||||||
#if defined HAVE_HIDDEN_VISIBILITY_ATTRIBUTE || !defined __PIC__
|
#if defined HAVE_HIDDEN_VISIBILITY_ATTRIBUTE || !defined __PIC__
|
||||||
call C(ffi_closure_inner)
|
call ffi_closure_inner
|
||||||
#else
|
#else
|
||||||
call C(ffi_closure_inner)@PLT
|
call ffi_closure_inner@PLT
|
||||||
#endif
|
#endif
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user