リンカーとライブラリ

COMDAT セクション

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

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