[mythtv] [mythtv-commits] Ticket #10542: configure incorrectly detects VIA c3 and enables cmov etc...
Michael T. Dean
mtdean at thirdcontact.com
Thu Apr 5 18:13:37 UTC 2012
<sending a copy to -dev list, too, as a final update>
Andrew,
Thanks for the information, and with it comes good news and bad news.
The good news is that we now understand exactly what's going on. The bad
news is that MythTV's configure is doing the right thing, but the
underlying system is broken.
MythTV's configure script (which is based on ffmpeg's configure script),
has 2 mechanisms for detecting CPU/arch. The preferred solution on a
GCC-based system is to ask the compiler for the required information
(using a function based on the below gcc commands). Where that fails, or
on non-GCC-based systems, we attempt to guess based on the CPU name. The
guesses based on CPU name should work fine for you, but, unfortunately,
the preferred solution--asking the compiler for system information--is
failing.
The problem is that your compiler is compiled incorrectly, such that it
thinks it's compiling code for a Pentium 2-based system (where P2
supports cmov). Therefore, when asking for "native" compile options, we
get the line:
COLLECT_GCC_OPTIONS= '-v' '-c' '-o' '/tmp/garbage.o'
/usr/libexec/gcc/i586-pc-linux-gnu/4.5.3/cc1 -quiet -v /tmp/garbage.c
-D_FORTIFY_SOURCE=2 -march=pentium2 -mtune=generic -quiet -dumpbase
garbage.c -auxbase-strip /tmp/garbage.o -version -o /tmp/ccRfOvwb.s
which says -march=pentium2, rather than -march=c3, so we end up doing
exactly what the compiler tells us to and configuring for a Pentium 2 build.
Therefore, you'll either have to "work around" the issue by specifying
the exact options required to compile for your system (basically "cross
compiling" for the proper processor on your system); or hack the
configure script to remove the gcc native options check (remove the case
statement on lines 2610-2622) so that you fall back to the name-based
detection; or--the best solution, but the most work--fix the underlying
compiler (and, likely OS) by building it with proper configuration for
your system.
I'm going to re-close this as an "Upstream Bug", since the problem seems
to be a problem with how Gentoo is building the compiler/OS for your
C3-based system.
Thanks for the report, and feel free to ask for help working around the
issue on the -users list.
Mike
On 04/05/2012 03:16 AM, Andrew Fowler wrote:
> Mike,
>
> Here you go.
>
> Andrew
>
>
> On Wednesday 04 April 2012 18:05:55 you wrote:
>> Andrew,
>>
>> Thanks for the info. We now need you to run another couple commands and
>> send their output:
>>
>> touch /tmp/garbage.c&&
>> gcc -march=native -v -c -o /tmp/garbage.o /tmp/garbage.c>
>> $HOME/march.txt 2>&1
>> gcc -mcpu=native -v -c -o /tmp/garbage.o /tmp/garbage.c> $HOME/mcpu.txt
>> 2>&1
>>
>> and then send march.txt and mcpu.txt as attachments, please.
>>
>> Thanks,
>> Mike
>>
>> On 04/04/2012 02:27 PM, Andrew Fowler wrote:
>>> Mike,
>>>
>>> Sounds like you know more about the internals of the configure script
>>> than I do - wasn't looking forward to trying to make an acceptable
>>> patch myself ;-)
>>>
>>> Here you go.
>>>
>>> Andrew
>>>
>>> On Wednesday 04 April 2012 10:46:42 you wrote:
>>>> Andrew and/or Simon,
>>>>
>>>> Please do a make distclean and run configure with only:
>>>>
>>>>
>>>> ./configure --enable-proc-opt 2>&1 | tee $HOME/configure_output.txt
>>>>
>>>> and do:
>>>>
>>>> cat /proc/cpuinfo> $HOME/cpuinfo.txt
>>>>
>>>> and then send me a copy of cpuinfo.txt (please attach the file--don't
>>>> copy/paste), configure_output.txt, and (in the mythtv source
>>>> directory),
>>>> config.ep. We should be handling Via Ezra, now, so either your
>>>> cpuinfo
>>>> has some strangeness in it or there's breakage elsewhere in the script
>>>> that undoes our checks.
>>>>
>>>> Thanks,
>>>> Mike
>>>>
>>>>
>>>> On 04/03/2012 06:41 PM, MythTV wrote:
>>>>> #10542: configure incorrectly detects VIA c3 and enables cmov etc...
>>>>> -------------------------------+------------------------------------
>>>>> --
>>>>>
>>>>> Reporter: andrew@… | Type: Bug Report -
>>>>> General
>>>>>
>>>>> Status: new | Priority: minor
>>>>>
>>>>> Milestone: 0.24.3 | Component: MythTV - General
>>>>>
>>>>> Version: 0.24.2 | Severity: medium
>>>>>
>>>>> Keywords: c3 cmov configure | Ticket locked: 0
>>>>>
>>>>> -------------------------------+------------------------------------
>>>>> --
>>>>>
>>>>> On gentoo using the media-tv/mythtv-0.24.2_p20120315 ebuild
>>>>> ./configure
>>>>> uses --enable-proc-opt which incorrectly assumes that my Ezra
>>>>> CPU
>>>>> has cmov extensions etc...
>>>>> When it has compiled the binary crashes with 'illegal
>>>>> instruction'
>>>>> trying to run mythtv-setup
>>>>>
>>>>> Attempting to work around this by passing --tune=c3
>>>>> --arch=i586
>>>>> --enable- mmx --enable-amd3dnow --enable-memalign-hack
>>>>> --disable-sse --disable-ssse3 --disable-amd3dnowext --cpu=c3
>>>>> etc....
>>>>>
>>>>> Seems this bug appeared 5 years ago and was squashed - but it
>>>>> seems
>>>>> to
>>>>> have come back.
More information about the mythtv-dev
mailing list