Назначение IMAGE_COMDAT_SELECT_NODUPLICATES
Microsoft C++ с параметром /Gy поместит каждую функцию в отдельный раздел, чтобы компоновщик мог пропустить неиспользуемые функции, что может уменьшить размер исполняемого файла.
Помимо размещения каждой функции в отдельном разделе, она также помечает каждый раздел COMDAT с помощью выбора IMAGE_COMDAT_SELECT_NODUPLICATES. Цель COMDAT - разрешить определение чего-либо в более чем одном месте (компоновщик выбирает одно определение и отбрасывает другие), но это значение Selection запрещает множественные определения, что, по-видимому, просто отменяет эффект.
Какова цель IMAGE_COMDAT_SELECT_NODUPLICATES? Или почему Microsoft C++ с /Gy помечает секции кода COMDAT?