Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 496760 - sys-devel/binutils resets linker to ld.bfd on emerge
Summary: sys-devel/binutils resets linker to ld.bfd on emerge
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Gentoo Toolchain Maintainers
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-01-02 13:41 UTC by Marcin Mirosław
Modified: 2019-08-19 23:18 UTC (History)
2 users (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 Marcin Mirosław 2014-01-02 13:41:19 UTC
I've got sys-devel/binutils-2.23.2 installed, I choosed ld.gold as default linker (`binutils-config --linker ld.gold`). After upgrade default was changed to linker "bfd".

Reproducible: Always




# emerge --info
Portage 2.2.7 (default/linux/amd64/13.0/desktop/kde, gcc-4.8.2, glibc-2.17, 3.12.5-gentoo x86_64)
=================================================================
System uname: Linux-3.12.5-gentoo-x86_64-Intel-R-_Core-TM-2_Duo_CPU_E8400_@_3.00GHz-with-gentoo-2.2
KiB Mem:     3079124 total,     87532 free
KiB Swap:    5242812 total,   5015240 free
Timestamp of tree: Thu, 02 Jan 2014 07:00:01 +0000
ld GNU gold (GNU Binutils 2.24) 1.11
ccache version 3.1.9 [enabled]
app-shells/bash:          4.2_p45
dev-java/java-config:     2.2.0
dev-lang/python:          2.7.6, 3.2.5-r3, 3.3.3
dev-util/ccache:          3.1.9-r3
dev-util/cmake:           2.8.12.1-r2
dev-util/pkgconfig:       0.28
sys-apps/baselayout:      2.2
sys-apps/openrc:          0.12.4
sys-apps/sandbox:         2.6-r1
sys-devel/autoconf:       2.13, 2.69
sys-devel/automake:       1.12.6, 1.14.1
sys-devel/binutils:       2.24
sys-devel/gcc:            4.5.4, 4.7.3-r1, 4.8.2
sys-devel/gcc-config:     1.8
sys-devel/libtool:        2.4.2
sys-devel/make:           4.0-r1
sys-kernel/linux-headers: 3.12 (virtual/os-headers)
sys-libs/glibc:           2.17
Repositories: gentoo sunrise gnustep
ACCEPT_KEYWORDS="amd64 ~amd64"
ACCEPT_LICENSE="* -@EULA AdobeFlash-11.x PUEL Q3AEULA dlj-1.1 Oracle-BCLA-JavaSE"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-O2 -march=native -pipe -fpeel-loops -frename-registers -frecord-gcc-switches -fno-unwind-tables -fno-asynchronous-unwind-tables           -fpredictive-commoning -fweb -ftree-vectorize -floop-interchange -fivopts           -floop-block -floop-strip-mine -fira-loop-pressure -floop-interchange -ftree-loop-linear -Wdisabled-optimization   -fuse-linker-plugin"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/config /usr/share/gnupg/qualified.txt"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"
CXXFLAGS="-O2 -march=native -pipe -fpeel-loops -frename-registers -frecord-gcc-switches -fno-unwind-tables -fno-asynchronous-unwind-tables           -fpredictive-commoning -fweb -ftree-vectorize -floop-interchange -fivopts           -floop-block -floop-strip-mine -fira-loop-pressure -floop-interchange -ftree-loop-linear -Wdisabled-optimization   -fuse-linker-plugin"
DISTDIR="/usr/portage/distfiles"
FCFLAGS="-O2 -pipe"
FEATURES="Xfail-clean Xkeepwork Xunmerge-backup assume-digests binpkg-logs ccache collision-protect compressdebug config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync news parallel-fetch parallel-install preserve-libs protect-owned sandbox sfperms strict unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-O2 -pipe"
GENTOO_MIRRORS="http://distfiles.gentoo.org"
LDFLAGS="-Wl,-O1 -Wl,--as-needed -z relro -Wl,--sort-common"
MAKEOPTS="-j2"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_EXTRA_OPTS="-O"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-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/layman/sunrise /usr/local/portage/layman/horhe /usr/local/portage/layman/gnustep /usr/local/portage/miro-overlay/in_sunrise /usr/local/portage/miro-overlay/staging /usr/local/portage/miro-overlay/portage /home/marcin/workdir/svn-cadera/trunk/Gentoo/overlay"
SYNC="rsync://192.168.138.254/gentoo-portage"
USE="X a52 aac acl acpi aio alsa amd64 apm async bash-completion bittorrent branding bzip2 cairo caps cdda cdr chroot cli consolekit crypt cups cxx dbus declarative dmx dri dvd dvdr emboss encode exif fam firefox ftp gif glibc-omitfp gpm graphite gstreamer iconv idn iproute2 ipv6 ithreads jpeg kde kipi laptop lcms libnotify lightning logrotate mad mmap mmx mmxext mng modules mp3 mp4 mpeg mudflap multilib ncurses network-cron nls nptl nsplugin nspluginwrapper objc ogg opengl openmp openssl optimization optimized-qmake pam pango pch pcre pdf phonon plasma png policykit ppds python3 qt3support qt4 readline samba sdl semantic-desktop session sharedmem smp spell sse sse2 sse3 sse4_1 ssl ssse3 startup-notification svg threads threadsafe tiff tools truetype udev udisks unicode upower urandom usb vim vim-pager vim-syntax vorbis wxwidgets x264 xattr xcb xcomposite xinerama xml xscreensaver xv xvid zip zlib" ABI_X86="64" 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" 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 cgid dav dbd deflate dir env expires ext_filter filter headers include info log_config logio mime mime_magic negotiation rewrite setenvif speling status unique_id usertrack vhost_alias" APACHE2_MPMS="worker" CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump author" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" DRACUT_MODULES="caps lvm mdraid" 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 ublox ubx" INPUT_DEVICES="evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LINGUAS="pl en es es_ES" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-3 php5-4" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_2 python3_3" RUBY_TARGETS="ruby19" USERLAND="GNU" VIDEO_CARDS="nvidia" 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, INSTALL_MASK, LANG, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, USE_PYTHON
Comment 1 Alex Turbov 2014-01-05 15:55:06 UTC
confirm! same here after (re)install binutils.
Comment 2 Alex Turbov 2014-01-05 16:28:55 UTC
(In reply to Alex Turbov from comment #1)
> confirm! same here after (re)install binutils.

root@gentop〉.../x86_64-pc-linux-gnu/binutils-bin/2.24〉ll ld*
-rwxr-xr-x 2 root root 832K Jan  5 20:21 ld
-rwxr-xr-x 2 root root 832K Jan  5 20:21 ld.bfd
-rwxr-xr-x 1 root root 3,5M Jan  5 20:21 ld.gold
Comment 3 Andreas K. Hüttel archtester gentoo-dev 2018-06-22 21:17:28 UTC
toolchain-binutils.eclass is being phased out. However, I suspect this bug is still present in current binutils anyway... Needs research.
Comment 4 Sergei Trofimovich (RETIRED) gentoo-dev 2019-01-27 20:55:51 UTC
I guess the problem here is that binutils-config does not persist user's choice anywhere and just tweaks symlinks installed by binutils-config itself.

There are a few ways to do it:
1. infer it from existing installed symlinks, a bit fragile
2. store users' preference separately somewhere in /etc/env.d or /var/
3. phase out binutils-config --linker support in favour of another mechanism, like binutils's --enable-gold=default set via USE-flag.
Comment 5 tt_1 2019-02-03 09:56:47 UTC
Most people testing gold linker will likely have added ECONF_EXTRA="--enable-gold=default" to package.env for binutils itself, so if you're willing to add a compile switch based on a useflag, that mimics best practice anyway.
Comment 6 Sergei Trofimovich (RETIRED) gentoo-dev 2019-02-03 10:44:51 UTC
I didn't realize we have a wiki page that advises package.env:
    https://wiki.gentoo.org/wiki/Gold

It should certainly be a use flag.
Comment 7 tt_1 2019-02-03 12:26:13 UTC
It's the only sensible thing to do, because if you want to test and doing an emerge @system after changing linker with binutils-config, well, binutils gets merged and resets itself to ld.bfd 

It might be possible to solve this via binutils-config, but as long as there is the compile switch and a possible useflag, it might not be that pressing of an issue.
Comment 8 Larry the Git Cow gentoo-dev 2019-02-12 23:01:40 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=bcf3b906fdf9380837d462e56aca0da1f2388f2c

commit bcf3b906fdf9380837d462e56aca0da1f2388f2c
Author:     Sergei Trofimovich <slyfox@gentoo.org>
AuthorDate: 2019-02-12 23:01:16 +0000
Commit:     Sergei Trofimovich <slyfox@gentoo.org>
CommitDate: 2019-02-12 23:01:33 +0000

    sys-devel/binutils: add USE=default-gold, bug #496760
    
    binutils allows you to set ld=ld.bfd (default) and ld=ld.gold.
    
    Expose this override as USE=default-gold.
    
    Reported-by: Marcin Mirosław
    Bug: https://bugs.gentoo.org/496760
    Package-Manager: Portage-2.3.60, Repoman-2.3.12
    Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>

 sys-devel/binutils/binutils-2.31.1-r3.ebuild | 8 ++++++--
 sys-devel/binutils/binutils-9999.ebuild      | 5 ++++-
 sys-devel/binutils/metadata.xml              | 1 +
 3 files changed, 11 insertions(+), 3 deletions(-)
Comment 9 Andy Pettinger 2019-02-13 10:02:52 UTC
After emerging binutils-2.31.1-r3 with default-gold flag it still appears in my case that i need to reset to gold using binutils-config, despite having /etc/portage/env/gold.conf.

While sys-devel/binutils-2.31.1-r4 is skipped due to a dependency conflict.

sys-devel/binutils:2.31

  (sys-devel/binutils-2.31.1-r4:2.31/2.31::gentoo, ebuild scheduled for merge) conflicts with
    >=sys-devel/binutils-2.22:*[cxx] required by (sys-devel/llvm-7.0.1:7/7::gentoo, installed)