Здравствуйте. Собственно у меня несколько вопросов по поводу работы линкеров в современных тулчейнах.
Во первых, с удивлением обнаружил, что линкер из binutils по умолчанию линкует сожержмое объектных файлов ПОЛНОСТЬЮ. То есть, даже если из одного объектного файла с несколькими функциями во всей программе используется только одна из них - всё равно прилинковано будет всё содержимое объектного файла.
Что интересно, линкер от M$ под оффтопиком по умолчанию делает тоже самое.
Я знаю что для gcc и ld можно укзать специальные опции, благодяря которым компилятор каждую функцию поместит в отдельную секцию, а линкер потом вырежит все неиспользуемые.
У линкера от M$ тоже есть специальная опция.
Но почему такое поведение не принято по умолчанию? Это выглядит как просто расходование дискового пространства - зачем мне в программе код, который нигде не используется?
Мне такое поведение кажется глупым, потому прошу знающих людей объяснить и указать где я не прав.
Соответсвенно ещё вопрос, насколько современные линкеры стрипят код - сколько в создаваемых с помощью современных тулчейнов лишнего, совершенно не нужного кода?
Буду особенно благодарен, если кто скажет чего можно почитать в тему.