History

Merge branch 'linus' into tracing/ftrace

Ingo Molnar committed 18 years ago

Commit e1e302d2 parents 944ac42 7f82f00371 files · +5975 −2447Browse files

Showing the changes to scripts (3 of 371 files). Show all

Unified · Split

3 files
  1. scripts/Makefile.build +8 −2
  2. scripts/bootgraph.pl +12 −7
  3. scripts/recordmcount.pl +24 −4
scripts/Makefile.build+8−2
@@ -198,10 +198,16 @@ cmd_modversions = \ · 197 unmodified lines
198198 fi;
199199 endif
200200
201+ifdef CONFIG_64BIT
202+arch_bits = 64
203+else
204+arch_bits = 32
205+endif
206+
201207 ifdef CONFIG_FTRACE_MCOUNT_RECORD
202208 cmd_record_mcount = perl $(srctree)/scripts/recordmcount.pl \
203− "$(ARCH)" "$(OBJDUMP)" "$(OBJCOPY)" "$(CC)" "$(LD)" "$(NM)" "$(RM)" \
204− "$(MV)" "$(@)";
209+ "$(ARCH)" "$(arch_bits)" "$(OBJDUMP)" "$(OBJCOPY)" "$(CC)" "$(LD)" \
210+ "$(NM)" "$(RM)" "$(MV)" "$(@)";
205211 endif
206212
207213 define rule_cc_o_c
scripts/bootgraph.pl+12−7
@@ -37,7 +37,10 @@ · 36 unmodified lines
3737 # dmesg | perl scripts/bootgraph.pl > output.svg
3838 #
3939
40−my %start, %end;
40+use strict;
41+
42+my %start;
43+my %end;
4144 my $done = 0;
4245 my $maxtime = 0;
4346 my $firsttime = 100;
@@ -105,18 +108,20 @@ my $threshold = ($maxtime - $firsttime) / 60.0; · 61 unmodified lines
105108 my $stylecounter = 0;
106109 my %rows;
107110 my $rowscount = 1;
108−while (($key,$value) = each %start) {
111+my @initcalls = sort { $start{$a} <=> $start{$b} } keys(%start);
112+my $key;
113+foreach $key (@initcalls) {
109114 my $duration = $end{$key} - $start{$key};
110115
111116 if ($duration >= $threshold) {
112− my $s, $s2, $e, $y;
113− $pid = $pids{$key};
117+ my ($s, $s2, $e, $w, $y, $y2, $style);
118+ my $pid = $pids{$key};
114119
115120 if (!defined($rows{$pid})) {
116121 $rows{$pid} = $rowscount;
117122 $rowscount = $rowscount + 1;
118123 }
119− $s = ($value - $firsttime) * $mult;
124+ $s = ($start{$key} - $firsttime) * $mult;
120125 $s2 = $s + 6;
121126 $e = ($end{$key} - $firsttime) * $mult;
122127 $w = $e - $s;
@@ -140,9 +145,9 @@ while (($key,$value) = each %start) { · 17 unmodified lines
140145 my $time = $firsttime;
141146 my $step = ($maxtime - $firsttime) / 15;
142147 while ($time < $maxtime) {
143− my $s2 = ($time - $firsttime) * $mult;
148+ my $s3 = ($time - $firsttime) * $mult;
144149 my $tm = int($time * 100) / 100.0;
145− print "<text transform=\"translate($s2,89) rotate(90)\">$tm</text>\n";
150+ print "<text transform=\"translate($s3,89) rotate(90)\">$tm</text>\n";
146151 $time = $time + $step;
147152 }
148153
scripts/recordmcount.pl+24−4
@@ -106,7 +106,13 @@ if ($#ARGV < 6) { · 105 unmodified lines
106106 exit(1);
107107 }
108108
109−my ($arch, $objdump, $objcopy, $cc, $ld, $nm, $rm, $mv, $inputfile) = @ARGV;
109+my ($arch, $bits, $objdump, $objcopy, $cc,
110+ $ld, $nm, $rm, $mv, $inputfile) = @ARGV;
111+
112+# Acceptable sections to record.
113+my %text_sections = (
114+ ".text" => 1,
115+);
110116
111117 $objdump = "objdump" if ((length $objdump) == 0);
112118 $objcopy = "objcopy" if ((length $objcopy) == 0);
@@ -129,8 +135,16 @@ my $function_regex; # Find the name of a function · 16 unmodified lines
129135 # (return offset and func name)
130136 my $mcount_regex; # Find the call site to mcount (return offset)
131137
138+if ($arch eq "x86") {
139+ if ($bits == 64) {
140+ $arch = "x86_64";
141+ } else {
142+ $arch = "i386";
143+ }
144+}
145+
132146 if ($arch eq "x86_64") {
133− $section_regex = "Disassembly of section";
147+ $section_regex = "Disassembly of section\\s+(\\S+):";
134148 $function_regex = "^([0-9a-fA-F]+)\\s+<(.*?)>:";
135149 $mcount_regex = "^\\s*([0-9a-fA-F]+):.*\\smcount([+-]0x[0-9a-zA-Z]+)?\$";
136150 $type = ".quad";
@@ -142,7 +156,7 @@ if ($arch eq "x86_64") { · 5 unmodified lines
142156 $cc .= " -m64";
143157
144158 } elsif ($arch eq "i386") {
145− $section_regex = "Disassembly of section";
159+ $section_regex = "Disassembly of section\\s+(\\S+):";
146160 $function_regex = "^([0-9a-fA-F]+)\\s+<(.*?)>:";
147161 $mcount_regex = "^\\s*([0-9a-fA-F]+):.*\\smcount\$";
148162 $type = ".long";
@@ -289,7 +303,13 @@ my $text; · 140 unmodified lines
289303 while (<IN>) {
290304 # is it a section?
291305 if (/$section_regex/) {
292− $read_function = 1;
306+
307+ # Only record text sections that we know are safe
308+ if (defined($text_sections{$1})) {
309+ $read_function = 1;
310+ } else {
311+ $read_function = 0;
312+ }
293313 # print out any recorded offsets
294314 update_funcs() if ($text_found);
295315