pub struct Probe {
pub inst: &'static str,
pub interval: u32,
}Expand description
How a prologue touches the stack as it takes a frame, on a target that can.
What -fstack-clash-protection asks for. An operating system leaves one page below every
stack unmapped, so that a stack which grows into it faults rather than running into whatever
is under it, and a frame larger than that page can move the stack pointer clean over it
without ever writing to it. A prologue that takes the frame a page at a time and writes
something to each page as it arrives cannot: the first page it reaches that is not mapped is
the one that faults.
Two facts rather than one because neither implies the other. What touches a page is an instruction of the machine, and how far apart the pages are is what the kernel that runs the program left, and they are together here because a prologue that has one and not the other cannot write anything.
Fields§
§inst: &'static strWrites an address without changing what is there, which is what makes it safe to do to a page a local has not been put in yet.
interval: u32How far apart the touches are, which is the page the operating system leaves below the stack. A prologue never moves the stack pointer further than this without touching where it landed.