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
|
// bytes pushed on the stack orginally with our return address. Using
|
||||||
// `8(%rsp)` simulates us testing the stack pointer in the caller's
|
// `8(%rsp)` simulates us testing the stack pointer in the caller's
|
||||||
// context.
|
// 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
|
cmp $$0x1000,%r11
|
||||||
jna 3f
|
jna 3f
|
||||||
2:
|
2:
|
||||||
|
|
Loading…
Reference in New Issue