All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jiri Olsa <olsajiri@gmail.com>
To: James Hilliard <james.hilliard1@gmail.com>
Cc: bpf@vger.kernel.org, Alexei Starovoitov <ast@kernel.org>,
	Daniel Borkmann <daniel@iogearbox.net>,
	Andrii Nakryiko <andrii@kernel.org>,
	Martin KaFai Lau <martin.lau@linux.dev>,
	Song Liu <song@kernel.org>, Yonghong Song <yhs@fb.com>,
	John Fastabend <john.fastabend@gmail.com>,
	KP Singh <kpsingh@kernel.org>,
	Stanislav Fomichev <sdf@google.com>, Hao Luo <haoluo@google.com>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2] libbpf: ensure functions with always_inline attribute are inline
Date: Thu, 4 Aug 2022 09:13:21 +0200	[thread overview]
Message-ID: <YutxkVTxtCgVwBiq@krava> (raw)
In-Reply-To: <20220803151403.793024-1-james.hilliard1@gmail.com>

On Wed, Aug 03, 2022 at 09:14:03AM -0600, James Hilliard wrote:
> GCC expects the always_inline attribute to only be set on inline
> functions, as such we should make all functions with this attribute
> use the __always_inline macro which makes the function inline and
> sets the attribute.
> 
> Fixes errors like:
> /home/buildroot/bpf-next/tools/testing/selftests/bpf/tools/include/bpf/bpf_tracing.h:439:1: error: ‘always_inline’ function might not be inlinable [-Werror=attributes]
>   439 | ____##name(unsigned long long *ctx, ##args)
>       | ^~~~
> 
> Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
> ---
> Changes v1 -> v2:
>   - use __always_inline macro

Acked-by: Jiri Olsa <jolsa@kernel.org>

jirka

> ---
>  tools/lib/bpf/bpf_tracing.h | 14 +++++++-------
>  tools/lib/bpf/usdt.bpf.h    |  4 ++--
>  2 files changed, 9 insertions(+), 9 deletions(-)
> 
> diff --git a/tools/lib/bpf/bpf_tracing.h b/tools/lib/bpf/bpf_tracing.h
> index 43ca3aff2292..5fdb93da423b 100644
> --- a/tools/lib/bpf/bpf_tracing.h
> +++ b/tools/lib/bpf/bpf_tracing.h
> @@ -426,7 +426,7 @@ struct pt_regs;
>   */
>  #define BPF_PROG(name, args...)						    \
>  name(unsigned long long *ctx);						    \
> -static __attribute__((always_inline)) typeof(name(0))			    \
> +static __always_inline typeof(name(0))					    \
>  ____##name(unsigned long long *ctx, ##args);				    \
>  typeof(name(0)) name(unsigned long long *ctx)				    \
>  {									    \
> @@ -435,7 +435,7 @@ typeof(name(0)) name(unsigned long long *ctx)				    \
>  	return ____##name(___bpf_ctx_cast(args));			    \
>  	_Pragma("GCC diagnostic pop")					    \
>  }									    \
> -static __attribute__((always_inline)) typeof(name(0))			    \
> +static __always_inline typeof(name(0))					    \
>  ____##name(unsigned long long *ctx, ##args)
>  
>  struct pt_regs;
> @@ -460,7 +460,7 @@ struct pt_regs;
>   */
>  #define BPF_KPROBE(name, args...)					    \
>  name(struct pt_regs *ctx);						    \
> -static __attribute__((always_inline)) typeof(name(0))			    \
> +static __always_inline typeof(name(0))					    \
>  ____##name(struct pt_regs *ctx, ##args);				    \
>  typeof(name(0)) name(struct pt_regs *ctx)				    \
>  {									    \
> @@ -469,7 +469,7 @@ typeof(name(0)) name(struct pt_regs *ctx)				    \
>  	return ____##name(___bpf_kprobe_args(args));			    \
>  	_Pragma("GCC diagnostic pop")					    \
>  }									    \
> -static __attribute__((always_inline)) typeof(name(0))			    \
> +static __always_inline typeof(name(0))					    \
>  ____##name(struct pt_regs *ctx, ##args)
>  
>  #define ___bpf_kretprobe_args0()       ctx
> @@ -484,7 +484,7 @@ ____##name(struct pt_regs *ctx, ##args)
>   */
>  #define BPF_KRETPROBE(name, args...)					    \
>  name(struct pt_regs *ctx);						    \
> -static __attribute__((always_inline)) typeof(name(0))			    \
> +static __always_inline typeof(name(0))					    \
>  ____##name(struct pt_regs *ctx, ##args);				    \
>  typeof(name(0)) name(struct pt_regs *ctx)				    \
>  {									    \
> @@ -540,7 +540,7 @@ static __always_inline typeof(name(0)) ____##name(struct pt_regs *ctx, ##args)
>  #define BPF_KSYSCALL(name, args...)					    \
>  name(struct pt_regs *ctx);						    \
>  extern _Bool LINUX_HAS_SYSCALL_WRAPPER __kconfig;			    \
> -static __attribute__((always_inline)) typeof(name(0))			    \
> +static __always_inline typeof(name(0))					    \
>  ____##name(struct pt_regs *ctx, ##args);				    \
>  typeof(name(0)) name(struct pt_regs *ctx)				    \
>  {									    \
> @@ -555,7 +555,7 @@ typeof(name(0)) name(struct pt_regs *ctx)				    \
>  		return ____##name(___bpf_syscall_args(args));		    \
>  	_Pragma("GCC diagnostic pop")					    \
>  }									    \
> -static __attribute__((always_inline)) typeof(name(0))			    \
> +static __always_inline typeof(name(0))					    \
>  ____##name(struct pt_regs *ctx, ##args)
>  
>  #define BPF_KPROBE_SYSCALL BPF_KSYSCALL
> diff --git a/tools/lib/bpf/usdt.bpf.h b/tools/lib/bpf/usdt.bpf.h
> index 4f2adc0bd6ca..fdfd235e52c4 100644
> --- a/tools/lib/bpf/usdt.bpf.h
> +++ b/tools/lib/bpf/usdt.bpf.h
> @@ -232,7 +232,7 @@ long bpf_usdt_cookie(struct pt_regs *ctx)
>   */
>  #define BPF_USDT(name, args...)						    \
>  name(struct pt_regs *ctx);						    \
> -static __attribute__((always_inline)) typeof(name(0))			    \
> +static __always_inline typeof(name(0))					    \
>  ____##name(struct pt_regs *ctx, ##args);				    \
>  typeof(name(0)) name(struct pt_regs *ctx)				    \
>  {									    \
> @@ -241,7 +241,7 @@ typeof(name(0)) name(struct pt_regs *ctx)				    \
>          return ____##name(___bpf_usdt_args(args));			    \
>          _Pragma("GCC diagnostic pop")					    \
>  }									    \
> -static __attribute__((always_inline)) typeof(name(0))			    \
> +static __always_inline typeof(name(0))					    \
>  ____##name(struct pt_regs *ctx, ##args)
>  
>  #endif /* __USDT_BPF_H__ */
> -- 
> 2.34.1
> 

  reply	other threads:[~2022-08-04  7:13 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-03 15:14 [PATCH v2] libbpf: ensure functions with always_inline attribute are inline James Hilliard
2022-08-04  7:13 ` Jiri Olsa [this message]
2022-08-04 21:50 ` patchwork-bot+netdevbpf

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=YutxkVTxtCgVwBiq@krava \
    --to=olsajiri@gmail.com \
    --cc=andrii@kernel.org \
    --cc=ast@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=haoluo@google.com \
    --cc=james.hilliard1@gmail.com \
    --cc=john.fastabend@gmail.com \
    --cc=kpsingh@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=martin.lau@linux.dev \
    --cc=sdf@google.com \
    --cc=song@kernel.org \
    --cc=yhs@fb.com \
    /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.