• Adrian Hunter's avatar
    perf symbols: Slightly improve module file executable section mappings · 94a830d7
    Adrian Hunter authored
    Currently perf does not record module section addresses except for
    the .text section. In general that means perf cannot get module section
    mappings correct (except for .text) when loading symbols from a kernel
    module file. (Note using --kcore does not have this issue)
    
    Improve that situation slightly by identifying executable sections that
    use the same mapping as the .text section. That happens when an
    executable section comes directly after the .text section, both in memory
    and on file, something that can be determined by following the same layout
    rules used by the kernel, refer kernel layout_sections(). Note whether
    that happens is somewhat arbitrary, so this is not a final solution.
    
    Example from tracing a virtual machine process:
    
     Before:
    
      $ perf script | grep unknown
             CPU 0/KVM    1718   203.511270:     318341 cpu-cycles:P:  ffffffffc13e8a70 [unknown] (/lib/modules/6.7.2-local/kernel/arch/x86/kvm/kvm-intel.ko)
      $ perf script -vvv 2>&1 >/dev/null | grep kvm.intel | grep 'noinstr.text\|ffff'
      Map: 0-7e0 41430 [kvm_intel].noinstr.text
      Map: ffffffffc13a7000-ffffffffc1421000 a0 /lib/modules/6.7.2-local/kernel/arch/x86/kvm/kvm-intel.ko
    
     After:
    
      $ perf script | grep 203.511270
             CPU 0/KVM    1718   203.511270:     318341 cpu-cycles:P:  ffffffffc13e8a70 vmx_vmexit+0x0 (/lib/modules/6.7.2-local/kernel/arch/x86/kvm/kvm-intel.ko)
      $ perf script -vvv 2>&1 >/dev/null | grep kvm.intel | grep 'noinstr.text\|ffff'
      Map: ffffffffc13a7000-ffffffffc1421000 a0 /lib/modules/6.7.2-local/kernel/arch/x86/kvm/kvm-intel.ko
    Reported-by: default avatarLike Xu <like.xu.linux@gmail.com>
    Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
    Acked-by: default avatarNamhyung Kim <namhyung@kernel.org>
    Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
    Link: https://lore.kernel.org/r/20240208085326.13432-3-adrian.hunter@intel.com
    94a830d7
symbol-elf.c 67.8 KB