linux-uconsole/tools/perf
Namhyung Kim 38ab04186f perf tools: Allow build-id with trailing zeros
commit 4a86d41404 upstream.

Currently perf saves a build-id with size but old versions assumes the
size of 20.  In case the build-id is less than 20 (like for MD5), it'd
fill the rest with 0s.

I saw a problem when old version of perf record saved a binary in the
build-id cache and new version of perf reads the data.  The symbols
should be read from the build-id cache (as the path no longer has the
same binary) but it failed due to mismatch in the build-id.

  symsrc__init: build id mismatch for /home/namhyung/.debug/.build-id/53/e4c2f42a4c61a2d632d92a72afa08f00000000/elf.

The build-id event in the data has 20 byte build-ids, but it saw a
different size (16) when it reads the build-id of the elf file in the
build-id cache.

  $ readelf -n ~/.debug/.build-id/53/e4c2f42a4c61a2d632d92a72afa08f00000000/elf

  Displaying notes found in: .note.gnu.build-id
    Owner                Data size 	Description
    GNU                  0x00000010	NT_GNU_BUILD_ID (unique build ID bitstring)
      Build ID: 53e4c2f42a4c61a2d632d92a72afa08f

Let's fix this by allowing trailing zeros if the size is different.

Fixes: 39be8d0115 ("perf tools: Pass build_id object to dso__build_id_equal()")
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Acked-by: Jiri Olsa <jolsa@redhat.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lore.kernel.org/lkml/20210910224630.1084877-1-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-09-26 14:08:57 +02:00
..
arch perf tools: Fix arm64 build error with gcc-11 2021-09-03 10:09:29 +02:00
bench perf bench inject-buildid: Handle writen() errors 2021-09-22 12:28:04 +02:00
Documentation perf c2c: Update documentation for metrics reorganization 2020-10-15 12:02:12 -03:00
examples/bpf
include/bpf
jvmti perf jvmti: Remove redundant jitdump line table entries 2020-05-29 16:51:38 -03:00
pmu-events perf jevents: Fix getting maximum number of fds 2021-06-03 09:00:39 +02:00
python tweewide: Fix most Shebang lines 2021-05-22 11:40:55 +02:00
scripts perf scripts python: exported-sql-viewer.py: Fix warning display 2021-06-03 09:00:28 +02:00
tests perf test: Fix bpf test sample mismatch reporting 2021-09-26 14:08:57 +02:00
trace perf beauty: Update copy of linux/socket.h with the kernel sources 2021-06-23 14:42:54 +02:00
ui perf hists browser: Increase size of 'buf' in perf_evsel__hists_browse() 2020-11-03 09:11:45 -03:00
util perf tools: Allow build-id with trailing zeros 2021-09-26 14:08:57 +02:00
.gitignore
Build
builtin-annotate.c perf evsel: Rename perf_evsel__resort*() to evsel__resort*() 2020-05-28 10:03:24 -03:00
builtin-bench.c perf bench: Add build-id injection benchmark 2020-10-13 10:59:42 -03:00
builtin-buildid-cache.c perf tools: Pass build_id object to build_id__sprintf() 2020-10-14 08:46:22 -03:00
builtin-buildid-list.c
builtin-c2c.c perf c2c: Add metrics "RMT Load Hit" 2020-10-15 09:34:51 -03:00
builtin-config.c
builtin-data.c perf data: Add support to store time of day in CTF data conversion 2020-08-06 09:43:37 -03:00
builtin-diff.c perf diff: Fix error return value in __cmd_diff() 2020-11-27 14:21:23 -03:00
builtin-evlist.c perf evsel: Rename perf_evsel__fprintf() to evsel__fprintf() 2020-05-28 10:03:24 -03:00
builtin-ftrace.c perf ftrace: Fix access to pid in array when setting a pid filter 2021-05-07 11:04:31 +02:00
builtin-help.c
builtin-inject.c perf inject: Close inject.output on exit 2021-07-28 14:35:48 +02:00
builtin-kallsyms.c
builtin-kmem.c perf kmem: Pass additional arguments to 'perf record' 2020-07-10 09:37:55 -03:00
builtin-kvm.c perf evlist: Fix the class prefix for 'struct evlist' 'add' evsel methods 2020-06-22 16:28:09 -03:00
builtin-list.c perf list: Remove dead code in argument check 2020-09-09 11:12:10 -03:00
builtin-lock.c perf lock: Don't free "lock_seq_stat" if read_count isn't zero 2020-11-12 17:55:41 -03:00
builtin-mem.c perf c2c: Fix 'perf c2c record -e list' to show the default events used 2020-05-28 10:03:25 -03:00
builtin-probe.c perf probe: Do not show the skipped events 2020-05-28 10:03:24 -03:00
builtin-record.c perf record: Fix continue profiling after draining the buffer 2021-03-04 11:38:09 +01:00
builtin-report.c perf report: Free generated help strings for sort option 2021-07-28 14:35:35 +02:00
builtin-sched.c perf sched: Fix record failure when CONFIG_SCHEDSTATS is not set 2021-07-28 14:35:36 +02:00
builtin-script.c perf script: Fix memory 'threads' and 'cpus' leaks on exit 2021-07-28 14:35:35 +02:00
builtin-stat.c perf tools: Allow creation of cgroup without open 2020-09-28 09:18:06 -03:00
builtin-timechart.c perf tools: Replace zero-length array with flexible-array 2020-05-28 10:03:27 -03:00
builtin-top.c perf top: Skip side-band event setup if HAVE_LIBBPF_SUPPORT is not set 2020-08-21 10:22:23 -03:00
builtin-trace.c perf trace: Fix segfault when trying to trace events by cgroup 2020-11-03 08:31:03 -03:00
builtin-version.c perf tools: Make GTK2 support opt-in 2020-09-04 17:11:59 -03:00
builtin.h
check-headers.sh perf tools: Separate the checking of headers only used to build beautification tables 2020-09-29 08:56:38 -03:00
command-list.txt
CREDITS
design.txt
Makefile
Makefile.config perf unwind: Do not overwrite FEATURE_CHECK_LDFLAGS-libunwind-{x86,aarch64} 2021-09-22 12:28:04 +02:00
Makefile.perf perf build: Fix ccache usage in $(CC) when generating arch errno table 2021-03-17 17:06:16 +01:00
MANIFEST
perf-archive.sh
perf-completion.sh
perf-read-vdso.c
perf-sys.h perf tests: Call test_attr__open() directly 2020-09-10 11:55:37 -03:00
perf-with-kcore.sh
perf.c
perf.h