Spec-Zone.ru › GCC 15

3.20.20 Параметры HPPA

Для семейства компьютеров HPPA определены следующие параметры «-m»:

-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 соответственно.

-matomic-libcalls

Генерировать вызовы библиотечных функций для атомарных загрузок и сохранений, если вызовы библиотечных функций sync отключены. Этот параметр включён по умолчанию. Он влияет только на генерацию вызовов библиотечных функций для атомарных операций в серверной части HPPA.

В обеих реализациях вызовов библиотечных функций — sync и libatomic — используется блокировка. В результате сохранения процессора не являются атомарными относительно других атомарных операций. Загрузки процессора размером до DImode являются атомарными относительно других атомарных операций, если они реализованы как единичный доступ.

Архитектура PA-RISC не поддерживает никаких атомарных операций аппаратно, кроме инструкции ldcw. Поэтому вся поддержка атомарных операций реализована с помощью вызовов библиотечных функций sync и atomic. Поддержка вызовов sync находится в libgcc.a. Поддержка вызовов atomic находится в libatomic.

Этот параметр генерирует вызовы __atomic_exchange для атомарных сохранений. Кроме того, он обеспечивает особую обработку атомарных обращений DImode в 32-разрядных целях.

-mbig-switch

Ничего не делает. Сохранён для обратной совместимости.

-mcaller-copies

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

-mcoherent-ldcw

Использовать согласованную подсказку управления кэшем ldcw/ldcd.

-mdisable-fpregs

Отключить регистры с плавающей точкой. Эквивалентно -msoft-float.

-mdisable-indexing

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

-mfast-indirect-calls

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

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

-mfixed-range=register-range

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

-mgas

Разрешить использование директив ассемблера, поддерживаемых только GAS.

-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*».

-mlinker-opt

Включить проход оптимизации в компоновщике HP-UX. Обратите внимание: это делает символьную отладку невозможной.

-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 с разностью символов или относительно счётчика команд, должно быть сравнительно небольшим. Однако в 32-разрядных системах ELF для кода pic используется косвенный вызов, который довольно длинный.

-mlong-load-store

Генерировать последовательности загрузки и сохранения из трёх инструкций, которые иногда требуются компоновщику HP-UX 10. Эквивалентно параметру «+k» компиляторов HP.

-mjump-in-delay

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

-mno-space-regs

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

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

-mordered

Предполагать, что обращения к памяти упорядочены и барьеры не нужны.

-mportable-runtime

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

-mschedule=cpu-type

Планировать код с учётом ограничений типа машины cpu-type. Для cpu-type можно выбрать «700», «7100», «7100LC», «7200», «7300» и «8000». Чтобы определить подходящий для вашей машины параметр планирования, обратитесь к файлу /usr/lib/sched.models в системе HP-UX. По умолчанию используется планирование «8000».

-msio

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

-msoft-float

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

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

-msoft-mult

Использовать программное целочисленное умножение.

При этом отключается использование инструкции xmpyu.

-munix=unix-std

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

-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, если в HP-UX 10 и более поздних версиях указан параметр -static.

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

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

Spec-Zone.ru

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