Spec-Zone.ru › GCC 10

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

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

Генерирует последовательности загрузки и сохранения из трёх инструкций, как это иногда требуется линкером 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. Обычно используются возможности стандартного компилятора С машины, но это нельзя сделать напрямую при кросс-компиляции. Вы должны самостоятельно организовать предоставление соответствующих функций библиотеки для кросс-компиляции.

-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 linkera. Этот параметр не влияет на то, какой ld вызывается; он лишь изменяет параметры, передаваемые этому ld. Вызываемый ld определяется параметром настройки --with-ld, путём поиска программ GCC и, наконец, пользователем PATH. Линкер, используемый GCC, можно вывести с помощью ‘which `gcc -print-prog-name=ld`’. Этот параметр доступен только в 64-разрядном GCC для HP-UX, то есть настроенном с ‘hppa*64*-*-hpux*’.

-mhp-ld

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

-mlong-calls

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

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

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

Типы длинных вызовов зависят от возможностей ассемблера и линкера, а также от типа генерируемого кода. Влияние на системы, поддерживающие длинные абсолютные вызовы, и длинные вызовы с помощью символьной разницы PIC или относительных вызовов по PC должно быть относительно небольшим. Однако косвенный вызов используется в 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 Options, Предыдущее: H8/300 Options, Вверх: Машинно-зависимые параметры [Оглавление][Индекс]

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

Spec-Zone.ru

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