Subject: Re: libtool generates binary data in config.log due to buggy escaping

From: Vincent Lefevre <[email-masked]>
Date: Tue, 2 Oct 2018 11:12:52 +0200

On 2016-02-08 17:44:39 +0100, Vincent Lefevre wrote:
> I actually get these binary data with dash (when setting
> CONFIG_SHELL=/bin/sh in my environment, where /bin/sh is dash).
> 
> On 2015-08-20 03:56:02 +0200, Vincent Lefevre wrote:
> > The generated "libtool" script contains:
> > 
> > global_symbol_pipe="sed -n -e 's/^.*[    ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[       ][      ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p' | sed '/ __gnu_lto/d'"
> > 
> > So, I suppose that the binary data come from the \\1 and \\2.
> 
> The problem is that it yields, for instance:
> 
> + echo configure:10030: /usr/bin/nm -B conftest.o \| sed -n -e 's/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p' | sed '/ __gnu_lto/d' \> conftest.nm

More details (with the current MPFR trunk, thus this has changed
a bit):

[...]
+ nlist=conftest.nm
+ eval echo "$as_me":7267: "/usr/bin/nm -B conftest.o \| sed -n -e 's/^.*[ ]\([A
BCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p' | sed '/ __gnu_lto/d' \> conftest.nm"
+ echo configure:7267: /usr/bin/nm -B conftest.o \| sed -n -e 's/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p' | sed '/ __gnu_lto/d' \> conftest.nm
[...]

In libtool.m4, this corresponds to:

    nlist=conftest.nm
    if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then

Thus the problem seems to come from AC_TRY_EVAL, i.e. an autoconf bug.

According to https://debbugs.gnu.org/Packages.html, autoconf doesn't
use this bug tracker, so that I'm going to report a separate bug for
autoconf.

-- 
Vincent Lefèvre <[email-masked]> - Web: <https://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)