• He Kuang's avatar
    perf probe: Fix bug with global variables handling · d13855ef
    He Kuang authored
    There are missing curly braces which causes find_variable() return wrong
    value when probing with global variables.
    
    This problem can be reproduced as following:
    
      $ perf probe -v --add='generic_perform_write global_variable_for_test'
      ...
      Try to find probe point from debuginfo.
      Probe point found: generic_perform_write+0
      Searching 'global_variable_for_test' variable in context.
      An error occurred in debuginfo analysis (-2).
        Error: Failed to add events. Reason: No such file or directory (Code: -2)
    
    After this patch:
    
      $ perf probe -v --add='generic_perform_write global_variable_for_test'
      ...
      Converting variable global_variable_for_test into trace event.
      global_variable_for_test type is int.
      Found 1 probe_trace_events.
      Opening /sys/kernel/debug/tracing/kprobe_events write=1
      Added new event:
      Writing event: p:probe/generic_perform_write _stext+1237464
      global_variable_for_test=@global_variable_for_test+0:s32
        probe:generic_perform_write (on generic_perform_write with
        global_variable_for_test)
    
      You can now use it in all perf tools, such as:
    
          perf record -e probe:generic_perform_write -aR sleep 1
    Signed-off-by: default avatarHe Kuang <hekuang@huawei.com>
    Acked-by: default avatarMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Wang Nan <wangnan0@huawei.com>
    Link: http://lkml.kernel.org/r/1429949338-18678-1-git-send-email-hekuang@huawei.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    d13855ef
probe-finder.c 41.5 KB