Simon Buchan <[EMAIL PROTECTED]> writes: >> http://webpages.charter.net/ppluzhnikov/linker.html > > However, I don't understand why it doesn't do the normal pass, > grabbing all the object files et-al, and then if there are still > undefined symbols, do the second pass (possibly with a warning).
Some "smarter" linkers do (e.g. the AIX one). This linker also does "garbage collection" (selecting only referenced *parts* of the objects, rather then the whole objects; i.e. making Xerox copies of just some pages, rather than the whole book). > Sure it's inefficient, but I think my time spent playing librarian is > worth more than the computer's, It depends. Consider libFoo.a with 10MBytes of symbol table, from which you want to pull just as single object via a single referenced symbol. Assume the referenced object defines N symbols and doesn't reference anything else. Traditional UNIX linker will need (heap) space for just the one symbol that is unresolved before libFoo.a is searched, and for N symbols (in the "have" list) after the search. The linker you are proposing will need 10MB of heap. This can make a huge difference on a machine with 64K of RAM [1]: the difference between being able to link the program easily, and not being able to link it at all. [1] Remember, UNIX is 35 years old. According to http://www.islandnet.com/~kpolsson/workstat/ : 1986 IBM announces the IBM RT Personal Computer, using RISC-based technology from IBM's "801" project of the mid-70s. It is one of the first commercially-available 32-bit RISC-based computers. The base configuration has 1 MB RAM, a 1.2 MB floppy, and 40 MB hard drive, for US$11,700. According to http://en.wikipedia.org/wiki/SPARCstation_1, SPARCstation 1 had a *maximum* RAM of 64MB. I worked on SS1 with 16M of RAM in 1993. Our link times were in the 30-minute range (that's with *traditional* UNIX linker; I can't imagine what it would have been if the linker worked the "smart" way). Cheers, -- In order to understand recursion you must first understand recursion. Remove /-nsp/ for email. _______________________________________________ Help-gplusplus mailing list [email protected] http://lists.gnu.org/mailman/listinfo/help-gplusplus
