[Openmcl-devel] Re: Helmut Eller's ffigen changes
rm at fabula.de
rm at fabula.de
Wed Dec 8 08:51:21 PST 2004
On Tue, Dec 07, 2004 at 03:01:57PM -0700, Gary Byers wrote:
>
>
> On Tue, 7 Dec 2004 rm at fabula.de wrote:
>
> >
> > BTW, in an other post you mention work on a gcc-3.n based ffigen. Is this
> > in CVS allready?
> >
>
> Helmut Eller sent mail to this list several months ago, announcing
> that he'd gotten it mostly working in 3.x. (Unfortunately, the spam
> filter in clozure's mailer tagged his message as spam, and many people
> may have missed it. His message is at:
>
> <http://clozure.com/mailman/htdig/openmcl-devel/2004-August/001855.html>
>
> ).
>
> I haven't done anything with it; his message arrived during the "Death
> March" phase of my other project, which has since moved on to the
> "Damn It, I'm Too Old For This Kind Of Grueling Schedule" phase. Some
> other people have said that they've used his changes successfully.
Oh, i know those ...
i just downloaded and compiled Helmut's version. I needed to apply the patches
for "__int128_t" to get i working and i also rewrote h-to-ffi.sh (so we don't
need to use/distribute the gcc include files). Everything seems to work as
expected, but: there seems to be a new version of stdarg.h that causes ffigen
to emit code that OpenMCL can't grok. Here's a sample header file:
--------------------------- test.h --------------------------------------
#include <stdio.h>
void my_fun (int);
-------------------------------------------------------------------------
which will generate
--------------------------- test.i --------------------------------------
....
#define __need___va_list
# 1 "/usr/lib/gcc-lib/powerpc-linux/3.3.3/include/stdarg.h" 1 3 4
# 37 "/usr/lib/gcc-lib/powerpc-linux/3.3.3/include/stdarg.h" 3 4
#undef __need___va_list
#define __GNUC_VA_LIST
typedef __builtin_va_list __gnuc_va_list;
# 54 "/usr/include/libio.h" 2 3 4
...
-------------------------------------------------------------------------
which will result in
--------------------------- test.ffi ------------------------------------
...
("/usr/include/libio.h" 52) "__need___va_list" "")
(undef-macro "__need___va_list")
(macro ("/usr/lib/gcc-lib/powerpc-linux/3.3.3/include/stdarg.h" 42) "__GNUC_VA_LIST" "")
(type ("/usr/lib/gcc-lib/powerpc-linux/3.3.3/include/stdarg.h" 43)
"__gnuc_va_list"
(builtin-va-list ()))
(undef-macro "_IO_va_list")
...
-------------------------------------------------------------------------
Now, that builtin-va-list seems to come from ffi.c:
static ffi_primitive_name_map ffi_primitive_names[] =
{
{"int", "int"},
{"char", "char"},
{"float", "float"},
{"double", "double"},
{"long double", "long-double"},
{"void", "void"},
{"long int", "long"},
{"unsigned int", "unsigned"},
{"long unsigned int", "unsigned-long"},
{"long long int", "long-long"},
{"long long unsigned int", "unsigned-long-long"},
{"short int", "short"},
{"short unsigned int", "unsigned-short"},
{"signed char", "signed-char"},
{"unsigned char", "unsigned-char"},
{"complex int", "complex-int"},
{"complex float", "complex-float"},
{"complex double", "complex-double"},
{"complex long double", "complex-long-double"},
{"__builtin_va_list", "builtin-va-list"}, <--------------
{"_Bool", "bool"},
{NULL, NULL}
};
I wasn't able to find any reference to builtin-va-list so far, so maybe someone
on this list can enlighten me?
TIA Ralf Mattes
> > TIA
> >
> > RalfD
> >
> >
More information about the Openmcl-devel
mailing list