Bob Ippolito wrote: [snip] > I went through and confirmed that indeed the stack alignment is the > reason why psyco doesn't function properly on Mac OS X i386. You can > confirm this by running the bpnn.py example under gdb. You'll > eventually get an Illegal Instruction (GP(0) exception) during the > call to the libSystem version of pow(). The reason for this is that > pow() uses a SSE2 instruction that requires 16 byte alignment > (specifically, "movapd %xmm1,-104(%ebp)") and the way that psyco set > up the stack does not make it so. > > I can't really commit any more time to fixing this right now, but > Armin has said that: > > arigo: let me see, you need to hack in c/i386/iencoding.h > arigo: CALL_SET_ARG_* macros > arigo: and CALL_C_FUNCTION* > arigo: or maybe better yet, add a new macro CALL_ALIGN_STACK(nb_args) > arigo: which should be called before any of the CALL_SET_ARG > > The IA-32 calling conventions for Mac OS X are documented here: > http://developer.apple.com/documentation/DeveloperTools/Conceptual/ > LowLevelABI/Articles/IA32.html > > And you'll probably also want to look at the disassembly (otool -tVv > is good for this, or just gcc -S) of a trivial C program or two to > get an idea of what it looks like in practice.
OK, thanks. I was just trying it out because http://mail.python.org/pipermail/pythonmac-sig/2006-April/017153.html seemed to indicate that it might "just work". Apparently that's not the case, and I don't think I have the time right now to do what it sound like would be necessary. Maybe a project for another day. Mike _______________________________________________ Pythonmac-SIG maillist - Pythonmac-SIG@python.org http://mail.python.org/mailman/listinfo/pythonmac-sig