mirror-linux/tools/perf
James Clark 08bdd70974 perf build: Fix library not found error when using CSLIBS
[ Upstream commit 1feece2780 ]

-L only specifies the search path for libraries directly provided in the
link line with -l. Because -lopencsd isn't specified, it's only linked
because it's a dependency of -lopencsd_c_api. Dependencies like this are
resolved using the default system search paths or -rpath-link=... rather
than -L. This means that compilation only works if OpenCSD is installed
to the system rather than provided with the CSLIBS (-L) option.

This could be fixed by adding -Wl,-rpath-link=$(CSLIBS) but that is less
conventional than just adding -lopencsd to the link line so that it uses
-L. -lopencsd seems to have been removed in commit ed17b19149
("perf tools: Drop requirement for libstdc++.so for libopencsd check")
because it was thought that there was a chance compilation would work
even if it didn't exist, but I think that only applies to libstdc++ so
there is no harm to add it back. libopencsd.so and libopencsd_c_api.so
would always exist together.

Testing
=======

The following scenarios now all work:

 * Cross build with OpenCSD installed
 * Cross build using CSLIBS=...
 * Native build with OpenCSD installed
 * Native build using CSLIBS=...
 * Static cross build with OpenCSD installed
 * Static cross build with CSLIBS=...

Committer testing:

  ⬢[acme@toolbox perf-tools]$ alias m
  alias m='make -k BUILD_BPF_SKEL=1 CORESIGHT=1 O=/tmp/build/perf-tools -C tools/perf install-bin && git status && perf test python ;  perf record -o /dev/null sleep 0.01 ; perf stat --null sleep 0.01'
  ⬢[acme@toolbox perf-tools]$ ldd ~/bin/perf | grep csd
  	libopencsd_c_api.so.1 => /lib64/libopencsd_c_api.so.1 (0x00007fd49c44e000)
  	libopencsd.so.1 => /lib64/libopencsd.so.1 (0x00007fd49bd56000)
  ⬢[acme@toolbox perf-tools]$ cat /etc/redhat-release
  Fedora release 36 (Thirty Six)
  ⬢[acme@toolbox perf-tools]$

Fixes: ed17b19149 ("perf tools: Drop requirement for libstdc++.so for libopencsd check")
Reported-by: Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
Signed-off-by: James Clark <james.clark@arm.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Tested-by: Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Uwe Kleine-König <uwe@kleine-koenig.org>
Cc: coresight@lists.linaro.org
Closes: https://lore.kernel.org/linux-arm-kernel/56905d7a-a91e-883a-b707-9d5f686ba5f1@arm.com/
Link: https://lore.kernel.org/all/36cc4dc6-bf4b-1093-1c0a-876e368af183@kleine-koenig.org/
Link: https://lore.kernel.org/r/20230707154546.456720-1-james.clark@arm.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-07-27 08:50:39 +02:00
..
Documentation perf intel-pt: Do not try to queue auxtrace data on pipe 2023-03-10 09:33:26 +01:00
arch perf tool x86: Fix perf_env memory leak 2023-07-19 16:21:38 +02:00
bench parisc: Align parisc MADV_XXX constants with all other architectures 2023-01-14 10:33:40 +01:00
dlfilters
examples/bpf
include
jvmti
pmu-events perf vendor events power9: Remove UTF-8 characters from JSON files 2023-05-17 11:53:39 +02:00
python
scripts perf scripts intel-pt-events.py: Fix IPC output for Python 2 2023-05-17 11:53:39 +02:00
tests perf probe: Add test for regression introduced by switch to die_get_decl_file() 2023-07-27 08:50:24 +02:00
trace tools headers uapi: Sync linux/stat.h with the kernel sources 2022-10-25 17:40:48 -03:00
ui perf tools: Fix "kernel lock contention analysis" test by not printing warnings in quiet mode 2022-12-31 13:32:44 +01:00
util perf dwarf-aux: Fix off-by-one in die_get_varname() 2023-07-19 16:21:38 +02:00
.gitignore perf tools: Add the include/perf/ directory to .gitignore 2022-11-08 18:54:41 -03:00
Build
CREDITS
MANIFEST
Makefile
Makefile.config perf build: Fix library not found error when using CSLIBS 2023-07-27 08:50:39 +02:00
Makefile.perf
builtin-annotate.c perf tools: Make quiet mode consistent between tools 2022-12-31 13:33:07 +01:00
builtin-bench.c perf bench: Add missing setlocale() call to allow usage of %'d style formatting 2023-07-19 16:21:36 +02:00
builtin-buildid-cache.c
builtin-buildid-list.c
builtin-c2c.c
builtin-config.c
builtin-daemon.c
builtin-data.c
builtin-diff.c perf tools: Make quiet mode consistent between tools 2022-12-31 13:33:07 +01:00
builtin-evlist.c
builtin-ftrace.c perf ftrace latency: Remove unnecessary "--" from --use-nsec option 2023-06-09 10:34:02 +02:00
builtin-help.c
builtin-inject.c perf inject: Fix --buildid-all not to eat up MMAP2 2023-03-17 08:50:14 +01:00
builtin-kallsyms.c
builtin-kmem.c perf kmem: Support field "node" in evsel__process_alloc_event() coping with recent tracepoint restructuring 2023-01-18 11:58:31 +01:00
builtin-kvm.c
builtin-kwork.c
builtin-list.c perf list: Fix metricgroups title message 2022-10-14 12:21:42 -03:00
builtin-lock.c perf lock contention: Fix core dump related to not finding the "__sched_text_end" symbol on s/390 2023-01-12 12:02:30 +01:00
builtin-mem.c perf mem: Fix -C option behavior for perf mem record 2022-10-14 12:21:34 -03:00
builtin-probe.c perf probe: Check -v and -q options in the right place 2022-12-31 13:33:08 +01:00
builtin-record.c perf record: Fix "read LOST count failed" msg with sample read 2023-05-17 11:53:39 +02:00
builtin-report.c perf tools: Make quiet mode consistent between tools 2022-12-31 13:33:07 +01:00
builtin-sched.c
builtin-script.c perf script: Fix allocation of evsel->priv related to per-event dump files 2023-07-19 16:21:37 +02:00
builtin-stat.c perf stat: Separate bperf from bpf_profiler 2023-05-17 11:53:41 +02:00
builtin-timechart.c
builtin-top.c
builtin-trace.c perf build: Properly guard libbpf includes 2023-01-18 11:58:31 +01:00
builtin-version.c
builtin.h
check-headers.sh tools headers: Update the copy of x86's memcpy_64.S used in 'perf bench' 2022-10-25 17:40:48 -03:00
command-list.txt
design.txt
perf-archive.sh
perf-completion.sh perf tools: Fix auto-complete on aarch64 2023-03-10 09:33:27 +01:00
perf-iostat.sh
perf-read-vdso.c
perf-sys.h
perf.c
perf.h