[cffi-devel] New patches: 3-Feb-2006: x86-64
Hoehle, Joerg-Cyril
Joerg-Cyril.Hoehle at t-systems.com
Wed Feb 8 09:04:10 UTC 2006
James Bielman wrote:
>> Could you please confirm my supposition that long-long works out of
>> the box with clisp on your amd64 machine?
>How would I go about testing this? I don't see a LONG-LONG type in
>the FFI package (or do I need a CVS version? I'm using the latest
>release).
Map cffi:long-long to ffi:sint64 and ffi:uint64.
I have not added an ffi:long-long type. Not ideal, but good enough.
I've now updated CVS CLISP to support interfacing to a 64bit "long long" entity on all platforms where some 64bit type is available (e.g. gcc, MS-VC).
In other words, cffi-features:no-long-long should be removed from cffi-clisp (or you may wish to conditionalize on the version number or whatever, but that's too restrictive since e.g. I'm convinced that ffi:uint64 has always worked on 64bit machines, where long=long long)).
Please test & report if it fails.
Furthermore, I think you need to think about what CFFI should do e.g. on the MS-VC platform. It does not have a "long long", it's called __int64 instead. But this is a 64bit type (and possibly some system structures or libraries use that, I don't know).
CLISP's ffi:uint64 works with __int64.
Actually, given my tests, I'd not recommend trying to call MS-VC __int64 receiving or returning functions via gcc long long or vice-versa. They may have incompatible calling conventions (speculation, but MS-VC6 has a different one from GCC4 on Linux/i686. I haven't tested cygwin/mingw).
Pointers to such 64bit ints are no problem at all.
Regards,
Jorg Hohle.
More information about the cffi-devel
mailing list