• Changbin Du's avatar
    kallsyms: ignore all local labels prefixed by '.L' · d4c85864
    Changbin Du authored
    The llvm compiler can generate lots of local labels ('.LBB', '.Ltmpxxx',
    '.L__unnamed_xx', etc.). These symbols usually are useless for debugging.
    And they might overlap with handwritten symbols.
    
    Before this change, a dumpstack shows a local symbol for epc:
    [    0.040341][    T0] Hardware name: riscv-virtio,qemu (DT)
    [    0.040376][    T0] epc : .LBB6_14+0x22/0x6a
    [    0.040452][    T0]  ra : restore_all+0x12/0x6e
    
    The simple solution is that we can ignore all local labels prefixed by '.L'.
    For handwritten symbols which need to be preserved should drop the '.L'
    prefix.
    
    After this change, the C defined symbol is shown so we can locate the
    problematical code immediately:
    [    0.035795][    T0] Hardware name: riscv-virtio,qemu (DT)
    [    0.036332][    T0] epc : trace_hardirqs_on+0x54/0x13c
    [    0.036567][    T0]  ra : restore_all+0x12/0x6e
    Signed-off-by: default avatarChangbin Du <changbin.du@gmail.com>
    Reviewed-by: default avatarNathan Chancellor <nathan@kernel.org>
    Reviewed-by: default avatarNick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
    d4c85864
kallsyms.c 18.1 KB