Explain why we need extra check in probestack.
This commit is contained in:
parent
56293ad7c7
commit
1d15be6a86
|
@ -64,6 +64,11 @@ pub unsafe extern fn __rust_probestack() {
|
|||
// bytes pushed on the stack orginally with our return address. Using
|
||||
// `8(%rsp)` simulates us testing the stack pointer in the caller's
|
||||
// context.
|
||||
|
||||
// It's usually called when %rax >= 0x1000, but that's not always true.
|
||||
// Dynamic stack allocation, which is needed to implement unsized
|
||||
// rvalues, triggers stackprobe even if %rax < 0x1000.
|
||||
// Thus we have to check %r11 first to avoid segfault.
|
||||
cmp $$0x1000,%r11
|
||||
jna 3f
|
||||
2:
|
||||
|
|
Loading…
Reference in New Issue