Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
34
Добавлен:
01.05.2014
Размер:
206.19 Кб
Скачать

Приложение а. Бинарные утилиты

Бинарные утилиты, входящие в комплект поставки СКРВ Багет, имеют префикс “bt23b‑“ например:

bt23b-objcopy

bt23b-objdump

bt23b-ld

bt23b-as

Далее в описаниях утилит этот префикс опущен, и используются короткие имена утилит: objcopy, objdump и т. д.

В описании приведены короткие и длинные имена опций, полностью эквивалентные друг другу.

Утилита objcopy Общие сведения

Утилита objcopyкопирует содержимое одного объектного файла в другой. При этом выполняются преобразования, заданные опциями командной строки.

Для выполнения указанных преобразований утилита objcopyсоздает временные файлы, которые уничтожаются по завершении ее выполнения.Objcopyиспользует библиотеку BFD (Binary File Descriptions), благодаря чему она способна распознать большинство форматов объектных файлов без явного указания имени формата.

Утилита objcopy может применяться для генерации S-записей, если в качестве выходного задан формат srec (например, при помощи опции-O srec.

Утилита objcopyможет применяться также для генерации неструктурированных бинарных файлов (при помощи-O binary). При генерации неструктурированного бинарного файлаobjcopyпорождает образ памяти содержимого входного объектного файла. Информация о символах и о настройке при этом не копируется. Дамп памяти начинается с загрузочного адреса начальной секции, копируемой в выходной файл.

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

Формат командной строки

objcopy[ -Fформат_оф| --target=формат_оф] [ -Iформат_оф| --input-target=формат_оф] [ -Oформат_оф| --output-target=формат_оф] [ -S| --strip-all] [ -g |--strip-debug][ --strip-unneeded ] [ -Kимя_символа| --keep-symbol=имя_символа] [ -Nимя_символа| --strip-symbol=имя_символа] [ -x | --discard-all] [ -X | --discard-locals] [ -t] [ -bномер_байта | --byte=номер_байта] [ -iразмер_группы | --interleave=размер_группы ] [ -R имя_секции | --remove-section=имя_секции] [ --debugging] [ --gap-fill=значение] [ --pad-to=адрес] [ --set-start=значение] [ --adjust-start=приращение] [ --adjust-vma=приращение] [ --adjust-section-vma=секция{=,+,-}приращение] [ --adjust-warnings] [ --no-adjust-warnings] [ --set-section-flags=секция=флаги] [ --add-section=имя_секции=имя_файла ] [ --remove-leading-char] [ -v | --verbose] [ -V | --version] [ --help]входной_файл[выходной_файл]

входной_файл

выходной_файл

Исходный и результирующий файлы. Если выходной_файл не задан, то objcopy создает временный файл, а по завершении работы переименовывает его, используя имя входного_файла, уничтожая его исходное содержимое.

Описание опций

-Iформат_оф

--input-target=формат_оф

Считать, что формат исходного файла есть формат_оф, не пытаясь выяснить его по содержимому файла.

-Oформат_оф

--output-target=формат_оф

Записать выходной файл в заданном формате формат_оф.

-Fформат_оф

--target=формат_оф

Использовать формат формат_офи для входного, и для выходного файлов.

-Rимя_секции

--remove-section=имя_секции

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

-S

--strip-all

Не копировать из исходного файла информацию о символах и об их настройке.

-g

--strip-debug

Не копировать из исходного файла отладочные символы.

--strip-unneeded

Удалить все символы, которые не нужны для настройки файла.

-Kимя_символа

--keep-symbol=имя_символа

Скопировать из исходного файла только символ с указанным именем. Опция может повторяться более одного раза.

-Nимя_символа

--strip-symbol=имя_символа

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

-x

--discard-all

Не копировать из исходного файла не глобальные символы.

-X

--discard-locals

Не копировать сгенерированные компилятором локальные символы. (Их имена обычно начинаются с 'L' или '..').

-t

Сократить все секции объектного файла, кроме таблицы символов, до нулевой длины. Эта опция используется при сборке ОС РВ Багет.

ПРИМЕЧАНИЕ. Если утилита вызывается под именем copy, то данное преобразование выполняется при помощи опции-x. Этот подход был выбран для обеспечения совместимости с использовавшейся ранее версией бинарных утилит.

-bномер_байта

--byte=номер_байта

Оставить только байт с указанным номером из каждой последовательной группы байт, где размер группы задается опцией -iразмер_группы(или--interleaveразмер_группы). Если опция-i(или--interleave) отсутствует, то по умолчаниюразмер_группысчитается равным 4. Эта опция полезна при создании программных файлов, предназначенных для записи на ROM. Она обычно используется в сочетании с-O srec.

-iразмер_группы

--interleave=размер_группы

Копировать только один байт из каждой последовательной группы байт заданного размера. Номер копируемого байта в группе задается опцией -bномер_байта(или--byteномер_байта). По умолчаниюразмер_группы=4. Эта опция игнорируется, если не задана опция-bили--byte.

--debugging

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

--gap-fillзначение

Заполнить промежутки между секциями указанным значением. Это осуществляется путем увеличения размера секции до размера, задаваемого опцией--pad-to,и заполнения образовавшегося промежутказначением.

--pad-to адрес

Дополнить выходной файл до указанного виртуального адреса. Дополнение происходит за счет увеличения размера последней секции и заполнения лишнего пространства значением, заданными при помощи опции--gap-fill(по умолчанию — нулями)

--set-startзначение

Установить начальный адрес в выходном файле равным указанному значению. Не для всех форматов объектных файлов поддерживается установка начального адреса.

--adjust-startприращение

Изменить начальный адрес добавлением указанного приращения. Не для всех форматов объектных файлов поддерживается установка начального адреса.

--adjust-vmaприращение

Изменить адреса всех секций, а также начальный адрес, добавлением указанного приращения. Для некоторых форматов объектных файлов не допускается такое произвольное изменение адресов секций. Отметим, что это преобразование не означает перемещения секций. Если программа ожидает, что секции будут загружены по определенному адресу, а секции были изменены при помощи данной опции, то это может привести к аварийному завершению работы.

--adjust-section-vmaсекция{=,+,–}значение

Установить или изменить адрес указанной секции. Если задан знак '=', то адрес секции устанавливается равнымзначению. Если задан знак '+' или '', тозначениеприбавляется к адресу секции или, соответственно, вычитается из него. Если указанная секция отсутствует в исходном файле, то может быть выдано предупреждающее сообщение, если не задана опция--no-adjust-warnings.

--adjust-warnings

Если задана опция --adjust-section-vma, а указанная секция отсутствует, то выдавать предупреждающее сообщение. Эта опция действует по умолчанию.

--no-adjust-warnings

Не выдавать предупреждающих сообщений при использовании ‑‑adjust‑section-vma, даже если указанная секция отсутствует в исходном файле.

--set-section-flagsсекция=флаги

Установить флагидля указаннойсекции. Аргументфлагипредставляет собой последовательность имен флагов, разделенных запятыми. Допустимые имена флагов:alloc, load, readonly, code, data, rom. Для конкретного формата объектных файлов некоторые флаги могут не иметь смысла.

--add-sectionсекция=файл

Добавить указанную секциюпри копировании исходного файла. Содержимое секции берется из указанного в данной опциифайла. Размер секции будет установлен равным размеру файла. Эта опция работает только для форматов, поддерживающих секции с произвольными именами.

--remove-leading-char

Если первая литера глобального символа является специальной литерой, используемой в качестве начальной в данном объектном формате, то удалить эту литеру. Наиболее часто в качестве такой литеры встречается подчеркивание. Применение данной опции приведет к удалению начального подчеркивания из всех глобальных символов. Это может оказаться полезным, если вы хотите объединить объекты из файлов с разными форматами с различными соглашениями именования символов.

-V

--version

Показать номер версии objcopy.

-v

--verbose

Подробная выдача: список всех модифицированных объектных файлов. Если заданы архивы, то objcopy-vвыдает список всех элементов архива.

--help

Вывести сводку всех опция утилиты objcopy. ПРИМЕЧАНИЕ. Сведения об опции-tв сводке не выдаются.

Соседние файлы в папке Еще материалы