Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 130557

Summary: media-libs/libmpeg3-1.5.2-r3 with "mmx" fails to compile
Product: Gentoo Linux Reporter: Rumen Yotov <rumen>
Component: [OLD] LibraryAssignee: Gentoo Developers for the x86 Architecture <x86>
Status: VERIFIED FIXED    
Severity: normal CC: andre, askwar, bigfoot, bjoern, bugs, bugzilla, d.gaffuri, dan.dickey, ferdinando.formica, fuzzyray, graham, hanno, harrisl, hydonsingore, ignoreme, iyosifov, jakub, jstubbs, leonidp.lists, Martin.vGagern, matteo-ml, mattmcadoo, media-video, pageexec, patrick, patrizio.bassi, philantrop, pierre.poissinger, pollux, samuel.robyr, sgtphou, tECHIDNA, tiago.freire, tm, wWolfovich, xmit
Priority: High    
Version: 2006.0   
Hardware: x86   
OS: Linux   
Whiteboard:
Package list:
Runtime testing required: ---
Attachments: A "dirty bastard" patch
Dirty bastard ebuild patch v2
The dirty x86 ebuild patch

Description Rumen Yotov 2006-04-20 00:00:13 UTC
Hi,
Initially when tried to emerge with "mmx" USE flag the build failed.
Next manually switched OFF "mmx" and now it's OK.
So (in my case) i need to filter "mmx" in order to compile libmpeg3.
Error log is next:
...BEGIN...
i686-pc-linux-gnu-gcc -fPIC -c `cat i686/c_flags`  video/headers.c -o i686/video/headers.lo
i686-pc-linux-gnu-gcc -fPIC -c `cat i686/c_flags`  video/idct.c -o i686/video/idct.lo
i686-pc-linux-gnu-gcc -fPIC -c `cat i686/c_flags`  video/macroblocks.c -o i686/video/macroblocks.lo
i686-pc-linux-gnu-gcc -fPIC -c `cat i686/c_flags`  video/mmxtest.c -o i686/video/mmxtest.lo
i686-pc-linux-gnu-gcc -fPIC -c `cat i686/c_flags`  video/motion.c -o i686/video/motion.lo
i686-pc-linux-gnu-gcc -fPIC -c `cat i686/c_flags`  video/mpeg3video.c -o i686/video/mpeg3video.lo
i686-pc-linux-gnu-gcc -fPIC -c `cat i686/c_flags`  video/output.c -o i686/video/output.lo
video/output.c:210: warning: integer constant is too large for 
Comment 1 Rumen Yotov 2006-04-20 00:00:13 UTC
Hi,
Initially when tried to emerge with "mmx" USE flag the build failed.
Next manually switched OFF "mmx" and now it's OK.
So (in my case) i need to filter "mmx" in order to compile libmpeg3.
Error log is next:
...BEGIN...
i686-pc-linux-gnu-gcc -fPIC -c `cat i686/c_flags`  video/headers.c -o i686/video/headers.lo
i686-pc-linux-gnu-gcc -fPIC -c `cat i686/c_flags`  video/idct.c -o i686/video/idct.lo
i686-pc-linux-gnu-gcc -fPIC -c `cat i686/c_flags`  video/macroblocks.c -o i686/video/macroblocks.lo
i686-pc-linux-gnu-gcc -fPIC -c `cat i686/c_flags`  video/mmxtest.c -o i686/video/mmxtest.lo
i686-pc-linux-gnu-gcc -fPIC -c `cat i686/c_flags`  video/motion.c -o i686/video/motion.lo
i686-pc-linux-gnu-gcc -fPIC -c `cat i686/c_flags`  video/mpeg3video.c -o i686/video/mpeg3video.lo
i686-pc-linux-gnu-gcc -fPIC -c `cat i686/c_flags`  video/output.c -o i686/video/output.lo
video/output.c:210: warning: integer constant is too large for long type
video/output.c:212: warning: integer constant is too large for long type
video/output.c:214: warning: integer constant is too large for long type
video/output.c:301: warning: integer constant is too large for long type
video/output.c:303: warning: integer constant is too large for long type
video/mpeg3video.c: In function mpeg3video_read_yuvframe_ptr:
video/mpeg3video.c:683: warning: pointer targets in assignment differ in signedness
video/mpeg3video.c:684: warning: pointer targets in assignment differ in signedness
video/mpeg3video.c:685: warning: pointer targets in assignment differ in signedness
i686-pc-linux-gnu-gcc -fPIC -c `cat i686/c_flags`  video/reconstruct.c -o i686/video/reconstruct.lo
i686-pc-linux-gnu-gcc -fPIC -c `cat i686/c_flags`  video/seek.c -o i686/video/seek.lo
i686-pc-linux-gnu-gcc -fPIC -c `cat i686/c_flags`  video/slice.c -o i686/video/slice.lo
video/seek.c: In function mpeg3video_seek:
video/seek.c:266: warning: integer constant is too large for long type
video/seek.c:268: warning: integer constant is too large for long type
i686-pc-linux-gnu-gcc -fPIC -c `cat i686/c_flags`  video/vlc.c -o i686/video/vlc.lo
i686-pc-linux-gnu-gcc -fPIC -c `cat i686/c_flags`  workarounds.c -o i686/workarounds.lo
video/slice.c: In function mpeg3_decode_slice:
video/slice.c:211: error: can't find a register in class BREG while reloading asm
make: *** [i686/video/slice.lo] Error 1
make: *** Waiting for unfinished jobs....

!!! ERROR: media-libs/libmpeg3-1.5.2-r3 failed.
Call stack:
  ebuild.sh, line 1532:   Called dyn_compile
  ebuild.sh, line 929:   Called src_compile
  libmpeg3-1.5.2-r3.ebuild, line 56:   Called die

!!! make failed
!!! If you need support, post the topmost build error, and the call stack if relevant.
...END...
Seems to be some MMX issue with ASM here.
Thanks.Rumen
emerge --info:
Gentoo Base System version 1.12.0_pre17
Portage 2.1_pre7-r5 (!/usr/portage/profiles/default-linux/x86/2006.0, gcc-4.0.3, glibc-2.4-r1, 2.6.16-gentoo-r3 i686)
=================================================================
System uname: 2.6.16-gentoo-r3 i686 AMD Athlon(tm) XP 2200+
dev-lang/python:     2.4.2-r1
sys-apps/sandbox:    1.2.17
sys-devel/autoconf:  2.13, 2.59-r7
sys-devel/automake:  1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2
sys-devel/binutils:  2.16.1-r2
sys-devel/libtool:   1.5.22
virtual/os-headers:  2.6.11-r5
ACCEPT_KEYWORDS="x86 ~x86"
ACCEPT_LICENSE=""
ALSA_CARDS="ens1371"
ARCH="x86"
AUTOCLEAN="yes"
BASH_ENV="/etc/spork/is/not/valid/profile.env"
CBUILD="i686-pc-linux-gnu"
CCACHE_DIR="/var/tmp/ccache"
CCACHE_SIZE="2G"
CFLAGS="-O2 -march=athlon-xp -pipe -fomit-frame-pointer"
CHOST="i686-pc-linux-gnu"
CLEAN_DELAY="5"
CONFIG_PROTECT="/etc /usr/kde/2/share/config /usr/kde/3/share/config /usr/share/config /var/qmail/control"
CONFIG_PROTECT_MASK="/etc/eselect/compiler /etc/gconf /etc/init.d /etc/env.d"
CXXFLAGS="-O2 -march=athlon-xp -pipe -fomit-frame-pointer"
DISTDIR="/var/portage/distfiles"
ELIBC="glibc"
EMERGE_DEFAULT_OPTS="--verbose"
EMERGE_WARNING_DELAY="10"
FEATURES="autoconfig buildpkg ccache collision-protect confcache distlocks enotice gpg parallel-fetch sandbox sfperms userpriv usersandbox"
FETCHCOMMAND="/usr/bin/wget -t 5 --passive-ftp -P ${DISTDIR} ${URI}"
GENTOO_MIRRORS="http://gentoo.ITDNet.net/gentoo http://mirror.datapipe.net/gentoo"
HOME="/home/gentoo"
INPUT_DEVICES="keyboard mouse"
KERNEL="linux"
LINGUAS="en bg pt"
LOGNAME="root"
MAKEOPTS="-j2"
PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/opt/bin:/usr/i686-pc-linux-gnu/gcc-bin/3.4.4:/usr/kde/3.5/sbin:/usr/kde/3.5/bin:/usr/qt/3/bin:/usr/kde/3.4/sbin:/usr/kde/3.4/bin:/usr/NX/bin:/var/qmail/bin"
PKGDIR="/var/portage/packages"
PORTAGE_ARCHLIST="ppc s390 amd64 ppc64 x86-fbsd m68k arm sparc sh mips ia64 alpha ppc-macos hppa x86"
PORTAGE_BINHOST_CHUNKSIZE="3000"
PORTAGE_CALLER="emerge"
PORTAGE_ELOG_CLASSES="info warn error log"
PORTAGE_ELOG_MAILFROM="portage@qrypto.org"
PORTAGE_ELOG_MAILURI="gentoo@mach.qrypto.org localhost"
PORTAGE_ELOG_SYSTEM="save mail"
PORTAGE_GID="250"
PORTAGE_GPG_DIR="/etc/portage/gpg"
PORTAGE_INST_GID="0"
PORTAGE_INST_UID="0"
PORTAGE_MASTER_PID="30138"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --delete-after --stats --timeout=180 --exclude='/distfiles' --exclude='/local' --exclude='/packages'"
PORTAGE_RSYNC_RETRIES="3"
PORTAGE_TMPDIR="/var/tmp"
PORTAGE_TMPFS="/dev/shm"
PORTAGE_WORKDIR_MODE="0700"
PORTDIR="/var/portage"
PORTDIR_OVERLAY="/usr/local/portage /usr/portage/local/layman/ecatmur /usr/portage/local/layman/kolab2 /usr/portage/local/layman/webapps-experimental"
PORT_ENOTICE_DIR="/var/enotice/"
PORT_LOGDIR="/var/log/portage"
PRELINK_PATH=""
PRELINK_PATH_MASK=""
RESUMECOMMAND="/usr/bin/wget -c -t 5 --passive-ftp -P ${DISTDIR} ${URI}"
RPMDIR="/usr/portage/rpm"
SEARCH_DIRS_MASK="/usr/lib/openoffice"
SHELL="/bin/bash"
SUDO_COMMAND="/usr/bin/emerge --info"
SUDO_GID="100"
SUDO_UID="1000"
SUDO_USER="gentoo"
SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"
TERM="xterm"
USE="x86 3dnow X X509 a52 aac acl acpi alsa apache2 avi bash-completion berkdb bitmap-fonts caps cdb cdr cli crypt cups curl dri dvd dvdr eds encode esd evo exif ffmpeg flac foomaticdb freetype gd gif gnutls gstreamer gtk gtk2 gtkhtml hal iconv imap imlib ipv6 isdnlog ithreads javascript jpeg kdexdeltas lcms libg++ libwww mad maildir matroska mikmod mime mmx motif mp3 mpeg ncurses nls nptl nvidia ogg opengl oss pam pcre pdflib perl png posix ppds pppd prelude python quicktime readline reflection sdl session skey speex spell spl sse ssl svg symlink tcpd theora threads transcode truetype truetype-fonts type1-fonts udev unicode usb vorbis win32codecs xine xml xsl xv xvid zlib elibc_glibc input_devices_keyboard input_devices_mouse kernel_linux linguas_en linguas_bg linguas_pt userland_GNU video_cards_vesa video_cards_fbdev video_cards_nv"
USER="root"
USERLAND="GNU"
USE_EXPAND="DVB_CARDS ELIBC FCDSL_CARDS FRITZCAPI_CARDS INPUT_DEVICES KERNEL LINGUAS USERLAND VIDEO_CARDS"
USE_EXPAND_HIDDEN=""
USE_ORDER="env:pkg:conf:defaults"
VIDEO_CARDS="vesa fbdev nv"
XARGS="xargs -r"
Comment 2 Jakub Moc (RETIRED) gentoo-dev 2006-04-20 00:24:46 UTC
Grrrh, this thing is a serious crap... :/ Flameeyes, perhaps related to the latest patch you added?
Comment 3 Oton V. Mahni&#269; 2006-04-20 00:40:29 UTC
For me works ok with mmx flag. I got only two deprecated warnings: lvalues and cast. But it compiles. Where did you put the mmx use flag anyway?
[ebuild   R   ] media-libs/libmpeg3-1.5.2-r3  0 kB
Comment 4 Rumen Yotov 2006-04-20 00:49:39 UTC
Hi,
Check with "emerge media-libs/libmpeg3 -pv".
Here's my output:
[ebuild   R   ] media-libs/libmpeg3-1.5.2-r3  USE="-mmx" 0 kB
Was "mmx" before putting "media-libs/libmpeg3 -mmx" in /etc/portage/package.use
HTH.Rumen
Comment 5 Diego Elio Pettenò (RETIRED) gentoo-dev 2006-04-20 01:33:07 UTC
It's because I'm forcing -fPIC for the shared library as it should have been. Sigh.

Hardened, x86 teams, someone can prepare something about this? :|
Comment 6 Ferdinando Formica 2006-04-20 01:46:59 UTC
Same here, but the error is:

video/output.c: In function `mpeg3video_rgb16_mmx':
video/output.c:53: error: can't find a register in class `GENERAL_REGS' while reloading `asm'
make: *** [i686/video/output.lo] Error 1

Same register thing, though, and removing the mmx flags works.

My emerge --info:
Portage 2.1_pre7-r5 (default-linux/x86/2006.0, gcc-3.4.6, glibc-2.4-r1, 2.6.16-gentoo-r2 i686)
=================================================================
System uname: 2.6.16-gentoo-r2 i686 Intel(R) Pentium(R) 4 CPU 2.66GHz
Gentoo Base System version 1.12.0_pre17
dev-lang/python:     2.4.2-r1
sys-apps/sandbox:    1.2.17
sys-devel/autoconf:  2.13, 2.59-r7
sys-devel/automake:  1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2
sys-devel/binutils:  2.16.1-r2
sys-devel/libtool:   1.5.22
virtual/os-headers:  2.6.11-r5
ACCEPT_KEYWORDS="x86 ~x86"
AUTOCLEAN="yes"
CBUILD="i686-pc-linux-gnu"
CFLAGS="-march=pentium4 -Os -pipe"
CHOST="i686-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/kde/2/share/config /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/kde/3/share/config /usr/share/X11/xkb /usr/share/config /var/qmail/control"
CONFIG_PROTECT_MASK="/etc/eselect/compiler /etc/gconf /etc/revdep-rebuild /etc/terminfo /etc/env.d"
CXXFLAGS="-march=pentium4 -Os -pipe"
DISTDIR="/var/tmp/distfiles"
FEATURES="autoconfig candy distlocks metadata-transfer sandbox sfperms strict"
GENTOO_MIRRORS="http://gentoo.inode.at/ http://ftp.rhnet.is/pub/gentoo/ ftp://ftp.rhnet.is/pub/gentoo/ http://ftp.easynet.nl/mirror/gentoo/ ftp://ftp.easynet.nl/mirror/gentoo/ ftp://linux.rz.ruhr-uni-bochum.de/gentoo-mirror/ http://linux.rz.ruhr-uni-bochum.de/download/gentoo-mirror/ ftp://ftp.tu-clausthal.de/pub/linux/gentoo/"
LANG="it_IT@euro"
LC_ALL="it_IT@euro"
LINGUAS="it"
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 X aac acpi alsa apache2 apm arts avi berkdb bitmap-fonts bzip2 cdr cli crypt cups dga directfb dri dvd dvdr dvdread eds emboss encode ffmpeg foomaticdb fortran gdbm gif gpm ieee1394 imlib ipv6 isdnlog jpeg kde kdeenablefinal kdexdeltas libg++ libwww mad mbox mikmod mime mmx motif mozilla mp3 mpeg ncurses nls nptl nsplugin offensive ogg opengl pam pcmcia pcre pdflib perl pic png pppd python qt quicktime readline reflection sdl session spell spl sse sse2 ssl symlink tcpd threads tiff truetype truetype-fonts type1-fonts udev usb vorbis wifi win32codecs xine xml xmms xv xvid zlib elibc_glibc input_devices_evdev input_devices_keyboard input_devices_mouse input_devices_synaptics input_devices_penmount kernel_linux linguas_it userland_GNU video_cards_ati video_cards_fbdev video_cards_vesa video_cards_vga"
Unset:  ASFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LDFLAGS, MAKEOPTS
Comment 7 Jakub Moc (RETIRED) gentoo-dev 2006-04-20 01:57:59 UTC
(In reply to comment #4)
> It's because I'm forcing -fPIC for the shared library as it should have been.
> Sigh.
> 
> Hardened, x86 teams, someone can prepare something about this? :|

Well, fPIC has been intentionally killed here b/c of an identical issue (see Bug 86741). Apparently the code sucked too much to be fixed properly. :=)
Comment 8 Jakub Moc (RETIRED) gentoo-dev 2006-04-20 05:45:47 UTC
*** Bug 130595 has been marked as a duplicate of this bug. ***
Comment 9 Jakub Moc (RETIRED) gentoo-dev 2006-04-20 09:25:01 UTC
BTW, while at it: ;)

<snip>
 * has_pic: deprecated, please use gcc-specs-pie()!
</snip>
Comment 10 Björn Ruberg 2006-04-20 09:51:49 UTC
For me it is more worse.
On gcc-4.1 I get this error:
i686-pc-linux-gnu-gcc -fPIC -c `cat i686/c_flags`  video/slice.c -o i686/video/slice.lo
i686-pc-linux-gnu-gcc -fPIC -c `cat i686/c_flags`  video/vlc.c -o i686/video/vlc.lo
video/slice.c: In Funktion 
Comment 11 Björn Ruberg 2006-04-20 09:51:49 UTC
For me it is more worse.
On gcc-4.1 I get this error:
i686-pc-linux-gnu-gcc -fPIC -c `cat i686/c_flags`  video/slice.c -o i686/video/slice.lo
i686-pc-linux-gnu-gcc -fPIC -c `cat i686/c_flags`  video/vlc.c -o i686/video/vlc.lo
video/slice.c: In Funktion »mpeg3_decode_slice«:
video/slice.c:211: Fehler: in der Klasse »BREG« konnte während des Neuladens von »asm« kein Register gefunden werden
make: *** [i686/video/slice.lo] Fehler 1


Taking out -mmmx does not help. If I strip down the CFLAGS to -O2 -mtune=pentium-m I get the error mentioned above on both gcc-4.1 and gcc-3.4.5.

Portage 2.1_pre7-r5 (default-linux/x86/2005.1, gcc-4.1.0, glibc-2.3.6-r3, 2.6.15-gentoo-r1 i686)
=================================================================
System uname: 2.6.15-gentoo-r1 i686 Intel(R) Pentium(R) M processor 1.60GHz
Gentoo Base System version 1.6.14
distcc 2.18.3 i686-pc-linux-gnu (protocols 1 and 2) (default port 3632) [disabled]
dev-lang/python:     2.4.2
sys-apps/sandbox:    1.2.12
sys-devel/autoconf:  2.13, 2.59-r7
sys-devel/automake:  1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r1
sys-devel/binutils:  2.16.1-r2
sys-devel/libtool:   1.5.22
virtual/os-headers:  2.6.11-r2
ACCEPT_KEYWORDS="x86"
AUTOCLEAN="yes"
CBUILD="i686-pc-linux-gnu"
CFLAGS="-O3 -march=pentium-m -mmmx -msse -msse2 -pipe -fomit-frame-pointer -mfpmath=sse -ftracer -frename-registers -fweb -fno-ident"
CHOST="i686-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/kde/2/share/config /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/kde/3/share/config /usr/share/X11/xkb /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/qmail/control"
CONFIG_PROTECT_MASK="/etc/eselect/compiler /etc/gconf /etc/revdep-rebuild /etc/splash /etc/terminfo /etc/env.d"
CXXFLAGS="-O3 -march=pentium-m -mmmx -msse -msse2 -pipe -fomit-frame-pointer -mfpmath=sse -ftracer -frename-registers -fweb -fno-ident  -fvisibility-inlines-hidden"
DISTDIR="/usr/portage/distfiles"
FEATURES="autoconfig distlocks metadata-transfer prelink sandbox sfperms"
GENTOO_MIRRORS="ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/gentoo/  #http://mirrors.sec.informatik.tu-darmstadt.de/gentoo/"
LANG="de_DE@euro"
LC_ALL="de_DE@euro"
LINGUAS="de"
MAKEOPTS="-j3"
PKGDIR="/usr/portage/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/usr/local/portage"
SYNC="rsync://192.168.3.1/gentoo-portage"
USE="x86 X acpi alsa apache2 arts avi bash-completion berkdb bitmap-fonts bzlib cdr cgi cli crypt ctype cups dba dbus dga directfb divx4linux dri dvd dvdread emboss encode fbcon foomaticdb gd gdbm gif gimp gpm gstreamer gtk gtk2 hal i8x0 imlib imlib2 insecure-drivers ipv6 isdnlog jpeg kde kdeenablefinal lib++ libg++ libwww linguas_de lzw-tiff mad mikmod mmx mmxext mp3 mpeg mpeg4 mplayer mysql ncurses nls nptl nsplugin ogg oggvorbis opengl openssh oss pam pcre pdf pdflib perl php pic png pppd python qt quicktime readline real reflection sdl session spell spl sse sse2 ssl subversion svg tcpd truetype truetype-fonts type1 type1-fonts unicode usb userlocales videos vorbis wifi win32codecs xml xml2 xmms xv xvid zlib elibc_glibc input_devices_keyboard input_devices_mouse input_devices_synaptics kernel_linux userland_GNU video_cards_i915 video_cards_i810"
Unset:  ASFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LDFLAGS
Comment 12 Jakub Moc (RETIRED) gentoo-dev 2006-04-20 10:06:01 UTC
(In reply to comment #9)
> Taking out -mmmx does not help. If I strip down the CFLAGS to -O2
> -mtune=pentium-m I get the error mentioned above on both gcc-4.1 and gcc-3.4.5.

You need to remove USE=mmx, not (only) -mmmx from your C[XX]FLAGS...
Comment 13 Lee 2006-04-20 10:51:37 UTC
I am also having the same problem.



~~~~~~emerge error~~~~~~
i686-pc-linux-gnu-gcc -fPIC -c `cat i686/c_flags`  video/headers.c -o i686/video/headers.lo
i686-pc-linux-gnu-gcc -fPIC -c `cat i686/c_flags`  video/idct.c -o i686/video/idct.lo
i686-pc-linux-gnu-gcc -fPIC -c `cat i686/c_flags`  video/macroblocks.c -o i686/video/macroblocks.lo
i686-pc-linux-gnu-gcc -fPIC -c `cat i686/c_flags`  video/mmxtest.c -o i686/video/mmxtest.lo
i686-pc-linux-gnu-gcc -fPIC -c `cat i686/c_flags`  video/motion.c -o i686/video/motion.lo
i686-pc-linux-gnu-gcc -fPIC -c `cat i686/c_flags`  video/mpeg3video.c -o i686/video/mpeg3video.lo
i686-pc-linux-gnu-gcc -fPIC -c `cat i686/c_flags`  video/output.c -o i686/video/output.lo
i686-pc-linux-gnu-gcc -fPIC -c `cat i686/c_flags`  video/reconstruct.c -o i686/video/reconstruct.lo
video/output.c:210: warning: integer constant is too large for "long" type
video/output.c:212: warning: integer constant is too large for "long" type
video/output.c:214: warning: integer constant is too large for "long" type
video/output.c:301: warning: integer constant is too large for "long" type
video/output.c:303: warning: integer constant is too large for "long" type
video/output.c: In function `mpeg3video_ditherframe':
video/output.c:722: warning: use of cast expressions as lvalues is deprecated
video/output.c:747: warning: use of cast expressions as lvalues is deprecated
video/output.c:787: warning: use of cast expressions as lvalues is deprecated
video/output.c:812: warning: use of cast expressions as lvalues is deprecated
video/output.c: In function `mpeg3video_rgb16_mmx':
video/output.c:53: error: can't find a register in class `GENERAL_REGS' while re
make: *** [i686/video/output.lo] Error 1
make: *** Waiting for unfinished jobs....

!!! ERROR: media-libs/libmpeg3-1.5.2-r3 failed.
Call stack:
  ebuild.sh, line 1532:   Called dyn_compile
  ebuild.sh, line 929:   Called src_compile
  libmpeg3-1.5.2-r3.ebuild, line 56:   Called die

!!! make failed
!!! If you need support, post the topmost build error, and the call stack if rel




~~~~~~emerge --info~~~~~~
Portage 2.1_pre7-r5 (default-linux/x86/no-nptl, gcc-3.4.6, glibc-2.3.6-r3, 2.6.16-gentoo-r2 i686)
=================================================================
System uname: 2.6.16-gentoo-r3 i686 AMD Athlon(TM) XP 2800+
Gentoo Base System version 1.12.0_pre17
dev-lang/python:     2.4.2-r1
sys-apps/sandbox:    1.2.17
sys-devel/autoconf:  2.13, 2.59-r7
sys-devel/automake:  1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2
sys-devel/binutils:  2.16.1-r2
sys-devel/libtool:   1.5.22
virtual/os-headers:  2.6.11-r5
ACCEPT_KEYWORDS="x86 ~x86"
AUTOCLEAN="yes"
CBUILD="i686-pc-linux-gnu"
CFLAGS="-O2 -march=athlon-xp -pipe"
CHOST="i686-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/kde/2/share/config /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/kde/3/share/config /usr/share/X11/xkb /usr/share/config /var/qmail/control"
CONFIG_PROTECT_MASK="/etc/eselect/compiler /etc/gconf /etc/revdep-rebuild /etc/terminfo /etc/env.d"
CXXFLAGS="-O2 -march=athlon-xp -pipe"
DISTDIR="/usr/portage/distfiles"
FEATURES="autoconfig distlocks metadata-transfer sandbox sfperms strict"
GENTOO_MIRRORS="http://distfiles.gentoo.org http://distro.ibiblio.org/pub/linux/distributions/gentoo"
LINGUAS="en"
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="3dnow 3dnowext X a52 aac aalib akode alsa amr apm arts asf audiofile automount avi berkdb bidi binfilter bitmap-fonts bl bzip2 cairo cddb cdparanoia cdr chroot cli crypt css cups curl dga directfb divx4linux doc dri dts dv dvb dvd dvdr dvdread dvdryy eds emboss encode fame fbcon ffmpeg firebird firefox flac foomaticdb fortran fpx gdbm ggi gif gimp gimpprint glade glut gnutls gphoto2 gpm graphviz gs gtk gtk2 gtkhtml hal hpn httpd ieee1394 imagemagick imlib insecure-savers ipv6 isdnlog jack java javascript jbig joystick jpeg jpeg2k kde kdgraphics libcaca libg++ libwww live logitech-mouse lzo mad matroska mikmod mjpeg mmx mmxext mng mod modplug mono motif mozilla mp3 mp4 mpeg mplayer musepack musicbrainz nas ncurses network nls nsplugin nvidia offensive ogg openal openexr opengl oss pam pcre pdflib perl png pppd python qt quicktime rar readline real reflection rtc rtsp samba scanner screen sdl session shout skins sndfile speex spell spl sse ssl stream subtitles svg svga swat syslog tcpd teamarena tga theora threads tiff truetype truetype-fonts type1-fonts unicode usb userlocales v4l v4l2 vcd via vidix visualization vlm vorbis wifi win32codecs winbind wmf wxwindows x264 x509 x86 xanim xine xml xml2 xmms xosd xscreensaver xv xvid xvmc zlib elibc_glibc input_devices_joystick input_devices_keyboard input_devices_mouse kernel_linux linguas_en userland_GNU video_cards_nvidia"
Unset:  ASFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LANG, LC_ALL, LDFLAGS
Comment 14 Tiago Freire 2006-04-20 11:12:11 UTC
Tested with GCC 4.1
AFAIK, -march activates mmx optimization for arches which support it. In other words, the -mmmx flag is implied. So, I tried to compile twice with reduced CFLAGS:
CFLAGS="-pipe"
Which failed:


i686-pc-linux-gnu-gcc -fPIC -c `cat i686/c_flags`  video/output.c -o i686/video/output.lo
video/output.c: In function 'mpeg3video_rgb16_mmx':
video/output.c:53: error: can't find a register in class 'GENERAL_REGS' while reloading 'asm'
video/output.c: At top level:
video/output.c:210: warning: integer constant is too large for 'long' type
video/output.c:212: warning: integer constant is too large for 'long' type
video/output.c:214: warning: integer constant is too large for 'long' type
video/output.c:301: warning: integer constant is too large for 'long' type
video/output.c:303: warning: integer constant is too large for 'long' type
i686-pc-linux-gnu-gcc -fPIC -c `cat i686/c_flags`  video/reconstruct.c -o i686/video/reconstruct.lo
make: *** [i686/video/output.lo] Error 1
make: *** Waiting for unfinished jobs....


and
CFLAGS="-fomit-frame-pointer -pipe"
I used -fomit-frame-pointer in an effort to free up a register. There was a single case of another package where it worked as a workaround to a compilation failure, so I tested it here. Unfortunately, it didn't work.

i686-pc-linux-gnu-gcc -fPIC -c `cat i686/c_flags`  video/output.c -o i686/video/output.lo
video/output.c: In function 'mpeg3video_rgb16_mmx':
video/output.c:53: error: can't find a register in class 'GENERAL_REGS' while reloading 'asm'
video/output.c: At top level:
video/output.c:210: warning: integer constant is too large for 'long' type
video/output.c:212: warning: integer constant is too large for 'long' type
video/output.c:214: warning: integer constant is too large for 'long' type
video/output.c:301: warning: integer constant is too large for 'long' type
video/output.c:303: warning: integer constant is too large for 'long' type
i686-pc-linux-gnu-gcc -fPIC -c `cat i686/c_flags`  video/reconstruct.c -o i686/video/reconstruct.lo
make: *** [i686/video/output.lo] Error 1
make: *** Waiting for unfinished jobs....


You can see the emerge --info below. At the time I tried to compile this package the CFLAGS were as described above, and not as below. Everything else is the same.

Portage 2.1_pre7-r5 (default-linux/x86/2005.1, gcc-4.1.0, glibc-2.3.6-r3, 2.6.15-gentoo-r1 i686)
=================================================================
System uname: 2.6.15-gentoo-r1 i686 AMD Athlon(tm) XP 2600+
Gentoo Base System version 1.6.14
ccache version 2.3 [disabled]
dev-lang/python:     2.3.5-r2, 2.4.2
sys-apps/sandbox:    1.2.12
sys-devel/autoconf:  2.13, 2.59-r7
sys-devel/automake:  1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r1
sys-devel/binutils:  2.16.1
sys-devel/libtool:   1.5.22
virtual/os-headers:  2.6.11-r2
ACCEPT_KEYWORDS="x86"
AUTOCLEAN="yes"
CBUILD="i686-pc-linux-gnu"
CFLAGS="-march=athlon-xp -O2 -pipe -fomit-frame-pointer"
CHOST="i686-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/kde/2/share/config /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/kde/3/share/config /usr/lib/mozilla/defaults/pref /usr/share/X11/xkb /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/qmail/control"
CONFIG_PROTECT_MASK="/etc/eselect/compiler /etc/gconf /etc/terminfo /etc/env.d"
CXXFLAGS="-march=athlon-xp -O2 -pipe -fomit-frame-pointer"
DISTDIR="/usr/portage/distfiles"
FEATURES="autoconfig distlocks metadata-transfer sandbox sfperms strict"
GENTOO_MIRRORS="ftp://mirror.datapipe.net/gentoo http://mirror.datapipe.net/gentoo http://gentoo.seren.com/gentoo ftp://gentoo.chem.wisc.edu/gentoo/"
LANG="C"
LINGUAS="en pt_BR"
MAKEOPTS="-j2"
PKGDIR="/usr/portage/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/usr/overlay"
SYNC="rsync://portage.cert-id.com.br/portage"
USE="x86 3dnow 3dnowext X a52 aac acl acpi alsa apache2 apm arts async authdaemond automount avi berkdb bitmap-fonts bluetooth bootsplash browserplugin bzip2 cairo cdparanoia cdr cjk cli crypt cups curl curlwrappers dba dbase dbus dga dhcp divx4linux doc dri dv dvd dvdr dvdread eds emboss encode examples fbcon firebird firefox flac flash foomaticdb fortran gcj gd gdbm geoip gif gnome gpm gstreamer gtk gtk2 hal iconv imap imlib innodb interbase ipv6 isdnlog jabber java javascript joystick jpeg jpeg2k kde kdeenablefinal kdepim kdexdeltas kerberos ldap ldapsam libclamav libg++ libwww lm_sensors mad madwifi maildir mailwrapper matroska mhash mikmod mmx mmxext motif mozilla mozsvg mp3 mpeg mplayer multislot multitarget mysql mysqli ncurses nls nptl nptlonly nsplugin odbc offensive ogg oggvorbis opengl oss pam pam_chroot pam_console pcre pda pdf pdflib perl php pic png posix postgres povray pppd prelink python qt quicktime rdesktop readline reflection samba sasl sdk sdl session snmp soap sockets speex spell spl sqlite sse ssl subp subversion svg syslog tcpd theora threads tidy tiff tokenizer truetype truetype-fonts type1-fonts unicode utf8 vhosts vorbis wddx wifi win32 win32codecs wmf xine xml xml2 xmms xorg xscreensaver xsl xv xvid yahoo zeroconf zlib elibc_glibc input_devices_aiptek input_devices_joystick input_devices_keyboard input_devices_mouse kernel_linux linguas_en linguas_pt_BR userland_GNU video_cards_ati video_cards_radeon video_cards_fglrx video_cards_fbdev video_cards_vesa"
Unset:  ASFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LC_ALL, LDFLAGS
Comment 15 Jakub Moc (RETIRED) gentoo-dev 2006-04-20 11:18:30 UTC
People, there's really no need to clutter this bug with tons of "me too" comments,  including redundant, virtually identical error logs. Thanks.
Comment 16 Sawk 2006-04-21 05:13:29 UTC
same problem
Comment 17 Patrizio Bassi 2006-04-22 08:36:08 UTC
my error is a bit different:

video/seek.c: In function &#8216;mpeg3video_seek&#8217;:
video/seek.c:266: warning: integer constant is too large for &#8216;long&#8217; type
video/seek.c:268: warning: integer constant is too large for &#8216;long&#8217; type
i686-pc-linux-gnu-gcc -fPIC -c `cat i686/c_flags`  video/slice.c -o i686/video/slice.lo
video/slice.c: In function &#8216;mpeg3_decode_slice&#8217;:
video/slice.c:211: error: can't find a register in class &#8216;BREG&#8217; while reloading &#8216;asm&#8217;
make: *** [i686/video/slice.lo] Error 1

gcc 4.1.0 of course.
Comment 18 Pierre Poissinger 2006-04-22 08:59:40 UTC
Created attachment 85193 [details, diff]
A "dirty bastard" patch

This is the official "Not good" way to fix the problem... 
Apply to ebuild to remove the fPIC, since dear x86 has not enough regs to support it with this package... 
This should only be done on x86 (others should not have the problems...)
Comment 19 Matteo Azzali (RETIRED) gentoo-dev 2006-04-23 09:03:22 UTC
@Pierre Poissinger : can you modify that patch to sed Makefile only when
"mmx is used AND arch is x86" ? So the patch would be generic...
Comment 20 Pierre Poissinger 2006-04-23 12:04:21 UTC
Created attachment 85289 [details, diff]
Dirty bastard ebuild patch v2

as requested in comment #17
(added test for x86)
Comment 21 FieldySnuts 2006-04-23 18:46:27 UTC
Me Too(TM):

Portage 2.1_pre9-r4 (default-linux/x86/2006.0, gcc-3.4.6, glibc-2.3.6-r3, 2.6.17-rc1-mm3 i686)
=================================================================
System uname: 2.6.17-rc1-mm3 i686 AMD Athlon(TM) XP 1800+
Gentoo Base System version 1.12.0_pre18
distcc 2.18.3 i686-pc-linux-gnu (protocols 1 and 2) (default port 3632) [enabled]
ccache version 2.4 [enabled]
dev-lang/python:     2.3.5, 2.4.2-r1
sys-apps/sandbox:    1.2.17
sys-devel/autoconf:  2.13, 2.59-r7
sys-devel/automake:  1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2
sys-devel/binutils:  2.16.1-r2
sys-devel/libtool:   1.5.22
virtual/os-headers:  2.6.11-r5
ACCEPT_KEYWORDS="x86 ~x86"
AUTOCLEAN="yes"
CBUILD="i686-pc-linux-gnu"
CFLAGS="-O2 -march=athlon-xp -pipe"
CHOST="i686-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/kde/2/share/config /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/kde/3/share/config /usr/lib/mozilla/defaults/pref /usr/share/X11/xkb /usr/share/config /var/qmail/control"
CONFIG_PROTECT_MASK="/etc/eselect/compiler /etc/gconf /etc/revdep-rebuild /etc/terminfo /etc/env.d"
CXXFLAGS="-O2 -march=athlon-xp -pipe"
DISTDIR="/usr/portage/distfiles"
FEATURES="autoconfig ccache collision-protect distcc distlocks metadata-transfer sandbox sfperms strict"
GENTOO_MIRRORS="http://gentoo.chem.wisc.edu/gentoo/ ftp://gentoo.chem.wisc.edu/gentoo/"
MAKEOPTS="-j4"
PKGDIR="/usr/portage/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/usr/local/portage"
SYNC="rsync://rsync.namerica.gentoo.org/gentoo-portage"
USE="x86 3dnow X alsa am apache2 apm avi berkdb bitmap-fonts bzip2 cdr chroot cli crypt dri dv dvd dvdr eds emboss encode foomaticdb fortran gdbm gif gnome gpm gstreamer gtk gtk2 hal imlib isdnlog jpeg kde kdeenablefinal libg++ libwww mad mikmod mmx motif mp3 mpeg ncurses nls nptl ogg oggvorbis opengl oss pam pcre pdflib perl png pppd pwdb python qt quicktime readline reflection sdl session spell spl sse ssl tiff truetype truetype-fonts type1-fonts udev vorbis xml xmms xorg xv zlib elibc_glibc input_devices_keyboard input_devices_mouse kernel_linux userland_GNU video_cards_nvidia"
Unset:  ASFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LANG, LC_ALL, LDFLAGS, LINGUAS
Comment 22 David Morgan 2006-04-23 19:45:23 UTC
Modifying the ebuild allows libmpeg3 to compile with USE=mmx here, and DirectFB and transcode both compile against it. Transcode seems to work (after a very limited amount of testing), but I'm not able to test DirectFB.

emerge --info
Portage 2.1_pre9-r4 (default-linux/x86/2005.1, gcc-4.1.0, glibc-2.4-r1, 2.6.16-gentoo-r3 i686)
=================================================================
System uname: 2.6.16-gentoo-r3 i686 Intel(R) Pentium(R) M processor 1.86GHz
Gentoo Base System version 1.12.0_pre18
ccache version 2.4 [enabled]
dev-lang/python:     2.4.2-r1
sys-apps/sandbox:    1.2.17
sys-devel/autoconf:  2.13, 2.59-r7
sys-devel/automake:  1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2
sys-devel/binutils:  2.16.1-r2
sys-devel/libtool:   1.5.22
virtual/os-headers:  2.6.11-r5
ACCEPT_KEYWORDS="x86 ~x86"
AUTOCLEAN="yes"
CBUILD="i686-pc-linux-gnu"
CFLAGS="-O2 -march=pentium3 -pipe -fomit-frame-pointer"
CHOST="i686-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/kde/2/share/config /usr/kde/3/share/config /usr/share/X11/xkb /usr/share/config /var/qmail/control"
CONFIG_PROTECT_MASK="/etc/eselect/compiler /etc/gconf /etc/revdep-rebuild /etc/terminfo /etc/texmf/web2c /etc/env.d"
CXXFLAGS="-O2 -march=pentium3 -pipe -fomit-frame-pointer"
DISTDIR="/usr/portage/distfiles"
FEATURES="autoconfig ccache distlocks metadata-transfer sandbox sfperms strict"
GENTOO_MIRRORS="ftp://www.mirrorservice.org/sites/www.ibiblio.org/gentoo/ http://ftp.mirrorservice.org/sites/www.ibiblio.org/gentoo/ ftp://gentoo.blueyonder.co.uk http://mirrors.blueyonder.co.uk/mirrors/gentoo"
LC_ALL="en_GB.utf8"
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 X a52 aac aalib acpi alsa asf audiofile avahi avi bash-completion berkdb bitmap-fonts bzip2 cdda cddb cdparanoia cdr cjk cli crypt cscope cups curl daap dbus directfb dllloader dri dvd dvdr emboss encode fbcon ffmpeg firefox flac foomaticdb fortran ftp gdbm gif glut gpm graphviz gstreamer gtk2 hal imagemagick imap isdnlog jack jpeg lcms libcaca libg++ libwww live lua mad maildir matroska mbox mikmod mmx mng motif mp3 mp4 mpeg ncurses nls nptl nptlonly ogg oggvorbis opengl pam pcre pdf pdflib perl png pppd python quicktime readline real reflection ruby samba sdl session spell spl sse sse2 ssl svg svga tcpd theora tiff truetype truetype-fonts type1-fonts unicode userlocales vcd vidix vorbis win32codecs x264 xorg xv xvid xvmc zlib elibc_glibc input_devices_keyboard input_devices_mouse kernel_linux userland_GNU video_cards_radeon video_cards_fglrx video_cards_vesa video_cards_ati"
Unset:  ASFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LANG, LDFLAGS, LINGUAS

Comment 23 Martin von Gagern 2006-04-24 14:03:07 UTC
The -fPIC option removed by the patch from comment #8 was added in the first place by files/libmpeg3-1.5.2-a52.patch, which according to the ChangeLog is a fix to bug #130428. This bug however is tagged as amd64 only, while this bug here is tagged x86 only. How about applying that patch only for amd64 or at least not for x86?

I disabled the a52 patch, and now I have only an executable stacks QA to worry about. Bug #86741 might be related to this issue, although it's about -r1 and closed.

If executable stacks are not acceptable, another approach would be to just discard the mmx USE flag in the ebuild for the time being, and reactivate it when this issue has been resolved more cleanly.
Comment 24 Jakub Moc (RETIRED) gentoo-dev 2006-04-24 14:26:35 UTC
(In reply to comment #21)

Erm, like - no need to reinvent the wheel here, people. -fPIC was disabled for x86 in previous versions (see Bug 86741), now it got enabled and the thing broke on x86. So, how about reverting the change?

(No idea how executable stacks are relevant here, really).
Comment 25 Pierre Poissinger 2006-04-24 14:47:25 UTC
Created attachment 85384 [details, diff]
The dirty x86 ebuild patch

cf comment #21 - skip a52 for "short" on regs arch (aka x86)
Comment 26 Pierre Poissinger 2006-04-24 14:57:54 UTC
(In reply to comment #21)
> The -fPIC option removed by the patch from comment #8 was added in the first
> place by files/libmpeg3-1.5.2-a52.patch, which according to the ChangeLog is a
> fix to bug #130428. This bug however is tagged as amd64 only, while this bug
> here is tagged x86 only. How about applying that patch only for amd64 or at
> least not for x86?
Just posted a patch for this great idea :)

> I disabled the a52 patch, and now I have only an executable stacks QA to worry
> about. Bug #86741 might be related to this issue, although it's about -r1 and
> closed.
Same here

> If executable stacks are not acceptable, another approach would be to just
> discard the mmx USE flag in the ebuild for the time being, and reactivate it
> when this issue has been resolved more cleanly.
IMHO, Removing mmx coz x86 has not enought regs is not a good thing(TM) (and since -fPIC is not critical on this arch)... 
(And actually, I don't want to see Linus T. posting about "Compilation Nazi" on Gentoo dev...)

Comment 27 Diego Elio Pettenò (RETIRED) gentoo-dev 2006-04-24 18:07:38 UTC
Moving to x86 as that's an arch team problem.

Anyway, I've added in revision 1.3 a patch from PaX Team that solves the problem with non-PIC-aware code and textrels, that might fix the starvation problem, too.

Disabling PIC again for x86 is _not_ an acceptable solution for portage.
Comment 28 Pierre Poissinger 2006-04-25 11:21:44 UTC
(In reply to comment #25)
This is why I spoke about "dirty"... I start to know that gentoo don't like to remove a -fPIC... but speaking about removing a feature for fPIC is still too much for me...

Now, the good news is the rev 1.3 is compiling fine with the -fPIC on my short regs cpu ;)

Comment 29 Diego Elio Pettenò (RETIRED) gentoo-dev 2006-04-25 11:44:38 UTC
Okay, let's call this fixed unless proved wrong then :)

Thanks again to PaX Team for the patch.
Comment 30 André Terpstra 2006-04-26 22:12:20 UTC
For me, nothing has changed. Libmpeg3-1.5.2-r3 still fails to compile. So I disabled use=mmx and it compiles.
Comment 31 Congtat Cia 2006-04-27 00:04:55 UTC
On my machine the patched version does not compile unless I remove "-fforce-addr" from my CFLAGS. So it may be a CFLAGS related issue.
Comment 32 Tiago Freire 2006-04-27 04:47:21 UTC
-r3 compiled succesfully on my machine, using gcc-4.1 and the conservative CFLAGS="-march=athlon-xp -O2 -pipe". Thus, i tested my agresive CFLAGS="-march=athlon-xp -O2 -pipe -fforce-addr -falign-functions=64 -fprefetch-loop-arrays -ftree-vectorize", and it compiled too, without problems. Note that -fforce-addr is in there...
Comment 33 Jakub Moc (RETIRED) gentoo-dev 2006-04-27 04:50:14 UTC
(In reply to comment #30)

I can't reproduce any -fforce-addr issue either (gcc-4.1)

CFLAGS="-march=athlon-xp -O2 -pipe -fomit-frame-pointer -fforce-addr -ftree-vectorize"
Comment 34 Congtat Cia 2006-04-27 05:34:56 UTC
It looks like the combination of "-fforce-addr" and "-finline-functions" results in compile failure. Remove either works.
Comment 35 Jakub Moc (RETIRED) gentoo-dev 2006-04-27 05:36:56 UTC
(In reply to comment #32)
> It looks like the combination of "-fforce-addr" and "-finline-functions"
> results in compile failure. Remove either works.

Easy fix - remove  -finline-functions just from your CFLAGS. Closing. ;)

Comment 36 Vasilis Lourdas 2006-06-04 13:01:08 UTC
Compilation of v.1.5.2 with gcc-4.1.1 fails here:

gcc -c `cat i686/c_flags`  video/mpeg3video.c -o i686/video/mpeg3video.o
gcc -c `cat i686/c_flags`  video/output.c -o i686/video/output.o
video/output.c:210: warning: integer constant is too large for 
Comment 37 Vasilis Lourdas 2006-06-04 13:01:08 UTC
Compilation of v.1.5.2 with gcc-4.1.1 fails here:

gcc -c `cat i686/c_flags`  video/mpeg3video.c -o i686/video/mpeg3video.o
gcc -c `cat i686/c_flags`  video/output.c -o i686/video/output.o
video/output.c:210: warning: integer constant is too large for long type
video/output.c:212: warning: integer constant is too large for long type
video/output.c:214: warning: integer constant is too large for long type
video/output.c:301: warning: integer constant is too large for long type
video/output.c:303: warning: integer constant is too large for long type
video/output.c: In function mpeg3video_ditherframe:
video/output.c:722: error: invalid lvalue in increment
video/output.c:747: error: invalid lvalue in increment
video/output.c:787: error: invalid lvalue in increment
video/output.c:812: error: invalid lvalue in increment
make: *** [i686/video/output.o] Error 1

!!! ERROR: media-libs/libmpeg3-1.5.2 failed.
Call stack:
  ebuild.sh, line 1539:   Called dyn_compile
  ebuild.sh, line 939:   Called src_compile
  libmpeg3-1.5.2.ebuild, line 59:   Called die

emerge --info:
Portage 2.1_rc4 (default-linux/x86/2006.0, gcc-4.1.1, glibc-2.3.6-r3, 2.6.16-gentoo-r9 i686)
=================================================================
System uname: 2.6.16-gentoo-r9 i686 AMD Athlon(tm) XP 2600+
Gentoo Base System version 1.6.14
ccache version 2.4 [enabled]
dev-lang/python:     2.3.5-r2, 2.4.2
dev-python/pycrypto: 2.0.1-r5
dev-util/ccache:     2.4-r1
dev-util/confcache:  [Not Present]
sys-apps/sandbox:    1.2.17
sys-devel/autoconf:  2.13, 2.59-r7
sys-devel/automake:  1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r1
sys-devel/binutils:  2.16.1-r2
sys-devel/libtool:   1.5.22
virtual/os-headers:  2.6.11-r2
ACCEPT_KEYWORDS="x86"
AUTOCLEAN="yes"
CBUILD="i686-pc-linux-gnu"
CFLAGS="-O2 -march=athlon-xp -fomit-frame-pointer -pipe"
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/lib/mozilla/defaults/pref /usr/share/X11/xkb /usr/share/config"
CONFIG_PROTECT_MASK="/etc/gconf /etc/terminfo /etc/texmf/web2c /etc/env.d"
CXXFLAGS="-O2 -march=athlon-xp -fomit-frame-pointer -pipe"
DISTDIR="/usr/portage/distfiles"
FEATURES="autoconfig ccache distlocks metadata-transfer sandbox sfperms strict"
GENTOO_MIRRORS="http://gentoo.chem.wisc.edu/gentoo/ http://cudlug.cudenver.edu/gentoo/ http://gentoo.mirrors.pair.com/ http://mirror.datapipe.net/gentoo http://linux.rz.ruhr-uni-bochum.de/download/gentoo-mirror/ ftp://ftp.join.uni-muenster.de/pub/linux/distributions/gentoo http://mirrors.sec.informatik.tu-darmstadt.de/gentoo/ http://ftp-stud.fht-esslingen.de/pub/Mirrors/gentoo/ http://ftp.ntua.gr/pub/linux/gentoo/ http://gentoo.math.bme.hu http://ftp.heanet.ie/pub/gentoo/ http://ftp.snt.utwente.nl/pub/os/linux/gentoo http://mirror.gentoo.no/ http://mirror.isp.net.au/pub/gentoo/ http://gentoo.osuosl.org/ http://adelie.polymtl.ca/"
PKGDIR="/usr/portage/packages"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --delete-after --stats --timeout=180 --exclude='/distfiles' --exclude='/local' --exclude='/packages'"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/usr/local/portage"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="x86 3dnow 3dnowext X a52 acl acpi alsa apache2 apm arts artswrappersuid asf avi bash-completion berkdb bitmap-fonts bluetooth bzip2 bzlib cairo caps cdr chm cli crypt css ctype cups curl dba dbus dlloader dmi doc dri dts dvd dvdr dvdread eds effects emboss encode esd examples exif expat fam fbcon ffmpeg firefox flac flatfile foomaticdb fortran ftp gd gdbm gif gimp gimpprint glx gmp gnome gnomedb gnutls gphoto2 gpm gstreamer gtk gtk2 hal hddtemp howl iconv imagemagick imap imlib innodb isdnlog jabber java javascript jpeg jpeg2k kde kdeenablefinal ldap libg++ libsamplerate libwww lm_sensors mad maildir mailwrapper mhash mikmod mime mmx mmxext motif mozdevelop mozilla mozsvg mp3 mpeg mplayer mpm-worker mysql mysqli ncurses nls nodrm nomalloccheck nptl nptlonly nsplugin nvidia objc odbc offensive ogg opengl pam pcntl pcre pdf pdflib pear perl php pic plugin png posix postgres postgresi ppds pppd python qt quicktime rar rdesktop readline recode reflection ruby samba sasl scanner sdl server session slang sndfile soap sockets speex spell spl spreadsheet sqlite sse ssl subtitles subversion svga symlink tcltk tcpd tetex threads tidy tiff tokenizer truetype truetype-fonts type1-fonts udev unicode usb userlocales utf8 vda visualization vorbis win32codecs wmf wv wxgtk1 xine xml xmlreader xmlrpc xmlwriter xmms xorg xpm xprint xscreensaver xsl xv xvid xvmc zip zlib elibc_glibc input_devices_keyboard input_devices_mouse kernel_linux userland_GNU video_cards_nvidia"
Unset:  CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LANG, LC_ALL, LDFLAGS, LINGUAS, MAKEOPTS, PORTAGE_RSYNC_EXTRA_OPTS
Comment 38 Jakub Moc (RETIRED) gentoo-dev 2006-06-04 13:23:46 UTC
(In reply to comment #34)
> video/output.c:722: error: invalid lvalue in increment
> video/output.c:747: error: invalid lvalue in increment
> video/output.c:787: error: invalid lvalue in increment
> video/output.c:812: error: invalid lvalue in increment
> make: *** [i686/video/output.o] Error 1

Unrelated, file a *new* bug.
Comment 39 PaX Team 2006-06-05 03:24:47 UTC
(In reply to comment #34)
> Compilation of v.1.5.2 with gcc-4.1.1 fails here:
> 
> gcc -c `cat i686/c_flags`  video/mpeg3video.c -o i686/video/mpeg3video.o
> gcc -c `cat i686/c_flags`  video/output.c -o i686/video/output.o
> video/output.c:210: warning: integer constant is too large for 
Comment 40 PaX Team 2006-06-05 03:24:47 UTC
(In reply to comment #34)
> Compilation of v.1.5.2 with gcc-4.1.1 fails here:
> 
> gcc -c `cat i686/c_flags`  video/mpeg3video.c -o i686/video/mpeg3video.o
> gcc -c `cat i686/c_flags`  video/output.c -o i686/video/output.o
> video/output.c:210: warning: integer constant is too large for long type
> video/output.c:212: warning: integer constant is too large for long type
> video/output.c:214: warning: integer constant is too large for long type
> video/output.c:301: warning: integer constant is too large for long type
> video/output.c:303: warning: integer constant is too large for long type

i don't understand these warnings, e.g., the first one is about

  pand           %12

with

  %12 = "m" (mpeg3_MMX_00FFw)

where

  static unsigned long long mpeg3_MMX_00FFw     = 0x00ff00ff00ff00ffULL;

the generated asm is correct as far as i can tell:

    21bd:       0f db b3 78 00 00 00    pand   0x78(%ebx),%mm6

since

$ readelf -s i686/video/output.lo | grep 78
    20: 00000078     8 OBJECT  LOCAL  DEFAULT    3 mpeg3_MMX_00FFw

that is, the 'pand' uses PIC addressing to load an 8-byte object (unsigned long long is 8 bytes on i386).

now this was with gcc 3.4.6, maybe 4.x generates different code? can someone post the corresponding disasm please?

> video/output.c: In function mpeg3video_ditherframe:
> video/output.c:722: error: invalid lvalue in increment
> video/output.c:747: error: invalid lvalue in increment
> video/output.c:787: error: invalid lvalue in increment
> video/output.c:812: error: invalid lvalue in increment
> make: *** [i686/video/output.o] Error 1

i don't know how you got these line numbers but i think they're the same i saw in some media lib (whose name i can't recall unfortunately), it's the macro STORE_PIXEL_RGB565 that has a cast on the lvalue. that lib already has it fixed, so maybe a grep in portage will locate it quickly.
Comment 41 Jakub Moc (RETIRED) gentoo-dev 2006-06-05 03:29:05 UTC
(In reply to comment #36)
> (In reply to comment #34)
> > Compilation of v.1.5.2 with gcc-4.1.1 fails here:

This is already fixed in -r3, no need to worry here. :)
Comment 42 Jakub Moc (RETIRED) gentoo-dev 2006-08-05 05:03:35 UTC
*** Bug 142867 has been marked as a duplicate of this bug. ***