Spec-Zone.ru › GCC 12

3.19.20 Параметры HPPA

Эти параметры ‘-m’ определены для семейства компьютеров HPPA:

-march=architecture-type

Генерировать код для указанной архитектуры. Возможные значения для architecture-type — ‘1.0’ для процессоров PA 1.0, ‘1.1’ для PA 1.1 и ‘2.0’ для процессоров PA 2.0. Обратитесь к файлу /usr/lib/sched.models на системе HP-UX, чтобы определить правильный параметр архитектуры для вашего компьютера. Код, скомпилированный для архитектур с меньшими номерами, работает на архитектурах с большими номерами, но не наоборот.

-mpa-risc-1-0
-mpa-risc-1-1
-mpa-risc-2-0

Синонимы для -march=1.0, -march=1.1 и -march=2.0 соответственно.

-mcaller-copies

Вызывающая функция копирует аргументы функции, переданные по скрытой ссылке. Этот параметр следует использовать с осторожностью, так как он несовместим с 32-битным исполняемым кодом по умолчанию. Однако только агрегаты размером более восьми байт передаются по скрытой ссылке, и этот параметр обеспечивает лучшую совместимость с OpenMP.

-mjump-in-delay

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

-mdisable-fpregs

Запретить использование регистров с плавающей точкой любым способом. Это необходимо для компиляции ядер, которые выполняют леничную переключение контекста регистров с плавающей точкой. Если вы используете этот параметр и пытаетесь выполнить операции с плавающей точкой, компилятор прервётся.

-mdisable-indexing

Запретить компилятору использовать режимы адресации с индексированием. Это позволяет избежать некоторых довольно необычных проблем при компиляции кода, сгенерированного MIG, под MACH.

-mno-space-regs

Генерировать код, предполагающий, что целевая система не имеет регистров пространства. Это позволяет GCC генерировать более быстрые косвенные вызовы и использовать режимы адресации с индексированием без масштабирования.

Такой код подходит для систем и ядер PA уровня 0.

-mfast-indirect-calls

Генерировать код, предполагающий, что вызовы никогда не пересекают границы пространства. Это позволяет GCC генерировать код, выполняющий более быстрые косвенные вызовы.

Этот параметр не работает в присутствии общих библиотек или вложенных функций.

-mfixed-range=register-range

Генерировать код, рассматривая заданный диапазон регистров как фиксированные регистры. Фиксированный регистр — это регистр, который распределитель регистров не может использовать. Это полезно при компиляции кода ядра. Диапазон регистров задаётся двумя регистрами, разделёнными дефисом. Можно указать несколько диапазонов регистров, разделённых запятыми.

-mlong-load-store

Генерировать последовательности загрузки и сохранения из 3 инструкций, как иногда требуется HP-UX 10 линковщиком. Это эквивалентно параметру ‘+k’ для компиляторов HP.

-mportable-runtime

Использовать портативные соглашения о вызовах, предложенные HP для систем ELF.

-mgas

Включить использование директив ассемблера, которые понимает только GAS.

-mschedule=cpu-type

Планировать код в соответствии с ограничениями для типа машины cpu-type. Возможные значения для cpu-type — ‘700’, ‘7100’, ‘7100LC’, ‘7200’, ‘7300’ и ‘8000’. Обратитесь к файлу /usr/lib/sched.models на системе HP-UX, чтобы определить правильный параметр планирования для вашего компьютера. Планирование по умолчанию — ‘8000’.

-mlinker-opt

Включить этап оптимизации в линковщике HP-UX. Обратите внимание, что это делает символическую отладку невозможной. Также это вызывает ошибку в линковщиках HP-UX 8 и HP-UX 9, при которой они выдают ложные сообщения об ошибках при линковке некоторых программ.

-msoft-float

Генерировать вывод, содержащий вызовы библиотек для плавающей точки. Предупреждение: необходимые библиотеки недоступны для всех целевых систем HPPA. Обычно используются средства обычного компилятора C системы, но это нельзя сделать напрямую при кросс-компиляции. Вы должны самостоятельно организовать предоставление подходящих функций библиотеки для кросс-компиляции.

-msoft-float изменяет соглашение о вызовах в выходном файле; поэтому он полезен только в том случае, если вы компилируете все части программы с этим параметром. В частности, вам нужно скомпилировать libgcc.a, библиотеку, поставляемую с GCC, с -msoft-float, чтобы это работало.

-msio

Генерировать предопределения, _SIO, для ввода-вывода сервера. Значение по умолчанию — -mwsio. Это генерирует предопределения, __hp9000s700, __hp9000s700__ и _WSIO, для ввода-вывода рабочей станции. Эти параметры доступны под HP-UX и HI-UX.

-mgnu-ld

Использовать параметры, специфичные для GNU ld. При построении общей библиотеки передаёт -shared линковщику ld. Это значение по умолчанию, когда GCC настроен, явно или неявно, с GNU линковщиком. Этот параметр не влияет на то, какой ld вызывается; он только изменяет параметры, передаваемые этому ld. Вызываемый ld определяется параметром настройки --with-ld, путём поиска программ GCC и, наконец, пользователем PATH. Линковщик, используемый GCC, можно вывести с помощью ‘which `gcc -print-prog-name=ld`’. Этот параметр доступен только в 64-разрядном HP-UX GCC, то есть настроенном с ‘hppa*64*-*-hpux*’.

-mhp-ld

Использовать параметры, специфичные для HP ld. При построении общей библиотеки передаёт -b линковщику ld и передаёт +Accept TypeMismatch линковщику ld при всех ссылках. Это значение по умолчанию, когда GCC настроен, явно или неявно, с линковщиком HP. Этот параметр не влияет на то, какой ld вызывается; он только изменяет параметры, передаваемые этому ld. Вызываемый ld определяется параметром настройки --with-ld, путём поиска программ GCC и, наконец, пользователем PATH. Линковщик, используемый GCC, можно вывести с помощью ‘which `gcc -print-prog-name=ld`’. Этот параметр доступен только в 64-разрядном HP-UX GCC, то есть настроенном с ‘hppa*64*-*-hpux*’.

-mlong-calls

Генерировать код, использующий длинные последовательности вызовов. Это гарантирует, что вызов всегда сможет достичь созданных линковщиком псевдонимов. По умолчанию длинные вызовы генерируются только тогда, когда расстояние от места вызова до начала функции или трансляционной единицы (в зависимости от случая) превышает предопределённый лимит, установленный используемым типом ветвления. Пределы для обычных вызовов составляют 7 600 000 и 240 000 байт соответственно для архитектур PA 2.0 и PA 1.X. Вызовы sibcall всегда ограничены 240 000 байтами.

Расстояния измеряются от начала функций при использовании параметра -ffunction-sections или при совместном использовании параметров -mgas и -mno-portable-runtime под HP-UX с линковщиком SOM.

Обычно нежелательно использовать этот параметр, так как он ухудшает производительность. Однако он может быть полезен в крупных приложениях, особенно при частичной линковке для сборки приложения.

Типы длинных вызовов зависят от возможностей ассемблера и линковщика, а также от типа генерируемого кода. Влияние на системы, поддерживающие длинные абсолютные вызовы и длинные вызовы с относительными смещениями символов или адресов, должно быть относительно небольшим. Однако косвенный вызов используется в 32-битных системах ELF в коде pic и является довольно длинным.

-munix=unix-std

Генерировать предопределения компилятора и выбирать стартовый файл для указанного UNIX стандарта. Возможные значения для unix-std — ‘93’, ‘95’ и ‘98’. ‘93’ поддерживается во всех версиях HP-UX. ‘95’ доступен в HP-UX 10.10 и более поздних версиях. ‘98’ доступен в HP-UX 11.11 и более поздних версиях. Значения по умолчанию — ‘93’ для HP-UX 10.00, ‘95’ для HP-UX 10.10 — 11.00 и ‘98’ для HP-UX 11.11 и более поздних версий.

-munix=93 предоставляет те же предопределения, что и GCC 3.3 и 3.4. -munix=95 предоставляет дополнительные предопределения для XOPEN_UNIX и _XOPEN_SOURCE_EXTENDED, и стартовый файл unix95.o. -munix=98 предоставляет дополнительные предопределения для _XOPEN_UNIX, _XOPEN_SOURCE_EXTENDED, _INCLUDE__STDC_A1_SOURCE и _INCLUDE_XOPEN_SOURCE_500, и стартовый файл unix98.o.

Важно отметить, что этот параметр изменяет интерфейсы различных функций библиотеки. Он также влияет на рабочее поведение библиотеки C. Поэтому необходимо крайнее внимание при использовании этого параметра.

Код библиотеки, предназначенный для работы с несколькими стандартами UNIX, должен проверять, устанавливать и восстанавливать переменную __xpg4_extended_mask в соответствии с ситуацией. Большинство программ GNU не предоставляют такой возможности.

-nolibdld

Запретить генерацию параметров линковки для поиска libdld.sl, когда параметр -static указан в HP-UX 10 и более поздних версиях.

-static

Реализация setlocale в libc HP-UX зависит от libdld.sl. Нет архивной версии libdld.sl. Таким образом, при использовании параметра -static необходимы специальные параметры линковки для разрешения этой зависимости.

В HP-UX 10 и более поздних версиях драйвер GCC добавляет необходимые параметры для линковки с libdld.sl, когда указан параметр -static. Это приводит к тому, что результирующий двоичный файл становится динамическим. В 64-битном порте линковщики по умолчанию генерируют динамические двоичные файлы в любом случае. Параметр -nolibdld можно использовать для предотвращения добавления этих параметров линковки драйвером GCC.

-threads

Добавить поддержку многопоточности с библиотекой dce thread в HP-UX. Этот параметр устанавливает флаги для препроцессора и линковщика.

Далее: Параметры IA-64, Предыдущий: Параметры H8/300, Вверх: Параметры подмоделей [Содержание][Индекс]

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-12.2.0/gcc/HPPA-Options.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API