[MPlayer-users] Re: mandrake gcc-3.0.2 status and workaround was: Trouble with MS-Mpeg4 v3 [DivX ;-)] with MP43 fourcc code andodivx/divx4 codec

Alexander Werth (gmx) alexander.werth at gmx.de
Thu Nov 1 05:05:17 CET 2001


Am Don, 2001-11-01 um 02.20 schrieb Chris Goffinet:
> I believe in the manual it states do not use 3.0x or 2.96x (by redhat) ;o)
> Some Assembly errors, so if you want to compile that libavcodec, use 2.95

There was already quite some discussion on the mailinglist about the
different gcc versions, but since gcc-3.0.2 is out it might be
interessting to see what problems remain. If any of the developers read
this, this is no flame or call for workarounds in the mplayer code. One
of the main purposes of this mail is to provide hints what's going on
and help other mandrake/redhat users to compile mplayer.
I'm sending this to the MPlayer mailinglist and not the gcc or ffmpeg
people because in my opinion this is not a problem of gcc or ffmpeg
alone (it works with their compiler flags) but of the interaction of
gcc, the system environment and mplayer (or more precisely mplayers use
of libavcodec)
As far as I remember gcc-3 is as any gcc compiler bootstrapping itself.
The problem might be somewhere in different libraries used by different
disributions. Installing gcc-2.95.x additional to egcs-2.91.66 (for the
kernel), gcc-2.96 (deprecated) and gcc-3.0.2 is not an option. Even when
gcc-2.96 is completely removed it still won't work. Since version 3.0.2
gcc at least won't crash with an internal compiler error. Right now
mplayer compiles fine on my K6-2 with gcc 3.0.2 and without libavcodec.
When compiling ffmpeg (and thus libavcodec) the only flags used are -O2.
When compiling with mplayer libavcodec will be compiled with the flags
selected by mplayer:
OPTFLAGS=-O4 -march=k6 -mcpu=k6 -pipe -ffast-math -fomit-frame-pointer
-D_REENTRANT -fomit-frame-pointer
With this flags (also when compiling ffmpeg) it produces the known
error:
gcc -O4 -march=k6 -mcpu=k6 -pipe -ffast-math -fomit-frame-pointer -D_REENTRANT -fomit-frame-pointer  -Wall -g -DHAVE_AV_CONFIG_H -c -o i386/dsputil_mmx.o i386/dsputil_mmx.c 
i386/dsputil_mmx.c: In function `put_pixels_x2_3dnow':
i386/dsputil_mmx_avg.h:32: Can't find a register in class `GENERAL_REGS' while reloading `asm'.
i386/dsputil_mmx.c: In function `avg_pixels_3dnow':
i386/dsputil_mmx_avg.h:116: Can't find a register in class `GENERAL_REGS' while reloading `asm'.
i386/dsputil_mmx.c: In function `put_pixels_x2_sse':
i386/dsputil_mmx_avg.h:32: Can't find a register in class `GENERAL_REGS' while reloading `asm'.
i386/dsputil_mmx.c: In function `avg_pixels_sse':
i386/dsputil_mmx_avg.h:116: Can't find a register in class `GENERAL_REGS' while reloading `asm'.
i386/dsputil_mmx.c: In function `put_pixels_mmx':
i386/dsputil_mmx.c:188: Can't find a register in class `GENERAL_REGS' while reloading `asm'.
make[1]: *** [i386/dsputil_mmx.o] Fehler 1
make[1]: Verlassen des Verzeichnisses Verzeichnis »/home/alex/Programme/mplayer/MPlayer-20011030/libavcodec«
make: *** [libavcodec/libavcodec.a] Fehler 2
Used with the compiler flags: -mcpu=i586 instead of -mcpu=k6 it does
also compile libavcodec. I'm quite sure that the gcc-3.0 binary from
mandrake and redhat are the default ones. So I suspect that there is
some faulty library installed or a conflict with a previous library.
Since this is a k6-2 speciafic problem I would like to hear if this
problem happens on all k6-2 systems with gcc-3.0.2 or just some and on
all redhat/mandrake systems or just some.
Except from /proc/cpuinfo:
cpu family      : 5
model           : 8
model name      : AMD-K6(tm) 3D processor
stepping        : 12
flags           : fpu vme de pse tsc msr mce cx8 pge mmx syscall 3dnow k6_mtrr
Also pay attention to the compiler flags. If Your system uses predefined
compiler options these will override the configure autodetection. And
personally I would be very interrested if someone familliar with gcc
error messages can elaborate what's going on when the compiler issues
the message: can't find a register in class `GENERAL_REGS' while
reloading `asm'.
Alexander





More information about the MPlayer-users mailing list