Opened 14 years ago

Closed 14 years ago

#543 closed defect (fixed)

--compile-type=debug doesn't compile with --arch=pentium3

Reported by: hansi.urpils@… 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 14 years ago by danielk

Milestone: 0.19

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...

comment:2 Changed 14 years ago by hansi.urpils@…

Thanks, that works for me so far.

comment:3 Changed 14 years ago by danielk

Resolution: fixed
Status: newclosed

(In [7721]) Fixes #543.

Rejigs some of the asm constraints & uses a temp register, so that this file can be compiled without "--omit-frame-pointer"

comment:4 Changed 14 years ago by danielk

Resolution: fixed
Status: closedreopened

comment:5 Changed 14 years ago by danielk

Broken fix [7721], reverted in [7766]. I'll make a proper fix later this week.

comment:6 Changed 14 years ago by danielk

Owner: changed from Isaac Richards to danielk
Status: reopenednew

comment:7 Changed 14 years ago by danielk

Resolution: fixed
Status: newclosed

(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 14 years ago by anonymous

Resolution: fixed
Status: closedreopened

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 ')'

comment:9 Changed 14 years ago by danielk

Resolution: fixed
Status: reopenedclosed

gcc 4.02 problem this was fixed in [7837].

Note: See TracTickets for help on using tickets.