段权限
系统要装入的程序必须至少包含一个可装入段,即使文件格式并不要求此限制也是如此。系统创建可装入段的内存映像时,将会授予如 p_flags 成员中所指定的访问权限。PF_MASKPROC 掩码中包括的所有位都保留用于特定于处理器的语义。
表 13-2 ELF 段标志 | | |
PF_X
| 0x1
| 执行
|
PF_W
| 0x2
| 写
|
PF_R
| 0x4
| 读
|
PF_MASKPROC
| 0xf0000000
| 未指定
|
|
如果权限位是 0,则会拒绝该位的访问类型。实际内存权限取决于内存管理单元,该单元可随系统的不同而变化。尽管所有标志组合均有效,但系统仍可授予比请求更多的访问权限。不过,如果不显式指定写权限,则段在任何情况下都不会具有该权限。下表列出了确切的标志解释及允许的标志解释。
表 13-3 ELF 段权限 | | | |
无
| 0
| 拒绝所有访问
| 拒绝所有访问
|
PF_X
| 1
| 仅执行
| 读、执行
|
PF_W
| 2
| 只写
| 读、写、执行
|
PF_W + PF_X
| 3
| 写、执行
| 读、写、执行
|
PF_R
| 4
| 只读
| 读、执行
|
PF_R + PF_X
| 5
| 读、执行
| 读、执行
|
PF_R + PF_W
| 6
| 读、写
| 读、写、执行
|
PF_R + PF_W + PF_X
| 7
| 读、写、执行
| 读、写、执行
|
|
例如,典型的文本段具有读和执行权限,但没有写权限。数据段通常具有读、写和执行权限。