во время трансляции 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 колонок.