Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 436150 - qt4-build.eclass filters out CPU specific compiler flags(?)
Summary: qt4-build.eclass filters out CPU specific compiler flags(?)
Status: RESOLVED INVALID
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Eclasses (show other bugs)
Hardware: AMD64 Linux
: Normal normal (vote)
Assignee: Qt Bug Alias
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-09-25 01:32 UTC by 颜烈彬
Modified: 2012-09-26 02:15 UTC (History)
0 users

See Also:
Package list:
Runtime testing required: ---


Attachments
build.log.gz (build.log.gz,51.36 KB, application/x-gzip)
2012-09-25 09:19 UTC, 颜烈彬
Details

Note You need to log in before you can comment on or make changes to this bug.
Description 颜烈彬 2012-09-25 01:32:57 UTC
The procedures of building Qt components check the cpu extensions and all of them are passed. But I Know it's wrong as my machine can't support avx indeed. I go to Qt's source and compile with command "g++ -O2 -mtune=native -march=native -pipe avx.cpp" and error raises as follows:
avx.cpp: In function 'int main(int, char**)':
avx.cpp:46:14: error: '__m256d' does not name a type
avx.cpp:47:14: error: '__m256d' does not name a type
avx.cpp:48:14: error: '__m256d' does not name a type
avx.cpp:49:11: error: 'result' was not declared in this scope

But it is fine to compile with -mavx (is it crosscompile?), but fails to run:
./a.out 
Illegal instruction


Reproducible: Always

Steps to Reproduce:
1. emerge qt-core -1v
2.
3.


Expected Results:  
some cpu extensions should be disable as they are not supported

emerge --info
Portage 2.2.0_alpha130 (default/linux/amd64/10.0, gcc-4.6.3, glibc-2.15-r2, 3.5.3-gentoo x86_64)
=================================================================
System uname: Linux-3.5.3-gentoo-x86_64-Intel-R-_Core-TM-2_Duo_CPU_E7400_@_2.80GHz-with-gentoo-2.2
Timestamp of tree: Fri, 21 Sep 2012 07:45:01 +0000
app-shells/bash:          4.2_p37
dev-java/java-config:     2.1.12
dev-lang/python:          2.7.3-r2, 3.2.3-r1
dev-util/cmake:           2.8.9
dev-util/pkgconfig:       0.27.1
sys-apps/baselayout:      2.2
sys-apps/openrc:          0.10.5
sys-apps/sandbox:         2.6
sys-devel/autoconf:       2.13, 2.69
sys-devel/automake:       1.11.6, 1.12.4
sys-devel/binutils:       2.22.90
sys-devel/gcc:            4.6.3
sys-devel/gcc-config:     1.7.3
sys-devel/libtool:        2.4.2
sys-devel/make:           3.82-r3
sys-kernel/linux-headers: 3.5 (virtual/os-headers)
sys-libs/glibc:           2.15-r2
Repositories: gentoo gentoo-zh enlightenment science
Installed sets: @enlightenment-live
ACCEPT_KEYWORDS="amd64 ~amd64"
ACCEPT_LICENSE="* -@EULA dlj-1.1 DOOM3 PUEL google-chrome AdobeFlash-10.3 Intel-SDP"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-O2 -mtune=native -march=native -pipe -ftree-vectorize"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/config /usr/share/gnupg/qualified.txt /usr/share/maven-bin-3.0/conf /usr/share/openvpn/easy-rsa /var/lib/hsqldb"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/php/apache2-php5.4/ext-active/ /etc/php/cgi-php5.4/ext-active/ /etc/php/cli-php5.4/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c"
CXXFLAGS="-O2 -mtune=native -march=native -pipe -ftree-vectorize"
DISTDIR="/opt/distfiles/"
EMERGE_DEFAULT_OPTS="--autounmask=n --load-average=2"
FCFLAGS="-O2 -mtune=native -march=native -pipe -ftree-vectorize"
FEATURES="assume-digests binpkg-logs compress-build-logs config-protect-if-modified distlocks ebuild-locks fixlafiles metadata-transfer news parallel-fetch preserve-libs protect-owned sandbox sfperms splitdebug strict unknown-features-warn unmerge-logs unmerge-orphans userfetch xattr"
FFLAGS="-O2 -mtune=native -march=native -pipe -ftree-vectorize"
GENTOO_MIRRORS="http://mirrors.163.com/gentoo/"
LANG="C"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
LINGUAS="en en_GB en_US zh zh_CN zh_HK zh_TW"
MAKEOPTS="-j2"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/var/lib/layman/gentoo-zh /var/lib/layman/enlightenment /var/lib/layman/science"
SYNC="rsync://mirrors.163.com/gentoo-portage"
USE="PyQt X a52 aac aalib accessibility acl acpi ada agg alsa amd64 amr apache2 arpack audiofile avahi berkdb bittorrent branding bzip2 cairo calendar cdio chm cjk cli clisp consolekit cracklib crypt cscope cue cups custom-optimization cvs cvsgraph cxx dbus devkit dirac djvu doxygen dri dri2 ebook edje egl encode enscript espeak exif expat faac faad fbcon ffmpeg fftw flac fluidsynth fortran frei0r ftp gallium gd gdbm gif git glitz glpk gmp gnat gnutls gpm graphite gsm gstreamer hardened hvm iconv icu imlib inotify iproute2 ipv6 joystick jpeg jpeg2k kde lame lastfmradio latex lcms libmms libnotify libsamplerate lzma lzo mad midi mikmod mjpeg mmx mng mod_python modperl modplug modules mp3 mpeg mplayer mudflap multilib multilib_abi_amd64 multilib_abi_x86 multimedia musepack mysql ncurses nepomuk network nls nptl nsplugin odbc ogg openal opengl openmp openvg pam pcre perl pic pipe plugin_stardict png poliykit polkitqt ppp pppd private-headers pulseaudio pvr pygments python qt3support qt4 quicktime readline realtime redeyes rtmp savedconfig schroedinger sdl semantic-desktop session socks5 speex spell sql sqlite sse sse2 sse3 sse4 sse41 ssl ssse3 subversion svg synaptics tcpd theora threads tiff trace truetype unicode usb v4l vaapi vhosts vorbis vpx wayland x264 xanim xattr xcb xcomposite xetex xine xinerama xml xv xvid xvmc xz zh zh_CN zh_TW zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ubx" INPUT_DEVICES="keyboard mouse evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LINGUAS="en en_GB en_US zh zh_CN zh_HK zh_TW" PHP_TARGETS="php5-3" PYTHON_TARGETS="python3_2 python2_7" QEMU_SOFTMMU_TARGETS="i386 x86_64" QEMU_USER_TARGETS="i386 x86_64" RUBY_TARGETS="ruby19 ruby18" USERLAND="GNU" VIDEO_CARDS="v4l2 v4l fbdev intel vesa i915" XTABLES_ADDONS="cui gfw zhang"
Unset:  CPPFLAGS, CTARGET, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, USE_PYTHON
Comment 1 Jeroen Roovers (RETIRED) gentoo-dev 2012-09-25 03:02:24 UTC
Please attach the entire build log to this bug report.
Comment 2 颜烈彬 2012-09-25 09:19:52 UTC
Created attachment 324928 [details]
build.log.gz
Comment 3 颜烈彬 2012-09-25 09:27:44 UTC
By adding "-mno-avx -mno-3dnow -mno-sse4.2" to compiler flags, Qt fails to enable those extensions.
Comment 4 Davide Pesavento (RETIRED) gentoo-dev 2012-09-25 18:58:36 UTC
(In reply to comment #0)
> The procedures of building Qt components check the cpu extensions and all of
> them are passed. But I Know it's wrong as my machine can't support avx
> indeed. I go to Qt's source and compile with command "g++ -O2 -mtune=native
> -march=native -pipe avx.cpp" and error raises as follows:
> avx.cpp: In function 'int main(int, char**)':
> avx.cpp:46:14: error: '__m256d' does not name a type
> avx.cpp:47:14: error: '__m256d' does not name a type
> avx.cpp:48:14: error: '__m256d' does not name a type
> avx.cpp:49:11: error: 'result' was not declared in this scope
> 

Expected, gcc 4.6.x does not support AVX.

> But it is fine to compile with -mavx (is it crosscompile?), but fails to run:
> ./a.out 
> Illegal instruction
> 

Expected, you said your cpu does not support AVX, so you shouldn't add -mavx, ever.

(In reply to comment #3)
> By adding "-mno-avx -mno-3dnow -mno-sse4.2" to compiler flags, Qt fails to
> enable those extensions.

Obviously expected.
Comment 5 颜烈彬 2012-09-26 02:04:39 UTC
(In reply to comment #4)
But Qt does enable all cpu extensions if no "-mno-avx -mno-3dnow -mno-sse4.2" set in compiler's flags, It just compiles avx.cpp with -mavx but never runs avx.o!
> (In reply to comment #0)
> > The procedures of building Qt components check the cpu extensions and all of
> > them are passed. But I Know it's wrong as my machine can't support avx
> > indeed. I go to Qt's source and compile with command "g++ -O2 -mtune=native
> > -march=native -pipe avx.cpp" and error raises as follows:
> > avx.cpp: In function 'int main(int, char**)':
> > avx.cpp:46:14: error: '__m256d' does not name a type
> > avx.cpp:47:14: error: '__m256d' does not name a type
> > avx.cpp:48:14: error: '__m256d' does not name a type
> > avx.cpp:49:11: error: 'result' was not declared in this scope
> > 
> 
> Expected, gcc 4.6.x does not support AVX.
> 
> > But it is fine to compile with -mavx (is it crosscompile?), but fails to run:
> > ./a.out 
> > Illegal instruction
> > 
> 
> Expected, you said your cpu does not support AVX, so you shouldn't add
> -mavx, ever.
> 
> (In reply to comment #3)
> > By adding "-mno-avx -mno-3dnow -mno-sse4.2" to compiler flags, Qt fails to
> > enable those extensions.
> 
> Obviously expected.
Comment 6 Davide Pesavento (RETIRED) gentoo-dev 2012-09-26 02:15:11 UTC
(In reply to comment #5)

So what? Running test programs (compiled for the host) would break cross-compilation. So, again, that's totally expected.