Re: [PATCH] perf: enum overflow in uapi/linux/perf_event.h

From: Peter Zijlstra
Date: Fri Sep 07 2018 - 09:58:26 EST


On Fri, Sep 07, 2018 at 01:50:18PM +0000, Christophe Leroy wrote:
>
>
> On 09/07/2018 01:42 PM, Peter Zijlstra wrote:
> > On Fri, Sep 07, 2018 at 01:27:19PM +0000, Christophe Leroy wrote:
> > > On PPC32, enums are 32 bits, so __PERF_SAMPLE_CALLCHAIN_EARLY is
> > > out of scope. The following sparse warning is encountered:
> > >
> > > CHECK arch/powerpc/kernel/process.c
> > > ./include/uapi/linux/perf_event.h:147:56: warning: cast truncates bits from constant value (8000000000000000 becomes 0)
> >
> > Urgh... what compiler is that? I've not seen anything like that from the
> > build bots.
> >
>
> [root@pc16082vm linux-powerpc]# sparse --version
> 0.5.2
>
> [root@pc16082vm linux-powerpc]# ppc-linux-gcc --version
> ppc-linux-gcc (GCC) 5.4.0

Ah, that's a sparse warning. But does your GCC agree? The thing is,
sparse uses the C enum spec, but I suspect GCC uses the C++ enum spec
and it all works fine.