Весь код MIPS в Linux должен быть PIC?

В Linux на процессорах MIPS (точнее, MIPSEL32) верно ли, что все пользовательские SO должны быть независимыми от позиции (PIC)? Цитата из авторитетного источника была бы лучшей.

Как насчет Android?

Мой интерес проистекает из этого.

1 ответ

Решение

Ситуация с кодом PIC в Linux выглядит несколько интересной. В прошлом (до EGLIBC-2.9) все двоичные файлы в MIPS, где предполагалось использовать PIC (как приложения, так и разделяемые библиотеки). Однако, чтобы уменьшить размер приложений, было разработано расширение ABI, которое позволяет выполнять исполняемые файлы не PIC (но совместно используемые объекты остаются PIC, как и раньше):

В настоящее время мы не предлагаем никаких изменений в позиционно-независимых соглашениях о адресации, используемых общими объектами. Аналогично, независимые от позиции исполняемые файлы, скомпилированные с помощью '-fpie' - как требуется для рандомизации адресного пространства в "усиленных" дистрибутивах Linux - должны продолжать использовать существующие механизмы адресации и вызова psABI.

http://gcc.gnu.org/ml/gcc/2008-07/txt00000.txt

Вики-страница на linux-mips.org о том, что все двоичные файлы в MIPS должны быть PIC, выглядит несколько устаревшей, так как последние GCC и EGLIBC в Linux поддерживают исполняемые файлы без PIC: http://www.linux-mips.org/wiki/PIC_code

Другие вопросы по тегам