Contents|Index|Previous|Next
ld
sections
ld
deals with the following kinds of sections.
named sections
text section
data section
These sections hold your
program. as and ld
treat them as separate but equal sections. Anything you can say of one
section is true for another. When the program is running, however, it is
customary for the text section to be unalterable. The text section is often
shared among processes: it contains instructions, constants and the like.
The data section of a running program is usually alterable; for example,
C variables would be stored in the data section.
bss section
This section contains zeroed
bytes when your program begins running. It is used to hold uninitialized
variables or common storage. The length of each partial program’s bss section
is important; but, because it starts out containing zeroed bytes, there
is no need to store explicit zero bytes in the object file. The bss section
was invented to eliminate those explicit zeros from object files.
absolute section
Address, 0, of this section
is always relocated to runtime address, 0. This is useful if you
want to refer to an address that ld
must not change when relocating. In this sense, we speak of absolute addresses
being unrelocatable: they do not change during relocation.
undefined section
This section is a
catch-all for address references to objects not in the preceding sections.
An idealized
example of three relocatable sections follows. The following example uses
the traditional section names .text
and .data.
Memory addresses are on the horizontal axis.
Partial
program #1:
Partial
program #2:
Linked
program:
|
TTT |
ttttt |
|
dddd |
DDDD |
00000 ... |
Addresses:
0...
Top|Contents|Index|Previous|Next