LINUX.ORG.RU

Какие могут быть подводные камни при линковке обьектников скомпиленых с разными уровнями оптимизации???

 ,


0

1

кто пытался такое провернуть просьба поделится опытом.

предполагается что все обьектники в формате ELF. Актуально для платформ AMD64 и х86

★★★★★

Опять разводят венду...

anonymous
()

Теоретически никаких. Мож гентушники смогут чего рассказать "из жизни". А вообще требований по оптимизации в тех же бинарных дистрах ЕМНИП нет.

anonymous
()

Если системные либы собраны с «худшим» уровнем оптимизации, то бинарник собранный с офигенно крутыми ключами быстрее работать не станет (во всяком случа не так как планируется). Конечно он должен дергать функции из системных либ. В остальном максимум, что можно словить - сегфолт, но это редко.

gh0stwizard ★★★★★
()

кто пытался такое провернуть просьба поделится опытом.

встречный вопрос. а как ты это собираешься проворачивать?

Stil ★★★★★
()
Ответ на: комментарий от no-steam

Речь идет о собственном софте слинкованом из обьектников скомпиленых с разными уровнями оптимизации

cvv ★★★★★
() автор топика
Ответ на: комментарий от cvv

Ну иногда компиляторы глюкают с большим уровнем оптимизации. Вот сейчас подобное вижу в clang на ARM. Т.е. супероптимизированный модуль может просто не функционировать корректно.

Кроме того наблюдал несколько лет назад фокус с одним из ядер x86_64 и несовпадением опций компиляции для какой-то версии gcc. В скомпилированном модуле обнаружились отрицательные смещения относительно SP. Все почти работало, но иногда прерывания сносили башку у системы. Выяснилось, что все остальное кроме данного модуля использовало -Os опцию кажется. Добавили - перестало маразмировать. На пользовательском уровне можно было бы и не заметить.

io ★★
()
Ответ на: комментарий от cvv

тоесть уровни оптимизации никак не аффектят ABI?

ABI не был бы ABI если бы ерунда вроде оптимизации его ломало

exception13 ★★★★★
()
Ответ на: комментарий от Stil

у меня обычный Makefile

cvv ★★★★★
() автор топика
Ответ на: комментарий от io

Валгринд такие вещи в юзерспейсе зачекает?

cvv ★★★★★
() автор топика
Ответ на: комментарий от io

Надо поаккуратней с выравниваниями в памяти. А Os как раз меняет поведение

-Os disables the following optimization flags:

          -falign-functions  -falign-jumps  -falign-loops 
          -falign-labels  -freorder-blocks  -freorder-blocks-and-partition 
          -fprefetch-loop-arrays  -ftree-vect-loop-version

У меня тоже был забавный случай. Основной код проекта компилился с -mpreferred-stack-boundary=2, а third-party либа без. Все прекрасно линковалось. Но в рантайме падало при использовании структур из либы. Тоже увидел только по разным смещениям

MadMax
()
Ответ на: комментарий от anonymous

ftp://ftp.gmplib.org/pub/gmp/gmp-5.1.1.tar.xz

Берем любой ненулевой уровень оптимизации и запускаем тесты на ARM. Про gcc тесты молчу - clang периодически просто падает с шумом и грохотом, я бы еще понял если бы что-то gcc-одиозное, так нет :-(

io ★★
()
Ответ на: комментарий от MadMax

Надо поаккуратней с выравниваниями в памяти. А Os как раз меняет поведение

в рантайме падало при использовании структур из либы

А какой из указанных флагов меняет выравнивание полей в структуре?

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Ну судя по названию флагов - они не имеют отношения к структурам. И -Os не должно ничего аффектить. Хотя пример io как бы намекает...

Свой пример я привел как личный опыт, связанный с несовпадением выравниваний.

MadMax
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.