Linkers and Loaders

Front Cover
Morgan Kaufmann, 2000 - Computers - 256 pages
"I enjoyed reading this useful overview of the techniques and challenges of implementing linkers and loaders. While most of the examples are focused on three computer architectures that are widely used today, there are also many side comments about interesting and quirky computer architectures of the past. I can tell from these war stories that the author really has been there himself and survived to tell the tale." -Guy Steele

Whatever your programming language, whatever your platform, you probably tap into linker and loader functions all the time. But do you know how to use them to their greatest possible advantage? Only now, with the publication of Linkers & Loaders, is there an authoritative book devoted entirely to these deep-seated compile-time and run-time processes.
The book begins with a detailed and comparative account of linking and loading that illustrates the differences among various compilers and operating systems. On top of this foundation, the author presents clear practical advice to help you create faster, cleaner code. You'll learn to avoid the pitfalls associated with Windows DLLs, take advantage of the space-saving, performance-improving techniques supported by many modern linkers, make the best use of the UNIX ELF library scheme, and much more. If you're serious about programming, you'll devour this unique guide to one of the field's least understood topics. Linkers & Loaders is also an ideal supplementary text for compiler and operating systems courses.

Features:
* Includes a linker construction project written in Perl, with project files available for download.
* Covers dynamic linking in Windows, UNIX, Linux, BeOS, and other operating systems.
* Explains the Java linking model and how it figures in network applets and extensible Java code.
* Helps you write more elegant and effective code, and build applications that compile, load, and run more efficiently.
 

Contents

LINKING AND LOADING
xv
I
3
II
8
III
10
IV
15
ARCHITECTURAL ISSUES
17
V
20
VI
21
XXXIX
148
XL
149
XLI
151
XLII
157
XLIII
158
XLIV
160
XLV
161
XLVI
162

VII
22
VIII
26
IX
32
X
39
XI
41
XII
43
OBJECT FILES
45
XIII
47
XIV
48
XV
54
XVI
56
XVII
60
XVIII
69
XIX
73
XX
82
XXII
88
STORAGE ALLOCATION
91
XXIII
92
XXIV
94
XXV
96
XXVI
105
XXVII
106
XXVIII
112
XXIX
113
SYMBOL MANAGEMENT
115
XXX
122
XXXI
127
XXXII
130
XXXIII
131
LIBRARIES
133
XXXIV
139
XXXV
140
XXXVI
142
XXXVII
143
XXXVIII
144
RELOCATION
147
LOADING AND OVERLAYS
165
XLVII
167
XLVIII
174
XLIX
175
L
182
LI
183
SHARED LIBRARIES
185
LII
186
LIII
188
LIV
190
LV
195
LVI
197
LVII
200
LVIII
201
DYNAMIC LINKING AND LOADING
203
LIX
204
LX
208
LXI
211
LXII
213
LXIII
214
LXV
215
LXVII
220
LXIX
221
LXX
222
LXXII
224
ADVANCED TECHNIQUES
227
LXXIII
231
LXXV
233
LXXVII
235
LXXIX
236
LXXX
239
LXXXI
242
LXXXII
243
REFERENCES
244
INDEX
247
Copyright

Other editions - View all

Common terms and phrases

About the author (2000)

John Levine is the author or co-author of many books, including lex & yac (O'Reilly), Programming for Graphics Files in C and C++ (Wiley), and The Internet for Dummies (IDG). He is also publisher emeritus of the Journal of C Language Translation, long-time moderator of the comp.compilers newsgroup, and the creator of one of the first commercial Fortran 77 compilers. He holds a Ph.D. in Computer Science from Yale University.

Bibliographic information