Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 446946 - sys-devel/binutils[-multitarget]: x86 builds should include x86_64 support
Summary: sys-devel/binutils[-multitarget]: x86 builds should include x86_64 support
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Core system (show other bugs)
Hardware: x86 Linux
: Normal normal (vote)
Assignee: Gentoo Toolchain Maintainers
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-12-12 03:40 UTC by Maxim Kammerer
Modified: 2012-12-24 10:25 UTC (History)
1 user (show)

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


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Maxim Kammerer 2012-12-12 03:40:59 UTC
# USE=multitarget emerge -q1 binutils
>>> Verifying ebuild manifests
>>> Emerging (1 of 1) sys-devel/binutils-2.22-r1
>>> Installing (1 of 1) sys-devel/binutils-2.22-r1
# as --64
^C

# emerge -q1 binutils
>>> Verifying ebuild manifests
>>> Emerging (1 of 1) sys-devel/binutils-2.22-r1
>>> Installing (1 of 1) sys-devel/binutils-2.22-r1
# as --64
Assembler messages:
Fatal error: no compiled in support for x86_64


Remerging gcc / binutils does not help.


# gcc -v -m64 -march=x86-64 -c -o a a.c
Using built-in specs.
COLLECT_GCC=/usr/i686-pc-linux-gnu/gcc-bin/4.5.4/gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/i686-pc-linux-gnu/4.5.4/lto-wrapper
Target: i686-pc-linux-gnu
Configured with: /var/tmp/portage/sys-devel/gcc-4.5.4/work/gcc-4.5.4/configure --prefix=/usr --bindir=/usr/i686-pc-linux-gnu/gcc-bin/4.5.4 --includedir=/usr/lib/gcc/i686-pc-linux-gnu/4.5.4/include --datadir=/usr/share/gcc-data/i686-pc-linux-gnu/4.5.4 --mandir=/usr/share/gcc-data/i686-pc-linux-gnu/4.5.4/man --infodir=/usr/share/gcc-data/i686-pc-linux-gnu/4.5.4/info --with-gxx-include-dir=/usr/lib/gcc/i686-pc-linux-gnu/4.5.4/include/g++-v4 --host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --disable-altivec --disable-fixed-point --without-ppl --without-cloog --disable-lto --enable-nls --without-included-gettext --with-system-zlib --enable-obsolete --disable-werror --enable-secureplt --disable-multilib --disable-libmudflap --disable-libssp --enable-esp --enable-libgomp --with-python-dir=/share/gcc-data/i686-pc-linux-gnu/4.5.4/python --enable-checking=release --disable-libgcj --with-arch=i686 --enable-languages=c,c++ --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --enable-targets=all --with-bugurl=http://bugs.gentoo.org/ --with-pkgversion='Gentoo Hardened 4.5.4 p1.0, pie-0.4.7'
Thread model: posix
gcc version 4.5.4 (Gentoo Hardened 4.5.4 p1.0, pie-0.4.7) 
COLLECT_GCC_OPTIONS='-v' '-m64' '-march=x86-64' '-c' '-o' 'a' '-fPIE' '-pie'
 /usr/libexec/gcc/i686-pc-linux-gnu/4.5.4/cc1 -quiet -v -imultilib . a.c -D_FORTIFY_SOURCE=2 -fno-strict-overflow -quiet -dumpbase a.c -m64 -march=x86-64 -auxbase-strip a -version -fPIE -fstack-protector-all -o /tmp/ccPIr81k.s
GNU C (Gentoo Hardened 4.5.4 p1.0, pie-0.4.7) version 4.5.4 (i686-pc-linux-gnu)
	compiled by GNU C version 4.5.4, GMP version 5.0.2, MPFR version 3.0.1-p4, MPC version 0.8.2
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring nonexistent directory "/usr/local/include"
ignoring nonexistent directory "/usr/lib/gcc/i686-pc-linux-gnu/4.5.4/../../../../i686-pc-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/i686-pc-linux-gnu/4.5.4/include
 /usr/lib/gcc/i686-pc-linux-gnu/4.5.4/include-fixed
 /usr/include
End of search list.
GNU C (Gentoo Hardened 4.5.4 p1.0, pie-0.4.7) version 4.5.4 (i686-pc-linux-gnu)
	compiled by GNU C version 4.5.4, GMP version 5.0.2, MPFR version 3.0.1-p4, MPC version 0.8.2
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 10d7d8705f7fadfca206ce8b6bb2566e
COLLECT_GCC_OPTIONS='-v' '-m64' '-march=x86-64' '-c' '-o' 'a' '-fPIE' '-pie'
 /usr/lib/gcc/i686-pc-linux-gnu/4.5.4/../../../../i686-pc-linux-gnu/bin/as -V -Qy --64 -o a /tmp/ccPIr81k.s
GNU assembler version 2.22 (i686-pc-linux-gnu) using BFD version (GNU Binutils) 2.22
Assembler messages:
Fatal error: no compiled in support for x86_64


Portage 2.1.11.31 (hardened/linux/x86, gcc-4.5.4, glibc-2.15-r3, 3.4.7-hardened i686)
=================================================================
                        System Settings
=================================================================
System uname: Linux-3.4.7-hardened-i686-with-gentoo-2.1
Timestamp of tree: Tue, 11 Dec 2012 00:45:01 +0000
ld GNU ld (GNU Binutils) 2.22
app-shells/bash:          4.2_p37
dev-lang/python:          2.7.3-r2, 3.2.3
dev-util/cmake:           2.8.9
dev-util/pkgconfig:       0.27.1
sys-apps/baselayout:      2.1-r1
sys-apps/openrc:          0.11.8
sys-apps/sandbox:         2.5
sys-devel/autoconf:       2.13, 2.68
sys-devel/automake:       1.9.6-r3, 1.11.6
sys-devel/binutils:       2.22-r1
sys-devel/gcc:            4.5.4
sys-devel/gcc-config:     1.7.3
sys-devel/libtool:        2.4-r1
sys-devel/make:           3.82-r3
sys-kernel/linux-headers: 3.6 (virtual/os-headers)
sys-libs/glibc:           2.15-r3
Repositories: gentoo liberte
ACCEPT_KEYWORDS="x86"
ACCEPT_LICENSE="@FREE as-is freedist unRAR lha @BINARY-REDISTRIBUTABLE Atmel SIL-freeware amd-ucode Conexant-firmware Hauppauge-Firmware Broadcom"
CBUILD="i686-pc-linux-gnu"
CFLAGS="-Os -march=pentium3 -mtune=core2 -mfpmath=sse -fomit-frame-pointer -pipe"
CHOST="i686-pc-linux-gnu"
CONFIG_PROTECT="/etc/locale.gen"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"
CXXFLAGS="-Os -march=pentium3 -mtune=core2 -mfpmath=sse -fomit-frame-pointer -pipe"
DISTDIR="/usr/portage/distfiles"
EMERGE_DEFAULT_OPTS="--quiet-unmerge-warn --autounmask=n"
FCFLAGS="-march=i686 -O2 -pipe"
FEATURES="assume-digests binpkg-logs collision-protect compress-build-logs config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync news parallel-fetch protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync webrsync-gpg"
FFLAGS="-march=i686 -O2 -pipe"
GENTOO_MIRRORS="http://distfiles.gentoo.org                 http://mirrors.kernel.org/gentoo"
LANG="en_US.UTF-8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed -Wl,-O,1,-z,combreloc"
MAKEOPTS="-j3"
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="/usr/local/portage"
SYNC="rsync://disabled"
USE="X X509 aac acl acpi action_modeswitch alsa archive aspell bluetooth bs2b bzip2 cairo caps cdda cjk cli consolekit cpudetection crypt cue custom-cflags dbus dhcp djvu dri eap-sim eap-tls edd exif expat flac gmp goffice gpm grammar groupwise gtk hardened hires-icons hwdb hybrid-auth iconv id3tag idn iproute2 irda jbig jpeg jpeg2k keymap lcms libkms libnotify lzma m17n-lib mad madwifi mktemp mmx modemmanager modules mp3 multicall ncurses netlink networkmanager nls nptl ntfsprogs ogg openmp ots pam pax_kernel pcmcia pcre pcsc-lite pic pkcs11 png policykit postscript pppd readline scsi silc smartcard smime sndfile speex spell sse ssl startup-notification staticsocket svg symlink thesaurus threads tiff truetype unicode urandom usb uuid v4l vorbis wavpack webgl wifi wimax wmf x86 x86emu xattr xft xinerama xmp xv zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1 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="authn_core authz_core socache_shmcb unixd 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" GRUB_PLATFORMS="efi-32 efi-64" INPUT_DEVICES="evdev synaptics vmmouse joystick" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LINGUAS="*" PHP_TARGETS="php5-3" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_2" RUBY_TARGETS="ruby18 ruby19" USERLAND="GNU" VIDEO_CARDS="apm ark chips cirrus cyrix dummy fbdev glint i128 i740 intel mach64 mga nsc nv r128 radeon rendition s3 s3virge savage siliconmotion sis sisusb tdfx tga trident tseng v4l vesa via vmware modesetting nouveau virtualbox qxl" 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, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, USE_PYTHON

=================================================================
                        Package Settings
=================================================================

sys-devel/binutils-2.22-r1 was built with the following:
USE="cxx nls zlib -multislot -multitarget -static-libs -test -vanilla"

sys-devel/gcc-4.5.4 was built with the following:
USE="cxx hardened nls nptl openmp (-altivec) -bootstrap -build -doc (-fixed-point) -fortran -gcj -graphite -gtk (-libssp) -lto -mudflap (-multilib) -multislot -nopie -nossp -objc -objc++ -objc-gc -test -vanilla"

CFLAGS="-Os -march=pentium3 -mtune=core2 -pipe"
CXXFLAGS="-Os -march=pentium3 -mtune=core2 -pipe"
Comment 1 Maxim Kammerer 2012-12-12 10:59:49 UTC
Adding
  myconf+=( --enable-64-bit-bfd )
immediately after
  use multitarget && myconf+=( --enable-targets=all --enable-64-bit-bfd )
in
  /usr/portage/eclass/toolchain-binutils.eclass

fixes the problem.
Comment 2 Maxim Kammerer 2012-12-12 11:11:53 UTC
Commenting out the added
  myconf+=( --enable-64-bit-bfd )
and remerging binutils again, the problem returns.

The difference in qlist -e binutils is:

/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_k1om.x
/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_k1om.xbn
/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_k1om.xc
/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_k1om.xd
/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_k1om.xdc
/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_k1om.xdw
/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_k1om.xn
/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_k1om.xr
/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_k1om.xs
/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_k1om.xsc
/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_k1om.xsw
/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_k1om.xu
/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_k1om.xw
/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_l1om.x
/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_l1om.xbn
/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_l1om.xc
/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_l1om.xd
/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_l1om.xdc
/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_l1om.xdw
/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_l1om.xn
/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_l1om.xr
/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_l1om.xs
/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_l1om.xsc
/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_l1om.xsw
/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_l1om.xu
/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_l1om.xw
/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_x86_64.x
/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_x86_64.xbn
/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_x86_64.xc
/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_x86_64.xd
/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_x86_64.xdc
/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_x86_64.xdw
/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_x86_64.xn
/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_x86_64.xr
/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_x86_64.xs
/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_x86_64.xsc
/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_x86_64.xsw
/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_x86_64.xu
/usr/lib/binutils/i686-pc-linux-gnu/2.22/ldscripts/elf_x86_64.xw

These files are present e.g. in stage3 binutils. So it seem that whether 64-bit-bfd is enabled without an explicit switch is somehow dependent on currently installed binutils -- could be a bug in binutils build system.
Comment 3 Maxim Kammerer 2012-12-15 12:23:02 UTC
Bug #444830 suggests that always adding --enable-targets=i686-linux-gnu,x86_64-linux-gnu might be a solution.
Comment 4 SpanKY gentoo-dev 2012-12-23 23:37:49 UTC
we used to do this, but then changed it in Bug 438522.  guess we can re-enable it for the bi-arches ... but i can see some people who don't care about bi-arch and would want to disable it.  i'll wait for that day though.

http://sources.gentoo.org/eclass/toolchain-binutils.eclass?r1=1.121&r2=1.122
Comment 5 Maxim Kammerer 2012-12-24 10:25:24 UTC
Thanks, I tested on building an x86-64 kernel. Was not aware of bug 438522 -- I assumed that 64-bit support on x86 would be disabled in gcc in unison with binutils.