-
Notifications
You must be signed in to change notification settings - Fork 12.9k
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
Set non-leaf frame pointers on Fuchsia targets #124677
Conversation
These commits modify compiler targets. |
@djkoloski Is there any motivation/context you can link to? I assume this has to do with the SCS work. @bors r+ |
Yeah it's SCS related. I updated the PR description with a link to Fuchsia issue. |
@tmandry We plan to enable Non-Leaf frame pointers everywhere as part of Fuchsia's default options. After a thorough evaluation, we found that across most workloads in Fuchsia, there is no significant performance impact when enabling frame pointers w/ Ideally, setting NonLeaf would be controllable through a compiler option though, and wouldn't be something you can only set in This isn't purely for SCS, though the motivation is the same: provide a uniform method for fast unwinding on Fuchsia. |
Thanks for the context @ilovepi. |
I was actually evaluating various platforms for this recently and I felt I should ask: is Fuchsia's aarch64 implementation supposed to follow the AAPCS64 ABI, or is that a "wrong question"? @ilovepi That's good to know! Is there a convenient way for someone outside Google to view a quantified form of "no significant performance impact"? "Somewhat inconvenient, actually" is also good, really, as long as it's reachable by, uh, me. |
I'm not sure I have any documents handy that I can share externally, but benchmarking even the llvm-test suite w/ I've posted here what I think the take aways should be, but I did use internal benchmarking facilities to get real perf numbers using Google infrastructure, including running open source benchmarks. As a point of reference, Google enables |
Thanks! I know the numbers tend to line up for most of these cases, I was just hoping for a giant slab of collected numbers to |
…r, r=tmandry Set non-leaf frame pointers on Fuchsia targets This is part of our work to enable shadow call stack sanitization on Fuchsia, see [this Fuchsia issue](https://g-issues.fuchsia.dev/issues/327643884). r? `@tmandry`
…iaskrgr Rollup of 6 pull requests Successful merges: - rust-lang#123356 (Reduce code size of `thread::set_current`) - rust-lang#124159 (Move thread parking to `sys::sync`) - rust-lang#124293 (Let miri and const eval execute intrinsics' fallback bodies) - rust-lang#124500 (lldb-formatters: Use StdSliceSyntheticProvider for &str) - rust-lang#124677 (Set non-leaf frame pointers on Fuchsia targets) - rust-lang#124692 (We do not coerce `&mut &mut T -> *mut mut T`) r? `@ghost` `@rustbot` modify labels: rollup
…iaskrgr Rollup of 8 pull requests Successful merges: - rust-lang#123356 (Reduce code size of `thread::set_current`) - rust-lang#124159 (Move thread parking to `sys::sync`) - rust-lang#124293 (Let miri and const eval execute intrinsics' fallback bodies) - rust-lang#124677 (Set non-leaf frame pointers on Fuchsia targets) - rust-lang#124692 (We do not coerce `&mut &mut T -> *mut mut T`) - rust-lang#124698 (Rewrite `rustdoc-determinism` test in Rust) - rust-lang#124700 (Remove an unnecessary cast) - rust-lang#124701 (Docs: suggest `uN::checked_sub` instead of check-then-unchecked) r? `@ghost` `@rustbot` modify labels: rollup
Rollup merge of rust-lang#124677 - djkoloski:set_fuchsia_frame_pointer, r=tmandry Set non-leaf frame pointers on Fuchsia targets This is part of our work to enable shadow call stack sanitization on Fuchsia, see [this Fuchsia issue](https://g-issues.fuchsia.dev/issues/327643884). r? ``@tmandry``
@workingjubilee I missed the AAPCS64 ABI part of your question. As far as I know, we are. https://github.com/ARM-software/abi-aa/blob/main/aapcs64/aapcs64.rst#the-frame-pointer spells out when leaf frames can be omitted from the frame pointer chain, which matches typical usage on other platforms. The other ABI parts that I'm aware of for Aarch64, usage of platform register and calling conventions, also comply with that document. |
This is part of our work to enable shadow call stack sanitization on Fuchsia, see this Fuchsia issue.
r? @tmandry