diff options
Diffstat (limited to 'scripts')
| -rwxr-xr-x | scripts/recordmcount.pl | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/scripts/recordmcount.pl b/scripts/recordmcount.pl index 0171060b5fd6..e67f05486087 100755 --- a/scripts/recordmcount.pl +++ b/scripts/recordmcount.pl | |||
| @@ -159,6 +159,7 @@ my $section_regex; # Find the start of a section | |||
| 159 | my $function_regex; # Find the name of a function | 159 | my $function_regex; # Find the name of a function |
| 160 | # (return offset and func name) | 160 | # (return offset and func name) |
| 161 | my $mcount_regex; # Find the call site to mcount (return offset) | 161 | my $mcount_regex; # Find the call site to mcount (return offset) |
| 162 | my $mcount_adjust; # Address adjustment to mcount offset | ||
| 162 | my $alignment; # The .align value to use for $mcount_section | 163 | my $alignment; # The .align value to use for $mcount_section |
| 163 | my $section_type; # Section header plus possible alignment command | 164 | my $section_type; # Section header plus possible alignment command |
| 164 | my $can_use_local = 0; # If we can use local function references | 165 | my $can_use_local = 0; # If we can use local function references |
| @@ -213,6 +214,7 @@ $section_regex = "Disassembly of section\\s+(\\S+):"; | |||
| 213 | $function_regex = "^([0-9a-fA-F]+)\\s+<(.*?)>:"; | 214 | $function_regex = "^([0-9a-fA-F]+)\\s+<(.*?)>:"; |
| 214 | $mcount_regex = "^\\s*([0-9a-fA-F]+):.*\\smcount\$"; | 215 | $mcount_regex = "^\\s*([0-9a-fA-F]+):.*\\smcount\$"; |
| 215 | $section_type = '@progbits'; | 216 | $section_type = '@progbits'; |
| 217 | $mcount_adjust = 0; | ||
| 216 | $type = ".long"; | 218 | $type = ".long"; |
| 217 | 219 | ||
| 218 | if ($arch eq "x86_64") { | 220 | if ($arch eq "x86_64") { |
| @@ -351,6 +353,9 @@ if ($arch eq "x86_64") { | |||
| 351 | } elsif ($arch eq "microblaze") { | 353 | } elsif ($arch eq "microblaze") { |
| 352 | # Microblaze calls '_mcount' instead of plain 'mcount'. | 354 | # Microblaze calls '_mcount' instead of plain 'mcount'. |
| 353 | $mcount_regex = "^\\s*([0-9a-fA-F]+):.*\\s_mcount\$"; | 355 | $mcount_regex = "^\\s*([0-9a-fA-F]+):.*\\s_mcount\$"; |
| 356 | } elsif ($arch eq "blackfin") { | ||
| 357 | $mcount_regex = "^\\s*([0-9a-fA-F]+):.*\\s__mcount\$"; | ||
| 358 | $mcount_adjust = -4; | ||
| 354 | } else { | 359 | } else { |
| 355 | die "Arch $arch is not supported with CONFIG_FTRACE_MCOUNT_RECORD"; | 360 | die "Arch $arch is not supported with CONFIG_FTRACE_MCOUNT_RECORD"; |
| 356 | } | 361 | } |
| @@ -511,7 +516,7 @@ while (<IN>) { | |||
| 511 | } | 516 | } |
| 512 | # is this a call site to mcount? If so, record it to print later | 517 | # is this a call site to mcount? If so, record it to print later |
| 513 | if ($text_found && /$mcount_regex/) { | 518 | if ($text_found && /$mcount_regex/) { |
| 514 | push(@offsets, hex $1); | 519 | push(@offsets, (hex $1) + $mcount_adjust); |
| 515 | } | 520 | } |
| 516 | } | 521 | } |
| 517 | 522 | ||
