mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-01 10:42:11 +00:00
ftrace: Make recordmcount.c handle __fentry__
With gcc 4.6.0 the -mfentry feature places the function profiling call at the start of the function. When this is used, the call is to __fentry__ and not mcount. Change recordmcount.c to record both callers to __fentry__ and mcount. Link: http://lkml.kernel.org/r/20120807194058.990674363@goodmis.org Acked-by: H. Peter Anvin <hpa@linux.intel.com> Acked-by: John Reiser <jreiser@bitwagon.com> Acked-by: Ingo Molnar <mingo@kernel.org> Cc: Andi Kleen <andi@firstfloor.org> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
This commit is contained in:
parent
a0e0fac633
commit
48bb5dc6cd
@ -261,11 +261,13 @@ static unsigned get_mcountsym(Elf_Sym const *const sym0,
|
|||||||
&sym0[Elf_r_sym(relp)];
|
&sym0[Elf_r_sym(relp)];
|
||||||
char const *symname = &str0[w(symp->st_name)];
|
char const *symname = &str0[w(symp->st_name)];
|
||||||
char const *mcount = gpfx == '_' ? "_mcount" : "mcount";
|
char const *mcount = gpfx == '_' ? "_mcount" : "mcount";
|
||||||
|
char const *fentry = "__fentry__";
|
||||||
|
|
||||||
if (symname[0] == '.')
|
if (symname[0] == '.')
|
||||||
++symname; /* ppc64 hack */
|
++symname; /* ppc64 hack */
|
||||||
if (strcmp(mcount, symname) == 0 ||
|
if (strcmp(mcount, symname) == 0 ||
|
||||||
(altmcount && strcmp(altmcount, symname) == 0))
|
(altmcount && strcmp(altmcount, symname) == 0) ||
|
||||||
|
(strcmp(fentry, symname) == 0))
|
||||||
mcountsym = Elf_r_sym(relp);
|
mcountsym = Elf_r_sym(relp);
|
||||||
|
|
||||||
return mcountsym;
|
return mcountsym;
|
||||||
|
Loading…
Reference in New Issue
Block a user