You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The crosscall code on s390x saves f0, f2, f4 and f6 in the caller's stack frame. However actually these are volatile and so don't need to be saved. More importantly f8-f15 are callee-save on s390x even though there is no space allocated for them on the caller's stack (like there is for general purpose registers). So if C code calls back into Go we might clobber floating point registers that C expects to be saved.
I noticed this while looking at the standard. I don't think any projects/tests have run into this yet, but I think it is a clear enough bug to be worth fixing for 1.8.
The text was updated successfully, but these errors were encountered:
The crosscall code on s390x saves f0, f2, f4 and f6 in the caller's stack frame. However actually these are volatile and so don't need to be saved. More importantly f8-f15 are callee-save on s390x even though there is no space allocated for them on the caller's stack (like there is for general purpose registers). So if C code calls back into Go we might clobber floating point registers that C expects to be saved.
I noticed this while looking at the standard. I don't think any projects/tests have run into this yet, but I think it is a clear enough bug to be worth fixing for 1.8.
The text was updated successfully, but these errors were encountered: