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. Эта опция не влияет на то, какой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. Вызовы «сынков» (sibcalls) всегда ограничены 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-7.5.0/gcc/HPPA-Options.html