Go to main content
Oracle® Solaris 11.3 リンカーとライブラリガイド

印刷ビューの終了

更新: 2015 年 10 月
 
 

補助セクション

Solaris リンカーは、プライマリ出力オブジェクトに加えて、1 つ以上の補助オブジェクトを生成できます。補助オブジェクトには、通常はプライマリオブジェクトに書き込まれる割り当て不可のセクションが含まれています。補助オブジェクトが生成されると、プライマリオブジェクトおよび関連するすべての補助オブジェクトに、これらの関連するオブジェクトを識別する情報を含む SHT_SUNW_ancillary セクションが格納されます。これらのオブジェクトの補助セクションは、グループのほかのメンバーを識別および解釈するために必要な情報を提供します。

このセクションには、次の構造の配列が含まれます。sys/elf.h を参照してください。

typedef struct {
        Elf32_Word      a_tag;
        union {
                Elf32_Word      a_val;
                Elf32_Addr      a_ptr;
        } a_un;
} Elf32_Ancillary;

typedef struct {
        Elf64_Xword     a_tag;
        union {
                Elf64_Xword     a_val;
                Elf64_Addr      a_ptr;
        } a_un;
} Elf64_Ancillary;

このタイプの各オブジェクトに対して、a_taga_un の解釈を制御します。

a_val

このオブジェクトは、さまざまに解釈される整数値を表します。

a_ptr

このオブジェクトは、プログラムの仮想アドレスを表します。

次の補助タグが存在します。

表 25  ELF 補助配列タグ
名前
c_un
ANC_SUNW_NULL
0
無視
ANC_SUNW_CHECKSUM
1
a_val
ANC_SUNW_MEMBER
2
a_ptr
ANC_SUNW_NULL

補助セクションのグループの最後にマークを付けます。

ANC_SUNW_CHECKSUM

c_val 要素にファイルのチェックサムを提供します。ANC_SUNW_MEMBER の最初のインスタンスの前に ANC_SUNW_CHECKSUM が存在する場合は、補助セクションの読み取り元となるオブジェクトのチェックサムが提供されます。ANC_SUNW_MEMBER タグのあとに存在する場合は、そのメンバーのチェックサムが提供されます。

ANC_SUNW_MEMBER

オブジェクト名を指定します。a_ptr 要素は、ファイル名を提供する、ヌル文字で終わる文字列の文字列テーブルオフセットを含みます。

補助セクションでは、現在のオブジェクトを識別する ANC_SUNW_MEMBER の最初のインスタンスの前に、常に ANC_SUNW_CHECKSUM が含まれている必要があります。そのあとに、オブジェクトの完全なセットを構成する各オブジェクトの ANC_SUNW_MEMBER が存在すべきです。個々の ANC_SUNW_MEMBER のあとには、そのオブジェクトの ANC_SUNW_CHECKSUM が存在すべきです。したがって、一般的な補助セクションは次のような構造になっています。

タグ
意味
ANC_SUNW_CHECKSUM
このオブジェクトのチェックサム
ANC_SUNW_MEMBER
オブジェクト #1 の名前
ANC_SUNW_CHECKSUM
オブジェクト #1 のチェックサム
ANC_SUNW_MEMBER
オブジェクト N の名前
ANC_SUNW_CHECKSUM
オブジェクト N のチェックサム
ANC_SUNW_NULL

したがって、オブジェクトは最初の ANC_SUNW_CHECKSUM をそのあとに続く各チェックサムと比較し、一致を見つけることによって自身を識別できます。