Merge pull request #157 from rth7680/x86 Two fixes for x86
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
diff --git a/src/x86/ffi64.c b/src/x86/ffi64.c
index 650f7bb..cf6b5a5 100644
--- a/src/x86/ffi64.c
+++ b/src/x86/ffi64.c
@@ -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
diff --git a/src/x86/sysv.S b/src/x86/sysv.S
index 72cba6c..ebd1693 100644
--- a/src/x86/sysv.S
+++ b/src/x86/sysv.S
@@ -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)