Path: utzoo!attcan!uunet!zaphod.mps.ohio-state.edu!usc!elroy.jpl.nasa.gov!decwrl!deccrl!news.crl.dec.com!decvax.dec.com!ima!iecc!compilers-sender From: neil@wcc.oz.au (Neil Murray) Newsgroups: comp.compilers Subject: Linkers & Loaders, books & article references sought Keywords: linker, bibliography, question Message-ID: <9101240056.16069@munnari.oz.au> Date: 23 Jan 91 05:20:45 GMT Sender: compilers-sender@iecc.cambridge.ma.us Reply-To: neil@wcc.oz.au (Neil Murray) Organization: Compilers Central Lines: 38 Approved: compilers@iecc.cambridge.ma.us On recent perusal of my bookshelf I noticed a goodly number of books on compiler theory but very little on linkers & loaders. After a little searching I did find a piece on dynamic linking contained in gnu sources "dld-3.2.1.tar.Z" on a local archive. There is a research report available from the archive-server@decwrl.dec.com _Link-Time Code Modification_ report 89/17. The problem is both these reports deal with advanced techniques or extensions to a standard linker. I'm after a text that covers linkers from simple ones through overlay linkers to dynamic linkers. I've seem loaders as simple as an absolute load and run to the vax/vms image activator but little on the internal data structures used and algorithms employed? What are the trade-offs in various techniques? Do linkers' and loaders' capabilities affect compiler writers in non-obvious ways? Speaking of capabilities what about capability architectures, the requirements of the linker/loader must be quite different. Does anyone know of some decent books on the subject? --- Neil Murray (R&D Dept) Phone: +61 3 764-1100 Fax: +61 3 764-1179 Webster Computer Corporation, Email: neil@wcc.oz.au PO Box 195, Ferntree Gully UUCP: {...,uunet}!munnari!wcc.oz.au!neil Victoria, Australia, 3156. [An excellent question. Linking is an important topic that is very poorly treated in the literature. And yes, what you can ask the linker to do can have significant effects on languages. For example, the fact that traditional C allows you to have many different uninitialized definitions of a variable is definitely related to the fact that Unix linkers handle the situation well. (In many linkers "common" is a special case and there is a low limit on the number of common areas allowed.) -John] -- Send compilers articles to compilers@iecc.cambridge.ma.us or {ima | spdcc | world}!iecc!compilers. Meta-mail to compilers-request.