リンカーとライブラリ

Comdat セクション

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

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