This is the mail archive of the cygwin mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [ANNOUNCEMENT] NEW: libtool-2.2.2-2 / Updated: libltdl7-2.2.2-2

Hash: SHA256

Charles Wilson wrote:
| What's puzzling is there is no *error* message from the compiler -- just
| warnings.
|> strip: './foo.exe': No such file
| But obviously something went wrong.
| I wonder of the string length warning is from the pre-processor, and
| then the compiler itself dies (dumps core?) without issuing an error
| message.
| Does the problem -- missing wrappers -- *always* occur paired with the
| string length warning?  I can easily see the following;
|   (1) the size of the wrapper script is very close to 4K
|   (2) there are several embedded paths
|   (3) sometimes, those paths are long enough to push the total script
|       length over 4K -- and gcc-3.4.x is rude enough to fail silently.
| If so, I could easily split the the script generation into two separate
| strings...

OK, I figured it out: libtool-2.2 adds CFLAGS to LTCFLAGS, which it uses
to compile the lt-foo.c files.  Many configure scripts add to CFLAGS,
but usually after all the standard initializations.  With 1.5, or with
2.2 and LT_OUTPUT, libtool would be generated before CFLAGS is altered
beyond the default (-O2 -pipe with cygport).  But with 2.2 without
LT_OUTPUT, the package CFLAGS are added to LTCFLAGS, sometimes with
disastrous consequences.

The broken case was being compiled with the following CFLAGS:

CFLAGS = ... -Wall -Werror -pedantic -std=c99 -D_POSIX_C_SOURCE=200112L

* -Wall produces the _setmode warning;
* -std=c99 produces the realpath and ptr2int warnings;
* -pedantic produces the string length warning;
* -Werror makes sure that the build fails, but libtool doesn't catch it.

This is definitely a regression from 1.5, the problems being:

* libtool should generate lt-foo.c files without warnings, or at least
compile it with sane CFLAGS that work no matter what.
* libtool should catch if the lt-foo.c compile fails;

I think I have also found a separate case of breakage when the CXX tag
is enabled, in which case LTCC is mysteriously undefined.  The results:

./libtool: line 7737: -O2: command not found
strip: './foo.exe': No such file
./libtool: line 7748: $func_ltwrapper_scriptname_result: ambiguous redirect

Hopefully this gives you enough to figure out where these bugs really are.

Yaakov -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (Cygwin) Comment: Using GnuPG with Mozilla -


Unsubscribe info:
Problem reports:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]