Segment permissions
A program to be loaded by the system must have at least one
loadable segment (although this is not required by the file
format). When the system creates loadable segments' memory
images, it gives access permissions as specified in the
p_flags
member. All bits included in the
PF_MASKPROC mask are reserved for
processor-specific semantics.
Segment flag bits, p_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 type of access is denied.
Actual memory permissions depend on the memory management
unit, which may vary from one system to another. Although
all flag combinations are valid, the system may grant more
access than requested. However, a segment will never have
write permission unless it is specified explicitly. The
following table shows both the exact flag interpretation
and the allowable flag interpretation.
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.
Next topic:
Segment contents
Previous topic:
Base address
© 2003 Caldera International, Inc. All rights reserved.
SCO OpenServer Release 5.0.7 -- 11 February 2003