[PATCH v2 1/3] perf parse-events: pass parse_state to add_tracepoint

Dominique Martinet posted 3 patches 1 year, 9 months ago
There is a newer version of this series
[PATCH v2 1/3] perf parse-events: pass parse_state to add_tracepoint
Posted by Dominique Martinet 1 year, 9 months ago
The next patch will add another flag to parse_state that we will want to
pass to evsel__nwetp_idx(), so pass the whole parse_state all the way
down instead of giving only the index

Originally-by: Jiri Olsa <jolsa@kernel.org>
Signed-off-by: Dominique Martinet <asmadeus@codewreck.org>
---
 tools/perf/util/parse-events.c | 31 ++++++++++++++++++-------------
 tools/perf/util/parse-events.h |  3 ++-
 tools/perf/util/parse-events.y |  2 +-
 3 files changed, 21 insertions(+), 15 deletions(-)

diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
index 6f8b0fa17689..6e8cba03f0ac 100644
--- a/tools/perf/util/parse-events.c
+++ b/tools/perf/util/parse-events.c
@@ -519,13 +519,14 @@ static void tracepoint_error(struct parse_events_error *e, int err,
 	parse_events_error__handle(e, column, strdup(str), strdup(help));
 }
 
-static int add_tracepoint(struct list_head *list, int *idx,
+static int add_tracepoint(struct parse_events_state *parse_state,
+			  struct list_head *list,
 			  const char *sys_name, const char *evt_name,
 			  struct parse_events_error *err,
 			  struct parse_events_terms *head_config, void *loc_)
 {
 	YYLTYPE *loc = loc_;
-	struct evsel *evsel = evsel__newtp_idx(sys_name, evt_name, (*idx)++);
+	struct evsel *evsel = evsel__newtp_idx(sys_name, evt_name, parse_state->idx++);
 
 	if (IS_ERR(evsel)) {
 		tracepoint_error(err, PTR_ERR(evsel), sys_name, evt_name, loc->first_column);
@@ -544,7 +545,8 @@ static int add_tracepoint(struct list_head *list, int *idx,
 	return 0;
 }
 
-static int add_tracepoint_multi_event(struct list_head *list, int *idx,
+static int add_tracepoint_multi_event(struct parse_events_state *parse_state,
+				      struct list_head *list,
 				      const char *sys_name, const char *evt_name,
 				      struct parse_events_error *err,
 				      struct parse_events_terms *head_config, YYLTYPE *loc)
@@ -578,7 +580,7 @@ static int add_tracepoint_multi_event(struct list_head *list, int *idx,
 
 		found++;
 
-		ret = add_tracepoint(list, idx, sys_name, evt_ent->d_name,
+		ret = add_tracepoint(parse_state, list, sys_name, evt_ent->d_name,
 				     err, head_config, loc);
 	}
 
@@ -592,19 +594,21 @@ static int add_tracepoint_multi_event(struct list_head *list, int *idx,
 	return ret;
 }
 
-static int add_tracepoint_event(struct list_head *list, int *idx,
+static int add_tracepoint_event(struct parse_events_state *parse_state,
+				struct list_head *list,
 				const char *sys_name, const char *evt_name,
 				struct parse_events_error *err,
 				struct parse_events_terms *head_config, YYLTYPE *loc)
 {
 	return strpbrk(evt_name, "*?") ?
-		add_tracepoint_multi_event(list, idx, sys_name, evt_name,
+		add_tracepoint_multi_event(parse_state, list, sys_name, evt_name,
 					   err, head_config, loc) :
-		add_tracepoint(list, idx, sys_name, evt_name,
+		add_tracepoint(parse_state, list, sys_name, evt_name,
 			       err, head_config, loc);
 }
 
-static int add_tracepoint_multi_sys(struct list_head *list, int *idx,
+static int add_tracepoint_multi_sys(struct parse_events_state *parse_state,
+				    struct list_head *list,
 				    const char *sys_name, const char *evt_name,
 				    struct parse_events_error *err,
 				    struct parse_events_terms *head_config, YYLTYPE *loc)
@@ -630,7 +634,7 @@ static int add_tracepoint_multi_sys(struct list_head *list, int *idx,
 		if (!strglobmatch(events_ent->d_name, sys_name))
 			continue;
 
-		ret = add_tracepoint_event(list, idx, events_ent->d_name,
+		ret = add_tracepoint_event(parse_state, list, events_ent->d_name,
 					   evt_name, err, head_config, loc);
 	}
 
@@ -1266,7 +1270,8 @@ static int get_config_chgs(struct perf_pmu *pmu, struct parse_events_terms *head
 	return 0;
 }
 
-int parse_events_add_tracepoint(struct list_head *list, int *idx,
+int parse_events_add_tracepoint(struct parse_events_state *parse_state,
+				struct list_head *list,
 				const char *sys, const char *event,
 				struct parse_events_error *err,
 				struct parse_events_terms *head_config, void *loc_)
@@ -1282,14 +1287,14 @@ int parse_events_add_tracepoint(struct list_head *list, int *idx,
 	}
 
 	if (strpbrk(sys, "*?"))
-		return add_tracepoint_multi_sys(list, idx, sys, event,
+		return add_tracepoint_multi_sys(parse_state, list, sys, event,
 						err, head_config, loc);
 	else
-		return add_tracepoint_event(list, idx, sys, event,
+		return add_tracepoint_event(parse_state, list, sys, event,
 					    err, head_config, loc);
 #else
+	(void)parse_state;
 	(void)list;
-	(void)idx;
 	(void)sys;
 	(void)event;
 	(void)head_config;
diff --git a/tools/perf/util/parse-events.h b/tools/perf/util/parse-events.h
index 809359e8544e..fd55a154ceff 100644
--- a/tools/perf/util/parse-events.h
+++ b/tools/perf/util/parse-events.h
@@ -189,7 +189,8 @@ int parse_events_terms__to_strbuf(const struct parse_events_terms *terms, struct
 int parse_events__modifier_event(struct list_head *list, char *str, bool add);
 int parse_events__modifier_group(struct list_head *list, char *event_mod);
 int parse_events_name(struct list_head *list, const char *name);
-int parse_events_add_tracepoint(struct list_head *list, int *idx,
+int parse_events_add_tracepoint(struct parse_events_state *parse_state,
+				struct list_head *list,
 				const char *sys, const char *event,
 				struct parse_events_error *error,
 				struct parse_events_terms *head_config, void *loc);
diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y
index d70f5d84af92..0bab4263f8e3 100644
--- a/tools/perf/util/parse-events.y
+++ b/tools/perf/util/parse-events.y
@@ -537,7 +537,7 @@ tracepoint_name opt_event_config
 	if (!list)
 		YYNOMEM;
 
-	err = parse_events_add_tracepoint(list, &parse_state->idx, $1.sys, $1.event,
+	err = parse_events_add_tracepoint(parse_state, list, $1.sys, $1.event,
 					error, $2, &@1);
 
 	parse_events_terms__delete($2);

-- 
2.44.0
Re: [PATCH v2 1/3] perf parse-events: pass parse_state to add_tracepoint
Posted by Ian Rogers 1 year, 9 months ago
On Sun, May 5, 2024 at 4:14 AM Dominique Martinet
<asmadeus@codewreck.org> wrote:
>
> The next patch will add another flag to parse_state that we will want to
> pass to evsel__nwetp_idx(), so pass the whole parse_state all the way
> down instead of giving only the index

Nit: evsel__newtp_idx typo
Fwiw, I think the idx value is possibly something to be done away
with. We renumber the evsels here:
https://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools-next.git/tree/tools/perf/util/parse-events.c?h=perf-tools-next#n2077

Reviewed-by: Ian Rogers <irogers@google.com>

Thanks,
Ian

> Originally-by: Jiri Olsa <jolsa@kernel.org>
> Signed-off-by: Dominique Martinet <asmadeus@codewreck.org>
> ---
>  tools/perf/util/parse-events.c | 31 ++++++++++++++++++-------------
>  tools/perf/util/parse-events.h |  3 ++-
>  tools/perf/util/parse-events.y |  2 +-
>  3 files changed, 21 insertions(+), 15 deletions(-)
>
> diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
> index 6f8b0fa17689..6e8cba03f0ac 100644
> --- a/tools/perf/util/parse-events.c
> +++ b/tools/perf/util/parse-events.c
> @@ -519,13 +519,14 @@ static void tracepoint_error(struct parse_events_error *e, int err,
>         parse_events_error__handle(e, column, strdup(str), strdup(help));
>  }
>
> -static int add_tracepoint(struct list_head *list, int *idx,
> +static int add_tracepoint(struct parse_events_state *parse_state,
> +                         struct list_head *list,
>                           const char *sys_name, const char *evt_name,
>                           struct parse_events_error *err,
>                           struct parse_events_terms *head_config, void *loc_)
>  {
>         YYLTYPE *loc = loc_;
> -       struct evsel *evsel = evsel__newtp_idx(sys_name, evt_name, (*idx)++);
> +       struct evsel *evsel = evsel__newtp_idx(sys_name, evt_name, parse_state->idx++);
>
>         if (IS_ERR(evsel)) {
>                 tracepoint_error(err, PTR_ERR(evsel), sys_name, evt_name, loc->first_column);
> @@ -544,7 +545,8 @@ static int add_tracepoint(struct list_head *list, int *idx,
>         return 0;
>  }
>
> -static int add_tracepoint_multi_event(struct list_head *list, int *idx,
> +static int add_tracepoint_multi_event(struct parse_events_state *parse_state,
> +                                     struct list_head *list,
>                                       const char *sys_name, const char *evt_name,
>                                       struct parse_events_error *err,
>                                       struct parse_events_terms *head_config, YYLTYPE *loc)
> @@ -578,7 +580,7 @@ static int add_tracepoint_multi_event(struct list_head *list, int *idx,
>
>                 found++;
>
> -               ret = add_tracepoint(list, idx, sys_name, evt_ent->d_name,
> +               ret = add_tracepoint(parse_state, list, sys_name, evt_ent->d_name,
>                                      err, head_config, loc);
>         }
>
> @@ -592,19 +594,21 @@ static int add_tracepoint_multi_event(struct list_head *list, int *idx,
>         return ret;
>  }
>
> -static int add_tracepoint_event(struct list_head *list, int *idx,
> +static int add_tracepoint_event(struct parse_events_state *parse_state,
> +                               struct list_head *list,
>                                 const char *sys_name, const char *evt_name,
>                                 struct parse_events_error *err,
>                                 struct parse_events_terms *head_config, YYLTYPE *loc)
>  {
>         return strpbrk(evt_name, "*?") ?
> -               add_tracepoint_multi_event(list, idx, sys_name, evt_name,
> +               add_tracepoint_multi_event(parse_state, list, sys_name, evt_name,
>                                            err, head_config, loc) :
> -               add_tracepoint(list, idx, sys_name, evt_name,
> +               add_tracepoint(parse_state, list, sys_name, evt_name,
>                                err, head_config, loc);
>  }
>
> -static int add_tracepoint_multi_sys(struct list_head *list, int *idx,
> +static int add_tracepoint_multi_sys(struct parse_events_state *parse_state,
> +                                   struct list_head *list,
>                                     const char *sys_name, const char *evt_name,
>                                     struct parse_events_error *err,
>                                     struct parse_events_terms *head_config, YYLTYPE *loc)
> @@ -630,7 +634,7 @@ static int add_tracepoint_multi_sys(struct list_head *list, int *idx,
>                 if (!strglobmatch(events_ent->d_name, sys_name))
>                         continue;
>
> -               ret = add_tracepoint_event(list, idx, events_ent->d_name,
> +               ret = add_tracepoint_event(parse_state, list, events_ent->d_name,
>                                            evt_name, err, head_config, loc);
>         }
>
> @@ -1266,7 +1270,8 @@ static int get_config_chgs(struct perf_pmu *pmu, struct parse_events_terms *head
>         return 0;
>  }
>
> -int parse_events_add_tracepoint(struct list_head *list, int *idx,
> +int parse_events_add_tracepoint(struct parse_events_state *parse_state,
> +                               struct list_head *list,
>                                 const char *sys, const char *event,
>                                 struct parse_events_error *err,
>                                 struct parse_events_terms *head_config, void *loc_)
> @@ -1282,14 +1287,14 @@ int parse_events_add_tracepoint(struct list_head *list, int *idx,
>         }
>
>         if (strpbrk(sys, "*?"))
> -               return add_tracepoint_multi_sys(list, idx, sys, event,
> +               return add_tracepoint_multi_sys(parse_state, list, sys, event,
>                                                 err, head_config, loc);
>         else
> -               return add_tracepoint_event(list, idx, sys, event,
> +               return add_tracepoint_event(parse_state, list, sys, event,
>                                             err, head_config, loc);
>  #else
> +       (void)parse_state;
>         (void)list;
> -       (void)idx;
>         (void)sys;
>         (void)event;
>         (void)head_config;
> diff --git a/tools/perf/util/parse-events.h b/tools/perf/util/parse-events.h
> index 809359e8544e..fd55a154ceff 100644
> --- a/tools/perf/util/parse-events.h
> +++ b/tools/perf/util/parse-events.h
> @@ -189,7 +189,8 @@ int parse_events_terms__to_strbuf(const struct parse_events_terms *terms, struct
>  int parse_events__modifier_event(struct list_head *list, char *str, bool add);
>  int parse_events__modifier_group(struct list_head *list, char *event_mod);
>  int parse_events_name(struct list_head *list, const char *name);
> -int parse_events_add_tracepoint(struct list_head *list, int *idx,
> +int parse_events_add_tracepoint(struct parse_events_state *parse_state,
> +                               struct list_head *list,
>                                 const char *sys, const char *event,
>                                 struct parse_events_error *error,
>                                 struct parse_events_terms *head_config, void *loc);
> diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y
> index d70f5d84af92..0bab4263f8e3 100644
> --- a/tools/perf/util/parse-events.y
> +++ b/tools/perf/util/parse-events.y
> @@ -537,7 +537,7 @@ tracepoint_name opt_event_config
>         if (!list)
>                 YYNOMEM;
>
> -       err = parse_events_add_tracepoint(list, &parse_state->idx, $1.sys, $1.event,
> +       err = parse_events_add_tracepoint(parse_state, list, $1.sys, $1.event,
>                                         error, $2, &@1);
>
>         parse_events_terms__delete($2);
>
> --
> 2.44.0
>
Re: [PATCH v2 1/3] perf parse-events: pass parse_state to add_tracepoint
Posted by Arnaldo Carvalho de Melo 1 year, 9 months ago
On Wed, May 08, 2024 at 02:37:16PM -0700, Ian Rogers wrote:
> On Sun, May 5, 2024 at 4:14 AM Dominique Martinet
> <asmadeus@codewreck.org> wrote:
> >
> > The next patch will add another flag to parse_state that we will want to
> > pass to evsel__nwetp_idx(), so pass the whole parse_state all the way
> > down instead of giving only the index
> 
> Nit: evsel__newtp_idx typo
> Fwiw, I think the idx value is possibly something to be done away
> with. We renumber the evsels here:
> https://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools-next.git/tree/tools/perf/util/parse-events.c?h=perf-tools-next#n2077
> 
> Reviewed-by: Ian Rogers <irogers@google.com>

Fixed the typo.

- Arnaldo
 
> Thanks,
> Ian
> 
> > Originally-by: Jiri Olsa <jolsa@kernel.org>
> > Signed-off-by: Dominique Martinet <asmadeus@codewreck.org>
> > ---
> >  tools/perf/util/parse-events.c | 31 ++++++++++++++++++-------------
> >  tools/perf/util/parse-events.h |  3 ++-
> >  tools/perf/util/parse-events.y |  2 +-
> >  3 files changed, 21 insertions(+), 15 deletions(-)
> >
> > diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
> > index 6f8b0fa17689..6e8cba03f0ac 100644
> > --- a/tools/perf/util/parse-events.c
> > +++ b/tools/perf/util/parse-events.c
> > @@ -519,13 +519,14 @@ static void tracepoint_error(struct parse_events_error *e, int err,
> >         parse_events_error__handle(e, column, strdup(str), strdup(help));
> >  }
> >
> > -static int add_tracepoint(struct list_head *list, int *idx,
> > +static int add_tracepoint(struct parse_events_state *parse_state,
> > +                         struct list_head *list,
> >                           const char *sys_name, const char *evt_name,
> >                           struct parse_events_error *err,
> >                           struct parse_events_terms *head_config, void *loc_)
> >  {
> >         YYLTYPE *loc = loc_;
> > -       struct evsel *evsel = evsel__newtp_idx(sys_name, evt_name, (*idx)++);
> > +       struct evsel *evsel = evsel__newtp_idx(sys_name, evt_name, parse_state->idx++);
> >
> >         if (IS_ERR(evsel)) {
> >                 tracepoint_error(err, PTR_ERR(evsel), sys_name, evt_name, loc->first_column);
> > @@ -544,7 +545,8 @@ static int add_tracepoint(struct list_head *list, int *idx,
> >         return 0;
> >  }
> >
> > -static int add_tracepoint_multi_event(struct list_head *list, int *idx,
> > +static int add_tracepoint_multi_event(struct parse_events_state *parse_state,
> > +                                     struct list_head *list,
> >                                       const char *sys_name, const char *evt_name,
> >                                       struct parse_events_error *err,
> >                                       struct parse_events_terms *head_config, YYLTYPE *loc)
> > @@ -578,7 +580,7 @@ static int add_tracepoint_multi_event(struct list_head *list, int *idx,
> >
> >                 found++;
> >
> > -               ret = add_tracepoint(list, idx, sys_name, evt_ent->d_name,
> > +               ret = add_tracepoint(parse_state, list, sys_name, evt_ent->d_name,
> >                                      err, head_config, loc);
> >         }
> >
> > @@ -592,19 +594,21 @@ static int add_tracepoint_multi_event(struct list_head *list, int *idx,
> >         return ret;
> >  }
> >
> > -static int add_tracepoint_event(struct list_head *list, int *idx,
> > +static int add_tracepoint_event(struct parse_events_state *parse_state,
> > +                               struct list_head *list,
> >                                 const char *sys_name, const char *evt_name,
> >                                 struct parse_events_error *err,
> >                                 struct parse_events_terms *head_config, YYLTYPE *loc)
> >  {
> >         return strpbrk(evt_name, "*?") ?
> > -               add_tracepoint_multi_event(list, idx, sys_name, evt_name,
> > +               add_tracepoint_multi_event(parse_state, list, sys_name, evt_name,
> >                                            err, head_config, loc) :
> > -               add_tracepoint(list, idx, sys_name, evt_name,
> > +               add_tracepoint(parse_state, list, sys_name, evt_name,
> >                                err, head_config, loc);
> >  }
> >
> > -static int add_tracepoint_multi_sys(struct list_head *list, int *idx,
> > +static int add_tracepoint_multi_sys(struct parse_events_state *parse_state,
> > +                                   struct list_head *list,
> >                                     const char *sys_name, const char *evt_name,
> >                                     struct parse_events_error *err,
> >                                     struct parse_events_terms *head_config, YYLTYPE *loc)
> > @@ -630,7 +634,7 @@ static int add_tracepoint_multi_sys(struct list_head *list, int *idx,
> >                 if (!strglobmatch(events_ent->d_name, sys_name))
> >                         continue;
> >
> > -               ret = add_tracepoint_event(list, idx, events_ent->d_name,
> > +               ret = add_tracepoint_event(parse_state, list, events_ent->d_name,
> >                                            evt_name, err, head_config, loc);
> >         }
> >
> > @@ -1266,7 +1270,8 @@ static int get_config_chgs(struct perf_pmu *pmu, struct parse_events_terms *head
> >         return 0;
> >  }
> >
> > -int parse_events_add_tracepoint(struct list_head *list, int *idx,
> > +int parse_events_add_tracepoint(struct parse_events_state *parse_state,
> > +                               struct list_head *list,
> >                                 const char *sys, const char *event,
> >                                 struct parse_events_error *err,
> >                                 struct parse_events_terms *head_config, void *loc_)
> > @@ -1282,14 +1287,14 @@ int parse_events_add_tracepoint(struct list_head *list, int *idx,
> >         }
> >
> >         if (strpbrk(sys, "*?"))
> > -               return add_tracepoint_multi_sys(list, idx, sys, event,
> > +               return add_tracepoint_multi_sys(parse_state, list, sys, event,
> >                                                 err, head_config, loc);
> >         else
> > -               return add_tracepoint_event(list, idx, sys, event,
> > +               return add_tracepoint_event(parse_state, list, sys, event,
> >                                             err, head_config, loc);
> >  #else
> > +       (void)parse_state;
> >         (void)list;
> > -       (void)idx;
> >         (void)sys;
> >         (void)event;
> >         (void)head_config;
> > diff --git a/tools/perf/util/parse-events.h b/tools/perf/util/parse-events.h
> > index 809359e8544e..fd55a154ceff 100644
> > --- a/tools/perf/util/parse-events.h
> > +++ b/tools/perf/util/parse-events.h
> > @@ -189,7 +189,8 @@ int parse_events_terms__to_strbuf(const struct parse_events_terms *terms, struct
> >  int parse_events__modifier_event(struct list_head *list, char *str, bool add);
> >  int parse_events__modifier_group(struct list_head *list, char *event_mod);
> >  int parse_events_name(struct list_head *list, const char *name);
> > -int parse_events_add_tracepoint(struct list_head *list, int *idx,
> > +int parse_events_add_tracepoint(struct parse_events_state *parse_state,
> > +                               struct list_head *list,
> >                                 const char *sys, const char *event,
> >                                 struct parse_events_error *error,
> >                                 struct parse_events_terms *head_config, void *loc);
> > diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y
> > index d70f5d84af92..0bab4263f8e3 100644
> > --- a/tools/perf/util/parse-events.y
> > +++ b/tools/perf/util/parse-events.y
> > @@ -537,7 +537,7 @@ tracepoint_name opt_event_config
> >         if (!list)
> >                 YYNOMEM;
> >
> > -       err = parse_events_add_tracepoint(list, &parse_state->idx, $1.sys, $1.event,
> > +       err = parse_events_add_tracepoint(parse_state, list, $1.sys, $1.event,
> >                                         error, $2, &@1);
> >
> >         parse_events_terms__delete($2);
> >
> > --
> > 2.44.0
> >
Re: [PATCH v2 1/3] perf parse-events: pass parse_state to add_tracepoint
Posted by Arnaldo Carvalho de Melo 1 year, 9 months ago
On Thu, May 09, 2024 at 06:24:12PM -0300, Arnaldo Carvalho de Melo wrote:
> On Wed, May 08, 2024 at 02:37:16PM -0700, Ian Rogers wrote:
> > On Sun, May 5, 2024 at 4:14 AM Dominique Martinet
> > <asmadeus@codewreck.org> wrote:
> > >
> > > The next patch will add another flag to parse_state that we will want to
> > > pass to evsel__nwetp_idx(), so pass the whole parse_state all the way
> > > down instead of giving only the index
> > 
> > Nit: evsel__newtp_idx typo
> > Fwiw, I think the idx value is possibly something to be done away
> > with. We renumber the evsels here:
> > https://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools-next.git/tree/tools/perf/util/parse-events.c?h=perf-tools-next#n2077
> > 
> > Reviewed-by: Ian Rogers <irogers@google.com>
> 
> Fixed the typo.

But I'm removing the series due to it not passing:

⬢[acme@toolbox perf-tools-next]$ git log --oneline -1 ; time make -C tools/perf build-test
838f9d554bbe1636 (HEAD -> perf-tools-next) perf tracepoint: Don't scan all tracepoints to test if one exists
make: Entering directory '/home/acme/git/perf-tools-next/tools/perf'
- tarpkg: ./tests/perf-targz-src-pkg .
                 make_static: cd . && make LDFLAGS=-static NO_PERF_READ_VDSO32=1 NO_PERF_READ_VDSOX32=1 NO_JVMTI=1 NO_LIBTRACEEVENT=1 NO_LIBELF=1 -j28  DESTDIR=/tmp/tmp.JIPWT3E0yJ
cd . && make LDFLAGS=-static NO_PERF_READ_VDSO32=1 NO_PERF_READ_VDSOX32=1 NO_JVMTI=1 NO_LIBTRACEEVENT=1 NO_LIBELF=1 -j28 DESTDIR=/tmp/tmp.JIPWT3E0yJ
  BUILD:   Doing 'make -j28' parallel build
  HOSTCC  fixdep.o
  HOSTLD  fixdep-in.o
  LINK    fixdep
Makefile.config:692: Warning: Disabled BPF skeletons as libelf is required by bpftool
Makefile.config:733: Disabling post unwind, no support found.
Makefile.config:801: No libcrypto.h found, disables jitted code injection, please install openssl-devel or libssl-dev
Makefile.config:813: slang not found, disables TUI support. Please install slang-devel, libslang-dev or libslang2-dev
Makefile.config:860: Missing perl devel files. Disabling perl scripting support, please install perl-ExtUtils-Embed/libperl-dev
Makefile.config:900: No 'Python.h' was found: disables Python support - please install python-devel/python-dev
Makefile.config:1000: No liblzma found, disables xz kernel module decompression, please install xz-devel/liblzma-dev
Makefile.config:1013: No libzstd found, disables trace compression, please install libzstd-dev[el] and/or set LIBZSTD_DIR
Makefile.config:1024: No libcap found, disables capability support, please install libcap-devel/libcap-dev
Makefile.config:1037: No numa.h found, disables 'perf bench numa mem' benchmark, please install numactl-devel/libnuma-devel/libnuma-dev
Makefile.config:1096: No libbabeltrace found, disables 'perf data' CTF format support, please install libbabeltrace-dev[el]/libbabeltrace-ctf-dev
Makefile.config:1108: No libcapstone found, disables disasm engine support for 'perf script', please install libcapstone-dev/capstone-devel
Makefile.config:1173: libpfm4 not found, disables libpfm4 support. Please install libpfm4-dev

Auto-detecting system features:
...                                   dwarf: [ OFF ]
...                      dwarf_getlocations: [ OFF ]
...                                   glibc: [ on  ]
...                                  libbfd: [ OFF ]
...                          libbfd-buildid: [ OFF ]
...                                  libcap: [ OFF ]
...                                  libelf: [ OFF ]
...                                 libnuma: [ OFF ]
...                  numa_num_possible_cpus: [ OFF ]
...                                 libperl: [ OFF ]
<SNIP>
 CC      tests/expr.o
  CC      util/mmap.o
  CC      util/memswap.o
  BISON   util/parse-events-bison.c
  CC      tests/backward-ring-buffer.o
  CC      util/print-events.o
  CC      tests/sdt.o
  CC      util/tracepoint.o
  CC      util/perf_regs.o
  CC      util/perf-regs-arch/perf_regs_aarch64.o
  CC      util/intel-pt-decoder/intel-pt-pkt-decoder.o
  GEN     pmu-events/pmu-events.c
  CC      util/perf-regs-arch/perf_regs_arm.o
  GEN     util/intel-pt-decoder/inat-tables.c
  CC      tests/is_printable_array.o
  CC      util/perf-regs-arch/perf_regs_csky.o
  CC      util/perf-regs-arch/perf_regs_loongarch.o
  CC      util/arm-spe-decoder/arm-spe-pkt-decoder.o
  CC      util/arm-spe-decoder/arm-spe-decoder.o
  CC      util/hisi-ptt-decoder/hisi-ptt-pkt-decoder.o
  CC      tests/bitmap.o
  CC      tests/perf-hooks.o
  CC      util/perf-regs-arch/perf_regs_mips.o
  CC      util/intel-pt-decoder/intel-pt-log.o
  CC      tests/unit_number__scnprintf.o
  CC      util/perf-regs-arch/perf_regs_powerpc.o
  CC      tests/mem2node.o
  LD      util/arm-spe-decoder/perf-in.o
  CC      util/perf-regs-arch/perf_regs_riscv.o
  CC      util/perf-regs-arch/perf_regs_s390.o
  CC      util/perf-regs-arch/perf_regs_x86.o
  LD      util/scripting-engines/perf-in.o
  CC      util/path.o
  CC      tests/maps.o
  LD      util/hisi-ptt-decoder/perf-in.o
  CC      tests/time-utils-test.o
  CC      tests/genelf.o
  LD      util/perf-regs-arch/perf-in.o
  CC      tests/api-io.o
  CC      util/intel-pt-decoder/intel-pt-decoder.o
  CC      util/intel-pt-decoder/intel-pt-insn-decoder.o
  CC      util/print_binary.o
  CC      tests/demangle-java-test.o
  CC      util/print_insn.o
  CC      tests/demangle-ocaml-test.o
  CC      tests/pfm.o
  CC      tests/parse-metric.o
  LD      util/intel-pt-decoder/perf-in.o
  CC      util/rlimit.o
  CC      util/argv_split.o
  CC      util/rbtree.o
  CC      util/libstring.o
  CC      util/bitmap.o
  CC      util/hweight.o
  CC      util/smt.o
  CC      util/strbuf.o
  CC      tests/pe-file-parsing.o
  CC      util/string.o
  CC      util/strlist.o
  CC      tests/expand-cgroup.o
  CC      util/strfilter.o
  CC      tests/perf-time-to-tsc.o
  CC      util/top.o
  CC      util/usage.o
  CC      tests/dlfilter-test.o
  CC      tests/sigtrap.o
  CC      util/dso.o
  CC      tests/event_groups.o
  CC      util/dsos.o
  CC      tests/symbols.o
  CC      util/symbol.o
  CC      tests/util.o
  CC      util/symbol_fprintf.o
tests/parse-events.c:2274:26: error: ‘test__checkevent_tracepoint’ undeclared here (not in a function); did you mean ‘test__checkevent_breakpoint’?
 2274 |                 .check = test__checkevent_tracepoint,
      |                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                          test__checkevent_breakpoint
make[6]: *** [/home/acme/git/perf-tools-next/tools/build/Makefile.build:105: tests/parse-events.o] Error 1
make[6]: *** Waiting for unfinished jobs....
  CC      util/map_symbol.o
  CC      util/color.o
  CC      util/color_config.o

Re: [PATCH v2 1/3] perf parse-events: pass parse_state to add_tracepoint
Posted by Dominique Martinet 1 year, 9 months ago
Arnaldo Carvalho de Melo wrote on Thu, May 09, 2024 at 06:46:19PM -0300:
> ⬢[acme@toolbox perf-tools-next]$ git log --oneline -1 ; time make -C tools/perf build-test
> [...]
> tests/parse-events.c:2274:26: error: ‘test__checkevent_tracepoint’ undeclared here (not in a function); did you mean ‘test__checkevent_breakpoint’?
>  2274 |                 .check = test__checkevent_tracepoint,
>       |                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~
>       |                          test__checkevent_breakpoint
> make[6]: *** [/home/acme/git/perf-tools-next/tools/build/Makefile.build:105: tests/parse-events.o] Error 1
> make[6]: *** Waiting for unfinished jobs....

Sorry, didn't know about build-test; I've confirmed the problem [and
will eventually want to check how to build this cleanly on nixos, it's a
pain to shuffle the patch around to rebuild perf...]


It looks like the test case just needs an extra ifdef for
LIBTRACEEVEENT?

----
diff --git a/tools/perf/tests/parse-events.c b/tools/perf/tests/parse-events.c
index 417d4782a520..edc2adcf1bae 100644
--- a/tools/perf/tests/parse-events.c
+++ b/tools/perf/tests/parse-events.c
@@ -2269,11 +2269,13 @@ static const struct evlist_test test__events[] = {
 		.check = test__checkevent_breakpoint_2_events,
 		/* 3 */
 	},
+#ifdef HAVE_LIBTRACEEVENT
 	{
 		.name = "9p:9p_client_req",
 		.check = test__checkevent_tracepoint,
 		/* 4 */
 	},
+#endif
 };
 
 static const struct evlist_test test__events_pmu[] = {
----

I'll send a v4 with that rolled in after confirming the full build-test
passes.

-- 
Dominique Martinet | Asmadeus