summaryrefslogtreecommitdiff
path: root/libffi
Commit message (Collapse)AuthorAgeFilesLines
* ffi.c (ffi_prep_incoming_args_SYSV, [...]): New, add closure support.Roman Zippel2007-05-104-1/+184
| | | | | | | | | | * src/m68k/ffi.c (ffi_prep_incoming_args_SYSV, ffi_closure_SYSV_inner,ffi_prep_closure): New, add closure support. * src/m68k/sysv.S(ffi_closure_SYSV,ffi_closure_struct_SYSV): Likewise. * src/m68k/ffitarget.h (FFI_TRAMPOLINE_SIZE): Likewise. (FFI_CLOSURES): Enable closure support. From-SVN: r124601
* configure.ac (HAVE_AS_CFI_PSEUDO_OP): New test.Roman Zippel2007-05-105-0/+105
| | | | | | | | | | | * configure.ac (HAVE_AS_CFI_PSEUDO_OP): New test. * configure: Regenerate. * fficonfig.h.in: Regenerate. * src/m68k/sysv.S (CFI_STARTPROC,CFI_ENDPROC, CFI_OFFSET,CFI_DEF_CFA): New macros. (ffi_call_SYSV): Add callframe annotation. From-SVN: r124600
* ffi.c (ffi_prep_args,ffi_prep_cif_machdep): Fix numerous test suite failures.Roman Zippel2007-05-103-69/+98
| | | | | | | | * src/m68k/ffi.c (ffi_prep_args,ffi_prep_cif_machdep): Fix numerous test suite failures. * src/m68k/sysv.S (ffi_call_SYSV): Likewise. From-SVN: r124599
* Makefile.am (EXTRA_DIST): Bring up to date.Paolo Bonzini2007-04-134-9/+17
| | | | | | | | | | 2007-04-11 Paolo Bonzini <bonzini@gnu.org> * Makefile.am (EXTRA_DIST): Bring up to date. * Makefile.in: Regenerate. * src/frv/eabi.S: Remove RCS keyword. From-SVN: r123776
* configure.ac: Tidy target case.Richard Henderson2007-04-069-135/+328
| | | | | | | | | | | | | | | | | | | | | | | | | | | * configure.ac: Tidy target case. (HAVE_LONG_DOUBLE): Allow the target to override. * configure: Regenerate. * include/ffi.h.in: Don't define ffi_type_foo if LIBFFI_HIDE_BASIC_TYPES is defined. (ffi_type_longdouble): If not HAVE_LONG_DOUBLE, define to ffi_type_double. * types.c (LIBFFI_HIDE_BASIC_TYPES): Define. (FFI_TYPEDEF, ffi_type_void): Mark the data const. (ffi_type_longdouble): Special case for Alpha. Don't define if long double == double. * src/alpha/ffi.c (FFI_TYPE_LONGDOUBLE): Assert unique value. (ffi_prep_cif_machdep): Handle it as the 128-bit type. (ffi_call, ffi_closure_osf_inner): Likewise. (ffi_closure_osf_inner): Likewise. Mark hidden. (ffi_call_osf, ffi_closure_osf): Mark hidden. * src/alpha/ffitarget.h (FFI_LAST_ABI): Tidy definition. * src/alpha/osf.S (ffi_call_osf, ffi_closure_osf): Mark hidden. (load_table): Handle 128-bit long double. * testsuite/libffi.call/float4.c: Add -mieee for alpha. From-SVN: r123622
* re PR libffi/31491 (libffi: bug in example program)Tom Tromey2007-04-062-1/+6
| | | | | | | PR libffi/31491: * README: Fixed bug in example. From-SVN: r123617
* closures.c: Include sys/statfs.h.Jakub Jelinek2007-04-032-1/+73
| | | | | | | | | | | | | | | * src/closures.c: Include sys/statfs.h. (_GNU_SOURCE): Define on Linux. (FFI_MMAP_EXEC_SELINUX): Define. (selinux_enabled): New variable. (selinux_enabled_check): New function. (is_selinux_enabled): Define. (dlmmap): Use it. * configure.ac (NO_EXECUTE_PERMISSION): Set by default. * configure: Rebuilt. From-SVN: r123457
* return_fl2.c (return_fl): Mark as static.Uros Bizjak2007-03-242-6/+17
| | | | | | | | | * testsuite/libffi.call/return_fl2.c (return_fl): Mark as static. Use 'volatile float sum' to create sum of floats to avoid false negative due to excess precision on ix86 targets. (main): Ditto. From-SVN: r123180
* ffi.c (flush_icache): Fix left-over from previous patch.Alexandre Oliva2007-03-082-8/+11
| | | | | | | | * src/powerpc/ffi.c (flush_icache): Fix left-over from previous patch. (ffi_prep_closure_loc): Remove unneeded casts. Add needed ones. From-SVN: r122692
* ffi.h.in (ffi_closure_alloc, [...]): New.Alexandre Oliva2007-03-0723-144/+832
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | libffi/ChangeLog: * include/ffi.h.in (ffi_closure_alloc, ffi_closure_free): New. (ffi_prep_closure_loc): New. (ffi_prep_raw_closure_loc): New. (ffi_prep_java_raw_closure_loc): New. * src/closures.c: New file. * src/dlmalloc.c [FFI_MMAP_EXEC_WRIT] (struct malloc_segment): Replace sflags with exec_offset. [FFI_MMAP_EXEC_WRIT] (mmap_exec_offset, add_segment_exec_offset, sub_segment_exec_offset): New macros. (get_segment_flags, set_segment_flags, check_segment_merge): New macros. (is_mmapped_segment, is_extern_segment): Use get_segment_flags. (add_segment, sys_alloc, create_mspace, create_mspace_with_base, destroy_mspace): Use new macros. (sys_alloc): Silence warning. * Makefile.am (libffi_la_SOURCES): Add src/closures.c. * Makefile.in: Rebuilt. * src/prep_cif [FFI_CLOSURES] (ffi_prep_closure): Implement in terms of ffi_prep_closure_loc. * src/raw_api.c (ffi_prep_raw_closure_loc): Renamed and adjusted from... (ffi_prep_raw_closure): ... this. Re-implement in terms of the renamed version. * src/java_raw_api (ffi_prep_java_raw_closure_loc): Renamed and adjusted from... (ffi_prep_java_raw_closure): ... this. Re-implement in terms of the renamed version. * src/alpha/ffi.c (ffi_prep_closure_loc): Renamed from (ffi_prep_closure): ... this. * src/pa/ffi.c: Likewise. * src/cris/ffi.c: Likewise. Adjust. * src/frv/ffi.c: Likewise. * src/ia64/ffi.c: Likewise. * src/mips/ffi.c: Likewise. * src/powerpc/ffi_darwin.c: Likewise. * src/s390/ffi.c: Likewise. * src/sh/ffi.c: Likewise. * src/sh64/ffi.c: Likewise. * src/sparc/ffi.c: Likewise. * src/x86/ffi64.c: Likewise. * src/x86/ffi.c: Likewise. (FFI_INIT_TRAMPOLINE): Adjust. (ffi_prep_raw_closure_loc): Renamed and adjusted from... (ffi_prep_raw_closure): ... this. * src/powerpc/ffi.c (ffi_prep_closure_loc): Renamed from (ffi_prep_closure): ... this. (flush_icache): Adjust. boehm-gc/ChangeLog: * include/gc.h (GC_REGISTER_FINALIZER_UNREACHABLE): New. (GC_register_finalizer_unreachable): Declare. (GC_debug_register_finalizer_unreachable): Declare. * finalize.c (GC_unreachable_finalize_mark_proc): New. (GC_register_finalizer_unreachable): New. (GC_finalize): Handle it. * dbg_mlc.c (GC_debug_register_finalizer_unreachable): New. (GC_debug_register_finalizer_no_order): Fix whitespace. libjava/ChangeLog: * include/jvm.h (_Jv_ClosureListFinalizer): New. (_Jv_Linker::create_error_method): Adjust. * boehm.cc (_Jv_ClosureListFinalizer): New. * nogc.cc (_Jv_ClosureListFinalizer): New. * java/lang/Class.h (class _Jv_ClosureList): New. (class java::lang::Class): Declare it as friend. * java/lang/natClass.cc (_Jv_ClosureList::releaseClosures): New. (_Jv_ClosureList::registerClousure): New. * include/execution.h (_Jv_ExecutionEngine): Add get_closure_list. (_Jv_CompiledEngine::do_get_closure_list): New. (_Jv_CompiledEngine::_Jv_CompiledEngine): Use it. (_Jv_IndirectCompiledClass): Add closures. (_Jv_IndirectCompiledEngine::get_aux_info): New. (_Jv_IndirectCompiledEngine::do_allocate_field_initializers): Use it. (_Jv_IndirectCompiledEngine::do_get_closure_list): New. (_Jv_IndirectCompiledEngine::_Jv_IndirectCompiledEngine): Use it. (_Jv_InterpreterEngine::do_get_closure_list): Declare. (_Jv_InterpreterEngine::_Jv_InterpreterEngine): Use it. * interpret.cc (FFI_PREP_RAW_CLOSURE): Use _loc variants. (node_closure): Add closure list. (_Jv_InterpMethod::ncode): Add jclass argument. Use ffi_closure_alloc and the separate code pointer. Register the closure for finalization. (_Jv_JNIMethod::ncode): Likewise. (_Jv_InterpreterEngine::do_create_ncode): Pass klass to ncode. (_Jv_InterpreterEngine::do_get_closure_list): New. * include/java-interp.h (_Jv_InterpMethod::ncode): Adjust. (_Jv_InterpClass): Add closures field. (_Jv_JNIMethod::ncode): Adjust. * defineclass.cc (_Jv_ClassReader::handleCodeAttribute): Adjust. (_Jv_ClassReader::handleMethodsEnd): Likewise. * link.cc (struct method_closure): Add closure list. (_Jv_Linker::create_error_method): Add jclass argument. Use ffi_closure_alloc and the separate code pointer. Register the closure for finalization. (_Jv_Linker::link_symbol_table): Remove outdated comment about sharing of otable and atable. Adjust. * java/lang/reflect/natVMProxy.cc (ncode_closure): Add closure list. (ncode): Add jclass argument. Use ffi_closure_alloc and the separate code pointer. Register the closure for finalization. (java::lang::reflect::VMProxy::generateProxyClass): Adjust. * testsuite/libjava.jar/TestClosureGC.java: New. * testsuite/libjava.jar/TestClosureGC.out: New. * testsuite/libjava.jar/TestClosureGC.xfail: New. * testsuite/libjava.jar/TestClosureGC.jar: New. From-SVN: r122652
* dlmalloc.c: New file, imported version 2.8.3 of Doug Lea's malloc.Alexandre Oliva2007-03-072-0/+5066
| | | | | | | * src/dlmalloc.c: New file, imported version 2.8.3 of Doug Lea's malloc. From-SVN: r122651
* Makefile.am: Add dummy install-pdf target.Brooks Moses2007-03-013-4/+11
| | | | | | | * Makefile.am: Add dummy install-pdf target. * Makefile.in: Regenerate From-SVN: r122440
* ffi.c (ffi_prep_args, [...]): Add long double handling.Andreas Krebbel2007-02-132-0/+32
| | | | | | | | | 2007-02-13 Andreas Krebbel <krebbel1@de.ibm.com> * src/s390/ffi.c (ffi_prep_args, ffi_prep_cif_machdep, ffi_closure_helper_SYSV): Add long double handling. From-SVN: r121879
* linux64.S (ffi_call_LINUX64): Move restore of r2 immediately after bctrl ↵Jakub Jelinek2007-02-022-2/+10
| | | | | | | | | instruction. * src/powerpc/linux64.S (ffi_call_LINUX64): Move restore of r2 immediately after bctrl instruction. From-SVN: r121498
* Makefile.am (all-recursive, [...]): Add missing targets.Alexandre Oliva2007-01-183-0/+22
| | | | | | | | | * Makefile.am (all-recursive, install-recursive, mostlyclean-recursive, clean-recursive, distclean-recursive, maintainer-clean-recursive): Add missing targets. * Makefile.in: Rebuilt. From-SVN: r120892
* aclocal.m4: Regenerate to use multi.m4.Jack Howarth2007-01-176-86/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2007-01-17 Jack Howarth <howarth@bromo.med.uc.edu> boehm-gc/ * aclocal.m4: Regenerate to use multi.m4. * configure: Regenerate. * Makefile.in: Regenerate. zlib/ * Makefile.am: Add ACLOCAL_AMFLAGS to use multi.m4. * aclocal.m4: Regenerate. * configure: Regenerate. * Makefile.in: Regenerate. libffi/ * Makefile.am: Add ACLOCAL_AMFLAGS to use multi.m4. * aclocal.m4: Regenerate. * configure: Regenerate. * Makefile.in: Regenerate. libjava/ * configure.ac: Use multi.m4 from aclocal rather than custom code. Use multi_basedir instead libgcj_basedir. Test for /proc/self/exe when not cross-compiling. * aclocal.m4: Regenerate. * configure: Regenerate. * Makefile.in: Regenerate. libjava/classpath/ * configure.ac: Use multi.m4 from aclocal rather than custom code. Use multi_basedir instead libgcj_basedir. * aclocal.m4: Regenerate. * configure: Regenerate. * Makefile.in: Regenerate. libjava/libltdl/ * Makefile.am: Add ACLOCAL_AMFLAGS to use multi.m4. * configure.ac: Use multi.m4 from aclocal rather than custom code. * aclocal.m4: Regenerate. * configure: Regenerate. * Makefile.in: Regenerate. From-SVN: r120870
* configure.ac: Add TARGET for x86_64-*-darwin*.Andreas Tobler2006-12-1410-77/+509
| | | | | | | | | | | | | | | | | | 2006-12-14 Andreas Tobler <a.tobler@schweiz.org> * configure.ac: Add TARGET for x86_64-*-darwin*. * Makefile.am (nodist_libffi_la_SOURCES): Add rules for 64-bit sources for X86_DARWIN. * src/x86/ffitarget.h: Set trampoline size for x86_64-*-darwin*. * src/x86/darwin64.S: New file for x86_64-*-darwin* support. * configure: Regenerate. * Makefile.in: Regenerate. * include/Makefile.in: Regenerate. * testsuite/Makefile.in: Regenerate. * testsuite/libffi.special/unwindtest_ffi_call.cc: New test case for ffi_call only. From-SVN: r119856
* aclocal.m4: Regenerate with aclocal -I ..Andreas Tobler2006-12-132-6377/+6
| | | | | | | | | 2006-12-13 Andreas Tobler <a.tobler@schweiz.org> * aclocal.m4: Regenerate with aclocal -I .. as written in the Makefile.am. From-SVN: r119845
* Fix date on ChangeLog entryGeoffrey Keating2006-11-011-1/+1
| | | | From-SVN: r118367
* In gcc/: PR 23067Geoffrey Keating2006-11-014-7/+66
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In gcc/: PR 23067 * c-decl.c (start_struct): Don't create self-containing structures. * config/rs6000/rs6000.c (darwin_rs6000_special_round_type_align): New. * config/rs6000/rs6000-protos.h (darwin_rs6000_special_round_type_align): New. * config/rs6000/darwin.h (ADJUST_FIELD_ALIGN): Rewrite. (ROUND_TYPE_ALIGN): Use darwin_rs6000_special_round_type_align. In gcc/testsuite/: PR 23067 * gcc.target/powerpc/darwin-abi-3.c: Remove XFAIL. * gcc.target/powerpc/darwin-abi-6.c: Remove XFAIL. * gcc.target/powerpc/darwin-abi-7.c: Remove XFAIL. * gcc.target/powerpc/darwin-abi-8.c: Remove XFAIL. * gcc.target/powerpc/darwin-abi-9.c: Remove XFAIL. * gcc.target/powerpc/darwin-abi-10.c: Remove XFAIL. * gcc.target/powerpc/darwin-abi-11.c: Remove XFAIL. In libobjc/: * encoding.c (darwin_rs6000_special_round_type_align): New. In libffi/: * src/powerpc/ffi_darwin.c (darwin_adjust_aggregate_sizes): New. (ffi_prep_cif_machdep): Call darwin_adjust_aggregate_sizes for Darwin. * testsuite/libffi.call/nested_struct4.c: Remove Darwin XFAIL. * testsuite/libffi.call/nested_struct6.c: Remove Darwin XFAIL. From-SVN: r118365
* configure.ac [...]: Set X86_DARWIN symbol and conditional.Paolo Bonzini2006-10-1010-58/+537
| | | | | | | | | | | | | | | | | | | | | | | | 2006-10-10 Paolo Bonzini <bonzini@gnu.org> Sandro Tolaini <tolaini@libero.it> * configure.ac [i*86-*-darwin*]: Set X86_DARWIN symbol and conditional. * configure: Regenerated. * Makefile.am (nodist_libffi_la_SOURCES) [X86_DARWIN]: New case. (EXTRA_DIST): Add src/x86/darwin.S. * Makefile.in: Regenerated. * include/Makefile.in: Regenerated. * testsuite/Makefile.in: Regenerated. * src/x86/ffi.c (ffi_prep_cif_machdep) [X86_DARWIN]: Treat like X86_WIN32, and additionally align stack to 16 bytes. * src/x86/darwin.S: New, based on sysv.S. * src/prep_cif.c (ffi_prep_cif) [X86_DARWIN]: Align > 8-byte structs. Co-Authored-By: Sandro Tolaini <tolaini@libero.it> From-SVN: r117602
* re PR libffi/23935 ($PREFIX/include/ffi.h needs to go to a target- and ↵David Daney2006-09-126-56/+6455
| | | | | | | | | | | | | | -version-dependent location) PR libffi/23935 * include/Makefile.am: Install both ffi.h and ffitarget.h in $(libdir)/gcc/$(target_alias)/$(gcc_version)/include. * aclocal.m4: Regenerated for automake 1.9.6. * Makefile.in: Regenerated. * include/Makefile.in: Regenerated. * testsuite/Makefile.in: Regenerated. From-SVN: r116893
* ffi_common.h (struct): Revert accidental commit.Andreas Tobler2006-08-172-1/+5
| | | | | | | | 2006-08-17 Andreas Tobler <a.tobler@schweiz.ch> * include/ffi_common.h (struct): Revert accidental commit. From-SVN: r116230
* ffi_common.h: Remove lint directives.Andreas Tobler2006-08-153-28/+33
| | | | | | | | | 2006-08-15 Andreas Tobler <a.tobler@schweiz.ch> * include/ffi_common.h: Remove lint directives. * include/ffi.h.in: Likewise. From-SVN: r116152
* ffi.h.in (ffi_type_ulong, [...]): Define correctly for 32-bit architectures.Torsten Schoenfeld2006-07-253-3/+55
| | | | | | | | | | 2006-07-25 Torsten Schoenfeld <kaffeetisch@gmx.de> * include/ffi.h.in (ffi_type_ulong, ffi_type_slong): Define correctly for 32-bit architectures. * testsuite/libffi.call/return_ul.c: New test case. From-SVN: r115739
* closure_fn6.c: Remove xfail for mips, xfail remains for mips64.David Daney2006-07-192-1/+6
| | | | | | | * testsuite/libffi.call/closure_fn6.c: Remove xfail for mips, xfail remains for mips64. From-SVN: r115598
* Makefile.am: Add install-html target.Carlos O'Donell2006-05-246-360/+174
| | | | | | | | | | | | 2006-05-23 Carlos O'Donell <carlos@codesourcery.com> * Makefile.am: Add install-html target. Add install-html to .PHONY * Makefile.in: Regenerate. * aclocal.m4: Regenerate. * include/Makefile.in: Regenerate. * testsuite/Makefile.in: Regenerate. From-SVN: r114037
* ffi.c (ffi_prep_args_pa32): Load floating point arguments from stack slot.John David Anglin2006-05-192-6/+11
| | | | | | | * pa/ffi.c (ffi_prep_args_pa32): Load floating point arguments from stack slot. From-SVN: r113901
* README: Remove notice about 'Crazy Comments'.Andreas Tobler2006-04-2218-1591/+110
| | | | | | | | | | | | | | | | | | | | | | | | | 2006-04-22 Andreas Tobler <a.tobler@schweiz.ch> * README: Remove notice about 'Crazy Comments'. * src/debug.c: Remove lint directives. Cleanup white spaces. * src/java_raw_api.c: Likewise. * src/prep_cif.c: Likewise. * src/raw_api.c: Likewise. * src/ffitest.c: Delete. No longer needed, all test cases migrated to the testsuite. * src/arm/ffi.c: Remove lint directives. * src/m32r/ffi.c: Likewise. * src/pa/ffi.c: Likewise. * src/powerpc/ffi.c: Likewise. * src/powerpc/ffi_darwin.c: Likewise. * src/sh/ffi.c: Likewise. * src/sh64/ffi.c: Likewise. * src/x86/ffi.c: Likewise. * testsuite/libffi.call/float2.c: Likewise. * testsuite/libffi.call/promotion.c: Likewise. * testsuite/libffi.call/struct1.c: Likewise. From-SVN: r113181
* hpux32.S: Correct unwind offset calculation for ffi_closure_pa32.Andreas Tobler2006-04-133-3/+9
| | | | | | | | | | 2006-04-13 Andreas Tobler <a.tobler@schweiz.ch> * src/pa/hpux32.S: Correct unwind offset calculation for ffi_closure_pa32. * src/pa/linux.S: Likewise. From-SVN: r112904
* Fix IA-64 problems with denorms getting clobbered by type conversions.James E Wilson2006-04-122-35/+60
| | | | | | | | | | | PR libgcj/26483 * src/ia64/ffi.c (stf_spill, ldf_fill): Rewrite as macros. (hfa_type_load): Call stf_spill. (hfa_type_store): Call ldf_fill. (ffi_call): Adjust calls to above routines. Add local temps for macro result. From-SVN: r112900
* libjava.exp (libjava_init): Recognize multilib directory names containing ↵Matthias Klose2006-04-102-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | underscores. gcc/testsuite: 2006-04-10 Matthias Klose <doko@debian.org> * testsuite/lib/libjava.exp (libjava_init): Recognize multilib directory names containing underscores. libffi: 2006-04-10 Matthias Klose <doko@debian.org> * testsuite/lib/libjava.exp (libjava_init): Recognize multilib directory names containing underscores. libgomp: 2006-04-10 Matthias Klose <doko@debian.org> * testsuite/lib/libjava.exp (libjava_init): Recognize multilib directory names containing underscores. libjava: 2006-04-10 Matthias Klose <doko@debian.org> * testsuite/lib/libjava.exp (libjava_init): Recognize multilib directory names containing underscores. libmudflap: 2006-04-10 Matthias Klose <doko@debian.org> * testsuite/lib/libjava.exp (libjava_init): Recognize multilib directory names containing underscores. libstdc++: 2006-04-10 Matthias Klose <doko@debian.org> * testsuite/lib/libjava.exp (libjava_init): Recognize multilib directory names containing underscores. From-SVN: r112833
* For PR 26483, IA-64 denorm failure due to unwanted rounding.James E Wilson2006-04-072-0/+64
| | | | | | * testsuite/libffi.call/float4.c: New testcase. From-SVN: r112768
* Makefile.am: Add PA_HPUX port.John David Anglin2006-04-0511-268/+915
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2006-04-05 John David Anglin <dave.anglin@nrc-cnrc.gc.ca> Andreas Tobler <a.tobler@schweiz.ch> * Makefile.am: Add PA_HPUX port. * Makefile.in: Regenerate. * include/Makefile.in: Likewise. * testsuite/Makefile.in: Likewise. * configure.ac: Add PA_HPUX rules. * configure: Regenerate. * src/pa/ffitarget.h: Rename linux target to PA_LINUX. Add PA_HPUX and PA64_HPUX. Rename FFI_LINUX ABI to FFI_PA32 ABI. (FFI_TRAMPOLINE_SIZE): Define for 32-bit HP-UX targets. (FFI_TYPE_SMALL_STRUCT2): Define. (FFI_TYPE_SMALL_STRUCT4): Likewise. (FFI_TYPE_SMALL_STRUCT8): Likewise. (FFI_TYPE_SMALL_STRUCT3): Redefine. (FFI_TYPE_SMALL_STRUCT5): Likewise. (FFI_TYPE_SMALL_STRUCT6): Likewise. (FFI_TYPE_SMALL_STRUCT7): Likewise. * src/pa/ffi.c (ROUND_DOWN): Delete. (fldw, fstw, fldd, fstd): Use '__asm__'. (ffi_struct_type): Add support for FFI_TYPE_SMALL_STRUCT2, FFI_TYPE_SMALL_STRUCT4 and FFI_TYPE_SMALL_STRUCT8. (ffi_prep_args_LINUX): Rename to ffi_prep_args_pa32. Update comment. Simplify incrementing of stack slot variable. Change type of local 'n' to unsigned int. (ffi_size_stack_LINUX): Rename to ffi_size_stack_pa32. Handle long double on PA_HPUX. (ffi_prep_cif_machdep): Likewise. (ffi_call): Likewise. (ffi_closure_inner_LINUX): Rename to ffi_closure_inner_pa32. Change return type to ffi_status. Simplify incrementing of stack slot variable. Only copy floating point argument registers when PA_LINUX is true. Reformat debug statement. Add support for FFI_TYPE_SMALL_STRUCT2, FFI_TYPE_SMALL_STRUCT4 and FFI_TYPE_SMALL_STRUCT8. (ffi_closure_LINUX): Rename to ffi_closure_pa32. Add 'extern' to declaration. (ffi_prep_closure): Make linux trampoline conditional on PA_LINUX. Add nops to cache flush. Add trampoline for PA_HPUX. * src/pa/hpux32.S: New file. * src/pa/linux.S (ffi_call_LINUX): Rename to ffi_call_pa32. Rename ffi_prep_args_LINUX to ffi_prep_args_pa32. Localize labels. Add support for 2, 4 and 8-byte small structs. Handle unaligned destinations in 3, 5, 6 and 7-byte small structs. Order argument type checks so that common argument types appear first. (ffi_closure_LINUX): Rename to ffi_closure_pa32. Rename ffi_closure_inner_LINUX to ffi_closure_inner_pa32. Co-Authored-By: Andreas Tobler <a.tobler@schweiz.ch> From-SVN: r112719
* ffitarget.h (enum ffi_abi): Add FFI_LINUX.Alan Modra2006-03-246-163/+219
| | | | | | | | | | | | | | | | | | | | | | | | | * src/powerpc/ffitarget.h (enum ffi_abi): Add FFI_LINUX. Default for 32-bit using IBM extended double format. Fix FFI_LAST_ABI. * src/powerpc/ffi.c (ffi_prep_args_SYSV): Handle linux variant of FFI_TYPE_LONGDOUBLE. (ffi_prep_args64): Assert using IBM extended double. (ffi_prep_cif_machdep): Don't munge FFI_TYPE_LONGDOUBLE type. Handle FFI_LINUX FFI_TYPE_LONGDOUBLE return and args. (ffi_call): Handle FFI_LINUX. (ffi_closure_helper_SYSV): Non FFI_LINUX long double return needs gpr3 return pointer as for struct return. Handle FFI_LINUX FFI_TYPE_LONGDOUBLE return and args. Don't increment "nf" unnecessarily. * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Load both f1 and f2 for FFI_TYPE_LONGDOUBLE. Move epilogue insns into case table. Don't use r6 as pointer to results, instead use sp offset. Don't make a special call to load lr with case table address, instead use offset from previous call. * src/powerpc/sysv.S (ffi_call_SYSV): Save long double return. * src/powerpc/linux64.S (ffi_call_LINUX64): Simplify long double return. From-SVN: r112340
* ffi.c (ffi_prep_cif_machdep): Handle float arguments passed with FP ↵Kaz Kojima2006-03-153-12/+46
| | | | | | | | | | | registers correctly. * src/sh64/ffi.c (ffi_prep_cif_machdep): Handle float arguments passed with FP registers correctly. (ffi_closure_helper_SYSV): Likewise. * src/sh64/sysv.S: Likewise. From-SVN: r112083
* unwindtest.cc (closure_test_fn): Mark cif, args and userdata unused.Andreas Tobler2006-03-015-11/+30
| | | | | | | | | | | 2006-03-01 Andreas Tobler <a.tobler@schweiz.ch> * testsuite/libffi.special/unwindtest.cc (closure_test_fn): Mark cif, args and userdata unused. (closure_test_fn1): Mark cif and userdata unused. (main): Remove unused res. From-SVN: r111583
* call.exp: Adjust FSF address.Andreas Tobler2006-03-0175-146/+335
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2006-02-28 Andreas Tobler <a.tobler@schweiz.ch> * testsuite/libffi.call/call.exp: Adjust FSF address. Add test runs for -O2, -O3, -Os and the warning flags -W -Wall. * testsuite/libffi.special/special.exp: Likewise. * testsuite/libffi.call/ffitest.h: Add an __UNUSED__ macro to mark unused parameter unused for gcc or else do nothing. * testsuite/libffi.special/ffitestcxx.h: Likewise. * testsuite/libffi.call/cls_12byte.c (cls_struct_12byte_gn): Mark cif and userdata unused. * testsuite/libffi.call/cls_16byte.c (cls_struct_16byte_gn): Likewise. * testsuite/libffi.call/cls_18byte.c (cls_struct_18byte_gn): Likewise. * testsuite/libffi.call/cls_19byte.c (cls_struct_19byte_gn): Likewise. * testsuite/libffi.call/cls_1_1byte.c (cls_struct_1_1byte_gn): Likewise. * testsuite/libffi.call/cls_20byte.c (cls_struct_20byte_gn): Likewise. * testsuite/libffi.call/cls_20byte1.c (cls_struct_20byte_gn): Likewise. * testsuite/libffi.call/cls_24byte.c (cls_struct_24byte_gn): Likewise. * testsuite/libffi.call/cls_2byte.c (cls_struct_2byte_gn): Likewise. * testsuite/libffi.call/cls_3_1byte.c (cls_struct_3_1byte_gn): Likewise. * testsuite/libffi.call/cls_3byte1.c (cls_struct_3byte_gn): Likewise. * testsuite/libffi.call/cls_3byte2.c (cls_struct_3byte_gn1): Likewise. * testsuite/libffi.call/cls_4_1byte.c (cls_struct_4_1byte_gn): Likewise. * testsuite/libffi.call/cls_4byte.c (cls_struct_4byte_gn): Likewise. * testsuite/libffi.call/cls_5_1_byte.c (cls_struct_5byte_gn): Likewise. * testsuite/libffi.call/cls_5byte.c (cls_struct_5byte_gn): Likewise. * testsuite/libffi.call/cls_64byte.c (cls_struct_64byte_gn): Likewise. * testsuite/libffi.call/cls_6_1_byte.c (cls_struct_6byte_gn): Likewise. * testsuite/libffi.call/cls_6byte.c (cls_struct_6byte_gn): Likewise. * testsuite/libffi.call/cls_7_1_byte.c (cls_struct_7byte_gn): Likewise. * testsuite/libffi.call/cls_7byte.c (cls_struct_7byte_gn): Likewise. * testsuite/libffi.call/cls_8byte.c (cls_struct_8byte_gn): Likewise. * testsuite/libffi.call/cls_9byte1.c (cls_struct_9byte_gn): Likewise. * testsuite/libffi.call/cls_9byte2.c (cls_struct_9byte_gn): Likewise. * testsuite/libffi.call/cls_align_double.c (cls_struct_align_gn): Likewise. * testsuite/libffi.call/cls_align_float.c (cls_struct_align_gn): Likewise. * testsuite/libffi.call/cls_align_longdouble.c (cls_struct_align_gn): Likewise. * testsuite/libffi.call/cls_align_pointer.c (cls_struct_align_fn): Cast void* to avoid compiler warning. (main): Likewise. (cls_struct_align_gn): Mark cif and userdata unused. * testsuite/libffi.call/cls_align_sint16.c (cls_struct_align_gn): Likewise. * testsuite/libffi.call/cls_align_sint32.c (cls_struct_align_gn): Likewise. * testsuite/libffi.call/cls_align_sint64.c (cls_struct_align_gn): Likewise. * testsuite/libffi.call/cls_align_uint16.c (cls_struct_align_gn): Likewise. * testsuite/libffi.call/cls_align_uint32.c (cls_struct_align_gn): Likewise. * testsuite/libffi.call/cls_double.c (cls_ret_double_fn): Likewise. * testsuite/libffi.call/cls_float.c (cls_ret_float_fn): Likewise. * testsuite/libffi.call/cls_multi_schar.c (test_func_gn): Mark cif and data unused. (main): Cast res_call to silence gcc. * testsuite/libffi.call/cls_multi_sshort.c (test_func_gn): Mark cif and data unused. (main): Cast res_call to silence gcc. * testsuite/libffi.call/cls_multi_sshortchar.c (test_func_gn): Mark cif and data unused. (main): Cast res_call to silence gcc. * testsuite/libffi.call/cls_multi_uchar.c (test_func_gn): Mark cif and data unused. (main): Cast res_call to silence gcc. * testsuite/libffi.call/cls_multi_ushort.c (test_func_gn): Mark cif and data unused. (main): Cast res_call to silence gcc. * testsuite/libffi.call/cls_multi_ushortchar.c (test_func_gn): Mark cif and data unused. (main): Cast res_call to silence gcc. * testsuite/libffi.call/cls_schar.c (cls_ret_schar_fn): Mark cif and userdata unused. (cls_ret_schar_fn): Cast printf parameter to silence gcc. * testsuite/libffi.call/cls_sint.c (cls_ret_sint_fn): Mark cif and userdata unused. (cls_ret_sint_fn): Cast printf parameter to silence gcc. * testsuite/libffi.call/cls_sshort.c (cls_ret_sshort_fn): Mark cif and userdata unused. (cls_ret_sshort_fn): Cast printf parameter to silence gcc. * testsuite/libffi.call/cls_uchar.c (cls_ret_uchar_fn): Mark cif and userdata unused. (cls_ret_uchar_fn): Cast printf parameter to silence gcc. * testsuite/libffi.call/cls_uint.c (cls_ret_uint_fn): Mark cif and userdata unused. (cls_ret_uint_fn): Cast printf parameter to silence gcc. * testsuite/libffi.call/cls_ulonglong.c (cls_ret_ulonglong_fn): Mark cif and userdata unused. * testsuite/libffi.call/cls_ushort.c (cls_ret_ushort_fn): Mark cif and userdata unused. (cls_ret_ushort_fn): Cast printf parameter to silence gcc. * testsuite/libffi.call/float.c (floating): Remove unused parameter e. * testsuite/libffi.call/float1.c (main): Remove unused variable i. Cleanup white spaces. * testsuite/libffi.call/negint.c (checking): Remove unused variable i. * testsuite/libffi.call/nested_struct.c (cls_struct_combined_gn): Mark cif and userdata unused. * testsuite/libffi.call/nested_struct1.c (cls_struct_combined_gn): Likewise. * testsuite/libffi.call/nested_struct10.c (B_gn): Likewise. * testsuite/libffi.call/nested_struct2.c (B_fn): Adjust printf formatters to silence gcc. (B_gn): Mark cif and userdata unused. * testsuite/libffi.call/nested_struct3.c (B_gn): Mark cif and userdata unused. * testsuite/libffi.call/nested_struct4.c: Mention related PR. (B_gn): Mark cif and userdata unused. * testsuite/libffi.call/nested_struct5.c (B_gn): Mark cif and userdata unused. * testsuite/libffi.call/nested_struct6.c: Mention related PR. (B_gn): Mark cif and userdata unused. * testsuite/libffi.call/nested_struct7.c (B_gn): Mark cif and userdata unused. * testsuite/libffi.call/nested_struct8.c (B_gn): Likewise. * testsuite/libffi.call/nested_struct9.c (B_gn): Likewise. * testsuite/libffi.call/problem1.c (stub): Likewise. * testsuite/libffi.call/pyobjc-tc.c (main): Cast the result to silence gcc. * testsuite/libffi.call/return_fl2.c (return_fl): Add the note mentioned in the last commit for this test case in the test case itself. * testsuite/libffi.call/closure_fn0.c (closure_test_fn0): Mark cif as unused. * testsuite/libffi.call/closure_fn1.c (closure_test_fn1): Likewise. * testsuite/libffi.call/closure_fn2.c (closure_test_fn2): Likewise. * testsuite/libffi.call/closure_fn3.c (closure_test_fn3): Likewise. * testsuite/libffi.call/closure_fn4.c (closure_test_fn0): Likewise. * testsuite/libffi.call/closure_fn5.c (closure_test_fn5): Likewise. * testsuite/libffi.call/closure_fn6.c (closure_test_fn0): Likewise. From-SVN: r111582
* sysv.S: Fix register numbers in the FDE for ffi_closure_SYSV.Kaz Kojima2006-02-222-5/+10
| | | | | | | * src/sh/sysv.S: Fix register numbers in the FDE for ffi_closure_SYSV. From-SVN: r111362
* libffi: testsuite fix for ix86.Andreas Tobler2006-02-202-1/+6
| | | | | | | | | 2006-02-20 Andreas Tobler <a.tobler@schweiz.ch> * testsuite/libffi.call/return_fl2.c (return_fl): Remove static declaration to avoid a false negative on ix86. See PR323. From-SVN: r111314
* ffi.c (ffi_closure_helper_SYSV): Remove unused variable and cast integer to ↵Kaz Kojima2006-02-182-3/+10
| | | | | | | | | | void * if needed. * src/sh/ffi.c (ffi_closure_helper_SYSV): Remove unused variable and cast integer to void * if needed. Update the pointer to the FP register saved area correctly. From-SVN: r111225
* re PR target/25630 (darwin-ppc, wrong alignment of nested structs)Andreas Tobler2006-02-173-2/+8
| | | | | | | | | | 2006-02-17 Andreas Tobler <a.tobler@schweiz.ch> * testsuite/libffi.call/nested_struct6.c: XFAIL this test until PR25630 is fixed. * testsuite/libffi.call/nested_struct4.c: Likewise. From-SVN: r111208
* return_dbl.c: New test case.Andreas Tobler2006-02-169-0/+381
| | | | | | | | | | | | | | | 2006-02-16 Andreas Tobler <a.tobler@schweiz.ch> * testsuite/libffi.call/return_dbl.c: New test case. * testsuite/libffi.call/return_dbl1.c: Likewise. * testsuite/libffi.call/return_dbl2.c: Likewise. * testsuite/libffi.call/return_fl.c: Likewise. * testsuite/libffi.call/return_fl1.c: Likewise. * testsuite/libffi.call/return_fl2.c: Likewise. * testsuite/libffi.call/return_fl3.c: Likewise. * testsuite/libffi.call/closure_fn6.c: Likewise. From-SVN: r111156
* nested_struct2.c: Remove ffi_type_mylong definition.Andreas Tobler2006-02-1610-11/+942
| | | | | | | | | | | | | | | | | | | 2006-02-16 Andreas Tobler <a.tobler@schweiz.ch> * testsuite/libffi.call/nested_struct2.c: Remove ffi_type_mylong definition. * testsuite/libffi.call/ffitest.h: Add ffi_type_mylong definition here to be used by other test cases too. * testsuite/libffi.call/nested_struct10.c: New test case. * testsuite/libffi.call/nested_struct9.c: Likewise. * testsuite/libffi.call/nested_struct8.c: Likewise. * testsuite/libffi.call/nested_struct7.c: Likewise. * testsuite/libffi.call/nested_struct6.c: Likewise. * testsuite/libffi.call/nested_struct5.c: Likewise. * testsuite/libffi.call/nested_struct4.c: Likewise. From-SVN: r111151
* configure.ac: Enable libffi for sparc64-*-freebsd*.Andreas Tobler2006-01-213-2/+7
| | | | | | | | | 2006-01-21 Andreas Tobler <a.tobler@schweiz.ch> * configure.ac: Enable libffi for sparc64-*-freebsd*. * configure: Rebuilt. From-SVN: r110073
* sysv.S (smst_two_register): Don't call __ashldi3, instead do the shifting ↵Jakub Jelinek2006-01-183-36/+46
| | | | | | | | | | | | | inline. * src/powerpc/sysv.S (smst_two_register): Don't call __ashldi3, instead do the shifting inline. * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Don't compute %r5 shift count unconditionally. Simplify load sequences for 1, 2, 3, 4 and 8 byte structs, for the remaining struct sizes don't call __lshrdi3, instead do the shifting inline. From-SVN: r109879
* ffitarget.h: Remove obsolete sgidefs.h include.Thiemo Seufer2005-12-074-156/+195
| | | | | | | | | | | | | | | | | | | 2005-12-07 Thiemo Seufer <ths@networkno.de> * src/mips/ffitarget.h: Remove obsolete sgidefs.h include. Add missing parentheses. * src/mips/o32.S (ffi_call_O32): Code formatting. Define and use A3_OFF, FP_OFF, RA_OFF. Micro-optimizations. (ffi_closure_O32): Likewise, but with newly defined A3_OFF2, A2_OFF2, A1_OFF2, A0_OFF2, RA_OFF2, FP_OFF2, S0_OFF2, GP_OFF2, V1_OFF2, V0_OFF2, FA_1_1_OFF2, FA_1_0_OFF2, FA_0_1_OFF2, FA_0_0_OFF2. * src/mips/ffi.c (ffi_prep_args): Code formatting. Fix endianness bugs. (ffi_prep_closure): Improve trampoline instruction scheduling. (ffi_closure_mips_inner_O32): Fix endianness bugs. From-SVN: r108165
* ffi.c: Formatting.Alan Modra2005-12-032-257/+345
| | | | | | | | * src/powerpc/ffi.c: Formatting. (ffi_prep_args_SYSV): Avoid possible aliasing problems by using unions. (ffi_prep_args64): Likewise. From-SVN: r107963
* .cvsignore are not needed for subversion, remove them.Andreas Jaeger2005-10-311-1/+0
| | | | From-SVN: r106279
* libffi-dg.exp (libffi_target_compile): For darwin, use -shared-libgcc not ↵Geoffrey Keating2005-10-012-2/+12
| | | | | | | | | -lgcc_s, and explain why. * testsuite/lib/libffi-dg.exp (libffi_target_compile): For darwin, use -shared-libgcc not -lgcc_s, and explain why. From-SVN: r104847