aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLi Hong <lihong.hi@gmail.com>2009-10-28 01:07:43 -0400
committerSteven Rostedt <rostedt@goodmis.org>2009-10-29 15:11:57 -0400
commitc4b8ac2c1aee1398b9378b8730bac56294b3410b (patch)
tree10a8cb1fa3510da16aa5be4a895b300cf778ed12
parent6092858c60f168c1950f8ad73880d54271696ec5 (diff)
tracing: Exit with error if a weak function is used in recordmcount.pl
If a weak function is used as a relocation reference for mcount callers and that function is overridden, it will cause ftrace to fail at run time. The current code should prevent a weak function from being used, but if one is, the code should exit with an error to fail at compile time. Signed-off-by: Li Hong <lihong.hi@gmail.com> LKML-Reference: <20091028050743.GH30758@uhli> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
-rwxr-xr-xscripts/recordmcount.pl10
1 files changed, 3 insertions, 7 deletions
diff --git a/scripts/recordmcount.pl b/scripts/recordmcount.pl
index 884776a6e01a..a4e2435d4821 100755
--- a/scripts/recordmcount.pl
+++ b/scripts/recordmcount.pl
@@ -350,15 +350,11 @@ sub update_funcs
350{ 350{
351 return unless ($ref_func and @offsets); 351 return unless ($ref_func and @offsets);
352 352
353 # A section only had a weak function, to represent it. 353 # Sanity check on weak function. A weak function may be overwritten by
354 # Unfortunately, a weak function may be overwritten by another 354 # another function of the same name, making all these offsets incorrect.
355 # function of the same name, making all these offsets incorrect.
356 # To be safe, we simply print a warning and bail.
357 if (defined $weak{$ref_func}) { 355 if (defined $weak{$ref_func}) {
358 print STDERR 356 die "$inputfile: ERROR: referencing weak function" .
359 "$inputfile: WARNING: referencing weak function" .
360 " $ref_func for mcount\n"; 357 " $ref_func for mcount\n";
361 return;
362 } 358 }
363 359
364 # is this function static? If so, note this fact. 360 # is this function static? If so, note this fact.