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:
Родитель
a0e0fac633
Коммит
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;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче