All of lore.kernel.org
 help / color / mirror / Atom feed
From: Steven Rostedt <rostedt@goodmis.org>
To: Giulio Benetti <giulio.benetti@benettiengineering.com>
Cc: linux-trace-devel@vger.kernel.org
Subject: Re: [PATCH v3] Fix build failure due to btf on Linux < 6.0
Date: Sat, 7 Nov 2026 16:29:56 -0500	[thread overview]
Message-ID: <20261107162956.3304797b@fedora> (raw)
In-Reply-To: <20261026162417.646303-1-giulio.benetti@benettiengineering.com>

On Mon, 26 Oct 2026 17:24:17 +0100
Giulio Benetti <giulio.benetti@benettiengineering.com> wrote:

Hi Giulio,

Thanks for the patch.

To make it easy to know which patch is for which library in patchwork,
can you add "libtraceevent" the subject line:

  libtraceevent: Fix build failure due to btf on linux < 6.0

As I work on a repo, I filter out by the subjects and without having it
there the patch may be missed.

> With commit:
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6089fb325cf737eeb2c4d236c94697112ca860da
> enum BTF_KIND_ENUM64 has been firstly introduced and this is the latest
> BTF_KIND_* enumaration to be added to libtraceevent. So let's check
> in runtime, both in Makefile and meson, if BTF_KIND_ENUM64 does exist
> as well as struct btf_enum64 members name_off, val_lo32, val_hi32 to
> make sure the entire enum64 facility is defined and guard for NO_BTF
> selectively in trace-btf.c.
> If it's not there let's disable btf support.
> 
> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
> Co-authored-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
> Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
> ---
> V1->V2:
> * fixed meson check and all bft C source
> V2->V3:
> * check struct parameters other than only BTF_KIND_ENUM64
> ---
>  Makefile        | 30 +++++++++++++++++++++++-------
>  src/meson.build | 14 ++++++++++++++
>  src/trace-btf.c |  7 +++++++
>  3 files changed, 44 insertions(+), 7 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index 8a7a1dd..4b291c0 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -27,6 +27,13 @@ $(call allow-override,PKG_CONFIG,pkg-config)
>  $(call allow-override,LD_SO_CONF_PATH,/etc/ld.so.conf.d/)
>  $(call allow-override,LDCONFIG,ldconfig)
>  
> +# Set compile option CFLAGS
> +ifdef EXTRA_CFLAGS
> +  CFLAGS ?= $(EXTRA_CFLAGS)
> +else
> +  CFLAGS ?= -g -Wall
> +endif
> +
>  EXT = -std=gnu99
>  INSTALL = install
>  
> @@ -37,6 +44,22 @@ INSTALL = install
>  DESTDIR ?=
>  DESTDIR_SQ = '$(subst ','\'',$(DESTDIR))'
>  
> +test-build = $(if $(shell sh -c 'echo "$(1)" | tee /tmp/t.c| \
> +	$(CC) -o /dev/null -x c - > /dev/null 2>&1 && echo y'), $2)
> +
> +define BTF_LATEST_SOURCE
> +#include <linux/btf.h>
> +int main(void) { struct btf_enum64 e = {}; \
> +		 return e.name_off + e.val_lo32 + e.val_hi32 + \
> +			BTF_KIND_ENUM64; }
> +endef
> +
> +BTF_OK := $(call test-build,$(BTF_LATEST_SOURCE),y)
> +
> +ifneq ($(strip $(BTF_OK)), y)
> +CFLAGS += -DNO_BTF
> +endif
> +
>  LP64 := $(shell echo __LP64__ | ${CC} ${CFLAGS} -E -x c - | tail -n 1)
>  ifeq ($(LP64), 1)
>    libdir_relative_temp = lib64
> @@ -123,13 +146,6 @@ INCLUDES = -I. -I $(srctree)/include -I $(EP_HEADERS_DIR) $(CONFIG_INCLUDES)
>  
>  export LIBTRACEEVENT_STATIC LIBTRACEEVENT_SHARED EP_HEADERS_DIR
>  
> -# Set compile option CFLAGS
> -ifdef EXTRA_CFLAGS
> -  CFLAGS := $(EXTRA_CFLAGS)
> -else
> -  CFLAGS := -g -Wall
> -endif
> -
>  LIBS ?= -ldl
>  export LIBS
>  
> diff --git a/src/meson.build b/src/meson.build
> index 3a7a082..0fa5a5f 100644
> --- a/src/meson.build
> +++ b/src/meson.build
> @@ -17,6 +17,20 @@ sources= [
>  cc = meson.get_compiler('c')
>  dl_dep = cc.find_library('dl')
>  
> +btf_enum64_test_code = '''
> +#include <linux/btf.h>
> +int main(void) {
> +    struct btf_enum64 e = {};
> +
> +    return e.name_off + e.val_lo32 + e.val_hi32 +
> +           BTF_KIND_ENUM64;
> +}
> +'''
> +
> +if not cc.compiles(btf_enum64_test_code, name : 'BTF_KIND_ENUM64 check')
> +    add_project_arguments('-DNO_BTF', language : 'c')
> +endif
> +
>  libtraceevent = library(
>      'traceevent',
>      sources,
> diff --git a/src/trace-btf.c b/src/trace-btf.c
> index 2d66e01..f980d58 100644
> --- a/src/trace-btf.c
> +++ b/src/trace-btf.c
> @@ -8,7 +8,9 @@
>  #include <stdlib.h>
>  #include <stdbool.h>
>  
> +#ifndef NO_BTF
>  #include <linux/btf.h>
> +#endif

Instead of adding the #if wrapper above...

>  
>  #include "event-parse.h"
>  #include "event-utils.h"
> @@ -29,6 +31,9 @@ struct tep_btf {
>  	void			*raw_data;
>  };
>  
> +#ifdef NO_BTF
> +void btf_free(struct tep_btf *btf) {}
> +#else

Can you just move the header here?

#include <linux/btf.h>

Thanks!

-- Steve

>  #define REALLOC_SIZE (1 << 10)
>  #define REALLOC_MASK (REALLOC_SIZE - 1)
>  
> @@ -111,6 +116,7 @@ static int add_func(struct tep_btf *btf, struct btf_type *type)
>  
>  static int btf_type_size(struct btf_type *type)
>  {
> +	return -1;
>  	int kind = BTF_INFO_KIND(type->info);
>  	int size = sizeof(*type);
>  
> @@ -665,3 +671,4 @@ int tep_btf_print_args(struct tep_handle *tep, struct trace_seq *s, void *args,
>  	}
>  	return 0;
>  }
> +#endif


  reply	other threads:[~2026-11-07 21:30 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-26 16:24 [PATCH v3] Fix build failure due to btf on Linux < 6.0 Giulio Benetti
2026-11-07 21:29 ` Steven Rostedt [this message]
2026-11-09 10:26   ` [PATCH v4] libtraceevent: " Giulio Benetti

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=20261107162956.3304797b@fedora \
    --to=rostedt@goodmis.org \
    --cc=giulio.benetti@benettiengineering.com \
    --cc=linux-trace-devel@vger.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.