On Thu, Mar 31, 2022 at 3:51 AM Marc Kleine-Budde <mkl@xxxxxxxxxxxxxx> wrote: > > Cc += linux-sparse, Uwe, Luc Van Oostenryck > > tl;dr: > > A recent change in the kernel regarding the riscv -march handling breaks > current sparse. Gaah. Normally sparse doesn't even look at the -march flag, but for riscv it does, because it's meaningful for the predefined macros. Maybe that 'die()' shouldn't be so fatal. And maybe add a few more extensions (but ignore them) to the parsing. Something ENTIRELY UNTESTED like the attached. Linus
target-riscv.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/target-riscv.c b/target-riscv.c index 6d9113c1..201ac375 100644 --- a/target-riscv.c +++ b/target-riscv.c @@ -3,6 +3,7 @@ #include "target.h" #include "machine.h" #include <string.h> +#include <stdio.h> #define RISCV_32BIT (1 << 0) #define RISCV_64BIT (1 << 1) @@ -47,6 +48,12 @@ static void parse_march_riscv(const char *arg) { "n", 0 }, { "h", 0 }, { "s", 0 }, + { "i", 0 }, + { "e", 0 }, + { "_", 0 }, + { "Counters", 0 }, + { "Zicsr", 0 }, + { "Zifencei", 0 }, }; int i; @@ -60,7 +67,10 @@ static void parse_march_riscv(const char *arg) goto ext; } } - die("invalid argument to '-march': '%s'\n", arg); + +unknown: + fprintf(stderr, "WARNING: invalid argument to '-march': '%s'\n", arg); + return; ext: for (i = 0; i < ARRAY_SIZE(extensions); i++) { @@ -73,7 +83,7 @@ ext: } } if (arg[0]) - die("invalid argument to '-march': '%s'\n", arg); + goto unknown; } static void init_riscv(const struct target *self)