[Vm-dev] Confused by FFI at Mac & Cog

John M McIntosh johnmci at smalltalkconsulting.com
Mon Dec 27 19:32:26 UTC 2010

Look at the xcode project and what files it includes
The history is that there was source code both for the api and the assembler from Linux and windows.
The linux code had flaws, the windows code didn't work. You have to follow Apple's ABI instructions to the letter,  other operating systems are more forgiving. 

sqWin32FFI.c is used
x86-sysv-asm.S is used  but revised to work on macintel OS 
sqMacFFI.s is used as a universal ppc support
sqMacFFIPPC.c is used

I note the x86-sysv-MacIntel.c  *should* work but there is a flaw *somewhere* that causes it to crash when used with Croquet. 

On 2010-12-27, at 10:16 AM, Esteban Lorenzano wrote:

> Hi Igor,
> I discovered that a similar problem happens also in the I32ABI plugin sources, the file ppc32abicc.c (which, by name, shouldn't be present in my compilations) is in fact required and works (afaik) properly. 
> Perhaps the name is just a "legacy name"? Perhaps you have the same kind of problem?
> Cheers,
> Esteban
> El 27/12/2010, a las 12:20p.m., Igor Stasenko escribió:
>> Hi, 
>> I am trying to figure out, how to build FFI plugin on macs for cog vm.
>> the platforms/Mac\ OS/plugins/SqueakFFIPrims contains following files:
>> Info-SqueakFFIPlugin__Upgraded_.plist
>> SqueakFFI.xcodeproj.zip
>> SqueakFFIPrims.proj.xml
>> ppc-darwin-Carbon-UI.c
>> ppc-darwin-asm-MacIntel.S
>> ppc-global.h
>> resources
>> sqMacFFI.s
>> sqMacFFIPPC.c
>> sqMacIntel-Win32.c
>> x86-sysv-MacIntel.c
>> x86-sysv-asm-MacIntel.S
>> something tells me that i don't need to compile ppc* files, because
>> Cog doesn't works on that arch anyways..
>> so, i tried to use
>> sqMacIntel-Win32.c
>> and failed.. then tried to use
>> x86-sysv-MacIntel.c
>> and it fails to compile with same error(s):
>> /platforms/Mac OS/plugins/SqueakFFIPrims/x86-sysv-MacIntel.c:127:
>> error: ‘FFICallTypeCDecl’ undeclared (first use in this function)
>> /platforms/Mac OS/plugins/SqueakFFIPrims/x86-sysv-MacIntel.c:128:
>> error: ‘FFICallTypeApi’ undeclared (first use in this function)
>> These constants are defined only in FFIConstants shared pool.. and
>> somehow they should be made available to
>> these .c files..
>> But our beloved VMMaker's code generator don't generating headers
>> which can be included by other .c files,
>> and all class var constants are just printed inside a body of
>> generated .c file , like SqueakFFIPrims.c
>> which means that these constants should be defined externally manually
>> somewhere.
>> So, it seems like  FFI is broken for Mac+Cog.
>> P.S. Eliot's default .xcodeproj for FFI plugin are not builds because
>> its not including one of the files above, which making a build
>> complete (otherwise you got undefined symbols).
>> Please shed a light, if FFI for Mac + Cog were in working state at
>> some day? Or i doing something completely wrong?
>> Of course i can disable it from build and forget about it, since we
>> have new stuff coming (of course if Santa decide that we were good
>> boys),
>> but still..
>> -- 
>> Best regards,
>> Igor Stasenko AKA sig.

John M. McIntosh <johnmci at smalltalkconsulting.com>   Twitter:  squeaker68882
Corporate Smalltalk Consulting Ltd.  http://www.smalltalkconsulting.com

More information about the Vm-dev mailing list