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.