Subject: Re: Nobody in the world understands Gnu's 'ld'.
From: Stan Shebs <[email-masked]>

25 Mar 1997 12:03:42 -0800
Distribution: cygnus
Message-ID: <[email-masked]>
References: <[email-masked]>
X-Newsreader: Gnus v5.3/Emacs 19.34

[email-masked] (root) writes:

> Since several months people here report that Cygnus's linker is flawed.
> I think that it is just plain that Cygnus doesn't have the
> know-how to repair it, since Steve Chamberlain, the guy that
> wrote most of it, hasn't posted anything here since ages and
> he was very active before.

Steve moved on a year ago, and hasn't done anything with gnu-win32
since then.

> There is only ONE person in the world that understands that code
> and he is called Steve Chamberlain. If Cygnus doesn't have
> him any more, users of gnu-win32 will have to live with a flawed linker
> for the rest of their lives.

Not true; we have several people that understand how the linker works.
Even Stan the manager has some knowledge of this stuff... :-) If the
linker has a problem that remains unfixed, it's because there is
neither a Cygnus business reason, nor a volunteer willing and able to
do the job.  It's very telling that with well over a thousand people
on this mailing list, including many who are using gnu-win32 in their
jobs, not one deems the problems sufficiently important to a) solve
themselves, or b) pay Cygnus to solve for them.

> Just to give you an idea, ld is supposed to link an object file
> from sun's unix format with some code from windows 95 and with
> some code of hp Unix. Of course this is ridiculous and it will never
> work, but this is how 'ld' is designed: an incredible complexity
> that (to me) seems completely unwarranted. It has a full blown LANGUAGE
> (with lex+yacc parser/lexer!) that is supposed to recognize linker
> commands. Obviously nobody ever uses it, but to understand
> what the linker is doing you have to go through yet another layer
> of complexity.

Linker scripts are extremely important for embedded programming; you
need the script to be able to do memory layouts and special section
handling.  Many of Cygnus' customers write their own scripts, some
of them quite sophisticated.

> Then you have the 'BFD' format, that is supposed to be an universal
> binary format designed by GNU that will abstract the binary format
> of all machines in the western world into ONE format.

If you think that, then you don't yet understand BFD.  BFD provides a
common API to multiple formats, but is not itself a format.  Although
I agree that the implementation of BFD is atrocious, the concept is a
big winner, and has enabled all kinds of advances, including for
instance the ability to bootstrap things like gnu-win32 from any other
host.

> That is why this linker can't even recognize MSVC object code
> format and use the MSVC .LIBs. Because nobody in the world
> is able to modify it. Of course we do not need compatibility
> with SUN or HP Unix under Windows 95. We would need MSVC
> compatibility. But to do that we would have to find somebody
> that understands 'ld'...

People at Cygnus and elsewhere are adding BFD backends all the time;
just check the ChangeLogs.  It's not fiendishly difficult, but it
does require a certain amount of ability and experience.

> I think that anybody using 'ld' is living very dangerously...

Well, ld is used to link many, perhaps even most, of the Internet
programs that passed your epistle from there to here.  Going by the
code in some of those programs though, I doubt that ld is the major
risk factor! :-)

							Stan