diff --git a/kernel-tools-c99.patch b/kernel-tools-c99.patch new file mode 100644 index 0000000..6295b27 --- /dev/null +++ b/kernel-tools-c99.patch @@ -0,0 +1,121 @@ +From: Florian Weimer +Subject: [PATCH v4] perf: Avoid implicit function declarations in + lexer/parse interface +To: linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org +Cc: Peter Zijlstra , + Ingo Molnar , + Arnaldo Carvalho de Melo , + Mark Rutland , + Alexander Shishkin , + Jiri Olsa , + Namhyung Kim , + Ian Rogers , + Adrian Hunter , + Ian Rogers , + Justin M. Forbes +Date: Wed, 03 May 2023 20:06:09 +0200 (25 minutes, 29 seconds ago) +Message-ID: <874jot47e6.fsf@oldenburg.str.redhat.com> + +In future compilers, -Wno-implicit-function-declaration may not bring +back support for implicit function declarations, a feature that was +removed from the C language in C99. Instead of relying on implicit +declarations, include the flex-generated header from the +bison-generated C code. + +The expr-flex.h and pmu-flex.h headers needs to be included very late, +so that the definition of YYSTYPE is available at that point. + +Signed-off-by: Florian Weimer + +--- +v4: Rebase on top of perf-next and integrate with bpf-filter.y as well. + Even later inclusion of "pmu-flex.h". +v3: Fix commit message typo. Try to repost via different mail server. +v2: Include the flex-generated files instead of manually-written prototypes. + tools/perf/util/Build | 11 ++++++++++- + tools/perf/util/bpf-filter.y | 1 + + tools/perf/util/expr.y | 2 ++ + tools/perf/util/parse-events.y | 1 + + tools/perf/util/pmu.y | 4 ++++ + 5 files changed, 18 insertions(+), 1 deletion(-) + +diff --git a/tools/perf/util/Build b/tools/perf/util/Build +index bd18fe5f2719..865ce4f66756 100644 +--- a/tools/perf/util/Build ++++ b/tools/perf/util/Build +@@ -298,7 +298,7 @@ CFLAGS_bpf-filter-flex.o += $(flex_flags) + bison_flags := -DYYENABLE_NLS=0 + BISON_GE_35 := $(shell expr $(shell $(BISON) --version | grep bison | sed -e 's/.\+ \([0-9]\+\).\([0-9]\+\)/\1\2/g') \>\= 35) + ifeq ($(BISON_GE_35),1) +- bison_flags += -Wno-unused-parameter -Wno-nested-externs -Wno-implicit-function-declaration -Wno-switch-enum -Wno-unused-but-set-variable -Wno-unknown-warning-option ++ bison_flags += -Wno-unused-parameter -Wno-nested-externs -Wno-switch-enum -Wno-unused-but-set-variable -Wno-unknown-warning-option + else + bison_flags += -w + endif +@@ -357,3 +357,12 @@ $(OUTPUT)util/vsprintf.o: ../lib/vsprintf.c FORCE + $(OUTPUT)util/list_sort.o: ../lib/list_sort.c FORCE + $(call rule_mkdir) + $(call if_changed_dep,cc_o_c) ++ ++# These dependencies ensure that the flex-generated .h file is ++# available at the time the bison-generated .c sources are compiled. ++# Do not depend on the generated .h file to prevent triggering ++# parallel flex invocations for the same two output files. ++$(OUTPUT)util/bpf-filter-bison.o : $(OUTPUT)util/bpf-filter-flex.c ++$(OUTPUT)util/expr-bison.o : $(OUTPUT)util/expr-flex.c ++$(OUTPUT)util/parse-events-bison.o : $(OUTPUT)util/parse-events-flex.c ++$(OUTPUT)util/pmu-bison.o : $(OUTPUT)util/pmu-flex.c +diff --git a/tools/perf/util/bpf-filter.y b/tools/perf/util/bpf-filter.y +index 07d6c7926c13..935afafe22eb 100644 +--- a/tools/perf/util/bpf-filter.y ++++ b/tools/perf/util/bpf-filter.y +@@ -8,6 +8,7 @@ + #include + #include + #include "bpf-filter.h" ++#include "bpf-filter-flex.h" + + static void perf_bpf_filter_error(struct list_head *expr __maybe_unused, + char const *msg) +diff --git a/tools/perf/util/expr.y b/tools/perf/util/expr.y +index 250e444bf032..8879fa14960f 100644 +--- a/tools/perf/util/expr.y ++++ b/tools/perf/util/expr.y +@@ -53,6 +53,8 @@ + %destructor { ids__free($$.ids); } + + %{ ++#include "expr-flex.h" ++ + static void expr_error(double *final_val __maybe_unused, + struct expr_parse_ctx *ctx __maybe_unused, + bool compute_ids __maybe_unused, +diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y +index 4488443e506e..401d33714b23 100644 +--- a/tools/perf/util/parse-events.y ++++ b/tools/perf/util/parse-events.y +@@ -17,6 +17,7 @@ + #include "evsel.h" + #include "parse-events.h" + #include "parse-events-bison.h" ++#include "parse-events-flex.h" + + void parse_events_error(YYLTYPE *loc, void *parse_state, void *scanner, char const *msg); + +diff --git a/tools/perf/util/pmu.y b/tools/perf/util/pmu.y +index dff4e892ac4d..9c67f3d05a80 100644 +--- a/tools/perf/util/pmu.y ++++ b/tools/perf/util/pmu.y +@@ -32,6 +32,10 @@ do { \ + DECLARE_BITMAP(bits, PERF_PMU_FORMAT_BITS); + } + ++%{ ++#include "pmu-flex.h" ++%} ++ + %% + + format: + +base-commit: 5d27a645f60940fdf589e4ff5351506a7f0fdbaa