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-битной версии 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. Эта опция устанавливает флаги как для препроцессора, так и для линкера.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-11.4.0/gcc/HPPA-Options.html