Wiki

Файл конфигурации

Файл конфигурации `xm-MACHINE.h' содержит макроопределения,описывающие машину и систему, на которых производится трансляция,в отличии от определений в `MACHINE.h', которые описывают целевую машину. Большинство значений в `xm-MACHINE.h' в действительности одинаковы для всех машин, на которых работает GNU CC, поэтому все файлы конфигурации имеют большие одинаковые части. Но существуют макрокоманды, которые отличаются:


`USG'

Определите эту макрокоманду, если главная система - System V.

`VMS'

Определите эту макрокоманду, если главная система - VMS.

`FATAL_EXIT_CODE'

Выражение на C для кода состояния, который будет возвращен, при выходе транслятора после серьезных ошибок.

`SUCCESS_EXIT_CODE'

Выражение на C для кода состояния, который будет возвращен, когда транслятор выходит без серьезных ошибок.

`HOST_WORDS_BIG_ENDIAN'

Определите эту макрокоманду, если на главной машине слова в составном слове идут в обратном порядке. (GNU CC не зависит от упорядочения байтов внутри слова на главной машине.)

`HOST_FLOAT_WORDS_BIG_ENDIAN'

Определите эту макрокоманду, которая должна быть 1 если на главной машине при сохранение вещественных чисел типов `DFmode', `XFmode' или `TFmode' бит знака записывается в самый маленький адрес. В противном случае она должна быть ноль.
Если упорядочивание такое же как и упорядочивание целых чисел в составном слове (тип из нескольких слов).

`HOST_FLOAT_FORMAT'

Числовой код, отличающий вещественной формат главной машины. См.`TARGET_FLOAT_FORMAT' в для различных возможных вариантов и значения по умолчанию.

`HOST_BITS_PER_CHAR'

Выражение на C для числа битов в `char' на главной машине.

`HOST_BITS_PER_SHORT'

Выражение на C для числа битов в `short' на главной машине..

`HOST_BITS_PER_INT'

Выражение на C для числа битов в `int' на главной машине.

`HOST_BITS_PER_LONG'

Выражение на C для числа битов в `long' на главной машине.

`ONLY_INT_FIELDS'

Определите эту макрокоманду, чтобы указать, что главный транслятор поддерживает битовые поля только для 'int', но не для других целых типов, включая `enum', как то делают большинство компиляторов С.

`OBSTACK_CHUNK_SIZE'

Выражение на C для размера обычных obstack кусков. Если Вы не определяете, его по умолчанию используется разумное обычное значение.

`OBSTACK_CHUNK_ALLOC'

Функция, используемая, чтобы распределить obstack куски. Если Вы не ее, то будет использоваться `xmalloc'.

`OBSTACK_CHUNK_FREE'

Функция, используемая, чтобы освободить obstack куски. Если Вы не ее, то будет использоваться `free'.

`USE_C_ALLOCA'

Определите эту макрокоманду, чтобы указать, что транслятор работает с 'alloca', выполненной на C. Эта версия 'alloca' может быть найдена в файле 'alloca.c'; чтобы использовать ее, Вы должны также измениться переменную 'Makefile'-а - 'ALLOCA'. (Для систем, для которых мы знаем,что это необходимо, это выполнено автоматически)
Если Вы определяете эту макрокоманду, Вы должны вероятно сделать это следующим образом:

           #ifndef __GNUC__
           #define USE_C_ALLOCA
           #else
           #define alloca __builtin_alloca
           #endif


так, чтобы, когда транслятор компилировался с GNU CC, он использовал более эффективную встроенную функцию `alloca'.

`FUNCTION_CONVERSION_BUG'

Определите эту макрокоманду, чтобы указать, что главный транслятор не правильно обрабатывает преобразование функционального значения к указатель-в-функцию, когда это используется в выражении.

`HAVE_VPRINTF'

Определите ее, если библиотечная функция `vprintf' является доступной на вашей системе.

`MULTIBYTE_CHARS'

Определите эту макрокоманду, чтобы допустить поддержку для символов мультибайта во вводе GNU CC. Это требует, когда главная система поддерживала ANSI C библиотечными функциями для преобразования символов мультибайта к широким символам.

`HAVE_PUTENV'

Определите ее, если библиотечная функция `putenv' является доступной на вашей системе.

`POSIX'

Определите ее, если ваша система - POSIX.1 совместима.

`NO_SYS_SIGLIST'

Определите ее, если ваша система *не* поддерживает переменную `sys_siglist'.

`DONT_DECLARE_SYS_SIGLIST'

Определите ее, если ваша система имеет переменную `sys_siglist', и она уже объявлена в системных файлах заголовков.

`USE_PROTOTYPES'

Определите эту макрокоманду 1-ой, если Вы знаете, что главный транслятор поддерживает прототипы, даже если это не определяет __STDC__, или определите ее 0, если Вы не хотите, что бы в GNU CC использовались какие то ни было прототипы. Если `USE_PROTOTYPES' не определена,то это буде определяться автоматический с помощью проверки определено ли `__STDC__'.

`NO_MD_PROTOTYPES'

Определите ее, если Вы же, что бы было подавление прототипов,сгенерированных их файла описания машины, но использовать другие прототипы внутри GNU CC. Если 'USE_PROTOTYPES' определен 0-ем,или главный транслятор не поддерживает прототипы, эта макрокоманда не будет иметь никакого эффекта.

`MD_CALL_PROTOTYPES'

Определите ее, если Вы желаете генерировать прототипы для функции 'gen_call' или `gen_call_value', сгенерированных из файла описания машины. Если 'USE_PROTOTYPES' определен 0-ем, или главный транслятор не поддерживает прототипы, или определен 'NO_MD_PROTOTYPES', то эта макрокоманда не воспринимается. Как только все машинные описания изменяются, чтобы иметь соответствующее число параметров, эта макрокоманда будет удалена.
В некоторые системах есть соответствующая переменная, но она может иметь разные имена, типа '_sys_siglist'. На этих системах,Вы можете определять 'sys_siglist' как макрокоманде,которая расширяется в фактическое переменной.

`NO_STAB_H'

Определите ее, если ваша система не имеет инклюд файла 'stab.h'.Если 'USG' определен, то 'NO_STAB_H' определен.

`PATH_SEPARATOR'

Эта макрокоманда должна быть определена символом, который используется для разделения в путях. По умолчанию используется символ двоеточия.

`DIR_SEPARATOR'

Если Ваша система использует символ, отличный от слэша для разделения имен директорий в указании файла, то определите его в эту макрокоманду.Когда GNU CC отображает имя файла будет использоваться определенный символ. GNU CC проверит и слыш и вами определенный символ при разборе имени файла.

`OBJECT_SUFFIX'

Определите эту макрокоманду, как расширение объектных файлов на вашей машине. По умолчанию используется `.o'.

`EXECUTABLE_SUFFIX'

Определите эту макрокоманду, как расширение исполняемых файлов на вашей машине. По умолчанию используется пустая строка.

`COLLECT_EXPORT_LIST'

Если определено, `collect2' просмотрит индивидуальные объектные файлы,определенные в командной строке и создаст экспортный список для линкера.Определите эту макрокоманду для систем подобных AIX, где линкер отбрасывает объектные файлы, не вызванные из 'main' или пользовательского export-списка.
Кроме того, файлы конфигурации для системы V определяют `bcopy', `bzero'
и `bcmp' как псевдонимы. Некоторые файлы определяют 'alloca' как макрокоманду при компиляции GNU CC, чтобы воспользоваться преимуществом встроенного в GNU CC 'alloca'.