Commit ac6ed182 by Andreas Tobler Committed by Andreas Tobler

README: Remove notice about 'Crazy Comments'.

2006-04-22  Andreas Tobler  <a.tobler@schweiz.ch>

	* README: Remove notice about 'Crazy Comments'.
	* src/debug.c: Remove lint directives. Cleanup white spaces.
	* src/java_raw_api.c: Likewise.
	* src/prep_cif.c: Likewise.
	* src/raw_api.c: Likewise.
	* src/ffitest.c: Delete. No longer needed, all test cases migrated
	to the testsuite.
	* src/arm/ffi.c: Remove lint directives.
	* src/m32r/ffi.c: Likewise.
	* src/pa/ffi.c: Likewise.
	* src/powerpc/ffi.c: Likewise.
	* src/powerpc/ffi_darwin.c: Likewise.
	* src/sh/ffi.c: Likewise.
	* src/sh64/ffi.c: Likewise.
	* src/x86/ffi.c: Likewise.
	* testsuite/libffi.call/float2.c: Likewise.
	* testsuite/libffi.call/promotion.c: Likewise.
	* testsuite/libffi.call/struct1.c: Likewise.

From-SVN: r113181
parent 9542abd3
2006-04-22 Andreas Tobler <a.tobler@schweiz.ch>
* README: Remove notice about 'Crazy Comments'.
* src/debug.c: Remove lint directives. Cleanup white spaces.
* src/java_raw_api.c: Likewise.
* src/prep_cif.c: Likewise.
* src/raw_api.c: Likewise.
* src/ffitest.c: Delete. No longer needed, all test cases migrated
to the testsuite.
* src/arm/ffi.c: Remove lint directives.
* src/m32r/ffi.c: Likewise.
* src/pa/ffi.c: Likewise.
* src/powerpc/ffi.c: Likewise.
* src/powerpc/ffi_darwin.c: Likewise.
* src/sh/ffi.c: Likewise.
* src/sh64/ffi.c: Likewise.
* src/x86/ffi.c: Likewise.
* testsuite/libffi.call/float2.c: Likewise.
* testsuite/libffi.call/promotion.c: Likewise.
* testsuite/libffi.call/struct1.c: Likewise.
2006-04-13 Andreas Tobler <a.tobler@schweiz.ch> 2006-04-13 Andreas Tobler <a.tobler@schweiz.ch>
* src/pa/hpux32.S: Correct unwind offset calculation for * src/pa/hpux32.S: Correct unwind offset calculation for
......
...@@ -372,15 +372,6 @@ single-precision anyway. This causes one test to fail (the `many ...@@ -372,15 +372,6 @@ single-precision anyway. This causes one test to fail (the `many
arguments' test). arguments' test).
What's With The Crazy Comments?
===============================
You might notice a number of cryptic comments in the code, delimited
by /*@ and @*/. These are annotations read by the program LCLint, a
tool for statically checking C programs. You can read all about it at
<http://larch-www.lcs.mit.edu:8001/larch/lclint/index.html>.
History History
======= =======
......
...@@ -31,9 +31,7 @@ ...@@ -31,9 +31,7 @@
/* 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 void **p_argv; register void **p_argv;
...@@ -136,20 +134,10 @@ ffi_status ffi_prep_cif_machdep(ffi_cif *cif) ...@@ -136,20 +134,10 @@ ffi_status ffi_prep_cif_machdep(ffi_cif *cif)
return FFI_OK; return FFI_OK;
} }
/*@-declundef@*/ extern void ffi_call_SYSV(void (*)(char *, extended_cif *), extended_cif *,
/*@-exportheader@*/ unsigned, unsigned, unsigned *, void (*fn)());
extern void ffi_call_SYSV(void (*)(char *, extended_cif *),
/*@out@*/ extended_cif *, void ffi_call(ffi_cif *cif, void (*fn)(), void *rvalue, void **avalue)
unsigned, unsigned,
/*@out@*/ unsigned *,
void (*fn)());
/*@=declundef@*/
/*@=exportheader@*/
void ffi_call(/*@dependent@*/ ffi_cif *cif,
void (*fn)(),
/*@out@*/ void *rvalue,
/*@dependent@*/ void **avalue)
{ {
extended_cif ecif; extended_cif ecif;
...@@ -162,9 +150,7 @@ void ffi_call(/*@dependent@*/ ffi_cif *cif, ...@@ -162,9 +150,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;
...@@ -173,10 +159,9 @@ void ffi_call(/*@dependent@*/ ffi_cif *cif, ...@@ -173,10 +159,9 @@ 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, cif->flags, ecif.rvalue,
ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, fn);
cif->flags, ecif.rvalue, fn);
/*@=usedef@*/
break; break;
default: default:
FFI_ASSERT(0); FFI_ASSERT(0);
......
...@@ -50,10 +50,9 @@ void ffi_type_test(ffi_type *a, char *file, int line) ...@@ -50,10 +50,9 @@ void ffi_type_test(ffi_type *a, char *file, int line)
{ {
FFI_ASSERT_AT(a != NULL, file, line); FFI_ASSERT_AT(a != NULL, file, line);
/*@-usedef@*/
FFI_ASSERT_AT(a->type <= FFI_TYPE_LAST, file, line); FFI_ASSERT_AT(a->type <= FFI_TYPE_LAST, file, line);
FFI_ASSERT_AT(a->type == FFI_TYPE_VOID || a->size > 0, file, line); FFI_ASSERT_AT(a->type == FFI_TYPE_VOID || a->size > 0, file, line);
FFI_ASSERT_AT(a->type == FFI_TYPE_VOID || a->alignment > 0, file, line); FFI_ASSERT_AT(a->type == FFI_TYPE_VOID || a->alignment > 0, file, line);
FFI_ASSERT_AT(a->type != FFI_TYPE_STRUCT || a->elements != NULL, file, line); FFI_ASSERT_AT(a->type != FFI_TYPE_STRUCT || a->elements != NULL, file, line);
/*@=usedef@*/
} }
...@@ -285,10 +285,7 @@ ffi_java_raw_to_rvalue (ffi_cif *cif, void *rvalue) ...@@ -285,10 +285,7 @@ ffi_java_raw_to_rvalue (ffi_cif *cif, void *rvalue)
* these following couple of functions will handle the translation forth * these following couple of functions will handle the translation forth
* and back automatically. */ * and back automatically. */
void ffi_java_raw_call (/*@dependent@*/ ffi_cif *cif, void ffi_java_raw_call (ffi_cif *cif, void (*fn)(), void *rvalue, ffi_raw *raw)
void (*fn)(),
/*@out@*/ void *rvalue,
/*@dependent@*/ ffi_raw *raw)
{ {
void **avalue = (void**) alloca (cif->nargs * sizeof (void*)); void **avalue = (void**) alloca (cif->nargs * sizeof (void*));
ffi_java_raw_to_ptrarray (cif, raw, avalue); ffi_java_raw_to_ptrarray (cif, raw, avalue);
......
...@@ -31,9 +31,7 @@ ...@@ -31,9 +31,7 @@
/* ffi_prep_args is called by the assembly routine once stack /* ffi_prep_args is called by the assembly routine once stack
space has been allocated for the function's arguments. */ space 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@*/
{ {
unsigned int i; unsigned int i;
int tmp; int tmp;
...@@ -173,20 +171,10 @@ ffi_prep_cif_machdep(ffi_cif *cif) ...@@ -173,20 +171,10 @@ ffi_prep_cif_machdep(ffi_cif *cif)
return FFI_OK; return FFI_OK;
} }
/*@-declundef@*/ extern void ffi_call_SYSV(void (*)(char *, extended_cif *), extended_cif *,
/*@-exportheader@*/ unsigned, unsigned, unsigned *, void (*fn)());
extern void ffi_call_SYSV(void (*)(char *, extended_cif *),
/*@out@*/ extended_cif *, void ffi_call(ffi_cif *cif, void (*fn)(), void *rvalue, void **avalue)
unsigned, unsigned,
/*@out@*/ unsigned *,
void (*fn)());
/*@=declundef@*/
/*@=exportheader@*/
void ffi_call(/*@dependent@*/ ffi_cif *cif,
void (*fn)(),
/*@out@*/ void *rvalue,
/*@dependent@*/ void **avalue)
{ {
extended_cif ecif; extended_cif ecif;
...@@ -198,9 +186,7 @@ void ffi_call(/*@dependent@*/ ffi_cif *cif, ...@@ -198,9 +186,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;
...@@ -208,7 +194,6 @@ void ffi_call(/*@dependent@*/ ffi_cif *cif, ...@@ -208,7 +194,6 @@ 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);
if (cif->rtype->type == FFI_TYPE_STRUCT) if (cif->rtype->type == FFI_TYPE_STRUCT)
...@@ -237,7 +222,6 @@ void ffi_call(/*@dependent@*/ ffi_cif *cif, ...@@ -237,7 +222,6 @@ void ffi_call(/*@dependent@*/ ffi_cif *cif,
} }
} }
} }
/*@=usedef@*/
break; break;
default: default:
......
...@@ -135,9 +135,7 @@ static inline int ffi_struct_type(ffi_type *t) ...@@ -135,9 +135,7 @@ static inline int ffi_struct_type(ffi_type *t)
NOTE: We load floating point args in this function... that means we NOTE: We load floating point args in this function... that means we
assume gcc will not mess with fp regs in here. */ assume gcc will not mess with fp regs in here. */
/*@-exportheader@*/
void ffi_prep_args_pa32(UINT32 *stack, extended_cif *ecif, unsigned bytes) void ffi_prep_args_pa32(UINT32 *stack, extended_cif *ecif, unsigned bytes)
/*@=exportheader@*/
{ {
register unsigned int i; register unsigned int i;
register ffi_type **p_arg; register ffi_type **p_arg;
...@@ -367,20 +365,11 @@ ffi_status ffi_prep_cif_machdep(ffi_cif *cif) ...@@ -367,20 +365,11 @@ ffi_status ffi_prep_cif_machdep(ffi_cif *cif)
return FFI_OK; return FFI_OK;
} }
/*@-declundef@*/
/*@-exportheader@*/
extern void ffi_call_pa32(void (*)(UINT32 *, extended_cif *, unsigned), extern void ffi_call_pa32(void (*)(UINT32 *, extended_cif *, unsigned),
/*@out@*/ extended_cif *, extended_cif *, unsigned, unsigned, unsigned *,
unsigned, unsigned,
/*@out@*/ unsigned *,
void (*fn)()); void (*fn)());
/*@=declundef@*/
/*@=exportheader@*/
void ffi_call(/*@dependent@*/ ffi_cif *cif, void ffi_call(ffi_cif *cif, void (*fn)(), void *rvalue, void **avalue)
void (*fn)(),
/*@out@*/ void *rvalue,
/*@dependent@*/ void **avalue)
{ {
extended_cif ecif; extended_cif ecif;
...@@ -398,9 +387,7 @@ void ffi_call(/*@dependent@*/ ffi_cif *cif, ...@@ -398,9 +387,7 @@ void ffi_call(/*@dependent@*/ ffi_cif *cif,
&& cif->rtype->type == FFI_TYPE_STRUCT) && cif->rtype->type == FFI_TYPE_STRUCT)
#endif #endif
{ {
/*@-sysunrecog@*/
ecif.rvalue = alloca(cif->rtype->size); ecif.rvalue = alloca(cif->rtype->size);
/*@=sysunrecog@*/
} }
else else
ecif.rvalue = rvalue; ecif.rvalue = rvalue;
...@@ -409,11 +396,9 @@ void ffi_call(/*@dependent@*/ ffi_cif *cif, ...@@ -409,11 +396,9 @@ void ffi_call(/*@dependent@*/ ffi_cif *cif,
switch (cif->abi) switch (cif->abi)
{ {
case FFI_PA32: case FFI_PA32:
/*@-usedef@*/
debug(3, "Calling ffi_call_pa32: ecif=%p, bytes=%u, flags=%u, rvalue=%p, fn=%p\n", &ecif, cif->bytes, cif->flags, ecif.rvalue, (void *)fn); debug(3, "Calling ffi_call_pa32: ecif=%p, bytes=%u, flags=%u, rvalue=%p, fn=%p\n", &ecif, cif->bytes, cif->flags, ecif.rvalue, (void *)fn);
ffi_call_pa32(ffi_prep_args_pa32, &ecif, cif->bytes, ffi_call_pa32(ffi_prep_args_pa32, &ecif, cif->bytes,
cif->flags, ecif.rvalue, fn); cif->flags, ecif.rvalue, fn);
/*@=usedef@*/
break; break;
default: default:
......
...@@ -80,10 +80,8 @@ enum { ASM_NEEDS_REGISTERS = 4 }; ...@@ -80,10 +80,8 @@ enum { ASM_NEEDS_REGISTERS = 4 };
*/ */
/*@-exportheader@*/
void void
ffi_prep_args_SYSV (extended_cif *ecif, unsigned *const stack) ffi_prep_args_SYSV (extended_cif *ecif, unsigned *const stack)
/*@=exportheader@*/
{ {
const unsigned bytes = ecif->cif->bytes; const unsigned bytes = ecif->cif->bytes;
const unsigned flags = ecif->cif->flags; const unsigned flags = ecif->cif->flags;
...@@ -354,10 +352,8 @@ enum { ASM_NEEDS_REGISTERS64 = 4 }; ...@@ -354,10 +352,8 @@ enum { ASM_NEEDS_REGISTERS64 = 4 };
*/ */
/*@-exportheader@*/
void FFI_HIDDEN void FFI_HIDDEN
ffi_prep_args64 (extended_cif *ecif, unsigned long *const stack) ffi_prep_args64 (extended_cif *ecif, unsigned long *const stack)
/*@=exportheader@*/
{ {
const unsigned long bytes = ecif->cif->bytes; const unsigned long bytes = ecif->cif->bytes;
const unsigned long flags = ecif->cif->flags; const unsigned long flags = ecif->cif->flags;
...@@ -789,24 +785,14 @@ ffi_prep_cif_machdep (ffi_cif *cif) ...@@ -789,24 +785,14 @@ ffi_prep_cif_machdep (ffi_cif *cif)
return FFI_OK; return FFI_OK;
} }
/*@-declundef@*/ extern void ffi_call_SYSV(extended_cif *, unsigned, unsigned, unsigned *,
/*@-exportheader@*/
extern void ffi_call_SYSV(/*@out@*/ extended_cif *,
unsigned, unsigned,
/*@out@*/ unsigned *,
void (*fn)()); void (*fn)());
extern void FFI_HIDDEN ffi_call_LINUX64(/*@out@*/ extended_cif *, extern void FFI_HIDDEN ffi_call_LINUX64(extended_cif *, unsigned long,
unsigned long, unsigned long, unsigned long, unsigned long *,
/*@out@*/ unsigned long *,
void (*fn)()); void (*fn)());
/*@=declundef@*/
/*@=exportheader@*/
void void
ffi_call(/*@dependent@*/ ffi_cif *cif, ffi_call(ffi_cif *cif, void (*fn)(), void *rvalue, void **avalue)
void (*fn)(),
/*@out@*/ void *rvalue,
/*@dependent@*/ void **avalue)
{ {
extended_cif ecif; extended_cif ecif;
...@@ -818,9 +804,7 @@ ffi_call(/*@dependent@*/ ffi_cif *cif, ...@@ -818,9 +804,7 @@ ffi_call(/*@dependent@*/ ffi_cif *cif,
if ((rvalue == NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) if ((rvalue == NULL) && (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;
...@@ -832,15 +816,11 @@ ffi_call(/*@dependent@*/ ffi_cif *cif, ...@@ -832,15 +816,11 @@ ffi_call(/*@dependent@*/ ffi_cif *cif,
case FFI_SYSV: case FFI_SYSV:
case FFI_GCC_SYSV: case FFI_GCC_SYSV:
case FFI_LINUX: case FFI_LINUX:
/*@-usedef@*/
ffi_call_SYSV (&ecif, -cif->bytes, cif->flags, ecif.rvalue, fn); ffi_call_SYSV (&ecif, -cif->bytes, cif->flags, ecif.rvalue, fn);
/*@=usedef@*/
break; break;
#else #else
case FFI_LINUX64: case FFI_LINUX64:
/*@-usedef@*/
ffi_call_LINUX64 (&ecif, -(long) cif->bytes, cif->flags, ecif.rvalue, fn); ffi_call_LINUX64 (&ecif, -(long) cif->bytes, cif->flags, ecif.rvalue, fn);
/*@=usedef@*/
break; break;
#endif #endif
default: default:
......
...@@ -79,9 +79,7 @@ enum { ASM_NEEDS_REGISTERS = 4 }; ...@@ -79,9 +79,7 @@ enum { ASM_NEEDS_REGISTERS = 4 };
*/ */
/*@-exportheader@*/
void ffi_prep_args(extended_cif *ecif, unsigned *const stack) void ffi_prep_args(extended_cif *ecif, unsigned *const stack)
/*@=exportheader@*/
{ {
const unsigned bytes = ecif->cif->bytes; const unsigned bytes = ecif->cif->bytes;
const unsigned flags = ecif->cif->flags; const unsigned flags = ecif->cif->flags;
...@@ -375,25 +373,12 @@ ffi_status ffi_prep_cif_machdep(ffi_cif *cif) ...@@ -375,25 +373,12 @@ ffi_status ffi_prep_cif_machdep(ffi_cif *cif)
return FFI_OK; return FFI_OK;
} }
/*@-declundef@*/ extern void ffi_call_AIX(extended_cif *, unsigned, unsigned, unsigned *,
/*@-exportheader@*/ void (*fn)(), void (*fn2)());
extern void ffi_call_AIX(/*@out@*/ extended_cif *, extern void ffi_call_DARWIN(extended_cif *, unsigned, unsigned, unsigned *,
unsigned, unsigned, void (*fn)(), void (*fn2)());
/*@out@*/ unsigned *,
void (*fn)(), void ffi_call(ffi_cif *cif, void (*fn)(), void *rvalue, void **avalue)
void (*fn2)());
extern void ffi_call_DARWIN(/*@out@*/ extended_cif *,
unsigned, unsigned,
/*@out@*/ unsigned *,
void (*fn)(),
void (*fn2)());
/*@=declundef@*/
/*@=exportheader@*/
void ffi_call(/*@dependent@*/ ffi_cif *cif,
void (*fn)(),
/*@out@*/ void *rvalue,
/*@dependent@*/ void **avalue)
{ {
extended_cif ecif; extended_cif ecif;
...@@ -406,9 +391,7 @@ void ffi_call(/*@dependent@*/ ffi_cif *cif, ...@@ -406,9 +391,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;
...@@ -416,16 +399,12 @@ void ffi_call(/*@dependent@*/ ffi_cif *cif, ...@@ -416,16 +399,12 @@ void ffi_call(/*@dependent@*/ ffi_cif *cif,
switch (cif->abi) switch (cif->abi)
{ {
case FFI_AIX: case FFI_AIX:
/*@-usedef@*/ ffi_call_AIX(&ecif, -cif->bytes, cif->flags, ecif.rvalue, fn,
ffi_call_AIX(&ecif, -cif->bytes, ffi_prep_args);
cif->flags, ecif.rvalue, fn, ffi_prep_args);
/*@=usedef@*/
break; break;
case FFI_DARWIN: case FFI_DARWIN:
/*@-usedef@*/ ffi_call_DARWIN(&ecif, -cif->bytes, cif->flags, ecif.rvalue, fn,
ffi_call_DARWIN(&ecif, -cif->bytes, ffi_prep_args);
cif->flags, ecif.rvalue, fn, ffi_prep_args);
/*@=usedef@*/
break; break;
default: default:
FFI_ASSERT(0); FFI_ASSERT(0);
......
...@@ -25,7 +25,6 @@ ...@@ -25,7 +25,6 @@
#include <ffi_common.h> #include <ffi_common.h>
#include <stdlib.h> #include <stdlib.h>
/* Round up to FFI_SIZEOF_ARG. */ /* Round up to FFI_SIZEOF_ARG. */
#define STACK_ARG_SIZE(x) ALIGN(x, FFI_SIZEOF_ARG) #define STACK_ARG_SIZE(x) ALIGN(x, FFI_SIZEOF_ARG)
...@@ -33,14 +32,12 @@ ...@@ -33,14 +32,12 @@
/* Perform machine independent initialization of aggregate type /* Perform machine independent initialization of aggregate type
specifications. */ specifications. */
static ffi_status initialize_aggregate(/*@out@*/ ffi_type *arg) static ffi_status initialize_aggregate(ffi_type *arg)
{ {
ffi_type **ptr; ffi_type **ptr;
FFI_ASSERT(arg != NULL); FFI_ASSERT(arg != NULL);
/*@-usedef@*/
FFI_ASSERT(arg->elements != NULL); FFI_ASSERT(arg->elements != NULL);
FFI_ASSERT(arg->size == 0); FFI_ASSERT(arg->size == 0);
FFI_ASSERT(arg->alignment == 0); FFI_ASSERT(arg->alignment == 0);
...@@ -77,8 +74,6 @@ static ffi_status initialize_aggregate(/*@out@*/ ffi_type *arg) ...@@ -77,8 +74,6 @@ static ffi_status initialize_aggregate(/*@out@*/ ffi_type *arg)
return FFI_BAD_TYPEDEF; return FFI_BAD_TYPEDEF;
else else
return FFI_OK; return FFI_OK;
/*@=usedef@*/
} }
#ifndef __CRIS__ #ifndef __CRIS__
...@@ -89,10 +84,8 @@ static ffi_status initialize_aggregate(/*@out@*/ ffi_type *arg) ...@@ -89,10 +84,8 @@ static ffi_status initialize_aggregate(/*@out@*/ ffi_type *arg)
/* Perform machine independent ffi_cif preparation, then call /* Perform machine independent ffi_cif preparation, then call
machine dependent routine. */ machine dependent routine. */
ffi_status ffi_prep_cif(/*@out@*/ /*@partial@*/ ffi_cif *cif, ffi_status ffi_prep_cif(ffi_cif *cif, ffi_abi abi, unsigned int nargs,
ffi_abi abi, unsigned int nargs, ffi_type *rtype, ffi_type **atypes)
/*@dependent@*/ /*@out@*/ /*@partial@*/ ffi_type *rtype,
/*@dependent@*/ ffi_type **atypes)
{ {
unsigned bytes = 0; unsigned bytes = 0;
unsigned int i; unsigned int i;
...@@ -109,10 +102,8 @@ ffi_status ffi_prep_cif(/*@out@*/ /*@partial@*/ ffi_cif *cif, ...@@ -109,10 +102,8 @@ ffi_status ffi_prep_cif(/*@out@*/ /*@partial@*/ ffi_cif *cif,
cif->flags = 0; cif->flags = 0;
/* Initialize the return type if necessary */ /* Initialize the return type if necessary */
/*@-usedef@*/
if ((cif->rtype->size == 0) && (initialize_aggregate(cif->rtype) != FFI_OK)) if ((cif->rtype->size == 0) && (initialize_aggregate(cif->rtype) != FFI_OK))
return FFI_BAD_TYPEDEF; return FFI_BAD_TYPEDEF;
/*@=usedef@*/
/* Perform a sanity check on the return type */ /* Perform a sanity check on the return type */
FFI_ASSERT_VALID_TYPE(cif->rtype); FFI_ASSERT_VALID_TYPE(cif->rtype);
......
...@@ -189,10 +189,7 @@ ffi_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_raw *raw) ...@@ -189,10 +189,7 @@ ffi_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_raw *raw)
* these following couple of functions will handle the translation forth * these following couple of functions will handle the translation forth
* and back automatically. */ * and back automatically. */
void ffi_raw_call (/*@dependent@*/ ffi_cif *cif, void ffi_raw_call (ffi_cif *cif, void (*fn)(), void *rvalue, ffi_raw *raw)
void (*fn)(),
/*@out@*/ void *rvalue,
/*@dependent@*/ ffi_raw *raw)
{ {
void **avalue = (void**) alloca (cif->nargs * sizeof (void*)); void **avalue = (void**) alloca (cif->nargs * sizeof (void*));
ffi_raw_to_ptrarray (cif, raw, avalue); ffi_raw_to_ptrarray (cif, raw, avalue);
......
...@@ -106,9 +106,7 @@ return_type (ffi_type *arg) ...@@ -106,9 +106,7 @@ return_type (ffi_type *arg)
/* 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;
...@@ -406,20 +404,10 @@ ffi_status ffi_prep_cif_machdep(ffi_cif *cif) ...@@ -406,20 +404,10 @@ ffi_status ffi_prep_cif_machdep(ffi_cif *cif)
return FFI_OK; return FFI_OK;
} }
/*@-declundef@*/ extern void ffi_call_SYSV(void (*)(char *, extended_cif *), extended_cif *,
/*@-exportheader@*/ unsigned, unsigned, unsigned *, void (*fn)());
extern void ffi_call_SYSV(void (*)(char *, extended_cif *),
/*@out@*/ extended_cif *, void ffi_call(ffi_cif *cif, void (*fn)(), void *rvalue, void **avalue)
unsigned, unsigned,
/*@out@*/ unsigned *,
void (*fn)());
/*@=declundef@*/
/*@=exportheader@*/
void ffi_call(/*@dependent@*/ ffi_cif *cif,
void (*fn)(),
/*@out@*/ void *rvalue,
/*@dependent@*/ void **avalue)
{ {
extended_cif ecif; extended_cif ecif;
UINT64 trvalue; UINT64 trvalue;
...@@ -436,9 +424,7 @@ void ffi_call(/*@dependent@*/ ffi_cif *cif, ...@@ -436,9 +424,7 @@ void ffi_call(/*@dependent@*/ ffi_cif *cif,
else if ((rvalue == NULL) && else 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;
...@@ -446,10 +432,8 @@ void ffi_call(/*@dependent@*/ ffi_cif *cif, ...@@ -446,10 +432,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, cif->flags, ecif.rvalue,
ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, fn);
cif->flags, ecif.rvalue, fn);
/*@=usedef@*/
break; break;
default: default:
FFI_ASSERT(0); FFI_ASSERT(0);
......
...@@ -54,9 +54,7 @@ return_type (ffi_type *arg) ...@@ -54,9 +54,7 @@ return_type (ffi_type *arg)
/* 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 unsigned int avn; register unsigned int avn;
...@@ -238,20 +236,11 @@ ffi_status ffi_prep_cif_machdep(ffi_cif *cif) ...@@ -238,20 +236,11 @@ ffi_status ffi_prep_cif_machdep(ffi_cif *cif)
return FFI_OK; return FFI_OK;
} }
/*@-declundef@*/ extern void ffi_call_SYSV(void (*)(char *, extended_cif *), extended_cif *,
/*@-exportheader@*/ unsigned, unsigned, long long, unsigned *,
extern void ffi_call_SYSV(void (*)(char *, extended_cif *),
/*@out@*/ extended_cif *,
unsigned, unsigned, long long,
/*@out@*/ unsigned *,
void (*fn)()); void (*fn)());
/*@=declundef@*/
/*@=exportheader@*/
void ffi_call(/*@dependent@*/ ffi_cif *cif, void ffi_call(ffi_cif *cif, void (*fn)(), void *rvalue, void **avalue)
void (*fn)(),
/*@out@*/ void *rvalue,
/*@dependent@*/ void **avalue)
{ {
extended_cif ecif; extended_cif ecif;
UINT64 trvalue; UINT64 trvalue;
...@@ -268,9 +257,7 @@ void ffi_call(/*@dependent@*/ ffi_cif *cif, ...@@ -268,9 +257,7 @@ void ffi_call(/*@dependent@*/ ffi_cif *cif,
else if ((rvalue == NULL) && else 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;
...@@ -278,10 +265,8 @@ void ffi_call(/*@dependent@*/ ffi_cif *cif, ...@@ -278,10 +265,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, cif->flags, cif->flags2,
ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, ecif.rvalue, fn);
cif->flags, cif->flags2, ecif.rvalue, fn);
/*@=usedef@*/
break; break;
default: default:
FFI_ASSERT(0); FFI_ASSERT(0);
......
...@@ -36,9 +36,7 @@ ...@@ -36,9 +36,7 @@
/* 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 void **p_argv; register void **p_argv;
...@@ -168,32 +166,16 @@ ffi_status ffi_prep_cif_machdep(ffi_cif *cif) ...@@ -168,32 +166,16 @@ ffi_status ffi_prep_cif_machdep(ffi_cif *cif)
return FFI_OK; return FFI_OK;
} }
/*@-declundef@*/ extern void ffi_call_SYSV(void (*)(char *, extended_cif *), extended_cif *,
/*@-exportheader@*/ unsigned, unsigned, unsigned *, void (*fn)());
extern void ffi_call_SYSV(void (*)(char *, extended_cif *),
/*@out@*/ extended_cif *,
unsigned, unsigned,
/*@out@*/ unsigned *,
void (*fn)());
/*@=declundef@*/
/*@=exportheader@*/
#ifdef X86_WIN32 #ifdef X86_WIN32
/*@-declundef@*/ extern void ffi_call_STDCALL(void (*)(char *, extended_cif *), extended_cif *,
/*@-exportheader@*/ unsigned, unsigned, unsigned *, void (*fn)());
extern void ffi_call_STDCALL(void (*)(char *, extended_cif *),
/*@out@*/ extended_cif *,
unsigned, unsigned,
/*@out@*/ unsigned *,
void (*fn)());
/*@=declundef@*/
/*@=exportheader@*/
#endif /* X86_WIN32 */ #endif /* X86_WIN32 */
void ffi_call(/*@dependent@*/ ffi_cif *cif, void ffi_call(ffi_cif *cif, void (*fn)(), void *rvalue, void **avalue)
void (*fn)(),
/*@out@*/ void *rvalue,
/*@dependent@*/ void **avalue)
{ {
extended_cif ecif; extended_cif ecif;
...@@ -206,9 +188,7 @@ void ffi_call(/*@dependent@*/ ffi_cif *cif, ...@@ -206,9 +188,7 @@ void ffi_call(/*@dependent@*/ ffi_cif *cif,
if ((rvalue == NULL) && if ((rvalue == NULL) &&
(cif->flags == FFI_TYPE_STRUCT)) (cif->flags == 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;
...@@ -217,17 +197,13 @@ void ffi_call(/*@dependent@*/ ffi_cif *cif, ...@@ -217,17 +197,13 @@ 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, cif->flags, ecif.rvalue,
ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, fn);
cif->flags, ecif.rvalue, fn);
/*@=usedef@*/
break; break;
#ifdef X86_WIN32 #ifdef X86_WIN32
case FFI_STDCALL: case FFI_STDCALL:
/*@-usedef@*/ ffi_call_STDCALL(ffi_prep_args, &ecif, cif->bytes, cif->flags,
ffi_call_STDCALL(ffi_prep_args, &ecif, cif->bytes, ecif.rvalue, fn);
cif->flags, ecif.rvalue, fn);
/*@=usedef@*/
break; break;
#endif /* X86_WIN32 */ #endif /* X86_WIN32 */
default: default:
...@@ -276,11 +252,9 @@ ffi_closure_SYSV_inner (closure, respp, args) ...@@ -276,11 +252,9 @@ ffi_closure_SYSV_inner (closure, respp, args)
return cif->flags; return cif->flags;
} }
/*@-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,
void **avalue, ffi_cif *cif) ffi_cif *cif)
/*@=exportheader@*/
{ {
register unsigned int i; register unsigned int i;
register void **p_argv; register void **p_argv;
...@@ -401,26 +375,17 @@ ffi_prep_args_raw(char *stack, extended_cif *ecif) ...@@ -401,26 +375,17 @@ 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 *), extended_cif *, unsigned,
/*@out@*/ extended_cif *, unsigned, unsigned *, void (*fn)());
unsigned, unsigned,
/*@out@*/ unsigned *,
void (*fn)());
#ifdef X86_WIN32 #ifdef X86_WIN32
extern void extern void
ffi_call_STDCALL(void (*)(char *, extended_cif *), ffi_call_STDCALL(void (*)(char *, extended_cif *), extended_cif *, unsigned,
/*@out@*/ extended_cif *, unsigned, unsigned *, void (*fn)());
unsigned, unsigned,
/*@out@*/ unsigned *,
void (*fn)());
#endif /* X86_WIN32 */ #endif /* X86_WIN32 */
void void
ffi_raw_call(/*@dependent@*/ ffi_cif *cif, ffi_raw_call(ffi_cif *cif, void (*fn)(), void *rvalue, ffi_raw *fake_avalue)
void (*fn)(),
/*@out@*/ void *rvalue,
/*@dependent@*/ ffi_raw *fake_avalue)
{ {
extended_cif ecif; extended_cif ecif;
void **avalue = (void **)fake_avalue; void **avalue = (void **)fake_avalue;
...@@ -434,9 +399,7 @@ ffi_raw_call(/*@dependent@*/ ffi_cif *cif, ...@@ -434,9 +399,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;
...@@ -445,17 +408,13 @@ ffi_raw_call(/*@dependent@*/ ffi_cif *cif, ...@@ -445,17 +408,13 @@ 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, cif->flags,
ffi_call_SYSV(ffi_prep_args_raw, &ecif, cif->bytes, ecif.rvalue, fn);
cif->flags, ecif.rvalue, fn);
/*@=usedef@*/
break; break;
#ifdef X86_WIN32 #ifdef X86_WIN32
case FFI_STDCALL: case FFI_STDCALL:
/*@-usedef@*/ ffi_call_STDCALL(ffi_prep_args_raw, &ecif, cif->bytes, cif->flags,
ffi_call_STDCALL(ffi_prep_args_raw, &ecif, cif->bytes, ecif.rvalue, fn);
cif->flags, ecif.rvalue, fn);
/*@=usedef@*/
break; break;
#endif /* X86_WIN32 */ #endif /* X86_WIN32 */
default: default:
......
...@@ -48,9 +48,7 @@ int main (void) ...@@ -48,9 +48,7 @@ int main (void)
#endif #endif
/* These are not always the same!! Check for a reasonable delta */ /* These are not always the same!! Check for a reasonable delta */
/*@-realcompare@*/
if (ld - ldblit(f) < LDBL_EPSILON) if (ld - ldblit(f) < LDBL_EPSILON)
/*@=realcompare@*/
puts("long double return value tests ok!"); puts("long double return value tests ok!");
else else
CHECK(0); CHECK(0);
......
...@@ -43,10 +43,10 @@ int main (void) ...@@ -43,10 +43,10 @@ int main (void)
ul = 0; ul = 0;
for (sc = (signed char) -127; for (sc = (signed char) -127;
sc <= (signed char) 120; /*@-type@*/ sc += 1 /*@=type@*/) sc <= (signed char) 120; sc += 1)
for (ss = -30000; ss <= 30000; ss += 10000) for (ss = -30000; ss <= 30000; ss += 10000)
for (uc = (unsigned char) 0; for (uc = (unsigned char) 0;
uc <= (unsigned char) 200; /*@-type@*/ uc += 20 /*@=type@*/) uc <= (unsigned char) 200; uc += 20)
for (us = 0; us <= 60000; us += 10000) for (us = 0; us <= 60000; us += 10000)
{ {
ul++; ul++;
......
...@@ -16,9 +16,7 @@ typedef struct ...@@ -16,9 +16,7 @@ typedef struct
static test_structure_1 struct1(test_structure_1 ts) static test_structure_1 struct1(test_structure_1 ts)
{ {
/*@-type@*/
ts.uc++; ts.uc++;
/*@=type@*/
ts.d--; ts.d--;
ts.ui++; ts.ui++;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment