Messages in this thread | | | Date | Tue, 22 Oct 2019 08:09:59 -0700 (PDT) | Subject | Re: [PATCH 4/8] riscv: ensure RISC-V C model definitions are passed to static analyzers | From | Palmer Dabbelt <> |
| |
On Thu, 17 Oct 2019 21:39:29 PDT (-0700), Paul Walmsley wrote: > On Fri, 18 Oct 2019, Luc Van Oostenryck wrote: > >> On Thu, Oct 17, 2019 at 05:49:25PM -0700, Paul Walmsley wrote: >> > Static analysis tools such as sparse don't set the RISC-V C model >> > preprocessor directives such as "__riscv_cmodel_medany", set by the C >> > compilers. This causes the static analyzers to evaluate different >> > preprocessor paths than C compilers would. Fix this by defining the >> > appropriate C model macros in the static analyzer command lines. >> > >> > Signed-off-by: Paul Walmsley <paul.walmsley@sifive.com> >> > --- >> > arch/riscv/Makefile | 2 ++ >> > 1 file changed, 2 insertions(+) >> > >> > diff --git a/arch/riscv/Makefile b/arch/riscv/Makefile >> > index f5e914210245..0247a90bd4d8 100644 >> > --- a/arch/riscv/Makefile >> > +++ b/arch/riscv/Makefile >> > @@ -47,9 +47,11 @@ KBUILD_CFLAGS += -DCONFIG_PAGE_OFFSET=$(CONFIG_PAGE_OFFSET) >> > >> > ifeq ($(CONFIG_CMODEL_MEDLOW),y) >> > KBUILD_CFLAGS += -mcmodel=medlow >> > + CHECKFLAGS += -D__riscv_cmodel_medlow >> > endif >> > ifeq ($(CONFIG_CMODEL_MEDANY),y) >> > KBUILD_CFLAGS += -mcmodel=medany >> > + CHECKFLAGS += -D__riscv_cmodel_medany >> >> I can teach sparse about this in the following days. > > That would be great. Would you be willing to follow up with me via E-mail > or mailing list post when it's fixed? If so, then in the meantime, I'll > just drop this patch.
It's probably worth going through all our argument-dependent builtin definitions at the same time. They're generated by riscv_cpu_cpp_builtins(): https://github.com/gcc-mirror/gcc/blob/master/gcc/config/riscv/riscv-c.c#L35 .
> > > - Paul > > _______________________________________________ > linux-riscv mailing list > linux-riscv@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-riscv
| |