perf parse-events: Remove ABORT_ON
authorIan Rogers <irogers@google.com>
Tue, 27 Jun 2023 18:10:30 +0000 (11:10 -0700)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Fri, 28 Jul 2023 22:01:16 +0000 (19:01 -0300)
Prefer informative messages rather than none with ABORT_ON. Document
one failure mode and add an error message for another.

Signed-off-by: Ian Rogers <irogers@google.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: bpf@vger.kernel.org
Link: https://lore.kernel.org/r/20230627181030.95608-14-irogers@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/parse-events.y

index 8446467..454577f 100644 (file)
 
 void parse_events_error(YYLTYPE *loc, void *parse_state, void *scanner, char const *msg);
 
-#define ABORT_ON(val) \
-do { \
-       if (val) \
-               YYABORT; \
-} while (0)
-
 #define PE_ABORT(val) \
 do { \
        if (val == -ENOMEM) \
@@ -618,7 +612,9 @@ PE_RAW opt_event_config
                YYNOMEM;
        errno = 0;
        num = strtoull($1 + 1, NULL, 16);
-       ABORT_ON(errno);
+       /* Given the lexer will only give [a-fA-F0-9]+ a failure here should be impossible. */
+       if (errno)
+               YYABORT;
        free($1);
        err = parse_events_add_numeric(_parse_state, list, PERF_TYPE_RAW, num, $2,
                                       /*wildcard=*/false);
@@ -978,7 +974,17 @@ PE_VALUE PE_ARRAY_RANGE PE_VALUE
 {
        struct parse_events_array array;
 
-       ABORT_ON($3 < $1);
+       if ($3 < $1) {
+               struct parse_events_state *parse_state = _parse_state;
+               struct parse_events_error *error = parse_state->error;
+               char *err_str;
+
+               if (asprintf(&err_str, "Expected '%ld' to be less-than '%ld'", $3, $1) < 0)
+                       err_str = NULL;
+
+               parse_events_error__handle(error, @1.first_column, err_str, NULL);
+               YYABORT;
+       }
        array.nr_ranges = 1;
        array.ranges = malloc(sizeof(array.ranges[0]));
        if (!array.ranges)