В настоящее время принятый ответ несколько неполон.
Цель раздела COMDAT - разрешить определение «дубликатов» разделов в нескольких объектных файлах. Обычно, если один и тот же символ определен в нескольких объектных файлах, компоновщик сообщит об ошибках. Это может вызвать проблемы для некоторых функций языка C ++, таких как шаблоны, которые могут создавать одинаковые символы в разных файлах cpp.
Разделы COMDAT используются, чтобы обойти это. Когда раздел помечается как COMDAT в объектном файле, он также указывает флаг, который указывает, как следует разрешать конфликты. Существует множество вариантов, в том числе «просто выберите того, кто вам нравится», «убедитесь, что все дубли имеют одинаковый размер», «убедитесь, что все дубли имеют одинаковый контент», «выберите самый большой» и т. Д. спецификация COFF для полного списка.
В любом случае, в отличие от того, что сказал в настоящее время принятый ответ , нет никаких требований, так или иначе, к тому, каким должно быть содержимое раздела COMDAT. Они могут содержать одну процедуру, множество процедур, данные или любую комбинацию кода и данных.