diff options
author | aph <aph@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-01-14 18:42:29 +0000 |
---|---|---|
committer | aph <aph@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-01-14 18:42:29 +0000 |
commit | 149417bc1e319b1d9c76589f06c10ce480c7adf7 (patch) | |
tree | 1112fcafba7b2e785bde6d27abba98829ae77c27 /libffi/src | |
parent | 3dd02c64442b516b3dd945eb47d77db5431f0024 (diff) | |
download | gcc-149417bc1e319b1d9c76589f06c10ce480c7adf7.tar.gz |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@61291 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libffi/src')
-rw-r--r-- | libffi/src/x86/ffi64.c | 7 | ||||
-rw-r--r-- | libffi/src/x86/unix64.S | 42 |
2 files changed, 46 insertions, 3 deletions
diff --git a/libffi/src/x86/ffi64.c b/libffi/src/x86/ffi64.c index f278a924eda..ed6e89d7729 100644 --- a/libffi/src/x86/ffi64.c +++ b/libffi/src/x86/ffi64.c @@ -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. diff --git a/libffi/src/x86/unix64.S b/libffi/src/x86/unix64.S index 2e64b4195bf..8ac1145f7e9 100644 --- a/libffi/src/x86/unix64.S +++ b/libffi/src/x86/unix64.S @@ -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__ */ |