Fix return_uc.c test case on windows.
This commit is contained in:
committed by
Anthony Green
parent
65f40c35a2
commit
3afaa9a34a
@@ -6,3 +6,4 @@ win32_tests
|
||||
vararg_float_test_fix
|
||||
vfp-eabi
|
||||
msvc-changes
|
||||
win32-return-sign
|
||||
|
||||
0
.pc/win32-return-sign/.timestamp
Normal file
0
.pc/win32-return-sign/.timestamp
Normal file
5002
.pc/win32-return-sign/ChangeLog
Normal file
5002
.pc/win32-return-sign/ChangeLog
Normal file
File diff suppressed because it is too large
Load Diff
1160
.pc/win32-return-sign/src/x86/win32.S
Normal file
1160
.pc/win32-return-sign/src/x86/win32.S
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,3 +1,11 @@
|
||||
2012-04-02 Peter Rosin <peda@lysator.liu.se>
|
||||
|
||||
* src/x86/win32.S (ffi_call_win32): Sign/zero extend the return
|
||||
value in the Intel version as is already done for the AT&T version.
|
||||
(ffi_closure_SYSV): Likewise.
|
||||
(ffi_closure_raw_SYSV): Likewise.
|
||||
(ffi_closure_STDCALL): Likewise.
|
||||
|
||||
2012-03-29 Peter Rosin <peda@lysator.liu.se>
|
||||
|
||||
* src/x86/win32.S (ffi_closure_raw_THISCALL): Unify the frame
|
||||
|
||||
@@ -7,3 +7,4 @@ win32_tests
|
||||
vararg_float_test_fix
|
||||
vfp-eabi
|
||||
msvc-changes
|
||||
win32-return-sign
|
||||
|
||||
231
patches/win32-return-sign
Normal file
231
patches/win32-return-sign
Normal file
@@ -0,0 +1,231 @@
|
||||
Index: libffi/ChangeLog
|
||||
===================================================================
|
||||
--- libffi.orig/ChangeLog
|
||||
+++ libffi/ChangeLog
|
||||
@@ -1,3 +1,11 @@
|
||||
+2012-04-02 Peter Rosin <peda@lysator.liu.se>
|
||||
+
|
||||
+ * src/x86/win32.S (ffi_call_win32): Sign/zero extend the return
|
||||
+ value in the Intel version as is already done for the AT&T version.
|
||||
+ (ffi_closure_SYSV): Likewise.
|
||||
+ (ffi_closure_raw_SYSV): Likewise.
|
||||
+ (ffi_closure_STDCALL): Likewise.
|
||||
+
|
||||
2012-03-29 Peter Rosin <peda@lysator.liu.se>
|
||||
|
||||
* src/x86/win32.S (ffi_closure_raw_THISCALL): Unify the frame
|
||||
Index: libffi/src/x86/win32.S
|
||||
===================================================================
|
||||
--- libffi.orig/src/x86/win32.S
|
||||
+++ libffi/src/x86/win32.S
|
||||
@@ -108,32 +108,37 @@ ca_jumpdata:
|
||||
dd offset ca_retfloat ;; FFI_TYPE_FLOAT
|
||||
dd offset ca_retdouble ;; FFI_TYPE_DOUBLE
|
||||
dd offset ca_retlongdouble ;; FFI_TYPE_LONGDOUBLE
|
||||
- dd offset ca_retint8 ;; FFI_TYPE_UINT8
|
||||
- dd offset ca_retint8 ;; FFI_TYPE_SINT8
|
||||
- dd offset ca_retint16 ;; FFI_TYPE_UINT16
|
||||
- dd offset ca_retint16 ;; FFI_TYPE_SINT16
|
||||
+ dd offset ca_retuint8 ;; FFI_TYPE_UINT8
|
||||
+ dd offset ca_retsint8 ;; FFI_TYPE_SINT8
|
||||
+ dd offset ca_retuint16 ;; FFI_TYPE_UINT16
|
||||
+ dd offset ca_retsint16 ;; FFI_TYPE_SINT16
|
||||
dd offset ca_retint ;; FFI_TYPE_UINT32
|
||||
dd offset ca_retint ;; FFI_TYPE_SINT32
|
||||
dd offset ca_retint64 ;; FFI_TYPE_UINT64
|
||||
dd offset ca_retint64 ;; FFI_TYPE_SINT64
|
||||
dd offset ca_epilogue ;; FFI_TYPE_STRUCT
|
||||
dd offset ca_retint ;; FFI_TYPE_POINTER
|
||||
- dd offset ca_retint8 ;; FFI_TYPE_SMALL_STRUCT_1B
|
||||
- dd offset ca_retint16 ;; FFI_TYPE_SMALL_STRUCT_2B
|
||||
+ dd offset ca_retstruct1b ;; FFI_TYPE_SMALL_STRUCT_1B
|
||||
+ dd offset ca_retstruct2b ;; FFI_TYPE_SMALL_STRUCT_2B
|
||||
dd offset ca_retint ;; FFI_TYPE_SMALL_STRUCT_4B
|
||||
dd offset ca_epilogue ;; FFI_TYPE_MS_STRUCT
|
||||
|
||||
-ca_retint8:
|
||||
- ;; Load %ecx with the pointer to storage for the return value
|
||||
- mov ecx, rvalue
|
||||
- mov [ecx + 0], al
|
||||
- jmp ca_epilogue
|
||||
-
|
||||
-ca_retint16:
|
||||
- ;; Load %ecx with the pointer to storage for the return value
|
||||
- mov ecx, rvalue
|
||||
- mov [ecx + 0], ax
|
||||
- jmp ca_epilogue
|
||||
+ /* Sign/zero extend as appropriate. */
|
||||
+ca_retuint8:
|
||||
+ movzx eax, al
|
||||
+ jmp ca_retint
|
||||
+
|
||||
+ca_retsint8:
|
||||
+ movsx eax, al
|
||||
+ jmp ca_retint
|
||||
+
|
||||
+ca_retuint16:
|
||||
+ movzx eax, ax
|
||||
+ jmp ca_retint
|
||||
+
|
||||
+ca_retsint16:
|
||||
+ movsx eax, ax
|
||||
+ jmp ca_retint
|
||||
|
||||
ca_retint:
|
||||
;; Load %ecx with the pointer to storage for the return value
|
||||
@@ -166,6 +171,18 @@ ca_retlongdouble:
|
||||
fstp TBYTE PTR [ecx]
|
||||
jmp ca_epilogue
|
||||
|
||||
+ca_retstruct1b:
|
||||
+ ;; Load %ecx with the pointer to storage for the return value
|
||||
+ mov ecx, rvalue
|
||||
+ mov [ecx + 0], al
|
||||
+ jmp ca_epilogue
|
||||
+
|
||||
+ca_retstruct2b:
|
||||
+ ;; Load %ecx with the pointer to storage for the return value
|
||||
+ mov ecx, rvalue
|
||||
+ mov [ecx + 0], ax
|
||||
+ jmp ca_epilogue
|
||||
+
|
||||
ca_epilogue:
|
||||
;; Epilogue code is autogenerated.
|
||||
ret
|
||||
@@ -203,27 +220,35 @@ cs_jumpdata:
|
||||
dd offset cs_retfloat ;; FFI_TYPE_FLOAT
|
||||
dd offset cs_retdouble ;; FFI_TYPE_DOUBLE
|
||||
dd offset cs_retlongdouble ;; FFI_TYPE_LONGDOUBLE
|
||||
- dd offset cs_retint8 ;; FFI_TYPE_UINT8
|
||||
- dd offset cs_retint8 ;; FFI_TYPE_SINT8
|
||||
- dd offset cs_retint16 ;; FFI_TYPE_UINT16
|
||||
- dd offset cs_retint16 ;; FFI_TYPE_SINT16
|
||||
+ dd offset cs_retuint8 ;; FFI_TYPE_UINT8
|
||||
+ dd offset cs_retsint8 ;; FFI_TYPE_SINT8
|
||||
+ dd offset cs_retuint16 ;; FFI_TYPE_UINT16
|
||||
+ dd offset cs_retsint16 ;; FFI_TYPE_SINT16
|
||||
dd offset cs_retint ;; FFI_TYPE_UINT32
|
||||
dd offset cs_retint ;; FFI_TYPE_SINT32
|
||||
dd offset cs_retint64 ;; FFI_TYPE_UINT64
|
||||
dd offset cs_retint64 ;; FFI_TYPE_SINT64
|
||||
dd offset cs_retstruct ;; FFI_TYPE_STRUCT
|
||||
dd offset cs_retint ;; FFI_TYPE_POINTER
|
||||
- dd offset cs_retint8 ;; FFI_TYPE_SMALL_STRUCT_1B
|
||||
- dd offset cs_retint16 ;; FFI_TYPE_SMALL_STRUCT_2B
|
||||
+ dd offset cs_retsint8 ;; FFI_TYPE_SMALL_STRUCT_1B
|
||||
+ dd offset cs_retsint16 ;; FFI_TYPE_SMALL_STRUCT_2B
|
||||
dd offset cs_retint ;; FFI_TYPE_SMALL_STRUCT_4B
|
||||
dd offset cs_retmsstruct ;; FFI_TYPE_MS_STRUCT
|
||||
|
||||
-cs_retint8:
|
||||
- mov al, [ecx]
|
||||
+cs_retuint8:
|
||||
+ movzx eax, BYTE PTR [ecx]
|
||||
+ jmp cs_epilogue
|
||||
+
|
||||
+cs_retsint8:
|
||||
+ movsx eax, BYTE PTR [ecx]
|
||||
+ jmp cs_epilogue
|
||||
+
|
||||
+cs_retuint16:
|
||||
+ movzx eax, WORD PTR [ecx]
|
||||
jmp cs_epilogue
|
||||
|
||||
-cs_retint16:
|
||||
- mov ax, [ecx]
|
||||
+cs_retsint16:
|
||||
+ movsx eax, WORD PTR [ecx]
|
||||
jmp cs_epilogue
|
||||
|
||||
cs_retint:
|
||||
@@ -305,27 +330,35 @@ cr_jumpdata:
|
||||
dd offset cr_retfloat ;; FFI_TYPE_FLOAT
|
||||
dd offset cr_retdouble ;; FFI_TYPE_DOUBLE
|
||||
dd offset cr_retlongdouble ;; FFI_TYPE_LONGDOUBLE
|
||||
- dd offset cr_retint8 ;; FFI_TYPE_UINT8
|
||||
- dd offset cr_retint8 ;; FFI_TYPE_SINT8
|
||||
- dd offset cr_retint16 ;; FFI_TYPE_UINT16
|
||||
- dd offset cr_retint16 ;; FFI_TYPE_SINT16
|
||||
+ dd offset cr_retuint8 ;; FFI_TYPE_UINT8
|
||||
+ dd offset cr_retsint8 ;; FFI_TYPE_SINT8
|
||||
+ dd offset cr_retuint16 ;; FFI_TYPE_UINT16
|
||||
+ dd offset cr_retsint16 ;; FFI_TYPE_SINT16
|
||||
dd offset cr_retint ;; FFI_TYPE_UINT32
|
||||
dd offset cr_retint ;; FFI_TYPE_SINT32
|
||||
dd offset cr_retint64 ;; FFI_TYPE_UINT64
|
||||
dd offset cr_retint64 ;; FFI_TYPE_SINT64
|
||||
dd offset cr_epilogue ;; FFI_TYPE_STRUCT
|
||||
dd offset cr_retint ;; FFI_TYPE_POINTER
|
||||
- dd offset cr_retint8 ;; FFI_TYPE_SMALL_STRUCT_1B
|
||||
- dd offset cr_retint16 ;; FFI_TYPE_SMALL_STRUCT_2B
|
||||
+ dd offset cr_retsint8 ;; FFI_TYPE_SMALL_STRUCT_1B
|
||||
+ dd offset cr_retsint16 ;; FFI_TYPE_SMALL_STRUCT_2B
|
||||
dd offset cr_retint ;; FFI_TYPE_SMALL_STRUCT_4B
|
||||
dd offset cr_epilogue ;; FFI_TYPE_MS_STRUCT
|
||||
|
||||
-cr_retint8:
|
||||
- mov al, [ecx]
|
||||
+cr_retuint8:
|
||||
+ movzx eax, BYTE PTR [ecx]
|
||||
jmp cr_epilogue
|
||||
|
||||
-cr_retint16:
|
||||
- mov ax, [ecx]
|
||||
+cr_retsint8:
|
||||
+ movsx eax, BYTE PTR [ecx]
|
||||
+ jmp cr_epilogue
|
||||
+
|
||||
+cr_retuint16:
|
||||
+ movzx eax, WORD PTR [ecx]
|
||||
+ jmp cr_epilogue
|
||||
+
|
||||
+cr_retsint16:
|
||||
+ movsx eax, WORD PTR [ecx]
|
||||
jmp cr_epilogue
|
||||
|
||||
cr_retint:
|
||||
@@ -379,26 +412,34 @@ cd_jumpdata:
|
||||
dd offset cd_retfloat ;; FFI_TYPE_FLOAT
|
||||
dd offset cd_retdouble ;; FFI_TYPE_DOUBLE
|
||||
dd offset cd_retlongdouble ;; FFI_TYPE_LONGDOUBLE
|
||||
- dd offset cd_retint8 ;; FFI_TYPE_UINT8
|
||||
- dd offset cd_retint8 ;; FFI_TYPE_SINT8
|
||||
- dd offset cd_retint16 ;; FFI_TYPE_UINT16
|
||||
- dd offset cd_retint16 ;; FFI_TYPE_SINT16
|
||||
+ dd offset cd_retuint8 ;; FFI_TYPE_UINT8
|
||||
+ dd offset cd_retsint8 ;; FFI_TYPE_SINT8
|
||||
+ dd offset cd_retuint16 ;; FFI_TYPE_UINT16
|
||||
+ dd offset cd_retsint16 ;; FFI_TYPE_SINT16
|
||||
dd offset cd_retint ;; FFI_TYPE_UINT32
|
||||
dd offset cd_retint ;; FFI_TYPE_SINT32
|
||||
dd offset cd_retint64 ;; FFI_TYPE_UINT64
|
||||
dd offset cd_retint64 ;; FFI_TYPE_SINT64
|
||||
dd offset cd_epilogue ;; FFI_TYPE_STRUCT
|
||||
dd offset cd_retint ;; FFI_TYPE_POINTER
|
||||
- dd offset cd_retint8 ;; FFI_TYPE_SMALL_STRUCT_1B
|
||||
- dd offset cd_retint16 ;; FFI_TYPE_SMALL_STRUCT_2B
|
||||
+ dd offset cd_retsint8 ;; FFI_TYPE_SMALL_STRUCT_1B
|
||||
+ dd offset cd_retsint16 ;; FFI_TYPE_SMALL_STRUCT_2B
|
||||
dd offset cd_retint ;; FFI_TYPE_SMALL_STRUCT_4B
|
||||
|
||||
-cd_retint8:
|
||||
- mov al, [ecx]
|
||||
+cd_retuint8:
|
||||
+ movzx eax, BYTE PTR [ecx]
|
||||
+ jmp cd_epilogue
|
||||
+
|
||||
+cd_retsint8:
|
||||
+ movsx eax, BYTE PTR [ecx]
|
||||
+ jmp cd_epilogue
|
||||
+
|
||||
+cd_retuint16:
|
||||
+ movzx eax, WORD PTR [ecx]
|
||||
jmp cd_epilogue
|
||||
|
||||
-cd_retint16:
|
||||
- mov ax, [ecx]
|
||||
+cd_retsint16:
|
||||
+ movsx eax, WORD PTR [ecx]
|
||||
jmp cd_epilogue
|
||||
|
||||
cd_retint:
|
||||
133
src/x86/win32.S
133
src/x86/win32.S
@@ -108,32 +108,37 @@ ca_jumpdata:
|
||||
dd offset ca_retfloat ;; FFI_TYPE_FLOAT
|
||||
dd offset ca_retdouble ;; FFI_TYPE_DOUBLE
|
||||
dd offset ca_retlongdouble ;; FFI_TYPE_LONGDOUBLE
|
||||
dd offset ca_retint8 ;; FFI_TYPE_UINT8
|
||||
dd offset ca_retint8 ;; FFI_TYPE_SINT8
|
||||
dd offset ca_retint16 ;; FFI_TYPE_UINT16
|
||||
dd offset ca_retint16 ;; FFI_TYPE_SINT16
|
||||
dd offset ca_retuint8 ;; FFI_TYPE_UINT8
|
||||
dd offset ca_retsint8 ;; FFI_TYPE_SINT8
|
||||
dd offset ca_retuint16 ;; FFI_TYPE_UINT16
|
||||
dd offset ca_retsint16 ;; FFI_TYPE_SINT16
|
||||
dd offset ca_retint ;; FFI_TYPE_UINT32
|
||||
dd offset ca_retint ;; FFI_TYPE_SINT32
|
||||
dd offset ca_retint64 ;; FFI_TYPE_UINT64
|
||||
dd offset ca_retint64 ;; FFI_TYPE_SINT64
|
||||
dd offset ca_epilogue ;; FFI_TYPE_STRUCT
|
||||
dd offset ca_retint ;; FFI_TYPE_POINTER
|
||||
dd offset ca_retint8 ;; FFI_TYPE_SMALL_STRUCT_1B
|
||||
dd offset ca_retint16 ;; FFI_TYPE_SMALL_STRUCT_2B
|
||||
dd offset ca_retstruct1b ;; FFI_TYPE_SMALL_STRUCT_1B
|
||||
dd offset ca_retstruct2b ;; FFI_TYPE_SMALL_STRUCT_2B
|
||||
dd offset ca_retint ;; FFI_TYPE_SMALL_STRUCT_4B
|
||||
dd offset ca_epilogue ;; FFI_TYPE_MS_STRUCT
|
||||
|
||||
ca_retint8:
|
||||
;; Load %ecx with the pointer to storage for the return value
|
||||
mov ecx, rvalue
|
||||
mov [ecx + 0], al
|
||||
jmp ca_epilogue
|
||||
/* Sign/zero extend as appropriate. */
|
||||
ca_retuint8:
|
||||
movzx eax, al
|
||||
jmp ca_retint
|
||||
|
||||
ca_retint16:
|
||||
;; Load %ecx with the pointer to storage for the return value
|
||||
mov ecx, rvalue
|
||||
mov [ecx + 0], ax
|
||||
jmp ca_epilogue
|
||||
ca_retsint8:
|
||||
movsx eax, al
|
||||
jmp ca_retint
|
||||
|
||||
ca_retuint16:
|
||||
movzx eax, ax
|
||||
jmp ca_retint
|
||||
|
||||
ca_retsint16:
|
||||
movsx eax, ax
|
||||
jmp ca_retint
|
||||
|
||||
ca_retint:
|
||||
;; Load %ecx with the pointer to storage for the return value
|
||||
@@ -166,6 +171,18 @@ ca_retlongdouble:
|
||||
fstp TBYTE PTR [ecx]
|
||||
jmp ca_epilogue
|
||||
|
||||
ca_retstruct1b:
|
||||
;; Load %ecx with the pointer to storage for the return value
|
||||
mov ecx, rvalue
|
||||
mov [ecx + 0], al
|
||||
jmp ca_epilogue
|
||||
|
||||
ca_retstruct2b:
|
||||
;; Load %ecx with the pointer to storage for the return value
|
||||
mov ecx, rvalue
|
||||
mov [ecx + 0], ax
|
||||
jmp ca_epilogue
|
||||
|
||||
ca_epilogue:
|
||||
;; Epilogue code is autogenerated.
|
||||
ret
|
||||
@@ -203,27 +220,35 @@ cs_jumpdata:
|
||||
dd offset cs_retfloat ;; FFI_TYPE_FLOAT
|
||||
dd offset cs_retdouble ;; FFI_TYPE_DOUBLE
|
||||
dd offset cs_retlongdouble ;; FFI_TYPE_LONGDOUBLE
|
||||
dd offset cs_retint8 ;; FFI_TYPE_UINT8
|
||||
dd offset cs_retint8 ;; FFI_TYPE_SINT8
|
||||
dd offset cs_retint16 ;; FFI_TYPE_UINT16
|
||||
dd offset cs_retint16 ;; FFI_TYPE_SINT16
|
||||
dd offset cs_retuint8 ;; FFI_TYPE_UINT8
|
||||
dd offset cs_retsint8 ;; FFI_TYPE_SINT8
|
||||
dd offset cs_retuint16 ;; FFI_TYPE_UINT16
|
||||
dd offset cs_retsint16 ;; FFI_TYPE_SINT16
|
||||
dd offset cs_retint ;; FFI_TYPE_UINT32
|
||||
dd offset cs_retint ;; FFI_TYPE_SINT32
|
||||
dd offset cs_retint64 ;; FFI_TYPE_UINT64
|
||||
dd offset cs_retint64 ;; FFI_TYPE_SINT64
|
||||
dd offset cs_retstruct ;; FFI_TYPE_STRUCT
|
||||
dd offset cs_retint ;; FFI_TYPE_POINTER
|
||||
dd offset cs_retint8 ;; FFI_TYPE_SMALL_STRUCT_1B
|
||||
dd offset cs_retint16 ;; FFI_TYPE_SMALL_STRUCT_2B
|
||||
dd offset cs_retsint8 ;; FFI_TYPE_SMALL_STRUCT_1B
|
||||
dd offset cs_retsint16 ;; FFI_TYPE_SMALL_STRUCT_2B
|
||||
dd offset cs_retint ;; FFI_TYPE_SMALL_STRUCT_4B
|
||||
dd offset cs_retmsstruct ;; FFI_TYPE_MS_STRUCT
|
||||
|
||||
cs_retint8:
|
||||
mov al, [ecx]
|
||||
cs_retuint8:
|
||||
movzx eax, BYTE PTR [ecx]
|
||||
jmp cs_epilogue
|
||||
|
||||
cs_retint16:
|
||||
mov ax, [ecx]
|
||||
cs_retsint8:
|
||||
movsx eax, BYTE PTR [ecx]
|
||||
jmp cs_epilogue
|
||||
|
||||
cs_retuint16:
|
||||
movzx eax, WORD PTR [ecx]
|
||||
jmp cs_epilogue
|
||||
|
||||
cs_retsint16:
|
||||
movsx eax, WORD PTR [ecx]
|
||||
jmp cs_epilogue
|
||||
|
||||
cs_retint:
|
||||
@@ -305,27 +330,35 @@ cr_jumpdata:
|
||||
dd offset cr_retfloat ;; FFI_TYPE_FLOAT
|
||||
dd offset cr_retdouble ;; FFI_TYPE_DOUBLE
|
||||
dd offset cr_retlongdouble ;; FFI_TYPE_LONGDOUBLE
|
||||
dd offset cr_retint8 ;; FFI_TYPE_UINT8
|
||||
dd offset cr_retint8 ;; FFI_TYPE_SINT8
|
||||
dd offset cr_retint16 ;; FFI_TYPE_UINT16
|
||||
dd offset cr_retint16 ;; FFI_TYPE_SINT16
|
||||
dd offset cr_retuint8 ;; FFI_TYPE_UINT8
|
||||
dd offset cr_retsint8 ;; FFI_TYPE_SINT8
|
||||
dd offset cr_retuint16 ;; FFI_TYPE_UINT16
|
||||
dd offset cr_retsint16 ;; FFI_TYPE_SINT16
|
||||
dd offset cr_retint ;; FFI_TYPE_UINT32
|
||||
dd offset cr_retint ;; FFI_TYPE_SINT32
|
||||
dd offset cr_retint64 ;; FFI_TYPE_UINT64
|
||||
dd offset cr_retint64 ;; FFI_TYPE_SINT64
|
||||
dd offset cr_epilogue ;; FFI_TYPE_STRUCT
|
||||
dd offset cr_retint ;; FFI_TYPE_POINTER
|
||||
dd offset cr_retint8 ;; FFI_TYPE_SMALL_STRUCT_1B
|
||||
dd offset cr_retint16 ;; FFI_TYPE_SMALL_STRUCT_2B
|
||||
dd offset cr_retsint8 ;; FFI_TYPE_SMALL_STRUCT_1B
|
||||
dd offset cr_retsint16 ;; FFI_TYPE_SMALL_STRUCT_2B
|
||||
dd offset cr_retint ;; FFI_TYPE_SMALL_STRUCT_4B
|
||||
dd offset cr_epilogue ;; FFI_TYPE_MS_STRUCT
|
||||
|
||||
cr_retint8:
|
||||
mov al, [ecx]
|
||||
cr_retuint8:
|
||||
movzx eax, BYTE PTR [ecx]
|
||||
jmp cr_epilogue
|
||||
|
||||
cr_retint16:
|
||||
mov ax, [ecx]
|
||||
cr_retsint8:
|
||||
movsx eax, BYTE PTR [ecx]
|
||||
jmp cr_epilogue
|
||||
|
||||
cr_retuint16:
|
||||
movzx eax, WORD PTR [ecx]
|
||||
jmp cr_epilogue
|
||||
|
||||
cr_retsint16:
|
||||
movsx eax, WORD PTR [ecx]
|
||||
jmp cr_epilogue
|
||||
|
||||
cr_retint:
|
||||
@@ -379,26 +412,34 @@ cd_jumpdata:
|
||||
dd offset cd_retfloat ;; FFI_TYPE_FLOAT
|
||||
dd offset cd_retdouble ;; FFI_TYPE_DOUBLE
|
||||
dd offset cd_retlongdouble ;; FFI_TYPE_LONGDOUBLE
|
||||
dd offset cd_retint8 ;; FFI_TYPE_UINT8
|
||||
dd offset cd_retint8 ;; FFI_TYPE_SINT8
|
||||
dd offset cd_retint16 ;; FFI_TYPE_UINT16
|
||||
dd offset cd_retint16 ;; FFI_TYPE_SINT16
|
||||
dd offset cd_retuint8 ;; FFI_TYPE_UINT8
|
||||
dd offset cd_retsint8 ;; FFI_TYPE_SINT8
|
||||
dd offset cd_retuint16 ;; FFI_TYPE_UINT16
|
||||
dd offset cd_retsint16 ;; FFI_TYPE_SINT16
|
||||
dd offset cd_retint ;; FFI_TYPE_UINT32
|
||||
dd offset cd_retint ;; FFI_TYPE_SINT32
|
||||
dd offset cd_retint64 ;; FFI_TYPE_UINT64
|
||||
dd offset cd_retint64 ;; FFI_TYPE_SINT64
|
||||
dd offset cd_epilogue ;; FFI_TYPE_STRUCT
|
||||
dd offset cd_retint ;; FFI_TYPE_POINTER
|
||||
dd offset cd_retint8 ;; FFI_TYPE_SMALL_STRUCT_1B
|
||||
dd offset cd_retint16 ;; FFI_TYPE_SMALL_STRUCT_2B
|
||||
dd offset cd_retsint8 ;; FFI_TYPE_SMALL_STRUCT_1B
|
||||
dd offset cd_retsint16 ;; FFI_TYPE_SMALL_STRUCT_2B
|
||||
dd offset cd_retint ;; FFI_TYPE_SMALL_STRUCT_4B
|
||||
|
||||
cd_retint8:
|
||||
mov al, [ecx]
|
||||
cd_retuint8:
|
||||
movzx eax, BYTE PTR [ecx]
|
||||
jmp cd_epilogue
|
||||
|
||||
cd_retint16:
|
||||
mov ax, [ecx]
|
||||
cd_retsint8:
|
||||
movsx eax, BYTE PTR [ecx]
|
||||
jmp cd_epilogue
|
||||
|
||||
cd_retuint16:
|
||||
movzx eax, WORD PTR [ecx]
|
||||
jmp cd_epilogue
|
||||
|
||||
cd_retsint16:
|
||||
movsx eax, WORD PTR [ecx]
|
||||
jmp cd_epilogue
|
||||
|
||||
cd_retint:
|
||||
|
||||
Reference in New Issue
Block a user