Unable to compile perl-5.10.1 with gcc-4.5.0 with message {standard input}: Assembler messages: {standard input}:5488: Error: no such instruction: `movbe 212(%esp),%eax' {standard input}:6473: Error: no such instruction: `movbe 264(%esp),%eax' make: *** [pp_pack.o] Error 1 Reproducible: Always Steps to Reproduce: 1.Rebuilding system with "emerge -euvr system" 2.perl fails to compile 3. Actual Results: Perl 5.10.1 fails to compile Expected Results: Perl should compile just fine emerge --info Portage 2.1.8.3 (default/linux/x86/10.0/desktop/kde, gcc-4.5.0, glibc-2.11.1-r0, 2.6.32-21-generic i686) ================================================================= System uname: Linux-2.6.32-21-generic-i686-Intel-R-_Atom-TM-_CPU_N270_@_1.60GHz-with-gentoo-2.0.1 Timestamp of tree: Thu, 13 May 2010 20:00:01 +0000 app-shells/bash: 4.1_p5 dev-lang/python: 2.6.4-r1 sys-apps/baselayout: 2.0.1 sys-apps/openrc: 0.6.1-r1 sys-apps/sandbox: 2.2 sys-devel/autoconf: 2.65 sys-devel/automake: 1.11.1 sys-devel/binutils: 2.18-r3 sys-devel/gcc: 4.3.4, 4.5.0 sys-devel/gcc-config: 1.4.1 sys-devel/libtool: 2.2.6b virtual/os-headers: 2.6.33 ACCEPT_KEYWORDS="x86 ~x86" ACCEPT_LICENSE="*" CBUILD="i686-pc-linux-gnu" CFLAGS="-O2 -march=atom -mtune=atom -m32 -mfpmath=sse -mssse3 -fomit-frame-pointer -pipe" CHOST="i686-pc-linux-gnu" CONFIG_PROTECT="/etc" CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/gconf /etc/gentoo-release /etc/sandbox.d /etc/terminfo" CXXFLAGS="-O2 -march=atom -mtune=atom -m32 -mfpmath=sse -mssse3 -fomit-frame-pointer -pipe" DISTDIR="/usr/portage/distfiles" FEATURES="assume-digests distlocks fixpackages news parallel-fetch protect-owned sandbox sfperms strict unmerge-logs unmerge-orphans userfetch" GENTOO_MIRRORS="http://distfiles.gentoo.org" LANG="en_US.UTF-8" LDFLAGS="-Wl,-O1" LINGUAS="en" MAKEOPTS="-j2" PKGDIR="/var/packages" PORTAGE_COMPRESS="xz" PORTAGE_COMPRESS_FLAGS="" PORTAGE_CONFIGROOT="/" PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" SYNC="rsync://rsync.gentoo.org/gentoo-portage" USE="32bit X a52 aac acl acpi akonadi alsa archive aspell bash-completion bindist branding bzip2 cairo cli consolekit cracklib cups cxx dbus dhcpcd dri dts emboss encode exif fam ffmpeg firefox fortran gif gnutls graphite hyperestraier iconv inotify ipod jpeg kde kipi laptop lcms libnotify lzma lzo mad matroska metalink mikmod minimal mmap mmx mng modules mp3 mp4 mpeg mudflap mysql ncurses networkmanager nls nptl nptlonly nsplugin nss ogg opengl openmp optimized-qmake pam pango pcre pdf perl phonon plasma png policykit ppds python qt3support qt4 readline rss samba scanner sdl semantic-desktop session smp solid spell sse sse2 ssl ssse3 startup-notification svg svga symlink sysfs taglib tcpd theora threads tiff truetype udev unicode usb v4l2 virtuoso vorbis wifi x264 x86 xattr xcb xcomposite xine xml xorg xulrunner xv xvid xvmc zeroconf zlib" ALSA_CARDS="hda-intel" 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" ELIBC="glibc" INPUT_DEVICES="keyboard mouse evdev synaptics" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="en" RUBY_TARGETS="ruby18" SANE_BACKENDS="hp" USERLAND="GNU" VIDEO_CARDS="intel" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account" Unset: CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, LC_ALL, PORTAGE_RSYNC_EXTRA_OPTS, PORTDIR_OVERLAY
If that changes anything i am compiling it while chrooting (fresh system).
Are you sure about '-mfpmath=sse -mssse3' part of your CFLAGS ? Also, on ~x86 '-m32' is rather redundant.
Why shouldn't i be sure about those settings? From what i gathered (forums, mailing lists) it is safe and if i don't explicitly use -mssse3 (at least with native, no idea if it is the same with -march=atom) it won't be used. I put -m32 since there are 64 bit atom chips but i want only 32 bit code without 64 bit optimizations (of course i may be wrong). If i understand it right -mssse3 is the same as -msse3 (or not?) otherwise it would say that there is no such command/flag ? Atom has sse,sse2,ssse3 and mmx so i guess ssse3 is safe since it will automatically enable sse,sse2,ssse3 and mmx?
I just read online docs for gcc 4.5.0 so it looks like atom already activates sse,sse2,ssse3 and mmx (ssse3 is correct from what i see and it shouldn't result in compile failures)
http://gcc.gnu.org/onlinedocs/gcc-4.5.0/gcc/i386-and-x86_002d64-Options.html The docs introduce new instructions (aforementioned movbe) which DO NOT exist in gcc 4.4.3 (just change the numbers after gcc in above link to check 4.4.3 docs.
I found the same bug with not found instruction (movbe) in gettext, should i file another bug report?
From what i see my CPU supports movbe instructions. Is it possible i get those errors because i am compiling the system (chroot) while using ubuntu 10.4 or should i use system rescue cd (which is gentoo based from what i remember) cat /proc/cpuinfo cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 28 model name : Intel(R) Atom(TM) CPU N270 @ 1.60GHz stepping : 2 cpu MHz : 800.000 cache size : 512 KB physical id : 0 siblings : 2 core id : 0 cpu cores : 1 apicid : 0 initial apicid : 0 fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 10 wp : yes flags : fpu vme de tsc msr pae mce cx8 apic mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64 monitor ds_cpl est tm2 ssse3 xtpr pdcm movbe lahf_lm bogomips : 3191.91 clflush size : 64 cache_alignment : 64 address sizes : 32 bits physical, 32 bits virtual power management: processor : 1 vendor_id : GenuineIntel cpu family : 6 model : 28 model name : Intel(R) Atom(TM) CPU N270 @ 1.60GHz stepping : 2 cpu MHz : 800.000 cache size : 512 KB physical id : 0 siblings : 2 core id : 0 cpu cores : 1 apicid : 1 initial apicid : 1 fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 10 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64 monitor ds_cpl est tm2 ssse3 xtpr pdcm movbe lahf_lm bogomips : 3191.94 clflush size : 64 cache_alignment : 64 address sizes : 32 bits physical, 32 bits virtual power management:
Is it possible that by using Ubuntu 10.4 (and in fact using that kernel) and it's GENERIC kernel (which probably doesn't suport movbe) i am unable to use those instructions when chrooting to my installation?
I found answer to my bug, as it was a fresh system i had old binutils 2.8.x while movbe is available from binutils version 2.10.x After recompiling binutils with old gcc 4.3.4 i can now use gcc 4.5.0 without problems