• 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...
    44475863
recordmcount.c 9.3 KB