Update documentation for stack relative directives
[platform/upstream/nasm.git] / misc / findleak.pl
1 #!/usr/bin/perl
2 # From: Ed Beroset <beroset@mindspring.com>
3
4 my %mem = {};
5 my %alloc = {};
6 while(<>)
7 {
8         if (/realloc\((0x[0-9a-f]+).*\).*returns \((0x[0-9a-f]+)/)
9         {
10                 $mem{$1}--;
11                 if ($mem{$1} != 0) {
12                         print "free before alloc! $_";
13                 }
14                 if ($mem{$2} != 0) {
15                         print "memory leak! $_";
16                 }
17                 $mem{$2}++;
18                 $alloc{$2} = $_;
19         }
20         elsif (/free\((0x[0-9a-f]+)/)
21         {
22                 $mem{$1}--;
23                 if ($mem{$1} != 0) {
24                         print "free before alloc! $_";
25                 }
26         }
27         elsif (m/returns (0x[0-9a-f]+)/)
28         {
29                 if ($mem{$1} != 0) {
30                         print "memory leak! $_";
31                 }
32                 $mem{$1}++;
33                 $alloc{$1} = $_;
34         }
35 }
36 foreach $goo (sort keys %mem)
37 {
38         if ($mem{$goo})
39         {
40                 print "$mem{$goo} $alloc{$goo}";
41         }
42 }