Spec-Zone.ru › GCC 4

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

Spec-Zone.ru

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