I'm running gcc-3.3.1 and had just recompiled my system. But was then suddenly unable to compile the kernel (2.6.0-test3 to 2.6.0-test4). I did a little testing, and it turned out that compiling binutils with the cflag "-freduce-all-givs" would cause it to fail during the compile of the linux kernel. I tested this with serveral versions of binutils (from 2.12.90.0.15 to 2.14.90.0.6-r1), and all failed. However, I have no idea if this is also present in systems running gcc < 3.3.1. Reproducible: Always Steps to Reproduce: 1. Change CFLAGS to include "-freduce-all-givs" 2. Emerge binutils 3. Attempt to compile kernel Actual Results: [SNIP...] GEN .version CHK include/linux/compile.h UPD include/linux/compile.h CC init/version.o LD init/built-in.o LD .tmp_vmlinux1 KSYM .tmp_kallsyms1.S AS .tmp_kallsyms1.o .tmp_kallsyms1.S: Assembler messages: .tmp_kallsyms1.S:1315: Error: unknown pseudo-op: `.ong' .tmp_kallsyms1.S:6558: Error: unknown pseudo-op: `.ong' .tmp_kallsyms1.S:21293: Error: unknown pseudo-op: `.sciz' .tmp_kallsyms1.S:24065: Error: unknown pseudo-op: `.sciz' make: *** [.tmp_kallsyms1.o] Error 1 Portage 2.0.48-r7 (default-x86-1.4, gcc-3.3.1, glibc-2.3.2-r3) ================================================================= System uname: 2.6.0-test4-mm2 i686 Intel(R) Pentium(R) 4 CPU 2.00GHz GENTOO_MIRRORS="http://gentoo.oregonstate.edu http://www.ibiblio.org/pub/Linux/distributions/gentoo" CONFIG_PROTECT="/etc /var/qmail/control /usr/kde/2/share/config /usr/kde/3/share/config /usr/X11R6/lib/X11/xkb /usr/kde/cvs/share/config /usr/share/config" CONFIG_PROTECT_MASK="/etc/gconf /etc/env.d" PORTDIR="/usr/portage" DISTDIR="/usr/portage/distfiles" PKGDIR="/usr/portage/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR_OVERLAY="/usr/local/portage" USE="x86 oss apm crypt encode foomaticdb jpeg libg++ mad mikmod mpeg ncurses pdflib png quicktime spell xml2 xv zlib gdbm slang readline arts svga tcltk X sdl gpm tcpd pam libwww ssl perl python esd imlib oggvorbis qt kde motif opengl -gnome -gtk -berkdb -postgres -tetex -doc -scanner -3dnow -xmms -cups -sgml -java -aalib -nls avi -dvd cdr truetype mmx sse gif alsa" COMPILER="gcc3" CHOST="i686-pc-linux-gnu" CFLAGS="-march=pentium4 -O2 -freduce-all-givs -fmove-all-movables -pipe -w" CXXFLAGS="-march=pentium4 -O2 -freduce-all-givs -fmove-all-movables -pipe -w" ACCEPT_KEYWORDS="x86" MAKEOPTS="-j2" AUTOCLEAN="yes" SYNC="rsync://rsync.gentoo.org/gentoo-portage" FEATURES="sandbox ccache"
Can anybody check on a gcc earlier than 3.3.1 ?
I just tried with gcc-3.2.3-r2 and binutils-2.14.90.0.6-r1 with binutils built with -freduce-all-givs and all was ok compiling linux-2.6.0-test4 I also tried binutils built with gcc-3.4-20030725 and -freduce-all-givs ; I got the same error as you did, using gcc-3.2.3-r2 to build the kernel: LD init/built-in.o LD .tmp_vmlinux1 KSYM .tmp_kallsyms1.S AS .tmp_kallsyms1.o .tmp_kallsyms1.S: Assembler messages: .tmp_kallsyms1.S:1315: Error: unknown pseudo-op: `.ong' .tmp_kallsyms1.S:6558: Error: unknown pseudo-op: `.ong' .tmp_kallsyms1.S:11824: Error: unknown pseudo-op: `.yte' .tmp_kallsyms1.S:14517: Error: unknown pseudo-op: `.sciz' .tmp_kallsyms1.S:15868: Error: unknown pseudo-op: `.yte' .tmp_kallsyms1.S:18519: Error: unknown pseudo-op: `.sciz' .tmp_kallsyms1.S:25261: Error: unknown pseudo-op: `.sciz' .tmp_kallsyms1.S:26648: Error: unknown pseudo-op: `.yte' make: *** [.tmp_kallsyms1.o] Error 1
It works here with gcc-3.3.1-r4, although I get this all over the place: ------------------- {standard input}:927: Warning: setting incorrect section attributes for .initcall6.init CC drivers/char/vt_ioctl.o CC drivers/char/vc_screen.o {standard input}: Assembler messages: {standard input}:1016: Warning: setting incorrect section attributes for .init.text CC drivers/char/consolemap.o
Err, talked too soon, sorry :)
Ok, only fix I can think about is to filter this in binutils ebuild - that OK with everybody ?
http://bugs.gentoo.org/show_bug.cgi?id=30128 fixes the asm warnings for you Martin - please update the portage ebuild, those messages are very annoying, even though they seem harmless.
Bump.. I just got bit by the original bug: CC drivers/scsi/aic7xxx/aic7xxx_core.o {standard input}: Assembler messages: {standard input}:16530: Error: unknown pseudo-op: `.lign' make[3]: *** [drivers/scsi/aic7xxx/aic7xxx_core.o] Error 1 make[2]: *** [drivers/scsi/aic7xxx] Error 2 make[1]: *** [drivers/scsi] Error 2 make: *** [drivers] Error 2 Rebuilt binutils (2.14.90.0.8) without -freduce-all-givs and kernel compiled fine. Put -freduce-all-givs back in my CFLAGS, added it to the filter in the binutils ebuild, reemerged binutils, and then did a kernel compile, which worked fine. Can you please filter -freduce-all-givs?
I've just had the same problem over here... Same .tmp_kallsyms errors with 2.6.2 and 2.6.3rc. dropping -freduce-all-givs and remerging binutils did the trick for me. Maybe filtering that cflag or something?
is there something that prevents us from adding this filter-flags logic to the binutils ebuilds now? thanks, Alex
I bumped into this issue as well and fixed it removing the -freduce-all-givs CFlag as everyone else. Why isn't the CFlag filtered yet from Binutils? I have to mention that everyone who uses that flag in their CFlags WILL bump into this issue, since the actual stable (x86 at least) versions of the involved programs will lead to this issue: Stable x86 gentoo-dev-sources: 2.6.7-r8 Stable x86 binutils: 2.14.90.0.8-r1 Stable x86 gcc: gcc-3.3.3-r6 So everyone who is running a stable system with that CFlag are destined to bump into this bug, and I don't think that's desirable...
i got the same error message. one system also will finish the kernel but when boot give a stack error right after cupsd around microcode ctl. says something like (sorry i cant paste it for obvious reasons)(gcc 3.3.3 kernel 2.6.6 and 2.6.7): process xfs logd EIP is at pagebuf_rele call trace <0000000> worker thread <0000000> pagebuf_iodone_work ... <0000000> kthread <0000000> kthread gcc 3.4 gives asm error messages early on even though it doesnt have any givs and i cant be sure this is the cause since i dont have anything running 3.4 right now but it sound about right (backwards debugger). thanks Martin for catching that. I had only gotten one kernel compiled with my flags cut way back. make about a 35% performance difference in kernel times. something as simple as that can really throw the monkey wrench into a good computer.
pappy@PAPILLON binutils $ grep -ri "freduce-all-givs" . pappy@PAPILLON binutils $ at the moment still not filtered in cvs :-( adding it now to current -x86 binutils-2.14.90.0.8-r2.ebuild please test it there and confirm, then we can add it :-) thanks, Alex
[0] pappy@PAPILLON binutils $ date; grep -ri "freduce-all-givs" . Fri Sep 24 03:49:02 CEST 2004 ./ChangeLog: added filter-flags for freduce-all-givs (bug id 27456) ./binutils-2.14.90.0.8-r1.ebuild: filter-flags -fomit-frame-pointer -fssa -freduce-all-givs ./binutils-2.14.90.0.8.ebuild: filter-flags -fomit-frame-pointer -fssa -freduce-all-givs ./binutils-2.15.90.0.1.1-r1.ebuild: filter-flags -fomit-frame-pointer -fssa -freduce-all-givs