gcc 4.9 build warnings (was: Re: next build: 2674 warnings 1 failures (next/next-20141022))

Arnd Bergmann arnd at arndb.de
Fri Oct 24 02:13:27 PDT 2014


On Thursday 23 October 2014 13:33:13 Olof Johansson wrote:
> On Thu, Oct 23, 2014 at 1:31 PM, Arnd Bergmann <arnd at arndb.de> wrote:
> > On Thursday 23 October 2014 17:12:20 Russell King - ARM Linux wrote:
> >>
> >> > I haven't found the code in gcc that performs the type check for
> >> > printf, but I've found a comment about that code intentionally
> >> > resolving the type (printing 'unsigned int') when the typedef
> >> > does not match the expected type.
> >>
> >> If I had a copy of the GCC 4.9 source locally, I'd dig into it too and
> >> try to work out what's going on.  My gut feeling is that it's a bug in
> >> GCC rather than something which the kernel is doing wrong.
> >>
> >
> > I suspect it has something to do with the way that Olof's gcc is built,
> > since it doesn't happen for me using the same kernel source and gcc-4.9.1
> > or 4.10-prerelease.
> 
> Mine is a 4.9.1 built with segher's buildall scripts.
> 

Ok, that also explains the problems with the missing __linux__ macro, given
Ard's reply about bare-metal gcc.

I think we have two choices here:

a) change the buildall script so it actually builds a compiler that behaves
   in the way we expect for the kernel (__SIZE_TYPE__ and __linux__ at least,
   possibly others)

b) change the kernel to work with the way the bare-metal compiler is built,
   adding -D__linux__ in the ARM Makefile and applying Ard's workaround for
   __SIZE_TYPE__/__INT32_TYPE__/__UINT32_TYPE__/__UINTPTR_TYPE__.

Both options are a little hacky and I don't really like them, but I think
it makes sense to do one of them.

	Arnd



More information about the linux-arm-kernel mailing list