bug-glpk
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Bug-glpk] GLPK (4.47) fails to build with LTO (GCC 4.6.3, '-flto')


From: Andrew Makhorin
Subject: Re: [Bug-glpk] GLPK (4.47) fails to build with LTO (GCC 4.6.3, '-flto')
Date: Sat, 17 Mar 2012 10:08:12 +0300

> I noticed this with GLPK 4.44, but the latest version 4.47 shows 
> (almost) the same behavior; only the line number(s) of the syntax errors 
> differ(s).
> 
> While 'configure' shows an error (see below), it continues and exits 
> normally.
> 
> Then, much later in the build, libtool causes (shell) syntax errors 
> which make the build finally fail:
> 
> ...
> /bin/bash ../libtool --tag=CC   --mode=link gcc-4.6.3  -flto 
> -version-info 32:0:32 -export-symbols-regex '^(glp_|_glp_lpx_).*'  -o 
> libglpk.la -rpath /usr/local/lib glpapi01.lo glpapi02.lo glpapi03.lo 
> glpapi04.lo glpapi05.lo glpapi06.lo glpapi07.lo glpapi08.lo glpapi09.lo 
> glpapi10.lo glpapi11.lo glpapi12.lo glpapi13.lo glpapi14.lo glpapi15.lo 
> glpapi16.lo glpapi17.lo glpapi18.lo glpapi19.lo glpapi20.lo glpapi21.lo 
> glpavl.lo glpbfd.lo glpbfx.lo glpcpx.lo glpdmp.lo glpdmx.lo glpenv01.lo 
> glpenv02.lo glpenv03.lo glpenv04.lo glpenv05.lo glpenv06.lo glpenv07.lo 
> glpenv08.lo glpfhv.lo glpgmp.lo glphbm.lo glpini01.lo glpini02.lo 
> glpios01.lo glpios02.lo glpios03.lo glpios04.lo glpios05.lo glpios06.lo 
> glpios07.lo glpios08.lo glpios09.lo glpios10.lo glpios11.lo glpios12.lo 
> glpipm.lo glplib01.lo glplib02.lo glplib03.lo glplpf.lo glplpx01.lo 
> glplpx02.lo glplpx03.lo glpluf.lo glplux.lo glpmat.lo glpmpl01.lo 
> glpmpl02.lo glpmpl03.lo glpmpl04.lo glpmpl05.lo glpmpl06.lo glpmps.lo 
> glpnet01.lo glpnet02.lo glpnet03.lo glpnet04.lo glpnet05.lo glpnet06.lo 
> glpnet07.lo glpnet08.lo glpnet09.lo glpnpp01.lo glpnpp02.lo glpnpp03.lo 
> glpnpp04.lo glpnpp05.lo glpnpp06.lo glpqmd.lo glprgr.lo glprng01.lo 
> glprng02.lo glpscf.lo glpscl.lo glpsdf.lo glpspm.lo glpspx01.lo 
> glpspx02.lo glpsql.lo glpssx01.lo glpssx02.lo glptsp.lo amd_1.lo 
> amd_2.lo amd_aat.lo amd_control.lo amd_defaults.lo amd_dump.lo 
> amd_info.lo amd_order.lo amd_post_tree.lo amd_postorder.lo 
> amd_preprocess.lo amd_valid.lo colamd.lo minisat.lo adler32.lo 
> compress.lo crc32.lo deflate.lo gzclose.lo gzlib.lo gzread.lo gzwrite.lo 
> infback.lo inffast.lo inflate.lo inftrees.lo trees.lo uncompr.lo zio.lo 
> zutil.lo  -lm
> libtool: link: /usr/bin/nm -B  .libs/glpapi01.o .libs/glpapi02.o 
> .libs/glpapi03.o .libs/glpapi04.o .libs/glpapi05.o .libs/glpapi06.o 
> .libs/glpapi07.o .libs/glpapi08.o .libs/glpapi09.o .libs/glpapi10.o 
> .libs/glpapi11.o .libs/glpapi12.o .libs/glpapi13.o .libs/glpapi14.o 
> .libs/glpapi15.o .libs/glpapi16.o .libs/glpapi17.o .libs/glpapi18.o 
> .libs/glpapi19.o .libs/glpapi20.o .libs/glpapi21.o .libs/glpavl.o 
> .libs/glpbfd.o .libs/glpbfx.o .libs/glpcpx.o .libs/glpdmp.o 
> .libs/glpdmx.o .libs/glpenv01.o .libs/glpenv02.o .libs/glpenv03.o 
> .libs/glpenv04.o .libs/glpenv05.o .libs/glpenv06.o .libs/glpenv07.o 
> .libs/glpenv08.o .libs/glpfhv.o .libs/glpgmp.o .libs/glphbm.o 
> .libs/glpini01.o .libs/glpini02.o .libs/glpios01.o .libs/glpios02.o 
> .libs/glpios03.o .libs/glpios04.o .libs/glpios05.o .libs/glpios06.o 
> .libs/glpios07.o .libs/glpios08.o .libs/glpios09.o .libs/glpios10.o 
> .libs/glpios11.o .libs/glpios12.o .libs/glpipm.o .libs/glplib01.o 
> .libs/glplib02.o .libs/glplib03.o .libs/glplpf.o .libs/glplpx01.o 
> .libs/glplpx02.o .libs/glplpx03.o .libs/glpluf.o .libs/glplux.o 
> .libs/glpmat.o .libs/glpmpl01.o .libs/glpmpl02.o .libs/glpmpl03.o 
> .libs/glpmpl04.o .libs/glpmpl05.o .libs/glpmpl06.o .libs/glpmps.o 
> .libs/glpnet01.o .libs/glpnet02.o .libs/glpnet03.o .libs/glpnet04.o 
> .libs/glpnet05.o .libs/glpnet06.o .libs/glpnet07.o .libs/glpnet08.o 
> .libs/glpnet09.o .libs/glpnpp01.o .libs/glpnpp02.o .libs/glpnpp03.o 
> .libs/glpnpp04.o .libs/glpnpp05.o .libs/glpnpp06.o .libs/glpqmd.o 
> .libs/glprgr.o .libs/glprng01.o .libs/glprng02.o .libs/glpscf.o 
> .libs/glpscl.o .libs/glpsdf.o .libs/glpspm.o .libs/glpspx01.o 
> .libs/glpspx02.o .libs/glpsql.o .libs/glpssx01.o .libs/glpssx02.o 
> .libs/glptsp.o .libs/amd_1.o .libs/amd_2.o .libs/amd_aat.o 
> .libs/amd_control.o .libs/amd_defaults.o .libs/amd_dump.o 
> .libs/amd_info.o .libs/amd_order.o .libs/amd_post_tree.o 
> .libs/amd_postorder.o .libs/amd_preprocess.o .libs/amd_valid.o 
> .libs/colamd.o .libs/minisat.o .libs/adler32.o .libs/compress.o 
> .libs/crc32.o .libs/deflate.o .libs/gzclose.o .libs/gzlib.o 
> .libs/gzread.o .libs/gzwrite.o .libs/infback.o .libs/inffast.o 
> .libs/inflate.o .libs/inftrees.o .libs/trees.o .libs/uncompr.o 
> .libs/zio.o .libs/zutil.o   |  | /bin/sed 's/.* //' | sort | uniq > 
> .libs/libglpk.exp
> ../libtool: eval: line 1126: syntax error near unexpected token `|'
> ../libtool: eval: line 1126: `/usr/bin/nm -B  .libs/glpapi01.o 
> .libs/glpapi02.o .libs/glpapi03.o .libs/glpapi04.o .libs/glpapi05.o 
> .libs/glpapi06.o .libs/glpapi07.o .libs/glpapi08.o .libs/glpapi09.o 
> .libs/glpapi10.o .libs/glpapi11.o .libs/glpapi12.o .libs/glpapi13.o 
> .libs/glpapi14.o .libs/glpapi15.o .libs/glpapi16.o .libs/glpapi17.o 
> .libs/glpapi18.o .libs/glpapi19.o .libs/glpapi20.o .libs/glpapi21.o 
> .libs/glpavl.o .libs/glpbfd.o .libs/glpbfx.o .libs/glpcpx.o 
> .libs/glpdmp.o .libs/glpdmx.o .libs/glpenv01.o .libs/glpenv02.o 
> .libs/glpenv03.o .libs/glpenv04.o .libs/glpenv05.o .libs/glpenv06.o 
> .libs/glpenv07.o .libs/glpenv08.o .libs/glpfhv.o .libs/glpgmp.o 
> .libs/glphbm.o .libs/glpini01.o .libs/glpini02.o .libs/glpios01.o 
> .libs/glpios02.o .libs/glpios03.o .libs/glpios04.o .libs/glpios05.o 
> .libs/glpios06.o .libs/glpios07.o .libs/glpios08.o .libs/glpios09.o 
> .libs/glpios10.o .libs/glpios11.o .libs/glpios12.o .libs/glpipm.o 
> .libs/glplib01.o .libs/glplib02.o .libs/glplib03.o .libs/glplpf.o 
> .libs/glplpx01.o .libs/glplpx02.o .libs/glplpx03.o .libs/glpluf.o 
> .libs/glplux.o .libs/glpmat.o .libs/glpmpl01.o .libs/glpmpl02.o 
> .libs/glpmpl03.o .libs/glpmpl04.o .libs/glpmpl05.o .libs/glpmpl06.o 
> .libs/glpmps.o .libs/glpnet01.o .libs/glpnet02.o .libs/glpnet03.o 
> .libs/glpnet04.o .libs/glpnet05.o .libs/glpnet06.o .libs/glpnet07.o 
> .libs/glpnet08.o .libs/glpnet09.o .libs/glpnpp01.o .libs/glpnpp02.o 
> .libs/glpnpp03.o .libs/glpnpp04.o .libs/glpnpp05.o .libs/glpnpp06.o 
> .libs/glpqmd.o .libs/glprgr.o .libs/glprng01.o .libs/glprng02.o 
> .libs/glpscf.o .libs/glpscl.o .libs/glpsdf.o .libs/glpspm.o 
> .libs/glpspx01.o .libs/glpspx02.o .libs/glpsql.o .libs/glpssx01.o 
> .libs/glpssx02.o .libs/glptsp.o .libs/amd_1.o .libs/amd_2.o 
> .libs/amd_aat.o .libs/amd_control.o .libs/amd_defaults.o 
> .libs/amd_dump.o .libs/amd_info.o .libs/amd_order.o 
> .libs/amd_post_tree.o .libs/amd_postorder.o .libs/amd_preprocess.o 
> .libs/amd_valid.o .libs/colamd.o .libs/minisat.o .libs/adler32.o 
> .libs/compress.o .libs/crc32.o .libs/deflate.o .libs/gzclose.o 
> .libs/gzlib.o .libs/gzread.o .libs/gzwrite.o .libs/infback.o 
> .libs/inffast.o .libs/inflate.o .libs/inftrees.o .libs/trees.o 
> .libs/uncompr.o .libs/zio.o .libs/zutil.o   |  | /bin/sed 's/.* //' | 
> sort | uniq > .libs/libglpk.exp'
> ../libtool: line 1126: warning: syntax errors in . or eval will cause 
> future versions of the shell to abort as Posix requires
> make[2]: *** [libglpk.la] Error 1
> make[2]: Leaving directory `/tmp/glpk-4.47/src'
> make[1]: *** [all-recursive] Error 1
> make[1]: Leaving directory `/tmp/glpk-4.47'
> make: *** [all] Error 2
> 
> (Note the missing command between the pipes.)
> 
> 
> The relevant message from 'configure' seems:
> 
> ...
> checking command to parse /usr/bin/nm -B output from gcc-4.6.3 object... 
> failed
> ...
> 
> 
> Excerpt from 'config.log':
> 
> ...
> configure:5616: checking command to parse /usr/bin/nm -B output from 
> gcc-4.6.3 object
> configure:5734: gcc-4.6.3 -c -flto  conftest.c >&5
> configure:5737: $? = 0
> configure:5741: /usr/bin/nm -B conftest.o \| sed -n -e 's/^.*[ 
> ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 
> \2/p' \> conftest.nm
> configure:5744: $? = 0
> configure:5798: gcc-4.6.3 -o conftest -flto   conftest.c conftstm.o >&5
> /tmp/ccjVM3c7.ltrans0.ltrans.o:(.rodata+0x58): undefined reference to 
> `__gnu_lto_v1'
> collect2: ld returned 1 exit status
> configure:5801: $? = 1
> configure:5734: gcc-4.6.3 -c -flto  conftest.c >&5
> configure:5737: $? = 0
> configure:5741: /usr/bin/nm -B conftest.o \| sed -n -e 's/^.*[ 
> ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*_\([_A-Za-z][_A-Za-z0-9]*\)$/\1 _\2 
> \2/p' \> conftest.nm
> configure:5744: $? = 0
> cannot find nm_test_var in conftest.nm
> configure:5836: result: failed
> configure:5935: gcc-4.6.3 -c -flto  conftest.c >&5
> configure:5938: $? = 0
> ...
> 
> 
> Minimal steps to reproduce:
> 
> $ CC=gcc-4.6.3 CFLAGS='-flto' ./configure && make
> 
> (IIRC GCC 4.6.3 is by default built with LTO support; otherwise you'd 
> have to configure it with '--enable-lto'.)
> 
> 
> I can send you complete logs in case you need them.
> 
> (And FWIW, this is on Ubuntu 10.04.4 LTS x86_64, with in addition a 
> "manually built" GCC 4.6.3 and its prerequisites; GMP 5.0.4, MPFR 3.1.0, 
> MPC 0.9, PPL 0.12, CLooG-PPL 0.15.11, libelf 0.8.13.)
> 

Thank you for your bug report.

The bug appears in Makefile:

> .libs/zio.o .libs/zutil.o   |  | /bin/sed 's/.* //' | sort | uniq > 
> .libs/libglpk.exp
> ../libtool: eval: line 1126: syntax error near unexpected token `|'

so I would suggest you to report about it to the bug-automake mailing
list, because all Makefiles and the configure script included in the
glpk distribution are generated automatically with the GNU autotools.
Please see:
http://www.gnu.org/software/automake/manual/html_node/Reporting-Bugs.html .

As to errors detected by the configure script, in most cases it is
normal. The script checks your platform by compiling and running a set
of test programs (conftest.c), and compilation, linking, or run-time
errors just signal it that certain libraries/functions/programs are not
available/installed or work improperly.

> checking command to parse /usr/bin/nm -B output from gcc-4.6.3 object... 
> failed

However, this error is crucial. Looks like nm is incompatible with the
gcc version you are using. Did you build binutils along with gcc? If so,
did you try to configure and build glpk with default options (i.e.
without -flto) using the same gcc version? Thanks.


Andrew Makhorin




reply via email to

[Prev in Thread] Current Thread [Next in Thread]