Commit Graph

940 Commits

Author SHA1 Message Date
Sebastian Macke
0f316ab7c1 Add OpenRISC support
This patch adds support for the OpenRISC architecture.
(http://opencores.org/or1k/Main_Page)

This patch has been tested under Linux with QEMU-user emulation support.
- 32 Bit
- big endian
- delayed instructions
This is the only available configuration under Linux.

The description of the ABI can be found on the official website.

Is passes the testsuite except of the unwindtest_ffi_call.cc
testcase, which seems to be a problem of gcc and not libffi.
Some testcases of the gcc testsuite still fail.

Signed-off-by: Sebastian Macke <sebastian@macke.de>
2014-09-27 00:56:56 +00:00
Anthony Green
6695983d2f Add complex type support. Mostly broken right now 2014-09-20 07:44:37 -04:00
Anthony Green
fbbf48fbdf Compile tests with -Wno-psabi when using GCC 2014-09-20 07:43:51 -04:00
Anthony Green
ae8d2554c5 Update version to 3.2 2014-09-20 07:08:37 -04:00
Anthony Green
b2ca59d39d More README updates for 3.2 2014-09-20 07:08:05 -04:00
Anthony Green
f920a01ad8 Update release notes. 2014-09-20 06:54:06 -04:00
Bernd Edlinger
bfcbf329c5 2014-05-11 Bernd Edlinger <bernd.edlinger@hotmail.de>
Fix current cygwin-64 build problems.
	* src/java_raw_api.c: Remove if !defined(FFI_NO_RAW_API).
	* src/x86/ffi.c: Add if defined(__CYGWIN__).
	* src/x86/win64.S (ffi_closure_win64, ffi_call_win64): Added
	handling for FFI_TYPE_UINT64, FFI_TYPE_POINTER and FFI_TYPE_INT.
	Added SEH information.  Fixed formatting.
2014-09-20 06:51:45 -04:00
Jakub Jelinek
32cb2ce81d 2014-09-10 Jakub Jelinek <jakub@redhat.com>
* src/powerpc/linux64.S: Emit .note.GNU-stack even when
	POWERPC64 is not defined.
	* src/powerpc/linux64_closure.S: Likewise.  Also test _CALL_ELF == 2.
2014-09-20 06:39:55 -04:00
Matthias Klose
aaf3101ba8 Fix -Werror=declaration-after-statement problem 2014-09-20 06:37:04 -04:00
Dominik Vogt
6e8a446083 2014-07-22 Dominik Vogt <vogt@linux.vnet.ibm.com>
* src/types.c (FFI_TYPEDEF, FFI_NONCONST_TYPEDEF): Merge the macros by
	adding another argument that controls whether the result is const or not
	(FFI_LDBL_CONST): Temporary macro to reduce ifdef confusion
	* src/prep_cif.c (ffi_prep_cif_core): Replace list of systems with new
	macro FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION
	* src/pa/ffitarget.h (FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION):
	Define.
	* src/s390/ffitarget.h (FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION):
	Define.
	* src/x86/ffitarget.h (FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION):
	Define.

2014-07-22  Dominik Vogt  <vogt@linux.vnet.ibm.com>

	* doc/libffi.texi (Primitive Types): Document ffi_type_complex_float,
	ffi_type_complex_double and ffi_type_complex_longdouble
	(Complex Types): New subsection.
	(Complex Type Example): Ditto.
	* testsuite/libffi.call/cls_align_complex_double.c: New
	FFI_TYPE_COMPLEX test.
	* testsuite/libffi.call/cls_align_complex_float.c: Ditto.
	* testsuite/libffi.call/cls_align_complex_longdouble.c: Ditto.
	* testsuite/libffi.call/cls_complex_double.c: Ditto.
	* testsuite/libffi.call/cls_complex_float.c: Ditto.
	* testsuite/libffi.call/cls_complex_longdouble.c: Ditto.
	* testsuite/libffi.call/cls_complex_struct_double.c: Ditto.
	* testsuite/libffi.call/cls_complex_struct_float.c: Ditto.
	* testsuite/libffi.call/cls_complex_struct_longdouble.c: Ditto.
	* testsuite/libffi.call/cls_complex_va_double.c: Ditto.
	* testsuite/libffi.call/cls_complex_va_float.c: Ditto.
	* testsuite/libffi.call/cls_complex_va_longdouble.c: Ditto.
	* testsuite/libffi.call/complex_double.c: Ditto.
	* testsuite/libffi.call/complex_defs_double.c: Ditto.
	* testsuite/libffi.call/complex_float.c: Ditto.
	* testsuite/libffi.call/complex_defs_float.c: Ditto.
	* testsuite/libffi.call/complex_longdouble.c: Ditto.
	* testsuite/libffi.call/complex_defs_longdouble.c: Ditto.
	* testsuite/libffi.call/complex_int.c: Ditto.
	* testsuite/libffi.call/many_complex_double.c: Ditto.
	* testsuite/libffi.call/many_complex_float.c: Ditto.
	* testsuite/libffi.call/many_complex_longdouble.c: Ditto.
	* testsuite/libffi.call/return_complex1_double.c: Ditto.
	* testsuite/libffi.call/return_complex1_float.c: Ditto.
	* testsuite/libffi.call/return_complex1_longdouble.c: Ditto.
	* testsuite/libffi.call/return_complex2_double.c: Ditto.
	* testsuite/libffi.call/return_complex2_float.c: Ditto.
	* testsuite/libffi.call/return_complex2_longdouble.c: Ditto.
	* testsuite/libffi.call/return_complex_double.c: Ditto.
	* testsuite/libffi.call/return_complex_float.c: Ditto.
	* testsuite/libffi.call/return_complex_longdouble.c: Ditto.
	* src/raw_api.c (ffi_raw_to_ptrarray): Handle FFI_TYPE_COMPLEX
	(ffi_ptrarray_to_raw): Ditto.
	* src/prep_cif.c (ffi_prep_cif_core): Abort if FFI_TYPE_COMPLEX is not
	implemented in libffi for the target.
	* src/java_raw_api.c (ffi_java_raw_size): FFI_TYPE_COMPLEX not supported
	yet (abort).
	(ffi_java_raw_to_ptrarray): Ditto.
	(ffi_java_rvalue_to_raw): Ditto.
	(ffi_java_raw_to_rvalue):  Ditto.
	* src/debug.c (ffi_type_test): Add debug tests for complex types.
	* include/ffi.h.in (FFI_TYPE_COMPLEX): Add new FFI_TYPE_COMPLEX.
	(FFI_TYPE_LAST): Bump.
	(ffi_type_complex_float): Add new ffi_type_....
	(ffi_type_complex_double): Ditto.
	(ffi_type_complex_longdouble): Ditto.

2014-07-22  Dominik Vogt  <vogt@linux.vnet.ibm.com>

	* src/s390/ffitarget.h (FFI_TARGET_HAS_COMPLEX_TYPE): Define to provide
	FFI_TYPE_COMPLEX support.
	* src/s390/ffi.c (ffi_check_struct_type): Implement FFI_TYPE_COMPLEX
	(ffi_prep_args): Ditto.
	(ffi_prep_cif_machdep): Ditto.
	(ffi_closure_helper_SYSV): Ditto.
2014-09-20 06:24:41 -04:00
Anthony Green
4c5c4088aa Merge pull request #132 from nielsAD/master
Pascal and Register calling convention support on x86
2014-09-18 19:10:54 -04:00
Anthony Green
862f53de04 Merge pull request #130 from frida/fix/darwin-aarch64-float-alignment
Fix alignment of FFI_TYPE_FLOAT for Apple's ARM64 ABI
2014-09-18 19:06:08 -04:00
Anthony Green
5df384077f Merge pull request #129 from frida/fix/darwin-aarch64-cif-prep
Fix non-variadic CIF initialization for Apple/ARM64
2014-09-18 19:05:35 -04:00
Anthony Green
7b7a5284de Merge pull request #124 from knuesel/master
Fix issue with builddir when calling configure with absolute path
2014-09-18 18:28:05 -04:00
Anthony Green
4cd5e84012 Merge pull request #123 from ehsan/clang-cl
Add support for building with clang-cl
2014-09-18 18:27:15 -04:00
nielsAD
5d6340ef2c Determine whether register arguments (THISCALL/FASTCALL/REGISTER) are really passed via register to closures. Use stack if not. 2014-08-25 17:42:07 +02:00
nielsAD
6e346487b8 Fixed THISCALL/FASTCALL closures and added basic support for PASCAL/REGISTER closures. 2014-08-25 12:23:29 +02:00
nielsAD
098dca6b31 Support for calling functions with PASCAL and REGISTER calling conventions on x86 Windows/Linux.
Also changed indentation to be more consistent throughout the (adjusted) files.
2014-08-24 14:29:38 +02:00
Ehsan Akhgari
08853e32fb Enable forcing the usage of the static CRT in libffi's msvc wrapper
This is required for AddressSanitizer builds with clang-cl.
2014-07-31 20:35:49 -04:00
Ole André Vadla Ravnås
aebf2c3023 Fix alignment of FFI_TYPE_FLOAT for Apple's ARM64 ABI 2014-07-26 00:17:47 +02:00
Ole André Vadla Ravnås
0f4e09d27d Fix non-variadic CIF initialization for Apple/ARM64
Turns out `aarch64_nfixedargs` wasn't initialized in the non-variadic
case, resulting in undefined behavior when allocating arguments.
2014-07-26 00:17:07 +02:00
Jeremie Knuesel
6172a995e1 Fix issue with builddir when calling configure with absolute path 2014-06-25 12:36:20 +02:00
Ehsan Akhgari
fb25cd08ed Add support for building with clang-cl 2014-06-12 20:42:18 -04:00
Anthony Green
1cee07be47 Remove compiler warning 2014-06-12 06:30:59 -04:00
Samuli Suominen
ad0d1d239a Fix paths in libffi.pc.in 2014-06-12 06:30:21 -04:00
Anthony Green
df31a85103 Merge pull request #122 from rvandermeulen/1014976
Don't make --enable-debug imply using the debug CRT in libffi
2014-06-06 08:24:35 -04:00
Mike Hommey
360aa8ca1e Bug 1014976 - Don't make --enable-debug imply using the debug CRT in libffi. 2014-06-02 09:21:10 -04:00
Anthony Green
69289c10b0 Prepare for libffi 3.1.1 2014-05-31 08:54:08 -04:00
Samuli Suominen
978c954015 Add missing GNU stack markings in win32.S 2014-05-31 08:53:10 -04:00
Ryan Hill
cbc5a3c020 Fix typo 2014-05-31 08:26:34 -04:00
Anthony Green
9d8e3018ac Update current version. 2014-05-24 23:28:42 -04:00
Anthony Green
18d56cca5a Increment libtool version number 2014-05-19 18:05:33 -04:00
Anthony Green
629f1029c4 Merge pull request #120 from l0kod/tmpfile
Create temporary file with O_TMPFILE and O_CLOEXEC when available
2014-05-19 18:04:28 -04:00
Mickaël Salaün
c1166d4f65 closures: Check for mkostemp(3) 2014-05-19 23:11:33 +02:00
Mickaël Salaün
8daeed9570 closures: Create temporary file with O_TMPFILE and O_CLOEXEC when available
The open_temp_exec_file_dir function can create a temporary file without
file system accessible link. If the O_TMPFILE flag is not defined (old
Linux kernel or libc) the behavior is unchanged.

The open_temp_exec_file_name function now need a new argument "flags"
(like O_CLOEXEC) used for temporary file creation.

The O_TMPFILE flag allow temporary file creation without race condition.
This feature/fix prevent another process to access the (future)
executable file from the file system.

The O_CLOEXEC flag automatically close the temporary file for any
execve. This avoid transmitting (executable) file descriptor to a child
process.
2014-05-19 23:11:33 +02:00
Anthony Green
0403f332b1 Update date. Annoucing 3.1 today. 2014-05-19 09:41:32 -04:00
Anthony Green
94ac0c168e Increment libtool library revision number 2014-05-19 09:37:21 -04:00
Anthony Green
57465744b6 Update to version 3.1 2014-05-11 10:30:22 -04:00
Anthony Green
0c2251a42d Support versions of git older than 1.8.5 2014-05-11 10:22:30 -04:00
Anthony Green
70c303cb88 Fix testsuite for GCC 4.9.0 2014-05-11 09:56:40 -04:00
Magnus Granberg
52b3457093 Check /proc/self/status for PaX status. 2014-05-11 09:55:28 -04:00
Dominik Vogt
7ba4c5d72a Use to get correct dir 2014-05-11 09:52:47 -04:00
Anthony Green
31e0d4ecff Merge pull request #119 from joshtriplett/fastcall-fastball
src/x86/win32.S: Define ffi_closure_FASTCALL in the MASM section, too
2014-04-23 19:24:47 -04:00
Josh Triplett
99909eb618 src/x86/win32.S: Define ffi_closure_FASTCALL in the MASM section, too 2014-04-22 21:17:52 -07:00
Anthony Green
1c0e9a7297 Merge pull request #101 from joshtriplett/fastcall-closures
Support closures for fastcall
2014-04-21 12:41:56 -04:00
Josh Triplett
d36952273d Support fastcall closures
libffi on 32-bit x86 now supports closures for all supported ABIs.
Thus, rewrite the last remaining duplicated-by-ABI test (closure_stdcall
and closure_thiscall) to use the generic ABI_NUM/ABI_ATTR mechanism.
2014-04-20 17:08:37 -07:00
Anthony Green
93a24f216b Merge pull request #80 from ueno/devel
Fix typo in doc
2014-04-12 19:38:07 -04:00
Anthony Green
dd11a04061 Merge pull request #86 from joshtriplett/testsuite-CC-CXX
testsuite ignores CC parameter supplied to configure or make
2014-04-12 19:37:21 -04:00
Anthony Green
8fa2812355 Merge pull request #116 from frida/fix/darwin-aarch64-variadic
Fix handling of variadic calls on Darwin/AArch64
2014-04-12 19:32:08 -04:00
Anthony Green
8a58e6b780 Merge pull request #115 from frida/fix/darwin-aarch64-alignment
Fix alignment of AArch64 assembler functions
2014-04-12 19:30:18 -04:00