• Steven Rostedt's avatar
    ftrace: Do not process kernel/trace/ftrace.o with C recordmcount program · 44475863
    Steven Rostedt authored
    The file kernel/trace/ftrace.c references the mcount() call to
    convert the mcount() callers to nops. But because it references
    mcount(), the mcount() address is placed in the relocation table.
    
    The C version of recordmcount reads the relocation table of all
    object files, and it will add all references to mcount to the
    __mcount_loc table that is used to find the places that call mcount()
    and change the call to a nop. When recordmcount finds the mcount reference
    in kernel/trace/ftrace.o, it saves that location even though the code
    is not a call, but references mcount as data.
    
    On boot up, when all calls are converted to nops, the code has a safety
    check to determine what op code it is actually replacing before it
    replaces it. If that op code at the address does not match, then
    a warning is printed and the function tracer is disabled.
    
    The reference to mcount in ftrace.c, causes this warning to trigger,
    since the reference is not a call to mcount(). The ftrace.c file is
    not compiled with the -pg flag, so no calls to mcount() should be
    expected.
    
    This patch simply makes recordmcount.c skip the kernel/trace/ftrace.c
    file. This was the same solution used by the perl version of
    recordmcount.
    Reported-by: default avatarIngo Molnar <mingo@elte.hu>
    Cc: John Reiser <jreiser@bitwagon.com>
    Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
    44475863
recordmcount.c 9.3 KB