Runtime
Environment
-
System
Initialization
5.8.2.1
Initialization
Tables
5-24
The tables in the .cinit section consist
of
initialization records
of
varying sizes.
Figure
5-5
shows
the format
of
the .cinit section and
of
an
initialization record .
• clnlt Section
initialization
record
1
.:.::
'
.....
::::::::::::!rti.ij~i!i;ljgn:::r~PQ#.~:::g::::::::f:::
..........
Initialization
record
3
•
•
•
initialization
record
n
Figure
5-5.
Format
of
Initialization
Records
in
the
.cinit
Section
• The first field
of
an
initialization record
is
the size in
words
of
the in-
itialization data.
• The second field
is
the starting address
of
the variable
within
the .bss
section, where the data must be copied.
(It
points
to
the variable's space
in .bss.)
• These first
two
fields
are
followed
by
one or more
words
of
data. During
autoinitialization, this data
is
copied
to
.bss at the specified address.
Each
variable
that
must
be
autoinitialized
has
an
initialization
re-
cord
in
the
.cinit
section.
For example, suppose that
two
initialized variables
are
defined in C
as
follows:
int
i =
23·
int
a [
5']
='
{I,
2,
3,
4,
5};
rhe
initialization tables
would
appear
as
follows:
.word
2 ;
size
in
words
of
i
.long
-i
address
of
i
in
.bss
.long
2~
2
words
of
data
for
.word
.long
.long
10
-a
1,2,3,4,5
initializing
i
size
in
words
of
a
address
of
a
in
.bss
10
words
of
data
for
initializing
a
The
.cinit
section must contain
only
initialization tables in this format.
If
you
interface assembly language modules
to
your
C program,
do
not
use the .cinit
section
for
any other purpose.