Testsuite fixes.

This commit is contained in:
green
2001-10-21 19:18:42 +00:00
parent 5435965f90
commit 4af66bb62f
8 changed files with 40 additions and 39 deletions

View File

@@ -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...

View File

@@ -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

View File

@@ -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

View File

@@ -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__

View File

@@ -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;

View File

@@ -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,

View File

@@ -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;

View File

@@ -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);