リンカーとライブラリ

文字列テーブル

文字列テーブルセクションは、空文字で終了する一連の文字 (一般に文字列と呼ばれている) を保持します。オブジェクトファイルは、これらの文字列を使用してシンボルとセクション名を表します。文字列は、文字列テーブルセクションへのインデックスとして参照されます。

先頭バイト (インデックス 0) は、空文字を保持します。同様に、文字列テーブルの最後のバイトは、空文字を保持します。したがって、すべての文字列は確実に空文字で終了します。インデックスが 0 の文字列は、名前を指定しないか空文字の名前を指定します (状況に依存する)。

空の文字列テーブルセクションが許可されており、このセクションのセクションヘッダーの sh_size 構成要素に 0 が入ります。0 以外のインデックスは、空の文字列テーブルに対して無効です。

セクションヘッダーの sh_name 構成要素は、ELF ヘッダーの e_shstrndx 構成要素で示されているとおり、セクションヘッダー文字列テーブルセクションへのインデックスを保持します。図 7-4 は、25 バイトの文字列テーブルと、さまざまなインデックスに関連付けられている文字列を示しています。

図 7-4 文字列テーブル

Graphic

表 7-18 は、上に示した文字列テーブルの文字列を示しています。

表 7-18 文字列テーブルインデックス

インデックス 

文字列 

0

なし 

1

name

7

Variable

11

able

16

able

24

空文字列 

例で示しているとおり、文字列テーブルインデックスはセクションのすべてのバイトを参照できます。文字列は 2 回以上現れることができ、部分文字列に対する参照は存在でき、単一文字列は複数回参照できます。参照されない文字列も許可されます。