All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] perf build: Fix library not found error when using CSLIBS
@ 2023-07-07 15:45 James Clark
  2023-07-11  8:28 ` Pandey, Radhey Shyam
  0 siblings, 1 reply; 3+ messages in thread
From: James Clark @ 2023-07-07 15:45 UTC (permalink / raw)
  To: linux-perf-users, radhey.shyam.pandey
  Cc: coresight, James Clark, Peter Zijlstra, Ingo Molnar,
	Arnaldo Carvalho de Melo, Mark Rutland, Alexander Shishkin,
	Jiri Olsa, Namhyung Kim, Ian Rogers, Adrian Hunter,
	Uwe Kleine-König, linux-kernel

-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 ed17b1914978 ("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=...

Reported-by: Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
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/
Fixes: ed17b1914978 ("perf tools: Drop requirement for libstdc++.so for libopencsd check")
Signed-off-by: James Clark <james.clark@arm.com>
---
 tools/perf/Makefile.config | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config
index 0609c19caabd..c5db0de49868 100644
--- a/tools/perf/Makefile.config
+++ b/tools/perf/Makefile.config
@@ -155,9 +155,9 @@ FEATURE_CHECK_LDFLAGS-libcrypto = -lcrypto
 ifdef CSINCLUDES
   LIBOPENCSD_CFLAGS := -I$(CSINCLUDES)
 endif
-OPENCSDLIBS := -lopencsd_c_api
+OPENCSDLIBS := -lopencsd_c_api -lopencsd
 ifeq ($(findstring -static,${LDFLAGS}),-static)
-  OPENCSDLIBS += -lopencsd -lstdc++
+  OPENCSDLIBS += -lstdc++
 endif
 ifdef CSLIBS
   LIBOPENCSD_LDFLAGS := -L$(CSLIBS)
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* RE: [PATCH] perf build: Fix library not found error when using CSLIBS
  2023-07-07 15:45 [PATCH] perf build: Fix library not found error when using CSLIBS James Clark
@ 2023-07-11  8:28 ` Pandey, Radhey Shyam
  2023-07-11 14:46   ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 3+ messages in thread
From: Pandey, Radhey Shyam @ 2023-07-11  8:28 UTC (permalink / raw)
  To: James Clark, linux-perf-users
  Cc: coresight, Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Mark Rutland, Alexander Shishkin, Jiri Olsa, Namhyung Kim,
	Ian Rogers, Adrian Hunter, Uwe Kleine-König, linux-kernel,
	Sarangi, Anirudha

> -----Original Message-----
> From: James Clark <james.clark@arm.com>
> Sent: Friday, July 7, 2023 9:16 PM
> To: linux-perf-users@vger.kernel.org; Pandey, Radhey Shyam
> <radhey.shyam.pandey@amd.com>
> Cc: coresight@lists.linaro.org; James Clark <james.clark@arm.com>; Peter
> Zijlstra <peterz@infradead.org>; Ingo Molnar <mingo@redhat.com>;
> Arnaldo Carvalho de Melo <acme@kernel.org>; Mark Rutland
> <mark.rutland@arm.com>; Alexander Shishkin
> <alexander.shishkin@linux.intel.com>; Jiri Olsa <jolsa@kernel.org>;
> Namhyung Kim <namhyung@kernel.org>; Ian Rogers <irogers@google.com>;
> Adrian Hunter <adrian.hunter@intel.com>; Uwe Kleine-König <uwe@kleine-
> koenig.org>; linux-kernel@vger.kernel.org
> Subject: [PATCH] perf build: Fix library not found error when using CSLIBS
> 
> -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 ed17b1914978 ("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=...
> 
> Reported-by: Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
> 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/
> Fixes: ed17b1914978 ("perf tools: Drop requirement for libstdc++.so for
> libopencsd check")
> Signed-off-by: James Clark <james.clark@arm.com>
> ---
>  tools/perf/Makefile.config | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config index
> 0609c19caabd..c5db0de49868 100644
> --- a/tools/perf/Makefile.config
> +++ b/tools/perf/Makefile.config
> @@ -155,9 +155,9 @@ FEATURE_CHECK_LDFLAGS-libcrypto = -lcrypto  ifdef
> CSINCLUDES
>    LIBOPENCSD_CFLAGS := -I$(CSINCLUDES)
>  endif
> -OPENCSDLIBS := -lopencsd_c_api
> +OPENCSDLIBS := -lopencsd_c_api -lopencsd
>  ifeq ($(findstring -static,${LDFLAGS}),-static)
> -  OPENCSDLIBS += -lopencsd -lstdc++
> +  OPENCSDLIBS += -lstdc++
>  endif
>  ifdef CSLIBS
>    LIBOPENCSD_LDFLAGS := -L$(CSLIBS)
> --
> 2.34.1

Tested-by: Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
Cross compiled for aarch64 on x86_64.

make ARCH=arm64 NO_LIBELF=1 NO_JVMTI=1 VF=1 CORESIGHT=1 -C  tools/perf

file <snip>/linux-xlnx/tools/perf/perf
perf: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), 
dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, 
BuildID[sha1]=ef7c524338577b14e7c0f914d882dec4d26e93a2, 
for GNU/Linux 3.14.0, with debug_info, not stripped

Thanks,
Radhey


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] perf build: Fix library not found error when using CSLIBS
  2023-07-11  8:28 ` Pandey, Radhey Shyam
@ 2023-07-11 14:46   ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 3+ messages in thread
From: Arnaldo Carvalho de Melo @ 2023-07-11 14:46 UTC (permalink / raw)
  To: Pandey, Radhey Shyam
  Cc: James Clark, linux-perf-users, coresight, Peter Zijlstra,
	Ingo Molnar, Mark Rutland, Alexander Shishkin, Jiri Olsa,
	Namhyung Kim, Ian Rogers, Adrian Hunter, Uwe Kleine-König,
	linux-kernel, Sarangi, Anirudha

Em Tue, Jul 11, 2023 at 08:28:31AM +0000, Pandey, Radhey Shyam escreveu:
> > -----Original Message-----
> > From: James Clark <james.clark@arm.com>
> > Sent: Friday, July 7, 2023 9:16 PM
> > To: linux-perf-users@vger.kernel.org; Pandey, Radhey Shyam
> > <radhey.shyam.pandey@amd.com>
> > Cc: coresight@lists.linaro.org; James Clark <james.clark@arm.com>; Peter
> > Zijlstra <peterz@infradead.org>; Ingo Molnar <mingo@redhat.com>;
> > Arnaldo Carvalho de Melo <acme@kernel.org>; Mark Rutland
> > <mark.rutland@arm.com>; Alexander Shishkin
> > <alexander.shishkin@linux.intel.com>; Jiri Olsa <jolsa@kernel.org>;
> > Namhyung Kim <namhyung@kernel.org>; Ian Rogers <irogers@google.com>;
> > Adrian Hunter <adrian.hunter@intel.com>; Uwe Kleine-König <uwe@kleine-
> > koenig.org>; linux-kernel@vger.kernel.org
> > Subject: [PATCH] perf build: Fix library not found error when using CSLIBS
> > 
> > -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 ed17b1914978 ("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=...
> > 
> > Reported-by: Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
> > 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/
> > Fixes: ed17b1914978 ("perf tools: Drop requirement for libstdc++.so for
> > libopencsd check")
> > Signed-off-by: James Clark <james.clark@arm.com>
> > ---
> >  tools/perf/Makefile.config | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> > 
> > diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config index
> > 0609c19caabd..c5db0de49868 100644
> > --- a/tools/perf/Makefile.config
> > +++ b/tools/perf/Makefile.config
> > @@ -155,9 +155,9 @@ FEATURE_CHECK_LDFLAGS-libcrypto = -lcrypto  ifdef
> > CSINCLUDES
> >    LIBOPENCSD_CFLAGS := -I$(CSINCLUDES)
> >  endif
> > -OPENCSDLIBS := -lopencsd_c_api
> > +OPENCSDLIBS := -lopencsd_c_api -lopencsd
> >  ifeq ($(findstring -static,${LDFLAGS}),-static)
> > -  OPENCSDLIBS += -lopencsd -lstdc++
> > +  OPENCSDLIBS += -lstdc++
> >  endif
> >  ifdef CSLIBS
> >    LIBOPENCSD_LDFLAGS := -L$(CSLIBS)
> > --
> > 2.34.1
> 
> Tested-by: Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
> Cross compiled for aarch64 on x86_64.
> 
> make ARCH=arm64 NO_LIBELF=1 NO_JVMTI=1 VF=1 CORESIGHT=1 -C  tools/perf
> 
> file <snip>/linux-xlnx/tools/perf/perf
> perf: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), 
> dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, 
> BuildID[sha1]=ef7c524338577b14e7c0f914d882dec4d26e93a2, 
> for GNU/Linux 3.14.0, with debug_info, not stripped

Thanks for reporting and testing, applied to perf-tools. I see no
problems in my common case which is:

⬢[acme@toolbox perf-tools]$ 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]$

⬢[acme@toolbox perf-tools]$ ldd ~/bin/perf | grep csd
	libopencsd_c_api.so.1 => /lib64/libopencsd_c_api.so.1 (0x00007f9c012ea000)
	libopencsd.so.1 => /lib64/libopencsd.so.1 (0x00007f9c00556000)
⬢[acme@toolbox perf-tools]$

- Arnaldo

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2023-07-11 14:46 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-07-07 15:45 [PATCH] perf build: Fix library not found error when using CSLIBS James Clark
2023-07-11  8:28 ` Pandey, Radhey Shyam
2023-07-11 14:46   ` Arnaldo Carvalho de Melo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.