Skip to content

StackProtector: ensure protection does not interfere with tail call frame #2704

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged

Conversation

TNorthover
Copy link

We didn't recognize that ADJCALLFRAME instructions could be part of the
terminal sequence of a tail call. In this case because such call frames cannot
be nested in LLVM the stack protection code must skip over the whole sequence
(or risk clobbering argument registers).

On the other hand, the ADJCALLFRAME could be part of a different call, in which
case the correct split point is right after it.

…rame.

We didn't recognize that ADJCALLFRAME instructions could be part of the
terminal sequence of a tail call. In this case because such call frames cannot
be nested in LLVM the stack protection code must skip over the whole sequence
(or risk clobbering argument registers).

On the other hand, the ADJCALLFRAME could be part of a different call, in which
case the correct split point is right after it.
@TNorthover
Copy link
Author

@swift-ci please test

@varungandhi-apple varungandhi-apple merged commit 0c7dc30 into swiftlang:apple/stable/20210107 Mar 17, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants