Commit 75b2199f264f42de814528ccf4bfd2ef427665b5

Anthony Green 2014-12-12T10:13:56

Merge pull request #157 from rth7680/x86 Two fixes for x86

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)