• Jiri Olsa's avatar
    perf tests: Use arch__compare_symbol_names to compare symbols · ab6e9a99
    Jiri Olsa authored
    The symbol search called by machine__find_kernel_symbol_by_name is using
    internally arch__compare_symbol_names function to compare 2 symbol
    names, because different archs have different ways of comparing symbols.
    Mostly for skipping '.' prefixes and similar.
    
    In test 1 when we try to find matching symbols in kallsyms and vmlinux,
    by address and by symbol name. When either is found we compare the pair
    symbol names  by simple strcmp, which is not good enough for reasons
    explained in previous paragraph.
    
    On powerpc this can cause lockup, because even thought we found the
    pair, the compared names are different and don't match simple strcmp.
    Following code path is executed, that leads to lockup:
    
       - we find the pair in kallsyms by sym->start
    next_pair:
       - we compare the names and it fails
       - we find the pair by sym->name
       - the pair addresses match so we call goto next_pair
         because we assume the names match in this case
    Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
    Tested-by: default avatarNaveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Acked-by: default avatarNaveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Fixes: 031b84c4 ("perf probe ppc: Enable matching against dot symbols automatically")
    Link: http://lkml.kernel.org/r/20180215122635.24029-10-jolsa@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    ab6e9a99
vmlinux-kallsyms.c 6.87 KB