[Openmcl-devel] Re: ffigen for GCC 3.4

David Steuber david at david-steuber.com
Tue Feb 1 20:47:43 UTC 2005


Sorry for this reply to an old mail, but I started looking at FFIGEN 
today.  When I ran into trouble, I googled and found this.

> On Sun, 15 Aug 2004, Cyrus Harmon wrote:
>
>> openmcl-dev,
>>
>> I have tried to use the ffigen with some success, but I needed to do
>> the following:
>>
>> *** ffi.c       Sun Aug 15 14:07:57 2004
>> --- ../../ffigen-3.4.1/ffi.c    Tue Aug  3 07:48:48 2004
>> ***************
>> *** 162,168 ****
>>      for (; map->gcc_name; ++map)
>>        if (!strcmp (map->gcc_name, gcc_name))
>>          return (char*)map->ffi_name;
>> -   return 0;
>>      fprintf (stderr, "Bug: couldn't find primitive name for %s\n",
>> gcc_name);
>>      abort ();
>>    }
>> --- 162,167 ----
>> ***************
>>
>> to get it to work right. Otherwise, it complains about not being able
>> to find the primitive for __int128_t (I think that's right). One
>> difference is that I'm using the gcc-3.4.1 tarball not gcc-3.4.1-core.
>> I had to disable gcj and this could be the source of the 128-bit
>> weirdness. In any event, I thought you'd like to know. I'll keep
>> plowing ahead and see if I can make this work all the way through for
>> the stuff I'm working on.

I had precisely the same problem using the gcc-3.4.1-core tarball.  I 
chose a different fix.  See below.

On Aug 16, 2004, at 4:56 AM, Gary Byers wrote:

> If I understand correctly, I think that we want to add an entry for
> "__int128_t" to FFIGEN's primitive type table.  (Since lisp won't
> understand how to pass/return 128-bit integers around for a while,
> it may not matter too much whether it fails because of an unknown
> foreign type or a known but unsupported foreign type, but making
> the type "known" on both sides of the translation process will
> eventually allow it to be supported.)

I don't know what names Gary prefers, but I thought I would follow this 
advice.  I also uncovered another primitive type that needed a mapping. 
  Here is my test run (on OS X 10.3.7 with Xcode 1.5 installed) that 
shows it worked for me followed by my diff:

$ ./cc1 -fsyntax-only -g3 -I include/ /usr/include/stdio.h -o 
/Users/david/stdio.ffi
  __sputc

Execution times (seconds)
  preprocessing         :   0.01 (20%) usr   0.01 (33%) sys   0.01 ( 5%) 
wall
  lexical analysis      :   0.01 (20%) usr   0.01 (33%) sys   0.00 ( 0%) 
wall
  parser                :   0.01 (20%) usr   0.00 ( 0%) sys   0.17 (81%) 
wall
  TOTAL                 :   0.05             0.03             0.21

$ diff -u ffigen-3.4.1/ffi.c gcc-3.4.1/gcc/ffi.c
--- ffigen-3.4.1/ffi.c  Tue Aug  3 10:48:48 2004
+++ gcc-3.4.1/gcc/ffi.c Tue Feb  1 15:26:40 2005
@@ -151,6 +151,8 @@
    {"complex long double", "complex-long-double"},
    {"__builtin_va_list", "builtin-va-list"},
    {"_Bool", "bool"},
+  {"__int128_t", "int128"},
+  {"__uint128_t", "uint128"},
    {NULL, NULL}
  };




More information about the Openmcl-devel mailing list