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