Oracle® Solaris 11.2 Linkers and Libraries Guide

Exit Print View

Updated: July 2014
 
 

Segment Permissions

A program to be loaded by the system must have at least one loadable segment, although this restriction is not required by the file format. When the system creates loadable segment memory images, the system gives access permissions, as specified in the p_flags member. All bits that are included in the PF_MASKPROC mask are reserved for processor-specific semantics.

Table 13-2  ELF Segment Flags
Name
Value
Meaning
PF_X
0x1
Execute
PF_W
0x2
Write
PF_R
0x4
Read
PF_MASKPROC
0xf0000000
Unspecified

If a permission bit is 0, that bit's type of access is denied. Actual memory permissions depend on the memory management unit, which can vary between systems. Although all flag combinations are valid, the system can grant more access than requested. In no case, however, will a segment have write permission unless this permission is specified explicitly. The following table lists both the exact flag interpretation and the allowable flag interpretation.

Table 13-3  ELF Segment Permissions
Flags
Value
Exact
Allowable
None
0
All access denied
All access denied
PF_X
1
Execute only
Read, execute
PF_W
2
Write only
Read, write, execute
PF_W + PF_X
3
Write, execute
Read, write, execute
PF_R
4
Read only
Read, execute
PF_R + PF_X
5
Read, execute
Read, execute
PF_R + PF_W
6
Read, write
Read, write, execute
PF_R + PF_W + PF_X
7
Read, write, execute
Read, write, execute

For example, typical text segments have read and execute, but not write permissions. Data segments normally have read, write, and execute permissions.