Trying to build xine-lib-1.2.6 with an mmx capable 64bits cpu running a 32bits arch (yes, not multilib, pure 32), the goom plugins fails trying to execute asm movq. Here's 3 files: 1- patch to fix the issue (dirty one tbh, i just fix the bad conditional, but i think nobody will use mmx with it now, early in the file there's a check for x86-64 arch and it disable it if set, so only x86 user can use mmx with it, and later it use movq on a part that is suppose to be for x86... kinda strange, i think the result is that the mmx usage in goom is disable for both archs, making the whole xmmx.c file useless). That's really strange as line 254 have a comment for the #endif that is /* ARCH_X86_64 */ like if really it was made that arch (hence the movq), while the earlier check disable it with that arch... Anyway until the goom dev fix it, nobody would die for not using mmx with that plugins, as long as it compile. 2- xine-lib-1.2.6-r2.ebuild that is a copy of -r1 but add epatch_user unconditionality (-r1 only use epatch_user if the ebuild is *9999* (i wonder why limiting epatch_user to *9999* is good) 3- build.log of -r1 :( -> https://bugs.gentoo.org/show_bug.cgi?id=541672#c3 (i didn't find myself a way to disable goom plugins from building, so i wonder how could he manage to have it build on x86...) Reproducible: Always Steps to Reproduce: 1. emerge xine-lib-1.2.6-r1 -1 2. 3. emerge --info xine-lib Portage 2.2.20 (python 2.7.10-final-0, default/linux/x86/13.0, gcc-4.9.2, glibc-2.20-r2, 3.18.14 i686) ================================================================= System Settings ================================================================= System uname: Linux-3.18.14-i686-Intel-R-_Core-TM-_i7-4790K_CPU_@_4.00GHz-with-gentoo-2.2 KiB Mem: 16574420 total, 13242392 free KiB Swap: 6294620 total, 6294504 free Timestamp of repository gentoo: Thu, 04 Jun 2015 08:00:01 +0000 sh bash 4.3_p39 ld GNU ld (Gentoo 2.25 p1.2) 2.25 distcc 3.2rc1 i686-pc-linux-gnu [disabled] app-shells/bash: 4.3_p39::gentoo dev-java/java-config: 2.2.0::gentoo dev-lang/perl: 5.20.2-r1::gentoo dev-lang/python: 2.7.10::gentoo, 3.3.5-r1::gentoo, 3.4.3::gentoo dev-util/cmake: 3.2.2::gentoo dev-util/pkgconfig: 0.28-r3::gentoo sys-apps/baselayout: 2.2::gentoo sys-apps/openrc: 0.16.4::gentoo sys-apps/sandbox: 2.6-r1::gentoo sys-devel/autoconf: 2.13::gentoo, 2.69-r1::gentoo sys-devel/automake: 1.11.6-r1::gentoo, 1.12.6::gentoo, 1.13.4::gentoo, 1.14.1::gentoo, 1.15::gentoo sys-devel/binutils: 2.25-r1::gentoo sys-devel/gcc: 4.9.2::gentoo sys-devel/gcc-config: 1.8::gentoo sys-devel/libtool: 2.4.6-r1::gentoo sys-devel/make: 4.1-r1::gentoo sys-kernel/linux-headers: 3.9::gentoo (virtual/os-headers) sys-libs/glibc: 2.20-r2::gentoo Repositories: gentoo location: /usr/portage sync-type: rsync sync-uri: rsync://faramir/gentoo-portage priority: -1000 local_overlay location: /usr/local/portage masters: gentoo priority: 0 hasufell location: /var/lib/layman/hasufell masters: gentoo priority: 50 Installed sets: @system ACCEPT_KEYWORDS="x86 ~x86" ACCEPT_LICENSE="*" CBUILD="i686-pc-linux-gnu" CFLAGS="-march=haswell -mmmx -msse -msse2 -msse3 -mssse3 -mcx16 -msahf -mmovbe -maes -mpclmul -mpopcnt -mabm -mfma -mbmi -mbmi2 -mavx -mavx2 -msse4.2 -msse4.1 -mlzcnt -mrtm -mhle -mrdrnd -mf16c -mfsgsbase -mfxsr -mxsave -mxsaveopt --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=8192 -mtune=haswell -fstack-protector-strong" CHOST="i686-pc-linux-gnu" CONFIG_PROTECT="/etc /usr/share/config /usr/share/gnupg/qualified.txt /var/lib/hsqldb" CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo" CXXFLAGS="-march=haswell -mmmx -msse -msse2 -msse3 -mssse3 -mcx16 -msahf -mmovbe -maes -mpclmul -mpopcnt -mabm -mfma -mbmi -mbmi2 -mavx -mavx2 -msse4.2 -msse4.1 -mlzcnt -mrtm -mhle -mrdrnd -mf16c -mfsgsbase -mfxsr -mxsave -mxsaveopt --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=8192 -mtune=haswell -fstack-protector-strong" DISTDIR="/usr/portage/distfiles" EMERGE_DEFAULT_OPTS="--keep-going --buildpkg" FCFLAGS="-O2 -march=i686 -pipe" FEATURES="assume-digests binpkg-logs buildpkg config-protect-if-modified ebuild-locks fixlafiles merge-sync news parallel-fetch protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync" FFLAGS="-O2 -march=i686 -pipe" GENTOO_MIRRORS="ftp://ftp.free.fr/mirrors/ftp.gentoo.org ftp://mirror.ovh.net/gentoo-distfiles http://gentoo.mirror.sdv.fr/ http://gentoo.oregonstate.edu/ http://www.ibiblio.org/pub/Linux/distributions/gentoo" LANG="fr_FR.UTF-8" LDFLAGS="-Wl,-Ol -Wl,--as-needed" MAKEOPTS="-j12" PKGDIR="/usr/portage/packages" PORTAGE_CONFIGROOT="/" PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages" PORTAGE_TMPDIR="/var/tmp" USE="X a52 aac aalib acl acpi alsa amarok apng audacious audio berkdb branding bzip2 cairo cdda cdr cleartype cli consolekit corefonts cracklib crypt cups cxx dbase dbus device-mapper divx dri dvd dvdread embedded encode exif extras fbsplash ffmpeg firefox flac ftp gdbm gdu glitz gmedia gnutls gstreamer gtk gtk2 gudev hddtemp iconv icu imap introspection ipod java javascript jpeg jpeg2k lame libcaca libnotify live lm_sensors logrotate lzo maildir matroska mdnsresponder-compat midi mikmod minizip mjpeg mng mod modplug modules moznomail moznoxft mp3 mp4 mp4live mpeg mpeg2 mplayer msn musepack ncurses network nfs nls nptl nsplugin ntfs ogg openal opengl openmp pam pcre png policykit python qt3support qt4 readline sdl sdl-image sensord session skins smp sqlite ssl startup-notification stream subtitles svg tcpd tga theora threads thunderbird tiff timidity truetype type1 udev unicode usb v4l v4l2 vcd vdpau vlm vorbis webkit wma wmf wxwindows x264 x86 xcb xcomposite xine xinerama xosd xulrunner xv xvid zip zlib" ABI_X86="32" ALSA_CARDS="intel-hda" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump author" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="aes avx avx2 fma3 mmx mmxext popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ublox ubx" INPUT_DEVICES="evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LINGUAS="fr fr_FR" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-5" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_3" RUBY_TARGETS="ruby22 ruby20" USERLAND="GNU" VIDEO_CARDS="nvidia" 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, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, USE_PYTHON ================================================================= Package Settings ================================================================= media-libs/xine-lib-1.2.6-r2::gentoo was built with the following: USE="X a52 aac aalib alsa css flac gtk jpeg libcaca mmap mng modplug musepack nls opengl sdl theora truetype v4l vcd vdpau vorbis xcb xinerama xv (-altivec) -bluray -directfb -dts -dvb -dxr3 -fbcon -fusion -imagemagick -ipv6 -jack -libav -mad -oss -pulseaudio -samba -speex -vaapi -vdr -vidix (-vis) -vpx -wavpack -xvmc" CFLAGS="-march=haswell -mmmx -msse -msse2 -msse3 -mssse3 -mcx16 -msahf -mmovbe -maes -mpclmul -mpopcnt -mabm -mfma -mbmi -mbmi2 -mavx -mavx2 -msse4.2 -msse4.1 -mlzcnt -mrtm -mhle -mrdrnd -mf16c -mfsgsbase -mfxsr -mxsave -mxsaveopt --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=8192 -mtune=haswell -fstack-protector-strong -fomit-frame-pointer" CXXFLAGS="-march=haswell -mmmx -msse -msse2 -msse3 -mssse3 -mcx16 -msahf -mmovbe -maes -mpclmul -mpopcnt -mabm -mfma -mbmi -mbmi2 -mavx -mavx2 -msse4.2 -msse4.1 -mlzcnt -mrtm -mhle -mrdrnd -mf16c -mfsgsbase -mfxsr -mxsave -mxsaveopt --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=8192 -mtune=haswell -fstack-protector-strong -fomit-frame-pointer"
Created attachment 404680 [details, diff] patch to fix the issue
Created attachment 404682 [details] ebuild with epatch_user enable
Created attachment 404684 [details] build.log with failure for -r1
I forget: please note that the patch enable the function for x86-64 user, i think it will still be disable by early check, but this mean the patch fix the issue for x86 users by re-enabling the function only for x86-64 users. It mean i have test and the goom filter works after that on x86, but i don't know how it will do for x86-64 users now that it enable it only for them. (at least they won't complain for movq, but the function may crash... no idea, but it should be test or maybe only apply the patch to x86 users.
Same for r2 on x86: xmmx.c: Assembler messages: xmmx.c:79: Error: unsupported instruction `movq' xmmx.c:80: Error: unsupported instruction `movq' make[3]: *** [Makefile:782: libpost_goom_asm_la-xmmx.lo] Error 1 make[3]: *** Waiting for unfinished jobs.... make[3]: Leaving directory '/var/tmp/portage/media-libs/xine-lib-1.2.6-r2/work/xine-lib-1.2.6/src/post/goom' make[2]: *** [Makefile:597: all-recursive] Error 1 make[2]: Leaving directory '/var/tmp/portage/media-libs/xine-lib-1.2.6-r2/work/xine-lib-1.2.6/src/post' make[1]: *** [Makefile:615: all-recursive] Error 1 make[1]: Leaving directory '/var/tmp/portage/media-libs/xine-lib-1.2.6-r2/work/xine-lib-1.2.6/src' make: *** [Makefile:692: all-recursive] Error 1