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
* 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
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
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
* src/powerpc/ffi.c: Formatting.
(ffi_prep_args_SYSV): Avoid possible aliasing problems by using unions.
(ffi_prep_args64): Likewise.
From-SVN: r107963
* testsuite/libffi.call/float1.c (value_type): New typedef.
(CANARY): New define.
(main): Check for result buffer overflow.
* src/powerpc/linux64.S: Handle linux64 long double returns.
* src/powerpc/ffi.c (FLAG_RETURNS_128BITS): New constant.
(ffi_prep_cif_machdep): Handle linux64 long double returns.
From-SVN: r104660
* 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
* 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
* 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
* configure.ac: Do not invoke TL_AC_GCC_VERSION.
Do not set tool_include_dir.
* aclocal.m4, configure, Makefile.in, testsuite/Makefile.in:
Regenerate.
* include/Makefile.am: Set gcc_version and toollibffidir.
* include/Makefile.in: Regenerate.
From-SVN: r96823
* 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
* lib/target-libpath.exp: New file defining set_ld_library_path_env_vars
and restore_ld_library_path_env_vars.
* g++.dg/compat/compat.exp, lib/g++.exp, lib/gcc-dg.exp,
lib/gfortran.exp, lib/objc.exp, lib/treelang.exp: Use new procs.
* ada/acats/run_acats (LD_LIBRARY_PATH): Add previous LD_LIBRARY_PATH
to LD_LIBRARY_PATH. Export LD_LIBRARY_PATH.
* testsuite/lib/libffi-dg.exp: Use new procs in target-libpath.exp.
* testsuite/lib/libjava.exp,
testsuite/libjava.jacks/jacks.exp: Use new procs in target-libpath.exp.
* testsuite/lib/libmudflap.exp: Use new procs in target-libpath.exp.
* testsuite/lib/libstdc++.exp: Use new procs in target-libpath.exp.
From-SVN: r91137
* 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
* 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
* 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
* testsuite/lib/libffi-db.exp (load_gcc_lib): New function.
(libffi_exit): New function.
(libffi_init): Build the testglue wrapper if needed.
From-SVN: r89636
gcc/testsuite:
PR other/18138
* lib/g++.exp: Accept more than one multilib libgcc.
* lib/gcc-dg.exp: Likewise.
* lib/objc.exp: Likewise.
* lib/treelang.exp: Likewise.
* lib/gfortran.exp: Likewise.
libffi:
PR other/18138
* testsuite/lib/libffi-dg.exp: Accept more than one multilib
libgcc.
libjava:
PR other/18138
* testsuite/lib/libjava.exp: Accept more than one multilib
libgcc.
libmudflap!:
PR other/18138
* testsuite/lib/libmudflap.exp: Accept more than one multilib
libgcc.
libstdc++-v3:
PR other/18138
* testsuite/lib/libstdc++.exp: Accept more than one multilib
libgcc.
From-SVN: r89528
* 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-09-14 H.J. Lu <hongjiu.lu@intel.com>
PR libgcj/17465
* testsuite/lib/libffi-dg.exp: Don't use global ld_library_path.
Set up LD_LIBRARY_PATH, SHLIB_PATH, LD_LIBRARYN32_PATH,
LD_LIBRARY64_PATH, LD_LIBRARY_PATH_32, LD_LIBRARY_PATH_64 and
DYLD_LIBRARY_PATH.
From-SVN: r87511
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-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-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
ChangeLog:
2004-08-01 Robert Millan <robertmh@gnu.org>
* configure.in: Turn mt-linux into mt-gnu. Use mt-gnu and enable
libmudflap for all GNU-based systems (with Glibc).
* configure: Regenerate.
config/ChangeLog:
2004-08-01 Robert Millan <robertmh@gnu.org>
* mt-linux: Rename to ...
* mt-gnu: ... this.
libffi/ChangeLog:
2004-08-01 Robert Millan <robertmh@gnu.org>
* configure.ac: Detect knetbsd-gnu and kfreebsd-gnu.
* configure: Regenerate.
From-SVN: r85501
2004-07-30 Maciej W. Rozycki <macro@linux-mips.org>
* acinclude.m4 (AC_FUNC_MMAP_BLACKLIST): Check for <sys/mman.h>
and mmap() explicitly instead of relying on preset autoconf cache
variables.
* aclocal.m4: Regenerate.
* configure: Regenerate.
From-SVN: r85500
Bug 15093
* configure.ac: Test for existence of mmap and sys/mman.h before
checking blacklist. Fix suggested by Jim Wilson.
* configure: Regenerate.
From-SVN: r81212
* src/powerpc/darwin.S: Fix EH information so it corresponds to
changes in EH format resulting from addition of linkonce support.
* src/powerpc/darwin_closure.S: Likewise.
From-SVN: r79396
2004-03-11 Andreas Tobler <a.tobler@schweiz.ch>
Paolo Bonzini <bonzini@gnu.org>
* Makefile.am (AUTOMAKE_OPTIONS): Set them.
Remove VPATH. Remove rules for object files. Remove multilib support.
(AM_CCASFLAGS): Add.
* configure.in (AC_CONFIG_HEADERS): Relace AM_CONFIG_HEADER.
(AC_PREREQ): Bump version to 2.59.
(AC_INIT): Fill with version info and bug address.
(ORIGINAL_LD_FOR_MULTILIBS): Remove.
(AM_ENABLE_MULTILIB): Use this instead of AC_ARG_ENABLE.
De-precious CC so that the right flags are passed down to multilibs.
(AC_MSG_ERROR): Replace obsolete macro AC_ERROR.
(AC_CONFIG_FILES): Replace obsolete macro AC_LINK_FILES.
(AC_OUTPUT): Reorganize the output with AC_CONFIG_COMMANDS.
* configure: Rebuilt.
* aclocal.m4: Likewise.
* Makefile.in, include/Makefile.in, testsuite/Makefile.in: Likewise.
* fficonfig.h.in: Likewise.
Co-Authored-By: Paolo Bonzini <bonzini@gnu.org>
From-SVN: r79341
* 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
* 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
* 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-24 Andreas Tobler <a.tobler@schweiz.ch>
* testsuite/libffi.call/pyobjc-tc.c (main): Treat result value
as of type ffi_arg.
* testsuite/libffi.call/struct3.c (main): Fix CHECK.
From-SVN: r76513
2003-11-22 Andreas Tobler <a.tobler@schweiz.ch>
* Makefile.in: Rebuilt.
* configure: Likewise.
* testsuite/libffi.special/unwindtest.cc: Convert the mmap to
the right type.
From-SVN: r73837
2003-10-22 David Daney <ddaney@avtrex.com>
* src/mips/ffitarget.h: Replace undefined UINT32 and friends with
__attribute__((__mode__(__SI__))) and friends.
From-SVN: r72802
2003-10-21 Andreas Tobler <a.tobler@schweiz.ch>
* configure.in: AC_LINK_FILES(ffitarget.h).
* configure: Regenerate.
* Makefile.in: Likewise.
* include/Makefile.in: Likewise.
* testsuite/Makefile.in: Likewise.
* fficonfig.h.in: Likewise.
2003-10-21 Paolo Bonzini <bonzini@gnu.org>
Richard Henderson <rth@redhat.com>
Avoid that ffi.h includes fficonfig.h.
* Makefile.am (EXTRA_DIST): Include ffitarget.h files
(TARGET_SRC_MIPS_GCC): Renamed to TARGET_SRC_MIPS_IRIX.
(TARGET_SRC_MIPS_SGI): Removed.
(MIPS_GCC): Renamed to TARGET_SRC_MIPS_IRIX.
(MIPS_SGI): Removed.
(CLEANFILES): Removed.
(mostlyclean-am, clean-am, mostlyclean-sub, clean-sub): New
targets.
* acconfig.h: Removed.
* configure.in: Compute sizeofs only for double and long double.
Use them to define and subst HAVE_LONG_DOUBLE. Include comments
into AC_DEFINE instead of using acconfig.h. Create
include/ffitarget.h instead of include/fficonfig.h. Rename
MIPS_GCC to MIPS_IRIX, drop MIPS_SGI since we are in gcc's tree.
AC_DEFINE EH_FRAME_FLAGS.
* include/Makefile.am (DISTCLEANFILES): New automake macro.
(hack_DATA): Add ffitarget.h.
* include/ffi.h.in: Remove all system specific definitions.
Declare raw API even if it is not installed, why bother?
Use limits.h instead of SIZEOF_* to define ffi_type_*. Do
not define EH_FRAME_FLAGS, it is in fficonfig.h now. Include
ffitarget.h instead of fficonfig.h. Remove ALIGN macro.
(UINT_ARG, INT_ARG): Removed, use ffi_arg and ffi_sarg instead.
* include/ffi_common.h (bool): Do not define.
(ffi_assert): Accept failed assertion.
(ffi_type_test): Return void and accept file/line.
(FFI_ASSERT): Pass stringized failed assertion.
(FFI_ASSERT_AT): New macro.
(FFI_ASSERT_VALID_TYPE): New macro.
(UINT8, SINT8, UINT16, SINT16, UINT32, SINT32,
UINT64, SINT64): Define here with gcc's __attribute__ macro
instead of in ffi.h
(FLOAT32, ALIGN): Define here instead of in ffi.h
* include/ffi-mips.h: Removed. Its content moved to
src/mips/ffitarget.h after separating assembly and C sections.
* src/alpha/ffi.c, src/alpha/ffi.c, src/java_raw_api.c
src/prep_cif.c, src/raw_api.c, src/ia64/ffi.c,
src/mips/ffi.c, src/mips/n32.S, src/mips/o32.S,
src/mips/ffitarget.h, src/sparc/ffi.c, src/x86/ffi64.c:
SIZEOF_ARG -> FFI_SIZEOF_ARG.
* src/ia64/ffi.c: Include stdbool.h (provided by GCC 2.95+).
* src/debug.c (ffi_assert): Accept stringized failed assertion.
(ffi_type_test): Rewritten.
* src/prep-cif.c (initialize_aggregate, ffi_prep_cif): Call
FFI_ASSERT_VALID_TYPE.
* src/alpha/ffitarget.h, src/arm/ffitarget.h,
src/ia64/ffitarget.h, src/m68k/ffitarget.h,
src/mips/ffitarget.h, src/powerpc/ffitarget.h,
src/s390/ffitarget.h, src/sh/ffitarget.h,
src/sh64/ffitarget.h, src/sparc/ffitarget.h,
src/x86/ffitarget.h: New files.
* src/alpha/osf.S, src/arm/sysv.S, src/ia64/unix.S,
src/m68k/sysv.S, src/mips/n32.S, src/mips/o32.S,
src/powerpc/aix.S, src/powerpc/darwin.S,
src/powerpc/ffi_darwin.c, src/powerpc/linux64.S,
src/powerpc/linux64_closure.S, src/powerpc/ppc_closure.S,
src/powerpc/sysv.S, src/s390/sysv.S, src/sh/sysv.S,
src/sh64/sysv.S, src/sparc/v8.S, src/sparc/v9.S,
src/x86/sysv.S, src/x86/unix64.S, src/x86/win32.S:
include fficonfig.h
From-SVN: r72766
2003-10-01 Andreas Tobler <a.tobler@schweiz.ch>
* testsuite/lib/libffi-dg.exp: Set LD_LIBRARY_PATH_64 for
SPARC64. Cleanup whitespaces.
From-SVN: r71982
2003-09-18 Andreas Tobler <a.tobler@schweiz.ch>
David Edelsohn <edelsohn@gnu.org>
* src/types.c (double): Add AIX and Darwin to the right TYPEDEF.
* src/powerpc/aix_closure.S: Remove the pointer to the outgoing
parameter stack.
* src/powerpc/darwin_closure.S: Likewise.
* src/powerpc/ffi_darwin.c (ffi_prep_args): Handle structures
according to the Darwin/AIX ABI.
(ffi_prep_cif_machdep): Likewise.
(ffi_closure_helper_DARWIN): Likewise.
Remove the outgoing parameter stack logic. Simplify the evaluation
of the different CASE types.
(ffi_prep_clousure): Avoid the casts on lvalues. Change the branch
statement in the trampoline code.
Co-Authored-By: David Edelsohn <edelsohn@gnu.org>
From-SVN: r71530
* src/sh/ffi.c (ffi_prep_args): Take account into the alignement
for the register size.
(ffi_closure_helper_SYSV): Handle the structure return value
address correctly.
(ffi_closure_helper_SYSV): Return the appropriate type when
the registers are used for the structure return value.
* src/sh/sysv.S (ffi_closure_SYSV): Fix the stack layout for
the 64-bit return value. Update copyright years.
From-SVN: r71521
* src/types.c (double, longdouble): Merge identical SH and ARM
typedefs, and add POWERPC64.
* src/powerpc/ffi.c (ffi_prep_args64): Correct next_arg calc for
struct split over gpr and rest.
(ffi_prep_cif_machdep): Correct intarg_count for structures.
* src/powerpc/linux64.S (ffi_call_LINUX64): Fix gpr offsets.
From-SVN: r71295
* src/powerpc/ffi.c (ffi_prep_args64): Modify for changed gcc
structure passing.
(ffi_closure_helper_LINUX64): Likewise.
* src/powerpc/linux64.S: Remove code writing to parm save area.
* src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Use return
address in lr from ffi_closure_helper_LINUX64 call to calculate
table address. Optimize function tail.
From-SVN: r70050
2003-07-28 Andreas Tobler <a.tobler@schweiz.ch>
* src/sparc/ffi.c: Handle all floating point registers.
* src/sparc/v9.S: Likewise. Fixes second part of PR target/11410.
From-SVN: r69951