For what it's worth, it looks gcc passes floating point values in
registers (or at least the first 8 floating point values).

I have more studying to do before some of the obvious stuff is obvious
to me. But I thought I should at least try to correct any mistaken
impressions I might have created here.

-- 
Raul

On Tue, Jul 14, 2015 at 1:03 PM, Ted Unangst <t...@tedunangst.com> wrote:
> Raul Miller wrote:
>> J uses a hack where doubles are passed as long. This works on other
>> OSes but not on openbsd.
>
> This seems suspect. There's no guarantee double and long are the same size.
>
>> I was under the impression that gcc passes all values on the stack,
>> not in floating point registers or anything like that?
>
> This depends a lot on the CPU, but gcc on openbsd generally behaves the same
> as on any other OS with the same CPU.
>
>> I also wind up spending a fair amount of time in ld.so -- maybe I'll
>> be able to find my way through all the detail, but mostly I'm just as
>> lost using gdb as with any other approach.
>
> I doubt ld.so really has much to do with it.
>
>> Basically, though, I don't know what I am looking for, so I don't know
>> how to tell when I am getting close to it.
>>
>> Does anyone know how I should approach this issue? (Is there anything
>> specific to OpenBSD which should be relevant here, or should I
>> strictly focus on gcc issues?)
>
> Looking at the disassembly for the stub code may help.
>
> It sounds like you may be missing a prototype somewhere and are getting
> implicit conversions.

Reply via email to