Linux Trace Development
 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox