lkml.org 
[lkml]   [2011]   [Jun]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 2/3 v2] kprobes/trace: Fix kprobe selftest for gcc 4.6
    From: Steven Rostedt <srostedt@redhat.com>

    With gcc 4.6, the self test kprobe function:

    kprobe_trace_selftest_target()

    is optimized such that kallsyms does not list it. The kprobes
    test uses this function to insert a probe and test it. But
    it will fail the test if the function is not listed in kallsyms.

    Adding a __used annotation keeps the symbol in the kallsyms table.

    Suggested-by: David Daney <ddaney@caviumnetworks.com>
    Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    ---
    kernel/trace/trace_kprobe.c | 8 ++++++--
    1 files changed, 6 insertions(+), 2 deletions(-)

    diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c
    index f925c45..27d13b3 100644
    --- a/kernel/trace/trace_kprobe.c
    +++ b/kernel/trace/trace_kprobe.c
    @@ -1870,8 +1870,12 @@ fs_initcall(init_kprobe_trace);

    #ifdef CONFIG_FTRACE_STARTUP_TEST

    -static int kprobe_trace_selftest_target(int a1, int a2, int a3,
    - int a4, int a5, int a6)
    +/*
    + * The "__used" keeps gcc from removing the function symbol
    + * from the kallsyms table.
    + */
    +static __used int kprobe_trace_selftest_target(int a1, int a2, int a3,
    + int a4, int a5, int a6)
    {
    return a1 + a2 + a3 + a4 + a5 + a6;
    }
    --
    1.7.4.4



    \
     
     \ /
      Last update: 2011-06-07 23:33    [W:0.023 / U:0.284 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site