pub struct Probing<'a> {
pub probe: &'a Probe,
pub branch: &'a BranchInsts,
pub scratch: [PhysReg; 2],
}Expand description
What a function that takes its stack a page at a time needs beyond the frame.
What -fstack-clash-protection asks for, and the same three kinds of thing Protect is:
one fact about the platform, one about the machine, and two registers that are neither. See
rucc_target::Probe for what the sequence is defending against.
Read in two places, because a function has two ways of moving its stack pointer and the flag is about both of them. The prologue takes the frame the layout worked out, and a variable length array takes however many bytes its declaration asked for while the function runs. The same three things answer both.
Fields§
§probe: &'a ProbeWhat touches a page and how far apart the pages are.
branch: &'a BranchInstsWhat a branch on a register is, which is what the loop under a large frame ends with.
scratch: [PhysReg; 2]The two registers the sequence may use, which are two the allocator never handed out.