Re: Conflict between sparse and commit cafa0010cd51f ("Raise the minimum required gcc version to 4.6")

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 09/10/2018 09:28 AM, Luc Van Oostenryck wrote:
On Mon, Sep 10, 2018 at 08:49:07AM +0200, Christophe LEROY wrote:
Le 07/09/2018 à 20:19, Nick Desaulniers a écrit :
On Fri, Sep 7, 2018 at 11:13 AM Luc Van Oostenryck wrote:

Sparse expand these macros to the same version than the compiler used
to compile GCC. I find a bit strange though to have sparse v0.5.2 but
using an old compiler.

So Christophe must have a version of gcc < 4.6 installed somewhere?
Does sparse use `cc`? If so, Christophe, does your `ls -l $(which cc)`
point to an old version of gcc maybe?

Indeed it looks like sparse expand these macros to the version of
the compiler it was compiled with.

I'm building kernels for a powerpc platforms, with CROSS_COMPILE set
to ppc-linux- and ppc-linux-gcc being version 5.4

However my build machine is a CentOS6 and the native gcc has version
4.4.7, so sparse expands that version.

OK, I see.
Is there a way to get sparse in line with my cross compiler version
and not with the local native version ?

When cross-compiling, there is also things like the machine word-size
and the endianness to take in account (they also default to the
native compiler used to compile sparse itself) as well as a few
defines (like __PPC64__). To be in line with your cross-compiler
you can use to the wrapper 'cgcc' (installed with sparse) and call
it, for example, like this:
	$ export REAL_CC=ppc-linux-gcc
	$ cgcc -target=ppcc64 -D_CALL_ELF=2 -D__GCC__=5 -D__GCC_MINOR__=4 ...
or, since this is for the kernel:
	$ export REAL_CC=ppc-linux-gcc
	$ make CHECK='cgcc -target=ppcc64 ...


I think this should solve it. Do not hesitate to report any
difficulties you may encounter.

# export REAL_CC=ppc-linux-gcc
# make CHECK="cgcc -target=ppc -D_CALL_ELF=2 -D__GCC__=5 -D__GCC_MINOR__=4" C=2 arch/powerpc/kernel/process.o
scripts/kconfig/conf  --syncconfig Kconfig
#
# configuration written to .config
#
  UPD     include/config/kernel.release
  UPD     include/generated/utsrelease.h
  CC      kernel/bounds.s
  CC      arch/powerpc/kernel/asm-offsets.s
  CALL    scripts/checksyscalls.sh
  CHECK   scripts/mod/empty.c
Can't exec "/bin/sh": Argument list too long at /usr/local/bin/cgcc line 86.
make[2]: *** [scripts/mod/empty.o] Error 1
make[1]: *** [scripts/mod] Error 2
make: *** [scripts] Error 2

Christophe


-- Luc




[Index of Archives]     [Newbies FAQ]     [LKML]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Trinity Fuzzer Tool]

  Powered by Linux