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-разрядном HP-UX GCC, то есть настроенном с ‘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-разрядном 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.
Обычно нежелательно использовать этот параметр, так как он ухудшает производительность. Однако он может быть полезен в крупных приложениях, особенно при частичной линковке для сборки приложения.
Типы длинных вызовов зависят от возможностей ассемблера и линковщика, а также от типа генерируемого кода. Влияние на системы, поддерживающие длинные абсолютные вызовы и длинные вызовы с относительными смещениями символов или адресов, должно быть относительно небольшим. Однако косвенный вызов используется в 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-12.2.0/gcc/HPPA-Options.html