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