Spec-Zone.ru › GCC 6

3.18.17 Параметры 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 линковщиком. Этот параметр не влияет на вызываемый линковщик; он только изменяет параметры, передаваемые этому линковщику.

Вызываемый линковщик определяется параметром конфигурации --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 линковщиком. Этот параметр не влияет на вызываемый линковщик; он только изменяет параметры, передаваемые этому линковщику.

Вызываемый линковщик определяется параметром конфигурации --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.

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

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

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

Spec-Zone.ru

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