Вперед Назад Содержание

3. objcopy

objcopy [-F BFDNAME | --target=BFDNAME] [-I BFDNAME | --input-target=BFDNAME] [-O BFDNAME | --output-target=BFDNAME] [-S | --strip-all] [-g | --strip-debug] [-K SYMBOLNAME | --keep-symbol=SYMBOLNAME] [-N SYMBOLNAME | --strip-symbol=SYMBOLNAME] [-x | --discard-all] [-X | --discard-locals] [-b BYTE | --byte=BYTE] [-i INTERLEAVE | --interleave=INTERLEAVE] [-R SECTIONNAME | --remove-section=SCTIONNAME] [--gap-fill=VAL] [--pad-to=ADDRESS] [--set-start=VAL] [--adjust-start=INCR] [--adjust-vma=INCR] [--adjust-section-vma=SECTION{=,+,-}VAL] [--adjust-warnings] [--no-adjust-warnings] [--set-section-flags=SECTION=FLAGS] [--add-section=SECTIONNAME=FILENAME] [-v | --verbose] [-V | --version] [--help] INFILE [OUTFILE]
Утилита GNU objcopy копирует содержимое одних объектных файлов в другие. Для чтения и записи объектных файлов objcopy использует библиотеку GNU BFD. Она может записывать результирующие объектные файлы в формате отличном от формата исходных объектных файлов. Работа objcopy определяется опциями командной строки.

Во время трансляции objcopy создает временный файл, который после работы уничтожается. objcopy использует BFD на протяжении всей трансляции; это позволяет получить доступ ко всем форматам описанным в BFD и распозновать многие форматы без явного их указания. Смотри раздел BFD в 'Использование LD'.

objcopy может быть использован для создания S-записей используя вывод результата в 'srec' (используя '-O srec').

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

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

INFILE

OUTFILE

Задают входной и выходной файлы, соответственно. Если Вы не указываете INFILE, objcopy создает временный файл и переименовывает результат в INFILE.

-I BFDNAME

--input-target=BFDNAME

Принять формат исходного объектного файла за формат BFDNAME. Подробнее см. раздел 12.1 [Выбор целевой ОС], стр. 37.

-O BFDNAME

--output-target=BFDNAME

Принять формат результирующего объектного файла за формат BFDNAME. Подробнее см. раздел 12.1 [Выбор целевой ОС], стр. 37.

-F BFDNAME

--target=BFDNAME

Использовать BFDNAME как формат входного и выходного объектных файлов; т.е. просто перереписывает INFILE в OUTFILE без трансляции. Подробнее см. раздел 12.1 [Выбор целевой ОС], стр. 37.

-R SECTIONNAME

--remove-section=SCTIONNAME

Удаляет любые разделы с названием SECTIONNAME из выходного файла. Опция может задаваться неоднократно. ВНИМАНИЕ неосторожное применение этой опции может привести к порче выходного файла.

-S

--strip-all

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

-g

--strip-debug

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

--strip-unneeded

Убрать все сивыолы ненужные для процесса загрузки.

-K SYMBOLNAME

--keep-symbol=SYMBOLNAME

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

-N SYMBOLNAME

--strip-symbol=SYMBOLNAME

Не копировать из входного файла символ SYMBOLNAME. Опция может задаваться неоднократно, и может комбинироваться с любыми '--strip-' - опциями также как и '-K'.

-x

--discard-all

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

-X

--discard-locals

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

-b BYTE

--byte=BYTE

Оставить только каждый BYTE-выи байт фходного файла (данные заголовка остаются без изменений). BYTE может быть в диапазоне от 0 до INTERLEAVE-1, где INTERLEAVE задается опцией -i или --interleave, и по умолчанию равен 4. Эта опция помогает создавать файлы для записи в ПЗУ. Обычно она используется с выводом в 'srec'.

-i INTERLEAVE

--interleave=INTERLEAVE

Копировать только каждый INTERLIV-ный байт. Выберите копируемый байт используя опцию '-b' или '--byte'.

--gap-fill=VAL

Заполняет промежутки в разделах значением VAL. Увеличивает размер раздела с нижних адресов и заполняет лишние пробелы значением VAL.

--pad-to=ADDRESS

Расширяет выходной фай до виртуального адреса ADDRESS. Это достигается увеличением размера последнего раздела. Заполняет промежутки в разделах значением указанным в опци '--gap-fill' (по умолчанию 0).

--set-start=VAL

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

--adjust-start=INCR

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

--adjust-vma=INCR

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

--adjust-section-vma=SECTION{=,+,-}VAL

Установить или варовнять адрес раздела с названием SECTION. При использовании '=' адрес раздела устанавливается в VAL. Иначе VAL добавляется или вычитается из адреса раздела. См. выше комментарии к '--adjust-vma'. Если SECTION не существует во входном файле, будет выдано предупреждение, если не использована опция '--no-adjust-warnings'.

-adjust-warnings

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

--no-adjust-warnings

Если использована опция '--adjust-section-vma', и раздел не существует, предупреждение не выдается.

--set-section-flags SECTION=FLAGS

Устанавливает флаги для указаного раздела. Аргумент FLAGS - является строкой имен флагов, разделенных точками. Возможны имены флагов: 'aloc', 'load', 'readonly', 'code', 'data' и 'rom'. не все флаги могут применяться для всех форматов объектного файла.

--add-section SECTIONNAME=FILENAME

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

-V

--version

Выводит номер версии objcopy.

-v

--verbose

Выводит имена всех измененных объектных файлов. В применении к архивам, 'objcopy -v' выводит имена всех членов архива.

--help

Выводит краткий список всех опций.

4. objdump

objdump [-a | --archive-headers] [-b BFDNAME | --target=BFDNAME] [-d | --disassemble] [-D | --disassemble-all] [-f | --file-headers] [-h | --section-headers | --headers] [-i | --info] [-j SECTION | --section=SECTION] [-l | --line-numbers] [-S | --source] [-m MACHINE | --architecture=MACHINE] [-r | --reloc] [-R | --dynamic-reloc] [-s | --full-contens] [--stabs] [-t | --syms] [-T | --dynamic-syms] [-x | --all-headers] [-w | --wide] [--tart-address=ADDRESS] [--stop-address=ADDRESS] [--version] [--help] OBJFILE ...

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

OBJFILE ... является именем исследуемого объектного файла. Если Вы указываете архив, objdump показывает информацию о каждом члене.

Длинные и короткие формы опций, приведенные в качестве альтернативных, эквивалентны. В конце каждой опции, кроме того, должно быть задано '-l'.

-a

--archive-header

Для любого OBJFILE являющегося архивом, показывает информацию из заголовка (в формате аналогичном 'ls -l'). Кроме того, с 'ar tv', 'objdump -a' показывает формат объектного файла каждого члена архива.

-b BFDNAME

--target=BFDNAME

Интерпретирует формат объектного кода в объектном фацле как BFDNAME. Опция не является обязательной, т.к. objdump может автоматически распознавать множесво форматов. Например:

objdump -b oasys -m vax -h fu.o

выдает краткую информацию по секции заголовка ('-h') для ''fu.o, которая явно определена ('-m') как VAX-овский объектный файл в формате представляемом компиляторами Oasys. Вы можете записать доступные форматы с опцией '-i'. Подробнее см. раздел 12.1 [Выбор целевой ОС], стр. 37.

-d

--disassemble

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

-D

--disassemble-all

Аналогична опции '-d', но дезассемблирует содержимое всех секций, независимо от наличия в них машинного кода.

-f

--file-header

Показывает краткую информацию для всех заголовков файла OBJFILE.

-h

--section-headers

--headers

Показывает краткую информацию для секции заголовка объектного файла. Сегменты в файле могут быть размещены по нестандартным адресам, например как при использовании '-Ttext', '-Tdata' или '-Tbss' в опции 'ld'. Тем не менее, в форматы некоторых объектных файлов, таких как 'a.out', не содержат информацию о начальных адресах сегментов. В таких случаях, несмотря на корректное перемещение секций 'ld', использование 'objdump -h' приводит к выдаче неправильных адресов из секции заголовка. Вместо этого отображаются обычные адреса, которые неявно подразумеваются.

--help

Показывает краткий список опций objdump.

-i

--info

Показывает список с указанием доступных архитектур и форматов объектных файлов. Используется с '-b' или '-m'.

-j NAME

--section=NAME

Показывает информацию только для раздела с именем NAME.

-l

--line-numbers

Выводит информацию (используя отладочную информацию) с именем файла и номерами строк соответствующих показываемому объектному коду. Используется только с '-d' или '-D'.

-m MACHINE

--architecture=MACHINE

Показывает что объектный файл OBJFILE сделан для архитектура MACHINE. Вы можете получить список доступных архитектур используя опцию '-i'ю

-r

--reloc

Печатает таблицу связей файла. Если использована с '-d' или '-D' связи будут напечатаны вперемежку с дизассемблируемым кодом.

-R

--dynamic-reloc

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

-s

--full-contens

Выводит полное содержимое любой запрошенной секции.

-S

--source

Выводит исходнай код вперемежку с дисассемблируемым (если возможно). Требует опцию '-d'.

--stabs

Выводит полное содержимое запрошенной секции. Выводит содержимое секций: .stab .index, .stab .excl из ELF файлов. Это доступно только на системах (типа SOLARIS 2.0) в которых отладочная информация помещена в ELF раздел. Во многих других форматах файлов отладочная информация перемешана с другими символами и может быть просмотрена с помощью '--sims'.

--start-address=ADDRESS

Начать вывод данных с указанного адреса, не применяется с опциями '-d', '-r'.

--stop-address=ADDRESS

Зкончить вывод данных с указанного адреса, не применяется с опциями '-d', '-r'.

-t

--syms

Напечатать таблицу символов для файла. Аналогично результату от программы nm.

-T

--dynamic-syms

Напечатать информацию о динамических символах файла. Опция действительна только для динамических объектов, таких как некоторые типы разделяемых библиотек. Аналогично программе nm с опцией '-D' (--dynamic).

--version

Печатает номер версии objdump и завершается.

-x

--all-header

Распечатывает всю доступную информацию из заголовка, включая таблицы символов и таблицы связей загрузки. Использование '-x' эквивалентно '-a -f -h -r -t'.

-w

--wide

Форматировать некоторые строки для вывода на устройство имеющее более 80 колонок.


Вперед Назад Содержание