Есть либа. В либе никакие функции вообще не экспортируются (ну или допустим 1-2, не суть). Остальные - чисто внутренние. Собирается либа с -fPIC естественно, под x86_32 т.е. -m32. Поэтому в каждой функции имеется в прологе вызов __i686.get_pc_thunk.bx.
Вопрос - как этого избежать, зачем там это нужно? Ну т.е. понятно -fPIC GOT и всё такое, но функция же внутренняя. Либа вообще собирается с -fvisibility=hidden. Я уже и -O3 и -flto и -fwhole-program и gcc 4.7 и --dynamic-list и чего только не пробовал. С -fwhole-program на тестовом примере линкер (?) вообще инлайнит «внутреннюю» функцию прямо в исполняемый main - но и там с этим чортовым thunk-ом. Кстати в тестовом примере и данных-то никаких нет, как и обращения к ним.
А чёрт я тупой, строка для printf-а это ж тоже данные. Получается, никак от GOT и этих вызовов не избавиться? Тогда вопрос - если собрать либу без fPIC, какие будут подводные камни - значительно дольше загрузка (не имеет значения), больше жрать будет памяти...
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Динамические библиотеки, конспект (2018)
- Форум Debug shared lib (2007)
- Форум Static vs Shared libs (2015)
- Форум Shared and static lib (2001)
- Форум PIC (2013)
- Форум эмулятор PIC (2013)
- Форум [pic] Мышевозильня (2010)
- Форум PIC Microcontrollers (2009)
- Форум Funny PICS (2004)
- Форум ARM shared lib на архитектуре i686 (2012)