2003-01-14 Andrew Haley <aph@redhat.com>
authoraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 14 Jan 2003 18:42:29 +0000 (18:42 +0000)
committeraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 14 Jan 2003 18:42:29 +0000 (18:42 +0000)
        * src/x86/ffi64.c (ffi_prep_args): Check for void retval.
        (ffi_prep_cif_machdep): Likewise.
        * src/x86/unix64.S: Add unwind info.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@61291 138bc75d-0d04-0410-961f-82ee72b054a4

libffi/ChangeLog
libffi/src/x86/ffi64.c
libffi/src/x86/unix64.S

index 97705f1..6b5df6b 100644 (file)
@@ -1,3 +1,9 @@
+2003-01-14  Andrew Haley  <aph@redhat.com>
+
+       * src/x86/ffi64.c (ffi_prep_args): Check for void retval.
+       (ffi_prep_cif_machdep): Likewise.
+       * src/x86/unix64.S: Add unwind info.
+
 2003-01-14  Andreas Jaeger  <aj@suse.de>
 
        * src/ffitest.c (main): Only use ffi_closures if those are
index f278a92..ed6e89d 100644 (file)
@@ -285,7 +285,8 @@ ffi_prep_args (stackLayout *stack, extended_cif *ecif)
   /* First check if the return value should be passed in memory. If so,
      pass the pointer as the first argument.  */
   gprcount = ssecount = 0;
-  if (examine_argument (ecif->cif->rtype, 1, &g, &s) == 0)
+  if (ecif->cif->rtype->type != FFI_TYPE_VOID 
+      && examine_argument (ecif->cif->rtype, 1, &g, &s) == 0)
     (void *)stack->gpr[gprcount++] = ecif->rvalue;
 
   for (i=ecif->cif->nargs, p_arg=ecif->cif->arg_types, p_argv = ecif->avalue;
@@ -389,8 +390,8 @@ ffi_prep_cif_machdep (ffi_cif *cif)
 
   /* If the return value should be passed in memory, pass the pointer
      as the first argument. The actual memory isn't allocated here.  */
-
-  if (examine_argument (cif->rtype, 1, &g, &s) == 0)
+  if (cif->rtype->type != FFI_TYPE_VOID 
+      && examine_argument (cif->rtype, 1, &g, &s) == 0)
     gprcount = 1;
 
   /* Go over all arguments and determine the way they should be passed.
index 2e64b41..8ac1145 100644 (file)
@@ -163,4 +163,46 @@ sse2floatfloat:
        movq    %xmm0, (%rsi)
        ret
        
+        .section        .eh_frame,"a",@progbits
+.Lframe0:
+        .long   .LECIE1-.LSCIE1
+.LSCIE1:
+        .long   0x0
+        .byte   0x1
+        .string "zR"
+        .uleb128 0x1
+        .sleb128 -8
+        .byte   0x10
+        .uleb128 0x1
+        .byte   0x1b
+        .byte   0xc
+        .uleb128 0x7
+        .uleb128 0x8
+        .byte   0x90
+        .uleb128 0x1
+        .align 8
+.LECIE1:
+.LSFDE1:
+       .long   .LEFDE1-.LASFDE1
+.LASFDE1:
+        .long   .LASFDE1-.Lframe0
+
+        .long   .LFB1-.
+        .long   .LFE1-.LFB1
+        .uleb128 0x0
+        .byte   0x4            # DW_CFA_advance_loc4
+        .long   .LCFI0-.LFB1
+        .byte   0xe            # DW_CFA_def_cfa_offset
+        .uleb128 0x10
+        .byte   0x86           # DW_CFA_offset: r6 at cfa-16
+        .uleb128 0x2
+        .byte   0x4            # DW_CFA_advance_loc4
+        .long   .LCFI1-.LCFI0
+        .byte   0x86           # DW_CFA_offset: r6 at cfa-16
+        .uleb128 0x2
+        .byte   0xd            # DW_CFA_def_cfa_reg: r6
+        .uleb128 0x6
+       .align 8
+.LEFDE1:
+
 #endif /* __x86_64__  */