リンカーとライブラリ

Comdat セクション

この種類のセクションは、セクション名 (sh_name) で一意に示されます。リンカーが、同じセクション名の SHT_SUNW_COMDAT 型の複数のセクションと出会うと、最初のセクションが保持され、他のすべてのセクションは捨てられます。また、捨てられた SHT_SUNW_COMDAT セクションに適用されたすべての再配置は無視され、かつ捨てられたセクションで定義されたすべてのシンボルも保持されません。

また、リンカーはセクション命名規約をサポートします。このセクション命名規約は、コンパイラが -xF オプションで呼び出されるとき、セクションの再順序付け (「セグメントの宣言」を参照) で使用されます。つまり、セクションが、.<funcname>%<sectname> という名前のセクションに入れられると、保持された最後の SHT_SUNW_COMDAT セクションが、.<sectname> で示されるセクションに合体します。この方法を使用すると、SHT_SUNW_COMDAT セクションを最終的に .text.data、または他のセクションに入れることができます。