delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2005/07/27/11:26:05

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
From: "Dave Korn" <dave DOT korn AT artimi DOT com>
To: <cygwin AT cygwin DOT com>
Subject: RE: Link problem when building cygwin1.dll (parsing cygwin.def)
Date: Wed, 27 Jul 2005 16:25:37 +0100
MIME-Version: 1.0
In-Reply-To: <BAY106-F2772F81577A8A1109FC654FBCC0@phx.gbl>
Message-ID: <SERRANOOYwfL5m98Oeh00000007@SERRANO.CAM.ARTIMI.COM>

----Original Message----
>From: Eitan Eliahu
>Sent: 27 July 2005 15:47

> Dave, attached is the def file after I ran d2u on it.

  It still has \r\n line ends.  I'm afraid my advice wasn't any too clever:
cygwin.def is a generated file, so it's only likely to get re-generated.
Read on:

> I'm getting a different error in the link. I was wondering if we could
> compare this def file and the one you might have.

  My one doesn't, and I'm sure that's why it doesn't crash ld.

> I am wondering if a .def should be considered a "linker script" for this
> linker.

  Nope.  It should be considered a .def file.  The linker is failing to
correctly understand the format because it has CRLF line ends, and that's
just what it does as a last-ditch-try-and-make-it-work-attempt when it is
given a file on the command line that it doesn't recognize the format of.

> /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/bin/ld:
> cygwin.de
> 4: syntax error
>
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/bin/ld:cygwin.d
ef
> file format not recognized; treating as linker script
>
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/bin/ld:cygwin.d
ef
>> syntax error
> collect2: ld returned 1 exit status
> make[2]: *** [cygwin0.dll] Error 1
> make[2]: Leaving directory `/slv/src/build/i686-pc-cygwin/winsup/cygwin'

  Alas this bit isn't terribly useful, as whatever happened to the .def file
that gave it DOS lineends has already happened.  Look for the invocation of
'gendef' earlier in your build output.

  However, I am glad to see that all the old 3.1.1 references have gone
away.

  Anyway, gendef is a shell script in ..../src/winsup/cygwin.  Perhaps
gendef itself has acquired DOS style linefeeds, and as a consequence is
outputting them to the generated .def file, perhaps because it has some
literal text or a HERE document.  If those command lines are terminated with
\r\n, the shell will take the \n as the line end, but leave the \r, and
gendef might output that \r verbatim, as if it was just any other part of
the text.

  Thus, if gendef has DOS lineends, it may output .def files with DOS
lineends.  Since your system was mounted textmode at the time when you
checked out the cvs tree, it's quite likely that it was given dos linefeeds
when CVS wrote it to your local drive.  I don't know whether running d2u
over the entire cvs tree will help or harm; you might just want to check out
a fresh tree now that you've got everything mounted in binary mode.

  If you want to test this theory out, you could do this:

cd /cygdrive/c/Cyg/src/winsup/cygwin
cvs update -C gendef
if [ x`diff -bB gendef .#gendef.1.18 | wc -l` != \
x`diff gendef .#gendef.1.18 | wc -l` ] ; \
then echo We have a winner ; \
else echo Oops still wonder what the problem is. ; \
fi


    cheers,
      DaveK
-- 
Can't think of a witty .sigline today....


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019