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] libbpf: ensure functions with always_inline attribute are inline
Date: Wed, 3 Aug 2022 10:19:35 +0200	[thread overview]
Message-ID: <Yuovl3ycDfflqV9h@krava> (raw)
In-Reply-To: <20220802232741.481145-1-james.hilliard1@gmail.com>

On Tue, Aug 02, 2022 at 05:27:41PM -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
> inline.
> 
> 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>
> ---
>  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..ae67fcee912c 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 inline __attribute__((always_inline)) typeof(name(0))		    \

could you use __always_inline that does exactly that?

jirka

>  ____##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 inline __attribute__((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 inline __attribute__((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 inline __attribute__((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 inline __attribute__((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 inline __attribute__((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 inline __attribute__((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..2bd2d80b3751 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 inline __attribute__((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 inline __attribute__((always_inline)) typeof(name(0))		    \
>  ____##name(struct pt_regs *ctx, ##args)
>  
>  #endif /* __USDT_BPF_H__ */
> -- 
> 2.34.1
> 

  reply	other threads:[~2022-08-03  8:19 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-02 23:27 [PATCH] libbpf: ensure functions with always_inline attribute are inline James Hilliard
2022-08-03  8:19 ` Jiri Olsa [this message]
2022-08-03 15:17   ` James Hilliard

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=Yuovl3ycDfflqV9h@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.