X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/00fab7f6cbb427e331c007ed07403be1add49b25..3d602b8ba51ba42a97797be3b44437df20c9de2c:/tools/stack-cleaner/clean-stack-filter diff --git a/tools/stack-cleaner/clean-stack-filter b/tools/stack-cleaner/clean-stack-filter index 8c5c01ca1c..95a3b520f4 100755 --- a/tools/stack-cleaner/clean-stack-filter +++ b/tools/stack-cleaner/clean-stack-filter @@ -23,11 +23,20 @@ sub emit_code { my $offset = - $size - 8; if($size != 0) { + # This is a crude hack to disable the stack cleaning on the main + # stack. It rellies on the fact that the main stack is high in + # the address space and the other stacks are in the hap (lower). + print("\tmovq \$0x7fff00000000, %r11\n"); + print("\tcmpq %r11, %rsp\n"); + print("\tjae .Lstack_cleaner_done$id\n"); + + # Loop over the stack frame quadwords and zero it: print("\tmovabsq \$$qsize, %r11\n"); print(".Lstack_cleaner_loop$id:\n"); print("\tmovq \$0, $offset(%rsp,%r11,8)\n"); print("\tsubq \$1, %r11\n"); print("\tjne .Lstack_cleaner_loop$id\n"); + print(".Lstack_cleaner_done$id:\n"); } print $lines;