Общее использование командной строки компилятора (в командной строке опции могут чередоваться с именами файлов):
ccblkfn.exe [опции] [файлы]
Примечание: все непонятные термины и сокращения см. в разделе Словарик в конце статьи. Также см. раздел Словарик из статьи [1].
[Общее описание опций]
-@ < file > Размещает содержимое файла file (файл содержит управляющие опции) в текущую позицию командной строки.
-A < name >[(< tokens >)] Утверждает name как предикат (утвердитель, сказуемое) с указанными токенами tokens, как если бы это было сделано директивой #assert препроцессора.
-add-debug-libpaths Автоматически добавляет подкаталог Debug в пути поиска для каждого пути поиска стандартных библиотек, переданного линкеру.
-alttok Позволяет появление в модулях исходного кода альтернативных ключевых слов операторов и последовательностей диграфа.
-always-inline Всегда делает встраивание функций (т. е. код функции вставляется каждый раз в код без вызова функции инструкцией CALL), которые помечены ключевым словом inline.
-anach Показывает, что разрешены анахронизмы, когда компилируемый исходный код написан на ANSI C++.
-annotate Разрешает аннотации в файлах ассемблера (задано по умолчанию).
-annotate-loop-instr Предоставляет дополнительную информацию в виде аннотаций для пролога, тела и эпилога циклов.
-auto-attrs Создает некоторое количество атрибутов файла на основе содержимого исходного файла.
-bss Помещает инициализированные нулем глобальные данные в секцию BSS (скорее всего опечатка, имеется в виду секция BSZ).
-build-lib Инструктирует драйвер собрать архивную библиотеку (*.dlb) из результирующих объектов в командной строке вместо того, чтобы запустить линкер для создания выполняемого файла (*.dxe).
-C Предохраняет комментарии в любом предварительно обработанном выводе.
-c Подавляет фазу редактирования линковки при компиляции, и не удаляет любые объектные файлы, созданные при компиляции.
-c++ Показывает, что компилируемые файлы исходного кода написаны на C++.
-c89 Показывает, что исходные файлы написаны в соответствии со стандартом ISO/IEC 9899:1990 с аналогичными расширениями языка (поведение по умолчанию).
-c99 Показывает, что исходные файлы написаны в соответствии со стандартом ISO/IEC 9899:1999 с аналогичными расширениями языка.
-check-init-order Если Ваша программа использует глобальные объекты с конструкторами, и имеет несколько модулей исходного кода, это не гарантирует, что конструкторы объектов будут запущены перед использованием объектов. Опция -check-init-order добавит код диагностики для проверки - произошла ли инициализация до момента использования объекта. Не рекомендуется использовать в коде, предназначенном для конечного продукта.
-const-read-write Указатель на const может получить доступ к данным не только для чтения (как определено в ANSI/ISO C).
-const-strings Показывает, что строковые литералы должны быть квалифицированы const.
-cplbs Компилятор должен предположить, что доступ к памяти и коду должен быть проверен системой CPLB (Cache Protection Lookaside Buffers, не могу точно перевести этот термин, подробнее про CPLB см. [1]). Это позволяет компилятору более агрессивно обрабатывать потенциальный доступ к не допустимым адресам памяти, или инструкции косвенной адресации по указателю (indirect pointer instructions).
-D < name >[=< def >] Определяет макрос препроцессора name, у которого значение def (если параметр def опущен, то name определено в значение 1).
-dcplbs Компилятор должен предположить, что доступ к памяти данных должен быть проверен системой DCPLB (Data Cache Protection Lookaside Buffers). Это позволяет компилятору более агрессивно обрабатывать потенциальный доступ к не допустимым адресам памяти.
-decls-strong Не инициализированные глобальные переменные рассматриваются как строго инициализированные нулем, например глобальная переменная "int x;" будет эквивалентна глобальной переменной "int x = 0;".
-decls-weak Не инициализированные глобальные переменные рассматриваются как слабые определения, например определение глобальной переменная "int x;" эквивалентна "extern int x;".
-double-size-any Определяет, что результирующие объектные файлы должны быть помечены так, что это разрешит их слинковать объектами, построенными с размером либо 32, либо 64 бита.
-double-size-{32|64} Принудительно задает тип double в 32-битном формате IEEE одинарной точности (-double-size-32) или 64-битном формате IEEE двойной точности (-double-size-64).
-dry Отображает основные действия драйвера, но не выполняет их.
-dryrun Отображает основные действия драйвера, но не выполняет их.
-E Выполняет только обработку препроцессора.
-ED То же самое, что и -EE, но отправляет вывод в файл. Действие этой опции может перезадать опция -MM.
-EE То же самое, что и -E, но не будет остановлена компиляция после выполнения препроцессинга.
-eh Разрешает обработку исключений C++ (exception handling).
-enum-is-int По умолчанию перечисления (enum) могут иметь тип больший, чем int. Эта опция гарантирует, что тип enum будет типом int.
-expand-symbolic-links Разрешает поддержку в командной строке и в директивах подключения (include) путей стиля Cygwin.
-expand-windows-shortcuts Разрешает поддержку ярлыков (шорткатов) Windows в командной строке и в директивах подключения (include).
-expert-linker Предоставляет линию связи, используемую первоначально Expert Linker.
-extern-inline Разрешает поддержку встраиваемых (inline) с внешними линковками в C++.
-extra-keywords Разрешает распознавание ключевых слов расширения Analog C.
-extra-loop-loads Циклам, которые проходят по памяти, разрешено читать за разрешенный диапазон без вредных последствий. Может ускорить обработку циклов.
-fast-fp Позволяет использовать более быстрые, но менее точные подпрограммы работы с плавающей точкой (не соответствуют стандарту IEEE).
-file-attr < name >[=< attr >] Задает для атрибута файла name определение attr (если attr пропущен, то attr определяется в 1).
-fixed-point-io Инструктирует компилятор использовать фичу оптимизированных урезанных определений функций stdio.h для поддержки типов с плавающей точкой. Приводит к определению макроса _ADI_FX_LIBIO и для компилятора, и для линкера.
-flags-< asm|compiler|ipa|lib|link|prelink > < arg1 >[,arg2...] Передает опции каждому из инструментов компиляции - ассемблеру, компилятору, IPA solver, сборщику библиотеки, линкеру и prelinker соответственно.
-force-circbuf Обрабатывает ссылки на массивы в форме array[i%n] как операции с кольцевым буфером.
-force-link Всегда создает новое окно стека (stack frame) для leaf-функций (по умолчанию для -g, осуществленного для опций -p).
-fp-associative Обрабатывает умножение с плавающей точкой и дополнение как ассоциативную операцию.
-friend-injection Разрешает нестандартное разрешение имен (non-standard name lookup) для имен классов или функций, декларированных как дружественные (friends).
-full-dependency-inclusion Инструктирует компилятор, что при генерации зависимостей нужно подключать неявно включаемые (include) файлы .cpp больше одного раза. Использование этой опции может увеличить время генерации зависимостей.
-full-io Инструктирует компилятор использовать полнофункциональные определения ANSI-совместимых функций stdio.h. Приводит к определению макроса _DINKUM_IO и для компилятора, и для линкера.
-full-version Отображает номер версии драйвера и любого процесса, который вовлекается драйвером.
-fx-contract Устанавливает состояние по умолчанию прагмы FX_CONTRACT в ON.
-fx-rounding-mode-biased Устанавливает состояние по умолчанию прагмы FX_ROUNDING_MODE в BIASED.
-fx-rounding-mode-truncation Устанавливает состояние по умолчанию прагмы FX_ROUNDING_MODE в TRUNCATION.
-fx-rounding-mode-unbiased Устанавливает состояние по умолчанию прагмы FX_ROUNDING_MODE в UNBIASED.
-g Приводит к тому, что компилятор будет генерировать дополнительную информацию в выходном коде, требуемую для использования отладчиками.
-glite Побуждает компилятор удалить все ненужную отладочную информацию, что уменьшит размер исполняемого кода и библиотек, в сравнении с использованием опции -g.
-guard-vol-loads Защищает volatile-загрузки от прерывания и перезапуска, путем запрета прерываний во время загрузок.
-H Выполняет только препроцессинг, но выводится только список подключаемых (#include) имен файлов.
-HH То же самое, что и -H, но после препроцессинга компиляция не останавливается.
-h[elp] Отображает быструю общую подсказку по опциям.
-i Показывает, что при использовании опции -H или -M будут перечисляться только include-файлы, имена которых указаны в двойных кавычках.
-I < dir >[< ;|, >dir...] Добавляет dir к списку директорий, где осуществляется поиск подключаемых файлов. Несколько директорий опрашиваются в порядке, котором директории указаны. Имена директорий могут отделяться друг от друга запятыми или символом точки с запятой.
-I- Устанавливает точку в списке каталогов поиска подключаемых файлов, откуда должен начинаться поиск include-файлов, у которых имена заключены в угловые скобки.
-icplbs Компилятор должен предположить, что код программы использует ICPLB (Instruction Cache Protection Lookaside Buffers, защищенные буферы кэша инструкций). Это позволяет компилятору агрессивнее обрабатывать потенциально ошибочные инструкции с косвенными указателями (относится к использованию аномалии кристалла silicon anomaly 05-00-0426).
-ieee-fp Используются более медленные подпрограммы для операций с плавающей точкой, которые полностью удовлетворяют стандарту IEEE floating point.
-ignore-std Компилятор игнорирует стандартное пространство имен (namespace std) в всех заголовочных файлах стандартных библиотек.
-implicit-inclusion Разрешает неявное подключение исходных файлов как метод нахождения определений инстанцированных элементов шаблона (только для C++. Подробнее про шаблоны см. [3]).
-implicit-pointers Побуждает компилятор разрешить использование не совместимых указателей в выдачей предупреждений.
-include < file > Инструктирует компилятор подключить файл file перед каждым модулем (именем файла) исходного кода, который появляется в командной строке.
-instantlocal Инстанцирует все элементы шаблона, используемые в этой компиляции. Эта опция гарантирует, что все шаблоны будут учтены внутренней линковкой.
-ipa Задает внутрипроцедурный анализ, который должен быть выполнен между элементами трансляции (translation units). Использование -ipa неявно разрешает действие -O.
-jcs2l Передает линкеру опцию -jcs2l, что разрешает преобразование коротких переходов/вызовов (jumps/call) в длинные. Будет использоваться регистр P1 для косвенных jump/calls, когда недостаточно длинных jump/call. Разрешено по умолчанию.
-L < dir >[< ;|, >dir...] Добавляет dir к списку директорий, где осуществляется поиск библиотек. Несколько директорий опрашиваются в порядке, котором директории указаны. Имена директорий могут отделяться друг от друга запятыми или символом точки с запятой.
-l < lib > Подключает библиотеку объектов lib< lib >.dlb к командной строке, и её поиск будет осуществляться в путях поиска библиотек.
-list-workarounds Отображает список обхода проблем (workarounds), поддерживаемых компилятором.
-M Выполняет только препроцессинг, на выходе появится только файл зависимостей, используемый с make.
-map < file > Инструктирует линкер генерировать указанный файл, содержащий карту памяти (memory map) для всех символов, используемых в линковке.
-MD То же самое, что и -MM, но отправляет все файловые зависимости в файл.
-mem Инструктирует драйвер запустить после линковки инициализатор памяти.
-misra Приводит компилятор к генерации сообщений об ошибке для любых конструкций в исходном коде, которые не удовлетворяют стандарту ANSI C и рекомендациям MISRA:2004. Некоторые правила накладываются принудительно, это те правила, действие которых по умолчанию ослаблено, как это записано в руководстве компилятора. Используйте опцию -misra-strict, если Вы хотите жестко применять эти правила.
-misra-linkdir Для правил MISRA требуется на этапе линковки проверять файлы .misra, генерируемые в текущей рабочей директории. Эта опция помещает файлы .misra в указанном месте.
-misra-no-cross-module Приводит компилятор к генерации сообщений об ошибке для любых конструкций в исходном коде, которые не удовлетворяют стандарту ANSI C и рекомендациям MISRA:2004. Не проверяются правила, которые нужны для проверок во время линковки.
-misra-no-runtime Приводит компилятор к генерации сообщений об ошибке для любых конструкций в исходном коде, которые не удовлетворяют стандарту ANSI C и рекомендациям MISRA:2004. Не выполняются проверки для правил, предназначенных для времени выполнения кода.
-misra-strict Приводит компилятор к генерации сообщений об ошибке для любых конструкций в исходном коде, которые не удовлетворяют стандарту ANSI C и рекомендациям MISRA:2004.
-misra-suppress-advisory Подавление сообщений любых рекомендующих правил MISRA.
-misra-testing В результате действия этой опции компилятор не будет генерировать ошибки для любых функций библиотеки, включая выделение памяти из кучи и ввод/вывод, иначе подразумевается опция -misra-strict. Эти библиотечные функции нарушают правило 20 из рекомендаций MISRA:2004.
-MM То же самое, что и -M, но не делает остановку компиляции после препроцессинга.
-Mo < output_file > Задает имя выходного файла output_file для создания зависимостей (dependency), отличающегося от stdout. Эта опция должна использоваться совместно с опциями -ED или -MD.
-Mt < новое_имя_цели > Указывает альтернативное имя файла для создания зависимостей цели (dependency target), отличающегося от автоматически генерируемого имени. Эта опция должна быть использована вместе с опциями -M или -MM.
-multicore Задает, что линкуемый с библиотеками код пользователя реентрантный (re-entrant), который может быть размещен в общих секциях памяти многоядерной цели (multi-core target). Эта опция не делает какие-либо проверки, что код пользователя реентрантный.
-multiline Разрешает поддержку строк GNU, состоящих из нескольких линий.
-never-inline Делает игнорирование ключевого слова inline для функций.
-no-alttok Не позволяет появление в исходном коде альтернативных ключевых слов операторов и последовательностей диграфа.
-no-anach Не позволяет анахронизмы в исходном коде ANSI C++.
-no-annotate-loop-instr Запрещает выдавать дополнительную аннотационную информацию для циклов (поведение по умолчанию).
-no-assume-vols-are-mmrs Инструктирует компилятор не подразумевать, что volatile-загрузки и сохранения происходят в адреса MMR, и таким образом являются кандидатами на применение обхода проблем кремния (silicon errata workarounds) для MMR.
-no-auto-attrs Запрещает автоматическое создание атрибутов файла.
-no-bss Помещает глобальные, инициализируемые нулем данные в обычные секции для данных.
-no-builtin Инструктирует компилятор не использовать какие-либо встроенные функции, за исключением имен, начинающихся на двойное подчеркивание.
-no-const-strings Показывает, что строковые литералы не должны квалифицироваться как const.
-no-defs Предотвращает драйвер от передачи по умолчанию компилятору или линкеру любых assert, макросов препроцессора, каталогов include, каталогов поиска библиотек или модулей, и также запрещает расширения ключевых слов языка C.
-no-demangle Предотвращает драйвер от фильтрации каких-либо ошибок от линкера через C++ name demangler.
-no-eh Запрещает обработку исключений C++ (exception handling).
-no-expand-symbolic-links Запрещает в командной строке и директивах include поддержку путей стиля Cygwin.
-no-expand-windows-shortcuts Разрешает (может запрещает, здесь опечатка?..) в командной строке и директивах include поддержку ярлыков (Windows Shortcuts).
-no-extern-inline Запрещает в C++ поддержку функций inline с внешними линковками.
-no-extra-keywords Запрещает распознавание ключевых слов расширения Analog C.
-no-force-link Не создает новое окно стека для leaf-функций, если оно может быть опущено. Отменяет умолчание для -g.
-no-fp-associative Не обрабатывает операции умножение с плавающей точкой и сложение как связанные.
-no-friend-injection Разрешает стандартное разрешение имен C++ (standard name lookup) для классов или имен функций, декларированных как friends.
-no-full-io Инструктирует компилятор использовать оптимизированные, урезанные определения функций stdio.h. Приводит к определению макроса _ADI_LIBIO и для компилятора, и для линкера.
-no-fx-contract Устанавливает в OFF состояние по умолчанию прагмы FX_CONTRACT.
-no-implicit-inclusion Запрещает неявное подключение исходных файлов как метод нахождения определений инстанцированных элементов шаблона (относится только к C++).
-no-int-to-fract При насыщении не создает операции с плавающей точкой вместо целочисленных.
-no-jcs2l Подавляет действие опции линкера -jcs2l расширения jump/call.
-no-mem Предотвращает драйвер от запуска инициализатора памяти после линковки.
-no-multiline Запрещает поддержку строк GNU с несколькими линиями.
-no-progress-rep-timeout Компилятор не будет выдавать диагностическое сообщение о том, что время компиляции превышает основной лимит.
-no-rtti Запрещает использование информации о типах во время выполнения (касается только C++).
-no-sat-associative Не обрабатывает насыщаемое сложение как ассоциативное.
-no-saturation Не создает операции насыщения вместо операций без насыщения.
-no-std-ass Приводит к игнорированию предопределенных assert, и предопределенных, зависящих от системы, макросов препроцессора.
-no-std-def Предотвращает драйвер от передачи компилятору любых предопределенных макросов препроцессора.
-no-std-inc Предотвращает драйвер от передачи компилятору любых директорий include по умолчанию.
-no-std-lib Предотвращает драйвер от передачи линкеру любых библиотек или директорий поиска библиотек по умолчанию.
-no-std-templates Разрешает традиционные парсинг шаблонов и обработку имен (name lookup).
-no-threads Указывает, что весь компилируемый код не должен быть потокобезопасным (thread-safe).
-no-utility-rom Не делает линковку Tools Utility ROM (только ADSP-BF592-A). Эта опция передает линкеру макрос NO_UTILITY_ROM и включает поведение по умолчанию, когда компиляция производится для ревизий кремния none, any, 0.0 и 0.1.
-no-workaround < workaround >[,< workaround >] Запрет генераций обхода проблем (workaround) для указанного hardware errata. Допустимые workaround перечислены ниже.
-no-zero-loop-counters Запрещает обнуление счетчиков цикла на выходе функций.
-o < file > Создает выходной файл с указанным именем file вместо имени, генерируемого по умолчанию.
-Oa Включает auto-inlining, которое может управляться опцией -Ov.
-Ofp Смещение указателя фрейма (Frame Pointer, регистр FP) от начала фрейма, если разрешены более короткие инструкции загрузки/сохранения (load/store).
-Og Генерирует код с отладочной информацией, который оптимизирован насколько возможно для сохранения полного функционала режима отладки (-g).
-Os Генерирует код, который оптимизирован на минимальный размер кода, который не будет кодом, дающим максимальное быстродействие.
-Ov < num > Оптимизация, которая позволяет управлять соотношением скорости и быстродействием. Параметр num должен быть целым числом между 0 (оптимизация, полностью ориентированная на минимальный расход памяти) и 100 (оптимизация, полностью ориентированная на максимальное быстродействие кода).
-overlay Задает, какие функции могут быть в оверлее и направляет компилятор не отслеживать, какие временные регистры (scratch registers) могут быть общими (clobbered-регистры) между вызовами функций.
-overlay-clobbers < clob1 >[,clob2...] Задает clobbered-регистры, которые используются менеджером оверлея.
-O[0|1] Включает оптимизации компилятора (-O или -O1), при этом -O0 выключает все оптимизации.
-P Делает только препроцессинг, но не подключает информацию управления строками.
-p Генерирует дополнительную информацию в конечном выполняемом коде для использования в утилите профайлинга profblkfn. Записывает данные профайлинга в стандартный поток вывода и файл ./mon.out.
-p1 То же самое, что и -p, но только записывает данные в файл ./mon.out.
-p2 То же самое, что и -p, но только выводит данные в стандартный поток вывода.
-path-< asm|compiler|ipa|lib|link|prelink > < path > Использует инструмент компиляции, указанный в пути path - под инструментами подразумевается ассемблер, компилятор, IPA solver, сборщик библиотеки, линковщик и prelinker соответственно.
-path-output < dir > Задает директорию, отличающуюся от текущей, чтобы поместить в неё все не временные файлы.
-path-temp < dir > Задает, что драйвер должен создавать временные файлы в папке dir.
-pch Разрешает автоматическую генерацию и использование файлов прекомпилированных заголовков (precompiled header files).
-pchdir < dir > Задает каталог dir как альтернативную директорию в PCHRepository, в которой сохраняются файлы прекомпилированных заголовков (precompiled header files).
-pgo-session < session-id > Задает строку идентификатора сессии PGO (Profile Guided Optimization, оптимизация, управляемая профилем) для этой компиляции, для генерации информации PGO в конечном выполняемом коде и для выбора сессии, если имеются результаты от предыдущего запуска PGO.
-pguide Генерирует дополнительную информацию в конечном выполняемом коде для Profile Guided Optimization (оптимизация, управляемая профилем). Когда запускается симулятор, метрики будут собраны с информацией о том, как часто каждая часть приложения была вызвана.
-PP Работает похоже на -P, но не останавливает компиляцию после препроцессинга.
-proc < identifier > Инструктирует компилятор генерировать код, подходящий для указанного типа DSP.
-progress-rep-func Выдает диагностическое сообщение каждый раз, когда компилятор начинает компиляцию новой функции.
-progress-rep-opt Выдает диагностическое сообщение каждый раз, когда компилятор начинает новый проход оптимизации на функции.
-progress-rep-timeout Выдает диагностическое сообщение, если компилятор превысил лимит времени при компиляции. Это показывает, что компилятор все еще работает, просто на работу требуется больше времени.
-progress-rep-timeout-secs Задает, сколько секунд должно пройти до того, как компилятор выдаст диагностику о том, что времени прошло слишком много.
-r Указывает, что все выходные объектные файлы с перемещаемым кодом должны быть скомбинированы в один объектный файл с перемещаемым кодом при последующей перелинковке.
-R < dir >[< ;|, >dir...] Добавляет dir к списку директорий, по которым идет поиск файлов исходного кода - несколько каталогов с исходным кодом просматриваются в порядке, в котором они указаны. Отдельные записи путей каталогов могут быть отделены друг от друга запятой или точкой с запятой.
-R- Удаляет из списка все директории для поиска исходных файлов.
-reserve < reg1 >[,reg2...] Предотвращает использование отдельных регистров компилятором.
-rtti Разрешает использование информации о типах во время выполнения программы (run-time type information, касается только C++).
-s Инструктирует линкер удалить всю отладочную информацию из выходных объектных файлов, и также удаляет таблицу символов из выходного исполняемого файла.
-S Подавляет при компиляции фазы ассемблирования и редактирования линковки, в результате чего появляется файл на языке ассемблера.
-sat-associative Обрабатывает сложение с насыщением как ассоциативное.
-save-temps Предотвращает удаление всех временных файлов, которые созданы драйвером или компилятором.
-sdram Компилятор должен подразумевать, что как минимум банк 0 внешней памяти SDRAM присутствует и его работа разрешена. Это позволяет компилятору более агрессивно обрабатывать потенциально ошибочные доступы к памяти.
-section < identifier >=< section >[,< identifier >=< section >...] Направляет компилятор разместить внутренние структуры типа identifier в память секции section вместо размещения по умолчанию.
Опция -section id=section_name[,id=section_name...] управляет размещением определенных типов данных (заданных идентификаторами id), генерируемых компилятором. Данные размещаются в секцию section_name, как это указано в командной строке.
В настоящее время поддерживает следующие идентификаторы секций (подробнее см. раздел "Placement of Compiler-Generated Code and Data" руководства [4]).
code
Управляет размещением машинных инструкций.
data
Управляет размещением данных инициализированных переменных.
constdata
Управляет размещением данных констант.
bsz
Управляет размещением данных переменных, инициализированных нулями.
sti
Управляет размещением функций "start" статических конструкторов класса C++. По умолчанию program. Дополнительную информацию см. в разделе "Constructors and Destructors of Global Class Instances" руководства [4].
switch
Управляет размещением таблиц перехода, используемых для реализации операторов switch C/C++. По умолчанию constdata.
vtbl
Управляет размещением таблиц виртуальных функций C++ (virtual lookup table).
vtable
Синоним vtbl.
strings
Управляет размещением строковых литералов.
autoinit
Управляет размещением данных, используемых для инициализации автоматических агрегатов (aggregate auto).
alldata
Управляет размещением сразу data, constdata, bsz, strings и autoinit.
Обратите внимание, что alldata это не реальный вид секции, а место хранения для data, constdata, bsz, strings и autoinit. Таким образом,
Убедитесь, что выбранная в командной строке секция присутствует в файле .ldf (подробнее см. руководство "VisualDSP++ Linker and Utilities Manual").
-show Отображает командную строку, которая была передана драйверу, включая расширение опций файлов и переменные окружения.
-si-revision < none|any|x.x > Устанавливает ревизию кремния (silicon revision) для сборки, где x.x это номер ревизии для аппаратуры кристалла. Если опция -si-revision не используется, инструментарий выберет ревизию по умолчанию среди всех поддерживаемых ревизий.
-signed-bitfield Принудительно назначает целочисленные битовые (int) поля как числа со знаком.
-signed-char Принудительно считает обычный char как число со знаком.
-stack-detect Побуждает компилятор генерировать дополнительные инструкции в генерируемом коде, которые детектируют ситуации потенциального переполнения стека.
-std-templates Разрешает парсинг и просмотр имен для стандартных шаблонов C++.
-structs-do-not-overlap Подразумевается, что нет перекрытия областей памяти во время копирования структур, когда копирование может быть реализовано через стандартную функцию memcpy.
-syntax-only Выполняется только проверка синтаксиса, код не генерируется.
-sysdefs Инструктирует драйвер определить макрос препроцессора, который описывает текущего пользователя и компьютер.
-T < file > Задает, что файл file должен использоваться вместо используемого по умолчанию файла описания линковки (linker description file, *.ldf).
-threads Задает, что код пользователя будет линковаться с потокобезопасными библиотеками. Эта опция тем не менее не делает каких-либо проверок безопасности потоков в самом пользовательском коде. Если используется эта опция, то компилятор определит макрос _ADI_THREADS как единица. Эта опция применяется для компиляции VDK-проектов.
-time Отображает информацию времени для процессов, вовлекаемых драйвером.
-U < name > Отменяет (Undefine) макрос препроцессора name после обработки всех других опций -D командной строки.
-unsigned-bitfield Принудительно рассматривает обычные целочисленные (int) битовые поля как целые числа без знака.
-unsigned-char Принудительно рассматривает обычный char как целое число без знака.
-utility-rom Линковка в расчете на Tools Utility ROM (только для ADSP-BF592-A). Это поведение по умолчанию, когда компилирование происходит для ревизии кремния далее 0.2.
-v Отображает командную строку и номер версии драйвера, и любые процессы, вовлекаемые драйвером.
-verbose Отображает командные строки всех процессов, которые вовлекает драйвер.
-w Подавляет предупреждающие сообщения для драйвера и компилятора.
-warn-protos Приводит компилятор к выдаче предупреждений по поводу любых функций, для которых не предоставлены полные прототипы.
-Werror-limit < limit > Устанавливает лимит на количество ошибок в значение limit, после превышения которого компиляция будет отменена.
-Werror-warnings Приводит компилятор к выдаче ошибок для любых диагностик, которые обычно выдавались бы как предупреждения.
-Wmis_suppress Ожидает список номеров правил MISRA, и гарантирует, что не будет сообщения о нарушении этих правил.
-Wmis_warn Ожидает список номеров правил MISRA, и гарантирует, что нарушения правил будут оповещаться как предупреждения.
-Wremarks Показывает, что компилятор может выдавать ремарки, которые являются более умеренными диагностическими сообщениями, чем предупреждения.
-Wterse Отображает сообщения компилятора в более короткой форме.
-W{error|remark|suppress|warn} < num >[,num...] Отменяет выдачу некоторых отдельных диагностических сообщений компиляции, где num представляет номер подавляемого сообщения.
-xref < file > записывает листинг информации о перекрестных ссылках (cross-reference) в указанный файл.
-zero-loop-counters Разрешает обнуление счетчиков цикла на выходе из функции. Эта опция предоставлена для написания кода инициализации пользователя, который вызывается кодом Boot ROM, который не подчиняется ABI компилятора.
[Допустимые методы обхода проблем кристалла (workaround)]
Здесь приведен список допустимых workaround для этой архитектуры (Blackfin), применяемых для командной строки компилятора:
ABI Application Binary Interface. В C++ ABI описываются подробности на двоичном уровне, которые не специфицируются в Стандарте. Стандарт описывает общее поведение, но не говорит как оно должно быть реализовано. Например, в Стандарте говорится как должны себя вести виртуальные функции, но на реализации этого поведения через виртуальные таблицы никто не настаивает.
Как будут располагаться в памяти классы, как виртуальные таблицы, передача параметров, реализация RTTI и т.п. - все это описывается в ABI. Если два компилятора на одной и тоже же платформе будут следовать разным ABI, то не будет совместимости на уровне двоичного кода, нельзя будет код от двух компиляторов слинковать, например.
clobbered-регистры специальные ячейки памяти, которые компилятор выделяет для использования внутри функций - с целью повышения эффективности программы. Обычно в качестве таких регистров используются регистры, к которым возможна минимальная задержка на доступ чтения/записи (SRAM или специальные регистры).
IPA solver Intelligent Performance Assistant, дословный перевод "интеллектуальный помощник для улучшения производительности". IPA также переводят как interprocedural analysis - опция, которая включает в компиляторе межпроцедурный анализ (-ipa). Эта опция разрешает оптимизацию по всей программе, включая оптимизацию между отдельными файлами исходного кода, которые компилируются отдельно друг от друга. Если эта функция используется, то опция -ipa должна применяться для частей программы (всех модулей кода на языках C и C++).
leaf-функция дословный перевод "функция-листочек". На некоторых процессорах функция, которая сама не делает вызовов функций, работает эффективнее, если не организовывает собственного окна регистров. Часто это означает, что нужно принимать аргументы функции в регистрах, вместо того, чтобы принимать их обычным образом, через стек. Особая обработка для leaf-функций может произойти только при соблюдении других условий. Например, часто leaf-функции могут использовать только определенные регистры для своих собственных переменных временного хранения данных. Термин "leaf-функция" означает, что функция подходит для некой ускоренной обработки, так что не обязательно отсутствие внутренних вызовов из функции сделает её leaf-функцией.
MMR Memory Mapped Register, отображенный на адрес памяти регистр. Особая ячейка в плоском адресном пространстве Blackfin, предназначенная для управления какой-либо аппаратурой процессора.
thread-safe, потокобезопасный. Термин thread-safe не имеет общепринятого перевода на русский язык. Дословно это словосочетание следует переводить как "безопасный для использования в многопоточной программе". Чаще всего этот термин применяется к библиотечным функциям и библиотекам в целом (из лекции сайта intuit.ru).
Деманглинг (англ. demangle). В конструкциях компилятора термин name mangling (также называется name decoration, декорация имен) означает технику, используемую для урегулирования различных проблем, связанных с разрешением уникальных имен элементов программы на разных современных языках программирования. Элементами декорации часто могут быть префиксы (например в виде подчеркивания) и/или суффиксы, добавляемые к имени функции. Декорация имен предоставляет дополнительную информацию в имени функции, структуры, класса или другого типа данных в с целью передачи этой информации от компиляторов к линковщикам. Потребность в декорации имен возникает в том случае, когда нужно генерировать уникальные имена объектов программы для случаев, когда одно и то же имя идентификатора появляется в различных контекстах программы (т. е. в разных областях namespace, областях видимости. Обычно namespace определяется как область действия имени объекта, ограниченная модулем, классом, или явно указанной директивой namespace или фигурными скобками). Также декорация может потребоваться для разных вариантов перезагрузки функции (function overloading). Любой объект кода, который генерируется компилятором, обычно линкуется с другими объектами кода (также сгенерированных этим или иногда другим компилятором) по своему типу. Линковку делает специальная программа - linker, которая нуждается в полной информации по каждому элементу программы. Например, корректная ссылка на функцию нуждается не только в имени, но также и в количестве аргументов функции, её типах и т. д. Соответственно деманглинг соответствует обратному преобразованию по отношению к декорации имен (кое-что взято из английской Википедии).
Диграф (в семействе языков Си) (англ. digraph) — последовательность из двух или более символов, интерпретируемая компилятором как один или более символов. В отличие от триграфов, подстановка диграфов препроцессором выполняется после лексического анализа и только в том случае, если диграф является отдельной лексемой (из Википедии).
Оверлей (англ. overlay) - метод программирования, позволяющий создавать программы, занимающие больше памяти, чем установлено в системе. Встроенные компьютеры часто используют оверлеи, так как обычно система на кристалле содержит мало памяти и не поддерживает виртуальную память (из Википедии).
Профайлинг специальный анализ исполняемого кода, помогающий выявить критичные с точки зрения быстродействия участки кода (которые выполняются наиболее часто и интенсивно). Именно эти участки кода требуют отдельного внимания для высококачественной оптимизации.
Реентрантный (англ. re-entrant, или reentrant, reentrancy). В технологии программирования подпрограмма или программ называется реентрантной, если она может быть прервана в любом месте своего потока выполнения, и безопасно вызвана снова ("re-entered", т. е. дословно означает "зайти снова") до того, как предыдущий вызов завершится. Прерывание потока может быть вызвано внутренними операциями jump (переход) или call (вызов подпрограммы), или может быть из-за внешних действий, таких как аппаратное прерывание или событие (сигнал). Как только завершится повторный вход в подпрограмму, остальные запущенные вызовы могут безопасно и корректно продолжить свою работу.
Определение реентрантный произошло от однопоточного программного окружения, где поток выполнения мог быть прерван аппаратным прерыванием, при этом управление выполнением кода переходит к обработчику прерывания (interrupt service routine, ISR). Любая подпрограмма, которую использует ISR, потенциально может быть прервана (когда запустился этот или другой обработчик прерывания), так что она должна быть реентрантной. Часто подпрограммы, которые доступны через ядро операционной системы, не являются реентрантными. Таким образом, обработчики прерывания ограничены в действиях, которые они могли бы выполнить; например, им запрещен доступ к файловой системе и иногда запрещено выделение памяти.
Подпрограммы, которые прямо или косвенно рекурсивны, должны быть также реентрантными. Такая политика частично диктуется языками структурного программирования (такими как язык C). Однако подпрограмма не сможет быть реентрантной, если она работает с глобальными переменными, или если она использует какие-то статические переменные или данные, которые должны оставаться в сохранности до завершения работы вызова подпрограммы.
Это определение реентрантности отличается от определения реентрантности для потокобезопасного выполнения в многопоточной среде. Реентрантная подпрограмма может дать безопасность выполнения в потоке, но реентрантность сама по себе не гарантирует потокобезопасное выполнение во всех ситуациях. С другой стороны, потокобезопасный код не обязательно будет реентрантным (из английской Википедии).
Options may be interspersed with files on the command line.
-@ < file > Places the contents of `file' (a file containing driver options) at the current position on the command line.
-A < name >[(< tokens >)] Asserts `name' as a predicate with the specified `tokens' as if by a #assert preprocessor directive.
-add-debug-libpaths Automatically adds a 'Debug' subfolder search path for each standard library search path passed to the linker.
-alttok Allows alternative operator keywords and digraph sequences to appear in source files.
-always-inline Always inline functions that are marked 'inline'.
-anach Indicates that anachronisms are to be allowed when source files written in ANSI C++ are being compiled.
-annotate Enables the annotation of assembly files (default).
-annotate-loop-instr Provides additional annotation information for the prolog, kernel and epilog of loops
-auto-attrs Creates a number of file attributes based on the contents of the source file.
-bss Put zero-initialized global data into a BSS section.
-build-lib Instructs the driver to build an archive library from any resulting objects on the command line instead of invoking the linker to create an executable file.
-C Preserves comments in any preprocessed output.
-c Suppresses the link editing phase of the compilation and does not remove any object files created during compilation.
-c++ Indicates that source files written in C++ are to be compiled.
-c89 Indicates that source files written in ISO/IEC 9899:1990 with Analog language extensions are to be compiled. (default)
-c99 Indicates that source files written in ISO/IEC 9899:1999 with Analog language extensions are to be compiled.
-check-init-order If your program uses global objects with constructors, and has multiple source modules, it is not guaranteed that the objects' constructors will have run before the objects are used. The -check-init-order option will insert diagnostic code to check initialization has happened, at point of use. Not recommended for production code.
-const-read-write A pointer to const may access non-readonly data (as in ANSI/ISO C).
-const-strings Indicates that strings literals should be const qualified.
-cplbs The compiler should assume that memory accesses and code will be validated by the Cache Protection Lookaside Buffers. This allows the compiler to be more aggressive in dealing with potential invalid memory accesses or indirect pointer instructions.
-D < name >[=< def >] Defines preprocessor macro `name' to have definition `def' (if `def' is omitted then `name' is defined to be 1).
-dcplbs The compiler should assume that data memory accesses will be validated by the Data Cache Protection Lookaside Buffers. This allows the compiler to be more aggressive in dealing with potential invalid memory accesses.
-decls-strong Treat uninitialized global variables as strong definitions, i.e. global "int x;" is equivalent to global "int x = 0;".
-decls-weak Treat uninitialized global variables as weak definitions, i.e. global "int x;" is equivalent to "extern int x;".
-double-size-any Specifies that the resulting object files should be marked in such a way that will enable them to be linked against objects built with doubles either 32-bit or 64-bit in size.
-double-size-{32|64} Forces type double to be in 32-bit IEEE single-precision format (`-double-size-32') or 64-bit IEEE double-precision format (`-double-size-64').
-dry Displays main driver actions but does not perform them.
-dryrun Displays driver actions but does not perform them.
-E Do preprocessing only.
-ED Similar to `-EE' but sends all output to a file. This option will always override the -MM option.
-EE Similar to `-E' but does not halt compilation after preprocessing.
-eh Enables C++ exception handling.
-enum-is-int By default enums can have a type larger than int. This option ensures the enum type is int.
-expand-symbolic-links Enables support for Cygwin style paths on the command line and in include directives.
-expand-windows-shortcuts Enables support for Windows Shortcuts on the command line and in include directives.
-expert-linker Provides the link line used initially by the Expert Linker.
-extern-inline Enables support for inline functions with external linkage in C++.
-extra-keywords Enables recognition of the Analog C extension keywords.
-extra-loop-loads Loops that walk through memory ranges are allowed to read past the end of the range without ill effects. Can improve performance.
-fast-fp Use faster, less-accurate, non-IEEE floating point routines.
-file-attr < name >[=< attr >] Defines object file attribute `name' to have definition `attr' (if `attr' is omitted then `attr' is defined to be 1).
-fixed-point-io Instructs the compiler to use the optimized reduced feature stdio.h function definitions with support for fixed-point types. Causes the definition of macro _ADI_FX_LIBIO in both the compiler and linker.
-flags-< asm|compiler|ipa|lib|link|prelink > < arg1 >[,arg2...] Passes each of the comma-separated arguments to the specified compilation tool - the tools are the assembler, compiler, IPA solver, library builder, linker and prelinker respectively.
-force-circbuf Treat array references of the form array[i%n] as circular buffer operations.
-force-link Always create a new stack frame for leaf functions.(defaults to on for -g, enforced for -p options.)
-fp-associative Treat floating point multiply and addition as associative.
-friend-injection Enable non-standard name lookup for class or function names declared as friends.
-full-dependency-inclusion Instructs the compiler to include implicitly included .cpp files more than once when generating dependencies. Use of this switch may increase dependency generation time.
-full-io Instructs the compiler to use full feature ANSI-compliant stdio.h function definitions. Causes the definition of macro _DINKUM_IO in both the compiler and linker.
-full-version Displays the version number of the driver and any processes invoked by the driver.
-fx-contract Set the default state of the FX_CONTRACT pragma to be ON.
-fx-rounding-mode-biased Set the default state of the FX_ROUNDING_MODE pragma to be BIASED.
-fx-rounding-mode-truncation Set the default state of the FX_ROUNDING_MODE pragma to be TRUNCATION.
-fx-rounding-mode-unbiased Set the default state of the FX_ROUNDING_MODE pragma to be UNBIASED.
-g Causes the compiler to generate additional information in the generated code required for the use of debuggers.
-glite Causes the compiler to remove any unneeded debug information which reduce executable and library size compared to -g.
-guard-vol-loads Guard volatile loads against being interrupted and restarted, by disabling interrupts during the loads.
-H Do preprocessing only, but only output a list of the names of files that have been #included.
-HH Similar to `-H' but does not halt compilation after preprocessing.
-h[elp] Displays this quick-reference option summary.
-i Indicates that only include files specified in double quotes should be listed when the -H or -M options are used.
-I < dir >[< ;|, >dir...] Adds `dir' to the list of directories searched for include files - multiple include directories are searched in the order specified and may be given as a semicolon- or comma-separated list of directories.
-I- Establishes the point in the include directory list at which the search for header files enclosed in angle brackets should begin.
-icplbs The compiler should assume that program code will be validated by the Instruction Cache Protection Lookaside Buffers. This allows the compiler to be more aggressive in dealing with potential invalid indirect pointer instructions (ref. silicon anomaly 05-00-0426 for potential use).
-ieee-fp Use slower floating point routines that fully conform to the IEEE floating point standard.
-ignore-std The compiler ignores namespace std in all standard library headers.
-implicit-inclusion Enables implicit inclusion of source files as a method of finding definitions of template entities to be instantiated.(C++ only)
-implicit-pointers Forces the compiler to allow incompatible pointers as a discretionary warning.
-include < file > Instructs the compiler to process include file `file' before each of the source files given on the command line.
-instantlocal Instantiates all template entities that are used in this compilation. This switch also ensures that all templates are given internal linkage.
-ipa Specifies that inter-procedural analysis should be performed for optimization between translation units. Using -ipa implicitly enables -O.
-jcs2l Passes linker option -jcs2l, enabling conversion of short jumps/calls to long jumps/calls. Will use P1 register for indirect jumps/calls when long jumps/calls are insufficient. Enabled by default.
-L < dir >[< ;|, >dir...] Adds `dir' to the list of directories searched for libraries - multiple library directories are searched in the order specified and may be given as a semicolon- or comma-separated list of directories.
-l < lib > Include object library lib< lib >.dlb in the linker's command line and look for it in the library search path.
-list-workarounds Displays a list of the workarounds supported by the compiler.
-M Do preprocessing only, but only output file dependencies suitable for use with make(1).
-map < file > Instructs the linker to produce a specified file containing a memory map of all symbols used in the link.
-MD Similar to `-MM' but sends all output file dependencies to a file.
-mem Instructs the driver to run the memory initializer after linking.
-misra Causes the compiler to generate error messages for any constructs in a source file that do not conform to the ANSI C standard and MISRA:2004 Guidelines. Some rules are strictly enforced. The rules that are relaxed are documented in the compiler manual. Use -misra-strict if you require these rules to be strictly enforced.
-misra-linkdir For MISRA Rules requiring link-time checks .misra files are generated in the current working directory. This option places .misra files in a specified location.
-misra-no-cross-module Causes the compiler to generate error messages for any constructs in a source file that do not conform to the ANSI C standard and MISRA:2004 Guidelines. Does not check for rules requiring link time checking.
-misra-no-runtime Causes the compiler to generate error messages for any constructs in a source file that do not conform to the ANSI C standard and MISRA:2004 Guidelines. Does not check for rules requiring runtime checking.
-misra-strict Causes the compiler to generate error messages for any constructs in a source file that do not conform to the ANSI C standard and MISRA:2004 Guidelines.
-misra-suppress-advisory Suppresses reporting of any MISRA advisory rule.
-misra-testing Causes the compiler not to generate error messages for any library functions involving system heap allocation and io in a source file for testing, but otherwise implies -misra-strict. These library functions violate Rule 20 of the MISRA:2004 Guidelines.
-MM Similar to `-M' but does not halt compilation after preprocessing.
-Mo < output file > Specifies an output file name for make dependencies other than stdout. This switch should be used in conjunction with the -ED or -MD options.
-Mt < new target name > Specifies an alternative output file name for the make dependency target, other than the name that is automatically generated. This switch should be used in conjunction with the -M or -MM option.
-multicore Specifies that the users code will be linked with libraries that are re-entrant, which can be placed in shared sections of memory on a multi-core target. This option does not in any way verify that the users code is re-entrant.
-multiline Enables support for GNU multiline strings.
-never-inline Ignore 'inline' keyword on functions.
-no-alttok Does not allow alternative operator keywords and digraph sequences to appear in source files.
-no-anach Does not allow anachronisms when compiling ANSI C++ source files.
-no-annotate Disables the annotation of assembly files.
-no-annotate-loop-instr Disables production of additional loop annotation information (default)
-no-assume-vols-are-mmrs Instructs the compiler to not assume that volatile loads and stores are to MMR addresses and therefore candidates for any MMR related silicon errata workarounds.
-no-auto-attrs Disables automatic creation of file attributes.
-no-bss Put zero-initialized global data into a normal data section.
-no-builtin Instructs the compiler not to use any built-in functions except those whose names begin with a double underscore.
-no-circbuf Disables the automatic generation of circular buffering code.
-no-const-strings Indicates that strings literals should not be const qualified.
-no-defs Prevents the driver from passing any default assertions, preprocessor macros, include directories, library directories, libraries or startup modules to the compiler or linker and also disables the C keyword extensions.
-no-demangle Prevents the driver from filtering any errors from the linker through the C++ name demangler.
-no-eh Disables C++ exception handling.
-no-expand-symbolic-links Disables support for Cygwin style paths on the command line and in include directives.
-no-expand-windows-shortcuts Enables support for Windows Shortcuts on the command line and in include directives.
-no-extern-inline Disables support for inline functions with external linkage in C++.
-no-extra-keywords Disables recognition of the Analog C extension keywords.
-no-force-link Do not create a new stack frame for leaf functions, if one can be omitted. Overrides the default for -g.
-no-fp-associative Do not treat floating point multiply and addition as associative.
-no-friend-injection Enable C++ standard name lookup for class or function names declared as friends.
-no-full-io Instructs the compiler to use the optimized reduced feature stdio.h function definitions. Causes the definition of macro _ADI_LIBIO in both the compiler and linker.
-no-fx-contract Set the default state of the FX_CONTRACT pragma to be OFF.
-no-implicit-inclusion Disables implicit inclusion of source files as a method of finding definitions of template entities to be instantiated.(C++ only)
-no-int-to-fract Don't create saturating fract operations instead of integer ones.
-no-jcs2l Suppresses linker option -jcs2l for jump/call expansion.
-no-mem Prevents the driver from running the memory initializer after linking.
-no-multiline Disables support for GNU multiline strings.
-no-progress-rep-timeout Prevents the compiler from issuing a diagnostic message if the compilation exceeds a certain time limit.
-no-rtti Disables run-time type information. (C++ only).
-no-sat-associative Do not treat saturating addition as associative.
-no-saturation Don't create saturating operations instead of non-saturating ones.
-no-std-ass Causes any predefined assertions and predefined system-specific preprocessor macros to be ignored.
-no-std-def Prevents the driver from passing any predefined preprocessor macros to the compiler.
-no-std-inc Prevents the driver from passing any default include directories to the compiler.
-no-std-lib Prevents the driver from passing any default libraries or library directories to the linker.
-no-std-templates Enable traditional template parsing and name lookup.
-no-threads Specifies that all compiled code need not be thread-safe.
-no-utility-rom Do not link against the Tools Utility ROM (ADSP-BF592-A only). This switch passes the macro NO_UTILITY_ROM to the linker and is the default behavior when compiling for silicon revisions 'none', 'any', 0.0 and 0.1.
-no-workaround < workaround >[,< workaround >] Disable code generator workarounds for specific hardware errata. Valid workarounds are listed below.
-no-zero-loop-counters Disables the zeroing of loop counters on function exit.
-o < file > Produces an output file with a name given by `file' instead of using the name derived via the default rules.
-Oa Turns on auto-inlining, which can be controlled by -Ov.
-Ofp Offsets the Frame Pointer from the start of the frame if it will allow more short load/store instructions.
-Og Produces code with debugging information which is optimized as far as is possible while retaining the full features of debug mode (-g).
-Os Produces code which is optimized for minimal code size which may not be code which gives the best performance.
-Ov < num > Controls speed vs size optimizations. 'num' should be an integer between 0 (purely size) and 100 (purely speed).
-overlay Specifies that functions may be in overlays and directs the compiler not to track which scratch registers are clobbered over a function call.
-overlay-clobbers < clob1 >[,clob2...] Specifies the registers clobbered by the overlay manager.
-O[0|1] Turns on all compiler optimizations (`-O' or `-O1'), while `-O0' turns off all optimizations.
-P Do preprocessing only, but do not include line control information.
-p Generate additional information in the final executable for use with the profiling utility profblkfn. Writes profile data to standard output and the file ./mon.out.
-p1 As -p, but only write data to the file ./mon.out.
-p2 As -p, but only write data to standard output.
-path-< asm|compiler|ipa|lib|link|prelink > < path > Uses the compilation tool specified in `path' - the tools are the assembler, compiler, IPA solver, library builder, linker and prelinker respectively.
-path-install < file > Specifies the installation directory of the compiler, tools, libraries and include files.
-path-output < dir > Specifies a directory other than the current directory to place all non-temporary output files in.
-path-temp < dir > Specifies that the driver should create temporary files in `dir'.
-pch Enables automatic generation and use of precompiled header files.
-pchdir < dir > Specifies `dir' as an alternative directory to `PCHRepository' in which to store precompiled header files.
-pgo-session < session-id > Specify the PGO session id string for this compilation, both for generating the PGO information in the final executable and for selecting a session if results from a previous PGO run are given.
-pguide Generate additional information in the final executable for Profile Guided Optimization. When run on a simulator, metrics will be gathered on how often each part of the application is executed.
-PP Similar to `-P' but does not halt compilation after preprocessing.
-pplist < file > Writes raw preprocessing listing information to a specified file.
-proc < identifier > Instructs the compiler to produce code suitable for the specified DSP.
-progress-rep-func Issues a diagnostic message each time the compiler begins compiling a new function.
-progress-rep-opt Issues a diagnostic message each time the compiler starts a new optimization pass on a function.
-progress-rep-timeout Issues a diagnostic message if the compiler exceeds a time limit during compilation. This indicates the compiler is still operating - just taking a long time.
-progress-rep-timeout-secs Specifies how many seconds must elapse during a compilation before the compiler issues a diagnostic about the length of time uses so far.
-r Specifies that any resulting relocatable object files are to be combined into one relocatable object file for later relinking.
-R < dir >[< ;|, >dir...] Adds `dir' to the list of directories searched for source files - multiple source directories are searched in the order specified and may be given as a semicolon- or comma-separated list of directories.
-R- Removes all directories from the source file search directory list.
-reserve < reg1 >[,reg2...] Prevents the compiler from using certain registers.
-rtti Enables run-time type information. (C++ only).
-s Instructs the linker to remove any debugging information from the resulting object file, and also remove the symbol table from the resulting executable file.
-S Suppresses the assembler and link editing phases of the compilation and produces an assembler file instead.
-sat-associative Treat saturating addition as associative.
-save-temps Prevents any temporary files that have been created by the driver or compiler from being deleted.
-sdram The compiler should assume that at least bank 0 of external SDRAM will be present and enabled. This allows the compiler to be more aggressive in dealing with potential invalid memory accesses.
-section < identifier >=< section >[,< identifier >=< section >...] Directs the compiler to place internal structures of type < identifier > into memory section < section > rather than the default location.
-show Displays the command line that was passed to the driver, including the expansion of options files and environment variables.
-si-revision < none|any|x.x > Sets the silicon revision for the build, with x.x being the revision number for the hardware. If -si-revision is not used the tools target a default revision from the supported revisions.
-signed-bitfield Forces plain int bitfields to be signed.
-signed-char Forces plain char to be signed.
-stack-detect Causes the compiler to generate additional instructions in the generated code to detect a potential stack overflow.
-std-templates Enable C++ standard template parsing and name lookup.
-structs-do-not-overlap Assume no overlap in memory accessed during copies of structures so that these may be implemented by memcpy.
-syntax-only Performs syntax checking only - no code is generated.
-sysdefs Instructs the driver to define preprocessor macros that describe the current user and machine.
-T < file > Specifies that `file' should be used in place of the default linker description file.
-threads Specifies that the users code will be linked with threadsafe libraries. This option does not in any way verify the thread safety of the users own code.
-time Displays timing information for processes invoked by the driver.
-U < name > Undefines preprocessor macro `name' after all other `-D' options on the command line have been processed.
-unsigned-bitfield Forces plain int bitfields to be unsigned.
-unsigned-char Forces plain char to be unsigned.
-utility-rom Link against the Tools Utility ROM (ADSP-BF592-A only). This is the default behaviour when compiling for silicon revision 0.2 onwards.
-v Displays the command line and version number of the driver and any processes invoked by the driver.
-verbose Displays the command lines of each of the processes that the driver invokes.
-w Suppresses warning messages from the driver and compiler.
-warn-protos Cause the compiler to issue warnings about any functions for which full prototypes are not supplied.
-Werror-limit < limit > Sets the compiler error limit to `limit' which will cause compilation to be abandoned after this number of errors.
-Werror-warnings Cause the compiler to issue errors for any diagnostics that would usually be warnings.
-Wmis_suppress Expects a list of MISRA rule numbers and ensures that rule violations are not reported.
-Wmis_warn Expects a list of MISRA rule numbers and ensures that rule violations are reported as warnings.
-workaround < workaround >[,< workaround >...] Enables code generator workaround for specific hardware errata. Valid workarounds are listed below.
-Wremarks Indicates that the compiler may issue remarks, which are diagnostic messages even milder than warnings.
-Wterse Displays compiler messages in a shorter form.
-W{error|remark|suppress|warn} < num >[,num...] Overrides the severity of specific compilation diagnostic messages, where `num' is a number representing the message to override.
-xref < file > Writes cross-reference listing information to a specified file.
-zero-loop-counters Enables the zeroing of loop counters on function exit.This switch is provided for users writing initcodes, which are invoked by BootROMs that do not obey the compiler's ABI.
Valid workarounds for this processor architecture (Blackfin) are: