* MIPS toolchain @ 2008-07-16 7:32 Dmitri Vorobiev 2008-07-16 10:45 ` Ralf Baechle 0 siblings, 1 reply; 6+ messages in thread From: Dmitri Vorobiev @ 2008-07-16 7:32 UTC (permalink / raw) To: linux-mips Hi, The linux-mips.org Web site recommends gcc 3.4.4 to build the MIPS kernel. However: <<<<<<<<<<<<<<<<<< [dmitri.vorobiev@amber linux-2.6]$ mips-unknown-linux-gnu-gcc -v Reading specs from /home/dmitri.vorobiev/Projects/misc/zoo/lib/gcc/mips-unknown-linux-gnu/3.4.4/specs Configured with: ../src/gcc-3.4.4/configure --prefix=/home/dmitri.vorobiev/Projects/misc/zoo --target=mips-unknown-linux-gnu --disable-nls --without-headers --with-gnu-ld --with-gnu-as --disable-shared --disable-threads Thread model: single gcc version 3.4.4 [dmitri.vorobiev@amber linux-2.6]$ make ARCH=mips CROSS_COMPILE=mips-unknown-linux-gnu- CHK include/linux/version.h CHK include/linux/utsrelease.h CALL scripts/checksyscalls.sh CC init/main.o include/asm/bitops.h: In function `start_kernel': include/asm/bitops.h:76: warning: asm operand 2 probably doesn't match constraints include/asm/bitops.h:76: warning: asm operand 2 probably doesn't match constraints include/asm/bitops.h:76: warning: asm operand 2 probably doesn't match constraints include/asm/bitops.h:76: error: impossible constraint in `asm' include/asm/bitops.h:76: error: impossible constraint in `asm' include/asm/bitops.h:76: error: impossible constraint in `asm' make[1]: *** [init/main.o] Error 1 make: *** [init] Error 2 [dmitri.vorobiev@amber linux-2.6]$ <<<<<<<<<<<<<<<<<< Kernel build goes smoothly for me with this gcc version: <<<<<<<<<<<<<<<<<< [dmitri.vorobiev@amber linux-2.6]$ mips-unknown-linux-gnu-gcc -v Using built-in specs. Target: mips-unknown-linux-gnu Configured with: ../gcc-4.3.0/configure --target=mips-unknown-linux-gnu --disable-nls --disable-threads --disable-shared --disable-multilib --disable-libmudflap --disable-libssp --prefix=/home/dmitri.vorobiev/Projects/misc/zoo/4.3-toolchain --with-gmp=/home/dmitri.vorobiev/Projects/misc/zoo/ --with-mfpr=/home/dmitri.vorobiev/Projects/misc/zoo --without-headers --with-gnu-as=/tmp/cross/ --with-gnu-ld=/tmp/cross/ --disable-libgcc --enable-languages=c --disable-libgomp Thread model: single gcc version 4.3.0 (GCC) [dmitri.vorobiev@amber linux-2.6]$ <<<<<<<<<<<<<<<<<< What I would like to know is which gcc/binutils versions are currently the blessed ones. Thanks. Regards, Dmitri ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: MIPS toolchain 2008-07-16 7:32 MIPS toolchain Dmitri Vorobiev @ 2008-07-16 10:45 ` Ralf Baechle 2008-07-16 11:02 ` Dmitri Vorobiev 0 siblings, 1 reply; 6+ messages in thread From: Ralf Baechle @ 2008-07-16 10:45 UTC (permalink / raw) To: Dmitri Vorobiev; +Cc: linux-mips On Wed, Jul 16, 2008 at 10:32:28AM +0300, Dmitri Vorobiev wrote: > The linux-mips.org Web site recommends gcc 3.4.4 to build the MIPS kernel. However: > > <<<<<<<<<<<<<<<<<< > > [dmitri.vorobiev@amber linux-2.6]$ mips-unknown-linux-gnu-gcc -v > Reading specs from /home/dmitri.vorobiev/Projects/misc/zoo/lib/gcc/mips-unknown-linux-gnu/3.4.4/specs > Configured with: ../src/gcc-3.4.4/configure --prefix=/home/dmitri.vorobiev/Projects/misc/zoo --target=mips-unknown-linux-gnu --disable-nls --without-headers --with-gnu-ld --with-gnu-as --disable-shared --disable-threads > Thread model: single > gcc version 3.4.4 > [dmitri.vorobiev@amber linux-2.6]$ make ARCH=mips CROSS_COMPILE=mips-unknown-linux-gnu- > CHK include/linux/version.h > CHK include/linux/utsrelease.h > CALL scripts/checksyscalls.sh > CC init/main.o > include/asm/bitops.h: In function `start_kernel': > include/asm/bitops.h:76: warning: asm operand 2 probably doesn't match constraints > include/asm/bitops.h:76: warning: asm operand 2 probably doesn't match constraints > include/asm/bitops.h:76: warning: asm operand 2 probably doesn't match constraints > include/asm/bitops.h:76: error: impossible constraint in `asm' > include/asm/bitops.h:76: error: impossible constraint in `asm' > include/asm/bitops.h:76: error: impossible constraint in `asm' > make[1]: *** [init/main.o] Error 1 > make: *** [init] Error 2 > [dmitri.vorobiev@amber linux-2.6]$ > > <<<<<<<<<<<<<<<<<< > > Kernel build goes smoothly for me with this gcc version: > > <<<<<<<<<<<<<<<<<< > > [dmitri.vorobiev@amber linux-2.6]$ mips-unknown-linux-gnu-gcc -v > Using built-in specs. > Target: mips-unknown-linux-gnu > Configured with: ../gcc-4.3.0/configure --target=mips-unknown-linux-gnu --disable-nls --disable-threads --disable-shared --disable-multilib --disable-libmudflap --disable-libssp --prefix=/home/dmitri.vorobiev/Projects/misc/zoo/4.3-toolchain --with-gmp=/home/dmitri.vorobiev/Projects/misc/zoo/ --with-mfpr=/home/dmitri.vorobiev/Projects/misc/zoo --without-headers --with-gnu-as=/tmp/cross/ --with-gnu-ld=/tmp/cross/ --disable-libgcc --enable-languages=c --disable-libgomp > Thread model: single > gcc version 4.3.0 (GCC) > [dmitri.vorobiev@amber linux-2.6]$ > > <<<<<<<<<<<<<<<<<< > > What I would like to know is which gcc/binutils versions are currently the blessed ones. Thanks. Anything from gcc 3.2 to 4.3 is supposed to work for 32-bit kernels; 3.3 to 4.3 are the blessed ones for 64-bit kernels. I'll look into that build problem ... hmm... First thing I'm hitting with 3.4.6 and binutils 2.18 is: [ralf@denk linux-mips]$ make malta_defconfig [ralf@denk linux-mips]$ nice -19 make cc1: error: unrecognized command line option "-fno-stack-protector" scripts/kconfig/conf -s arch/mips/Kconfig cc1: error: unrecognized command line option "-fno-stack-protector" With the offending line in the main Makefile commented out I get the same error messages as you. Initial fix below. Ralf Signed-off-by: Ralf Baechle <ralf@linux-mips.org> diff --git a/include/asm-mips/bitops.h b/include/asm-mips/bitops.h index 9a7274b..49df8c4 100644 --- a/include/asm-mips/bitops.h +++ b/include/asm-mips/bitops.h @@ -82,7 +82,7 @@ static inline void set_bit(unsigned long nr, volatile unsigned long *addr) "2: b 1b \n" " .previous \n" : "=&r" (temp), "=m" (*m) - : "i" (bit), "m" (*m), "r" (~0)); + : "ir" (bit), "m" (*m), "r" (~0)); #endif /* CONFIG_CPU_MIPSR2 */ } else if (cpu_has_llsc) { __asm__ __volatile__( @@ -147,7 +147,7 @@ static inline void clear_bit(unsigned long nr, volatile unsigned long *addr) "2: b 1b \n" " .previous \n" : "=&r" (temp), "=m" (*m) - : "i" (bit), "m" (*m)); + : "ir" (bit), "m" (*m)); #endif /* CONFIG_CPU_MIPSR2 */ } else if (cpu_has_llsc) { __asm__ __volatile__( @@ -428,7 +428,7 @@ static inline int test_and_clear_bit(unsigned long nr, "2: b 1b \n" " .previous \n" : "=&r" (temp), "=m" (*m), "=&r" (res) - : "i" (bit), "m" (*m) + : "ir" (bit), "m" (*m) : "memory"); #endif } else if (cpu_has_llsc) { ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: MIPS toolchain 2008-07-16 10:45 ` Ralf Baechle @ 2008-07-16 11:02 ` Dmitri Vorobiev 2008-07-16 12:02 ` Ralf Baechle 0 siblings, 1 reply; 6+ messages in thread From: Dmitri Vorobiev @ 2008-07-16 11:02 UTC (permalink / raw) To: Ralf Baechle; +Cc: linux-mips Ralf Baechle wrote: > On Wed, Jul 16, 2008 at 10:32:28AM +0300, Dmitri Vorobiev wrote: > >> The linux-mips.org Web site recommends gcc 3.4.4 to build the MIPS kernel. However: >> >> <<<<<<<<<<<<<<<<<< >> >> [dmitri.vorobiev@amber linux-2.6]$ mips-unknown-linux-gnu-gcc -v >> Reading specs from /home/dmitri.vorobiev/Projects/misc/zoo/lib/gcc/mips-unknown-linux-gnu/3.4.4/specs >> Configured with: ../src/gcc-3.4.4/configure --prefix=/home/dmitri.vorobiev/Projects/misc/zoo --target=mips-unknown-linux-gnu --disable-nls --without-headers --with-gnu-ld --with-gnu-as --disable-shared --disable-threads >> Thread model: single >> gcc version 3.4.4 >> [dmitri.vorobiev@amber linux-2.6]$ make ARCH=mips CROSS_COMPILE=mips-unknown-linux-gnu- >> CHK include/linux/version.h >> CHK include/linux/utsrelease.h >> CALL scripts/checksyscalls.sh >> CC init/main.o >> include/asm/bitops.h: In function `start_kernel': >> include/asm/bitops.h:76: warning: asm operand 2 probably doesn't match constraints >> include/asm/bitops.h:76: warning: asm operand 2 probably doesn't match constraints >> include/asm/bitops.h:76: warning: asm operand 2 probably doesn't match constraints >> include/asm/bitops.h:76: error: impossible constraint in `asm' >> include/asm/bitops.h:76: error: impossible constraint in `asm' >> include/asm/bitops.h:76: error: impossible constraint in `asm' >> make[1]: *** [init/main.o] Error 1 >> make: *** [init] Error 2 >> [dmitri.vorobiev@amber linux-2.6]$ >> >> <<<<<<<<<<<<<<<<<< >> >> Kernel build goes smoothly for me with this gcc version: >> >> <<<<<<<<<<<<<<<<<< >> >> [dmitri.vorobiev@amber linux-2.6]$ mips-unknown-linux-gnu-gcc -v >> Using built-in specs. >> Target: mips-unknown-linux-gnu >> Configured with: ../gcc-4.3.0/configure --target=mips-unknown-linux-gnu --disable-nls --disable-threads --disable-shared --disable-multilib --disable-libmudflap --disable-libssp --prefix=/home/dmitri.vorobiev/Projects/misc/zoo/4.3-toolchain --with-gmp=/home/dmitri.vorobiev/Projects/misc/zoo/ --with-mfpr=/home/dmitri.vorobiev/Projects/misc/zoo --without-headers --with-gnu-as=/tmp/cross/ --with-gnu-ld=/tmp/cross/ --disable-libgcc --enable-languages=c --disable-libgomp >> Thread model: single >> gcc version 4.3.0 (GCC) >> [dmitri.vorobiev@amber linux-2.6]$ >> >> <<<<<<<<<<<<<<<<<< >> >> What I would like to know is which gcc/binutils versions are currently the blessed ones. Thanks. > > Anything from gcc 3.2 to 4.3 is supposed to work for 32-bit kernels; 3.3 > to 4.3 are the blessed ones for 64-bit kernels. > > I'll look into that build problem ... hmm... First thing I'm hitting > with 3.4.6 and binutils 2.18 is: > > [ralf@denk linux-mips]$ make malta_defconfig > [ralf@denk linux-mips]$ nice -19 make > cc1: error: unrecognized command line option "-fno-stack-protector" > scripts/kconfig/conf -s arch/mips/Kconfig > cc1: error: unrecognized command line option "-fno-stack-protector" > > With the offending line in the main Makefile commented out I get the same > error messages as you. Initial fix below. With this fix applied on top of the current Linus git tree I was able to build and boot the kernel using my 4Kc. Thanks a lot! Regards, Dmitri > > Ralf > > Signed-off-by: Ralf Baechle <ralf@linux-mips.org> > > diff --git a/include/asm-mips/bitops.h b/include/asm-mips/bitops.h > index 9a7274b..49df8c4 100644 > --- a/include/asm-mips/bitops.h > +++ b/include/asm-mips/bitops.h > @@ -82,7 +82,7 @@ static inline void set_bit(unsigned long nr, volatile unsigned long *addr) > "2: b 1b \n" > " .previous \n" > : "=&r" (temp), "=m" (*m) > - : "i" (bit), "m" (*m), "r" (~0)); > + : "ir" (bit), "m" (*m), "r" (~0)); > #endif /* CONFIG_CPU_MIPSR2 */ > } else if (cpu_has_llsc) { > __asm__ __volatile__( > @@ -147,7 +147,7 @@ static inline void clear_bit(unsigned long nr, volatile unsigned long *addr) > "2: b 1b \n" > " .previous \n" > : "=&r" (temp), "=m" (*m) > - : "i" (bit), "m" (*m)); > + : "ir" (bit), "m" (*m)); > #endif /* CONFIG_CPU_MIPSR2 */ > } else if (cpu_has_llsc) { > __asm__ __volatile__( > @@ -428,7 +428,7 @@ static inline int test_and_clear_bit(unsigned long nr, > "2: b 1b \n" > " .previous \n" > : "=&r" (temp), "=m" (*m), "=&r" (res) > - : "i" (bit), "m" (*m) > + : "ir" (bit), "m" (*m) > : "memory"); > #endif > } else if (cpu_has_llsc) { ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: MIPS toolchain 2008-07-16 11:02 ` Dmitri Vorobiev @ 2008-07-16 12:02 ` Ralf Baechle 2008-07-16 15:19 ` Geert Uytterhoeven 2008-07-16 19:22 ` Kyle McMartin 0 siblings, 2 replies; 6+ messages in thread From: Ralf Baechle @ 2008-07-16 12:02 UTC (permalink / raw) To: Linus Torvalds, linux-stable, Dmitri Vorobiev, Sam Ravnborg, Andrew Morton Cc: linux-mips, linux-kernel, Andi Kleen Crosscompiling on a Fedora 9 machine running gcc 4.3.0 as its host compiler and gcc 3.4.6 for the mips-linux target results in the following build error: $ make malta_defconfig $ make cc1: error: unrecognized command line option "-fno-stack-protector" scripts/kconfig/conf -s arch/mips/Kconfig cc1: error: unrecognized command line option "-fno-stack-protector" The arch Makefile is included too late so the host compiler is feature tested, not the crosscompiler as intended and thus the Makefile applies adds -fno-stack-protector to crosscompiler's flags which fails for gcc 3.4.6. The bug was introduced by e06b8b98da071f7dd78fb7822991694288047df0 in 2.6.25; 35bb5b1e0e84cfa1a8906f7e6a77f391ff315791 did add more flags testing before the arch Makefile inclusion. Signed-off-by: Ralf Baechle <ralf@linux-mips.org> diff --git a/Makefile b/Makefile index bfde079..312fcaa 100644 --- a/Makefile +++ b/Makefile @@ -509,6 +509,8 @@ else KBUILD_CFLAGS += -O2 endif +include $(srctree)/arch/$(SRCARCH)/Makefile + ifneq (CONFIG_FRAME_WARN,0) KBUILD_CFLAGS += $(call cc-option,-Wframe-larger-than=${CONFIG_FRAME_WARN}) endif @@ -517,8 +519,6 @@ endif # Arch Makefiles may override this setting KBUILD_CFLAGS += $(call cc-option, -fno-stack-protector) -include $(srctree)/arch/$(SRCARCH)/Makefile - ifdef CONFIG_FRAME_POINTER KBUILD_CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls else ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: MIPS toolchain 2008-07-16 12:02 ` Ralf Baechle @ 2008-07-16 15:19 ` Geert Uytterhoeven 2008-07-16 19:22 ` Kyle McMartin 1 sibling, 0 replies; 6+ messages in thread From: Geert Uytterhoeven @ 2008-07-16 15:19 UTC (permalink / raw) To: Ralf Baechle, Michael Schmitz Cc: Linus Torvalds, linux-stable, Dmitri Vorobiev, Sam Ravnborg, Andrew Morton, Linux/MIPS Development, Linux Kernel Development, Andi Kleen, Linux/m68k On Wed, 16 Jul 2008, Ralf Baechle wrote: > Crosscompiling on a Fedora 9 machine running gcc 4.3.0 as its host compiler > and gcc 3.4.6 for the mips-linux target results in the following build > error: > > $ make malta_defconfig > $ make > cc1: error: unrecognized command line option "-fno-stack-protector" > scripts/kconfig/conf -s arch/mips/Kconfig > cc1: error: unrecognized command line option "-fno-stack-protector" > > The arch Makefile is included too late so the host compiler is feature > tested, not the crosscompiler as intended and thus the Makefile applies > adds -fno-stack-protector to crosscompiler's flags which fails for gcc > 3.4.6. The bug was introduced by e06b8b98da071f7dd78fb7822991694288047df0 > in 2.6.25; 35bb5b1e0e84cfa1a8906f7e6a77f391ff315791 did add more flags > testing before the arch Makefile inclusion. > > Signed-off-by: Ralf Baechle <ralf@linux-mips.org> > > diff --git a/Makefile b/Makefile > index bfde079..312fcaa 100644 > --- a/Makefile > +++ b/Makefile > @@ -509,6 +509,8 @@ else > KBUILD_CFLAGS += -O2 > endif > > +include $(srctree)/arch/$(SRCARCH)/Makefile > + > ifneq (CONFIG_FRAME_WARN,0) > KBUILD_CFLAGS += $(call cc-option,-Wframe-larger-than=${CONFIG_FRAME_WARN}) > endif > @@ -517,8 +519,6 @@ endif > # Arch Makefiles may override this setting > KBUILD_CFLAGS += $(call cc-option, -fno-stack-protector) > > -include $(srctree)/arch/$(SRCARCH)/Makefile > - > ifdef CONFIG_FRAME_POINTER > KBUILD_CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls > else Thank you! Michael Schmitz also saw this problem, but we never found what caused it... Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: MIPS toolchain 2008-07-16 12:02 ` Ralf Baechle 2008-07-16 15:19 ` Geert Uytterhoeven @ 2008-07-16 19:22 ` Kyle McMartin 1 sibling, 0 replies; 6+ messages in thread From: Kyle McMartin @ 2008-07-16 19:22 UTC (permalink / raw) To: Ralf Baechle Cc: Linus Torvalds, linux-stable, Dmitri Vorobiev, Sam Ravnborg, Andrew Morton, linux-mips, linux-kernel, Andi Kleen On Wed, Jul 16, 2008 at 01:02:24PM +0100, Ralf Baechle wrote: > +include $(srctree)/arch/$(SRCARCH)/Makefile > + > ifneq (CONFIG_FRAME_WARN,0) > KBUILD_CFLAGS += $(call cc-option,-Wframe-larger-than=${CONFIG_FRAME_WARN}) > endif > @@ -517,8 +519,6 @@ endif > # Arch Makefiles may override this setting > KBUILD_CFLAGS += $(call cc-option, -fno-stack-protector) > > -include $(srctree)/arch/$(SRCARCH)/Makefile > - > ifdef CONFIG_FRAME_POINTER > KBUILD_CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls Cool, this explains something I saw with a crossbuild as well, but never had time to debug. r, Kyle ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2008-07-16 19:22 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2008-07-16 7:32 MIPS toolchain Dmitri Vorobiev 2008-07-16 10:45 ` Ralf Baechle 2008-07-16 11:02 ` Dmitri Vorobiev 2008-07-16 12:02 ` Ralf Baechle 2008-07-16 15:19 ` Geert Uytterhoeven 2008-07-16 19:22 ` Kyle McMartin
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox