3.19.39 Параметры PRU
Эти параметры командной строки определены для целевой системы PRU:
-
-minrt -
Связь с минимальной средой выполнения, без поддержки статических инициализаторов и конструкторов. Использование этого параметра может значительно уменьшить размер конечного двоичного файла ELF. Следует учитывать, что компилятор всё равно может генерировать код со статическими инициализаторами и конструкторами. Программист должен гарантировать, что исходная программа не будет использовать эти функции.
-
-mmcu=mcu -
Указывает вариант микроконтроллера PRU, который необходимо использовать. Обратитесь к Newlib за точным списком поддерживаемых микроконтроллеров.
-
-mno-relax -
Заставляет GCC передавать параметр командной строки --no-relax компоновщику вместо параметра --relax.
-
-mloop -
Разрешить (или запретить) GCC использовать инструкцию LOOP.
-
-mabi=variant -
Указывает вариант ABI для вывода кода. -mabi=ti выбирает неизменённый ABI TI, а -mabi=gnu выбирает вариант GNU, который более естественным образом справляется с определёнными предположениями GCC. Вот отличия:
- ‘Размер указателя на функцию’
-
ABI TI определяет, что указатели на функции (код) имеют размер 16 бит, тогда как GNU поддерживает только 32-битные указатели на данные и код.
- ‘Необязательный указатель на значение возврата’
-
Значения возврата функций размером больше 64 бит передаются с использованием скрытого указателя в качестве первого аргумента функции. Однако ABI TI требует, чтобы этот указатель мог быть NULL в случае, если вызывающая функция не использует возвращаемое значение. GNU всегда передаёт и ожидает действительный указатель на возвращаемое значение.
Текущая реализация -mabi=ti просто генерирует ошибку компиляции при обнаружении любого из вышеперечисленных конструкций кода. Вследствие этого стандартная библиотека C не может быть скомпилирована и она пропускается при компоновке с -mabi=ti.
Релаксация — это функция GNU и по соображениям безопасности отключена при использовании -mabi=ti. TI-инструментарий не генерирует перемещения для инструкций QBBx, поэтому компоновщик GNU не может их корректировать при сокращении смежных псевдоинструкций LDI32.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-13.3.0/gcc/PRU-Options.html