Spec-Zone.ru › GCC 14

3.19.19 Параметры 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 соответственно.

-matomic-libcalls

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

И реализации sync, и libatomic libcall используют блокировку. В результате процессорные сохранения не являются атомными по отношению к другим атомным операциям. Процессорные загрузки до DImode являются атомными по отношению к другим атомным операциям, при условии, что они реализованы как одно обращение.

Архитектура PA-RISC не поддерживает атомных операций в оборудовании, кроме инструкции ldcw. Таким образом, вся поддержка атомных операций реализуется с помощью sync и атомных libcalls. Поддержка вызовов sync libcall находится в libgcc.a. Поддержка атомных вызовов libcall находится в 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 линковщике. Обратите внимание, что это делает невозможным символическое отладку. Также это вызывает ошибку в линковщиках HP-UX 8 и HP-UX 9, в результате чего они выдают ложные сообщения об ошибках при линковке некоторых программ.

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

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

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

-mlong-load-store

Генерировать последовательности загрузки и сохранения из 3 инструкций, как иногда требуется линковщиком 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
END_OF_DOCUMENT_MARKER

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

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

Spec-Zone.ru

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