|
@@ -391,9 +391,27 @@ open(IN, "$objdump -hdr $inputfile|") || die "error running $objdump";
|
|
|
|
|
|
my $text;
|
|
|
|
|
|
+
|
|
|
+# read headers first
|
|
|
my $read_headers = 1;
|
|
|
|
|
|
while (<IN>) {
|
|
|
+
|
|
|
+ if ($read_headers && /$mcount_section/) {
|
|
|
+ #
|
|
|
+ # Somehow the make process can execute this script on an
|
|
|
+ # object twice. If it does, we would duplicate the mcount
|
|
|
+ # section and it will cause the function tracer self test
|
|
|
+ # to fail. Check if the mcount section exists, and if it does,
|
|
|
+ # warn and exit.
|
|
|
+ #
|
|
|
+ print STDERR "ERROR: $mcount_section already in $inputfile\n" .
|
|
|
+ "\tThis may be an indication that your build is corrupted.\n" .
|
|
|
+ "\tDelete $inputfile and try again. If the same object file\n" .
|
|
|
+ "\tstill causes an issue, then disable CONFIG_DYNAMIC_FTRACE.\n";
|
|
|
+ exit(-1);
|
|
|
+ }
|
|
|
+
|
|
|
# is it a section?
|
|
|
if (/$section_regex/) {
|
|
|
$read_headers = 0;
|
|
@@ -434,21 +452,7 @@ while (<IN>) {
|
|
|
$offset = hex $1;
|
|
|
}
|
|
|
}
|
|
|
- } elsif ($read_headers && /$mcount_section/) {
|
|
|
- #
|
|
|
- # Somehow the make process can execute this script on an
|
|
|
- # object twice. If it does, we would duplicate the mcount
|
|
|
- # section and it will cause the function tracer self test
|
|
|
- # to fail. Check if the mcount section exists, and if it does,
|
|
|
- # warn and exit.
|
|
|
- #
|
|
|
- print STDERR "ERROR: $mcount_section already in $inputfile\n" .
|
|
|
- "\tThis may be an indication that your build is corrupted.\n" .
|
|
|
- "\tDelete $inputfile and try again. If the same object file\n" .
|
|
|
- "\tstill causes an issue, then disable CONFIG_DYNAMIC_FTRACE.\n";
|
|
|
- exit(-1);
|
|
|
}
|
|
|
-
|
|
|
# is this a call site to mcount? If so, record it to print later
|
|
|
if ($text_found && /$mcount_regex/) {
|
|
|
$offsets[$#offsets + 1] = hex $1;
|