A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
add pvs-studio analyze to coverage build
[simgrid.git]
/
tools
/
stack-cleaner
/
clean-stack-filter
diff --git
a/tools/stack-cleaner/clean-stack-filter
b/tools/stack-cleaner/clean-stack-filter
index 95a3b520f49762232cd8c764b22b609bcba5abed..8b15cd7c0f966a9df0ba9acddf90a762153ab63a 100755
(executable)
--- a/
tools/stack-cleaner/clean-stack-filter
+++ b/
tools/stack-cleaner/clean-stack-filter
@@
-1,9
+1,10
@@
-#!/usr/bin/
perl -w
+#!/usr/bin/
env perl
# Transform assembly in order to clean each stack frame for X86_64.
use strict;
# Transform assembly in order to clean each stack frame for X86_64.
use strict;
-
$SIG{__WARN__} = sub { die @_ }
;
+
use warnings
;
+$SIG{__WARN__} = sub { die @_ };
# Whether we are still scanning the content of a function:
our $scanproc = 0;
# Whether we are still scanning the content of a function:
our $scanproc = 0;
@@
-14,7
+15,6
@@
our $lines = "";
# Size of the stack for this function:
our $size = 0;
# Size of the stack for this function:
our $size = 0;
-
# Counter for assigning unique ids to labels:
our $id=0;
# Counter for assigning unique ids to labels:
our $id=0;
@@
-24,8
+24,8
@@
sub emit_code {
if($size != 0) {
# This is a crude hack to disable the stack cleaning on the main
if($size != 0) {
# This is a crude hack to disable the stack cleaning on the main
- # stack. It rel
l
ies on the fact that the main stack is high in
- # the address space and the other stacks are in the hap (lower).
+ # stack. It relies on the fact that the main stack is high in
+ # the address space and the other stacks are in the h
e
ap (lower).
print("\tmovq \$0x7fff00000000, %r11\n");
print("\tcmpq %r11, %rsp\n");
print("\tjae .Lstack_cleaner_done$id\n");
print("\tmovq \$0x7fff00000000, %r11\n");
print("\tcmpq %r11, %rsp\n");
print("\tjae .Lstack_cleaner_done$id\n");
@@
-51,14
+51,14
@@
while (<>) {
if ($scanproc) {
$lines = $lines . $_;
if (m/^[ \t]*.cfi_endproc$/) {
if ($scanproc) {
$lines = $lines . $_;
if (m/^[ \t]*.cfi_endproc$/) {
-
emit_code();
+ emit_code();
} elsif (m/^[ \t]*pushq/) {
} elsif (m/^[ \t]*pushq/) {
- $size += 8;
+ $size += 8;
} elsif (m/^[ \t]*subq[\t *]\$([0-9]*),[ \t]*%rsp$/) {
} elsif (m/^[ \t]*subq[\t *]\$([0-9]*),[ \t]*%rsp$/) {
-
my $val = $1;
-
$val = oct($val) if $val =~ /^0/;
-
$size += $val;
-
emit_code();
+ my $val = $1;
+ $val = oct($val) if $val =~ /^0/;
+ $size += $val;
+ emit_code();
}
} elsif (m/^[ \t]*.cfi_startproc$/) {
print $_;
}
} elsif (m/^[ \t]*.cfi_startproc$/) {
print $_;