1.5.0 - showstopper?
Charles Wilson
cygwin@cwilson.fastmail.fm
Mon Jul 7 06:43:00 GMT 2003
> On Sun, Jul 06, 2003 at 06:24:58PM -0400, Charles Wilson wrote:
>>But, thanks to the new magic in the headers, is it possible that certain
>>symbols (like open, fopen, etc) do not get listed as "_imp__foo" in the
>>import lib, but are actually thunked to "foo" in the static portion of
>>the import lib?
>
> I think I've fixed the cygwin magic that creates the aliased functions
> such that replaced objects like "open" and "fopen" now look like other,
> normal import objects. It seems to fix this problem in a simple test
> case, anyway.
>
> I'm generating a new snapshot. Could you try the DLL and import library
> from the snapshot when it shows up and see if it rectifies this behavior?
Yes, that corrected the problem.
But it shouldn't, darnit.
New import lib:
U __imp___fopen64
00000000 I __imp__fopen
00000000 T _fopen
00000000 T __fopen
00000000 I __imp___fopen
00000000 T __fopen64
00000000 I __imp___fopen64
Old import lib:
U __imp___fopen64
00000000 T _fopen
00000000 T __fopen
00000000 I __imp___fopen
00000000 T __fopen64
00000000 I __imp___fopen64
The only difference is that the new implib contains an __imp__ symbol
for the redirected symbol...
wait...
That means that when linking, the first "match" will be __imp__fopen,
and that of course is excluded from re-export by the "__imp__" filter.
It's still a little fragile(*) since the original _fopen symbol is still
there and COULD be re-exported if anyone ever tried to link directly to it.
(*) but, the same is true for EVERY symbol in an import lib, so.. no
harm, no foul.
So, okay...
But I still think libcygwin.a should be added to the exlude libs list. :-)
--Chuck
Now I'm going to bed...
More information about the Cygwin-developers
mailing list