[avail for test] readline-4.2-1

Charles S. Wilson cwilson@ece.gatech.edu
Thu Jun 7 16:26:00 GMT 2001


Robert Collins wrote:
> > The ONLY reason I'm concerned about bash as an exception to that rule,
> > is because Chet maintains BOTH bash AND readline.  Because he cares, I
> > care.
> 
> I'm on the fence on this one. The breakage is caused not because they
> have the package in a subdir (they do provide --with-included-readline)
> but because their header is picked up by default and then linked against
> the system readline. Thats a build bug yes.
> 
> > <snip comparison of default behaviors>
> >
> <SNIP static vs dynamic first-in logic>
> 
> I see your point about libtool aligning with the system. Do remember
> that pw32 and mingw are also affected by our changes with respect to
> libtool.

True, and something to keep in mind.  But the ld behavior I described is
true for all pei386 builds -- thus, cygwin, mingw, and pw32 all look for
.dll.a in preference to .a.
 
> > > I don't think that is an issue:
> > > a) Present day: all the libtool created libraries are
> > > cyglibfoo-version.dll. And they don't provide an ordinal .def file,
> so
> > > all linked apps will be by name.
> > > b) The libraries you are shipping are linked to by name if you use
> the
> > > default headers, no? So again, that shouldn't be an issue.
> >
> > I *think* so.  There was a problem around libpng-1.0.9/1.0.11 where
> > missing functions changed the autoassigned ordinals...and stuff broke.
> > I created a .def file to maintain the <old> ordinal numbers -- but the
> > .def does not specify NONAME, so the names should be exported.
> 
> Hmm.
> 
> <snip quoting> >
> > > Basically, ordinals are a optimisation, and the dll _creator_
> controls
> > > whether linking to ordinals is allowed. No .def file, and/or no
> ordinals
> > > (they are optional) and it cannot happen.
> >
> > What happens when you strip a dll?  (All dlls are shipped stripped by
> > default).  nm -a on a stripped dll shows "no symbols" -- but
> objdump -p
> > indicates that the symbol export table is still there.  However,
> you're
> > actually linking with the import lib, which is (of course) not
> stripped,
> > and so contains all of the symbol names.
> 
> So there's no issue :}. The dll's export table is used by the win32
> runtime linker, and the import lib by ld.
> 
> > > 'Course, testing is probably needed, or a quick mail to the binutils
> > > list/search the binutils archives.
> >
> > testing.  The problem is, I really don't know how to look at a given
> > executable, say foo.exe, which depends on bar.dll and baz.dll, and
> say:
> >   Ah, yes, foo is linked by name to bar.dll, but its linked by ordinal
> > to baz.dll.
> > So, how can you test anything if you don't know how to 'evaluate' the
> > results?
> 
> make a dll foo, with 3 exports -
> alpha @5
> beta  @3
> gamma @1
> 
> make a client program and link to foo.
> 
> now rebuild the dll with
> alpha @2
> beta @4
> gamma @6
> 
> the client program, without relinking should still work. If it doesn't,
> it was linked by ordinal.

Ah, yes, the brute force method... :->

> 
> There is a much harder issue to solve I ran into last night, so I'm now
> putting time into evaluating Paul Solovosky's ld that auto-imports, and
> no longer needs any decoration. (The problem to solve is building static
> libs from the same source via libtool when the static|shared compile
> needs extra user defines. Urgh)

Also building static-linked versions of executables and
dynamically-linked versions of executables, where the exe source code is
part of the same package as the library.  E.g. my headache in gettext
(libintl) -- see the cygwin-apps/cygwin-announce archives.  I ended up
punting -- and only autobuilt static utility programs.  (I had to build
the dll-linked versions of msgfmt & friends by hand, just to make sure
my port of cygintl.dll worked.  But it was NOT automatic).

It is truly a royal pain.
 
> If that looks good, I'll see what I can do to get a libtool that
> supports its tested and running. (Hopefully with a little guidance :] )

Well, yeah -- *assuming* Paul has managed to work out all of the bugs; I
recall that DJ was quite skeptical, once upon a time, that such a thing
could be done at all, let alone done well.  Also, this is a *major*
architectural change for all three platforms -- any new dll's will not
be compatible, correct? (since they won't have __imp__symbol nor
__imp_datasymbol, but instead will have __symbol and __datasymbol.  Or
does Paul's patch automagically create __imp__* on-the-fly even without
the appropriate __declspec() directives?).

Thus, new dll's won't be drop-in replacements; dependant apps will have
to be relinked to use the new dll's.  A *big* project, and a change of
that magnitude requires community comment; you and I can't make that
switch unilaterally.

--Chuck

--
Want to unsubscribe from this list?
Check out: http://cygwin.com/ml/#unsubscribe-simple



More information about the Cygwin mailing list