if /bin/sh ../libtool --mode=compile i686-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../libvisual -I.. -I../libvisual -DPLUGPATH="\"/usr/lib/libvisual\"" -m32 -O3 -mtune=athlon-4 -fomit-frame-pointer -funroll-loops -pipe -MT lv_video_mmx.lo -MD -MP -MF ".deps/lv_video_mmx.Tpo" -c -o lv_video_mmx.lo lv_video_mmx.c; \ then mv -f ".deps/lv_video_mmx.Tpo" ".deps/lv_video_mmx.Plo"; else rm -f ".deps/lv_video_mmx.Tpo"; exit 1; fi if /bin/sh ../libtool --mode=compile i686-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../libvisual -I.. -I../libvisual -DPLUGPATH="\"/usr/lib/libvisual\"" -m32 -O3 -mtune=athlon-4 -fomit-frame-pointer -funroll-loops -pipe -MT lv_mem.lo -MD -MP -MF ".deps/lv_mem.Tpo" -c -o lv_mem.lo lv_mem.c; \ then mv -f ".deps/lv_mem.Tpo" ".deps/lv_mem.Plo"; else rm -f ".deps/lv_mem.Tpo"; exit 1; fi i686-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../libvisual -I.. -I../libvisual -DPLUGPATH=\"/usr/lib/libvisual\" -m32 -O3 -mtune=athlon-4 -fomit-frame-pointer -funroll-loops -pipe -MT lv_video_mmx.lo -MD -MP -MF .deps/lv_video_mmx.Tpo -c lv_video_mmx.c -fPIC -DPIC -o .libs/lv_video_mmx.o i686-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../libvisual -I.. -I../libvisual -DPLUGPATH=\"/usr/lib/libvisual\" -m32 -O3 -mtune=athlon-4 -fomit-frame-pointer -funroll-loops -pipe -MT lv_mem.lo -MD -MP -MF .deps/lv_mem.Tpo -c lv_mem.c -fPIC -DPIC -o .libs/lv_mem.o if /bin/sh ../libtool --mode=compile i686-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../libvisual -I.. -I../libvisual -DPLUGPATH="\"/usr/lib/libvisual\"" -m32 -O3 -mtune=athlon-4 -fomit-frame-pointer -funroll-loops -pipe -MT lv_audio.lo -MD -MP -MF ".deps/lv_audio.Tpo" -c -o lv_audio.lo lv_audio.c; \ then mv -f ".deps/lv_audio.Tpo" ".deps/lv_audio.Plo"; else rm -f ".deps/lv_audio.Tpo"; exit 1; fi {standard input}: Assembler messages: {standard input}:288: Error: suffix or operands invalid for `movd' make[2]: *** [lv_video_mmx.lo] Error 1 make[2]: *** Waiting for unfinished jobs.... i686-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../libvisual -I.. -I../libvisual -DPLUGPATH=\"/usr/lib/libvisual\" -m32 -O3 -mtune=athlon-4 -fomit-frame-pointer -funroll-loops -pipe -MT lv_audio.lo -MD -MP -MF .deps/lv_audio.Tpo -c lv_audio.c -fPIC -DPIC -o .libs/lv_audio.o make[2]: Leaving directory `/var/tmp/portage/libvisual-0.2.0/work/libvisual-0.2.0/libvisual' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/var/tmp/portage/libvisual-0.2.0/work/libvisual-0.2.0' make: *** [all] Error 2 !!! ERROR: media-libs/libvisual-0.2.0 failed. !!! Function src_compile, Line 18, Exitcode 2 !!! (no error message) !!! If you need support, post the topmost build error, NOT this status message. Portage 2.0.51.19 (default-linux/x86/2004.2, gcc-3.4.3-20050110, glibc-2.3.4.20050125-r1, 2.6.11-gentoo-r4 i686) ================================================================= System uname: 2.6.11-gentoo-r4 i686 mobile AMD Athlon(tm) XP 2500+ Gentoo Base System version 1.6.10 Python: dev-lang/python-2.3.5 [2.3.5 (#1, Feb 18 2005, 13:00:21)] distcc 2.18.3 i686-pc-linux-gnu (protocols 1 and 2) (default port 3632) [disabled] ccache version 2.3 [enabled] dev-lang/python: 2.3.5 sys-devel/autoconf: 2.13, 2.59-r6 sys-devel/automake: 1.9.5, 1.7.9-r1, 1.8.5-r3, 1.5, 1.6.3, 1.4_p6 sys-devel/binutils: 2.15.92.0.2-r1, 2.15.92.0.2-r7 sys-devel/libtool: 1.5.14 virtual/os-headers: 2.6.8.1-r2 ACCEPT_KEYWORDS="x86 ~x86" AUTOCLEAN="yes" CFLAGS="-m32 -O3 -mtune=athlon-4 -fomit-frame-pointer -funroll-loops -pipe" CHOST="i686-pc-linux-gnu" CONFIG_PROTECT="/etc /lib/modules /opt/glftpd/etc /opt/openjms/config /usr/kde/2/share/config /usr/kde/3.3/env /usr/kde/3.3/share/config /usr/kde/3.3/shutdown /usr/kde/3.4/env /usr/kde/3.4/share/config /usr/kde/3.4/shutdown /usr/kde/3/share/config /usr/lib/X11/xkb /usr/lib/fax /usr/lib/gcc/i686-pc-linux-gnu/3.4.3 /usr/lib/gcc/i686-pc-linux-gnu/3.4.4 /usr/lib/mozilla/defaults/pref /usr/share/config /usr/share/texmf/dvipdfm/config/ /usr/share/texmf/dvips/config/ /usr/share/texmf/tex/generic/config/ /usr/share/texmf/tex/platex/config/ /usr/share/texmf/xdvi/ /var/bind /var/qmail/control /var/spool/fax/etc" CONFIG_PROTECT_MASK="/etc/afs/C /etc/afs/afsws /etc/gconf /etc/terminfo /etc/env.d" CXXFLAGS="-m32 -O3 -mtune=athlon-4 -fomit-frame-pointer -funroll-loops -pipe" DISTDIR="/usr/portage/distfiles" FEATURES="autoaddcvs autoconfig buildpkg ccache distlocks sandbox sfperms" GENTOO_MIRRORS="ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/gentoo/ ftp://ftp.uni-muenster.de/pub/linux/distributions/gentoo http://ftp-stud.fht-esslingen.de/pub/Mirrors/gentoo/ http://ftp.uni-erlangen.de/pub/mirrors/gentoo" MAKEOPTS="-j2" PKGDIR="/usr/portage/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/usr/local/portage" SYNC="rsync://rsync.gentoo.org/gentoo-portage" USE="x86 16bit 3dnow 3dnowex 3dnowext X X509 Xaw3d a52 aac aalib accessibility accounting acl acpi activefilter ada adns afs aim alsa ao apache2 apm arts artswrappersuid artworkextra asterisk async atm audiofile authdaemond avi bash-completion bcmath berkdb bidi bind-mysql bitmap-fonts blas blender-game bluetooth bmp bonobo bootsplash boundchecking boundschecking bri brltty buffysize bzip2 bzlib c++ cairo calendar camaelon caps cdda cddb cdio cdparanoia cdr cgi chasen chroot cle266 clearcase clearpasswd codecs cpdflib crypt cscope ctype cups curl curlwrappers dbase dbm dbx dedicated devfs26 devmap dga dhcp dio directfb divx4linux djbfft dlloader dmalloc dmx dpms drac dts dv dvb dvd dvdr dvdread edl eds emacs emboss encode esd ethereal evo exif f77 faac faad fam fame fastcgi fax fb fbcon fbdev ffmpeg fftw filepro flac flash flatfile flexresp flood florz fltk fluidsynth font-server foomaticdb fortran fpx frascend freetype frlargefiles frxp ftp gb gcc-libffi gcj gd gd-external gdbm ggi gif gimpprint ginac glitz glut gmp gnokii gnome gnomedb gnustep gnutls gphoto2 gpm gps graphviz gsm gsnd gstreamer gtk gtk2 gtkhtml guile hal haskell hdf5 howl httpd hub iconv icq icu idea idled idn ieee1394 imagemagic imagemagick imap imlib imlib2 immqt immqt-bc inetd inifile inline innodb insecure-drivers intl ipalias ipv6 irda isdn jabber jack jack-tmpfs java javascript jbig jce jikes jit jks jms joystick jpeg jpeg2k junit jython kcal kde kdeenablefinal kdexdeltas kerberos koffice-plugin krb4 ladcca large-domain latex lcd lcms ldap leim lesstif libcaca libclamav libg++ libgda libsamplerate libwww lirc live lm_sensors logitech-mouse logrotate lua lynxkeymap lzo lzw-tiff mad maildir maildrop mailwrapper matroska matrox mbox mbrola mcal mcve md5sum mecab memlimit mhash mikmod mime ming mjpeg mmap mmx mmx2 mmxext mng modelock motif mozcalendar mozdevelop mozilla mozsvg mozxmlterm mp3 mpeg mpeg2 mpeg4 mpi mppe-mppc msn multicall multislot multitarget mysql mysql41 mythtv nagios-dns nagios-ntp nagios-ping nagios-ssh nas ncurses netboot netcdf nethack network neural nis nls nntp non-flattened nptl nptlonly nvidia oav objc odbc offensive ogg oggvorbis openexr opengl oscar oss pam pam_chroot pam_console pam_timestamp pascal pcap pcmcia pcntl pcre pcsc-lite pda pdflib perforce perl pg-hier pg-intdatetime pg-vacuumdelay php pic plotutils png pnp portaudio posix postgres povray ppds prelude pri procmail profile pvm pwdb python qemu-fast qhull qt quicktime quotas radius rdesktop readline real resperl rhino rrdtool rtc ruby samba sample sasl sblive scanner sdk sdl sendfile serial server session sftplogging sguil shaper shared sharedmem silc simplexml skey slang slp smartcard smime sms smtp smux sndfile snmp snortsam soap sockets socks5 softmmu softquota soundtouch sox spamassassin speex spell spl sql sqlite sse ssl static-modules stats stencil-buffer stream streamzap subject-rewrite subversion svg svga sysvipc szip tcltk tcpd test tetex tga theora threads tidy tiff timidity tokenizer transcode transparent-proxy truetype truetype-fonts type1-fonts ucs2 underscores unicode usb userlocales utf8 v4l v4l2 vcd vchroot vda vdesktop vhosts vidix vim-with-x virus-scan visualization vlm vorbis vpopmail wddx wifi winbind wmf wxwindows x11vnc xanim xbase xfs xim xine xinerama xml xml2 xmlrpc xmms xosd xpm xprint xscreensaver xsl xv xvid xvmc yahoo yaz zaptel zeroconf zlib" Unset: ASFLAGS, CBUILD, CTARGET, LANG, LC_ALL, LDFLAGS
I get the same error, only on line 295.
Does it happen with basic CFLAGS/CXXFLAGS?
How "unbasic" are my cflags? CFLAGS="-m32 -O2" emerge libvisual worked for me.
So, you are saying that it fails when you add some specific CFLAGS, is this correct? (BTW: why using -m32?)
C(XX)FLAGS=-O0 MAKEOPTS=-j1 works for me
libvisual belongs to sound@, doesn't it?
Created attachment 58435 [details, diff] patch to fix assembler issues
Created attachment 58436 [details] updated ebuild
Thanks, did you submit the patch to the author? I don't know much about assembler, can someone explain in which situations this bug is triggered?
1. No, I didn't submit patch to author. 2. Problem description: GCC 3.4.x treats assembler blocks a bit different from previous versions. I.e. for "g" it generates most optimal possible code (constant in our case). But SSE "mov" doesn't support constants as arguments, so assembler generates an error. Replacing "g", with "m" tells GCC to always treat variable as "memory" operand.
This is the same as bug 86321. Maybe we can just filter the -funroll-loops c-flags? Nickolay, I haven't tested your patch but this issue exists on gcc 3.3 as well, and disappears when -funroll-loops is taken out BUT -msse is still used.
*** Bug 86321 has been marked as a duplicate of this bug. ***
1. Filtering GCC optimization flags is a poor solution to problem. I.e. if GCC with particular flags generate wrong code, this is a serious issue and must be tracked to GCC team. However, in this application we have a clear source code bug. 2. Look in the sources. Generate assembler (without my patch), contains this command "movd $1000, %m4". (replace $1000, with any constant number you like). "movd" can't have constant arguments. This is generate from this source line: "#1\n\t movd %[fracu], %%mm4" And "fracu" is incorrectly specified as "g" argument. From "GNU Assembler manual": `g' Any register, memory or immediate integer operand is allowed, except for registers that are not general registers. So, we must replace "g" declaration with "m", which guarantees that %[fracu] will be replaced with memory argument. 3. Why removing -funroll-loops help in our case. -funroll-loops changes code scheduling and make %[fracu] substitution with constant possible. 4. We have working patch. What you are afraid of?
I just have this habit to make sure I understand something before I do it... Anyway, you are correct and I've committed it to CVS. Thanks alot!
Nickolay, care to report this upstream?
reported.