3.17.16 Параметры 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соответственно. -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. Вызовы sibcall всегда ограничены 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 в HP-UX. Этот параметр устанавливает флаги как для препроцессора, так и для линковщика.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-4.9.4/gcc/HPPA-Options.html