aboutsummaryrefslogtreecommitdiff
path: root/libffi/src
AgeCommit message (Collapse)AuthorFilesLines
2005-08-09ppc_closure.S (ffi_closure_SYSV): Use DW_CFA_offset_extended_sf rather than ↵Jakub Jelinek2-4/+4
DW_CFA_GNU_negative_offset_extended. * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Use DW_CFA_offset_extended_sf rather than DW_CFA_GNU_negative_offset_extended. * src/powerpc/sysv.S (ffi_call_SYSV): Likewise. From-SVN: r102900
2005-07-22sysv.S (ffi_call_SYSV): Stop argument popping correctly on sh3.SUGIOKA Toshinobu2-40/+68
* src/sh/sysv.S (ffi_call_SYSV): Stop argument popping correctly on sh3. (ffi_closure_SYSV): Change the stack layout for sh3 struct argument. * src/sh/ffi.c (ffi_prep_args): Fix sh3 argument copy, when it is partially on register. (ffi_closure_helper_SYSV): Likewise. (ffi_prep_cif_machdep): Don't set too many cif->flags. From-SVN: r102298
2005-07-20ffi.c (ffi_call): Handle small structures correctly.Kaz Kojima3-54/+106
* src/sh/ffi.c (ffi_call): Handle small structures correctly. Remove empty line. * src/sh64/ffi.c (simple_type): Remove. (return_type): Handle small structures correctly. (ffi_prep_args): Likewise. (ffi_call): Likewise. (ffi_closure_helper_SYSV): Likewise. * src/sh64/sysv.S (ffi_call_SYSV): Handle 1, 2 and 4-byte return. Emit position independent code if PIC and remove wrong datalabel prefixes from EH data. From-SVN: r102210
2005-07-19Makefile.am (nodist_libffi_la_SOURCES): Add POWERPC_FREEBSD.Andreas Tobler4-29/+168
2005-07-19 Andreas Tobler <a.tobler@schweiz.ch> * Makefile.am (nodist_libffi_la_SOURCES): Add POWERPC_FREEBSD. * Makefile.in: Regenerate. * include/Makefile.in: Likewise. * testsuite/Makefile.in: Likewise. * configure.ac: Add POWERPC_FREEBSD rules. * configure: Regenerate. * src/powerpc/ffitarget.h: Add POWERPC_FREEBSD rules. (FFI_SYSV_TYPE_SMALL_STRUCT): Define. * src/powerpc/ffi.c: Add flags to handle small structure returns in ffi_call_SYSV. (ffi_prep_cif_machdep): Handle small structures for SYSV 4 ABI. Aka FFI_SYSV. (ffi_closure_helper_SYSV): Likewise. * src/powerpc/ppc_closure.S: Add return types for small structures. * src/powerpc/sysv.S: Add bits to handle small structures for final SYSV 4 ABI From-SVN: r102174
2005-07-06ffi.c (ffi_struct_type): Rename FFI_TYPE_SMALL_STRUCT1 as ↵Randolph Chung3-34/+84
FFI_TYPE_SMALL_STRUCT3. * src/pa/ffi.c (ffi_struct_type): Rename FFI_TYPE_SMALL_STRUCT1 as FFI_TYPE_SMALL_STRUCT3. Break out handling for 5-7 byte structures. Kill compilation warnings. (ffi_closure_inner_LINUX): Print return values as hex in debug message. Rename FFI_TYPE_SMALL_STRUCT1 as FFI_TYPE_SMALL_STRUCT3. Properly handle 5-7 byte structure returns. * src/pa/ffitarget.h (FFI_TYPE_SMALL_STRUCT1) (FFI_TYPE_SMALL_STRUCT2): Remove. (FFI_TYPE_SMALL_STRUCT3, FFI_TYPE_SMALL_STRUCT5) (FFI_TYPE_SMALL_STRUCT6, FFI_TYPE_SMALL_STRUCT7): Define. * src/pa/linux.S: Mark source file as using PA1.1 assembly. (checksmst1, checksmst2): Remove. (checksmst3): Optimize handling of 3-byte struct returns. (checksmst567): Properly handle 5-7 byte struct returns. From-SVN: r101650
2005-06-15re PR libffi/21943 (O32 libffi.so fails to link on IRIX 6)Rainer Orth2-2/+4
PR libgcj/21943 * src/mips/n32.S: Enforce PIC code. * src/mips/o32.S: Likewise. From-SVN: r100961
2005-06-01ppc_closure.S (ffi_closure_SYSV): Don't use JUMPTARGET to call ↵Alan Modra2-2/+2
ffi_closure_helper_SYSV. * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Don't use JUMPTARGET to call ffi_closure_helper_SYSV. Append @local instead. * src/powerpc/sysv.S (ffi_call_SYSV): Likewise for ffi_prep_args_SYSV. From-SVN: r100416
2005-05-08re PR libffi/21285 (gij fails to handle NullPointerException exception)Richard Henderson1-45/+49
PR libffi/21285 * src/alpha/osf.S: Update unwind into to match code. From-SVN: r99415
2005-05-04ffi64.c (ffi_prep_cif_machdep): Save sse-used flag in bit 11 of flags.Richard Henderson2-51/+95
* src/x86/ffi64.c (ffi_prep_cif_machdep): Save sse-used flag in bit 11 of flags. (ffi_call): Mask return type field. Pass ssecount to ffi_call_unix64. (ffi_prep_closure): Set carry bit if sse-used flag set. * src/x86/unix64.S (ffi_call_unix64): Add ssecount argument. Only load sse registers if ssecount non-zero. (ffi_closure_unix64): Only save sse registers if carry set on entry. From-SVN: r99257
2005-04-18Makefile.am: Add CRIS support.Simon Posnjak4-0/+652
* Makefile.am: Add CRIS support. * configure.ac: Likewise. * Makefile.in, configure, testsuite/Makefile.in: Regenerate. * src/cris: New directory. * src/cris/ffi.c, src/cris/sysv.S, src/cris/ffitarget.h: New files. * src/prep_cif.c (ffi_prep_cif): Wrap in #ifndef __CRIS__. Co-Authored-By: Hans-Peter Nilsson <hp@axis.com> From-SVN: r98332
2005-03-31* src/ia64/ffitarget.h (ffi_arg): Use long long instead of DI.Hans Boehm1-2/+2
From-SVN: r97303
2005-03-30* src/ia64/ffitarget.h (ffi_arg) ADD DI attribute.Steve Ellcey2-37/+18
(ffi_sarg) Ditto. * src/ia64/unix.S (ffi_closure_unix): Extend gp to 64 bits in ILP32 mode. Load 64 bits even for short data. From-SVN: r97283
2005-03-24darwin.S: Update for -m64 multilib.Mike Stump2-20/+43
* src/powerpc/darwin.S: Update for -m64 multilib. * src/powerpc/darwin_closure.S: Likewise. From-SVN: r96967
2005-02-23re PR libffi/20104 (gij fails on ppc and not on x86)Andrew Haley1-3/+7
2005-02-22 Andrew Haley <aph@redhat.com> PR libffi/20104 * src/powerpc/ffi.c (ffi_prep_cif_machdep): Bump alignment to odd-numbered register pairs for 64-bit integer types. From-SVN: r95455
2005-02-08ffitarget.h: Remove PPC stuff which does not belong to frv.Andreas Tobler1-30/+2
2005-02-08 Andreas Tobler <a.tobler@schweiz.ch> * src/frv/ffitarget.h: Remove PPC stuff which does not belong to frv. From-SVN: r94747
2004-12-31types.c (FFI_AGGREGATE_TYPEDEF): Remove.Richard Henderson1-66/+28
* src/types.c (FFI_AGGREGATE_TYPEDEF): Remove. (FFI_TYPEDEF): Rename from FFI_INTEGRAL_TYPEDEF. Replace size and offset parameters with a type parameter; deduce size and structure alignment. Update all users. From-SVN: r92775
2004-12-31types.c (FFI_TYPE_POINTER): Define with sizeof.Richard Henderson5-857/+948
* src/types.c (FFI_TYPE_POINTER): Define with sizeof. (FFI_TYPE_LONGDOUBLE): Fix for ia64. * src/ia64/ffitarget.h (struct ffi_ia64_trampoline_struct): Move into ffi_prep_closure. * src/ia64/ia64_flags.h, src/ia64/ffi.c, src/ia64/unix.S: Rewrite from scratch. From-SVN: r92774
2004-12-27* src/x86/unix64.S: Fix typo in unwind info.Richard Henderson1-1/+1
From-SVN: r92636
2004-12-25ffi64.c (struct register_args): Rename from stackLayout.Richard Henderson2-640/+566
* src/x86/ffi64.c (struct register_args): Rename from stackLayout. (enum x86_64_reg_class): Add X86_64_COMPLEX_X87_CLASS. (merge_classes): Check for it. (SSE_CLASS_P): New. (classify_argument): Pass byte_offset by value; perform all updates inside struct case. (examine_argument): Add classes argument; handle X86_64_COMPLEX_X87_CLASS. (ffi_prep_args): Merge into ... (ffi_call): ... here. Share stack frame with ffi_call_unix64. (ffi_prep_cif_machdep): Setup cif->flags for proper structure return. (ffi_fill_return_value): Remove. (ffi_prep_closure): Remove dead assert. (ffi_closure_unix64_inner): Rename from ffi_closure_UNIX64_inner. Rewrite to use struct register_args instead of va_list. Create flags for handling structure returns. * src/x86/unix64.S: Remove dead strings. (ffi_call_unix64): Rename from ffi_call_UNIX64. Rewrite to share stack frame with ffi_call. Handle structure returns properly. (float2sse, floatfloat2sse, double2sse): Remove. (sse2float, sse2double, sse2floatfloat): Remove. (ffi_closure_unix64): Rename from ffi_closure_UNIX64. Rewrite to handle structure returns properly. From-SVN: r92602
2004-11-23o32.S (ffi_call_O32, [...]): Use jalr instead of jal.Richard Sandiford1-10/+10
* src/mips/o32.S (ffi_call_O32, ffi_closure_O32): Use jalr instead of jal. Use an absolute encoding for the frame information. * configure.host: Enable the interpreter for mips*-*-linux*. From-SVN: r91116
2004-11-22ffi.c (ffi_prep_closure): Align doubles and 64-bit integers on a 8-byte ↵Eric Botcazou2-3/+26
boundary. * src/sparc/ffi.c (ffi_prep_closure): Align doubles and 64-bit integers on a 8-byte boundary. * src/sparc/v8.S (ffi_closure_v8): Reserve frame space for arguments. From-SVN: r91022
2004-10-27ffi.c (ffi_prep_cif_machdep): Handle functions that return long long values.Richard Earnshaw2-74/+166
* src/arm/ffi.c (ffi_prep_cif_machdep): Handle functions that return long long values. Round stack allocation to a multiple of 8 bytes for ATPCS compatibility. * src/arm/sysv.S (ffi_call_SYSV): Rework to avoid use of APCS register names. Handle returning long long types. Add Thumb and interworking support. Improve soft-float code. From-SVN: r89681
2004-10-25(FFII_CLOSURES): Set to 0.Kazuhiro Inaoka1-1/+1
From-SVN: r89527
2004-10-21sysv.S (ffi_call_SYSV): Don't align for double data.Kaz Kojima1-6/+0
* src/sh/sysv.S (ffi_call_SYSV): Don't align for double data. * testsuite/libffi.call/float3.c: New test case. From-SVN: r89366
2004-10-18ffi.c (ffi_prep_closure): Set T bit in trampoline for the function returning ↵Kaz Kojima2-6/+52
a structure pointed with R2. * src/sh/ffi.c (ffi_prep_closure): Set T bit in trampoline for the function returning a structure pointed with R2. * src/sh/sysv.S (ffi_closure_SYSV): Use R2 as the pointer to the structure return value if T bit set. Emit position independent code and EH data if PIC. From-SVN: r89254
2004-10-13Makefile.am: Add m32r support.Kazuhiro Inaoka4-1/+417
* Makefile.am: Add m32r support. * configure.ac: Likewise. * Makefile.in: Regenerate. * confiugre: Regenerate. * src/types.c: Add m32r port to FFI_INTERNAL_TYPEDEF (uint64, sint64, double, longdouble) * src/m32r: New directory. * src/m32r/ffi.c: New file. * src/m32r/sysv.S: Likewise. * src/m32r/ffitarget.h: Likewise. From-SVN: r88993
2004-09-05darwin.S: Fix comments and identation.Andreas Tobler2-49/+49
2004-09-05 Andreas Tobler <a.tobler@schweiz.ch> * src/powerpc/darwin.S: Fix comments and identation. * src/powerpc/darwin_closure.S: Likewise. From-SVN: r87090
2004-09-02ffi_darwin.c: Add flag for longdouble return values.Andreas Tobler4-23/+107
2004-09-02 Andreas Tobler <a.tobler@schweiz.ch> * src/powerpc/ffi_darwin.c: Add flag for longdouble return values. (ffi_prep_args): Handle longdouble arguments. (ffi_prep_cif_machdep): Set flags for longdouble. Calculate space for longdouble. (ffi_closure_helper_DARWIN): Add closure handling for longdouble. * src/powerpc/darwin.S (_ffi_call_DARWIN): Add handling of longdouble values. * src/powerpc/darwin_closure.S (_ffi_closure_ASM): Likewise. * src/types.c: Defined longdouble size and alignment for darwin. From-SVN: r86992
2004-09-02004-09-02 Andreas Tobler <a.tobler@schweiz.ch>Andreas Tobler9-268/+260
* src/powerpc/aix.S: Remove whitespaces. * src/powerpc/aix_closure.S: Likewise. * src/powerpc/asm.h: Likewise. * src/powerpc/ffi.c: Likewise. * src/powerpc/ffitarget.h: Likewise. * src/powerpc/linux64.S: Likewise. * src/powerpc/linux64_closure.S: Likewise. * src/powerpc/ppc_closure.S: Likewise. * src/powerpc/sysv.S: Likewise. From-SVN: r86991
2004-08-30Makefile.am: Add frv support.Anthony Green3-0/+505
2004-08-30 Anthony Green <green@redhat.com> * Makefile.am: Add frv support. * Makefile.in, testsuite/Makefile.in: Rebuilt. * configure.ac: Read configure.host. * configure, aclocal.m4: Rebuilt. * configure.host: New file. frv-elf needs libgloss. * include/ffi.h.in: Force ffi_closure to have a nice big (8) alignment. This is needed to frv and should harm the others. * include/ffi_common.h (ALIGN_DOWN): New macro. * src/frv/ffi.c, src/frv/ffitarget.h, src/frv/eabi.S: New files. From-SVN: r86779
2004-08-23re PR libffi/13141 (FAIL: InvokeReturn output - source compiled test <libffi ↵David Daney3-44/+125
problem>) 2004-08-23 David Daney <daney@avtrex.com> PR libgcj/13141 * src/mips/ffitarget.h (FFI_O32_SOFT_FLOAT): New ABI. * src/mips/ffi.c (ffi_prep_args): Fix alignment calculation. (ffi_prep_cif_machdep): Handle FFI_O32_SOFT_FLOAT floating point parameters and return types. (ffi_call): Handle FFI_O32_SOFT_FLOAT ABI. (ffi_prep_closure): Ditto. (ffi_closure_mips_inner_O32): Handle FFI_O32_SOFT_FLOAT ABI, fix alignment calculations. * src/mips/o32.S (ffi_closure_O32): Don't use floating point instructions if FFI_O32_SOFT_FLOAT, make stack frame ABI compliant. From-SVN: r86429
2004-08-15ffi.c (ffi_pref_cif_machdep): set `cif->flags' to contain `FFI_TYPE_UINT64' ↵Casey Marshall3-3/+296
as return type for any 64-bit... 2004-08-14 Casey Marshall <csm@gnu.org> * src/mips/ffi.c (ffi_pref_cif_machdep): set `cif->flags' to contain `FFI_TYPE_UINT64' as return type for any 64-bit integer (O32 ABI only). (ffi_prep_closure): new function. (ffi_closure_mips_inner_O32): new function. * src/mips/ffitarget.h: Define `FFI_CLOSURES' and `FFI_TRAMPOLINE_SIZE' appropriately if the ABI is o32. * src/mips/o32.S (ffi_call_O32): add labels for .eh_frame. Return 64 bit integers correctly. (ffi_closure_O32): new function. Added DWARF-2 unwind info for both functions. From-SVN: r86019
2004-08-10ffi64.c (ffi_prep_args ): 8-align all stack arguments.Andrew Haley1-0/+2
2004-08-10 Andrew Haley <aph@redhat.com> * src/x86/ffi64.c (ffi_prep_args ): 8-align all stack arguments. From-SVN: r85753
2004-07-11ffi.c (ffi_prep_args): Fix C aliasing violation.Ulrich Weigand1-10/+8
* src/s390/ffi.c (ffi_prep_args): Fix C aliasing violation. (ffi_check_float_struct): Remove unused prototype. From-SVN: r84505
2004-06-30ffi_darwin.c (flush_icache): ';' is a comment character on Darwin, use ↵Geoffrey Keating1-5/+5
'\n\t' instead. * src/powerpc/ffi_darwin.c (flush_icache): ';' is a comment character on Darwin, use '\n\t' instead. From-SVN: r83899
2004-06-10unix.S (ffi_call_unix): Insert group barrier break fp_done.Jakub Jelinek1-2/+3
* src/ia64/unix.S (ffi_call_unix): Insert group barrier break fp_done. (ffi_closure_UNIX): Fix f14/f15 adjustment if FLOAT_SZ is ever changed from 8. From-SVN: r82904
2004-04-27Patch 14922Matt Austern2-2/+10
Patch 14922 * src/powerpc/darwin.S: Go through a non-lazy pointer for initial FDE location. * src/powerpc/darwin_closure.S: Likewise. From-SVN: r81209
2004-03-20linux.S: Fix typo.Matthias Klose1-1/+1
2004-03-20 Matthias Klose <doko@debian.org> * src/pa/linux.S: Fix typo. From-SVN: r79739
2004-03-19[multiple changes]Matthias Klose4-2/+943
2004-03-19 Matthias Klose <doko@debian.org> * Makefile.am: Update * Makefile.in: Regenerate. * src/pa/ffi.h.in: Remove. * src/pa/ffitarget.h: New file. 2004-02-10 Randolph Chung <tausq@debian.org> * Makefile.am: Add PA support. * Makefile.in: Regenerate. * include/Makefile.in: Regenerate. * configure.ac: Add PA target. * configure: Regenerate. * src/pa/ffi.c: New file. * src/pa/ffi.h.in: Add PA support. * src/pa/linux.S: New file. * prep_cif.c: Add PA support. From-SVN: r79702
2004-03-16types.c: Fix alignment size of X86_WIN32 case int64 and double.Hosaka Yuji3-6/+79
2004-03-16 Hosaka Yuji <hos@tamanegi.org> * src/types.c: Fix alignment size of X86_WIN32 case int64 and double. * src/x86/ffi.c (ffi_prep_args): Replace ecif->cif->rtype->type with ecif->cif->flags. (ffi_call, ffi_prep_incoming_args_SYSV): Replace cif->rtype->type with cif->flags. (ffi_prep_cif_machdep): Add X86_WIN32 struct case. (ffi_closure_SYSV): Add 1 or 2-bytes struct case for X86_WIN32. * src/x86/win32.S (retstruct1b, retstruct2b, sc_retstruct1b, sc_retstruct2b): Add for 1 or 2-bytes struct case. From-SVN: r79542
2004-03-12Enabled linkonce support for Darwin.Matt Austern2-11/+13
* target.h (struct gcc_target): New target hook, unwind_label. * target-def.h (TARGET_ASM_EMIT_UNWIND_LABEL): New hook. * output.h (default_emit_unwind_label): New function. * default.h (TARGET_EXPLICIT_INSTANTIATIONS_ONE_ONLY): New macro. (TARGET_USES_WEAK_UNWIND_INFO): New target macro. (TARGET_SUPPORTS_HIDDEN): New target macro. * dwarf2out.c (struct dw_fde_struct): Add field for function decl that corresponds to this FDE. (FRAME_BEGIN_LABEL): Allow target to override default label. (output_call_frame_info): If FDEs are linknonce, then use extra indirection for FDE encoding, output a label for each FDE, and output an empty label for each function without an FDE. (dwarf2out_begin_prologue): Set up decl field when creating an FDE. * varasm.c (globalize_decl): Call ASM_MAKE_LABEL_LINKONCE for decls with DECL_ONE_ONLY set, if that macro is defined. (make_decl_one_only): Don't use DECL_COMMON if we're compiling for a SUPPORTS_ONE_ONLY target. * config/darwin-protos.h (darwin_unique_section): Declare. (darwin_asm_named_section): Likewise. (darwin_section_type_flags): Likewise. (darwin_non_lazy_pcrel): Likewise. (darwin_emit_unwind_label): Likewise. (darwin_make_decl_one_only): Likewise. * config/darwin.c (machopic_finish): Get rid of tweak that eliminate stubs for symbols that are defined. (darwin_encode_section_info): Don't treat weak functions as defined. (darwin_make_decl_one_only): Define. (darwin_asm_named_section): Likewise. (darwin_section_type_flags): Likewise. (darwin_unique_section): Likewise. (darwin_emit_unwind_label): Likewise. (darwin_non_lazy_pcrel): Likewise. (darwin_asm_output_dwarf_delta): Difference between two labels is local only if both labels are local. * config/darwin.h (MAKE_DECL_ONE_ONLY): Define. (ASM_MAKE_LABEL_LINKONCE): Likewise. (TARGET_SUPPORTS_HIDDEN): Likewise. (TARGET_USES_WEAK_UNWIND_INFO): Likewise. (TARGET_EXPLICIT_INSTANTIATIONS_ONE_ONLY): Likewise. (FRAME_BEGIN_LABEL): Likewise. (ASM_DECLARE_OBJECT_NAME): Make references to weak symbols indirect. (ASM_DECLARE_FUNCTION_NAME): Likewise. (darwin_eh_frame_section): Give __eh_frame section the coalesced flag. (TARGET_ASM_UNIQUE_SECTION): Define. (EH_FRAME_SECTION_NAME): Define. (EH_FRAME_SECTION_ATTR): Likewise. (ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX): Likewise. (TARGET_ASM_NAMED_SECTION): Likewise. (TARGET_SECTION_TYPE_FLAGS): Likewise. * doc/tm.texi: Document TARGET_USES_WEAK_UNWIND_INFO, TARGET_EXPLICIT_INSTANTIATIONS_ONE_ONLY, TARGET_SUPPORTS_HIDDEN, TARGET_ASM_EMIT_UNWIND_LABEL. * cp/decl2.c (maybe_make_one_only): Look at TARGET_EXPLICIT_INSTANTIATION_ONE_ONLY when deciding whether to make an explicit instantiation weak. * cp/method.c (use_thunk): Make sure we call comdat_linkage when appropriate. * cp/pt.c (do_type_instantiation): On systems where weak symbols don't go in a static archive's TOC, explicit instantiation of a class must imply *explicit* instantiation of its memeber. From-SVN: r79394
2004-03-11ffi.c (ffi_prep_incoming_args_UNIX): Get floating point arguments from fp ↵Andreas Schwab1-8/+7
registers only for the first 8 parameter slots. * src/ia64/ffi.c (ffi_prep_incoming_args_UNIX): Get floating point arguments from fp registers only for the first 8 parameter slots. Don't convert a float parameter when passed in memory. From-SVN: r79323
2004-02-26ffi.c (ffi_prep_args_SYSV): Change ecif->cif->bytes to bytes.Matt Kraai1-7/+9
* src/powerpc/ffi.c (ffi_prep_args_SYSV): Change ecif->cif->bytes to bytes. (ffi_prep_cif_machdep): Add braces around nested if statement. From-SVN: r78477
2004-02-09* src/types.c (pointer): POWERPC64 has 8 byte pointers.Alan Modra1-1/+1
From-SVN: r77533
2004-02-09ffi.c (ffi_prep_args64): Correct long double handling.Alan Modra1-2/+19
* src/powerpc/ffi.c (ffi_prep_args64): Correct long double handling. (ffi_closure_helper_LINUX64): Fix typo. * testsuite/libffi.call/cls_align_longdouble.c: Pass -mlong-double-128 for powerpc64-*-*. * testsuite/libffi.call/float.c: Likewise. * testsuite/libffi.call/float2.c: Likewise. From-SVN: r77522
2004-02-08ffi.c (ffi_prep_cif_machdep <FFI_LINUX64>): Correct long double function ↵Alan Modra3-82/+97
return and long double arg handling. * src/powerpc/ffi.c (ffi_prep_cif_machdep <FFI_LINUX64>): Correct long double function return and long double arg handling. (ffi_closure_helper_LINUX64): Formatting. Delete unused "ng" var. Use "end_pfr" instead of "nf". Correct long double handling. Localise "temp". * src/powerpc/linux64.S (ffi_call_LINUX64): Save f2 long double return value. * src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Allocate space for long double return value. Adjust stack frame and offsets. Load f2 long double return. From-SVN: r77481
2004-02-07* src/types.c: Use 16 byte long double for POWERPC64.Alan Modra1-1/+1
From-SVN: r77441
2004-01-25ffi.c (ffi_prep_args_v9): Shift the parameter array when the structure ↵Eric Botcazou3-87/+188
return address is passed in %o0. * src/sparc/ffi.c (ffi_prep_args_v9): Shift the parameter array when the structure return address is passed in %o0. (ffi_V9_return_struct): Rename into ffi_v9_layout_struct. (ffi_v9_layout_struct): Align the field following a nested structure on a word boundary. Use memmove instead of memcpy. (ffi_call): Update call to ffi_V9_return_struct. (ffi_prep_closure): Define 'ctx' only for V8. (ffi_closure_sparc_inner): Clone into ffi_closure_sparc_inner_v8 and ffi_closure_sparc_inner_v9. (ffi_closure_sparc_inner_v8): Return long doubles by reference. Always skip the structure return address. For structures and long doubles, copy the argument directly. (ffi_closure_sparc_inner_v9): Skip the structure return address only if required. Shift the maximum floating-point slot accordingly. For big structures, copy the argument directly; otherwise, left-justify the argument and call ffi_v9_layout_struct to lay out the structure on the stack. * src/sparc/v8.S: Undef STACKFRAME before defining it. (ffi_closure_v8): Pass the structure return address. Update call to ffi_closure_sparc_inner_v8. Short-circuit FFI_TYPE_INT handling. Skip the 'unimp' insn when returning long doubles and structures. * src/sparc/v9.S: Undef STACKFRAME before defining it. (ffi_closure_v9): Increase the frame size by 2 words. Short-circuit FFI_TYPE_INT handling. Load structures both in integers and floating-point registers on return. * README: Update status of the SPARC port. From-SVN: r76543
2004-01-21ffi64.c (ffi_prep_args): Cast the RHS of an assignment instead of the LHS.Michael Ritzert1-1/+1
2004-01-21 Michael Ritzert <ritzert@t-online.de> * ffi64.c (ffi_prep_args): Cast the RHS of an assignment instead of the LHS. From-SVN: r76261
2003-12-02re PR libffi/13221 (libffi's closure couldn't pass sequence of char and/or ↵Hosaka Yuji1-4/+4
short arguments.) 2003-12-02 Hosaka Yuji <hos@tamanegi.org> PR other/13221 * src/x86/ffi.c (ffi_prep_args, ffi_prep_incoming_args_SYSV): Align arguments to 32 bits. From-SVN: r74161