Re: linker object code documentation

pardo@cs.washington.edu (David Keppel)
Fri, 18 Aug 1995 22:20:48 GMT

          From comp.compilers

Related articles
linker object code documentation wolff@alpha.ces.cwru.edu (Frank Wolff) (1995-08-15)
Re: linker object code documentation pardo@cs.washington.edu (1995-08-18)
Re: linker object code documentation kbreinho@Novell.COM (Keith L. Breinholt) (1995-08-29)
| List of all articles for this month |

Newsgroups: comp.compilers
From: pardo@cs.washington.edu (David Keppel)
Keywords: linker
Organization: Computer Science & Engineering, U. of Washington, Seattle
References: 95-08-106
Date: Fri, 18 Aug 1995 22:20:48 GMT

Frank Wolff <wolff@alpha.ces.cwru.edu> writes:
>(2) With the trend of MicroSoft using dynamic link libraries
> (i.e. .dll files) is there a concept of an executable
> anymore? it seems that there is less and less static
> linking and more dynamic by the operating system.


Multics didn't really have ``programs'', but rather executable
modules. Each module generally depended on other modules that would
be searched out via a $PATH mechanism and dynamically linked to form
the running program. Indeed, the shell command `prog arg1 arg2 arg'
merely mapped `prog' to an address, dynamically linked it, if
necessary, and then invoked the procedure at that address with `arg1',
`arg2', etc. as arguments. Thus, any given procedure could be used as
a program and vice-versa.


Un*x `broke' all of this and left us with different tools to do `sort'
as a procedure and `sort' as a command; `ls' as a procedure, `ls' as a
command, and so on. I'm guessing that one reason is that early Un*x
machines had such small memories that it wasn't possible to put a lot
of ``things'' in one address space. I think the space limits are also
one reason that Un*x tools were so small, historically. Another
reason for avoiding dynamic linking might have been the overhead.
Although today's dynamic linkers are pretty fast, the Multics the
common case (calling through an already-linked pointer) was pretty
expensive compared to a statically-linked call. I suspect that
neither copying it nor having to invent yet something else would have
looked very appealing to the Un*x system designers.


It's not just uSoft that's doing dynamic linking. I suggest that you
check out OpenDoc, which looks like it could be quite nice. See the
WWW URLs


http://www.austin.ibm.com/developer/aix/library/aixpert/june94/aixpert_june94_closeup.html
http://www.cilabs.org/pub/cilabs/general/CILabs_Bckgrdr_9409/CILabs_Bckgrdr_9409.html


>(3) Is there any source code for linkers?


`gld' from the Free Software Foundation and `dld' (dynamic linker)
from the Free Software Foundation.


;-D on ( Optimization-time Linking ) Pardo


--


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.