• He Kuang's avatar
    perf probe: Fix failure to add multiple probes without debuginfo · 0560a0c4
    He Kuang authored
    Perf tries to find probe function addresses from map when debuginfo
    could not be found.
    
    To the first added function, the value of ref_reloc_sym was set in
    maps__set_kallsyms_ref_reloc_sym() and can be obtained from
    host_machine->kmaps->maps. After that, new maps are added to
    host_machine->kmaps->maps in dso__load_kcore(), all these new added maps
    do not have a valid ref_reloc_sym.
    
    When adding a second function, get_target_map() may get a map without
    valid ref_reloc_sym, and raise the error "Relocated base symbol is not
    found".
    
    Fix this by using kernel_get_ref_reloc_sym() to get ref_reloc_sym.
    
    This problem can be reproduced as following:
    
      $ perf probe --add='sys_write' --add='sys_open'
      Relocated base symbol is not found!
        Error: Failed to add events.
    
    After this patch:
    
      $ perf probe --add='sys_write' --add='sys_open'
      Added new event:
        probe:sys_write      (on sys_write)
    
      You can now use it in all perf tools, such as:
    
          perf record -e probe:sys_write -aR sleep 1
    
      Added new event:
        probe:sys_open       (on sys_open)
    
      You can now use it in all perf tools, such as:
    
          perf record -e probe:sys_open -aR sleep 1
    Signed-off-by: default avatarHe Kuang <hekuang@huawei.com>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Tested-by: default avatarMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Wang Nan <wangnan0@huawei.com>
    Link: http://lkml.kernel.org/r/1426816616-2394-1-git-send-email-hekuang@huawei.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    0560a0c4
probe-event.c 64.2 KB