Hello, This series ensure the build-ids for target binary and debuginfo are matched. If there is a mismatch, it warns user to check the package versions.
To reproduce the problematic environment (on Fedora26), I did following operations; ===== # rpm -q glibc glibc-debuginfo glibc-2.25-12.fc26.x86_64 package glibc-debuginfo is not installed # dnf debuginfo-install glibc [...] Installed: glibc-debuginfo.x86_64 2.25-12.fc26 glibc-debuginfo-common.x86_64 2.25-12.fc26 Complete! # dnf downgrade glibc [...] Downgraded: glibc.x86_64 2.25-6.fc26 glibc-common.x86_64 2.25-6.fc26 glibc-devel.x86_64 2.25-6.fc26 glibc-headers.x86_64 2.25-6.fc26 glibc-langpack-en.x86_64 2.25-6.fc26 libcrypt-nss.x86_64 2.25-6.fc26 Complete! # rpm -q glibc glibc-debuginfo glibc-2.25-6.fc26.x86_64 glibc-debuginfo-2.25-12.fc26.x86_64 ===== OK, so you can see now we have different versions of glibc and glibc-debuginfo. Each debuginfo must be different. With this series, defining new events also warns :) ===== # perf probe -x /usr/lib64/libc-2.25.so -a malloc_get_state\\@GLIBC_2.2.5 WARN: There is a build-id mismatch between /usr/lib/debug/usr/lib64/libc-2.25.so.debug and /usr/lib64/libc-2.25.so Please check your system's debuginfo files for mismatches, e.g. check the versions for the target package and debuginfo package. Added new event: probe_libc:malloc_get_state (on malloc_get_state@GLIBC_2.2.5 in /usr/lib64/libc-2.25.so) You can now use it in all perf tools, such as: perf record -e probe_libc:malloc_get_state -aR sleep 1 ===== And listing up events warns. ===== # perf probe -l | more WARN: There is a build-id mismatch between /usr/lib/debug/usr/lib64/libc-2.25.so.debug and /usr/lib64/libc-2.25.so Please check your system's debuginfo files for mismatches, e.g. check the versions for the target package and debuginfo package. probe_libc:malloc_get_state (on malloc_get_state@GLIBC_2.2.5 in /usr/lib64/libc-2.25.so) ===== With [1/2], this warning messages repeated on same target (glibc). To suppress this, [2/2] introduces no-debuginfo blacklist to skip it 2nd time as below. ===== # perf probe -l | more WARN: There is a build-id mismatch between /usr/lib/debug/usr/lib64/libc-2.25.so.debug and /usr/lib64/libc-2.25.so Please check your system's debuginfo files for mismatches, e.g. check the versions for the target package and debuginfo package. probe_libc:malloc_get_state (on malloc_get_state@GLIBC_2.2.5 in /usr/lib64/libc-2.25.so) probe_libc:malloc_get_state_1 (on malloc_get_state@GLIBC_2.2.5 in /usr/lib64/libc-2.25.so) probe_libc:malloc_get_state_2 (on malloc_get_state@GLIBC_2.2.5 in /usr/lib64/libc-2.25.so) ===== Arnaldo, would this match to your request? Thank you, --- Masami Hiramatsu (2): perf-probe: Ensure debuginfo's build-id is correct perf-probe: Skip searching debuginfo if we know no debuginfo tools/perf/util/probe-finder.c | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) -- Masami Hiramatsu (Linaro Ltd.) <mhira...@kernel.org>