システムで読み込まれるプログラムには、少なくとも 1 つの読み込み可能セグメントが存在しなければなりません (ただし、このことはファイル形式では要求されていません)。システムは、読み込み可能セグメントのメモリーイメージを作成するとき、p_flags 構成要素で指定されるアクセス権を与えます。PF_MASKPROC マスクのすべてのビットは、プロセッサ固有のセマンティクスに対して予約されます。
表 7-36 ELF セグメントフラグ
名前 |
値 |
意味 |
---|---|---|
PF_X |
0x1 |
実行 |
PF_W |
0x2 |
書き込み |
PF_R |
0x4 |
読み取り |
PF_MASKPROC |
0xf0000000 |
指定なし |
アクセス権ビットが 0 の場合、その種類のアクセスは拒否されます。実際のメモリーアクセス権は、メモリー管理ユニット (システムによって異なることがある) に依存します。すべてのフラグ組み合わせが有効ですが、システムは要求以上のアクセスを与えることがあります。ただしどんな場合も、特に断りが明示的に記述されていない限り、セグメントは書き込み権を持ちません。次の表に、正確なフラグ解釈と許容されるフラグ解釈を示します。
表 7-37 ELF セグメントへのアクセス権
フラグ |
値 |
正確なフラグ解釈 |
許容されるフラグ解釈 |
---|---|---|---|
None |
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 |
読み取り、書き込み、実行 |
読み取り、書き込み、実行 |
たとえば、標準的なテキストセグメントは読み取り権と実行権を持っていますが、書き込み権は持っていません。データセグメントは通常、読み取り権、書き込み権、および実行権を持っています。