1.7.9 gcc linking fails after cygwin update

Patrick Tantalo ptantalo@soe.ucsc.edu
Fri Apr 15 06:46:00 GMT 2011


Hi Folks:

After a recent update of Cygwin on XP Professional my previously
working C/C++ programs suddenly quit compiling under gcc/g++.
Actually they pass all stages of compilation except the final link
stage.  This goes for the simplest of programs such as

    /* simple.c */
    int main(){ return 0; }

The ouput of gcc simple.c is:

/usr/lib/gcc/i686-pc-cygwin/4.3.4/../../../../i686-pc-cygwin/bin/ld: 
unrecognized -a option `ware'
collect2: ld returned 1 exit status

I've attached the output of  gcc --verbose simple.c to this message,
along with the output of cygcheck -s -v -r.  I believe only the last
4 lines of the --verbose output are relevant, and I quote them here:

COLLECT_GCC_OPTIONS='-v' '-mtune=generic' '-march=i686'
  /usr/lib/gcc/i686-pc-cygwin/4.3.4/collect2.exe -tsaware --wrap _Znwj 
--wrap _Znaj --wrap _ZdlPv --wrap _ZdaPv --wrap _ZnwjRKSt9nothrow_t 
--wrap _ZnajRKSt9nothrow_t --wrap _ZdlPvRKSt9nothrow_t --wrap 
_ZdaPvRKSt9nothrow_t -Bdynamic --dll-search-prefix=cyg -u 
___register_frame_info -u ___deregister_frame_info 
/usr/lib/gcc/i686-pc-cygwin/4.3.4/../../../crt0.o 
/usr/lib/gcc/i686-pc-cygwin/4.3.4/crtbegin.o 
-L/usr/lib/gcc/i686-pc-cygwin/4.3.4 -L/usr/lib/gcc/i686-pc-cygwin/4.3.4 
-L/usr/lib/gcc/i686-pc-cygwin/4.3.4/../../.. /tmp/cc3YVRya.o -lgcc_s 
-lgcc -lgcc_eh -lcygwin -luser32 -lkernel32 -ladvapi32 -lshell32 -lgcc_s 
-lgcc -lgcc_eh /usr/lib/gcc/i686-pc-cygwin/4.3.4/crtend.o
/usr/lib/gcc/i686-pc-cygwin/4.3.4/../../../../i686-pc-cygwin/bin/ld: 
unrecognized -a option `ware'
collect2: ld returned 1 exit status

(This really is 4 lines, though it may wrap on your display).  I went
so far as to completely uninstall cygwin, move all old files to another
directory, then perform a fresh install of 1.7.9, with no luck.

It appears from the above that collect2.exe is being passed an option
-tsaware (Terminal Server Aware?) which is being wrongly interpreted
by ld as three separate options -t (--trace), -s (--strip-all), both
of which are accepted, followed by -a with the invalid argument "ware".
This is the only way I can make sense of the odd error message

/usr/...../ld: unrecognized -a option `ware'

As I understand it, collect2 renames itself ld, then calls the so called
real-ld, but apparently somebody is getting the wrong arguments.  I was
hoping someone more knowledgeable than myself could look at my cycheck
output and find out what's in the wrong place. Perhaps something in the
Registry persists through the uninstall/install.

Best,

Patrick Tantalo


-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: verbose.txt
URL: <http://cygwin.com/pipermail/cygwin/attachments/20110415/bfd2819c/attachment.txt>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: cygcheck.txt
URL: <http://cygwin.com/pipermail/cygwin/attachments/20110415/bfd2819c/attachment-0001.txt>
-------------- next part --------------
--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple


More information about the Cygwin mailing list