MinGW x86_64 ABI problem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The Windows version of the x86_64 ABI specifies that registers xmm6-xmm15 be callee saved.

I'm building a .dll with MinGW used by an .exe from a different compiler.

I debugged a failure to the point of determining that the code produced by MinGW clobbers xmm9 in violation of the ABI.

I tried a bunch of Google searches, expecting this problem would be discussed somewhere, but couldn't find it.

I'm using a downloaded binary copy of MinGW for x86_64. I expect I will need to download source code and figure out how to build it, in order to deal with this problem.

But I don't know where to look in the gcc source code included in MinGW for the registers that should be callee saved.

1) Can you tell me where callee saved registers are specified in the gcc source code.

2) I tried adding "-f-call-saved-xmm9" to the g++ command to see if that would fix the problem for one register. That compile aborted with
internal compiler error: in copyprop_hardreg_forward_1, at regrename.c:1590
Is that switch so incorrect? I understand it would generate .obj code incompatible with anything generated without that switch. But why should it crash gcc?


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux