リンカーとライブラリ

動的セクション

オブジェクトファイルが動的リンクに関係している場合、このオブジェクトファイルのプログラムヘッダーテーブルには、PT_DYNAMIC 型の要素が存在します。このセグメントには、.dynamic セクションが存在します。特殊なシンボル _DYNAMIC は、このセクションを示します。このセクションには、以下の構造体 (sys/link.h で定義される) の配列が存在します。

typedef struct {
        Elf32_Sword d_tag;
        union {
                Elf32_Word      d_val;
                Elf32_Addr      d_ptr;
                Elf32_Off       d_off;
        } d_un;
} Elf32_Dyn;

typedef struct {
        Elf64_Xword d_tag;
        union {
                Elf64_Xword     d_val;
                Elf64_Addr      d_ptr;
        } d_un;
} Elf64_Dyn;

このタイプの各オブジェクトの場合、d_tagd_un の解釈に影響します。

d_val

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

d_ptr

このオブジェクトは、プログラムの仮想アドレスを表わします。ファイルの仮想アドレスは、実行時にメモリーの仮想アドレスに一致しないことがあります。実行時リンカーは、動的構造体に存在するアドレスを解釈するとき、元のファイル値とメモリーのベースアドレスに基づいて実際のアドレスを計算します。整合性のため、ファイルには動的構造体内のアドレスを補正するための再配置エントリは存在しません。

ツールによる動的セクションエントリの内容の解釈をシンプルにするために、各タグの値 (2 つの特別な互換性範囲を除く) で d_un union の解釈を決定します。 偶数の値を持つタグは、d_ptr を使用する動的セクションのエントリを示します。奇数の値を持つタグは、d_val を使用する動的セクションのエントリ、または d_ptrd_val のどちらも使用しない動的セクションのエントリを示します。特殊値 DT_ENCODING より小さい値を持つタグ、および DT_HIOSDT_LOPROC 間の範囲に入る値を持つタグは、これらの規則には従いません。

表 7–43 は、実行可能オブジェクトファイルと共有オブジェクトファイルのタグ要求についてまとめています。タグに「必須」という印が付いている場合、動的リンク配列にはその型のエントリが存在しなければなりません。また、「任意」は、タグのエントリが現れてもよいですが必須ではないことを意味します

表 7–43 ELF 動的配列タグ

名前 

値 

d_un

実行可能ファイル 

共有オブジェクトファイル 

DT_NULL

0

無視される 

必須 

必須 

DT_NEEDED

1

d_val

任意 

任意 

DT_PLTRELSZ

2

d_val

任意 

任意 

DT_PLTGOT

3

d_ptr

任意 

任意 

DT_HASH

4

d_ptr

必須 

必須 

DT_STRTAB

5

d_ptr

必須 

必須 

DT_SYMTAB

6

d_ptr

必須 

必須 

DT_RELA

7

d_ptr

必須 

任意 

DT_RELASZ

8

d_val

必須 

任意 

DT_RELAENT

9

d_val

必須 

任意 

DT_STRSZ

10

d_val

必須 

必須 

DT_SYMENT

11

d_val

必須 

必須 

DT_INIT

12

d_ptr

任意 

任意 

DT_FINI

13

d_ptr

任意 

任意 

DT_SONAME

14

d_val

無視される 

任意 

DT_RPATH

15

d_val

任意 

任意 

DT_SYMBOLIC

16

無視される 

無視される 

任意 

DT_REL

17

d_ptr

必須 

任意 

DT_RELSZ

18

d_val

必須 

任意 

DT_RELENT

19

d_val

必須 

任意 

DT_PLTREL

20

d_val

任意 

任意 

DT_DEBUG

21

d_ptr

任意 

無視される 

DT_TEXTREL

22

無視される 

任意 

任意 

DT_JMPREL

23

d_ptr

任意 

任意 

DT_BIND_NOW

24

無視される 

任意 

任意 

DT_INIT_ARRAY

25

d_ptr

任意 

任意 

DT_FINI_ARRAY

26

d_ptr

任意 

任意 

DT_INIT_ARRAYSZ

27

d_val

任意 

任意 

DT_FINI_ARRAYSZ

28

d_val

任意 

任意 

DT_RUNPATH

29

d_val

任意 

任意 

DT_FLAGS

30

d_val

任意 

任意 

DT_ENCODING

32

指定なし 

指定なし 

指定なし 

DT_PREINIT_ARRAY

32

d_ptr

任意 

無視される 

DT_PREINIT_ARRAYSZ

33

d_val

任意 

無視される 

DT_LOOS

0x6000000d

指定なし 

指定なし 

指定なし 

DT_SUNW_RTLDINF

0x6000000e

d_ptr

任意 

任意 

DT_HIOS

0x6ffff000

指定なし 

指定なし 

指定なし 

DT_VALRNGLO

0x6ffffd00

指定なし 

指定なし 

指定なし 

DT_CHECKSUM

0x6ffffdf8

d_val

任意 

任意 

DT_PLTPADSZ

0x6ffffdf9

d_val

任意 

任意 

DT_MOVEENT

0x6ffffdfa

d_val

任意 

任意 

DT_MOVESZ

0x6ffffdfb

d_val

任意 

任意 

DT_FEATURE_1

0x6ffffdfc

d_val

任意 

任意 

DT_POSFLAG_1

0x6ffffdfd

d_val

任意 

任意 

DT_SYMINSZ

0x6ffffdfe

d_val

任意 

任意 

DT_SYMINENT

0x6ffffdff

d_val

任意 

任意 

DT_VALRNGHI

0x6ffffdff

指定なし 

指定なし 

指定なし 

DT_ADDRRNGLO

0x6ffffe00

指定なし 

指定なし 

指定なし 

DT_CONFIG

0x6ffffefa

d_ptr

任意 

任意 

DT_DEPAUDIT

0x6ffffefb

d_ptr

任意 

任意 

DT_AUDIT

0x6ffffefc

d_ptr

任意 

任意 

DT_PLTPAD

0x6ffffefd

d_ptr

任意 

任意 

DT_MOVETAB

0x6ffffefe

d_ptr

任意 

任意 

DT_SYMINFO

0x6ffffeff

d_ptr

任意 

任意 

DT_ADDRRNGHI

0x6ffffeff

指定なし 

指定なし 

指定なし 

DT_RELACOUNT

0x6ffffff9

d_val

任意 

任意 

DT_RELCOUNT

0x6ffffffa

d_val

任意 

任意 

DT_FLAGS_1

0x6ffffffb

d_val

任意 

任意 

DT_VERDEF

0x6ffffffc

d_ptr

任意 

任意 

DT_VERDEFNUM

0x6ffffffd

d_val

任意 

任意 

DT_VERNEED

0x6ffffffe

d_ptr

任意 

任意 

DT_VERNEEDNUM

0x6fffffff

d_val

任意 

任意 

DT_LOPROC

0x70000000

指定なし 

指定なし 

指定なし 

DT_SPARC_REGISTER

0x70000001

d_val

任意 

任意 

DT_AUXILIARY

0x7ffffffd

d_val

指定なし 

任意 

DT_USED

0x7ffffffe

d_val

任意 

任意 

DT_FILTER

0x7fffffff

d_val

指定なし 

任意 

DT_HIPROC

0x7fffffff

指定なし 

指定なし 

指定なし 

DT_NULL

_DYNAMIC 配列の終わりを示します。

DT_NEEDED

ヌル文字で終わっている文字列の DT_STRTAB 文字列テーブルオフセットで、必要な依存性の名前を指定します。動的配列には、この型の複数のエントリが存在可能です。これらのエントリの相対順序は意味がありますが、他の型のエントリに対するこれらのエントリの相対順序には意味がありません。詳細は、共有オブジェクトの依存性を参照してください。

DT_PLTRELSZ

プロシージャのリンクテーブルに関連付けられている再配置エントリの合計サイズ (単位: バイト)。プロシージャのリンクテーブル (プロセッサ固有)を参照してください。

DT_PLTGOT

プロシージャのリンクテーブルまたは大域オフセットテーブルに関連付けられるアドレス。詳細は、プロシージャのリンクテーブル (プロセッサ固有) および 大域オフセットテーブル (プロセッサ固有)を参照してください。

DT_HASH

シンボルハッシュテーブルのアドレス。このテーブルは、DT_SYMTAB 要素で示されるシンボルテーブルを参照します。詳細は、ハッシュテーブルを参照してください。

DT_STRTAB

文字列テーブルのアドレス。文字列テーブルには、実行時リンカーが必要とするシンボル名、依存性名、および他の文字列が存在します。詳細は、文字列テーブルを参照してください。

DT_SYMTAB

シンボルテーブルのアドレス。詳細は、シンボルテーブルを参照してください。

DT_RELA

再配置テーブルのアドレス。詳細は、再配置を参照してください。

オブジェクトファイルには、複数の再配置セクションを指定できます。リンカーは、実行可能オブジェクトファイルまたは共有オブジェクトファイルの再配置テーブルを作成するとき、これらのセクションを連結して単一のテーブルを作成します。これらの各セクションはオブジェクトファイル内で独立している場合がありますが、実行時リンカーは単一のテーブルとして扱います。実行時リンカーは、実行可能ファイルのプロセスイメージを作成したり、またはプロセスイメージに共有オブジェクトを付加したりするとき、再配置テーブルを読み取り、関連付けられている動作を実行します。

この要素が存在する場合、DT_RELASZ 要素と DT_RELAENT 要素も存在する必要があります。再配置がファイルに対して必須の場合、DT_RELA または DT_REL が使用可能です。

DT_RELASZ

DT_RELA 再配置テーブルの合計サイズ (単位: バイト)。

DT_RELAENT

DT_RELA 再配置エントリのサイズ (単位: バイト)。

DT_STRSZ

DT_STRTAB 文字列テーブルの合計サイズ (単位: バイト)。

DT_SYMENT

DT_SYMTAB シンボルエントリのサイズ (単位: バイト)。

DT_INIT

初期化関数のアドレス。詳細は、初期設定および終了セクションを参照してください。

DT_FINI

終了関数のアドレス。詳細は、初期設定および終了セクションを参照してください。

DT_SONAME

ヌル文字で終わっている文字列の DT_STRTAB 文字列テーブルオフセットで、共有オブジェクトの名前を示します。共有オブジェクト名の記録を参照してください。

DT_RPATH

ヌル文字で終わっているライブラリ検索パス文字列の DT_STRTAB 文字列テーブルオフセット。この要素の使用は、DT_RUNPATH に置き換えられました。 実行時リンカーが検索するディレクトリを参照してください。

DT_SYMBOLIC

オブジェクトが、リンク編集中に適用されたシンボリック結合を含むことを示します。この要素の使用は、DF_SYMBOLIC フラグに置き換えられました。 詳細は、-B symbolicの使用を参照してください。

DT_REL

DT_RELA に似ていますが、テーブルに暗黙の加数が存在する点が異なります。この要素が存在する場合、DT_RELSZ 要素と DT_RELENT 要素も存在する必要があります。

DT_RELSZ

DT_REL 再配置テーブルの合計サイズ (単位: バイト)。

DT_RELENT

DT_REL 再配置エントリのサイズ (単位: バイト)。

DT_PLTREL

プロシージャのリンクテーブルが参照する再配置エントリの型 (DT_REL または DT_RELA ) を示します。1 つのプロシージャのリンクテーブルでは、すべての再配置は、同じ再配置を使用しなければなりません。詳細は、プロシージャのリンクテーブル (プロセッサ固有)を参照してください。この要素が存在する場合、DT_JMPREL 要素も存在する必要があります。

DT_DEBUG

デバッグに使用されます。

DT_TEXTREL

1 つまたは複数の再配置エントリが書き込み不可セグメントに対する変更を要求する可能性があり、実行時リンカーはそれに応じて対応できることを示します。この要素の使用は、DF_TEXTREL フラグに置き換えられました。 位置に依存しないコードを参照してください。

DT_JMPREL

プロシージャのリンクテーブルにのみ関連付けられている再配置エントリのアドレス。詳細は、プロシージャのリンクテーブル (プロセッサ固有)を参照してください。これらの再配置エントリを分離しておくと、遅延結合が有効の場合、実行時リンカーはオブジェクトの読み込み時にこれらの再配置エントリを無視します。この要素が存在する場合、DT_PLTRELSZ 要素と DT_PLTREL 要素も存在する必要があります。

DT_POSFLAG_1

直後の DT_ 要素に適用されるさまざまな状態フラグ。詳細は、表 7–46 を参照してください。

DT_BIND_NOW

プログラムに制御を渡す前に、このオブジェクトについてのすべての再配置を処理するよう実行時リンカーに指示します。環境または dlopen(3DL) で指定された場合、このエントリは遅延結合の使用指示よりも優先されます。この要素の使用は、DF_BIND_NOW フラグに置き換えられました。 詳細は、再配置が実行されるときを参照してください。

DT_INIT_ARRAY

初期設定関数へのポインタの配列のアドレス。この要素が存在する場合、DT_INIT_ARRAYSZ 要素も存在する必要があります。詳細は、初期設定および終了セクションを参照してください。

DT_FINI_ARRAY

終了関数へのポインタの配列のアドレス。この要素が存在する場合、DT_FINI_ARRAYSZ 要素も存在する必要があります。詳細は、初期設定および終了セクションを参照してください。

DT_INIT_ARRAYSZ

DT_INIT_ARRAY 配列の合計サイズ (単位: バイト)。

DT_FINI_ARRAYSZ

DT_FINI_ARRAY 配列の合計サイズ (単位: バイト)。

DT_RUNPATH

ヌル文字で終わっているライブラリ検索パス文字列の DT_STRTAB 文字列テーブルオフセット。実行時リンカーが検索するディレクトリを参照してください。

DT_FLAGS

このオブジェクトに特有のフラグ値。詳細は、表 7–44 を参照してください。

DT_ENCODING

DT_ENCODING と等しいかそれより大きく、かつ DT_HIOS と等しいかそれより小さい値は、d_un union の解釈の規則に従います。

DT_PREINIT_ARRAY

初期設定前関数へのポインタの配列のアドレス。この要素が存在する場合、DT_PREINIT_ARRAYSZ 要素も存在する必要があります。この配列は、実行可能ファイル内でのみ処理されます。共有オブジェクト内に含まれている場合は無視されます。詳細は、初期設定および終了セクションを参照してください。

DT_PREINIT_ARRAYSZ

DT_PREINIT_ARRAY 配列の合計サイズ (単位: バイト)。

DT_LOOS - DT_HIOS

この範囲の値 (両端の値を含む) は、オペレーティングシステム固有の意味のために予約されています。このような値はすべて、d_un union の解釈の規則に従います。

DT_SUNW_RTLDINF

実行時リンカーによる使用のために予約されています。

DT_SYMINFO

シンボル情報テーブルのアドレス。この要素が存在する場合、DT_SYMINENT 要素と DT_SYMINSZ 要素も存在する必要があります。詳細は、Syminfo テーブルを参照してください。

DT_SYMINENT

DT_SYMINFO 情報エントリのサイズ (単位: バイト)。

DT_SYMINSZ

DT_SYMINFO テーブルのサイズ (単位: バイト)。

DT_VERDEF

バージョン定義テーブルのアドレス。このテーブル内の要素には、文字列テーブル DT_STRTAB のインデックスが含まれます。この要素が存在する場合、DT_VERDEFNUM 要素も存在する必要があります。詳細は、バージョン定義セクションを参照してください。

DT_VERDEFNUM

DT_VERDEF テーブルのエントリ数。

DT_VERNEED

バージョン依存性テーブルのアドレス。このテーブル内の要素には、文字列テーブル DT_STRTAB のインデックスが含まれます。この要素が存在する場合、DT_VERNEEDNUM 要素も存在する必要があります。詳細は、バージョン依存セクションを参照してください。

DT_VERNEEDNUM

DT_VERNEEDNUM テーブルのエントリ数

DT_RELACOUNT

すべての Elf32_Rela (または Elf64_Rela) RELATIVE 再配置は連結されていることを示し、このエントリにより、RELATIVE 再配置カウントが指定されます。詳細は、再配置セクションの結合を参照してください。

DT_RELCOUNT

すべての Elf32_Rel RELATIVE 再配置は連結されていることを示し、このエントリにより、RELATIVE 再配置カウントが指定されます。詳細は、再配置セクションの結合を参照してください。

DT_AUXILIARY

ヌル文字で終わっている DT_STRTAB 文字列テーブルオフセットで、1 つ以上の補助フィルティーの命名を行います。詳細は、補助フィルタの生成を参照してください。

DT_FILTER

ヌル文字で終わっている DT_STRTAB 文字列テーブルオフセットで、1 つ以上の標準フィルティーの命名を行います。詳細は、標準フィルタの生成を参照してください。

DT_CHECKSUM

オブジェクトの選択されたセクションの簡単なチェックサム。詳細は、gelf_checksum(3ELF) のマニュアルページを参照してください。

DT_MOVEENT

DT_MOVETAB 移動エントリのサイズ (単位: バイト)。

DT_MOVESZ

DT_MOVETAB テーブルの合計サイズ (単位: バイト)。

DT_MOVETAB

移動テーブルのアドレス。この要素が存在する場合、DT_MOVEENT 要素と DT_MOVESZ 要素も存在する必要があります。詳細は、移動セクションを参照してください。

DT_CONFIG

ヌル文字で終わっている DT_STRTAB 文字列テーブルオフセットで、構成ファイルを定義します。構成ファイルは、実行可能ファイルでのみ有効であり、通常このオブジェクトに固有のファイルです。詳細は、デフォルトの検索パスの設定を参照してください。

DT_DEPAUDIT

ヌル文字で終わっている DT_STRTAB 文字列テーブルオフセットで、1 つ以上の監査ライブラリを定義します。詳細は、実行時リンカーの監査インタフェースを参照してください。

DT_AUDIT

ヌル文字で終わっている DT_STRTAB 文字列テーブルオフセットで、1 つ以上の監査ライブラリを定義します。詳細は、実行時リンカーの監査インタフェースを参照してください。

DT_FLAGS_1

このオブジェクトに特有のフラグ値。表 7–45 を参照してください。

DT_FEATURE_1

このオブジェクト特有の機能を示す値。詳細は、機能チェックを参照してください。

DT_VALRNGLO - DT_VALRNGHI

この範囲の値は、動的構造体内の d_un.d_val フィールドで使用されます。

DT_ADDRRNGLO - DT_ADDRRNGHI

この範囲の値は、動的構造体内の d_un.d_ptr フィールドで使用されます。ELF オブジェクトが作成後に調整された場合、これらのエントリも更新する必要があります。

DT_SPARC_REGISTER

DT_SYMTAB シンボルテーブル内の STT_SPARC_REGISTER シンボルのインデックス。シンボルテーブルの各 STT_SPARC_REGISTER シンボルには、1 つのエントリが存在します。詳細は、レジスタシンボルを参照してください。

DT_LOPROC - DT_HIPROC

この範囲の値は、プロセッサ固有の使用方法に予約されます。

動的配列の最後にある DT_NULL 要素と、DT_NEEDEDDT_POSFLAG_1 要素の相対的な順序を除くと、エントリはどの順序で現れてもかまいません。表に示されていないタグ値は予約されています。

表 7–44 ELF 動的フラグ DT_FLAGS

名前 

値 

意味 

DF_ORIGIN

0x1

$ORIGIN 処理が必要

DF_SYMBOLIC

0x2

シンボリックシンボル解決が必要 

DF_TEXTREL

0x4

テキストの再配置が存在する 

DF_BIND_NOW

0x8

非遅延結合が必要 

DF_STATIC_TLS

0x10

オブジェクトは静的なスレッド固有領域方式を使用する 

DF_ORIGIN

オブジェクトに $ORIGIN 処理が必要であることを示します。関連する依存関係の配置を参照してください。

DF_SYMBOLIC

オブジェクトが、リンク編集中に適用されたシンボリック結合を含むことを示します。詳細は、-B symbolicの使用を参照してください。

DF_TEXTREL

1 つまたは複数の再配置エントリが書き込み不可セグメントに対する変更を要求する可能性があり、実行時リンカーはそれに応じて対応できることを示します。位置に依存しないコードを参照してください。

DF_BIND_NOW

プログラムに制御を渡す前に、このオブジェクトについてのすべての再配置を処理するよう実行時リンカーに指示します。環境または dlopen(3DL) で指定された場合、このエントリは遅延結合の使用指示よりも優先されます。詳細は、再配置が実行されるときを参照してください。

DF_STATIC_TLS

静的なスレッド固有領域方式を使用するコードがオブジェクトに含まれていることを示します。静的なスレッド固有領域は、dlopen(3DL) または遅延読み込みを使用して動的に読み込まれるオブジェクトでは使用できません。この制限のため、リンカーは静的なスレッド固有領域を必要とする共有オブジェクトの作成をサポートしていません。

表 7–45 ELF 動的フラグ DT_FLAGS_1

名前 

値 

意味 

DF_1_NOW

0x1

完全な再配置処理を行います 

DF_1_GLOBAL

0x2

未使用 

DF_1_GROUP

0x4

オブジェクトがグループの構成要素であることを示します 

DF_1_NODELETE

0x8

オブジェクトがプロセスから削除できないことを示します 

DF_1_LOADFLTR

0x10

フィルティーの即時読み込みを保証します 

DF_1_INITFIRST

0x20

オブジェクトの初期化を最初に実行します 

DF_1_NOOPEN

0x40

オブジェクトを dlopen(3DL) で使用できません

DF_1_ORIGIN

0x80

$ORIGIN 処理が必要です

DF_1_DIRECT

0x100

直接結合が有効です 

DF_1_INTERPOSE

0x400

オブジェクトは割り込み処理です 

DF_1_NODEFLIB

0x800

デフォルトのライブラリ検索パスを無視します 

DF_1_NODUMP

0x1000

オブジェクトを dldump(3DL) でダンプできません

DF_1_CONFALT

0x2000

オブジェクトは代替構成です 

DF_1_ENDFILTEE

0x4000

フィルティーがフィルタの検索を終了します 

DF_1_DISPRELDNE

0x8000

ディスプレイスメント再配置の終了 

DF_1_DISPRELPND

0x10000

ディスプレイスメント再配置の保留 

DF_1_NOW

プログラムに制御を渡す前に、このオブジェクトについてのすべての再配置を処理するよう実行時リンカーに指示します。環境または dlopen(3DL) で指定された場合、このフラグは遅延結合の使用指示よりも優先されます。詳細は、再配置が実行されるときを参照してください。

DF_1_GROUP

オブジェクトがグループの構成要素であることを示します。このフラグは、リンカーの -B group オプションを使用してオブジェクトに記録されます。詳細は、オブジェクト階層を参照してください。

DF_1_NODELETE

オブジェクトがプロセスから削除できないことを示します。オブジェクトは、dlopen(3DL) で直接または依存性としてプロセスに読み込まれた場合、dlclose(3DL) で読み込み解除できません。このフラグは、リンカーの -z nodelete オプションを使用してオブジェクトに記録されます。

DF_1_LOADFLTR

これは、「フィルタ」に対してのみ意味があります。関連付けられているすべてのフィルティーが直ちに処理されることを示します。このフラグは、リンカーの -z loadfltr オプションを使用してオブジェクトに記録されます。詳細は、フィルティーの処理を参照してください。

DF_1_INITFIRST

このオブジェクトと共に読み込まれた他のオブジェクトより先に、このオブジェクトの初期化セクションが実行されることを示します。このフラグは、特殊なシステムライブラリでのみ使用するもので、リンカーの -z initfirst オプションを使用してオブジェクトに記録されます。

DF_1_NOOPEN

dlopen(3DL) を使ってオブジェクトを実行中のプロセスに追加できないことを示します。このフラグは、リンカーの -z nodlopen オプションを使用してオブジェクトに記録されます。

DF_1_ORIGIN

オブジェクトに $ORIGIN 処理が必要であることを示します。関連する依存関係の配置を参照してください。

DF_1_DIRECT

オブジェクトが直接結合情報を使用することを示します。直接結合を参照してください。

DF_1_INTERPOSE

オブジェクトシンボルテーブルの割り込みが、一次読み込みオブジェクト (通常は実行可能ファイル) 以外のすべてのシンボルの前で発生します。このフラグは、リンカーの -z interpose オプションを使用して記録されます。直接結合を参照してください。

DF_1_NODEFLIB

このオブジェクトの依存関係を検索する際、デフォルトのライブラリ検索パスがすべて無視されることを示します。このフラグは、リンカーの -z nodefaultlib オプションを使用してオブジェクトに記録されます。実行時リンカーが検索するディレクトリを参照してください。

DF_1_NODUMP

このオブジェクトが dldump(3DL) によってダンプされないことを示します。このオプションの候補には、再配置を保持しないオブジェクトが含まれ、これらのオブジェクトは、crle(1) を使用して代替オブジェクトを生成する際に含めることができます。このフラグは、リンカーの -z nodump オプションを使用してオブジェクトに記録されます。

DF_1_CONFALT

このオブジェクトが、crle(1) によって生成された代替構成オブジェクトであることを示します。このフラグにより実行時リンカーがトリガーされ、構成ファイル $ORIGIN/ld.config.app-name が検索されます。

DF_1_ENDFILTEE

フィルティーに対してのみ意味があります。以降のフィルティーに対するフィルタ検索は行われません。このフラグは、リンカーの -z endfiltee オプションを使用してオブジェクトに記録されます。詳細は、補助検索の縮小を参照してください。

DF_1_DISPRELDNE

このオブジェクトにディスプレイスメント再配置が適用されたことを示します。再配置が適用されると再配置レコードは破棄されるため、オブジェクト内のディスプレイスメント再配置レコードはもはや存在しません。詳細は、ディスプレイスメント再配置 を参照してください。

DF_1_DISPRELPND

このオブジェクトのディスプレイスメント再配置が保留されていることを示します。ディスプレイスメント再配置はオブジェクト内部で終了するため、実行時に完了できます。詳細は、ディスプレイスメント再配置 を参照してください。

表 7–46 ELF 動的位置フラグ DT_POSFLAG_1

名前 

値 

意味 

DF_P1_LAZYLOAD

0x1

遅延読み込みされた依存関係を示す 

DF_P1_GROUPPERM

0x2

グループの依存関係を示す 

DF_P1_LAZYLOAD

後続の DT_NEEDED エントリが遅延読み込み対象のオブジェクトであることを示します。このフラグは、リンカーの -z lazyload オプションを使用してオブジェクトに記録されます。動的依存関係の遅延読み込みを参照してください。

DF_P1_GROUPPERM

後続の DT_NEEDED エントリがグループとして読み込まれるオブジェクトであることを示します。このフラグは、リンカーの -z groupperm オプションを使用してオブジェクトに記録されます。詳細は、グループの分離を参照してください。

表 7–47 ELF 動的機能フラグ DT_FEATURE_1

名前 

値 

意味 

DTF_1_PARINIT

0x1

部分的な初期化機能が必要 

DTF_1_CONFEXP

0x2

構成ファイルが必要 

DTF_1_PARINIT

オブジェクトが部分的な初期化を必要とすることを示します。詳細は、移動セクションを参照してください。

DTF_1_CONFEXP

このオブジェクトが、crle(1) によって生成された代替構成オブジェクトであることを示します。このフラグにより実行時リンカーがトリガーされ、構成ファイル $ORIGIN/ld.config.app-name が検索されます。このフラグの効果は、DF_1_CONFALT と同じです。