Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 15 Sep 2012 09:36:36 +0300
From:      Volodymyr Kostyrko <c.kworr@gmail.com>
To:        Juergen Lock <nox@jelal.kn-bremen.de>
Cc:        freebsd-multimedia@FreeBSD.org
Subject:   Re: vlc fails to build on pre-SSE2 processor
Message-ID:  <505421F4.3040100@gmail.com>
In-Reply-To: <20120913184033.GA56740@triton8.kn-bremen.de>
References:  <5050786D.30505@gmail.com> <201209122211.q8CMBiBe027101@triton8.kn-bremen.de> <5051AA36.9040304@gmail.com> <20120913184033.GA56740@triton8.kn-bremen.de>

next in thread | previous in thread | raw e-mail | index | archive | help
13.09.2012 21:40, Juergen Lock wrote:
>>>    And if that's not it try a newer gcc version and if you're on
>>> 9-stable or head try clang too.  (amd64 atm defaults to the base
>>> gcc 4.2, i386 to gcc 4.6 so try 4.6 or 4.7 respectively.)
>>
>> This one is:
>> CPU: AMD Athlon(tm) XP 2500+ (1833.95-MHz 686-class CPU)
>> Origin = "AuthenticAMD" Id = 0x6a0 Family = 6 Model = a Stepping = 0
>> Features=0x383fbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,MMX,FXSR,SSE>
>> AMD Features=0xc0400800<SYSCALL,MMX+,3DNow!+,3DNow!>
>>
>>>    Good luck! :)
>>
>> Yes, as you suggest switching to clang works like a charm.
>
> Ok.  Now as 8.x doesn't have clang in base and 9.0 clang has been
> reported to miscompile at least one file on amd64 it would be
> interesting to know if gcc 4.7 works as well, so can you test that
> too?  And also which FreeBSD version is this on and was this base
> clang that worked?

As far as I see this is some local gcc glitch. My processor was always 
unloved and misdetected by gcc:

# uname -a
FreeBSD limbo.xim.bz 9.1-PRERELEASE FreeBSD 9.1-PRERELEASE #0 r240453M: 
Thu Sep 13 14:05:28 EEST 2012 
arcade@limbo.xim.bz:/usr/obj/usr/src/sys/MINIMALx32  i386

Built-in:

# : | gcc -E -v -march=native -
...
gcc version 4.2.1 20070831 patched [FreeBSD]
  /usr/libexec/cc1 -E -quiet -v -D_LONGLONG - -march=athlon-4 
-mtune=athlon-4
...

lang/gcc

# : | gcc46 -E -v -march=native -
...
gcc version 4.6.3 (FreeBSD Ports Collection)
COLLECT_GCC_OPTIONS='-E' '-v' '-march=native'
  /usr/local/libexec/gcc46/gcc/i386-portbld-freebsd9.0/4.6.3/cc1 -E 
-quiet -v - -march=athlon-4 -mno-cx16 -mno-sahf -mno-movbe -mno-aes 
-mno-pclmul -mno-popcnt -mno-abm -mno-lwp -mno-fma -mno-fma4 -mno-xop 
-mno-bmi -mno-tbm -mno-avx -mno-sse4.2 -mno-sse4.1 --param 
l1-cache-size=64 --param l1-cache-line-size=64 --param l2-cache-size=512 
-mtune=athlon
...

Built-in clang:

# : | clang -E -v -march=native -FreeBSD clang version 3.1 
(branches/release_31 156863) 20120523
...
  "/usr/bin/clang" -cc1 -triple i386-unknown-freebsd9.0 -E -disable-free 
-main-file-name - -mrelocation-model static -mdisable-fp-elim -masm-verb
ose -mconstructor-aliases -target-cpu athlon-xp 
-momit-leaf-frame-pointer -v -resource-dir /usr/bin/../lib/clang/3.1 
-fmodule-cache-path /var/tmp/clang-module-cache -fdebug-compilation-dir 
/usr/ports/lang/gcc47 -ferror-limit 19 -fmessage-length 144 
-mstackrealign -fgnu-runtime -fobjc-runtime-has-arc 
-fobjc-runtime-has-weak -fobjc-dispatch-method=non-legacy 
-fdiagnostics-show-option -fcolor-diagnostics -o - -x c -
...

So only clang correctly detects this processor as athlon-xp. The major 
difference from athlon-4 is SSE2 absence.

I'm locally using CPUTYPE?=athlon-xp. However this doesn't helps just 
for each time.

lang/gcc47 fails compilation with:

/tmp/ports/usr/ports/lang/gcc47/work/build/./gcc/xgcc -shared-libgcc 
-B/tmp/ports/usr/ports/lang/gcc47/work/build/./gcc -nostdinc++ -L/tmp/ports
/usr/ports/lang/gcc47/work/build/i386-portbld-freebsd9.1/libstdc++-v3/src -L/tmp/ports/usr/ports/lang/gcc47/work/build/i386-portbld-freebsd9.1/l
ibstdc++-v3/src/.libs -B/usr/local/i386-portbld-freebsd9.1/bin/ 
-B/usr/local/i386-portbld-freebsd9.1/lib/ -isystem 
/usr/local/i386-portbld-freeb
sd9.1/include -isystem /usr/local/i386-portbld-freebsd9.1/sys-include 
-x c++-header -nostdinc++ -g -O2 -pipe -march=athlon-xp -I/usr/local/in
clude -fno-strict-aliasing 
-I/tmp/ports/usr/ports/lang/gcc47/work/build/i386-portbld-freebsd9.1/libstdc++-v3/include/i386-portbld-freebsd9.1 
-I/
tmp/ports/usr/ports/lang/gcc47/work/build/i386-portbld-freebsd9.1/libstdc++-v3/include 
-I/tmp/ports/usr/ports/lang/gcc47/work/gcc-4.7-20120908/l
ibstdc++-v3/libsupc++ -O2 -g -std=gnu++0x 
/tmp/ports/usr/ports/lang/gcc47/work/gcc-4.7-20120908/libstdc++-v3/include/precompiled/stdc++.h 
\
-o i386-portbld-freebsd9.1/bits/stdc++.h.gch/O2ggnu++0x.gch
In file included from 
/tmp/ports/usr/ports/lang/gcc47/work/build/i386-portbld-freebsd9.1/libstdc++-v3/include/random:51:0,
                  from 
/tmp/ports/usr/ports/lang/gcc47/work/build/i386-portbld-freebsd9.1/libstdc++-v3/include/bits/stl_algo.h:67,
                  from 
/tmp/ports/usr/ports/lang/gcc47/work/build/i386-portbld-freebsd9.1/libstdc++-v3/include/algorithm:63,
                  from 
/tmp/ports/usr/ports/lang/gcc47/work/gcc-4.7-20120908/libstdc++-v3/include/precompiled/stdc++.h:65:
/tmp/ports/usr/ports/lang/gcc47/work/build/i386-portbld-freebsd9.1/libstdc++-v3/include/bits/random.tcc: 
In function '_RealType std::generate_ca
nonical(_UniformRandomNumberGenerator&)':
/tmp/ports/usr/ports/lang/gcc47/work/build/i386-portbld-freebsd9.1/libstdc++-v3/include/bits/random.tcc:2843:59: 
   in constexpr expansion of 'st
d::log(2.0e+0l)'
/tmp/ports/usr/ports/lang/gcc47/work/build/i386-portbld-freebsd9.1/libstdc++-v3/include/bits/random.tcc:2843:59: 
internal compiler error: Illega
l instruction: 4
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html>; for instructions.
gmake[5]: *** [i386-portbld-freebsd9.1/bits/stdc++.h.gch/O2ggnu++0x.gch] 
Error 1
gmake[5]: Leaving directory 
`/tmp/ports/usr/ports/lang/gcc47/work/build/i386-portbld-freebsd9.1/libstdc++-v3/include'
gmake[4]: *** [all-recursive] Error 1
gmake[4]: Leaving directory 
`/tmp/ports/usr/ports/lang/gcc47/work/build/i386-portbld-freebsd9.1/libstdc++-v3'
gmake[3]: *** [all] Error 2
gmake[3]: Leaving directory 
`/tmp/ports/usr/ports/lang/gcc47/work/build/i386-portbld-freebsd9.1/libstdc++-v3'
gmake[2]: *** [all-stage1-target-libstdc++-v3] Error 2
gmake[2]: Leaving directory `/tmp/ports/usr/ports/lang/gcc47/work/build'
gmake[1]: *** [stage1-bubble] Error 2
gmake[1]: Leaving directory `/tmp/ports/usr/ports/lang/gcc47/work/build'
gmake: *** [bootstrap-lean] Error 2
*** [do-build] Error code 1

I'll try rebuilding lang/gcc without CPUTYPE set and see if this helps.

-- 
Sphinx of black quartz judge my vow.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?505421F4.3040100>