链接程序和库指南

段权限

系统要装入的程序必须至少包含一个可装入段,即使文件格式并不要求此限制也是如此。系统创建可装入段的内存映像时,将会授予如 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

读、写、执行 

读、写、执行 

例如,典型的文本段具有读和执行权限,但没有写权限。数据段通常具有读、写和执行权限。