Commit Graph

347 Commits

Author SHA1 Message Date
David Daney
3ef50b629c n32.S (ffi_closure_N32): Use 64-bit add instruction on pointer values.
2007-12-06  David Daney  <ddaney@avtrex.com>

	* src/mips/n32.S (ffi_closure_N32): Use 64-bit add instruction on 
	pointer values.

From-SVN: r130655
2007-12-06 18:23:16 +00:00
Andreas Tobler
162871481a re PR libffi/31937 (libffi doesn't support ppc without FPU)
2007-12-01  Andreas Tobler  <a.tobler@schweiz.org>

	PR libffi/31937
	* src/powerpc/ffitarget.h: Introduce new ABI FFI_LINUX_SOFT_FLOAT.
	Add local FFI_TYPE_UINT128 to handle soft-float long-double-128.
	* src/powerpc/ffi.c: Distinguish between __NO_FPRS__ and not and
	set the NUM_FPR_ARG_REGISTERS according to.
	Add support for potential soft-float support under hard-float
	architecture.
	(ffi_prep_args_SYSV): Set NUM_FPR_ARG_REGISTERS to 0 in case of
	FFI_LINUX_SOFT_FLOAT, handle float, doubles and long-doubles according
	to the FFI_LINUX_SOFT_FLOAT ABI.
	(ffi_prep_cif_machdep): Likewise.
	(ffi_closure_helper_SYSV): Likewise.
	* src/powerpc/ppc_closure.S: Make sure not to store float/double
	on archs where __NO_FPRS__ is true.
	Add FFI_TYPE_UINT128 support.
	* src/powerpc/sysv.S: Add support for soft-float long-double-128.
	Adjust copyright notice.

From-SVN: r130559
2007-12-01 22:00:04 +01:00
Andreas Tobler
a4b7c9cd4c closures.c: Move defintion of MAYBE_UNUSED from here to ...
2007-11-25  Andreas Tobler  <a.tobler@schweiz.org>

	* src/closures.c: Move defintion of MAYBE_UNUSED from here to ...
	* include/ffi_common.h: ... here.
	Update copyright.

From-SVN: r130413
2007-11-25 20:24:23 +01:00
Andreas Tobler
e84296c66c sysv.S: Load correct cr to compare if we have long double.
2007-11-17  Andreas Tobler  <a.tobler@schweiz.org>

	* src/powerpc/sysv.S: Load correct cr to compare if we have long double.
	* src/powerpc/linux64.S: Likewise.
	* src/powerpc/ffi.c: Add a comment to show which part goes into cr6.
	* testsuite/libffi.call/return_ldl.c: New test.

From-SVN: r130247
2007-11-17 00:24:53 +01:00
Andrew Haley
cb642590f3 [multiple changes]
2007-09-04    <aph@redhat.com>

	* src/arm/sysv.S (UNWIND): New.
	(Whole file): Conditionally compile unwinder directives.
	* src/arm/sysv.S: Add unwinder directives.

	* src/arm/ffi.c (ffi_prep_args): Align structs by at least 4 bytes.
	Only treat r0 as a struct address if we're actually returning a
	struct by address.
	Only copy the bytes that are actually within a struct.
	(ffi_prep_cif_machdep): A Composite Type not larger than 4 bytes
	is returned in r0, not passed by address.
	(ffi_call): Allocate a word-sized temporary for the case where
	a composite is returned in r0.
	(ffi_prep_incoming_args_SYSV): Align as necessary.

2007-08-05  Steven Newbury  <s_j_newbury@yahoo.co.uk>

	* src/arm/ffi.c (FFI_INIT_TRAMPOLINE): Use __clear_cache instead of 
	directly using the sys_cacheflush syscall.

2007-07-27  Andrew Haley  <aph@redhat.com>

	* src/arm/sysv.S (ffi_closure_SYSV): Add soft-float.

From-SVN: r128093
2007-09-04 17:52:45 +00:00
Maciej W. Rozycki
8d5c5e35a7 Makefile.am: Unify MIPS_IRIX and MIPS_LINUX into MIPS.
* Makefile.am: Unify MIPS_IRIX and MIPS_LINUX into MIPS.
* configure.ac: Likewise.
* Makefile.in: Regenerate.
* include/Makefile.in: Likewise.
* testsuite/Makefile.in: Likewise.
* configure: Likewise.

From-SVN: r128055
2007-09-03 18:08:54 +00:00
David Daney
787b0d199b * testsuite/libffi.call/return_sl.c: New test.
From-SVN: r127787
2007-08-24 19:32:02 +00:00
David Daney
dfbb3e3625 cls_multi_ushort.c, [...]: Remove xfail for mips64*-*-*.
* testsuite/libffi.call/cls_multi_ushort.c,
	testsuite/libffi.call/cls_align_uint16.c,
	testsuite/libffi.call/nested_struct1.c,
	testsuite/libffi.call/nested_struct3.c,
	testsuite/libffi.call/cls_7_1_byte.c,
	testsuite/libffi.call/nested_struct5.c,
	testsuite/libffi.call/cls_double.c,
	testsuite/libffi.call/nested_struct7.c,
	testsuite/libffi.call/cls_sint.c,
	testsuite/libffi.call/nested_struct9.c,
	testsuite/libffi.call/cls_20byte1.c,
	testsuite/libffi.call/cls_multi_sshortchar.c,
	testsuite/libffi.call/cls_align_sint64.c,
	testsuite/libffi.call/cls_3byte2.c,
	testsuite/libffi.call/cls_multi_schar.c,
	testsuite/libffi.call/cls_multi_uchar.c,
	testsuite/libffi.call/cls_19byte.c,
	testsuite/libffi.call/cls_9byte1.c,
	testsuite/libffi.call/cls_align_float.c,
	testsuite/libffi.call/closure_fn1.c,
	testsuite/libffi.call/problem1.c,
	testsuite/libffi.call/closure_fn3.c,
	testsuite/libffi.call/cls_sshort.c,
	testsuite/libffi.call/closure_fn5.c,
	testsuite/libffi.call/cls_align_double.c,
	testsuite/libffi.call/nested_struct.c,
	testsuite/libffi.call/cls_2byte.c,
	testsuite/libffi.call/nested_struct10.c,
	testsuite/libffi.call/cls_4byte.c,
	testsuite/libffi.call/cls_6byte.c,
	testsuite/libffi.call/cls_8byte.c,
	testsuite/libffi.call/cls_multi_sshort.c,
	testsuite/libffi.call/cls_align_sint16.c,
	testsuite/libffi.call/cls_align_uint32.c,
	testsuite/libffi.call/cls_20byte.c,
	testsuite/libffi.call/cls_float.c,
	testsuite/libffi.call/nested_struct2.c,
	testsuite/libffi.call/cls_5_1_byte.c,
	testsuite/libffi.call/nested_struct4.c,
	testsuite/libffi.call/cls_24byte.c,
	testsuite/libffi.call/nested_struct6.c,
	testsuite/libffi.call/cls_64byte.c,
	testsuite/libffi.call/nested_struct8.c,
	testsuite/libffi.call/cls_uint.c,
	testsuite/libffi.call/cls_multi_ushortchar.c,
	testsuite/libffi.call/cls_schar.c,
	testsuite/libffi.call/cls_uchar.c,
	testsuite/libffi.call/cls_align_uint64.c,
	testsuite/libffi.call/cls_ulonglong.c,
	testsuite/libffi.call/cls_align_longdouble.c,
	testsuite/libffi.call/cls_1_1byte.c,
	testsuite/libffi.call/cls_12byte.c,
	testsuite/libffi.call/cls_3_1byte.c,
	testsuite/libffi.call/cls_3byte1.c,
	testsuite/libffi.call/cls_4_1byte.c,
	testsuite/libffi.call/cls_6_1_byte.c,
	testsuite/libffi.call/cls_16byte.c,
	testsuite/libffi.call/cls_18byte.c,
	testsuite/libffi.call/closure_fn0.c,
	testsuite/libffi.call/cls_9byte2.c,
	testsuite/libffi.call/closure_fn2.c,
	testsuite/libffi.call/closure_fn4.c,
	testsuite/libffi.call/cls_ushort.c,
	testsuite/libffi.call/closure_fn6.c,
	testsuite/libffi.call/cls_5byte.c,
	testsuite/libffi.call/cls_align_pointer.c,
	testsuite/libffi.call/cls_7byte.c,
	testsuite/libffi.call/cls_align_sint32.c,
	testsuite/libffi.special/unwindtest_ffi_call.cc,
	testsuite/libffi.special/unwindtest.cc: Remove xfail for mips64*-*-*.

From-SVN: r127337
2007-08-10 15:38:23 +00:00
David Daney
89d9d98ae5 re PR libffi/28313 (libffi has not been ported to mips64-linux-gnu)
PR libffi/28313
	* configure.ac: Don't treat mips64 as a special case.
	* Makefile.am (nodist_libffi_la_SOURCES): Add n32.S.
	* configure: Regenerate
	* Makefile.in: Ditto.
	* fficonfig.h.in: Ditto.
	* src/mips/ffitarget.h (REG_L, REG_S, SUBU, ADDU, SRL, LI): Indent.
	(LA, EH_FRAME_ALIGN, FDE_ADDR_BYTES): New preprocessor macros.
	(FFI_DEFAULT_ABI): Set for n64 case.
	(FFI_CLOSURES, FFI_TRAMPOLINE_SIZE): Define for n32 and n64 cases.
	* src/mips/n32.S (ffi_call_N32): Add debug macros and labels for FDE.
	(ffi_closure_N32): New function.
	(.eh_frame): New section
	* src/mips/o32.S: Clean up comments.
	(ffi_closure_O32): Pass ffi_closure parameter in $12.
	* src/mips/ffi.c: Use FFI_MIPS_N32 instead of
	_MIPS_SIM == _ABIN32 throughout.
	(FFI_MIPS_STOP_HERE): New, use in place of
	ffi_stop_here.
	(ffi_prep_args): Use unsigned long to hold pointer values.  Rewrite
	to support n32/n64 ABIs.
	(calc_n32_struct_flags): Rewrite.
	(calc_n32_return_struct_flags): Remove unused variable.  Reverse
	position of flag bits.
	(ffi_prep_cif_machdep): Rewrite n32 portion.
	(ffi_call): Enable for n64.  Add special handling for small structure
	return values.
	(ffi_prep_closure_loc): Add n32 and n64 support.
	(ffi_closure_mips_inner_O32): Add cast to silence warning.
	(copy_struct_N32, ffi_closure_mips_inner_N32): New functions.

From-SVN: r127336
2007-08-10 15:35:55 +00:00
David Daney
d23869d452 ffitest.h (ffi_type_mylong): Remove definition.
* testsuite/libffi.call/ffitest.h (ffi_type_mylong): Remove definition.
	* testsuite/libffi.call/cls_align_uint16.c (main): Use correct type
	specifiers.
	* testsuite/libffi.call/nested_struct1.c (main): Ditto.
	* testsuite/libffi.call/cls_sint.c (main): Ditto.
	* testsuite/libffi.call/nested_struct9.c (main): Ditto.
	* testsuite/libffi.call/cls_20byte1.c (main): Ditto.
	* testsuite/libffi.call/cls_9byte1.c (main): Ditto.
	* testsuite/libffi.call/closure_fn1.c (main): Ditto.
	* testsuite/libffi.call/closure_fn3.c (main): Ditto.
	* testsuite/libffi.call/return_dbl2.c (main): Ditto.
	* testsuite/libffi.call/cls_sshort.c (main): Ditto.
	* testsuite/libffi.call/return_fl3.c (main): Ditto.
	* testsuite/libffi.call/closure_fn5.c (main): Ditto.
	* testsuite/libffi.call/nested_struct.c (main): Ditto.
	* testsuite/libffi.call/nested_struct10.c (main): Ditto.
	* testsuite/libffi.call/return_ll1.c (main): Ditto.
	* testsuite/libffi.call/cls_8byte.c (main): Ditto.
	* testsuite/libffi.call/cls_align_uint32.c (main): Ditto.
	* testsuite/libffi.call/cls_align_sint16.c (main): Ditto.
	* testsuite/libffi.call/cls_20byte.c (main): Ditto.
	* testsuite/libffi.call/nested_struct2.c (main): Ditto.
	* testsuite/libffi.call/cls_24byte.c (main): Ditto.
	* testsuite/libffi.call/nested_struct6.c (main): Ditto.
	* testsuite/libffi.call/cls_uint.c (main): Ditto.
	* testsuite/libffi.call/cls_12byte.c (main): Ditto.
	* testsuite/libffi.call/cls_16byte.c (main): Ditto.
	* testsuite/libffi.call/closure_fn0.c (main): Ditto.
	* testsuite/libffi.call/cls_9byte2.c (main): Ditto.
	* testsuite/libffi.call/closure_fn2.c (main): Ditto.
	* testsuite/libffi.call/return_dbl1.c (main): Ditto.
	* testsuite/libffi.call/closure_fn4.c (main): Ditto.
	* testsuite/libffi.call/closure_fn6.c (main): Ditto.
	* testsuite/libffi.call/cls_align_sint32.c (main): Ditto.

From-SVN: r127312
2007-08-09 02:02:37 +00:00
Andrew Haley
536e0a8f31 sysv.S (ffi_closure_raw_SYSV): Fix typo in previous checkin.
* src/x86/sysv.S (ffi_closure_raw_SYSV): Fix typo in previous
        checkin.

From-SVN: r127271
2007-08-07 12:52:47 +00:00
Andrew Haley
7665c9bebc re PR testsuite/32843 (libffi.call/return_sc.c)
PR testsuite/32843
	* src/x86/sysv.S (ffi_closure_raw_SYSV): Handle FFI_TYPE_UINT8,
	FFI_TYPE_SINT8, FFI_TYPE_UINT16, FFI_TYPE_SINT16, FFI_TYPE_UINT32,
	FFI_TYPE_SINT32.

From-SVN: r127241
2007-08-06 12:48:07 +00:00
David Daney
58e11497f7 return_ul.c (main): Define return type as ffi_arg.
* testsuite/libffi.call/return_ul.c (main): Define return type as
	ffi_arg.  Use proper printf conversion specifier.

From-SVN: r127177
2007-08-03 03:17:13 +00:00
Andrew Haley
387cfbba39 re PR testsuite/32843 (libffi.call/return_sc.c)
2007-07-30  Andrew Haley  <aph@redhat.com>

        PR testsuite/32843
        * src/x86/ffi.c (ffi_prep_cif_machdep): in x86 case, add code for
        signed/unsigned int8/16.
        * src/x86/sysv.S (ffi_call_SYSV): Rewrite to:
        Use a jump table.
        Remove code to pop args from the stack after call.
        Special-case signed/unsigned int8/16.
        * testsuite/libffi.call/return_sc.c (main): Revert.

From-SVN: r127093
2007-07-31 15:05:52 +00:00
Richard Guenther
0ee0208ecc re PR testsuite/32843 (libffi.call/return_sc.c)
2007-07-26  Richard Guenther  <rguenther@suse.de>

	PR testsuite/32843
	* testsuite/libffi.call/return_sc.c (main): Verify call
	result as signed char, not ffi_arg.

From-SVN: r126950
2007-07-26 09:13:58 +00:00
Rainer Orth
04a4998306 configure.ac (i?86-*-solaris2.1[0-9]): Set TARGET to X86_64.
* configure.ac (i?86-*-solaris2.1[0-9]): Set TARGET to X86_64.
	* configure: Regenerate.

From-SVN: r126683
2007-07-16 17:05:41 +00:00
David Daney
433e6a8cf2 ffi.c: Don't include sys/cachectl.h.
* src/mips/ffi.c: Don't include sys/cachectl.h.
	(ffi_prep_closure_loc): Use __builtin___clear_cache() instead of
	cacheflush().

From-SVN: r126567
2007-07-12 02:19:41 +00:00
Andrew Haley
0959e2b887 [multiple changes]
2007-05-18  Aurelien Jarno  <aurelien@aurel32.net>

	* src/arm/ffi.c (ffi_prep_closure_loc): Renamed and ajusted
	from (ffi_prep_closure): ... this.
	(FFI_INIT_TRAMPOLINE): Adjust.

2005-12-31  Phil Blundell  <pb@reciva.com>

	* src/arm/ffi.c (ffi_prep_incoming_args_SYSV, 
        ffi_closure_SYSV_inner, ffi_prep_closure): New, add closure support.
	* src/arm/sysv.S(ffi_closure_SYSV): Likewise.
	* src/arm/ffitarget.h (FFI_TRAMPOLINE_SIZE): Likewise.
	(FFI_CLOSURES): Enable closure support.

2007-07-03  Andrew Haley  <aph@hedges.billgatliff.com>

        * testsuite/libffi.call/cls_multi_ushort.c,
        testsuite/libffi.call/cls_align_uint16.c,
        testsuite/libffi.call/nested_struct1.c,
        testsuite/libffi.call/nested_struct3.c,
        testsuite/libffi.call/cls_7_1_byte.c,
        testsuite/libffi.call/cls_double.c,
        testsuite/libffi.call/nested_struct5.c,
        testsuite/libffi.call/nested_struct7.c,
        testsuite/libffi.call/cls_sint.c,
        testsuite/libffi.call/nested_struct9.c,
        testsuite/libffi.call/cls_20byte1.c,
        testsuite/libffi.call/cls_multi_sshortchar.c,
        testsuite/libffi.call/cls_align_sint64.c,
        testsuite/libffi.call/cls_3byte2.c,
        testsuite/libffi.call/cls_multi_schar.c,
        testsuite/libffi.call/cls_multi_uchar.c,
        testsuite/libffi.call/cls_19byte.c,
        testsuite/libffi.call/cls_9byte1.c,
        testsuite/libffi.call/cls_align_float.c,
        testsuite/libffi.call/closure_fn1.c,
        testsuite/libffi.call/problem1.c,
        testsuite/libffi.call/closure_fn3.c,
        testsuite/libffi.call/cls_sshort.c,
        testsuite/libffi.call/closure_fn5.c,
        testsuite/libffi.call/cls_align_double.c,
        testsuite/libffi.call/cls_2byte.c,
        testsuite/libffi.call/nested_struct.c,
        testsuite/libffi.call/nested_struct10.c,
        testsuite/libffi.call/cls_4byte.c,
        testsuite/libffi.call/cls_6byte.c,
        testsuite/libffi.call/cls_8byte.c,
        testsuite/libffi.call/cls_multi_sshort.c,
        testsuite/libffi.call/cls_align_uint32.c,
        testsuite/libffi.call/cls_align_sint16.c,
        testsuite/libffi.call/cls_float.c,
        testsuite/libffi.call/cls_20byte.c,
        testsuite/libffi.call/cls_5_1_byte.c,
        testsuite/libffi.call/nested_struct2.c,
        testsuite/libffi.call/cls_24byte.c,
        testsuite/libffi.call/nested_struct4.c,
        testsuite/libffi.call/nested_struct6.c,
        testsuite/libffi.call/cls_64byte.c,
        testsuite/libffi.call/nested_struct8.c,
        testsuite/libffi.call/cls_uint.c,
        testsuite/libffi.call/cls_multi_ushortchar.c,
        testsuite/libffi.call/cls_schar.c,
        testsuite/libffi.call/cls_uchar.c,
        testsuite/libffi.call/cls_align_uint64.c,
        testsuite/libffi.call/cls_ulonglong.c,
        testsuite/libffi.call/cls_align_longdouble.c,
        testsuite/libffi.call/cls_1_1byte.c,
        testsuite/libffi.call/cls_12byte.c,
        testsuite/libffi.call/cls_3_1byte.c,
        testsuite/libffi.call/cls_3byte1.c,
        testsuite/libffi.call/cls_4_1byte.c,
        testsuite/libffi.call/cls_6_1_byte.c,
        testsuite/libffi.call/cls_16byte.c,
        testsuite/libffi.call/cls_18byte.c,
        testsuite/libffi.call/closure_fn0.c,
        testsuite/libffi.call/cls_9byte2.c,
        testsuite/libffi.call/closure_fn2.c,
        testsuite/libffi.call/closure_fn4.c,
        testsuite/libffi.call/cls_ushort.c,
        testsuite/libffi.call/closure_fn6.c,
        testsuite/libffi.call/cls_5byte.c,
        testsuite/libffi.call/cls_align_pointer.c,
        testsuite/libffi.call/cls_7byte.c,
        testsuite/libffi.call/cls_align_sint32.c,
        testsuite/libffi.special/unwindtest_ffi_call.cc,
        testsuite/libffi.special/unwindtest.cc: Enable for ARM.

From-SVN: r126489
2007-07-09 17:33:46 +00:00
H.J. Lu
12a27363b0 Regenerate aclocal.m4 in boehm-gc, libffi, libgfortran, libgomp,
libjava, libmudflap, libobjc, libssp and zlib.

From-SVN: r126373
2007-07-05 10:54:10 -07:00
Paolo Bonzini
82a6cadf50 configure: Regenerate.
boehm-gc:
2007-06-02  Paolo Bonzini  <bonzini@gnu.org>

	* configure: Regenerate.

libffi:
2007-06-02  Paolo Bonzini  <bonzini@gnu.org>

	* configure: Regenerate.

libgfortran:
2007-06-02  Paolo Bonzini  <bonzini@gnu.org>

	* configure: Regenerate.

libgomp:
2007-06-02  Paolo Bonzini  <bonzini@gnu.org>

	* configure: Regenerate.

libjava:
2007-06-02  Paolo Bonzini  <bonzini@gnu.org>

	* configure: Regenerate.

libmudflap:
2007-06-02  Paolo Bonzini  <bonzini@gnu.org>

	* configure: Regenerate.

libobjc:
2007-06-02  Paolo Bonzini  <bonzini@gnu.org>

	* configure: Regenerate.

libssp:
2007-06-02  Paolo Bonzini  <bonzini@gnu.org>

	* configure: Regenerate.

libstdc++-v3:
2007-06-02  Paolo Bonzini  <bonzini@gnu.org>

	* configure: Regenerate.

zlib:
2007-06-02  Paolo Bonzini  <bonzini@gnu.org>

	* configure: Regenerate.

From-SVN: r125278
2007-06-02 08:18:15 +00:00
Steve Ellcey
1cf3d07da6 ltmain.sh: Update from ToT Libtool.
* ltmain.sh: Update from ToT Libtool.
        * libtool.m4: Update from ToT Libtool.
        * ltsugar.m4: New. Update from ToT Libtool.
        * ltversion.m4: New. Update from ToT Libtool.
        * ltoptions.m4: New. Update from ToT Libtool.
        * ltconfig: Remove.
        * ltcf-c.sh: Remove.
        * ltcf-cxx.sh: Remove.
        * ltcf-gcj.sh: Remove.
	* Regenerate all subdirs

From-SVN: r125032
2007-05-24 16:37:27 +00:00
Roman Zippel
5635c26e57 ffi.c (ffi_prep_incoming_args_SYSV, [...]): New, add closure support.
* 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
2007-05-10 21:29:04 +00:00
Roman Zippel
e6fbf387cf configure.ac (HAVE_AS_CFI_PSEUDO_OP): New test.
* 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
2007-05-10 21:20:02 +00:00
Roman Zippel
b5296e520d ffi.c (ffi_prep_args,ffi_prep_cif_machdep): Fix numerous test suite failures.
* 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
2007-05-10 21:06:55 +00:00
Paolo Bonzini
bd61d70827 Makefile.am (EXTRA_DIST): Bring up to date.
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
2007-04-13 07:21:04 +00:00
Richard Henderson
bf8da5fc77 configure.ac: Tidy target case.
* 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
2007-04-06 09:24:16 -07:00
Tom Tromey
8669fed1d7 re PR libffi/31491 (libffi: bug in example program)
PR libffi/31491:
	* README: Fixed bug in example.

From-SVN: r123617
2007-04-06 14:30:27 +00:00
Jakub Jelinek
f0920e6c64 closures.c: Include sys/statfs.h.
* 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
2007-04-03 11:12:40 +02:00
Uros Bizjak
34a6ccda5c return_fl2.c (return_fl): Mark as static.
* 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
2007-03-24 08:13:17 +01:00
Alexandre Oliva
8b9cf39ead ffi.c (flush_icache): Fix left-over from previous patch.
* 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
2007-03-08 11:06:41 +00:00
Alexandre Oliva
18fa3240db ffi.h.in (ffi_closure_alloc, [...]): New.
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
2007-03-07 07:27:25 +00:00
Alexandre Oliva
dd77833100 dlmalloc.c: New file, imported version 2.8.3 of Doug Lea's malloc.
* src/dlmalloc.c: New file, imported version 2.8.3 of Doug
Lea's malloc.

From-SVN: r122651
2007-03-07 07:20:20 +00:00
Brooks Moses
b5f8d49b84 Makefile.am: Add dummy install-pdf target.
* Makefile.am: Add dummy install-pdf target.
* Makefile.in: Regenerate

From-SVN: r122440
2007-03-01 15:51:37 -08:00
Andreas Krebbel
7a23933bdd ffi.c (ffi_prep_args, [...]): Add long double handling.
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
2007-02-13 07:54:40 +00:00
Jakub Jelinek
8aaf4681da linux64.S (ffi_call_LINUX64): Move restore of r2 immediately after bctrl instruction.
* src/powerpc/linux64.S (ffi_call_LINUX64): Move restore of r2
	immediately after bctrl instruction.

From-SVN: r121498
2007-02-02 13:28:27 +01:00
Alexandre Oliva
0eb5e2b93d Makefile.am (all-recursive, [...]): Add missing targets.
* Makefile.am (all-recursive, install-recursive,
mostlyclean-recursive, clean-recursive, distclean-recursive,
maintainer-clean-recursive): Add missing targets.
* Makefile.in: Rebuilt.

From-SVN: r120892
2007-01-18 07:17:57 +00:00
Jack Howarth
8a48946511 aclocal.m4: Regenerate to use multi.m4.
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
2007-01-17 19:48:52 +00:00
Andreas Tobler
f4f7486bcf configure.ac: Add TARGET for x86_64-*-darwin*.
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
2006-12-14 08:34:45 +01:00
Andreas Tobler
3d5eafe232 aclocal.m4: Regenerate with aclocal -I ..
2006-12-13  Andreas Tobler <a.tobler@schweiz.org>

	* aclocal.m4: Regenerate with aclocal -I .. as written in the
	Makefile.am.

From-SVN: r119845
2006-12-13 22:04:07 +01:00
Geoffrey Keating
d5523ce18d Fix date on ChangeLog entry
From-SVN: r118367
2006-11-01 05:42:01 +00:00
Geoffrey Keating
58182de357 In gcc/: PR 23067
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
2006-11-01 05:28:41 +00:00
Paolo Bonzini
a3bd50cc4b configure.ac [...]: Set X86_DARWIN symbol and conditional.
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
2006-10-10 14:21:05 +00:00
David Daney
b095810f1b re PR libffi/23935 ($PREFIX/include/ffi.h needs to go to a target- and -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
2006-09-12 16:51:43 +00:00
Andreas Tobler
110b2db465 ffi_common.h (struct): Revert accidental commit.
2006-08-17  Andreas Tobler  <a.tobler@schweiz.ch>

	* include/ffi_common.h (struct): Revert accidental commit.

From-SVN: r116230
2006-08-17 21:07:29 +02:00
Andreas Tobler
8e5fde8713 ffi_common.h: Remove lint directives.
2006-08-15  Andreas Tobler  <a.tobler@schweiz.ch>

	* include/ffi_common.h: Remove lint directives.
	* include/ffi.h.in: Likewise.

From-SVN: r116152
2006-08-15 11:36:39 +02:00
Torsten Schoenfeld
cb4132fe11 ffi.h.in (ffi_type_ulong, [...]): Define correctly for 32-bit architectures.
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
2006-07-25 22:01:22 +02:00
David Daney
0d24c3fa6f closure_fn6.c: Remove xfail for mips, xfail remains for mips64.
* testsuite/libffi.call/closure_fn6.c: Remove xfail for mips,
	xfail remains for mips64.

From-SVN: r115598
2006-07-19 19:52:44 +00:00
Carlos O'Donell
8665824cdc Makefile.am: Add install-html target.
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
2006-05-24 01:45:57 +00:00
John David Anglin
84e2e37098 ffi.c (ffi_prep_args_pa32): Load floating point arguments from stack slot.
* pa/ffi.c (ffi_prep_args_pa32): Load floating point arguments from
	stack slot.

From-SVN: r113901
2006-05-19 01:20:22 +00:00
Andreas Tobler
ac6ed182ed README: Remove notice about 'Crazy Comments'.
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
2006-04-22 23:17:35 +02:00