mirror of
https://github.com/partic2/libffi
synced 2026-11-10 18:17:19 +00:00
Rebase
This commit is contained in:
+138
-24
@@ -1,3 +1,70 @@
|
||||
2010-11-15 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||
|
||||
* testsuite/lib/libffi-dg.exp: Rename ...
|
||||
* testsuite/lib/libffi.exp: ... to this.
|
||||
* libffi/testsuite/libffi.call/call.exp: Don't load libffi-dg.exp.
|
||||
* libffi/testsuite/libffi.special/special.exp: Likewise.
|
||||
|
||||
2010-10-28 Chung-Lin Tang <cltang@codesourcery.com>
|
||||
|
||||
* src/arm/ffi.c (ffi_prep_args): Add VFP register argument handling
|
||||
code, new parameter, and return value. Update comments.
|
||||
(ffi_prep_cif_machdep): Add case for VFP struct return values. Add
|
||||
call to layout_vfp_args().
|
||||
(ffi_call_SYSV): Update declaration.
|
||||
(ffi_call_VFP): New declaration.
|
||||
(ffi_call): Add VFP struct return conditions. Call ffi_call_VFP()
|
||||
when ABI is FFI_VFP.
|
||||
(ffi_closure_VFP): New declaration.
|
||||
(ffi_closure_SYSV_inner): Add new vfp_args parameter, update call to
|
||||
ffi_prep_incoming_args_SYSV().
|
||||
(ffi_prep_incoming_args_SYSV): Update parameters. Add VFP argument
|
||||
case handling.
|
||||
(ffi_prep_closure_loc): Pass ffi_closure_VFP to trampoline
|
||||
construction under VFP hard-float.
|
||||
(rec_vfp_type_p): New function.
|
||||
(vfp_type_p): Same.
|
||||
(place_vfp_arg): Same.
|
||||
(layout_vfp_args): Same.
|
||||
* src/arm/ffitarget.h (ffi_abi): Add FFI_VFP. Define FFI_DEFAULT_ABI
|
||||
based on __ARM_PCS_VFP.
|
||||
(FFI_EXTRA_CIF_FIELDS): Define for adding VFP hard-float specific
|
||||
fields.
|
||||
(FFI_TYPE_STRUCT_VFP_FLOAT): Define internally used type code.
|
||||
(FFI_TYPE_STRUCT_VFP_DOUBLE): Same.
|
||||
* src/arm/sysv.S (ffi_call_SYSV): Change call of ffi_prep_args() to
|
||||
direct call. Move function pointer load upwards.
|
||||
(ffi_call_VFP): New function.
|
||||
(ffi_closure_VFP): Same.
|
||||
|
||||
* testsuite/lib/libffi-dg.exp (check-flags): New function.
|
||||
(dg-skip-if): New function.
|
||||
* testsuite/libffi.call/cls_double_va.c: Skip if target is arm*-*-*
|
||||
and compiler options include -mfloat-abi=hard.
|
||||
* testsuite/libffi.call/cls_longdouble_va.c: Same.
|
||||
|
||||
2010-10-01 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR libffi/45677
|
||||
* src/x86/ffi64.c (ffi_prep_cif_machdep): Ensure cif->bytes is
|
||||
a multiple of 8.
|
||||
* testsuite/libffi.call/many2.c: New test.
|
||||
|
||||
2010-08-20 Mark Wielaard <mjw@redhat.com>
|
||||
|
||||
* src/closures.c (open_temp_exec_file_mnt): Check if getmntent_r
|
||||
returns NULL.
|
||||
|
||||
2010-08-09 Andreas Tobler <andreast@fgznet.ch>
|
||||
|
||||
* configure.ac: Add target powerpc64-*-freebsd*.
|
||||
* configure: Regenerate.
|
||||
* testsuite/libffi.call/cls_align_longdouble_split.c: Pass
|
||||
-mlong-double-128 only to linux targets.
|
||||
* testsuite/libffi.call/cls_align_longdouble_split2.c: Likewise.
|
||||
* testsuite/libffi.call/cls_longdouble.c: Likewise.
|
||||
* testsuite/libffi.call/huge_struct.c: Likewise.
|
||||
|
||||
2010-07-22 Dan Witte <dwitte@mozilla.com>
|
||||
|
||||
* src/*/ffitarget.h: Make FFI_LAST_ABI one past the last valid ABI.
|
||||
@@ -8,29 +75,12 @@
|
||||
|
||||
* src/closures.c (selinux_enabled_check): Fix strncmp usage bug.
|
||||
|
||||
2010-05-05 Michael Kohler <michaelkohler@live.com>
|
||||
2010-07-07 Dan Horák <dan@danny.cz>
|
||||
|
||||
* src/dlmalloc.c (dlfree): Fix spelling.
|
||||
* src/ia64/ffi.c (ffi_prep_cif_machdep): Ditto.
|
||||
* configure.ac: Ditto.
|
||||
* configure: Rebuilt.
|
||||
|
||||
2010-04-13 Dan Witte <dwitte@mozilla.com>
|
||||
|
||||
* msvcc.sh: Build with -W3 instead of -Wall.
|
||||
* src/powerpc/ffi_darwin.c: Remove build warnings.
|
||||
* src/x86/ffi.c: Ditto.
|
||||
* src/x86/ffitarget.h: Ditto.
|
||||
|
||||
2010-03-30 Dan Witte <dwitte@mozilla.com>
|
||||
|
||||
* msvcc.sh: Disable build warnings.
|
||||
* README (tested): Clarify windows build procedure.
|
||||
|
||||
2010-03-14 Matthias Klose <doko@ubuntu.com>
|
||||
|
||||
* src/x86/ffi64.c: Fix typo in comment.
|
||||
* src/x86/ffi.c: Use /* ... */ comment style.
|
||||
* include/ffi.h.in: Protect #define with #ifndef.
|
||||
* src/powerpc/ffitarget.h: Ditto.
|
||||
* src/s390/ffitarget.h: Ditto.
|
||||
* src/sparc/ffitarget.h: Ditto.
|
||||
|
||||
2010-07-07 Neil Roberts <neil@linux.intel.com>
|
||||
|
||||
@@ -52,10 +102,32 @@
|
||||
* fficonfig.h.in: Regenerate.
|
||||
* src/x86/sysv.S (.eh_frame): Use .ascii, .string or error.
|
||||
|
||||
2010-05-05 Michael Kohler <michaelkohler@live.com>
|
||||
|
||||
* src/dlmalloc.c (dlfree): Fix spelling.
|
||||
* src/ia64/ffi.c (ffi_prep_cif_machdep): Ditto.
|
||||
* configure.ac: Ditto.
|
||||
* configure: Rebuilt.
|
||||
|
||||
2010-04-13 Dan Witte <dwitte@mozilla.com>
|
||||
|
||||
* msvcc.sh: Build with -W3 instead of -Wall.
|
||||
* src/powerpc/ffi_darwin.c: Remove build warnings.
|
||||
* src/x86/ffi.c: Ditto.
|
||||
* src/x86/ffitarget.h: Ditto.
|
||||
|
||||
2010-04-12 Dan Witte <dwitte@mozilla.com>
|
||||
Walter Meinl <wuno@lsvw.de>
|
||||
|
||||
* configure.ac: Add OS/2 support.
|
||||
* configure: Rebuilt.
|
||||
* src/closures.c: Ditto.
|
||||
* src/dlmalloc.c: Ditto.
|
||||
* src/x86/win32.S: Ditto.
|
||||
|
||||
2010-04-07 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* regex.c (byte_re_match_2_internal): Avoid set but not used
|
||||
warning.
|
||||
* testsuite/libffi.call/err_bad_abi.c: Remove unused args variable.
|
||||
|
||||
2010-04-02 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
||||
|
||||
@@ -65,6 +137,11 @@
|
||||
* man/Makefile.in: Regenerate.
|
||||
* testsuite/Makefile.in: Regenerate.
|
||||
|
||||
2010-03-30 Dan Witte <dwitte@mozilla.com>
|
||||
|
||||
* msvcc.sh: Disable build warnings.
|
||||
* README (tested): Clarify windows build procedure.
|
||||
|
||||
2010-03-15 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||
|
||||
* configure.ac (libffi_cv_as_x86_64_unwind_section_type): New test.
|
||||
@@ -73,6 +150,11 @@
|
||||
* libffi/src/x86/unix64.S (.eh_frame)
|
||||
[HAVE_AS_X86_64_UNWIND_SECTION_TYPE]: Use @unwind section type.
|
||||
|
||||
2010-03-14 Matthias Klose <doko@ubuntu.com>
|
||||
|
||||
* src/x86/ffi64.c: Fix typo in comment.
|
||||
* src/x86/ffi.c: Use /* ... */ comment style.
|
||||
|
||||
2010-02-24 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||
|
||||
* doc/libffi.texi (The Closure API): Fix typo.
|
||||
@@ -83,6 +165,38 @@
|
||||
* src/arm/sysv.S (__ARM_ARCH__): Define for processor
|
||||
__ARM_ARCH_7EM__.
|
||||
|
||||
2010-01-15 Anthony Green <green@redhat.com>
|
||||
|
||||
* README: Add notes on building with Microsoft Visual C++.
|
||||
|
||||
2010-01-15 Daniel Witte <dwitte@mozilla.com>
|
||||
|
||||
* msvcc.sh: New file.
|
||||
|
||||
* src/x86/win32.S: Port assembly routines to MSVC and #ifdef.
|
||||
* src/x86/ffi.c: Tweak function declaration and remove excess
|
||||
parens.
|
||||
* include/ffi.h.in: Add __declspec(align(8)) to typedef struct
|
||||
ffi_closure.
|
||||
|
||||
* src/x86/ffi.c: Merge ffi_call_SYSV and ffi_call_STDCALL into new
|
||||
function ffi_call_win32 on X86_WIN32.
|
||||
* src/x86/win32.S (ffi_call_SYSV): Rename to ffi_call_win32.
|
||||
(ffi_call_STDCALL): Remove.
|
||||
|
||||
* src/prep_cif.c (ffi_prep_cif): Move stack space allocation code
|
||||
to ffi_prep_cif_machdep for x86.
|
||||
* src/x86/ffi.c (ffi_prep_cif_machdep): To here.
|
||||
|
||||
2010-01-15 Oliver Kiddle <okiddle@yahoo.co.uk>
|
||||
|
||||
* src/x86/ffitarget.h (ffi_abi): Check for __i386 and __amd64 for
|
||||
Sun Studio compiler compatibility.
|
||||
|
||||
2010-01-12 Conrad Irwin <conrad.irwin@gmail.com>
|
||||
|
||||
* doc/libffi.texi: Add closure example.
|
||||
|
||||
2010-01-07 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||
|
||||
PR libffi/40701
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
This is ../libffi/doc/libffi.info, produced by makeinfo version 4.13
|
||||
from ../libffi/doc/libffi.texi.
|
||||
This is doc/libffi.info, produced by makeinfo version 4.12 from
|
||||
./doc/libffi.texi.
|
||||
|
||||
This manual is for Libffi, a portable foreign-function interface
|
||||
library.
|
||||
|
||||
Copyright (C) 2008, 2010 Red Hat, Inc.
|
||||
Copyright (C) 2008 Red Hat, Inc.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this
|
||||
document under the terms of the GNU General Public License as
|
||||
@@ -13,7 +13,7 @@ library.
|
||||
included in the section entitled "GNU General Public License".
|
||||
|
||||
|
||||
INFO-DIR-SECTION Development
|
||||
INFO-DIR-SECTION
|
||||
START-INFO-DIR-ENTRY
|
||||
* libffi: (libffi). Portable foreign-function interface library.
|
||||
END-INFO-DIR-ENTRY
|
||||
@@ -27,7 +27,7 @@ libffi
|
||||
This manual is for Libffi, a portable foreign-function interface
|
||||
library.
|
||||
|
||||
Copyright (C) 2008, 2010 Red Hat, Inc.
|
||||
Copyright (C) 2008 Red Hat, Inc.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this
|
||||
document under the terms of the GNU General Public License as
|
||||
@@ -89,7 +89,6 @@ File: libffi.info, Node: Using libffi, Next: Missing Features, Prev: Introduc
|
||||
* Types:: libffi type descriptions.
|
||||
* Multiple ABIs:: Different passing styles on one platform.
|
||||
* The Closure API:: Writing a generic function.
|
||||
* Closure Example:: A closure example.
|
||||
|
||||
|
||||
File: libffi.info, Node: The Basics, Next: Simple Example, Up: Using libffi
|
||||
@@ -369,7 +368,7 @@ instance, the x86 platform has both `stdcall' and `fastcall' functions.
|
||||
necessarily platform-specific.
|
||||
|
||||
|
||||
File: libffi.info, Node: The Closure API, Next: Closure Example, Prev: Multiple ABIs, Up: Using libffi
|
||||
File: libffi.info, Node: The Closure API, Prev: Multiple ABIs, Up: Using libffi
|
||||
|
||||
2.5 The Closure API
|
||||
===================
|
||||
@@ -444,62 +443,6 @@ closure function:
|
||||
is deprecated, as it cannot handle the need for separate writable and
|
||||
executable addresses.
|
||||
|
||||
|
||||
File: libffi.info, Node: Closure Example, Prev: The Closure API, Up: Using libffi
|
||||
|
||||
2.6 Closure Example
|
||||
===================
|
||||
|
||||
A trivial example that creates a new `puts' by binding `fputs' with
|
||||
`stdin'.
|
||||
|
||||
#include <stdio.h>
|
||||
#include <ffi.h>
|
||||
|
||||
/* Acts like puts with the file given at time of enclosure. */
|
||||
void puts_binding(ffi_cif *cif, unsigned int *ret, void* args[],
|
||||
FILE *stream)
|
||||
{
|
||||
*ret = fputs(*(char **)args[0], stream);
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
ffi_cif cif;
|
||||
ffi_type *args[1];
|
||||
ffi_closure *closure;
|
||||
|
||||
int (*bound_puts)(char *);
|
||||
int rc;
|
||||
|
||||
/* Allocate closure and bound_puts */
|
||||
closure = ffi_closure_alloc(sizeof(ffi_closure), &bound_puts);
|
||||
|
||||
if (closure)
|
||||
{
|
||||
/* Initialize the argument info vectors */
|
||||
args[0] = &ffi_type_pointer;
|
||||
|
||||
/* Initialize the cif */
|
||||
if (ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1,
|
||||
&ffi_type_uint, args) == FFI_OK)
|
||||
{
|
||||
/* Initialize the closure, setting stream to stdout */
|
||||
if (ffi_prep_closure_loc(closure, &cif, puts_binding,
|
||||
stdout, bound_puts) == FFI_OK)
|
||||
{
|
||||
rc = bound_puts("Hello World!");
|
||||
/* rc now holds the result of the call to fputs */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Deallocate both closure, and bound_puts */
|
||||
ffi_closure_free(closure);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
File: libffi.info, Node: Missing Features, Next: Index, Prev: Using libffi, Up: Top
|
||||
|
||||
@@ -537,7 +480,7 @@ Index
|
||||
* closures: The Closure API. (line 13)
|
||||
* FFI: Introduction. (line 31)
|
||||
* ffi_call: The Basics. (line 41)
|
||||
* ffi_closure_alloc: The Closure API. (line 19)
|
||||
* ffi_closure_alloca: The Closure API. (line 19)
|
||||
* ffi_closure_free: The Closure API. (line 26)
|
||||
* FFI_CLOSURES: The Closure API. (line 13)
|
||||
* ffi_prep_cif: The Basics. (line 16)
|
||||
@@ -573,19 +516,18 @@ Index
|
||||
|
||||
|
||||
Tag Table:
|
||||
Node: Top706
|
||||
Node: Introduction1448
|
||||
Node: Using libffi3084
|
||||
Node: The Basics3570
|
||||
Node: Simple Example6177
|
||||
Node: Types7204
|
||||
Node: Primitive Types7487
|
||||
Node: Structures9307
|
||||
Node: Type Example10167
|
||||
Node: Multiple ABIs11390
|
||||
Node: The Closure API11761
|
||||
Node: Closure Example14705
|
||||
Node: Missing Features16264
|
||||
Node: Index16757
|
||||
Node: Top670
|
||||
Node: Introduction1406
|
||||
Node: Using libffi3042
|
||||
Node: The Basics3477
|
||||
Node: Simple Example6084
|
||||
Node: Types7111
|
||||
Node: Primitive Types7394
|
||||
Node: Structures9214
|
||||
Node: Type Example10074
|
||||
Node: Multiple ABIs11297
|
||||
Node: The Closure API11668
|
||||
Node: Missing Features14588
|
||||
Node: Index15081
|
||||
|
||||
End Tag Table
|
||||
|
||||
Reference in New Issue
Block a user