- Notifications
You must be signed in to change notification settings - Fork 14k
CFI: Fix fn items, closures, and Fn trait objects, and more #116404
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
Conversation
| r? @oli-obk (rustbot has picked a reviewer for you, use r? to override) |
5157709 to 256cab2 Compare This comment has been minimized.
This comment has been minimized.
256cab2 to a25171b Compare | ☔ The latest upstream changes (presumably #115948) made this pull request unmergeable. Please resolve the merge conflicts. |
a25171b to d676343 Compare | Some changes occurred to the CTFE / Miri engine cc @rust-lang/miri |
d676343 to df8c3a8 Compare | One nit @rustbot author |
df8c3a8 to dd04959 Compare d5b79c1 to 3e28128 Compare | @rustbot label -S-waiting-on-author +S-waiting-on-review |
| ☔ The latest upstream changes (presumably #117875) made this pull request unmergeable. Please resolve the merge conflicts. |
bc7ae20 to 6f146f5 Compare This comment has been minimized.
This comment has been minimized.
4abea48 to f28ac45 Compare Fix casting between function items, closures, and Fn trait objects by transforming function items, closures, and Fn trait objects into function pointers for encoding.
Fix drop and drop_in_place by transforming self of drop and drop_in_place methods into a Drop trait object and handling drop method calls separatedly (and also transforming self into a Drop trait object). This has the same effect of what CFI does for impl methods by transforming self into trait objects that match the trait objects in the calls after type erasure.
Fix rust-lang#122705 by adding support for encoding `ty:CoroutineClosure`.
This reverts commit f2f0d25.
Fix casting between methods and function pointers by assigning a secondary type id to methods with their concrete self so they can be used as function pointers.
f28ac45 to 66b2708 Compare | ☔ The latest upstream changes (presumably #122980) made this pull request unmergeable. Please resolve the merge conflicts. |
| Given that this PR is doing like 5+ different things, I'd like to see this broken up into several different PRs to be honest. Like, there's no reason why the PR which changes coroutine encoding needs to go into the same PR which changes the way we encode the receiver for |
Sure. I'll split it into smaller self-contained PRs. |
…place, r=compiler-errors CFI: Fix drop and drop_in_place Fix drop and drop_in_place by transforming self of drop and drop_in_place methods into a Drop trait objects. This was split off from rust-lang#116404. cc `@compiler-errors` `@workingjubilee`
Rollup merge of rust-lang#123075 - rcvalle:rust-cfi-fix-drop-drop-in-place, r=compiler-errors CFI: Fix drop and drop_in_place Fix drop and drop_in_place by transforming self of drop and drop_in_place methods into a Drop trait objects. This was split off from rust-lang#116404. cc `@compiler-errors` `@workingjubilee`
…ast, r=compiler-errors CFI: Fix methods as function pointer cast Fix casting between methods and function pointers by assigning a secondary type id to methods with their concrete self so they can be used as function pointers. This was split off from rust-lang#116404. cc `@compiler-errors` `@workingjubilee`
…ast, r=compiler-errors CFI: Fix methods as function pointer cast Fix casting between methods and function pointers by assigning a secondary type id to methods with their concrete self so they can be used as function pointers. This was split off from rust-lang#116404. cc `@compiler-errors` `@workingjubilee`
| @rustbot label A-sanitizers |
| Closing this as it's being split into multiple prs |
This PR:
encode_ty: unexpected 'CoroutineWitness'#122705 by adding support for encodingty:CoroutineClosure.This is a zero cost solution for both the Rust compiler and compiled programs (i.e., without generating any shims/trampolines or changing the compiler code generation at all) for the issues described and solutions proposed in #121962 and #122573.