annotate doc/manual/x510.html @ 153:ffef3ea07399 2.1 2.1

Preparing for release
author lost
date Fri, 30 Jan 2009 04:32:55 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
153
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
2 <HTML
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
3 ><HEAD
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
4 ><TITLE
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
5 >Linker Operation</TITLE
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
6 ><META
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
7 NAME="GENERATOR"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
8 CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
9 REL="HOME"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
10 TITLE="LW Tool Chain"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
11 HREF="index.html"><LINK
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
12 REL="UP"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
13 TITLE="LWLINK"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
14 HREF="c436.html"><LINK
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
15 REL="PREVIOUS"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
16 TITLE="LWLINK"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
17 HREF="c436.html"><LINK
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
18 REL="NEXT"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
19 TITLE="Linking Scripts"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
20 HREF="x524.html"></HEAD
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
21 ><BODY
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
22 CLASS="SECTION"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
23 BGCOLOR="#FFFFFF"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
24 TEXT="#000000"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
25 LINK="#0000FF"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
26 VLINK="#840084"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
27 ALINK="#0000FF"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
28 ><DIV
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
29 CLASS="NAVHEADER"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
30 ><TABLE
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
31 SUMMARY="Header navigation table"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
32 WIDTH="100%"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
33 BORDER="0"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
34 CELLPADDING="0"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
35 CELLSPACING="0"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
36 ><TR
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
37 ><TH
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
38 COLSPAN="3"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
39 ALIGN="center"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
40 >LW Tool Chain</TH
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
41 ></TR
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
42 ><TR
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
43 ><TD
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
44 WIDTH="10%"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
45 ALIGN="left"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
46 VALIGN="bottom"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
47 ><A
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
48 HREF="c436.html"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
49 ACCESSKEY="P"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
50 >Prev</A
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
51 ></TD
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
52 ><TD
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
53 WIDTH="80%"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
54 ALIGN="center"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
55 VALIGN="bottom"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
56 >Chapter 4. LWLINK</TD
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
57 ><TD
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
58 WIDTH="10%"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
59 ALIGN="right"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
60 VALIGN="bottom"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
61 ><A
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
62 HREF="x524.html"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
63 ACCESSKEY="N"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
64 >Next</A
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
65 ></TD
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
66 ></TR
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
67 ></TABLE
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
68 ><HR
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
69 ALIGN="LEFT"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
70 WIDTH="100%"></DIV
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
71 ><DIV
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
72 CLASS="SECTION"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
73 ><H1
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
74 CLASS="SECTION"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
75 ><A
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
76 NAME="AEN510"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
77 >4.2. Linker Operation</A
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
78 ></H1
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
79 ><P
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
80 >LWLINK takes one or more files in the LWTOOLS object file format and links
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
81 them into a single binary. While the precise method is slightly different,
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
82 linking can be conceptualized as the following steps.</P
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
83 ><P
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
84 ></P
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
85 ><OL
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
86 TYPE="1"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
87 ><LI
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
88 ><P
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
89 >First, the linker loads a linking script. If no script is specified, it
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
90 loads a built-in default script based on the output format selected. This
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
91 script tells the linker how to lay out the various sections in the final
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
92 binary.</P
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
93 ></LI
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
94 ><LI
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
95 ><P
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
96 >Next, the linker reads all the input files into memory. At this time, it
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
97 flags any format errors in those files. It constructs a table of symbols
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
98 for each object at this time.</P
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
99 ></LI
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
100 ><LI
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
101 ><P
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
102 >The linker then proceeds with organizing the sections loaded from each file
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
103 according to the linking script. As it does so, it is able to assign addresses
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
104 to each symbol defined in each object file. At this time, the linker may
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
105 also collapse different instances of the same section name into a single
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
106 section by appending the data from each subsequent instance of the section
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
107 to the first instance of the section.</P
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
108 ></LI
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
109 ><LI
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
110 ><P
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
111 >Next, the linker looks through every object file for every incomplete reference.
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
112 It then attempts to fully resolve that reference. If it cannot do so, it
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
113 throws an error. Once a reference is resolved, the value is placed into
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
114 the binary code at the specified section. It should be noted that an
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
115 incomplete reference can reference either a symbol internal to the object
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
116 file or an external symbol which is in the export list of another object
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
117 file.</P
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
118 ></LI
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
119 ><LI
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
120 ><P
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
121 >If all of the above steps are successful, the linker opens the output file
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
122 and actually constructs the binary.</P
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
123 ></LI
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
124 ></OL
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
125 ></DIV
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
126 ><DIV
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
127 CLASS="NAVFOOTER"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
128 ><HR
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
129 ALIGN="LEFT"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
130 WIDTH="100%"><TABLE
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
131 SUMMARY="Footer navigation table"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
132 WIDTH="100%"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
133 BORDER="0"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
134 CELLPADDING="0"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
135 CELLSPACING="0"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
136 ><TR
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
137 ><TD
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
138 WIDTH="33%"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
139 ALIGN="left"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
140 VALIGN="top"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
141 ><A
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
142 HREF="c436.html"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
143 ACCESSKEY="P"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
144 >Prev</A
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
145 ></TD
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
146 ><TD
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
147 WIDTH="34%"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
148 ALIGN="center"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
149 VALIGN="top"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
150 ><A
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
151 HREF="index.html"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
152 ACCESSKEY="H"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
153 >Home</A
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
154 ></TD
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
155 ><TD
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
156 WIDTH="33%"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
157 ALIGN="right"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
158 VALIGN="top"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
159 ><A
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
160 HREF="x524.html"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
161 ACCESSKEY="N"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
162 >Next</A
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
163 ></TD
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
164 ></TR
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
165 ><TR
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
166 ><TD
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
167 WIDTH="33%"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
168 ALIGN="left"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
169 VALIGN="top"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
170 >LWLINK</TD
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
171 ><TD
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
172 WIDTH="34%"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
173 ALIGN="center"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
174 VALIGN="top"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
175 ><A
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
176 HREF="c436.html"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
177 ACCESSKEY="U"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
178 >Up</A
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
179 ></TD
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
180 ><TD
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
181 WIDTH="33%"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
182 ALIGN="right"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
183 VALIGN="top"
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
184 >Linking Scripts</TD
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
185 ></TR
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
186 ></TABLE
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
187 ></DIV
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
188 ></BODY
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
189 ></HTML
ffef3ea07399 Preparing for release
lost
parents:
diff changeset
190 >