mwl8k: get rid of mwl8k_configure_filter() workqueue use
[pandora-kernel.git] / scripts / recordmcount.pl
index 7109e2b..911ba7f 100755 (executable)
@@ -393,7 +393,7 @@ while (<IN>) {
            $read_function = 0;
        }
        # print out any recorded offsets
-       update_funcs() if ($text_found);
+       update_funcs() if (defined($ref_func));
 
        # reset all markers and arrays
        $text_found = 0;
@@ -403,7 +403,6 @@ while (<IN>) {
     # section found, now is this a start of a function?
     } elsif ($read_function && /$function_regex/) {
        $text_found = 1;
-       $offset = hex $1;
        $text = $2;
 
        # if this is either a local function or a weak function
@@ -412,10 +411,15 @@ while (<IN>) {
        if (!defined($locals{$text}) && !defined($weak{$text})) {
            $ref_func = $text;
            $read_function = 0;
+           $offset = hex $1;
        } else {
            # if we already have a function, and this is weak, skip it
-           if (!defined($ref_func) || !defined($weak{$text})) {
+           if (!defined($ref_func) && !defined($weak{$text}) &&
+                # PPC64 can have symbols that start with .L and
+                # gcc considers these special. Don't use them!
+                $text !~ /^\.L/) {
                $ref_func = $text;
+               $offset = hex $1;
            }
        }
     } elsif ($read_headers && /$mcount_section/) {
@@ -440,7 +444,7 @@ while (<IN>) {
 }
 
 # dump out anymore offsets that may have been found
-update_funcs() if ($text_found);
+update_funcs() if (defined($ref_func));
 
 # If we did not find any mcount callers, we are done (do nothing).
 if (!$opened) {