Node:Section, Next:Set, Previous:Scl, Up:Pseudo Ops
.section name
(COFF version)
Use the .section
directive to assemble the following code into a section
named name.
This directive is only supported for targets that actually support arbitrarily
named sections; on a.out
targets, for example, it is not accepted, even
with a standard a.out
section name.
For COFF targets, the .section
directive is used in one of the following
ways:
.section name[, "flags"] .section name[, subsegment]
If the optional argument is quoted, it is taken as flags to use for the section. Each flag is a single character. The following flags are recognized:
b
n
w
d
r
x
s
If no flags are specified, the default flags depend upon the section name. If
the section name is not recognized, the default will be for the section to be
loaded and writable. Note the n
and w
flags remove attributes
from the section, rather than adding them, so if they are used on their own it
will be as if no flags had been specified at all.
If the optional argument to the .section
directive is not quoted, it is
taken as a subsegment number (see Sub-Sections).
.section name
(ELF version)
This is one of the ELF section stack manipulation directives. The others are
.subsection
(see SubSection), .pushsection
(see PushSection), .popsection
(see PopSection), and
.previous
(see Previous).
For ELF targets, the .section
directive is used like this:
.section name [, "flags"[, @type[, @entsize]]]
The optional flags argument is a quoted string which may contain any combination of the following characters:
a
w
x
M
S
The optional type argument may contain one of the following constants:
@progbits
@nobits
If flags contains M
flag, type argument must be specified
as well as entsize argument. Sections with M
flag but not
S
flag must contain fixed size constants, each entsize octets
long. Sections with both M
and S
must contain zero terminated
strings where each character is entsize bytes long. The linker may remove
duplicates within sections with the same name, same entity size and same flags.
If no flags are specified, the default flags depend upon the section name. If the section name is not recognized, the default will be for the section to have none of the above flags: it will not be allocated in memory, nor writable, nor executable. The section will contain data.
For ELF targets, the assembler supports another type of .section
directive for compatibility with the Solaris assembler:
.section "name"[, flags...]
Note that the section name is quoted. There may be a sequence of comma separated flags:
#alloc
#write
#execinstr
This directive replaces the current section and subsection. The replaced
section and subsection are pushed onto the section stack. See the contents of
the gas testsuite directory gas/testsuite/gas/elf
for some examples of
how this directive and the other section stack directives work.