lkml.org 
[lkml]   [2013]   [Aug]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH V4 05/13] perf tools: avoid SyS kernel syscall aliases
    Date
    When removing duplicate symbols, prefer to remove
    syscall aliases starting with SyS or compat_SyS.

    A side-effect of that is that it results in slightly
    improved results for the "vmlinux symtab matches kallsyms"
    test.

    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    ---
    tools/perf/util/symbol.c | 17 ++++++++++++++---
    1 file changed, 14 insertions(+), 3 deletions(-)

    diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c
    index b407c53..04300dd 100644
    --- a/tools/perf/util/symbol.c
    +++ b/tools/perf/util/symbol.c
    @@ -87,6 +87,7 @@ static int choose_best_symbol(struct symbol *syma, struct symbol *symb)
    {
    s64 a;
    s64 b;
    + size_t na, nb;

    /* Prefer a symbol with non zero length */
    a = syma->end - syma->start;
    @@ -120,11 +121,21 @@ static int choose_best_symbol(struct symbol *syma, struct symbol *symb)
    else if (a > b)
    return SYMBOL_B;

    - /* If all else fails, choose the symbol with the longest name */
    - if (strlen(syma->name) >= strlen(symb->name))
    + /* Choose the symbol with the longest name */
    + na = strlen(syma->name);
    + nb = strlen(symb->name);
    + if (na > nb)
    return SYMBOL_A;
    - else
    + else if (na < nb)
    + return SYMBOL_B;
    +
    + /* Avoid "SyS" kernel syscall aliases */
    + if (na >= 3 && !strncmp(syma->name, "SyS", 3))
    return SYMBOL_B;
    + if (na >= 10 && !strncmp(syma->name, "compat_SyS", 10))
    + return SYMBOL_B;
    +
    + return SYMBOL_A;
    }

    void symbols__fixup_duplicate(struct rb_root *symbols)
    --
    1.7.11.7


    \
     
     \ /
      Last update: 2013-08-07 15:21    [W:4.083 / U:0.036 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site