3.18.17 Параметры 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 линковщиком. Этот параметр не влияет на вызываемый линковщик; он только изменяет параметры, передаваемые этому линковщику.Вызываемый линковщик определяется параметром конфигурации --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 линковщиком. Этот параметр не влияет на вызываемый линковщик; он только изменяет параметры, передаваемые этому линковщику.Вызываемый линковщик определяется параметром конфигурации --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.
Обычно не рекомендуется использовать этот параметр, так как он снижает производительность. Однако он может быть полезен в крупных приложениях, особенно при частичной линковке для сборки приложения.
Тип длинных вызовов зависит от возможностей ассемблера и линковщика, а также от типа генерируемого кода. Влияние на системы, которые поддерживают длинные абсолютные вызовы и длинные вызовы с разницей символов 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 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-6.5.0/gcc/HPPA-Options.html