History

tracing: Move mcount section search to front of loop in recordmcount.pl

Move the mcount section check to the beginning of the objdump read loop. This makes the code easier to follow since the search for the mcount section is performed first before the mcount callers are processed.

Li Hong committed 17 years ago

Commit db24c7d1 parent 7b7edc21 file · +18 −14Browse files

Showing the changes to scripts (1 of 1 file). Show all

Unified · Split

scripts/recordmcount.pl+18−14
@@ -391,9 +391,27 @@ open(IN, "$objdump -hdr $inputfile|") || die "error running $objdump"; · 390 unmodified lines
391391
392392 my $text;
393393
394+
395+# read headers first
394396 my $read_headers = 1;
395397
396398 while (<IN>) {
399+
400+ if ($read_headers && /$mcount_section/) {
401+ #
402+ # Somehow the make process can execute this script on an
403+ # object twice. If it does, we would duplicate the mcount
404+ # section and it will cause the function tracer self test
405+ # to fail. Check if the mcount section exists, and if it does,
406+ # warn and exit.
407+ #
408+ print STDERR "ERROR: $mcount_section already in $inputfile\n" .
409+ "\tThis may be an indication that your build is corrupted.\n" .
410+ "\tDelete $inputfile and try again. If the same object file\n" .
411+ "\tstill causes an issue, then disable CONFIG_DYNAMIC_FTRACE.\n";
412+ exit(-1);
413+ }
414+
397415 # is it a section?
398416 if (/$section_regex/) {
399417 $read_headers = 0;
@@ -434,21 +452,7 @@ while (<IN>) { · 34 unmodified lines
434452 $offset = hex $1;
435453 }
436454 }
437− } elsif ($read_headers && /$mcount_section/) {
438− #
439− # Somehow the make process can execute this script on an
440− # object twice. If it does, we would duplicate the mcount
441− # section and it will cause the function tracer self test
442− # to fail. Check if the mcount section exists, and if it does,
443− # warn and exit.
444− #
445− print STDERR "ERROR: $mcount_section already in $inputfile\n" .
446− "\tThis may be an indication that your build is corrupted.\n" .
447− "\tDelete $inputfile and try again. If the same object file\n" .
448− "\tstill causes an issue, then disable CONFIG_DYNAMIC_FTRACE.\n";
449− exit(-1);
450455 }
451−
452456 # is this a call site to mcount? If so, record it to print later
453457 if ($text_found && /$mcount_regex/) {
454458 $offsets[$#offsets + 1] = hex $1;