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