Oracle® Solaris 11.2 リンカーとライブラリガイド

印刷ビューの終了

更新: 2014 年 7 月
 
 

セグメントへのアクセス権

システムで読み込まれるプログラムには、少なくとも 1 つの読み込み可能セグメントが存在しなければなりません (ただし、この制限はファイル形式による要件ではありません)。システムは、読み込み可能セグメントのメモリーイメージを作成するとき、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
読み取り、書き込み、実行
読み取り、書き込み、実行

たとえば、標準的なテキストセグメントは読み取り権と実行権を持っていますが、書き込み権は持っていません。データセグメントは通常、読み取り権、書き込み権、および実行権を持っています。