У меня простой hello world
программа и после того, как я DUMPBIN это с / заголовки флаг, я получаю этот вывод:
FILE HEADER VALUES
8664 machine (x64)
D number of sections
5A3D287F time date stamp Fri Dec 22 18:45:03 2017
48F file pointer to symbol table
2D number of symbols
0 size of optional header
0 characteristics
Summary
F .data
A0 .debug$S
2F .drectve
24 .pdata
B9 .text$mn
18 .xdata
Что именно делает раздел xdata и что он содержит? Нет информации о MSDN.
Повторяющиеся разделы предназначены для таких вещей, как шаблоны c ++, компилятор будет создавать экземпляр шаблона в любом модуле перевода, который нуждается в нем, а затем компоновщик выберет один из этих экземпляров (обычно первый встреченный).
Менее распространенными являются специфичные для компилятора функции, такие как Microsoft __declspec (selectany), которые позволяют определять переменную более одного раза и снова, компоновщик просто выберет одно из этих определений и откажется от остальных.
ld-скрипты gcc будут использовать все секции .text * для создания окончательного .text связанного исполняемого файла. Вы можете изучить эти сценарии, чтобы понять, как компоновщик создает исполняемый файл из объектных файлов.
Других решений пока нет …