linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] libbpf bpf_helpers: Use __builtin_offsetof for offsetof
@ 2020-07-20  6:17 Ian Rogers
  2020-07-20  6:21 ` Andrii Nakryiko
  0 siblings, 1 reply; 3+ messages in thread
From: Ian Rogers @ 2020-07-20  6:17 UTC (permalink / raw)
  To: Alexei Starovoitov, Daniel Borkmann, Martin KaFai Lau, Song Liu,
	Yonghong Song, Andrii Nakryiko, John Fastabend, KP Singh, netdev,
	bpf, linux-kernel
  Cc: Stanislav Fomichev, Ian Rogers

The non-builtin route for offsetof has a dependency on size_t from
stdlib.h/stdint.h that is undeclared and may break targets.
The offsetof macro in bpf_helpers may disable the same macro in other
headers that have a #ifdef offsetof guard. Rather than add additional
dependencies improve the offsetof macro declared here to use the
builtin that is available since llvm 3.7 (the first with a BPF backend).

Signed-off-by: Ian Rogers <irogers@google.com>
---
 tools/lib/bpf/bpf_helpers.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/lib/bpf/bpf_helpers.h b/tools/lib/bpf/bpf_helpers.h
index a510d8ed716f..bc14db706b88 100644
--- a/tools/lib/bpf/bpf_helpers.h
+++ b/tools/lib/bpf/bpf_helpers.h
@@ -40,7 +40,7 @@
  * Helper macro to manipulate data structures
  */
 #ifndef offsetof
-#define offsetof(TYPE, MEMBER)  ((size_t)&((TYPE *)0)->MEMBER)
+#define offsetof(TYPE, MEMBER)  __builtin_offsetof(TYPE, MEMBER)
 #endif
 #ifndef container_of
 #define container_of(ptr, type, member)				\
-- 
2.28.0.rc0.105.gf9edc3c819-goog


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

* Re: [PATCH v2] libbpf bpf_helpers: Use __builtin_offsetof for offsetof
  2020-07-20  6:17 [PATCH v2] libbpf bpf_helpers: Use __builtin_offsetof for offsetof Ian Rogers
@ 2020-07-20  6:21 ` Andrii Nakryiko
  2020-07-21 19:26   ` Alexei Starovoitov
  0 siblings, 1 reply; 3+ messages in thread
From: Andrii Nakryiko @ 2020-07-20  6:21 UTC (permalink / raw)
  To: Ian Rogers
  Cc: Alexei Starovoitov, Daniel Borkmann, Martin KaFai Lau, Song Liu,
	Yonghong Song, Andrii Nakryiko, John Fastabend, KP Singh,
	Networking, bpf, open list, Stanislav Fomichev

On Sun, Jul 19, 2020 at 11:18 PM Ian Rogers <irogers@google.com> wrote:
>
> The non-builtin route for offsetof has a dependency on size_t from
> stdlib.h/stdint.h that is undeclared and may break targets.
> The offsetof macro in bpf_helpers may disable the same macro in other
> headers that have a #ifdef offsetof guard. Rather than add additional
> dependencies improve the offsetof macro declared here to use the
> builtin that is available since llvm 3.7 (the first with a BPF backend).
>
> Signed-off-by: Ian Rogers <irogers@google.com>
> ---

Acked-by: Andrii Nakryiko <andriin@fb.com>

>  tools/lib/bpf/bpf_helpers.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tools/lib/bpf/bpf_helpers.h b/tools/lib/bpf/bpf_helpers.h
> index a510d8ed716f..bc14db706b88 100644
> --- a/tools/lib/bpf/bpf_helpers.h
> +++ b/tools/lib/bpf/bpf_helpers.h
> @@ -40,7 +40,7 @@
>   * Helper macro to manipulate data structures
>   */
>  #ifndef offsetof
> -#define offsetof(TYPE, MEMBER)  ((size_t)&((TYPE *)0)->MEMBER)
> +#define offsetof(TYPE, MEMBER)  __builtin_offsetof(TYPE, MEMBER)
>  #endif
>  #ifndef container_of
>  #define container_of(ptr, type, member)                                \
> --
> 2.28.0.rc0.105.gf9edc3c819-goog
>

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

* Re: [PATCH v2] libbpf bpf_helpers: Use __builtin_offsetof for offsetof
  2020-07-20  6:21 ` Andrii Nakryiko
@ 2020-07-21 19:26   ` Alexei Starovoitov
  0 siblings, 0 replies; 3+ messages in thread
From: Alexei Starovoitov @ 2020-07-21 19:26 UTC (permalink / raw)
  To: Andrii Nakryiko
  Cc: Ian Rogers, Alexei Starovoitov, Daniel Borkmann,
	Martin KaFai Lau, Song Liu, Yonghong Song, Andrii Nakryiko,
	John Fastabend, KP Singh, Networking, bpf, open list,
	Stanislav Fomichev

On Sun, Jul 19, 2020 at 11:21 PM Andrii Nakryiko
<andrii.nakryiko@gmail.com> wrote:
>
> On Sun, Jul 19, 2020 at 11:18 PM Ian Rogers <irogers@google.com> wrote:
> >
> > The non-builtin route for offsetof has a dependency on size_t from
> > stdlib.h/stdint.h that is undeclared and may break targets.
> > The offsetof macro in bpf_helpers may disable the same macro in other
> > headers that have a #ifdef offsetof guard. Rather than add additional
> > dependencies improve the offsetof macro declared here to use the
> > builtin that is available since llvm 3.7 (the first with a BPF backend).
> >
> > Signed-off-by: Ian Rogers <irogers@google.com>
> > ---
>
> Acked-by: Andrii Nakryiko <andriin@fb.com>

Applied. Thanks

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

end of thread, other threads:[~2020-07-21 19:26 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-20  6:17 [PATCH v2] libbpf bpf_helpers: Use __builtin_offsetof for offsetof Ian Rogers
2020-07-20  6:21 ` Andrii Nakryiko
2020-07-21 19:26   ` Alexei Starovoitov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).