Mail Archives: cygwin/2009/03/19/05:31:59
On Mar 18 07:13, Dave Korn wrote:
> Ah, gottit. The bug happens because the libraries are not quite correctly
> constructed. When you add -lm to the link line, you see this in the map file,
> in the imports section:
>
> /usr/lib/gcc/i686-pc-cygwin/4.3.2/libgcc_s.dll.a(d000104.o)
>
> /usr/lib/gcc/i686-pc-cygwin/4.3.2/libgcc_s.dll.a(d000000.o) (cyggcc_s_1_dll_iname)
> /usr/lib/libm.a(d001286.o) math.o (pow)
> /usr/lib/libm.a(d000000.o) /usr/lib/libm.a(d001286.o) (_head_libm)
> /usr/lib/libcygwin.a(dll_entry.o)
> (_cygwin_dll_entry AT 12)
>
> There's no import name chunk for libm (_libm_dll_iname), instead the head
> chunk of the import table in libm.a refers to _cygwin1_dll_iname:
>
> DKAdmin AT ubik /usr/src/zsh2/zsh-4.3.9/.build/Src/libm
> $ nm ./d000000.o
> 00000000 i .idata$2
> 00000000 i .idata$4
> 00000000 i .idata$5
> 00000000 I __head_libm
> U _cygwin1_dll_iname
>
> which means at link time it is resolved by the definition of that symbol
> supplied by libcygwin.a and so the tail chunk from libm is not pulled in to
> correctly 'cap off' the end of the import table. Then all the name entries
> and IAT table pointers get out of sync and we get confused and overlapping
> import name tables. Constructing import tables is tricky, and we can't
> optimise away or share any of the .idata$x blocks.
>
> There are a number of ways to solve this, either by changing the undefined
> symbol in the head and tail archive members, or maybe by using dlltool or ld
> to generate a fresh import library rather than munging an existing one, but
> I'm going AFK now to get a few hours sleep.
What I'm wondering is, why did it work all these years before? Is it
a bug in the new binutils? Or was it a bug in the old binutils to
create working results?
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Red Hat
--
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 -