Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 306dcf47 authored by Li Hong's avatar Li Hong Committed by Steven Rostedt
Browse files

tracing: Add regex for weak functions in recordmcount.pl



Add a variable to contain the regex needed to find weak functions
in the 'nm' output. This will allow other archs to easily override it.

Also rename the regex variable $nm_regex to $local_regex to be more
descriptive.

Signed-off-by: default avatarLi Hong <lihong.hi@gmail.com>
LKML-Reference: <20091028050619.GF30758@uhli>
Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
parent db24c7dc
Loading
Loading
Loading
Loading
+9 −7
Original line number Diff line number Diff line
@@ -92,7 +92,7 @@
#
# Here are the steps we take:
#
# 1) Record all the local symbols by using 'nm'
# 1) Record all the local and weak symbols by using 'nm'
# 2) Use objdump to find all the call site offsets and sections for
#    mcount.
# 3) Compile the list into its own object.
@@ -152,7 +152,8 @@ my %weak; # List of weak functions
my %convert;		# List of local functions used that needs conversion

my $type;
my $nm_regex;		# Find the local functions (return function)
my $local_regex;	# Match a local function (return function)
my $weak_regex; 	# Match a weak function (return function)
my $section_regex;	# Find the start of a section
my $function_regex;	# Find the name of a function
			#    (return offset and func name)
@@ -197,7 +198,8 @@ if ($arch eq "x86") {
# We base the defaults off of i386, the other archs may
# feel free to change them in the below if statements.
#
$nm_regex = "^[0-9a-fA-F]+\\s+t\\s+(\\S+)";
$local_regex = "^[0-9a-fA-F]+\\s+t\\s+(\\S+)";
$weak_regex = "^[0-9a-fA-F]+\\s+([wW])\\s+(\\S+)";
$section_regex = "Disassembly of section\\s+(\\S+):";
$function_regex = "^([0-9a-fA-F]+)\\s+<(.*?)>:";
$mcount_regex = "^\\s*([0-9a-fA-F]+):.*\\smcount\$";
@@ -246,7 +248,7 @@ if ($arch eq "x86_64") {
    $cc .= " -m32";

} elsif ($arch eq "powerpc") {
    $nm_regex = "^[0-9a-fA-F]+\\s+t\\s+(\\.?\\S+)";
    $local_regex = "^[0-9a-fA-F]+\\s+t\\s+(\\.?\\S+)";
    $function_regex = "^([0-9a-fA-F]+)\\s+<(\\.?.*?)>:";
    $mcount_regex = "^\\s*([0-9a-fA-F]+):.*\\s\\.?_mcount\$";

@@ -322,13 +324,13 @@ check_objcopy();

#
# Step 1: find all the local (static functions) and weak symbols.
#        't' is local, 'w/W' is weak (we never use a weak function)
#         't' is local, 'w/W' is weak
#
open (IN, "$nm $inputfile|") || die "error running $nm";
while (<IN>) {
    if (/$nm_regex/) {
    if (/$local_regex/) {
	$locals{$1} = 1;
    } elsif (/^[0-9a-fA-F]+\s+([wW])\s+(\S+)/) {
    } elsif (/$weak_regex/) {
	$weak{$2} = $1;
    }
}