Testsuite fixes.
This commit is contained in:
@@ -1,3 +1,17 @@
|
|||||||
|
Sun Oct 21 12:15:17 2001 Anthony Green <green@redhat.com>
|
||||||
|
|
||||||
|
* testsuite/lib/libffi.exp, testsuite/libffi.call/float.c,
|
||||||
|
testsuite/libffi.call/many.c, testsuite/libffi.call/strlen.c,
|
||||||
|
testsuite/libffi.call/ffitest.h, testsuite/libffi.call/call.exp,
|
||||||
|
testsuite/config/default.exp, testsuite/Makefile.am,
|
||||||
|
testsuite/Makefile.in: New files.
|
||||||
|
|
||||||
|
* include/ffi.h: Remove /*@ comments.
|
||||||
|
(FFI_ALIGN_RVALUE): Define.
|
||||||
|
|
||||||
|
* Makefile.am (libffi_la_LDFLAGS): Remove -I$(srcdir)/src.
|
||||||
|
* Makefile.in: Rebuilt.
|
||||||
|
|
||||||
Sun Apr 22 15:50:08 2001 Anthony Green <green@redhat.com>
|
Sun Apr 22 15:50:08 2001 Anthony Green <green@redhat.com>
|
||||||
|
|
||||||
* include/ffi_common.h: Delete, after moving contents to...
|
* include/ffi_common.h: Delete, after moving contents to...
|
||||||
|
|||||||
@@ -43,4 +43,4 @@ AM_CFLAGS = -fexceptions
|
|||||||
|
|
||||||
libffi_la_LDFLAGS = -release $(VERSION)
|
libffi_la_LDFLAGS = -release $(VERSION)
|
||||||
|
|
||||||
INCLUDES = -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src
|
INCLUDES = -I$(top_srcdir)/include -Iinclude
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ AC_SUBST(libffi_basedir)
|
|||||||
|
|
||||||
AC_CANONICAL_HOST
|
AC_CANONICAL_HOST
|
||||||
|
|
||||||
AM_INIT_AUTOMAKE(libffi,2.00-beta,no-define)
|
AM_INIT_AUTOMAKE(libffi,2.00,no-define)
|
||||||
|
|
||||||
AC_EXEEXT
|
AC_EXEEXT
|
||||||
AM_MAINTAINER_MODE
|
AM_MAINTAINER_MODE
|
||||||
|
|||||||
@@ -20,7 +20,6 @@
|
|||||||
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
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
|
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
OTHER DEALINGS IN THE SOFTWARE.
|
OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
----------------------------------------------------------------------- */
|
----------------------------------------------------------------------- */
|
||||||
|
|
||||||
/* -------------------------------------------------------------------
|
/* -------------------------------------------------------------------
|
||||||
@@ -234,10 +233,10 @@ typedef union {
|
|||||||
void* ptr;
|
void* ptr;
|
||||||
} ffi_raw;
|
} ffi_raw;
|
||||||
|
|
||||||
void ffi_raw_call (/*@dependent@*/ ffi_cif *cif,
|
void ffi_raw_call (ffi_cif *cif,
|
||||||
void (*fn)(),
|
void (*fn)(),
|
||||||
/*@out@*/ void *rvalue,
|
void *rvalue,
|
||||||
/*@dependent@*/ ffi_raw *avalue);
|
ffi_raw *avalue);
|
||||||
|
|
||||||
void ffi_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_raw *raw);
|
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);
|
void ffi_raw_to_ptrarray (ffi_cif *cif, ffi_raw *raw, void **args);
|
||||||
@@ -249,10 +248,10 @@ size_t ffi_raw_size (ffi_cif *cif);
|
|||||||
/* packing, even on 64-bit machines. I.e. on 64-bit machines */
|
/* packing, even on 64-bit machines. I.e. on 64-bit machines */
|
||||||
/* longs and doubles are followed by an empty 64-bit word. */
|
/* longs and doubles are followed by an empty 64-bit word. */
|
||||||
|
|
||||||
void ffi_java_raw_call (/*@dependent@*/ ffi_cif *cif,
|
void ffi_java_raw_call (ffi_cif *cif,
|
||||||
void (*fn)(),
|
void (*fn)(),
|
||||||
/*@out@*/ void *rvalue,
|
void *rvalue,
|
||||||
/*@dependent@*/ ffi_raw *avalue);
|
ffi_raw *avalue);
|
||||||
|
|
||||||
void ffi_java_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_raw *raw);
|
void ffi_java_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_raw *raw);
|
||||||
void ffi_java_raw_to_ptrarray (ffi_cif *cif, ffi_raw *raw, void **args);
|
void ffi_java_raw_to_ptrarray (ffi_cif *cif, ffi_raw *raw, void **args);
|
||||||
@@ -262,6 +261,11 @@ size_t ffi_java_raw_size (ffi_cif *cif);
|
|||||||
|
|
||||||
#endif /* !FFI_NO_RAW_API */
|
#endif /* !FFI_NO_RAW_API */
|
||||||
|
|
||||||
|
/* ---- Return type alignment -------------------------------------------- */
|
||||||
|
|
||||||
|
/* This is more than enough for all supported architectures. */
|
||||||
|
#define FFI_ALIGN_RVALUE __attribute__((aligned(8)))
|
||||||
|
|
||||||
/* ---- Definitions for closures ----------------------------------------- */
|
/* ---- Definitions for closures ----------------------------------------- */
|
||||||
|
|
||||||
#ifdef __i386__
|
#ifdef __i386__
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ main ()
|
|||||||
float f;
|
float f;
|
||||||
double d;
|
double d;
|
||||||
long double ld;
|
long double ld;
|
||||||
int rint __attribute__((aligned(8)));
|
int rint FFI_ALIGN_RVALUE;
|
||||||
|
|
||||||
args[0] = &ffi_type_sint;
|
args[0] = &ffi_type_sint;
|
||||||
values[0] = &si1;
|
values[0] = &si1;
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ static float many(float f1,
|
|||||||
float f12,
|
float f12,
|
||||||
float f13)
|
float f13)
|
||||||
{
|
{
|
||||||
#if 1
|
#if 0
|
||||||
printf("%f %f %f %f %f %f %f %f %f %f %f %f %f\n",
|
printf("%f %f %f %f %f %f %f %f %f %f %f %f %f\n",
|
||||||
(double) f1, (double) f2, (double) f3, (double) f4, (double) f5,
|
(double) f1, (double) f2, (double) f3, (double) f4, (double) f5,
|
||||||
(double) f6, (double) f7, (double) f8, (double) f9, (double) f10,
|
(double) f6, (double) f7, (double) f8, (double) f9, (double) f10,
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ main ()
|
|||||||
ffi_cif cif;
|
ffi_cif cif;
|
||||||
ffi_type *args[1];
|
ffi_type *args[1];
|
||||||
void *values[1];
|
void *values[1];
|
||||||
int rint __attribute__((aligned(8)));
|
int rint FFI_ALIGN_RVALUE;
|
||||||
char *s;
|
char *s;
|
||||||
|
|
||||||
args[0] = &ffi_type_pointer;
|
args[0] = &ffi_type_pointer;
|
||||||
|
|||||||
@@ -25,16 +25,13 @@
|
|||||||
|
|
||||||
#include <ffi.h>
|
#include <ffi.h>
|
||||||
#include <ffi_private.h>
|
#include <ffi_private.h>
|
||||||
#include <ffi_common.h>
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
/* ffi_prep_args is called by the assembly routine once stack space
|
/* ffi_prep_args is called by the assembly routine once stack space
|
||||||
has been allocated for the function's arguments */
|
has been allocated for the function's arguments */
|
||||||
|
|
||||||
/*@-exportheader@*/
|
|
||||||
void ffi_prep_args(char *stack, extended_cif *ecif)
|
void ffi_prep_args(char *stack, extended_cif *ecif)
|
||||||
/*@=exportheader@*/
|
|
||||||
{
|
{
|
||||||
register unsigned int i;
|
register unsigned int i;
|
||||||
register int tmp;
|
register int tmp;
|
||||||
@@ -145,20 +142,16 @@ ffi_status ffi_prep_cif_machdep(ffi_cif *cif)
|
|||||||
return FFI_OK;
|
return FFI_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*@-declundef@*/
|
|
||||||
/*@-exportheader@*/
|
|
||||||
extern void ffi_call_SYSV(void (*)(char *, extended_cif *),
|
extern void ffi_call_SYSV(void (*)(char *, extended_cif *),
|
||||||
/*@out@*/ extended_cif *,
|
extended_cif *,
|
||||||
unsigned, unsigned,
|
unsigned, unsigned,
|
||||||
/*@out@*/ unsigned *,
|
unsigned *,
|
||||||
void (*fn)());
|
void (*fn)());
|
||||||
/*@=declundef@*/
|
|
||||||
/*@=exportheader@*/
|
|
||||||
|
|
||||||
void ffi_call(/*@dependent@*/ ffi_cif *cif,
|
void ffi_call(ffi_cif *cif,
|
||||||
void (*fn)(),
|
void (*fn)(),
|
||||||
/*@out@*/ void *rvalue,
|
void *rvalue,
|
||||||
/*@dependent@*/ void **avalue)
|
void **avalue)
|
||||||
{
|
{
|
||||||
extended_cif ecif;
|
extended_cif ecif;
|
||||||
|
|
||||||
@@ -171,9 +164,7 @@ void ffi_call(/*@dependent@*/ ffi_cif *cif,
|
|||||||
if ((rvalue == NULL) &&
|
if ((rvalue == NULL) &&
|
||||||
(cif->rtype->type == FFI_TYPE_STRUCT))
|
(cif->rtype->type == FFI_TYPE_STRUCT))
|
||||||
{
|
{
|
||||||
/*@-sysunrecog@*/
|
|
||||||
ecif.rvalue = alloca(cif->rtype->size);
|
ecif.rvalue = alloca(cif->rtype->size);
|
||||||
/*@=sysunrecog@*/
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
ecif.rvalue = rvalue;
|
ecif.rvalue = rvalue;
|
||||||
@@ -182,10 +173,8 @@ void ffi_call(/*@dependent@*/ ffi_cif *cif,
|
|||||||
switch (cif->abi)
|
switch (cif->abi)
|
||||||
{
|
{
|
||||||
case FFI_SYSV:
|
case FFI_SYSV:
|
||||||
/*@-usedef@*/
|
|
||||||
ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes,
|
ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes,
|
||||||
cif->flags, ecif.rvalue, fn);
|
cif->flags, ecif.rvalue, fn);
|
||||||
/*@=usedef@*/
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
FFI_ASSERT(0);
|
FFI_ASSERT(0);
|
||||||
@@ -266,11 +255,9 @@ ffi_closure_SYSV ()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*@-exportheader@*/
|
|
||||||
static void
|
static void
|
||||||
ffi_prep_incoming_args_SYSV(char *stack, void **rvalue,
|
ffi_prep_incoming_args_SYSV(char *stack, void **rvalue,
|
||||||
void **avalue, ffi_cif *cif)
|
void **avalue, ffi_cif *cif)
|
||||||
/*@=exportheader@*/
|
|
||||||
{
|
{
|
||||||
register unsigned int i;
|
register unsigned int i;
|
||||||
register int tmp;
|
register int tmp;
|
||||||
@@ -461,16 +448,16 @@ ffi_prep_args_raw(char *stack, extended_cif *ecif)
|
|||||||
|
|
||||||
extern void
|
extern void
|
||||||
ffi_call_SYSV(void (*)(char *, extended_cif *),
|
ffi_call_SYSV(void (*)(char *, extended_cif *),
|
||||||
/*@out@*/ extended_cif *,
|
extended_cif *,
|
||||||
unsigned, unsigned,
|
unsigned, unsigned,
|
||||||
/*@out@*/ unsigned *,
|
unsigned *,
|
||||||
void (*fn)());
|
void (*fn)());
|
||||||
|
|
||||||
void
|
void
|
||||||
ffi_raw_call(/*@dependent@*/ ffi_cif *cif,
|
ffi_raw_call(ffi_cif *cif,
|
||||||
void (*fn)(),
|
void (*fn)(),
|
||||||
/*@out@*/ void *rvalue,
|
void *rvalue,
|
||||||
/*@dependent@*/ ffi_raw *fake_avalue)
|
ffi_raw *fake_avalue)
|
||||||
{
|
{
|
||||||
extended_cif ecif;
|
extended_cif ecif;
|
||||||
void **avalue = (void **)fake_avalue;
|
void **avalue = (void **)fake_avalue;
|
||||||
@@ -484,9 +471,7 @@ ffi_raw_call(/*@dependent@*/ ffi_cif *cif,
|
|||||||
if ((rvalue == NULL) &&
|
if ((rvalue == NULL) &&
|
||||||
(cif->rtype->type == FFI_TYPE_STRUCT))
|
(cif->rtype->type == FFI_TYPE_STRUCT))
|
||||||
{
|
{
|
||||||
/*@-sysunrecog@*/
|
|
||||||
ecif.rvalue = alloca(cif->rtype->size);
|
ecif.rvalue = alloca(cif->rtype->size);
|
||||||
/*@=sysunrecog@*/
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
ecif.rvalue = rvalue;
|
ecif.rvalue = rvalue;
|
||||||
@@ -495,10 +480,8 @@ ffi_raw_call(/*@dependent@*/ ffi_cif *cif,
|
|||||||
switch (cif->abi)
|
switch (cif->abi)
|
||||||
{
|
{
|
||||||
case FFI_SYSV:
|
case FFI_SYSV:
|
||||||
/*@-usedef@*/
|
|
||||||
ffi_call_SYSV(ffi_prep_args_raw, &ecif, cif->bytes,
|
ffi_call_SYSV(ffi_prep_args_raw, &ecif, cif->bytes,
|
||||||
cif->flags, ecif.rvalue, fn);
|
cif->flags, ecif.rvalue, fn);
|
||||||
/*@=usedef@*/
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
FFI_ASSERT(0);
|
FFI_ASSERT(0);
|
||||||
|
|||||||
Reference in New Issue
Block a user