=========================================================================================================================================================================== [ライブラリファイルの構成] ○ライブラリファイル │ │ ライブラリファイルは、以下の要素で構成されています。 │ ├─○ライブラリヘッダシグネチャ │ │   「"!",nul」固定です。 │ ├─○シンボルテーブルサイズ │ │   シンボルテーブルサイズは、シンボルテーブルのバイト数です。 │   シンボルテーブルサイズ自身と、シンボルテーブルシグネチャのサイズは含みません。 │ ├─○シンボルテーブルシグネチャ │ │   「0x06,"SYMDEF"」固定です。 │ ├─○シンボルテーブル │ │ │ │ すべてのモジュールの、すべてのグローバルシンボルが抽出され、列挙されています。 │ │ ローカルシンボルは列挙されていません。 │ │ │ │ シンボルテーブルは、以下の要素で構成されています。 │ │ │ ├─○シンボル情報テーブルサイズ │ │ │ │   シンボル情報テーブルサイズは、各シンボル情報の合計バイト数です。 │ │   シンボル情報テーブルサイズ自身のサイズは含みません。 │ │ │ ├─○シンボル情報テーブル │ │ │ │ │ │ シンボル情報テーブルは、シンボル情報の並びです。 │ │ │ │ │ └─○シンボル情報 │ │   │ │ │   │ 各シンボル情報は、以下の要素で構成されています。 │ │   │ │ │   ├─○モジュール位置 │ │   │ │ │   │   このシンボルが属するモジュールの、ファイル先頭からの絶対位置です。 │ │   │ │ │   └─○シンボル名称オフセット │ │ │ │       このシンボルの名称の、シンボル名称テーブル先頭からの相対位置です。 │ │ │ ├─○シンボル名称テーブルサイズ │ │ │ │   シンボル名称テーブルサイズは、各シンボル名称の合計バイト数です。 │ │   シンボル名称テーブルサイズ自身のサイズは含みません。 │ │ │ └─○シンボル名称テーブル │   │ │   │ シンボル名称テーブルは、シンボル名称の並びです。 │   │ │   └─○シンボル名称 │ │       各シンボル名称は、ヌル終端されています。 │ └─○モジュールテーブル   │   │ モジュールテーブルは、モジュールの並びです。   │   └─○モジュール     │     │ 各モジュールは、以下の要素で構成されています。     │     ├─○モジュール本体サイズ     │     │   モジュール本体サイズは、モジュール本体のバイト数です。     │   モジュール本体サイズ自身と、モジュール名称サイズ、モジュール名称のサイズは含みません。     │     ├─○モジュール名称サイズ、モジュール名称     │     │   モジュール名称サイズは、モジュール名称のバイト数です。     │   モジュール名称は、ヌル終端されていません。     │     └─○モジュール本体         オブジェクトファイル(*.o)の内容が、そのまま格納されています。 =========================================================================================================================================================================== [sample.libの構成] サンプルのライブラリファイル(sample.lib)を実例として、ライブラリファイルの構成を説明します。 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0000: 21 3C 6C 69 62 33 33 3E 00 "!",nul ライブラリヘッダシグネチャ(固定) --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0009: 00 00 00 47 0x00000047 シンボルテーブルサイズ 000D: 06 53 59 4D 44 45 46 0x06,"SYMDEF" シンボルテーブルシグネチャ(固定) {{シンボルテーブル 0014: 00 00 00 18 0x00000018 シンボル情報テーブルサイズ {{シンボル情報テーブル 0018: 00 00 01 67 00 00 00 00 0x00000167,0x00000000 シンボル情報 {モジュール位置(sub.o) ,シンボル名称オフセット(sub_routine) } 0020: 00 00 00 5B 00 00 00 0C 0x0000005B,0x0000000C シンボル情報 {モジュール位置(main.o),シンボル名称オフセット(global_number)} 0028: 00 00 00 5B 00 00 00 1A 0x0000005B,0x0000001A シンボル情報 {モジュール位置(main.o),シンボル名称オフセット(global_number)} }}シンボル情報テーブル 0030: 00 00 00 27 0x00000027 シンボル名称テーブルサイズ {{シンボル名称テーブル 0034: 73 75 62 5F 72 6F 75 74 69 6E 65 00 "sub_routine",nul シンボル名称(ヌル終端有り) 0040: 67 6C 6F 62 61 6C 5F 6E 75 6D 62 65 72 00 "global_number",nul シンボル名称(ヌル終端有り) 004E: 6D 61 69 6E 5F 72 6F 75 74 69 6E 65 00 "main_routine",nul シンボル名称(ヌル終端有り) }}シンボル名称テーブル }}シンボルテーブル --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- {{モジュールテーブル 005B: 00 00 01 01 0x00000101 モジュール本体サイズ 005F: 06 6D 61 69 6E 2E 6F 0x06,"main.o" モジュール名称サイズ,モジュール名称(ヌル終端無し) 0066: 00 01 00 00 33 00 00 03 00 00 00 10 00 00 00 00 モジュール本体 00 00 00 3C 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 94 00 00 00 51 00 00 00 03 00 00 00 FF 00 00 00 02 00 00 00 00 00 68 00 02 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 03 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 E5 00 00 00 1A 00 00 00 01 00 00 00 00 00 00 00 04 00 02 00 00 00 00 00 00 00 00 00 00 00 02 0E 67 63 63 32 5F 63 6F 6D 70 69 6C 65 64 2E 00 00 00 00 00 00 00 00 00 00 00 02 10 5F 5F 67 6E 75 5F 63 6F 6D 70 69 6C 65 64 5F 63 00 00 00 00 00 00 00 00 00 00 00 01 0C 6D 61 69 6E 5F 72 6F 75 74 69 6E 65 00 00 00 00 00 00 00 04 00 00 00 01 0D 67 6C 6F 62 61 6C 5F 6E 75 6D 62 65 72 40 06 0167: 00 00 00 FF 0x000000FF モジュール本体サイズ 016B: 05 73 75 62 2E 6F 0x05,"sub.o" モジュール名称サイズ,モジュール名称(ヌル終端無し) 0171: 00 01 00 00 33 00 00 03 00 00 00 10 00 00 00 00 モジュール本体 00 00 00 3C 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 94 00 00 00 50 00 00 00 03 00 00 00 FD 00 00 00 02 00 00 00 00 00 68 00 02 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 03 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 E4 00 00 00 19 00 00 00 01 00 00 00 00 00 00 00 04 00 02 00 00 00 00 00 00 00 00 00 00 00 02 0E 67 63 63 32 5F 63 6F 6D 70 69 6C 65 64 2E 00 00 00 00 00 00 00 00 00 00 00 02 10 5F 5F 67 6E 75 5F 63 6F 6D 70 69 6C 65 64 5F 63 00 00 00 00 00 00 00 00 00 00 00 01 0B 73 75 62 5F 72 6F 75 74 69 6E 65 00 00 00 00 00 00 00 04 00 00 00 02 0C 6C 6F 63 61 6C 5F 6E 75 6D 62 65 72 40 06 }}モジュールテーブル ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------