# PaCkAgE DaTaStReAm libffi 1 444 # end of header 07070100087da2000081a40000000000000000000000014dc9ec4f000001190000010000010007ffffffffffffffff0000000f00000000libffi/pkginfoPKG=libffi NAME=libffi 3.0.9 SPARC 64bit Solaris 10 VERSION=3.0.9 PSTAMP=11th May 2011 VENDOR=libffi Project EMAIL=http://sourceware.org/libffi/ DESC=Portable Foreign Function Interface Library ARCH=sparc CATEGORY=utility CLASSES=none BASEDIR=/ ISTATES=S s 1 2 3 RSTATES=S s 1 2 3 07070100087da1000081a40000000000000000000000014dc9ec4f000005d40000010000010007ffffffffffffffff0000000e00000000libffi/pkgmap: 1 444 1 d none /usr ? ? ? 1 d none /usr/local ? ? ? 1 d none /usr/local/lib 0755 root root 1 d none /usr/local/lib/libffi-3.0.9 0755 root root 1 d none /usr/local/lib/libffi-3.0.9/include 0755 root root 1 f none /usr/local/lib/libffi-3.0.9/include/ffi.h 0644 root root 10885 3677 1305078752 1 f none /usr/local/lib/libffi-3.0.9/include/ffitarget.h 0644 root root 2081 22450 1305078752 1 f none /usr/local/lib/libffi.a 0644 root root 76024 16840 1305078753 1 f none /usr/local/lib/libffi.la 0755 root root 931 15847 1305078753 1 s none /usr/local/lib/libffi.so=libffi.so.5.0.10 1 s none /usr/local/lib/libffi.so.5=libffi.so.5.0.10 1 f none /usr/local/lib/libffi.so.5.0.10 0755 root root 58152 12343 1305078753 1 d none /usr/local/lib/pkgconfig 0755 root root 1 f none /usr/local/lib/pkgconfig/libffi.pc 0644 root root 245 22356 1305078753 1 d none /usr/local/share 0755 root root 1 d none /usr/local/share/info 0755 root root 1 f none /usr/local/share/info/dir 0644 root root 6495 27081 1305078753 1 f none /usr/local/share/info/libffi.info 0644 root root 18541 26468 1305078753 1 d none /usr/local/share/man 0755 root root 1 d none /usr/local/share/man/man3 0755 root root 1 f none /usr/local/share/man/man3/ffi.3 0644 root root 648 53376 1305078752 1 f none /usr/local/share/man/man3/ffi_call.3 0644 root root 2333 62695 1305078752 1 f none /usr/local/share/man/man3/ffi_prep_cif.3 0644 root root 1053 22406 1305078752 1 i checkinstall 785 2565 1305078860 1 i pkginfo 281 22036 1305078863 07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000b00000000TRAILER!!!07070100087da2000081a40000000000000000000000014dc9ec4f000001190000010000010007ffffffffffffffff0000000800000000pkginfoPKG=libffi NAME=libffi 3.0.9 SPARC 64bit Solaris 10 VERSION=3.0.9 PSTAMP=11th May 2011 VENDOR=libffi Project EMAIL=http://sourceware.org/libffi/ DESC=Portable Foreign Function Interface Library ARCH=sparc CATEGORY=utility CLASSES=none BASEDIR=/ ISTATES=S s 1 2 3 RSTATES=S s 1 2 3 07070100087da1000081a40000000000000000000000014dc9ec4f000005d40000010000010007ffffffffffffffff0000000700000000pkgmap: 1 444 1 d none /usr ? ? ? 1 d none /usr/local ? ? ? 1 d none /usr/local/lib 0755 root root 1 d none /usr/local/lib/libffi-3.0.9 0755 root root 1 d none /usr/local/lib/libffi-3.0.9/include 0755 root root 1 f none /usr/local/lib/libffi-3.0.9/include/ffi.h 0644 root root 10885 3677 1305078752 1 f none /usr/local/lib/libffi-3.0.9/include/ffitarget.h 0644 root root 2081 22450 1305078752 1 f none /usr/local/lib/libffi.a 0644 root root 76024 16840 1305078753 1 f none /usr/local/lib/libffi.la 0755 root root 931 15847 1305078753 1 s none /usr/local/lib/libffi.so=libffi.so.5.0.10 1 s none /usr/local/lib/libffi.so.5=libffi.so.5.0.10 1 f none /usr/local/lib/libffi.so.5.0.10 0755 root root 58152 12343 1305078753 1 d none /usr/local/lib/pkgconfig 0755 root root 1 f none /usr/local/lib/pkgconfig/libffi.pc 0644 root root 245 22356 1305078753 1 d none /usr/local/share 0755 root root 1 d none /usr/local/share/info 0755 root root 1 f none /usr/local/share/info/dir 0644 root root 6495 27081 1305078753 1 f none /usr/local/share/info/libffi.info 0644 root root 18541 26468 1305078753 1 d none /usr/local/share/man 0755 root root 1 d none /usr/local/share/man/man3 0755 root root 1 f none /usr/local/share/man/man3/ffi.3 0644 root root 648 53376 1305078752 1 f none /usr/local/share/man/man3/ffi_call.3 0644 root root 2333 62695 1305078752 1 f none /usr/local/share/man/man3/ffi_prep_cif.3 0644 root root 1053 22406 1305078752 1 i checkinstall 785 2565 1305078860 1 i pkginfo 281 22036 1305078863 07070100087db9000041ed0000000000000000000000024dc9ec4f000000000000010000010007ffffffffffffffff0000000800000000install07070100087dba000081ed0000000000000000000000014dc9ec4c000003110000010000010007ffffffffffffffff0000001500000000install/checkinstall#!/bin/sh # expected_bits="64" expected_release="5.10" expected_platform="sparc" # release=`uname -r` platform=`uname -p` bits=`isainfo -b` # if [ ${platform} != ${expected_platform} ]; then echo "\n\n\n\tThis package must be installed on a ${expected_platform} architecture\n" echo "\tAborting installation.\n\n\n" exit 1 fi if [ ${release} != ${expected_release} ]; then echo "\n\n\n\tThis package must be installed on a ${expected_release} machine\n" echo "\tAborting installation.\n\n\n" exit 1 fi if [ ${bits} != ${expected_bits} ]; then echo "\n\n\n\tThis package must be installed on a ${expected_bits} bit machine\n" echo "\tYour machine is running a ${bits} bit O.S. currently\n" echo "\tAborting installation.\n\n\n" exit 1 fi exit 0 07070100087da3000041ed0000000000000000000000034dc9ec4f000000000000010000010007ffffffffffffffff0000000500000000root07070100087da4000041ed0000000000000000000000034dc9ec4f000000000000010000010007ffffffffffffffff0000000900000000root/usr07070100087da5000041ed0000000000000000000000044dc9ec4f000000000000010000010007ffffffffffffffff0000000f00000000root/usr/local07070100087db0000041ed0000000000000000000000044dc9ec4f000000000000010000010007ffffffffffffffff0000001500000000root/usr/local/share07070100087db4000041ed0000000000000000000000034dc9ec4f000000000000010000010007ffffffffffffffff0000001900000000root/usr/local/share/man07070100087db5000041ed0000000000000000000000024dc9ec4f000000000000010000010007ffffffffffffffff0000001e00000000root/usr/local/share/man/man307070100087db7000081a40000000000000000000000014dc9ebe00000091d0000010000010007ffffffffffffffff0000002900000000root/usr/local/share/man/man3/ffi_call.3.Dd February 15, 2008 .Dt ffi_call 3 .Sh NAME .Nm ffi_call .Nd Invoke a foreign function. .Sh SYNOPSIS .In ffi.h .Ft void .Fo ffi_call .Fa "ffi_cif *cif" .Fa "void (*fn)(void)" .Fa "void *rvalue" .Fa "void **avalue" .Fc .Sh DESCRIPTION The .Nm ffi_call function provides a simple mechanism for invoking a function without requiring knowledge of the function's interface at compile time. .Fa fn is called with the values retrieved from the pointers in the .Fa avalue array. The return value from .Fa fn is placed in storage pointed to by .Fa rvalue . .Fa cif contains information describing the data types, sizes and alignments of the arguments to and return value from .Fa fn , and must be initialized with .Nm ffi_prep_cif before it is used with .Nm ffi_call . .Pp .Fa rvalue must point to storage that is sizeof(ffi_arg) or larger for non-floating point types. For smaller-sized return value types, the .Nm ffi_arg or .Nm ffi_sarg integral type must be used to hold the return value. .Sh EXAMPLES .Bd -literal #include #include unsigned char foo(unsigned int, float); int main(int argc, const char **argv) { ffi_cif cif; ffi_type *arg_types[2]; void *arg_values[2]; ffi_status status; // Because the return value from foo() is smaller than sizeof(long), it // must be passed as ffi_arg or ffi_sarg. ffi_arg result; // Specify the data type of each argument. Available types are defined // in . arg_types[0] = &ffi_type_uint; arg_types[1] = &ffi_type_float; // Prepare the ffi_cif structure. if ((status = ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &ffi_type_uint8, arg_types)) != FFI_OK) { // Handle the ffi_status error. } // Specify the values of each argument. unsigned int arg1 = 42; float arg2 = 5.1; arg_values[0] = &arg1; arg_values[1] = &arg2; // Invoke the function. ffi_call(&cif, FFI_FN(foo), &result, arg_values); // The ffi_arg 'result' now contains the unsigned char returned from foo(), // which can be accessed by a typecast. printf("result is %hhu", (unsigned char)result); return 0; } // The target function. unsigned char foo(unsigned int x, float y) { unsigned char result = x - y; return result; } .Ed .Sh SEE ALSO .Xr ffi 3 , .Xr ffi_prep_cif 3 07070100087db8000081a40000000000000000000000014dc9ebe00000041d0000010000010007ffffffffffffffff0000002d00000000root/usr/local/share/man/man3/ffi_prep_cif.3.Dd February 15, 2008 .Dt ffi_prep_cif 3 .Sh NAME .Nm ffi_prep_cif .Nd Prepare a .Nm ffi_cif structure for use with .Nm ffi_call . .Sh SYNOPSIS .In ffi.h .Ft ffi_status .Fo ffi_prep_cif .Fa "ffi_cif *cif" .Fa "ffi_abi abi" .Fa "unsigned int nargs" .Fa "ffi_type *rtype" .Fa "ffi_type **atypes" .Fc .Sh DESCRIPTION The .Nm ffi_prep_cif function prepares a .Nm ffi_cif structure for use with .Nm ffi_call . .Fa abi specifies a set of calling conventions to use. .Fa atypes is an array of .Fa nargs pointers to .Nm ffi_type structs that describe the data type, size and alignment of each argument. .Fa rtype points to an .Nm ffi_type that describes the data type, size and alignment of the return value. .Sh RETURN VALUES Upon successful completion, .Nm ffi_prep_cif returns .Nm FFI_OK . It will return .Nm FFI_BAD_TYPEDEF if .Fa cif is .Nm NULL or .Fa atypes or .Fa rtype is malformed. If .Fa abi does not refer to a valid ABI, .Nm FFI_BAD_ABI will be returned. Available ABIs are defined in .Nm . .Sh SEE ALSO .Xr ffi 3 , .Xr ffi_call 3 07070100087db6000081a40000000000000000000000014dc9ebe0000002880000010000010007ffffffffffffffff0000002400000000root/usr/local/share/man/man3/ffi.3.Dd February 15, 2008 .Dt FFI 3 .Sh NAME .Nm FFI .Nd Foreign Function Interface .Sh LIBRARY libffi, -lffi .Sh SYNOPSIS .In ffi.h .Ft ffi_status .Fo ffi_prep_cif .Fa "ffi_cif *cif" .Fa "ffi_abi abi" .Fa "unsigned int nargs" .Fa "ffi_type *rtype" .Fa "ffi_type **atypes" .Fc .Ft void .Fo ffi_call .Fa "ffi_cif *cif" .Fa "void (*fn)(void)" .Fa "void *rvalue" .Fa "void **avalue" .Fc .Sh DESCRIPTION The foreign function interface provides a mechanism by which a function can generate a call to another function at runtime without requiring knowledge of the called function's interface at compile time. .Sh SEE ALSO .Xr ffi_prep_cif 3 , .Xr ffi_call 3 07070100087db1000041ed0000000000000000000000024dc9ec4f000000000000010000010007ffffffffffffffff0000001a00000000root/usr/local/share/info07070100087db2000081a40000000000000000000000014dc9ebe10000195f0000010000010007ffffffffffffffff0000001e00000000root/usr/local/share/info/dirThis is the file .../info/dir, which contains the topmost node of the Info hierarchy, called (dir)Top. The first time you invoke Info you start off looking at this node.  File: dir, Node: Top This is the top of the INFO tree This (the Directory node) gives a menu of major topics. Typing "q" exits, "?" lists all Info commands, "d" returns here, "h" gives a primer for first-timers, "mEmacs" visits the Emacs manual, etc. In Emacs, you can click mouse button 2 on a menu item or cross reference to select it. * Menu: Archiving * Tar: (tar). Making tape (or disk) archives. C++ libraries * autosprintf: (autosprintf). Support for printf format strings in C++. Development * libffi: (libffi). Portable foreign-function interface library. GNU Gettext Utilities * autopoint: (gettext)autopoint Invocation. Copy gettext infrastructure. * envsubst: (gettext)envsubst Invocation. Expand environment variables. * gettextize: (gettext)gettextize Invocation. Prepare a package for gettext. * gettext: (gettext). GNU gettext utilities. * ISO3166: (gettext)Country Codes. ISO 3166 country codes. * ISO639: (gettext)Language Codes. ISO 639 language codes. * msgattrib: (gettext)msgattrib Invocation. Select part of a PO file. * msgcat: (gettext)msgcat Invocation. Combine several PO files. * msgcmp: (gettext)msgcmp Invocation. Compare a PO file and template. * msgcomm: (gettext)msgcomm Invocation. Match two PO files. * msgconv: (gettext)msgconv Invocation. Convert PO file to encoding. * msgen: (gettext)msgen Invocation. Create an English PO file. * msgexec: (gettext)msgexec Invocation. Process a PO file. * msgfilter: (gettext)msgfilter Invocation. Pipe a PO file through a filter. * msgfmt: (gettext)msgfmt Invocation. Make MO files out of PO files. * msggrep: (gettext)msggrep Invocation. Select part of a PO file. * msginit: (gettext)msginit Invocation. Create a fresh PO file. * msgmerge: (gettext)msgmerge Invocation. Update a PO file from template. * msgunfmt: (gettext)msgunfmt Invocation. Uncompile MO file into PO file. * msguniq: (gettext)msguniq Invocation. Unify duplicates for PO file. * ngettext: (gettext)ngettext Invocation. Translate a message with plural. * xgettext: (gettext)xgettext Invocation. Extract strings into a PO file. GNU Packages * CVS: (cvs). Concurrent Versions System GNU Plotting Utilities * Appendices: (plotutils)Appendices. More info on the plotting utilities. * Plotting utilities: (plotutils). GNU plotting utilities. * graph: (plotutils)graph Invocation. Plot datasets, possibly in real time. * libplot: (plotutils)libplot. A library for 2-D vector graphics. * ode: (plotutils)ode Invocation. Integrate differential equations. * pic2plot: (plotutils)pic2plot Invocation. Convert files in the pic language * plot: (plotutils)plot Invocation. Convert and display plot files. * plotfont: (plotutils)plotfont Invocation. Plot character maps of fonts. * tek2plot: (plotutils)tek2plot Invocation. Translate legacy Tektronix data. * spline: (plotutils)spline Invocation. Interpolate between points in datasets. GNU Utilities * gpg: (gpg). OpenPGP encryption and signing tool (v1). Individual utilities * cvs: (cvs)CVS commands. Concurrent Versions System * tar: (tar)tar invocation. Invoking GNU `tar'. Math * GNUPLOT: (gnuplot). An Interactive Plotting Program Miscellaneous * jwhois: (jwhois). Whois client. Programming * cvsclient: (cvsclient). The CVS client/server protocol. Software development * bison: (bison). GNU parser generator (Yacc replacement). Software libraries * GnuTLS: (gnutls). GNU Transport Layer Security Library. * libtasn1: (libtasn1). Library for Abstract Syntax Notation One (ASN.1). System Administration * certtool: (gnutls)Invoking certtool. Manipulate certificates and keys. * gnutls-cli: (gnutls)Invoking gnutls-cli. GnuTLS test client. * gnutls-cli-debug: (gnutls)Invoking gnutls-cli-debug. GnuTLS debug client. * gnutls-serv: (gnutls)Invoking gnutls-serv. GnuTLS test server. * psktool: (gnutls)Invoking psktool. Simple TLS-Pre-Shared-Keys manager. * srptool: (gnutls)Invoking srptool. Simple SRP password tool. Texinfo documentation system * Info: (info). How to use the documentation browsing system. * info standalone: (info-stnd). Read Info documents without Emacs. * infokey: (info-stnd)Invoking infokey. Compile Info customizations. * install-info: (texinfo)Invoking install-info. Update info/dir entries. * makeinfo: (texinfo)Invoking makeinfo. Translate Texinfo source. * pdftexi2dvi: (texinfo)PDF Output. PDF output for Texinfo. * texi2dvi: (texinfo)Format with texi2dvi. Print Texinfo documents. * texi2pdf: (texinfo)PDF Output. PDF output for Texinfo. * texindex: (texinfo)Format with tex/texindex. Sort Texinfo index files. * Texinfo: (texinfo). The GNU documentation format. Typesetting * Groff: (groff). The GNU troff document formatting system. 07070100087db3000081a40000000000000000000000014dc9ebe10000486d0000010000010007ffffffffffffffff0000002600000000root/usr/local/share/info/libffi.infoThis 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 Red Hat, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. A copy of the license is included in the section entitled "GNU General Public License". INFO-DIR-SECTION Development START-INFO-DIR-ENTRY * libffi: (libffi). Portable foreign-function interface library. END-INFO-DIR-ENTRY  File: libffi.info, Node: Top, Next: Introduction, Up: (dir) libffi ****** This manual is for Libffi, a portable foreign-function interface library. 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 published by the Free Software Foundation; either version 2, or (at your option) any later version. A copy of the license is included in the section entitled "GNU General Public License". * Menu: * Introduction:: What is libffi? * Using libffi:: How to use libffi. * Missing Features:: Things libffi can't do. * Index:: Index.  File: libffi.info, Node: Introduction, Next: Using libffi, Prev: Top, Up: Top 1 What is libffi? ***************** Compilers for high level languages generate code that follow certain conventions. These conventions are necessary, in part, for separate compilation to work. One such convention is the "calling convention". The calling convention is a set of assumptions made by the compiler about where function arguments will be found on entry to a function. A calling convention also specifies where the return value for a function is found. The calling convention is also sometimes called the "ABI" or "Application Binary Interface". Some programs may not know at the time of compilation what arguments are to be passed to a function. For instance, an interpreter may be told at run-time about the number and types of arguments used to call a given function. `Libffi' can be used in such programs to provide a bridge from the interpreter program to compiled code. The `libffi' library provides a portable, high level programming interface to various calling conventions. This allows a programmer to call any function specified by a call interface description at run time. FFI stands for Foreign Function Interface. A foreign function interface is the popular name for the interface that allows code written in one language to call code written in another language. The `libffi' library really only provides the lowest, machine dependent layer of a fully featured foreign function interface. A layer must exist above `libffi' that handles type conversions for values passed between the two languages.  File: libffi.info, Node: Using libffi, Next: Missing Features, Prev: Introduction, Up: Top 2 Using libffi ************** * Menu: * The Basics:: The basic libffi API. * Simple Example:: A simple example. * Types:: libffi type descriptions. * Multiple ABIs:: Different passing styles on one platform. * The Closure API:: Writing a generic function.  File: libffi.info, Node: The Basics, Next: Simple Example, Up: Using libffi 2.1 The Basics ============== `Libffi' assumes that you have a pointer to the function you wish to call and that you know the number and types of arguments to pass it, as well as the return type of the function. The first thing you must do is create an `ffi_cif' object that matches the signature of the function you wish to call. This is a separate step because it is common to make multiple calls using a single `ffi_cif'. The "cif" in `ffi_cif' stands for Call InterFace. To prepare a call interface object, use the function `ffi_prep_cif'. -- Function: ffi_status ffi_prep_cif (ffi_cif *CIF, ffi_abi ABI, unsigned int NARGS, ffi_type *RTYPE, ffi_type **ARGTYPES) This initializes CIF according to the given parameters. ABI is the ABI to use; normally `FFI_DEFAULT_ABI' is what you 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::. ARGTYPES is a vector of `ffi_type' pointers. ARGTYPES must have NARGS elements. If NARGS is 0, this argument is ignored. `ffi_prep_cif' returns a `libffi' status code, of type `ffi_status'. This will be either `FFI_OK' if everything worked properly; `FFI_BAD_TYPEDEF' if one of the `ffi_type' objects is incorrect; or `FFI_BAD_ABI' if the ABI parameter is invalid. To call a function using an initialized `ffi_cif', use the `ffi_call' function: -- Function: void ffi_call (ffi_cif *CIF, void *FN, void *RVALUE, void **AVALUES) This calls the function FN according to the description given in CIF. CIF must have already been prepared using `ffi_prep_cif'. RVALUE is a pointer to a chunk of memory that will hold the result of the function call. This must be large enough to hold the result and must be suitably aligned; it is the caller's responsibility to ensure this. If CIF declares that the function returns `void' (using `ffi_type_void'), then RVALUE is ignored. If RVALUE is `NULL', then the return value is discarded. 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.  File: libffi.info, Node: Simple Example, Next: Types, Prev: The Basics, Up: Using libffi 2.2 Simple Example ================== Here is a trivial example that calls `puts' a few times. #include #include int main() { ffi_cif cif; ffi_type *args[1]; void *values[1]; char *s; int rc; /* Initialize the argument info vectors */ args[0] = &ffi_type_pointer; values[0] = &s; /* Initialize the cif */ if (ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ffi_type_uint, args) == FFI_OK) { s = "Hello World!"; ffi_call(&cif, puts, &rc, values); /* rc now holds the result of the call to puts */ /* values holds a pointer to the function's arg, so to call puts() again all we need to do is change the value of s */ s = "This is cool!"; ffi_call(&cif, puts, &rc, values); } return 0; }  File: libffi.info, Node: Types, Next: Multiple ABIs, Prev: Simple Example, Up: Using libffi 2.3 Types ========= * Menu: * Primitive Types:: Built-in types. * Structures:: Structure types. * Type Example:: Structure type example.  File: libffi.info, Node: Primitive Types, Next: Structures, Up: Types 2.3.1 Primitive Types --------------------- `Libffi' provides a number of built-in type descriptors that can be used to describe argument and return types: `ffi_type_void' The type `void'. This cannot be used for argument types, only for return values. `ffi_type_uint8' An unsigned, 8-bit integer type. `ffi_type_sint8' A signed, 8-bit integer type. `ffi_type_uint16' An unsigned, 16-bit integer type. `ffi_type_sint16' A signed, 16-bit integer type. `ffi_type_uint32' An unsigned, 32-bit integer type. `ffi_type_sint32' A signed, 32-bit integer type. `ffi_type_uint64' An unsigned, 64-bit integer type. `ffi_type_sint64' A signed, 64-bit integer type. `ffi_type_float' The C `float' type. `ffi_type_double' The C `double' type. `ffi_type_uchar' The C `unsigned char' type. `ffi_type_schar' The C `signed char' type. (Note that there is not an exact equivalent to the C `char' type in `libffi'; ordinarily you should either use `ffi_type_schar' or `ffi_type_uchar' depending on whether `char' is signed.) `ffi_type_ushort' The C `unsigned short' type. `ffi_type_sshort' The C `short' type. `ffi_type_uint' The C `unsigned int' type. `ffi_type_sint' The C `int' type. `ffi_type_ulong' The C `unsigned long' type. `ffi_type_slong' The C `long' type. `ffi_type_longdouble' On platforms that have a C `long double' type, this is defined. On other platforms, it is not. `ffi_type_pointer' A generic `void *' pointer. You should use this for all pointers, regardless of their real type. Each of these is of type `ffi_type', so you must take the address when passing to `ffi_prep_cif'.  File: libffi.info, Node: Structures, Next: Type Example, Prev: Primitive Types, Up: Types 2.3.2 Structures ---------------- Although `libffi' has no special support for unions or bit-fields, it is perfectly happy passing structures back and forth. You must first describe the structure to `libffi' by creating a new `ffi_type' object for it. -- ffi_type: The `ffi_type' has the following members: `size_t size' This is set by `libffi'; you should initialize it to zero. `unsigned short alignment' This is set by `libffi'; you should initialize it to zero. `unsigned short type' For a structure, this should be set to `FFI_TYPE_STRUCT'. `ffi_type **elements' This is a `NULL'-terminated array of pointers to `ffi_type' objects. There is one element per field of the struct.  File: libffi.info, Node: Type Example, Prev: Structures, Up: Types 2.3.3 Type Example ------------------ The following example initializes a `ffi_type' object representing the `tm' struct from Linux's `time.h'. Here is how the struct is defined: struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; /* Those are for future use. */ long int __tm_gmtoff__; __const char *__tm_zone__; }; Here is the corresponding code to describe this struct to `libffi': { ffi_type tm_type; ffi_type *tm_type_elements[12]; int i; tm_type.size = tm_type.alignment = 0; tm_type.elements = &tm_type_elements; for (i = 0; i < 9; i++) tm_type_elements[i] = &ffi_type_sint; tm_type_elements[9] = &ffi_type_slong; tm_type_elements[10] = &ffi_type_pointer; tm_type_elements[11] = NULL; /* tm_type can now be used to represent tm argument types and return types for ffi_prep_cif() */ }  File: libffi.info, Node: Multiple ABIs, Next: The Closure API, Prev: Types, Up: Using libffi 2.4 Multiple ABIs ================= A given platform may provide multiple different ABIs at once. For instance, the x86 platform has both `stdcall' and `fastcall' functions. `libffi' provides some support for this. However, this is necessarily platform-specific.  File: libffi.info, Node: The Closure API, Prev: Multiple ABIs, Up: Using libffi 2.5 The Closure API =================== `libffi' also provides a way to write a generic function - a function that can accept and decode any combination of arguments. This can be useful when writing an interpreter, or to provide wrappers for arbitrary functions. This facility is called the "closure API". Closures are not supported on all platforms; you can check the `FFI_CLOSURES' define to determine whether they are supported on the current platform. Because closures work by assembling a tiny function at runtime, they require special allocation on platforms that have a non-executable heap. Memory management for closures is handled by a pair of functions: -- Function: void *ffi_closure_alloc (size_t SIZE, void **CODE) Allocate a chunk of memory holding SIZE bytes. This returns a pointer to the writable address, and sets *CODE to the corresponding executable address. SIZE should be sufficient to hold a `ffi_closure' object. -- Function: void ffi_closure_free (void *WRITABLE) Free memory allocated using `ffi_closure_alloc'. The argument is the writable address that was returned. Once you have allocated the memory for a closure, you must construct a `ffi_cif' describing the function call. Finally you can prepare the closure function: -- Function: ffi_status ffi_prep_closure_loc (ffi_closure *CLOSURE, ffi_cif *CIF, void (*FUN) (ffi_cif *CIF, void *RET, void **ARGS, void *USER_DATA), void *USER_DATA, void *CODELOC) Prepare a closure function. CLOSURE is the address of a `ffi_closure' object; this is the writable address returned by `ffi_closure_alloc'. CIF is the `ffi_cif' describing the function parameters. USER_DATA is an arbitrary datum that is passed, uninterpreted, to your closure function. CODELOC is the executable address returned by `ffi_closure_alloc'. FUN is the function which will be called when the closure is invoked. It is called with the arguments: CIF The `ffi_cif' passed to `ffi_prep_closure_loc'. RET A pointer to the memory used for the function's return value. FUN must fill this, unless the function is declared as returning `void'. ARGS A vector of pointers to memory holding the arguments to the function. USER_DATA The same USER_DATA that was passed to `ffi_prep_closure_loc'. `ffi_prep_closure_loc' will return `FFI_OK' if everything went ok, and something else on error. After calling `ffi_prep_closure_loc', you can cast CODELOC to the appropriate pointer-to-function type. You may see old code referring to `ffi_prep_closure'. This function is deprecated, as it cannot handle the need for separate writable and executable addresses.  File: libffi.info, Node: Missing Features, Next: Index, Prev: Using libffi, Up: Top 3 Missing Features ****************** `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. * There is no support for bit fields in structures. * The closure API is * The "raw" API is undocumented.  File: libffi.info, Node: Index, Prev: Missing Features, Up: Top Index ***** [index] * Menu: * : Structures. (line 12) * ABI: Introduction. (line 13) * Application Binary Interface: Introduction. (line 13) * calling convention: Introduction. (line 13) * cif: The Basics. (line 14) * closure API: The Closure API. (line 13) * closures: The Closure API. (line 13) * FFI: Introduction. (line 31) * ffi_call: The Basics. (line 41) * 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) * ffi_prep_closure_loc: The Closure API. (line 34) * ffi_status <1>: The Closure API. (line 37) * ffi_status: The Basics. (line 18) * ffi_type: Structures. (line 11) * ffi_type_double: Primitive Types. (line 41) * ffi_type_float: Primitive Types. (line 38) * ffi_type_longdouble: Primitive Types. (line 71) * ffi_type_pointer: Primitive Types. (line 75) * ffi_type_schar: Primitive Types. (line 47) * ffi_type_sint: Primitive Types. (line 62) * ffi_type_sint16: Primitive Types. (line 23) * ffi_type_sint32: Primitive Types. (line 29) * ffi_type_sint64: Primitive Types. (line 35) * ffi_type_sint8: Primitive Types. (line 17) * ffi_type_slong: Primitive Types. (line 68) * ffi_type_sshort: Primitive Types. (line 56) * ffi_type_uchar: Primitive Types. (line 44) * ffi_type_uint: Primitive Types. (line 59) * ffi_type_uint16: Primitive Types. (line 20) * ffi_type_uint32: Primitive Types. (line 26) * ffi_type_uint64: Primitive Types. (line 32) * ffi_type_uint8: Primitive Types. (line 14) * ffi_type_ulong: Primitive Types. (line 65) * ffi_type_ushort: Primitive Types. (line 53) * 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)  Tag Table: Node: Top700 Node: Introduction1436 Node: Using libffi3072 Node: The Basics3507 Node: Simple Example6114 Node: Types7141 Node: Primitive Types7424 Node: Structures9244 Node: Type Example10104 Node: Multiple ABIs11327 Node: The Closure API11698 Node: Missing Features14618 Node: Index15111  End Tag Table 07070100087da6000041ed0000000000000000000000044dc9ec4f000000000000010000010007ffffffffffffffff0000001300000000root/usr/local/lib07070100087dae000041ed0000000000000000000000024dc9ec4f000000000000010000010007ffffffffffffffff0000001d00000000root/usr/local/lib/pkgconfig07070100087daf000081a40000000000000000000000014dc9ebe1000000f50000010000010007ffffffffffffffff0000002700000000root/usr/local/lib/pkgconfig/libffi.pcprefix=/usr/local exec_prefix=${prefix} libdir=${exec_prefix}/lib includedir=${libdir}/libffi-3.0.9/include Name: libffi Description: Library supporting Foreign Function Interfaces Version: 3.0.9 Libs: -L${libdir} -lffi Cflags: -I${includedir} 07070100087dab000081a40000000000000000000000014dc9ebe1000128f80000010000010007ffffffffffffffff0000001c00000000root/usr/local/lib/libffi.a! / 1305078751 0 0 0 1000 ` .,,,||<<<<<<<<<<<<<QQQQQQ{{{{{{!!!ffi_type_testffi_assertffi_stop_hereffi_prep_closureffi_prep_cifffi_type_longdoubleffi_type_doubleffi_type_floatffi_type_pointerffi_type_sint64ffi_type_uint64ffi_type_sint32ffi_type_uint32ffi_type_sint16ffi_type_uint16ffi_type_sint8ffi_type_uint8ffi_type_voidffi_prep_raw_closureffi_prep_raw_closure_locffi_raw_callffi_ptrarray_to_rawffi_raw_to_ptrarrayffi_raw_sizeffi_prep_java_raw_closureffi_prep_java_raw_closure_locffi_java_raw_callffi_java_ptrarray_to_rawffi_java_raw_to_ptrarrayffi_java_raw_sizeffi_closure_freeffi_closure_allocffi_prep_closure_locffi_prep_cif_machdepffi_closure_sparc_inner_v8ffi_closure_sparc_inner_v9ffi_v9_layout_structffi_callffi_prep_args_v8ffi_prep_args_v9ffi_call_v8ffi_closure_v8_ffi_call_v8ffi_call_v9ffi_closure_v9_ffi_call_v9debug.o/ 1305078747 0 0 100644 6676 ` ELF+@@.shstrtab.text.rodata1.bss.data.rodata.picdata.comment.debug_info.debug_line.debug_abbrev.debug_pubnames.debug_typenames.strtab.symtab.rela.text.rela.debug_info.rela.debug_line.rela.debug_pubnames.rela.debug_typenamesP0A@`www'`]!`]__G@@@@@0ww'ASSERTION FAILURE: %s at %s:%d @(#)stddef.h 1.18 04/09/28 SMI@(#)isa_defs.h 1.29 08/06/06 SMI@(#)stddef_iso.h 1.2 03/03/06 SMI@(#)limits.h 1.59 04/08/24 SMI@(#)feature_tests.h 1.25 07/02/02 SMI@(#)ccompile.h 1.2 04/11/08 SMI@(#)limits_iso.h 1.2 03/12/04 SMI@(#)int_limits.h 1.9 04/09/28 SMI@(#)alloca.h 1.16 04/09/28 SMI@(#)types.h 1.86 07/09/20 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.10 04/09/28 SMI@(#)select.h 1.19 04/01/28 SMI@(#)time_impl.h 1.11 05/05/19 SMI@(#)time.h 2.77 09/06/02 SMI@(#)time.h 1.45 08/01/09 SMI@(#)time_iso.h 1.4 04/09/07 SMI@(#)string.h 1.27 07/01/14 SMI@(#)string_iso.h 1.5 04/06/18 SMI@(#)stdlib.h 1.51 04/06/30 SMI@(#)stdlib_iso.h 1.9 04/09/28 SMI@(#)stdlib_c99.h 1.2 04/03/29 SMI@(#)stdio.h 1.84 04/09/28 SMI@(#)stdio_iso.h 1.8 05/08/16 SMI@(#)va_list.h 1.15 04/11/19 SMI@(#)stdio_tag.h 1.4 04/09/28 SMI@(#)stdio_impl.h 1.15 07/03/05 SMI@(#)stdio_c99.h 1.2 04/03/29 SMIacomp: Sun C 5.11 SunOS_sparc 145354-01 2010/10/11src/debug.c /var/tmp/libffi-3.0.9 /opt/solstudio12.2/prod/bin/cc -xtarget=ultra -m64 -xcode=pic32 -DHAVE_CONFIG_H -I. -I. -I./include -Iinclude -I./src -g -g -c src/debug.c -W0,-xp\$XAoAMiKaveyNENd.Xa;g;P;R=Sun C 5.11 SunOS_sparc 145354-01 2010/10/11;G=$XAoAMiKaveyNENd.;backend;raw;cd;DBG_GEN 5.3.0ffi_stop_here!Dffi_assert*expr)xfile)pline)lD$charintffi_type_test3t0a2xfile2pline2lDunsigned longtsize_tunsigned short_ffi_type size# alignment# type# elements# ffi_typelong 9^ 9__FILE __padA#^9off64_t ftello ^ fseeko  9 9 fsetposG  9 fgetpos  G^FILEtmpfile freopen     fopen\  %^9off_t ftelloe \ fseeko  9 9 fsetpos   fgetposE  GE fprintf  N freopen    fopen7  tmpfile mkstemps  mkstemp abort src./include/usr/include/iso/usr/include/usr/include/sysdebug.cffi.hstddef_iso.hstdio_impl.htypes.hstdio_iso.h $  *L : DD%.?  : ; @ ' D D D I: ;  $> II:  :  I8 I  !I/ .? < ' ID  I&I.? < ' ID .? < ' D YQffi_stop_hereffi_assert ffi_type_testsize_t_ffi_typeffi_type^__FILEoff64_tFILEeoff_tdebug.cBbss.bssDdata.dataDpicdata.picdataDrodata.rodata.L28ffi_type_testabortfprintfffi_assert__iobffi_stop_here_GLOBAL_OFFSET_TABLE_    .= BPV^@|i o }HLdh t x  6I6d6l666 6$666 666@ 0 @@%@-@6@?K Weeuw  XH    prep_cif.o/ 1305078747 0 0 100644 7524 ` ELF+@@.shstrtab.text.bss.data.rodata.picdata.comment.debug_info.debug_line.debug_abbrev.debug_pubnames.debug_funcnames.debug_typenames.strtab.symtab.rela.text.rela.debug_info.rela.debug_line.rela.debug_pubnames.rela.debug_funcnames.rela.debug_typenames0w_\ w_\ h?_\ \ h _\  H HC'_\$ _\  $ < @ t_\_\ \ @t_ _\  H_ H'_\  'G_4`_ w_\ o_\`$ `$ <  t`_\ h H' H'G< w''wwߠ 'G_$`__t`_$`__t`_$ _\ \ h _\ | H H'_\  H_D H_\ \ h '_\ w_ 'Ӏ H\_\ \ h _\ O H HS'_\  H _\ \ h_D H _\  H _D Hנ 'H_\  $ 4 נ@H ע$ _\  $ < @ '_\ \ $   < @'Ӡ$ '_w_Ǡ wӀ O_$`_@'Gۡ<  wwww____ߐ@@@'Gۡ< @(#)stddef.h 1.18 04/09/28 SMI@(#)isa_defs.h 1.29 08/06/06 SMI@(#)stddef_iso.h 1.2 03/03/06 SMI@(#)limits.h 1.59 04/08/24 SMI@(#)feature_tests.h 1.25 07/02/02 SMI@(#)ccompile.h 1.2 04/11/08 SMI@(#)limits_iso.h 1.2 03/12/04 SMI@(#)int_limits.h 1.9 04/09/28 SMI@(#)alloca.h 1.16 04/09/28 SMI@(#)types.h 1.86 07/09/20 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.10 04/09/28 SMI@(#)select.h 1.19 04/01/28 SMI@(#)time_impl.h 1.11 05/05/19 SMI@(#)time.h 2.77 09/06/02 SMI@(#)time.h 1.45 08/01/09 SMI@(#)time_iso.h 1.4 04/09/07 SMI@(#)string.h 1.27 07/01/14 SMI@(#)string_iso.h 1.5 04/06/18 SMI@(#)stdlib.h 1.51 04/06/30 SMI@(#)stdlib_iso.h 1.9 04/09/28 SMI@(#)stdlib_c99.h 1.2 04/03/29 SMIacomp: Sun C 5.11 SunOS_sparc 145354-01 2010/10/11Tsrc/prep_cif.c /var/tmp/libffi-3.0.9 /opt/solstudio12.2/prod/bin/cc -xtarget=ultra -m64 -xcode=pic32 -DHAVE_CONFIG_H -I. -I. -I./include -Iinclude -I./src -g -g -c src/prep_cif.c -W0,-xp\$XAoAMiKbveyNkTd.Xa;g;P;R=Sun C 5.11 SunOS_sparc 145354-01 2010/10/11;G=$XAoAMiKbveyNkTd.;backend;raw;cd;DBG_GEN 5.3.0initialize_aggregate%arg$xptr&hDFFI_OKFFI_BAD_TYPEDEFFFI_BAD_ABIffi_status unsigned long size_t unsigned short _ffi_type size# alignment+# type+# elements# = =ffi_type   ffi_prep_cifZcifXxabiXt#nargsXprtypeYhatypesY`bytes#[Xi#\Tptr]HDffi_abiFFI_FIRST_ABIFFI_V8FFI_V8PLUSFFI_V9FFI_DEFAULT_ABIFFI_LAST_ABIffi_abi unsigned  abi# nargs## arg_types# rtype# bytes## flags##/ffi_cif  ffi_prep_closureV@closurexcifpLfunhuser_data`D char longV^ void   0* trampf# cif# fun# user_data#(ffi_closure * I V intmkstemp^Umkstemp^U /ffi_prep_cif_machdep   ffi_prep_closure_loce src./include/usr/include/isoprep_cif.cffi.hstddef_iso.hffitarget.h -!@8Yr1  @P @ |05 g  8 DD%. : ; @ ' ID I: ;  4I : ;  D D  : ( I: $>  :  I8 I .?  : ; @ ' ID  :  : I !I/ ' D I' D .? < ' ID .? < ' ID H`ffi_prep_cifffi_prep_closure7`Winitialize_aggregate`ffi_statussize_t=_ffi_typeffi_typeffi_abiffi_abi/ffi_cif*ffi_closureprep_cif.cBbss.bssDdata.dataDpicdata.picdataDrodata.rodatainitialize_aggregateffi_prep_closure_locffi_prep_closureffi_prep_cif_machdepffi_prep_cif_GLOBAL_OFFSET_TABLE_    1@UjpT{4  6O6p6x666@ 66~66 6666@  P$-6 `BwN5\TlC}]' `0PH     types.o/ 1305078747 0 0 100644 5460 ` ELF+@@.shstrtab.text.bss.data.rodata.picdata.comment.debug_info.debug_line.debug_abbrev.debug_pubnames.debug_typenames.strtab.symtab.rela.debug_info.rela.debug_pubnames.rela.debug_typenames    @(#)stddef.h 1.18 04/09/28 SMI@(#)isa_defs.h 1.29 08/06/06 SMI@(#)stddef_iso.h 1.2 03/03/06 SMI@(#)limits.h 1.59 04/08/24 SMI@(#)feature_tests.h 1.25 07/02/02 SMI@(#)ccompile.h 1.2 04/11/08 SMI@(#)limits_iso.h 1.2 03/12/04 SMI@(#)int_limits.h 1.9 04/09/28 SMI@(#)alloca.h 1.16 04/09/28 SMI@(#)types.h 1.86 07/09/20 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.10 04/09/28 SMI@(#)select.h 1.19 04/01/28 SMI@(#)time_impl.h 1.11 05/05/19 SMI@(#)time.h 2.77 09/06/02 SMI@(#)time.h 1.45 08/01/09 SMI@(#)time_iso.h 1.4 04/09/07 SMI@(#)string.h 1.27 07/01/14 SMI@(#)string_iso.h 1.5 04/06/18 SMIacomp: Sun C 5.11 SunOS_sparc 145354-01 2010/10/11ssrc/types.c /var/tmp/libffi-3.0.9 /opt/solstudio12.2/prod/bin/cc -xtarget=ultra -m64 -xcode=pic32 -DHAVE_CONFIG_H -I. -I. -I./include -Iinclude -I./src -g -g -c src/types.c -W0,-xp\$XAoAMiKbveyNEad.Xa;g;P;R=Sun C 5.11 SunOS_sparc 145354-01 2010/10/11;G=$XAoAMiKbveyNEad.;backend;raw;cd;DBG_GEN 5.3.0unsigned longQsize_tunsigned short_ffi_typesizeb#alignments#types# elements#ffi_typeffi_type_void 0 ffi_type_uint8;4 ffi_type_sint8j5 ffi_type_uint166 ffi_type_sint167 ffi_type_uint328 ffi_type_sint32)9 ffi_type_uint64Y: ffi_type_sint64; ffi_type_pointer= ffi_type_float? ffi_type_double@ ffi_type_longdoubleIL ]S src./include/usr/include/isotypes.cffi.hstddef_iso.h DD%$> I:  :  I8 I&I4I?  : ;  Rffi_type_voidDffi_type_uint8sffi_type_sint8ffi_type_uint16ffi_type_sint16ffi_type_uint322ffi_type_sint32bffi_type_uint64ffi_type_sint64ffi_type_pointerffi_type_float"ffi_type_doubleRffi_type_longdoubleLbsize_t_ffi_typeffi_typetypes.cBbss.bssDdata.dataDpicdata.picdataDrodata.rodataffi_type_longdoubleffi_type_doubleffi_type_floatffi_type_pointerffi_type_sint64ffi_type_uint64ffi_type_sint32ffi_type_uint32ffi_type_sint16ffi_type_uint16ffi_type_sint8ffi_type_uint8ffi_type_void_GLOBAL_OFFSET_TABLE_  .= Qapx`H0 6I636b6666!6Q66 6 6 6A 6u 666@     $8-H6B ciN e\ 1^l X} # ( 8h   raw_api.o/ 1305078748 0 0 100644 10708 ` ELF+$P@@.shstrtab.text.bss.data.rodata.picdata.comment.debug_info.debug_line.debug_abbrev.debug_pubnames.debug_funcnames.debug_typenames.strtab.symtab.rela.text.rela.debug_info.rela.debug_line.rela.debug_pubnames.rela.debug_funcnames.rela.debug_typenames ww_\ w_ $ 'G〤 H"_\  H_ wH __\ \ $   @wG$ '_w_נ wG〤 O_w_A@`wwww_\ wנ '_ HeH>_ _t`_ wHG_ _t`_ wH>_ _t`_ wH5_\ _t`_ wH,__t`_ wH$__t`__\ \ $   40,0@wH_\  $  O, < #b_ؠD '_w_נ w_w_ w_  OTTxxA@`wwww_\ wנ '_ HHh_\  _t`_ wHp_\ D _t`_ wHf_\  _t`_ wH\_\ D _t`_ wHR_\  _t`_ wHH_\ D _t`_ wH>_\ _t`_ wH5_\ \ _t`_ wH+__\ _\ \ @@__\ \ $   40,0@wH_\  $  O, < #b_ؠD '_w_נ w_w_ w_  OuT|Dh wwww_ ,0  ?#w___א@@____א@@ wwww_@  ?#w_w___א@@_\`0___\`8@ŀA@`wwwwww__`]_א@@'Gπ H__t`0__t`8G'Gӡ<  wwww____ߐ@@@'Gۡ< @(#)stddef.h 1.18 04/09/28 SMI@(#)isa_defs.h 1.29 08/06/06 SMI@(#)stddef_iso.h 1.2 03/03/06 SMI@(#)limits.h 1.59 04/08/24 SMI@(#)feature_tests.h 1.25 07/02/02 SMI@(#)ccompile.h 1.2 04/11/08 SMI@(#)limits_iso.h 1.2 03/12/04 SMI@(#)int_limits.h 1.9 04/09/28 SMI@(#)alloca.h 1.16 04/09/28 SMI@(#)types.h 1.86 07/09/20 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.10 04/09/28 SMI@(#)select.h 1.19 04/01/28 SMI@(#)time_impl.h 1.11 05/05/19 SMI@(#)time.h 2.77 09/06/02 SMI@(#)time.h 1.45 08/01/09 SMI@(#)time_iso.h 1.4 04/09/07 SMI@(#)string.h 1.27 07/01/14 SMI@(#)string_iso.h 1.5 04/06/18 SMIacomp: Sun C 5.11 SunOS_sparc 145354-01 2010/10/11 src/raw_api.c /var/tmp/libffi-3.0.9 /opt/solstudio12.2/prod/bin/cc -xtarget=ultra -m64 -xcode=pic32 -DHAVE_CONFIG_H -I. -I. -I./include -Iinclude -I./src -g -g -c src/raw_api.c -W0,-xp\$XAoAMiKcveyN0gd.Xa;g;P;R=Sun C 5.11 SunOS_sparc 145354-01 2010/10/11;G=$XAoAMiKcveyN0gd.;backend;raw;cd;DBG_GEN 5.3.0ffi_raw_size$cif#xresult%hi&dat#(XDunsigned longsize_tffi_abib FFI_FIRST_ABI FFI_V8 FFI_V8PLUS FFI_V9 FFI_DEFAULT_ABI FFI_LAST_ABIffi_abiunsignedunsigned short _ffi_type size# alignment# type# elements#  ffi_type    abib# nargst# arg_types## rtype# bytest# flagst#,ffi_cif intffi_raw_to_ptrarray:]cif9xIraw9pRargs9hit;dtp#<XD$signed long]ffi_sargffi_argfloatcharlongvoid 7 sintl# uint# flt# data# ptr#ffi_raw 7 ffi_ptrarray_to_rawcifxRargspIrawhitdtp#XD$ffi_raw_callcifxfnprvaluehIraw`avalueRXD ffi_translate_argsBcifxrvaluepRavaluehuser_data`rawIXclFPD_R _  @, trampB# cif# translate_args# this_closure#( fun#0 user_data#8ffi_raw_closure ,ffi_prep_raw_closure_loc E Fclxcifp ]funhuser_data`codelocXstatus EPD, E FFI_OK FFI_BAD_TYPEDEF FFI_BAD_ABI ffi_status Zffi_prep_raw_closure E Fclxcifp funhuser_data`D  memcpy M __builtin_alloca } , ffi_call  } R  R 0 w tramp # cif# fun # user_data#( # , ffi_prep_closure_loc E w    d src/usr/include/iso./includeraw_api.cstddef_iso.hffi.hffitarget.h $$ y    ;-(((($ a~>  -,,,,,,(,4 X~- ,(0 ,(<  @ 8 DD%.?  : ; @ ' ID I: ;  4I : ;  D D $> I:  :  (  :  I8 I  : .?  : ; @ ' D I !I/  : ' D . : ; @ ' D ' D I : &I.? < ' ID .? < ' D .? < ' ID  Uffi_raw_sizeffi_raw_to_ptrarray[ffi_ptrarray_to_rawffi_raw_callOffi_prep_raw_closure_loc fffi_prep_raw_closure5 ffi_translate_args size_tffi_abibffi_abi_ffi_typeffi_type,ffi_ciflffi_sargffi_arg7ffi_raw,ffi_raw_closure  Effi_status #raw_api.cBbss.bssDdata.dataDpicdata.picdataDrodata.rodataffi_translate_argsffi_prep_raw_closureffi_prep_closure_locffi_prep_raw_closure_locffi_callffi_raw_callmemcpyffi_ptrarray_to_rawffi_raw_to_ptrarrayffi_raw_size_GLOBAL_OFFSET_TABLE_   0?RTg|8|( 04@d@Dl p  , 6M6g6o666t6|66 6l66m 6u6 6 68}666\6v6 6 6666@  PP   $ - 6 < B,Ns\el+A}l}  xh!#` $ $  $8  java_raw_api.o/ 1305078748 0 0 100644 12780 ` ELF+,h@@.shstrtab.text.bss.data.rodata.picdata.comment.debug_info.debug_line.debug_abbrev.debug_pubnames.debug_funcnames.debug_typenames.strtab.symtab.rela.text.rela.debug_info.rela.debug_line.rela.debug_pubnames.rela.debug_funcnames.rela.debug_typenamesA@`www_\ w_ $ 'G〤 H7H_ wH$@_ wH_\  < H OO$ O, < #a@_ǠDG$ '_w_נ wG〤 O_w_PPdA@`wwww_\ wנ '_ H[H4_ _t`_ wH=_ _t`_ wH4__t`_ wH,__t`_ wH$__t`__\ \ $   40,0@wH_\  $  O, < #a_РD '_w_נ w_w_ w_  OTTxxA@`wwww_\ wנ '_ HH^_\  _$`_ wHf_\ D _$`_ wH\_\  _$`_ wHR_\ D _$`_ wHH_\  _$`_ wH>_\ D _$`_ wH4_\  _$ _ wH*_\  _t`_ wH _\ \ _t`_ wHH_\  $  O, < #b_̠D '_w_נ w_w_ w_  ODlT|ll0A@`wwwH_`,0 $`H_D`,0 $`HH_\  $  O, < #`_ؠD<TTT$<$<$<0A@`wwwH_`40 $`H_D`<0 $`HH_\  $  O, < #`_ؠD<TTT$<$<$< wwww_ ,0  ?#w___א@@____א@@__@h wwww_@  ?#w_w___א@@_\`0___\`8@ŀ__@uA@`wwwwww__`]_א@@'Gπ H__t`0__t`8G'Gӡ<  wwww____ߐ@@@'Gۡ< @(#)stddef.h 1.18 04/09/28 SMI@(#)isa_defs.h 1.29 08/06/06 SMI@(#)stddef_iso.h 1.2 03/03/06 SMI@(#)limits.h 1.59 04/08/24 SMI@(#)feature_tests.h 1.25 07/02/02 SMI@(#)ccompile.h 1.2 04/11/08 SMI@(#)limits_iso.h 1.2 03/12/04 SMI@(#)int_limits.h 1.9 04/09/28 SMI@(#)alloca.h 1.16 04/09/28 SMI@(#)types.h 1.86 07/09/20 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.10 04/09/28 SMI@(#)select.h 1.19 04/01/28 SMI@(#)time_impl.h 1.11 05/05/19 SMI@(#)time.h 2.77 09/06/02 SMI@(#)time.h 1.45 08/01/09 SMI@(#)time_iso.h 1.4 04/09/07 SMI@(#)string.h 1.27 07/01/14 SMI@(#)string_iso.h 1.5 04/06/18 SMI@(#)stdlib.h 1.51 04/06/30 SMI@(#)stdlib_iso.h 1.9 04/09/28 SMI@(#)stdlib_c99.h 1.2 04/03/29 SMIacomp: Sun C 5.11 SunOS_sparc 145354-01 2010/10/11$src/java_raw_api.c /var/tmp/libffi-3.0.9 /opt/solstudio12.2/prod/bin/cc -xtarget=ultra -m64 -xcode=pic32 -DHAVE_CONFIG_H -I. -I. -I./include -Iinclude -I./src -g -g -c src/java_raw_api.c -W0,-xp\$XAoAMiKcveyNUnd.Xa;g;P;R=Sun C 5.11 SunOS_sparc 145354-01 2010/10/11;G=$XAoAMiKcveyNUnd.;backend;raw;cd;DBG_GEN 5.3.0ffi_java_raw_size.cif-xresult/hi0dat22XDunsigned longsize_tffi_abiq FFI_FIRST_ABI FFI_V8 FFI_V8PLUS FFI_V9 FFI_DEFAULT_ABI FFI_LAST_ABI ffi_abiunsignedunsigned short _ffi_type size# alignment# type# elements #  ffi_type  )  abiq# nargs# arg_types2# rtype)# bytes# flags#;ffi_cif intffi_java_raw_to_ptrarrayJqcifIxbrawIpkargsIhiKdtp2LXD$signed longqffi_sargffi_argfloatcharlongvoid K sint# uint# flt# data# ptr#ffi_java_raw K ffi_java_ptrarray_to_rawcifxkargspbrawhidtp2XD$ffi_java_rvalue_to_rawrcifxrvaluepD ffi_java_raw_to_rvalue cifxrvaluepD ffi_java_raw_call)xcif'x{fn'prvalue'hbraw(`avaluek*XD xffi_java_translate_args5Bcif3xrvalue3pkavalue4huser_data4`rawb6Xcl F7PD_k _  @ , trampB# cif# translate_args# this_closure#( fun#0 user_data#8ffi_raw_closure ,ffi_prep_java_raw_closure_locD Q  ocl?xcif@p {funAhuser_dataB`codelocCXstatus QEPD, Q FFI_OK FFI_BAD_TYPEDEF FFI_BAD_ABI ffi_status  k  @ P tramp f# cif# translate_args # this_closure#( fun #0 user_data#8 ffi_java_raw_closure P xffi_prep_java_raw_closure^ Q  oclZxcif[p "fun\huser_data]`D  mkstemp [ +mkstemp  +abort__builtin_alloca  ; ffi_call   k * Zk * 0 tramp # cif# fun Z# user_data#( c ; ffi_prep_closure_loc Q     Di src/usr/include/iso./includejava_raw_api.cstddef_iso.hffi.hffitarget.h .-v~   -(($ d~  -, ,~  m p ,(0  ,(<   @ 8 DD%.?  : ; @ ' ID I: ;  4I : ;  D D $> I:  :  (  :  I8 I  : .?  : ; @ ' D I !I/  : . : ; @ ' D . : ;@ ' D I: ; .?  : ;@ ' D 4I : ; ' D ' D I.?  : ;@ ' ID  : .? < ' ID .? < ' D .? < ' D .? < ' ID 0_ffi_java_raw_sizeffi_java_raw_to_ptrarraytffi_java_ptrarray_to_rawffi_java_raw_call Offi_prep_java_raw_closure_loc ffi_prep_java_raw_closurex0ffi_java_rvalue_to_rawrffi_java_raw_to_rvalueffi_java_translate_args00size_t ffi_abiqffi_abi_ffi_typeffi_type;ffi_cifffi_sargffi_argKffi_java_raw ,ffi_raw_closure  Qffi_status Pffi_java_raw_closure cjava_raw_api.cBbss.bssDdata.dataDpicdata.picdataDrodata.rodataffi_java_rvalue_to_rawffi_java_raw_to_rvalueffi_java_translate_argsffi_prep_java_raw_closureffi_prep_closure_locffi_prep_java_raw_closure_locffi_callffi_java_raw_callffi_java_ptrarray_to_rawffi_java_raw_to_ptrarrayabortffi_java_raw_size_GLOBAL_OFFSET_TABLE_  $5D0[ r 8T xd x$*8< $8<(,X|      l6W6v6~6@66,66)60166 66666 T s6 {6  6 6 x666606 666; 6666@  P    $ - 60BPN_\!Ol"3}"<#R%H( 'p)h+H ,  ,8 ,P  closures.o/ 1305078749 0 0 100644 4508 ` ELF+ @@.shstrtab.text.bss.data.rodata.picdata.comment.debug_info.debug_line.debug_abbrev.debug_pubnames.debug_typenames.strtab.symtab.rela.text.rela.debug_info.rela.debug_line.rela.debug_pubnames.rela.debug_typenames0ww_hH w_@w__t`_w_@w_@@(#)stddef.h 1.18 04/09/28 SMI@(#)isa_defs.h 1.29 08/06/06 SMI@(#)stddef_iso.h 1.2 03/03/06 SMI@(#)limits.h 1.59 04/08/24 SMI@(#)feature_tests.h 1.25 07/02/02 SMI@(#)ccompile.h 1.2 04/11/08 SMI@(#)limits_iso.h 1.2 03/12/04 SMI@(#)int_limits.h 1.9 04/09/28 SMI@(#)alloca.h 1.16 04/09/28 SMI@(#)types.h 1.86 07/09/20 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.10 04/09/28 SMI@(#)select.h 1.19 04/01/28 SMI@(#)time_impl.h 1.11 05/05/19 SMI@(#)time.h 2.77 09/06/02 SMI@(#)time.h 1.45 08/01/09 SMI@(#)time_iso.h 1.4 04/09/07 SMI@(#)string.h 1.27 07/01/14 SMI@(#)string_iso.h 1.5 04/06/18 SMI@(#)stdlib.h 1.51 04/06/30 SMI@(#)stdlib_iso.h 1.9 04/09/28 SMI@(#)stdlib_c99.h 1.2 04/03/29 SMIacomp: Sun C 5.11 SunOS_sparc 145354-01 2010/10/11src/closures.c /var/tmp/libffi-3.0.9 /opt/solstudio12.2/prod/bin/cc -xtarget=ultra -m64 -xcode=pic32 -DHAVE_CONFIG_H -I. -I. -I./include -Iinclude -I./src -g -g -c src/closures.c -W0,-xp\$XAoAMiKdveyN0td.Xa;g;P;R=Sun C 5.11 SunOS_sparc 145354-01 2010/10/11;G=$XAoAMiKdveyN0td.;backend;raw;cd;DBG_GEN 5.3.0ffi_closure_allocksizejxcodejpD voidunsigned longsize_tffi_closure_freetIptrsxDcharIint mkstempZ Q mkstempZ Q malloc  free C src/usr/include/isoclosures.cstddef_iso.h 0  DD%.?  : ;@ ' ID I: ; D D $> II: .?  : ;@ ' D  .? < ' ID  I .? < ' D MWffi_closure_allocffi_closure_free)size_tclosures.cBbss.bssDdata.dataDpicdata.picdataDrodata.rodatafreeffi_closure_freemallocffi_closure_alloc_GLOBAL_OFFSET_TABLE_    1@EV]Xo@  6O6o 6w6` 66\ 6v 666@ ($-6BNE\Yl R5}  h  x0  80  h    ffi.o/ 1305078749 0 0 100644 23028 ` ELF+T@@.shstrtab.text.bss.data.picdata.rodata.debug_info.debug_line.debug_abbrev.debug_pubnames.debug_typenames.symtab.strtab.rela.text.rela.debug_info.rela.debug_line.rela.debug_pubnames.rela.debug_typenames.commentA@`www_ @w_\ _$`_נ w_\ w_\  '_\ \ wG뀤Ho_\  H_\  H _\ _$` wH_\ \ w_ǀ h8 w _\ D _$`+_\  _$`$_\ D _$`_\  _$`_\  $  O, < #bT_D __\ _ǐ@_ߠ w__Ǡ@wG$ '_w_Ϡ wG뀤OT8A@`www ' '_ w_\ w_\ \  H_\ \ \ h _\ _t`_Ϡ wϠ 'ߠ '_\ \ wǠ 4 _\  H_\ \ w_ h_\ _t`_Ϡ wGߠ '_נ w '_\  < H$  H, < #``_DO_ hZ?_\ D _t`J_\  _t`C_\ D _t`<_\  _t`5_\ D _t`._\  _t`'_\  _$  __\ _@_\  $  O, < #`_РD wGߠ '2_ h__\ _@ wGߠ 'Gߠ H_\   HGߠ '_Ϡ w__\ _@ wGߠ '_נ w__@wG '_w_Ǡ wG4 _\   O*G'G< <<<lP40A@`ww_D H '_\  H _ G4 @$_  H _$`  '_  0H 0_$`_ G, 4 @$_ $ G, $ < @ $@_\` $`L_D H _\ \ h_$  _$`8_D H _$`_\` $`(_D H _$` _$` _$`_\  < O, < #b_ȠD 'G<     tttt$A@`ww'www_\ w_\ htG_\  $ @H G$ _\  $ < @ '>_\ G___א@'G$   'D_G@_צ_\ \ @G_\ \ @'0_G@_ߦ_\ \ @G_\ \ @'_\  < H$  O, < #b8_DO_Ǡ w_\ oG'Gӡ< A@`wwwww_w_w_w_w_\  H_\ \ h  @  ?#ww_瀤h _\ \   ?#w19`]_``__@_瀤h_h_\  H _\ __`  @ _D O OA@`wwwwww_w`]w!/<4 _$`! i<4 _$`!<4 _$`!@_$` __t`__t`__t` __t`(__ w_ 'Gӡ< wwww_\ w_\ w_ ,0  ?#w_  H_  H_\ w ' ' 4 _ H}_G,0\@ H _G,0\@ H_G,0\@_G,0t@G 'V_G,0\@ H_G,0\@ H _G,0\@ H&G<` @ ?$@ H_G,0\@_t`_G < ,0\@_t`__G,0t@_ߠ$ wG 'G_G,0\@\ $   40'_G,0@_G,0\@\ $_t@G 'G4 _  O_\` ___\`(ŀ_\  'Gۡ< wwww_\ w_\ w_ ,0  ?#w_  H_\  H _\ w ' 'G  ' ' 4 _ H_G,0\@ H=_G,0\@\ h_G,0\@_G,0t@G '&_G,0\@_G,0@_ߠ @_G,0@_G,0t@G_G,0\@\ $   40'YG_G,0\@\ $   40'_G,0\@ HG<` @ ?$@ HG 'GGH(_G,0\@ H_G,0\@ H _G,0\@ H_G,0@_G,0\@\ $_t@_G,0@_G,0\@\ $_t@G 'G4 _  O^_\` ___\`(ŀ_\  'Gۡ<  src/sparc/ffi.c /var/tmp/libffi-3.0.9 /opt/solstudio12.2/prod/bin/cc -xtarget=ultra -m64 -xcode=pic32 -DHAVE_CONFIG_H -I. -I. -I./include -Iinclude -I./src -g -g -c src/sparc/ffi.c -W0,-xp\$XAoAMiKdveyNE4d.Xa;g;P;R=Sun C 5.11 SunOS_sparc 145354-01 2010/10/11;G=$XAoAMiKdveyNE4d.;backend;raw;cd;DBG_GEN 5.3.0ffi_prep_args_v8%KSstack$xecif$pi&lp_argvR'`argpS(Xp_arg)PzGHcharKffi_abi FFI_FIRST_ABI FFI_V8 FFI_V8PLUS FFI_V9 FFI_DEFAULT_ABI FFI_LAST_ABI \ffi_abiunsignedunsigned long size_tunsigned short _ffi_typeu size# alignment# type# elements~#u ffi_type & abi# nargs# arg_types# rtype# bytes# flags# ffi_cif&voidAI  cif8# rvalueI# avalueR# [extended_cifintffi_prep_args_v9{Sstackzxecifzpi|hret|dtmp}`p_argvR~XargpSPp_argHz@ffi_prep_cif_machdepN8cifxwordsizep FFI_OK FFI_BAD_TYPEDEF FFI_BAD_ABI Nffi_statusffi_v9_layout_structQMargPxoffPtSretPhSintgP`SfltPXptrRHffi_call{8cifzxfnzpIrvaluezhRavaluez`ecif|HrvalI}@ffi_prep_closure_loc closurex8cifp funhIuser_data`IcodelocXtramp Hfn@longK -8IRI 0 tramp# cif8# fun -# user_dataI#( 6ffi_closure  ffi_closure_sparc_inner_v8  closurexIrvaluep gprh scratch`cif8Parg_typesHavalueR@iargnffi_closure_sparc_inner_v9'  closure%xIrvalue&p gpr&h fpr&`cif8(Parg_types)HavalueR*@i+argn+fp_slot_max+double ffi_closure_v9[ (ffi_call_v9 I   +mkstemp Smkstemp SA memmoveI %I A %memcpyI oI .__builtin_allocaI v src/sparc./include/usr/include/isoffi.cffi_common.hffi.hffitarget.hstddef_iso.h  +                    p    Q 2                       m                   ` %                                                Z (                  o  h                       h                                    d !                           X -    DD%.?  : ; @ ' D I: ;  4I : ;   $> I :  ( I:  :  I8  : .?  : ; @ ' ID  : .?  : ;@ ' ID I: ; 4I : ; .?  : ;@ ' D ' D I !I/ ' D I.? < ' D .? < ' ID &I.? < ' ID  Yffi_prep_args_v8ffi_prep_args_v9ffi_prep_cif_machdepffi_v9_layout_structMffi_callffi_prep_closure_loc ffi_closure_sparc_inner_v8 ffi_closure_sparc_inner_v9 \ffi_abiffi_abisize_t_ffi_typeffi_type&ffi_cif[extended_cifNffi_status 6 ffi_closure   *;(P8leq@H 0 PH Xffi.cBbss.bssDdata.dataDrodata.rodataDpicdata.picdataffi_prep_closure_locffi_prep_cif_machdepffi_call_v9ffi_closure_v9memcpyffi_closure_sparc_inner_v8ffi_closure_sparc_inner_v9memmoveffi_v9_layout_structffi_call_GLOBAL_OFFSET_TABLE_ffi_prep_args_v8ffi_prep_args_v9 $,L@D     \ X \ , 0 d 04\` 6Q 6o6w 6X 6l 6P 6 6 & 6. 6 6 6 6, 6 6d 6 6d 66 6 6 6 \6d 66$ 6 6 6 6 66 68 6D 6T 6` 6l 6 6 6 6 6 6 + 67 6E 60Q 68_ 6Lk 6Ty 6h 6p 6 6 6 6 6 6  6P 6X6 6 6+ 69 6G 6U 6a 6m 6$y 6, 6d 6t 6| 6 6 6 6 6 6 6 6 68# 6H/ 6P= 6dI 6lW 6c 6q 6} 6 6 6 6 6 6 6 6  6 64 6D 6 6' 63 6? 6K 6W 6e 6q 6(} 64 6T 6\ 6h 6t 6 6 6 66 6T 6h 6p) 65 6C 6O 6] 6k 6w 6 6 6@ 6H 6X 6` 6 6 6 6 6 6 6 6- 6 9 6 E 6 $Q 6 ,_ 6 8k 6 @y 6  6 6 6 $ 6 0 6 D 6 d 6  6  6  6  6  6 # 6 ,/ 6 4; 6 dG 6 |S 6 a 6 o 6 } 6  6 6 6 x 6  6  6  6  6  6  6  6  6 ' 6 5 6 $C 6 ,Q 6 l] 6 i 6 w 6  6  66 6T 6\ 6l 6 6 6 6 6  6 % 6 1 6 ? 6 P6 [ 6T k 6` w 6l 6 6 6 6 6 6, 6` 6 6 6 60  6< ! 6P / 6 ; 6 I 6 W 6 e 6 v6 6\ 6h 6t 6 6 6 6 6 6 6  68  6X  6 + 6 7 6 C 6$ Q 6T _ 6 k 6 y 6 6P 6 6 6 666@(#)stddef.h 1.18 04/09/28 SMI@(#)isa_defs.h 1.29 08/06/06 SMI@(#)stddef_iso.h 1.2 03/03/06 SMI@(#)limits.h 1.59 04/08/24 SMI@(#)feature_tests.h 1.25 07/02/02 SMI@(#)ccompile.h 1.2 04/11/08 SMI@(#)limits_iso.h 1.2 03/12/04 SMI@(#)int_limits.h 1.9 04/09/28 SMI@(#)alloca.h 1.16 04/09/28 SMI@(#)types.h 1.86 07/09/20 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.10 04/09/28 SMI@(#)select.h 1.19 04/01/28 SMI@(#)time_impl.h 1.11 05/05/19 SMI@(#)time.h 2.77 09/06/02 SMI@(#)time.h 1.45 08/01/09 SMI@(#)time_iso.h 1.4 04/09/07 SMI@(#)string.h 1.27 07/01/14 SMI@(#)string_iso.h 1.5 04/06/18 SMI@(#)stdlib.h 1.51 04/06/30 SMI@(#)stdlib_iso.h 1.9 04/09/28 SMI@(#)stdlib_c99.h 1.2 04/03/29 SMIacomp: Sun C 5.11 SunOS_sparc 145354-01 2010/10/11@ ((((%(-( 9$ E0S2,c32t4  |67p :h =8 Q Q Q v8.o/ 1305078750 0 0 100644 1916 ` ELF+8@@ .shstrtab.text.eh_frame.symtab.strtab.rela.text.rela.eh_frame.comment㿠#` D H L P T X@"'"' "' "* "* "* "*  "' ' : ' 2 ' : ' 2 ' ' `(``h 'D'H'L'P'T'X@@   "  "    " zRxP $ - $D - %+17<HWrdoubleuint16sint8sint16longlongdone1done2uint8doneffi_call_v8ffi_closure_v8ffi_closure_sparc_inner_v8_ffi_call_v8D  H as: Sun Compiler Common 12.2 SunOS_sparc 2010/08/13 @N 8h #8+60E6 v9.o/ 1305078750 0 0 100644 1816 ` ELF+@@ .shstrtab.text.eh_frame.symtab.strtab.rela.text.rela.eh_frame.comment㿀#\                 \ \ \ \ \ @$'"Hw "@ ' "@ ? @H? ? w w w w ? ? (? 0? 8㾰wwwwww????????????????_@ @ @ "@_ "@ _ "@ __g_o_w_gow__gzRxP $ - $D -  $)5D_longdouble1dostructintegerdone1doneffi_call_v9ffi_closure_v9ffi_closure_sparc_inner_v9_ffi_call_v9`   H as: Sun Compiler Common 12.2 SunOS_sparc 2010/08/13 @N `h #l+X6p0E607070100087dad000081ed0000000000000000000000014dc9ebe10000e3280000010000010007ffffffffffffffff0000002400000000root/usr/local/lib/libffi.so.5.0.10ELF+@h@8@CCCCGHGHC@ !#%&')*+,./013569:<? "$(-2478;=>II (5IEKI\P|gIw?PJ@IH8;&(HJ7x&? CU B[I0kIz!dJ5(PT)0DGH3H0%(X7pTH\Ixl)hH}+X|'( 08I@Xv?P A@ C"*CJT_I`o0l B Bffi_type_uint64ffi_type_floatmemmoveffi_prep_cifffi_type_double__iobffi_type_pointerffi_assertffi_type_uint8_ffi_call_v8_edata_ffi_call_v9ffi_type_sint16ffi_closure_sparc_inner_v8ffi_closure_sparc_inner_v9ffi_java_raw_callffi_type_voidffi_type_longdoubleffi_prep_closure_locffi_java_raw_to_ptrarray_GLOBAL_OFFSET_TABLE__initffi_type_uint16ffi_type_sint8ffi_java_ptrarray_to_raw_endffi_callffi_prep_java_raw_closureffi_raw_sizeffi_ptrarray_to_rawffi_closure_free_PROCEDURE_LINKAGE_TABLE__DYNAMICffi_v9_layout_structffi_closure_allocffi_prep_closureffi_raw_to_ptrarrayffi_type_sint32ffi_prep_args_v8ffi_prep_args_v9ffi_raw_callffi_type_testffi_prep_java_raw_closure_locabortffi_stop_hereffi_java_raw_sizeffi_type_sint64ffi_closure_v8ffi_closure_v9_etextfprintfffi_prep_raw_closure_locmemcpyffi_prep_raw_closureffi_type_uint32ffi_prep_cif_machdep_lib_version_finimalloclibc.so.1SUNW_0.7libffi.so.5/usr/local/lib:/lib/64:/usr/lib/64:/lib:/usr/lib =(CBC XC(&C0C@3C8)J@?PJh@XJ@JAD6D.D-D;EE 8E@&E`EEE7EF/F F@,F`?F<F#FF GG P0A@ bwww'` ]!`]__G@@@ @ @ 0ww'0w_\ w_\ h?_\ \ h _\  H HC'_\$ _\  $ < @ t_\_\ \ @t_ _\  H_ H'_\  'G_4`_ w_\ o_\`$ `$ <  t`_\ h H' H'G< w''wwߠ 'G_$`__t`_$`__t`_$ _\ \ h _\ | H H'_\  H_D H_\ \ h '_\ w_ 'Ӏ H\_\ \ h _\ O H HS'_\  H _\ \ h_D H _\  H _D Hנ 'H_\  $ 4 נ@H ע$ _\  $ < @ '_\ \ $   < @'Ӡ$ '_w_Ǡ wӀ O_$`_@ 'Gۡ<  wwww____ߐ@@ ט@'Gۡ<  ww_\ w_ $ 'G〤 H"_\  H_ wH __\ \ $   @wG$ '_w_נ wG〤 O_w_A@ `Dwwww_\ wנ '_ HeH>_ _t`_ wHG_ _t`_ wH>_ _t`_ wH5_\ _t`_ wH,__t`_ wH$__t`__\ \ $   40,0@wH_\  $  O, < #b_ؠD '_w_נ w_w_ w_  OTTxxA@ bwwww_\ wנ '_ HHh_\  _t`_ wHp_\ D _t`_ wHf_\  _t`_ wH\_\ D _t`_ wHR_\  _t`_ wHH_\ D _t`_ wH>_\ _t`_ wH5_\ \ _t`_ wH+__\ _\ \ @@ __\ \ $   40,0@wH_\  $  O, < #b_ؠD '_w_נ w_w_ w_  OuT|Dh wwww_ ,0  ?#w___א@@ N____א@@ M wwww_@ D  ?#w_w___א@@ >_\`0___\`8@ŀA@ b wwwwww__`]_א@@ 'Gπ H__t`0__t`8G'Gӡ<  wwww____ߐ@@ @'Gۡ< A@ `ܮwww_\ w_ $ 'G〤 H7H_ wH$@ _ wH_\  < H OO$ O, < #a@_ǠDG$ '_w_נ wG〤 O_w_PPdA@c|wwww_\ wנ '_ H[H4_ _t`_ wH=_ _t`_ wH4__t`_ wH,__t`_ wH$__t`__\ \ $   40,0@wH_\  $  O, < #a_РD '_w_נ w_w_ w_  OTTxxA@atwwww_\ wנ '_ HH^_\  _$`_ wHf_\ D _$`_ wH\_\  _$`_ wHR_\ D _$`_ wHH_\  _$`_ wH>_\ D _$`_ wH4_\  _$ _ wH*_\  _t`_ wH _\ \ _t`_ wHH_\  $  O, < #b_̠D '_w_נ w_w_ w_  ODlT|ll0A@bĮwwwH_`,0 $`H_D`,0 $`HH_\  $  O, < #`_ؠD<TTT$<$<$<0A@aԮwwwH_`40 $`H_D`<0 $`HH_\  $  O, < #`_ؠD<TTT$<$<$< wwww_ ,0  ?#w___א@@ܔ____א@@__@h wwww_@Ɛ  ?#w_w___א@@_\`0___\`8@ŀ__@uA@c|wwwwww__`]_א@@G'Gπ H__t`0__t`8G'Gӡ<  wwww____ߐ@@o@'Gۡ< 0ww_hH w_@^w__t`_w_@w_@QA@awww_ @w_\ _$`_נ w_\ w_\  '_\ \ wG뀤Ho_\  H_\  H _\ _$` wH_\ \ w_ǀ h8 w _\ D _$`+_\  _$`$_\ D _$`_\  _$`_\  $  O, < #bT_D __\ _ǐ@u_ߠ w__Ǡ@wG$ '_w_Ϡ wG뀤OT8A@c4www ' '_ w_\ w_\ \  H_\ \ \ h _\ _t`_Ϡ wϠ 'ߠ '_\ \ wǠ 4 _\  H_\ \ w_ h_\ _t`_Ϡ wGߠ '_נ w '_\  < H$  H, < #``_DO_ hZ?_\ D _t`J_\  _t`C_\ D _t`<_\  _t`5_\ D _t`._\  _t`'_\  _$  __\ _@_\  $  O, < #`_РD wGߠ '2_ h__\ _@ wGߠ 'Gߠ H_\   HGߠ '_Ϡ w__\ _@a wGߠ '_נ w__@wG '_w_Ǡ wG4 _\   O*G'G< <<<lP40A@bww_D H '_\  H _ G4 @$_  H _$`  '_  0H 0_$`_ G, 4 @$_ $ G, $ < @ $@_\` $`L_D H _\ \ h_$  _$`8_D H _$`_\` $`(_D H _$` _$` _$`_\  < O, < #b_ȠD 'G<     tttt$A@cĮww'www_\ w_\ htG_\  $ @H G$ _\  $ < @ '>_\ G___א@'G$   'D_G@_צ_\ \ @G_\ \ @'0_G@_ߦ_\ \ @G_\ \ @'_\  < H$  O, < #b8_DO_Ǡ w_\ oG'Gӡ< A@alwwwww_w_w_w_w_\  H_\ \ h  @  ?#ww_瀤h _\ \   ?#w19`(]_``__@ _瀤h_h_\  H _\ __`  @ _D O OA@cwwwwww_w`0]w!/<4 _$`! i<4 _$`!<4 _$`!@_$` __t`__t`__t` __t`(__ w_ 'Gӡ< wwww_\ w_\ w_ ,0  ?#w_  H_  H_\ w ' ' 4 _ H}_G,0\@ H _G,0\@ H_G,0\@_G,0t@G 'V_G,0\@ H_G,0\@ H _G,0\@ H&G<` @ ?$@ H_G,0\@_t`_G < ,0\@_t`__G,0t@_ߠ$ wG 'G_G,0\@\ $   40'_G,0@_G,0\@\ $_t@G 'G4 _  O_\` ___\`(ŀ_\  'Gۡ< wwww_\ w_\ w_ ,0  ?#w_  H_\  H _\ w ' 'G  ' ' 4 _ H_G,0\@ H=_G,0\@\ h_G,0\@_G,0t@G '&_G,0\@_G,0@_ߠ @c_G,0@_G,0t@G_G,0\@\ $   40'YG_G,0\@\ $   40'_G,0\@ HG<` @ ?$@ HG 'GGH(_G,0\@ H_G,0\@ H _G,0\@ H_G,0@_G,0\@\ $_t@_G,0@_G,0\@\ $_t@G 'G4 _  O^_\` ___\`(ŀ_\  'Gۡ< 㿠#` D H L P T X@"'"' "' "* "* "* "*  "' ' : ' 2 ' : ' 2 ' ' `(``h 'D'H'L'P'T'X@@   "  "    " 㿀#\                 \ \ \ \ \ @$'"Hw "@ ' "@ ? @H? ? w w w w ? ? (? 0? 8㾰wwwwww????????????????_@2 @ @ "@_ "@ _ "@ __g_o_w_gow__gPPASSERTION FAILURE: %s at %s:%d GH0o0o0o0o0o 0o@0o`0o0o0o0o0o0o 0o@0ow`0oo0og0o_0oW0oO0oG 0o? B B  ovo o  p ooD    zRxP $ - $D - zRxP $ - $D -      B B B B CDGHHHJ JJ+ B:BJKHVH+ Bg B lBJKHVH+ BwBJKHVH+ BBJKHVH+ BXBJKHVH+ B$H%8&BJKHVH+ BBJKH+ BVH@&@<6@ E@,L@LU@[@j@p?uBABUBpAII IIP|aI?P J@<IH89;T&(fHtJ7x C BI0-I!dJ5(PT 4)0ED_GHh3H0}(XpTIx)hH+X|'%( 308EIU@X?PdA@s CzTI`0l@ B B.libs/libffi.so.5.0.10crti.svalues-Xa.cDrodata.rodatadebug.cBbss.bssDdata.dataDpicdata.picdata.L28prep_cif.cinitialize_aggregatetypes.cjava_raw_api.cffi_translate_argsffi_java_rvalue_to_rawffi_java_raw_to_rvalueffi_java_translate_argsclosures.cffi.cffi_type_doubleffi_type_uint16ffi_type_sint8ffi_type_sint16longlongdone1done2ffi_type_uint8donelongdouble1dostructintegercrtn.s_END__START_ffi_type_uint64ffi_type_floatmemmoveffi_prep_cif__iobffi_type_pointerffi_assert_ffi_call_v8_edata_ffi_call_v9ffi_closure_sparc_inner_v8ffi_closure_sparc_inner_v9ffi_java_raw_callffi_type_voidffi_type_longdoubleffi_prep_closure_locffi_java_raw_to_ptrarray_GLOBAL_OFFSET_TABLE__initffi_java_ptrarray_to_raw_endffi_callffi_prep_java_raw_closureffi_raw_sizeffi_ptrarray_to_rawffi_closure_free_PROCEDURE_LINKAGE_TABLE__DYNAMICffi_v9_layout_structffi_closure_allocffi_prep_closureffi_raw_to_ptrarrayffi_type_sint32ffi_prep_args_v8ffi_prep_args_v9ffi_raw_callffi_type_testffi_prep_java_raw_closure_locabortffi_stop_hereffi_java_raw_sizeffi_type_sint64ffi_closure_v8ffi_closure_v9_etextfprintfffi_prep_raw_closure_locmemcpyffi_prep_raw_closureffi_type_uint32ffi_prep_cif_machdep_lib_version_finimallocanotate anotate anotate8 0 8X4Xanotate8 0 '&'&anotateX P 6+7A 6|+7A@(#)stddef.h 1.18 04/09/28 SMI@(#)isa_defs.h 1.29 08/06/06 SMI@(#)stddef_iso.h 1.2 03/03/06 SMI@(#)limits.h 1.59 04/08/24 SMI@(#)feature_tests.h 1.25 07/02/02 SMI@(#)ccompile.h 1.2 04/11/08 SMI@(#)limits_iso.h 1.2 03/12/04 SMI@(#)int_limits.h 1.9 04/09/28 SMI@(#)alloca.h 1.16 04/09/28 SMI@(#)types.h 1.86 07/09/20 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.10 04/09/28 SMI@(#)select.h 1.19 04/01/28 SMI@(#)time_impl.h 1.11 05/05/19 SMI@(#)time.h 2.77 09/06/02 SMI@(#)time.h 1.45 08/01/09 SMI@(#)time_iso.h 1.4 04/09/07 SMI@(#)string.h 1.27 07/01/14 SMI@(#)string_iso.h 1.5 04/06/18 SMI@(#)stdlib.h 1.51 04/06/30 SMI@(#)stdlib_iso.h 1.9 04/09/28 SMI@(#)stdlib_c99.h 1.2 04/03/29 SMI@(#)stdio.h 1.84 04/09/28 SMI@(#)stdio_iso.h 1.8 05/08/16 SMI@(#)va_list.h 1.15 04/11/19 SMI@(#)stdio_tag.h 1.4 04/09/28 SMI@(#)stdio_impl.h 1.15 07/03/05 SMI@(#)stdio_c99.h 1.2 04/03/29 SMIacomp: Sun C 5.11 SunOS_sparc 145354-01 2010/10/11@(#)stddef.h 1.18 04/09/28 SMI@(#)isa_defs.h 1.29 08/06/06 SMI@(#)stddef_iso.h 1.2 03/03/06 SMI@(#)limits.h 1.59 04/08/24 SMI@(#)feature_tests.h 1.25 07/02/02 SMI@(#)ccompile.h 1.2 04/11/08 SMI@(#)limits_iso.h 1.2 03/12/04 SMI@(#)int_limits.h 1.9 04/09/28 SMI@(#)alloca.h 1.16 04/09/28 SMI@(#)types.h 1.86 07/09/20 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.10 04/09/28 SMI@(#)select.h 1.19 04/01/28 SMI@(#)time_impl.h 1.11 05/05/19 SMI@(#)time.h 2.77 09/06/02 SMI@(#)time.h 1.45 08/01/09 SMI@(#)time_iso.h 1.4 04/09/07 SMI@(#)string.h 1.27 07/01/14 SMI@(#)string_iso.h 1.5 04/06/18 SMI@(#)stdlib.h 1.51 04/06/30 SMI@(#)stdlib_iso.h 1.9 04/09/28 SMI@(#)stdlib_c99.h 1.2 04/03/29 SMIacomp: Sun C 5.11 SunOS_sparc 145354-01 2010/10/11@(#)stddef.h 1.18 04/09/28 SMI@(#)isa_defs.h 1.29 08/06/06 SMI@(#)stddef_iso.h 1.2 03/03/06 SMI@(#)limits.h 1.59 04/08/24 SMI@(#)feature_tests.h 1.25 07/02/02 SMI@(#)ccompile.h 1.2 04/11/08 SMI@(#)limits_iso.h 1.2 03/12/04 SMI@(#)int_limits.h 1.9 04/09/28 SMI@(#)alloca.h 1.16 04/09/28 SMI@(#)types.h 1.86 07/09/20 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.10 04/09/28 SMI@(#)select.h 1.19 04/01/28 SMI@(#)time_impl.h 1.11 05/05/19 SMI@(#)time.h 2.77 09/06/02 SMI@(#)time.h 1.45 08/01/09 SMI@(#)time_iso.h 1.4 04/09/07 SMI@(#)string.h 1.27 07/01/14 SMI@(#)string_iso.h 1.5 04/06/18 SMIacomp: Sun C 5.11 SunOS_sparc 145354-01 2010/10/11@(#)stddef.h 1.18 04/09/28 SMI@(#)isa_defs.h 1.29 08/06/06 SMI@(#)stddef_iso.h 1.2 03/03/06 SMI@(#)limits.h 1.59 04/08/24 SMI@(#)feature_tests.h 1.25 07/02/02 SMI@(#)ccompile.h 1.2 04/11/08 SMI@(#)limits_iso.h 1.2 03/12/04 SMI@(#)int_limits.h 1.9 04/09/28 SMI@(#)alloca.h 1.16 04/09/28 SMI@(#)types.h 1.86 07/09/20 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.10 04/09/28 SMI@(#)select.h 1.19 04/01/28 SMI@(#)time_impl.h 1.11 05/05/19 SMI@(#)time.h 2.77 09/06/02 SMI@(#)time.h 1.45 08/01/09 SMI@(#)time_iso.h 1.4 04/09/07 SMI@(#)string.h 1.27 07/01/14 SMI@(#)string_iso.h 1.5 04/06/18 SMIacomp: Sun C 5.11 SunOS_sparc 145354-01 2010/10/11@(#)stddef.h 1.18 04/09/28 SMI@(#)isa_defs.h 1.29 08/06/06 SMI@(#)stddef_iso.h 1.2 03/03/06 SMI@(#)limits.h 1.59 04/08/24 SMI@(#)feature_tests.h 1.25 07/02/02 SMI@(#)ccompile.h 1.2 04/11/08 SMI@(#)limits_iso.h 1.2 03/12/04 SMI@(#)int_limits.h 1.9 04/09/28 SMI@(#)alloca.h 1.16 04/09/28 SMI@(#)types.h 1.86 07/09/20 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.10 04/09/28 SMI@(#)select.h 1.19 04/01/28 SMI@(#)time_impl.h 1.11 05/05/19 SMI@(#)time.h 2.77 09/06/02 SMI@(#)time.h 1.45 08/01/09 SMI@(#)time_iso.h 1.4 04/09/07 SMI@(#)string.h 1.27 07/01/14 SMI@(#)string_iso.h 1.5 04/06/18 SMI@(#)stdlib.h 1.51 04/06/30 SMI@(#)stdlib_iso.h 1.9 04/09/28 SMI@(#)stdlib_c99.h 1.2 04/03/29 SMIacomp: Sun C 5.11 SunOS_sparc 145354-01 2010/10/11@(#)stddef.h 1.18 04/09/28 SMI@(#)isa_defs.h 1.29 08/06/06 SMI@(#)stddef_iso.h 1.2 03/03/06 SMI@(#)limits.h 1.59 04/08/24 SMI@(#)feature_tests.h 1.25 07/02/02 SMI@(#)ccompile.h 1.2 04/11/08 SMI@(#)limits_iso.h 1.2 03/12/04 SMI@(#)int_limits.h 1.9 04/09/28 SMI@(#)alloca.h 1.16 04/09/28 SMI@(#)types.h 1.86 07/09/20 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.10 04/09/28 SMI@(#)select.h 1.19 04/01/28 SMI@(#)time_impl.h 1.11 05/05/19 SMI@(#)time.h 2.77 09/06/02 SMI@(#)time.h 1.45 08/01/09 SMI@(#)time_iso.h 1.4 04/09/07 SMI@(#)string.h 1.27 07/01/14 SMI@(#)string_iso.h 1.5 04/06/18 SMI@(#)stdlib.h 1.51 04/06/30 SMI@(#)stdlib_iso.h 1.9 04/09/28 SMI@(#)stdlib_c99.h 1.2 04/03/29 SMIacomp: Sun C 5.11 SunOS_sparc 145354-01 2010/10/11@(#)stddef.h 1.18 04/09/28 SMI@(#)isa_defs.h 1.29 08/06/06 SMI@(#)stddef_iso.h 1.2 03/03/06 SMI@(#)limits.h 1.59 04/08/24 SMI@(#)feature_tests.h 1.25 07/02/02 SMI@(#)ccompile.h 1.2 04/11/08 SMI@(#)limits_iso.h 1.2 03/12/04 SMI@(#)int_limits.h 1.9 04/09/28 SMI@(#)alloca.h 1.16 04/09/28 SMI@(#)types.h 1.86 07/09/20 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.10 04/09/28 SMI@(#)select.h 1.19 04/01/28 SMI@(#)time_impl.h 1.11 05/05/19 SMI@(#)time.h 2.77 09/06/02 SMI@(#)time.h 1.45 08/01/09 SMI@(#)time_iso.h 1.4 04/09/07 SMI@(#)string.h 1.27 07/01/14 SMI@(#)string_iso.h 1.5 04/06/18 SMI@(#)stdlib.h 1.51 04/06/30 SMI@(#)stdlib_iso.h 1.9 04/09/28 SMI@(#)stdlib_c99.h 1.2 04/03/29 SMIacomp: Sun C 5.11 SunOS_sparc 145354-01 2010/10/11as: Sun Compiler Common 12.2 SunOS_sparc 2010/08/13 as: Sun Compiler Common 12.2 SunOS_sparc 2010/08/13 ld: Software Generation Utilities - Solaris Link Editors: 5.10-1.500src/debug.c /var/tmp/libffi-3.0.9 /opt/solstudio12.2/prod/bin/cc -xtarget=ultra -m64 -xcode=pic32 -DHAVE_CONFIG_H -I. -I. -I./include -Iinclude -I./src -g -g -c -KPIC -DPIC src/debug.c -W0,-xp\$XAoAMiKaveyNEMd.Xa;g;P;R=Sun C 5.11 SunOS_sparc 145354-01 2010/10/11;G=$XAoAMiKaveyNEMd.;backend;raw;cd;DBG_GEN 5.3.0ffi_stop_here!(,Dffi_assert*Pexpr)xfile)pline)lD$charintffi_type_test32XDunsigned longsize_tffi_abi} FFI_FIRST_ABI FFI_V8 FFI_V8PLUS FFI_V9 FFI_DEFAULT_ABI FFI_LAST_ABIffi_abiunsignedunsigned short _ffi_type size# alignment# type# elements#  ffi_type " 5  abi}# nargs# arg_types># rtype5# bytes# flags#Gffi_cif intffi_java_raw_to_ptrarrayJ!D}cifIxnrawIpwargsIhiKdtp>LXD$signed long}ffi_sargffi_argfloatcharlongvoid W sint# uint# flt# data# ptr#ffi_java_raw W ffi_java_ptrarray_to_raw!#cifxwargspnrawhidtp>XD$ffi_java_rvalue_to_raw$H$~cifxrvaluepD ffi_java_raw_to_rvalue %8%cifxrvaluepD ffi_java_raw_call)&(&cif'xfn'prvalue'hnraw(`avaluew*XD ffi_java_translate_args5&'lNcif3xrvalue3pwavalue4huser_data4`rawn6Xcl R7PDkw k  @ 8 trampN# cif# translate_args# this_closure#( fun#0 user_data#8ffi_raw_closure 8ffi_prep_java_raw_closure_locD'(  ] ( {cl?xcif@p funAhuser_dataB`codelocCXstatus ]EPD, ] FFI_OK FFI_BAD_TYPEDEF FFI_BAD_ABI (ffi_status  w  @ \ tramp r# cif# translate_args # this_closure#( fun #0 user_data#8 ffi_java_raw_closure \ ffi_prep_java_raw_closure^(P( ] + {clZxcif[p .fun\huser_data]`D + mkstemp g 7mkstemp  7abort__builtin_alloca  G ffi_call   w 6 fw 6 0 tramp # cif# fun f# user_data#( o G ffi_prep_closure_loc ]     src/closures.c /var/tmp/libffi-3.0.9 /opt/solstudio12.2/prod/bin/cc -xtarget=ultra -m64 -xcode=pic32 -DHAVE_CONFIG_H -I. -I. -I./include -Iinclude -I./src -g -g -c -KPIC -DPIC src/closures.c -W0,-xp\$XAoAMiKcveyN0sd.Xa;g;P;R=Sun C 5.11 SunOS_sparc 145354-01 2010/10/11;G=$XAoAMiKcveyN0sd.;backend;raw;cd;DBG_GEN 5.3.0ffi_closure_allock()sizejxcodejpD voidunsigned longsize_tffi_closure_freet)0)DUptrsxDcharUint mkstempf ] mkstempf ] malloc  free  src/sparc/ffi.c /var/tmp/libffi-3.0.9 /opt/solstudio12.2/prod/bin/cc -xtarget=ultra -m64 -xcode=pic32 -DHAVE_CONFIG_H -I. -I. -I./include -Iinclude -I./src -g -g -c -KPIC -DPIC src/sparc/ffi.c -W0,-xp\$XAoAMiKdveyN02d.Xa;g;P;R=Sun C 5.11 SunOS_sparc 145354-01 2010/10/11;G=$XAoAMiKdveyN02d.;backend;raw;cd;DBG_GEN 5.3.0ffi_prep_args_v8%)h+W_stack$xecif$pi&lp_argv^'`argp_(Xp_arg)P)+)+p)+pzGHcharWffi_abi FFI_FIRST_ABI FFI_V8 FFI_V8PLUS FFI_V9 FFI_DEFAULT_ABI FFI_LAST_ABI hffi_abiunsignedunsigned long size_tunsigned short _ffi_type size# alignment # type # elements# ffi_type 2 abi# nargs# arg_types# rtype# bytes# flags# ffi_cif2voidMU  cifD# rvalueU# avalue^# gextended_cifintffi_prep_args_v9{+0_stackzxecifzpi|hret|dtmp}`p_argv^~Xargp_Pp_argH,|0,/,/z@ffi_prep_cif_machdep02ZDcifxwordsizep FFI_OK FFI_BAD_TYPEDEF FFI_BAD_ABI Zffi_statusffi_v9_layout_structQ3H5dYargPxoffPt_retPh_intgP`_fltPXptrRHffi_call{57XDcifzxfnzpUrvaluezh^avaluez`ecif|HrvalU}@ffi_prep_closure_loc7x8` closurexDcifp funhUuser_data`UcodelocXtramp Hfn@longW  9DU^U 0 tramp# cifD# fun 9# user_dataU#( Bffi_closure  ffi_closure_sparc_inner_v88;h  closurexUrvaluep gprh scratch`cifDParg_typesHavalue^@iargnffi_closure_sparc_inner_v9';?8  closure%xUrvalue&p gpr&h fpr&`cifD(Parg_types)Havalue^*@i+argn+fp_slot_max+double ffi_closure_v9g 4ffi_call_v9 U +  7mkstemp _mkstemp _M memmoveU 1U M 1memcpyU {U :__builtin_allocaU src./include/usr/include/iso/usr/include/usr/include/sysdebug.cffi.hstddef_iso.hstdio_impl.htypes.hstdio_iso.h ($ P *L :e src./include/usr/include/isoprep_cif.cffi.hstddef_iso.hffitarget.h -!@8Yr1  @P @ |05 g  p8]S src./include/usr/include/isotypes.cffi.hstddef_iso.hd src/usr/include/iso./includeraw_api.cstddef_iso.hffi.hffitarget.h $$ y    ;-(((($ a~>  -,,,,,,(,4 X~- ,(0 X,(<  @ 8Di src/usr/include/iso./includejava_raw_api.cstddef_iso.hffi.hffitarget.h 0.-v~   -(($ d~ ! -, ,~ $H m %8p &(,(0  &,(<  ' @ (P8C src/usr/include/isoclosures.cstddef_iso.h (0 )0 v src/sparc./include/usr/include/isoffi.cffi_common.hffi.hffitarget.hstddef_iso.h )h )+ ) ) ) ) ) * *, *< *L *\ *d *l * * * * * * * *p +4 +T +` +pQ +2 +  + + , , , ,  ,X ,h ,t ,| , , , , , , - - - - -(m - - - - - - - - - . . .$ ., .@ .H .\ .d . .` .% . . / /( /0 /D /l /x / / / / / / / 0 0  0 0 0 0 0 0 1 1 1$ 18 1D 1d 1 1 1 1 1 1 1 2 2 2( 28 2@ 2T 2h 2t 2| 2 2Z 2( 2  3H 3t 3 3 3 3 3 4 4, 44 4d 4| 4 4 4 4o 5< 5Hh 5\ 5d  5 5 5 5 5 5 6 6 68 6< 6L 6l 6t  6| 6 6 7  7( 70h 7X 7x 7 7 7 7 7 7 8 8  8 8( 8X  8`  8 8 8 8 8 9 9 9 9< 9| 9 :4 :L :l : : : : ;d ;(! ;X ;h  ; ; ; ; ; < < <, <4 h > >X >- ?( ?8  DD%.?  : ; @ ' D D D I: ;  $> II:  :  I8 I  !I/ .? < ' ID  I&I.? < ' ID .? < ' D  DD%. : ; @ ' ID I: ;  4I : ;  D D  : ( I: $>  :  I8 I .?  : ; @ ' ID  :  : I !I/ ' D I' D .? < ' ID .? < ' ID  DD%$> I:  :  I8 I&I4I?  : ;   DD%.?  : ; @ ' ID I: ;  4I : ;  D D $> I:  :  (  :  I8 I  : .?  : ; @ ' D I !I/  : ' D . : ; @ ' D ' D I : &I.? < ' ID .? < ' D .? < ' ID  DD%.?  : ; @ ' ID I: ;  4I : ;  D D $> I:  :  (  :  I8 I  : .?  : ; @ ' D I !I/  : . : ; @ ' D . : ;@ ' D I: ; .?  : ;@ ' D 4I : ; ' D ' D I.?  : ;@ ' ID  : .? < ' ID .? < ' D .? < ' D .? < ' ID  DD%.?  : ;@ ' ID I: ; D D $> II: .?  : ;@ ' D  .? < ' ID  I .? < ' D  DD%.?  : ; @ ' D I: ;  4I : ;   $> I :  ( I:  :  I8  : .?  : ; @ ' ID  : .?  : ;@ ' ID I: ; 4I : ; .?  : ;@ ' D ' D I !I/ ' D I.? < ' D .? < ' ID &I.? < ' ID Y]ffi_stop_hereffi_assertffi_type_testHlffi_prep_cifffi_prep_closureR"ffi_type_voidPffi_type_uint8ffi_type_sint8ffi_type_uint16ffi_type_sint16ffi_type_uint32>ffi_type_sint32nffi_type_uint64ffi_type_sint64ffi_type_pointerffi_type_float.ffi_type_double^ffi_type_longdouble affi_raw_sizeffi_raw_to_ptrarraygffi_ptrarray_to_rawffi_raw_call[ffi_prep_raw_closure_loc rffi_prep_raw_closure<kffi_java_raw_sizeffi_java_raw_to_ptrarrayffi_java_ptrarray_to_rawffi_java_raw_call [ffi_prep_java_raw_closure_loc ffi_prep_java_raw_closureM-cffi_closure_alloc ffi_closure_free0 effi_prep_args_v8ffi_prep_args_v9ffi_prep_cif_machdepffi_v9_layout_structYffi_call ffi_prep_closure_loc ffi_closure_sparc_inner_v8 ffi_closure_sparc_inner_v9size_t_ffi_type)ffi_typej__FILEoff64_tFILEqoff_tlffi_status&size_tI_ffi_typeffi_typeffi_abiffi_abi;ffi_cif6ffi_closureLnsize_t_ffi_typeffi_type size_t ffi_abinffi_abi_ffi_typeffi_type8ffi_cifxffi_sargffi_argCffi_raw8ffi_raw_closure  Qffi_status /0<size_tffi_abi}ffi_abi_ffi_type"ffi_typeGffi_cifffi_sargffi_argWffi_java_raw 8ffi_raw_closure ( ]ffi_status \ffi_java_raw_closure o)-size_t0 hffi_abiffi_abisize_t_ffi_typeffi_type2ffi_cifgextended_cifZffi_status B ffi_closure7lcinitialize_aggregate5 ffi_translate_argsx<ffi_java_rvalue_to_raw~ffi_java_raw_to_rvalueffi_java_translate_args.hash.dynsym.dynstr.SUNW_version.rela.got.rela.eh_frame.rela.plt.text.init.fini.rodata.rodata1.dynamic.data.picdata.bss.symtab.strtab.annotate.comment.debug_info.debug_line.debug_abbrev.debug_pubnames.debug_typenames.debug_funcnames.shstrtab " o %B   /B `>BH2NBBTBBZBBbBB *CC8CDDD kGHGHtHHzHH84J J JJJ] Yo^P_u>~3 4R Z 07070100087dac000081ed0000000000000000000000014dc9ebe1000003a30000010000010007ffffffffffffffff0000001d00000000root/usr/local/lib/libffi.la# libffi.la - a libtool library file # Generated by ltmain.sh (GNU libtool) 2.2.6 # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='libffi.so.5' # Names of this library. library_names='libffi.so.5.0.10 libffi.so.5 libffi.so' # The name of the static archive. old_library='libffi.a' # Linker flags that can not go in dependency_libs. inherited_linker_flags='' # Libraries that this one depends upon. dependency_libs=' -L/usr/local/lib' # Names of additional weak libraries provided by this library weak_library_names='' # Version information for libffi. current=5 age=0 revision=10 # Is this an already installed library? installed=yes # Should we warn about portability when linking against -modules? shouldnotlink=no # Files to dlopen/dlpreopen dlopen='' dlpreopen='' # Directory that this library needs to be installed in: libdir='/usr/local/lib' 07070100087da7000041ed0000000000000000000000034dc9ec4f000000000000010000010007ffffffffffffffff0000002000000000root/usr/local/lib/libffi-3.0.907070100087da8000041ed0000000000000000000000024dc9ec4f000000000000010000010007ffffffffffffffff0000002800000000root/usr/local/lib/libffi-3.0.9/include07070100087da9000081a40000000000000000000000014dc9ebe000002a850000010000010007ffffffffffffffff0000002e00000000root/usr/local/lib/libffi-3.0.9/include/ffi.h/* -----------------------------------------------------------------*-C-*- libffi 3.0.9 - Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ /* ------------------------------------------------------------------- The basic API is described in the README file. The raw API is designed to bypass some of the argument packing and unpacking on architectures for which it can be avoided. The closure API allows interpreted functions to be packaged up inside a C function pointer, so that they can be called as C functions, with no understanding on the client side that they are interpreted. It can also be used in other cases in which it is necessary to package up a user specified parameter and a function pointer as a single function pointer. The closure API must be implemented in order to get its functionality, e.g. for use by gij. Routines are provided to emulate the raw API if the underlying platform doesn't allow faster implementation. More details on the raw and cloure API can be found in: http://gcc.gnu.org/ml/java/1999-q3/msg00138.html and http://gcc.gnu.org/ml/java/1999-q3/msg00174.html -------------------------------------------------------------------- */ #ifndef LIBFFI_H #define LIBFFI_H #ifdef __cplusplus extern "C" { #endif /* Specify which architecture libffi is configured for. */ #define SPARC /* ---- System configuration information --------------------------------- */ #include #ifndef LIBFFI_ASM #ifdef _MSC_VER #define __attribute__(X) #endif #include #include /* LONG_LONG_MAX is not always defined (not if STRICT_ANSI, for example). But we can find it either under the correct ANSI name, or under GNU C's internal name. */ #ifdef LONG_LONG_MAX # define FFI_LONG_LONG_MAX LONG_LONG_MAX #else # ifdef LLONG_MAX # define FFI_LONG_LONG_MAX LLONG_MAX # else # ifdef __GNUC__ # define FFI_LONG_LONG_MAX __LONG_LONG_MAX__ # endif # endif #endif /* The closure code assumes that this works on pointers, i.e. a size_t */ /* can hold a pointer. */ typedef struct _ffi_type { size_t size; unsigned short alignment; unsigned short type; struct _ffi_type **elements; } ffi_type; #ifndef LIBFFI_HIDE_BASIC_TYPES #if SCHAR_MAX == 127 # define ffi_type_uchar ffi_type_uint8 # define ffi_type_schar ffi_type_sint8 #else #error "char size not supported" #endif #if SHRT_MAX == 32767 # define ffi_type_ushort ffi_type_uint16 # define ffi_type_sshort ffi_type_sint16 #elif SHRT_MAX == 2147483647 # define ffi_type_ushort ffi_type_uint32 # define ffi_type_sshort ffi_type_sint32 #else #error "short size not supported" #endif #if INT_MAX == 32767 # define ffi_type_uint ffi_type_uint16 # define ffi_type_sint ffi_type_sint16 #elif INT_MAX == 2147483647 # define ffi_type_uint ffi_type_uint32 # define ffi_type_sint ffi_type_sint32 #elif INT_MAX == 9223372036854775807 # define ffi_type_uint ffi_type_uint64 # define ffi_type_sint ffi_type_sint64 #else #error "int size not supported" #endif #if LONG_MAX == 2147483647 # if FFI_LONG_LONG_MAX != 9223372036854775807 #error "no 64-bit data type supported" # endif #elif LONG_MAX != 9223372036854775807 #error "long size not supported" #endif #if LONG_MAX == 2147483647 # define ffi_type_ulong ffi_type_uint32 # define ffi_type_slong ffi_type_sint32 #elif LONG_MAX == 9223372036854775807 # define ffi_type_ulong ffi_type_uint64 # define ffi_type_slong ffi_type_sint64 #else #error "long size not supported" #endif /* These are defined in types.c */ extern ffi_type ffi_type_void; extern ffi_type ffi_type_uint8; extern ffi_type ffi_type_sint8; extern ffi_type ffi_type_uint16; extern ffi_type ffi_type_sint16; extern ffi_type ffi_type_uint32; extern ffi_type ffi_type_sint32; extern ffi_type ffi_type_uint64; extern ffi_type ffi_type_sint64; extern ffi_type ffi_type_float; extern ffi_type ffi_type_double; extern ffi_type ffi_type_pointer; #if 1 extern ffi_type ffi_type_longdouble; #else #define ffi_type_longdouble ffi_type_double #endif #endif /* LIBFFI_HIDE_BASIC_TYPES */ typedef enum { FFI_OK = 0, FFI_BAD_TYPEDEF, FFI_BAD_ABI } ffi_status; typedef unsigned FFI_TYPE; typedef struct { ffi_abi abi; unsigned nargs; ffi_type **arg_types; ffi_type *rtype; unsigned bytes; unsigned flags; #ifdef FFI_EXTRA_CIF_FIELDS FFI_EXTRA_CIF_FIELDS; #endif } ffi_cif; /* ---- Definitions for the raw API -------------------------------------- */ #ifndef FFI_SIZEOF_ARG # if LONG_MAX == 2147483647 # define FFI_SIZEOF_ARG 4 # elif LONG_MAX == 9223372036854775807 # define FFI_SIZEOF_ARG 8 # endif #endif #ifndef FFI_SIZEOF_JAVA_RAW # define FFI_SIZEOF_JAVA_RAW FFI_SIZEOF_ARG #endif typedef union { ffi_sarg sint; ffi_arg uint; float flt; char data[FFI_SIZEOF_ARG]; void* ptr; } ffi_raw; #if FFI_SIZEOF_JAVA_RAW == 4 && FFI_SIZEOF_ARG == 8 /* This is a special case for mips64/n32 ABI (and perhaps others) where sizeof(void *) is 4 and FFI_SIZEOF_ARG is 8. */ typedef union { signed int sint; unsigned int uint; float flt; char data[FFI_SIZEOF_JAVA_RAW]; void* ptr; } ffi_java_raw; #else typedef ffi_raw ffi_java_raw; #endif void ffi_raw_call (ffi_cif *cif, void (*fn)(void), void *rvalue, ffi_raw *avalue); void ffi_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_raw *raw); void ffi_raw_to_ptrarray (ffi_cif *cif, ffi_raw *raw, void **args); size_t ffi_raw_size (ffi_cif *cif); /* This is analogous to the raw API, except it uses Java parameter */ /* packing, even on 64-bit machines. I.e. on 64-bit machines */ /* longs and doubles are followed by an empty 64-bit word. */ void ffi_java_raw_call (ffi_cif *cif, void (*fn)(void), void *rvalue, ffi_java_raw *avalue); void ffi_java_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_java_raw *raw); void ffi_java_raw_to_ptrarray (ffi_cif *cif, ffi_java_raw *raw, void **args); size_t ffi_java_raw_size (ffi_cif *cif); /* ---- Definitions for closures ----------------------------------------- */ #if FFI_CLOSURES typedef struct { char tramp[FFI_TRAMPOLINE_SIZE]; ffi_cif *cif; void (*fun)(ffi_cif*,void*,void**,void*); void *user_data; #ifdef __GNUC__ } ffi_closure __attribute__((aligned (8))); #else } ffi_closure; #endif void *ffi_closure_alloc (size_t size, void **code); void ffi_closure_free (void *); ffi_status ffi_prep_closure (ffi_closure*, ffi_cif *, void (*fun)(ffi_cif*,void*,void**,void*), void *user_data); ffi_status ffi_prep_closure_loc (ffi_closure*, ffi_cif *, void (*fun)(ffi_cif*,void*,void**,void*), void *user_data, void*codeloc); typedef struct { char tramp[FFI_TRAMPOLINE_SIZE]; ffi_cif *cif; #if !FFI_NATIVE_RAW_API /* if this is enabled, then a raw closure has the same layout as a regular closure. We use this to install an intermediate handler to do the transaltion, void** -> ffi_raw*. */ void (*translate_args)(ffi_cif*,void*,void**,void*); void *this_closure; #endif void (*fun)(ffi_cif*,void*,ffi_raw*,void*); void *user_data; } ffi_raw_closure; typedef struct { char tramp[FFI_TRAMPOLINE_SIZE]; ffi_cif *cif; #if !FFI_NATIVE_RAW_API /* if this is enabled, then a raw closure has the same layout as a regular closure. We use this to install an intermediate handler to do the transaltion, void** -> ffi_raw*. */ void (*translate_args)(ffi_cif*,void*,void**,void*); void *this_closure; #endif void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*); void *user_data; } ffi_java_raw_closure; ffi_status ffi_prep_raw_closure (ffi_raw_closure*, ffi_cif *cif, void (*fun)(ffi_cif*,void*,ffi_raw*,void*), void *user_data); ffi_status ffi_prep_raw_closure_loc (ffi_raw_closure*, ffi_cif *cif, void (*fun)(ffi_cif*,void*,ffi_raw*,void*), void *user_data, void *codeloc); ffi_status ffi_prep_java_raw_closure (ffi_java_raw_closure*, ffi_cif *cif, void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), void *user_data); ffi_status ffi_prep_java_raw_closure_loc (ffi_java_raw_closure*, ffi_cif *cif, void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), void *user_data, void *codeloc); #endif /* FFI_CLOSURES */ /* ---- Public interface definition -------------------------------------- */ ffi_status ffi_prep_cif(ffi_cif *cif, ffi_abi abi, unsigned int nargs, ffi_type *rtype, ffi_type **atypes); void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue); /* Useful for eliminating compiler warnings */ #define FFI_FN(f) ((void (*)(void))f) /* ---- Definitions shared with assembly code ---------------------------- */ #endif /* If these change, update src/mips/ffitarget.h. */ #define FFI_TYPE_VOID 0 #define FFI_TYPE_INT 1 #define FFI_TYPE_FLOAT 2 #define FFI_TYPE_DOUBLE 3 #if 1 #define FFI_TYPE_LONGDOUBLE 4 #else #define FFI_TYPE_LONGDOUBLE FFI_TYPE_DOUBLE #endif #define FFI_TYPE_UINT8 5 #define FFI_TYPE_SINT8 6 #define FFI_TYPE_UINT16 7 #define FFI_TYPE_SINT16 8 #define FFI_TYPE_UINT32 9 #define FFI_TYPE_SINT32 10 #define FFI_TYPE_UINT64 11 #define FFI_TYPE_SINT64 12 #define FFI_TYPE_STRUCT 13 #define FFI_TYPE_POINTER 14 /* This should always refer to the last type code (for sanity checks) */ #define FFI_TYPE_LAST FFI_TYPE_POINTER #ifdef __cplusplus } #endif #endif 07070100087daa000081a40000000000000000000000014dc9ebe0000008210000010000010007ffffffffffffffff0000003400000000root/usr/local/lib/libffi-3.0.9/include/ffitarget.h/* -----------------------------------------------------------------*-C-*- ffitarget.h - Copyright (c) 1996-2003 Red Hat, Inc. Target configuration macros for SPARC. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ #ifndef LIBFFI_TARGET_H #define LIBFFI_TARGET_H /* ---- System specific configurations ----------------------------------- */ #if defined(__arch64__) || defined(__sparcv9) #define SPARC64 #endif #ifndef LIBFFI_ASM typedef unsigned long ffi_arg; typedef signed long ffi_sarg; typedef enum ffi_abi { FFI_FIRST_ABI = 0, FFI_V8, FFI_V8PLUS, FFI_V9, #ifdef SPARC64 FFI_DEFAULT_ABI = FFI_V9, #else FFI_DEFAULT_ABI = FFI_V8, #endif FFI_LAST_ABI = FFI_DEFAULT_ABI + 1 } ffi_abi; #endif /* ---- Definitions for closures ----------------------------------------- */ #define FFI_CLOSURES 1 #define FFI_NATIVE_RAW_API 0 #ifdef SPARC64 #define FFI_TRAMPOLINE_SIZE 24 #else #define FFI_TRAMPOLINE_SIZE 16 #endif #endif 07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000b00000000TRAILER!!!