マップ・ファイルについて

このトピックでは、マップ・ファイルとそのフォーマットについて説明します。

バインダー・マップ・ファイルは、アドレス順フォーマットのシンボル・マップです。 マップ・ファイルにリストされる各シンボルには、ストレージ・クラス (CL) とそれに関連付けられたタイプ (TY) があります。

ストレージ・クラスは、 syms.h ファイルに定義されている XMC_TY 変数に対応します。 各ストレージ・クラスは、以下のいずれかのセクション・タイプに属します。

.text
読み取り専用データ (命令) が入っています。 このセクションにリストされているアドレスは、 .text セクションの先頭を起点として使用します。 .text セクションには、以下のいずれかのストレージ・クラス (CL) 値を含めることができます。
DB
デバッグ・テーブル。 読み取り専用データと同じ特性を持つセクションのクラスを識別します。
GL
グルー・コード プログラム・コードと同じ特性を持つセクションを識別します。 このタイプのセクションには、別のモジュール内のルーチンとのインターフェースとなるコードがあります。 インターフェース・コード要件の一部は、呼び出し全体で目次データ構造 (TOC) のアドレス可能度を維持することです。
購買要求書
プログラム・コード。 モジュールの実行可能命令を提供するセクションを識別します。
R0
読み取り専用データ。 プログラムの実行中に変更されない定数を含むセクションを識別します。
TB
将来のために予約されています。
TI
将来のために予約されています。
XO
拡張操作コード。 疑似マシン・インストラクションとして扱われるコードのセクションを識別します。
.data
読み取り/書き込みで初期化されたデータを含みます。 このセクションにリストされているアドレスは、 .data セクションの先頭を起点として使用します。 .data セクションには、以下のいずれかのストレージ・クラス (CL) 値タイプを含めることができます。
DS
記述子。 関数記述子を識別します。 この情報は、C や Fortranなどの言語で関数ポインターを記述するために使用されます。
RW
読み取り/書き込みデータ。 プログラムの実行中に変更が必要であることが分かっているデータが入っているセクションを識別します。
SV
SVC。 監視呼び出しとして扱われるコードのセクションを識別します。
T0
TOC アンカー。 事前定義 TOC シンボルによってのみ使用されます。 TOC ヘッダーによってのみ使用される TOC 特殊シンボルを識別します。
TC
TOC エントリー。 TOC に常駐するアドレス・データを識別します。
TD
TOC データ項目。 TOC に常駐するデータを識別します。
UA
分類されていません。 不明なストレージ・クラスのデータを含むデータを識別します。
.bss
初期化されていない読み取り/書き込みデータが入っています。 このセクションにリストされているアドレスは、 .data セクションの先頭を起点として使用します。 .bss セクションには、以下のいずれかのストレージ・クラス (CL) 値が含まれます。
BS
BSS クラス。 初期化されていないデータを含むセクションを識別します。
UC
名前なし Fortran 共通。 読み取り/書き込みデータを含むセクションを識別します。

タイプは、 syms.h ファイルに定義されている XTY_TY 変数に対応します。 タイプ (TY) 以下のいずれかの値になります。

項目 説明
ER 外部参照
LD ラベル定義
SD セクション定義
CM BSS 共通定義

以下は、デモンストレーション・カーネル・エクステンションのマップ・ファイルです。 このファイルは、 ld コマンドの -bmap:demokext.map オプションのために作成されました。

 1   ADDRESS MAP FOR demokext                                 SOURCE-FILE(OBJECT) or
 2   *IE ADDRESS  LENGTH AL CL TY Sym#  NAME                  IMPORT-FILE{SHARED-OBJECT}
 3   --- -------- ------ -- -- -- ----- --------------------- ---------------------------
 4    I                        ER S1    _system_configuration /lib/syscalls.exp{/unix}
 5    I                        ER S2    fp_open               /lib/kernex.exp{/unix}
 6    I                        ER S3    fp_close              /lib/kernex.exp{/unix}
 7    I                        ER S4    fp_write              /lib/kernex.exp{/unix}
 8    I                        ER S5    sprintf               /lib/kernex.exp{/unix}
 9       00000000 000360  2 PR SD S6    <>                    demokext.c(demokext.o)
10       00000000           PR LD S7    .demokext
11       00000210           PR LD S8    .close_log
12       00000264           PR LD S9    .write_log
13       000002F4           PR LD S10   .open_log
14       00000360 000108  5 PR SD S11   .strcpy               strcpy.s(/usr/lib/libcsys.a[strcpy.o])
15       00000468 000028  2 GL SD S12   <.sprintf>            glink.s(/usr/lib/glink.o)
16       00000468           GL LD S13   .sprintf
17       00000490 000028  2 GL SD S14   <.fp_close>           glink.s(/usr/lib/glink.o)
18       00000490           GL LD S15   .fp_close
19       000004C0 0000F8  5 PR SD S16   .strlen               strlen.s(/usr/lib/libcsys.a[strlen.o])
20       000005B8 000028  2 GL SD S17   <.fp_write>           glink.s(/usr/lib/glink.o)
21       000005B8           GL LD S18   .fp_write
22       000005E0 000028  2 GL SD S19   <.fp_open>            glink.s(/usr/lib/glink.o)
23       000005E0           GL LD S20   .fp_open
24       00000000 0000F9  3 RW SD S21   <_$STATIC>            demokext.c(demokext.o)
25     E 000000FC 000004  2 RW SD S22   demokext_j            demokext.c(demokext.o)
26   *   00000100 00000C  2 DS SD S23   demokext              demokext.c(demokext.o)
27       0000010C 000000  2 T0 SD S24   <TOC>
28       0000010C 000004  2 TC SD S25   <_$STATIC>
29       00000110 000004  2 TC SD S26   <_system_configuration>
30       00000114 000004  2 TC SD S27   <demokext_j>
31       00000118 000004  2 TC SD S28   <sprintf>
32       0000011C 000004  2 TC SD S29   <fp_close>
33       00000120 000004  2 TC SD S30   <fp_write>
34       00000124 000004  2 TC SD S31   <fp_open>

上記のマップ・ファイルでは、 .data セクションは 24 行目のステートメントから始まります。

24       00000000 0000F9  3 RW SD S21   <_$STATIC>          demokext.c(demokext.o)

TOC (目次) は、27 行目のステートメントから始まります。

27       0000010C 000000  2 T0 SD S24   <TOC>