@@ -233,6 +233,7 @@ classify_argument (ffi_type *type, enum x86_64_reg_class classes[],
|
||||
signalize memory class, so handle it as special case. */
|
||||
if (!words)
|
||||
{
|
||||
case FFI_TYPE_VOID:
|
||||
classes[0] = X86_64_NO_CLASS;
|
||||
return 1;
|
||||
}
|
||||
@@ -611,6 +612,9 @@ ffi_call_int (ffi_cif *cif, void (*fn)(void), void *rvalue,
|
||||
{
|
||||
switch (classes[j])
|
||||
{
|
||||
case X86_64_NO_CLASS:
|
||||
case X86_64_SSEUP_CLASS:
|
||||
break;
|
||||
case X86_64_INTEGER_CLASS:
|
||||
case X86_64_INTEGERSI_CLASS:
|
||||
/* Sign-extend integer arguments passed in general
|
||||
|
||||
@@ -108,7 +108,7 @@ ffi_call_i386:
|
||||
|
||||
movl 12(%ebp), %ecx /* load return type code */
|
||||
movl %ebx, 8(%ebp) /* preserve %ebx */
|
||||
cfi_rel_offset(%ebp, 8)
|
||||
cfi_rel_offset(%ebx, 8)
|
||||
|
||||
andl $X86_RET_TYPE_MASK, %ecx
|
||||
#ifdef __PIC__
|
||||
@@ -600,7 +600,7 @@ C(ffi_closure_raw_THISCALL):
|
||||
subl $raw_closure_T_FS, %esp
|
||||
cfi_adjust_cfa_offset(raw_closure_T_FS)
|
||||
movl %ebx, raw_closure_T_FS-4(%esp)
|
||||
cfi_offset(%ebx, raw_closure_T_FS-4)
|
||||
cfi_rel_offset(%ebx, raw_closure_T_FS-4)
|
||||
|
||||
movl FFI_TRAMPOLINE_SIZE+8(%eax), %edx /* load cl->user_data */
|
||||
movl %edx, 12(%esp)
|
||||
|
||||
Reference in New Issue
Block a user