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

印刷ビューの終了

更新: 2014 年 7 月
 
 

mapfile の構造と構文

mapfile 指令は複数の行に渡ることができ、改行を含む空白文字を任意の数だけ含めることができます。

すべての構文説明について、次の表記が適用されます。

  • 空白文字または改行は、名前または値の中を除いてどこにでも入れられます。

  • ハッシュ文字 (#) で始まり改行で終わるコメントは、空白文字を入れることができる場所であれば、どこにでも入れられます。コメントはリンカーによって解釈されず、ドキュメント化のためのみに使用されます。

  • すべての指令はセミコロン (;) で終了します。{....} セクション内の最後のセミコロンは省略できます。

  • 固定幅のすべての文字エントリ、すべてのコロン (:)、セミコロン (;)、代入 (=, +=, -=)、および括弧 {....} は、そのままの文字を入力します。

  • 「斜体文字」で示されたエントリはすべて、適切なもので置き換える。

  • [ .... ] 括弧はオプションの構文を示すために使用されます。括弧は入力しません。実際の指令内には現れません。

  • 名前は大文字と小文字の区別がある文字列です。Table 8–2 には、mapfile 内で一般的に見られる名前およびその他の文字列のリストが含まれています。名前は 3 つの異なる形式で指定できます。

    • 引用符なし

      引用符なしの名前は英字および数字のシーケンスです。最初の文字は英字である必要があり、0 個以上の英字または数字が後に続きます。パーセント (%)、斜線 (/)、ピリオド (.)、および下線 (_) は英字としてカウントされます。ドル記号 ($)、およびハイフン (-) は数字としてカウントされます。

    • 単一引用符

      単一引用符 (') で囲んだ名前は、単一引用符または改行以外のすべての文字を含むことができます。すべての文字はリテラル文字として解釈されます。この引用形式は、引用符なしの名前では許可されない通常のプリント可能文字を含むファイルパスやその他の名前を指定する場合に便利です。

    • 二重引用符

      二重引用符 (") で囲んだ名前は、二重引用符または改行以外のすべての文字を含むことができます。バックスラッシュ (\) はエスケープ文字です。C プログラミング言語の文字列リテラル内で使用される場合と同じように機能します。Table 8–1 で示すように、前にバックスラッシュが付いた文字は、それらが表す文字に置換されます。Table 8–1 に示す文字以外の文字がバックスラッシュのあとに続くと、エラーになります。

  • value は数値を表し、整数定数について C 言語で使用される規則に従って、16 進数、10 進数、または 8 進数が使えます。すべての値は符号なしの整数値で、32 ビット出力オブジェクトの場合は 32 ビット、64 ビット出力オブジェクトの場合は 64 ビットです。

  • segment_flags には、Table 8–3 に示す 1 つ以上の値の空白区切りのリストとしてメモリーアクセス権を指定します。これらの値は <sys/elf.h> 内に定義されている PF_ 値に対応します。

表 8-1  二重引用符テキストのエスケープシーケンス
エスケープシーケンス
意味
\a
警告 (ベル)
\b
バックスペース
\f
用紙送り
\n
改行
\r
return
\t
水平タブ
\v
垂直タブ
\\
バックスラッシュ
\'
単一引用符
\"
二重引用符
\ooo
8 進数の定数で、ooo は 1 つから 3 つまでの 8 進数 (0....7) です
表 8-2  mapfile 内で一般的に使用される名前およびその他の文字列
名前
目的
segment_name
ELF セグメントの名前
section_name
ELF セクションの名前
symbol_name
ELF シンボルの名前
file_path
ELF オブジェクトまたは ELF オブジェクトを含むアーカイブを参照するために使用される、スラッシュ (/) で区切られた複数の名前から構成される UNIX のファイルパス
file_basename
file_path の最後のコンポーネント (basename(1))
objname
file_basename、またはアーカイブ内に含まれているオブジェクトの名前
soname
共有可能オブジェクトの SONAME に使用される共有可能オブジェクト名 (libc.so.1 など)
version_name
ELF バージョン管理セクション内で使用されるシンボルバージョンの名前
inherited_version_name
別のシンボルバージョンによって継承されたシンボルバージョンの名前
表 8-3  セグメントフラグ
フラグの値
意味
READ
セグメントは読み込み可能です
WRITE
セグメントは書き込み可能です
EXECUTE
セグメントは実行可能です
0
すべてのアクセス権フラグがクリアされます
DATA
ターゲットプラットフォーム上のデータセグメントに適した READ、WRITE、および EXECUTE フラグの組み合わせ
STACK
プラットフォーム ABI によって定義される、ターゲットプラットフォームに適した READ、WRITE、および EXECUTE フラグの組み合わせ