Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 553842 - sys-devel/libtool: nm detection fails when using LTO
Summary: sys-devel/libtool: nm detection fails when using LTO
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: LTO
Keywords:
: 553844 (view as bug list)
Depends on:
Blocks: lto
  Show dependency tree
 
Reported: 2015-07-03 10:33 UTC by Paolo Pedroni
Modified: 2024-03-06 06:27 UTC (History)
2 users (show)

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


Attachments
libindicator-12.10.1-r201:20150703-102346.log.gz (libindicator-12.10.1-r201:20150703-102346.log.gz,6.28 KB, application/gzip)
2015-07-03 10:33 UTC, Paolo Pedroni
Details
config.log (config.log,38.05 KB, text/x-log)
2015-07-06 13:05 UTC, Paolo Pedroni
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Paolo Pedroni 2015-07-03 10:33:14 UTC
Created attachment 406120 [details]
libindicator-12.10.1-r201:20150703-102346.log.gz

Whenever I try to emerge dev-libs/libindicator-12.10.1-r201 I get the following failure:

libtool: link: /usr/bin/nm -B  .libs/libindicator_la-gen-indicator-service.xml.o .libs/libindicator_la-indicator-object.o .libs/libindicator_la-indicator-object-enum-types.o .libs/libindicator_la-indicator-desktop-shortcuts.o .libs/libindicator_la-indicator-image-helper.o .libs/libindicator_la-indicator-object-marshal.o .libs/libindicator_la-indicator-service.o .libs/libindicator_la-indicator-service-manager.o   |  | /usr/bin/sed 's/.* //' | sort | uniq > .libs/libindicator.exp
../libtool: eval: line 1085: syntax error near unexpected token `|'
../libtool: eval: line 1085: `/usr/bin/nm -B  .libs/libindicator_la-gen-indicator-service.xml.o .libs/libindicator_la-indicator-object.o .libs/libindicator_la-indicator-object-enum-types.o .libs/libindicator_la-indicator-desktop-shortcuts.o .libs/libindicator_la-indicator-image-helper.o .libs/libindicator_la-indicator-object-marshal.o .libs/libindicator_la-indicator-service.o .libs/libindicator_la-indicator-service-manager.o   |  | /usr/bin/sed 's/.* //' | sort | uniq > .libs/libindicator.exp'
Makefile:489: recipe for target 'libindicator.la' failed
make[3]: *** [libindicator.la] Error 2
make[3]: Leaving directory '/var/tmp/portage/dev-libs/libindicator-12.10.1-r201/work/libindicator-12.10.1-abi_x86_64.amd64/libindicator'
Makefile:417: recipe for target 'all' failed
make[2]: *** [all] Error 2
make[2]: Leaving directory '/var/tmp/portage/dev-libs/libindicator-12.10.1-r201/work/libindicator-12.10.1-abi_x86_64.amd64/libindicator'
Makefile:358: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/var/tmp/portage/dev-libs/libindicator-12.10.1-r201/work/libindicator-12.10.1-abi_x86_64.amd64'
Makefile:288: recipe for target 'all' failed
make: *** [all] Error 2

(note the two pipe operators next to each other).

# emerge --info =dev-libs/libindicator-12.10.1-r201::gentoo 
Portage 2.2.18 (python 2.7.9-final-0, default/linux/amd64/13.0/desktop/plasma/systemd, gcc-4.9.3, glibc-2.20-r2, 4.0.5-gentoo x86_64)
=================================================================
                         System Settings
=================================================================
System uname: Linux-4.0.5-gentoo-x86_64-Intel-R-_Core-TM-_i7-2600_CPU_@_3.40GHz-with-gentoo-2.2
KiB Mem:    16125480 total,    282136 free
KiB Swap:    8171516 total,   8153940 free
Timestamp of repository gentoo: Fri, 03 Jul 2015 07:45:01 +0000
sh dash 0.5.7.4
ld GNU gold (Gentoo 2.25 p1.2 2.25) 1.11
distcc 3.1 x86_64-pc-linux-gnu [enabled]
ccache version 3.1.9 [disabled]
app-shells/bash:          4.3_p33-r2::gentoo
dev-java/java-config:     2.2.0::gentoo
dev-lang/perl:            5.22.0::gentoo
dev-lang/python:          2.7.9-r1::gentoo, 3.4.2::gentoo
dev-util/ccache:          3.1.9-r4::gentoo
dev-util/cmake:           3.2.2::gentoo
dev-util/pkgconfig:       0.28-r2::gentoo
sys-apps/baselayout:      2.2::gentoo
sys-apps/openrc:          0.17::gentoo
sys-apps/sandbox:         2.6-r1::gentoo
sys-devel/autoconf:       2.69::gentoo
sys-devel/automake:       1.11.6-r1::gentoo, 1.14.1::gentoo
sys-devel/binutils:       2.25-r1::gentoo
sys-devel/gcc:            4.9.3::gentoo
sys-devel/gcc-config:     1.7.3::gentoo
sys-devel/libtool:        2.4.6::gentoo
sys-devel/make:           4.1-r1::gentoo
sys-kernel/linux-headers: 3.18::gentoo (virtual/os-headers)
sys-libs/glibc:           2.20-r2::gentoo
Repositories:

gentoo
    location: /usr/portage
    sync-type: rsync
    sync-uri: rsync://rsync.europe.gentoo.org/gentoo-portage
    priority: -1000

kde
    location: /var/lib/layman/kde
    sync-type: git
    sync-uri: git://anongit.gentoo.org/proj/kde.git
    masters: gentoo kde
    priority: 0

x-portage
    location: /usr/local/portage
    masters: gentoo
    priority: 1

ACCEPT_KEYWORDS="amd64"
ACCEPT_LICENSE="* -@EULA"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-O2 -pipe -march=sandybridge -msahf --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=8192 -flto=8 -fuse-linker-plugin -floop-interchange -floop-strip-mine -floop-block -fgraphite-identity"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/lib64/libreoffice/program/sofficerc /usr/share/config /usr/share/gnupg/qualified.txt /var/lib/hsqldb"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/php/apache2-php5.6/ext-active/ /etc/php/cgi-php5.6/ext-active/ /etc/php/cli-php5.6/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"
CXXFLAGS="-O2 -pipe -march=sandybridge -msahf --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=8192 -flto=8 -fuse-linker-plugin -floop-interchange -floop-strip-mine -floop-block -fgraphite-identity"
DISTDIR="/usr/portage/distfiles"
EMERGE_DEFAULT_OPTS="--keep-going y --with-bdeps y"
FCFLAGS="-O2 -pipe"
FEATURES="assume-digests binpkg-logs cgroup compress-build-logs config-protect-if-modified distcc distlocks ebuild-locks ipc-sandbox merge-sync news parallel-fetch protect-owned sandbox sfperms split-elog split-log strict test unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-O2 -pipe"
GENTOO_MIRRORS="http://gd.tuwien.ac.at/opsys/linux/gentoo/ http://gentoo.tiscali.nl/ http://de-mirror.org/gentoo/ http://mirror.netcologne.de/gentoo/ http://mirror.leaseweb.com/gentoo/"
LANG="it_IT.UTF-8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed -Wl,--hash-style=gnu -Wl,--sort-common -flto=8 -fuse-linker-plugin -floop-interchange -floop-strip-mine -floop-block -fgraphite-identity"
MAKEOPTS="-j11"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
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"
USE="X a52 aac aalib acl acpi adns alsa amd64 ao audiofile bash-completion bluetooth branding bzip2 cairo caps cdda cddb cdparanoia cdr cli cracklib crypt css cups curl cxx dbus declarative dga djvu dri dts dvd dvdr emboss encode exif expat fbcon ffmpeg fftw firefox flac fontconfig foomaticdb fortran ftp gd gdbm geoip gif gimp glamor gmp gnutls gphoto2 gpm graphviz gstreamer gtk handbook iconv icu idn imagemagick imlib ipv6 java javascript jbig jpeg jpeg2k kde kipi lame lcms libass libcaca libnotify libsamplerate lm_sensors lua lzma lzo mad mmap mmx mmxext mng modules mp3 mp4 mpeg mplayer multilib musicbrainz ncurses nls nptl nsplugin offensive ogg openal openexr opengl openmp pam pango pcre pdf phonon plasma png policykit postscript ppds pulseaudio qml qt3support qt4 qt5 rdesktop readline recode samba sdl semantic-desktop session smartcard sndfile sockets speex spell sqlite sse sse2 ssl startup-notification subversion svg symlink syslog systemd sysvipc taglib theora threads tidy tiff truetype udev udisks unicode upower usb vaapi vcd vim-syntax vnc vorbis wayland widgets win32codecs wmf wxwidgets x264 xattr xcb xcomposite xine xinerama xml xpm xscreensaver xv xvid yahoo zlib" ABI_X86="64" ALSA_CARDS="hda-intel virmidi" 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 author" CAMERAS="kodak ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="aes avx mmx mmxext popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3" 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" GRUB_PLATFORMS="pc" INPUT_DEVICES="evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="nlpsolver" LINGUAS="it" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-5" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_4 pypy pypy3" RUBY_TARGETS="ruby19 ruby20" USERLAND="GNU" VIDEO_CARDS="intel i965" 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

# emerge -1pqv =dev-libs/libindicator-12.10.1-r201::gentoo
[ebuild  N    ] dev-libs/libindicator-12.10.1-r201  USE="{-test}" ABI_X86="(64) -32 (-x32)"
Comment 1 Rafał Mużyło 2015-07-04 04:43:34 UTC
...:roll ricers...

Anyway, this and your other bug (553844) are most likely duplicates.

This is most likely a variant of well known SystemRescueCD problem - libtool gets broken if $libpath is set.
Comment 2 Paolo Pedroni 2015-07-04 09:44:51 UTC
(In reply to Rafał Mużyło from comment #1)
> ...:roll ricers...
> 
> Anyway, this and your other bug (553844) are most likely duplicates.
> 
> This is most likely a variant of well known SystemRescueCD problem - libtool
> gets broken if $libpath is set.

Too bad $libpath is unset on my system, then. Do you have something useful to add, or are you just trolling?
Comment 3 Rafał Mużyło 2015-07-04 12:59:33 UTC
(In reply to Paolo Pedroni from comment #2)
> (In reply to Rafał Mużyło from comment #1)
> > Anyway, this and your other bug (553844) are most likely duplicates.
> > 
> > This is most likely a variant of well known SystemRescueCD problem - libtool
> > gets broken if $libpath is set.
> 
> Too bad $libpath is unset on my system, then. Do you have something useful
> to add, or are you just trolling?

Well, I'm trolling too, cause as of now, you deserve to be trolled.

Regardless, the other potential cause for this problem is - duh - ricing, in this particular case a problem that the standard 'checking command to parse /usr/bin/nm -B output from x86_64-pc-linux-gnu-gcc object' test has with lto.

You can check your config.log for the exact cause of the failure.

Also, while this is more of configuration problem of this bugzilla, your attachment ended up twice compressed, so take care with that in the future.
Comment 4 Mike Gilbert gentoo-dev 2015-07-04 15:50:30 UTC
(In reply to Rafał Mużyło from comment #3)
> Also, while this is more of configuration problem of this bugzilla, your
> attachment ended up twice compressed, so take care with that in the future.

That has nothing to do with the person attaching the file; it's a bug that occurs when downloading gzip attachments in Google Chrome.
Comment 5 Mike Gilbert gentoo-dev 2015-07-04 15:52:43 UTC
Please attach the environment file; this does seem like some variable is not being set correctly.
Comment 6 Mike Gilbert gentoo-dev 2015-07-04 15:53:50 UTC
*** Bug 553844 has been marked as a duplicate of this bug. ***
Comment 7 Rafał Mużyło 2015-07-05 07:37:33 UTC
(In reply to Mike Gilbert from comment #4)
> (In reply to Rafał Mużyło from comment #3)
> > Also, while this is more of configuration problem of this bugzilla, your
> > attachment ended up twice compressed, so take care with that in the future.
> 
> That has nothing to do with the person attaching the file; it's a bug that
> occurs when downloading gzip attachments in Google Chrome.

OK, I've been wondering about that for quite awhile.
...somewhat surprising...

(In reply to Mike Gilbert from comment #5)
> Please attach the environment file; this does seem like some variable is not
> being set correctly.

It's still config.log that holds the answer - that test should end with 'failed' as result.
Comment 8 Paolo Pedroni 2015-07-06 13:04:18 UTC
(In reply to Mike Gilbert from comment #5)
> Please attach the environment file; this does seem like some variable is not
> being set correctly.

Thanks. I will do that ASAP. It is true, though, that if I disable lto, the compilation stage works fine (tests fail anyway, but I don't care about troubleshooting that, too).
Comment 9 Paolo Pedroni 2015-07-06 13:05:08 UTC
Created attachment 406244 [details]
config.log
Comment 10 Rafał Mużyło 2015-07-07 00:08:07 UTC
:roll:

So, as I expected, a ricer error.

Throughout the config.log 'plugin needed to handle lto object' happens.

Never was really interested in lto before, but gcc manpage combined with a little googling says that with >=gcc 4.9.0 and >=binutils 2.25 you'll need at least a symlink from gcc lto plugin to binutils bfd-plugins dir (before 2.25 you needed to use gcc-{ar,nm,ranlib} wrappers - gcc called them for itself, but results of direct calls to the tools were as seen in this config.log).
Comment 11 Mike Gilbert gentoo-dev 2015-07-07 21:46:01 UTC
(In reply to Rafał Mużyło from comment #10)

Thanks for the info, between all the snark. ^_^

So would you call this a toolchain bug?
Comment 12 Rafał Mużyło 2015-07-08 01:04:12 UTC
(In reply to Mike Gilbert from comment #11)
> (In reply to Rafał Mużyło from comment #10)
> 
> Thanks for the info, between all the snark. ^_^
> 
> So would you call this a toolchain bug?

Not really, more a case where certain quirks of autotools concepts combined with not explicit enough info on gcc manpage to produce a somewhat unfortunate result.
However such symlink looks like one that should be managed by gcc-config, even if it only works only since binutils 2.25. Also only in gcc 4.9 -fno-fat-lto-objects became the default.

On that note, won't gcc 5.1 transition be a bitch in Gentoo ? Those libstdc++ ABI changes look hard to detect properly, on the other hand 'revdep-rebuild -L libsdtc++.so.6'...yeah, wanna have an option B.
Comment 13 Mike Gilbert gentoo-dev 2015-07-10 01:54:37 UTC
Giving this to toolchain; re-assign if I got it wrong.
Comment 14 Steve Arnold archtester gentoo-dev 2015-10-29 18:51:14 UTC
I'm not sure I see this as a toolchain bug per se (other than the symlink to the lto plugin).  The failures I've seen with -flto seem mostly to fall into 2 categories: undefined reference link failures (which could be easy-ish build/configure fixes) and optimization failures on certain "classes" of packages with hand-optimized code or special constructs (mostly graphics, audio, tools with lexer/parser generators, etc).

This particular libtool failure crops up in several places, but would be a separate issue from the missing plugin symlink (plugin needed blah blah).

The man page could certainly be more clear on a lot of things (-flto options being only one topic) but that doesn't mean a Gentoo doc can't straighten it out.  I also wouldn't class this as a "ricer" issue, since we're not talking about crazy -O3 stuff (at least in my case) but things that should be "safe".

So I see 3 issues here:

1) gcc-config fix

2) libtool/other fix

3) documentation fix

Just my grumpy $.02 ...
Comment 15 Sergei Trofimovich (RETIRED) gentoo-dev 2019-02-13 23:05:39 UTC
I believe this was fixed by now stable gcc-config-2.0:
    https://gitweb.gentoo.org/proj/gcc-config.git/commit/?id=aab6bf7095a0ab921c78b07a202db207ce07a5f8
Comment 16 Larry the Git Cow gentoo-dev 2024-03-06 05:30:12 UTC
The bug has been referenced in the following commit(s):

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

commit 6287d789783e493e625a06a548c4691851563d36
Author:     Eli Schwartz <eschwartz93@gmail.com>
AuthorDate: 2024-03-06 04:16:43 +0000
Commit:     Sam James <sam@gentoo.org>
CommitDate: 2024-03-06 05:29:50 +0000

    app-i18n/scim-m17n: re-run autoreconf to fix LTO
    
    The 2009 era distfile is so old that it probably has many bugs. We are
    particularly concerned by nm detection failing under LTO causing:
    
    ```
    generating symbol list for `m17n.la'
    /usr/bin/nm -B  .libs/m17n_la-scim_m17n_imengine.o  |  | /usr/bin/sed 's/.* //' | sort | uniq > .libs/m17n.exp
    ../libtool: 1: eval: Syntax error: "|" unexpected
    ```
    
    Bug: https://bugs.gentoo.org/553842
    Closes: https://bugs.gentoo.org/854666
    Signed-off-by: Eli Schwartz <eschwartz93@gmail.com>
    Signed-off-by: Sam James <sam@gentoo.org>

 app-i18n/scim-m17n/scim-m17n-0.2.3.ebuild | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)