Bus error interfacing with C function returning large struct

John Colvin john.loughran.colvin at gmail.com
Wed Apr 17 04:43:46 PDT 2013


On Wednesday, 17 April 2013 at 11:14:52 UTC, Jacob Carlborg wrote:
> On 2013-04-17 12:05, John Colvin wrote:
>
>> Martins reply in the bug report correctly identifies the 
>> problem, it's a
>> bug in dmds implementation of the OS X IA32 ABI.
>
> I see. I'm still wondering why it works on Mac OS X 10.6.3, 
> just luck?

clang just happened to put the arguments to foo in to registers 
different on 10.6.3
Instead of loading the 0 argument in to eax it loaded the pointer 
to the struct like it would in system V ABI (linux)

I have no idea whether this is a complete coincidence, or whether 
clang has changed it's approach to the OS X abi, or whether the 
ABI itself has changed.


More information about the Digitalmars-d mailing list