Spec-Zone.ru › GCC 11

Далее: Опции 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

Сгенерировать последовательности загрузки и сохранения из 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-битной версии GCC HP-UX, то есть сконфигурированной с ‘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-битной версии GCC HP-UX, то есть сконфигурированной с ‘hppa*64*-*-hpux*’.

-mlong-calls

Сгенерировать код, использующий длинные последовательности вызовов. Это гарантирует, что вызов всегда сможет достичь подпрограмм, сгенерированных линкомер. По умолчанию длинные вызовы генерируются только в том случае, если расстояние от места вызова до начала функции или трансляционной единицы (в зависимости от случая) превышает заранее определённый порог, установленный используемым типом разветвления. Пределы для обычных вызовов составляют 7 600 000 и 240 000 байтов соответственно для архитектур PA 2.0 и PA 1.X. Вызовы sibcalls всегда ограничены 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-11.4.0/gcc/HPPA-Options.html

Spec-Zone.ru

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