Linux Perf Users
 help / color / mirror / Atom feed
* [PATCH] perf build: build BPF skeletons with fPIC
@ 2025-12-03  3:55 Jon Kohler
  2025-12-03 16:43 ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 3+ messages in thread
From: Jon Kohler @ 2025-12-03  3:55 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Namhyung Kim, Mark Rutland, Alexander Shishkin, Jiri Olsa,
	Ian Rogers, Adrian Hunter, James Clark, Tomas Glozar,
	linux-perf-users, linux-kernel, bpf
  Cc: Jon Kohler, stable

Fix Makefile.perf to ensure that bpf skeletons are built with fPIC.

When building with BUILD_BPF_SKEL=1, bpf_skel's was not getting built
with fPIC, seeing compilation failures like:

/usr/bin/ld: /builddir/.../tools/perf/util/bpf_skel/.tmp/bootstrap/main.o:
  relocation R_X86_64_32 against `.rodata.str1.8' can not be used when
  making a PIE object; recompile with -fPIE

Bisected down to 6.18 commit a39516805992 ("tools build: Don't assume
libtracefs-devel is always available").

Fixes: a39516805992 ("tools build: Don't assume libtracefs-devel is always available")
Cc: stable@vger.kernel.org
Signed-off-by: Jon Kohler <jon@nutanix.com>
---
 tools/perf/Makefile.perf | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf
index 02f87c49801f..4557c2e89e88 100644
--- a/tools/perf/Makefile.perf
+++ b/tools/perf/Makefile.perf
@@ -1211,7 +1211,7 @@ endif
 
 $(BPFTOOL): | $(SKEL_TMP_OUT)
 	$(Q)CFLAGS= $(MAKE) -C ../bpf/bpftool \
-		OUTPUT=$(SKEL_TMP_OUT)/ bootstrap
+		EXTRA_CFLAGS="-fPIC" OUTPUT=$(SKEL_TMP_OUT)/ bootstrap
 
 # Paths to search for a kernel to generate vmlinux.h from.
 VMLINUX_BTF_ELF_PATHS ?= $(if $(O),$(O)/vmlinux)			\
-- 
2.43.0


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

* Re: [PATCH] perf build: build BPF skeletons with fPIC
  2025-12-03  3:55 [PATCH] perf build: build BPF skeletons with fPIC Jon Kohler
@ 2025-12-03 16:43 ` Arnaldo Carvalho de Melo
  2025-12-03 16:48   ` Jon Kohler
  0 siblings, 1 reply; 3+ messages in thread
From: Arnaldo Carvalho de Melo @ 2025-12-03 16:43 UTC (permalink / raw)
  To: Jon Kohler
  Cc: Peter Zijlstra, Ingo Molnar, Namhyung Kim, Mark Rutland,
	Alexander Shishkin, Jiri Olsa, Ian Rogers, Adrian Hunter,
	James Clark, Tomas Glozar, linux-perf-users, linux-kernel, bpf,
	stable

On Tue, Dec 02, 2025 at 08:55:26PM -0700, Jon Kohler wrote:
> Fix Makefile.perf to ensure that bpf skeletons are built with fPIC.
> 
> When building with BUILD_BPF_SKEL=1, bpf_skel's was not getting built
> with fPIC, seeing compilation failures like:
> 
> /usr/bin/ld: /builddir/.../tools/perf/util/bpf_skel/.tmp/bootstrap/main.o:
>   relocation R_X86_64_32 against `.rodata.str1.8' can not be used when
>   making a PIE object; recompile with -fPIE
> 
> Bisected down to 6.18 commit a39516805992 ("tools build: Don't assume
> libtracefs-devel is always available").
> 
> Fixes: a39516805992 ("tools build: Don't assume libtracefs-devel is always available")

How come, this patch is just:

diff --git a/tools/build/Makefile.feature b/tools/build/Makefile.feature
index 9c1a69d26f5121fd..531f8fc4f7df9943 100644
--- a/tools/build/Makefile.feature
+++ b/tools/build/Makefile.feature
@@ -83,7 +83,6 @@ FEATURE_TESTS_BASIC :=                  \
         libpython                       \
         libslang                        \
         libtraceevent                   \
-        libtracefs                      \
         libcpupower                     \
         pthread-attr-setaffinity-np     \
         pthread-barrier                \
diff --git a/tools/build/feature/test-all.c b/tools/build/feature/test-all.c
index e1847db6f8e63750..2df593593b6ec15e 100644
--- a/tools/build/feature/test-all.c
+++ b/tools/build/feature/test-all.c
@@ -150,10 +150,6 @@
 # include "test-libtraceevent.c"
 #undef main

-#define main main_test_libtracefs
-# include "test-libtracefs.c"
-#undef main
-
 int main(int argc, char *argv[])
 {
        main_test_libpython();
@@ -187,7 +183,6 @@ int main(int argc, char *argv[])
        main_test_reallocarray();
        main_test_libzstd();
        main_test_libtraceevent();
-       main_test_libtracefs();

        return 0;
}


----

And your patch is touching building bpftool? Seems very unrelated :-\

- Arnaldo

> Cc: stable@vger.kernel.org
> Signed-off-by: Jon Kohler <jon@nutanix.com>
> ---
>  tools/perf/Makefile.perf | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf
> index 02f87c49801f..4557c2e89e88 100644
> --- a/tools/perf/Makefile.perf
> +++ b/tools/perf/Makefile.perf
> @@ -1211,7 +1211,7 @@ endif
>  
>  $(BPFTOOL): | $(SKEL_TMP_OUT)
>  	$(Q)CFLAGS= $(MAKE) -C ../bpf/bpftool \
> -		OUTPUT=$(SKEL_TMP_OUT)/ bootstrap
> +		EXTRA_CFLAGS="-fPIC" OUTPUT=$(SKEL_TMP_OUT)/ bootstrap
>  
>  # Paths to search for a kernel to generate vmlinux.h from.
>  VMLINUX_BTF_ELF_PATHS ?= $(if $(O),$(O)/vmlinux)			\
> -- 
> 2.43.0

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

* Re: [PATCH] perf build: build BPF skeletons with fPIC
  2025-12-03 16:43 ` Arnaldo Carvalho de Melo
@ 2025-12-03 16:48   ` Jon Kohler
  0 siblings, 0 replies; 3+ messages in thread
From: Jon Kohler @ 2025-12-03 16:48 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Peter Zijlstra, Ingo Molnar, Namhyung Kim, Mark Rutland,
	Alexander Shishkin, Jiri Olsa, Ian Rogers, Adrian Hunter,
	James Clark, Tomas Glozar, linux-perf-users@vger.kernel.org,
	linux-kernel@vger.kernel.org, bpf@vger.kernel.org,
	stable@vger.kernel.org



> On Dec 3, 2025, at 11:43 AM, Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
> 
> On Tue, Dec 02, 2025 at 08:55:26PM -0700, Jon Kohler wrote:
>> Fix Makefile.perf to ensure that bpf skeletons are built with fPIC.
>> 
>> When building with BUILD_BPF_SKEL=1, bpf_skel's was not getting built
>> with fPIC, seeing compilation failures like:
>> 
>> /usr/bin/ld: /builddir/.../tools/perf/util/bpf_skel/.tmp/bootstrap/main.o:
>>  relocation R_X86_64_32 against `.rodata.str1.8' can not be used when
>>  making a PIE object; recompile with -fPIE
>> 
>> Bisected down to 6.18 commit a39516805992 ("tools build: Don't assume
>> libtracefs-devel is always available").
>> 
>> Fixes: a39516805992 ("tools build: Don't assume libtracefs-devel is always available")
> 
> How come, this patch is just:

It doesn’t make sense to me, but I checked the results of
the bisection by hand and, hand-to-god, reverting commit
a39516805992 unbreaks our build every single time.
Putting a39516805992 back breaks our build 100% of the time.

> 
> diff --git a/tools/build/Makefile.feature b/tools/build/Makefile.feature
> index 9c1a69d26f5121fd..531f8fc4f7df9943 100644
> --- a/tools/build/Makefile.feature
> +++ b/tools/build/Makefile.feature
> @@ -83,7 +83,6 @@ FEATURE_TESTS_BASIC :=                  \
>         libpython                       \
>         libslang                        \
>         libtraceevent                   \
> -        libtracefs                      \
>         libcpupower                     \
>         pthread-attr-setaffinity-np     \
>         pthread-barrier                \
> diff --git a/tools/build/feature/test-all.c b/tools/build/feature/test-all.c
> index e1847db6f8e63750..2df593593b6ec15e 100644
> --- a/tools/build/feature/test-all.c
> +++ b/tools/build/feature/test-all.c
> @@ -150,10 +150,6 @@
> # include "test-libtraceevent.c"
> #undef main
> 
> -#define main main_test_libtracefs
> -# include "test-libtracefs.c"
> -#undef main
> -
> int main(int argc, char *argv[])
> {
>        main_test_libpython();
> @@ -187,7 +183,6 @@ int main(int argc, char *argv[])
>        main_test_reallocarray();
>        main_test_libzstd();
>        main_test_libtraceevent();
> -       main_test_libtracefs();
> 
>        return 0;
> }
> 
> 
> ----
> 
> And your patch is touching building bpftool? Seems very unrelated :-\
> 
> - Arnaldo
> 
>> Cc: stable@vger.kernel.org
>> Signed-off-by: Jon Kohler <jon@nutanix.com>
>> ---
>> tools/perf/Makefile.perf | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>> 
>> diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf
>> index 02f87c49801f..4557c2e89e88 100644
>> --- a/tools/perf/Makefile.perf
>> +++ b/tools/perf/Makefile.perf
>> @@ -1211,7 +1211,7 @@ endif
>> 
>> $(BPFTOOL): | $(SKEL_TMP_OUT)
>> $(Q)CFLAGS= $(MAKE) -C ../bpf/bpftool \
>> - OUTPUT=$(SKEL_TMP_OUT)/ bootstrap
>> + EXTRA_CFLAGS="-fPIC" OUTPUT=$(SKEL_TMP_OUT)/ bootstrap
>> 
>> # Paths to search for a kernel to generate vmlinux.h from.
>> VMLINUX_BTF_ELF_PATHS ?= $(if $(O),$(O)/vmlinux) \
>> -- 
>> 2.43.0


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

end of thread, other threads:[~2025-12-03 16:48 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-12-03  3:55 [PATCH] perf build: build BPF skeletons with fPIC Jon Kohler
2025-12-03 16:43 ` Arnaldo Carvalho de Melo
2025-12-03 16:48   ` Jon Kohler

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox