__always_inline can cause build error on musl libc. The fix patch has submitted but not merged yet[1]. To build perf tool with musl libc, <linux/stddef.h> inclusion is necessary and it should be included before perf_event.h.
from /usr/include/linux/byteorder/little_endian.h:13, from /usr/include/asm/byteorder.h:23, from tools/include/uapi/linux/perf_event.h:20, from arch/arm64/util/../../arm/util/pmu.c:9:
/usr/include/linux/swab.h:171:8: error: unknown type name '__always_inline' 171 | static __always_inline __u16 __swab16p(const __u16 *p) | ^~~~~~~~~~~~~~~
[1]: https://lkml.org/lkml/2018/9/13/78 Cc: Mathieu Poirier mathieu.poirier@linaro.org Cc: Suzuki K Poulose suzuki.poulose@arm.com Cc: Mike Leach mike.leach@linaro.org Cc: Leo Yan leo.yan@linaro.org Cc: John Garry john.garry@huawei.com Cc: Will Deacon will@kernel.org Cc: Peter Zijlstra peterz@infradead.org Cc: Ingo Molnar mingo@redhat.com Cc: Arnaldo Carvalho de Melo acme@kernel.org Cc: Mark Rutland mark.rutland@arm.com Cc: Jiri Olsa jolsa@redhat.com Cc: Namhyung Kim namhyung@kernel.org Cc: Khem Raj raj.khem@gmail.com Signed-off-by: Chanho Park chanho61.park@samsung.com --- tools/perf/arch/arm/util/pmu.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/tools/perf/arch/arm/util/pmu.c b/tools/perf/arch/arm/util/pmu.c index bbc297a7e2e3..4c0357e8c0ab 100644 --- a/tools/perf/arch/arm/util/pmu.c +++ b/tools/perf/arch/arm/util/pmu.c @@ -6,6 +6,9 @@
#include <string.h> #include <linux/coresight-pmu.h> +#if !defined(__GLIBC__) +#include <linux/stddef.h> +#endif #include <linux/perf_event.h> #include <linux/string.h>
On Sun, Dec 06, 2020 at 11:45:27PM +0900, Chanho Park wrote:
__always_inline can cause build error on musl libc. The fix patch has submitted but not merged yet[1]. To build perf tool with musl libc, <linux/stddef.h> inclusion is necessary and it should be included before perf_event.h.
from /usr/include/linux/byteorder/little_endian.h:13, from /usr/include/asm/byteorder.h:23, from tools/include/uapi/linux/perf_event.h:20, from arch/arm64/util/../../arm/util/pmu.c:9:
/usr/include/linux/swab.h:171:8: error: unknown type name '__always_inline' 171 | static __always_inline __u16 __swab16p(const __u16 *p) | ^~~~~~~~~~~~~~~
Cc: Mathieu Poirier mathieu.poirier@linaro.org Cc: Suzuki K Poulose suzuki.poulose@arm.com Cc: Mike Leach mike.leach@linaro.org Cc: Leo Yan leo.yan@linaro.org Cc: John Garry john.garry@huawei.com Cc: Will Deacon will@kernel.org Cc: Peter Zijlstra peterz@infradead.org Cc: Ingo Molnar mingo@redhat.com Cc: Arnaldo Carvalho de Melo acme@kernel.org Cc: Mark Rutland mark.rutland@arm.com Cc: Jiri Olsa jolsa@redhat.com Cc: Namhyung Kim namhyung@kernel.org Cc: Khem Raj raj.khem@gmail.com Signed-off-by: Chanho Park chanho61.park@samsung.com
tools/perf/arch/arm/util/pmu.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/tools/perf/arch/arm/util/pmu.c b/tools/perf/arch/arm/util/pmu.c index bbc297a7e2e3..4c0357e8c0ab 100644 --- a/tools/perf/arch/arm/util/pmu.c +++ b/tools/perf/arch/arm/util/pmu.c @@ -6,6 +6,9 @@ #include <string.h> #include <linux/coresight-pmu.h> +#if !defined(__GLIBC__) +#include <linux/stddef.h> +#endif
Looks like other files just include this unconditionally, but have a comment explaining why. See util/branch.h and util/event.h. Maybe we should do the same for util/pmu.h, which is already included here?
Will
Hi Will,
Looks like other files just include this unconditionally, but have a comment explaining why. See util/branch.h and util/event.h. Maybe we should do the same for util/pmu.h, which is already included here?
I found below files which perf includes <linux/perf_event.h>. Instead of doing same for all, we'd better put this only for tools/include/uapi/linux/perf_event.h.
--- a/tools/include/uapi/linux/perf_event.h +++ b/tools/include/uapi/linux/perf_event.h @@ -17,6 +17,9 @@
#include <linux/types.h> #include <linux/ioctl.h> +#if !defined(__GLIBC__) +#include <linux/stddef.h> +#endif #include <asm/byteorder.h>
/*
tools/perf/arch/arm/util/pmu.c:#include <linux/perf_event.h> tools/perf/arch/x86/util/pmu.c:#include <linux/perf_event.h> tools/perf/arch/x86/util/tsc.c:#include <linux/perf_event.h> tools/perf/lib/include/internal/evsel.h:#include <linux/perf_event.h> tools/perf/lib/include/perf/event.h:#include <linux/perf_event.h> tools/perf/lib/tests/test-evlist.c:#include <linux/perf_event.h> tools/perf/lib/tests/test-evsel.c:#include <linux/perf_event.h> tools/perf/tests/hists_common.c:#include <linux/perf_event.h> tools/perf/util/auxtrace.c:#include <linux/perf_event.h> tools/perf/util/auxtrace.h:#include <linux/perf_event.h> tools/perf/util/branch.h:#include <linux/perf_event.h> tools/perf/util/event.c:#include <linux/perf_event.h> tools/perf/util/evsel.c:#include <linux/perf_event.h> tools/perf/util/evsel.h:#include <linux/perf_event.h> tools/perf/util/header.h:#include <linux/perf_event.h> tools/perf/util/mem-events.h:#include <linux/perf_event.h> tools/perf/util/namespaces.h:#include <linux/perf_event.h> tools/perf/util/record.h:#include <linux/perf_event.h> tools/perf/util/session.h:#include <linux/perf_event.h> tools/perf/util/pmu.h:#include <linux/perf_event.h> tools/perf/util/synthetic-events.c:#include <linux/perf_event.h> tools/perf/util/parse-events.h:#include <linux/perf_event.h> tools/perf/util/perf_event_attr_fprintf.c:#include <linux/perf_event.h>
Best Regards, Chanho Park
Hi Chanho,
On Mon, Dec 7, 2020 at 8:58 PM Chanho Park chanho61.park@samsung.com wrote:
Hi Will,
Looks like other files just include this unconditionally, but have a comment explaining why. See util/branch.h and util/event.h. Maybe we should do the same for util/pmu.h, which is already included here?
I found below files which perf includes <linux/perf_event.h>. Instead of doing same for all, we'd better put this only for tools/include/uapi/linux/perf_event.h.
It's a copy of the kernel header, I'm not sure we want to add something there.
Thanks, Namhyung
On Mon, Dec 07, 2020 at 09:31:06PM +0900, Namhyung Kim wrote:
Hi Chanho,
On Mon, Dec 7, 2020 at 8:58 PM Chanho Park chanho61.park@samsung.com wrote:
Hi Will,
Looks like other files just include this unconditionally, but have a comment explaining why. See util/branch.h and util/event.h. Maybe we should do the same for util/pmu.h, which is already included here?
I found below files which perf includes <linux/perf_event.h>. Instead of doing same for all, we'd better put this only for tools/include/uapi/linux/perf_event.h.
It's a copy of the kernel header, I'm not sure we want to add something there.
right, we want to copy that directly from kernel uapi so let's not do any changes in here
jirka
Hi Namhyung and Jiri,
-----Original Message----- From: Jiri Olsa jolsa@redhat.com Sent: Monday, December 7, 2020 10:29 PM To: Namhyung Kim namhyung@kernel.org Cc: Chanho Park chanho61.park@samsung.com; Will Deacon
Chanho Park parkch98@gmail.com; mathieu.poirier@linaro.org; suzuki.poulose@arm.com; coresight@lists.linaro.org; linux-arm- kernel@lists.infradead.org; linux-kernel linux-kernel@vger.kernel.org; Mike Leach mike.leach@linaro.org; Leo Yan leo.yan@linaro.org; John Garry john.garry@huawei.com; Peter Zijlstra peterz@infradead.org; Ingo Molnar mingo@redhat.com; Arnaldo Carvalho de Melo acme@kernel.org; Mark Rutland mark.rutland@arm.com; Khem Raj raj.khem@gmail.com Subject: Re: [PATCH] perf arm pmu: fix build error on MUSL libc
On Mon, Dec 07, 2020 at 09:31:06PM +0900, Namhyung Kim wrote:
Hi Chanho,
On Mon, Dec 7, 2020 at 8:58 PM Chanho Park chanho61.park@samsung.com
wrote:
Hi Will,
Looks like other files just include this unconditionally, but have a comment explaining why. See util/branch.h and util/event.h. Maybe we should do the same for util/pmu.h, which is already
included here?
I found below files which perf includes <linux/perf_event.h>. Instead of doing same for all, we'd better put this only for tools/include/uapi/linux/perf_event.h.
It's a copy of the kernel header, I'm not sure we want to add something
there.
right, we want to copy that directly from kernel uapi so let's not do any changes in here
I tried to modify it from include/uapi/linux/perf_event.h but it didn't work. And then, I found perf tool tried to refer the header from tools/include/ directory. I should go include/uapi first and sync the change to tools/ directory. I'll re-spin this patch.
Best Regard, Chanho Park