6.5.1. `elf' Extensions to the `SECTION' Directive
--------------------------------------------------
Like the `obj' format, `elf' allows you to specify additional
information on the `SECTION' directive line, to control the type and
properties of sections you declare. Section types and properties are
generated automatically by NASM for the standard section names `.text',
`.data' and `.bss', but may still be overridden by these qualifiers.
The available qualifiers are:
* `alloc' defines the section to be one which is loaded into memory
when the program is run. `noalloc' defines it to be one which is
not, such as an informational or comment section.
* `exec' defines the section to be one which should have execute
permission when the program is run. `noexec' defines it as one
which should not.
* `write' defines the section to be one which should be writable when
the program is run. `nowrite' defines it as one which should not.
* `progbits' defines the section to be one with explicit contents
stored in the object file: an ordinary code or data section, for
example, `nobits' defines the section to be one with no explicit
contents given, such as a BSS section.
* `align=', used with a trailing number as in `obj', gives the
alignment requirements of the section.
The defaults assumed by NASM if you do not specify the above
qualifiers are:
section .text progbits alloc exec nowrite align=16
section .rodata progbits alloc noexec nowrite align=4
section .data progbits alloc noexec write align=4
section .bss nobits alloc noexec write align=4
section other progbits alloc noexec nowrite align=1
(Any section name other than `.text', `.rodata', `.data' and `.bss'
is treated by default like `other' in the above code.)