From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Adrian Hunter <adrian.hunter@intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>, Namhyung Kim <namhyung@kernel.org>,
Ian Rogers <irogers@google.com>,
linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org
Subject: Re: [PATCH 1/5] perf tools: Add get_unaligned_leNN()
Date: Thu, 26 Oct 2023 17:08:46 -0300 [thread overview]
Message-ID: <ZTrHTmyc50XNsOVP@kernel.org> (raw)
In-Reply-To: <7c5b626c-1de9-4c12-a781-e44985b4a797@intel.com>
Em Thu, Oct 26, 2023 at 07:09:26PM +0300, Adrian Hunter escreveu:
> On 26/10/23 16:44, Arnaldo Carvalho de Melo wrote:
> > Em Thu, Oct 05, 2023 at 04:38:05PM -0300, Arnaldo Carvalho de Melo escreveu:
> >> Em Thu, Oct 05, 2023 at 10:04:47PM +0300, Adrian Hunter escreveu:
> >>> Add get_unaligned_le16(), get_unaligned_le32 and get_unaligned_le64, same
> >>> as include/asm-generic/unaligned.h.
> >>>
> >>> Use diagnostic pragmas to ignore -Wpacked used by perf build.
> >>
> >> Can we get the tools copy of include/asm-generic/unaligned.h closer and
> >> have it in check-headers.sh?
> >
> > And this is not building when cross building to mips, mips64 and mipsel
> > on debian:experimental:
> >
> > In file included from util/intel-pt-decoder/intel-pt-pkt-decoder.c:10:
> > /git/perf-6.6.0-rc1/tools/include/asm-generic/unaligned.h: In function 'get_unaligned_le16':
> > /git/perf-6.6.0-rc1/tools/include/asm-generic/unaligned.h:13:29: error: packed attribute causes inefficient alignment for 'x' [-Werror=attributes]
>
> So I guess another diagnostic pragma is needed, perhaps the following works?
>
> #pragma GCC diagnostic ignored "-Wattributes"
I'll try it.
- Arnaldo
>
> > 13 | const struct { type x; } __packed *__pptr = (typeof(__pptr))(ptr); \
> > | ^
> > /git/perf-6.6.0-rc1/tools/include/asm-generic/unaligned.h:27:28: note: in expansion of macro '__get_unaligned_t'
> > 27 | return le16_to_cpu(__get_unaligned_t(__le16, p));
> > | ^~~~~~~~~~~~~~~~~
> > /git/perf-6.6.0-rc1/tools/include/asm-generic/unaligned.h: In function 'get_unaligned_le32':
> > /git/perf-6.6.0-rc1/tools/include/asm-generic/unaligned.h:13:29: error: packed attribute causes inefficient alignment for 'x' [-Werror=attributes]
> > 13 | const struct { type x; } __packed *__pptr = (typeof(__pptr))(ptr); \
> > | ^
> > /git/perf-6.6.0-rc1/tools/include/asm-generic/unaligned.h:32:28: note: in expansion of macro '__get_unaligned_t'
> > 32 | return le32_to_cpu(__get_unaligned_t(__le32, p));
> > | ^~~~~~~~~~~~~~~~~
> >
> >
> > Ditto for some other distros when cross building on ubuntu:18.04
> >
> > MKDIR /tmp/build/perf/util/perf-regs-arch/
> > In file included from /usr/sparc64-linux-gnu/include/bits/byteswap.h:34:0,
> > from /usr/sparc64-linux-gnu/include/endian.h:60,
> > from util/intel-pt-decoder/intel-pt-pkt-decoder.c:9:
> > /git/perf-6.6.0-rc1/tools/include/asm-generic/unaligned.h: In function 'get_unaligned_le16':
> > /git/perf-6.6.0-rc1/tools/include/asm-generic/unaligned.h:13:22: error: packed attribute causes inefficient alignment for 'x' [-Werror=attributes]
> > const struct { type x; } __packed *__pptr = (typeof(__pptr))(ptr); \
> > ^
> > /git/perf-6.6.0-rc1/tools/include/asm-generic/unaligned.h:27:21: note: in expansion of macro '__get_unaligned_t'
> > return le16_to_cpu(__get_unaligned_t(__le16, p));
> > ^~~~~~~~~~~~~~~~~
> >
> > 37 14.17 ubuntu:18.04-x-arm : FAIL gcc version 7.5.0 (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04)
> > 38 13.56 ubuntu:18.04-x-arm64 : FAIL gcc version 7.5.0 (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04)
> > 42 12.70 ubuntu:18.04-x-riscv64 : FAIL gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)
> > 44 13.95 ubuntu:18.04-x-sh4 : FAIL gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)
> > 45 13.08 ubuntu:18.04-x-sparc64 : FAIL gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)
> >
> >> - Arnaldo
> >>
> >>> Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
> >>> ---
> >>> tools/include/asm-generic/unaligned.h | 20 ++++++++++++++++++++
> >>> 1 file changed, 20 insertions(+)
> >>>
> >>> diff --git a/tools/include/asm-generic/unaligned.h b/tools/include/asm-generic/unaligned.h
> >>> index 47387c607035..9140bb4e16c6 100644
> >>> --- a/tools/include/asm-generic/unaligned.h
> >>> +++ b/tools/include/asm-generic/unaligned.h
> >>> @@ -6,6 +6,9 @@
> >>> #ifndef __TOOLS_LINUX_ASM_GENERIC_UNALIGNED_H
> >>> #define __TOOLS_LINUX_ASM_GENERIC_UNALIGNED_H
> >>>
> >>> +#pragma GCC diagnostic push
> >>> +#pragma GCC diagnostic ignored "-Wpacked"
> >>> +
> >>> #define __get_unaligned_t(type, ptr) ({ \
> >>> const struct { type x; } __packed *__pptr = (typeof(__pptr))(ptr); \
> >>> __pptr->x; \
> >>> @@ -19,5 +22,22 @@
> >>> #define get_unaligned(ptr) __get_unaligned_t(typeof(*(ptr)), (ptr))
> >>> #define put_unaligned(val, ptr) __put_unaligned_t(typeof(*(ptr)), (val), (ptr))
> >>>
> >>> +static inline u16 get_unaligned_le16(const void *p)
> >>> +{
> >>> + return le16_to_cpu(__get_unaligned_t(__le16, p));
> >>> +}
> >>> +
> >>> +static inline u32 get_unaligned_le32(const void *p)
> >>> +{
> >>> + return le32_to_cpu(__get_unaligned_t(__le32, p));
> >>> +}
> >>> +
> >>> +static inline u64 get_unaligned_le64(const void *p)
> >>> +{
> >>> + return le64_to_cpu(__get_unaligned_t(__le64, p));
> >>> +}
> >>> +
> >>> +#pragma GCC diagnostic pop
> >>> +
> >>> #endif /* __TOOLS_LINUX_ASM_GENERIC_UNALIGNED_H */
> >>>
> >>> --
> >>> 2.34.1
> >>>
> >>
> >> --
> >>
> >> - Arnaldo
> >
>
--
- Arnaldo
next prev parent reply other threads:[~2023-10-26 20:08 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-05 19:04 [PATCH 0/5] perf intel-pt: Use of get_unaligned_le16() etc Adrian Hunter
2023-10-05 19:04 ` [PATCH 1/5] perf tools: Add get_unaligned_leNN() Adrian Hunter
2023-10-05 19:38 ` Arnaldo Carvalho de Melo
2023-10-10 14:29 ` Adrian Hunter
2023-10-26 13:44 ` Arnaldo Carvalho de Melo
2023-10-26 16:09 ` Adrian Hunter
2023-10-26 20:08 ` Arnaldo Carvalho de Melo [this message]
2023-11-09 19:34 ` Arnaldo Carvalho de Melo
2023-10-05 19:04 ` [PATCH 2/5] perf intel-pt: Simplify intel_pt_get_vmcs() Adrian Hunter
2023-10-05 19:04 ` [PATCH 3/5] perf intel-pt: Use existing definitions of le16_to_cpu() etc Adrian Hunter
2023-10-05 19:04 ` [PATCH 4/5] perf intel-pt: Use get_unaligned_le16() etc Adrian Hunter
2023-10-05 19:04 ` [PATCH 5/5] perf intel-pt: Prefer get_unaligned_le64 to memcpy_le64 Adrian Hunter
2023-10-10 14:22 ` [PATCH] perf tools: Add unaligned.h to check-headers.sh Adrian Hunter
2023-10-10 15:28 ` Ian Rogers
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZTrHTmyc50XNsOVP@kernel.org \
--to=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=irogers@google.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=namhyung@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.