I think this is possibly architecture specific as it compiled fine on my amd64 machine. Build log to follow... Emerge command: starbug ~ # emerge -pqv =media-video/ffmpeg-0.5_p22846 [ebuild U ] media-video/ffmpeg-0.5_p22846 [0.5_p20373] USE="X encode hardcoded-tables mmx pic* ssse3 threads zlib -3dnow -3dnowext -alsa (-altivec) -amr% -bindist -cpudetection -custom-cflags -debug -dirac -doc -faac -faad -gsm -ieee1394 -jack -jpeg2k -mmxext -mp3 -network -oss -schroedinger -sdl -speex -test -theora -v4l -v4l2 -vdpau -vorbis -x264 -xvid (-ipv6%*) (-opencore-amr%)" VIDEO_CARDS="-nvidia" Emerge info output: starbug ~ # emerge --info =media-video/ffmpeg-0.5_p22846 Portage 2.2_rc67 (default/linux/x86/10.0/server, gcc-4.4.3, glibc-2.11.1-r0, 2.6.32-gentoo-r6 i686) ================================================================= System Settings ================================================================= System uname: Linux-2.6.32-gentoo-r6-i686-Intel-R-_Xeon-TM-_CPU_2.40GHz-with-gentoo-2.0.1 Timestamp of tree: Fri, 07 May 2010 10:30:01 +0000 distcc 3.1 i686-pc-linux-gnu [disabled] ccache version 2.4 [disabled] app-shells/bash: 4.1_p5 dev-java/java-config: 2.1.11 dev-lang/python: 2.6.5-r2, 3.1.2-r3 dev-python/pycrypto: 2.1.0 dev-util/ccache: 2.4-r8 dev-util/cmake: 2.8.1-r1 sys-apps/baselayout: 2.0.1 sys-apps/openrc: 0.6.1-r1 sys-apps/sandbox: 2.2 sys-devel/autoconf: 2.13, 2.65 sys-devel/automake: 1.4_p6-r1, 1.7.9-r2, 1.8.5-r4, 1.9.6-r3, 1.10.3, 1.11.1 sys-devel/binutils: 2.20.1 sys-devel/gcc: 4.4.3-r2 sys-devel/gcc-config: 1.4.1 sys-devel/libtool: 2.2.6b virtual/os-headers: 2.6.33 ACCEPT_KEYWORDS="x86 ~x86" ACCEPT_LICENSE="* -@EULA" CBUILD="i686-pc-linux-gnu" CFLAGS="-O2 -march=pentium4 -fforce-addr -pipe -fomit-frame-pointer" CHOST="i686-pc-linux-gnu" CONFIG_PROTECT="/etc /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/share/X11/xkb /usr/share/config /var/bind" CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/ /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/php/apache2-php5/ext-active/ /etc/php/cgi-php5/ext-active/ /etc/php/cli-php5/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo" CXXFLAGS="-O2 -march=pentium4 -fforce-addr -pipe -fomit-frame-pointer" DISTDIR="/tmp/distfiles" FEATURES="assume-digests distlocks fixpackages news parallel-fetch preserve-libs protect-owned sandbox sfperms strict unmerge-logs unmerge-orphans userfetch userpriv" GENTOO_MIRRORS="http://gentoo.virginmedia.com http://www.mirrorservice.org/sites/www.ibiblio.org/gentoo/ http://vlaai.snt.ipv6.utwente.nl/pub/os/linux/gentoo/ http://gentoo.osuosl.org ftp://ftp.mirrorservice.org/sites/www.ibiblio.org/gentoo/ ftp://ftp.join.uni-muenster.de/pub/linux/distributions/gentoo" LANG="en_GB.UTF-8" LDFLAGS="-Wl,--as-needed" LINGUAS="en_GB en" MAKEOPTS="-j5" PKGDIR="/usr/portage/packages" PORTAGE_CONFIGROOT="/" PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/var/lib/layman/sunrise /var/lib/layman/annunaki2k2 /var/lib/layman/kde-sunset /usr/local/portage" SYNC="rsync://rsync.gentoo.org/gentoo-portage" USE="X acl acpi amarok apache2 apm avahi bash-completion berkdb bidi bzip2 caps clamav clamd clamdtop cli consolekit cpio cracklib crypt cups curl cxx dbus dedicated dell device-mapper dhcp disk-partition dri fam fastcgi foomaticdb fortran fuse gdbm gdu glibc-omitfp gnome gnome-keyring gpm gtkhtml hal howl-compat iconv idn ipv6 ithreads kerberos ldap libclamav libnotify libwww logrotate lzma maildir mdnsresponder-compat mmx modules mpi mppe-mppc mudflap mysql nas ncurses netboot new-hpcups nls noamazon nptl nptlonly oav odbc openmp optimization optimized-qmake pam pcre perl php pic policykit pppd python qt3support readline reflection regex reiserfs rtc samba session slp smp snmp sockets spell spl sql sse sse2 ssl startup-notification stream strong-optimization svg sysfs syslog sysvipc szip tcl tcltk tcp tcpd threads tk truetype unicode urandom usb userlocales vim-syntax x86 xattr xcb xml xorg zeroconf zip zlib" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic auth_digest authn_anon authn_dbd authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock dbd deflate dir disk_cache env expires ext_filter file_cache filter headers ident imagemap include info log_config logio mem_cache mime mime_magic negotiation proxy proxy_ajp proxy_balancer proxy_connect proxy_http rewrite setenvif so speling status unique_id userdir usertrack vhost_alias" ELIBC="glibc" INPUT_DEVICES="keyboard mouse evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="en_GB en" RUBY_TARGETS="ruby18" USERLAND="GNU" VIDEO_CARDS="mach64" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account" Unset: CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, LC_ALL, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS Reproducible: Always Steps to Reproduce: 1. emerge -ua ffmpeg Actual Results: CC libavfilter/vf_aspect.o CC libavfilter/vf_crop.o CC libavfilter/vf_format.o CC libavfilter/vf_null.o CC libavfilter/vf_scale.o CC libavfilter/vf_slicify.o CC libavfilter/vf_unsharp.o libavfilter/vf_scale.c: In function ‘draw_slice’: libavfilter/vf_scale.c:179: warning: passing argument 2 of ‘sws_scale’ from incompatible pointer type ./libswscale/swscale.h:195: note: expected ‘const uint8_t * const*’ but argument is of type ‘uint8_t **’ CC libavfilter/vf_vflip.o CC libavfilter/vsink_nullsink.o In file included from libavcodec/x86/dsputil_mmx.c:1818: libavcodec/x86/h264dsp_mmx.c: In function ‘put_h264_qpel8_h_lowpass_3dnow’: libavcodec/x86/h264dsp_mmx.c:2079: error: can't find a register in class ‘GENERAL_REGS’ while reloading ‘asm’ libavcodec/x86/h264dsp_mmx.c:2079: error: ‘asm’ operand has impossible constraints CC libavfilter/vsrc_nullsrc.o CC libswscale/options.o CC libswscale/rgb2rgb.o CC libswscale/swscale.o CC libswscale/utils.o CC libswscale/x86/yuv2rgb_mmx.o In file included from libswscale/x86/yuv2rgb_mmx.c:52: libswscale/x86/yuv2rgb_template.c: In function ‘yuva420_rgb32_MMX’: libswscale/x86/yuv2rgb_template.c:528: warning: no return statement in function returning non-void libswscale/x86/yuv2rgb_template.c: In function ‘yuva420_bgr32_MMX’: libswscale/x86/yuv2rgb_template.c:564: warning: no return statement in function returning non-void In file included from libswscale/x86/yuv2rgb_mmx.c:59: libswscale/x86/yuv2rgb_template.c: In function ‘yuva420_rgb32_MMX2’: libswscale/x86/yuv2rgb_template.c:528: warning: no return statement in function returning non-void libswscale/x86/yuv2rgb_template.c: In function ‘yuva420_bgr32_MMX2’: libswscale/x86/yuv2rgb_template.c:564: warning: no return statement in function returning non-void In file included from libswscale/swscale.c:1209: libswscale/swscale_template.c: In function ‘yuv2yuv1_MMX’: libswscale/swscale_template.c:954: warning: initialization from incompatible pointer type libswscale/swscale_template.c:954: warning: initialization from incompatible pointer type libswscale/swscale_template.c:954: warning: initialization from incompatible pointer type libswscale/swscale_template.c:954: warning: initialization from incompatible pointer type libswscale/swscale_template.c: In function ‘yuv2packed2_MMX’: libswscale/swscale_template.c:1235: warning: dereferencing type-punned pointer will break strict-aliasing rules libswscale/swscale_template.c:1236: warning: dereferencing type-punned pointer will break strict-aliasing rules libswscale/swscale_template.c: In function ‘swScale_MMX’: libswscale/swscale_template.c:2764: warning: cast from pointer to integer of different size libswscale/swscale_template.c:2770: warning: cast from pointer to integer of different size libswscale/swscale_template.c:2777: warning: cast from pointer to integer of different size libswscale/swscale_template.c: In function ‘sws_init_swScale_MMX’: libswscale/swscale_template.c:2965: warning: assignment from incompatible pointer type libswscale/swscale_template.c:2980: warning: assignment from incompatible pointer type libswscale/swscale_template.c:3025: warning: assignment from incompatible pointer type CC libswscale/yuv2rgb.o libswscale/yuv2rgb.c: In function ‘ff_yuv2rgb_c_init_tables’: libswscale/yuv2rgb.c:754: warning: passing argument 4 of ‘fill_table’ from incompatible pointer type libswscale/yuv2rgb.c:598: note: expected ‘uint8_t *’ but argument is of type ‘uint16_t *’ libswscale/yuv2rgb.c:755: warning: passing argument 4 of ‘fill_table’ from incompatible pointer type libswscale/yuv2rgb.c:598: note: expected ‘uint8_t *’ but argument is of type ‘uint16_t *’ libswscale/yuv2rgb.c:756: warning: passing argument 4 of ‘fill_table’ from incompatible pointer type libswscale/yuv2rgb.c:598: note: expected ‘uint8_t *’ but argument is of type ‘uint16_t *’ libswscale/yuv2rgb.c:777: warning: passing argument 4 of ‘fill_table’ from incompatible pointer type libswscale/yuv2rgb.c:598: note: expected ‘uint8_t *’ but argument is of type ‘uint16_t *’ libswscale/yuv2rgb.c:778: warning: passing argument 4 of ‘fill_table’ from incompatible pointer type libswscale/yuv2rgb.c:598: note: expected ‘uint8_t *’ but argument is of type ‘uint16_t *’ libswscale/yuv2rgb.c:779: warning: passing argument 4 of ‘fill_table’ from incompatible pointer type libswscale/yuv2rgb.c:598: note: expected ‘uint8_t *’ but argument is of type ‘uint16_t *’ libswscale/yuv2rgb.c:814: warning: passing argument 4 of ‘fill_table’ from incompatible pointer type libswscale/yuv2rgb.c:598: note: expected ‘uint8_t *’ but argument is of type ‘uint32_t *’ libswscale/yuv2rgb.c:815: warning: passing argument 4 of ‘fill_table’ from incompatible pointer type libswscale/yuv2rgb.c:598: note: expected ‘uint8_t *’ but argument is of type ‘uint32_t *’ libswscale/yuv2rgb.c:816: warning: passing argument 4 of ‘fill_table’ from incompatible pointer type libswscale/yuv2rgb.c:598: note: expected ‘uint8_t *’ but argument is of type ‘uint32_t *’ make: *** [libavcodec/x86/dsputil_mmx.o] Error 1 make: *** Waiting for unfinished jobs.... libswscale/yuv2rgb.c:649: warning: ‘abase’ may be used uninitialized in this function rm libavcodec/mdct_tablegen libavcodec/dv_tablegen libavcodec/cbrt_tablegen libavcodec/motionpixels_tablegen libavcodec/pcm_tablegen libavcodec/qdm2_tablegen * ERROR: media-video/ffmpeg-0.5_p22846 failed: * make failed * * Call stack: * ebuild.sh, line 48: Called src_compile * environment, line 2639: Called die * The specific snippet of code: * emake || die "make failed" * * If you need support, post the output of 'emerge --info =media-video/ffmpeg-0.5_p22846', * the complete build log and the output of 'emerge -pqv =media-video/ffmpeg-0.5_p22846'. * The complete build log is located at '/var/log/portage/media-video:ffmpeg-0.5_p22846:20100508-222905.log'. * The ebuild environment file is located at '/var/tmp/portage/media-video/ffmpeg-0.5_p22846/temp/environment'. * S: '/var/tmp/portage/media-video/ffmpeg-0.5_p22846/work/ffmpeg-
Created attachment 230827 [details] Build failure log
Looks like a dupe of bug 290741 - a different file, but the same error.
*** This bug has been marked as a duplicate of bug 290741 ***
This is not a duplicate, 290741 is about a compiler bug where the compiler manages to confuse itself due to inlining. This however is code we cannot reasonably expect gcc to compile, plus it is relatively easy to fix without any real hacks.
(In reply to comment #4) > This is not a duplicate, 290741 is about a compiler bug where the compiler > manages to confuse itself due to inlining. > This however is code we cannot reasonably expect gcc to compile, plus it is > relatively easy to fix without any real hacks. > Really ? (In reply to comment #0) > In file included from libavcodec/x86/dsputil_mmx.c:1818: > libavcodec/x86/h264dsp_mmx.c: In function ‘put_h264_qpel8_h_lowpass_3dnow’: > libavcodec/x86/h264dsp_mmx.c:2079: error: can't find a register in class > ‘GENERAL_REGS’ while reloading ‘asm’ > libavcodec/x86/h264dsp_mmx.c:2079: error: ‘asm’ operand has impossible > constraints from bug #290741, I read: In file included from libavcodec/x86/dsputil_mmx.c:1819: libavcodec/x86/h264dsp_mmx.c: In function ‘put_h264_qpel4_h_lowpass_3dnow’: libavcodec/x86/h264dsp_mmx.c:2058: error: can't find a register in class ‘GENERAL_REGS’ while reloading ‘asm’ libavcodec/x86/h264dsp_mmx.c:2058: error: ‘asm’ operand has impossible constraints
Well, I actually missed that one and only saw the lpc_mmx.c one. Still, one is in the qpel4 and the other in the qpel8 function. The one this bug is about (in the qpel8 function) is fixed in upstream FFmpeg, the qpel4 one from the other bug _maybe_ also (but then quite some time ago already), whereas there is no easy fix for the lpc_mmx.c one.
reopening then; what woud you suggest ? I'm seriously considering masking the pic useflag on x86 considering how gcc is broken with ffmpeg's inline asm.
Well, a lot of these bugs are things that can and should be fixed upstream, so I welcome people doing this kind of testing. One way to reduce the frequency of this kind of thing would be to make sure to have one or more FATE (http://fate.multimedia.cx) configurations testing x86+pic so it should always work on at least some compiler versions. Apart from that, adding a warning to the ebuild that suggests recompiling with -pic might be a good idea.
i dont see how re-opening this bug matters. the dupe is still open and is the same issue. x86 has limited registers and using a lot of inline assembly will not work very well with it. *** This bug has been marked as a duplicate of bug 290741 ***
Whatever you want - I just didn't consider making this a duplicate as helpful. This bug can be resolved by updating FFmpeg to a newer version, to solve the other bug (in addition) a different compiler version must be used.