diff options
author | Anthony Green <green@moxielogic.com> | 2012-04-06 08:26:14 -0400 |
---|---|---|
committer | Anthony Green <green@moxielogic.com> | 2012-04-06 08:26:14 -0400 |
commit | 59bb61a36661b972e8443531d3b7bc736e131a4b (patch) | |
tree | 1dc0c79aaf889ce0d9187efc635d91a08e8eb04e /doc | |
parent | f2981454cbe25cf9411b710f46c5f5552003a123 (diff) | |
download | libffi-59bb61a36661b972e8443531d3b7bc736e131a4b.tar.gz |
Update libtool version, README, tests dists
Diffstat (limited to 'doc')
-rw-r--r-- | doc/libffi.info | 78 | ||||
-rw-r--r-- | doc/stamp-vti | 8 | ||||
-rw-r--r-- | doc/version.texi | 8 |
3 files changed, 60 insertions, 34 deletions
diff --git a/doc/libffi.info b/doc/libffi.info index f92aae6..402f760 100644 --- a/doc/libffi.info +++ b/doc/libffi.info @@ -1,10 +1,10 @@ -This is /home/green/libffi/doc/libffi.info, produced by makeinfo -version 4.13 from /home/green/libffi/doc/libffi.texi. +This is ../libffi/doc/libffi.info, produced by makeinfo version 4.13 +from ../libffi/doc/libffi.texi. This manual is for Libffi, a portable foreign-function interface library. - Copyright (C) 2008, 2010 Red Hat, Inc. + Copyright (C) 2008, 2010, 2011 Red Hat, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License as @@ -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, 2010, 2011 Red Hat, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License as @@ -115,8 +115,6 @@ To prepare a call interface object, use the function `ffi_prep_cif'. want. *note Multiple ABIs:: for more information. NARGS is the number of arguments that this function accepts. - `libffi' does not yet handle varargs functions; see *note Missing - Features:: for more information. RTYPE is a pointer to an `ffi_type' structure that describes the return type of the function. *Note Types::. @@ -129,6 +127,30 @@ To prepare a call interface object, use the function `ffi_prep_cif'. properly; `FFI_BAD_TYPEDEF' if one of the `ffi_type' objects is incorrect; or `FFI_BAD_ABI' if the ABI parameter is invalid. + If the function being called is variadic (varargs) then +`ffi_prep_cif_var' must be used instead of `ffi_prep_cif'. + + -- Function: ffi_status ffi_prep_cif_var (ffi_cif *CIF, ffi_abi + varabi, unsigned int NFIXEDARGS, unsigned int varntotalargs, + ffi_type *RTYPE, ffi_type **ARGTYPES) + This initializes CIF according to the given parameters for a call + to a variadic function. In general it's operation is the same as + for `ffi_prep_cif' except that: + + NFIXEDARGS is the number of fixed arguments, prior to any variadic + arguments. It must be greater than zero. + + NTOTALARGS the total number of arguments, including variadic and + fixed arguments. + + Note that, different cif's must be prepped for calls to the same + function when different numbers of arguments are passed. + + Also note that a call to `ffi_prep_cif_var' with + NFIXEDARGS=NOTOTALARGS is NOT equivalent to a call to + `ffi_prep_cif'. + + To call a function using an initialized `ffi_cif', use the `ffi_call' function: @@ -147,7 +169,9 @@ To prepare a call interface object, use the function `ffi_prep_cif'. AVALUES is a vector of `void *' pointers that point to the memory locations holding the argument values for a call. If CIF declares that the function has no arguments (i.e., NARGS was 0), then - AVALUES is ignored. + AVALUES is ignored. Note that argument values may be modified by + the callee (for instance, structs passed by value); the burden of + copying pass-by-value arguments is placed on the caller. File: libffi.info, Node: Simple Example, Next: Types, Prev: The Basics, Up: Using libffi @@ -509,9 +533,7 @@ File: libffi.info, Node: Missing Features, Next: Index, Prev: Using libffi, `libffi' is missing a few features. We welcome patches to add support for these. - * There is no support for calling varargs functions. This may work - on some platforms, depending on how the ABI is defined, but it is - not reliable. + * Variadic closures. * There is no support for bit fields in structures. @@ -519,6 +541,9 @@ for these. * The "raw" API is undocumented. + Note that variadic support is very new and tested on a relatively +small number of platforms. + File: libffi.info, Node: Index, Prev: Missing Features, Up: Top @@ -536,11 +561,12 @@ Index * closure API: The Closure API. (line 13) * closures: The Closure API. (line 13) * FFI: Introduction. (line 31) -* ffi_call: The Basics. (line 41) +* ffi_call: The Basics. (line 63) * ffi_closure_alloc: 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) +* ffi_prep_cif_var: The Basics. (line 39) * ffi_prep_closure_loc: The Closure API. (line 34) * ffi_status <1>: The Closure API. (line 37) * ffi_status: The Basics. (line 18) @@ -568,24 +594,24 @@ Index * ffi_type_void: Primitive Types. (line 10) * Foreign Function Interface: Introduction. (line 31) * void <1>: The Closure API. (line 20) -* void: The Basics. (line 43) +* void: The Basics. (line 65) Tag Table: -Node: Top724 -Node: Introduction1466 -Node: Using libffi3102 -Node: The Basics3588 -Node: Simple Example6195 -Node: Types7222 -Node: Primitive Types7505 -Node: Structures9325 -Node: Type Example10185 -Node: Multiple ABIs11408 -Node: The Closure API11779 -Node: Closure Example14723 -Node: Missing Features16282 -Node: Index16775 +Node: Top712 +Node: Introduction1460 +Node: Using libffi3096 +Node: The Basics3582 +Node: Simple Example7224 +Node: Types8251 +Node: Primitive Types8534 +Node: Structures10354 +Node: Type Example11214 +Node: Multiple ABIs12437 +Node: The Closure API12808 +Node: Closure Example15752 +Node: Missing Features17311 +Node: Index17764 End Tag Table diff --git a/doc/stamp-vti b/doc/stamp-vti index 81d0b79..5020f33 100644 --- a/doc/stamp-vti +++ b/doc/stamp-vti @@ -1,4 +1,4 @@ -@set UPDATED 14 February 2008 -@set UPDATED-MONTH February 2008 -@set EDITION 3.0.8 -@set VERSION 3.0.8 +@set UPDATED 30 March 2012 +@set UPDATED-MONTH March 2012 +@set EDITION 3.0.11-rc3 +@set VERSION 3.0.11-rc3 diff --git a/doc/version.texi b/doc/version.texi index 81d0b79..5020f33 100644 --- a/doc/version.texi +++ b/doc/version.texi @@ -1,4 +1,4 @@ -@set UPDATED 14 February 2008 -@set UPDATED-MONTH February 2008 -@set EDITION 3.0.8 -@set VERSION 3.0.8 +@set UPDATED 30 March 2012 +@set UPDATED-MONTH March 2012 +@set EDITION 3.0.11-rc3 +@set VERSION 3.0.11-rc3 |