Opened 19 years ago
Closed 18 years ago
#543 closed defect (fixed)
--compile-type=debug doesn't compile with --arch=pentium3
Reported by: | Owned by: | danielk | |
---|---|---|---|
Priority: | minor | Milestone: | 0.19 |
Component: | mythtv | Version: | head |
Severity: | medium | Keywords: | |
Cc: | Ticket locked: | no |
Description
Hi again!
I'm trying to compile MythTV with ./configure --compile-type=debug --arch=pentium3 because I've been asked to provide a backtrace in order to get #529 fixed. However, it "doesn't work"[tm], here's what I get:
make[2]: Entering directory `/home/laga/myth-bedtv/mythtv/libs/libavcodec' [SNIP] gcc -c -pipe -march=pentium3 -w -g -O -D_REENTRANT -DPIC -fPIC -DMMX -Di386 -DUSING_DBOX2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DPREFIX=\"/usr/local\" -DHAVE_AV_CONFIG_H -D_LARGEFILE_SOURCE -DQT_THREAD_SUPPORT -DQT_SHARED -DQT_NO_DEBUG -I/usr/share/qt3/mkspecs/default -I. -I.. -I../.. -I../libavutil -I/usr/include/qt3 -o mpegvideo_mmx.o i386/mpegvideo_mmx.c In file included from i386/mpegvideo_mmx.c:678: i386/mpegvideo_mmx_template.c: In function `dct_quantize_MMX': i386/mpegvideo_mmx_template.c:105: error: can't find a register in class `GENERAL_REGS' while reloading `asm' i386/mpegvideo_mmx_template.c:152: error: can't find a register in class `GENERAL_REGS' while reloading `asm' make[2]: *** [mpegvideo_mmx.o] Error 1 make[2]: Leaving directory `/home/laga/myth-bedtv/mythtv/libs/libavcodec' make[1]: *** [sub-libavcodec] Error 2 make[1]: Leaving directory `/home/laga/myth-bedtv/mythtv/libs' make: *** [sub-libs] Error 2
I've found out so far that it works flawlessly when using --arch=i686 instead of --arch=pentium3 or with --compile-type=release --arch=pentium3. I've encountered this error for the first time on my Debian Sarge box, using either
gcc version 3.3.5 (Debian 1:3.3.5-13)
or
gcc version 3.4.4 20050314 (prerelease) (Debian 3.4.3-13)
The fact that it also doesn't work on my Gentoo box makes me think that it's a real bug and not just some oddity in my setup (feel free to correct me, however :))
As usual, I'll be glad to provide additional information.
Kind regards, Michael "laga" Haas
Change History (9)
comment:1 Changed 19 years ago by
Milestone: | → 0.19 |
---|
comment:3 Changed 18 years ago by
Resolution: | → fixed |
---|---|
Status: | new → closed |
comment:4 Changed 18 years ago by
Resolution: | fixed |
---|---|
Status: | closed → reopened |
comment:5 Changed 18 years ago by
comment:6 Changed 18 years ago by
Owner: | changed from Isaac Richards to danielk |
---|---|
Status: | reopened → new |
comment:7 Changed 18 years ago by
Resolution: | → fixed |
---|---|
Status: | new → closed |
(In [7833]) Fixes #542, hopefully without bad side-effects this time.
The problem with [7721] was the constraint change on line 118, which didn't do what I expected it too because of the type of qmat.
I've also kept one more parameter in a preloaded register this time in the H263 block, and got rid of the push/pop since it isn't needed with the REG_c reservation at the end of the asm blocks.
comment:8 Changed 18 years ago by
Resolution: | fixed |
---|---|
Status: | closed → reopened |
Debian sid compile fails with these errors.
ccache gcc -c -pipe -march=pentium4 -w -Wall -Wno-switch -Os -fomit-frame-pointer -D_REENTRANT -DPIC -fPIC -DMMX -Di386 -DUSING_DBOX2 -DHAVE_DVDNAV -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DPREFIX=\"/usr\" -DHAVE_AV_CONFIG_H -D_LARGEFILE_SOURCE -DHAVE_XVMC -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -DQT_SHARED -DQT_TABLET_SUPPORT -I/usr/share/qt3/mkspecs/default -I. -I.. -I../.. -I../libavutil -I../../../../include/qt3 -o mpegvideo_mmx.o i386/mpegvideo_mmx.c {standard input}: Assembler messages: {standard input}:896: Error: bad expression {standard input}:896: Error: missing ')' {standard input}:896: Error: missing ')' {standard input}:896: Error: junk `esp),%eax)' after expression {standard input}:1575: Error: bad expression {standard input}:1575: Error: missing ')' {standard input}:1575: Error: missing ')' {standard input}:1575: Error: junk `esp),%eax)' after expression {standard input}:2248: Error: bad expression {standard input}:2248: Error: missing ')' {standard input}:2248: Error: missing ')'
This is due to gcc's poor register allocation. You can safely comment out those two asm blocks, unless you need to decode H261 or H263, until we get around to fixing it.
It is still broken in ffmpeg proper...